@lambdacurry/arbor 0.4.3 → 0.4.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.
- package/dist/arbor.js +66 -7
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -1603,6 +1603,7 @@ var contributions = sqliteTable("contributions", {
|
|
|
1603
1603
|
executionContextId: text("execution_context_id").notNull().references(() => executionContexts.id),
|
|
1604
1604
|
type: text("type").$type().notNull(),
|
|
1605
1605
|
body: text("body").notNull(),
|
|
1606
|
+
summary: text("summary"),
|
|
1606
1607
|
confidence: integer("confidence"),
|
|
1607
1608
|
links: text("links", { mode: "json" }).$type(),
|
|
1608
1609
|
mentions: text("mentions", { mode: "json" }).$type(),
|
|
@@ -1856,7 +1857,9 @@ var INDEX_ON = new Set([
|
|
|
1856
1857
|
"comment.added",
|
|
1857
1858
|
"comment.edited",
|
|
1858
1859
|
"artifact.created",
|
|
1859
|
-
"review.added"
|
|
1860
|
+
"review.added",
|
|
1861
|
+
"thread.created",
|
|
1862
|
+
"topic.created"
|
|
1860
1863
|
]);
|
|
1861
1864
|
// ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
|
|
1862
1865
|
var exports_external = {};
|
|
@@ -16166,8 +16169,13 @@ var ACTIONS = [
|
|
|
16166
16169
|
threadId: exports_external.string().describe("the thread id, e.g. thr_…"),
|
|
16167
16170
|
type: exports_external.enum(CONTRIBUTION_TYPES).describe("the contribution type (AD-066 taxonomy)"),
|
|
16168
16171
|
body: exports_external.string().min(1).describe("the contribution text"),
|
|
16172
|
+
summary: exports_external.string().max(300).optional().describe("optional ≤300-char gist — becomes the recall snippet AND sharpens recall for long contributions (it's prepended to the embedded text); write one when the body is long"),
|
|
16169
16173
|
confidence: exports_external.number().int().min(0).max(100).optional().describe("optional 0–100 confidence"),
|
|
16170
|
-
mentions: exports_external.array(exports_external.object({
|
|
16174
|
+
mentions: exports_external.array(exports_external.object({
|
|
16175
|
+
kind: exports_external.enum(["person", "contribution", "artifact"]),
|
|
16176
|
+
id: exports_external.string(),
|
|
16177
|
+
label: exports_external.string()
|
|
16178
|
+
})).optional().describe("inline @-mentions in the body; person mentions notify"),
|
|
16171
16179
|
links: exports_external.array(exports_external.object({ rel: exports_external.enum(CONTRIBUTION_LINK_RELS), targetId: exports_external.string() })).optional().describe("internal typed links: { rel, targetId } (same-space). External refs go IN THE BODY as URLs.")
|
|
16172
16180
|
},
|
|
16173
16181
|
surfaces: ["mcp", "cli"],
|
|
@@ -16179,7 +16187,8 @@ var ACTIONS = [
|
|
|
16179
16187
|
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.",
|
|
16180
16188
|
inputSchema: {
|
|
16181
16189
|
contributionId: exports_external.string().describe("your contribution's id, con_…"),
|
|
16182
|
-
body: exports_external.string().min(1).describe("the replacement markdown body")
|
|
16190
|
+
body: exports_external.string().min(1).describe("the replacement markdown body"),
|
|
16191
|
+
summary: exports_external.string().max(300).optional().describe("optional ≤300-char gist — omit to leave unchanged, empty string to clear")
|
|
16183
16192
|
},
|
|
16184
16193
|
surfaces: ["mcp", "cli"],
|
|
16185
16194
|
run: forward("contribution.update")
|
|
@@ -16204,7 +16213,11 @@ var ACTIONS = [
|
|
|
16204
16213
|
facetKey: exports_external.enum(STAMP_FACETS).optional().describe("quality|impact|fit|originality (omit for a neutral stamp)"),
|
|
16205
16214
|
polarity: exports_external.enum(["positive", "negative"]).optional().describe("required with a facet"),
|
|
16206
16215
|
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({
|
|
16216
|
+
mentions: exports_external.array(exports_external.object({
|
|
16217
|
+
kind: exports_external.enum(["person", "contribution", "artifact"]),
|
|
16218
|
+
id: exports_external.string(),
|
|
16219
|
+
label: exports_external.string()
|
|
16220
|
+
})).optional().describe("inline @-mentions in the note; person mentions notify")
|
|
16208
16221
|
},
|
|
16209
16222
|
surfaces: ["mcp", "cli"],
|
|
16210
16223
|
run: forward("review.add")
|
|
@@ -16371,10 +16384,10 @@ var ACTIONS = [
|
|
|
16371
16384
|
{
|
|
16372
16385
|
name: "mark_as_response",
|
|
16373
16386
|
title: "Mark a contribution as a request's response",
|
|
16374
|
-
description: "
|
|
16387
|
+
description: "Mark an ALREADY-POSTED contribution as a response to a request (AD-142) — a response is just a `fulfills` link, so use this when a response was posted as a plain contribution instead of through `respond`. A request has RESPONSES (plural), not a single answer. Allowed if you're the contribution's AUTHOR ('this is my response') or the REQUESTER ('this responded to me'). The contribution must be in the request's thread; the request must be open. Re-evaluates completion.",
|
|
16375
16388
|
inputSchema: {
|
|
16376
16389
|
requestId: exports_external.string().describe("the open request, req_…"),
|
|
16377
|
-
contributionId: exports_external.string().describe("the existing contribution that
|
|
16390
|
+
contributionId: exports_external.string().describe("the existing contribution that responds to it, con_…")
|
|
16378
16391
|
},
|
|
16379
16392
|
surfaces: ["mcp", "cli"],
|
|
16380
16393
|
run: forward("request.bind")
|
|
@@ -16524,6 +16537,51 @@ var ACTIONS = [
|
|
|
16524
16537
|
surfaces: ["mcp", "cli"],
|
|
16525
16538
|
run: forward("space.invites")
|
|
16526
16539
|
},
|
|
16540
|
+
{
|
|
16541
|
+
name: "create_goal",
|
|
16542
|
+
title: "Create a goal",
|
|
16543
|
+
description: "Create an org-scoped GOAL (initiative) — the widest unit of work, the 'why' that threads serve toward. Reach for this when several threads ladder up to one outcome worth naming; then `link_thread_to_goal` the threads that contribute. Optionally seed it from a space's threads at creation. Prefer linking to an existing goal (see `list_goals`) over minting a near-duplicate.",
|
|
16544
|
+
inputSchema: {
|
|
16545
|
+
spaceId: exports_external.string().describe("the space you're creating it from, spc_… (gates access)"),
|
|
16546
|
+
title: exports_external.string().min(1).describe("the goal's name — an outcome, not a task"),
|
|
16547
|
+
purpose: exports_external.string().optional().describe("one or two lines on what reaching it means"),
|
|
16548
|
+
threadIds: exports_external.array(exports_external.string()).optional().describe("optional threads IN THIS SPACE to link at creation (others are ignored)")
|
|
16549
|
+
},
|
|
16550
|
+
surfaces: ["mcp", "cli"],
|
|
16551
|
+
run: forward("initiative.create")
|
|
16552
|
+
},
|
|
16553
|
+
{
|
|
16554
|
+
name: "link_thread_to_goal",
|
|
16555
|
+
title: "Link a thread to a goal",
|
|
16556
|
+
description: "Record that a thread contributes to a goal — the many-to-many link that surfaces the goal on the thread's space and lists the thread under the goal. Idempotent. Reach for this once a thread's work clearly serves a goal; use `list_goals` to find the goal id.",
|
|
16557
|
+
inputSchema: {
|
|
16558
|
+
threadId: exports_external.string().describe("the contributing thread, thr_…"),
|
|
16559
|
+
initiativeId: exports_external.string().describe("the goal it serves, ini_…")
|
|
16560
|
+
},
|
|
16561
|
+
surfaces: ["mcp", "cli"],
|
|
16562
|
+
run: forward("initiative.linkThread")
|
|
16563
|
+
},
|
|
16564
|
+
{
|
|
16565
|
+
name: "unlink_thread_from_goal",
|
|
16566
|
+
title: "Unlink a thread from a goal",
|
|
16567
|
+
description: "Remove the link between a thread and a goal (the deliberate inverse of `link_thread_to_goal`). Idempotent. Reach for this when a thread no longer serves the goal it was attached to — the thread and the goal both stay; only the link is dropped.",
|
|
16568
|
+
inputSchema: {
|
|
16569
|
+
threadId: exports_external.string().describe("the thread to unlink, thr_…"),
|
|
16570
|
+
initiativeId: exports_external.string().describe("the goal to unlink it from, ini_…")
|
|
16571
|
+
},
|
|
16572
|
+
surfaces: ["mcp", "cli"],
|
|
16573
|
+
run: forward("initiative.unlinkThread")
|
|
16574
|
+
},
|
|
16575
|
+
{
|
|
16576
|
+
name: "list_goals",
|
|
16577
|
+
title: "List a thread's goals",
|
|
16578
|
+
description: "For a thread, list the goals it already contributes to PLUS the org's goals you could link it to (the pick list). Reach for this before `link_thread_to_goal` to find the right goal id and avoid creating a duplicate; archived goals are omitted.",
|
|
16579
|
+
inputSchema: {
|
|
16580
|
+
threadId: exports_external.string().describe("the thread to read goals for, thr_…")
|
|
16581
|
+
},
|
|
16582
|
+
surfaces: ["mcp", "cli"],
|
|
16583
|
+
run: forward("initiative.forThread")
|
|
16584
|
+
},
|
|
16527
16585
|
{
|
|
16528
16586
|
name: "space_create",
|
|
16529
16587
|
title: "Create a space",
|
|
@@ -17063,7 +17121,8 @@ Etiquette — WHEN to act (the judgment; per-command mechanics are listed below)
|
|
|
17063
17121
|
· Recall first — \`arbor recall --query "<question>"\` before you contribute; cite prior work, don't repeat it.
|
|
17064
17122
|
· One typed point per contribution (proposal / critique / question / evidence / risk / correction /
|
|
17065
17123
|
assertion / decision). Markdown bodies — pass long/multiline bodies with \`--body-file -\` (stdin),
|
|
17066
|
-
don't shell-quote them.
|
|
17124
|
+
don't shell-quote them. For a long contribution add a one-line \`--summary\` (≤300 chars): it becomes
|
|
17125
|
+
the recall snippet AND sharpens recall (it's embedded with the body).
|
|
17067
17126
|
· References live in your prose — a URL or \`[label](#con_…)\` in the body becomes a typed reference;
|
|
17068
17127
|
there is no separate links field.
|
|
17069
17128
|
· Answer asks THROUGH them — \`arbor respond\` (or \`arbor stamp\` a review ask) so the ask completes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lambdacurry/arbor",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.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": {
|