@anna-ai/cli 0.1.49 → 0.1.52
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/dist/{account-CPnwqXeh.js → account-C-IeQNNr.js} +1 -1
- package/dist/{agent-DAOr_aiE.js → agent-CX2VzG7e.js} +1 -1
- package/dist/{apps-HbfURK6y.js → apps-BRBufSyX.js} +1 -41
- package/dist/{apps-CzqMRLbS.js → apps-CTIiH6a_.js} +1 -1
- package/dist/{apps-cut-BhTJwILv.js → apps-cut-BLtUBokD.js} +20 -22
- package/dist/apps-cut-eOVb1-0y.js +19 -0
- package/dist/{apps-destructive-PlaU93EX.js → apps-destructive-DcG3T1Mx.js} +2 -2
- package/dist/{apps-discard-CFi-GzpU.js → apps-discard-7ERq2pmS.js} +7 -7
- package/dist/{apps-grants-DqaX8UTy.js → apps-grants-DVoSb6-r.js} +7 -2
- package/dist/apps-publish-AdXryRYo.js +22 -0
- package/dist/apps-publish-BzaoSyFn.js +92 -0
- package/dist/{app-bundle-upload-Ca0r-kPy.js → apps-push-DZ1LHDJW.js} +144 -69
- package/dist/apps-push-WBfD0JyE.js +20 -0
- package/dist/{apps-release-DGQv6DDl.js → apps-release-DAV-DB_Q.js} +2 -2
- package/dist/{apps-rename-slug-CCEU_7JJ.js → apps-rename-slug-4_5lsDwg.js} +2 -2
- package/dist/{apps-status-C4Cxc2DF.js → apps-status-hMrRz356.js} +1 -1
- package/dist/{apps-submit-review--hZFZRJ3.js → apps-submit-review-CxoKgexX.js} +1 -1
- package/dist/{apps-sync-meta-DnFwFNl5.js → apps-sync-meta-BwN8g6TO.js} +3 -3
- package/dist/{apps-versions-C7NzG5Dk.js → apps-versions-gfG_sBFv.js} +1 -1
- package/dist/{bridge-sFHqOOat.js → bridge-Bo8eu3-d.js} +1 -1
- package/dist/bridge-nv-le8ff.js +3 -0
- package/dist/cli.js +180 -55
- package/dist/dev-CQIZHt7u.js +4 -0
- package/dist/{dev-Bfv3WQC0.js → dev-uagVfV9Y.js} +7 -5
- package/dist/{doctor-CHnkbamq.js → doctor-qFe9sXxR.js} +1 -1
- package/dist/{executa-destructive-Du7RGJgn.js → executa-destructive-C06mgvfJ.js} +1 -1
- package/dist/{executa-dev-DYO87dzg.js → executa-dev-BeYhrj-n.js} +8 -8
- package/dist/executa-install-Dnerah9u.js +7 -0
- package/dist/{executa-install-DAposiBw.js → executa-install-u0nXcyy7.js} +1 -1
- package/dist/{executa-publish-BKnsUoZq.js → executa-publish-BuakG1RK.js} +38 -11
- package/dist/{executa-publish-6awuH4Ma.js → executa-publish-CVlMaHIY.js} +3 -3
- package/dist/{executa-upload-binaries-FWM2yXfB.js → executa-upload-binaries-BVWs6MFF.js} +2 -2
- package/dist/{executa-upload-binaries-DwWQ18Dq.js → executa-upload-binaries-D0JWYOtK.js} +1 -1
- package/dist/{listing-meta-DgweMStT.js → listing-meta-rIni8tjd.js} +1 -1
- package/dist/{manifest-B_DjigtQ.js → manifest-BCHiC184.js} +49 -3
- package/dist/{publish-D5O5JKRb.js → publish-4C5_TgyZ.js} +13 -10
- package/dist/{server-Dr_htFv8.js → server-CBx61J7s.js} +91 -1
- package/dist/{storage-aii8EyPC.js → storage-CZ4c4ibf.js} +1 -1
- package/dist/{working-orchestration-CpBJLs50.js → working-orchestration-BPMFemcH.js} +9 -5
- package/package.json +5 -4
- package/templates/minimal/manifest.json +0 -1
- package/dist/apps-publish-4IIbF2xr.js +0 -17
- package/dist/apps-publish-8N9x4VEM.js +0 -272
- package/dist/apps-push-CnSeLwdo.js +0 -152
- package/dist/bridge-BP28T06H.js +0 -3
- package/dist/dev-CnDh2_7r.js +0 -4
- package/dist/executa-install-LaAOSkY0.js +0 -7
- /package/dist/{confirm-ChZAVrZe.js → confirm-DplLyBSG.js} +0 -0
- /package/dist/{dev-account-CfVdGa9j.js → dev-account-IrYL4u4F.js} +0 -0
- /package/dist/{dev-app-cache-Dw2JESld.js → dev-app-cache-CScRa7c3.js} +0 -0
- /package/dist/{executa-init-DKy7DMSD.js → executa-init-BM0HR-K7.js} +0 -0
- /package/dist/{executa-reads-BYKUADoL.js → executa-reads-BJpmB-B1.js} +0 -0
- /package/dist/{executa-register-CmqKsoAU.js → executa-register-CDKG3L5c.js} +0 -0
- /package/dist/{executa-trusted-publisher-BGqz6hMt.js → executa-trusted-publisher-n9IbAO5D.js} +0 -0
- /package/dist/{fixture-BF1Z0Rry.js → fixture-CizypXzX.js} +0 -0
- /package/dist/{host_upload-CW_2Fxg6.js → host_upload-BvzJZKAO.js} +0 -0
- /package/dist/{image-B4UrufYH.js → image-C61zRJC8.js} +0 -0
- /package/dist/{login-DbETuUxy.js → login-BleVDjXE.js} +0 -0
- /package/dist/{logout-BzIEf-HU.js → logout-BO4brBaY.js} +0 -0
- /package/dist/{runner-Dq3cluPM.js → runner-aq0n-pdr.js} +0 -0
- /package/dist/{sampling-BpJcd6BC.js → sampling-BQwF3O-4.js} +0 -0
- /package/dist/{token-TgBQumgy.js → token-DeAZLyVz.js} +0 -0
- /package/dist/{whoami-Bn38ns8r.js → whoami-rvVc_nQ9.js} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { canonicalHost } from "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { findAppBySlug, getApp } from "./apps-
|
|
2
|
+
import { findAppBySlug, getApp } from "./apps-BRBufSyX.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
|
-
import { loadAppManifest } from "./manifest-
|
|
5
|
+
import { loadAppManifest } from "./manifest-BCHiC184.js";
|
|
6
6
|
import { readAppIdentity } from "./app-cache-Cr3tKbux.js";
|
|
7
|
-
import { syncAppListingMeta } from "./listing-meta-
|
|
7
|
+
import { syncAppListingMeta } from "./listing-meta-rIni8tjd.js";
|
|
8
8
|
import { resolve } from "node:path";
|
|
9
9
|
import { bold, cyan, dim, green } from "kleur/colors";
|
|
10
10
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { findAppBySlug, listVersions } from "./apps-
|
|
2
|
+
import { findAppBySlug, listVersions } from "./apps-BRBufSyX.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
5
|
import { bold, cyan, dim, green, red, yellow } from "kleur/colors";
|
|
@@ -9,7 +9,7 @@ import { createInterface } from "node:readline";
|
|
|
9
9
|
* `uvx <pkg>@<version>` so end users always run the dispatcher version
|
|
10
10
|
* the CLI was tested against.
|
|
11
11
|
*/
|
|
12
|
-
const PINNED_RUNTIME_VERSION = "0.2.
|
|
12
|
+
const PINNED_RUNTIME_VERSION = "0.2.0a23";
|
|
13
13
|
/**
|
|
14
14
|
* Throwable from a {@link RequestHandler} to send a structured JSON-RPC
|
|
15
15
|
* error back to the python bridge with a stable string ``code`` (e.g.
|
package/dist/cli.js
CHANGED
|
@@ -111,18 +111,132 @@ function validateManifestSchema(bundle, manifest) {
|
|
|
111
111
|
message: `${e.message ?? "invalid"}${e.params ? " " + JSON.stringify(e.params) : ""}`
|
|
112
112
|
}));
|
|
113
113
|
}
|
|
114
|
-
|
|
114
|
+
/**
|
|
115
|
+
* Blank out string-literal and comment contents (same length, newlines
|
|
116
|
+
* kept, so offsets/line numbers stay exact). Template interpolation bodies
|
|
117
|
+
* (`${…}`) are code and are preserved. Regex literals are NOT recognised
|
|
118
|
+
* (the `/` division ambiguity): a quote delimiter inside one can at worst
|
|
119
|
+
* blank the rest of that line — quoted strings cannot span lines — which
|
|
120
|
+
* errs toward missing a call, never toward a false report.
|
|
121
|
+
*/
|
|
122
|
+
function stripStringsAndComments(source) {
|
|
123
|
+
const out = source.split("");
|
|
124
|
+
const n = source.length;
|
|
125
|
+
const blank = (idx) => {
|
|
126
|
+
const ch = out[idx];
|
|
127
|
+
if (ch !== "\n" && ch !== "\r") out[idx] = " ";
|
|
128
|
+
};
|
|
129
|
+
const stack = [{
|
|
130
|
+
kind: "code",
|
|
131
|
+
braces: 0
|
|
132
|
+
}];
|
|
133
|
+
let i = 0;
|
|
134
|
+
while (i < n) {
|
|
135
|
+
const top = stack[stack.length - 1];
|
|
136
|
+
const c = source[i];
|
|
137
|
+
if (top.kind === "tpl") {
|
|
138
|
+
if (c === "\\") {
|
|
139
|
+
blank(i);
|
|
140
|
+
if (i + 1 < n) blank(i + 1);
|
|
141
|
+
i += 2;
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
if (c === "`") {
|
|
145
|
+
blank(i);
|
|
146
|
+
stack.pop();
|
|
147
|
+
i++;
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
if (c === "$" && source[i + 1] === "{") {
|
|
151
|
+
i += 2;
|
|
152
|
+
stack.push({
|
|
153
|
+
kind: "code",
|
|
154
|
+
braces: 0
|
|
155
|
+
});
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
blank(i);
|
|
159
|
+
i++;
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
const next = source[i + 1];
|
|
163
|
+
if (c === "/" && next === "/") {
|
|
164
|
+
while (i < n && source[i] !== "\n") {
|
|
165
|
+
blank(i);
|
|
166
|
+
i++;
|
|
167
|
+
}
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (c === "/" && next === "*") {
|
|
171
|
+
blank(i);
|
|
172
|
+
blank(i + 1);
|
|
173
|
+
i += 2;
|
|
174
|
+
while (i < n && !(source[i] === "*" && source[i + 1] === "/")) {
|
|
175
|
+
blank(i);
|
|
176
|
+
i++;
|
|
177
|
+
}
|
|
178
|
+
if (i < n) {
|
|
179
|
+
blank(i);
|
|
180
|
+
blank(i + 1);
|
|
181
|
+
i += 2;
|
|
182
|
+
}
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
if (c === "'" || c === "\"") {
|
|
186
|
+
blank(i);
|
|
187
|
+
i++;
|
|
188
|
+
while (i < n && source[i] !== c && source[i] !== "\n") {
|
|
189
|
+
if (source[i] === "\\") {
|
|
190
|
+
blank(i);
|
|
191
|
+
i++;
|
|
192
|
+
if (i < n) blank(i);
|
|
193
|
+
i++;
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
blank(i);
|
|
197
|
+
i++;
|
|
198
|
+
}
|
|
199
|
+
if (i < n && source[i] === c) {
|
|
200
|
+
blank(i);
|
|
201
|
+
i++;
|
|
202
|
+
}
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
if (c === "`") {
|
|
206
|
+
blank(i);
|
|
207
|
+
stack.push({ kind: "tpl" });
|
|
208
|
+
i++;
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
if (c === "{") {
|
|
212
|
+
top.braces++;
|
|
213
|
+
i++;
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
if (c === "}") {
|
|
217
|
+
if (top.braces > 0) top.braces--;
|
|
218
|
+
else if (stack.length > 1) stack.pop();
|
|
219
|
+
i++;
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
i++;
|
|
223
|
+
}
|
|
224
|
+
return out.join("");
|
|
225
|
+
}
|
|
226
|
+
const ANNA_CALL_RE = /\banna\s*\.\s*([a-z]+)\s*\.\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\(/g;
|
|
115
227
|
function scanHostApiCalls(files) {
|
|
116
228
|
const out = [];
|
|
117
229
|
for (const f of files) {
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
230
|
+
const code = stripStringsAndComments(f.content);
|
|
231
|
+
ANNA_CALL_RE.lastIndex = 0;
|
|
232
|
+
let m;
|
|
233
|
+
let line = 1;
|
|
234
|
+
let cursor = 0;
|
|
235
|
+
while ((m = ANNA_CALL_RE.exec(code)) !== null) {
|
|
236
|
+
for (; cursor < m.index; cursor++) if (code.charCodeAt(cursor) === 10) line++;
|
|
237
|
+
out.push({
|
|
124
238
|
file: f.path,
|
|
125
|
-
line
|
|
239
|
+
line,
|
|
126
240
|
ns: m[1],
|
|
127
241
|
method: m[2]
|
|
128
242
|
});
|
|
@@ -237,7 +351,17 @@ function validateUiSectionStatic(manifest) {
|
|
|
237
351
|
const cspOverrides = ui.csp_overrides ?? {};
|
|
238
352
|
const badDirectives = Object.keys(cspOverrides).filter((d) => !CSP_OVERRIDABLE_DIRECTIVES.has(d)).sort();
|
|
239
353
|
if (badDirectives.length) errors.push(`csp_overrides 含不允许的 directive: ${JSON.stringify(badDirectives)}`);
|
|
240
|
-
for (const d of ["script-src", "style-src"])
|
|
354
|
+
for (const d of ["script-src", "style-src"]) {
|
|
355
|
+
const literals = d === "script-src" ? ["'self'", "'wasm-unsafe-eval'"] : ["'self'"];
|
|
356
|
+
for (const v of cspOverrides[d] ?? []) if (!literals.includes(v) && !v.startsWith("'sha256-") && !v.startsWith("'nonce-")) {
|
|
357
|
+
const allowed = [
|
|
358
|
+
...literals,
|
|
359
|
+
"'sha256-...'",
|
|
360
|
+
"'nonce-...'"
|
|
361
|
+
].join(" / ");
|
|
362
|
+
errors.push(`csp_overrides[${d}] 仅允许 ${allowed}: ${v}`);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
241
365
|
return errors;
|
|
242
366
|
}
|
|
243
367
|
|
|
@@ -473,8 +597,8 @@ program.command("validate").description("Run schema + ACL checks on a manifest+b
|
|
|
473
597
|
const code = printResult(result);
|
|
474
598
|
process.exit(code);
|
|
475
599
|
});
|
|
476
|
-
program.command("dev").description("Run a local harness (in-process dispatcher + iframe + SSE relay)").option("--manifest <path>", "manifest.json path", "manifest.json").option("--bundle <dir>", "bundle directory (default: ./bundle)").option("--slug <slug>", "App slug (overrides manifest.slug/name)").option("--view <name>", "View name to open (default: manifest default)").option("--matrix-nexus-root <path>", "matrix-nexus checkout (auto-detected if omitted; can also use $ANNA_NEXUS_ROOT)").option("--port <number>", "HTTP port", "5180").option("--user-id <id>", "Harness user_id", "1").option("--cwd <dir>", "Project root (default: cwd)").option("--no-watch", "Disable bundle file watcher (default: enabled)").option("--executa <spec>", "Explicit executa registration; repeatable. Spec: comma-separated key=value (dir=<path>[,tool_id=<id>][,type=python|node|go|binary][,command=\"<argv>\"]). When only `dir=` is given, the executa is auto-detected from executa.json / pyproject.toml / package.json / go.mod. Overrides directory auto-discovery under <manifest-dir>/executas/.", (val, prev) => prev ? [...prev, val] : [val]).option("--no-llm", "Disable LLM bridge (anna.llm/agent return llm_disabled)").option("--mock-llm <fixture>", "Serve canned LLM responses from a JSONL fixture").option("--llm-account <host>", "Saved account host to use (default: current)").option("--llm-app-slug <slug>", "Override the manifest slug used to register / look up the dev AnnaApp (default: manifest.slug)").option("--storage <mode>", "Storage backend: \"legacy\" (in-memory runtime_state, default) or \"aps\" (real nexus APS via /api/v1/storage/* — requires `anna-app login`).", "legacy").option("--web <mode>", "Web backend: \"local\" (keyless ddgs + stdlib fetcher, free, default) or \"real\" (platform web service via /api/v1/copilot/app/web/* — production provider chain + normal CU billing; requires `anna-app login`).", "local").action(async (opts) => {
|
|
477
|
-
const { runDev, parseExecutaSpec } = await import("./dev-
|
|
600
|
+
program.command("dev").description("Run a local harness (in-process dispatcher + iframe + SSE relay)").option("--manifest <path>", "manifest.json path", "manifest.json").option("--bundle <dir>", "bundle directory (default: ./bundle)").option("--slug <slug>", "App slug (overrides manifest.slug/name)").option("--view <name>", "View name to open (default: manifest default)").option("--matrix-nexus-root <path>", "matrix-nexus checkout (auto-detected if omitted; can also use $ANNA_NEXUS_ROOT)").option("--port <number>", "HTTP port", "5180").option("--user-id <id>", "Harness user_id", "1").option("--cwd <dir>", "Project root (default: cwd)").option("--no-watch", "Disable bundle file watcher (default: enabled)").option("--executa <spec>", "Explicit executa registration; repeatable. Spec: comma-separated key=value (dir=<path>[,tool_id=<id>][,type=python|node|go|binary][,command=\"<argv>\"]). When only `dir=` is given, the executa is auto-detected from executa.json / pyproject.toml / package.json / go.mod. Overrides directory auto-discovery under <manifest-dir>/executas/.", (val, prev) => prev ? [...prev, val] : [val]).option("--no-llm", "Disable LLM bridge (anna.llm/agent return llm_disabled)").option("--mock-llm <fixture>", "Serve canned LLM responses from a JSONL fixture").option("--llm-account <host>", "Saved account host to use (default: current)").option("--llm-app-slug <slug>", "Override the manifest slug used to register / look up the dev AnnaApp (default: manifest.slug)").option("--storage <mode>", "Storage backend: \"legacy\" (in-memory runtime_state, default) or \"aps\" (real nexus APS via /api/v1/storage/* — requires `anna-app login`).", "legacy").option("--no-strict-caps", "Downgrade the production-parity storage capability gate to a warning (by default, storage/* fails with -32021 when host_capabilities declares no aps.* entry — exactly like production).").option("--web <mode>", "Web backend: \"local\" (keyless ddgs + stdlib fetcher, free, default) or \"real\" (platform web service via /api/v1/copilot/app/web/* — production provider chain + normal CU billing; requires `anna-app login`).", "local").action(async (opts) => {
|
|
601
|
+
const { runDev, parseExecutaSpec } = await import("./dev-CQIZHt7u.js");
|
|
478
602
|
const cwd = opts.cwd ?? process.cwd();
|
|
479
603
|
let executas;
|
|
480
604
|
if (opts.executa && opts.executa.length > 0) {
|
|
@@ -504,13 +628,14 @@ program.command("dev").description("Run a local harness (in-process dispatcher +
|
|
|
504
628
|
llmAccount: opts.llmAccount,
|
|
505
629
|
llmAppSlug: opts.llmAppSlug,
|
|
506
630
|
storageMode: opts.storage,
|
|
631
|
+
strictCaps: opts.strictCaps !== false,
|
|
507
632
|
webMode: opts.web
|
|
508
633
|
});
|
|
509
634
|
process.exit(code);
|
|
510
635
|
});
|
|
511
636
|
const fixture = program.command("fixture").description("Inspect / replay harness recordings (Phase 6)");
|
|
512
637
|
fixture.command("verify <file>").description("Schema + invariant checks on a harness JSONL recording").option("--json", "Emit machine-readable JSON", false).action(async (file, opts) => {
|
|
513
|
-
const { runFixtureVerify } = await import("./fixture-
|
|
638
|
+
const { runFixtureVerify } = await import("./fixture-CizypXzX.js");
|
|
514
639
|
const code = await runFixtureVerify({
|
|
515
640
|
file,
|
|
516
641
|
json: opts.json
|
|
@@ -518,7 +643,7 @@ fixture.command("verify <file>").description("Schema + invariant checks on a har
|
|
|
518
643
|
process.exit(code);
|
|
519
644
|
});
|
|
520
645
|
fixture.command("summarize <file>").description("Print a human-readable digest of a harness recording").option("--json", "Emit machine-readable JSON", false).action(async (file, opts) => {
|
|
521
|
-
const { runFixtureSummarize } = await import("./fixture-
|
|
646
|
+
const { runFixtureSummarize } = await import("./fixture-CizypXzX.js");
|
|
522
647
|
const code = await runFixtureSummarize({
|
|
523
648
|
file,
|
|
524
649
|
json: opts.json
|
|
@@ -526,7 +651,7 @@ fixture.command("summarize <file>").description("Print a human-readable digest o
|
|
|
526
651
|
process.exit(code);
|
|
527
652
|
});
|
|
528
653
|
fixture.command("replay <file>").description("Dry-run replay of a harness recording (Phase 6 MVP)").option("--manifest <path>", "manifest.json path", "manifest.json").action(async (file, opts) => {
|
|
529
|
-
const { runFixtureReplay } = await import("./fixture-
|
|
654
|
+
const { runFixtureReplay } = await import("./fixture-CizypXzX.js");
|
|
530
655
|
const code = await runFixtureReplay({
|
|
531
656
|
file,
|
|
532
657
|
manifest: opts.manifest
|
|
@@ -534,12 +659,12 @@ fixture.command("replay <file>").description("Dry-run replay of a harness record
|
|
|
534
659
|
process.exit(code);
|
|
535
660
|
});
|
|
536
661
|
program.command("doctor").description("Check environment for `anna-app dev` (uv, matrix-nexus, dev key)").option("--matrix-nexus-root <path>", "matrix-nexus checkout (optional)").action(async (opts) => {
|
|
537
|
-
const { runDoctor } = await import("./doctor-
|
|
662
|
+
const { runDoctor } = await import("./doctor-qFe9sXxR.js");
|
|
538
663
|
const code = await runDoctor({ matrixNexusRoot: opts.matrixNexusRoot });
|
|
539
664
|
process.exit(code);
|
|
540
665
|
});
|
|
541
666
|
program.command("login").description("Device-flow login against a nexus host; saves a PAT to ~/.config/anna/credentials.json").requiredOption("--host <url>", "nexus base URL, e.g. https://nexus.example.com").option("--no-browser", "Do not open a browser window automatically", false).action(async (opts) => {
|
|
542
|
-
const { runLogin } = await import("./login-
|
|
667
|
+
const { runLogin } = await import("./login-BleVDjXE.js");
|
|
543
668
|
const code = await runLogin({
|
|
544
669
|
host: opts.host,
|
|
545
670
|
noBrowser: opts.browser === false
|
|
@@ -547,7 +672,7 @@ program.command("login").description("Device-flow login against a nexus host; sa
|
|
|
547
672
|
process.exit(code);
|
|
548
673
|
});
|
|
549
674
|
program.command("logout").description("Remove a saved PAT entry").option("--host <url>", "Account to remove (default: current)").option("--all", "Remove every saved account", false).action(async (opts) => {
|
|
550
|
-
const { runLogout } = await import("./logout-
|
|
675
|
+
const { runLogout } = await import("./logout-BO4brBaY.js");
|
|
551
676
|
const code = await runLogout({
|
|
552
677
|
host: opts.host,
|
|
553
678
|
all: opts.all
|
|
@@ -555,13 +680,13 @@ program.command("logout").description("Remove a saved PAT entry").option("--host
|
|
|
555
680
|
process.exit(code);
|
|
556
681
|
});
|
|
557
682
|
program.command("whoami").description("Show the current account (and any others)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
558
|
-
const { runWhoami } = await import("./whoami-
|
|
683
|
+
const { runWhoami } = await import("./whoami-rvVc_nQ9.js");
|
|
559
684
|
const code = await runWhoami({ json: opts.json });
|
|
560
685
|
process.exit(code);
|
|
561
686
|
});
|
|
562
687
|
const account = program.command("account").description("Manage your developer account (handle / namespace)");
|
|
563
688
|
account.command("set-handle <handle>").description("Set or rename your developer handle — the @handle namespace your apps publish under (@handle/slug). Required before creating your first app.").option("--host <url>", "Account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (handle, opts) => {
|
|
564
|
-
const { runAccountSetHandle } = await import("./account-
|
|
689
|
+
const { runAccountSetHandle } = await import("./account-C-IeQNNr.js");
|
|
565
690
|
const code = await runAccountSetHandle({
|
|
566
691
|
handle,
|
|
567
692
|
account: opts.host,
|
|
@@ -581,7 +706,7 @@ executa.command("init <dir>").description("Scaffold a standalone Executa plugin
|
|
|
581
706
|
console.error(`✗ unknown template "${opts.template}" — expected python | node | go`);
|
|
582
707
|
process.exit(2);
|
|
583
708
|
}
|
|
584
|
-
const { runExecutaInit } = await import("./executa-init-
|
|
709
|
+
const { runExecutaInit } = await import("./executa-init-BM0HR-K7.js");
|
|
585
710
|
const code = runExecutaInit({
|
|
586
711
|
targetDir: dir,
|
|
587
712
|
slug,
|
|
@@ -592,12 +717,12 @@ executa.command("init <dir>").description("Scaffold a standalone Executa plugin
|
|
|
592
717
|
process.exit(code);
|
|
593
718
|
});
|
|
594
719
|
executa.command("register").description("Register a HARNESS AnnaApp(kind=executa) so `executa dev --storage real` (and agent / sampling / image / upload real-mode flows) can mint tokens for a local executa subprocess. Does NOT publish the executa itself — use `executa publish` for that. Lists/deletes via `apps list` / `apps delete`.").requiredOption("--tool-id <id>", "Executa tool_id (matches executa.json tool_id / executable_name)").option("--slug <slug>", "App slug (default: executa-<tool_id>; must be lowercase + hyphens)").option("--name <name>", "Human-readable display name (default: <tool_id>)").option("--account <host>", "Saved account host (default: current)").action(async (opts) => {
|
|
595
|
-
const { runExecutaRegister } = await import("./executa-register-
|
|
720
|
+
const { runExecutaRegister } = await import("./executa-register-CDKG3L5c.js");
|
|
596
721
|
const code = await runExecutaRegister(opts);
|
|
597
722
|
process.exit(code);
|
|
598
723
|
});
|
|
599
724
|
executa.command("install").description("Install a local-dev shim for an Executa under its minted tool_id so the Agent can discover it via 'Rediscover Local' (for distribution_type: local). Resolves the tool_id from .anna/executa.json (written by `executa publish` / `apps push`) unless --tool-id is given.").option("--dir <path>", "Executa project dir (default: CWD)").option("--tool-id <id>", "Install the shim under this exact id (default: minted id from .anna/executa.json, else executa.json tool_id)").option("--bin-dir <path>", "Install dir for the shim (default: ~/.anna/executa/bin)").option("--force", "Overwrite an existing shim of the same name", false).option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
600
|
-
const { runExecutaInstall } = await import("./executa-install-
|
|
725
|
+
const { runExecutaInstall } = await import("./executa-install-Dnerah9u.js");
|
|
601
726
|
const code = await runExecutaInstall({
|
|
602
727
|
dir: opts.dir,
|
|
603
728
|
toolId: opts.toolId,
|
|
@@ -608,7 +733,7 @@ executa.command("install").description("Install a local-dev shim for an Executa
|
|
|
608
733
|
process.exit(code);
|
|
609
734
|
});
|
|
610
735
|
executa.command("dev").description("Run one Executa plugin in isolation (REPL or one-shot describe/invoke)").option("--dir <path>", "Executa project dir (default: CWD)").option("--spec <spec>", "Override discovery: comma-separated key=value (tool_id=...,type=...,command=\"...\")").option("--describe", "Print MANIFEST and exit", false).option("--health", "Print health and exit", false).option("--invoke <tool>", "Invoke one tool and exit").option("--args <json>", "JSON object passed as tool arguments", "{}").option("--json", "One-shot: emit compact JSON (no banners)", false).option("--no-sampling", "Hard-disable sampling reverse RPC (returns sampling_disabled)").option("--mock-sampling <fixture>", "Serve canned sampling responses from a JSONL fixture (offline)").option("--sampling-unsupported-format", "Simulate a model without json_schema support — exercises responseFormat onUnsupported branches (-32010 / downgrade)").option("--app-slug <slug>", "Forward sampling to nexus on behalf of this dev AnnaApp slug").option("--sampling-account <host>", "Saved account host for nexus sampling (default: current)").option("--no-agent", "Hard-disable agent reverse RPC (returns agent_not_granted)").option("--mock-agent <fixture>", "Serve canned agent/* responses from a JSONL fixture (offline)").option("--agent-account <host>", "Saved account host for nexus agent (default: --sampling-account or current)").option("--storage <mode>", "Storage backend: off | memory | mock | real (default: memory)").option("--mock-storage <fixture>", "Serve canned storage/* + files/* responses from a JSONL fixture").option("--storage-account <host>", "Saved account host for nexus storage (default: --sampling-account or current)").option("--storage-scopes <list>", "Comma-separated scopes for real storage tokens (default: user,app,tool)").option("--no-image", "Hard-disable image reverse RPC (returns image_not_granted)").option("--mock-image <fixture>", "Serve canned image/generate + image/edit responses from a JSONL fixture").option("--image-account <host>", "Saved account host for nexus image (default: --sampling-account or current)").option("--no-upload", "Hard-disable host/uploadFile reverse RPC (returns upload_not_granted)").option("--mock-upload <fixture>", "Serve canned host/uploadFile responses from a JSONL fixture").option("--upload-account <host>", "Saved account host for nexus uploads (default: --sampling-account or current)").action(async (opts) => {
|
|
611
|
-
const { runExecutaDev } = await import("./executa-dev-
|
|
736
|
+
const { runExecutaDev } = await import("./executa-dev-BeYhrj-n.js");
|
|
612
737
|
const storageMode = opts.storage === void 0 ? void 0 : (() => {
|
|
613
738
|
const m = opts.storage;
|
|
614
739
|
if (m === "off" || m === "memory" || m === "mock" || m === "real") return m;
|
|
@@ -646,14 +771,14 @@ executa.command("dev").description("Run one Executa plugin in isolation (REPL or
|
|
|
646
771
|
});
|
|
647
772
|
const apps = program.command("apps").description("Anna App publish lifecycle commands");
|
|
648
773
|
apps.command("list").description("List the Anna Apps you authored, with lifecycle status").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
649
|
-
const { runAppsList } = await import("./apps-
|
|
774
|
+
const { runAppsList } = await import("./apps-CTIiH6a_.js");
|
|
650
775
|
process.exit(await runAppsList({
|
|
651
776
|
account: opts.account,
|
|
652
777
|
json: opts.json
|
|
653
778
|
}));
|
|
654
779
|
});
|
|
655
780
|
apps.command("rename-slug <new-slug>").description("Rename an app's public slug (DRAFT/REJECTED, never-published, zero installs only). Updates local app.json + .anna/app.json on success.").option("--cwd <dir>", "Project root (default: cwd)").option("--manifest <path>", "manifest.json path", "manifest.json").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (newSlug, opts) => {
|
|
656
|
-
const { runAppsRenameSlug } = await import("./apps-rename-slug-
|
|
781
|
+
const { runAppsRenameSlug } = await import("./apps-rename-slug-4_5lsDwg.js");
|
|
657
782
|
process.exit(await runAppsRenameSlug({
|
|
658
783
|
newSlug,
|
|
659
784
|
cwd: opts.cwd,
|
|
@@ -662,7 +787,7 @@ apps.command("rename-slug <new-slug>").description("Rename an app's public slug
|
|
|
662
787
|
json: opts.json
|
|
663
788
|
}));
|
|
664
789
|
});
|
|
665
|
-
apps.command("publish").description("Publish
|
|
790
|
+
apps.command("publish").description("Publish an Anna App version (composite: push + cut, freeze at cut)").option("--cwd <dir>", "Project root (default: cwd)").option("--manifest <path>", "manifest.json path", "manifest.json").option("--bump <kind>", "Bump version: patch|minor|major").option("--no-write", "Skip writing the bumped version back to disk", false).option("--dry-run", "Resolve identity + diff but don't upload", false).option("--executa-id <handle=id>", "Override a bundled executa handle with a real tool_id (repeatable)", (val, prev) => [...prev, val], []).option("--skip-executa-publish", "Use cached/overridden tool_ids; don't recursively publish bundled executas", false).option("--no-bundled-executas", "Disable bundled-executa orchestration (legacy behaviour)").option("--no-bundle", "Skip UI bundle upload even if the manifest declares a UI").option("--bundle-dir <dir>", "UI bundle directory (default: <cwd>/bundle)").option("--profile <name>", "Select a bundled executa `distribution.profiles` entry for this run (overrides each executa.json `active`, e.g. --profile local)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
666
791
|
if (opts.bump && ![
|
|
667
792
|
"patch",
|
|
668
793
|
"minor",
|
|
@@ -671,7 +796,7 @@ apps.command("publish").description("Publish or update an Anna App (manifest.jso
|
|
|
671
796
|
console.error(`✗ --bump must be patch|minor|major (got: ${opts.bump})`);
|
|
672
797
|
process.exit(2);
|
|
673
798
|
}
|
|
674
|
-
const { runAppsPublish } = await import("./apps-publish-
|
|
799
|
+
const { runAppsPublish } = await import("./apps-publish-AdXryRYo.js");
|
|
675
800
|
process.exit(await runAppsPublish({
|
|
676
801
|
cwd: opts.cwd,
|
|
677
802
|
manifest: opts.manifest,
|
|
@@ -705,7 +830,7 @@ apps.command("push").description("Upsert the mutable working draft (manifest + b
|
|
|
705
830
|
process.exit(2);
|
|
706
831
|
}
|
|
707
832
|
}
|
|
708
|
-
const { runAppsPush } = await import("./apps-push-
|
|
833
|
+
const { runAppsPush } = await import("./apps-push-WBfD0JyE.js");
|
|
709
834
|
process.exit(await runAppsPush({
|
|
710
835
|
cwd: opts.cwd,
|
|
711
836
|
manifest: opts.manifest,
|
|
@@ -725,7 +850,7 @@ apps.command("push").description("Upsert the mutable working draft (manifest + b
|
|
|
725
850
|
}));
|
|
726
851
|
});
|
|
727
852
|
apps.command("cut <version>").description("Snapshot the working draft into an immutable version (freeze deps)").option("--changelog <text>", "Override the working draft changelog for this version").option("--slug <slug>", "App slug (default: resolve from .anna/app.json cache)").option("--cwd <dir>", "Project root for identity cache (default: cwd)").option("--dry-run", "Resolve target but don't cut", false).option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (version, opts) => {
|
|
728
|
-
const { runAppsCut } = await import("./apps-cut-
|
|
853
|
+
const { runAppsCut } = await import("./apps-cut-eOVb1-0y.js");
|
|
729
854
|
process.exit(await runAppsCut({
|
|
730
855
|
version,
|
|
731
856
|
changelog: opts.changelog,
|
|
@@ -737,7 +862,7 @@ apps.command("cut <version>").description("Snapshot the working draft into an im
|
|
|
737
862
|
}));
|
|
738
863
|
});
|
|
739
864
|
apps.command("discard").description("Drop the mutable working draft (leaves cut versions intact)").option("--slug <slug>", "App slug (default: resolve from .anna/app.json cache)").option("--cwd <dir>", "Project root for identity cache (default: cwd)").option("--dry-run", "Resolve target but don't discard", false).option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
740
|
-
const { runAppsDiscard } = await import("./apps-discard-
|
|
865
|
+
const { runAppsDiscard } = await import("./apps-discard-7ERq2pmS.js");
|
|
741
866
|
process.exit(await runAppsDiscard({
|
|
742
867
|
slug: opts.slug,
|
|
743
868
|
cwd: opts.cwd,
|
|
@@ -747,7 +872,7 @@ apps.command("discard").description("Drop the mutable working draft (leaves cut
|
|
|
747
872
|
}));
|
|
748
873
|
});
|
|
749
874
|
apps.command("release <version>").description("Freeze & publish an existing remote version (go live)").option("--slug <slug>", "App slug (default: resolve from .anna/app.json cache)").option("--cwd <dir>", "Project root for identity cache (default: cwd)").option("--allow-create", "If the version isn't on the server, run 'apps publish' first, then release", false).option("--dry-run", "Resolve target + pre-flight but don't publish", false).option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (version, opts) => {
|
|
750
|
-
const { runAppsRelease } = await import("./apps-release-
|
|
875
|
+
const { runAppsRelease } = await import("./apps-release-DAV-DB_Q.js");
|
|
751
876
|
process.exit(await runAppsRelease({
|
|
752
877
|
version,
|
|
753
878
|
slug: opts.slug,
|
|
@@ -759,7 +884,7 @@ apps.command("release <version>").description("Freeze & publish an existing remo
|
|
|
759
884
|
}));
|
|
760
885
|
});
|
|
761
886
|
apps.command("sync-meta").description("Push mutable store metadata (name/tagline/…) from the manifest").option("--cwd <dir>", "Project root (default: cwd)").option("--manifest <path>", "manifest.json path", "manifest.json").option("--logo <path>", "Local logo file to upload (overrides app.json logo_file)").option("--dry-run", "Print the metadata diff but don't PATCH", false).option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
762
|
-
const { runAppsSyncMeta } = await import("./apps-sync-meta-
|
|
887
|
+
const { runAppsSyncMeta } = await import("./apps-sync-meta-BwN8g6TO.js");
|
|
763
888
|
process.exit(await runAppsSyncMeta({
|
|
764
889
|
cwd: opts.cwd,
|
|
765
890
|
manifest: opts.manifest,
|
|
@@ -770,7 +895,7 @@ apps.command("sync-meta").description("Push mutable store metadata (name/tagline
|
|
|
770
895
|
}));
|
|
771
896
|
});
|
|
772
897
|
apps.command("submit-review [slug]").description("Move an app into review (DRAFT/REJECTED → PENDING_REVIEW)").option("--cwd <dir>", "Project root for identity cache (default: cwd)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
773
|
-
const { runAppsSubmitReview } = await import("./apps-submit-review
|
|
898
|
+
const { runAppsSubmitReview } = await import("./apps-submit-review-CxoKgexX.js");
|
|
774
899
|
process.exit(await runAppsSubmitReview({
|
|
775
900
|
slug,
|
|
776
901
|
cwd: opts.cwd,
|
|
@@ -779,7 +904,7 @@ apps.command("submit-review [slug]").description("Move an app into review (DRAFT
|
|
|
779
904
|
}));
|
|
780
905
|
});
|
|
781
906
|
apps.command("status <slug>").description("Show server-known state for one Anna App").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
782
|
-
const { runAppsStatus } = await import("./apps-status-
|
|
907
|
+
const { runAppsStatus } = await import("./apps-status-hMrRz356.js");
|
|
783
908
|
process.exit(await runAppsStatus({
|
|
784
909
|
slug,
|
|
785
910
|
account: opts.account,
|
|
@@ -787,7 +912,7 @@ apps.command("status <slug>").description("Show server-known state for one Anna
|
|
|
787
912
|
}));
|
|
788
913
|
});
|
|
789
914
|
apps.command("versions <slug>").description("List all server versions of one Anna App").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
790
|
-
const { runAppsVersions } = await import("./apps-versions-
|
|
915
|
+
const { runAppsVersions } = await import("./apps-versions-gfG_sBFv.js");
|
|
791
916
|
process.exit(await runAppsVersions({
|
|
792
917
|
slug,
|
|
793
918
|
account: opts.account,
|
|
@@ -795,7 +920,7 @@ apps.command("versions <slug>").description("List all server versions of one Ann
|
|
|
795
920
|
}));
|
|
796
921
|
});
|
|
797
922
|
apps.command("grants <slug>").description("Show currently granted scopes/quota for one Anna App").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
798
|
-
const { runAppsGrants } = await import("./apps-grants-
|
|
923
|
+
const { runAppsGrants } = await import("./apps-grants-DVoSb6-r.js");
|
|
799
924
|
process.exit(await runAppsGrants({
|
|
800
925
|
slug,
|
|
801
926
|
account: opts.account,
|
|
@@ -803,7 +928,7 @@ apps.command("grants <slug>").description("Show currently granted scopes/quota f
|
|
|
803
928
|
}));
|
|
804
929
|
});
|
|
805
930
|
apps.command("unpublish <slug>").description("Flip a PUBLISHED app back to APPROVED (private)").option("--yes", "Acknowledge the destructive operation", false).option("--confirm <slug>", "Slug confirmation (must match target)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
806
|
-
const { runAppsUnpublish } = await import("./apps-destructive-
|
|
931
|
+
const { runAppsUnpublish } = await import("./apps-destructive-DcG3T1Mx.js");
|
|
807
932
|
process.exit(await runAppsUnpublish({
|
|
808
933
|
slug,
|
|
809
934
|
yes: opts.yes,
|
|
@@ -813,7 +938,7 @@ apps.command("unpublish <slug>").description("Flip a PUBLISHED app back to APPRO
|
|
|
813
938
|
}));
|
|
814
939
|
});
|
|
815
940
|
apps.command("archive <slug>").description("Archive an Anna App (hides it from end users)").option("--yes", "Acknowledge the destructive operation", false).option("--confirm <slug>", "Slug confirmation (must match target)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
816
|
-
const { runAppsArchive } = await import("./apps-destructive-
|
|
941
|
+
const { runAppsArchive } = await import("./apps-destructive-DcG3T1Mx.js");
|
|
817
942
|
process.exit(await runAppsArchive({
|
|
818
943
|
slug,
|
|
819
944
|
yes: opts.yes,
|
|
@@ -823,7 +948,7 @@ apps.command("archive <slug>").description("Archive an Anna App (hides it from e
|
|
|
823
948
|
}));
|
|
824
949
|
});
|
|
825
950
|
apps.command("unarchive <slug>").description("Restore an archived Anna App back to APPROVED").option("--yes", "Acknowledge the operation", false).option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
826
|
-
const { runAppsUnarchive } = await import("./apps-destructive-
|
|
951
|
+
const { runAppsUnarchive } = await import("./apps-destructive-DcG3T1Mx.js");
|
|
827
952
|
process.exit(await runAppsUnarchive({
|
|
828
953
|
slug,
|
|
829
954
|
yes: opts.yes,
|
|
@@ -832,7 +957,7 @@ apps.command("unarchive <slug>").description("Restore an archived Anna App back
|
|
|
832
957
|
}));
|
|
833
958
|
});
|
|
834
959
|
apps.command("delete <slug>").description("Hard-delete an Anna App (refused by server if installs exist)").option("--yes", "Acknowledge the destructive operation", false).option("--confirm <slug>", "Slug confirmation (must match target)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
835
|
-
const { runAppsDelete } = await import("./apps-destructive-
|
|
960
|
+
const { runAppsDelete } = await import("./apps-destructive-DcG3T1Mx.js");
|
|
836
961
|
process.exit(await runAppsDelete({
|
|
837
962
|
slug,
|
|
838
963
|
yes: opts.yes,
|
|
@@ -842,14 +967,14 @@ apps.command("delete <slug>").description("Hard-delete an Anna App (refused by s
|
|
|
842
967
|
}));
|
|
843
968
|
});
|
|
844
969
|
executa.command("list").description("List Executas owned by the current PAT").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
845
|
-
const { runExecutaList } = await import("./executa-reads-
|
|
970
|
+
const { runExecutaList } = await import("./executa-reads-BJpmB-B1.js");
|
|
846
971
|
process.exit(await runExecutaList({
|
|
847
972
|
account: opts.account,
|
|
848
973
|
json: opts.json
|
|
849
974
|
}));
|
|
850
975
|
});
|
|
851
976
|
executa.command("status <ref>").description("Show server-known state for one Executa (slug or tool_id)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (ref, opts) => {
|
|
852
|
-
const { runExecutaStatus } = await import("./executa-reads-
|
|
977
|
+
const { runExecutaStatus } = await import("./executa-reads-BJpmB-B1.js");
|
|
853
978
|
process.exit(await runExecutaStatus({
|
|
854
979
|
ref,
|
|
855
980
|
account: opts.account,
|
|
@@ -857,7 +982,7 @@ executa.command("status <ref>").description("Show server-known state for one Exe
|
|
|
857
982
|
}));
|
|
858
983
|
});
|
|
859
984
|
executa.command("versions <ref>").description("List immutable version snapshots for one Executa").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (ref, opts) => {
|
|
860
|
-
const { runExecutaVersions } = await import("./executa-reads-
|
|
985
|
+
const { runExecutaVersions } = await import("./executa-reads-BJpmB-B1.js");
|
|
861
986
|
process.exit(await runExecutaVersions({
|
|
862
987
|
ref,
|
|
863
988
|
account: opts.account,
|
|
@@ -873,7 +998,7 @@ executa.command("publish").description("Mint or update an Executa (executa.json
|
|
|
873
998
|
console.error(`✗ --bump must be patch|minor|major (got: ${opts.bump})`);
|
|
874
999
|
process.exit(2);
|
|
875
1000
|
}
|
|
876
|
-
const { runExecutaPublish } = await import("./executa-publish-
|
|
1001
|
+
const { runExecutaPublish } = await import("./executa-publish-CVlMaHIY.js");
|
|
877
1002
|
process.exit(await runExecutaPublish({
|
|
878
1003
|
cwd: opts.cwd,
|
|
879
1004
|
manifest: opts.manifest,
|
|
@@ -887,7 +1012,7 @@ executa.command("publish").description("Mint or update an Executa (executa.json
|
|
|
887
1012
|
}));
|
|
888
1013
|
});
|
|
889
1014
|
executa.command("upload-binaries").description("Push the local binary_artifacts declared in executa.json straight to the platform CDN (no public source URL needed — works for private repos). Requires a minted identity (.anna/executa.json from `executa publish` / `apps push`) or --tool-id.").option("--dir <path>", "Executa project dir (default: CWD)").option("--dry-run", "Hash artifacts + validate the plan server-side without uploading", false).option("--oidc", "Mint the upload token from the GitHub Actions OIDC id-token instead of a PAT (zero long-term secrets; needs `permissions: id-token: write` and a registered trusted publisher)", false).option("--tool-id <id>", "Explicit tool_id (skip the identity cache)").option("--host <url>", "Nexus host (required with --oidc unless ANNA_APP_HOST is set)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
890
|
-
const { runExecutaUploadBinaries } = await import("./executa-upload-binaries-
|
|
1015
|
+
const { runExecutaUploadBinaries } = await import("./executa-upload-binaries-BVWs6MFF.js");
|
|
891
1016
|
process.exit(await runExecutaUploadBinaries({
|
|
892
1017
|
dir: opts.dir,
|
|
893
1018
|
dryRun: opts.dryRun,
|
|
@@ -900,11 +1025,11 @@ executa.command("upload-binaries").description("Push the local binary_artifacts
|
|
|
900
1025
|
});
|
|
901
1026
|
const trustedPublisher = executa.command("trusted-publisher").description("Manage the GitHub Actions identities allowed to publish binaries for an executa via OIDC (zero-secret CI; pairs with `executa upload-binaries --oidc`)");
|
|
902
1027
|
trustedPublisher.command("add").description("Register a {repository, workflow, environment?} triple").requiredOption("--repository <owner/repo>", "GitHub repository").requiredOption("--workflow <file>", "Workflow file, e.g. \"publish.yml\"").option("--environment <name>", "GitHub Environment gate (default: any)").option("--dir <path>", "Executa project dir (default: CWD)").option("--tool-id <id>", "Explicit tool_id (skip the identity cache)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
903
|
-
const { runTrustedPublisherAdd } = await import("./executa-trusted-publisher-
|
|
1028
|
+
const { runTrustedPublisherAdd } = await import("./executa-trusted-publisher-n9IbAO5D.js");
|
|
904
1029
|
process.exit(await runTrustedPublisherAdd(opts));
|
|
905
1030
|
});
|
|
906
1031
|
trustedPublisher.command("list").description("List registered trusted publishers").option("--dir <path>", "Executa project dir (default: CWD)").option("--tool-id <id>", "Explicit tool_id (skip the identity cache)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
907
|
-
const { runTrustedPublisherList } = await import("./executa-trusted-publisher-
|
|
1032
|
+
const { runTrustedPublisherList } = await import("./executa-trusted-publisher-n9IbAO5D.js");
|
|
908
1033
|
process.exit(await runTrustedPublisherList(opts));
|
|
909
1034
|
});
|
|
910
1035
|
trustedPublisher.command("remove <publisher-id>").description("Remove a trusted publisher registration by id").option("--dir <path>", "Executa project dir (default: CWD)").option("--tool-id <id>", "Explicit tool_id (skip the identity cache)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (publisherId, opts) => {
|
|
@@ -913,14 +1038,14 @@ trustedPublisher.command("remove <publisher-id>").description("Remove a trusted
|
|
|
913
1038
|
console.error(`✗ publisher-id must be a positive integer (got "${publisherId}")`);
|
|
914
1039
|
process.exit(2);
|
|
915
1040
|
}
|
|
916
|
-
const { runTrustedPublisherRemove } = await import("./executa-trusted-publisher-
|
|
1041
|
+
const { runTrustedPublisherRemove } = await import("./executa-trusted-publisher-n9IbAO5D.js");
|
|
917
1042
|
process.exit(await runTrustedPublisherRemove({
|
|
918
1043
|
...opts,
|
|
919
1044
|
publisherId: id
|
|
920
1045
|
}));
|
|
921
1046
|
});
|
|
922
1047
|
executa.command("unpublish <slug>").description("Flip an Executa's visibility back to private").option("--yes", "Acknowledge the destructive operation", false).option("--confirm <slug>", "Slug confirmation (must match target)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
923
|
-
const { runExecutaUnpublish } = await import("./executa-destructive-
|
|
1048
|
+
const { runExecutaUnpublish } = await import("./executa-destructive-C06mgvfJ.js");
|
|
924
1049
|
process.exit(await runExecutaUnpublish({
|
|
925
1050
|
slug,
|
|
926
1051
|
yes: opts.yes,
|
|
@@ -930,7 +1055,7 @@ executa.command("unpublish <slug>").description("Flip an Executa's visibility ba
|
|
|
930
1055
|
}));
|
|
931
1056
|
});
|
|
932
1057
|
executa.command("yank <ref>").description("Hard-delete one Executa version (<slug>@<version>)").option("--yes", "Acknowledge the destructive operation", false).option("--confirm <slug>", "Slug confirmation (must match target)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (ref, opts) => {
|
|
933
|
-
const { runExecutaYank } = await import("./executa-destructive-
|
|
1058
|
+
const { runExecutaYank } = await import("./executa-destructive-C06mgvfJ.js");
|
|
934
1059
|
process.exit(await runExecutaYank({
|
|
935
1060
|
ref,
|
|
936
1061
|
yes: opts.yes,
|
|
@@ -940,7 +1065,7 @@ executa.command("yank <ref>").description("Hard-delete one Executa version (<slu
|
|
|
940
1065
|
}));
|
|
941
1066
|
});
|
|
942
1067
|
executa.command("delete <slug>").description("Hard-delete an Executa").option("--yes", "Acknowledge the destructive operation", false).option("--confirm <slug>", "Slug confirmation (must match target)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
943
|
-
const { runExecutaDelete } = await import("./executa-destructive-
|
|
1068
|
+
const { runExecutaDelete } = await import("./executa-destructive-C06mgvfJ.js");
|
|
944
1069
|
process.exit(await runExecutaDelete({
|
|
945
1070
|
slug,
|
|
946
1071
|
yes: opts.yes,
|
|
@@ -965,7 +1090,7 @@ executa.command("cache-clear").description("Delete the local `.anna/executa.json
|
|
|
965
1090
|
});
|
|
966
1091
|
const token = program.command("token").description("Manage developer PATs (list / revoke / scopes)");
|
|
967
1092
|
token.command("list").description("List the caller's PATs (most-recent first)").option("--include-revoked", "Also show revoked PATs", false).option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
968
|
-
const { runTokenList } = await import("./token-
|
|
1093
|
+
const { runTokenList } = await import("./token-DeAZLyVz.js");
|
|
969
1094
|
process.exit(await runTokenList({
|
|
970
1095
|
includeRevoked: opts.includeRevoked,
|
|
971
1096
|
account: opts.account,
|
|
@@ -978,7 +1103,7 @@ token.command("revoke <id>").description("Revoke one of the caller's PATs by id"
|
|
|
978
1103
|
console.error(`✗ token id must be a positive integer (got: ${id})`);
|
|
979
1104
|
process.exit(2);
|
|
980
1105
|
}
|
|
981
|
-
const { runTokenRevoke } = await import("./token-
|
|
1106
|
+
const { runTokenRevoke } = await import("./token-DeAZLyVz.js");
|
|
982
1107
|
process.exit(await runTokenRevoke({
|
|
983
1108
|
id: idNum,
|
|
984
1109
|
account: opts.account,
|
|
@@ -986,7 +1111,7 @@ token.command("revoke <id>").description("Revoke one of the caller's PATs by id"
|
|
|
986
1111
|
}));
|
|
987
1112
|
});
|
|
988
1113
|
token.command("scopes").description("Print the available PAT scope catalogue").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
989
|
-
const { runTokenScopes } = await import("./token-
|
|
1114
|
+
const { runTokenScopes } = await import("./token-DeAZLyVz.js");
|
|
990
1115
|
process.exit(await runTokenScopes({
|
|
991
1116
|
account: opts.account,
|
|
992
1117
|
json: opts.json
|
|
@@ -1001,7 +1126,7 @@ program.command("publish").description("Auto-detect cwd and publish (apps publis
|
|
|
1001
1126
|
console.error(`✗ --bump must be patch|minor|major (got: ${opts.bump})`);
|
|
1002
1127
|
process.exit(2);
|
|
1003
1128
|
}
|
|
1004
|
-
const { runTopLevelPublish } = await import("./publish-
|
|
1129
|
+
const { runTopLevelPublish } = await import("./publish-4C5_TgyZ.js");
|
|
1005
1130
|
process.exit(await runTopLevelPublish({
|
|
1006
1131
|
cwd: opts.cwd,
|
|
1007
1132
|
bump: opts.bump,
|