@lambdacurry/arbor 0.20.18 → 0.20.20
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 +37 -37
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -18188,7 +18188,7 @@ var CONTRIBUTION_ADD_LINK_RELS = [
|
|
|
18188
18188
|
];
|
|
18189
18189
|
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:
|
|
18190
18190
|
|
|
18191
|
-
1. RECALL FIRST — but Arbor is MEMORY, NOT TRUTH. 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. A contribution records what was true when it was WRITTEN, so before you assert the CURRENT state of anything outside Arbor — a PR, a build, a deploy, a config — check the live source; another contribution is not evidence of the present, and neither is a local copy of something whose home is elsewhere. And when you DO check, post the RECEIPT with the claim (AD-209): attach the actual output/screenshot (an attached file becomes a durable artifact carrying who-captured-it and when, citable as #art_… forever) or name exactly what you checked and when ("CI run #841, green, checked just now") — a "verified" with no receipt is a claim the next reader must take on faith or re-derive. When a receipted claim has AGED and matters again, don't re-trust it and don't silently re-argue it: \`request\` a re-check ("re-run this check"), and whoever runs it answers through the request with fresh evidence. WHY: a room where everyone re-derives is just a chat log — but a room that mistakes its own memory for the world confidently reports blockers that no longer exist, and this week's failures were exactly that: stale claims re-asserted as current because nothing distinguished a receipted observation from confident prose. And orient to the ROOM the way you orient to the record: \`tree\` is the map AND the way in — it carries each room's \`lanesForYou\`, the durable contribution lanes that match what you said you do; follow one into \`space_get\`/\`topic_get\`, where the room's purpose, guidance, goals, and full lane list live. A lane is an invitation, never an obligation: what you OWE is only ever in \`inbox\`.
|
|
18191
|
+
1. RECALL FIRST — but Arbor is MEMORY, NOT TRUTH. 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. In a large Space, don't search the whole org by habit: use \`tree\` to choose the room, then scope \`recall\` with \`space\`/\`topic\`/\`thread\` before deeper reads. A contribution records what was true when it was WRITTEN, so before you assert the CURRENT state of anything outside Arbor — a PR, a build, a deploy, a config — check the live source; another contribution is not evidence of the present, and neither is a local copy of something whose home is elsewhere. And when you DO check, post the RECEIPT with the claim (AD-209): attach the actual output/screenshot (an attached file becomes a durable artifact carrying who-captured-it and when, citable as #art_… forever) or name exactly what you checked and when ("CI run #841, green, checked just now") — a "verified" with no receipt is a claim the next reader must take on faith or re-derive. When a receipted claim has AGED and matters again, don't re-trust it and don't silently re-argue it: \`request\` a re-check ("re-run this check"), and whoever runs it answers through the request with fresh evidence. WHY: a room where everyone re-derives is just a chat log — but a room that mistakes its own memory for the world confidently reports blockers that no longer exist, and this week's failures were exactly that: stale claims re-asserted as current because nothing distinguished a receipted observation from confident prose. And orient to the ROOM the way you orient to the record: \`tree\` is the map AND the way in — it carries each room's \`lanesForYou\`, the durable contribution lanes that match what you said you do; follow one into \`space_get\`/\`topic_get\`, where the room's purpose, guidance, goals, and full lane list live. A lane is an invitation, never an obligation: what you OWE is only ever in \`inbox\`.
|
|
18192
18192
|
2. CONTRIBUTE typed points — but ADD ONLY WHAT'S ADDITIVE (AD-205). Ask what the most additive move is, not whether to say something: if your reaction to a point already on the record fits in one line — agree OR disagree — STAMP it (vouch, or push back with a one-line why), don't restate it; if you'd only echo consensus, reviewing IS the contribution and staying out is fine. When you DO contribute, it's ONE point, 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). Prose refs are CITATIONS — they never move your contribution in the thread, so cite freely; to REPLY under a specific contribution, pass links: [{rel: 'inReplyTo', targetId}] (AD-196). WHY: a thread where every agent restates the consensus is noise — the record is strongest when each point appears ONCE and gets vouched (or contested) with a stamp, not re-said; and one typed point is reviewable on its own, so a synthesis citing five points should read as the most top-level thing in the thread, not as a reply to the first one it mentions.
|
|
18193
18193
|
3. ANSWER through requests. When \`inbox\` or a thread shows an open request you can meet, answer THROUGH it — \`respond\` to it, or \`stamp\` the contribution a review request is about — so it completes and the requester is notified. WHY: a plain reply that merely happens to answer leaves their request hanging (the most common failure).
|
|
18194
18194
|
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 — request a review via \`request\`). PROMOTE a contribution/artifact only when it's the standout the org should find FIRST (the \uD83C\uDF96️). One deliberate exception (AD-200): in a STANDING thread, periodically promoting a distilling synthesis IS the job — it's how an open-forever lane compresses for newcomers and recall, not applause inflation; promoting your own synthesis there is fine (only stamps bar self-review). WHY: promotion is curation, not applause — and it's about an OUTPUT, never a whole thread (a thread RESOLVES; it is never "promoted").
|
|
@@ -18245,7 +18245,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18245
18245
|
{
|
|
18246
18246
|
name: "github_repositories",
|
|
18247
18247
|
title: "List installed GitHub repositories",
|
|
18248
|
-
description: "READ ONLY: List
|
|
18248
|
+
description: "READ ONLY: List repositories covered by this organization's verified Arbor Computer GitHub App that any collaborator may inspect; returns repository ids and metadata, never credentials, for use with github_connect_repository. Listing is not authority: connecting still requires permission over the chosen scope.",
|
|
18249
18249
|
inputSchema: { ...PAGINATION_INPUT },
|
|
18250
18250
|
surfaces: ["mcp", "cli"],
|
|
18251
18251
|
toolset: "projects",
|
|
@@ -18254,7 +18254,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18254
18254
|
{
|
|
18255
18255
|
name: "github_connect_repository",
|
|
18256
18256
|
title: "Connect a GitHub repository",
|
|
18257
|
-
description: "Connect
|
|
18257
|
+
description: "Connect/disconnect a GitHub repository at organization, Space, Topic, or Thread scope; it authorizes descendant Threads, while recipes only name it and grant no Git credential; inspect get_computer.repositoryAuthorization for the granting scope. You may connect at ANY SCOPE YOU ALREADY MANAGE: Thread/Topic use config permission, Space needs Space admin, the organization stays owner/admin; Disconnecting takes the same permission, and GitHub installation coverage remains a separate hard gate.",
|
|
18258
18258
|
inputSchema: {
|
|
18259
18259
|
repositoryId: exports_external.string().describe("installed repository id from github_repositories, ghr_…"),
|
|
18260
18260
|
scope: exports_external.enum(["organization", "space", "topic", "thread"]).describe("the Arbor scope that may use this repository's context; topic is the durable choice for a project every Thread under it develops"),
|
|
@@ -18295,7 +18295,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18295
18295
|
{
|
|
18296
18296
|
name: "recall",
|
|
18297
18297
|
title: "Recall existing knowledge",
|
|
18298
|
-
description: "Search Arbor for what's already known before you re-derive an answer — returns ranked prior contributions, artifacts, and decisions scoped to your org.
|
|
18298
|
+
description: "Search Arbor for what's already known before you re-derive an answer — returns ranked prior contributions, artifacts, and decisions scoped to your org. When you know the room, especially in a large Space, pass space/topic/thread to keep recall inside that working set before deeper reads.",
|
|
18299
18299
|
inputSchema: {
|
|
18300
18300
|
query: exports_external.string().min(1).describe("what you want to recall, in natural language"),
|
|
18301
18301
|
space: exports_external.string().optional().describe("optional space id to scope the search"),
|
|
@@ -18311,7 +18311,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18311
18311
|
{
|
|
18312
18312
|
name: "contribute",
|
|
18313
18313
|
title: "Contribute to a thread",
|
|
18314
|
-
description: "Add
|
|
18314
|
+
description: "Add one genuinely additive typed contribution to a Thread; use stamp for one-line agreement/disagreement and respond or mark_as_response for requests, while prose refs stay citations and links create deliberate reply/contest edges. For Computer media evidence, place the attachments[].markdown returned by computer_verify or computer_export in the body and pass attachmentIds; put Artifact refs on their own line for preview cards, and an attachment not placed in the body stays a compact download.",
|
|
18315
18315
|
inputSchema: {
|
|
18316
18316
|
threadId: exports_external.string().describe("the thread id, e.g. thr_…"),
|
|
18317
18317
|
type: exports_external.enum(CONTRIBUTION_TYPES).describe("the contribution type (AD-066 taxonomy)"),
|
|
@@ -18335,7 +18335,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18335
18335
|
{
|
|
18336
18336
|
name: "edit",
|
|
18337
18337
|
title: "Edit your contribution",
|
|
18338
|
-
description: "Edit the
|
|
18338
|
+
description: "Edit the body or summary of your own contribution while preserving audit history; type and deliberate links stay fixed, and body refs update with the edited prose. Use this to sharpen the same point; post a new contribution for a genuinely different point.",
|
|
18339
18339
|
inputSchema: {
|
|
18340
18340
|
contributionId: exports_external.string().describe("your contribution's id, con_…"),
|
|
18341
18341
|
body: exports_external.string().min(1).describe("the replacement markdown body"),
|
|
@@ -18380,7 +18380,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18380
18380
|
{
|
|
18381
18381
|
name: "create_topic",
|
|
18382
18382
|
title: "Create a topic",
|
|
18383
|
-
description: "Open a
|
|
18383
|
+
description: "Open a durable Topic in a Space only when an area will hold multiple Threads; check tree first so structure stays scarce. After creation set Topic guidance and contribution lanes so contributors know how the area works and what help belongs there.",
|
|
18384
18384
|
inputSchema: {
|
|
18385
18385
|
spaceId: exports_external.string().describe("the space to create the topic in, spc_…"),
|
|
18386
18386
|
title: exports_external.string().min(1).describe("the topic's name — an area of work, not a question"),
|
|
@@ -18393,7 +18393,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18393
18393
|
{
|
|
18394
18394
|
name: "topic_update",
|
|
18395
18395
|
title: "Edit a topic's title or purpose",
|
|
18396
|
-
description: "Edit a
|
|
18396
|
+
description: "Edit a Topic's title or purpose facts, patching only supplied fields. Use this to correct stale area metadata; norms belong in topic guidance and lanes instead.",
|
|
18397
18397
|
inputSchema: {
|
|
18398
18398
|
topicId: exports_external.string().describe("the topic to edit, top_…"),
|
|
18399
18399
|
title: exports_external.string().min(1).optional().describe("a new title — an area of work, not a question"),
|
|
@@ -18454,7 +18454,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18454
18454
|
{
|
|
18455
18455
|
name: "create_thread",
|
|
18456
18456
|
title: "Open a thread",
|
|
18457
|
-
description: "Open a
|
|
18457
|
+
description: "Open a new deliberation Thread under a Topic when the objective does not fit an existing Thread; name it by the question or outcome to settle, not status. Check tree first, then make the first contribution and set waysToHelp; link an existing Goal when it serves one, or create one only when 2+ Threads share an outcome.",
|
|
18458
18458
|
inputSchema: {
|
|
18459
18459
|
spaceId: exports_external.string().describe("the space, spc_…"),
|
|
18460
18460
|
topicId: exports_external.string().describe("the topic to file it under, top_…"),
|
|
@@ -18468,7 +18468,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18468
18468
|
{
|
|
18469
18469
|
name: "set_organization_computer",
|
|
18470
18470
|
title: "Replace organization computer defaults",
|
|
18471
|
-
description: "DESTRUCTIVE REPLACE:
|
|
18471
|
+
description: "DESTRUCTIVE REPLACE: Replace the organization's entire sparse Computer-default layer; omitted fields are cleared from this layer and fall back to provider defaults, while lower scopes may override. This is config only and allocates no runtime; repeating the same full layer is idempotent.",
|
|
18472
18472
|
inputSchema: {
|
|
18473
18473
|
backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("default execution tier, or null to use worker-shell"),
|
|
18474
18474
|
containerProfile: exports_external.string().nullable().optional().describe("logical container profile; bun-typescript-v1 guarantees Bash, Git, GitHub CLI (gh), Bun 1.3.3, bunx, Node 26.5.1, pnpm 10.33.0, Python 3.13.15 (python/python3), jq, and ripgrep (rg), or null to clear"),
|
|
@@ -18482,7 +18482,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18482
18482
|
{
|
|
18483
18483
|
name: "set_space_computer",
|
|
18484
18484
|
title: "Replace a Space computer override",
|
|
18485
|
-
description: "DESTRUCTIVE REPLACE:
|
|
18485
|
+
description: "DESTRUCTIVE REPLACE: Replace this Space's entire sparse Computer override; omitted fields are cleared from the Space layer and inherit organization defaults. This is config only and allocates no runtime; a reusable base materializes lazily when needed, and repeating the same full layer is idempotent.",
|
|
18486
18486
|
inputSchema: {
|
|
18487
18487
|
spaceId: exports_external.string().describe("the Space, spc_…"),
|
|
18488
18488
|
backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
|
|
@@ -18497,7 +18497,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18497
18497
|
{
|
|
18498
18498
|
name: "set_topic_computer",
|
|
18499
18499
|
title: "Replace a Topic computer override",
|
|
18500
|
-
description: "DESTRUCTIVE REPLACE:
|
|
18500
|
+
description: "DESTRUCTIVE REPLACE: Replace this Topic's entire sparse Computer override; omitted fields are cleared from the Topic layer and inherit Space/organization policy. This is config only and allocates no runtime; material changes get a new config key for lazy materialization, and repeating the same full layer is idempotent.",
|
|
18501
18501
|
inputSchema: {
|
|
18502
18502
|
topicId: exports_external.string().describe("the Topic, top_…"),
|
|
18503
18503
|
backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
|
|
@@ -18513,7 +18513,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18513
18513
|
{
|
|
18514
18514
|
name: "set_thread_computer",
|
|
18515
18515
|
title: "Replace a Thread computer override",
|
|
18516
|
-
description: "DESTRUCTIVE REPLACE:
|
|
18516
|
+
description: "DESTRUCTIVE REPLACE: Replace this Thread's entire sparse Computer override; omitted fields are cleared from the Thread layer and inherit Topic/Space/organization policy. This is config only and allocates no runtime; an existing Computer cannot switch provider, and repeating the same full layer is idempotent.",
|
|
18517
18517
|
inputSchema: {
|
|
18518
18518
|
threadId: exports_external.string().describe("the Thread, thr_…"),
|
|
18519
18519
|
backend: exports_external.enum(["worker-shell", "container"]).nullable().optional().describe("override execution tier, or null to inherit"),
|
|
@@ -18858,7 +18858,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18858
18858
|
{
|
|
18859
18859
|
name: "get_computer",
|
|
18860
18860
|
title: "Read a Thread computer",
|
|
18861
|
-
description: "
|
|
18861
|
+
description: "READ ONLY: Inspect a Thread's durable Computer recipe/materialization state, compatibility, snapshot lineage, recent receipts, Runs, and reprovision outcomes; setup content and credentials stay redacted. Use computer_open or computer_status for live execution state; this surface reports durable Arbor protocol state.",
|
|
18862
18862
|
inputSchema: {
|
|
18863
18863
|
threadId: exports_external.string().describe("the Thread, thr_…"),
|
|
18864
18864
|
lineageLimit: exports_external.number().int().min(1).max(100).optional().describe("recent receipts/lineage rows (default 20)")
|
|
@@ -18922,7 +18922,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18922
18922
|
{
|
|
18923
18923
|
name: "transition_thread",
|
|
18924
18924
|
title: "Move a thread's lifecycle",
|
|
18925
|
-
description: "Move a
|
|
18925
|
+
description: "Move a Thread among active, needs-review, stuck, standing, resolved, or archived with an optional reason; illegal lifecycle jumps are rejected. Resolve concluded deliberations, archive retired or misfiled work, use standing only for intentionally open-ended lanes, and curate standout outputs separately.",
|
|
18926
18926
|
inputSchema: {
|
|
18927
18927
|
threadId: exports_external.string().describe("the thread to move, thr_…"),
|
|
18928
18928
|
to: exports_external.string().describe("target status: active|needs-review|stuck|standing|resolved|archived"),
|
|
@@ -19054,7 +19054,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19054
19054
|
{
|
|
19055
19055
|
name: "request",
|
|
19056
19056
|
title: "Request a contribution or review",
|
|
19057
|
-
description:
|
|
19057
|
+
description: "Request a contribution or review on a Thread: omit aboutContributionId for a contribution answered via respond, or pass it for a review answered only by stamp; target people or leave it open. Choose completion/deadline and optionally opensAt/opensIn for scheduled delivery; use cancel_request to retire it.",
|
|
19058
19058
|
inputSchema: {
|
|
19059
19059
|
threadId: exports_external.string().describe("the thread the request is in, thr_…"),
|
|
19060
19060
|
requestedAction: exports_external.string().optional().describe("a one-line 'what you're requesting'"),
|
|
@@ -19087,7 +19087,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19087
19087
|
{
|
|
19088
19088
|
name: "respond",
|
|
19089
19089
|
title: "Respond to a request",
|
|
19090
|
-
description: "Fulfill a request
|
|
19090
|
+
description: "Fulfill a contribution request by posting its response so the request can complete; review requests are answered by stamp, and mark_as_response binds a response that was already posted. For Computer evidence, pass computerSessionId/attachmentIds and place returned attachments[].markdown in the body where media belongs.",
|
|
19091
19091
|
inputSchema: {
|
|
19092
19092
|
requestId: exports_external.string().describe("the request id, req_…"),
|
|
19093
19093
|
type: exports_external.enum(CONTRIBUTION_TYPES).describe("the contribution type"),
|
|
@@ -19103,7 +19103,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19103
19103
|
{
|
|
19104
19104
|
name: "mark_as_response",
|
|
19105
19105
|
title: "Mark a contribution as a request's response",
|
|
19106
|
-
description: "
|
|
19106
|
+
description: "Bind an already-posted contribution to an OPEN request when it should count as a response but was not created through respond; this adds the fulfills relation and re-evaluates completion. Allowed only to the contribution author or request creator, and both objects must be in the same Thread.",
|
|
19107
19107
|
inputSchema: {
|
|
19108
19108
|
requestId: exports_external.string().describe("the open request, req_…"),
|
|
19109
19109
|
contributionId: exports_external.string().describe("the existing contribution that responds to it, con_…")
|
|
@@ -19115,7 +19115,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19115
19115
|
{
|
|
19116
19116
|
name: "cancel_request",
|
|
19117
19117
|
title: "Cancel a request",
|
|
19118
|
-
description: "Cancel an OPEN or SCHEDULED request you raised (or any such request
|
|
19118
|
+
description: "Cancel an OPEN or SCHEDULED request you raised (or any such request as org owner), withdrawing its recipient inbox items without notification. Completed or expired requests cannot be cancelled; success returns status=cancelled and a withdrawn count where 0 is valid.",
|
|
19119
19119
|
inputSchema: {
|
|
19120
19120
|
requestId: exports_external.string().describe("the open request to cancel, req_…")
|
|
19121
19121
|
},
|
|
@@ -19138,7 +19138,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19138
19138
|
{
|
|
19139
19139
|
name: "dismiss",
|
|
19140
19140
|
title: "Dismiss an inbox item",
|
|
19141
|
-
description: "
|
|
19141
|
+
description: "Dismiss one of your open inbox obligations without answering it; use this only when no response is needed, because it silently removes your inbox item but leaves the underlying request untouched. To answer, use respond or stamp a review request instead.",
|
|
19142
19142
|
inputSchema: {
|
|
19143
19143
|
inboxItemId: exports_external.string().describe("the inbox item to dismiss, inb_…")
|
|
19144
19144
|
},
|
|
@@ -19187,7 +19187,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19187
19187
|
{
|
|
19188
19188
|
name: "introduce",
|
|
19189
19189
|
title: "Introduce yourself",
|
|
19190
|
-
description:
|
|
19190
|
+
description: "Set your own identity charter, emoji, color, and capabilities so teammates can understand and route work to you; change them anytime. Write the charter ROLE-FIRST (what you are/do, not your name); display name remains human-managed and capabilities are free-form skill tags.",
|
|
19191
19191
|
inputSchema: {
|
|
19192
19192
|
emoji: exports_external.string().optional().describe("exactly one emoji that represents you, e.g. \uD83D\uDD2D"),
|
|
19193
19193
|
color: exports_external.string().optional().describe("an identity color key from the curated palette"),
|
|
@@ -19214,7 +19214,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19214
19214
|
{
|
|
19215
19215
|
name: "thread_get",
|
|
19216
19216
|
title: "Read a thread",
|
|
19217
|
-
description: "
|
|
19217
|
+
description: "READ ONLY: Read one Thread; full view returns transcript, requests, and artifacts, while compact returns bounded decision-ready context with distillate/recent items and supports cursored unchanged checks. Read it before contributing so you can answer open requests correctly; use contribution pagination only for full history.",
|
|
19218
19218
|
inputSchema: {
|
|
19219
19219
|
threadId: exports_external.string().describe("the thread id, e.g. thr_…"),
|
|
19220
19220
|
view: exports_external.enum(["full", "compact"]).optional().describe("full (default) = complete transcript; compact = bounded decision-ready context packet for recurring checks"),
|
|
@@ -19241,7 +19241,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19241
19241
|
{
|
|
19242
19242
|
name: "tree",
|
|
19243
19243
|
title: "Navigate the workspace tree",
|
|
19244
|
-
description: "
|
|
19244
|
+
description: "READ ONLY: Map Spaces to Topics to Threads and surface lanesForYou so you can orient before deeper reads; depth controls expansion, while openRequestsForYou and standouts help triage. In a large Space, choose the relevant Topic here, then scope recall to that Topic/Thread before targeted reads instead of inflating the map.",
|
|
19245
19245
|
inputSchema: {
|
|
19246
19246
|
space: exports_external.string().optional().describe("scope to one space id (spc_…)"),
|
|
19247
19247
|
topic: exports_external.string().optional().describe("scope to one topic id (top_…)"),
|
|
@@ -19254,7 +19254,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19254
19254
|
{
|
|
19255
19255
|
name: "members",
|
|
19256
19256
|
title: "List the people + agents in your org",
|
|
19257
|
-
description: "List everyone in your org
|
|
19257
|
+
description: "READ ONLY: List everyone in your org with profile id, human/agent identity, role, charter, and capabilities needed for routing. Use it to resolve profile ids for mentions or targeted requests; it cannot modify membership.",
|
|
19258
19258
|
inputSchema: {},
|
|
19259
19259
|
surfaces: ["mcp", "cli"],
|
|
19260
19260
|
toolset: "loop",
|
|
@@ -19446,7 +19446,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19446
19446
|
{
|
|
19447
19447
|
name: "space_create",
|
|
19448
19448
|
title: "Create a space",
|
|
19449
|
-
description: "Create a top-level
|
|
19449
|
+
description: "Create a top-level Space for a new collaboration area; org owner/admin only, with open/private visibility and optional seeded members (agents join directly, humans receive invites). After creation set Space guidance, contribution lanes, and Goals so the room has an operating model.",
|
|
19450
19450
|
inputSchema: {
|
|
19451
19451
|
title: exports_external.string().min(1).describe("the space title"),
|
|
19452
19452
|
purpose: exports_external.string().optional().describe("optional one-line purpose"),
|
|
@@ -19460,7 +19460,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19460
19460
|
{
|
|
19461
19461
|
name: "space_update",
|
|
19462
19462
|
title: "Edit a space's config",
|
|
19463
|
-
description: "Edit a
|
|
19463
|
+
description: "Edit a Space's purpose, title, or visibility; org owner/admin or that Space's admin only, and only supplied fields are patched. Use this for factual room metadata, including open/private; collaboration norms belong in Space guidance.",
|
|
19464
19464
|
inputSchema: {
|
|
19465
19465
|
spaceId: exports_external.string().describe("the space, spc_…"),
|
|
19466
19466
|
purpose: exports_external.string().optional().describe("one-line purpose — what this space is about"),
|
|
@@ -19510,7 +19510,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19510
19510
|
{
|
|
19511
19511
|
name: "space_get",
|
|
19512
19512
|
title: "Read a space",
|
|
19513
|
-
description: "
|
|
19513
|
+
description: "READ ONLY: Read a Space's durable context: purpose, guidance, contribution lanes, Topics, and full member roster with roles, capabilities, and charters. Use it after tree when you need the room's full norms or collaborator context; it cannot modify membership or guidance.",
|
|
19514
19514
|
inputSchema: {
|
|
19515
19515
|
spaceId: exports_external.string().min(1).describe("the space id")
|
|
19516
19516
|
},
|
|
@@ -19521,7 +19521,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19521
19521
|
{
|
|
19522
19522
|
name: "topic_get",
|
|
19523
19523
|
title: "Read a topic",
|
|
19524
|
-
description: "
|
|
19524
|
+
description: "READ ONLY: Read a Topic's details, guidance, parent+topic contribution lanes, Threads, open requests, and promoted artifacts. Use it to zoom into one area after tree; it cannot modify Topic state.",
|
|
19525
19525
|
inputSchema: {
|
|
19526
19526
|
topicId: exports_external.string().min(1).describe("the topic id")
|
|
19527
19527
|
},
|
|
@@ -19612,7 +19612,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19612
19612
|
{
|
|
19613
19613
|
name: "goal",
|
|
19614
19614
|
title: "Manage goals",
|
|
19615
|
-
description: "Create
|
|
19615
|
+
description: "Create or update a Goal, change its lifecycle, or link/unlink it to Spaces and Threads when 2+ Threads ladder to one outcome; prefer linking an existing Goal over creating a near-duplicate. Hard deletion is separate in goal_delete; use goal_get or goal_list for inspection.",
|
|
19616
19616
|
inputSchema: {
|
|
19617
19617
|
verb: exports_external.enum([
|
|
19618
19618
|
"create",
|
|
@@ -19780,7 +19780,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19780
19780
|
{
|
|
19781
19781
|
name: "curation",
|
|
19782
19782
|
title: "Curate the record",
|
|
19783
|
-
description: "
|
|
19783
|
+
description: "Curate one contribution with promote, demote, delete, or restore: promote marks a sparse \uD83C\uDF96️ standout, delete is soft-removal, and restore reverses it. Use promotion sparingly in deliberations; in a STANDING Thread, promoting a periodic distilling synthesis is the intended compression mechanism.",
|
|
19784
19784
|
inputSchema: {
|
|
19785
19785
|
verb: exports_external.enum(["promote", "demote", "delete", "restore"]).describe("which curation move"),
|
|
19786
19786
|
contributionId: exports_external.string().describe("the contribution, con_…")
|
|
@@ -19797,7 +19797,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19797
19797
|
{
|
|
19798
19798
|
name: "artifact",
|
|
19799
19799
|
title: "Create or edit an Artifact",
|
|
19800
|
-
description: "Create or edit a durable
|
|
19800
|
+
description: "Create or edit a durable versioned Artifact, or promote a Thread attachment; read artifact_get and its baseVersion before editing, while lifecycle/removal stay in artifact_transition and artifact_delete. Text edits replace source or apply exact-match patches atomically, file artifacts use contentRef, and computer-produced artifacts may cite computerSessionId.",
|
|
19801
19801
|
inputSchema: {
|
|
19802
19802
|
verb: exports_external.enum(["create", "edit", "promote_attachment"]).describe("which artifact move"),
|
|
19803
19803
|
title: exports_external.string().optional().describe("create: the artifact's title"),
|
|
@@ -19864,7 +19864,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19864
19864
|
{
|
|
19865
19865
|
name: "secrets",
|
|
19866
19866
|
title: "Manage encrypted Secrets",
|
|
19867
|
-
description: "Create, authorize, version, rotate, bind, and revoke first-class Arbor Secrets without revealing plaintext
|
|
19867
|
+
description: "Create, authorize, version, rotate, bind, and revoke first-class Arbor Secrets without revealing plaintext; set/rotate never echo values, and runtime access requires an explicit grant or binding separate from ownership. Organization/Profile owners administer their secrets; profile deactivation revokes owned secrets, and plaintext reveal is not supported.",
|
|
19868
19868
|
inputSchema: {
|
|
19869
19869
|
verb: exports_external.enum([
|
|
19870
19870
|
"list",
|
|
@@ -20170,7 +20170,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20170
20170
|
{
|
|
20171
20171
|
name: "app_activate",
|
|
20172
20172
|
title: "Activate a verified deployment",
|
|
20173
|
-
description: "
|
|
20173
|
+
description: "Activate a verified App deployment at its stable URL after health-checking the candidate. Pass the active deployment id just read (or null for the first release); retries resume the same pending activation and conflicting control changes are rejected.",
|
|
20174
20174
|
inputSchema: {
|
|
20175
20175
|
appId: exports_external.string().describe("target App, app_…"),
|
|
20176
20176
|
deploymentId: exports_external.string().describe("verified candidate, dep_…"),
|
|
@@ -20209,7 +20209,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20209
20209
|
{
|
|
20210
20210
|
name: "app_set_access",
|
|
20211
20211
|
title: "Change App access",
|
|
20212
|
-
description: "Change
|
|
20212
|
+
description: "Change an App's gateway access policy without redeploying code: space requires current Space membership, while public permits anonymous requests and may be listed or unlisted; durable Apps cannot be public. Arbor records who changed access and does not inject an Arbor identity into App code.",
|
|
20213
20213
|
inputSchema: {
|
|
20214
20214
|
appId: exports_external.string().describe("target App, app_…"),
|
|
20215
20215
|
access: exports_external.enum(["space", "public"]).describe("new gateway access"),
|
|
@@ -20222,7 +20222,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20222
20222
|
{
|
|
20223
20223
|
name: "app_reset_state",
|
|
20224
20224
|
title: "Reset durable App state",
|
|
20225
|
-
description: "Delete one durable App facet's isolated SQLite
|
|
20225
|
+
description: "Delete one durable App facet's isolated SQLite state after Arbor captures a 30-day recovery point; only the App creator or an Org owner/admin may do this. Read app_get first and pass expectedGeneration plus a stable idempotencyKey; interrupted retries resume the same reset, and release/archive changes are blocked while pending.",
|
|
20226
20226
|
inputSchema: {
|
|
20227
20227
|
appId: exports_external.string().describe("durable App, app_…"),
|
|
20228
20228
|
expectedGeneration: exports_external.number().int().min(0).describe("state generation from app_get"),
|
|
@@ -20235,7 +20235,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20235
20235
|
{
|
|
20236
20236
|
name: "app_restore_state",
|
|
20237
20237
|
title: "Restore durable App state",
|
|
20238
|
-
description: "Restore the latest
|
|
20238
|
+
description: "Restore the latest recoverable App state reset, discarding state written after it; only the App creator or an Org owner/admin may do this. Read app_get first and pass resetId plus expectedGeneration; recovery lasts 30 days only while that reset is latest and the active release is unchanged, and retries reuse the same idempotencyKey.",
|
|
20239
20239
|
inputSchema: {
|
|
20240
20240
|
appId: exports_external.string().describe("durable App, app_…"),
|
|
20241
20241
|
resetId: exports_external.string().describe("latest recoverable reset from app_get, rst_…"),
|
|
@@ -20258,7 +20258,7 @@ var ACTION_DEFINITIONS = [
|
|
|
20258
20258
|
{
|
|
20259
20259
|
name: "charter",
|
|
20260
20260
|
title: "Set the guidance surfaces",
|
|
20261
|
-
description: "
|
|
20261
|
+
description: "Write collaboration guidance: space_charter for a member's per-Space operating charter, space/topic guidance for shared norms, space/topic lanes for durable contribution lanes, or ways_to_help for one Thread's temporary help list. These writes replace the selected value/list, and an empty string/list clears it.",
|
|
20262
20262
|
inputSchema: {
|
|
20263
20263
|
verb: exports_external.enum([
|
|
20264
20264
|
"space_charter",
|
package/package.json
CHANGED