@lambdacurry/arbor 0.14.1 → 0.14.3
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/README.md +1 -1
- package/dist/arbor.js +39 -16
- 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 `
|
|
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
|
@@ -1331,7 +1331,10 @@ var ts = (name) => text(name);
|
|
|
1331
1331
|
var orgs = sqliteTable("orgs", {
|
|
1332
1332
|
id: text("id").primaryKey(),
|
|
1333
1333
|
name: text("name").notNull(),
|
|
1334
|
-
createdAt: ts("created_at").notNull()
|
|
1334
|
+
createdAt: ts("created_at").notNull(),
|
|
1335
|
+
status: text("status").$type().notNull().default("active"),
|
|
1336
|
+
lockedAt: ts("locked_at"),
|
|
1337
|
+
lockedReason: text("locked_reason")
|
|
1335
1338
|
});
|
|
1336
1339
|
var profiles = sqliteTable("profiles", {
|
|
1337
1340
|
id: text("id").primaryKey(),
|
|
@@ -2078,6 +2081,9 @@ var watches = sqliteTable("watches", {
|
|
|
2078
2081
|
watchUq: uniqueIndex("watches_watcher_target_uniq").on(t.watcherProfileId, t.targetType, t.targetId),
|
|
2079
2082
|
watchTargetIdx: index("watches_target_idx").on(t.targetType, t.targetId)
|
|
2080
2083
|
}));
|
|
2084
|
+
// ../core/src/ops/computer.ts
|
|
2085
|
+
var MAX_COMPUTER_REPOSITORIES = 10;
|
|
2086
|
+
|
|
2081
2087
|
// ../core/src/ops/request.ts
|
|
2082
2088
|
var REQUEST_TTL_MS = 14 * 24 * 60 * 60 * 1000;
|
|
2083
2089
|
|
|
@@ -16618,7 +16624,8 @@ var computerProfile = exports_external.looseObject({
|
|
|
16618
16624
|
id: exports_external.string(),
|
|
16619
16625
|
version: exports_external.number(),
|
|
16620
16626
|
shell: exports_external.string(),
|
|
16621
|
-
runtimes: exports_external.looseObject({ bun: exports_external.string() }),
|
|
16627
|
+
runtimes: exports_external.looseObject({ bun: exports_external.string(), node: exports_external.string() }),
|
|
16628
|
+
packageManagers: exports_external.looseObject({ pnpm: exports_external.string() }),
|
|
16622
16629
|
tools: exports_external.array(exports_external.string()),
|
|
16623
16630
|
recommendedEditingPrimitive: exports_external.string()
|
|
16624
16631
|
});
|
|
@@ -17072,7 +17079,8 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17072
17079
|
watching: exports_external.boolean().optional(),
|
|
17073
17080
|
url: exports_external.string().optional(),
|
|
17074
17081
|
versions: exports_external.array(jsonObject).optional(),
|
|
17075
|
-
appBundles: exports_external.array(jsonObject).optional()
|
|
17082
|
+
appBundles: exports_external.array(jsonObject).optional(),
|
|
17083
|
+
usedByApps: exports_external.array(jsonObject).optional()
|
|
17076
17084
|
}),
|
|
17077
17085
|
artifact_get: exports_external.looseObject({
|
|
17078
17086
|
id,
|
|
@@ -17083,6 +17091,7 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17083
17091
|
version: exports_external.number().optional(),
|
|
17084
17092
|
versions: exports_external.array(jsonObject).optional(),
|
|
17085
17093
|
appBundles: exports_external.array(jsonObject),
|
|
17094
|
+
usedByApps: exports_external.array(jsonObject),
|
|
17086
17095
|
watching: exports_external.boolean(),
|
|
17087
17096
|
url: exports_external.string()
|
|
17088
17097
|
}),
|
|
@@ -17693,9 +17702,9 @@ var ACTION_DEFINITIONS = [
|
|
|
17693
17702
|
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
17703
|
inputSchema: {
|
|
17695
17704
|
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;
|
|
17697
|
-
setupScript: exports_external.string().nullable().optional().describe("optional setup run
|
|
17698
|
-
repositories: exports_external.array(exports_external.string()).nullable().optional().describe("
|
|
17705
|
+
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"),
|
|
17706
|
+
setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize, or null to clear"),
|
|
17707
|
+
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
17708
|
},
|
|
17700
17709
|
surfaces: ["mcp", "cli"],
|
|
17701
17710
|
toolset: "structure",
|
|
@@ -17708,9 +17717,9 @@ var ACTION_DEFINITIONS = [
|
|
|
17708
17717
|
inputSchema: {
|
|
17709
17718
|
spaceId: exports_external.string().describe("the Space, spc_…"),
|
|
17710
17719
|
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;
|
|
17712
|
-
setupScript: exports_external.string().nullable().optional().describe("optional setup run
|
|
17713
|
-
repositories: exports_external.array(exports_external.string()).nullable().optional().describe("
|
|
17720
|
+
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"),
|
|
17721
|
+
setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize, or null to clear"),
|
|
17722
|
+
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
17723
|
},
|
|
17715
17724
|
surfaces: ["mcp", "cli"],
|
|
17716
17725
|
toolset: "structure",
|
|
@@ -17723,9 +17732,9 @@ var ACTION_DEFINITIONS = [
|
|
|
17723
17732
|
inputSchema: {
|
|
17724
17733
|
topicId: exports_external.string().describe("the Topic, top_…"),
|
|
17725
17734
|
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;
|
|
17727
|
-
setupScript: exports_external.string().nullable().optional().describe("optional setup run
|
|
17728
|
-
repositories: exports_external.array(exports_external.string()).nullable().optional().describe("
|
|
17735
|
+
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"),
|
|
17736
|
+
setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize"),
|
|
17737
|
+
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
17738
|
},
|
|
17730
17739
|
surfaces: ["mcp", "cli"],
|
|
17731
17740
|
toolset: "structure",
|
|
@@ -17738,9 +17747,9 @@ var ACTION_DEFINITIONS = [
|
|
|
17738
17747
|
inputSchema: {
|
|
17739
17748
|
threadId: exports_external.string().describe("the Thread, thr_…"),
|
|
17740
17749
|
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;
|
|
17742
|
-
setupScript: exports_external.string().nullable().optional().describe("optional setup run
|
|
17743
|
-
repositories: exports_external.array(exports_external.string()).nullable().optional().describe("
|
|
17750
|
+
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"),
|
|
17751
|
+
setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize"),
|
|
17752
|
+
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
17753
|
},
|
|
17745
17754
|
surfaces: ["mcp", "cli"],
|
|
17746
17755
|
toolset: "structure",
|
|
@@ -17760,7 +17769,7 @@ var ACTION_DEFINITIONS = [
|
|
|
17760
17769
|
{
|
|
17761
17770
|
name: "computer_open",
|
|
17762
17771
|
title: "Open a Thread computer",
|
|
17763
|
-
description: "Open or resume this Thread's project environment for filesystem or command work.
|
|
17772
|
+
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
17773
|
inputSchema: {
|
|
17765
17774
|
threadId: exports_external.string().describe("the Arbor Thread whose stable computer to open, thr_…"),
|
|
17766
17775
|
vcpus: exports_external.number().int().min(1).max(4).optional().describe("optional container vCPU request"),
|
|
@@ -19483,6 +19492,20 @@ function parseErrorDetails(value) {
|
|
|
19483
19492
|
details.retryable = raw.retryable;
|
|
19484
19493
|
if (typeof raw.phase === "string")
|
|
19485
19494
|
details.phase = raw.phase;
|
|
19495
|
+
if (raw.provider && typeof raw.provider === "object" && !Array.isArray(raw.provider)) {
|
|
19496
|
+
const provider = raw.provider;
|
|
19497
|
+
if (typeof provider.stage === "string" && provider.stage !== "") {
|
|
19498
|
+
details.provider = {
|
|
19499
|
+
stage: provider.stage,
|
|
19500
|
+
...typeof provider.command === "string" ? { command: provider.command } : {},
|
|
19501
|
+
...typeof provider.exitCode === "number" ? { exitCode: provider.exitCode } : {},
|
|
19502
|
+
...typeof provider.stdout === "string" ? { stdout: provider.stdout } : {},
|
|
19503
|
+
...typeof provider.stderr === "string" ? { stderr: provider.stderr } : {},
|
|
19504
|
+
...typeof provider.containerStarted === "boolean" ? { containerStarted: provider.containerStarted } : {},
|
|
19505
|
+
...typeof provider.repositoryMaterialized === "boolean" ? { repositoryMaterialized: provider.repositoryMaterialized } : {}
|
|
19506
|
+
};
|
|
19507
|
+
}
|
|
19508
|
+
}
|
|
19486
19509
|
return details;
|
|
19487
19510
|
}
|
|
19488
19511
|
function detailsForError(err) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lambdacurry/arbor",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.3",
|
|
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": "^
|
|
39
|
+
"@types/node": "^26.2.0",
|
|
40
40
|
"tsx": "^4.20.6",
|
|
41
41
|
"typescript": "^5.8.0",
|
|
42
42
|
"vitest": "^4.1.4",
|