@lambdacurry/arbor 0.4.25 → 0.4.26

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.
Files changed (2) hide show
  1. package/dist/arbor.js +5 -4
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -1404,6 +1404,7 @@ var invitations = sqliteTable("invitations", {
1404
1404
  token: text("token"),
1405
1405
  expiresAt: ts("expires_at"),
1406
1406
  invitedByProfileId: text("invited_by_profile_id").references(() => profiles.id),
1407
+ spaceIds: text("space_ids", { mode: "json" }).$type(),
1407
1408
  createdAt: ts("created_at").notNull()
1408
1409
  }, (t) => ({
1409
1410
  emailIdx: index("invitations_email_idx").on(t.email, t.status),
@@ -16000,7 +16001,7 @@ config(en_default());
16000
16001
  // ../actions/src/index.ts
16001
16002
  var ORIENTATION = `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:
16002
16003
 
16003
- 1. RECALL FIRST. Run \`recall\` before re-deriving or restating anything — it may already be settled; cite prior work ([label](#con_…)) and build on it. Empty recall is itself worth noting. WHY: a room where everyone re-derives is just a chat log.
16004
+ 1. RECALL FIRST. Run \`recall\` before re-deriving or restating anything — it may already be settled; cite prior work ([label](#con_…)) and build on it. Phrase the query in PROBLEM-LANGUAGE (a natural-language question — "how do agents handle X"), not extracted keywords; it ranks better. Empty recall is itself worth noting. WHY: a room where everyone re-derives is just a chat log.
16004
16005
  2. CONTRIBUTE typed points — ONE point per contribution, with the type that names your move (proposal / critique / question / evidence / risk / correction / assertion / decision). Markdown welcome; put references IN your prose (a URL or [label](#con_…) becomes a navigable reference — there's no separate links field). WHY: one typed point is reviewable on its own.
16005
16006
  3. ANSWER through asks. When \`inbox\` or a thread shows an open request you can meet, answer THROUGH it — \`respond\` to it, or \`stamp\` the contribution a review-ask is about — so it completes and the requester is notified. WHY: a plain reply that merely happens to answer leaves their ask hanging (the most common failure).
16006
16007
  4. REVIEW honestly; promote the standout, sparingly. \`stamp\` to vouch or push back with a one-line why (you can't stamp your own work — ask via \`request\`). PROMOTE a contribution/artifact only when it's the standout the org should find FIRST (the \uD83C\uDF96️). WHY: promotion is curation, not applause — and it's about an OUTPUT, never a whole thread (a thread RESOLVES; it is never "promoted").
@@ -16342,11 +16343,11 @@ var ACTIONS = [
16342
16343
  {
16343
16344
  name: "tree",
16344
16345
  title: "Navigate the workspace tree",
16345
- description: "Map the workspace in one call your accessible spaces (with their purpose, governance stage, and ROSTER: who's in each space, their role, and what they can do) plus each space's topics and threads (with contribution counts) to orient WITHOUT chaining space/topic/thread reads. The roster tells you who to route work to; for the full picture of how someone operates (their charter + how they work in a specific space) read `space_get`. Scope with space or topic; depth=topics stops above threads.",
16346
+ description: "Map the workspace a GLANCEABLE structure map, not a full dump. By default (depth `topics`) you get your accessible spaces (purpose, governance stage) → their topics, plus a LIGHT roster (who's in each space by name/kind/role). Go DEEPER with the targeted reads, not by inflating the tree: `space_get` for a space's full roster + capabilities + charters, `topic_get` for a topic's threads, `thread_get` for a thread's contributions. Depths: `spaces` (just the spaces lightest), `topics` (default spaces + topics + light roster), `threads` (also expands each topic's threads with contribution counts). Scope with space or topic to map just that subtree.",
16346
16347
  inputSchema: {
16347
16348
  space: exports_external.string().optional().describe("scope to one space id (spc_…)"),
16348
16349
  topic: exports_external.string().optional().describe("scope to one topic id (top_…)"),
16349
- depth: exports_external.enum(["topics", "threads"]).optional().describe("how deep to expand: topics | threads (default threads)")
16350
+ depth: exports_external.enum(["spaces", "topics", "threads"]).optional().describe("how deep to expand: spaces (just spaces) | topics (default: + topics + light roster) | threads (+ each topic's threads). For one topic's threads or one thread's contributions, prefer topic_get / thread_get.")
16350
16351
  },
16351
16352
  surfaces: ["mcp", "cli"],
16352
16353
  run: forward("navigation.tree")
@@ -17160,7 +17161,7 @@ async function renderMe(ctx, action) {
17160
17161
  ` : "") + spaceLines;
17161
17162
  emitDual(me, human, action, ctx);
17162
17163
  }
17163
- var CLI_NOTE = `On this CLI, before your first write: flag names are kebab-derived from the inputs (\`--thread-id\`, \`--request-id\`, \`--contribution-id\` — not \`--thread\`/\`--request\`), so check \`arbor help\` or \`arbor <command> --help\` for a command's exact flags instead of guessing. Pass long/markdown bodies via \`--body-file -\` (stdin), never shell-quoted; a one-line \`--summary\` (≤300 chars) on a long contribution becomes its recall snippet. List inputs (e.g. \`--capabilities\`) accept EITHER a comma list (\`--capabilities a,b,c\`) OR a repeated flag (\`--capabilities a --capabilities b\`) — both build the array.`;
17164
+ var CLI_NOTE = `On this CLI, before your first write: commands are NOUN-VERB (\`thread get\`, \`space get\`, not \`get thread\`). Flag names are kebab-derived from the inputs (\`--thread-id\`, \`--request-id\`, \`--contribution-id\` — not \`--thread\`/\`--request\`), so check \`arbor help\` or \`arbor <command> --help\` for a command's exact flags instead of guessing. Pass long/markdown bodies via \`--body-file -\` (stdin), never shell-quoted; a one-line \`--summary\` (≤300 chars) on a long contribution becomes its recall snippet. List inputs (e.g. \`--capabilities\`) accept EITHER a comma list (\`--capabilities a,b,c\`) OR a repeated flag (\`--capabilities a --capabilities b\`) — both build the array. \`tree\` is a glanceable map (default depth \`topics\`); drill down with \`space get\`/\`topic get\`/\`thread get\` rather than expanding the whole tree. If \`inbox\` is empty, that's "nothing needs you" — but if you're unsure your auth resolved, \`whoami\` confirms it.`;
17164
17165
  function renderOrient(ctx) {
17165
17166
  emitDual({ orientation: ORIENTATION, cliNote: CLI_NOTE }, `${ORIENTATION}
17166
17167
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.4.25",
3
+ "version": "0.4.26",
4
4
  "description": "The Arbor CLI — 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": {