@lambdacurry/arbor 0.14.1 → 0.14.2

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 (3) hide show
  1. package/README.md +1 -1
  2. package/dist/arbor.js +32 -14
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -42,7 +42,7 @@ This prints a URL + short code to relay to the human, who approves it in their l
42
42
 
43
43
  ## Output contract (agent-friendly)
44
44
 
45
- Every command takes `--json` to emit a stable `{ ok, data | error, meta }` envelope on stdout (with structured error codes and agent-mode exit codes); advisory/human text goes to stderr. A failure envelope adds the server's granular `reason` — `validation.missing_field`, `limit.exceeded`, `conflict.state`, … — beside the coarse `code`, optionally with `field`, `limit`, `retryable`, and `phase` (AD-237). `--quiet` (auto under `--json` or a pipe) silences the advisory stream. `--fields a,b,list:N` projects a result; `--limit`/`--cursor` paginate list commands.
45
+ Every command takes `--json` to emit a stable `{ ok, data | error, meta }` envelope on stdout (with structured error codes and agent-mode exit codes); advisory/human text goes to stderr. A failure envelope adds the server's granular `reason` — `validation.missing_field`, `limit.exceeded`, `conflict.state`, … — beside the coarse `code`, optionally with `field`, `limit`, `retryable`, `phase`, and bounded sanitized `provider` lifecycle diagnostics (AD-237/261). `--quiet` (auto under `--json` or a pipe) silences the advisory stream. `--fields a,b,list:N` projects a result; `--limit`/`--cursor` paginate list commands.
46
46
 
