@anna-ai/cli 0.1.35 → 0.1.37

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.
Files changed (27) hide show
  1. package/dist/{app-bundle-upload-DmVKWAj9.js → app-bundle-upload-B6TJeyOq.js} +1 -1
  2. package/dist/{apps-cut-MjSe2ph7.js → apps-cut-Cc0XCFm3.js} +4 -4
  3. package/dist/{apps-discard-BWLVVMu7.js → apps-discard-CUmXXvm1.js} +4 -4
  4. package/dist/{apps-publish-B7reDBe1.js → apps-publish-DnU-B7YF.js} +3 -3
  5. package/dist/{apps-publish--EmBa0zN.js → apps-publish-bcqO88S0.js} +2 -2
  6. package/dist/{apps-push-CkJ1gtpy.js → apps-push-CFDmMwaR.js} +5 -5
  7. package/dist/{apps-release-J-Sjkoym.js → apps-release-CX7FtoOH.js} +1 -1
  8. package/dist/{bridge-Dvck0e9c.js → bridge-C_Vpmwag.js} +1 -1
  9. package/dist/bridge-D_J1ql-k.js +3 -0
  10. package/dist/cli.js +15 -11
  11. package/dist/dev-CgOVdKgK.js +4 -0
  12. package/dist/{dev-GUFWek03.js → dev-DBk4WVRp.js} +2 -2
  13. package/dist/{doctor-C3Nx8E2L.js → doctor-jwjNoAwf.js} +1 -1
  14. package/dist/{executa-dev-CAw5X64R.js → executa-dev-BOYF0I4H.js} +1 -1
  15. package/dist/{executa-install-Dz7hBUsn.js → executa-install-C_n6Kd04.js} +1 -1
  16. package/dist/executa-install-CgB-pvR9.js +7 -0
  17. package/dist/{executa-publish-B_7k1gOf.js → executa-publish-2lAhRQvN.js} +1 -1
  18. package/dist/{executa-publish-kh4Ucd3o.js → executa-publish-DueD_0hh.js} +1 -0
  19. package/dist/{publish-DwIJWl46.js → publish-BQL5NDnd.js} +3 -3
  20. package/dist/{server-BHWGGZsf.js → server-Cg13x19g.js} +1 -1
  21. package/dist/test/index.d.ts +2 -0
  22. package/dist/test/index.js +7 -2
  23. package/dist/{working-orchestration-D7cW2Bf2.js → working-orchestration-BR6kmngc.js} +2 -2
  24. package/package.json +3 -3
  25. package/dist/bridge-CzeSuRRL.js +0 -3
  26. package/dist/dev-CZLOk2qE.js +0 -4
  27. package/dist/executa-install-nOFLBwxv.js +0 -7
@@ -1,6 +1,6 @@
1
1
  import { finalizeBundle, finalizeWorkingBundle, getBundle, initBundle, initWorkingBundle, uploadBundleFile, uploadWorkingBundleFile } from "./apps-DlVsVHQ5.js";
2
2
  import { CliError } from "./client-D-_z1ALk.js";
3
- import { canonicalize } from "./executa-publish-kh4Ucd3o.js";
3
+ import { canonicalize } from "./executa-publish-DueD_0hh.js";
4
4
  import { join, relative, sep } from "node:path";
5
5
  import { readFileSync, readdirSync, statSync } from "node:fs";
6
6
  import { createHash } from "node:crypto";
@@ -7,13 +7,13 @@ import { readExecutaIdentity } from "./executa-cache-BFoUtb4J.js";
7
7
  import { readExecutasLock, writeExecutasLock } from "./bundled-executas-rSIkaA6-.js";
8
8
  import { loadAppManifest, loadExecutaManifest } from "./manifest-CAF3_r1T.js";
9
9
  import "./executas-CvQY_w2U.js";
10
- import "./executa-publish-kh4Ucd3o.js";
10
+ import "./executa-publish-DueD_0hh.js";
11
11
  import "./binary-upload-CKMU5Rfw.js";
