@lambdacurry/arbor 0.13.9 → 0.13.10

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 +53 -7
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -1810,6 +1810,9 @@ var appBundles = sqliteTable("app_bundles", {
1810
1810
  modules: text("modules", { mode: "json" }).$type().notNull(),
1811
1811
  staticAssets: text("static_assets", { mode: "json" }).$type().notNull(),
1812
1812
  buildProvenance: text("build_provenance", { mode: "json" }).$type(),
1813
+ sourceProvenance: text("source_provenance", {
1814
+ mode: "json"
1815
+ }).$type(),
1813
1816
  runtimeEntrypoint: text("runtime_entrypoint").$type().notNull(),
1814
1817
  capabilityRequirements: text("capability_requirements", { mode: "json" }).$type().notNull().default([]),
1815
1818
  stateSchemaVersion: integer("state_schema_version").notNull().default(0),
@@ -16534,6 +16537,29 @@ var checkpoint = exports_external.looseObject({
16534
16537
  backup: exports_external.string(),
16535
16538
  published: jsonObject
16536
16539
  });
16540
+ var computerProfile = exports_external.looseObject({
16541
+ id: exports_external.string(),
16542
+ version: exports_external.number(),
16543
+ shell: exports_external.string(),
16544
+ runtimes: exports_external.looseObject({ bun: exports_external.string() }),
16545
+ tools: exports_external.array(exports_external.string()),
16546
+ recommendedEditingPrimitive: exports_external.string()
16547
+ });
16548
+ var appBundleSourceProvenance = exports_external.looseObject({
16549
+ entryPath: exports_external.string(),
16550
+ artifactVersionSha256: exports_external.string(),
16551
+ entryPathSha256: exports_external.string(),
16552
+ git: exports_external.looseObject({
16553
+ repositoryRoot: exports_external.string(),
16554
+ head: exports_external.string().nullable(),
16555
+ branch: exports_external.string().nullable(),
16556
+ dirty: exports_external.boolean(),
16557
+ trackedChanges: exports_external.number().int().min(0),
16558
+ untrackedFiles: exports_external.number().int().min(0),
16559
+ entryPathTracked: exports_external.boolean()
16560
+ }).nullable(),
16561
+ warnings: exports_external.array(exports_external.string())
16562
+ });
16537
16563
  var profile2 = exports_external.looseObject({
16538
16564
  id,
16539
16565
  kind: exports_external.string(),
@@ -16720,6 +16746,10 @@ var paged = (key, item) => exports_external.looseObject({
16720
16746
  nextCursor: exports_external.string().optional()
16721
16747
  });
16722
16748
  var MCP_OUTPUT_SCHEMAS = {
16749
+ server_info: exports_external.looseObject({
16750
+ serverVersion: exports_external.string(),
16751
+ deployment: exports_external.looseObject({ id: exports_external.string(), sourceRevision: exports_external.string().nullable(), deployedAt: timestamp }).nullable()
16752
+ }),
16723
16753
  recall: exports_external.object({ result: exports_external.array(recallHit) }),
16724
16754
  contribute: exports_external.looseObject({
16725
16755
  contributionId: id,
@@ -17011,6 +17041,7 @@ var MCP_OUTPUT_SCHEMAS = {
17011
17041
  computerId: id,
17012
17042
  computerSessionId: id,
17013
17043
  backend: exports_external.enum(["worker-shell", "container"]),
17044
+ profile: computerProfile.nullable(),
17014
17045
  startingSnapshot: snapshot.nullable(),
17015
17046
  materialized: checkpoint.nullable(),
17016
17047
  runtime: jsonObject
@@ -17020,13 +17051,15 @@ var MCP_OUTPUT_SCHEMAS = {
17020
17051
  stderr: exports_external.string().optional(),
17021
17052
  exitCode: exports_external.number().optional(),
17022
17053
  jobId: exports_external.string().optional(),
17023
- status: exports_external.string().optional()
17054
+ status: exports_external.string().optional(),
17055
+ strict: exports_external.boolean()
17024
17056
  }),
17025
17057
  computer_status: exports_external.looseObject({
17026
17058
  ok: exports_external.boolean().optional(),
17027
17059
  status: exports_external.string().optional(),
17028
17060
  backend: exports_external.string().optional(),
17029
- processes: exports_external.array(jsonObject).optional()
17061
+ processes: exports_external.array(jsonObject).optional(),
17062
+ profile: computerProfile.nullable()
17030
17063
  }),
17031
17064
  computer_verify: exports_external.looseObject({
17032
17065
  passed: exports_external.literal(true),
@@ -17125,6 +17158,8 @@ var MCP_OUTPUT_SCHEMAS = {
17125
17158
  assetCount: exports_external.number().optional(),
17126
17159
  byteCount: exports_external.number().optional(),
17127
17160
  buildProvenance: jsonObject,
17161
+ sourceProvenance: appBundleSourceProvenance.nullable(),
17162
+ warnings: exports_external.array(exports_external.string()),
17128
17163
  replayed: exports_external.boolean()
17129
17164
  }),
17130
17165
  computer_stop: exports_external.looseObject({ checkpoint, stopped: jsonObject })
@@ -17183,6 +17218,7 @@ var idempotentOpenWorld = {
17183
17218
  openWorldHint: true
17184
17219
  };
17185
17220
  var MCP_TOOL_ANNOTATIONS = {
17221
+ server_info: readOnly,
17186
17222
  recall: readOnly,
17187
17223
  contribute: additive,
17188
17224
  edit: additive,
@@ -17319,6 +17355,15 @@ var PAGINATION_INPUT = {
17319
17355
  cursor: exports_external.string().optional().describe("opaque cursor from a prior response's nextCursor (use with --limit)")
17320
17356
  };
17321
17357
  var ACTION_DEFINITIONS = [
17358
+ {
17359
+ name: "server_info",
17360
+ title: "Inspect Arbor server version",
17361
+ description: "READ ONLY: Return the Arbor release version and current Cloudflare deployment identity so a client can distinguish a fresh server from a cached tool catalog. This cannot modify Arbor, Computer, App, access, or durable state.",
17362
+ inputSchema: {},
17363
+ surfaces: ["mcp", "cli", "computer-mcp", "computer-cli"],
17364
+ toolset: "structure",
17365
+ run: forward("server.info")
17366
+ },
17322
17367
  {
17323
17368
  name: "github_repositories",
17324
17369
  title: "List installed GitHub repositories",
@@ -17588,7 +17633,7 @@ var ACTION_DEFINITIONS = [
17588
17633
  {
17589
17634
  name: "computer_open",
17590
17635
  title: "Open a Thread computer",
17591
- description: "Open or resume this Thread's project environment for filesystem or command work. Returns computerSessionId; pass it unchanged to later Computer tools and to Contributions or responses produced from the work.",
17636
+ description: "Open or resume this Thread's project environment for filesystem or command work. Returns computerSessionId and, when a declared container profile is selected, its guaranteed shell/runtimes/tools/editing primitive; pass the session id unchanged to later Computer tools and to Contributions or responses produced from the work.",
17592
17637
  inputSchema: {
17593
17638
  threadId: exports_external.string().describe("the Arbor Thread whose stable computer to open, thr_…"),
17594
17639
  vcpus: exports_external.number().int().min(1).max(4).optional().describe("optional container vCPU request"),
@@ -17601,13 +17646,14 @@ var ACTION_DEFINITIONS = [
17601
17646
  {
17602
17647
  name: "computer_exec",
17603
17648
  title: "Run a command",
17604
- description: "Run a bounded command in an opened Thread computer, normally from /workspace. Use background only for the container backend; worker-shell deliberately serializes mutations and rejects long-lived processes.",
17649
+ description: "Run one bounded logical operation in an opened Thread computer, normally from /workspace. Strict Bash semantics are ON by default: an early command failure or failed pipeline makes the execution nonzero, while explicit handling such as `cmd || fallback` still works. Set strict=false only for an intentional best-effort script. Use background only for the container backend; worker-shell deliberately serializes mutations and rejects long-lived processes.",
17605
17650
  inputSchema: {
17606
17651
  computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
17607
17652
  command: exports_external.string().min(1).describe("the shell command to run"),
17608
17653
  cwd: exports_external.string().optional().describe("working directory under /workspace"),
17609
17654
  timeout: exports_external.number().int().min(1000).max(1800000).optional().describe("timeout in milliseconds, from 1,000 through 1,800,000"),
17610
- background: exports_external.boolean().optional().describe("start a container process and return its pid")
17655
+ background: exports_external.boolean().optional().describe("start a container process and return its pid"),
17656
+ 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")
17611
17657
  },
17612
17658
  surfaces: ["computer-mcp", "computer-cli"],
17613
17659
  toolset: "loop",
@@ -17616,7 +17662,7 @@ var ACTION_DEFINITIONS = [
17616
17662
  {
17617
17663
  name: "computer_status",
17618
17664
  title: "Inspect a computer",
17619
- description: "Read live Currybox process and runtime status for an opened computer. This is ephemeral provider state; use get_computer on the Arbor surface for durable config and snapshot lineage.",
17665
+ description: "READ ONLY: Read live Currybox process/runtime status and the declared container profile contract for an opened computer. This cannot modify files, processes, checkpoints, or Thread state; use get_computer on the Arbor surface for durable config and snapshot lineage.",
17620
17666
  inputSchema: {
17621
17667
  computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…")
17622
17668
  },
@@ -17775,7 +17821,7 @@ var ACTION_DEFINITIONS = [
17775
17821
  {
17776
17822
  name: "computer_publish_app_bundle",
17777
17823
  title: "Publish an immutable AppBundle",
17778
- description: "After a Bun container build is green, freeze one Worker entry module plus optional static assets from this Thread computer into a content-addressed AppBundle sourced from an ArtifactVersion. Use the returned bundleId with app_deploy; uploads complete and verify before Arbor publishes the bundle manifest, and retries require the same idempotencyKey.",
17824
+ description: "After a Bun container build is green, verify that entryPath bytes exactly match the referenced ArtifactVersion, capture source hashes plus Git/workspace provenance, then freeze the Worker module and optional static assets into a content-addressed AppBundle. A mismatch is rejected; dirty or untracked source is allowed but returned as an explicit warning. Use the returned bundleId with app_deploy; retries require the same idempotencyKey.",
17779
17825
  inputSchema: {
17780
17826
  computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
17781
17827
  artifactVersionId: exports_external.string().describe("the source ArtifactVersion, artv_…"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.13.9",
3
+ "version": "0.13.10",
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",