@lambdacurry/arbor 0.21.0 → 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.
Files changed (2) hide show
  1. package/dist/arbor.js +44 -2
  2. 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(),
@@ -18081,6 +18095,12 @@ var MCP_OUTPUT_SCHEMAS = {
18081
18095
  durability: computerRunDurabilitySummary,
18082
18096
  status: exports_external.string()
18083
18097
  }),
18098
+ computer_run_suspend: exports_external.looseObject({
18099
+ runId: id,
18100
+ runtime: computerRunRuntime,
18101
+ replayed: exports_external.boolean(),
18102
+ snapshotId: id.nullable()
18103
+ }),
18084
18104
  computer_run_finish: exports_external.looseObject({
18085
18105
  status: exports_external.string(),
18086
18106
  replayed: exports_external.boolean(),
@@ -18464,6 +18484,15 @@ var OUTPUT_SHAPERS = {
18464
18484
  ["status", run.status]
18465
18485
  ]);
18466
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
+ },
18467
18496
  computer_run_finish: (result) => {
18468
18497
  const run = record2(result.run) ?? {};
18469
18498
  return defined([
@@ -18642,6 +18671,7 @@ var MCP_TOOL_ANNOTATIONS = {
18642
18671
  computer_open: additive,
18643
18672
  computer_reprovision: destructiveIdempotent,
18644
18673
  computer_run_start: additive,
18674
+ computer_run_suspend: idempotent,
18645
18675
  computer_repo_work_status: readOnly,
18646
18676
  computer_run_finish: idempotent,
18647
18677
  computer_run_receipt: readOnly,
@@ -19242,6 +19272,17 @@ var ACTION_DEFINITIONS = [
19242
19272
  toolset: "loop",
19243
19273
  run: forward("computer_runtime.run_start")
19244
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
+ },
19245
19286
  {
19246
19287
  name: "computer_repo_work_status",
19247
19288
  title: "Inspect repository finish state",
@@ -20138,7 +20179,7 @@ var ACTION_DEFINITIONS = [
20138
20179
  {
20139
20180
  name: "service_register",
20140
20181
  title: "Register a Computer lifecycle service",
20141
- 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.",
20142
20183
  inputSchema: {
20143
20184
  displayName: exports_external.string().min(1).describe("the service display name, e.g. Currybox lifecycle service"),
20144
20185
  spaceIds: exports_external.array(exports_external.string().min(1)).min(1).describe("Spaces whose Thread computers the service may maintain")
@@ -21557,6 +21598,7 @@ var POSITIONAL_FIELDS = {
21557
21598
  app_fetch: ["appId", "path"],
21558
21599
  app_request: ["appId", "path"],
21559
21600
  computer_run_start: ["computerSessionId", "mode"],
21601
+ computer_run_suspend: ["runId"],
21560
21602
  code_symbols: ["path"],
21561
21603
  code_find_symbol: ["namePath", "path"],
21562
21604
  code_references: ["namePath", "path"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.21.0",
3
+ "version": "0.21.1",
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",