@lambdacurry/arbor 0.23.6 → 0.23.8

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 +50 -19
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // package.json
3
3
  var package_default = {
4
4
  name: "@lambdacurry/arbor",
5
- version: "0.23.6",
5
+ version: "0.23.8",
6
6
  description: "The Arbor CLI — a shared workspace for people and agents. The human + headless-agent write path over Arbor's guarded operation surface.",
7
7
  keywords: [
8
8
  "agents",
@@ -8438,6 +8438,19 @@ var computerRunFinishRequest = looseObject({
8438
8438
  providerGeneration: number2().int().nonnegative().nullable(),
8439
8439
  releasedSnapshotId: id.nullable()
8440
8440
  });
8441
+ var computerExecOutput = looseObject({
8442
+ stdout: string2().optional(),
8443
+ stderr: string2().optional(),
8444
+ exitCode: number2().optional(),
8445
+ processId: string2().optional(),
8446
+ status: string2().optional(),
8447
+ timedOut: boolean2().optional(),
8448
+ truncated: boolean2().optional().describe("true when returned stdout/stderr is partial and more output remains"),
8449
+ nextCursor: string2().optional().describe("opaque cursor for continuing partial output with computer_process_read"),
8450
+ cwd: string2().optional(),
8451
+ execution: _enum(["completed", "running"]).optional(),
8452
+ nextAction: literal("computer_process_read").optional()
8453
+ });
8441
8454
  var computerRunReceipt2 = looseObject({
8442
8455
  runId: id,
8443
8456
  threadId: id,
@@ -9768,19 +9781,8 @@ var MCP_OUTPUT_SCHEMAS = {
9768
9781
  failureCode: string2().nullable(),
9769
9782
  reason: string2()
9770
9783
  }),
9771
- computer_exec: looseObject({
9772
- stdout: string2().optional(),
9773
- stderr: string2().optional(),
9774
- exitCode: number2().optional(),
9775
- processId: string2().optional(),
9776
- status: string2().optional(),
9777
- timedOut: boolean2().optional(),
9778
- truncated: boolean2().optional().describe("true when returned stdout/stderr is partial and more output remains"),
9779
- nextCursor: string2().optional().describe("opaque cursor for continuing partial output with computer_process_read"),
9780
- cwd: string2().optional(),
9781
- execution: _enum(["completed", "running"]).optional(),
9782
- nextAction: literal("computer_process_read").optional()
9783
- }),
9784
+ computer_exec: computerExecOutput,
9785
+ computer_run_setup: computerExecOutput,
9784
9786
  computer_process_read: looseObject({
9785
9787
  processId: string2(),
9786
9788
  status: string2(),
@@ -10308,6 +10310,12 @@ var openWorld = {
10308
10310
  idempotentHint: false,
10309
10311
  openWorldHint: true
10310
10312
  };
10313
+ var destructiveIdempotentOpenWorld = {
10314
+ readOnlyHint: false,
10315
+ destructiveHint: true,
10316
+ idempotentHint: true,
10317
+ openWorldHint: true
10318
+ };
10311
10319
  var destructiveOpenWorld = {
10312
10320
  readOnlyHint: false,
10313
10321
  destructiveHint: true,
@@ -10429,6 +10437,7 @@ var MCP_TOOL_ANNOTATIONS = {
10429
10437
  computer_run_receipt: readOnly,
10430
10438
  computer_runs: readOnly,
10431
10439
  computer_exec: destructiveOpenWorld,
10440
+ computer_run_setup: destructiveIdempotentOpenWorld,
10432
10441
  computer_process_read: readOnly,
10433
10442
  computer_process_terminate: destructiveOpenWorld,
10434
10443
  computer_status: readOnly,
@@ -11519,7 +11528,7 @@ var ACTION_DEFINITIONS = [
11519
11528
  {
11520
11529
  name: "computer_run_receipt",
11521
11530
  title: "Read a run receipt",
11522
- description: "Read with exactly one of runId or runStartId: observe pending admission, finish continuation, Run-owned operation/activity state, and providerLifecycle instead of parent computer_status. Reads never drive admission or finish; the existing lifecycle owner continues independently.",
11531
+ description: "Read with exactly one of runId or runStartId: observe pending admission, finish continuation, Run-owned operation/activity state, and providerLifecycle instead of parent computer_status. Reads never drive admission or finish; the existing lifecycle owner continues independently. setupReadiness says whether declared setup still matches this workspace; computer_run_setup is what makes it ready.",
11523
11532
  inputSchema: {
11524
11533
  runId: string2().optional().describe("the Run to read, run_…; provide exactly one of runId or runStartId"),
11525
11534
  runStartId: string2().optional().describe("the pending or linked RunStart to read, rsr_…; alternative to runId")
@@ -11528,6 +11537,20 @@ var ACTION_DEFINITIONS = [
11528
11537
  toolset: "loop",
11529
11538
  run: forward("computer_runtime.run_receipt")
11530
11539
  },
11540
+ {
11541
+ name: "computer_run_setup",
11542
+ title: "Run the declared setup",
11543
+ description: "Run this Run's own declared project setup once, explicitly — Arbor resolves the authoritative recipe internally, so you neither supply nor see the command, and reusing the same idempotencyKey recovers a lost response instead of installing twice. Nothing runs it for you: a successful run is what makes setupReadiness ready, and it is refused unless the Run is isolated and a setup is declared.",
11544
+ inputSchema: {
11545
+ runId: string2().describe("the Run whose declared setup should run, run_…"),
11546
+ idempotencyKey: string2().describe("stable key for this ONE logical setup request; reuse it unchanged for retries"),
11547
+ background: boolean2().optional().describe("return a processId immediately instead of waiting; read it with computer_process_read"),
11548
+ timeout: number2().int().optional().describe("process kill deadline in milliseconds")
11549
+ },
11550
+ surfaces: ["computer-mcp", "computer-cli"],
11551
+ toolset: "loop",
11552
+ run: forward("computer_runtime.run_setup")
11553
+ },
11531
11554
  {
11532
11555
  name: "computer_runs",
11533
11556
  title: "List runs",
@@ -12346,11 +12369,15 @@ var ACTION_DEFINITIONS = [
12346
12369
  {
12347
12370
  name: "list_goals",
12348
12371
  title: "List goals",
12349
- description: "List compact goals attached to one Space, or a Thread's linked goals plus its available pick list. Space lists are compact cards; Thread lists page only the available `all` list and keep `linked` complete; view=summary returns 3 active goals. Archived goals are omitted.",
12372
+ description: "List compact goals attached to one Space, or a Thread's linked goals plus its available pick list. Space lists are compact cards; Thread lists page only the available `all` list and keep `linked` complete; view=summary returns 3 active goals; status pages named lifecycles before the page.",
12350
12373
  inputSchema: {
12351
12374
  spaceId: string2().optional().describe("a Space whose attached goals to list, spc_…"),
12352
12375
  threadId: string2().optional().describe("a Thread whose linked and available goals to list, thr_…"),
12353
- view: literal("summary").optional().describe("summary: Topics home — 3 most recently active goals (title + in-space linked Thread count). Omit for the full attached list."),
12376
+ view: literal("summary").optional().describe("summary: Topics home — 3 most recently active goals (title + in-space linked Thread count). Ignores status. Omit for the attached list."),
12377
+ status: union([
12378
+ _enum(["active", "paused", "completed", "archived"]),
12379
+ array(_enum(["active", "paused", "completed", "archived"])).min(1)
12380
+ ]).optional().describe("Space list only. One or more of active, paused, completed, archived. Filters before the page. Active goals come first, then most recently active within a lifecycle. Archived goals are included only when archived is named. Omit for the attached list (archived dropped, not active-only). view=summary ignores status."),
12354
12381
  ...PAGINATION_INPUT
12355
12382
  },
12356
12383
  surfaces: ["cli"],
@@ -12641,11 +12668,15 @@ var ACTION_DEFINITIONS = [
12641
12668
  {
12642
12669
  name: "goal_list",
12643
12670
  title: "List goals",
12644
- description: "List compact goals attached to one Space, or the linked and available goals for one Thread. Space pages omit relatedThreads; Thread pages keep linked complete and page only the available `all` list; view=summary returns 3 active goals; it cannot mutate a goal.",
12671
+ description: "List compact goals attached to one Space, or the linked and available goals for one Thread. Space pages omit relatedThreads; Thread pages keep linked complete and page only the available `all` list; view=summary returns 3 active goals; status pages named lifecycles before the page; it cannot mutate a goal.",
12645
12672
  inputSchema: {
12646
12673
  spaceId: string2().optional().describe("a Space whose attached goals to list, spc_…"),
12647
12674
  threadId: string2().optional().describe("a Thread whose linked and available goals to list, thr_…"),
12648
- view: literal("summary").optional().describe("summary: Topics home — 3 most recently active goals (title + in-space linked Thread count). Omit for the full attached list."),
12675
+ view: literal("summary").optional().describe("summary: Topics home — 3 most recently active goals (title + in-space linked Thread count). Ignores status. Omit for the attached list."),
12676
+ status: union([
12677
+ _enum(["active", "paused", "completed", "archived"]),
12678
+ array(_enum(["active", "paused", "completed", "archived"])).min(1)
12679
+ ]).optional().describe("Space list only. One or more of active, paused, completed, archived. Filters before the page. Active goals come first, then most recently active within a lifecycle. Archived goals are included only when archived is named. Omit for the attached list (archived dropped, not active-only). view=summary ignores status."),
12649
12680
  ...PAGINATION_INPUT
12650
12681
  },
12651
12682
  surfaces: ["mcp"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.23.6",
3
+ "version": "0.23.8",
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",