@lambdacurry/arbor 0.21.4 → 0.21.5

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 +35 -3
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -2247,6 +2247,7 @@ var attachments = sqliteTable("attachments", {
2247
2247
  r2Key: text("r2_key").notNull(),
2248
2248
  uploadedByProfileId: text("uploaded_by_profile_id").notNull().references(() => profiles.id),
2249
2249
  computerSessionId: text("computer_session_id").references(() => computerSessions.id),
2250
+ computerPath: text("computer_path"),
2250
2251
  idempotencyKey: text("idempotency_key"),
2251
2252
  idempotencyFingerprint: text("idempotency_fingerprint"),
2252
2253
  sha256: text("sha256"),
@@ -2307,6 +2308,17 @@ var artifactLivePreviewSurfaces = sqliteTable("artifact_live_preview_surfaces",
2307
2308
  }, (t) => ({
2308
2309
  threadUq: uniqueIndex("artifact_live_preview_surfaces_thread_uniq").on(t.threadId)
2309
2310
  }));
2311
+ var artifactFileSnapshots = sqliteTable("artifact_file_snapshots", {
2312
+ artifactId: text("artifact_id").primaryKey().references(() => artifacts.id, { onDelete: "cascade" }),
2313
+ sourceAttachmentId: text("source_attachment_id").notNull().references(() => attachments.id),
2314
+ previewAttachmentId: text("preview_attachment_id").notNull().references(() => attachments.id),
2315
+ capturedByProfileId: text("captured_by_profile_id").notNull().references(() => profiles.id),
2316
+ executionContextId: text("execution_context_id").notNull().references(() => executionContexts.id),
2317
+ capturedAt: ts("captured_at").notNull()
2318
+ }, (t) => ({
2319
+ sourceIdx: index("artifact_file_snapshots_source_attachment_idx").on(t.sourceAttachmentId),
2320
+ previewIdx: index("artifact_file_snapshots_preview_attachment_idx").on(t.previewAttachmentId)
2321
+ }));
2310
2322
  var artifactVersions = sqliteTable("artifact_versions", {
2311
2323
  id: text("id").primaryKey(),
2312
2324
  artifactId: text("artifact_id").notNull().references(() => artifacts.id),
@@ -18042,6 +18054,8 @@ var MCP_OUTPUT_SCHEMAS = {
18042
18054
  appBundles: exports_external.array(jsonObject).optional(),
18043
18055
  usedByApps: exports_external.array(jsonObject).optional(),
18044
18056
  livePreview: artifactLivePreview.nullable().optional(),
18057
+ snapshot: jsonObject.nullable().optional(),
18058
+ sourceLivePreview: jsonObject.nullable().optional(),
18045
18059
  threadId: id.nullable().optional(),
18046
18060
  changed: exports_external.boolean().optional()
18047
18061
  }),
@@ -18056,6 +18070,8 @@ var MCP_OUTPUT_SCHEMAS = {
18056
18070
  appBundles: exports_external.array(jsonObject),
18057
18071
  usedByApps: exports_external.array(jsonObject),
18058
18072
  livePreview: artifactLivePreview.nullable(),
18073
+ snapshot: jsonObject.nullable().optional(),
18074
+ sourceLivePreview: jsonObject.nullable().optional(),
18059
18075
  watching: exports_external.boolean(),
18060
18076
  url: exports_external.string()
18061
18077
  }),
@@ -19806,6 +19822,19 @@ var ACTION_DEFINITIONS = [
19806
19822
  verb: Array.isArray(input.patches) ? "patch" : "replace"
19807
19823
  })
19808
19824
  },
