@xrkseek/harness 0.7.7 → 0.7.9

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 (180) 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/layered.d.ts +2 -0
  8. package/node_modules/@xrkseek/exec-memory/dist/layered.d.ts.map +1 -1
  9. package/node_modules/@xrkseek/exec-memory/dist/layered.js +12 -1
  10. package/node_modules/@xrkseek/exec-memory/dist/layered.js.map +1 -1
  11. package/node_modules/@xrkseek/exec-memory/dist/tools.d.ts.map +1 -1
  12. package/node_modules/@xrkseek/exec-memory/dist/tools.js +25 -10
  13. package/node_modules/@xrkseek/exec-memory/dist/tools.js.map +1 -1
  14. package/node_modules/@xrkseek/exec-voice/dist/download-http.d.ts +25 -6
  15. package/node_modules/@xrkseek/exec-voice/dist/download-http.d.ts.map +1 -1
  16. package/node_modules/@xrkseek/exec-voice/dist/download-http.js +55 -11
  17. package/node_modules/@xrkseek/exec-voice/dist/download-http.js.map +1 -1
  18. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.d.ts +60 -0
  19. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.d.ts.map +1 -0
  20. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.js +393 -0
  21. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.js.map +1 -0
  22. package/node_modules/@xrkseek/exec-voice/dist/engine-ids.d.ts.map +1 -1
  23. package/node_modules/@xrkseek/exec-voice/dist/engine-ids.js +1 -0
  24. package/node_modules/@xrkseek/exec-voice/dist/engine-ids.js.map +1 -1
  25. package/node_modules/@xrkseek/exec-voice/dist/engines.d.ts +1 -1
  26. package/node_modules/@xrkseek/exec-voice/dist/engines.d.ts.map +1 -1
  27. package/node_modules/@xrkseek/exec-voice/dist/engines.js +19 -1
  28. package/node_modules/@xrkseek/exec-voice/dist/engines.js.map +1 -1
  29. package/node_modules/@xrkseek/exec-voice/dist/format.js +1 -1
  30. package/node_modules/@xrkseek/exec-voice/dist/format.js.map +1 -1
  31. package/node_modules/@xrkseek/exec-voice/dist/index.d.ts +2 -0
  32. package/node_modules/@xrkseek/exec-voice/dist/index.d.ts.map +1 -1
  33. package/node_modules/@xrkseek/exec-voice/dist/index.js +2 -0
  34. package/node_modules/@xrkseek/exec-voice/dist/index.js.map +1 -1
  35. package/node_modules/@xrkseek/exec-voice/dist/openai-http.d.ts.map +1 -1
  36. package/node_modules/@xrkseek/exec-voice/dist/openai-http.js +1 -0
  37. package/node_modules/@xrkseek/exec-voice/dist/openai-http.js.map +1 -1
  38. package/node_modules/@xrkseek/exec-voice/dist/readiness.d.ts +1 -1
  39. package/node_modules/@xrkseek/exec-voice/dist/readiness.d.ts.map +1 -1
  40. package/node_modules/@xrkseek/exec-voice/dist/readiness.js +13 -1
  41. package/node_modules/@xrkseek/exec-voice/dist/readiness.js.map +1 -1
  42. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-local.d.ts.map +1 -1
  43. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-local.js +6 -5
  44. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-local.js.map +1 -1
  45. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-runtime.d.ts +3 -1
  46. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-runtime.d.ts.map +1 -1
  47. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-runtime.js +18 -1
  48. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-runtime.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 +10 -2
  62. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  63. package/node_modules/@xrkseek/preset-harness/dist/preset.js +8 -3
  64. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  65. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  66. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  67. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  68. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.d.ts +14 -0
  69. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.d.ts.map +1 -1
  70. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.js +40 -0
  71. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.js.map +1 -1
  72. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.d.ts +21 -1
  73. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.d.ts.map +1 -1
  74. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.js +29 -1
  75. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.js.map +1 -1
  76. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js +4 -4
  77. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js.map +1 -1
  78. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts.map +1 -1
  79. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js +30 -15
  80. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js.map +1 -1
  81. package/node_modules/@xrkseek/server-face/dist/canvas-tools.d.ts.map +1 -1
  82. package/node_modules/@xrkseek/server-face/dist/canvas-tools.js +2 -1
  83. package/node_modules/@xrkseek/server-face/dist/canvas-tools.js.map +1 -1
  84. package/node_modules/@xrkseek/server-face/dist/handlers/voice.d.ts.map +1 -1
  85. package/node_modules/@xrkseek/server-face/dist/handlers/voice.js +47 -6
  86. package/node_modules/@xrkseek/server-face/dist/handlers/voice.js.map +1 -1
  87. package/node_modules/@xrkseek/server-face/dist/index.d.ts +2 -0
  88. package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
  89. package/node_modules/@xrkseek/server-face/dist/index.js +2 -0
  90. package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
  91. package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts.map +1 -1
  92. package/node_modules/@xrkseek/server-face/dist/model-catalog.js +18 -8
  93. package/node_modules/@xrkseek/server-face/dist/model-catalog.js.map +1 -1
  94. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  95. package/node_modules/@xrkseek/server-face/dist/runtime.js +12 -0
  96. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  97. package/node_modules/@xrkseek/server-face/dist/session-attachment.d.ts.map +1 -1
  98. package/node_modules/@xrkseek/server-face/dist/session-attachment.js +60 -5
  99. package/node_modules/@xrkseek/server-face/dist/session-attachment.js.map +1 -1
  100. package/node_modules/@xrkseek/server-face/dist/session-capability.d.ts.map +1 -1
  101. package/node_modules/@xrkseek/server-face/dist/session-capability.js +45 -19
  102. package/node_modules/@xrkseek/server-face/dist/session-capability.js.map +1 -1
  103. package/node_modules/@xrkseek/server-face/dist/session-posture.js +1 -1
  104. package/node_modules/@xrkseek/server-face/dist/session-posture.js.map +1 -1
  105. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts +2 -2
  106. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts.map +1 -1
  107. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js +5 -38
  108. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js.map +1 -1
  109. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.d.ts.map +1 -1
  110. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.js +6 -2
  111. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.js.map +1 -1
  112. package/node_modules/@xrkseek/server-face/dist/session-tools.d.ts.map +1 -1
  113. package/node_modules/@xrkseek/server-face/dist/session-tools.js +0 -2
  114. package/node_modules/@xrkseek/server-face/dist/session-tools.js.map +1 -1
  115. package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
  116. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +40 -7
  117. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
  118. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts +2 -2
  119. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
  120. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +15 -56
  121. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
  122. package/node_modules/@xrkseek/server-face/dist/tts-availability.d.ts +33 -0
  123. package/node_modules/@xrkseek/server-face/dist/tts-availability.d.ts.map +1 -0
  124. package/node_modules/@xrkseek/server-face/dist/tts-availability.js +67 -0
  125. package/node_modules/@xrkseek/server-face/dist/tts-availability.js.map +1 -0
  126. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.d.ts.map +1 -1
  127. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js +62 -19
  128. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js.map +1 -1
  129. package/node_modules/@xrkseek/server-face/dist/xiangyang-skill-bodies/mainline-sideline.d.ts +1 -1
  130. package/node_modules/@xrkseek/server-face/dist/xiangyang-skill-bodies/mainline-sideline.d.ts.map +1 -1
  131. package/node_modules/@xrkseek/server-face/dist/xiangyang-skill-bodies/mainline-sideline.js +1 -1
  132. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.d.ts +5 -1
  133. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.d.ts.map +1 -1
  134. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.js +1 -1
  135. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.js.map +1 -1
  136. package/node_modules/@xrkseek/server-host/dist/index.d.ts +2 -2
  137. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  138. package/node_modules/@xrkseek/server-host/dist/index.js +57 -9
  139. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  140. package/node_modules/@xrkseek/workspace/dist/durable-inject.d.ts +10 -4
  141. package/node_modules/@xrkseek/workspace/dist/durable-inject.d.ts.map +1 -1
  142. package/node_modules/@xrkseek/workspace/dist/durable-inject.js +26 -8
  143. package/node_modules/@xrkseek/workspace/dist/durable-inject.js.map +1 -1
  144. package/node_modules/@xrkseek/workspace/dist/skill-tools.js +1 -1
  145. package/node_modules/@xrkseek/workspace/dist/skill-tools.js.map +1 -1
  146. package/node_modules/@xrkseek/workspace/dist/skills.d.ts +1 -1
  147. package/node_modules/@xrkseek/workspace/dist/skills.d.ts.map +1 -1
  148. package/node_modules/@xrkseek/workspace/dist/skills.js +2 -2
  149. package/node_modules/@xrkseek/workspace/dist/skills.js.map +1 -1
  150. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.d.ts.map +1 -1
  151. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.js +1 -7
  152. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.js.map +1 -1
  153. package/node_modules/sherpa-onnx-node/README.md +11 -0
  154. package/node_modules/sherpa-onnx-node/addon-static-import.js +76 -0
  155. package/node_modules/sherpa-onnx-node/addon.js +98 -0
  156. package/node_modules/sherpa-onnx-node/audio-tagg.js +45 -0
  157. package/node_modules/sherpa-onnx-node/keyword-spotter.js +68 -0
  158. package/node_modules/sherpa-onnx-node/non-streaming-asr.js +158 -0
  159. package/node_modules/sherpa-onnx-node/non-streaming-speaker-diarization.js +38 -0
  160. package/node_modules/sherpa-onnx-node/non-streaming-speech-denoiser.js +32 -0
  161. package/node_modules/sherpa-onnx-node/non-streaming-tts.js +117 -0
  162. package/node_modules/sherpa-onnx-node/online-speech-denoiser.js +46 -0
  163. package/node_modules/sherpa-onnx-node/package.json +68 -0
  164. package/node_modules/sherpa-onnx-node/punctuation.js +43 -0
  165. package/node_modules/sherpa-onnx-node/resampler.js +80 -0
  166. package/node_modules/sherpa-onnx-node/sherpa-onnx.js +49 -0
  167. package/node_modules/sherpa-onnx-node/speaker-identification.js +152 -0
  168. package/node_modules/sherpa-onnx-node/spoken-language-identification.js +38 -0
  169. package/node_modules/sherpa-onnx-node/streaming-asr.js +181 -0
  170. package/node_modules/sherpa-onnx-node/types.js +833 -0
  171. package/node_modules/sherpa-onnx-node/vad.js +134 -0
  172. package/node_modules/sherpa-onnx-win-x64/README.md +3 -0
  173. package/node_modules/sherpa-onnx-win-x64/index.js +1 -0
  174. package/node_modules/sherpa-onnx-win-x64/onnxruntime.dll +0 -0
  175. package/node_modules/sherpa-onnx-win-x64/onnxruntime_providers_shared.dll +0 -0
  176. package/node_modules/sherpa-onnx-win-x64/package.json +65 -0
  177. package/node_modules/sherpa-onnx-win-x64/sherpa-onnx-c-api.dll +0 -0
  178. package/node_modules/sherpa-onnx-win-x64/sherpa-onnx-cxx-api.dll +0 -0
  179. package/node_modules/sherpa-onnx-win-x64/sherpa-onnx.node +0 -0
  180. package/package.json +5 -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"}
