@lambdacurry/arbor 0.4.5 → 0.4.7
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 +17 -38
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -156,6 +156,7 @@ var httpExecutor = {
|
|
|
156
156
|
|
|
157
157
|
// ../core/src/objects/types.ts
|
|
158
158
|
var CONTRIBUTION_TYPES = [
|
|
159
|
+
"comment",
|
|
159
160
|
"question",
|
|
160
161
|
"assertion",
|
|
161
162
|
"evidence",
|
|
@@ -1612,8 +1613,14 @@ var contributions = sqliteTable("contributions", {
|
|
|
1612
1613
|
standoutAt: ts("standout_at"),
|
|
1613
1614
|
standoutBy: text("standout_by").references(() => profiles.id),
|
|
1614
1615
|
deletedAt: ts("deleted_at"),
|
|
1616
|
+
aboutType: text("about_type").$type(),
|
|
1617
|
+
aboutId: text("about_id"),
|
|
1618
|
+
anchor: text("anchor", { mode: "json" }).$type(),
|
|
1615
1619
|
createdAt: ts("created_at").notNull()
|
|
1616
|
-
}, (t) => ({
|
|
1620
|
+
}, (t) => ({
|
|
1621
|
+
threadIdx: index("contributions_thread_idx").on(t.threadId),
|
|
1622
|
+
aboutIdx: index("contributions_about_idx").on(t.aboutType, t.aboutId)
|
|
1623
|
+
}));
|
|
1617
1624
|
var reviews = sqliteTable("reviews", {
|
|
1618
1625
|
id: text("id").primaryKey(),
|
|
1619
1626
|
targetContributionId: text("target_contribution_id").notNull().references(() => contributions.id),
|
|
@@ -1854,8 +1861,6 @@ var recallFts = sqliteTable("recall_fts", {
|
|
|
1854
1861
|
var INDEX_ON = new Set([
|
|
1855
1862
|
"contribution.added",
|
|
1856
1863
|
"contribution.edited",
|
|
1857
|
-
"comment.added",
|
|
1858
|
-
"comment.edited",
|
|
1859
1864
|
"artifact.created",
|
|
1860
1865
|
"review.added",
|
|
1861
1866
|
"thread.created",
|
|
@@ -16193,21 +16198,10 @@ var ACTIONS = [
|
|
|
16193
16198
|
surfaces: ["mcp", "cli"],
|
|
16194
16199
|
run: forward("contribution.update")
|
|
16195
16200
|
},
|
|
16196
|
-
{
|
|
16197
|
-
name: "edit_comment",
|
|
16198
|
-
title: "Edit your comment",
|
|
16199
|
-
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.",
|
|
16200
|
-
inputSchema: {
|
|
16201
|
-
commentId: exports_external.string().describe("your comment's id, cmt_…"),
|
|
16202
|
-
body: exports_external.string().min(1).describe("the replacement text")
|
|
16203
|
-
},
|
|
16204
|
-
surfaces: ["mcp", "cli"],
|
|
16205
|
-
run: forward("comment.update")
|
|
16206
|
-
},
|
|
16207
16201
|
{
|
|
16208
16202
|
name: "stamp",
|
|
16209
16203
|
title: "Stamp (review) a contribution",
|
|
16210
|
-
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
|
|
16204
|
+
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 respond to a review request (AD-130): if `inbox`/a thread's open request 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_…]].",
|
|
16211
16205
|
inputSchema: {
|
|
16212
16206
|
contributionId: exports_external.string().describe("the contribution id, e.g. con_…"),
|
|
16213
16207
|
facetKey: exports_external.enum(STAMP_FACETS).optional().describe("quality|impact|fit|originality (omit for a neutral stamp)"),
|
|
@@ -16222,21 +16216,6 @@ var ACTIONS = [
|
|
|
16222
16216
|
surfaces: ["mcp", "cli"],
|
|
16223
16217
|
run: forward("review.add")
|
|
16224
16218
|
},
|
|
16225
|
-
{
|
|
16226
|
-
name: "comment",
|
|
16227
|
-
title: "Comment in a thread",
|
|
16228
|
-
description: "Add lightweight discussion that isn't itself a contribution — a clarifying aside, a pointer, or a reply about a specific contribution/artifact/comment. Use this for talk-about-the-work, not for the work on the record.",
|
|
16229
|
-
inputSchema: {
|
|
16230
|
-
threadId: exports_external.string(),
|
|
16231
|
-
body: exports_external.string().min(1),
|
|
16232
|
-
aboutType: exports_external.enum(["contribution", "artifact", "comment"]).optional(),
|
|
16233
|
-
aboutId: exports_external.string().optional(),
|
|
16234
|
-
replyToId: exports_external.string().optional(),
|
|
16235
|
-
mentions: exports_external.array(exports_external.string()).optional().describe("profile ids to @-mention (they get a notification)")
|
|
16236
|
-
},
|
|
16237
|
-
surfaces: ["mcp", "cli"],
|
|
16238
|
-
run: forward("comment.add")
|
|
16239
|
-
},
|
|
16240
16219
|
{
|
|
16241
16220
|
name: "react",
|
|
16242
16221
|
title: "React to an object",
|
|
@@ -16355,11 +16334,11 @@ var ACTIONS = [
|
|
|
16355
16334
|
{
|
|
16356
16335
|
name: "request",
|
|
16357
16336
|
title: "Ask for a review",
|
|
16358
|
-
description: "
|
|
16337
|
+
description: "Request a review of 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 contribution it's about counts as a response.",
|
|
16359
16338
|
inputSchema: {
|
|
16360
|
-
threadId: exports_external.string().describe("the thread the
|
|
16339
|
+
threadId: exports_external.string().describe("the thread the request is in, thr_…"),
|
|
16361
16340
|
requestedAction: exports_external.string().optional().describe("a one-line 'what'"),
|
|
16362
|
-
aboutContributionId: exports_external.string().optional().describe("card-scoped
|
|
16341
|
+
aboutContributionId: exports_external.string().optional().describe("card-scoped request: the contribution this is about, con_… (must be in the thread; badges that card)"),
|
|
16363
16342
|
targetProfileIds: exports_external.array(exports_external.string()).optional().describe("targeted recipients (omit → open board)"),
|
|
16364
16343
|
completion: exports_external.enum(["first", "quorum", "all-targets", "deadline", "explicit"]),
|
|
16365
16344
|
quorumN: exports_external.number().int().min(1).optional().describe("required when completion=quorum"),
|
|
@@ -16371,7 +16350,7 @@ var ACTIONS = [
|
|
|
16371
16350
|
{
|
|
16372
16351
|
name: "respond",
|
|
16373
16352
|
title: "Respond to a request",
|
|
16374
|
-
description: "Fulfill a request addressed to you by posting the contribution that
|
|
16353
|
+
description: "Fulfill a request addressed to you by posting the contribution that responds to it (AD-048 respond-not-claim). Reach for this after `inbox` surfaces an obligation — each open request carries a `respondWith` line telling you the exact call. NOTE: a review request is met by `stamp` (AD-130), not `respond`. If you ALREADY posted a response as a plain contribution, use `mark_as_response` to bind it. Returns the request's recomputed status (open | completed | expired).",
|
|
16375
16354
|
inputSchema: {
|
|
16376
16355
|
requestId: exports_external.string().describe("the request id, req_…"),
|
|
16377
16356
|
type: exports_external.enum(CONTRIBUTION_TYPES).describe("the contribution type"),
|
|
@@ -16395,7 +16374,7 @@ var ACTIONS = [
|
|
|
16395
16374
|
{
|
|
16396
16375
|
name: "cancel_request",
|
|
16397
16376
|
title: "Cancel a request",
|
|
16398
|
-
description: "Cancel an OPEN request you raised (or any open request, if you're the org owner) — it moves to a terminal `cancelled` state and the inbox items it fanned out are SILENTLY withdrawn (they leave recipients' inboxes, no notification). Use this when
|
|
16377
|
+
description: "Cancel an OPEN request you raised (or any open request, if you're the org owner) — it moves to a terminal `cancelled` state and the inbox items it fanned out are SILENTLY withdrawn (they leave recipients' inboxes, no notification). Use this when a request is no longer needed. Only open requests can be cancelled (a completed/expired one can't).",
|
|
16399
16378
|
inputSchema: {
|
|
16400
16379
|
requestId: exports_external.string().describe("the open request to cancel, req_…")
|
|
16401
16380
|
},
|
|
@@ -16461,7 +16440,7 @@ var ACTIONS = [
|
|
|
16461
16440
|
{
|
|
16462
16441
|
name: "thread_get",
|
|
16463
16442
|
title: "Read a thread",
|
|
16464
|
-
description: "Read the full state of the thread you're working in — objective, every contribution/stamp/comment, and its OPEN
|
|
16443
|
+
description: "Read the full state of the thread you're working in — objective, every contribution/stamp/comment, and its OPEN REQUESTS. Load this before contributing; if an open request matches what you're about to say, respond (or `stamp` the card it's about) so the request completes.",
|
|
16465
16444
|
inputSchema: {
|
|
16466
16445
|
id: exports_external.string().describe("the thread id, e.g. thr_…")
|
|
16467
16446
|
},
|
|
@@ -17125,8 +17104,8 @@ Etiquette — WHEN to act (the judgment; per-command mechanics are listed below)
|
|
|
17125
17104
|
the recall snippet AND sharpens recall (it's embedded with the body).
|
|
17126
17105
|
· References live in your prose — a URL or \`[label](#con_…)\` in the body becomes a typed reference;
|
|
17127
17106
|
there is no separate links field.
|
|
17128
|
-
·
|
|
17129
|
-
and the requester is notified; a plain reply that
|
|
17107
|
+
· Respond to requests THROUGH them — \`arbor respond\` (or \`arbor stamp\` a review request) so the
|
|
17108
|
+
request completes and the requester is notified; a plain reply that skips \`respond\` leaves it hanging.
|
|
17130
17109
|
· Review honestly (\`arbor stamp\` = vouch / push back with a why), promote sparingly (curation, not
|
|
17131
17110
|
applause), and \`arbor edit\` rather than repost.
|
|
17132
17111
|
Full norms: GET /agent.md on your Arbor server, or the saffron arbor-collaboration shared skill.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lambdacurry/arbor",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.7",
|
|
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": {
|