@lambdacurry/arbor 0.23.0 → 0.23.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 +29 -7
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// package.json
|
|
3
3
|
var package_default = {
|
|
4
4
|
name: "@lambdacurry/arbor",
|
|
5
|
-
version: "0.23.
|
|
5
|
+
version: "0.23.2",
|
|
6
6
|
description: "The Arbor CLI — a shared workspace for people and agents. The human + headless-agent write path over Arbor's guarded operation surface.",
|
|
7
7
|
keywords: [
|
|
8
8
|
"agents",
|
|
@@ -4943,7 +4943,7 @@ var LIFECYCLE_TYPE_DESCRIPTIONS = {
|
|
|
4943
4943
|
};
|
|
4944
4944
|
function transitionThreadActionDescription() {
|
|
4945
4945
|
const types = LIFECYCLE_TYPES.map((type) => `\`${type}\` ${LIFECYCLE_TYPE_DESCRIPTIONS[type]}`).join("; ");
|
|
4946
|
-
return `Move a Thread by key, case-insensitive name, or type (\`--to resolved\` still works as a bare type); illegal jumps rejected
|
|
4946
|
+
return `Move a Thread by key, case-insensitive name, or type (\`--to resolved\` still works as a bare type); illegal jumps rejected; optional \`--rank\`. ${types}; live menu is \`thread_get.transitionsFrom\`.`;
|
|
4947
4947
|
}
|
|
4948
4948
|
var CONTRIBUTION_TYPES = [
|
|
4949
4949
|
"comment",
|
|
@@ -6512,6 +6512,7 @@ var threads = sqliteTable("threads", {
|
|
|
6512
6512
|
status: text("status").$type().notNull().default("active"),
|
|
6513
6513
|
lifecycleType: text("lifecycle_type").$type().notNull().default("active"),
|
|
6514
6514
|
lifecycleLabel: text("lifecycle_label").notNull().default("active"),
|
|
6515
|
+
rank: text("rank"),
|
|
6515
6516
|
waysToHelp: text("ways_to_help", { mode: "json" }).$type().notNull().default([]),
|
|
6516
6517
|
openQuestions: text("open_questions", { mode: "json" }).$type().notNull().default([]),
|
|
6517
6518
|
expectedOutput: text("expected_output").notNull().default(""),
|
|
@@ -6519,7 +6520,8 @@ var threads = sqliteTable("threads", {
|
|
|
6519
6520
|
}, (t) => ({
|
|
6520
6521
|
topicIdx: index("threads_topic_idx").on(t.topicId),
|
|
6521
6522
|
spaceIdx: index("threads_space_idx").on(t.spaceId),
|
|
6522
|
-
lifecycleTypeIdx: index("threads_lifecycle_type_idx").on(t.lifecycleType)
|
|
6523
|
+
lifecycleTypeIdx: index("threads_lifecycle_type_idx").on(t.lifecycleType),
|
|
6524
|
+
topicLifecycleRankIdx: index("threads_topic_lifecycle_rank_idx").on(t.topicId, t.lifecycleType, t.rank)
|
|
6523
6525
|
}));
|
|
6524
6526
|
var computerConfigs = sqliteTable("computer_configs", {
|
|
6525
6527
|
id: text("id").primaryKey(),
|
|
@@ -7738,6 +7740,23 @@ var STATUS_OPENNESS = {
|
|
|
7738
7740
|
var typesWhere = (sense) => Object.keys(STATUS_OPENNESS).filter((s) => STATUS_OPENNESS[s][sense]);
|
|
7739
7741
|
var WORKING_THREAD_STATUSES = typesWhere("working");
|
|
7740
7742
|
var CURRENT_WORK_THREAD_STATUSES = typesWhere("currentWork");
|
|
7743
|
+
// ../core/src/lifecycle/rank.ts
|
|
7744
|
+
var THREAD_RANK_MAX = 128;
|
|
7745
|
+
var BASE62_CLASS = "[0-9A-Za-z]";
|
|
7746
|
+
var NON_ZERO_BASE62 = "[1-9A-Za-z]";
|
|
7747
|
+
var JIRA_LEXORANK = "[0-2]\\|[0-9a-z]+:[0-9a-z]*";
|
|
7748
|
+
function figmaFamilyPattern() {
|
|
7749
|
+
const arms = [];
|
|
7750
|
+
for (let i = 0;i < 26; i++) {
|
|
7751
|
+
const extra = String(i + 1);
|
|
7752
|
+
const lower = String.fromCharCode(97 + i);
|
|
7753
|
+
const upper = String.fromCharCode(90 - i);
|
|
7754
|
+
const rest = `${BASE62_CLASS}{${extra}}(?:${BASE62_CLASS}*${NON_ZERO_BASE62})?`;
|
|
7755
|
+
arms.push(`${lower}${rest}`, `${upper}${rest}`);
|
|
7756
|
+
}
|
|
7757
|
+
return arms.join("|");
|
|
7758
|
+
}
|
|
7759
|
+
var THREAD_RANK_PATTERN = new RegExp(`^(?:${JIRA_LEXORANK}|${figmaFamilyPattern()})$`);
|
|
7741
7760
|
// ../core/src/lifecycle/workflow.ts
|
|
7742
7761
|
var WORKFLOW_SUMMARY_MAX = 500;
|
|
7743
7762
|
var WORKFLOW_LABEL_DESCRIPTION_MAX = 200;
|
|
@@ -8579,6 +8598,7 @@ var thread3 = looseObject({
|
|
|
8579
8598
|
status: string2().optional(),
|
|
8580
8599
|
lifecycleType: string2().optional(),
|
|
8581
8600
|
lifecycleLabel: string2().optional(),
|
|
8601
|
+
rank: nullableString.optional(),
|
|
8582
8602
|
url: string2().optional()
|
|
8583
8603
|
});
|
|
8584
8604
|
var workflowSummary = looseObject({
|
|
@@ -8904,7 +8924,8 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
8904
8924
|
id,
|
|
8905
8925
|
title: string2().optional(),
|
|
8906
8926
|
objective: string2().optional(),
|
|
8907
|
-
topicId: string2().optional()
|
|
8927
|
+
topicId: string2().optional(),
|
|
8928
|
+
rank: nullableString.optional()
|
|
8908
8929
|
}),
|
|
8909
8930
|
set_organization_computer: looseObject({ config: computerConfigLayer.nullable() }),
|
|
8910
8931
|
set_space_computer: looseObject({ config: computerConfigLayer.nullable() }),
|
|
@@ -11204,13 +11225,13 @@ var ACTION_DEFINITIONS = [
|
|
|
11204
11225
|
{
|
|
11205
11226
|
name: "thread_update",
|
|
11206
11227
|
title: "Edit a thread's title, objective, or topic",
|
|
11207
|
-
description: "Correct a Thread's title or objective, or move it under another Topic of the same Space, patching only supplied fields; use it to make done clear or refile misfiled work instead of archiving and reopening. Status moves stay with `transition_thread`, column order with `--rank
|
|
11228
|
+
description: "Correct a Thread's title or objective, or move it under another Topic of the same Space, patching only supplied fields; use it to make done clear or refile misfiled work instead of archiving and reopening. Status moves stay with `transition_thread`, column order with `--rank`, and the temporary help list with `charter` ways_to_help.",
|
|
11208
11229
|
inputSchema: {
|
|
11209
11230
|
threadId: string2().describe("the thread to edit, thr_…"),
|
|
11210
11231
|
title: string2().min(1).optional().describe("a new title — the question, outcome, investigation, instance, or standing concern"),
|
|
11211
11232
|
objective: string2().min(1).optional().describe("a new objective — what this Thread should accomplish; for finite work, what done means"),
|
|
11212
11233
|
topicId: string2().optional().describe("move the thread under this topic of the same space, top_…"),
|
|
11213
|
-
rank: string2().optional().describe("LexoRank string for card order inside one lifecycle column;
|
|
11234
|
+
rank: string2().max(THREAD_RANK_MAX).regex(THREAD_RANK_PATTERN).nullable().optional().describe("LexoRank string for card order inside one lifecycle column; omit to leave unchanged, null to restore recency")
|
|
11214
11235
|
},
|
|
11215
11236
|
surfaces: ["mcp", "cli"],
|
|
11216
11237
|
toolset: "loop",
|
|
@@ -11734,7 +11755,8 @@ var ACTION_DEFINITIONS = [
|
|
|
11734
11755
|
inputSchema: {
|
|
11735
11756
|
threadId: string2().describe("the thread to move, thr_…"),
|
|
11736
11757
|
to: string2().min(1).describe("label key, case-insensitive label name, or bare type (`resolved` still works as a type name)"),
|
|
11737
|
-
reason: string2().optional().describe("optional one-line why, recorded on the event")
|
|
11758
|
+
reason: string2().optional().describe("optional one-line why, recorded on the event"),
|
|
11759
|
+
rank: string2().max(THREAD_RANK_MAX).regex(THREAD_RANK_PATTERN).nullable().optional().describe("LexoRank in the destination column; omit to leave unchanged, null to restore recency. Combined with `--to` this is one atomic write — a bad rank moves nothing")
|
|
11738
11760
|
},
|
|
11739
11761
|
surfaces: ["mcp", "cli"],
|
|
11740
11762
|
toolset: "loop",
|
package/package.json
CHANGED