12
12
  import { uploadExecutaBinaries } from "./executa-upload-binaries-DURJTXRI.js";
13
- import "./dev-GUFWek03.js";
14
- import "./executa-install-Dz7hBUsn.js";
13
+ import "./dev-DBk4WVRp.js";
14
+ import "./executa-install-C_n6Kd04.js";
15
15
  import "./app-cache-Cr3tKbux.js";
16
- import { resolveAppBySlugOrCache } from "./working-orchestration-D7cW2Bf2.js";
16
+ import { resolveAppBySlugOrCache } from "./working-orchestration-BR6kmngc.js";
17
17
  import { resolve } from "node:path";
18
18
  import { existsSync } from "node:fs";
19
19
  import { bold, cyan, dim, green, yellow } from "kleur/colors";
@@ -7,13 +7,13 @@ import "./executa-cache-BFoUtb4J.js";
7
7
  import "./bundled-executas-rSIkaA6-.js";
8
8
  import "./manifest-CAF3_r1T.js";
9
9
  import "./executas-CvQY_w2U.js";
10
- import "./executa-publish-kh4Ucd3o.js";
10
+ import "./executa-publish-DueD_0hh.js";
11
11
  import "./binary-upload-CKMU5Rfw.js";
12
12
  import "./executa-upload-binaries-DURJTXRI.js";
13
- import "./dev-GUFWek03.js";
14
- import "./executa-install-Dz7hBUsn.js";
13
+ import "./dev-DBk4WVRp.js";
14
+ import "./executa-install-C_n6Kd04.js";
15
15
  import "./app-cache-Cr3tKbux.js";
16
- import { resolveAppBySlugOrCache } from "./working-orchestration-D7cW2Bf2.js";
16
+ import { resolveAppBySlugOrCache } from "./working-orchestration-BR6kmngc.js";
17
17
  import { dim, green, yellow } from "kleur/colors";
18
18
 
19
19
  //#region src/commands/apps-discard.ts
@@ -6,12 +6,12 @@ import "./executa-cache-BFoUtb4J.js";
6
6
  import "./bundled-executas-rSIkaA6-.js";
7
7
  import "./manifest-CAF3_r1T.js";
8
8
  import "./executas-CvQY_w2U.js";
9
- import "./executa-publish-kh4Ucd3o.js";
9
+ import "./executa-publish-DueD_0hh.js";
10
10
  import "./binary-upload-CKMU5Rfw.js";
11
11
  import "./executa-upload-binaries-DURJTXRI.js";
12
12
  import "./app-cache-Cr3tKbux.js";
13
13
  import "./listing-meta-CtVtyaWu.js";
14
- import "./app-bundle-upload-DmVKWAj9.js";
15
- import { runAppsPublish } from "./apps-publish--EmBa0zN.js";
14
+ import "./app-bundle-upload-B6TJeyOq.js";
15
+ import { runAppsPublish } from "./apps-publish-bcqO88S0.js";
16
16
 
17
17
  export { runAppsPublish };
@@ -4,10 +4,10 @@ import { CliError } from "./client-D-_z1ALk.js";
4
4
  import { resolveClient, withErrorHandling } from "./_lifecycle-shared-RyiRITI5.js";
5
5
  import { parseExecutaIdOverrides, readExecutasLock, substituteBundledRefs, validateBundledHandles, writeBundleToolIdSidecar, writeExecutasLock } from "./bundled-executas-rSIkaA6-.js";
6
6
  import { loadAppManifest } from "./manifest-CAF3_r1T.js";
7
- import { bumpVersion, bundleHash, manifestHash, rewriteVersion, runExecutaPublish } from "./executa-publish-kh4Ucd3o.js";
7
+ import { bumpVersion, bundleHash, manifestHash, rewriteVersion, runExecutaPublish } from "./executa-publish-DueD_0hh.js";
8
8
  import { appCacheMatches, readAppIdentity, writeAppIdentity } from "./app-cache-Cr3tKbux.js";