@@ -25,6 +25,8 @@ export declare function openCuratedMemoryLayers(ids: CuratedMemoryScopeIds): Mem
25
25
  export declare function createLayeredCuratedMemoryStore(options: CreateLayeredCuratedMemoryStoreOptions): CuratedMemoryStore & {
26
26
  readonly layers: readonly MemoryScopeLayer[];
27
27
  readonly defaultScope: CuratedMemoryScopeKind;
28
+ /** True when more than one zone exists; the one "layered" predicate. */
29
+ readonly isLayered: boolean;
28
30
  storeFor(scope: CuratedMemoryScopeKind): CuratedMemoryStore | undefined;
29
31
  };
30
32
  /**
@@ -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,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,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,CA8DF;AAcD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,GAC1D,cAAc,EAAE,CA+ElB;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"}
@@ -46,6 +46,7 @@ export function createLayeredCuratedMemoryStore(options) {
46
46
  dir: primary.dir,
47
47
  layers,
48
48
  defaultScope,
49
+ isLayered: layers.length > 1,
49
50
  storeFor,
50
51
  frozenPrompt(target) {
51
52
  return primary.frozenPrompt(target);
@@ -126,7 +127,8 @@ export function createScopedCuratedMemoryTools(layered) {
126
127
  `Default ${layered.defaultScope}.`,
127
128
  },
128
129
  },
129
- required: ["target"],
130
+ // Same as the flat tool: `target` only ever holds `memory`.
131
+ required: [],
130
132
  },
131
133
  async execute(args) {
132
134
  const a = args && typeof args === "object"
@@ -153,6 +155,15 @@ export function createScopedCuratedMemoryTools(layered) {
153
155
  };
154
156
  }
155
157
  const [scopedTool] = createCuratedMemoryTools(store);
158
+ if (scopedTool === undefined) {
159
+ return {
160
+ isError: true,
161
+ content: JSON.stringify({
162
+ success: false,
163
+ error: `memory tool is unavailable for scope '${scope}'.`,
164
+ }),
165
+ };
166
+ }
156
167
  const out = await scopedTool.execute(args);
157
168
  if (typeof out.content === "string" && out.content.startsWith("{")) {
158
169
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"layered.js","sourceRoot":"","sources":["../src/layered.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,wBAAwB,GAOzB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,0BAA0B,GAG3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAgBlF,MAAM,aAAa,GAA2C;IAC5D,MAAM,EAAE,mCAAmC;IAC3C,SAAS,EAAE,0BAA0B;IACrC,OAAO,EAAE,4CAA4C;IACrD,KAAK,EAAE,gDAAgD;CACxD,CAAC;AAEF,SAAS,gBAAgB,CACvB,MAAmC,EACnC,SAAkC;IAElC,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7E,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAU,EAAE,CAAC;QACxE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACxD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,uBAAuB,CACrC,GAA0B;IAE1B,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,0BAA0B,EAAE,CAAC;QAC/C,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,SAAS;QACrD,MAAM,CAAC,IAAI,CAAC;YACV,KAAK;YACL,KAAK,EAAE,wBAAwB,CAAC;gBAC9B,GAAG,EAAE,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC;gBACpC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAA+C;IAM/C,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAU,CAAC,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC;IAE9D,MAAM,QAAQ,GAAG,CAAC,KAA6B,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEvE,MAAM,MAAM,GAIR;QACF,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM;QACN,YAAY;QACZ,QAAQ;QACR,YAAY,CAAC,MAAM;YACjB,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,iBAAiB;YACf,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,CAAC;gBACpD,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,KAAK,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QACD,eAAe;YACb,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,CACX,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,CACnE,CAAC,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,KAAK,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QACD,WAAW,CAAC,MAAM;YAChB,OAAO,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,OAAO;YACjB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO;YAC9B,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,CAAC,MAAM,EAAE,OAAO;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,UAAU,CAAC,MAAM,EAAE,UAAU;YAC3B,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC;QACD,YAAY,CAAC,MAAM,EAAE,KAAK;YACxB,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACrD,CAAC;KACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,OAAO,CACd,GAAY,EACZ,QAAgC;IAEhC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrE,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAK,0BAAgD,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,OAAO,CAA2B,CAAC;IACrC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAA2D;IAE3D,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,IAAI,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,IAAI,GAAmB;QAC3B,GAAG,IAAI;QACP,WAAW,EACT,GAAG,IAAI,CAAC,WAAW,GAAG;YACtB,mBAAmB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,gCAAgC;YACtE,WAAW,OAAO,CAAC,YAAY,+BAA+B;QAChE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAI,IAAI,CAAC,UAAsD,CAAC,UAAU;gBAC1E,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;oBACpB,WAAW,EACT,iEAAiE;wBACjE,WAAW,OAAO,CAAC,YAAY,GAAG;iBACrC;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,CAAC,GACL,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAC9B,CAAC,CAAE,IAAgC;gBACnC,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,yBAAyB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACjF,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,iBAAiB,KAAK,sCAAsC;qBACpE,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,UAAU,CAAC,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,MAAM,UAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAA4B,CAAC;oBAChE,OAAO;wBACL,GAAG,GAAG;wBACN,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC;qBAC5C,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,mBAAmB;gBACrB,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,MAAM,iCAAiC,GAC5C,0BAA0B;IAC1B,gFAAgF;IAChF,6EAA6E;IAC7E,qEAAqE,CAAC"}
1
+ {"version":3,"file":"layered.js","sourceRoot":"","sources":["../src/layered.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAEV,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAiB4C,CAAC;AAmBpF;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,cAAc,EAAE,CA4JpF"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAEV,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAiB4C,CAAC;AA0BpF;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAsKpF"}
@@ -21,9 +21,16 @@ export const CURATED_MEMORY_PROMPT_TEXT = "Curated memory is two files under {XR
21
21
  + "turning it off drops both on the next agent rebuild (idle sessions now, a busy session after its turn). "
22
22
  + "This is not the Mnemon document library and not standing AGENTS.md / SOUL.md.";
23
23
  const ACTIONS = ["add", "replace", "remove", "list"];
24
+ /**
25
+ * The tool writes notes only. `USER.md` is an injection-layer profile owned by
26
+ * the human (hand-edited): it describes who they are, and a model rewriting it
27
+ * mid-turn silently changes the persona every later session starts from. The
28
+ * store still supports the target for provider surfaces — the tool does not
29
+ * expose it.
30
+ */
24
31
  function asTarget(raw) {
25
32
  const target = String(raw ?? "memory");
26
- if (target === "memory" || target === "user")
33
+ if (target === "memory")
27
34
  return target;
28
35
  return undefined;
29
36
  }
