@xrkseek/harness 0.7.8 → 0.7.10

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 (155) hide show
  1. package/node_modules/@xrkseek/core-tools/dist/output-bound.d.ts +4 -1
  2. package/node_modules/@xrkseek/core-tools/dist/output-bound.d.ts.map +1 -1
  3. package/node_modules/@xrkseek/core-tools/dist/output-bound.js +19 -5
  4. package/node_modules/@xrkseek/core-tools/dist/output-bound.js.map +1 -1
  5. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js +2 -2
  6. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js.map +1 -1
  7. package/node_modules/@xrkseek/exec-memory/dist/index.d.ts +2 -2
  8. package/node_modules/@xrkseek/exec-memory/dist/index.d.ts.map +1 -1
  9. package/node_modules/@xrkseek/exec-memory/dist/index.js +2 -2
  10. package/node_modules/@xrkseek/exec-memory/dist/index.js.map +1 -1
  11. package/node_modules/@xrkseek/exec-memory/dist/layered.d.ts +20 -3
  12. package/node_modules/@xrkseek/exec-memory/dist/layered.d.ts.map +1 -1
  13. package/node_modules/@xrkseek/exec-memory/dist/layered.js +46 -17
  14. package/node_modules/@xrkseek/exec-memory/dist/layered.js.map +1 -1
  15. package/node_modules/@xrkseek/exec-memory/dist/store.d.ts +17 -0
  16. package/node_modules/@xrkseek/exec-memory/dist/store.d.ts.map +1 -1
  17. package/node_modules/@xrkseek/exec-memory/dist/store.js +35 -14
  18. package/node_modules/@xrkseek/exec-memory/dist/store.js.map +1 -1
  19. package/node_modules/@xrkseek/exec-memory/dist/tools.d.ts.map +1 -1
  20. package/node_modules/@xrkseek/exec-memory/dist/tools.js +20 -8
  21. package/node_modules/@xrkseek/exec-memory/dist/tools.js.map +1 -1
  22. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.d.ts +60 -0
  23. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.d.ts.map +1 -0
  24. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.js +393 -0
  25. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.js.map +1 -0
  26. package/node_modules/@xrkseek/exec-voice/dist/engine-ids.d.ts.map +1 -1
  27. package/node_modules/@xrkseek/exec-voice/dist/engine-ids.js +1 -0
  28. package/node_modules/@xrkseek/exec-voice/dist/engine-ids.js.map +1 -1
  29. package/node_modules/@xrkseek/exec-voice/dist/engines.d.ts +1 -1
  30. package/node_modules/@xrkseek/exec-voice/dist/engines.d.ts.map +1 -1
  31. package/node_modules/@xrkseek/exec-voice/dist/engines.js +19 -1
  32. package/node_modules/@xrkseek/exec-voice/dist/engines.js.map +1 -1
  33. package/node_modules/@xrkseek/exec-voice/dist/format.js +1 -1
  34. package/node_modules/@xrkseek/exec-voice/dist/format.js.map +1 -1
  35. package/node_modules/@xrkseek/exec-voice/dist/index.d.ts +1 -0
  36. package/node_modules/@xrkseek/exec-voice/dist/index.d.ts.map +1 -1
  37. package/node_modules/@xrkseek/exec-voice/dist/index.js +1 -0
  38. package/node_modules/@xrkseek/exec-voice/dist/index.js.map +1 -1
  39. package/node_modules/@xrkseek/exec-voice/dist/openai-http.d.ts.map +1 -1
  40. package/node_modules/@xrkseek/exec-voice/dist/openai-http.js +1 -0
  41. package/node_modules/@xrkseek/exec-voice/dist/openai-http.js.map +1 -1
  42. package/node_modules/@xrkseek/exec-voice/dist/readiness.d.ts +1 -1
  43. package/node_modules/@xrkseek/exec-voice/dist/readiness.d.ts.map +1 -1
  44. package/node_modules/@xrkseek/exec-voice/dist/readiness.js +13 -1
  45. package/node_modules/@xrkseek/exec-voice/dist/readiness.js.map +1 -1
  46. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-local.d.ts.map +1 -1
  47. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-local.js +6 -5
  48. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-local.js.map +1 -1
  49. package/node_modules/@xrkseek/exec-voice/dist/system-tts.d.ts +2 -0
  50. package/node_modules/@xrkseek/exec-voice/dist/system-tts.d.ts.map +1 -1
  51. package/node_modules/@xrkseek/exec-voice/dist/system-tts.js +10 -7
  52. package/node_modules/@xrkseek/exec-voice/dist/system-tts.js.map +1 -1
  53. package/node_modules/@xrkseek/exec-voice/dist/tools.d.ts +19 -0
  54. package/node_modules/@xrkseek/exec-voice/dist/tools.d.ts.map +1 -1
  55. package/node_modules/@xrkseek/exec-voice/dist/tools.js +160 -25
  56. package/node_modules/@xrkseek/exec-voice/dist/tools.js.map +1 -1
  57. package/node_modules/@xrkseek/exec-voice/dist/types.d.ts +12 -1
  58. package/node_modules/@xrkseek/exec-voice/dist/types.d.ts.map +1 -1
  59. package/node_modules/@xrkseek/exec-voice/dist/types.js +6 -0
  60. package/node_modules/@xrkseek/exec-voice/dist/types.js.map +1 -1
  61. package/node_modules/@xrkseek/exec-voice/package.json +7 -2
  62. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +5 -0
  63. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  64. package/node_modules/@xrkseek/preset-harness/dist/preset.js +13 -6
  65. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  66. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  67. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  68. package/node_modules/@xrkseek/preset-server/dist/preset.d.ts.map +1 -1
  69. package/node_modules/@xrkseek/preset-server/dist/preset.js +14 -2
  70. package/node_modules/@xrkseek/preset-server/dist/preset.js.map +1 -1
  71. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  72. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.d.ts +14 -0
  73. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.d.ts.map +1 -1
  74. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.js +40 -0
  75. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.js.map +1 -1
  76. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.d.ts +21 -1
  77. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.d.ts.map +1 -1
  78. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.js +29 -1
  79. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.js.map +1 -1
  80. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js +4 -4
  81. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js.map +1 -1
  82. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts.map +1 -1
  83. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js +30 -15
  84. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js.map +1 -1
  85. package/node_modules/@xrkseek/server-face/dist/canvas-tools.d.ts.map +1 -1
  86. package/node_modules/@xrkseek/server-face/dist/canvas-tools.js +2 -1
  87. package/node_modules/@xrkseek/server-face/dist/canvas-tools.js.map +1 -1
  88. package/node_modules/@xrkseek/server-face/dist/handlers/voice.d.ts.map +1 -1
  89. package/node_modules/@xrkseek/server-face/dist/handlers/voice.js +32 -5
  90. package/node_modules/@xrkseek/server-face/dist/handlers/voice.js.map +1 -1
  91. package/node_modules/@xrkseek/server-face/dist/index.d.ts +1 -0
  92. package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
  93. package/node_modules/@xrkseek/server-face/dist/index.js +1 -0
  94. package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
  95. package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts.map +1 -1
  96. package/node_modules/@xrkseek/server-face/dist/model-catalog.js +18 -8
  97. package/node_modules/@xrkseek/server-face/dist/model-catalog.js.map +1 -1
  98. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  99. package/node_modules/@xrkseek/server-face/dist/runtime.js +12 -0
  100. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  101. package/node_modules/@xrkseek/server-face/dist/session-attachment.d.ts.map +1 -1
  102. package/node_modules/@xrkseek/server-face/dist/session-attachment.js +60 -5
  103. package/node_modules/@xrkseek/server-face/dist/session-attachment.js.map +1 -1
  104. package/node_modules/@xrkseek/server-face/dist/session-capability.d.ts.map +1 -1
  105. package/node_modules/@xrkseek/server-face/dist/session-capability.js +45 -19
  106. package/node_modules/@xrkseek/server-face/dist/session-capability.js.map +1 -1
  107. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts +2 -2
  108. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts.map +1 -1
  109. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js +5 -38
  110. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js.map +1 -1
  111. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.d.ts.map +1 -1
  112. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.js +6 -2
  113. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.js.map +1 -1
  114. package/node_modules/@xrkseek/server-face/dist/session-tools.d.ts.map +1 -1
  115. package/node_modules/@xrkseek/server-face/dist/session-tools.js +0 -2
  116. package/node_modules/@xrkseek/server-face/dist/session-tools.js.map +1 -1
  117. package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
  118. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +40 -7
  119. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
  120. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts +2 -2
  121. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
  122. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +15 -56
  123. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
  124. package/node_modules/@xrkseek/server-face/dist/tts-availability.d.ts +33 -0
  125. package/node_modules/@xrkseek/server-face/dist/tts-availability.d.ts.map +1 -0
  126. package/node_modules/@xrkseek/server-face/dist/tts-availability.js +67 -0
  127. package/node_modules/@xrkseek/server-face/dist/tts-availability.js.map +1 -0
  128. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.d.ts.map +1 -1
  129. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js +58 -18
  130. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js.map +1 -1
  131. package/node_modules/@xrkseek/server-face/dist/xiangyang-skill-bodies/mainline-sideline.d.ts +1 -1
  132. package/node_modules/@xrkseek/server-face/dist/xiangyang-skill-bodies/mainline-sideline.d.ts.map +1 -1
  133. package/node_modules/@xrkseek/server-face/dist/xiangyang-skill-bodies/mainline-sideline.js +1 -1
  134. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.d.ts +5 -1
  135. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.d.ts.map +1 -1
  136. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.js +1 -1
  137. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.js.map +1 -1
  138. package/node_modules/@xrkseek/server-host/dist/index.d.ts +5 -0
  139. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  140. package/node_modules/@xrkseek/server-host/dist/index.js +79 -8
  141. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  142. package/node_modules/@xrkseek/workspace/dist/durable-inject.d.ts +10 -4
  143. package/node_modules/@xrkseek/workspace/dist/durable-inject.d.ts.map +1 -1
  144. package/node_modules/@xrkseek/workspace/dist/durable-inject.js +26 -8
  145. package/node_modules/@xrkseek/workspace/dist/durable-inject.js.map +1 -1
  146. package/node_modules/@xrkseek/workspace/dist/skill-tools.js +1 -1
  147. package/node_modules/@xrkseek/workspace/dist/skill-tools.js.map +1 -1
  148. package/node_modules/@xrkseek/workspace/dist/skills.d.ts +1 -1
  149. package/node_modules/@xrkseek/workspace/dist/skills.d.ts.map +1 -1
  150. package/node_modules/@xrkseek/workspace/dist/skills.js +2 -2
  151. package/node_modules/@xrkseek/workspace/dist/skills.js.map +1 -1
  152. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.d.ts.map +1 -1
  153. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.js +1 -7
  154. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.js.map +1 -1
  155. package/package.json +1 -1
