@lambdacurry/arbor 0.21.25 → 0.21.27

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 +36 -12
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -17403,7 +17403,7 @@ var computerRunPublication = exports_external.looseObject({
17403
17403
  remoteRef: exports_external.string().optional()
17404
17404
  });
17405
17405
  var computerRunRuntime = exports_external.looseObject({
17406
- state: exports_external.enum(["shared", "live", "suspended", "released"]),
17406
+ state: exports_external.enum(["shared", "live", "suspended", "releasing", "released"]),
17407
17407
  currentSnapshotId: id.nullable(),
17408
17408
  updatedAt: exports_external.string().nullable()
17409
17409
  });
@@ -19052,7 +19052,7 @@ ${ARBOR_FEEDBACK_GUIDANCE}
19052
19052
 
19053
19053
  1. ORIENT, CONFIGURE, AND AUTHORIZE. Start with get_computer(threadId) to inspect the effective inherited recipe, repository authorization, compatibility, and durable lineage. Use set_organization_computer, set_space_computer, set_topic_computer, or set_thread_computer only when the corresponding complete sparse layer must be replaced; use github_repositories then github_connect_repository to authorize repositories at the narrowest scope that should inherit them. If github_repositories looks stale, github_refresh_installation reconciles the cached inventory from GitHub. attach_computer mints durable protocol identity without starting a runtime; computer_open attaches as needed and starts or resumes the project environment. Each returned repository entry includes verified root instruction pointers when that repo has an AGENTS.md: read surfaced repository instructions before substantial edits or verification, then check for a nearer nested AGENTS.md once the target path is known. Repo-local instructions/scripts/config beat guessed formatter, test, lint, or build commands.
19054
19054
  2. READ THE CAPABILITIES CARD, NOT THE BACKEND. computer_open and computer_status describe the live PARENT Thread Computer and return the exact computerSessionId for parent filesystem, command, checkpoint, Preview, bundle, and stop operations. computer_status does not establish isolated Run activity; use computer_run_receipt(runId) and computer_process_read for Run-owned work. Command-line utilities, including Git and package managers, run through computer_exec; check unfamiliar binaries with command -v.
19055
- 3. ONE RUN PER TASK. A write Run defaults to an isolated execution environment with its own filesystem, processes, ports, and /tmp while preserving /workspace paths; a read Run shares the parent. Pass runId to Run-aware tools. If a response is lost, recover the durable operation/process identity from computer_run_receipt and read it before retrying. Once every operation is settled, computer_run_suspend publishes the exact workspace and releases the provider during an external wait; the next Run-aware operation restores that checkpoint under the same runId automatically. Suspension refuses active processes or unsettled outcomes and never replays unknown work, so reconcile process and Git/publication evidence first. An isolated local commit or Preview is not Git publication; push coherent work and prove it with computer_repo_work_status before computer_run_finish destroys the final placement. discard=true is the explicit choice to destroy proven non-durable work.
19055
+ 3. ONE RUN PER TASK. A write Run defaults to an isolated execution environment with its own filesystem, processes, ports, and /tmp while preserving /workspace paths; a read Run shares the parent. Pass runId to Run-aware tools. If a response is lost, recover the durable operation/process identity from computer_run_receipt and read it before retrying. Once every operation is settled, computer_run_suspend publishes the exact workspace and releases the provider during an external wait; the next Run-aware operation restores that checkpoint under the same runId automatically. Suspension refuses active processes or unsettled outcomes and never replays unknown work, so reconcile process and Git/publication evidence first. An isolated local commit or Preview is not Git publication; push coherent work and prove it with computer_repo_work_status before computer_run_finish destroys the final placement. discard=true with outcome failed or cancelled is the explicit choice to abandon unknown or proven non-durable work without replaying it.
19056
19056
  4. CHECKPOINT COMPLETE PARENT UNITS. computer_checkpoint advances immutable parent lineage after an intermediate complete unit; computer_stop performs the final checkpoint before teardown. An isolated Run Preview is durable review output, not adoption or a checkpoint. The internal provider-handle publication operations are not agent tools.
