@lambdacurry/arbor 0.24.27 → 0.24.29
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 +94 -14
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -8544,12 +8544,22 @@ var topics = sqliteTable("topics", {
|
|
|
8544
8544
|
guidance: text("guidance", { mode: "json" }).$type().notNull().default([]),
|
|
8545
8545
|
contributionLanes: text("contribution_lanes", { mode: "json" }).$type().notNull().default([]),
|
|
8546
8546
|
workflowId: text("workflow_id"),
|
|
8547
|
+
visibility: text("visibility").$type().notNull().default("open"),
|
|
8548
|
+
ownerProfileId: text("owner_profile_id").references(() => profiles.id),
|
|
8547
8549
|
archivedAt: ts("archived_at"),
|
|
8548
8550
|
createdAt: ts("created_at").notNull()
|
|
8549
8551
|
}, (t) => ({
|
|
8550
8552
|
spaceIdx: index("topics_space_idx").on(t.spaceId),
|
|
8551
8553
|
workflowIdx: index("topics_workflow_idx").on(t.workflowId)
|
|
8552
8554
|
}));
|
|
8555
|
+
var topicMemberships = sqliteTable("topic_memberships", {
|
|
8556
|
+
topicId: text("topic_id").notNull().references(() => topics.id, { onDelete: "cascade" }),
|
|
8557
|
+
profileId: text("profile_id").notNull().references(() => profiles.id, { onDelete: "cascade" }),
|
|
8558
|
+
createdAt: ts("created_at").notNull()
|
|
8559
|
+
}, (t) => ({
|
|
8560
|
+
pk: primaryKey({ columns: [t.topicId, t.profileId] }),
|
|
8561
|
+
profileIdx: index("topic_memberships_profile_idx").on(t.profileId)
|
|
8562
|
+
}));
|
|
8553
8563
|
var initiatives = sqliteTable("initiatives", {
|
|
8554
8564
|
id: text("id").primaryKey(),
|
|
8555
8565
|
orgId: text("org_id").notNull().references(() => orgs.id),
|
|
@@ -11374,7 +11384,8 @@ function buildOutputSchemas() {
|
|
|
11374
11384
|
id,
|
|
11375
11385
|
title: string2().optional(),
|
|
11376
11386
|
purpose: nullableString.optional(),
|
|
11377
|
-
workflowId: nullableString.optional()
|
|
11387
|
+
workflowId: nullableString.optional(),
|
|
11388
|
+
visibility: _enum(["open", "private"]).optional()
|
|
11378
11389
|
}),
|
|
11379
11390
|
create_thread: looseObject({ threadId: id, url: string2().optional() }),
|
|
11380
11391
|
thread_update: looseObject({
|
|
@@ -11696,6 +11707,11 @@ function buildOutputSchemas() {
|
|
|
11696
11707
|
goal_delete: looseObject({ ok: boolean2() }),
|
|
11697
11708
|
membership: looseObject({
|
|
11698
11709
|
spaceId: id.optional(),
|
|
11710
|
+
topicId: id.optional(),
|
|
11711
|
+
visibility: _enum(["open", "private"]).optional(),
|
|
11712
|
+
members: array(jsonObject).optional(),
|
|
11713
|
+
added: array(string2()).optional(),
|
|
11714
|
+
removed: string2().optional(),
|
|
11699
11715
|
profileId: id.optional(),
|
|
11700
11716
|
role: string2().optional(),
|
|
11701
11717
|
left: boolean2().optional(),
|
|
@@ -12115,9 +12131,12 @@ function buildOutputSchemas() {
|
|
|
12115
12131
|
replayed: boolean2(),
|
|
12116
12132
|
execution: _enum(["shared", "isolated"]),
|
|
12117
12133
|
source: computerRunSource,
|
|
12118
|
-
durability: computerRunDurabilitySummary,
|
|
12119
|
-
status: string2()
|
|
12120
|
-
|
|
12134
|
+
durability: computerRunDurabilitySummary.optional().describe("Present when a Run result is available; absent during pending admission."),
|
|
12135
|
+
status: string2().describe("provisioning means accepted pending admission, not readiness for commands."),
|
|
12136
|
+
runCreated: boolean2().optional().describe("Required while provisioning: whether a Run record was observed when start returned."),
|
|
12137
|
+
phase: literal("run.admission").optional().describe("Required while provisioning."),
|
|
12138
|
+
nextAction: literal("computer_run_receipt").optional().describe("Required while provisioning: observe with exactly one of runStartId or runId until admitted before executing.")
|
|
12139
|
+
}).refine((result) => result.status === "provisioning" ? result.execution === "isolated" && typeof result.runCreated === "boolean" && result.phase === "run.admission" && result.nextAction === "computer_run_receipt" && result.durability === undefined : result.durability !== undefined && result.phase === undefined && result.nextAction === undefined, "Pending admission requires stable identities and receipt guidance; other Run results require durability."),
|
|
12121
12140
|
computer_run_suspend: looseObject({
|
|
12122
12141
|
runId: id,
|
|
12123
12142
|
runtime: computerRunRuntime,
|
|
@@ -12809,6 +12828,18 @@ var OUTPUT_SHAPERS = {
|
|
|
12809
12828
|
]);
|
|
12810
12829
|
},
|
|
12811
12830
|
computer_run_start: (result) => {
|
|
12831
|
+
if (result.status === "provisioning") {
|
|
12832
|
+
return selected(result, [
|
|
12833
|
+
"runStartId",
|
|
12834
|
+
"runId",
|
|
12835
|
+
"runCreated",
|
|
12836
|
+
"replayed",
|
|
12837
|
+
"execution",
|
|
12838
|
+
"status",
|
|
12839
|
+
"phase",
|
|
12840
|
+
"nextAction"
|
|
12841
|
+
]);
|
|
12842
|
+
}
|
|
12812
12843
|
const run = record2(result.run) ?? {};
|
|
12813
12844
|
const durability = record2(run.durability) ?? {};
|
|
12814
12845
|
return defined([
|
|
@@ -14056,7 +14087,8 @@ var ACTION_DEFINITIONS = [
|
|
|
14056
14087
|
spaceId: string2().describe("the space to create the topic in, spc_…"),
|
|
14057
14088
|
title: string2().min(1).describe("the topic's name — an area of work, not a question"),
|
|
14058
14089
|
purpose: string2().optional().describe("what this Topic accomplishes and what belongs here, leading with its primary role — Direction, Delivery, Operations, Intake, Coordination, or Learning; name an external or split source of truth or a handoff boundary only when it materially matters"),
|
|
14059
|
-
workflow: string2().optional().describe("a workflow id from `space_get.workflows` (pick by summary) — a built-in such as `queue` or a catalog `wfl_…`; must already be attached to this Space")
|
|
14090
|
+
workflow: string2().optional().describe("a workflow id from `space_get.workflows` (pick by summary) — a built-in such as `queue` or a catalog `wfl_…`; must already be attached to this Space"),
|
|
14091
|
+
visibility: _enum(["open", "private"]).optional().describe("`open` (default): every Space member sees it. `private`: only its roster plus the Space's admins and the org's owner/admins — creating one takes Space admin; you start on the roster")
|
|
14060
14092
|
},
|
|
14061
14093
|
surfaces: ["mcp", "cli"],
|
|
14062
14094
|
toolset: "structure",
|
|
@@ -14071,12 +14103,48 @@ var ACTION_DEFINITIONS = [
|
|
|
14071
14103
|
title: string2().min(1).optional().describe("a new title — an area of work, not a question"),
|
|
14072
14104
|
purpose: string2().optional().describe("a new purpose — what this Topic accomplishes and what belongs here, leading with its primary role (Direction, Delivery, Operations, Intake, Coordination, or Learning); name an external or split source of truth or a handoff boundary only when it materially matters"),
|
|
14073
14105
|
workflow: string2().nullable().optional().describe("a workflow id from `space_get.workflows` (pick by summary) — a built-in such as `queue` or a catalog `wfl_…`; must be attached to the Space; blank or null inherits the Space default"),
|
|
14074
|
-
archived: boolean2().optional().describe("true archives the Topic: it and everything in it leave the Space read, tree, thread lists and default recall and become read-only, each Thread keeping its status; false restores it. Org owner/admin or Space admin only, as the only change; refused while a Run in it is active")
|
|
14106
|
+
archived: boolean2().optional().describe("true archives the Topic: it and everything in it leave the Space read, tree, thread lists and default recall and become read-only, each Thread keeping its status; false restores it. Org owner/admin or Space admin only, as the only change; refused while a Run in it is active"),
|
|
14107
|
+
visibility: _enum(["open", "private"]).optional().describe("Space admin only: `private` limits the Topic (its threads, contributions, artifacts) to its roster plus Space/org admins; `open` shows it to every Space member again")
|
|
14075
14108
|
},
|
|
14076
14109
|
surfaces: ["mcp", "cli"],
|
|
14077
14110
|
toolset: "spaces",
|
|
14078
14111
|
run: forward("topic.setConfig")
|
|
14079
14112
|
},
|
|
14113
|
+
{
|
|
14114
|
+
name: "topic_members",
|
|
14115
|
+
title: "List a topic's members",
|
|
14116
|
+
description: "List a Topic's roster — who can see a PRIVATE Topic besides the Space's admins and the org's owner/admins (who always can). An open Topic is visible to every Space member; its roster is kept for when it is made private.",
|
|
14117
|
+
inputSchema: {
|
|
14118
|
+
topicId: string2().describe("the topic, top_…")
|
|
14119
|
+
},
|
|
14120
|
+
surfaces: ["cli"],
|
|
14121
|
+
toolset: "spaces",
|
|
14122
|
+
run: forward("topic.members")
|
|
14123
|
+
},
|
|
14124
|
+
{
|
|
14125
|
+
name: "add_to_topic",
|
|
14126
|
+
title: "Add members to a topic",
|
|
14127
|
+
description: "Space admin only: admit Space members to a private Topic's roster so they can see its threads, contributions, and artifacts. Each profile must already be a member of the Topic's Space (add them to the Space first).",
|
|
14128
|
+
inputSchema: {
|
|
14129
|
+
topicId: string2().describe("the topic, top_…"),
|
|
14130
|
+
profileIds: array(string2()).min(1).max(20).describe("profile ids to admit, prof_… (Space members only; at most 20)")
|
|
14131
|
+
},
|
|
14132
|
+
surfaces: ["cli"],
|
|
14133
|
+
toolset: "spaces",
|
|
14134
|
+
run: forward("topic.addMembers")
|
|
14135
|
+
},
|
|
14136
|
+
{
|
|
14137
|
+
name: "remove_from_topic",
|
|
14138
|
+
title: "Remove a member from a topic",
|
|
14139
|
+
description: "Space admin only: take a profile off a Topic's roster. While the Topic is private they stop seeing it, unless they administer the Space or the org.",
|
|
14140
|
+
inputSchema: {
|
|
14141
|
+
topicId: string2().describe("the topic, top_…"),
|
|
14142
|
+
profileId: string2().describe("the profile to remove, prof_…")
|
|
14143
|
+
},
|
|
14144
|
+
surfaces: ["cli"],
|
|
14145
|
+
toolset: "spaces",
|
|
14146
|
+
run: forward("topic.removeMember")
|
|
14147
|
+
},
|
|
14080
14148
|
{
|
|
14081
14149
|
name: "set_topic_guidance",
|
|
14082
14150
|
title: "Set a topic's guidance",
|
|
@@ -15795,13 +15863,22 @@ var ACTION_DEFINITIONS = [
|
|
|
15795
15863
|
},
|
|
15796
15864
|
{
|
|
15797
15865
|
name: "membership",
|
|
15798
|
-
title: "Space membership moves",
|
|
15799
|
-
description: "Join an open Space, add
|
|
15866
|
+
title: "Space and Topic membership moves",
|
|
15867
|
+
description: "Join an open Space, add members, or accept an invitation; on a private Topic read its roster (topic_members) or, as a Space admin, add or remove members (topic_add, topic_remove). Leave via space_leave; list with space_list_open or space_invitation_list.",
|
|
15800
15868
|
inputSchema: {
|
|
15801
|
-
verb: _enum([
|
|
15869
|
+
verb: _enum([
|
|
15870
|
+
"join",
|
|
15871
|
+
"add_member",
|
|
15872
|
+
"add_members",
|
|
15873
|
+
"accept_invite",
|
|
15874
|
+
"topic_members",
|
|
15875
|
+
"topic_add",
|
|
15876
|
+
"topic_remove"
|
|
15877
|
+
]).describe("which membership move to make"),
|
|
15802
15878
|
spaceId: string2().optional().describe("join/add_member/add_members: the Space, spc_…"),
|
|
15803
|
-
|
|
15804
|
-
|
|
15879
|
+
topicId: string2().optional().describe("topic_members/topic_add/topic_remove: the Topic, top_…"),
|
|
15880
|
+
profileId: string2().optional().describe("add_member/topic_remove: who, prof_…"),
|
|
15881
|
+
profileIds: array(string2()).optional().describe("add_members: who to add — agents join directly, people are invited; topic_add: Space members to admit (at most 20), prof_…"),
|
|
15805
15882
|
invitationId: string2().optional().describe("accept_invite: the invitation, sinv_…")
|
|
15806
15883
|
},
|
|
15807
15884
|
surfaces: ["mcp"],
|
|
@@ -15810,7 +15887,10 @@ var ACTION_DEFINITIONS = [
|
|
|
15810
15887
|
join: "space.join",
|
|
15811
15888
|
add_member: "space.addMember",
|
|
15812
15889
|
add_members: "space.addMembers",
|
|
15813
|
-
accept_invite: "space.acceptInvite"
|
|
15890
|
+
accept_invite: "space.acceptInvite",
|
|
15891
|
+
topic_members: "topic.members",
|
|
15892
|
+
topic_add: "topic.addMembers",
|
|
15893
|
+
topic_remove: "topic.removeMember"
|
|
15814
15894
|
})
|
|
15815
15895
|
},
|
|
15816
15896
|
{
|
|
@@ -16669,7 +16749,7 @@ var ACTIONS = ACTION_DEFINITIONS.map((action) => {
|
|
|
16669
16749
|
});
|
|
16670
16750
|
|
|
16671
16751
|
// ../actions/src/retention-entry.ts
|
|
16672
|
-
var ARBOR_VERSION = "0.24.
|
|
16752
|
+
var ARBOR_VERSION = "0.24.29";
|
|
16673
16753
|
var historyPolicySchema = _enum(["full", "checkpoint"]).optional().describe("text Artifacts: future history retention policy; full retains every source snapshot, checkpoint keeps metadata for every revision and source only when explicitly retained");
|
|
16674
16754
|
var retainSourceSchema = boolean2().optional().describe("edit: in checkpoint mode, retain this newly minted content revision's source");
|
|
16675
16755
|
var checkpointSchema = boolean2().optional().describe("edit: retain the exact current version source without incrementing content version");
|
|
@@ -17077,7 +17157,7 @@ function dispositionFilename(value) {
|
|
|
17077
17157
|
// package.json
|
|
17078
17158
|
var package_default = {
|
|
17079
17159
|
name: "@lambdacurry/arbor",
|
|
17080
|
-
version: "0.24.
|
|
17160
|
+
version: "0.24.29",
|
|
17081
17161
|
description: "The Arbor CLI — a shared workspace for people and agents. The human + headless-agent write path over Arbor's guarded operation surface.",
|
|
17082
17162
|
keywords: [
|
|
17083
17163
|
"agents",
|
package/package.json
CHANGED