@@ -32,10 +39,10 @@ function asOps(raw) {
32
39
  return undefined;
33
40
  if (!Array.isArray(raw))
34
41
  return [];
35
- return raw.map((item) => {
36
- const op = item && typeof item === "object" ? item : {};
37
- return op;
38
- });
42
+ // Pass items through untouched: `applyBatch` already rejects an unknown
43
+ // action with the real one-based index (`Operation N (unknown)`) and applies
44
+ // nothing, so rewriting a bad item to `{}` here would only hide its source.
45
+ return raw.map((item) => item);
39
46
  }
40
47
  /**
41
48
  * Model-facing `memory` tool. Disk writes do not refresh {@link CuratedMemoryStore.frozenSystemBlock}.
@@ -60,8 +67,8 @@ export function createCuratedMemoryTools(store) {
60
67
  },
61
68
  target: {
62
69
  type: "string",
63
- enum: ["memory", "user"],
64
- description: "memory = MEMORY.md notes; user = USER.md profile.",
70
+ enum: ["memory"],
71
+ description: "memory = MEMORY.md notes. USER.md is the user's hand-owned profile — not writable here.",
65
72
  },
66
73
  content: {
67
74
  type: "string",
@@ -90,7 +97,11 @@ export function createCuratedMemoryTools(store) {
90
97
  },
91
98
  },
92
99
  },
93
- required: ["target"],
100
+ // `target` is deliberately not required: the only value is `memory`, so
101
+ // demanding it made every call carry a constant and let a model that
102
+ // omitted it get rejected by schema validation before `asTarget` could
103
+ // apply its default.
104
+ required: [],
94
105
  },
95
106
  isConcurrencySafe() {
96
107
  return false;
@@ -102,7 +113,11 @@ export function createCuratedMemoryTools(store) {
102
113
  isError: true,
103
114
  content: JSON.stringify({
104
115
  success: false,
105
- error: `Invalid memory target '${String(args.target)}'. Use 'memory' or 'user'.`,
116
+ // Naming 'user' here sent models into a retry loop: `asTarget`
117
+ // refuses it on purpose (USER.md is hand-edited), so the hint must
118
+ // not advertise it.
119
+ error: `Invalid memory target '${String(args.target)}'. Only 'memory' is writable; `
120
+ + "USER.md is the user's hand-owned profile.",
106
121
  }),
107
122
  };
108
123
  }
@@ -133,7 +148,7 @@ export function createCuratedMemoryTools(store) {
133
148
  };
134
149
  }
135
150
  const ops = asOps(args.operations);
136
- if (Array.isArray(args.operations) && args.operations.length > 0 && ops && ops.length > 0) {
151
+ if (ops && ops.length > 0) {
137
152
  const result = await Promise.resolve(store.applyBatch(target, ops));
138
153
  return { isError: !result.success, content: JSON.stringify(result) };
139
154
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GACrC,iFAAiF;MAC/E,gFAAgF;MAChF,mFAAmF;MACnF,mFAAmF;MACnF,iFAAiF;MACjF,oFAAoF;MACpF,qFAAqF;MACrF,mFAAmF;MACnF,+EAA+E;MAC/E,iFAAiF;MACjF,iFAAiF;MACjF,4DAA4D;MAC5D,wDAAwD;MACxD,6EAA6E;MAC7E,6FAA6F;MAC7F,0GAA0G;MAC1G,+EAA+E,CAAC;AAEpF,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAE9D,SAAS,QAAQ,CAAC,GAAY;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC5D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,KAAK,CAAC,GAAY;IACzB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtB,MAAM,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAA+B,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAyB;IAChE,MAAM,IAAI,GAOL;QACH,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,8FAA8F;cAC5F,4EAA4E;cAC5E,oFAAoF;cACpF,uDAAuD;cACvD,2EAA2E;cAC3E,8EAA8E;cAC9E,qEAAqE;QACzE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;oBAClB,WAAW,EAAE,oDAAoD;iBAClE;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;oBACxB,WAAW,EAAE,mDAAmD;iBACjE;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yDAAyD;iBACvE;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qDAAqD;iBACnE;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oBAAoB;iBAClC;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,WAAW,EACT,0GAA0G;oBAC5G,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;4BAC9D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC7B;wBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;qBACrB;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;QACD,iBAAiB;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,0BAA0B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,4BAA4B;qBACjF,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACzC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjE,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY;oBAC7B,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBACtD,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO;oBACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,IAAI;wBACb,MAAM;wBACN,WAAW,EAAE,OAAO,CAAC,MAAM;wBAC3B,eAAe,EAAE,OAAO;wBACxB,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;4BACjB,CAAC,CAAC;gCACE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oCACjC,KAAK,EACH,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;wCACrB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;wCAClC,CAAC,CAAC,IAAI,CAAC,KAAK;oCAChB,QAAQ,EAAE,IAAI,CAAC,OAAO;oCACtB,OAAO,EAAE,IAAI,CAAC,OAAO;iCACtB,CAAC,CAAC;6BACJ;4BACH,CAAC,CAAC,EAAE,CAAC;qBACR,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1F,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpE,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,qEAAqE;qBAC7E,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAkC,CAAC,EAAE,CAAC;gBAC1D,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,mBAAmB,MAAM,0EAA0E;qBAC3G,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBACrE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,IAAI,MAAM,2DAA2D;qBAC7E,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,4BAA4B,MAAM,IAAI;qBAC9C,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAClC,MAAM,KAAK,KAAK;gBACd,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;gBAC5B,CAAC,CAAC,MAAM,KAAK,SAAS;oBACpB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;oBACzC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACpC,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACvE,CAAC;KACF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GACrC,iFAAiF;MAC/E,gFAAgF;MAChF,mFAAmF;MACnF,mFAAmF;MACnF,iFAAiF;MACjF,oFAAoF;MACpF,qFAAqF;MACrF,mFAAmF;MACnF,+EAA+E;MAC/E,iFAAiF;MACjF,iFAAiF;MACjF,4DAA4D;MAC5D,wDAAwD;MACxD,6EAA6E;MAC7E,6FAA6F;MAC7F,0GAA0G;MAC1G,+EAA+E,CAAC;AAEpF,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAE9D;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,GAAY;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,KAAK,CAAC,GAAY;IACzB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,wEAAwE;IACxE,6EAA6E;IAC7E,4EAA4E;IAC5E,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAA8B,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAyB;IAChE,MAAM,IAAI,GAOL;QACH,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,8FAA8F;cAC5F,4EAA4E;cAC5E,oFAAoF;cACpF,uDAAuD;cACvD,2EAA2E;cAC3E,8EAA8E;cAC9E,qEAAqE;QACzE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;oBAClB,WAAW,EAAE,oDAAoD;iBAClE;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,CAAC;oBAChB,WAAW,EACT,yFAAyF;iBAC5F;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yDAAyD;iBACvE;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qDAAqD;iBACnE;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oBAAoB;iBAClC;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,WAAW,EACT,0GAA0G;oBAC5G,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;4BAC9D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC7B;wBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;qBACrB;iBACF;aACF;YACD,wEAAwE;YACxE,qEAAqE;YACrE,uEAAuE;YACvE,qBAAqB;YACrB,QAAQ,EAAE,EAAE;SACb;QACD,iBAAiB;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,+DAA+D;wBAC/D,mEAAmE;wBACnE,oBAAoB;wBACpB,KAAK,EACH,0BAA0B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gCAAgC;8BAC3E,2CAA2C;qBAChD,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACzC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjE,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY;oBAC7B,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBACtD,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO;oBACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,IAAI;wBACb,MAAM;wBACN,WAAW,EAAE,OAAO,CAAC,MAAM;wBAC3B,eAAe,EAAE,OAAO;wBACxB,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;4BACjB,CAAC,CAAC;gCACE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oCACjC,KAAK,EACH,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;wCACrB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;wCAClC,CAAC,CAAC,IAAI,CAAC,KAAK;oCAChB,QAAQ,EAAE,IAAI,CAAC,OAAO;oCACtB,OAAO,EAAE,IAAI,CAAC,OAAO;iCACtB,CAAC,CAAC;6BACJ;4BACH,CAAC,CAAC,EAAE,CAAC;qBACR,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpE,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,qEAAqE;qBAC7E,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAkC,CAAC,EAAE,CAAC;gBAC1D,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,mBAAmB,MAAM,0EAA0E;qBAC3G,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBACrE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,IAAI,MAAM,2DAA2D;qBAC7E,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,4BAA4B,MAAM,IAAI;qBAC9C,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAClC,MAAM,KAAK,KAAK;gBACd,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;gBAC5B,CAAC,CAAC,MAAM,KAAK,SAAS;oBACpB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;oBACzC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACpC,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACvE,CAAC;KACF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
@@ -3,17 +3,37 @@ export interface DownloadStream {
3
3
  readonly status: number;
4
4
  readonly body: AsyncIterable<Uint8Array> | null;
5
5
  }
6
- interface ProxyTarget {
6
+ export interface ProxyTarget {
7
7
  readonly host: string;
8
8
  readonly port: number;
9
9
  }
10
+ /** Result of reading the operator's proxy setting. */
11
+ export interface ProxyParseResult {
12
+ /** CONNECT endpoint; present exactly when the text parsed. */
13
+ readonly target?: ProxyTarget;
14
+ /**
15
+ * Why the text cannot be used. Present only for a non-empty setting — an
16
+ * empty one means 「direct」, which is not an error.
17
+ */
18
+ readonly error?: string;
19
+ }
10
20
  /**
11
- * Parse an operator-supplied proxy URL (`http://127.0.0.1:7897`, or the bare
12
- * `127.0.0.1:7897` form people paste from a Clash panel).
21
+ * Parse an operator-supplied proxy URL.
22
+ *
23
+ * Accepts `http://127.0.0.1:7897`, the bare `127.0.0.1:7897` form people paste
24
+ * from a Clash panel, and `http:127.0.0.1:7897` — the same address with the
25
+ * `//` dropped, which is what a hurried paste produces. That last form used to
26
+ * build `http://http:127.0.0.1:7897`, throw inside `new URL()`, and come back
27
+ * as `undefined`: the card showed an address while every byte went unproxied,
28
+ * which reads as 「saved but still stuck」.
29
+ *
30
+ * Only `http:` / `https:` are accepted: {@link tunnel} speaks HTTP CONNECT and
31
+ * nothing else, so a `socks5://` value would open a socket that can never
32
+ * carry the tunnel.
13
33
  * @param value - Setting text; empty means 「no proxy」.
14
- * @returns The loopback-or-remote CONNECT endpoint, or undefined when unset.
34
+ * @returns A CONNECT target, or the reason the text is unusable.
15
35
  */
