bazilion 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/cli.js +104 -35
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +349 -29
- package/dist/daemon.js.map +1 -1
- package/dist/web/client/assets/AgentAvatar-JYijLvZ2.js +1 -0
- package/dist/web/client/assets/AgentTabs-DioGqUVR.js +1 -0
- package/dist/web/client/assets/Button-ByiV6fpd.js +1 -0
- package/dist/web/client/assets/ChatPane-DzEgOEqS.js +74 -0
- package/dist/web/client/assets/ConfigTabs-pY-V0Rie.js +1 -0
- package/dist/web/client/assets/FieldRow-CNKma5LE.js +1 -0
- package/dist/web/client/assets/MembersEditor-C6UpqDdV.js +1 -0
- package/dist/web/client/assets/SpawnTeamModal-BEkNCKXm.js +1 -0
- package/dist/web/client/assets/TemplatesTabs-UM04RMO9.js +1 -0
- package/dist/web/client/assets/_id-BNJapCT4.js +1 -0
- package/dist/web/client/assets/_id-CjGoV8Mr.js +1 -0
- package/dist/web/client/assets/_id-DehuCHUw.js +1 -0
- package/dist/web/client/assets/_id-Dz9fjcCM.js +1 -0
- package/dist/web/client/assets/agents-M6omAXcZ.js +1 -0
- package/dist/web/client/assets/config-DIuEc5bm.js +3 -0
- package/dist/web/client/assets/groups-DpE2d2zZ.js +1 -0
- package/dist/web/client/assets/inbox-BPnLsRNf.js +1 -0
- package/dist/web/client/assets/index-MAJuXnie.js +12 -0
- package/dist/web/client/assets/jsx-runtime-DGeXAQPT.js +1 -0
- package/dist/web/client/assets/login-CawJX16E.js +1 -0
- package/dist/web/client/assets/mcp-DIrh9-v_.js +1 -0
- package/dist/web/client/assets/memory-BpHbdKsd.js +1 -0
- package/dist/web/client/assets/preload-helper-CvnapA2_.js +1 -0
- package/dist/web/client/assets/profile-groups-ByoKak0c.js +1 -0
- package/dist/web/client/assets/profiles-BEjv8LGo.js +1 -0
- package/dist/web/client/assets/routes-D2COHy7v.js +1 -0
- package/dist/web/client/assets/services-D212jSK_.js +1 -0
- package/dist/web/client/assets/skills-Da0MURjY.js +1 -0
- package/dist/web/client/assets/styles-BgE5bCHA.css +2 -0
- package/dist/web/client/assets/telegram-Czh2MdVm.js +1 -0
- package/dist/web/client/assets/tokens-E_JvO5JN.js +1 -0
- package/dist/web/client/assets/triggers-BBRZQOm7.js +1 -0
- package/dist/web/client/assets/welcome-Dn-zvmBE.js +1 -0
- package/dist/web/server/assets/{_id-C78M9_j9.js → _id-BKev9H1p.js} +2 -2
- package/dist/web/server/assets/{_id-Dc8P9sy2.js → _id-BNwlbWHP.js} +1 -1
- package/dist/web/server/assets/{_id-GJk3EYTT.js → _id-BdRiQb2H.js} +42 -5
- package/dist/web/server/assets/{_id-CrQbC5L8.js → _id-BqnDy_Ca.js} +2 -2
- package/dist/web/server/assets/{_id-CHNm7EAd.js → _id-CRqqi8IE.js} +1 -1
- package/dist/web/server/assets/{_id-Bm4-_AP-.js → _id-CXg-Blec.js} +1 -1
- package/dist/web/server/assets/{_id-BZ-YCWSw.js → _id-CnQflrRv.js} +2 -2
- package/dist/web/server/assets/{_id-DF3pfi9M.js → _id-D8duqgd5.js} +1 -1
- package/dist/web/server/assets/{_id-pd4S7LTi.js → _id-DDixKEud.js} +1 -1
- package/dist/web/server/assets/{_id-CvIGhq4U.js → _id-DUIrFV3G.js} +2 -2
- package/dist/web/server/assets/{_id-CGZbudCl.js → _id-D_Ew11ED.js} +1 -1
- package/dist/web/server/assets/{_id-Crcw2HhT.js → _id-Sjw0zhA6.js} +1 -1
- package/dist/web/server/assets/{_tanstack-start-manifest_v-CPyKYMJg.js → _tanstack-start-manifest_v-D9FLKShQ.js} +45 -41
- package/dist/web/server/assets/{agents-70EwQJR6.js → agents-C7SBPN0M.js} +1 -1
- package/dist/web/server/assets/{agents-K4Smhnq3.js → agents-ChcAJUI5.js} +2 -2
- package/dist/web/server/assets/{agents-Ds4lcREv.js → agents-k5QURC4I.js} +1 -1
- package/dist/web/server/assets/{auth-DpAGLHpA.js → auth-DzRAMwVt.js} +1 -1
- package/dist/web/server/assets/{config-DxCGYgR9.js → config-Bq3o924J.js} +2 -2
- package/dist/web/server/assets/{config-CMXUx_IF.js → config-CHaCv89D.js} +1 -1
- package/dist/web/server/assets/{config-DQbCsY_l.js → config-CdVjqjin.js} +18 -9
- package/dist/web/server/assets/{createServerRpc-CBTntoKx.js → createServerRpc-CeKECg65.js} +1 -1
- package/dist/web/server/assets/{createSsrRpc-DHBVUN8O.js → createSsrRpc-ZBGxhl8t.js} +1 -1
- package/dist/web/server/assets/{empty-plugin-adapters-Bos_V2s-.js → empty-plugin-adapters-DKUlnwwl.js} +1 -1
- package/dist/web/server/assets/{groups-Cms8cvH5.js → groups-CbSwND2r.js} +2 -2
- package/dist/web/server/assets/{groups-CXVew7BP.js → groups-CeRRlZaZ.js} +1 -1
- package/dist/web/server/assets/{groups-Dmcvw5ya.js → groups-pk4CYSuf.js} +1 -1
- package/dist/web/server/assets/{inbox-0QfwsrGo.js → inbox-Bxb3W04M.js} +2 -2
- package/dist/web/server/assets/{inbox-B7UWoICA.js → inbox-CkiSvD14.js} +1 -1
- package/dist/web/server/assets/{inbox-8HybA2Ws.js → inbox-DU27iHv_.js} +1 -1
- package/dist/web/server/assets/{mcp-DIa0kIOf.js → mcp-BU_kKENi.js} +1 -1
- package/dist/web/server/assets/{mcp-DsTjY3uz.js → mcp-BsFKEoXt.js} +1 -1
- package/dist/web/server/assets/{mcp-42BrkI1I.js → mcp-CKqwG4mt.js} +2 -2
- package/dist/web/server/assets/{memory-Dr0lOM2y.js → memory-BaYnfm7K.js} +1 -1
- package/dist/web/server/assets/{memory-BfrMp8iY.js → memory-CQaqWnyM.js} +1 -1
- package/dist/web/server/assets/{memory-EEgLDfCj.js → memory-Ns2-Z31p.js} +2 -2
- package/dist/web/server/assets/{profile-groups-C5isDI2t.js → profile-groups-CiU06yN1.js} +1 -1
- package/dist/web/server/assets/{profile-groups-B_kIT6BU.js → profile-groups-D21MYoLM.js} +1 -1
- package/dist/web/server/assets/{profile-groups-BW5gU-fG.js → profile-groups-aoJleXHP.js} +2 -2
- package/dist/web/server/assets/{profiles-BbPTpmyq.js → profiles-C6a3RKgu.js} +1 -1
- package/dist/web/server/assets/{profiles-Cy5auEj8.js → profiles-CZ5NkmVw.js} +2 -2
- package/dist/web/server/assets/{profiles-BP1v-jna.js → profiles-LxcC_L6n.js} +1 -1
- package/dist/web/server/assets/{router-CL100-Ly.js → router-BrDascdO.js} +21 -21
- package/dist/web/server/assets/{routes-D2H1Hnoh.js → routes-C61gBiXa.js} +1 -1
- package/dist/web/server/assets/{routes-Dzk8jvIo.js → routes-Ce2VWrU9.js} +1 -1
- package/dist/web/server/assets/{routes-CzJLQxcS.js → routes-V9URcp1v.js} +2 -2
- package/dist/web/server/assets/{services-DFenjiw0.js → services-B91w2f-X.js} +1 -1
- package/dist/web/server/assets/{services-DEgYsWJ4.js → services-Ccc5s2bS.js} +2 -2
- package/dist/web/server/assets/{services-Bgj6M2gC.js → services-DhRiNeq0.js} +1 -1
- package/dist/web/server/assets/{skills-BASIP_rT.js → skills-CFIWVg32.js} +1 -1
- package/dist/web/server/assets/{skills-DZXN680t.js → skills-D89ND2kR.js} +67 -7
- package/dist/web/server/assets/{skills-C-JPRCHh.js → skills-l2cyQ3zS.js} +2 -2
- package/dist/web/server/assets/start-CYDpZ6cb.js +4 -0
- package/dist/web/server/assets/{telegram-sUckI94O.js → telegram-BdaUIjvs.js} +1 -1
- package/dist/web/server/assets/{telegram-BbvqVWxa.js → telegram-DfAddLdv.js} +1 -1
- package/dist/web/server/assets/{telegram-Bq49AtnP.js → telegram-T3l9KtiE.js} +2 -2
- package/dist/web/server/assets/{tokens-Dwn00iV7.js → tokens-BCz3PSoT.js} +1 -1
- package/dist/web/server/assets/{tokens-CImgxhDI.js → tokens-CkKqrtk-.js} +1 -1
- package/dist/web/server/assets/{tokens-BERRE0wB.js → tokens-DdpnfV_Y.js} +2 -2
- package/dist/web/server/assets/{triggers-TyIjwSYn.js → triggers-BcH_6PW1.js} +1 -1
- package/dist/web/server/assets/{triggers-DtexqbNH.js → triggers-BcTTwMfy.js} +2 -2
- package/dist/web/server/assets/{triggers-_iSeahif.js → triggers-BzJG1nN5.js} +1 -1
- package/dist/web/server/assets/{welcome-BkQ9NC5K.js → welcome-CP4CZ9B6.js} +13 -9
- package/dist/web/server/server.js +94 -82
- package/dist/worker.js +65 -2
- package/dist/worker.js.map +1 -1
- package/package.json +17 -17
- package/dist/web/client/assets/AgentAvatar-Cq7PVBE_.js +0 -1
- package/dist/web/client/assets/AgentTabs-M5K8emJ8.js +0 -1
- package/dist/web/client/assets/Button-BefUtjMZ.js +0 -1
- package/dist/web/client/assets/ChatPane-C8zQfpzH.js +0 -74
- package/dist/web/client/assets/ConfigTabs-DRqAymcN.js +0 -1
- package/dist/web/client/assets/FieldRow-BqWnxZiX.js +0 -1
- package/dist/web/client/assets/MembersEditor-B-47GLUb.js +0 -1
- package/dist/web/client/assets/SpawnTeamModal-DiiC7Nc0.js +0 -1
- package/dist/web/client/assets/TemplatesTabs-DB4KERTQ.js +0 -1
- package/dist/web/client/assets/_id-B7gv1aPQ.js +0 -1
- package/dist/web/client/assets/_id-C7d1AqS0.js +0 -1
- package/dist/web/client/assets/_id-DhiwjC8u.js +0 -1
- package/dist/web/client/assets/_id-p8lUuNFm.js +0 -1
- package/dist/web/client/assets/agents-v8G-wt0M.js +0 -1
- package/dist/web/client/assets/config-BdmYpS_y.js +0 -3
- package/dist/web/client/assets/groups-DiY_ExGM.js +0 -1
- package/dist/web/client/assets/inbox-DtfVx246.js +0 -1
- package/dist/web/client/assets/index-BQUL6oyH.js +0 -12
- package/dist/web/client/assets/login-CVS70W9g.js +0 -1
- package/dist/web/client/assets/mcp-BDLQq8OZ.js +0 -1
- package/dist/web/client/assets/memory-6GGuAXwx.js +0 -1
- package/dist/web/client/assets/profile-groups-BA8rwZMA.js +0 -1
- package/dist/web/client/assets/profiles-C0aAcPZg.js +0 -1
- package/dist/web/client/assets/routes-DgAhnKFw.js +0 -1
- package/dist/web/client/assets/services-BZ86QEah.js +0 -1
- package/dist/web/client/assets/skills-mv_NNNwo.js +0 -1
- package/dist/web/client/assets/styles-CmqUskDu.css +0 -2
- package/dist/web/client/assets/telegram-5f9WXs3x.js +0 -1
- package/dist/web/client/assets/tokens-DHiYsFUh.js +0 -1
- package/dist/web/client/assets/triggers-CjC8Ljrz.js +0 -1
- package/dist/web/client/assets/welcome-C-Cu-ziL.js +0 -1
- package/dist/web/server/assets/start-cOXH7eTI.js +0 -4
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ From another terminal:
|
|
|
33
33
|
# Set up a provider (env var, or `bazilion config set` to persist it).
|
|
34
34
|
export ANTHROPIC_API_KEY=sk-ant-...
|
|
35
35
|
bazilion provider enable anthropic
|
|
36
|
-
bazilion provider models anthropic claude-
|
|
36
|
+
bazilion provider models-set anthropic claude-opus-4-8
|
|
37
37
|
|
|
38
38
|
# Spawn an agent from the default profile and chat with it.
|
|
39
39
|
bazilion agent spawn --profile default --name first
|
|
@@ -53,7 +53,7 @@ The web UI is bundled into the published `bazilion` package and starts with:
|
|
|
53
53
|
bazilion dashboard
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
For source development, clone the repo and run the daemon plus Vite dev server
|
|
56
|
+
For source development, clone the repo and run the daemon plus Vite dev server. Node 24+ and pnpm 10+ are required; if `corepack` is unavailable, install pnpm directly with `npm install -g pnpm`.
|
|
57
57
|
|
|
58
58
|
```sh
|
|
59
59
|
git clone https://github.com/rullopat/bazilion
|
|
@@ -71,13 +71,13 @@ bazilion auth openai login # browser flow on localhost:1455
|
|
|
71
71
|
bazilion auth openai status # check connection / token expiry
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
After connecting, enable `openai-codex` and curate at least one model. Credentials are stored AES-256-GCM-encrypted in the daemon's `secrets` table.
|
|
74
|
+
After connecting, enable `openai-codex` and curate at least one model, for example `gpt-5.3-codex-spark`. Credentials are stored AES-256-GCM-encrypted in the daemon's `secrets` table.
|
|
75
75
|
|
|
76
76
|
## What's in the box
|
|
77
77
|
|
|
78
78
|
- **CLI + daemon + web UI**, spawned together via `bazilion dashboard`. The daemon binds `127.0.0.1:4321`, the web UI binds `127.0.0.1:4322`, and the daemon owns `~/.bazilion/` (SQLite DB, profiles, agents, groups, skills, logs).
|
|
79
79
|
- **17 subcommand families**: `agent`, `profile`, `group`, `skill`, `provider`, `config`, `auth`, `memory`, `send`, `inbox`, `trigger`, `serve`, `doctor`, `backup`, `token`, `login`, `uninstall`.
|
|
80
|
-
- **Provider support** via [pi-ai](https://www.npmjs.com/package/@earendil-works/pi-ai): Anthropic, OpenAI (key + ChatGPT OAuth), Google AI Studio + Vertex, Azure OpenAI, AWS Bedrock, Mistral, Groq, Cerebras, xAI,
|
|
80
|
+
- **Provider support** via [pi-ai](https://www.npmjs.com/package/@earendil-works/pi-ai): Anthropic, OpenAI (key + ChatGPT OAuth), Google AI Studio + Vertex, Azure OpenAI, AWS Bedrock, Mistral, Groq, Cerebras, xAI, zAI, Hugging Face, OpenRouter, Vercel AI Gateway, Cloudflare, GitHub Copilot, DeepSeek, Fireworks, Together, Moonshot/Kimi, MiniMax, Xiaomi MiMo, Ant Ling, NVIDIA NIM, OpenCode, LM Studio, Ollama, and llama.cpp.
|
|
81
81
|
- **OpenClaw-compatible skills**: drop a `SKILL.md` into `~/.bazilion/skills/<name>/`, or import in bulk via `bazilion skill import --from openclaw`.
|
|
82
82
|
|
|
83
83
|
## Uninstall
|
package/dist/cli.js
CHANGED
|
@@ -6,7 +6,7 @@ import { defineCommand as defineCommand23, runCommand, showUsage } from "citty";
|
|
|
6
6
|
// package.json
|
|
7
7
|
var package_default = {
|
|
8
8
|
name: "bazilion",
|
|
9
|
-
version: "0.
|
|
9
|
+
version: "0.8.0",
|
|
10
10
|
description: "Multi-agent runtime CLI \u2014 spawn LLM agents, manage profiles/groups/skills, and run the local daemon.",
|
|
11
11
|
license: "MIT",
|
|
12
12
|
repository: {
|
|
@@ -49,26 +49,26 @@ var package_default = {
|
|
|
49
49
|
access: "public"
|
|
50
50
|
},
|
|
51
51
|
dependencies: {
|
|
52
|
-
"@earendil-works/pi-agent-core": "^0.
|
|
53
|
-
"@earendil-works/pi-ai": "^0.
|
|
54
|
-
"@earendil-works/pi-coding-agent": "^0.
|
|
55
|
-
"@
|
|
56
|
-
"@hono/node-server": "^2.0.4",
|
|
52
|
+
"@earendil-works/pi-agent-core": "^0.79.10",
|
|
53
|
+
"@earendil-works/pi-ai": "^0.79.10",
|
|
54
|
+
"@earendil-works/pi-coding-agent": "^0.79.10",
|
|
55
|
+
"@hono/node-server": "^2.0.6",
|
|
57
56
|
"@mozilla/readability": "^0.6.0",
|
|
57
|
+
"@tanstack/react-router": "1.170.16",
|
|
58
58
|
"@tobilu/qmd": "^2.5.3",
|
|
59
59
|
"adm-zip": "^0.5.17",
|
|
60
60
|
citty: "^0.2.2",
|
|
61
|
-
dompurify: "^3.4.
|
|
62
|
-
grammy: "^1.
|
|
63
|
-
hono: "^4.12.
|
|
61
|
+
dompurify: "^3.4.11",
|
|
62
|
+
grammy: "^1.44.0",
|
|
63
|
+
hono: "^4.12.26",
|
|
64
64
|
linkedom: "^0.18.12",
|
|
65
|
-
"lucide-react": "^1.
|
|
66
|
-
playwright: "^1.
|
|
65
|
+
"lucide-react": "^1.21.0",
|
|
66
|
+
playwright: "^1.61.0",
|
|
67
67
|
"qrcode-terminal": "^0.12.0",
|
|
68
|
-
react: "^19.2.
|
|
69
|
-
"react-dom": "^19.2.
|
|
70
|
-
typebox: "^1.
|
|
71
|
-
undici: "^8.
|
|
68
|
+
react: "^19.2.7",
|
|
69
|
+
"react-dom": "^19.2.7",
|
|
70
|
+
typebox: "^1.3.0",
|
|
71
|
+
undici: "^8.5.0",
|
|
72
72
|
yaml: "^2.9.0"
|
|
73
73
|
},
|
|
74
74
|
devDependencies: {
|
|
@@ -736,15 +736,38 @@ var skillAddCmd = defineCommand({
|
|
|
736
736
|
meta: { name: "add", description: "Attach a skill to an agent" },
|
|
737
737
|
args: {
|
|
738
738
|
agent: { type: "positional", required: true },
|
|
739
|
-
skill: { type: "positional", required: true }
|
|
739
|
+
skill: { type: "positional", required: true },
|
|
740
|
+
"allow-warnings": {
|
|
741
|
+
type: "boolean",
|
|
742
|
+
description: "Attach even when the static skill scan reports findings"
|
|
743
|
+
}
|
|
740
744
|
},
|
|
741
745
|
async run({ args }) {
|
|
742
746
|
const client = createClient2();
|
|
743
|
-
const body = { skill: args.skill };
|
|
744
|
-
|
|
747
|
+
const body = { skill: args.skill, allowFindings: args["allow-warnings"] };
|
|
748
|
+
try {
|
|
749
|
+
await client.post(`/api/agents/${args.agent}/skills`, body);
|
|
750
|
+
} catch (err) {
|
|
751
|
+
if (err instanceof ApiClientError && err.body.code === "skill_scan_blocked") {
|
|
752
|
+
console.error(`error: ${err.body.error}`);
|
|
753
|
+
printSkillFindings(err.body.findings ?? []);
|
|
754
|
+
console.error(" hint: inspect the skill, then rerun with --allow-warnings to confirm");
|
|
755
|
+
process.exitCode = 1;
|
|
756
|
+
return;
|
|
757
|
+
}
|
|
758
|
+
throw err;
|
|
759
|
+
}
|
|
745
760
|
console.log(`attached skill ${args.skill} to ${args.agent}`);
|
|
746
761
|
}
|
|
747
762
|
});
|
|
763
|
+
function printSkillFindings(findings) {
|
|
764
|
+
if (findings.length === 0) return;
|
|
765
|
+
console.error("scan findings:");
|
|
766
|
+
for (const f of findings) {
|
|
767
|
+
const line = f.line ? ` line ${f.line}` : "";
|
|
768
|
+
console.error(` ${f.severity}: ${f.code}${line} - ${f.message}`);
|
|
769
|
+
}
|
|
770
|
+
}
|
|
748
771
|
var skillRmCmd = defineCommand({
|
|
749
772
|
meta: { name: "rm", description: "Detach a skill from an agent" },
|
|
750
773
|
args: {
|
|
@@ -872,8 +895,11 @@ var openaiLoginCmd = defineCommand2({
|
|
|
872
895
|
if (status.accountId) console.log(`account: ${status.accountId}`);
|
|
873
896
|
console.log(`access token expires: ${formatExpiry(status.expiresAt)}`);
|
|
874
897
|
console.log("");
|
|
875
|
-
console.log(`enable the 'openai-codex' provider on /config and
|
|
876
|
-
console.log("(e.g. gpt-5.3-codex, gpt-5.4, gpt-5.5) to start using it.");
|
|
898
|
+
console.log(`enable the 'openai-codex' provider on /config and save at least one model`);
|
|
899
|
+
console.log("(e.g. gpt-5.3-codex-spark, gpt-5.4, gpt-5.5) to start using it.");
|
|
900
|
+
console.log("CLI equivalent:");
|
|
901
|
+
console.log(" bazilion provider enable openai-codex");
|
|
902
|
+
console.log(" bazilion provider models-set openai-codex gpt-5.3-codex-spark");
|
|
877
903
|
}
|
|
878
904
|
});
|
|
879
905
|
var openaiLogoutCmd = defineCommand2({
|
|
@@ -1507,7 +1533,7 @@ var doctorCommand = defineCommand7({
|
|
|
1507
1533
|
check("all skills parse", false, `${r.skills.parseErrors} skill(s) have errors`);
|
|
1508
1534
|
}
|
|
1509
1535
|
console.log();
|
|
1510
|
-
console.log("providers (at least one
|
|
1536
|
+
console.log("providers (enable one and save at least one model for chat)");
|
|
1511
1537
|
if (r.providers.configured.length === 0) {
|
|
1512
1538
|
console.log(" - no cloud providers configured");
|
|
1513
1539
|
console.log(" (set e.g. ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY)");
|
|
@@ -1567,7 +1593,10 @@ var doctorCommand = defineCommand7({
|
|
|
1567
1593
|
todo.push(" - set a cloud api key (ANTHROPIC_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY)");
|
|
1568
1594
|
todo.push(" or make sure LMStudio / Ollama is running locally");
|
|
1569
1595
|
}
|
|
1570
|
-
if (!hasProfiles)
|
|
1596
|
+
if (!hasProfiles) {
|
|
1597
|
+
todo.push(" - enable a provider: bazilion provider enable <provider>");
|
|
1598
|
+
todo.push(" - save a model: bazilion provider models-set <provider> <model-id>");
|
|
1599
|
+
}
|
|
1571
1600
|
if (!hasAgents) todo.push(" - spawn an agent: bazilion agent spawn --profile <id>");
|
|
1572
1601
|
for (const line of todo) console.log(line);
|
|
1573
1602
|
} else {
|
|
@@ -2824,6 +2853,12 @@ var serveCommand = defineCommand17({
|
|
|
2824
2853
|
import { existsSync as existsSync6, readFileSync as readFileSync7, statSync } from "fs";
|
|
2825
2854
|
import { basename as basename2, resolve as resolve2 } from "path";
|
|
2826
2855
|
import { defineCommand as defineCommand18 } from "citty";
|
|
2856
|
+
function printFindings(findings, prefix = " ") {
|
|
2857
|
+
for (const f of findings) {
|
|
2858
|
+
const line = f.line ? ` line ${f.line}` : "";
|
|
2859
|
+
console.log(`${prefix}${f.severity}: ${f.code}${line} - ${f.message}`);
|
|
2860
|
+
}
|
|
2861
|
+
}
|
|
2827
2862
|
var listCmd10 = defineCommand18({
|
|
2828
2863
|
meta: { name: "list", description: "List installed skills (or those attached to an agent)" },
|
|
2829
2864
|
args: {
|
|
@@ -2854,6 +2889,15 @@ var listCmd10 = defineCommand18({
|
|
|
2854
2889
|
s.parseError ? `(parse error: ${s.parseError})` : s.description
|
|
2855
2890
|
]);
|
|
2856
2891
|
for (const line of columnize(rows)) console.log(line);
|
|
2892
|
+
const flagged = skills.filter((s) => s.scanFindings && s.scanFindings.length > 0);
|
|
2893
|
+
if (flagged.length > 0) {
|
|
2894
|
+
console.log("");
|
|
2895
|
+
console.log("scan findings:");
|
|
2896
|
+
for (const s of flagged) {
|
|
2897
|
+
console.log(`${s.name}:`);
|
|
2898
|
+
printFindings(s.scanFindings ?? []);
|
|
2899
|
+
}
|
|
2900
|
+
}
|
|
2857
2901
|
}
|
|
2858
2902
|
});
|
|
2859
2903
|
var importCmd = defineCommand18({
|
|
@@ -2874,19 +2918,36 @@ var importCmd = defineCommand18({
|
|
|
2874
2918
|
const absFrom = resolve2(args.from);
|
|
2875
2919
|
const isLocalZip = args.from.toLowerCase().endsWith(".zip") && existsSync6(absFrom) && statSync(absFrom).isFile();
|
|
2876
2920
|
let result;
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2921
|
+
try {
|
|
2922
|
+
if (isLocalZip) {
|
|
2923
|
+
const bytes = readFileSync7(absFrom);
|
|
2924
|
+
const file = new File([bytes], basename2(absFrom), { type: "application/zip" });
|
|
2925
|
+
const fd = new FormData();
|
|
2926
|
+
fd.set("file", file);
|
|
2927
|
+
if (args.force) fd.set("force", "true");
|
|
2928
|
+
result = await client.postMultipart("/api/skills/import", fd);
|
|
2929
|
+
} else {
|
|
2930
|
+
const body = {
|
|
2931
|
+
source: args.from,
|
|
2932
|
+
force: args.force
|
|
2933
|
+
};
|
|
2934
|
+
result = await client.post("/api/skills/import", body);
|
|
2935
|
+
}
|
|
2936
|
+
} catch (err) {
|
|
2937
|
+
if (err instanceof ApiClientError && err.body.code === "skill_scan_blocked") {
|
|
2938
|
+
console.error(`error: ${err.body.error}`);
|
|
2939
|
+
if (err.body.findings && err.body.findings.length > 0) {
|
|
2940
|
+
console.error("scan findings:");
|
|
2941
|
+
for (const f of err.body.findings) {
|
|
2942
|
+
const line = f.line ? ` line ${f.line}` : "";
|
|
2943
|
+
console.error(` ${f.severity}: ${f.code}${line} - ${f.message}`);
|
|
2944
|
+
}
|
|
2945
|
+
}
|
|
2946
|
+
console.error(" hint: inspect the skill, then rerun with --force to confirm");
|
|
2947
|
+
process.exitCode = 1;
|
|
2948
|
+
return;
|
|
2949
|
+
}
|
|
2950
|
+
throw err;
|
|
2890
2951
|
}
|
|
2891
2952
|
if (result.imported.length === 0 && result.skipped.length === 0) {
|
|
2892
2953
|
console.log("(nothing to import)");
|
|
@@ -2898,6 +2959,14 @@ var importCmd = defineCommand18({
|
|
|
2898
2959
|
for (const s of result.skipped) {
|
|
2899
2960
|
console.log(`skipped ${s.name}: ${s.reason}`);
|
|
2900
2961
|
}
|
|
2962
|
+
if (result.findings && Object.keys(result.findings).length > 0) {
|
|
2963
|
+
console.log("");
|
|
2964
|
+
console.log("confirmed scan findings:");
|
|
2965
|
+
for (const [name, findings] of Object.entries(result.findings)) {
|
|
2966
|
+
console.log(`${name}:`);
|
|
2967
|
+
printFindings(findings);
|
|
2968
|
+
}
|
|
2969
|
+
}
|
|
2901
2970
|
}
|
|
2902
2971
|
});
|
|
2903
2972
|
var rmCmd5 = defineCommand18({
|