9
9
  import { syncAppListingMeta } from "./listing-meta-CtVtyaWu.js";
10
- import { isExistingDir, uploadAppBundle } from "./app-bundle-upload-DmVKWAj9.js";
10
+ import { isExistingDir, uploadAppBundle } from "./app-bundle-upload-B6TJeyOq.js";
11
11
  import { resolve } from "node:path";
12
12
  import { bold, cyan, dim, green, yellow } from "kleur/colors";
13
13
 
@@ -7,15 +7,15 @@ import "./executa-cache-BFoUtb4J.js";
7
7
  import "./bundled-executas-rSIkaA6-.js";
8
8
  import { loadAppManifest } from "./manifest-CAF3_r1T.js";
9
9
  import "./executas-CvQY_w2U.js";
10
- import { bumpVersion, bundleHash, manifestHash, rewriteVersion } from "./executa-publish-kh4Ucd3o.js";
10
+ import { bumpVersion, bundleHash, manifestHash, rewriteVersion } from "./executa-publish-DueD_0hh.js";
11
11
  import "./binary-upload-CKMU5Rfw.js";
12
12
  import "./executa-upload-binaries-DURJTXRI.js";
13
- import "./dev-GUFWek03.js";
14
- import "./executa-install-Dz7hBUsn.js";
13
+ import "./dev-DBk4WVRp.js";
14
+ import "./executa-install-C_n6Kd04.js";
15
15
  import "./app-cache-Cr3tKbux.js";
16
- import { installLocalBundledShims, resolveAppIdentity, resolveBundledExecutas } from "./working-orchestration-D7cW2Bf2.js";
16
+ import { installLocalBundledShims, resolveAppIdentity, resolveBundledExecutas } from "./working-orchestration-BR6kmngc.js";
17
17
  import { syncAppListingMeta } from "./listing-meta-CtVtyaWu.js";
18
- import { isExistingDir, uploadWorkingBundle } from "./app-bundle-upload-DmVKWAj9.js";
18
+ import { isExistingDir, uploadWorkingBundle } from "./app-bundle-upload-B6TJeyOq.js";
19
19
  import { resolve } from "node:path";
20
20
  import { bold, cyan, dim, green, yellow } from "kleur/colors";
21
21
 
