@llamaventures/cli 1.23.1 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,12 @@ this project adheres to [Semantic Versioning](https://semver.org).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.24.0] - 2026-08-05
10
+
11
+ ### Added
12
+ - Add `llama admin workflow audit --deal <uuid> | --all` for the read-only
13
+ Workflow V2 production integrity auditor in Llama Command 3.25.0.
14
+
9
15
  ## [1.23.1] - 2026-08-05
10
16
 
11
17
  ### Added
package/README.md CHANGED
@@ -113,6 +113,14 @@ llama mentions
113
113
  llama agent-onboard # server-owned agent workflow contract
114
114
  ```
115
115
 
116
+ System admins can run the read-only production integrity auditor against one
117
+ Workflow V2 deal or every persisted V2 snapshot:
118
+
119
+ ```bash
120
+ llama admin workflow audit --deal <dealId>
121
+ llama admin workflow audit --all
122
+ ```
123
+
116
124
  Status vocabulary — `Interested`: tracked before any contact ·
117
125
  `Outreached`: contacted, no response yet · `Sourced`: real relationship
118
126
  signal exists. `sourceDirection` is separate: `Inbound` came to the firm,
package/README.zh-CN.md CHANGED
@@ -135,6 +135,13 @@ llama mentions
135
135
  llama agent-onboard # 服务端下发的 agent 工作契约
136
136
  ```
137
137
 
138
+ 系统管理员可以只读审计一个 Workflow V2 deal,或审计全部已持久化的 V2 快照:
139
+
140
+ ```bash
141
+ llama admin workflow audit --deal <dealId>
142
+ llama admin workflow audit --all
143
+ ```
144
+
138
145
  Status 语义——`Interested`:接触前先记录关注 · `Outreached`:已联系、
139
146
  尚无回应 · `Sourced`:已有真实关系信号。`sourceDirection` 是独立维度:
140
147
  `Inbound` 流入,`Outbound` 我们主动。
package/bin/llama.mjs CHANGED
@@ -36,6 +36,7 @@ import { LLAMA_CLI_CLIENT_ID, pkceLoopbackFlow, revokeToken as revokeOAuthToken
36
36
  import { deleteBundle, detectBackend, readBundle, writeBundle } from "../lib/oauth-storage.mjs";
37
37
  import { maybeNudgeUpdate, getUpdateNudge } from "../lib/version-check.mjs";
38
38
  import { getBuildInfo } from "../lib/build-info.mjs";
39
+ import { workflowAuditPath } from "../lib/workflow-audit.mjs";
39
40
 
40
41
  const requireFromHere = createRequire(import.meta.url);
41
42
  const { version: PKG_VERSION } = requireFromHere("../package.json");
@@ -603,6 +604,7 @@ Deal page HTML (hand-authored sandboxed pages on /deals/<id>/browse/<slug>):
603
604
  update_deal_browse_html tool and the MCP html_upload_file tool.
604
605
 
605
606
  Admin (system admin only — server returns 403 for non-admin tokens):
607
+ llama admin workflow audit --deal <uuid> | --all
606
608
  llama admin auth-events [--kind X] [--actor email] [--subject email] [--since 24h|7d|30d|<ISO>] [--limit 100]
607
609
  llama admin deal-events [--kind X] [--actor email] [--deal <uuid>] [--since 24h] [--limit 100]
608
610
  llama admin agent-events [--kind tool_call|loop_stalled|max_turns_reached] [--agent-kind deal|secretary|main|inbox]
@@ -2403,12 +2405,21 @@ Routing — is this the right command?
2403
2405
  // - agent-events : every AI tool call / loop_stalled / max_turns (AI ops)
2404
2406
  if (area === "admin") {
2405
2407
  const sub = action;
2406
- const valid = ["auth-events", "deal-events", "agent-events"];
2408
+ const valid = ["workflow", "auth-events", "deal-events", "agent-events"];
2407
2409
  if (!valid.includes(sub)) {
2408
2410
  throw new Error(
2409
2411
  `Unknown admin sub-command "${sub || ""}". Use: ${valid.join(", ")}`
2410
2412
  );
2411
2413
  }
2414
+ if (sub === "workflow") {
2415
+ if (rest[0] !== "audit") {
2416
+ throw new Error("Usage: llama admin workflow audit --deal <uuid> | --all");
2417
+ }
2418
+ const { flags } = parseFlags(rest.slice(1), ["deal", "all"]);
2419
+ // @core-api-operation GET /api/admin/workflow-audit
2420
+ print(await request("GET", workflowAuditPath(flags)));
2421
+ return;
2422
+ }
2412
2423
  const { flags } = parseFlags(rest);
2413
2424
  const params = new URLSearchParams();
2414
2425
  // Common filters across all three.
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "format": "llama.core-api-contract.v1",
3
3
  "name": "llama-core-api",
4
- "apiVersion": "3.23.0",
4
+ "apiVersion": "3.25.0",
5
5
  "openapiVersion": "3.0.3",
6
- "sha256": "b959a28605693097ba8d8d9345729070d54fcce08f004abcfe9b8c2fd2dabc6d",
7
- "pathCount": 233,
8
- "operationCount": 304
6
+ "sha256": "f06bbd31d4e0e3fbf5f418a772616375f2a907535b0c7783060ba87b0565a0f7",
7
+ "pathCount": 235,
8
+ "operationCount": 306
9
9
  }
@@ -14,6 +14,10 @@
14
14
  "method": "GET",
15
15
  "path": "/api/admin/deal-events"
16
16
  },
17
+ {
18
+ "method": "GET",
19
+ "path": "/api/admin/workflow-audit"
20
+ },
17
21
  {
18
22
  "method": "GET",
19
23
  "path": "/api/agent/activity"
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "format": "llama.cli-build.v1",
3
3
  "packageName": "@llamaventures/cli",
4
- "packageVersion": "1.23.1",
5
- "sourceSha": "8d5824095c03137b224bdbff50bc6be144d37486",
4
+ "packageVersion": "1.24.0",
5
+ "sourceSha": "501f361cc0aeaa8746e1387a11f6224ca66bca13",
6
6
  "sourceKind": "github",
7
7
  "sourceDirty": false,
8
8
  "coreApiContract": {
9
9
  "format": "llama.core-api-contract.v1",
10
10
  "name": "llama-core-api",
11
- "apiVersion": "3.23.0",
11
+ "apiVersion": "3.25.0",
12
12
  "openapiVersion": "3.0.3",
13
- "sha256": "b959a28605693097ba8d8d9345729070d54fcce08f004abcfe9b8c2fd2dabc6d"
13
+ "sha256": "f06bbd31d4e0e3fbf5f418a772616375f2a907535b0c7783060ba87b0565a0f7"
14
14
  }
15
15
  }
@@ -0,0 +1,13 @@
1
+ export function workflowAuditPath(flags) {
2
+ const deal = typeof flags.deal === "string" && flags.deal.trim()
3
+ ? flags.deal.trim()
4
+ : null;
5
+ const all = flags.all === true;
6
+ if ((!deal && !all) || (deal && all)) {
7
+ throw new Error("Usage: llama admin workflow audit --deal <uuid> | --all");
8
+ }
9
+ const params = new URLSearchParams();
10
+ if (deal) params.set("deal", deal);
11
+ if (all) params.set("all", "true");
12
+ return `/api/admin/workflow-audit?${params.toString()}`;
13
+ }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@llamaventures/cli",
3
- "version": "1.23.1",
3
+ "version": "1.24.0",
4
4
  "description": "CLI + MCP server for the Llama Ventures investment workbench (command.llamaventures.vc).",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "test": "npm run test:agent-routing && npm run test:contract",
8
8
  "test:agent-routing": "node scripts/verify-agent-routing.mjs",
9
- "test:contract": "node --test scripts/build-manifest.test.mjs scripts/core-api-call-sites.test.mjs scripts/investment-workflow-contract.test.mjs scripts/server-compatibility.test.mjs scripts/verify-core-api-contract.test.mjs && node scripts/verify-core-api-contract.mjs",
9
+ "test:contract": "node --test scripts/build-manifest.test.mjs scripts/core-api-call-sites.test.mjs scripts/investment-workflow-contract.test.mjs scripts/server-compatibility.test.mjs scripts/verify-core-api-contract.test.mjs scripts/workflow-audit.test.mjs && node scripts/verify-core-api-contract.mjs",
10
10
  "verify:artifact": "node scripts/verify-release-artifact.mjs",
11
11
  "verify:release": "npm test && npm run verify:artifact && node scripts/verify-tarball-clean.mjs",
12
12
  "prepack": "node scripts/prepare-build-manifest.mjs",