16
- export declare function parseProxy(value: string | undefined): ProxyTarget | undefined;
36
+ export declare function parseProxy(value: string | undefined): ProxyParseResult;
17
37
  /**
18
38
  * Open one asset URL, preferring a local proxy and falling back to a direct
19
39
  * request when the proxy cannot carry the hop.
@@ -23,5 +43,4 @@ export declare function parseProxy(value: string | undefined): ProxyTarget | und
23
43
  * @returns Status plus a byte stream.
24
44
  */
25
45
  export declare function openAssetStream(rawUrl: string, signal: AbortSignal, proxyUrl?: string): Promise<DownloadStream>;
26
- export {};
27
46
  //# sourceMappingURL=download-http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"download-http.d.ts","sourceRoot":"","sources":["../src/download-http.ts"],"names":[],"mappings":"AA6BA,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;CACjD;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAKD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAW7E;AA+HD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CAczB"}
1
+ {"version":3,"file":"download-http.d.ts","sourceRoot":"","sources":["../src/download-http.ts"],"names":[],"mappings":"AA6BA,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAKD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAkBtE;AA6ID;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CA4BzB"}
@@ -28,25 +28,57 @@ import tls from "node:tls";
28
28
  const REDIRECT_LIMIT = 5;
29
29
  const CONNECT_TIMEOUT_MS = 8_000;
