@lambdacurry/arbor 0.4.0 → 0.4.1

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 +38 -5
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -1621,6 +1621,8 @@ var reviews = sqliteTable("reviews", {
1621
1621
  facetKey: text("facet_key").$type(),
1622
1622
  polarity: text("polarity").$type(),
1623
1623
  note: text("note").notNull(),
1624
+ mentions: text("mentions", { mode: "json" }).$type(),
1625
+ editedAt: ts("edited_at"),
1624
1626
  aiIssued: integer("ai_issued", { mode: "boolean" }).notNull().default(false),
1625
1627
  createdAt: ts("created_at").notNull()
1626
1628
  }, (t) => ({
@@ -1834,6 +1836,9 @@ class InMemoryVectorStore {
1834
1836
  get size() {
1835
1837
  return this.records.size;
1836
1838
  }
1839
+ has(id) {
1840
+ return this.records.has(id);
1841
+ }
1837
1842
  }
1838
1843
  // ../core/src/retrieval/fts.ts
1839
1844
  var recallFts = sqliteTable("recall_fts", {
@@ -1850,7 +1855,8 @@ var INDEX_ON = new Set([
1850
1855
  "contribution.edited",
1851
1856
  "comment.added",
1852
1857
  "comment.edited",
1853
- "artifact.created"
1858
+ "artifact.created",
1859
+ "review.added"
1854
1860
  ]);
1855
1861
  // ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
1856
1862
  var exports_external = {};
@@ -16192,12 +16198,13 @@ var ACTIONS = [
16192
16198
  {
16193
16199
  name: "stamp",
16194
16200
  title: "Stamp (review) a contribution",
16195
- description: "Vouch for or push back on someone else's contribution — neutral (omit facet+polarity) or signed (a facet + ▲/▽). Use this to register quality judgment with a one-line why; you cannot stamp your own, and re-stamping updates yours in place.",
16201
+ description: "Vouch for or push back on someone else's contribution — neutral (omit facet+polarity) or signed (a facet + ▲/▽). Use this to register quality judgment with a 'why'; you cannot stamp your own, and re-stamping updates yours in place. A STAMP is also how you answer a review-ask (AD-130): if `inbox`/a thread's open ask tells you to stamp a contribution, do it here. The note is a MARKDOWN body (AD-143) — be as substantive as the review needs; you can @-mention people and reference other work with [[con_…]].",
16196
16202
  inputSchema: {
16197
16203
  contributionId: exports_external.string().describe("the contribution id, e.g. con_…"),
16198
16204
  facetKey: exports_external.enum(STAMP_FACETS).optional().describe("quality|impact|fit|originality (omit for a neutral stamp)"),
16199
16205
  polarity: exports_external.enum(["positive", "negative"]).optional().describe("required with a facet"),
16200
- note: exports_external.string().min(1).optional().describe("the one-line 'why' (required for a signed stamp)")
16206
+ note: exports_external.string().min(1).optional().describe("the 'why' — markdown, required for a signed stamp (AD-143)"),
16207
+ mentions: exports_external.array(exports_external.object({ kind: exports_external.enum(["person", "contribution", "artifact"]), id: exports_external.string(), label: exports_external.string() })).optional().describe("inline @-mentions in the note; person mentions notify")
16201
16208
  },
16202
16209
  surfaces: ["mcp", "cli"],
16203
16210
  run: forward("review.add")
@@ -16351,7 +16358,7 @@ var ACTIONS = [
16351
16358
  {
16352
16359
  name: "respond",
16353
16360
  title: "Respond to a request",
16354
- description: "Fulfill a request addressed to you by posting the contribution that answers it (AD-048 respond-not-claim). Reach for this after `inbox` surfaces an obligation; it returns the request's recomputed status (open | completed | expired).",
16361
+ description: "Fulfill a request addressed to you by posting the contribution that answers it (AD-048 respond-not-claim). Reach for this after `inbox` surfaces an obligation — each open ask carries an `answerWith` line telling you the exact call. NOTE: a review-ask is answered by `stamp` (AD-130), not `respond`. If you ALREADY posted an answer as a plain contribution, use `mark_as_response` to bind it. Returns the request's recomputed status (open | completed | expired).",
16355
16362
  inputSchema: {
16356
16363
  requestId: exports_external.string().describe("the request id, req_…"),
16357
16364
  type: exports_external.enum(CONTRIBUTION_TYPES).describe("the contribution type"),
@@ -16361,6 +16368,17 @@ var ACTIONS = [
16361
16368
  surfaces: ["mcp", "cli"],
16362
16369
  run: forward("request.respond")
16363
16370
  },
16371
+ {
16372
+ name: "mark_as_response",
16373
+ title: "Mark a contribution as a request's response",
16374
+ description: "Bind an ALREADY-POSTED contribution as the answer to a request (AD-142) — when an answer was posted as a plain contribution instead of through `respond`. Allowed if you're the contribution's AUTHOR ('this is my answer') or the REQUESTER ('this answered me'). The contribution must be in the request's thread; the request must be open. Re-evaluates completion.",
16375
+ inputSchema: {
16376
+ requestId: exports_external.string().describe("the open request, req_…"),
16377
+ contributionId: exports_external.string().describe("the existing contribution that answers it, con_…")
16378
+ },
16379
+ surfaces: ["mcp", "cli"],
16380
+ run: forward("request.bind")
16381
+ },
16364
16382
  {
16365
16383
  name: "cancel_request",
16366
16384
  title: "Cancel a request",
@@ -17037,7 +17055,22 @@ function renderVersion(ctx) {
17037
17055
  emitDual({ name: PKG.name, version: CLI_VERSION }, `arbor ${CLI_VERSION}
17038
17056
  `, "version", ctx);
17039
17057
  }
17040
- var HELP = `arbor — the Arbor CLI (AD-009 human write path)
17058
+ var HELP = `arbor — the Arbor CLI: people and agents deliberate on typed work, and Arbor remembers
17059
+ what's settled. Your token (env ARBOR_TOKEN, or \`arbor auth\`) resolves who you act AS — the CLI
17060
+ never asserts it. Run \`arbor whoami\` to confirm, \`arbor tree\` to map the workspace.
17061
+
17062
+ Etiquette — WHEN to act (the judgment; per-command mechanics are listed below):
17063
+ · Recall first — \`arbor recall "<question>"\` before you contribute; cite prior work, don't repeat it.
17064
+ · One typed point per contribution (proposal / critique / question / evidence / risk / correction /
17065
+ assertion / decision). Markdown bodies — pass long/multiline bodies with \`--body-file -\` (stdin),
17066
+ don't shell-quote them.
17067
+ · References live in your prose — a URL or \`[label](#con_…)\` in the body becomes a typed reference;
17068
+ there is no separate links field.
17069
+ · Answer asks THROUGH them — \`arbor respond\` (or \`arbor stamp\` a review ask) so the ask completes
17070
+ and the requester is notified; a plain reply that happens to answer leaves the ask hanging.
17071
+ · Review honestly (\`arbor stamp\` = vouch / push back with a why), promote sparingly (curation, not
17072
+ applause), and \`arbor edit\` rather than repost.
17073
+ Full norms: GET /agent.md on your Arbor server, or the saffron arbor-collaboration shared skill.
17041
17074
 
17042
17075
  Usage: arbor <command> [--flags]
17043
17076
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
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": {