@anna-ai/cli 0.1.44 → 0.1.45

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.
@@ -10,10 +10,10 @@ import "./executas-CvQY_w2U.js";
10
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-B4Qw8vpX.js";
14
- import "./executa-install-DUSaQdLH.js";
13
+ import "./dev-DKXNkQzp.js";
14
+ import "./executa-install-ht8Fz4wc.js";
15
15
  import "./app-cache-Cr3tKbux.js";
16
- import { resolveAppBySlugOrCache } from "./working-orchestration-apoqYJ6u.js";
16
+ import { resolveAppBySlugOrCache } from "./working-orchestration-bLFeqem7.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";
@@ -10,10 +10,10 @@ import "./executas-CvQY_w2U.js";
10
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-B4Qw8vpX.js";
14
- import "./executa-install-DUSaQdLH.js";
13
+ import "./dev-DKXNkQzp.js";
14
+ import "./executa-install-ht8Fz4wc.js";
15
15
  import "./app-cache-Cr3tKbux.js";
16
- import { resolveAppBySlugOrCache } from "./working-orchestration-apoqYJ6u.js";
16
+ import { resolveAppBySlugOrCache } from "./working-orchestration-bLFeqem7.js";
17
17
  import { dim, green, yellow } from "kleur/colors";
18
18
 
19
19
  //#region src/commands/apps-discard.ts
@@ -10,10 +10,10 @@ import "./executas-CvQY_w2U.js";
10
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-B4Qw8vpX.js";
14
- import "./executa-install-DUSaQdLH.js";
13
+ import "./dev-DKXNkQzp.js";
14
+ import "./executa-install-ht8Fz4wc.js";
15
15
  import "./app-cache-Cr3tKbux.js";
16
- import { installLocalBundledShims, resolveAppIdentity, resolveBundledExecutas } from "./working-orchestration-apoqYJ6u.js";
16
+ import { installLocalBundledShims, resolveAppIdentity, resolveBundledExecutas } from "./working-orchestration-bLFeqem7.js";
17
17
  import { syncAppListingMeta } from "./listing-meta-CSopUol3.js";
18
18
  import { isExistingDir, uploadWorkingBundle } from "./app-bundle-upload-DgoZIhQG.js";
19
19
  import { resolve } from "node:path";
package/dist/cli.js CHANGED
@@ -474,7 +474,7 @@ program.command("validate").description("Run schema + ACL checks on a manifest+b
474
474
  process.exit(code);
475
475
  });
476
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-BKIgmYsw.js");
477
+ const { runDev, parseExecutaSpec } = await import("./dev-CiTv4GH0.js");
478
478
  const cwd = opts.cwd ?? process.cwd();
479
479
  let executas;
480
480
  if (opts.executa && opts.executa.length > 0) {
@@ -597,7 +597,7 @@ executa.command("register").description("Register a HARNESS AnnaApp(kind=executa
597
597
  process.exit(code);
598
598
  });
599
599
  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-Cpx9_Z3y.js");
600
+ const { runExecutaInstall } = await import("./executa-install-BNG5AwEG.js");
601
601
  const code = await runExecutaInstall({
602
602
  dir: opts.dir,
603
603
  toolId: opts.toolId,
@@ -608,7 +608,7 @@ executa.command("install").description("Install a local-dev shim for an Executa
608
608
  process.exit(code);
609
609
  });
610
610
  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-BZfoHHU3.js");
611
+ const { runExecutaDev } = await import("./executa-dev-CXgAPTJx.js");
612
612
  const storageMode = opts.storage === void 0 ? void 0 : (() => {
613
613
  const m = opts.storage;
614
614
  if (m === "off" || m === "memory" || m === "mock" || m === "real") return m;
@@ -705,7 +705,7 @@ apps.command("push").description("Upsert the mutable working draft (manifest + b
705
705
  process.exit(2);
706
706
  }
707
707
  }
708
- const { runAppsPush } = await import("./apps-push-Dl1wGoej.js");
708
+ const { runAppsPush } = await import("./apps-push-BDApmojT.js");
709
709
  process.exit(await runAppsPush({
710
710
  cwd: opts.cwd,
711
711
  manifest: opts.manifest,
@@ -725,7 +725,7 @@ apps.command("push").description("Upsert the mutable working draft (manifest + b
725
725
  }));
726
726
  });
727
727
  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-D0QXwjTk.js");
728
+ const { runAppsCut } = await import("./apps-cut-BC1j7tcw.js");
729
729
  process.exit(await runAppsCut({
730
730
  version,
731
731
  changelog: opts.changelog,
@@ -737,7 +737,7 @@ apps.command("cut <version>").description("Snapshot the working draft into an im
737
737
  }));
738
738
  });
739
739
  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-D4heG5QY.js");
