@lambdacurry/arbor 0.3.7 → 0.4.0

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 +63 -5
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -1608,6 +1608,9 @@ var contributions = sqliteTable("contributions", {
1608
1608
  mentions: text("mentions", { mode: "json" }).$type(),
1609
1609
  attachmentIds: text("attachment_ids", { mode: "json" }).$type(),
1610
1610
  editedAt: ts("edited_at"),
1611
+ standoutAt: ts("standout_at"),
1612
+ standoutBy: text("standout_by").references(() => profiles.id),
1613
+ deletedAt: ts("deleted_at"),
1611
1614
  createdAt: ts("created_at").notNull()
1612
1615
  }, (t) => ({ threadIdx: index("contributions_thread_idx").on(t.threadId) }));
1613
1616
  var reviews = sqliteTable("reviews", {
@@ -16226,6 +16229,31 @@ var ACTIONS = [
16226
16229
  surfaces: ["mcp", "cli"],
16227
16230
  run: forward("reaction.toggle")
16228
16231
  },
16232
+ {
16233
+ name: "create_topic",
16234
+ title: "Create a topic",
16235
+ description: "Open a NEW topic in a space — a durable area of work that will hold multiple threads. Check `tree` first and prefer an existing topic: structure should be scarce, and a topic that holds one thread was probably a thread.",
16236
+ inputSchema: {
16237
+ spaceId: exports_external.string().describe("the space to create the topic in, spc_…"),
16238
+ title: exports_external.string().min(1).describe("the topic's name — an area of work, not a question"),
16239
+ purpose: exports_external.string().optional().describe("one line on what belongs here")
16240
+ },
16241
+ surfaces: ["mcp", "cli"],
16242
+ run: forward("topic.create")
16243
+ },
16244
+ {
16245
+ name: "create_thread",
16246
+ title: "Open a thread",
16247
+ description: "Open a NEW deliberation thread under a topic, named by its OBJECTIVE (the question to settle or outcome to reach). Check `tree` first and prefer contributing to an existing thread — open a new one only when the deliberation genuinely doesn't fit anywhere; then make the first contribution yourself.",
16248
+ inputSchema: {
16249
+ spaceId: exports_external.string().describe("the space, spc_…"),
16250
+ topicId: exports_external.string().describe("the topic to file it under, top_…"),
16251
+ title: exports_external.string().min(1).describe("the thread title — the question/objective, not a status"),
16252
+ objective: exports_external.string().min(1).describe("what settled/done looks like for this thread")
16253
+ },
16254
+ surfaces: ["mcp", "cli"],
16255
+ run: forward("thread.create")
16256
+ },
16229
16257
  {
16230
16258
  name: "create_artifact",
16231
16259
  title: "Create an artifact",
@@ -16266,8 +16294,8 @@ var ACTIONS = [
16266
16294
  },
16267
16295
  {
16268
16296
  name: "promote_contribution",
16269
- title: "Promote a contribution to a standout artifact",
16270
- description: "Promote a contribution into a durable, recallable artifact — it becomes a `promoted` artifact owned by that contribution's author and a \uD83C\uDF96️ standout in the thread. Reach for this when a contribution is worth retaining and citing as one of the thread's outputs. MANY contributions in a thread can be promoted (there's no single 'answer'); idempotent — re-promoting the same contribution returns the same artifact.",
16297
+ title: "Promote a contribution to a \uD83C\uDF96️ standout",
16298
+ description: "Mark a contribution a \uD83C\uDF96️ standoutrecognition that boosts it in recall and flags it as one of the thread's outputs (AD-140: promotion is a MARK on the contribution, not a separate artifact). Reach for this when a contribution is worth recognizing. MANY contributions in a thread can be standouts (there's no single 'answer'); idempotent — re-promoting is a quiet no-op.",
16271
16299
  inputSchema: {
16272
16300
  contributionId: exports_external.string().describe("the contribution to promote, con_… (its thread + author are derived)")
16273
16301
  },
@@ -16276,14 +16304,34 @@ var ACTIONS = [
16276
16304
  },
16277
16305
  {
16278
16306
  name: "demote_contribution",
16279
- title: "Demote a promoted contribution",
16280
- description: "The deliberate UNDO of promote_contribution: removes the contribution's standout mark and archives its artifact (a restorable lifecycle move, not a delete). Reach for this when a promotion was premature or superseded. Idempotent — demoting an unpromoted contribution is a quiet no-op.",
16307
+ title: "Demote a standout contribution",
16308
+ description: "The deliberate UNDO of promote_contribution: clear the \uD83C\uDF96️ standout mark (AD-140 no artifact is touched; promotion never minted one). Reach for this when a promotion was premature. Idempotent — demoting a non-standout contribution is a quiet no-op.",
16281
16309
  inputSchema: {
16282
- contributionId: exports_external.string().describe("the promoted contribution to demote, con_…")
16310
+ contributionId: exports_external.string().describe("the standout contribution to demote, con_…")
16283
16311
  },
16284
16312
  surfaces: ["mcp", "cli"],
16285
16313
  run: forward("contribution.demote")
16286
16314
  },
16315
+ {
16316
+ name: "delete_contribution",
16317
+ title: "Remove a contribution",
16318
+ description: "Soft-delete your own contribution — it's removed from the thread and from recall but stays audited and RESTORABLE (AD-141). A referenced contribution (something cites/replies to/stamps it) leaves a quiet tombstone so nothing is orphaned; a leaf one vanishes. Author-only — unless you're the org owner, who may remove any contribution for moderation. Use this to retire something posted in error or no longer worth standing behind.",
16319
+ inputSchema: {
16320
+ contributionId: exports_external.string().describe("the contribution to remove, con_…")
16321
+ },
16322
+ surfaces: ["mcp", "cli"],
16323
+ run: forward("contribution.delete")
16324
+ },
16325
+ {
16326
+ name: "restore_contribution",
16327
+ title: "Restore a removed contribution",
16328
+ description: "Undo a removal — clear the tombstone and bring the contribution back into the thread and recall (AD-141). Author-only, or the org owner. The deliberate inverse of delete_contribution.",
16329
+ inputSchema: {
16330
+ contributionId: exports_external.string().describe("the removed contribution to restore, con_…")
16331
+ },
16332
+ surfaces: ["mcp", "cli"],
16333
+ run: forward("contribution.restore")
16334
+ },
16287
16335
  {
16288
16336
  name: "request",
16289
16337
  title: "Ask for a review",
@@ -16313,6 +16361,16 @@ var ACTIONS = [
16313
16361
  surfaces: ["mcp", "cli"],
16314
16362
  run: forward("request.respond")
16315
16363
  },
16364
+ {
16365
+ name: "cancel_request",
16366
+ title: "Cancel a request",
16367
+ description: "Cancel an OPEN request you raised (or any open request, if you're the org owner) — it moves to a terminal `cancelled` state and the inbox items it fanned out are SILENTLY withdrawn (they leave recipients' inboxes, no notification). Use this when an ask is no longer needed. Only open requests can be cancelled (a completed/expired one can't).",
16368
+ inputSchema: {
16369
+ requestId: exports_external.string().describe("the open request to cancel, req_…")
16370
+ },
16371
+ surfaces: ["mcp", "cli"],
16372
+ run: forward("request.cancel")
16373
+ },
16316
16374
  {
16317
16375
  name: "inbox",
16318
16376
  title: "List your inbox",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.3.7",
3
+ "version": "0.4.0",
4
4
  "description": "The Arbor CLI \u2014 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": {