@lambdacurry/arbor 0.3.3 → 0.3.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 +40 -11
  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);
@@ -16145,7 +16152,7 @@ var ACTIONS = [
16145
16152
  {
16146
16153
  name: "contribute",
16147
16154
  title: "Contribute to a thread",
16148
- description: "Add your own typed contribution (a claim, question, proposal, etc.) to a thread you're working in. This is how you put new substance on the record; attribution is server-resolved from your credential.",
16155
+ description: "Add your own typed contribution (a claim, question, proposal, etc.) to a thread you're working in. This is how you put new substance on the record; attribution is server-resolved from your credential. PUT REFERENCES IN THE BODY (AD-135): markdown links to PRs/Linear issues/urls and inline [label](#con_…) refs are scanned server-side into typed cites edges and render as smart pills — the separate links[] param is for non-prose rels (delivered-by/tracked-as) or link-only posts.",
16149
16156
  inputSchema: {
16150
16157
  threadId: exports_external.string().describe("the thread id, e.g. thr_…"),
16151
16158
  type: exports_external.enum(CONTRIBUTION_TYPES).describe("the contribution type (AD-066 taxonomy)"),
@@ -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",
@@ -16686,14 +16715,14 @@ function acceptedFlags(inputSchema) {
16686
16715
  return out;
16687
16716
  }
16688
16717
  function readTextSource(src) {
16689
- let text2;
16718
+ let text3;
16690
16719
  try {
16691
- text2 = readFileSync2(src === "-" ? 0 : src, "utf8");
16720
+ text3 = readFileSync2(src === "-" ? 0 : src, "utf8");
16692
16721
  } catch (e) {
16693
16722
  const where = src === "-" ? "stdin" : src;
16694
16723
  throw new UsageError(`could not read ${where}: ${e instanceof Error ? e.message : String(e)}`);
16695
16724
  }
16696
- return text2.replace(/[\r\n]+$/, "");
16725
+ return text3.replace(/[\r\n]+$/, "");
16697
16726
  }
16698
16727
  function flagsForSchema(inputSchema) {
16699
16728
  return Object.entries(inputSchema).map(([field, raw]) => {
@@ -16740,10 +16769,10 @@ function buildInput(inputSchema, flags) {
16740
16769
  break;
16741
16770
  }
16742
16771
  case "array": {
16743
- const text2 = String(raw).trim();
16744
- if (text2.startsWith("[")) {
16772
+ const text3 = String(raw).trim();
16773
+ if (text3.startsWith("[")) {
16745
16774
  try {
16746
- const parsed = JSON.parse(text2);
16775
+ const parsed = JSON.parse(text3);
16747
16776
  if (Array.isArray(parsed)) {
16748
16777
  input[spec.field] = parsed;
16749
16778
  break;
@@ -16752,7 +16781,7 @@ function buildInput(inputSchema, flags) {
16752
16781
  throw new UsageError(`--${spec.flag} looks like JSON but failed to parse — check the quoting`);
16753
16782
  }
16754
16783
  }
16755
- input[spec.field] = text2.split(",").map((s) => s.trim()).filter(Boolean);
16784
+ input[spec.field] = text3.split(",").map((s) => s.trim()).filter(Boolean);
16756
16785
  break;
16757
16786
  }
16758
16787
  case "boolean":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
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": {