@@ -59,7 +59,7 @@ async function runAppsRelease(opts) {
59
59
  if (!target) {
60
60
  if (opts.allowCreate) {
61
61
  if (!opts.json) console.log(yellow(`version ${opts.version} not found remotely; running 'apps publish' first (--allow-create)…`));
62
- const { runAppsPublish } = await import("./apps-publish-B7reDBe1.js");
62
+ const { runAppsPublish } = await import("./apps-publish-DnU-B7YF.js");
63
63
  const code = await runAppsPublish({
64
64
  cwd: opts.cwd,
65
65
  account: opts.account,
@@ -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.0a12";
12
+ const PINNED_RUNTIME_VERSION = "0.2.0a14";
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.
@@ -0,0 +1,3 @@
1
+ import { BridgeRequestError, PINNED_RUNTIME_VERSION, PythonBridge } from "./bridge-C_Vpmwag.js";
2
+
3
+ export { PINNED_RUNTIME_VERSION, PythonBridge };
package/dist/cli.js CHANGED
@@ -145,6 +145,10 @@ function hostApiAllows(manifest, ns, method) {
145
145
  const declared = (manifest.required_executas?.length ?? 0) + (manifest.optional_executas?.length ?? 0);
146
146
  return declared > 0;
147
147
  }
148
+ if (ns === "credentials" && (method === "list_accounts" || method === "get_token")) {
149
+ const providers = grants.credentials;
150
+ return !!providers && providers.length > 0;
151
+ }
148
152
  const methods = grants[ns];
149
153
  if (!methods || methods.length === 0) return false;
150
154
  if (methods.includes("*")) return true;
@@ -470,7 +474,7 @@ program.command("validate").description("Run schema + ACL checks on a manifest+b
470
474
  process.exit(code);
471
475
  });
472
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").action(async (opts) => {
473
- const { runDev, parseExecutaSpec } = await import("./dev-CZLOk2qE.js");
477
+ const { runDev, parseExecutaSpec } = await import("./dev-CgOVdKgK.js");
474
478
  const cwd = opts.cwd ?? process.cwd();
475
479
  let executas;
476
480
  if (opts.executa && opts.executa.length > 0) {
@@ -529,7 +533,7 @@ fixture.command("replay <file>").description("Dry-run replay of a harness record
529
533
  process.exit(code);
530
534
  });
531
535
  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) => {
532
- const { runDoctor } = await import("./doctor-C3Nx8E2L.js");
536
+ const { runDoctor } = await import("./doctor-jwjNoAwf.js");
533
537
  const code = await runDoctor({ matrixNexusRoot: opts.matrixNexusRoot });
534
538
  process.exit(code);
535
539
  });
@@ -592,7 +596,7 @@ executa.command("register").description("Register a HARNESS AnnaApp(kind=executa
592
596
  process.exit(code);
593
597
  });
594
598
  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) => {
595
- const { runExecutaInstall } = await import("./executa-install-nOFLBwxv.js");
599
+ const { runExecutaInstall } = await import("./executa-install-CgB-pvR9.js");
596
600
  const code = await runExecutaInstall({
597
601
  dir: opts.dir,
598
602
  toolId: opts.toolId,
@@ -603,7 +607,7 @@ executa.command("install").description("Install a local-dev shim for an Executa
603
607
  process.exit(code);
604
608
  });
605
609
  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) => {
606
- const { runExecutaDev } = await import("./executa-dev-CAw5X64R.js");
610
+ const { runExecutaDev } = await import("./executa-dev-BOYF0I4H.js");
607
611
  const storageMode = opts.storage === void 0 ? void 0 : (() => {
608
612
  const m = opts.storage;
609
613
  if (m === "off" || m === "memory" || m === "mock" || m === "real") return m;
@@ -666,7 +670,7 @@ apps.command("publish").description("Publish or update an Anna App (manifest.jso
666
670
  console.error(`✗ --bump must be patch|minor|major (got: ${opts.bump})`);
667
671
  process.exit(2);
668
672
  }
669
- const { runAppsPublish } = await import("./apps-publish-B7reDBe1.js");
673
+ const { runAppsPublish } = await import("./apps-publish-DnU-B7YF.js");
670
674
  process.exit(await runAppsPublish({
671
675
  cwd: opts.cwd,
672
676
  manifest: opts.manifest,
@@ -700,7 +704,7 @@ apps.command("push").description("Upsert the mutable working draft (manifest + b
700
704
  process.exit(2);
701
705
  }
702
706
  }
703
- const { runAppsPush } = await import("./apps-push-CkJ1gtpy.js");
707
+ const { runAppsPush } = await import("./apps-push-CFDmMwaR.js");
704
708
  process.exit(await runAppsPush({
705
709
  cwd: opts.cwd,
706
710
  manifest: opts.manifest,
@@ -720,7 +724,7 @@ apps.command("push").description("Upsert the mutable working draft (manifest + b
720
724
  }));
721
725
  });
722
726
  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) => {
723
- const { runAppsCut } = await import("./apps-cut-MjSe2ph7.js");
727
+ const { runAppsCut } = await import("./apps-cut-Cc0XCFm3.js");
724
728
  process.exit(await runAppsCut({
725
729
  version,
726
730
  changelog: opts.changelog,
@@ -732,7 +736,7 @@ apps.command("cut <version>").description("Snapshot the working draft into an im
732
736
  }));
733
737
  });
734
738
  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) => {
735
- const { runAppsDiscard } = await import("./apps-discard-BWLVVMu7.js");
739
+ const { runAppsDiscard } = await import("./apps-discard-CUmXXvm1.js");
736
740
  process.exit(await runAppsDiscard({
737
741
  slug: opts.slug,
738
742
  cwd: opts.cwd,
@@ -742,7 +746,7 @@ apps.command("discard").description("Drop the mutable working draft (leaves cut
742
746
  }));
743
747
  });
744
748
  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) => {
745
- const { runAppsRelease } = await import("./apps-release-J-Sjkoym.js");
749
+ const { runAppsRelease } = await import("./apps-release-CX7FtoOH.js");
746
750
  process.exit(await runAppsRelease({
747
751
  version,
748
752
  slug: opts.slug,
@@ -868,7 +872,7 @@ executa.command("publish").description("Mint or update an Executa (executa.json
868
872
  console.error(`✗ --bump must be patch|minor|major (got: ${opts.bump})`);
869
873
  process.exit(2);
870
874
  }
871
- const { runExecutaPublish } = await import("./executa-publish-B_7k1gOf.js");
875
+ const { runExecutaPublish } = await import("./executa-publish-2lAhRQvN.js");
872
876
  process.exit(await runExecutaPublish({
873
877
  cwd: opts.cwd,
874
878
  manifest: opts.manifest,
@@ -996,7 +1000,7 @@ program.command("publish").description("Auto-detect cwd and publish (apps publis
996
1000
  console.error(`✗ --bump must be patch|minor|major (got: ${opts.bump})`);
997
1001
  process.exit(2);
998
1002
  }
999
- const { runTopLevelPublish } = await import("./publish-DwIJWl46.js");
1003
+ const { runTopLevelPublish } = await import("./publish-BQL5NDnd.js");
1000
1004
  process.exit(await runTopLevelPublish({
1001
1005
  cwd: opts.cwd,
1002
1006
  bump: opts.bump,
@@ -0,0 +1,4 @@
1
+ import "./nexus-root-BlPwOusj.js";
2
+ import { parseExecutaSpec, runDev } from "./dev-DBk4WVRp.js";
3
+
4
+ export { parseExecutaSpec, runDev };
@@ -49,8 +49,8 @@ async function runDev(opts) {
49
49
  }
50
50
  process.env.ANNA_APP_RUNTIME_STORAGE_MODE = "aps";
51
51
  }
52
- const { PythonBridge, PINNED_RUNTIME_VERSION } = await import("./bridge-CzeSuRRL.js");
53
- const { HarnessServer } = await import("./server-BHWGGZsf.js");
52
+ const { PythonBridge, PINNED_RUNTIME_VERSION } = await import("./bridge-D_J1ql-k.js");
53
+ const { HarnessServer } = await import("./server-Cg13x19g.js");
54
54
  const bridge = new PythonBridge({
55
55
  mode,
56
56
  matrixNexusRoot: matrixNexusRoot ?? void 0,
@@ -1,5 +1,5 @@
1
1
  import { findMatrixNexusRoot, nexusSchemaDir } from "./nexus-root-BlPwOusj.js";
2
- import { PINNED_RUNTIME_VERSION } from "./bridge-Dvck0e9c.js";
2
+ import { PINNED_RUNTIME_VERSION } from "./bridge-C_Vpmwag.js";
3
3
  import { resolve } from "node:path";
4
4
  import { existsSync, statSync } from "node:fs";
5
5
  import { spawnSync } from "node:child_process";
@@ -1,5 +1,5 @@
1
1
  import "./nexus-root-BlPwOusj.js";
2
- import { parseExecutaSpec } from "./dev-GUFWek03.js";
2
+ import { parseExecutaSpec } from "./dev-DBk4WVRp.js";
3
3
  import { isAbsolute, resolve } from "node:path";
4
4
  import { existsSync } from "node:fs";
5
5
  import { bold, cyan, dim, green, red, yellow } from "kleur/colors";
@@ -1,5 +1,5 @@
1
1
  import { readExecutaIdentity } from "./executa-cache-BFoUtb4J.js";
2
- import { parseExecutaSpec } from "./dev-GUFWek03.js";
2
+ import { parseExecutaSpec } from "./dev-DBk4WVRp.js";
3
3
  import { isAbsolute, join, resolve } from "node:path";
4
4
  import { chmodSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
5
5
  import { bold, cyan, dim, green, red, yellow } from "kleur/colors";
@@ -0,0 +1,7 @@
1
+ import "./credentials-BTv2IfUZ.js";
2
+ import "./nexus-root-BlPwOusj.js";
3
+ import "./executa-cache-BFoUtb4J.js";
4
+ import "./dev-DBk4WVRp.js";
5
+ import { runExecutaInstall } from "./executa-install-C_n6Kd04.js";
6
+
7
+ export { runExecutaInstall };
@@ -4,7 +4,7 @@ import "./_lifecycle-shared-RyiRITI5.js";
4
4
  import "./executa-cache-BFoUtb4J.js";
5
5
  import "./manifest-CAF3_r1T.js";
6
6
  import "./executas-CvQY_w2U.js";
7
- import { runExecutaPublish } from "./executa-publish-kh4Ucd3o.js";
7
+ import { runExecutaPublish } from "./executa-publish-DueD_0hh.js";
8
8
  import "./binary-upload-CKMU5Rfw.js";
9
9
  import "./executa-upload-binaries-DURJTXRI.js";
10
10
 
@@ -205,6 +205,7 @@ async function runExecutaPublish(opts) {
205
205
  else await updateMyTool(client, executaId, {
206
206
  name: manifest.name,
207
207
  description: manifest.description,
208
+ version: manifest.version,
208
209
  ...distributionPayload(manifest.distribution)
209
210
  });
210
211
  if (!isSkill && manifest.distribution?.binaryArtifacts && opts.freeze !== false) {
@@ -6,13 +6,13 @@ import "./executa-cache-BFoUtb4J.js";
6
6
  import "./bundled-executas-rSIkaA6-.js";
7
7
  import "./manifest-CAF3_r1T.js";
8
8
  import "./executas-CvQY_w2U.js";
9
- import { runExecutaPublish } from "./executa-publish-kh4Ucd3o.js";
9
+ import { runExecutaPublish } from "./executa-publish-DueD_0hh.js";
10
10
  import "./binary-upload-CKMU5Rfw.js";
11
11
  import "./executa-upload-binaries-DURJTXRI.js";
12
12
  import "./app-cache-Cr3tKbux.js";
13
13
  import "./listing-meta-CtVtyaWu.js";
14
- import "./app-bundle-upload-DmVKWAj9.js";
15
- import { runAppsPublish } from "./apps-publish--EmBa0zN.js";
14
+ import "./app-bundle-upload-B6TJeyOq.js";
15
+ import { runAppsPublish } from "./apps-publish-bcqO88S0.js";
16
16
  import { resolve } from "node:path";
17
17
  import { existsSync } from "node:fs";
18
18
  import { red, yellow } from "kleur/colors";
@@ -1,5 +1,5 @@
1
1
  import { canonicalHost, getAccount } from "./credentials-BTv2IfUZ.js";
2
- import { BridgeRequestError } from "./bridge-Dvck0e9c.js";
2
+ import { BridgeRequestError } from "./bridge-C_Vpmwag.js";
3
3
  import { dirname, join, normalize, resolve } from "node:path";
4
4
  import { createRequire } from "node:module";
5
5
  import { createReadStream, existsSync, readFileSync, statSync, watch } from "node:fs";
@@ -16,6 +16,8 @@ interface HostApi {
16
16
  storage?: string[];
17
17
  prefs?: string[];
18
18
  window?: string[];
19
+ /** Provider ids (e.g. "google") — NOT method names. */
20
+ credentials?: string[];
19
21
  }
20
22
  interface ManifestForAcl {
21
23
  required_executas?: Array<{
@@ -7,7 +7,8 @@ const NAMESPACED = {
7
7
  fs: true,
8
8
  storage: true,
9
9
  prefs: true,
10
- window: true
10
+ window: true,
11
+ credentials: true
11
12
  };
12
13
  function deriveAcl(manifest) {
13
14
  const ha = manifest.ui?.host_api ?? {};
@@ -26,8 +27,12 @@ function deriveAcl(manifest) {
26
27
  for (const r of [...manifest.required_executas ?? [], ...manifest.optional_executas ?? []]) if (r.tool_id) allowedTools.add(r.tool_id);
27
28
  }
28
29
  if (allowedTools.size > 0 || toolsWildcard) allowed.add("tools.invoke");
30
+ if ((ha.credentials ?? []).length > 0) {
31
+ allowed.add("credentials.list_accounts");
32
+ allowed.add("credentials.get_token");
33
+ }
29
34
  for (const ns of Object.keys(NAMESPACED)) {
30
- if (ns === "tools") continue;
35
+ if (ns === "tools" || ns === "credentials") continue;
31
36
  for (const method of ha[ns] ?? []) allowed.add(`${ns}.${method}`);
32
37
  }
33
38
  return {
@@ -3,8 +3,8 @@ import { createApp, findAppBySlug, getApp } from "./apps-DlVsVHQ5.js";
3
3
  import { CliError } from "./client-D-_z1ALk.js";
4
4
  import { parseExecutaIdOverrides, readExecutasLock, substituteBundledRefs, validateBundledHandles, writeBundleToolIdSidecar, writeExecutasLock } from "./bundled-executas-rSIkaA6-.js";
5
5
  import { loadExecutaManifest } from "./manifest-CAF3_r1T.js";
6
- import { runExecutaPublish } from "./executa-publish-kh4Ucd3o.js";
7
- import { runExecutaInstall } from "./executa-install-Dz7hBUsn.js";
6
+ import { runExecutaPublish } from "./executa-publish-DueD_0hh.js";
7
+ import { runExecutaInstall } from "./executa-install-C_n6Kd04.js";
8
8
  import { appCacheMatches, readAppIdentity, writeAppIdentity } from "./app-cache-Cr3tKbux.js";
9
9
  import { join, resolve } from "node:path";
10
10
  import { dim, green, yellow } from "kleur/colors";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anna-ai/cli",
3
- "version": "0.1.35",
3
+ "version": "0.1.37",
4
4
  "description": "Anna App developer CLI: scaffold, validate, harness (Phase 2 MVP: init + validate).",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -33,8 +33,8 @@
33
33
  "prepublishOnly": "pnpm lint && pnpm test && pnpm build && node scripts/check-runtime-pin.mjs && node scripts/check-sdk-pin.mjs"
34
34
  },
35
35
  "dependencies": {
36
- "@anna-ai/app-runtime": "^0.10.0",
37
- "@anna-ai/app-schema": "^0.12.0",
36
+ "@anna-ai/app-runtime": "^0.12.0",
37
+ "@anna-ai/app-schema": "^0.15.0",
38
38
  "ajv": "^8.17.1",
39
39
  "ajv-formats": "^3.0.1",
40
40
  "commander": "^12.1.0",
@@ -1,3 +0,0 @@
1
- import { BridgeRequestError, PINNED_RUNTIME_VERSION, PythonBridge } from "./bridge-Dvck0e9c.js";
2
-
3
- export { PINNED_RUNTIME_VERSION, PythonBridge };
@@ -1,4 +0,0 @@
1
- import "./nexus-root-BlPwOusj.js";
2
- import { parseExecutaSpec, runDev } from "./dev-GUFWek03.js";
3
-
4
- export { parseExecutaSpec, runDev };
@@ -1,7 +0,0 @@
1
- import "./credentials-BTv2IfUZ.js";
2
- import "./nexus-root-BlPwOusj.js";
3
- import "./executa-cache-BFoUtb4J.js";
4
- import "./dev-GUFWek03.js";
5
- import { runExecutaInstall } from "./executa-install-Dz7hBUsn.js";
6
-
7
- export { runExecutaInstall };