@lambdacurry/arbor 0.9.1 → 0.10.0
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 +35 -6
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -1767,7 +1767,8 @@ var INDEX_ON = new Set([
|
|
|
1767
1767
|
"artifact.edited",
|
|
1768
1768
|
"review.added",
|
|
1769
1769
|
"thread.created",
|
|
1770
|
-
"topic.created"
|
|
1770
|
+
"topic.created",
|
|
1771
|
+
"topic.edited"
|
|
1771
1772
|
]);
|
|
1772
1773
|
// ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
|
|
1773
1774
|
var exports_external = {};
|
|
@@ -16180,10 +16181,23 @@ var ACTIONS = [
|
|
|
16180
16181
|
toolset: "structure",
|
|
16181
16182
|
run: forward("topic.create")
|
|
16182
16183
|
},
|
|
16184
|
+
{
|
|
16185
|
+
name: "topic_update",
|
|
16186
|
+
title: "Edit a topic's title or purpose",
|
|
16187
|
+
description: "Edit a topic's TITLE and/or PURPOSE — the facts of what this area of work IS, distinct from its soft `guidance` (set_topic_guidance) and its lanes (set_topic_lanes). Patches ONLY the fields you pass. Whoever may open a topic in this space may correct one. Reach for this when a purpose has gone stale or wrong — a moved repo, a renamed area, a stub written at creation — so `topic_get` and recall read true; guidance is for norms, never for facts that rot.",
|
|
16188
|
+
inputSchema: {
|
|
16189
|
+
topicId: exports_external.string().describe("the topic to edit, top_…"),
|
|
16190
|
+
title: exports_external.string().min(1).optional().describe("a new title — an area of work, not a question"),
|
|
16191
|
+
purpose: exports_external.string().optional().describe("a new one-line purpose — what belongs here")
|
|
16192
|
+
},
|
|
16193
|
+
surfaces: ["mcp", "cli"],
|
|
16194
|
+
toolset: "spaces",
|
|
16195
|
+
run: forward("topic.setConfig")
|
|
16196
|
+
},
|
|
16183
16197
|
{
|
|
16184
16198
|
name: "set_topic_guidance",
|
|
16185
16199
|
title: "Set a topic's guidance",
|
|
16186
|
-
description: "Set a topic's SOFT guidance — the local how-we-work norms for this topic (culture/quality, AD-063), e.g. 'recall before re-deriving', 'one typed point per contribution'. Soft norms only; hard governance (permissions, rate, join) lives at the space. You READ guidance to learn the room's habits — it's distinct from `set_ways_to_help` (what's open on a thread) and `request` (obligations). Replaces the whole list; pass [] to clear.",
|
|
16200
|
+
description: "Set a topic's SOFT guidance — the local how-we-work norms for this topic (culture/quality, AD-063), e.g. 'recall before re-deriving', 'one typed point per contribution'. Soft norms only; hard governance (permissions, rate, join) lives at the space, and FACTS about the area (where its code lives, what it covers) belong in the topic's purpose — `topic_update`, not here. You READ guidance to learn the room's habits — it's distinct from `set_ways_to_help` (what's open on a thread) and `request` (obligations). Replaces the whole list; pass [] to clear.",
|
|
16187
16201
|
inputSchema: {
|
|
16188
16202
|
topicId: exports_external.string().describe("the topic, top_…"),
|
|
16189
16203
|
guidance: exports_external.array(exports_external.string()).describe("the full guidance list — replaces the existing one; [] clears it")
|
|
@@ -17549,14 +17563,29 @@ var KNOWN_MISREACHES = [
|
|
|
17549
17563
|
{ tried: "spaces", use: "tree", why: "the tree lists spaces" },
|
|
17550
17564
|
{ tried: "space list", use: "tree", why: "the tree lists spaces" },
|
|
17551
17565
|
{ tried: "topics", use: "tree --depth topics", why: "topics are a tree depth" },
|
|
17552
|
-
{ tried: "search", use: "recall <query>", why: "recall is the search surface" }
|
|
17566
|
+
{ tried: "search", use: "recall <query>", why: "recall is the search surface" },
|
|
17567
|
+
{ tried: "update topic", use: "topic update --topic-id top_…", why: "this command is noun-verb" },
|
|
17568
|
+
{ tried: "update space", use: "space update --space-id spc_…", why: "this command is noun-verb" }
|
|
17553
17569
|
];
|
|
17570
|
+
function familyHelp(positionals) {
|
|
17571
|
+
if (positionals.length !== 1)
|
|
17572
|
+
return;
|
|
17573
|
+
const word = positionals[0].toLowerCase().replace(/_/g, " ");
|
|
17574
|
+
const members = CLI_ACTIONS.filter((a) => commandWords(a).split(" ").includes(word)).sort((a, b) => commandWords(a).localeCompare(commandWords(b)));
|
|
17575
|
+
if (members.length === 0)
|
|
17576
|
+
return;
|
|
17577
|
+
return `\`${word}\` commands — run \`arbor <command> --help\` for one command's exact flags.
|
|
17578
|
+
|
|
17579
|
+
` + `${members.map(helpLine).join(`
|
|
17580
|
+
`)}
|
|
17581
|
+
`;
|
|
17582
|
+
}
|
|
17554
17583
|
function suggestCommand(positionals) {
|
|
17555
|
-
const typed = positionals.join(" ").toLowerCase();
|
|
17584
|
+
const typed = positionals.join(" ").toLowerCase().replace(/_/g, " ");
|
|
17556
17585
|
const known = KNOWN_MISREACHES.find((m) => m.tried === typed);
|
|
17557
17586
|
if (known)
|
|
17558
17587
|
return `use \`arbor ${known.use}\` — ${known.why}`;
|
|
17559
|
-
const head =
|
|
17588
|
+
const head = typed.split(" ")[0];
|
|
17560
17589
|
if (head) {
|
|
17561
17590
|
const siblings = CLI_ACTIONS.map(commandWords).filter((c) => c === head || c.startsWith(`${head} `)).sort();
|
|
17562
17591
|
if (siblings.length > 0) {
|
|
@@ -17932,7 +17961,7 @@ async function main() {
|
|
|
17932
17961
|
return;
|
|
17933
17962
|
}
|
|
17934
17963
|
if (truthyFlag(flags.help)) {
|
|
17935
|
-
const focused = positionals.length > 0 ? commandHelp(positionals) : undefined;
|
|
17964
|
+
const focused = positionals.length > 0 ? commandHelp(positionals) ?? familyHelp(positionals) : undefined;
|
|
17936
17965
|
if (focused)
|
|
17937
17966
|
emitDual({ help: focused }, focused, "help", ctx);
|
|
17938
17967
|
else
|
package/package.json
CHANGED