@lambdacurry/arbor 0.17.3 → 0.17.5
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/dist/arbor.js +65 -9
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -16678,6 +16678,7 @@ var redactedComputerRecipe = exports_external.looseObject({
|
|
|
16678
16678
|
provider: exports_external.string(),
|
|
16679
16679
|
backend: exports_external.enum(["worker-shell", "container"]),
|
|
16680
16680
|
containerProfile: nullableString,
|
|
16681
|
+
containerProfileRevision: exports_external.number().int().nullable(),
|
|
16681
16682
|
repositories: exports_external.array(exports_external.string()),
|
|
16682
16683
|
setupScriptConfigured: exports_external.boolean(),
|
|
16683
16684
|
configRevision: exports_external.string(),
|
|
@@ -17345,7 +17346,13 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17345
17346
|
repositories: exports_external.array(exports_external.looseObject({ repository: exports_external.string(), path: exports_external.string() })),
|
|
17346
17347
|
defaultCwd: exports_external.string(),
|
|
17347
17348
|
capabilities: computerCapabilityCard,
|
|
17348
|
-
runtime: jsonObject
|
|
17349
|
+
runtime: jsonObject,
|
|
17350
|
+
reconciliation: exports_external.looseObject({
|
|
17351
|
+
action: exports_external.literal("automatic_reprovision"),
|
|
17352
|
+
reason: exports_external.literal("container_profile_revision"),
|
|
17353
|
+
fromContainerProfileRevision: exports_external.number().int().nullable(),
|
|
17354
|
+
toContainerProfileRevision: exports_external.number().int().nullable()
|
|
17355
|
+
}).optional()
|
|
17349
17356
|
}),
|
|
17350
17357
|
computer_reprovision: exports_external.looseObject({
|
|
17351
17358
|
reprovisionId: id,
|
|
@@ -17365,10 +17372,29 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17365
17372
|
stderr: exports_external.string().optional(),
|
|
17366
17373
|
exitCode: exports_external.number().optional(),
|
|
17367
17374
|
jobId: exports_external.string().optional(),
|
|
17375
|
+
processId: exports_external.string().optional(),
|
|
17368
17376
|
status: exports_external.string().optional(),
|
|
17369
17377
|
cwd: exports_external.string(),
|
|
17370
17378
|
strict: exports_external.boolean()
|
|
17371
17379
|
}),
|
|
17380
|
+
computer_process_read: exports_external.looseObject({
|
|
17381
|
+
processId: id,
|
|
17382
|
+
status: exports_external.string(),
|
|
17383
|
+
command: exports_external.string().optional(),
|
|
17384
|
+
cwd: exports_external.string().optional(),
|
|
17385
|
+
startedAt: timestamp.nullable().optional(),
|
|
17386
|
+
endedAt: timestamp.nullable().optional(),
|
|
17387
|
+
durationMs: exports_external.number().int().min(0).nullable().optional(),
|
|
17388
|
+
stdout: exports_external.string().optional(),
|
|
17389
|
+
stderr: exports_external.string().optional(),
|
|
17390
|
+
truncated: exports_external.boolean().optional(),
|
|
17391
|
+
exitCode: exports_external.number().int().nullable().optional()
|
|
17392
|
+
}),
|
|
17393
|
+
computer_process_terminate: exports_external.looseObject({
|
|
17394
|
+
processId: id,
|
|
17395
|
+
status: exports_external.string(),
|
|
17396
|
+
terminated: exports_external.boolean().optional()
|
|
17397
|
+
}),
|
|
17372
17398
|
computer_status: exports_external.looseObject({
|
|
17373
17399
|
computerSessionId: id,
|
|
17374
17400
|
computerId: id,
|
|
@@ -17656,6 +17682,8 @@ var MCP_TOOL_ANNOTATIONS = {
|
|
|
17656
17682
|
computer_open: additive,
|
|
17657
17683
|
computer_reprovision: destructiveIdempotent,
|
|
17658
17684
|
computer_exec: destructiveOpenWorld,
|
|
17685
|
+
computer_process_read: readOnly,
|
|
17686
|
+
computer_process_terminate: destructiveOpenWorld,
|
|
17659
17687
|
computer_status: readOnly,
|
|
17660
17688
|
code_symbols: readOnly,
|
|
17661
17689
|
code_find_symbol: readOnly,
|
|
@@ -17968,7 +17996,7 @@ var ACTION_DEFINITIONS = [
|
|
|
17968
17996
|
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.",
|
|
17969
17997
|
inputSchema: {
|
|
17970
17998
|
backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("default execution tier, or null to use worker-shell"),
|
|
17971
|
-
containerProfile: exports_external.string().nullable().optional().describe("logical container profile; bun-typescript-v1 guarantees Bash, Git, Bun 1.3.3, bunx, Node 26.5.1, pnpm 10.33.0, and ripgrep (rg), or null to clear"),
|
|
17999
|
+
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"),
|
|
17972
18000
|
setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize, or null to clear"),
|
|
17973
18001
|
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")
|
|
17974
18002
|
},
|
|
@@ -17983,7 +18011,7 @@ var ACTION_DEFINITIONS = [
|
|
|
17983
18011
|
inputSchema: {
|
|
17984
18012
|
spaceId: exports_external.string().describe("the Space, spc_…"),
|
|
17985
18013
|
backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
|
|
17986
|
-
containerProfile: exports_external.string().nullable().optional().describe("logical container profile; bun-typescript-v1 guarantees Bash, Git, Bun 1.3.3, bunx, Node 26.5.1, pnpm 10.33.0, and ripgrep (rg), or null to clear inherited profile"),
|
|
18014
|
+
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"),
|
|
17987
18015
|
setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize, or null to clear"),
|
|
17988
18016
|
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")
|
|
17989
18017
|
},
|
|
@@ -17998,7 +18026,7 @@ var ACTION_DEFINITIONS = [
|
|
|
17998
18026
|
inputSchema: {
|
|
17999
18027
|
topicId: exports_external.string().describe("the Topic, top_…"),
|
|
18000
18028
|
backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
|
|
18001
|
-
containerProfile: exports_external.string().nullable().optional().describe("logical container profile; bun-typescript-v1 guarantees Bash, Git, Bun 1.3.3, bunx, Node 26.5.1, pnpm 10.33.0, and ripgrep (rg), or null to clear inherited profile"),
|
|
18029
|
+
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"),
|
|
18002
18030
|
setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize"),
|
|
18003
18031
|
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")
|
|
18004
18032
|
},
|
|
@@ -18013,7 +18041,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18013
18041
|
inputSchema: {
|
|
18014
18042
|
threadId: exports_external.string().describe("the Thread, thr_…"),
|
|
18015
18043
|
backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
|
|
18016
|
-
containerProfile: exports_external.string().nullable().optional().describe("logical container profile; bun-typescript-v1 guarantees Bash, Git, Bun 1.3.3, bunx, Node 26.5.1, pnpm 10.33.0, and ripgrep (rg), or null to clear inherited profile"),
|
|
18044
|
+
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"),
|
|
18017
18045
|
setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize"),
|
|
18018
18046
|
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")
|
|
18019
18047
|
},
|
|
@@ -18035,7 +18063,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18035
18063
|
{
|
|
18036
18064
|
name: "computer_open",
|
|
18037
18065
|
title: "Open a Thread computer",
|
|
18038
|
-
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 — pass it unchanged to later Computer tools and cited work — plus 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.",
|
|
18066
|
+
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 the selected profile contract (including GitHub CLI (gh) on bun-typescript-v1), 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.",
|
|
18039
18067
|
inputSchema: {
|
|
18040
18068
|
threadId: exports_external.string().describe("the Arbor Thread whose stable computer to open, thr_…"),
|
|
18041
18069
|
vcpus: exports_external.number().int().min(1).max(4).optional().describe("optional container vCPU request"),
|
|
@@ -18061,7 +18089,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18061
18089
|
{
|
|
18062
18090
|
name: "computer_exec",
|
|
18063
18091
|
title: "Run a command",
|
|
18064
|
-
description: "Run one bounded logical operation in an opened Thread computer. Omitting cwd runs from the Computer's defaultCwd — the one materialized checkout when the recipe has exactly one repository, otherwise the workspace root — and the receipt echoes the cwd it ran in; pass cwd explicitly to override it. Strict Bash semantics are ON by default: an early command failure or failed pipeline makes the execution nonzero, while explicit handling such as `cmd || fallback` still works. Set strict=false only for an intentional best-effort script. For a connected human
|
|
18092
|
+
description: "Run one bounded logical operation in an opened Thread computer. Omitting cwd runs from the Computer's defaultCwd — the one materialized checkout when the recipe has exactly one repository, otherwise the workspace root — and the receipt echoes the cwd it ran in; pass cwd explicitly to override it. Strict Bash semantics are ON by default: an early command failure or failed pipeline makes the execution nonzero, while explicit handling such as `cmd || fallback` still works. Set strict=false only for an intentional best-effort script. For a connected human, Arbor supplies ambient GitHub authorization for normal gh/HTTPS Git commands and GitHub-linked author/committer identity ephemerally for every exec without writing credentials into the workspace; command-local Git environment overrides may still replace the identity. Use background only for the container backend; it returns a processId for computer_process_read / computer_process_terminate. worker-shell deliberately serializes mutations and rejects long-lived processes.",
|
|
18065
18093
|
inputSchema: {
|
|
18066
18094
|
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18067
18095
|
command: exports_external.string().min(1).describe("the shell command to run"),
|
|
@@ -18074,6 +18102,31 @@ var ACTION_DEFINITIONS = [
|
|
|
18074
18102
|
toolset: "loop",
|
|
18075
18103
|
run: forward("computer_runtime.exec")
|
|
18076
18104
|
},
|
|
18105
|
+
{
|
|
18106
|
+
name: "computer_process_read",
|
|
18107
|
+
title: "Read a background process",
|
|
18108
|
+
description: "READ ONLY: Inspect one process returned by computer_exec(background=true). Returns provider-owned lifecycle metadata plus bounded latest stdout/stderr and, once terminal, the final exit result. Re-read the same processId for progress without sentinel files or shell process archaeology.",
|
|
18109
|
+
inputSchema: {
|
|
18110
|
+
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18111
|
+
processId: exports_external.string().min(1).describe("the opaque processId returned by computer_exec(background=true), proc_…"),
|
|
18112
|
+
maxBytes: exports_external.number().int().min(1024).max(65536).optional().describe("maximum combined output bytes to return; default 16,384")
|
|
18113
|
+
},
|
|
18114
|
+
surfaces: ["computer-mcp", "computer-cli"],
|
|
18115
|
+
toolset: "loop",
|
|
18116
|
+
run: forward("computer_runtime.process_read")
|
|
18117
|
+
},
|
|
18118
|
+
{
|
|
18119
|
+
name: "computer_process_terminate",
|
|
18120
|
+
title: "Terminate a background process",
|
|
18121
|
+
description: "Terminate one process returned by computer_exec(background=true), including its provider-owned process tree. Returns the observed terminal state so ChatGPT can stop long verification explicitly without shell PIDs or ps/kill workarounds.",
|
|
18122
|
+
inputSchema: {
|
|
18123
|
+
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18124
|
+
processId: exports_external.string().min(1).describe("the opaque processId returned by computer_exec(background=true), proc_…")
|
|
18125
|
+
},
|
|
18126
|
+
surfaces: ["computer-mcp", "computer-cli"],
|
|
18127
|
+
toolset: "loop",
|
|
18128
|
+
run: forward("computer_runtime.process_terminate")
|
|
18129
|
+
},
|
|
18077
18130
|
{
|
|
18078
18131
|
name: "computer_status",
|
|
18079
18132
|
title: "Inspect a computer",
|
|
@@ -18276,7 +18329,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18276
18329
|
{
|
|
18277
18330
|
name: "computer_checkpoint",
|
|
18278
18331
|
title: "Checkpoint completed work",
|
|
18279
|
-
description: "Save an intermediate complete unit of project work into durable Thread lineage. For the final unit, call computer_stop instead; it performs the final checkpoint before teardown. No checkpoint is needed for computer_verify alone because remote visual capture starts no project runtime.",
|
|
18332
|
+
description: "Save an intermediate complete unit of project work into durable Thread lineage. A running background process may still be writing the workspace, so checkpointing refuses until it is finished or explicitly terminated; use computer_status to inspect active processes. For the final unit, call computer_stop instead; it performs the final checkpoint before teardown. No checkpoint is needed for computer_verify alone because remote visual capture starts no project runtime.",
|
|
18280
18333
|
inputSchema: {
|
|
18281
18334
|
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…")
|
|
18282
18335
|
},
|
|
@@ -18323,7 +18376,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18323
18376
|
{
|
|
18324
18377
|
name: "computer_stop",
|
|
18325
18378
|
title: "Checkpoint and stop",
|
|
18326
|
-
description: "Finish an opened computer after a unit of work. Currybox checkpoints and Arbor publishes before teardown; any durability failure refuses the stop instead of silently discarding state.",
|
|
18379
|
+
description: "Finish an opened computer after a unit of work. Currybox checkpoints and Arbor publishes before teardown; any durability failure refuses the stop instead of silently discarding state. A running background process also refuses the checkpoint; use computer_status to inspect it and computer_process_terminate when it should be stopped.",
|
|
18327
18380
|
inputSchema: {
|
|
18328
18381
|
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…")
|
|
18329
18382
|
},
|
|
@@ -19875,6 +19928,9 @@ function parseErrorDetails(value) {
|
|
|
19875
19928
|
if (typeof raw.compatibilityState === "string") {
|
|
19876
19929
|
details.compatibilityState = raw.compatibilityState;
|
|
19877
19930
|
}
|
|
19931
|
+
if (typeof raw.compatibilityReason === "string") {
|
|
19932
|
+
details.compatibilityReason = raw.compatibilityReason;
|
|
19933
|
+
}
|
|
19878
19934
|
if (typeof raw.suggestedAction === "string")
|
|
19879
19935
|
details.suggestedAction = raw.suggestedAction;
|
|
19880
19936
|
return details;
|
package/package.json
CHANGED