@lambdacurry/arbor 0.21.24 → 0.21.26

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 +13 -8
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -2434,6 +2434,7 @@ var appBundles = sqliteTable("app_bundles", {
2434
2434
  capabilityRequirements: text("capability_requirements", { mode: "json" }).$type().notNull().default([]),
2435
2435
  runtimeConfigRequirements: text("runtime_config_requirements", { mode: "json" }).$type().notNull().default([]),
2436
2436
  protectedIngress: text("protected_ingress", { mode: "json" }).$type().notNull().default([]),
2437
+ roomEntrypoint: text("room_entrypoint", { mode: "json" }).$type(),
2437
2438
  stateSchemaVersion: integer("state_schema_version").notNull().default(0),
2438
2439
  stateCompatibleFrom: integer("state_compatible_from").notNull().default(0),
2439
2440
  stateCompatibleThrough: integer("state_compatible_through").notNull().default(0),
@@ -2493,6 +2494,7 @@ var apps = sqliteTable("apps", {
2493
2494
  runtimeHealth: text("runtime_health").$type().notNull().default("unknown"),
2494
2495
  runtimeHealthUpdatedAt: ts("runtime_health_updated_at"),
2495
2496
  stateMode: text("state_mode").$type().notNull(),
2497
+ roomMode: text("room_mode").$type().notNull().default("none"),
2496
2498
  stateIdentity: text("state_identity").notNull(),
2497
2499
  stateGeneration: integer("state_generation").notNull().default(0),
2498
2500
  pendingStateOperationId: text("pending_state_reset_id"),
@@ -17401,7 +17403,7 @@ var computerRunPublication = exports_external.looseObject({
17401
17403
  remoteRef: exports_external.string().optional()
17402
17404
  });
17403
17405
  var computerRunRuntime = exports_external.looseObject({
17404
- state: exports_external.enum(["shared", "live", "suspended", "released"]),
17406
+ state: exports_external.enum(["shared", "live", "suspended", "releasing", "released"]),
17405
17407
  currentSnapshotId: id.nullable(),
17406
17408
  updatedAt: exports_external.string().nullable()
17407
17409
  });
@@ -19050,7 +19052,7 @@ ${ARBOR_FEEDBACK_GUIDANCE}
19050
19052
 
19051
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.
19052
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.
19053
- 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.
19054
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.
19055
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.
19056
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.
@@ -19766,12 +19768,12 @@ var ACTION_DEFINITIONS = [
19766
19768
  {
19767
19769
  name: "computer_run_finish",
19768
19770
  title: "Finish a run",
19769
- 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.",
19770
19772
  inputSchema: {
19771
19773
  runId: exports_external.string().describe("the runId returned by computer_run_start, run_…"),
19772
19774
  outcome: exports_external.enum(["finished", "failed", "cancelled"]).optional().describe("terminal outcome; defaults to finished"),
19773
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"),
19774
- 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")
19775
19777
  },
19776
19778
  surfaces: ["computer-mcp", "computer-cli"],
19777
19779
  toolset: "loop",
@@ -20028,6 +20030,7 @@ var ACTION_DEFINITIONS = [
20028
20030
  });
20029
20031
  }
20030
20032
  }).optional().describe("externally routable protected App paths; v1 supports one MCP route using Arbor OAuth and injects no caller principal into App code"),
20033
+ roomEntrypoint: exports_external.object({ className: exports_external.literal("Room"), protocol: exports_external.literal("websocket") }).optional().describe("declare that this fetch bundle also exports class Room for ephemeral App rooms (AD-295); requires no runtime config and changes the bundle's content digest"),
20031
20034
  idempotencyKey: exports_external.string().min(1).max(200).describe("stable key for this one logical bundle publication")
20032
20035
  },
20033
20036
  surfaces: ["computer-mcp", "computer-cli"],
@@ -21319,7 +21322,8 @@ var ACTION_DEFINITIONS = [
21319
21322
  slug: exports_external.string().min(1).max(59).describe("stable DNS label used by app-<slug>.arborthreads.dev"),
21320
21323
  access: exports_external.enum(["space", "public"]).describe("space requires membership; public is anonymous at the gateway"),
21321
21324
  discovery: exports_external.enum(["unlisted", "listed"]).nullable().optional().describe("public Apps only; default unlisted"),
21322
- stateMode: exports_external.enum(["none", "durable"]).describe("durable allocates Space-only isolated facet SQLite; deployment never resets it")
21325
+ stateMode: exports_external.enum(["none", "durable"]).describe("durable allocates Space-only isolated facet SQLite; deployment never resets it"),
21326
+ roomMode: exports_external.enum(["none", "ephemeral"]).optional().describe("ephemeral opts a public stateMode:none App into bounded TTL-scoped anonymous rooms (AD-295); default none keeps every room surface off")
21323
21327
  },
21324
21328
  surfaces: ["computer-mcp", "cli"],
21325
21329
  toolset: "apps",
@@ -21435,12 +21439,13 @@ var ACTION_DEFINITIONS = [
21435
21439
  },
21436
21440
  {
21437
21441
  name: "app_update",
21438
- title: "Edit an App's title or description",
21439
- description: "Change the human-facing metadata a reader sees before opening an App. The description is the one line that answers 'what is this for'; keep it factual and current, because the directory and the App page both lead with it. Slug is deliberately not editable — the URL is the App's stable identity. Access, lifecycle, release, and state each have their own operation.",
21442
+ title: "Edit an App's metadata or room mode",
21443
+ description: "Change the human-facing metadata a reader sees before opening an App, or toggle its ephemeral-room capability. The description is the one line that answers 'what is this for'; keep it factual and current, because the directory and the App page both lead with it. Slug is deliberately not editable — the URL is the App's stable identity. Access, lifecycle, release, and state each have their own operation.",
21440
21444
  inputSchema: {
21441
21445
  appId: exports_external.string().describe("target App, app_…"),
21442
21446
  title: exports_external.string().min(1).max(160).optional().describe("short factual App title"),
21443
- description: exports_external.string().min(1).max(200).optional().describe("one line of what this App is for")
21447
+ description: exports_external.string().min(1).max(200).optional().describe("one line of what this App is for"),
21448
+ roomMode: exports_external.enum(["none", "ephemeral"]).optional().describe("ephemeral requires a public stateMode:none App; rooms serve once the active release declares a Room entrypoint, and none turns the surface off")
21444
21449
  },
21445
21450
  surfaces: ["cli"],
21446
21451
  toolset: "apps",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.21.24",
3
+ "version": "0.21.26",
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",