@lambdacurry/arbor 0.3.2 → 0.3.4
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 +41 -13
- 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([
|
|
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 = (
|
|
9442
|
-
return
|
|
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);
|
|
@@ -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",
|
|
@@ -16268,11 +16297,10 @@ var ACTIONS = [
|
|
|
16268
16297
|
},
|
|
16269
16298
|
{
|
|
16270
16299
|
name: "request",
|
|
16271
|
-
title: "
|
|
16272
|
-
description: "Ask others
|
|
16300
|
+
title: "Ask for a review",
|
|
16301
|
+
description: "Ask others to review 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 asked-about contribution counts as a response.",
|
|
16273
16302
|
inputSchema: {
|
|
16274
16303
|
threadId: exports_external.string().describe("the thread the ask is in, thr_…"),
|
|
16275
|
-
kind: exports_external.enum(["request-review", "request-critique"]).describe("the kind of ask"),
|
|
16276
16304
|
requestedAction: exports_external.string().optional().describe("a one-line 'what'"),
|
|
16277
16305
|
aboutContributionId: exports_external.string().optional().describe("card-scoped ask: the contribution this is about, con_… (must be in the thread; badges that card)"),
|
|
16278
16306
|
targetProfileIds: exports_external.array(exports_external.string()).optional().describe("targeted recipients (omit → open board)"),
|
|
@@ -16687,14 +16715,14 @@ function acceptedFlags(inputSchema) {
|
|
|
16687
16715
|
return out;
|
|
16688
16716
|
}
|
|
16689
16717
|
function readTextSource(src) {
|
|
16690
|
-
let
|
|
16718
|
+
let text3;
|
|
16691
16719
|
try {
|
|
16692
|
-
|
|
16720
|
+
text3 = readFileSync2(src === "-" ? 0 : src, "utf8");
|
|
16693
16721
|
} catch (e) {
|
|
16694
16722
|
const where = src === "-" ? "stdin" : src;
|
|
16695
16723
|
throw new UsageError(`could not read ${where}: ${e instanceof Error ? e.message : String(e)}`);
|
|
16696
16724
|
}
|
|
16697
|
-
return
|
|
16725
|
+
return text3.replace(/[\r\n]+$/, "");
|
|
16698
16726
|
}
|
|
16699
16727
|
function flagsForSchema(inputSchema) {
|
|
16700
16728
|
return Object.entries(inputSchema).map(([field, raw]) => {
|
|
@@ -16741,10 +16769,10 @@ function buildInput(inputSchema, flags) {
|
|
|
16741
16769
|
break;
|
|
16742
16770
|
}
|
|
16743
16771
|
case "array": {
|
|
16744
|
-
const
|
|
16745
|
-
if (
|
|
16772
|
+
const text3 = String(raw).trim();
|
|
16773
|
+
if (text3.startsWith("[")) {
|
|
16746
16774
|
try {
|
|
16747
|
-
const parsed = JSON.parse(
|
|
16775
|
+
const parsed = JSON.parse(text3);
|
|
16748
16776
|
if (Array.isArray(parsed)) {
|
|
16749
16777
|
input[spec.field] = parsed;
|
|
16750
16778
|
break;
|
|
@@ -16753,7 +16781,7 @@ function buildInput(inputSchema, flags) {
|
|
|
16753
16781
|
throw new UsageError(`--${spec.flag} looks like JSON but failed to parse — check the quoting`);
|
|
16754
16782
|
}
|
|
16755
16783
|
}
|
|
16756
|
-
input[spec.field] =
|
|
16784
|
+
input[spec.field] = text3.split(",").map((s) => s.trim()).filter(Boolean);
|
|
16757
16785
|
break;
|
|
16758
16786
|
}
|
|
16759
16787
|
case "boolean":
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lambdacurry/arbor",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
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": {
|