47
47
  ```bash
48
48
  arbor inbox --json --limit 20
package/dist/arbor.js CHANGED
@@ -2078,6 +2078,9 @@ var watches = sqliteTable("watches", {
2078
2078
  watchUq: uniqueIndex("watches_watcher_target_uniq").on(t.watcherProfileId, t.targetType, t.targetId),
2079
2079
  watchTargetIdx: index("watches_target_idx").on(t.targetType, t.targetId)
2080
2080
  }));
2081
+ // ../core/src/ops/computer.ts
2082
+ var MAX_COMPUTER_REPOSITORIES = 10;
2083
+
2081
2084
  // ../core/src/ops/request.ts
2082
2085
  var REQUEST_TTL_MS = 14 * 24 * 60 * 60 * 1000;
2083
2086
 
@@ -16618,7 +16621,8 @@ var computerProfile = exports_external.looseObject({
16618
16621
  id: exports_external.string(),
16619
16622
  version: exports_external.number(),
16620
16623
  shell: exports_external.string(),
16621
- runtimes: exports_external.looseObject({ bun: exports_external.string() }),
16624
+ runtimes: exports_external.looseObject({ bun: exports_external.string(), node: exports_external.string() }),
16625
+ packageManagers: exports_external.looseObject({ pnpm: exports_external.string() }),
16622
16626
  tools: exports_external.array(exports_external.string()),
16623
16627
  recommendedEditingPrimitive: exports_external.string()
16624
16628
  });
@@ -17693,9 +17697,9 @@ var ACTION_DEFINITIONS = [
17693
17697
  description: "Replace your organization's sparse computer-default layer without allocating runtime state. Omitted/null values fall back to provider defaults; Space, Topic, and Thread layers may override individual fields.",
17694
17698
  inputSchema: {
17695
17699
  backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("default execution tier, or null to use worker-shell"),
17696
- containerProfile: exports_external.string().nullable().optional().describe("logical container profile; use bun-typescript-v1 for the pinned Bun monorepo toolchain, or null to clear"),
17697
- setupScript: exports_external.string().nullable().optional().describe("optional setup run when materializing a reusable base, or null to clear"),
17698
- repositories: exports_external.array(exports_external.string()).nullable().optional().describe("default repositories, repeated --repositories; [] clears and null inherits provider default")
17700
+ containerProfile: exports_external.string().nullable().optional().describe("logical container profile; bun-typescript-v1 guarantees Bash, Git, Bun 1.3.3, Node 26.5.1, and pnpm 10.33.0, or null to clear"),
17701
+ setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize, or null to clear"),
17702
+ 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")
17699
17703
  },
17700
17704
  surfaces: ["mcp", "cli"],
17701
17705
  toolset: "structure",
@@ -17708,9 +17712,9 @@ var ACTION_DEFINITIONS = [
17708
17712
  inputSchema: {
17709
17713
  spaceId: exports_external.string().describe("the Space, spc_…"),
17710
17714
  backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
17711
- containerProfile: exports_external.string().nullable().optional().describe("logical container profile; use bun-typescript-v1 for the pinned Bun monorepo toolchain, or null to clear inherited profile"),
17712
- setupScript: exports_external.string().nullable().optional().describe("optional setup run when materializing a reusable base, or null to clear"),
17713
- repositories: exports_external.array(exports_external.string()).nullable().optional().describe("repository allowlist/default clones; [] clears and null inherits")
17715
+ containerProfile: exports_external.string().nullable().optional().describe("logical container profile; bun-typescript-v1 guarantees Bash, Git, Bun 1.3.3, Node 26.5.1, and pnpm 10.33.0, or null to clear inherited profile"),
17716
+ setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize, or null to clear"),
17717
+ 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")
17714
17718
  },
17715
17719
  surfaces: ["mcp", "cli"],
17716
17720
  toolset: "structure",
@@ -17723,9 +17727,9 @@ var ACTION_DEFINITIONS = [
17723
17727
  inputSchema: {
17724
17728
  topicId: exports_external.string().describe("the Topic, top_…"),
17725
17729
  backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
17726
- containerProfile: exports_external.string().nullable().optional().describe("logical container profile; use bun-typescript-v1 for the pinned Bun monorepo toolchain, or null to clear inherited profile"),
17727
- setupScript: exports_external.string().nullable().optional().describe("optional setup run, or null to clear"),
17728
- repositories: exports_external.array(exports_external.string()).nullable().optional().describe("repository allowlist/default clones; [] clears and null inherits")
17730
+ containerProfile: exports_external.string().nullable().optional().describe("logical container profile; bun-typescript-v1 guarantees Bash, Git, Bun 1.3.3, Node 26.5.1, and pnpm 10.33.0, or null to clear inherited profile"),
17731
+ setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize"),
17732
+ 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")
17729
17733
  },
17730
17734
  surfaces: ["mcp", "cli"],
17731
17735
  toolset: "structure",
@@ -17738,9 +17742,9 @@ var ACTION_DEFINITIONS = [
17738
17742
  inputSchema: {
17739
17743
  threadId: exports_external.string().describe("the Thread, thr_…"),
17740
17744
  backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
17741
- containerProfile: exports_external.string().nullable().optional().describe("logical container profile; use bun-typescript-v1 for the pinned Bun monorepo toolchain, or null to clear inherited profile"),
17742
- setupScript: exports_external.string().nullable().optional().describe("optional setup run, or null to clear"),
17743
- repositories: exports_external.array(exports_external.string()).nullable().optional().describe("repository allowlist/default clones; [] clears and null inherits")
17745
+ containerProfile: exports_external.string().nullable().optional().describe("logical container profile; bun-typescript-v1 guarantees Bash, Git, Bun 1.3.3, Node 26.5.1, and pnpm 10.33.0, or null to clear inherited profile"),
17746
+ setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize"),
17747
+ 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")
17744
17748
  },
17745
17749
  surfaces: ["mcp", "cli"],
17746
17750
  toolset: "structure",
@@ -17760,7 +17764,7 @@ var ACTION_DEFINITIONS = [
17760
17764
  {
17761
17765
  name: "computer_open",
17762
17766
  title: "Open a Thread computer",
17763
- description: "Open or resume this Thread's project environment for filesystem or command work. Returns computerSessionId and, when a declared container profile is selected, its guaranteed shell/runtimes/tools/editing primitive; pass the session id unchanged to later Computer tools and to Contributions or responses produced from the work.",
17767
+ description: "Open or resume this Thread's project environment for filesystem or command work. 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 and the selected profile contract; pass the session id unchanged to later Computer tools and cited work.",
17764
17768
  inputSchema: {
17765
17769
  threadId: exports_external.string().describe("the Arbor Thread whose stable computer to open, thr_…"),
17766
17770
  vcpus: exports_external.number().int().min(1).max(4).optional().describe("optional container vCPU request"),
@@ -19483,6 +19487,20 @@ function parseErrorDetails(value) {
19483
19487
  details.retryable = raw.retryable;
19484
19488
  if (typeof raw.phase === "string")
19485
19489
  details.phase = raw.phase;
19490
+ if (raw.provider && typeof raw.provider === "object" && !Array.isArray(raw.provider)) {
19491
+ const provider = raw.provider;
19492
+ if (typeof provider.stage === "string" && provider.stage !== "") {
19493
+ details.provider = {
19494
+ stage: provider.stage,
19495
+ ...typeof provider.command === "string" ? { command: provider.command } : {},
19496
+ ...typeof provider.exitCode === "number" ? { exitCode: provider.exitCode } : {},
19497
+ ...typeof provider.stdout === "string" ? { stdout: provider.stdout } : {},
19498
+ ...typeof provider.stderr === "string" ? { stderr: provider.stderr } : {},
19499
+ ...typeof provider.containerStarted === "boolean" ? { containerStarted: provider.containerStarted } : {},
19500
+ ...typeof provider.repositoryMaterialized === "boolean" ? { repositoryMaterialized: provider.repositoryMaterialized } : {}
19501
+ };
19502
+ }
19503
+ }
19486
19504
  return details;
19487
19505
  }
19488
19506
  function detailsForError(err) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.14.1",
3
+ "version": "0.14.2",
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",
@@ -36,7 +36,7 @@
36
36
  "devDependencies": {
37
37
  "@arbor/actions": "workspace:*",
38
38
  "@arbor/core": "workspace:*",
39
- "@types/node": "^22.19.19",
39
+ "@types/node": "^26.2.0",
40
40
  "tsx": "^4.20.6",
41
41
  "typescript": "^5.8.0",
42
42
  "vitest": "^4.1.4",