@lambdacurry/arbor 0.3.2 → 0.3.4

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 +41 -13
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -1607,6 +1607,7 @@ var contributions = sqliteTable("contributions", {
1607
1607
  links: text("links", { mode: "json" }).$type(),
1608
1608
  mentions: text("mentions", { mode: "json" }).$type(),
1609
1609
  attachmentIds: text("attachment_ids", { mode: "json" }).$type(),
1610
+ editedAt: ts("edited_at"),
1610
1611
  createdAt: ts("created_at").notNull()
1611
1612
  }, (t) => ({ threadIdx: index("contributions_thread_idx").on(t.threadId) }));
1612
1613
  var reviews = sqliteTable("reviews", {
@@ -1841,7 +1842,13 @@ var recallFts = sqliteTable("recall_fts", {
1841
1842
  });
1842
1843
 
1843
1844
  // ../core/src/retrieval/index-consumer.ts
1844
- var INDEX_ON = new Set(["contribution.added", "comment.added", "comment.edited", "artifact.created"]);
1845
+ var INDEX_ON = new Set([
1846
+ "contribution.added",
1847
+ "contribution.edited",
1848
+ "comment.added",
1849
+ "comment.edited",
1850
+ "artifact.created"
1851
+ ]);
1845
1852
  // ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
1846
1853
  var exports_external = {};
1847
1854
  __export(exports_external, {
@@ -9438,8 +9445,8 @@ function ko_default() {
9438
9445
  };
9439
9446
  }
9440
9447
  // ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/lt.js
9441
- var capitalizeFirstCharacter = (text2) => {
9442
- return text2.charAt(0).toUpperCase() + text2.slice(1);
9448
+ var capitalizeFirstCharacter = (text3) => {
9449
+ return text3.charAt(0).toUpperCase() + text3.slice(1);
9443
9450
  };
9444
9451
  function getUnitTypeFromNumber(number2) {
9445
9452
  const abs = Math.abs(number2);
@@ -16168,6 +16175,28 @@ var ACTIONS = [
16168
16175
  surfaces: ["mcp", "cli"],
16169
16176
  run: forward("contribution.add")
16170
16177
  },
16178
+ {
16179
+ name: "edit",
16180
+ title: "Edit your contribution",
16181
+ description: "Edit the BODY of your own contribution (AD-132 — editable-but-audited: the displayed text changes, an 'edited' marker appears, and the event log keeps the previous body). Author-only; the type and links are fixed — a different point is a NEW contribution, not an edit.",
16182
+ inputSchema: {
16183
+ contributionId: exports_external.string().describe("your contribution's id, con_…"),
16184
+ body: exports_external.string().min(1).describe("the replacement markdown body")
16185
+ },
16186
+ surfaces: ["mcp", "cli"],
16187
+ run: forward("contribution.update")
16188
+ },
16189
+ {
16190
+ name: "edit_comment",
16191
+ title: "Edit your comment",
16192
+ description: "Edit the body of your own comment (editable-but-audited, AD-060/132 — an 'edited' marker appears; the event log keeps the trail). Author-only.",
16193
+ inputSchema: {
16194
+ commentId: exports_external.string().describe("your comment's id, cmt_…"),
16195
+ body: exports_external.string().min(1).describe("the replacement text")
16196
+ },
16197
+ surfaces: ["mcp", "cli"],
16198
+ run: forward("comment.update")
16199
+ },
16171
16200
  {
16172
16201
  name: "stamp",
16173
16202
  title: "Stamp (review) a contribution",
@@ -16268,11 +16297,10 @@ var ACTIONS = [
16268
16297
  },
16269
16298
  {
16270
16299
  name: "request",
16271
- title: "Raise a request in a thread",
16272
- description: "Ask others for review or critique — name targets (an inbox item each) or leave it open (the thread board). Use this when you need someone's input to move forward; completion is software-computed from their responses (first | quorum(n) | all-targets | deadline | explicit).",
16300
+ title: "Ask for a review",
16301
+ description: "Ask others to review work in a thread — name targets (an inbox item each) or leave it open (the thread board). Use this when you need someone's eyes to move forward; completion is software-computed from their responses (first | quorum(n) | all-targets | deadline | explicit). Review-only (AD-130): a review placed on the asked-about contribution counts as a response.",
16273
16302
  inputSchema: {
16274
16303
  threadId: exports_external.string().describe("the thread the ask is in, thr_…"),
16275
- kind: exports_external.enum(["request-review", "request-critique"]).describe("the kind of ask"),
16276
16304
  requestedAction: exports_external.string().optional().describe("a one-line 'what'"),
16277
16305
  aboutContributionId: exports_external.string().optional().describe("card-scoped ask: the contribution this is about, con_… (must be in the thread; badges that card)"),
16278
16306
  targetProfileIds: exports_external.array(exports_external.string()).optional().describe("targeted recipients (omit → open board)"),
@@ -16687,14 +16715,14 @@ function acceptedFlags(inputSchema) {
16687
16715
  return out;
16688
16716
  }
16689
16717
  function readTextSource(src) {
16690
- let text2;
16718
+ let text3;
16691
16719
  try {
16692
- text2 = readFileSync2(src === "-" ? 0 : src, "utf8");
16720
+ text3 = readFileSync2(src === "-" ? 0 : src, "utf8");
16693
16721
  } catch (e) {
16694
16722
  const where = src === "-" ? "stdin" : src;
16695
16723
  throw new UsageError(`could not read ${where}: ${e instanceof Error ? e.message : String(e)}`);
16696
16724
  }
16697
- return text2.replace(/[\r\n]+$/, "");
16725
+ return text3.replace(/[\r\n]+$/, "");
16698
16726
  }
16699
16727
  function flagsForSchema(inputSchema) {
16700
16728
  return Object.entries(inputSchema).map(([field, raw]) => {
@@ -16741,10 +16769,10 @@ function buildInput(inputSchema, flags) {
16741
16769
  break;
16742
16770
  }
16743
16771
  case "array": {
16744
- const text2 = String(raw).trim();
16745
- if (text2.startsWith("[")) {
16772
+ const text3 = String(raw).trim();
16773
+ if (text3.startsWith("[")) {
16746
16774
  try {
16747
- const parsed = JSON.parse(text2);
16775
+ const parsed = JSON.parse(text3);
16748
16776
  if (Array.isArray(parsed)) {
16749
16777
  input[spec.field] = parsed;
16750
16778
  break;
@@ -16753,7 +16781,7 @@ function buildInput(inputSchema, flags) {
16753
16781
  throw new UsageError(`--${spec.flag} looks like JSON but failed to parse — check the quoting`);
16754
16782
  }
16755
16783
  }
16756
- input[spec.field] = text2.split(",").map((s) => s.trim()).filter(Boolean);
16784
+ input[spec.field] = text3.split(",").map((s) => s.trim()).filter(Boolean);
16757
16785
  break;
16758
16786
  }
16759
16787
  case "boolean":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "The Arbor CLI \u2014 a shared workspace for people and agents. The human + headless-agent write path over Arbor's guarded operation surface.",
5
5
  "type": "module",
6
6
  "bin": {