@lambdacurry/arbor 0.16.0 → 0.16.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.
- package/dist/arbor.js +153 -11
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -16727,6 +16727,27 @@ var computerProfile = exports_external.looseObject({
|
|
|
16727
16727
|
tools: exports_external.array(exports_external.string()),
|
|
16728
16728
|
recommendedEditingPrimitive: exports_external.string()
|
|
16729
16729
|
});
|
|
16730
|
+
var computerCapabilityCard = exports_external.looseObject({
|
|
16731
|
+
capabilities: exports_external.array(exports_external.looseObject({
|
|
16732
|
+
id: exports_external.string(),
|
|
16733
|
+
state: exports_external.enum(["ready", "available"]),
|
|
16734
|
+
surface: exports_external.array(exports_external.string()),
|
|
16735
|
+
hint: exports_external.string().optional()
|
|
16736
|
+
})),
|
|
16737
|
+
diagnostics: exports_external.looseObject({
|
|
16738
|
+
backend: exports_external.enum(["worker-shell", "container"]),
|
|
16739
|
+
containerProfile: nullableString,
|
|
16740
|
+
runtimeActive: exports_external.boolean()
|
|
16741
|
+
})
|
|
16742
|
+
});
|
|
16743
|
+
var codeSymbol = exports_external.looseObject({
|
|
16744
|
+
namePath: exports_external.string(),
|
|
16745
|
+
kind: exports_external.string(),
|
|
16746
|
+
path: exports_external.string(),
|
|
16747
|
+
startLine: exports_external.number().optional(),
|
|
16748
|
+
endLine: exports_external.number().optional(),
|
|
16749
|
+
body: exports_external.string().optional()
|
|
16750
|
+
});
|
|
16730
16751
|
var appBundleSourceProvenance = exports_external.looseObject({
|
|
16731
16752
|
entryPath: exports_external.string(),
|
|
16732
16753
|
artifactVersionSha256: exports_external.string(),
|
|
@@ -17311,6 +17332,10 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17311
17332
|
profile: computerProfile.nullable(),
|
|
17312
17333
|
startingSnapshot: snapshot.nullable(),
|
|
17313
17334
|
materialized: checkpoint.nullable(),
|
|
17335
|
+
workspaceRoot: exports_external.string(),
|
|
17336
|
+
repositories: exports_external.array(exports_external.looseObject({ repository: exports_external.string(), path: exports_external.string() })),
|
|
17337
|
+
defaultCwd: exports_external.string(),
|
|
17338
|
+
capabilities: computerCapabilityCard,
|
|
17314
17339
|
runtime: jsonObject
|
|
17315
17340
|
}),
|
|
17316
17341
|
computer_reprovision: exports_external.looseObject({
|
|
@@ -17332,14 +17357,17 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17332
17357
|
exitCode: exports_external.number().optional(),
|
|
17333
17358
|
jobId: exports_external.string().optional(),
|
|
17334
17359
|
status: exports_external.string().optional(),
|
|
17360
|
+
cwd: exports_external.string(),
|
|
17335
17361
|
strict: exports_external.boolean()
|
|
17336
17362
|
}),
|
|
17337
17363
|
computer_status: exports_external.looseObject({
|
|
17338
|
-
|
|
17339
|
-
|
|
17340
|
-
|
|
17341
|
-
|
|
17342
|
-
profile: computerProfile.nullable()
|
|
17364
|
+
computerSessionId: id,
|
|
17365
|
+
computerId: id,
|
|
17366
|
+
status: exports_external.enum(["running", "dormant"]),
|
|
17367
|
+
backend: exports_external.enum(["worker-shell", "container"]),
|
|
17368
|
+
profile: computerProfile.nullable(),
|
|
17369
|
+
capabilities: computerCapabilityCard,
|
|
17370
|
+
runtime: jsonObject
|
|
17343
17371
|
}),
|
|
17344
17372
|
computer_verify: exports_external.looseObject({
|
|
17345
17373
|
passed: exports_external.literal(true),
|
|
@@ -17407,7 +17435,11 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17407
17435
|
before: exports_external.string().optional(),
|
|
17408
17436
|
after: exports_external.string().optional(),
|
|
17409
17437
|
fetchHead: exports_external.string().optional(),
|
|
17410
|
-
refs: exports_external.array(exports_external.string()).optional()
|
|
17438
|
+
refs: exports_external.array(exports_external.string()).optional(),
|
|
17439
|
+
remoteTracking: exports_external.union([
|
|
17440
|
+
exports_external.looseObject({ updated: exports_external.literal(true), ref: exports_external.string(), head: exports_external.string() }),
|
|
17441
|
+
exports_external.looseObject({ updated: exports_external.literal(false), reason: exports_external.literal("untracked_workspace") })
|
|
17442
|
+
])
|
|
17411
17443
|
}),
|
|
17412
17444
|
computer_push: exports_external.looseObject({
|
|
17413
17445
|
ok: exports_external.literal(true),
|
|
@@ -17446,7 +17478,47 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17446
17478
|
warnings: exports_external.array(exports_external.string()),
|
|
17447
17479
|
replayed: exports_external.boolean()
|
|
17448
17480
|
}),
|
|
17449
|
-
computer_stop: exports_external.looseObject({ checkpoint, stopped: jsonObject })
|
|
17481
|
+
computer_stop: exports_external.looseObject({ checkpoint, stopped: jsonObject }),
|
|
17482
|
+
code_symbols: exports_external.looseObject({
|
|
17483
|
+
computerSessionId: id,
|
|
17484
|
+
path: exports_external.string(),
|
|
17485
|
+
symbols: exports_external.array(codeSymbol)
|
|
17486
|
+
}),
|
|
17487
|
+
code_find_symbol: exports_external.looseObject({
|
|
17488
|
+
computerSessionId: id,
|
|
17489
|
+
namePath: exports_external.string(),
|
|
17490
|
+
symbols: exports_external.array(codeSymbol)
|
|
17491
|
+
}),
|
|
17492
|
+
code_references: exports_external.looseObject({
|
|
17493
|
+
computerSessionId: id,
|
|
17494
|
+
namePath: exports_external.string(),
|
|
17495
|
+
path: exports_external.string(),
|
|
17496
|
+
references: exports_external.array(exports_external.looseObject({
|
|
17497
|
+
path: exports_external.string(),
|
|
17498
|
+
namePath: exports_external.string().optional(),
|
|
17499
|
+
startLine: exports_external.number().optional(),
|
|
17500
|
+
snippet: exports_external.string().optional()
|
|
17501
|
+
})),
|
|
17502
|
+
truncated: exports_external.boolean()
|
|
17503
|
+
}),
|
|
17504
|
+
code_implementations: exports_external.looseObject({
|
|
17505
|
+
computerSessionId: id,
|
|
17506
|
+
namePath: exports_external.string(),
|
|
17507
|
+
path: exports_external.string(),
|
|
17508
|
+
symbols: exports_external.array(codeSymbol)
|
|
17509
|
+
}),
|
|
17510
|
+
code_diagnostics: exports_external.looseObject({
|
|
17511
|
+
computerSessionId: id,
|
|
17512
|
+
path: exports_external.string(),
|
|
17513
|
+
diagnostics: exports_external.array(exports_external.looseObject({
|
|
17514
|
+
severity: exports_external.enum(["error", "warning", "information", "hint"]),
|
|
17515
|
+
message: exports_external.string(),
|
|
17516
|
+
path: exports_external.string(),
|
|
17517
|
+
startLine: exports_external.number().optional(),
|
|
17518
|
+
namePath: exports_external.string().optional()
|
|
17519
|
+
})),
|
|
17520
|
+
truncated: exports_external.boolean()
|
|
17521
|
+
})
|
|
17450
17522
|
};
|
|
17451
17523
|
function outputSchemaFor(actionName) {
|
|
17452
17524
|
return MCP_OUTPUT_SCHEMAS[actionName];
|
|
@@ -17576,6 +17648,11 @@ var MCP_TOOL_ANNOTATIONS = {
|
|
|
17576
17648
|
computer_reprovision: destructiveIdempotent,
|
|
17577
17649
|
computer_exec: destructiveOpenWorld,
|
|
17578
17650
|
computer_status: readOnly,
|
|
17651
|
+
code_symbols: readOnly,
|
|
17652
|
+
code_find_symbol: readOnly,
|
|
17653
|
+
code_references: readOnly,
|
|
17654
|
+
code_implementations: readOnly,
|
|
17655
|
+
code_diagnostics: readOnly,
|
|
17579
17656
|
computer_verify: openWorld,
|
|
17580
17657
|
computer_read: readOnly,
|
|
17581
17658
|
computer_export: idempotent,
|
|
@@ -17949,7 +18026,7 @@ var ACTION_DEFINITIONS = [
|
|
|
17949
18026
|
{
|
|
17950
18027
|
name: "computer_open",
|
|
17951
18028
|
title: "Open a Thread computer",
|
|
17952
|
-
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
|
|
18029
|
+
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.",
|
|
17953
18030
|
inputSchema: {
|
|
17954
18031
|
threadId: exports_external.string().describe("the Arbor Thread whose stable computer to open, thr_…"),
|
|
17955
18032
|
vcpus: exports_external.number().int().min(1).max(4).optional().describe("optional container vCPU request"),
|
|
@@ -17975,7 +18052,7 @@ var ACTION_DEFINITIONS = [
|
|
|
17975
18052
|
{
|
|
17976
18053
|
name: "computer_exec",
|
|
17977
18054
|
title: "Run a command",
|
|
17978
|
-
description: "Run one bounded logical operation in an opened Thread computer
|
|
18055
|
+
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. Use background only for the container backend; worker-shell deliberately serializes mutations and rejects long-lived processes.",
|
|
17979
18056
|
inputSchema: {
|
|
17980
18057
|
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
17981
18058
|
command: exports_external.string().min(1).describe("the shell command to run"),
|
|
@@ -17991,7 +18068,7 @@ var ACTION_DEFINITIONS = [
|
|
|
17991
18068
|
{
|
|
17992
18069
|
name: "computer_status",
|
|
17993
18070
|
title: "Inspect a computer",
|
|
17994
|
-
description: "READ ONLY: Read live Currybox process/runtime status and the declared container profile contract for
|
|
18071
|
+
description: "READ ONLY: Read what this computer can do right now — the same resolved capabilities card computer_open returns, each entry ready or available — plus live Currybox process/runtime status and the declared container profile contract. Reach for it when you are unsure whether a capability — background processes, semantic code intelligence, Preview publication — is usable on this session. This cannot modify files, processes, checkpoints, or Thread state; use get_computer on the Arbor surface for durable config and snapshot lineage.",
|
|
17995
18072
|
inputSchema: {
|
|
17996
18073
|
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…")
|
|
17997
18074
|
},
|
|
@@ -18011,6 +18088,71 @@ var ACTION_DEFINITIONS = [
|
|
|
18011
18088
|
toolset: "loop",
|
|
18012
18089
|
run: forward("computer_runtime.verify")
|
|
18013
18090
|
},
|
|
18091
|
+
{
|
|
18092
|
+
name: "code_symbols",
|
|
18093
|
+
title: "Outline a file's symbols",
|
|
18094
|
+
description: "Outline the symbols a file or directory defines, resolved by the project's language server. Reach for this before reading a large unfamiliar file — unlike a grep through `computer_exec`, it returns the real declarations with their kinds rather than every textual match. Needs the semantic-code capability shown on the computer_status card.",
|
|
18095
|
+
inputSchema: {
|
|
18096
|
+
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18097
|
+
path: exports_external.string().max(512).describe("file or directory, absolute under /workspace or workspace-relative")
|
|
18098
|
+
},
|
|
18099
|
+
surfaces: ["computer-mcp", "computer-cli"],
|
|
18100
|
+
toolset: "loop",
|
|
18101
|
+
run: forward("computer_code.symbols")
|
|
18102
|
+
},
|
|
18103
|
+
{
|
|
18104
|
+
name: "code_find_symbol",
|
|
18105
|
+
title: "Find a symbol by name path",
|
|
18106
|
+
description: "Locate a declaration by its name path (`ClassName/methodName`) and optionally return its body. Use it instead of a `computer_exec` grep when you want THE definition rather than every line mentioning the name; the language server distinguishes the declaration from its call sites and its string occurrences. Needs the semantic-code capability shown on the computer_status card.",
|
|
18107
|
+
inputSchema: {
|
|
18108
|
+
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18109
|
+
namePath: exports_external.string().min(1).max(200).describe("symbol name path within a file, e.g. MyClass/myMethod"),
|
|
18110
|
+
path: exports_external.string().max(512).optional().describe("optional file or directory to restrict the search to"),
|
|
18111
|
+
includeBody: exports_external.boolean().optional().describe("include each symbol's source body"),
|
|
18112
|
+
depth: exports_external.number().int().min(0).max(3).optional().describe("how many levels of children to include (default 0)")
|
|
18113
|
+
},
|
|
18114
|
+
surfaces: ["computer-mcp", "computer-cli"],
|
|
18115
|
+
toolset: "loop",
|
|
18116
|
+
run: forward("computer_code.find_symbol")
|
|
18117
|
+
},
|
|
18118
|
+
{
|
|
18119
|
+
name: "code_references",
|
|
18120
|
+
title: "Find what references a symbol",
|
|
18121
|
+
description: 'List the places that actually reference a symbol, each with a short snippet. This is the operation `computer_exec` cannot do: a text search finds the same identifier in comments, unrelated modules, and shadowed scopes, while the language server resolves real references — so it answers "is this safe to change". Needs the semantic-code capability shown on the computer_status card.',
|
|
18122
|
+
inputSchema: {
|
|
18123
|
+
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18124
|
+
namePath: exports_external.string().min(1).max(200).describe("name path of the symbol to trace"),
|
|
18125
|
+
path: exports_external.string().max(512).describe("the file declaring that symbol, absolute under /workspace or workspace-relative")
|
|
18126
|
+
},
|
|
18127
|
+
surfaces: ["computer-mcp", "computer-cli"],
|
|
18128
|
+
toolset: "loop",
|
|
18129
|
+
run: forward("computer_code.references")
|
|
18130
|
+
},
|
|
18131
|
+
{
|
|
18132
|
+
name: "code_implementations",
|
|
18133
|
+
title: "Find implementations of a symbol",
|
|
18134
|
+
description: "List the concrete implementations or subtypes of an interface, abstract type, or method. A `computer_exec` search cannot follow a type relationship — only the language server knows which declarations satisfy this one. Needs the semantic-code capability shown on the computer_status card.",
|
|
18135
|
+
inputSchema: {
|
|
18136
|
+
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18137
|
+
namePath: exports_external.string().min(1).max(200).describe("name path of the interface, type, or method"),
|
|
18138
|
+
path: exports_external.string().max(512).describe("the file declaring that symbol, absolute under /workspace or workspace-relative")
|
|
18139
|
+
},
|
|
18140
|
+
surfaces: ["computer-mcp", "computer-cli"],
|
|
18141
|
+
toolset: "loop",
|
|
18142
|
+
run: forward("computer_code.implementations")
|
|
18143
|
+
},
|
|
18144
|
+
{
|
|
18145
|
+
name: "code_diagnostics",
|
|
18146
|
+
title: "Read language-server diagnostics for a file",
|
|
18147
|
+
description: "Return the language server's live errors and warnings for one file, mapped to symbols. Reach for it on a file you just edited: it answers in seconds without the whole-project build a `computer_exec` typecheck runs, though a green result here is not a substitute for that build. Needs the semantic-code capability shown on the computer_status card.",
|
|
18148
|
+
inputSchema: {
|
|
18149
|
+
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18150
|
+
path: exports_external.string().max(512).describe("the file to inspect, absolute under /workspace or workspace-relative")
|
|
18151
|
+
},
|
|
18152
|
+
surfaces: ["computer-mcp", "computer-cli"],
|
|
18153
|
+
toolset: "loop",
|
|
18154
|
+
run: forward("computer_code.diagnostics")
|
|
18155
|
+
},
|
|
18014
18156
|
{
|
|
18015
18157
|
name: "computer_read",
|
|
18016
18158
|
title: "Read a project file",
|
|
@@ -18097,7 +18239,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18097
18239
|
{
|
|
18098
18240
|
name: "computer_pull",
|
|
18099
18241
|
title: "Fast-forward an allowed repository",
|
|
18100
|
-
description: "Fetch and fast-forward the checked-out branch of a cloned recipe repository; divergent history, a dirty working tree, and anything needing a merge are rejected rather than forced. OMIT githubToken and Arbor pulls with its own managed recipe credential after rechecking the repository connection — the way a restored computer reaches current history. Supply githubToken instead to pull as the collaborator. Neither credential is stored or returned.",
|
|
18242
|
+
description: "Fetch and fast-forward the checked-out branch of a cloned recipe repository; divergent history, a dirty working tree, and anything needing a merge are rejected rather than forced. A returned pull also PROVES the branch's remote-tracking ref reached the fetched tip and reports it as remoteTracking, so ordinary `git status` and `git log origin/<branch>` stay true instead of showing a level checkout as ahead; if that cannot be proven the call fails as retryable with the landed fast-forward attached, rather than reporting a truthful pull it did not verify. remoteTracking.updated is false only when the checked-out branch does not track this repository at all. OMIT githubToken and Arbor pulls with its own managed recipe credential after rechecking the repository connection — the way a restored computer reaches current history. Supply githubToken instead to pull as the collaborator. Neither credential is stored or returned.",
|
|
18101
18243
|
inputSchema: {
|
|
18102
18244
|
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18103
18245
|
repository: exports_external.string().describe("allowed owner/repository slug already cloned"),
|
package/package.json
CHANGED