30
30
  /**
31
- * Parse an operator-supplied proxy URL (`http://127.0.0.1:7897`, or the bare
32
- * `127.0.0.1:7897` form people paste from a Clash panel).
31
+ * Parse an operator-supplied proxy URL.
32
+ *
33
+ * Accepts `http://127.0.0.1:7897`, the bare `127.0.0.1:7897` form people paste
34
+ * from a Clash panel, and `http:127.0.0.1:7897` — the same address with the
35
+ * `//` dropped, which is what a hurried paste produces. That last form used to
36
+ * build `http://http:127.0.0.1:7897`, throw inside `new URL()`, and come back
37
+ * as `undefined`: the card showed an address while every byte went unproxied,
38
+ * which reads as 「saved but still stuck」.
39
+ *
40
+ * Only `http:` / `https:` are accepted: {@link tunnel} speaks HTTP CONNECT and
41
+ * nothing else, so a `socks5://` value would open a socket that can never
42
+ * carry the tunnel.
33
43
  * @param value - Setting text; empty means 「no proxy」.
34
- * @returns The loopback-or-remote CONNECT endpoint, or undefined when unset.
44
+ * @returns A CONNECT target, or the reason the text is unusable.
35
45
  */
36
46
  export function parseProxy(value) {
37
47
  if (value === undefined)
38
- return undefined;
48
+ return {};
39
49
  const trimmed = value.trim();
40
50
  if (trimmed === "")
41
- return undefined;
51
+ return {};
52
+ let url;
42
53
  try {
43
- const url = new URL(trimmed.includes("://") ? trimmed : `http://${trimmed}`);
44
- const port = url.port === "" ? (url.protocol === "https:" ? 443 : 80) : Number(url.port);
45
- return { host: url.hostname, port };
54
+ url = new URL(withProxyScheme(trimmed));
46
55
  }
47
56
  catch {
48
- return undefined;
57
+ return { error: `not a URL: ${trimmed}` };
58
+ }
59
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
60
+ return {
61
+ error: `only HTTP CONNECT proxies work here (got ${url.protocol.slice(0, -1)}://)`,
62
+ };
49
63
  }
