@lambdacurry/arbor 0.20.33 → 0.21.1
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 +75 -71
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -2072,6 +2072,9 @@ var computerRuns = sqliteTable("computer_runs", {
|
|
|
2072
2072
|
execution: text("isolation").$type().notNull(),
|
|
2073
2073
|
workspaceDir: text("workspace_dir").notNull(),
|
|
2074
2074
|
baseSnapshotId: text("base_snapshot_id"),
|
|
2075
|
+
currentSnapshotId: text("current_snapshot_id"),
|
|
2076
|
+
runtimeState: text("runtime_state").$type().notNull().default("shared"),
|
|
2077
|
+
runtimeUpdatedAt: ts("runtime_updated_at"),
|
|
2075
2078
|
gitStart: text("git_start", { mode: "json" }).$type(),
|
|
2076
2079
|
status: text("status").$type().notNull().default("active"),
|
|
2077
2080
|
label: text("label"),
|
|
@@ -2082,13 +2085,15 @@ var computerRuns = sqliteTable("computer_runs", {
|
|
|
2082
2085
|
computerIdx: index("computer_runs_computer_idx").on(t.computerId, t.startedAt),
|
|
2083
2086
|
threadIdx: index("computer_runs_thread_idx").on(t.threadId, t.startedAt),
|
|
2084
2087
|
sessionIdx: index("computer_runs_session_idx").on(t.computerSessionId, t.startedAt),
|
|
2085
|
-
statusIdx: index("computer_runs_status_idx").on(t.computerId, t.status)
|
|
2088
|
+
statusIdx: index("computer_runs_status_idx").on(t.computerId, t.status),
|
|
2089
|
+
runtimeIdx: index("computer_runs_runtime_idx").on(t.computerId, t.runtimeState)
|
|
2086
2090
|
}));
|
|
2087
2091
|
var computerSnapshots = sqliteTable("computer_snapshots", {
|
|
2088
2092
|
id: text("id").primaryKey(),
|
|
2089
2093
|
ownerScope: text("owner_scope").$type().notNull(),
|
|
2090
2094
|
topicId: text("topic_id").notNull().references(() => topics.id),
|
|
2091
2095
|
computerId: text("computer_id").references(() => threadComputers.id),
|
|
2096
|
+
runId: text("run_id").references(() => computerRuns.id),
|
|
2092
2097
|
parentSnapshotId: text("parent_snapshot_id"),
|
|
2093
2098
|
lineageKey: text("lineage_key"),
|
|
2094
2099
|
configKey: text("config_key"),
|
|
@@ -2104,6 +2109,7 @@ var computerSnapshots = sqliteTable("computer_snapshots", {
|
|
|
2104
2109
|
topicBaseIdx: uniqueIndex("computer_snapshots_topic_base_idx").on(t.topicId, t.configKey),
|
|
2105
2110
|
lineageIdx: uniqueIndex("computer_snapshots_lineage_idx").on(t.lineageKey),
|
|
2106
2111
|
computerIdx: index("computer_snapshots_computer_idx").on(t.computerId, t.createdAt),
|
|
2112
|
+
runIdx: index("computer_snapshots_run_idx").on(t.runId, t.createdAt),
|
|
2107
2113
|
parentIdx: index("computer_snapshots_parent_idx").on(t.parentSnapshotId)
|
|
2108
2114
|
}));
|
|
2109
2115
|
var previews = sqliteTable("previews", {
|
|
@@ -17249,6 +17255,11 @@ var computerRunPublication = exports_external.looseObject({
|
|
|
17249
17255
|
reasonCode: exports_external.string(),
|
|
17250
17256
|
remoteRef: exports_external.string().optional()
|
|
17251
17257
|
});
|
|
17258
|
+
var computerRunRuntime = exports_external.looseObject({
|
|
17259
|
+
state: exports_external.enum(["shared", "live", "suspended", "released"]),
|
|
17260
|
+
currentSnapshotId: id.nullable(),
|
|
17261
|
+
updatedAt: exports_external.string().nullable()
|
|
17262
|
+
});
|
|
17252
17263
|
var computerRunDurability = exports_external.looseObject({
|
|
17253
17264
|
workspace: exports_external.enum(["shared", "isolated"]),
|
|
17254
17265
|
parentMutation: exports_external.enum(["direct", "none"]),
|
|
@@ -17330,6 +17341,8 @@ var computerRun = exports_external.looseObject({
|
|
|
17330
17341
|
execution: exports_external.enum(["shared", "isolated"]),
|
|
17331
17342
|
workspaceDir: exports_external.string(),
|
|
17332
17343
|
baseSnapshotId: id.nullable(),
|
|
17344
|
+
currentSnapshotId: id.nullable().optional(),
|
|
17345
|
+
runtime: computerRunRuntime,
|
|
17333
17346
|
gitStart: computerRunGitStart.nullable().optional(),
|
|
17334
17347
|
durability: computerRunDurability,
|
|
17335
17348
|
status: exports_external.enum(["active", "finished", "failed", "cancelled"]),
|
|
@@ -17353,6 +17366,7 @@ var computerRunReceipt = exports_external.looseObject({
|
|
|
17353
17366
|
execution: exports_external.enum(["shared", "isolated"]),
|
|
17354
17367
|
workspace: exports_external.looseObject({ dir: exports_external.string() }),
|
|
17355
17368
|
baseSnapshotId: id.nullable(),
|
|
17369
|
+
runtime: computerRunRuntime,
|
|
17356
17370
|
gitStart: computerRunGitStart.nullable().optional(),
|
|
17357
17371
|
durability: computerRunDurability,
|
|
17358
17372
|
finishAssessment: computerRunFinishAssessment.nullable(),
|
|
@@ -17808,17 +17822,6 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17808
17822
|
connected: exports_external.boolean(),
|
|
17809
17823
|
inheritedBySiblingThreads: exports_external.boolean()
|
|
17810
17824
|
}),
|
|
17811
|
-
publish_topic_computer: exports_external.looseObject({
|
|
17812
|
-
published: exports_external.boolean(),
|
|
17813
|
-
snapshot
|
|
17814
|
-
}),
|
|
17815
|
-
checkpoint_computer: exports_external.looseObject({
|
|
17816
|
-
ok: exports_external.boolean(),
|
|
17817
|
-
idempotent: exports_external.boolean().optional(),
|
|
17818
|
-
snapshot: snapshot.optional(),
|
|
17819
|
-
reason: exports_external.string().optional(),
|
|
17820
|
-
currentSnapshotId: nullableString.optional()
|
|
17821
|
-
}),
|
|
17822
17825
|
transition_thread: exports_external.looseObject({ status: exports_external.string() }),
|
|
17823
17826
|
request: exports_external.looseObject({
|
|
17824
17827
|
requestId: id,
|
|
@@ -18092,6 +18095,12 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
18092
18095
|
durability: computerRunDurabilitySummary,
|
|
18093
18096
|
status: exports_external.string()
|
|
18094
18097
|
}),
|
|
18098
|
+
computer_run_suspend: exports_external.looseObject({
|
|
18099
|
+
runId: id,
|
|
18100
|
+
runtime: computerRunRuntime,
|
|
18101
|
+
replayed: exports_external.boolean(),
|
|
18102
|
+
snapshotId: id.nullable()
|
|
18103
|
+
}),
|
|
18095
18104
|
computer_run_finish: exports_external.looseObject({
|
|
18096
18105
|
status: exports_external.string(),
|
|
18097
18106
|
replayed: exports_external.boolean(),
|
|
@@ -18475,6 +18484,15 @@ var OUTPUT_SHAPERS = {
|
|
|
18475
18484
|
["status", run.status]
|
|
18476
18485
|
]);
|
|
18477
18486
|
},
|
|
18487
|
+
computer_run_suspend: (result) => {
|
|
18488
|
+
const run = record2(result.run) ?? {};
|
|
18489
|
+
return defined([
|
|
18490
|
+
["runId", run.runId],
|
|
18491
|
+
["runtime", selected(run.runtime, ["state", "currentSnapshotId", "updatedAt"])],
|
|
18492
|
+
["replayed", result.replayed],
|
|
18493
|
+
["snapshotId", result.snapshotId]
|
|
18494
|
+
]);
|
|
18495
|
+
},
|
|
18478
18496
|
computer_run_finish: (result) => {
|
|
18479
18497
|
const run = record2(result.run) ?? {};
|
|
18480
18498
|
return defined([
|
|
@@ -18597,8 +18615,6 @@ var MCP_TOOL_ANNOTATIONS = {
|
|
|
18597
18615
|
attach_computer: additive,
|
|
18598
18616
|
get_computer: readOnly,
|
|
18599
18617
|
computer_inventory: readOnly,
|
|
18600
|
-
publish_topic_computer: additive,
|
|
18601
|
-
checkpoint_computer: additive,
|
|
18602
18618
|
transition_thread: additive,
|
|
18603
18619
|
request: additive,
|
|
18604
18620
|
respond: additive,
|
|
@@ -18655,6 +18671,7 @@ var MCP_TOOL_ANNOTATIONS = {
|
|
|
18655
18671
|
computer_open: additive,
|
|
18656
18672
|
computer_reprovision: destructiveIdempotent,
|
|
18657
18673
|
computer_run_start: additive,
|
|
18674
|
+
computer_run_suspend: idempotent,
|
|
18658
18675
|
computer_repo_work_status: readOnly,
|
|
18659
18676
|
computer_run_finish: idempotent,
|
|
18660
18677
|
computer_run_receipt: readOnly,
|
|
@@ -18696,6 +18713,8 @@ var ORIENTATION = `Arbor is your team's deliberation room and shared memory —
|
|
|
18696
18713
|
|
|
18697
18714
|
Meaningful friction with Arbor itself can be privately contributed through \`contribute_arbor_feedback\`; the raw body is never posted into the current Thread or the shared Arbor Feedback forum. Browse the curated shared forum with \`feedback_tree\` → \`feedback_recall\` → \`feedback_thread_get\`.
|
|
18698
18715
|
|
|
18716
|
+
Arbor's MCP is the collaboration and durable-knowledge surface. Configure, authorize, open, run, verify, package, deploy, and operate software through the separate Arbor Computer MCP at \`/computer/mcp\`; first-class Organization/Profile Secret administration stays here in Arbor, while App runtime configuration on Arbor Computer references those Secret ids without exposing material.
|
|
18717
|
+
|
|
18699
18718
|
1. RECALL FIRST — but Arbor is MEMORY, NOT TRUTH. Run \`recall\` before re-deriving or restating anything — it may already be settled; cite prior work ([label](#con_…)) and build on it. Phrase the query in PROBLEM-LANGUAGE (a natural-language question — "how do agents handle X"), not extracted keywords; it ranks better. Empty recall is itself worth noting. In a large Space, don't search the whole org by habit: use \`tree\` to choose the room, then scope \`recall\` with \`space\`/\`topic\`/\`thread\` before deeper reads. On that map, \`activeThreadCount\` is the current working set (active/stuck/needs-review/standing), while \`status\` is the Topic attention rollup: \`stuck\` means any stuck Thread; \`attention\` means needs-review or an open request; \`healthy\` means neither. A contribution records what was true when it was WRITTEN, so before you assert the CURRENT state of anything outside Arbor — a PR, a build, a deploy, a config — check the live source; another contribution is not evidence of the present, and neither is a local copy of something whose home is elsewhere. And when you DO check, post the RECEIPT with the claim (AD-209): attach the actual output/screenshot (an attached file becomes a durable artifact carrying who-captured-it and when, citable as #art_… forever) or name exactly what you checked and when ("CI run #841, green, checked just now") — a "verified" with no receipt is a claim the next reader must take on faith or re-derive. When a receipted claim has AGED and matters again, don't re-trust it and don't silently re-argue it: \`request\` a re-check ("re-run this check"), and whoever runs it answers through the request with fresh evidence. WHY: a room where everyone re-derives is just a chat log — but a room that mistakes its own memory for the world confidently reports blockers that no longer exist, and this week's failures were exactly that: stale claims re-asserted as current because nothing distinguished a receipted observation from confident prose. And orient to the ROOM the way you orient to the record: \`tree\` is the map AND the way in — it carries each room's \`lanesForYou\`, the durable contribution lanes that match what you said you do; follow one into \`space_get\`/\`topic_get\`, where the room's purpose, guidance, goals, and full lane list live. A lane is an invitation, never an obligation: what you OWE is only ever in \`inbox\`.
|
|
18700
18719
|
2. CONTRIBUTE typed points — but ADD ONLY WHAT'S ADDITIVE (AD-205). Ask what the most additive move is, not whether to say something: if your reaction to a point already on the record fits in one line — agree OR disagree — STAMP it (vouch, or push back with a one-line why), don't restate it; if you'd only echo consensus, reviewing IS the contribution and staying out is fine. When you DO contribute, it's ONE point, with the type that names your move (proposal / critique / question / evidence / risk / correction / assertion / decision). Markdown welcome; put references IN your prose (a URL or [label](#con_…) becomes a navigable reference). Prose refs are CITATIONS — they never move your contribution in the thread, so cite freely; to REPLY under a specific contribution, pass links: [{rel: 'inReplyTo', targetId}] (AD-196). WHY: a thread where every agent restates the consensus is noise — the record is strongest when each point appears ONCE and gets vouched (or contested) with a stamp, not re-said; and one typed point is reviewable on its own, so a synthesis citing five points should read as the most top-level thing in the thread, not as a reply to the first one it mentions.
|
|
18701
18720
|
3. ANSWER through requests. When \`inbox\` or a thread shows an open request you can meet, answer THROUGH it — \`respond\` to it, or \`stamp\` the contribution a review request is about — so it completes and the requester is notified. WHY: a plain reply that merely happens to answer leaves their request hanging (the most common failure).
|
|
@@ -18754,23 +18773,23 @@ var ACTION_DEFINITIONS = [
|
|
|
18754
18773
|
{
|
|
18755
18774
|
name: "github_repositories",
|
|
18756
18775
|
title: "List installed GitHub repositories",
|
|
18757
|
-
description: "READ ONLY: List repositories covered by this organization's verified Arbor Computer GitHub App
|
|
18776
|
+
description: "READ ONLY: List repositories covered by this organization's verified Arbor Computer GitHub App, returning ids and metadata but never credentials. Use github_connect_repository to authorize one at an Arbor scope; listing alone grants no Computer access.",
|
|
18758
18777
|
inputSchema: { ...PAGINATION_INPUT },
|
|
18759
|
-
surfaces: ["mcp", "cli"],
|
|
18778
|
+
surfaces: ["computer-mcp", "cli"],
|
|
18760
18779
|
toolset: "projects",
|
|
18761
18780
|
run: forward("github.repositories")
|
|
18762
18781
|
},
|
|
18763
18782
|
{
|
|
18764
18783
|
name: "github_connect_repository",
|
|
18765
18784
|
title: "Connect a GitHub repository",
|
|
18766
|
-
description: "Connect
|
|
18785
|
+
description: "Connect or disconnect a listed GitHub repository at organization, Space, Topic, or Thread scope so matching descendant Computers may materialize it. The caller must manage that scope, GitHub installation coverage remains a separate gate, and get_computer shows the effective grant.",
|
|
18767
18786
|
inputSchema: {
|
|
18768
18787
|
repositoryId: exports_external.string().describe("installed repository id from github_repositories, ghr_…"),
|
|
18769
18788
|
scope: exports_external.enum(["organization", "space", "topic", "thread"]).describe("the Arbor scope that may use this repository's context; topic is the durable choice for a project every Thread under it develops"),
|
|
18770
18789
|
scopeId: exports_external.string().describe("id matching the selected scope"),
|
|
18771
18790
|
connected: exports_external.boolean().describe("true to connect; false to disconnect recoverably")
|
|
18772
18791
|
},
|
|
18773
|
-
surfaces: ["mcp", "cli"],
|
|
18792
|
+
surfaces: ["computer-mcp", "cli"],
|
|
18774
18793
|
toolset: "projects",
|
|
18775
18794
|
run: forward("github.set_repository_connection")
|
|
18776
18795
|
},
|
|
@@ -19151,7 +19170,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19151
19170
|
setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize, or null to clear"),
|
|
19152
19171
|
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")
|
|
19153
19172
|
},
|
|
19154
|
-
surfaces: ["mcp", "cli"],
|
|
19173
|
+
surfaces: ["computer-mcp", "cli"],
|
|
19155
19174
|
toolset: "structure",
|
|
19156
19175
|
run: forward("computer_config.set_organization")
|
|
19157
19176
|
},
|
|
@@ -19166,7 +19185,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19166
19185
|
setupScript: exports_external.string().nullable().optional().describe("optional strict Bash setup run after connected repositories materialize, or null to clear"),
|
|
19167
19186
|
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")
|
|
19168
19187
|
},
|
|
19169
|
-
surfaces: ["mcp", "cli"],
|
|
19188
|
+
surfaces: ["computer-mcp", "cli"],
|
|
19170
19189
|
toolset: "structure",
|
|
19171
19190
|
run: forward("computer_config.set_space")
|
|
19172
19191
|
},
|
|
@@ -19182,7 +19201,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19182
19201
|
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"),
|
|
19183
19202
|
...LIVE_PREVIEW_CONFIG_INPUT
|
|
19184
19203
|
},
|
|
19185
|
-
surfaces: ["mcp", "cli"],
|
|
19204
|
+
surfaces: ["computer-mcp", "cli"],
|
|
19186
19205
|
toolset: "structure",
|
|
19187
19206
|
run: forward("computer_config.set_topic")
|
|
19188
19207
|
},
|
|
@@ -19198,18 +19217,18 @@ var ACTION_DEFINITIONS = [
|
|
|
19198
19217
|
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"),
|
|
19199
19218
|
...LIVE_PREVIEW_CONFIG_INPUT
|
|
19200
19219
|
},
|
|
19201
|
-
surfaces: ["mcp", "cli"],
|
|
19220
|
+
surfaces: ["computer-mcp", "cli"],
|
|
19202
19221
|
toolset: "structure",
|
|
19203
19222
|
run: forward("computer_config.set_thread")
|
|
19204
19223
|
},
|
|
19205
19224
|
{
|
|
19206
19225
|
name: "attach_computer",
|
|
19207
19226
|
title: "Attach a Thread computer",
|
|
19208
|
-
description: "
|
|
19227
|
+
description: "Create or reuse a Thread's stable Computer identity and mint an immutable collaborator receipt without starting provider runtime. Normally computer_open performs this attachment as part of opening; use this tool only when durable protocol identity is needed separately.",
|
|
19209
19228
|
inputSchema: {
|
|
19210
19229
|
threadId: exports_external.string().describe("the Thread whose computer you are attaching, thr_…")
|
|
19211
19230
|
},
|
|
19212
|
-
surfaces: ["mcp", "cli"],
|
|
19231
|
+
surfaces: ["computer-mcp", "cli"],
|
|
19213
19232
|
toolset: "loop",
|
|
19214
19233
|
run: forward("computer.attach")
|
|
19215
19234
|
},
|
|
@@ -19235,7 +19254,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19235
19254
|
idempotencyKey: exports_external.string().min(1).max(200).describe("stable key for this ONE replacement request; reuse it unchanged for retries"),
|
|
19236
19255
|
reason: exports_external.string().min(1).max(500).describe("concise auditable reason for replacing the active generation")
|
|
19237
19256
|
},
|
|
19238
|
-
surfaces: ["
|
|
19257
|
+
surfaces: ["computer-mcp", "computer-cli"],
|
|
19239
19258
|
toolset: "loop",
|
|
19240
19259
|
run: forward("computer_runtime.reprovision")
|
|
19241
19260
|
},
|
|
@@ -19253,6 +19272,17 @@ var ACTION_DEFINITIONS = [
|
|
|
19253
19272
|
toolset: "loop",
|
|
19254
19273
|
run: forward("computer_runtime.run_start")
|
|
19255
19274
|
},
|
|
19275
|
+
{
|
|
19276
|
+
name: "computer_run_suspend",
|
|
19277
|
+
title: "Suspend a run",
|
|
19278
|
+
description: "Checkpoint an active isolated WRITE Run's exact workspace, publish that Run-owned restore point, and release its provider Sandbox during an external wait; the same runId resumes automatically on its next operation. Refuses active processes or unsettled mutations and never replays unknown work.",
|
|
19279
|
+
inputSchema: {
|
|
19280
|
+
runId: exports_external.string().describe("the active isolated WRITE Run to suspend, run_…")
|
|
19281
|
+
},
|
|
19282
|
+
surfaces: ["computer-mcp", "computer-cli"],
|
|
19283
|
+
toolset: "loop",
|
|
19284
|
+
run: forward("computer_runtime.run_suspend")
|
|
19285
|
+
},
|
|
19256
19286
|
{
|
|
19257
19287
|
name: "computer_repo_work_status",
|
|
19258
19288
|
title: "Inspect repository finish state",
|
|
@@ -19554,50 +19584,23 @@ var ACTION_DEFINITIONS = [
|
|
|
19554
19584
|
threadId: exports_external.string().describe("the Thread, thr_…"),
|
|
19555
19585
|
lineageLimit: exports_external.number().int().min(1).max(100).optional().describe("recent receipts/lineage rows (default 20)")
|
|
19556
19586
|
},
|
|
19557
|
-
surfaces: ["mcp", "cli"],
|
|
19587
|
+
surfaces: ["computer-mcp", "cli"],
|
|
19558
19588
|
toolset: "loop",
|
|
19559
19589
|
run: forward("computer.get")
|
|
19560
19590
|
},
|
|
19561
19591
|
{
|
|
19562
19592
|
name: "computer_inventory",
|
|
19563
19593
|
title: "Inventory organization Computers",
|
|
19564
|
-
description: "READ ONLY: Inventory materialized Thread Computers in your organization, optionally scoped to
|
|
19594
|
+
description: "READ ONLY: Inventory materialized Thread Computers in your organization, optionally scoped to a Topic, with active generation, compatibility, lifecycle counts, and factual anomaly flags. Organization owner/admin only; this is evidence, not a deletion recommendation.",
|
|
19565
19595
|
inputSchema: {
|
|
19566
19596
|
topicId: exports_external.string().optional().describe("optional Topic to scope the inventory"),
|
|
19567
19597
|
limit: exports_external.number().int().min(1).max(50).optional().describe("rows to return (default 25)"),
|
|
19568
19598
|
cursor: exports_external.string().optional().describe("active Computer id returned as nextCursor by the previous page")
|
|
19569
19599
|
},
|
|
19570
|
-
surfaces: ["mcp", "cli"],
|
|
19600
|
+
surfaces: ["computer-mcp", "cli"],
|
|
19571
19601
|
toolset: "admin",
|
|
19572
19602
|
run: forward("computer.inventory")
|
|
19573
19603
|
},
|
|
19574
|
-
{
|
|
19575
|
-
name: "publish_topic_computer",
|
|
19576
|
-
title: "Publish a Topic computer base",
|
|
19577
|
-
description: "After the first attached collaborator finishes the Topic setup recipe and Currybox checkpoints `/workspace`, publish that opaque restore handle as the reusable Topic base. Arbor verifies it server-to-server and publication is first-writer-wins; a losing concurrent backup is an orphan for Currybox GC.",
|
|
19578
|
-
inputSchema: {
|
|
19579
|
-
sessionId: exports_external.string().describe("the Arbor computer session that materialized the base, cms_…"),
|
|
19580
|
-
providerRef: exports_external.string().describe("the opaque restore handle returned by `currybox checkpoint`")
|
|
19581
|
-
},
|
|
19582
|
-
surfaces: ["mcp", "cli"],
|
|
19583
|
-
toolset: "loop",
|
|
19584
|
-
run: forward("computer.publish_topic_base")
|
|
19585
|
-
},
|
|
19586
|
-
{
|
|
19587
|
-
name: "checkpoint_computer",
|
|
19588
|
-
title: "Checkpoint a Thread computer",
|
|
19589
|
-
description: "After a complete unit of work, checkpoint `/workspace` through Currybox, then publish its opaque handle here to append immutable Thread lineage and advance the current pointer atomically. Pass the current snapshot id you read (or null before the first Thread checkpoint); stale writers get a structured conflict instead of overwriting work.",
|
|
19590
|
-
inputSchema: {
|
|
19591
|
-
computerId: exports_external.string().describe("the stable Thread computer, cmp_…"),
|
|
19592
|
-
sessionId: exports_external.string().optional().describe("the producing agent session, cms_…; Currybox service sweeps omit it"),
|
|
19593
|
-
providerRef: exports_external.string().describe("the opaque restore handle returned by `currybox checkpoint`"),
|
|
19594
|
-
expectedCurrentSnapshotId: exports_external.string().nullable().describe("the current Thread snapshot id you read, or null before its first checkpoint"),
|
|
19595
|
-
parentSnapshotId: exports_external.string().optional().describe("first checkpoint only: the Topic base parent when the session cannot supply it")
|
|
19596
|
-
},
|
|
19597
|
-
surfaces: ["mcp", "cli"],
|
|
19598
|
-
toolset: "loop",
|
|
19599
|
-
run: forward("computer.checkpoint")
|
|
19600
|
-
},
|
|
19601
19604
|
{
|
|
19602
19605
|
name: "set_ways_to_help",
|
|
19603
19606
|
title: "Set a thread's ways to help",
|
|
@@ -20176,7 +20179,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20176
20179
|
{
|
|
20177
20180
|
name: "service_register",
|
|
20178
20181
|
title: "Register a Computer lifecycle service",
|
|
20179
|
-
description: "Register a persistent service identity for Currybox Computer lifecycle maintenance and mint its API key (shown ONCE). Human owner/admin CLI setup only. The credential is restricted to computer.get + computer.lifecycle_runs + computer.checkpoint + computer.reconcile_runs and to the Spaces listed here; store it as the Currybox control plane's Arbor credential.",
|
|
20182
|
+
description: "Register a persistent service identity for Currybox Computer lifecycle maintenance and mint its API key (shown ONCE). Human owner/admin CLI setup only. The credential is restricted to computer.get + computer.lifecycle_runs + computer.checkpoint + computer.suspend_run + computer.resume_run + computer.reconcile_runs and to the Spaces listed here; store it as the Currybox control plane's Arbor credential.",
|
|
20180
20183
|
inputSchema: {
|
|
20181
20184
|
displayName: exports_external.string().min(1).describe("the service display name, e.g. Currybox lifecycle service"),
|
|
20182
20185
|
spaceIds: exports_external.array(exports_external.string().min(1)).min(1).describe("Spaces whose Thread computers the service may maintain")
|
|
@@ -20592,7 +20595,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20592
20595
|
bindingId: exports_external.string().optional().describe("unbind: binding id, sbd_…")
|
|
20593
20596
|
},
|
|
20594
20597
|
surfaces: ["mcp"],
|
|
20595
|
-
toolset: "
|
|
20598
|
+
toolset: "secrets",
|
|
20596
20599
|
run: dispatch({
|
|
20597
20600
|
list: "secret.list",
|
|
20598
20601
|
get: "secret.get",
|
|
@@ -20746,7 +20749,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20746
20749
|
inputSchema: {
|
|
20747
20750
|
includeArchived: exports_external.boolean().optional().describe("include archived Apps you are authorized to inspect")
|
|
20748
20751
|
},
|
|
20749
|
-
surfaces: ["mcp"],
|
|
20752
|
+
surfaces: ["computer-mcp"],
|
|
20750
20753
|
toolset: "apps",
|
|
20751
20754
|
run: forward("app.list")
|
|
20752
20755
|
},
|
|
@@ -20755,7 +20758,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20755
20758
|
title: "Read an App",
|
|
20756
20759
|
description: "READ ONLY: Inspect one App's stable URL, active deployment, pending control intent, deployment history, provider health, deployment-aware redacted configuration readiness for the active release, and durable state generation. It cannot modify App state, deployment state, access, or durable SQLite; use its activeDeploymentId as app_activate's expectedActiveDeploymentId.",
|
|
20757
20760
|
inputSchema: { appId: exports_external.string().describe("the App, app_…") },
|
|
20758
|
-
surfaces: ["mcp", "cli"],
|
|
20761
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20759
20762
|
toolset: "apps",
|
|
20760
20763
|
run: forward("app.get")
|
|
20761
20764
|
},
|
|
@@ -20772,7 +20775,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20772
20775
|
discovery: exports_external.enum(["unlisted", "listed"]).nullable().optional().describe("public Apps only; default unlisted"),
|
|
20773
20776
|
stateMode: exports_external.enum(["none", "durable"]).describe("durable allocates Space-only isolated facet SQLite; deployment never resets it")
|
|
20774
20777
|
},
|
|
20775
|
-
surfaces: ["mcp", "cli"],
|
|
20778
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20776
20779
|
toolset: "apps",
|
|
20777
20780
|
run: forward("app.create")
|
|
20778
20781
|
},
|
|
@@ -20788,7 +20791,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20788
20791
|
])).describe("complete desired runtime config object keyed by environment variable name"),
|
|
20789
20792
|
dryRun: exports_external.boolean().optional().describe("validate and plan without mutating")
|
|
20790
20793
|
},
|
|
20791
|
-
surfaces: ["mcp", "cli"],
|
|
20794
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20792
20795
|
toolset: "apps",
|
|
20793
20796
|
run: forward("app.config_apply")
|
|
20794
20797
|
},
|
|
@@ -20801,7 +20804,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20801
20804
|
bundleId: exports_external.string().describe("verified immutable AppBundle, bnd_…"),
|
|
20802
20805
|
idempotencyKey: exports_external.string().min(1).max(200).describe("stable key for this one logical deployment attempt")
|
|
20803
20806
|
},
|
|
20804
|
-
surfaces: ["mcp", "cli"],
|
|
20807
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20805
20808
|
toolset: "apps",
|
|
20806
20809
|
run: forward("app.deploy")
|
|
20807
20810
|
},
|
|
@@ -20825,7 +20828,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20825
20828
|
appId: exports_external.string().describe("owning App, app_…"),
|
|
20826
20829
|
deploymentId: exports_external.string().describe("deployment, dep_…")
|
|
20827
20830
|
},
|
|
20828
|
-
surfaces: ["mcp"],
|
|
20831
|
+
surfaces: ["computer-mcp"],
|
|
20829
20832
|
toolset: "apps",
|
|
20830
20833
|
run: forward("app.deployment_get")
|
|
20831
20834
|
},
|
|
@@ -20838,7 +20841,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20838
20841
|
path: exports_external.string().min(1).max(2048).describe("relative App path beginning with /; may include a query string"),
|
|
20839
20842
|
method: exports_external.enum(["GET", "HEAD"]).optional().describe("safe read method; default GET")
|
|
20840
20843
|
},
|
|
20841
|
-
surfaces: ["mcp", "cli"],
|
|
20844
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20842
20845
|
toolset: "apps",
|
|
20843
20846
|
run: forward("app.fetch")
|
|
20844
20847
|
},
|
|
@@ -20854,7 +20857,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20854
20857
|
body: exports_external.string().optional().describe("UTF-8 request body; mutually exclusive with json"),
|
|
20855
20858
|
contentType: exports_external.string().max(160).optional().describe("body media type; allowed only with body, default text/plain; charset=utf-8")
|
|
20856
20859
|
},
|
|
20857
|
-
surfaces: ["mcp", "cli"],
|
|
20860
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20858
20861
|
toolset: "apps",
|
|
20859
20862
|
run: forward("app.request")
|
|
20860
20863
|
},
|
|
@@ -20867,7 +20870,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20867
20870
|
deploymentId: exports_external.string().describe("prepared candidate, dep_…"),
|
|
20868
20871
|
expectedActiveDeploymentId: exports_external.string().nullable().describe("active deployment from app_get, or null before first activation")
|
|
20869
20872
|
},
|
|
20870
|
-
surfaces: ["mcp", "cli"],
|
|
20873
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20871
20874
|
toolset: "apps",
|
|
20872
20875
|
run: forward("app.activate")
|
|
20873
20876
|
},
|
|
@@ -20880,7 +20883,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20880
20883
|
deploymentId: exports_external.string().describe("superseded deployment to restore, dep_…"),
|
|
20881
20884
|
expectedActiveDeploymentId: exports_external.string().describe("current active deployment from app_get")
|
|
20882
20885
|
},
|
|
20883
|
-
surfaces: ["mcp", "cli"],
|
|
20886
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20884
20887
|
toolset: "apps",
|
|
20885
20888
|
run: forward("app.rollback")
|
|
20886
20889
|
},
|
|
@@ -20906,7 +20909,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20906
20909
|
access: exports_external.enum(["space", "public"]).describe("new gateway access"),
|
|
20907
20910
|
discovery: exports_external.enum(["unlisted", "listed"]).nullable().optional().describe("required concept only for public Apps")
|
|
20908
20911
|
},
|
|
20909
|
-
surfaces: ["mcp", "cli"],
|
|
20912
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20910
20913
|
toolset: "apps",
|
|
20911
20914
|
run: forward("app.set_access")
|
|
20912
20915
|
},
|
|
@@ -20919,7 +20922,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20919
20922
|
expectedGeneration: exports_external.number().int().min(0).describe("state generation from app_get"),
|
|
20920
20923
|
idempotencyKey: exports_external.string().min(1).max(200).describe("stable key for this one deliberate reset")
|
|
20921
20924
|
},
|
|
20922
|
-
surfaces: ["mcp", "cli"],
|
|
20925
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20923
20926
|
toolset: "apps",
|
|
20924
20927
|
run: forward("app.reset_state")
|
|
20925
20928
|
},
|
|
@@ -20933,7 +20936,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20933
20936
|
expectedGeneration: exports_external.number().int().min(0).describe("state generation from app_get"),
|
|
20934
20937
|
idempotencyKey: exports_external.string().min(1).max(200).describe("stable key for this one deliberate recovery")
|
|
20935
20938
|
},
|
|
20936
|
-
surfaces: ["mcp", "cli"],
|
|
20939
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20937
20940
|
toolset: "apps",
|
|
20938
20941
|
run: forward("app.restore_state")
|
|
20939
20942
|
},
|
|
@@ -20942,7 +20945,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20942
20945
|
title: "Archive an App",
|
|
20943
20946
|
description: "Remove an App from active serving while retaining its stable identity, deployment timeline, receipts, durable state, and release history for audit and recovery. Archive is a lifecycle-only transition.",
|
|
20944
20947
|
inputSchema: { appId: exports_external.string().describe("target App, app_…") },
|
|
20945
|
-
surfaces: ["mcp", "cli"],
|
|
20948
|
+
surfaces: ["computer-mcp", "cli"],
|
|
20946
20949
|
toolset: "apps",
|
|
20947
20950
|
run: forward("app.archive")
|
|
20948
20951
|
},
|
|
@@ -21595,6 +21598,7 @@ var POSITIONAL_FIELDS = {
|
|
|
21595
21598
|
app_fetch: ["appId", "path"],
|
|
21596
21599
|
app_request: ["appId", "path"],
|
|
21597
21600
|
computer_run_start: ["computerSessionId", "mode"],
|
|
21601
|
+
computer_run_suspend: ["runId"],
|
|
21598
21602
|
code_symbols: ["path"],
|
|
21599
21603
|
code_find_symbol: ["namePath", "path"],
|
|
21600
21604
|
code_references: ["namePath", "path"],
|
package/package.json
CHANGED