740
+ const { runAppsDiscard } = await import("./apps-discard-Be-0TnPa.js");
741
741
  process.exit(await runAppsDiscard({
742
742
  slug: opts.slug,
743
743
  cwd: opts.cwd,
@@ -0,0 +1,4 @@
1
+ import "./nexus-root-BlPwOusj.js";
2
+ import { parseExecutaSpec, runDev } from "./dev-DKXNkQzp.js";
3
+
4
+ export { parseExecutaSpec, runDev };
@@ -62,7 +62,7 @@ async function runDev(opts) {
62
62
  process.env.ANNA_APP_RUNTIME_WEB_MODE = "real";
63
63
  }
64
64
  const { PythonBridge, PINNED_RUNTIME_VERSION } = await import("./bridge-CCubXGh7.js");
65
- const { HarnessServer } = await import("./server-BVl5P19Q.js");
65
+ const { HarnessServer } = await import("./server-DKGo2PmS.js");
66
66
  const bridge = new PythonBridge({
67
67
  mode,
68
68
  matrixNexusRoot: matrixNexusRoot ?? void 0,
@@ -1,5 +1,5 @@
1
1
  import "./nexus-root-BlPwOusj.js";
2
- import { parseExecutaSpec } from "./dev-B4Qw8vpX.js";
2
+ import { parseExecutaSpec } from "./dev-DKXNkQzp.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";
@@ -0,0 +1,7 @@
1
+ import "./credentials-BTv2IfUZ.js";
2
+ import "./nexus-root-BlPwOusj.js";
3
+ import "./executa-cache-BFoUtb4J.js";
4
+ import "./dev-DKXNkQzp.js";
5
+ import { runExecutaInstall } from "./executa-install-ht8Fz4wc.js";
6
+
7
+ export { runExecutaInstall };
@@ -1,5 +1,5 @@
1
1
  import { readExecutaIdentity } from "./executa-cache-BFoUtb4J.js";
2
- import { parseExecutaSpec } from "./dev-B4Qw8vpX.js";
2
+ import { parseExecutaSpec } from "./dev-DKXNkQzp.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";
@@ -410,11 +410,38 @@ var LlmBridge = class {
410
410
  * because `anna-app dev` registers the full dev grant bundle.
411
411
  */
412
412
  localSessionCatalog() {
413
- const registry = [{
414
- name: "web_search",
415
- description: "Search the public web (or news) and return concise, provider-agnostic snippets.",
413
+ const kit = (name, description) => ({
414
+ name,
415
+ description,
416
416
  dev_safe: true
417
- }];
417
+ });
418
+ const registry = [
419
+ kit("web_search", "Search the public web (or news) and return concise, provider-agnostic snippets."),
420
+ kit("sheet_read", "Read an Excel workbook (xlsx/xls) attachment as typed, paginated rows with A1 locators. Server-side."),
421
+ kit("doc_read", "Read a DOCX / PPTX / PDF attachment as structured blocks with stable locators. Server-side."),
422
+ kit("fs_read_file", "Read a file (text / base64 binary, optional line range) on the user's agent machine."),
423
+ kit("fs_write_file", "Write or append content to a file on the user's agent machine. REAL side effects."),
424
+ kit("fs_list_directory", "List directory contents (glob filter, recursive) on the user's agent machine."),
425
+ kit("fs_copy_file", "Copy a file or directory on the user's agent machine."),
426
+ kit("fs_move_file", "Move / rename a file or directory on the user's agent machine."),
427
+ kit("fs_delete_file", "Delete a file or directory on the user's agent machine. Destructive."),
428
+ kit("fs_search", "Search files by name / glob pattern on the user's agent machine."),
429
+ kit("fs_get_info", "Get file metadata (size, mtime, type) on the user's agent machine."),
430
+ kit("fs_exists", "Check whether a path exists on the user's agent machine."),
431
+ kit("fs_mkdir", "Create a directory on the user's agent machine."),
432
+ kit("exec_run", "Run a single shell command on the user's agent machine. REAL side effects."),
433
+ kit("exec_run_commands", "Run multiple shell commands sequentially on the user's agent machine. REAL side effects."),
434
+ kit("browser_create_instance", "Create a browser instance on the user's agent machine (session entry point)."),
435
+ kit("browser_navigate", "Navigate the browser to a URL."),
436
+ kit("browser_get_html", "Get the current page HTML (content extraction)."),
437
+ kit("browser_click", "Click a page element."),
438
+ kit("browser_fill", "Fill a form element."),
439
+ kit("browser_screenshot", "Take a screenshot of the current page."),
440
+ kit("browser_scroll", "Scroll the page (smart scrolling)."),
441
+ kit("browser_execute_script", "Execute JavaScript in the page context."),
442
+ kit("browser_wait_for_element", "Wait for an element to appear (reliable automation)."),
443
+ kit("browser_toolkit", "Router to the 57 extended browser operations (cookies, tabs, iframes, downloads, …).")
444
+ ];
418
445
  const names = registry.map((t) => t.name);
419
446
  return {
420
447
  platform_tools: registry.map((t) => ({
@@ -4,7 +4,7 @@ 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
6
  import { runExecutaPublish } from "./executa-publish-DueD_0hh.js";
7
- import { runExecutaInstall } from "./executa-install-DUSaQdLH.js";
7
+ import { runExecutaInstall } from "./executa-install-ht8Fz4wc.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.44",
3
+ "version": "0.1.45",
4
4
  "description": "Anna App developer CLI: scaffold, validate, harness (Phase 2 MVP: init + validate).",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,4 +0,0 @@
1
- import "./nexus-root-BlPwOusj.js";
2
- import { parseExecutaSpec, runDev } from "./dev-B4Qw8vpX.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-B4Qw8vpX.js";
5
- import { runExecutaInstall } from "./executa-install-DUSaQdLH.js";
6
-
7
- export { runExecutaInstall };