@lambdacurry/arbor 0.21.10 → 0.21.11

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 +36 -10
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -17207,6 +17207,17 @@ function date4(params) {
17207
17207
 
17208
17208
  // ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
17209
17209
  config(en_default());
17210
+ // ../actions/src/external-read-defaults.ts
17211
+ var EXTERNAL_DEFAULT_PAGE_SIZE = 50;
17212
+ var EXTERNAL_DEFAULT_CONTRIB_LIMIT = 50;
17213
+ var EXTERNAL_DEFAULT_THREAD_VIEW = "compact";
17214
+ var EXTERNAL_READ_DEFAULTS_BY_OPERATION = {};
17215
+ function recordExternalReadDefaults(operation, defaults) {
17216
+ if (!operation || !defaults)
17217
+ return;
17218
+ EXTERNAL_READ_DEFAULTS_BY_OPERATION[operation] = defaults;
17219
+ }
17220
+
17210
17221
  // ../actions/src/output-schemas.ts
17211
17222
  var id = exports_external.string();
17212
17223
  var timestamp = exports_external.string();
@@ -18507,7 +18518,6 @@ var MCP_OUTPUT_SCHEMAS = {
18507
18518
  function outputSchemaFor(actionName) {
18508
18519
  return MCP_OUTPUT_SCHEMAS[actionName];
18509
18520
  }
18510
-
18511
18521
  // ../actions/src/output-shaping.ts
18512
18522
  function record2(value) {
18513
18523
  return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
@@ -18935,7 +18945,15 @@ function isProseList(schema) {
18935
18945
  return PROSE_LISTS.has(schema);
18936
18946
  }
18937
18947
  function forward(operation) {
18938
- return (ex, input) => ex.call(operation, input);
18948
+ const run = (ex, input) => ex.call(operation, input);
18949
+ run.operation = operation;
18950
+ return run;
18951
+ }
18952
+ function forwardedOperation(run) {
18953
+ if (!("operation" in run))
18954
+ return;
18955
+ const value = run.operation;
18956
+ return typeof value === "string" ? value : undefined;
18939
18957
  }
18940
18958
  function dispatch(map2, reshape) {
18941
18959
  return (ex, input) => {
@@ -18991,8 +19009,9 @@ function runAdminFeedback(ex, input) {
18991
19009
  }
18992
19010
  var NOTIFICATION_TRIAGE_DESCRIPTION = "READ ONLY: List your awareness feed newest first with unseen count and derived triage class: `settled-context` = settled Thread context; `owed-by-me` = an open request pointing to `inbox`; `judgment-available` = live engagement inviting judgment; `closed-loop` = your request completed; `room-motion` = ambient activity. Notifications are FYI, not a second obligation surface: `inbox` alone contains work owed by you; this cannot mark notifications read or modify inbox obligations.";
18993
19011
  var PAGINATION_INPUT = {
18994
- limit: exports_external.number().int().min(1).optional().describe("max items to return enables pagination"),
18995
- cursor: exports_external.string().optional().describe("opaque cursor from a prior response's nextCursor (use with --limit)")
19012
+ limit: exports_external.number().int().min(1).optional().describe(`max items to return. MCP/CLI/API default to ${EXTERNAL_DEFAULT_PAGE_SIZE} and return nextCursor when more remain; pass all=true/--all for the complete list. In-process web omit is still a compatibility full read`),
19013
+ cursor: exports_external.string().optional().describe("opaque cursor from a prior response's nextCursor (use with --limit)"),
19014
+ all: exports_external.boolean().optional().describe("explicit complete retrieval — skip the bounded default page. Prefer limit+cursor unless you need the whole collection")
18996
19015
  };
18997
19016
  var LIVE_PREVIEW_CONFIG_INPUT = {
18998
19017
  livePreview: exports_external.object({
@@ -20216,14 +20235,19 @@ var ACTION_DEFINITIONS = [
20216
20235
  {
20217
20236
  name: "thread_get",
20218
20237
  title: "Read a thread",
20219
- 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.",
20238
+ description: "READ ONLY: Read one Thread as compact current context (distillate, requests, artifacts, recent tail, cursored unchanged checks) not the durable transcript; pass view=full to page history (contribLimit default 50) or all=true for the complete transcript. Read it before contributing so you can answer open requests correctly.",
20220
20239
  inputSchema: {
20221
20240
  threadId: exports_external.string().describe("the thread id, e.g. thr_…"),
20222
- view: exports_external.enum(["full", "compact"]).optional().describe("full (default) = complete transcript; compact = bounded decision-ready context packet for recurring checks"),
20241
+ view: exports_external.enum(["full", "compact"]).optional().describe("MCP/CLI/API default compact = bounded decision-ready context; full = transcript page"),
20223
20242
  cursor: exports_external.string().optional().describe("compact reads only: cursor from the previous compact response; if context is unchanged the response collapses to a tiny unchanged envelope"),
20224
20243
  recentLimit: exports_external.number().int().min(1).max(20).optional().describe("compact reads only: latest contributions to include (default 6, max 20)"),
20225
- contribLimit: exports_external.number().int().positive().optional().describe("full reads only: max contributions to return (AD-151 keyset paging) omit to load the whole thread"),
20226
- contribCursor: exports_external.string().optional().describe("full reads only: continuation cursor from a previous page's contributionPage.nextCursor")
20244
+ contribLimit: exports_external.number().int().positive().optional().describe(`full reads only: max contributions to return (AD-151 keyset paging). MCP/CLI/API default to ${EXTERNAL_DEFAULT_CONTRIB_LIMIT}; pass all=true for the whole thread`),
20245
+ contribCursor: exports_external.string().optional().describe("full reads only: continuation cursor from a previous page's contributionPage.nextCursor"),
20246
+ all: exports_external.boolean().optional().describe("explicit complete transcript on view=full — skip the bounded contribLimit. Prefer contribLimit+contribCursor unless you need every contribution")
20247
+ },
20248
+ externalReadDefaults: {
20249
+ view: EXTERNAL_DEFAULT_THREAD_VIEW,
20250
+ contribLimit: EXTERNAL_DEFAULT_CONTRIB_LIMIT
20227
20251
  },
20228
20252
  surfaces: ["mcp", "cli"],
20229
20253
  toolset: "loop",
@@ -21333,15 +21357,17 @@ var ACTIONS = ACTION_DEFINITIONS.map((action) => {
21333
21357
  if (action.requiresCapability && !action.surfaces.includes("mcp")) {
21334
21358
  throw new Error(`${action.name}: requiresCapability is an MCP catalog gate`);
21335
21359
  }
21360
+ const externalReadDefaults = action.inputSchema.limit === PAGINATION_INPUT.limit ? { ...action.externalReadDefaults, limit: EXTERNAL_DEFAULT_PAGE_SIZE } : action.externalReadDefaults;
21361
+ recordExternalReadDefaults(forwardedOperation(action.run), externalReadDefaults);
21336
21362
  if (!action.surfaces.some((surface) => surface === "mcp" || surface === "computer-mcp")) {
21337
- return action;
21363
+ return externalReadDefaults ? { ...action, externalReadDefaults } : action;
21338
21364
  }
21339
21365
  const outputSchema = outputSchemaFor(action.name);
21340
21366
  if (!outputSchema)
21341
21367
  throw new Error(`${action.name}: MCP action is missing an output schema`);
21342
21368
  const annotations = mcpAnnotationsFor(action.name);
21343
21369
  const description = annotations.readOnlyHint && !action.description.startsWith("READ ONLY") ? `READ ONLY: ${action.description}` : action.description;
21344
- return { ...action, description, outputSchema, annotations };
21370
+ return { ...action, externalReadDefaults, description, outputSchema, annotations };
21345
21371
  });
21346
21372
 
21347
21373
  // src/config.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.21.10",
3
+ "version": "0.21.11",
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
  "keywords": [
6
6
  "agents",