19057
19057
  5. GIT AND GITHUB ARE ORDINARY COMMANDS AFTER AUTHORIZATION. Clone, fetch, pull, push, and gh run through computer_exec using a connected human's just-in-time ambient GitHub identity. Credentials never enter argv, workspace files, Git config, checkpoints, Events, logs, or receipts. A restored Computer deliberately keeps the checkout age of its snapshot, so fetch/pull before trusting remote state.
19058
19058
  6. VERIFY, PREVIEW, AND EXPORT. computer_verify captures a public URL directly without opening a project runtime. computer_publish_preview preserves immutable static output from either the parent or an active isolated write Run. computer_export moves bounded files into durable Thread Attachments; for a computer:// file Artifact asleep face, export the exact locator path .tldr and a same-Thread PNG, then use artifact set_snapshot. computer_export itself does not call set_snapshot; place returned Markdown exactly where the media belongs and cite the matching attachment ids.
@@ -19768,12 +19768,12 @@ var ACTION_DEFINITIONS = [
19768
19768
  {
19769
19769
  name: "computer_run_finish",
19770
19770
  title: "Finish a run",
19771
- description: "Finish a Run with an explicit terminal outcome after its work is complete or intentionally abandoned. Ordinary finish succeeds unless Arbor proves isolated WRITE work non-durable; use discard=true only to intentionally destroy that proven non-durable work; publication can remain unknown, repeating the same outcome is a safe no-op, and the receipt preserves the durability assessment.",
19771
+ description: "Finish a Run with an explicit terminal outcome; ordinary finish refuses unsettled operations and proven non-durable isolated WRITE work. To abandon an unknown or non-durable disposable Run without replaying it, pass discard=true with outcome failed or cancelled; the receipt preserves unknown operation and durability evidence, and repeating the same outcome is a safe no-op.",
19772
19772
  inputSchema: {
19773
19773
  runId: exports_external.string().describe("the runId returned by computer_run_start, run_…"),
19774
19774
  outcome: exports_external.enum(["finished", "failed", "cancelled"]).optional().describe("terminal outcome; defaults to finished"),
19775
19775
  reason: exports_external.string().max(500).optional().describe("one factual line on how this unit of work ended, e.g. what shipped or what broke"),
19776
- discard: exports_external.boolean().optional().describe("explicitly allow teardown when Arbor proved current Run work is not durable")
19776
+ discard: exports_external.boolean().optional().describe("explicitly abandon unknown or proven non-durable Run work; unsettled operations also require outcome failed or cancelled")
19777
19777
  },
19778
19778
  surfaces: ["computer-mcp", "computer-cli"],
19779
19779
  toolset: "loop",
@@ -20281,6 +20281,7 @@ var ACTION_DEFINITIONS = [
20281
20281
  requestId: exports_external.string().describe("the request id, req_…"),
20282
20282
  type: exports_external.enum(CONTRIBUTION_TYPES).describe("the contribution type"),
20283
20283
  body: exports_external.string().min(1).describe("your response"),
20284
+ summary: exports_external.string().max(500).optional().describe("optional gist, 1-2 short sentences (HARD LIMIT 500 characters)"),
20284
20285
  confidence: exports_external.number().int().min(0).max(100).optional(),
20285
20286
  computerSessionId: exports_external.string().optional().describe("computer receipt to cite when the response came from computer work, cms_…"),
20286
20287
  attachmentIds: exports_external.array(exports_external.string()).max(10).optional().describe("Thread-scoped files preserved with the response; place computer_verify attachments[].markdown in the body for exact inline image placement")
@@ -22208,11 +22209,29 @@ var COMMAND_WORD_OVERRIDES = {
22208
22209
  feedback_thread_get: "feedback thread",
22209
22210
  feedback_status: "feedback status"
22210
22211
  };
22212
+ var MCP_COMMAND_ALIASES = {
22213
+ artifact_get: "get_artifact",
22214
+ artifact_transition: "transition_artifact",
22215
+ goal_delete: "delete_goal",
22216
+ goal_get: "get_goal",
22217
+ goal_list: "list_goals",
22218
+ notification_list: "notifications",
22219
+ space_invitation_list: "my_space_invites",
22220
+ space_leave: "leave_space",
22221
+ space_list_open: "list_open_spaces",
22222
+ watch_list: "watches"
22223
+ };
22211
22224
  function commandWords(action) {
22212
22225
  return COMMAND_WORD_OVERRIDES[action.name] ?? action.name.replace(/_/g, " ");
22213
22226
  }
22214
22227
  var CLI_ACTIONS = ACTIONS.filter((a) => a.surfaces.includes("cli") || a.surfaces.includes("computer-cli"));
22228
+ var BY_ACTION_NAME = new Map(CLI_ACTIONS.map((action) => [action.name, action]));
22215
22229
  var BY_COMMAND = new Map(CLI_ACTIONS.map((a) => [commandWords(a), a]));
22230
+ for (const [alias2, actionName] of Object.entries(MCP_COMMAND_ALIASES)) {
22231
+ const action = BY_ACTION_NAME.get(actionName);
22232
+ if (action)
22233
+ BY_COMMAND.set(alias2, action);
22234
+ }
22216
22235
  var MAX_WORDS = Math.max(1, ...CLI_ACTIONS.map((a) => commandWords(a).split(" ").length));
22217
22236
  var POSITIONAL_FIELDS = {
22218
22237
  contribute_arbor_feedback: ["body"],
@@ -22296,8 +22315,11 @@ function matchCommand(positionals) {
22296
22315
  }
22297
22316
  return;
22298
22317
  }
22299
- function toolNameAlias(action) {
22300
- return action.name.includes("_") ? action.name : "";
22318
+ function toolNameAliases(action) {
22319
+ return [
22320
+ ...action.name.includes("_") ? [action.name] : [],
22321
+ ...Object.entries(MCP_COMMAND_ALIASES).filter(([, actionName]) => actionName === action.name).map(([alias2]) => alias2)
22322
+ ];
22301
22323
  }
22302
22324
  function helpLine(action) {
22303
22325
  const positionals = positionalSpecs(action);
@@ -22307,8 +22329,8 @@ function helpLine(action) {
22307
22329
  const token = f.kind === "boolean" ? `--${f.flag}` : `--${f.flag} <>`;
22308
22330
  return f.required ? token : `[${token}]`;
22309
22331
  }).join(" ");
22310
- const alias2 = toolNameAlias(action);
22311
- const head = ` ${commandWords(action)}${alias2 ? ` (${alias2})` : ""}${args}${flags ? ` ${flags}` : ""}`;
22332
+ const aliases = toolNameAliases(action);
22333
+ const head = ` ${commandWords(action)}${aliases.length ? ` (${aliases.join(", ")})` : ""}${args}${flags ? ` ${flags}` : ""}`;
22312
22334
  return `${head}
22313
22335
  ${action.description}`;
22314
22336
  }
@@ -22347,11 +22369,13 @@ A single bare argument fills --${primary.flag} (e.g. \`arbor ${commandWords(acti
22347
22369
  const explicitNote = explicitPositionals.length > 0 ? `
22348
22370
 
22349
22371
  Bare arguments fill ${explicitPositionals.map((spec) => `--${spec.flag}`).join(" then ")}; the equivalent flags remain accepted.` : "";
22350
- const alias2 = toolNameAlias(action);
22351
- const aliasNote = alias2 ? `
22372
+ const aliases = toolNameAliases(action);
22373
+ const aliasNote = aliases.length === 1 ? `
22374
+
22375
+ Alias: \`arbor ${aliases[0]}\` (the tool-name form) resolves to this same command.` : aliases.length > 1 ? `
22352
22376
 
22353
- Alias: \`arbor ${alias2}\` (the tool-name form) resolves to this same command.` : "";
22354
- const heading = `${commandWords(action)}${alias2 ? ` (alias: ${alias2})` : ""}`;
22377
+ Aliases: ${aliases.map((alias2) => `\`arbor ${alias2}\``).join(", ")} (tool-name forms) resolve to this same command.` : "";
22378
+ const heading = `${commandWords(action)}${aliases.length === 1 ? ` (alias: ${aliases[0]})` : aliases.length > 1 ? ` (aliases: ${aliases.join(", ")})` : ""}`;
22355
22379
  const waitLines = action.name === "computer_exec" ? [
22356
22380
  " --no-wait [<boolean>] [optional] — return a running processId immediately instead of polling computer_process_read"
22357
22381
  ] : [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.21.25",
3
+ "version": "0.21.27",
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",