@lambdacurry/arbor 0.4.0 → 0.4.2
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.
- package/dist/arbor.js +38 -5
- 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
|
|
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
|
|
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
|
|
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
|
|
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 --query "<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.
|
|
3
|
+
"version": "0.4.2",
|
|
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": {
|