@@ -30,7 +30,10 @@ export interface BoundToolOutputOptions extends ToolOutputBoundLimits {
30
30
  }
31
31
  /**
32
32
  * Bound model-visible tool text. Pure aside from optional `persist`.
33
- * Image-bearing ContentBlock[] results are left intact (DSH: don't truncate vision).
33
+ * Image- and file-bearing ContentBlock[] results are left intact: flattening
34
+ * them would destroy the durable reference the client needs (a `file` block is
35
+ * a deliverable, not prose). Model routes re-project blocks to handle text
36
+ * later (`projectFilesToText`), so nothing leaks raw bytes into a request.
34
37
  */
35
38
  export declare function boundToolOutput(content: MessageContent, options?: BoundToolOutputOptions): Promise<BoundToolOutputResult>;
36
39
  /** In-memory persist for tests / ephemeral hosts. */
@@ -1 +1 @@
1
- {"version":3,"file":"output-bound.d.ts","sourceRoot":"","sources":["../src/output-bound.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AACnD;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,QAAS,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtE;AA2FD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CA4ChC;AAED,qDAAqD;AACrD,wBAAgB,6BAA6B,CAAC,MAAM,SAAuB;qBAItD,MAAM,GAAG,MAAM;aAKvB,MAAM,GAAG,MAAM,GAAG,SAAS;;EAOvC"}
1
+ {"version":3,"file":"output-bound.d.ts","sourceRoot":"","sources":["../src/output-bound.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AACnD;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,QAAS,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtE;AA2FD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAsDhC;AAED,qDAAqD;AACrD,wBAAgB,6BAA6B,CAAC,MAAM,SAAuB;qBAItD,MAAM,GAAG,MAAM;aAKvB,MAAM,GAAG,MAAM,GAAG,SAAS;;EAOvC"}
@@ -2,7 +2,7 @@
2
2
  * Model-facing tool output bounding (OpenCode ToolOutputStore.bound semantics).
3
3
  * Domain tools may return full text; this layer truncates what the model / session log sees.
4
4
  */
5
- import { contentHasImage, flattenText } from "@xrkseek/protocol";
5
+ import { contentHasFile, contentHasImage, flattenText } from "@xrkseek/protocol";
6
6
  export const DEFAULT_TOOL_OUTPUT_MAX_LINES = 2_000;
7
7
  /**
8
8
  * Shared UTF-8 inline ceiling with agent-loop spill
@@ -87,17 +87,31 @@ function boundedPreview(text, marker, maxLines, maxBytes) {
87
87
  }
88
88
  /**
89
89
  * Bound model-visible tool text. Pure aside from optional `persist`.
90
- * Image-bearing ContentBlock[] results are left intact (DSH: don't truncate vision).
90
+ * Image- and file-bearing ContentBlock[] results are left intact: flattening
91
+ * them would destroy the durable reference the client needs (a `file` block is
92
+ * a deliverable, not prose). Model routes re-project blocks to handle text
93
+ * later (`projectFilesToText`), so nothing leaks raw bytes into a request.
91
94
  */
92
95
  export async function boundToolOutput(content, options = {}) {
93
96
  if (typeof content !== "string") {
94
- if (contentHasImage(content)) {
97
+ if (contentHasImage(content) || contentHasFile(content)) {
98
+ // The durable blocks pass through untouched, but the text beside them is
99
+ // still content. Reporting 0 bytes made every image / file result read as
100
+ // "produced nothing" to callers that key on `originalBytes`.
101
+ let textBytes = 0;
102
+ let textLines = 0;
103
+ for (const block of content) {
104
+ if (block.type !== 'text')
105
+ continue;
106
+ textBytes += Buffer.byteLength(block.text, 'utf8');
107
+ textLines += lineCount(block.text);
108
+ }
95
109
  return {
96
110
  content,
97
111
  truncated: false,
98
112
  outputPaths: [],
99
- originalBytes: 0,
100
- originalLines: 0,
113
+ originalBytes: textBytes,
114
+ originalLines: textLines,
101
115
  };
102
116
  }
103
117
  content = flattenText(content);
@@ -1 +1 @@
1
- {"version":3,"file":"output-bound.js","sourceRoot":"","sources":["../src/output-bound.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output-bound.js","sourceRoot":"","sources":["../src/output-bound.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ export function delegationModeLine(mode) {
19
19
  return [
20
20
  "Delegation: proactive.",
21
21
  "- Spawning is an approved strategy; spawn when it genuinely helps (parallel independent work, research without burning this context).",
22
- "- Depth, active-child, and budget caps still apply — `analytics` before fanning out.",
22
+ "- Depth, active-child, and budget caps still apply — call `list_agents` before fanning out; it prints the live quota.",
23
23
  ].join("\n");
24
24
  }
25
25
  export function subagentRoutingPrompt(mode = "proactive") {
@@ -45,7 +45,7 @@ export function subagentRoutingPrompt(mode = "proactive") {
45
45
  "- Match the live catalog by name and brief when this session has subagent tools. If a member fits, `subagent` with that `member_id` this turn. Do not Skill-load a standing skill that covers the same job. Frugal has no subagent tools — Skill-load here. Tiny asks with no catalog match stay with you. `presence_set` may run in parallel.",
46
46
  "- Sibling parent sessions talk with `thread_message` (session_id from the collab board). Do not `thread_switch` to send mail. That is not a subagent.",
47
47
  "- `team_graph` reads/edits the collaboration graph (delegates + peer): view · neighbors · link/unlink · role · announce to peers. Same-parent siblings are auto peer-linked on spawn.",
48
- "- `analytics` shows depth/active quota and per-child inbox backlog before spawning more work.",
48
+ "- `list_agents` shows depth/active quota, per-child state and inbox backlog before spawning more work.",
49
49
  "- Default `runtime` is in-process (Face child). Set `runtime` to `acp` / `app-server` / `claude-code` for an external subprocess (needs local binary / Settings). `acp` / `app-server` support `run_in_background` + the same followup/wait/interrupt tools; `claude-code` stays one-shot print.",
50
50
  "- Use `ralph` only when the human explicitly asks for a Ralph / fresh-agent loop toward one immutable objective (each round is a new child; handoff is structured JSON). Prefer `subagent` for ordinary delegation.",
51
51
  "- Prefer a few independent children over deep nesting; respect depth and active-child caps. Prefer doing small work yourself **only when no catalog member fits** — **Frugal** has no subagent tools; **Shallow** allows depth 1 only.",
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-prompt.js","sourceRoot":"","sources":["../src/subagent-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA2B;IAC5D,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO;YACL,4BAA4B;YAC5B,0FAA0F;YAC1F,+FAA+F;YAC/F,0DAA0D;SAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,OAAO;QACL,wBAAwB;QACxB,uIAAuI;QACvI,sFAAsF;KACvF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAA8B,WAAW;IAEzC,OAAO;QACL,YAAY;QACZ,uXAAuX;QACvX,iGAAiG;QACjG,iMAAiM;QACjM,+KAA+K;QAC/K,qNAAqN;QACrN,kJAAkJ;QAClJ,2UAA2U;QAC3U,yBAAyB;QACzB,+SAA+S;QAC/S,4LAA4L;QAC5L,wEAAwE;QACxE,yEAAyE;QACzE,+NAA+N;QAC/N,gQAAgQ;QAChQ,mWAAmW;QACnW,4VAA4V;QAC5V,yJAAyJ;QACzJ,gVAAgV;QAChV,uJAAuJ;QACvJ,uLAAuL;QACvL,+FAA+F;QAC/F,kSAAkS;QAClS,qNAAqN;QACrN,wOAAwO;QACxO,kBAAkB,CAAC,IAAI,CAAC;KACzB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,4BAA4B,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"subagent-prompt.js","sourceRoot":"","sources":["../src/subagent-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA2B;IAC5D,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO;YACL,4BAA4B;YAC5B,0FAA0F;YAC1F,+FAA+F;YAC/F,0DAA0D;SAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,OAAO;QACL,wBAAwB;QACxB,uIAAuI;QACvI,uHAAuH;KACxH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAA8B,WAAW;IAEzC,OAAO;QACL,YAAY;QACZ,uXAAuX;QACvX,iGAAiG;QACjG,iMAAiM;QACjM,+KAA+K;QAC/K,qNAAqN;QACrN,kJAAkJ;QAClJ,2UAA2U;QAC3U,yBAAyB;QACzB,+SAA+S;QAC/S,4LAA4L;QAC5L,wEAAwE;QACxE,yEAAyE;QACzE,+NAA+N;QAC/N,gQAAgQ;QAChQ,mWAAmW;QACnW,4VAA4V;QAC5V,yJAAyJ;QACzJ,gVAAgV;QAChV,uJAAuJ;QACvJ,uLAAuL;QACvL,wGAAwG;QACxG,kSAAkS;QAClS,qNAAqN;QACrN,wOAAwO;QACxO,kBAAkB,CAAC,IAAI,CAAC;KACzB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,4BAA4B,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC"}
@@ -1,11 +1,11 @@
1
- export { createCuratedMemoryStore, defaultCuratedMemoryDir, ENTRY_DELIMITER, MEMORY_CHAR_LIMIT, USER_CHAR_LIMIT, USAGE_SIDECAR_FILE, type CreateCuratedMemoryStoreOptions, type CuratedMemoryAction, type CuratedMemoryOperation, type CuratedMemoryStore, type CuratedMemoryTarget, type CuratedMemoryWriteResult, type MemoryEntryAge, type MaybeAsync, } from "./store.js";
1
+ export { createCuratedMemoryStore, defaultCuratedMemoryDir, ENTRY_DELIMITER, MEMORY_CHAR_LIMIT, USER_CHAR_LIMIT, USAGE_SIDECAR_FILE, CURATED_MEMORY_LIMIT_MIN, CURATED_MEMORY_LIMIT_MAX, resolveCuratedMemoryLimits, type CuratedMemoryLimits, type CreateCuratedMemoryStoreOptions, type CuratedMemoryAction, type CuratedMemoryOperation, type CuratedMemoryStore, type CuratedMemoryTarget, type CuratedMemoryWriteResult, type MemoryEntryAge, type MaybeAsync, } from "./store.js";
2
2
  export type { MemoryProvider, MemoryProviderKind, } from "./provider.js";
3
3
  export { createHttpMemoryProvider, HttpMemoryProviderError, probeHttpMemoryProvider, type HttpMemoryProviderOptions, } from "./http.js";
4
4
  export { createFileMemoryProvider, resolveMemoryProvider, type ResolveMemoryProviderOptions, } from "./resolve.js";
5
5
  export { createSqliteMemoryProvider, type SqliteMemoryProvider, type SqliteMemoryProviderOptions, } from "./sqlite.js";
6
6
  export { CURATED_MEMORY_PROMPT_TEXT, createCuratedMemoryTools, } from "./tools.js";
7
7
  export { curatedMemoryDirFor, canOpenCuratedMemoryScope, curatedMemoryHome, CURATED_MEMORY_SCOPE_KINDS, type CuratedMemoryScopeKind, type CuratedMemoryScopeIds, } from "./scopes.js";
8
- export { openCuratedMemoryLayers, createLayeredCuratedMemoryStore, createScopedCuratedMemoryTools, SCOPED_CURATED_MEMORY_PROMPT_TEXT, type MemoryScopeLayer, type CreateLayeredCuratedMemoryStoreOptions, } from "./layered.js";
8
+ export { openCuratedMemoryLayers, createLayeredCuratedMemoryStore, createScopedCuratedMemoryTools, SCOPED_CURATED_MEMORY_PROMPT_TEXT, scopedCuratedMemoryPromptText, type MemoryScopeLayer, type CreateLayeredCuratedMemoryStoreOptions, } from "./layered.js";
9
9
  export { CONSOLIDATE_LEASE_FILE, CONSOLIDATE_REPORT_FILE, tryClaimConsolidateLease, readConsolidateReport, writeConsolidateReport, runCuratedMemoryConsolidate, type CuratedMemoryConsolidateReport, type CuratedMemoryPhase2Status, type RunCuratedMemoryConsolidateInput, } from "./consolidate-pipeline.js";
10
10
  export { CURATED_MEMORY_FRAGMENT_ID, createCuratedMemoryLiveGate, curatedMemoryBodyFingerprint, formatCuratedMemoryLiveBody, } from "./live-fragment.js";
11
11
  export { extractReusableNotes, writeReusableNotesAfterTurn, consolidateCuratedMemoryPhase1, consolidateCuratedMemoryPhase2, buildPhase2ExtractPrompt, parsePhase2Notes, noteCoveredByEntries, TRIM_LOG_FILE, type TurnNoteInput, type TurnNoteWriteResult, type SessionEndConsolidateInput, type SessionEndPhase2Input, type Phase2CompleteFn, } from "./write-path.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,KAAK,+BAA+B,EACpC,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,4BAA4B,GAClC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,EAC9B,iCAAiC,EACjC,KAAK,gBAAgB,EACrB,KAAK,sCAAsC,GAC5C,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,GACtC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,KAAK,+BAA+B,EACpC,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,4BAA4B,GAClC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,EAC9B,iCAAiC,EACjC,6BAA6B,EAC7B,KAAK,gBAAgB,EACrB,KAAK,sCAAsC,GAC5C,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,GACtC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC"}
@@ -1,10 +1,10 @@
1
- export { createCuratedMemoryStore, defaultCuratedMemoryDir, ENTRY_DELIMITER, MEMORY_CHAR_LIMIT, USER_CHAR_LIMIT, USAGE_SIDECAR_FILE, } from "./store.js";
1
+ export { createCuratedMemoryStore, defaultCuratedMemoryDir, ENTRY_DELIMITER, MEMORY_CHAR_LIMIT, USER_CHAR_LIMIT, USAGE_SIDECAR_FILE, CURATED_MEMORY_LIMIT_MIN, CURATED_MEMORY_LIMIT_MAX, resolveCuratedMemoryLimits, } from "./store.js";
2
2
  export { createHttpMemoryProvider, HttpMemoryProviderError, probeHttpMemoryProvider, } from "./http.js";
3
3
  export { createFileMemoryProvider, resolveMemoryProvider, } from "./resolve.js";
4
4
  export { createSqliteMemoryProvider, } from "./sqlite.js";
5
5
  export { CURATED_MEMORY_PROMPT_TEXT, createCuratedMemoryTools, } from "./tools.js";
6
6
  export { curatedMemoryDirFor, canOpenCuratedMemoryScope, curatedMemoryHome, CURATED_MEMORY_SCOPE_KINDS, } from "./scopes.js";
7
- export { openCuratedMemoryLayers, createLayeredCuratedMemoryStore, createScopedCuratedMemoryTools, SCOPED_CURATED_MEMORY_PROMPT_TEXT, } from "./layered.js";
7
+ export { openCuratedMemoryLayers, createLayeredCuratedMemoryStore, createScopedCuratedMemoryTools, SCOPED_CURATED_MEMORY_PROMPT_TEXT, scopedCuratedMemoryPromptText, } from "./layered.js";
8
8
  export { CONSOLIDATE_LEASE_FILE, CONSOLIDATE_REPORT_FILE, tryClaimConsolidateLease, readConsolidateReport, writeConsolidateReport, runCuratedMemoryConsolidate, } from "./consolidate-pipeline.js";
9
9
  export { CURATED_MEMORY_FRAGMENT_ID, createCuratedMemoryLiveGate, curatedMemoryBodyFingerprint, formatCuratedMemoryLiveBody, } from "./live-fragment.js";
10
10
  export { extractReusableNotes, writeReusableNotesAfterTurn, consolidateCuratedMemoryPhase1, consolidateCuratedMemoryPhase2, buildPhase2ExtractPrompt, parsePhase2Notes, noteCoveredByEntries, TRIM_LOG_FILE, } from "./write-path.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,GASnB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,GAExB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GAEtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,0BAA0B,GAG3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,GAG3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,EAC9B,iCAAiC,GAGlC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAI5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GAMd,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,GAU3B,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,GAExB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GAEtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,0BAA0B,GAG3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,GAG3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,EAC9B,iCAAiC,EACjC,6BAA6B,GAG9B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAI5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GAMd,MAAM,iBAAiB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * workspace / session / agent). Frozen system prompt concatenates each zone.
4
4
  */
5
5
  import type { ToolDefinition } from "@xrkseek/core-tools";
6
- import { type CuratedMemoryOperation, type CuratedMemoryStore, type CuratedMemoryTarget, type CuratedMemoryWriteResult, type MemoryEntryAge, type MaybeAsync } from "./store.js";
6
+ import { type CuratedMemoryOperation, type CuratedMemoryLimits, type CuratedMemoryStore, type CuratedMemoryTarget, type CuratedMemoryWriteResult, type MemoryEntryAge, type MaybeAsync } from "./store.js";
7
7
  import { type CuratedMemoryScopeIds, type CuratedMemoryScopeKind } from "./scopes.js";
8
8
  export interface MemoryScopeLayer {
9
9
  readonly scope: CuratedMemoryScopeKind;
@@ -15,9 +15,20 @@ export interface CreateLayeredCuratedMemoryStoreOptions extends CuratedMemorySco
15
15
  * Prefer session when present, else workspace, else global.
16
16
  */
17
17
  readonly defaultScope?: CuratedMemoryScopeKind;
18
+ /**
19
+ * Display word for the agent zone (Settings → seat titles, e.g. 干员 · 水手 ·
20
+ * 成员). Prompt headers and the zoned policy text use it verbatim; the store
21
+ * itself never hardcodes one scheme's word.
22
+ */
23
+ readonly agentLabel?: string;
24
+ /**
25
+ * Per-file char caps. Settings → Plugins → Curated memory owns the values;
26
+ * omitted fields keep the shipped defaults (2200 / 1375).
27
+ */
28
+ readonly limits?: CuratedMemoryLimits;
18
29
  }
19
30
  /** Open every zone that has ids; always includes global. */
20
- export declare function openCuratedMemoryLayers(ids: CuratedMemoryScopeIds): MemoryScopeLayer[];
31
+ export declare function openCuratedMemoryLayers(ids: CuratedMemoryScopeIds, limits?: CuratedMemoryLimits): MemoryScopeLayer[];
21
32
  /**
22
33
  * A {@link CuratedMemoryStore} facade over several zones.
23
34
  * Mutations hit `defaultScope`; {@link frozenSystemBlock} merges all zones.
@@ -25,14 +36,20 @@ export declare function openCuratedMemoryLayers(ids: CuratedMemoryScopeIds): Mem
25
36
  export declare function createLayeredCuratedMemoryStore(options: CreateLayeredCuratedMemoryStoreOptions): CuratedMemoryStore & {
26
37
  readonly layers: readonly MemoryScopeLayer[];
27
38
  readonly defaultScope: CuratedMemoryScopeKind;
39
+ /** True when more than one zone exists; the one "layered" predicate. */
40
+ readonly isLayered: boolean;
28
41
  storeFor(scope: CuratedMemoryScopeKind): CuratedMemoryStore | undefined;
29
42
  };
30
43
  /**
31
44
  * `memory` tool with a `scope` field (global|workspace|session|agent).
32
45
  * Falls back to {@link createCuratedMemoryTools} when only one layer exists.
33
46
  */
34
- export declare function createScopedCuratedMemoryTools(layered: ReturnType<typeof createLayeredCuratedMemoryStore>): ToolDefinition[];
47
+ export declare function createScopedCuratedMemoryTools(layered: ReturnType<typeof createLayeredCuratedMemoryStore>, options?: {
48
+ readonly agentLabel?: string | undefined;
49
+ }): ToolDefinition[];
35
50
  /** Policy text mentioning independent zones (when layered). */
51
+ export declare function scopedCuratedMemoryPromptText(agentLabel?: string): string;
52
+ /** Default zoned policy text (no seat-title override). */
36
53
  export declare const SCOPED_CURATED_MEMORY_PROMPT_TEXT: string;
37
54
  /** Re-export write helpers typing for layered facades. */
38
55
  export type { CuratedMemoryOperation, CuratedMemoryTarget, CuratedMemoryWriteResult, MemoryEntryAge, MaybeAsync, };
@@ -1 +1 @@
1
- {"version":3,"file":"layered.d.ts","sourceRoot":"","sources":["../src/layered.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC5B,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,sCACf,SAAQ,qBAAqB;IAC7B;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC;CAChD;AAoBD,4DAA4D;AAC5D,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,qBAAqB,GACzB,gBAAgB,EAAE,CAapB;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,sCAAsC,GAC9C,kBAAkB,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,kBAAkB,GAAG,SAAS,CAAC;CACzE,CA4DA;AAcD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,GAC1D,cAAc,EAAE,CAqElB;AAED,+DAA+D;AAC/D,eAAO,MAAM,iCAAiC,QAIyB,CAAC;AAExE,0DAA0D;AAC1D,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,UAAU,GACX,CAAC"}
1
+ {"version":3,"file":"layered.d.ts","sourceRoot":"","sources":["../src/layered.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC5B,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,sCACf,SAAQ,qBAAqB;IAC7B;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;CACvC;AA8BD,4DAA4D;AAC5D,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,qBAAqB,EAC1B,MAAM,CAAC,EAAE,mBAAmB,GAC3B,gBAAgB,EAAE,CAcpB;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,sCAAsC,GAC5C,kBAAkB,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAC9C,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,kBAAkB,GAAG,SAAS,CAAC;CACzE,CA+DF;AAcD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,EAC3D,OAAO,GAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAO,GACzD,cAAc,EAAE,CAgFlB;AAED,+DAA+D;AAC/D,wBAAgB,6BAA6B,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAWzE;AAED,0DAA0D;AAC1D,eAAO,MAAM,iCAAiC,QAAkC,CAAC;AAEjF,0DAA0D;AAC1D,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,UAAU,GACX,CAAC"}
@@ -1,12 +1,19 @@
1
1
  import { createCuratedMemoryStore, } from "./store.js";
2
2
  import { canOpenCuratedMemoryScope, curatedMemoryDirFor, CURATED_MEMORY_SCOPE_KINDS, } from "./scopes.js";
3
3
  import { createCuratedMemoryTools, CURATED_MEMORY_PROMPT_TEXT } from "./tools.js";
4
- const SCOPE_HEADERS = {
5
- global: "GLOBAL curated memory (home-wide)",
6
- workspace: "WORKSPACE curated memory",
7
- session: "SESSION curated memory (this conversation)",
8
- agent: "AGENT curated memory (this 干员 / roster member)",
9
- };
4
+ /** Zone headers; the agent word comes from Settings seat titles. */
5
+ function scopeHeaders(agentLabel) {
6
+ return {
7
+ global: "GLOBAL curated memory (home-wide)",
8
+ workspace: "WORKSPACE curated memory",
9
+ session: "SESSION curated memory (this conversation)",
10
+ agent: `AGENT curated memory (this ${agentLabel} / roster member)`,
11
+ };
12
+ }
13
+ function normalizedAgentLabel(raw) {
14
+ const text = raw?.trim();
15
+ return text || "member";
16
+ }
10
17
  function pickDefaultScope(layers, preferred) {
11
18
  if (preferred && layers.some((l) => l.scope === preferred))
12
19
  return preferred;
@@ -17,7 +24,7 @@ function pickDefaultScope(layers, preferred) {
17
24
  return "global";
18
25
  }
19
26
  /** Open every zone that has ids; always includes global. */
20
- export function openCuratedMemoryLayers(ids) {
27
+ export function openCuratedMemoryLayers(ids, limits) {
21
28
  const layers = [];
22
29
  for (const scope of CURATED_MEMORY_SCOPE_KINDS) {
23
30
  if (!canOpenCuratedMemoryScope(scope, ids))
@@ -27,6 +34,7 @@ export function openCuratedMemoryLayers(ids) {
27
34
  store: createCuratedMemoryStore({
28
35
  dir: curatedMemoryDirFor(scope, ids),
29
36
  ...(ids.env ? { env: ids.env } : {}),
37
+ ...(limits ? { limits } : {}),
30
38
  }),
31
39
  });
32
40
  }
@@ -37,15 +45,17 @@ export function openCuratedMemoryLayers(ids) {
37
45
  * Mutations hit `defaultScope`; {@link frozenSystemBlock} merges all zones.
38
46
  */
39
47
  export function createLayeredCuratedMemoryStore(options) {
40
- const layers = openCuratedMemoryLayers(options);
48
+ const layers = openCuratedMemoryLayers(options, options.limits);
41
49
  const defaultScope = pickDefaultScope(layers, options.defaultScope);
42
50
  const byScope = new Map(layers.map((l) => [l.scope, l.store]));
43
51
  const primary = byScope.get(defaultScope) ?? layers[0].store;
52
+ const headers = scopeHeaders(normalizedAgentLabel(options.agentLabel));
44
53
  const storeFor = (scope) => byScope.get(scope);
45
54
  const facade = {
46
55
  dir: primary.dir,
47
56
  layers,
48
57
  defaultScope,
58
+ isLayered: layers.length > 1,
49
59
  storeFor,
50
60
  frozenPrompt(target) {
51
61
  return primary.frozenPrompt(target);
@@ -56,7 +66,7 @@ export function createLayeredCuratedMemoryStore(options) {
56
66
  const body = layer.store.frozenSystemBlock().trim();
57
67
  if (!body)
58
68
  continue;
59
- parts.push(`### ${SCOPE_HEADERS[layer.scope]}\n${body}`);
69
+ parts.push(`### ${headers[layer.scope]}\n${body}`);
60
70
  }
61
71
  return parts.join("\n\n");
62
72
  },
@@ -66,7 +76,7 @@ export function createLayeredCuratedMemoryStore(options) {
66
76
  const body = (layer.store.liveSystemBlock?.() ?? layer.store.frozenSystemBlock()).trim();
67
77
  if (!body)
68
78
  continue;
69
- parts.push(`### ${SCOPE_HEADERS[layer.scope]}\n${body}`);
79
+ parts.push(`### ${headers[layer.scope]}\n${body}`);
70
80
  }
71
81
  return parts.join("\n\n");
72
82
  },
@@ -104,12 +114,13 @@ function asScope(raw, fallback) {
104
114
  * `memory` tool with a `scope` field (global|workspace|session|agent).
105
115
  * Falls back to {@link createCuratedMemoryTools} when only one layer exists.
106
116
  */
107
- export function createScopedCuratedMemoryTools(layered) {
117
+ export function createScopedCuratedMemoryTools(layered, options = {}) {
108
118
  if (layered.layers.length <= 1) {
109
119
  return createCuratedMemoryTools(layered);
110
120
  }
111
121
  const base = createCuratedMemoryTools(layered)[0];
112
122
  const available = layered.layers.map((l) => l.scope);
123
+ const agentLabel = normalizedAgentLabel(options.agentLabel);
113
124
  const tool = {
114
125
  ...base,
115
126
  description: `${base.description} ` +
@@ -122,11 +133,12 @@ export function createScopedCuratedMemoryTools(layered) {
122
133
  scope: {
123
134
  type: "string",
124
135
  enum: [...available],
125
- description: "Memory zone: global (home) · workspace · session · agent (干员). " +
136
+ description: `Memory zone: global (home) · workspace · session · agent (${agentLabel}). ` +
126
137
  `Default ${layered.defaultScope}.`,
127
138
  },
128
139
  },
129
- required: ["target"],
140
+ // Same as the flat tool: `target` only ever holds `memory`.
141
+ required: [],
130
142
  },
131
143
  async execute(args) {
132
144
  const a = args && typeof args === "object"
@@ -153,6 +165,15 @@ export function createScopedCuratedMemoryTools(layered) {
153
165
  };
154
166
  }
155
167
  const [scopedTool] = createCuratedMemoryTools(store);
168
+ if (scopedTool === undefined) {
169
+ return {
170
+ isError: true,
171
+ content: JSON.stringify({
172
+ success: false,
173
+ error: `memory tool is unavailable for scope '${scope}'.`,
174
+ }),
175
+ };
176
+ }
156
177
  const out = await scopedTool.execute(args);
157
178
  if (typeof out.content === "string" && out.content.startsWith("{")) {
158
179
  try {
@@ -172,8 +193,16 @@ export function createScopedCuratedMemoryTools(layered) {
172
193
  return [tool];
173
194
  }
174
195
  /** Policy text mentioning independent zones (when layered). */
175
- export const SCOPED_CURATED_MEMORY_PROMPT_TEXT = CURATED_MEMORY_PROMPT_TEXT +
176
- " Independent zones share the same tool: scope=global|workspace|session|agent. " +
177
- "Use session for this conversation's facts, agent for a 干员's private notes, " +
178
- "workspace for project-wide facts, global for home-wide preferences.";
196
+ export function scopedCuratedMemoryPromptText(agentLabel) {
197
+ const label = normalizedAgentLabel(agentLabel);
198
+ return (CURATED_MEMORY_PROMPT_TEXT +
199
+ " Independent zones share the same tool: scope=global|workspace|session|agent. " +
200
+ `Use session for this conversation's facts, agent for a ${label}'s private notes, ` +
201
+ "workspace for project-wide facts, global for home-wide preferences. " +
202
+ "Per-file char caps come from Settings → Plugins → Curated memory " +
203
+ "(defaults: MEMORY.md 2200, USER.md 1375); when a cap blocks a write the " +
204
+ "tool returns `prune_candidates`.");
205
+ }
206
+ /** Default zoned policy text (no seat-title override). */
207
+ export const SCOPED_CURATED_MEMORY_PROMPT_TEXT = scopedCuratedMemoryPromptText();
179
208
  //# sourceMappingURL=layered.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layered.js","sourceRoot":"","sources":["../src/layered.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layered.js","sourceRoot":"","sources":["../src/layered.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,20 @@
1
1
  export declare const ENTRY_DELIMITER = "\n\u00A7\n";
2
2
  export declare const MEMORY_CHAR_LIMIT = 2200;
3
3
  export declare const USER_CHAR_LIMIT = 1375;
4
+ /** Plugin-configurable bounds for one zone file (Settings → Curated memory). */
5
+ export declare const CURATED_MEMORY_LIMIT_MIN = 200;
6
+ export declare const CURATED_MEMORY_LIMIT_MAX = 20000;
7
+ /** Per-file caps; omitted fields keep the shipped defaults. */
8
+ export interface CuratedMemoryLimits {
9
+ readonly memory?: number;
10
+ readonly user?: number;
11
+ }
12
+ interface ResolvedCuratedMemoryLimits {
13
+ readonly memory: number;
14
+ readonly user: number;
15
+ }
16
+ /** Clamp configured caps into the supported range. */
17
+ export declare function resolveCuratedMemoryLimits(limits?: CuratedMemoryLimits): ResolvedCuratedMemoryLimits;
4
18
  /** Sidecar beside MEMORY.md/USER.md: entry hash -> epoch ms of its last tracked write. */
5
19
  export declare const USAGE_SIDECAR_FILE = ".usage.json";
6
20
  export type CuratedMemoryTarget = "memory" | "user";
@@ -65,8 +79,11 @@ export interface CreateCuratedMemoryStoreOptions {
65
79
  /** Override the memories directory (tests). Default `{XRK_HOME}/memories`. */
66
80
  readonly dir?: string;
67
81
  readonly env?: NodeJS.ProcessEnv;
82
+ /** Per-file char caps (Settings → Plugins → Curated memory). */
83
+ readonly limits?: CuratedMemoryLimits;
68
84
  }
69
85
  export declare function createCuratedMemoryStore(options?: CreateCuratedMemoryStoreOptions): CuratedMemoryStore;
70
86
  /** `{XRK_HOME}/memories` — not the Mnemon document library. */
71
87
  export declare function defaultCuratedMemoryDir(env?: NodeJS.ProcessEnv): string;
88
+ export {};
72
89
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,21 @@ import { resolveXrkHome } from "@xrkseek/xrk-home-paths";
9
9
  export const ENTRY_DELIMITER = "\n§\n";
10
10
  export const MEMORY_CHAR_LIMIT = 2200;
11
11
  export const USER_CHAR_LIMIT = 1375;
12
+ /** Plugin-configurable bounds for one zone file (Settings → Curated memory). */
13
+ export const CURATED_MEMORY_LIMIT_MIN = 200;
14
+ export const CURATED_MEMORY_LIMIT_MAX = 20000;
15
+ function resolveLimit(raw, fallback) {
16
+ if (typeof raw !== "number" || !Number.isFinite(raw))
17
+ return fallback;
18
+ return Math.min(CURATED_MEMORY_LIMIT_MAX, Math.max(CURATED_MEMORY_LIMIT_MIN, Math.round(raw)));
19
+ }
20
+ /** Clamp configured caps into the supported range. */
21
+ export function resolveCuratedMemoryLimits(limits) {
22
+ return {
23
+ memory: resolveLimit(limits?.memory, MEMORY_CHAR_LIMIT),
24
+ user: resolveLimit(limits?.user, USER_CHAR_LIMIT),
25
+ };
26
+ }
12
27
  /** Sidecar beside MEMORY.md/USER.md: entry hash -> epoch ms of its last tracked write. */
13
28
  export const USAGE_SIDECAR_FILE = ".usage.json";
14
29
  const HEADERS = {
@@ -18,8 +33,8 @@ const HEADERS = {
18
33
  function fileFor(dir, target) {
19
34
  return path.join(dir, target === "user" ? "USER.md" : "MEMORY.md");
20
35
  }
21
- function limitFor(target) {
22
- return target === "user" ? USER_CHAR_LIMIT : MEMORY_CHAR_LIMIT;
36
+ function limitFor(target, limits) {
37
+ return target === "user" ? limits.user : limits.memory;
23
38
  }
24
39
  function parseEntries(raw) {
25
40
  return raw
@@ -58,20 +73,20 @@ function readRaw(file) {
58
73
  return { raw: "", ok: false };
59
74
  }
60
75
  }
61
- function drifted(raw, target) {
76
+ function drifted(raw, target, limit) {
62
77
  if (!raw.trim())
63
78
  return false;
64
79
  const parsed = parseEntries(raw);
65
80
  const roundTrip = raw.trim() === parsed.join(ENTRY_DELIMITER);
66
81
  const maxLen = parsed.reduce((max, entry) => Math.max(max, entry.length), 0);
67
- return !(roundTrip && maxLen <= limitFor(target));
82
+ return !(roundTrip && maxLen <= limit);
68
83
  }
69
- function renderBlock(target, entries) {
84
+ function renderBlock(target, entries, limit) {
70
85
  if (entries.length === 0)
71
86
  return "";
72
87
  const content = entries.join(ENTRY_DELIMITER);
73
88
  const sep = "═".repeat(46);
74
- return `${sep}\n${HEADERS[target]} [${usagePct(content.length, limitFor(target))}]\n${sep}\n${content}`;
89
+ return `${sep}\n${HEADERS[target]} [${usagePct(content.length, limit)}]\n${sep}\n${content}`;
75
90
  }
76
91
  function writeAtomic(file, text) {
77
92
  mkdirSync(path.dirname(file), { recursive: true });
@@ -200,21 +215,21 @@ function withFileLock(lockPath, fn) {
200
215
  function fail(message, extra = {}) {
201
216
  return { success: false, error: message, ...extra };
202
217
  }
203
- function failWithEntries(target, entries, message, pruneCandidates) {
218
+ function failWithEntriesWithLimit(target, entries, message, limit, pruneCandidates) {
204
219
  return fail(message, {
205
220
  target,
206
221
  current_entries: entries,
207
- usage: `${charCount(entries).toLocaleString("en-US")}/${limitFor(target).toLocaleString("en-US")}`,
222
+ usage: `${charCount(entries).toLocaleString("en-US")}/${limit.toLocaleString("en-US")}`,
208
223
  ...(pruneCandidates && pruneCandidates.length > 0 ? { prune_candidates: pruneCandidates } : {}),
209
224
  });
210
225
  }
211
- function saved(target, message, entries) {
226
+ function savedWithLimit(target, message, entries, limit) {
212
227
  const current = charCount(entries);
213
228
  return {
214
229
  success: true,
215
230
  done: true,
216
231
  target,
217
- usage: usagePct(current, limitFor(target)),
232
+ usage: usagePct(current, limit),
218
233
  entry_count: entries.length,
219
234
  message,
220
235
  note: "Write saved to disk. This session's system-prompt snapshot is unchanged — do not repeat the write.",
@@ -236,6 +251,12 @@ export function createCuratedMemoryStore(options = {}) {
236
251
  const dir = explicit
237
252
  ? path.resolve(explicit)
238
253
  : path.join(resolveXrkHome(options.env ?? process.env), "memories");
254
+ const limits = resolveCuratedMemoryLimits(options.limits);
255
+ const limitForTarget = (target) => limitFor(target, limits);
256
+ // Local wrappers so every write path reports against the configured cap
257
+ // without threading a parameter through a dozen call sites.
258
+ const saved = (target, message, entries) => savedWithLimit(target, message, entries, limitForTarget(target));
259
+ const failWithEntries = (target, entries, message, pruneCandidates) => failWithEntriesWithLimit(target, entries, message, limitForTarget(target), pruneCandidates);
239
260
  const usagePath = path.join(dir, USAGE_SIDECAR_FILE);
240
261
  const snapshot = {
241
262
  memory: "",
@@ -244,7 +265,7 @@ export function createCuratedMemoryStore(options = {}) {
244
265
  for (const target of ["memory", "user"]) {
245
266
  const { raw, ok } = readRaw(fileFor(dir, target));
246
267
  const entries = ok ? dedupe(parseEntries(raw)) : [];
247
- snapshot[target] = renderBlock(target, entries);
268
+ snapshot[target] = renderBlock(target, entries, limitForTarget(target));
248
269
  }
249
270
  function rankedEntries(target) {
250
271
  const file = fileFor(dir, target);
@@ -265,7 +286,7 @@ export function createCuratedMemoryStore(options = {}) {
265
286
  if (!ok) {
266
287
  return fail(`Refusing to write ${path.basename(file)}: the file exists but could not be read. Nothing was changed.`);
267
288
  }
268
- if (drifted(raw, target)) {
289
+ if (drifted(raw, target, limitForTarget(target))) {
269
290
  const bak = `${file}.bak.${Date.now()}`;
270
291
  try {
271
292
  writeFileSync(bak, raw, "utf8");
@@ -276,7 +297,7 @@ export function createCuratedMemoryStore(options = {}) {
276
297
  return fail(`Refusing to write ${path.basename(file)}: on-disk content would not round-trip through add/replace/remove. A snapshot was saved to ${bak}.`, { drift_backup: bak });
277
298
  }
278
299
  const entries = dedupe(parseEntries(raw));
279
- const step = apply(entries, limitFor(target));
300
+ const step = apply(entries, limitForTarget(target));
280
301
  if (step.kind === "done")
281
302
  return step.result;
282
303
  writeAtomic(file, step.entries.join(ENTRY_DELIMITER));
@@ -348,7 +369,7 @@ export function createCuratedMemoryStore(options = {}) {
348
369
  // letting a failed read look like "memory is empty".
349
370
  if (!ok)
350
371
  return snapshot[target];
351
- return renderBlock(target, dedupe(parseEntries(raw)));
372
+ return renderBlock(target, dedupe(parseEntries(raw)), limitForTarget(target));
352
373
  });
353
374
  return blocks.filter((block) => block.trim()).join("\n\n");
354
375
  },