@lambdacurry/arbor 0.23.20 → 0.23.22
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 +31 -16
- 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.22",
|
|
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",
|
|
@@ -10749,7 +10749,7 @@ var CONTRIBUTION_BODY_GUIDANCE = "Write for a newcomer: plain statement first, e
|
|
|
10749
10749
|
var CONTRIBUTION_SUMMARY_GUIDANCE = "one plain sentence a new hire could repeat — what changed and why it matters, not a changelog of codes, ids, and arrows (HARD LIMIT 500 characters; rejected past it)";
|
|
10750
10750
|
var ORIENTATION_SECTIONS = [
|
|
10751
10751
|
{
|
|
10752
|
-
brief: "Arbor is your team's deliberation room and shared memory: people and agents settle typed work in Threads, and Arbor remembers what's decided.
|
|
10752
|
+
brief: "Arbor is your team's deliberation room and shared memory: people and agents settle typed work in Threads, and Arbor remembers what's decided. In brief (full text below):",
|
|
10753
10753
|
full: `Arbor is your team's deliberation room and shared memory — people and agents settle typed work here, and Arbor remembers what's decided. To work well:`
|
|
10754
10754
|
},
|
|
10755
10755
|
{
|
|
@@ -10761,7 +10761,7 @@ var ORIENTATION_SECTIONS = [
|
|
|
10761
10761
|
full: `Arbor's MCP is the collaboration and durable-knowledge surface. Configure, authorize, open, run, verify, package, deploy, and operate software through the separate Arbor Computer MCP at \`/computer/mcp\`; first-class Organization/Profile Secret administration stays here in Arbor, while App runtime configuration on Arbor Computer references those Secret ids without exposing material.`
|
|
10762
10762
|
},
|
|
10763
10763
|
{
|
|
10764
|
-
brief: "Show humans the clickable URLs Arbor returns; keep raw ids for tool calls.",
|
|
10764
|
+
brief: "Show humans the clickable URLs Arbor returns, never ones you build yourself; keep raw ids for tool calls.",
|
|
10765
10765
|
full: `HUMAN-FACING LINKS — When communicating an Arbor object to a human, prefer the human-facing clickable URL Arbor returned. Keep raw IDs primarily for tool calls, debugging, exact references, and agent-to-agent handoffs. Never invent or manually construct Arbor URLs.`
|
|
10766
10766
|
},
|
|
10767
10767
|
{
|
|
@@ -10789,7 +10789,7 @@ var ORIENTATION_SECTIONS = [
|
|
|
10789
10789
|
full: `6. FIT STRUCTURE TO THE WORK — one thread settles one objective, one topic holds one area — and CLOSE it when done. Before adding to a thread, ask whether your point serves ITS objective or starts a new one: a genuinely new question deserves its own thread (check \`tree\`, name it by its objective, make the first contribution); a distinct area that's accumulating threads deserves its own topic. When several threads (often across topics) ladder up to one outcome, link or create a GOAL — that's the cross-cut; don't rely on recall alone or fold them into one mega-thread (prefer linking an existing goal over minting a near-duplicate; complete it when the outcome is reached). When a thread reaches its conclusion, \`transition_thread --to resolved\`; opened in the wrong place → \`--to archived\` and reopen where it belongs (branch on type, never the room's label name). A thread DESIGNED to stay open — a journal, ops log, or standing lane — is \`--to standing\` (AD-200): it is never owed a conclusion, and its distillation is PROMOTION (\uD83C\uDF96️ a synthesis), not closure; "close it when done" applies to deliberations, not standing lanes. CLOSING IS MEMBER WORK: any member of the space can resolve a thread whose objective is met — you do not need its author's permission, and you do not need to be the one who did the work. Asking a human to perform the close is not deference; it is an open thread with extra steps. If the objective is met, close it and say why. WHY: structure should mirror the work so each thread settles one findable question — a thread crammed with many objectives is as unreadable as a litter of one-off topics, and open threads no one closes bury the live ones.`
|
|
10790
10790
|
},
|
|
10791
10791
|
{
|
|
10792
|
-
brief: "7. Check cheaply and act on reversible calls; escalate
|
|
10792
|
+
brief: "7. Check cheaply and act on reversible calls; escalate irreversible, outward-facing, taste, or priority calls.",
|
|
10793
10793
|
full: `7. ACT, THEN REPORT — escalate by exception (AD-197). Before routing a decision to a human, do the CHEAP CHECK that would let you act yourself — the registry lookup, the live-state read, the policy check; the blocker is usually fictional. Then: recoverable + conclusive evidence → act and say why. Recoverable but uncertain → state your intent WITH a deadline ("resolving Thursday unless someone objects") and act at the deadline. Irreversible, outward-facing, or a genuine taste/priority call → escalate; that's what humans are for. Reversibility is the test you can always answer in the moment — a wrong resolve costs one click to undo (\`resolved\` → \`active\`), while waiting costs days. WHY: a room where every met condition waits for a human keystroke makes the human the bottleneck and the agents decorative at exactly the moments they're most useful.`
|
|
10794
10794
|
},
|
|
10795
10795
|
{
|
|
@@ -11482,20 +11482,35 @@ var ACTION_DEFINITIONS = [
|
|
|
11482
11482
|
inputSchema: {
|
|
11483
11483
|
assignee: union([string2(), array(string2()).min(1).max(5)]).optional().describe("`me` (default), a profile id (prof_…), a list (assigned to ALL of them), or `any` (every Thread in the required spaceId)"),
|
|
11484
11484
|
unassigned: boolean2().optional().describe("threads with no assignee — requires spaceId or topicId"),
|
|
11485
|
+
anyAssignee: union([string2(), array(string2()).min(1).max(6)]).optional().describe("with assignee=any: keep Threads assigned to ANY of these — `me`, profile ids (at most 5), and/or `unassigned` for Threads with no assignee"),
|
|
11485
11486
|
spaceId: string2().optional().describe("one space, spc_… — required for assignee=any; unassigned needs spaceId or topicId"),
|
|
11486
11487
|
topicId: union([string2(), array(string2()).min(1)]).optional().describe("one topic (top_…) or a list — narrows the page in SQL before the limit; omit for every topic in scope"),
|
|
11487
|
-
status:
|
|
11488
|
-
|
|
11489
|
-
|
|
11490
|
-
|
|
11491
|
-
|
|
11492
|
-
|
|
11493
|
-
|
|
11494
|
-
|
|
11495
|
-
|
|
11496
|
-
|
|
11497
|
-
|
|
11498
|
-
|
|
11488
|
+
status: union([
|
|
11489
|
+
_enum([
|
|
11490
|
+
"current",
|
|
11491
|
+
"all",
|
|
11492
|
+
"backlog",
|
|
11493
|
+
"active",
|
|
11494
|
+
"needs-review",
|
|
11495
|
+
"stuck",
|
|
11496
|
+
"standing",
|
|
11497
|
+
"resolved",
|
|
11498
|
+
"canceled",
|
|
11499
|
+
"archived"
|
|
11500
|
+
]),
|
|
11501
|
+
array(_enum([
|
|
11502
|
+
"current",
|
|
11503
|
+
"all",
|
|
11504
|
+
"backlog",
|
|
11505
|
+
"active",
|
|
11506
|
+
"needs-review",
|
|
11507
|
+
"stuck",
|
|
11508
|
+
"standing",
|
|
11509
|
+
"resolved",
|
|
11510
|
+
"canceled",
|
|
11511
|
+
"archived"
|
|
11512
|
+
])).min(1).max(8)
|
|
11513
|
+
]).optional().describe("default current = active + needs-review + stuck; all includes backlog/standing/resolved/canceled/archived; or a list of statuses to keep (current/all only alone)"),
|
|
11499
11514
|
order: _enum(["assigned", "activity"]).optional().describe("default assigned = newest assignment first; activity = last_activity_at DESC (aggregate board order)"),
|
|
11500
11515
|
limit: number2().int().min(1).max(100).optional().describe("page size (default 20, max 100)"),
|
|
11501
11516
|
cursor: string2().optional().describe("keyset cursor from a prior page's nextCursor")
|
package/package.json
CHANGED