64
+ if (url.hostname === "")
65
+ return { error: `no host in ${trimmed}` };
66
+ const port = url.port === "" ? (url.protocol === "https:" ? 443 : 80) : Number(url.port);
67
+ return { target: { host: url.hostname, port } };
68
+ }
69
+ /**
70
+ * Give `new URL` something it accepts.
71
+ * @param raw - Trimmed setting text.
72
+ * @returns The text with a scheme and `//`.
73
+ */
74
+ function withProxyScheme(raw) {
75
+ const missingSlashes = /^([a-z][a-z0-9+.-]*):(?!\/\/)/i.exec(raw);
76
+ if (missingSlashes !== null) {
77
+ return `${missingSlashes[1]}://${raw.slice(missingSlashes[0].length)}`;
78
+ }
79
+ if (/^[a-z][a-z0-9+.-]*:\/\//i.test(raw))
80
+ return raw;
81
+ return `http://${raw}`;
50
82
  }
51
83
  /**
52
84
  * Open an HTTP CONNECT tunnel and wrap it in TLS for the target host.
@@ -162,7 +194,18 @@ export async function openAssetStream(rawUrl, signal, proxyUrl) {
162
194
  // Explicit setting first, then the product's own env override. Never a
163
195
  // guessed port: a Host must not route a user's traffic through a relay
164
196
  // they did not name.
165
- const proxy = parseProxy(proxyUrl) ?? parseProxy(process.env.XRK_DOWNLOAD_PROXY);
197
+ const setting = parseProxy(proxyUrl);
198
+ if (setting.error !== undefined) {
199
+ // Fail loud. Dropping an unusable proxy silently is what makes the card
200
+ // show an address while the transfer runs direct — the bug this file was
201
+ // rewritten to fix, back for a second round.
202
+ throw new Error(`download proxy is unusable (${proxyUrl ?? ""}): ${setting.error}`);
203
+ }
204
+ const fromEnv = parseProxy(process.env.XRK_DOWNLOAD_PROXY);
205
+ if (fromEnv.error !== undefined) {
206
+ throw new Error(`XRK_DOWNLOAD_PROXY is unusable (${process.env.XRK_DOWNLOAD_PROXY ?? ""}): ${fromEnv.error}`);
207
+ }
208
+ const proxy = setting.target ?? fromEnv.target;
166
209
  if (proxy === undefined)
167
210
  return openFollow(rawUrl, undefined, signal);
168
211
  try {
@@ -172,7 +215,8 @@ export async function openAssetStream(rawUrl, signal, proxyUrl) {
172
215
  if (signal.aborted)
173
216
  throw error;
174
217
  // A proxy that cannot carry this hop must not fail the download when the
175
- // direct route might work: fall through and try it.
218
+ // direct route might work: fall through and try it. Reaching here means
219
+ // the address parsed — only the tunnel itself failed.
176
220
  return openFollow(rawUrl, undefined, signal);
177
221
  }
178
222
  }
@@ -1 +1 @@
1
- {"version":3,"file":"download-http.js","sourceRoot":"","sources":["../src/download-http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download-http.js","sourceRoot":"","sources":["../src/download-http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import WebSocket from "ws";
2
+ import { type VoiceService } from "./types.js";
3
+ /** Chinese female, the voice this product ships as default. */
4
+ export declare const EDGE_DEFAULT_VOICE = "zh-CN-XiaoxiaoNeural";
5
+ /** One row of the Read Aloud voice catalog. */
6
+ export interface EdgeVoice {
7
+ readonly shortName: string;
8
+ readonly gender: string;
9
+ readonly locale: string;
10
+ readonly friendlyName: string;
11
+ }
12
+ export interface EdgeTtsOptions {
13
+ readonly defaultVoice?: string;
14
+ /** Network seam for tests and gateways. */
15
+ readonly fetchImpl?: typeof fetch;
16
+ /** WebSocket implementation override (tests). */
17
+ readonly webSocketImpl?: typeof WebSocket;
18
+ /** Connection budget; synthesis inherits a larger one. */
19
+ readonly connectTimeoutMs?: number;
20
+ readonly synthesisTimeoutMs?: number;
21
+ }
22
+ /**
23
+ * `Sec-MS-GEC` is `<CS64 checksum>-<SHA-256>` over Edge's copyright line plus
24
+ * the Windows-tick timestamp and token.
25
+ */
26
+ export declare function hashSecMsGecV2(ticksAndToken: string): Promise<string>;
27
+ declare function voiceLocale(voice: string): string;
28
+ declare function escapeXml(text: string): string;
29
+ declare function ssmlFor(text: string, voice: string): string;
30
+ declare function speechConfig(outputFormat: string): string;
31
+ /**
32
+ * Fetch the Read Aloud voice catalog.
33
+ *
34
+ * The card filters this by locale; the list is stable enough to cache for a
35
+ * day on the Host, but this function stays a plain fetch so callers decide.
36
+ */
37
+ export declare function listEdgeVoices(options?: Pick<EdgeTtsOptions, "fetchImpl">): Promise<readonly EdgeVoice[]>;
38
+ export interface EdgeVoiceProviderOptions extends EdgeTtsOptions {
39
+ readonly now?: () => number;
40
+ }
41
+ /**
42
+ * Build the Edge TTS Provider.
43
+ *
44
+ * `transcribe` / `createLiveSession` are honestly unsupported: Edge has no
45
+ * STT and no realtime session, and pretending otherwise would make ASR
46
+ * cards silently point at nothing.
47
+ */
48
+ export declare function createEdgeVoiceProvider(options?: EdgeVoiceProviderOptions): VoiceService;
49
+ /** Voices for one locale prefix (`zh-CN`, `en-US`, …); empty means all. */
50
+ export declare function filterEdgeVoices(voices: readonly EdgeVoice[], localePrefix?: string): readonly EdgeVoice[];
51
+ /** Exposed for the voice catalog test: pure, no network. */
52
+ export declare const edgeTtsInternals: {
53
+ readonly hashSecMsGecV2: typeof hashSecMsGecV2;
54
+ readonly ssmlFor: typeof ssmlFor;
55
+ readonly speechConfig: typeof speechConfig;
56
+ readonly voiceLocale: typeof voiceLocale;
57
+ readonly escapeXml: typeof escapeXml;
58
+ };
59
+ export {};
60
+ //# sourceMappingURL=edge-tts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-tts.d.ts","sourceRoot":"","sources":["../src/edge-tts.ts"],"names":[],"mappings":"AAqBA,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAKL,KAAK,YAAY,EAKlB,MAAM,YAAY,CAAC;AAyBpB,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AAEzD,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAClC,iDAAiD;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;IAC1C,0DAA0D;IAC1D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AA+FD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM3E;AAiBD,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1C;AAED,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOvC;AAED,iBAAS,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQpD;AA4HD,iBAAS,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAkBlD;AA2CD;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAM,GAC9C,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAsB/B;AAMD,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,wBAA6B,GACrC,YAAY,CAkEd;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,YAAY,CAAC,EAAE,MAAM,GACpB,SAAS,SAAS,EAAE,CAItB;AAED,4DAA4D;AAC5D,eAAO,MAAM,gBAAgB;;;;;;CAMnB,CAAC"}