Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,13 @@ The default API is `https://api.blazingagents.com`. Override it with

See the [CLI documentation](https://docs.blazingagents.com/cli) for setup,
authentication, command guides, and CI usage.

### Thinking level

In `ba assist`, ask to create an Agent with a Thinking level, read its current
level, set it to a value such as `high`, or clear it to Provider default.
The hosted Agent Tool accepts `thinkingLevel` and preserves update approval.
Known capabilities constrain choices; unknown capabilities accept custom
strings that may still be rejected during execution. `ba chat` and `ba run`
use the resolved Agent Version's selection without a per-Turn override.
Configure the Admin Agent's own Thinking level in the dashboard or SDK.
24 changes: 21 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
"files": [
"dist",
"README.md",
"LICENSE"
"LICENSE",
"vendor"
],
"scripts": {
"build": "rm -rf dist && tsc -p tsconfig.build.json",
Expand All @@ -33,7 +34,7 @@
},
"dependencies": {
"@ai-sdk/tui": "1.0.85",
"@blazingagents/sdk": "0.2.1",
"@blazingagents/sdk": "file:vendor/blazingagents-sdk-0.2.1.tgz",
"@clack/prompts": "1.7.0",
"@github/keytar": "7.10.6",
"ai": "7.0.84",
Expand All @@ -49,6 +50,9 @@
"ultracite": "7.10.2",
"vitest": "4.1.10"
},
"bundleDependencies": [
"@blazingagents/sdk"
],
"engines": {
"node": ">=24"
},
Expand Down
1 change: 1 addition & 0 deletions src/chat.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const agent = {
model: "openrouter/test-model",
name: "Release Agent",
providerId: "prv_0123456789abcdef",
thinkingLevel: null,
workspaceId: "ws_AAAAAAAAAAAAAAAA",
status: "active",
tenantId: "ten_AAAAAAAAAAAAAAAA",
Expand Down
1 change: 1 addition & 0 deletions src/cli.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ const runAgent = {
model: "openrouter/test-model",
name: "Release Agent",
providerId: "prv_0123456789abcdef",
thinkingLevel: null,
workspaceId: "ws_AAAAAAAAAAAAAAAA",
status: "active",
tenantId: "ten_AAAAAAAAAAAAAAAA",
Expand Down
8 changes: 4 additions & 4 deletions src/package-contract.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ async function readJson(url: URL) {
return JSON.parse(await readFile(url, "utf8")) as Record<string, unknown>;
}

test("the CLI is an unbundled application package with exact runtime pins", async () => {
test("the CLI bundles the checked SDK with exact runtime pins", async () => {
const manifest = await readJson(new URL("../package.json", import.meta.url));

expect(manifest).toMatchObject({
bin: { ba: "dist/bin/ba.js" },
dependencies: {
"@ai-sdk/tui": "1.0.85",
"@blazingagents/sdk": "0.2.1",
"@blazingagents/sdk": "file:vendor/blazingagents-sdk-0.2.1.tgz",
"@clack/prompts": "1.7.0",
"@github/keytar": "7.10.6",
ai: "7.0.84",
Expand All @@ -21,7 +21,7 @@ test("the CLI is an unbundled application package with exact runtime pins", asyn
zod: "4.5.4",
},
engines: { node: ">=24" },
files: ["dist", "README.md", "LICENSE"],
files: ["dist", "README.md", "LICENSE", "vendor"],
license: "MIT",
name: "@blazingagents/cli",
type: "module",
Expand All @@ -36,5 +36,5 @@ test("the CLI depends only on public runtime packages", async () => {
expect(cli.dependencies).not.toHaveProperty("@blazing-agents/core");
expect(
(cli.dependencies as Record<string, unknown>)["@blazingagents/sdk"]
).toBe("0.2.1");
).toBe("file:vendor/blazingagents-sdk-0.2.1.tgz");
});
1 change: 1 addition & 0 deletions src/run.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ const agent = {
model: "openrouter/test-model",
name: "Release Agent",
providerId: "prv_0123456789abcdef",
thinkingLevel: null,
workspaceId: "ws_AAAAAAAAAAAAAAAA",
status: "active",
tenantId: "ten_AAAAAAAAAAAAAAAA",
Expand Down
1 change: 1 addition & 0 deletions src/test/approval-transport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export const adminAgent = {
model: "openrouter/test-model",
name: "Admin Agent",
providerId: "prv_0123456789abcdef",
thinkingLevel: null,
workspaceId: "ws_AAAAAAAAAAAAAAAA",
status: "active",
tenantId: "ten_AAAAAAAAAAAAAAAA",
Expand Down
1 change: 1 addition & 0 deletions tests/packed-consumer.fixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ const releaseAgent = {
model: "openrouter/test-model",
name: "Release Agent",
providerId: "prv_0123456789abcdef",
thinkingLevel: null,
workspaceId: "ws_AAAAAAAAAAAAAAAA",
status: "active",
tenantId: "ten_AAAAAAAAAAAAAAAA",
Expand Down
28 changes: 23 additions & 5 deletions tests/packed-shell.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@ import {
const repositoryRoot = fileURLToPath(new URL("..", import.meta.url));
const MASK_GLYPHS = /[*•▪]/;

test("the tarball contains only the compiled application and package documents", async () => {
expect(cliPack.files.map(({ path }) => path)).toEqual([
test("the tarball contains the compiled application, documents and checked SDK", async () => {
expect(
cliPack.files
.map(({ path }) => path)
.filter((path) => !path.startsWith("node_modules/"))
).toEqual([
"LICENSE",
"README.md",
"dist/agent-resolution.js",
Expand All @@ -38,7 +42,13 @@ test("the tarball contains only the compiled application and package documents",
"dist/tui.js",
"dist/ui-message-stream.js",
"package.json",
"vendor/blazingagents-sdk-0.2.1.tgz",
]);
expect(
cliPack.files.some(
({ path }) => path === "node_modules/@blazingagents/sdk/dist/client.js"
)
).toBe(true);

const entrypoint = await readFile(
join(
Expand All @@ -60,12 +70,12 @@ test("the clean consumer has exact lockstep package and runtime versions", async
const manifests = await Promise.all(
[
["cli", "@blazingagents", "cli"],
["sdk", "@blazingagents", "sdk"],
["sdk", "@blazingagents", "cli", "node_modules", "@blazingagents", "sdk"],
["tui", "@ai-sdk", "tui"],
["keytar", "@github", "keytar"],
["ai", "ai"],
["commander", "commander"],
["yaml", "yaml"],
["yaml", "@blazingagents", "cli", "node_modules", "yaml"],
].map(async ([label, ...segments]) => {
const manifest = JSON.parse(
await readFile(
Expand Down Expand Up @@ -109,7 +119,15 @@ test("the clean consumer has exact lockstep package and runtime versions", async

const sdkManifest = JSON.parse(
await readFile(
join(packageDirectory, "@blazingagents", "sdk", "package.json"),
join(
packageDirectory,
"@blazingagents",
"cli",
"node_modules",
"@blazingagents",
"sdk",
"package.json"
),
"utf8"
)
) as Record<string, unknown>;
Expand Down
Binary file added vendor/blazingagents-sdk-0.2.1.tgz
Binary file not shown.