19825
+ {
19826
+ name: "set_artifact_snapshot",
19827
+ title: "Set an Artifact's stored file snapshot",
19828
+ description: "Pin exact exported source bytes plus a same-Thread PNG preview as a Computer-backed file Artifact's asleep/share face. This does not change its computer:// locator or create runtime.",
19829
+ inputSchema: {
19830
+ artifactId: exports_external.string().describe("the Computer-backed file Artifact, art_…"),
19831
+ sourceAttachmentId: exports_external.string().describe("exported .tldr Attachment, att_…"),
19832
+ previewAttachmentId: exports_external.string().describe("exported PNG Attachment, att_…")
19833
+ },
19834
+ surfaces: ["cli"],
19835
+ toolset: "artifacts",
19836
+ run: forward("artifact.setSnapshot")
19837
+ },
19809
19838
  {
19810
19839
  name: "set_artifact_live_preview",
19811
19840
  title: "Set an Artifact's live Thread surface",
@@ -20633,9 +20662,9 @@ var ACTION_DEFINITIONS = [
20633
20662
  {
20634
20663
  name: "artifact",
20635
20664
  title: "Create or edit an Artifact",
20636
- description: "Create or edit a durable versioned Artifact, bind its executable Thread Live Preview, or promote a Thread attachment; read artifact_get before changing it, while lifecycle/removal stay in artifact_transition and artifact_delete. Live-surface binding changes Artifact identity metadata, not source/version content.",
20665
+ description: "Create or edit a durable versioned Artifact, bind its executable Thread Live Preview, set a Computer-file asleep/share snapshot, or promote a Thread attachment; read artifact_get before changing it, while lifecycle/removal stay in artifact_transition and artifact_delete. Live-surface binding changes Artifact identity metadata, not source/version content.",
20637
20666
  inputSchema: {
20638
- verb: exports_external.enum(["create", "edit", "set_live_preview", "promote_attachment"]).describe("which artifact move"),
20667
+ verb: exports_external.enum(["create", "edit", "set_live_preview", "set_snapshot", "promote_attachment"]).describe("which artifact move"),
20639
20668
  title: exports_external.string().optional().describe("create: the artifact's title"),
20640
20669
  kind: exports_external.enum(["doc", "table", "diagram", "html", "file"]).optional().describe("create: structural kind (default file). doc/table/diagram/html are editable text"),
20641
20670
  type: exports_external.string().optional().describe("create: semantic type, e.g. decision|summary|plan|markdown|table|research-brief"),
@@ -20646,11 +20675,13 @@ var ACTION_DEFINITIONS = [
20646
20675
  sourceThreadId: exports_external.string().optional().describe("create: the thread it came from"),
20647
20676
  computerSessionId: exports_external.string().optional().describe("create: the attached computer session that produced it, cms_…"),
20648
20677
  sourceContributionIds: exports_external.array(exports_external.string()).optional().describe("create: contributions it distills"),
20649
- artifactId: exports_external.string().optional().describe("edit/set_live_preview: the Artifact, art_…"),
20678
+ artifactId: exports_external.string().optional().describe("edit/set_live_preview/set_snapshot: the Artifact, art_…"),
20650
20679
  threadId: exports_external.string().optional().describe("set_live_preview: the configured Thread Live Preview, thr_…; omit to clear the binding"),
20651
20680
  baseVersion: exports_external.number().optional().describe("edit: the version you READ (from get/create) — stale base is rejected with the current source"),
20652
20681
  patches: exports_external.array(exports_external.object({ old: exports_external.string(), new: exports_external.string() })).optional().describe("edit: exact-match hunks applied in order, atomically; each old must match exactly once"),
20653
20682
  note: exports_external.string().optional().describe("edit: one-line summary of what changed"),
20683
+ sourceAttachmentId: exports_external.string().optional().describe("set_snapshot: exported .tldr Attachment, att_…"),
20684
+ previewAttachmentId: exports_external.string().optional().describe("set_snapshot: exported PNG Attachment, att_…"),
20654
20685
  attachmentId: exports_external.string().optional().describe("promote_attachment: the upload, att_…")
20655
20686
  },
20656
20687
  surfaces: ["mcp"],
@@ -20659,6 +20690,7 @@ var ACTION_DEFINITIONS = [
20659
20690
  create: "artifact.create",
20660
20691
  edit: "artifact.edit",
20661
20692
  set_live_preview: "artifact.setLivePreview",
20693
+ set_snapshot: "artifact.setSnapshot",
20662
20694
  promote_attachment: "attachment.promote"
20663
20695
  }, (verb, input) => verb === "edit" ? { ...input, verb: Array.isArray(input.patches) ? "patch" : "replace" } : input)
20664
20696
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.21.4",
3
+ "version": "0.21.5",
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",