@lambdacurry/arbor 0.20.12 → 0.20.14

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 (2) hide show
  1. package/dist/arbor.js +169 -22
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -1806,6 +1806,18 @@ var previewViewerGrantUses = sqliteTable("preview_viewer_grant_uses", {
1806
1806
  profileId: text("profile_id").notNull().references(() => profiles.id),
1807
1807
  consumedAt: ts("consumed_at").notNull()
1808
1808
  });
1809
+ var livePreviewViewerGrantUses = sqliteTable("live_preview_viewer_grant_uses", {
1810
+ jti: text("jti").primaryKey(),
1811
+ threadId: text("thread_id").notNull().references(() => threads.id),
1812
+ profileId: text("profile_id").notNull().references(() => profiles.id),
1813
+ consumedAt: ts("consumed_at").notNull()
1814
+ });
1815
+ var threadLivePreviewSessions = sqliteTable("thread_live_preview_sessions", {
1816
+ threadId: text("thread_id").notNull().references(() => threads.id),
1817
+ profileId: text("profile_id").notNull().references(() => profiles.id),
1818
+ computerSessionId: text("computer_session_id").notNull().references(() => computerSessions.id),
1819
+ updatedAt: ts("updated_at").notNull()
1820
+ }, (t) => ({ pk: primaryKey({ columns: [t.threadId, t.profileId] }) }));
1809
1821
  var threadInitiatives = sqliteTable("thread_initiatives", {
1810
1822
  threadId: text("thread_id").notNull().references(() => threads.id),
1811
1823
  initiativeId: text("initiative_id").notNull().references(() => initiatives.id)
@@ -16796,6 +16808,18 @@ var computerProfile = exports_external.looseObject({
16796
16808
  recommendedEditingPrimitive: exports_external.string()
16797
16809
  });
16798
16810
  var computerRunPublicationState = exports_external.enum(["not-required", "durable", "not-durable", "unknown"]);
16811
+ var computerRunGitState = exports_external.looseObject({
16812
+ head: exports_external.string().nullable(),
16813
+ branch: exports_external.string().nullable(),
16814
+ upstream: exports_external.string().nullable(),
16815
+ dirty: exports_external.boolean(),
16816
+ remote: exports_external.looseObject({ name: exports_external.string(), repository: exports_external.string().nullable() }).nullable()
16817
+ });
16818
+ var computerRunPublication = exports_external.looseObject({
16819
+ state: computerRunPublicationState,
16820
+ reasonCode: exports_external.string(),
16821
+ remoteRef: exports_external.string().optional()
16822
+ });
16799
16823
  var computerRunDurability = exports_external.looseObject({
16800
16824
  workspace: exports_external.enum(["shared", "isolated"]),
16801
16825
  parentMutation: exports_external.enum(["direct", "none"]),
@@ -16817,11 +16841,7 @@ var computerRunFinishAssessment = exports_external.looseObject({
16817
16841
  currentHead: exports_external.string().nullable(),
16818
16842
  currentDirty: exports_external.boolean().nullable(),
16819
16843
  changedSinceStart: exports_external.boolean().nullable(),
16820
- publication: exports_external.looseObject({
16821
- state: computerRunPublicationState,
16822
- reasonCode: exports_external.string(),
16823
- remoteRef: exports_external.string().optional()
16824
- })
16844
+ publication: computerRunPublication
16825
16845
  }))
16826
16846
  });
16827
16847
  var operatingGuidanceEntry = exports_external.looseObject({
@@ -16839,7 +16859,12 @@ var computerAgentBrief = exports_external.looseObject({
16839
16859
  backend: exports_external.enum(["worker-shell", "container"]),
16840
16860
  containerProfile: exports_external.string().nullable(),
16841
16861
  repositories: exports_external.array(exports_external.looseObject({ repository: exports_external.string(), path: exports_external.string() })),
16842
- durableSnapshotId: id.nullable()
16862
+ durableSnapshotId: id.nullable(),
16863
+ repositoryState: exports_external.looseObject({
16864
+ source: exports_external.enum(["durable-snapshot", "workspace"]),
16865
+ remoteFreshness: exports_external.literal("unchecked"),
16866
+ guidance: exports_external.string()
16867
+ })
16843
16868
  }),
16844
16869
  activeRuns: exports_external.array(exports_external.looseObject({
16845
16870
  runId: id,
@@ -16853,13 +16878,7 @@ var computerRunGitStart = exports_external.looseObject({
16853
16878
  repositories: exports_external.array(exports_external.looseObject({
16854
16879
  repository: exports_external.string(),
16855
16880
  path: exports_external.string(),
16856
- git: exports_external.looseObject({
16857
- head: exports_external.string().nullable(),
16858
- branch: exports_external.string().nullable(),
16859
- upstream: exports_external.string().nullable(),
16860
- dirty: exports_external.boolean(),
16861
- remote: exports_external.looseObject({ name: exports_external.string(), repository: exports_external.string().nullable() }).nullable()
16862
- }).nullable()
16881
+ git: computerRunGitState.nullable()
16863
16882
  }))
16864
16883
  });
16865
16884
  var computerRun = exports_external.looseObject({
@@ -16902,6 +16921,25 @@ var computerRunReceipt = exports_external.looseObject({
16902
16921
  status: exports_external.enum(["active", "finished", "failed", "cancelled"]),
16903
16922
  outcome: exports_external.enum(["finished", "failed", "cancelled"]).nullable(),
16904
16923
  reason: exports_external.string().nullable(),
16924
+ reasonCode: exports_external.string().nullable(),
16925
+ operations: exports_external.array(exports_external.looseObject({
16926
+ operationId: exports_external.string(),
16927
+ kind: exports_external.literal("exec"),
16928
+ execution: exports_external.enum(["foreground", "background"]),
16929
+ state: exports_external.enum([
16930
+ "starting",
16931
+ "running",
16932
+ "completed",
16933
+ "failed",
16934
+ "cancelled",
16935
+ "provider-lost",
16936
+ "unknown"
16937
+ ]),
16938
+ mutationRetrySafety: exports_external.enum(["not-needed", "unsafe", "unknown"]),
16939
+ reasonCode: exports_external.string(),
16940
+ startedAt: exports_external.string(),
16941
+ endedAt: exports_external.string().nullable()
16942
+ })),
16905
16943
  startedAt: exports_external.string(),
16906
16944
  endedAt: exports_external.string().nullable(),
16907
16945
  durationMs: exports_external.number().nullable(),
@@ -16910,7 +16948,8 @@ var computerRunReceipt = exports_external.looseObject({
16910
16948
  at: exports_external.string(),
16911
16949
  label: exports_external.string().optional(),
16912
16950
  detail: exports_external.string().optional(),
16913
- targetId: exports_external.string().optional()
16951
+ targetId: exports_external.string().optional(),
16952
+ reasonCode: exports_external.string().optional()
16914
16953
  })),
16915
16954
  lifecycle: exports_external.array(exports_external.looseObject({ type: exports_external.string(), at: exports_external.string() }))
16916
16955
  });
@@ -17212,6 +17251,19 @@ var MCP_OUTPUT_SCHEMAS = {
17212
17251
  effectiveRecipe: redactedComputerRecipe,
17213
17252
  materializedRecipe: redactedComputerRecipe.nullable()
17214
17253
  }),
17254
+ livePreview: exports_external.looseObject({
17255
+ url: exports_external.string(),
17256
+ surface: exports_external.looseObject({
17257
+ command: exports_external.string(),
17258
+ cwd: exports_external.string(),
17259
+ port: exports_external.number().int(),
17260
+ healthPath: exports_external.string()
17261
+ }),
17262
+ configuredBy: exports_external.looseObject({
17263
+ scope: exports_external.enum(["topic", "thread"]),
17264
+ scopeId: id
17265
+ })
17266
+ }).nullable(),
17215
17267
  topicBase: jsonObject.nullable(),
17216
17268
  computer: jsonObject.nullable(),
17217
17269
  activeGenerationId: id.nullable(),
@@ -17531,6 +17583,63 @@ var MCP_OUTPUT_SCHEMAS = {
17531
17583
  durability: computerRunDurability,
17532
17584
  finishAssessment: computerRunFinishAssessment.nullable()
17533
17585
  }),
17586
+ computer_repo_work_status: exports_external.looseObject({
17587
+ runId: id,
17588
+ status: exports_external.enum(["blocked", "unknown", "reviewable", "in-progress"]),
17589
+ canFinishRun: exports_external.boolean(),
17590
+ durablyFinishable: exports_external.boolean(),
17591
+ finishAssessment: computerRunFinishAssessment,
17592
+ repositories: exports_external.array(exports_external.looseObject({
17593
+ repository: exports_external.string(),
17594
+ path: exports_external.string(),
17595
+ start: computerRunGitState.nullable(),
17596
+ current: computerRunGitState.nullable(),
17597
+ changedSinceRunStart: exports_external.boolean().nullable(),
17598
+ publication: computerRunPublication,
17599
+ pullRequest: exports_external.looseObject({
17600
+ state: exports_external.enum(["none", "head-mismatch", "open", "merged", "closed", "unknown"]),
17601
+ number: exports_external.number().int().positive().optional(),
17602
+ url: exports_external.string().optional(),
17603
+ headSha: exports_external.string().optional(),
17604
+ baseRef: exports_external.string().optional(),
17605
+ draft: exports_external.boolean().optional()
17606
+ }),
17607
+ ci: exports_external.looseObject({
17608
+ state: exports_external.enum(["none", "pending", "passed", "failed", "unknown"]),
17609
+ total: exports_external.number().int().min(0),
17610
+ pending: exports_external.number().int().min(0),
17611
+ passed: exports_external.number().int().min(0),
17612
+ failed: exports_external.number().int().min(0)
17613
+ }),
17614
+ review: exports_external.looseObject({
17615
+ state: exports_external.enum(["not-applicable", "none", "approved", "changes-requested", "unknown"]),
17616
+ approvals: exports_external.number().int().min(0),
17617
+ changesRequested: exports_external.number().int().min(0)
17618
+ }),
17619
+ githubProof: exports_external.looseObject({
17620
+ state: exports_external.enum(["known", "unknown"]),
17621
+ reasonCode: exports_external.string()
17622
+ }),
17623
+ state: exports_external.enum([
17624
+ "unchanged",
17625
+ "working",
17626
+ "committed-local",
17627
+ "publication-unknown",
17628
+ "pushed-durable",
17629
+ "github-unknown",
17630
+ "pr-head-mismatch",
17631
+ "pr-open",
17632
+ "ci-pending",
17633
+ "reviewable",
17634
+ "merged"
17635
+ ]),
17636
+ retrySafety: exports_external.looseObject({
17637
+ push: exports_external.enum(["not-needed", "safe", "unknown"]),
17638
+ prCreate: exports_external.enum(["not-needed", "safe", "manual", "unknown"])
17639
+ }),
17640
+ nextAction: exports_external.string()
17641
+ }))
17642
+ }),
17534
17643
  computer_run_receipt: exports_external.looseObject({
17535
17644
  receipt: computerRunReceipt
17536
17645
  }),
@@ -17568,7 +17677,21 @@ var MCP_OUTPUT_SCHEMAS = {
17568
17677
  stderr: exports_external.string().optional(),
17569
17678
  truncated: exports_external.boolean().optional(),
17570
17679
  nextCursor: exports_external.string().optional(),
17571
- exitCode: exports_external.number().int().nullable().optional()
17680
+ exitCode: exports_external.number().int().nullable().optional(),
17681
+ activity: exports_external.looseObject({
17682
+ state: exports_external.enum(["output", "compute", "quiet", "terminal", "unknown"]),
17683
+ observedAt: timestamp,
17684
+ outputAdvanced: exports_external.boolean(),
17685
+ cpuPercent: exports_external.number().min(0).nullable(),
17686
+ processCount: exports_external.number().int().min(0).nullable(),
17687
+ reasonCode: exports_external.string()
17688
+ }).optional(),
17689
+ recovery: exports_external.looseObject({
17690
+ state: exports_external.enum(["provider-timeout", "provider-lost", "unknown"]),
17691
+ reasonCode: exports_external.string(),
17692
+ mutationRetrySafety: exports_external.enum(["unsafe", "unknown"]),
17693
+ nextAction: exports_external.enum(["computer_process_read", "computer_run_receipt"])
17694
+ }).optional()
17572
17695
  }),
17573
17696
  computer_process_terminate: exports_external.looseObject({
17574
17697
  status: exports_external.string(),
@@ -17766,7 +17889,9 @@ var OUTPUT_SHAPERS = {
17766
17889
  ["nextCursor", result.nextCursor],
17767
17890
  ["endedAt", result.endedAt],
17768
17891
  ["durationMs", result.durationMs],
17769
- ["exitCode", result.exitCode]
17892
+ ["exitCode", result.exitCode],
17893
+ ["activity", result.activity],
17894
+ ["recovery", result.recovery]
17770
17895
  ]),
17771
17896
  computer_process_terminate: (result) => defined([
17772
17897
  ["status", result.status],
@@ -17908,6 +18033,7 @@ var MCP_TOOL_ANNOTATIONS = {
17908
18033
  computer_open: additive,
17909
18034
  computer_reprovision: destructiveIdempotent,
17910
18035
  computer_run_start: additive,
18036
+ computer_repo_work_status: readOnly,
17911
18037
  computer_run_finish: idempotent,
17912
18038
  computer_run_receipt: readOnly,
17913
18039
  computer_runs: readOnly,
@@ -17982,6 +18108,14 @@ var PAGINATION_INPUT = {
17982
18108
  limit: exports_external.number().int().min(1).optional().describe("max items to return — enables pagination"),
17983
18109
  cursor: exports_external.string().optional().describe("opaque cursor from a prior response's nextCursor (use with --limit)")
17984
18110
  };
18111
+ var LIVE_PREVIEW_CONFIG_INPUT = {
18112
+ livePreview: exports_external.object({
18113
+ command: exports_external.string().min(1).max(4000).describe("explicit project preview command"),
18114
+ cwd: exports_external.string().startsWith("/workspace/").describe("workspace directory containing the project"),
18115
+ port: exports_external.number().int().min(1).max(65535).describe("local HTTP/WebSocket port"),
18116
+ healthPath: exports_external.string().startsWith("/").describe("HTTP health path checked before proxying")
18117
+ }).nullable().optional().describe("one inherited Thread Live Preview startup surface; null disables an inherited surface. This is runtime policy and does not change Computer recipe identity")
18118
+ };
17985
18119
  var ACTION_DEFINITIONS = [
17986
18120
  {
17987
18121
  name: "server_info",
@@ -18253,7 +18387,8 @@ var ACTION_DEFINITIONS = [
18253
18387
  backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
18254
18388
  containerProfile: exports_external.string().nullable().optional().describe("logical container profile; bun-typescript-v1 guarantees Bash, Git, GitHub CLI (gh), Bun 1.3.3, bunx, Node 26.5.1, pnpm 10.33.0, Python 3.13.15 (python/python3), jq, and ripgrep (rg), or null to clear inherited profile"),
18255
18389
  setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize"),
18256
- repositories: exports_external.array(exports_external.string()).max(MAX_COMPUTER_REPOSITORIES).nullable().optional().describe("connected GitHub repositories to materialize into a fresh reusable base and allow for later Git calls; [] clears and null inherits")
18390
+ repositories: exports_external.array(exports_external.string()).max(MAX_COMPUTER_REPOSITORIES).nullable().optional().describe("connected GitHub repositories to materialize into a fresh reusable base and allow for later Git calls; [] clears and null inherits"),
18391
+ ...LIVE_PREVIEW_CONFIG_INPUT
18257
18392
  },
18258
18393
  surfaces: ["mcp", "cli"],
18259
18394
  toolset: "structure",
@@ -18268,7 +18403,8 @@ var ACTION_DEFINITIONS = [
18268
18403
  backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
18269
18404
  containerProfile: exports_external.string().nullable().optional().describe("logical container profile; bun-typescript-v1 guarantees Bash, Git, GitHub CLI (gh), Bun 1.3.3, bunx, Node 26.5.1, pnpm 10.33.0, Python 3.13.15 (python/python3), jq, and ripgrep (rg), or null to clear inherited profile"),
18270
18405
  setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize"),
18271
- repositories: exports_external.array(exports_external.string()).max(MAX_COMPUTER_REPOSITORIES).nullable().optional().describe("connected GitHub repositories to materialize into a fresh reusable base and allow for later Git calls; [] clears and null inherits")
18406
+ repositories: exports_external.array(exports_external.string()).max(MAX_COMPUTER_REPOSITORIES).nullable().optional().describe("connected GitHub repositories to materialize into a fresh reusable base and allow for later Git calls; [] clears and null inherits"),
18407
+ ...LIVE_PREVIEW_CONFIG_INPUT
18272
18408
  },
18273
18409
  surfaces: ["mcp", "cli"],
18274
18410
  toolset: "structure",
@@ -18288,7 +18424,7 @@ var ACTION_DEFINITIONS = [
18288
18424
  {
18289
18425
  name: "computer_open",
18290
18426
  title: "Open a Thread computer",
18291
- description: "Open or resume this Thread's project environment for filesystem or command work. A safe living-profile revision drift is reconciled automatically by replacing the generation, restoring supported state, and returning reconciliation metadata; structural recipe changes still fail explicitly with computer_reprovision as the suggested action. Every configured repository is re-authorized through its explicit GitHub connection; a fresh reusable base clones it with a request-scoped contents:read credential before strict setup runs, while a restore receives no credential. Returns computerSessionId — pass it unchanged to later Computer tools and cited work — plus a compact Agent Brief with Thread objective, scoped Space/Topic guidance and provenance, durable parent snapshot, repositories, and active Runs; the selected profile contract; a resolved capabilities card; workspaceRoot; each materialized repositories[].path; and defaultCwd. Omitted computer_exec.cwd uses defaultCwd: the single checkout when exactly one repository is configured, workspaceRoot otherwise.",
18427
+ description: "Open or resume this Thread's project environment for filesystem or command work. A safe living-profile revision drift is reconciled automatically by replacing the generation, restoring supported state, and returning reconciliation metadata; structural recipe changes still fail explicitly with computer_reprovision as the suggested action. Every configured repository is re-authorized through its explicit GitHub connection; a fresh reusable base clones it with a request-scoped contents:read credential before strict setup runs, while a restore receives no credential. Returns computerSessionId — pass it unchanged to later Computer tools and cited work — plus a compact Agent Brief with Thread objective, scoped Space/Topic guidance and provenance, durable parent snapshot, repositories, explicit unchecked remote-freshness guidance, and active Runs; the selected profile contract; a resolved capabilities card; workspaceRoot; each materialized repositories[].path; and defaultCwd. Omitted computer_exec.cwd uses defaultCwd: the single checkout when exactly one repository is configured, workspaceRoot otherwise.",
18292
18428
  inputSchema: {
18293
18429
  threadId: exports_external.string().describe("the Arbor Thread whose stable computer to open, thr_…"),
18294
18430
  vcpus: exports_external.number().int().min(1).max(4).optional().describe("optional container vCPU request"),
@@ -18325,6 +18461,17 @@ var ACTION_DEFINITIONS = [
18325
18461
  toolset: "loop",
18326
18462
  run: forward("computer_runtime.run_start")
18327
18463
  },
18464
+ {
18465
+ name: "computer_repo_work_status",
18466
+ title: "Inspect repository finish state",
18467
+ description: "READ ONLY: resolve repository-finish state for an active isolated WRITE Run from authoritative Git remote proof plus GitHub PR, CI, and review reads; the bounded inspection uses three batched provider exec phases and at most four GitHub REST calls per eligible repository. It reports durable state, explicit push/PR retrySafety, known PR-head mismatches versus unavailable GitHub proof, the next action, and Run finishability; it never commits, pushes, creates a PR, merges, or deploys.",
18468
+ inputSchema: {
18469
+ runId: exports_external.string().describe("the active isolated WRITE Run to inspect, run_…")
18470
+ },
18471
+ surfaces: ["computer-mcp", "computer-cli"],
18472
+ toolset: "loop",
18473
+ run: forward("computer_runtime.repo_work_status")
18474
+ },
18328
18475
  {
18329
18476
  name: "computer_run_finish",
18330
18477
  title: "Finish a run",
@@ -18342,7 +18489,7 @@ var ACTION_DEFINITIONS = [
18342
18489
  {
18343
18490
  name: "computer_run_receipt",
18344
18491
  title: "Read a run receipt",
18345
- description: "READ ONLY: read one run's compact receipt — its purpose, actor, computer session, base snapshot and starting Git projection, explicit isolation/durability contract, pre-teardown durability assessment when available (including publication that remains unknown unless proven), meaningful activity, and terminal outcome. Background work may appear as distilled labels/outcomes, but Arbor keeps no raw command transcript or process output. The receipt stays readable after the Run is terminal.",
18492
+ description: "READ ONLY: read one run's compact receipt — its purpose, actor, computer session, base snapshot and starting Git projection, explicit isolation/durability contract, pre-teardown durability assessment when available (including publication that remains unknown unless proven), durable operation receipts with stable state/reason/retry-safety, meaningful activity, and terminal outcome. Foreground and background work may appear as distilled process identities/labels/outcomes, but Arbor keeps no raw command transcript or process output. The receipt stays readable after the Run is terminal.",
18346
18493
  inputSchema: {
18347
18494
  runId: exports_external.string().describe("the run to read, run_… (from computer_run_start or computer_runs)")
18348
18495
  },
@@ -18366,7 +18513,7 @@ var ACTION_DEFINITIONS = [
18366
18513
  {
18367
18514
  name: "computer_exec",
18368
18515
  title: "Run a command",
18369
- description: "Run one bounded logical operation in an opened Thread computer. Omitting cwd uses the environment's defaultCwd; pass cwd explicitly to override it. Pass runId to route the command according to that Run's execution placement; without runId the command executes in the parent Computer. Strict Bash semantics are ON by default. For tests, builds, installs, or any command likely to run long, prefer background=true so the call returns a processId immediately; follow it with computer_process_read using the returned cursor for small incremental tails. For a labeled run-scoped verification check, pass activityKind=verification so the terminal exit becomes a distilled verification outcome. For a connected human, Arbor supplies ambient GitHub authorization and Git identity ephemerally without writing credentials into the workspace. Background processes stay in the environment where they were started.",
18516
+ description: "Run one bounded logical operation in an opened Thread computer. Omitting cwd uses the environment's defaultCwd; pass cwd explicitly to override it. Pass runId to route the command according to that Run's execution placement; without runId the command executes in the parent Computer. Strict Bash semantics are ON by default. For explicit asynchronous work, background=true returns a processId immediately. On an isolated container Run, foreground exec also establishes a durable operation/process identity before Arbor waits; a missed foreground response can be recovered from computer_run_receipt.operations and computer_process_read without repeating the mutation. For a labeled run-scoped verification check, pass activityKind=verification so the terminal exit becomes a distilled verification outcome. For a connected human, Arbor supplies ambient GitHub authorization and Git identity ephemerally without writing credentials into the workspace. Provider-owned processes stay in the environment where they were started.",
18370
18517
  inputSchema: {
18371
18518
  computerSessionId: exports_external.string().optional().describe("the computerSessionId returned by computer_open, cms_…; required unless runId is supplied"),
18372
18519
  command: exports_external.string().min(1).describe("the shell command to run"),
@@ -18385,7 +18532,7 @@ var ACTION_DEFINITIONS = [
18385
18532
  {
18386
18533
  name: "computer_process_read",
18387
18534
  title: "Read a background process",
18388
- description: "READ ONLY: Tail one process returned by computer_exec(background=true). With no cursor, returns only the latest small output window; pass nextCursor on the next read to receive only newer output. Defaults to 4 KB total and allows an explicit larger read up to 64 KB. Once terminal, also returns the final exit result.",
18535
+ description: "READ ONLY: Read one provider-owned process from computer_exec, including a recoverable foreground operation discovered through computer_run_receipt.operations. With no cursor, returns only the latest small output window; pass nextCursor on the next read to receive only newer output. Defaults to 4 KB total and allows an explicit larger read up to 64 KB. Returns the existing compact activity receipt that distinguishes fresh output, active CPU work, quiet running, terminal state, and unavailable telemetry without exposing raw process tables. For a known foreground recovery handle whose provider state cannot be observed, returns structured recovery state/reason/retry-safety instead of guessing. Once terminal, also returns the final exit result.",
18389
18536
  inputSchema: {
18390
18537
  computerSessionId: exports_external.string().optional().describe("the computerSessionId returned by computer_open, cms_…; required unless runId is supplied"),
18391
18538
  runId: exports_external.string().optional().describe("the Run that owns this process, if it was started inside a Run"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.20.12",
3
+ "version": "0.20.14",
4
4
  "description": "The Arbor CLI — a shared workspace for people and agents. The human + headless-agent write path over Arbor's guarded operation surface.",
5
5
  "keywords": [
6
6
  "agents",