@lambdacurry/arbor 0.20.5 → 0.20.7

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 +28 -14
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -2200,6 +2200,8 @@ var watches = sqliteTable("watches", {
2200
2200
  }));
2201
2201
  // ../core/src/ops/computer-run.ts
2202
2202
  var TERMINAL = new Set(["finished", "failed", "cancelled"]);
2203
+ var RUN_LIFECYCLE_TYPES = new Set(["run.started", "run.finished", "run.failed", "run.cancelled"]);
2204
+ var COMPUTER_RUN_ACTIVITY_LABEL_MAX = 120;
2203
2205
 
2204
2206
  // ../core/src/ops/computer.ts
2205
2207
  var MAX_COMPUTER_REPOSITORIES = 10;
@@ -16800,7 +16802,11 @@ var computerRunReceipt = exports_external.looseObject({
16800
16802
  threadId: id,
16801
16803
  computerId: id,
16802
16804
  computerSessionId: id,
16803
- actor: exports_external.looseObject({ profileId: id, executionContextId: id }),
16805
+ actor: exports_external.looseObject({
16806
+ profileId: id,
16807
+ executionContextId: id,
16808
+ displayName: exports_external.string().nullable()
16809
+ }),
16804
16810
  label: exports_external.string().nullable(),
16805
16811
  mode: exports_external.enum(["read", "write"]),
16806
16812
  execution: exports_external.enum(["shared", "isolated"]),
@@ -16813,6 +16819,13 @@ var computerRunReceipt = exports_external.looseObject({
16813
16819
  startedAt: exports_external.string(),
16814
16820
  endedAt: exports_external.string().nullable(),
16815
16821
  durationMs: exports_external.number().nullable(),
16822
+ activity: exports_external.array(exports_external.looseObject({
16823
+ type: exports_external.string(),
16824
+ at: exports_external.string(),
16825
+ label: exports_external.string().optional(),
16826
+ detail: exports_external.string().optional(),
16827
+ targetId: exports_external.string().optional()
16828
+ })),
16816
16829
  lifecycle: exports_external.array(exports_external.looseObject({ type: exports_external.string(), at: exports_external.string() }))
16817
16830
  });
16818
16831
  var computerCapabilityCard = exports_external.looseObject({
@@ -17731,10 +17744,10 @@ var MCP_TOOL_ANNOTATIONS = {
17731
17744
  create_topic: additive,
17732
17745
  topic_update: additive,
17733
17746
  create_thread: additive,
17734
- set_organization_computer: additive,
17735
- set_space_computer: additive,
17736
- set_topic_computer: additive,
17737
- set_thread_computer: additive,
17747
+ set_organization_computer: destructiveIdempotent,
17748
+ set_space_computer: destructiveIdempotent,
17749
+ set_topic_computer: destructiveIdempotent,
17750
+ set_thread_computer: destructiveIdempotent,
17738
17751
  attach_computer: additive,
17739
17752
  get_computer: readOnly,
17740
17753
  computer_inventory: readOnly,
@@ -18105,8 +18118,8 @@ var ACTION_DEFINITIONS = [
18105
18118
  },
18106
18119
  {
18107
18120
  name: "set_organization_computer",
18108
- title: "Set organization computer defaults",
18109
- 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.",
18121
+ title: "Replace organization computer defaults",
18122
+ description: "DESTRUCTIVE REPLACE: replace your organization's entire sparse computer-default layer without allocating runtime state. Any field omitted from this call is removed from this layer and falls back to provider defaults; Space, Topic, and Thread layers may override individual fields. Repeating the same full layer is idempotent.",
18110
18123
  inputSchema: {
18111
18124
  backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("default execution tier, or null to use worker-shell"),
18112
18125
  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"),
@@ -18119,8 +18132,8 @@ var ACTION_DEFINITIONS = [
18119
18132
  },
18120
18133
  {
18121
18134
  name: "set_space_computer",
18122
- title: "Set a Space computer",
18123
- description: "Replace a Space's sparse computer override without allocating anything. Omitted/null fields inherit organization defaults; the default backend is image-free worker-shell, and a reusable base materializes lazily only when needed.",
18135
+ title: "Replace a Space computer override",
18136
+ description: "DESTRUCTIVE REPLACE: replace this Space's entire sparse computer override without allocating anything. Any field omitted from this call is removed from the Space layer and inherits organization defaults; the default backend is image-free worker-shell, and a reusable base materializes lazily only when needed. Repeating the same full layer is idempotent.",
18124
18137
  inputSchema: {
18125
18138
  spaceId: exports_external.string().describe("the Space, spc_…"),
18126
18139
  backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
@@ -18134,8 +18147,8 @@ var ACTION_DEFINITIONS = [
18134
18147
  },
18135
18148
  {
18136
18149
  name: "set_topic_computer",
18137
- title: "Override a Topic computer",
18138
- description: "Replace a Topic's sparse computer override; omitted/null fields inherit Space/organization policy, and no runtime is allocated. A material change gets a semantic config key so the next attachment materializes matching state lazily.",
18150
+ title: "Replace a Topic computer override",
18151
+ description: "DESTRUCTIVE REPLACE: replace this Topic's entire sparse computer override. Any field omitted from this call is removed from the Topic layer and inherits Space/organization policy; no runtime is allocated. A material change gets a semantic config key so the next attachment materializes matching state lazily. Repeating the same full layer is idempotent.",
18139
18152
  inputSchema: {
18140
18153
  topicId: exports_external.string().describe("the Topic, top_…"),
18141
18154
  backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
@@ -18149,8 +18162,8 @@ var ACTION_DEFINITIONS = [
18149
18162
  },
18150
18163
  {
18151
18164
  name: "set_thread_computer",
18152
- title: "Override a Thread computer",
18153
- description: "Replace one Thread's sparse computer override. This is config only: the stable computer is still created lazily on first authorized collaborator attachment, and an existing computer cannot switch provider.",
18165
+ title: "Replace a Thread computer override",
18166
+ description: "DESTRUCTIVE REPLACE: replace this Thread's entire sparse computer override. Any field omitted from this call is removed from the Thread layer and inherits Topic/Space/organization policy. This is config only: the stable computer is still created lazily on first authorized collaborator attachment, and an existing computer cannot switch provider. Repeating the same full layer is idempotent.",
18154
18167
  inputSchema: {
18155
18168
  threadId: exports_external.string().describe("the Thread, thr_…"),
18156
18169
  backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
@@ -18229,7 +18242,7 @@ var ACTION_DEFINITIONS = [
18229
18242
  {
18230
18243
  name: "computer_run_receipt",
18231
18244
  title: "Read a run receipt",
18232
- description: "READ ONLY: read one run's compact receipt — its purpose, actor, computer session, the base snapshot it forked from, its workspace and execution placement, how it ended and why, how long it took, and its lifecycle events. This is the normal way to inspect a run you or someone else started, and it stays readable after the run is terminal. Arbor keeps no process state and no command output, so the receipt says what the protocol recorded, not what scrolled past in the shell.",
18245
+ description: "READ ONLY: read one run's compact receipt — its purpose, actor, computer session, base snapshot and starting Git projection, execution placement, meaningful activity, and terminal outcome. Background work may appear as distilled labels/outcomes, but Arbor keeps no raw command transcript or process output. The receipt stays readable after the Run is terminal.",
18233
18246
  inputSchema: {
18234
18247
  runId: exports_external.string().describe("the run to read, run_… (from computer_run_start or computer_runs)")
18235
18248
  },
@@ -18261,6 +18274,7 @@ var ACTION_DEFINITIONS = [
18261
18274
  cwd: exports_external.string().optional().describe("working directory under /workspace, or under the run"),
18262
18275
  timeout: exports_external.number().int().min(1000).max(1800000).optional().describe("timeout in milliseconds, from 1,000 through 1,800,000"),
18263
18276
  background: exports_external.boolean().optional().describe("start a container process and return its pid"),
18277
+ activityLabel: exports_external.string().min(1).max(COMPUTER_RUN_ACTIVITY_LABEL_MAX).optional().describe("short human-readable label for run-scoped background work; Arbor records this label instead of the raw command or output"),
18264
18278
  strict: exports_external.boolean().optional().describe("fail on the first unhandled command or pipeline failure; defaults to true, set false only for intentional best-effort execution")
18265
18279
  },
18266
18280
  surfaces: ["computer-mcp", "computer-cli"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.20.5",
3
+ "version": "0.20.7",
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",