deepclause-sdk 0.0.88 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +418 -914
  3. package/dist/agent.d.ts +19 -2
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +221 -4
  6. package/dist/agent.js.map +1 -1
  7. package/dist/cli/config.d.ts +323 -176
  8. package/dist/cli/config.d.ts.map +1 -1
  9. package/dist/cli/config.js +146 -188
  10. package/dist/cli/config.js.map +1 -1
  11. package/dist/cli/index.d.ts +3 -2
  12. package/dist/cli/index.d.ts.map +1 -1
  13. package/dist/cli/index.js +61 -425
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/login.d.ts +29 -0
  16. package/dist/cli/login.d.ts.map +1 -0
  17. package/dist/cli/login.js +184 -0
  18. package/dist/cli/login.js.map +1 -0
  19. package/dist/cli/readline.d.ts +6 -0
  20. package/dist/cli/readline.d.ts.map +1 -0
  21. package/dist/cli/readline.js +15 -0
  22. package/dist/cli/readline.js.map +1 -0
  23. package/dist/cli/repl-bin.d.ts +9 -0
  24. package/dist/cli/repl-bin.d.ts.map +1 -0
  25. package/dist/cli/repl-bin.js +16 -0
  26. package/dist/cli/repl-bin.js.map +1 -0
  27. package/dist/cli/repl.d.ts +191 -0
  28. package/dist/cli/repl.d.ts.map +1 -0
  29. package/dist/cli/repl.js +1232 -0
  30. package/dist/cli/repl.js.map +1 -0
  31. package/dist/cli/run.d.ts +17 -18
  32. package/dist/cli/run.d.ts.map +1 -1
  33. package/dist/cli/run.js +196 -183
  34. package/dist/cli/run.js.map +1 -1
  35. package/dist/cli/set-backend.d.ts +53 -0
  36. package/dist/cli/set-backend.d.ts.map +1 -0
  37. package/dist/cli/set-backend.js +259 -0
  38. package/dist/cli/set-backend.js.map +1 -0
  39. package/dist/cli/visualize.d.ts +38 -0
  40. package/dist/cli/visualize.d.ts.map +1 -0
  41. package/dist/cli/visualize.js +125 -0
  42. package/dist/cli/visualize.js.map +1 -0
  43. package/dist/compiler.d.ts +5 -52
  44. package/dist/compiler.d.ts.map +1 -1
  45. package/dist/compiler.js +4 -768
  46. package/dist/compiler.js.map +1 -1
  47. package/dist/index.d.ts +29 -2
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +20 -2
  50. package/dist/index.js.map +1 -1
  51. package/dist/judge/index.d.ts +9 -0
  52. package/dist/judge/index.d.ts.map +1 -0
  53. package/dist/judge/index.js +6 -0
  54. package/dist/judge/index.js.map +1 -0
  55. package/dist/judge/jev.d.ts +21 -0
  56. package/dist/judge/jev.d.ts.map +1 -0
  57. package/dist/judge/jev.js +218 -0
  58. package/dist/judge/jev.js.map +1 -0
  59. package/dist/judge/llm.d.ts +23 -0
  60. package/dist/judge/llm.d.ts.map +1 -0
  61. package/dist/judge/llm.js +120 -0
  62. package/dist/judge/llm.js.map +1 -0
  63. package/dist/judge/marshal.d.ts +26 -0
  64. package/dist/judge/marshal.d.ts.map +1 -0
  65. package/dist/judge/marshal.js +266 -0
  66. package/dist/judge/marshal.js.map +1 -0
  67. package/dist/judge/mock.d.ts +28 -0
  68. package/dist/judge/mock.d.ts.map +1 -0
  69. package/dist/judge/mock.js +98 -0
  70. package/dist/judge/mock.js.map +1 -0
  71. package/dist/judge/types.d.ts +95 -0
  72. package/dist/judge/types.d.ts.map +1 -0
  73. package/dist/judge/types.js +23 -0
  74. package/dist/judge/types.js.map +1 -0
  75. package/dist/prolog/bridge.d.ts +5 -1
  76. package/dist/prolog/bridge.d.ts.map +1 -1
  77. package/dist/prolog/bridge.js +29 -1
  78. package/dist/prolog/bridge.js.map +1 -1
  79. package/dist/prolog-src/deepclause_analysis.pl +10 -2
  80. package/dist/prolog-src/deepclause_mi.pl +2522 -118
  81. package/dist/repl/agent.d.ts +72 -0
  82. package/dist/repl/agent.d.ts.map +1 -0
  83. package/dist/repl/agent.js +366 -0
  84. package/dist/repl/agent.js.map +1 -0
  85. package/dist/repl/auth.d.ts +45 -0
  86. package/dist/repl/auth.d.ts.map +1 -0
  87. package/dist/repl/auth.js +116 -0
  88. package/dist/repl/auth.js.map +1 -0
  89. package/dist/repl/backend.d.ts +290 -0
  90. package/dist/repl/backend.d.ts.map +1 -0
  91. package/dist/repl/backend.js +370 -0
  92. package/dist/repl/backend.js.map +1 -0
  93. package/dist/repl/compaction.d.ts +122 -0
  94. package/dist/repl/compaction.d.ts.map +1 -0
  95. package/dist/repl/compaction.js +318 -0
  96. package/dist/repl/compaction.js.map +1 -0
  97. package/dist/repl/export.d.ts +30 -0
  98. package/dist/repl/export.d.ts.map +1 -0
  99. package/dist/repl/export.js +23 -0
  100. package/dist/repl/export.js.map +1 -0
  101. package/dist/repl/frames.d.ts +21 -0
  102. package/dist/repl/frames.d.ts.map +1 -0
  103. package/dist/repl/frames.js +79 -0
  104. package/dist/repl/frames.js.map +1 -0
  105. package/dist/repl/harness-tools.d.ts +74 -0
  106. package/dist/repl/harness-tools.d.ts.map +1 -0
  107. package/dist/repl/harness-tools.js +121 -0
  108. package/dist/repl/harness-tools.js.map +1 -0
  109. package/dist/repl/highlight.d.ts +30 -0
  110. package/dist/repl/highlight.d.ts.map +1 -0
  111. package/dist/repl/highlight.js +285 -0
  112. package/dist/repl/highlight.js.map +1 -0
  113. package/dist/repl/history.d.ts +234 -0
  114. package/dist/repl/history.d.ts.map +1 -0
  115. package/dist/repl/history.js +661 -0
  116. package/dist/repl/history.js.map +1 -0
  117. package/dist/repl/index.d.ts +120 -0
  118. package/dist/repl/index.d.ts.map +1 -0
  119. package/dist/repl/index.js +107 -0
  120. package/dist/repl/index.js.map +1 -0
  121. package/dist/repl/judge.d.ts +51 -0
  122. package/dist/repl/judge.d.ts.map +1 -0
  123. package/dist/repl/judge.js +58 -0
  124. package/dist/repl/judge.js.map +1 -0
  125. package/dist/repl/markdown.d.ts +25 -0
  126. package/dist/repl/markdown.d.ts.map +1 -0
  127. package/dist/repl/markdown.js +103 -0
  128. package/dist/repl/markdown.js.map +1 -0
  129. package/dist/repl/picker.d.ts +34 -0
  130. package/dist/repl/picker.d.ts.map +1 -0
  131. package/dist/repl/picker.js +81 -0
  132. package/dist/repl/picker.js.map +1 -0
  133. package/dist/repl/project-context.d.ts +16 -0
  134. package/dist/repl/project-context.d.ts.map +1 -0
  135. package/dist/repl/project-context.js +23 -0
  136. package/dist/repl/project-context.js.map +1 -0
  137. package/dist/repl/render.d.ts +160 -0
  138. package/dist/repl/render.d.ts.map +1 -0
  139. package/dist/repl/render.js +715 -0
  140. package/dist/repl/render.js.map +1 -0
  141. package/dist/repl/session.d.ts +356 -0
  142. package/dist/repl/session.d.ts.map +1 -0
  143. package/dist/repl/session.js +1275 -0
  144. package/dist/repl/session.js.map +1 -0
  145. package/dist/repl/status.d.ts +100 -0
  146. package/dist/repl/status.d.ts.map +1 -0
  147. package/dist/repl/status.js +218 -0
  148. package/dist/repl/status.js.map +1 -0
  149. package/dist/repl/tools.d.ts +53 -0
  150. package/dist/repl/tools.d.ts.map +1 -0
  151. package/dist/repl/tools.js +307 -0
  152. package/dist/repl/tools.js.map +1 -0
  153. package/dist/repl/toolset.d.ts +32 -0
  154. package/dist/repl/toolset.d.ts.map +1 -0
  155. package/dist/repl/toolset.js +82 -0
  156. package/dist/repl/toolset.js.map +1 -0
  157. package/dist/repl/tui/editor.d.ts +17 -0
  158. package/dist/repl/tui/editor.d.ts.map +1 -0
  159. package/dist/repl/tui/editor.js +39 -0
  160. package/dist/repl/tui/editor.js.map +1 -0
  161. package/dist/repl/tui/status-bar.d.ts +26 -0
  162. package/dist/repl/tui/status-bar.d.ts.map +1 -0
  163. package/dist/repl/tui/status-bar.js +47 -0
  164. package/dist/repl/tui/status-bar.js.map +1 -0
  165. package/dist/repl/tui/theme.d.ts +30 -0
  166. package/dist/repl/tui/theme.d.ts.map +1 -0
  167. package/dist/repl/tui/theme.js +81 -0
  168. package/dist/repl/tui/theme.js.map +1 -0
  169. package/dist/repl/tui/transcript.d.ts +39 -0
  170. package/dist/repl/tui/transcript.d.ts.map +1 -0
  171. package/dist/repl/tui/transcript.js +123 -0
  172. package/dist/repl/tui/transcript.js.map +1 -0
  173. package/dist/runner.d.ts +145 -13
  174. package/dist/runner.d.ts.map +1 -1
  175. package/dist/runner.js +600 -282
  176. package/dist/runner.js.map +1 -1
  177. package/dist/sdk.d.ts.map +1 -1
  178. package/dist/sdk.js +56 -32
  179. package/dist/sdk.js.map +1 -1
  180. package/dist/system/assets/docs/AGENT_PROMPT.md +1373 -0
  181. package/dist/system/assets/docs/DML_AUTHORING.md +195 -0
  182. package/dist/system/assets/docs/DML_REFERENCE.md +393 -72
  183. package/dist/system/assets/docs/HARNESS_EXAMPLES.md +172 -0
  184. package/dist/system/assets/docs/HARNESS_PATTERNS.md +562 -0
  185. package/dist/system/assets/docs/META_PROMPT.md +68 -0
  186. package/dist/system/assets/docs/PROLOG_SNIPPETS.md +117 -0
  187. package/dist/system/assets/index.d.ts +9 -17
  188. package/dist/system/assets/index.d.ts.map +1 -1
  189. package/dist/system/assets/index.js +26 -85
  190. package/dist/system/assets/index.js.map +1 -1
  191. package/dist/system/runtime/agentvm-manager.d.ts +9 -2
  192. package/dist/system/runtime/agentvm-manager.d.ts.map +1 -1
  193. package/dist/system/runtime/agentvm-manager.js +70 -44
  194. package/dist/system/runtime/agentvm-manager.js.map +1 -1
  195. package/dist/system/runtime/media.d.ts +23 -0
  196. package/dist/system/runtime/media.d.ts.map +1 -0
  197. package/dist/system/runtime/media.js +55 -0
  198. package/dist/system/runtime/media.js.map +1 -0
  199. package/dist/system/runtime/shell-limits.d.ts +21 -0
  200. package/dist/system/runtime/shell-limits.d.ts.map +1 -0
  201. package/dist/system/runtime/shell-limits.js +39 -0
  202. package/dist/system/runtime/shell-limits.js.map +1 -0
  203. package/dist/system/runtime/shell-manager.d.ts +8 -3
  204. package/dist/system/runtime/shell-manager.d.ts.map +1 -1
  205. package/dist/system/runtime/shell-manager.js +56 -39
  206. package/dist/system/runtime/shell-manager.js.map +1 -1
  207. package/dist/system/runtime/shell-tool-events.js +5 -0
  208. package/dist/system/runtime/shell-tool-events.js.map +1 -1
  209. package/dist/system/runtime/token-usage.d.ts +2 -0
  210. package/dist/system/runtime/token-usage.d.ts.map +1 -1
  211. package/dist/system/runtime/token-usage.js +7 -0
  212. package/dist/system/runtime/token-usage.js.map +1 -1
  213. package/dist/tools.d.ts +3 -21
  214. package/dist/tools.d.ts.map +1 -1
  215. package/dist/tools.js +14 -168
  216. package/dist/tools.js.map +1 -1
  217. package/dist/types.d.ts +149 -118
  218. package/dist/types.d.ts.map +1 -1
  219. package/dist/validate.d.ts +19 -0
  220. package/dist/validate.d.ts.map +1 -0
  221. package/dist/validate.js +338 -0
  222. package/dist/validate.js.map +1 -0
  223. package/dist/visualize/index.d.ts +52 -0
  224. package/dist/visualize/index.d.ts.map +1 -0
  225. package/dist/visualize/index.js +189 -0
  226. package/dist/visualize/index.js.map +1 -0
  227. package/package.json +17 -15
  228. package/src/prolog-src/deepclause_analysis.pl +10 -2
  229. package/src/prolog-src/deepclause_mi.pl +2522 -118
  230. package/dist/cli/commands.d.ts +0 -42
  231. package/dist/cli/commands.d.ts.map +0 -1
  232. package/dist/cli/commands.js +0 -246
  233. package/dist/cli/commands.js.map +0 -1
  234. package/dist/cli/compile.d.ts +0 -99
  235. package/dist/cli/compile.d.ts.map +0 -1
  236. package/dist/cli/compile.js +0 -363
  237. package/dist/cli/compile.js.map +0 -1
  238. package/dist/cli/default-skills.d.ts +0 -10
  239. package/dist/cli/default-skills.d.ts.map +0 -1
  240. package/dist/cli/default-skills.js +0 -206
  241. package/dist/cli/default-skills.js.map +0 -1
  242. package/dist/cli/interactive.d.ts +0 -2
  243. package/dist/cli/interactive.d.ts.map +0 -1
  244. package/dist/cli/interactive.js +0 -20
  245. package/dist/cli/interactive.js.map +0 -1
  246. package/dist/cli/mcp.d.ts +0 -56
  247. package/dist/cli/mcp.d.ts.map +0 -1
  248. package/dist/cli/mcp.js +0 -138
  249. package/dist/cli/mcp.js.map +0 -1
  250. package/dist/cli/prompt.d.ts +0 -2
  251. package/dist/cli/prompt.d.ts.map +0 -1
  252. package/dist/cli/prompt.js +0 -2
  253. package/dist/cli/prompt.js.map +0 -1
  254. package/dist/cli/search.d.ts +0 -19
  255. package/dist/cli/search.d.ts.map +0 -1
  256. package/dist/cli/search.js +0 -189
  257. package/dist/cli/search.js.map +0 -1
  258. package/dist/cli/tool-args.d.ts +0 -2
  259. package/dist/cli/tool-args.d.ts.map +0 -1
  260. package/dist/cli/tool-args.js +0 -39
  261. package/dist/cli/tool-args.js.map +0 -1
  262. package/dist/cli/tools.d.ts +0 -36
  263. package/dist/cli/tools.d.ts.map +0 -1
  264. package/dist/cli/tools.js +0 -229
  265. package/dist/cli/tools.js.map +0 -1
  266. package/dist/cli/tui/index.d.ts +0 -22
  267. package/dist/cli/tui/index.d.ts.map +0 -1
  268. package/dist/cli/tui/index.js +0 -29
  269. package/dist/cli/tui/index.js.map +0 -1
  270. package/dist/cli/tui.d.ts +0 -167
  271. package/dist/cli/tui.d.ts.map +0 -1
  272. package/dist/cli/tui.js +0 -5228
  273. package/dist/cli/tui.js.map +0 -1
  274. package/dist/compiler_prompt.d.ts +0 -20
  275. package/dist/compiler_prompt.d.ts.map +0 -1
  276. package/dist/compiler_prompt.js +0 -870
  277. package/dist/compiler_prompt.js.map +0 -1
  278. package/dist/deepclause-cli.skill +0 -0
  279. package/dist/prolog-src/deepclause_mi.pl.bak +0 -570
  280. package/dist/system/assets/compactors/default-memory-compactor.dml +0 -6
  281. package/dist/system/assets/docs/CONDUCTOR_PROMPT.md +0 -105
  282. package/dist/system/assets/docs/DML_COMPILER_PROMPT.md +0 -700
  283. package/dist/system/assets/docs/TUI.md +0 -150
  284. package/dist/system/assets/recipes/deepclause-coding-workflow/SKILL.md +0 -100
  285. package/dist/system/assets/skills/conductor.dml +0 -76
  286. package/dist/system/assets/skills/deep-planner.dml +0 -412
  287. package/dist/system/assets/skills/plan.dml +0 -429
  288. package/dist/system/assets/skills/security-planner.dml +0 -337
  289. package/dist/system/assets/skills/skill-creator.dml +0 -187
  290. package/dist/system/runtime/catalog-recipes.d.ts +0 -24
  291. package/dist/system/runtime/catalog-recipes.d.ts.map +0 -1
  292. package/dist/system/runtime/catalog-recipes.js +0 -273
  293. package/dist/system/runtime/catalog-recipes.js.map +0 -1
  294. package/dist/system/runtime/catalog-skills.d.ts +0 -50
  295. package/dist/system/runtime/catalog-skills.d.ts.map +0 -1
  296. package/dist/system/runtime/catalog-skills.js +0 -152
  297. package/dist/system/runtime/catalog-skills.js.map +0 -1
  298. package/dist/system/runtime/conductor.d.ts +0 -105
  299. package/dist/system/runtime/conductor.d.ts.map +0 -1
  300. package/dist/system/runtime/conductor.js +0 -732
  301. package/dist/system/runtime/conductor.js.map +0 -1
  302. package/dist/system/runtime/console-capture.d.ts +0 -9
  303. package/dist/system/runtime/console-capture.d.ts.map +0 -1
  304. package/dist/system/runtime/console-capture.js +0 -67
  305. package/dist/system/runtime/console-capture.js.map +0 -1
  306. package/dist/system/runtime/dml-executor.d.ts +0 -52
  307. package/dist/system/runtime/dml-executor.d.ts.map +0 -1
  308. package/dist/system/runtime/dml-executor.js +0 -203
  309. package/dist/system/runtime/dml-executor.js.map +0 -1
  310. package/dist/system/runtime/runtime-tools.d.ts +0 -31
  311. package/dist/system/runtime/runtime-tools.d.ts.map +0 -1
  312. package/dist/system/runtime/runtime-tools.js +0 -312
  313. package/dist/system/runtime/runtime-tools.js.map +0 -1
  314. package/dist/system/runtime/skill-creator.d.ts +0 -38
  315. package/dist/system/runtime/skill-creator.d.ts.map +0 -1
  316. package/dist/system/runtime/skill-creator.js +0 -763
  317. package/dist/system/runtime/skill-creator.js.map +0 -1
  318. package/src/prolog-src/deepclause_mi.pl.bak +0 -570
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/repl/backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * TypeScript context compaction for the REPL (and, later, the one-shot runner).
3
+ *
4
+ * This ports pi's compaction algorithm (`core/compaction/compaction.ts`) to the
5
+ * SDK's `MemoryMessage[]` model. It intentionally shares pi's shapes:
6
+ *
7
+ * - chars/4 token estimation (`estimateMemoryTokens`);
8
+ * - `shouldCompact` threshold semantics (`contextWindow - reserveTokens`);
9
+ * - the cut-point search that keeps a recent tail;
10
+ * - the structured summarization prompts (Goal / Constraints / Progress /
11
+ * Decisions / Next Steps / Critical Context).
12
+ *
13
+ * Unlike pi's version it does not use `SessionEntry`/`AgentMessage` trees: the
14
+ * REPL stores memory as `message{role, content}` Prolog terms, mapped to
15
+ * `MemoryMessage[]` on the host. The summarization call goes through the active
16
+ * `LLMBackend`, so it reuses pi's model, credentials, streaming, and cancellation.
17
+ */
18
+ import type { LLMBackend, LLMUsage, MemoryMessage } from '../types.js';
19
+ import { DEFAULT_COMPACTION_SETTINGS } from '@earendil-works/pi-coding-agent';
20
+ /**
21
+ * pi's compaction settings (same shape as its `core/compaction` settings).
22
+ * `DEFAULT_COMPACTION_SETTINGS` and the threshold come straight from pi; only
23
+ * the cut/summarization below is the SDK's port.
24
+ */
25
+ export interface CompactionSettings {
26
+ enabled: boolean;
27
+ reserveTokens: number;
28
+ keepRecentTokens: number;
29
+ }
30
+ export { DEFAULT_COMPACTION_SETTINGS };
31
+ /** Leading marker of a compacted checkpoint message. */
32
+ export declare const SUMMARY_PREFIX = "[Context summary]";
33
+ /** Conservative chars/4 estimate for one message. */
34
+ export declare function estimateMessageTokens(message: MemoryMessage): number;
35
+ /** Conservative chars/4 estimate for a message list. */
36
+ export declare function estimateMemoryTokens(messages: MemoryMessage[]): number;
37
+ /** Total context tokens from a usage record, preferring the provider total. */
38
+ export declare function calculateContextTokens(usage: LLMUsage): number;
39
+ /** Whether the context has grown past `contextWindow - reserveTokens`. */
40
+ export declare function shouldCompact(contextTokens: number, contextWindow: number, settings?: CompactionSettings): boolean;
41
+ export interface CompactionCut {
42
+ /** Index of the first message to keep. `0` means "nothing to summarize". */
43
+ cutIndex: number;
44
+ /** Messages to hand to the summarizer. */
45
+ messagesToSummarize: MemoryMessage[];
46
+ /** Messages retained verbatim. */
47
+ keptMessages: MemoryMessage[];
48
+ }
49
+ /**
50
+ * Walk from the newest message backwards, accumulating estimated tokens, until
51
+ * `keepRecentTokens` is reached. The cut is then moved back to the nearest
52
+ * `user` boundary so an assistant turn is never separated from its prompt.
53
+ *
54
+ * System messages are never summarized (they carry the checkpoint and the
55
+ * runtime contract) and are excluded from the accumulated size, matching the
56
+ * intent of pi's "never cut the current system prompt" rule.
57
+ */
58
+ export declare function findCompactionCut(messages: MemoryMessage[], keepRecentTokens?: number): CompactionCut;
59
+ /** The most recent compacted checkpoint, if the memory already contains one. */
60
+ export declare function findExistingSummary(messages: MemoryMessage[]): string | undefined;
61
+ /** Wrap a summary as the checkpoint message prepended to compacted memory. */
62
+ export declare function buildSummaryMessage(summary: string): MemoryMessage;
63
+ /** Ported verbatim from pi's `SUMMARIZATION_SYSTEM_PROMPT`. */
64
+ export declare const SUMMARIZATION_SYSTEM_PROMPT = "You are a context summarization assistant. Your task is to read a conversation between a user and an AI assistant, then produce a structured summary following the exact format specified.\n\nDo NOT continue the conversation. Do NOT respond to any questions in the conversation. ONLY output the structured summary.";
65
+ /** Serialize a conversation to text so the model summarizes instead of continuing. */
66
+ export declare function serializeMemoryConversation(messages: MemoryMessage[]): string;
67
+ /** Build the user-side summarization prompt, wrapping the conversation in tags. */
68
+ export declare function buildSummarizationPrompt(messages: MemoryMessage[], previousSummary?: string, customInstructions?: string): string;
69
+ export interface GenerateMemorySummaryParams {
70
+ /** Messages to summarize (already cut). System messages are ignored. */
71
+ messages: MemoryMessage[];
72
+ previousSummary?: string;
73
+ backend: LLMBackend;
74
+ model: string;
75
+ reserveTokens?: number;
76
+ signal?: AbortSignal;
77
+ customInstructions?: string;
78
+ }
79
+ /** Generate a structured summary of `messages` through the active backend. */
80
+ export declare function generateMemorySummary(params: GenerateMemorySummaryParams): Promise<{
81
+ summary: string;
82
+ usage?: LLMUsage;
83
+ }>;
84
+ export interface CompactMemoryParams {
85
+ messages: MemoryMessage[];
86
+ backend: LLMBackend;
87
+ model: string;
88
+ contextWindow?: number;
89
+ settings?: CompactionSettings;
90
+ signal?: AbortSignal;
91
+ customInstructions?: string;
92
+ /** Compact even when the context is below the threshold (manual `compact.`). */
93
+ force?: boolean;
94
+ }
95
+ export type CompactMemoryReason = 'applied' | 'disabled' | 'below-threshold' | 'nothing-to-summarize' | 'empty-summary' | 'no-reduction' | 'failed';
96
+ export interface CompactMemoryResult {
97
+ applied: boolean;
98
+ reason: CompactMemoryReason;
99
+ messages: MemoryMessage[];
100
+ summary?: string;
101
+ tokensBefore: number;
102
+ tokensAfter: number;
103
+ usage?: LLMUsage;
104
+ error?: string;
105
+ }
106
+ /**
107
+ * Compact `messages` if needed (or `force`d). Returns the rewritten list: the
108
+ * preserved system messages, the new checkpoint, then the recent tail.
109
+ */
110
+ export declare function compactMemory(params: CompactMemoryParams): Promise<CompactMemoryResult>;
111
+ export interface MemoryCompactionEvent {
112
+ scope: 'loop' | 'session';
113
+ trigger: 'before_model_call' | 'before_user_message';
114
+ action: 'applied' | 'skipped' | 'failed';
115
+ beforeTokens: number;
116
+ afterTokens: number;
117
+ error?: string;
118
+ usage?: LLMUsage;
119
+ }
120
+ /** Turn a `CompactMemoryResult` into the fields consumed by a `memory_compaction` event. */
121
+ export declare function toCompactionEvent(scope: MemoryCompactionEvent['scope'], trigger: MemoryCompactionEvent['trigger'], result: CompactMemoryResult): MemoryCompactionEvent;
122
+ //# sourceMappingURL=compaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/repl/compaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,318 @@
1
+ /**
2
+ * TypeScript context compaction for the REPL (and, later, the one-shot runner).
3
+ *
4
+ * This ports pi's compaction algorithm (`core/compaction/compaction.ts`) to the
5
+ * SDK's `MemoryMessage[]` model. It intentionally shares pi's shapes:
6
+ *
7
+ * - chars/4 token estimation (`estimateMemoryTokens`);
8
+ * - `shouldCompact` threshold semantics (`contextWindow - reserveTokens`);
9
+ * - the cut-point search that keeps a recent tail;
10
+ * - the structured summarization prompts (Goal / Constraints / Progress /
11
+ * Decisions / Next Steps / Critical Context).
12
+ *
13
+ * Unlike pi's version it does not use `SessionEntry`/`AgentMessage` trees: the
14
+ * REPL stores memory as `message{role, content}` Prolog terms, mapped to
15
+ * `MemoryMessage[]` on the host. The summarization call goes through the active
16
+ * `LLMBackend`, so it reuses pi's model, credentials, streaming, and cancellation.
17
+ */
18
+ import { DEFAULT_COMPACTION_SETTINGS, shouldCompact as piShouldCompact, } from '@earendil-works/pi-coding-agent';
19
+ export { DEFAULT_COMPACTION_SETTINGS };
20
+ /** Leading marker of a compacted checkpoint message. */
21
+ export const SUMMARY_PREFIX = '[Context summary]';
22
+ // =============================================================================
23
+ // Token accounting
24
+ // =============================================================================
25
+ /** Per-message overhead, matching the SDK's historical estimate. */
26
+ const PER_MESSAGE_OVERHEAD = 4;
27
+ /** Conservative chars/4 estimate for one message. */
28
+ export function estimateMessageTokens(message) {
29
+ return PER_MESSAGE_OVERHEAD + Math.max(1, Math.ceil(message.content.length / 4));
30
+ }
31
+ /** Conservative chars/4 estimate for a message list. */
32
+ export function estimateMemoryTokens(messages) {
33
+ return messages.reduce((total, message) => total + estimateMessageTokens(message), 0);
34
+ }
35
+ /** Total context tokens from a usage record, preferring the provider total. */
36
+ export function calculateContextTokens(usage) {
37
+ return usage.totalTokens || (usage.inputTokens + usage.outputTokens + (usage.cacheReadTokens ?? 0) + (usage.cacheWriteTokens ?? 0));
38
+ }
39
+ /** Whether the context has grown past `contextWindow - reserveTokens`. */
40
+ export function shouldCompact(contextTokens, contextWindow, settings = DEFAULT_COMPACTION_SETTINGS) {
41
+ // Guard the unknown-window case (pi assumes a positive window).
42
+ if (contextWindow <= 0) {
43
+ return false;
44
+ }
45
+ return piShouldCompact(contextTokens, contextWindow, settings);
46
+ }
47
+ /**
48
+ * Walk from the newest message backwards, accumulating estimated tokens, until
49
+ * `keepRecentTokens` is reached. The cut is then moved back to the nearest
50
+ * `user` boundary so an assistant turn is never separated from its prompt.
51
+ *
52
+ * System messages are never summarized (they carry the checkpoint and the
53
+ * runtime contract) and are excluded from the accumulated size, matching the
54
+ * intent of pi's "never cut the current system prompt" rule.
55
+ */
56
+ export function findCompactionCut(messages, keepRecentTokens = DEFAULT_COMPACTION_SETTINGS.keepRecentTokens) {
57
+ let accumulated = 0;
58
+ let candidate = messages.length;
59
+ for (let index = messages.length - 1; index >= 0; index -= 1) {
60
+ const message = messages[index];
61
+ if (message.role === 'system') {
62
+ continue;
63
+ }
64
+ accumulated += estimateMessageTokens(message);
65
+ if (accumulated >= keepRecentTokens) {
66
+ candidate = index;
67
+ break;
68
+ }
69
+ }
70
+ if (candidate >= messages.length) {
71
+ return { cutIndex: 0, messagesToSummarize: [], keptMessages: messages.slice() };
72
+ }
73
+ // Move back to a user boundary (the start of a turn), skipping assistants.
74
+ let cutIndex = candidate;
75
+ while (cutIndex > 0 && messages[cutIndex]?.role !== 'user') {
76
+ cutIndex -= 1;
77
+ }
78
+ const messagesToSummarize = messages
79
+ .slice(0, cutIndex)
80
+ .filter((message) => message.role !== 'system');
81
+ const preservedSystem = messages
82
+ .slice(0, cutIndex)
83
+ .filter((message) => message.role === 'system');
84
+ const keptMessages = [...preservedSystem, ...messages.slice(cutIndex)];
85
+ return { cutIndex, messagesToSummarize, keptMessages };
86
+ }
87
+ // =============================================================================
88
+ // Summary detection
89
+ // =============================================================================
90
+ /** The most recent compacted checkpoint, if the memory already contains one. */
91
+ export function findExistingSummary(messages) {
92
+ for (let index = messages.length - 1; index >= 0; index -= 1) {
93
+ const message = messages[index];
94
+ if (message.role === 'system' && message.content.startsWith(SUMMARY_PREFIX)) {
95
+ return message.content.slice(SUMMARY_PREFIX.length).trim();
96
+ }
97
+ }
98
+ return undefined;
99
+ }
100
+ /** Wrap a summary as the checkpoint message prepended to compacted memory. */
101
+ export function buildSummaryMessage(summary) {
102
+ return { role: 'system', content: `${SUMMARY_PREFIX}\n${summary.trim()}` };
103
+ }
104
+ // =============================================================================
105
+ // Summarization prompts (ported from pi)
106
+ // =============================================================================
107
+ /** Ported verbatim from pi's `SUMMARIZATION_SYSTEM_PROMPT`. */
108
+ export const SUMMARIZATION_SYSTEM_PROMPT = `You are a context summarization assistant. Your task is to read a conversation between a user and an AI assistant, then produce a structured summary following the exact format specified.
109
+
110
+ Do NOT continue the conversation. Do NOT respond to any questions in the conversation. ONLY output the structured summary.`;
111
+ /** Ported from pi's `SUMMARIZATION_PROMPT`. */
112
+ const SUMMARIZATION_PROMPT = `The messages above are a conversation to summarize. Create a structured context checkpoint summary that another LLM will use to continue the work.
113
+
114
+ Use this EXACT format:
115
+
116
+ ## Goal
117
+ [What is the user trying to accomplish? Can be multiple items if the session covers different tasks.]
118
+
119
+ ## Constraints & Preferences
120
+ - [Any constraints, preferences, or requirements mentioned by user]
121
+ - [Or "(none)" if none were mentioned]
122
+
123
+ ## Progress
124
+ ### Done
125
+ - [x] [Completed tasks/changes]
126
+
127
+ ### In Progress
128
+ - [ ] [Current work]
129
+
130
+ ### Blocked
131
+ - [Issues preventing progress, if any]
132
+
133
+ ## Key Decisions
134
+ - **[Decision]**: [Brief rationale]
135
+
136
+ ## Next Steps
137
+ 1. [Ordered list of what should happen next]
138
+
139
+ ## Critical Context
140
+ - [Any data, examples, or references needed to continue]
141
+ - [Or "(none)" if not applicable]
142
+
143
+ Keep each section concise. Preserve exact file paths, function names, and error messages.`;
144
+ /** Ported from pi's `UPDATE_SUMMARIZATION_INSTRUCTIONS`. */
145
+ const UPDATE_SUMMARIZATION_INSTRUCTIONS = `Update the existing structured summary with new information. RULES:
146
+ - PRESERVE all existing information from the previous summary
147
+ - ADD new progress, decisions, and context from the new messages
148
+ - UPDATE the Progress section: move items from "In Progress" to "Done" when completed
149
+ - UPDATE "Next Steps" based on what was accomplished
150
+ - PRESERVE exact file paths, function names, and error messages
151
+ - If something is no longer relevant, you may remove it
152
+
153
+ Use this EXACT format:
154
+
155
+ ## Goal
156
+ [Preserve existing goals, add new ones if the task expanded]
157
+
158
+ ## Constraints & Preferences
159
+ - [Preserve existing, add new ones discovered]
160
+
161
+ ## Progress
162
+ ### Done
163
+ - [x] [Include previously done items AND newly completed items]
164
+
165
+ ### In Progress
166
+ - [ ] [Current work - update based on progress]
167
+
168
+ ### Blocked
169
+ - [Current blockers - remove if resolved]
170
+
171
+ ## Key Decisions
172
+ - **[Decision]**: [Brief rationale] (preserve all previous, add new)
173
+
174
+ ## Next Steps
175
+ 1. [Update based on current state]
176
+
177
+ ## Critical Context
178
+ - [Preserve important context, add new if needed]
179
+
180
+ Keep each section concise. Preserve exact file paths, function names, and error messages.`;
181
+ const UPDATE_SUMMARIZATION_PROMPT = `The messages above are NEW conversation messages to incorporate into the existing summary provided in <previous-summary> tags.
182
+
183
+ ${UPDATE_SUMMARIZATION_INSTRUCTIONS}`;
184
+ /** Serialize a conversation to text so the model summarizes instead of continuing. */
185
+ export function serializeMemoryConversation(messages) {
186
+ return messages
187
+ .map((message) => {
188
+ const label = message.role === 'assistant'
189
+ ? 'Assistant'
190
+ : message.role === 'system'
191
+ ? 'System'
192
+ : 'User';
193
+ return `[${label}]: ${message.content}`;
194
+ })
195
+ .join('\n\n');
196
+ }
197
+ /** Build the user-side summarization prompt, wrapping the conversation in tags. */
198
+ export function buildSummarizationPrompt(messages, previousSummary, customInstructions) {
199
+ const conversationText = serializeMemoryConversation(messages);
200
+ let basePrompt = previousSummary ? UPDATE_SUMMARIZATION_PROMPT : SUMMARIZATION_PROMPT;
201
+ if (customInstructions) {
202
+ basePrompt = `${basePrompt}\n\nAdditional focus: ${customInstructions}`;
203
+ }
204
+ let promptText = `<conversation>\n${conversationText}\n</conversation>\n\n`;
205
+ if (previousSummary) {
206
+ promptText += `<previous-summary>\n${previousSummary}\n</previous-summary>\n\n`;
207
+ }
208
+ promptText += basePrompt;
209
+ return promptText;
210
+ }
211
+ /** Generate a structured summary of `messages` through the active backend. */
212
+ export async function generateMemorySummary(params) {
213
+ const conversation = params.messages.filter((message) => message.role !== 'system');
214
+ const promptText = buildSummarizationPrompt(conversation, params.previousSummary, params.customInstructions);
215
+ const reserveTokens = params.reserveTokens ?? DEFAULT_COMPACTION_SETTINGS.reserveTokens;
216
+ const maxTokens = Math.max(512, Math.min(Math.floor(0.8 * reserveTokens), 8192));
217
+ const response = await params.backend.complete({
218
+ messages: [
219
+ { role: 'system', content: SUMMARIZATION_SYSTEM_PROMPT },
220
+ { role: 'user', content: promptText },
221
+ ],
222
+ temperature: 0.3,
223
+ maxTokens,
224
+ signal: params.signal,
225
+ });
226
+ if (response.finishReason === 'error' || response.finishReason === 'aborted') {
227
+ throw new Error(`summarization ${response.finishReason}`);
228
+ }
229
+ const summary = (response.text ?? '').trim();
230
+ if (!summary) {
231
+ throw new Error('summarization returned an empty summary');
232
+ }
233
+ return { summary, usage: response.usage };
234
+ }
235
+ /**
236
+ * Compact `messages` if needed (or `force`d). Returns the rewritten list: the
237
+ * preserved system messages, the new checkpoint, then the recent tail.
238
+ */
239
+ export async function compactMemory(params) {
240
+ const settings = params.settings ?? DEFAULT_COMPACTION_SETTINGS;
241
+ const messages = params.messages;
242
+ const tokensBefore = estimateMemoryTokens(messages);
243
+ if (!settings.enabled && !params.force) {
244
+ return { applied: false, reason: 'disabled', messages, tokensBefore, tokensAfter: tokensBefore };
245
+ }
246
+ if (!params.force
247
+ && params.contextWindow !== undefined
248
+ && !shouldCompact(tokensBefore, params.contextWindow, settings)) {
249
+ return { applied: false, reason: 'below-threshold', messages, tokensBefore, tokensAfter: tokensBefore };
250
+ }
251
+ const cut = findCompactionCut(messages, settings.keepRecentTokens);
252
+ if (cut.messagesToSummarize.length === 0) {
253
+ return { applied: false, reason: 'nothing-to-summarize', messages, tokensBefore, tokensAfter: tokensBefore };
254
+ }
255
+ const previousSummary = findExistingSummary(messages);
256
+ let generated;
257
+ try {
258
+ generated = await generateMemorySummary({
259
+ messages: cut.messagesToSummarize,
260
+ previousSummary,
261
+ backend: params.backend,
262
+ model: params.model,
263
+ reserveTokens: settings.reserveTokens,
264
+ signal: params.signal,
265
+ customInstructions: params.customInstructions,
266
+ });
267
+ }
268
+ catch (error) {
269
+ return {
270
+ applied: false,
271
+ reason: 'failed',
272
+ messages,
273
+ tokensBefore,
274
+ tokensAfter: tokensBefore,
275
+ error: error instanceof Error ? error.message : String(error),
276
+ };
277
+ }
278
+ const rewritten = [...cut.keptMessages, buildSummaryMessage(generated.summary)];
279
+ const tokensAfter = estimateMemoryTokens(rewritten);
280
+ if (tokensAfter >= tokensBefore) {
281
+ return {
282
+ applied: false,
283
+ reason: 'no-reduction',
284
+ messages,
285
+ tokensBefore,
286
+ tokensAfter,
287
+ summary: generated.summary,
288
+ usage: generated.usage,
289
+ };
290
+ }
291
+ return {
292
+ applied: true,
293
+ reason: 'applied',
294
+ messages: rewritten,
295
+ summary: generated.summary,
296
+ tokensBefore,
297
+ tokensAfter,
298
+ usage: generated.usage,
299
+ };
300
+ }
301
+ /** Turn a `CompactMemoryResult` into the fields consumed by a `memory_compaction` event. */
302
+ export function toCompactionEvent(scope, trigger, result) {
303
+ const action = result.applied
304
+ ? 'applied'
305
+ : result.reason === 'failed' || result.reason === 'empty-summary'
306
+ ? 'failed'
307
+ : 'skipped';
308
+ return {
309
+ scope,
310
+ trigger,
311
+ action,
312
+ beforeTokens: result.tokensBefore,
313
+ afterTokens: result.tokensAfter,
314
+ error: result.error,
315
+ usage: result.usage,
316
+ };
317
+ }
318
+ //# sourceMappingURL=compaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/repl/compaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Harness export helpers (M2).
3
+ *
4
+ * The actual serialization lives in Prolog (`export_harness/3`); this module
5
+ * builds the header, applies the optional `--skill` wrapper, and defines the
6
+ * result shape.
7
+ */
8
+ export interface HarnessExportOptions {
9
+ /** Override the header comment line (used by deterministic tests). */
10
+ header?: string;
11
+ /** Mark the export as a skill (header only). Define `agent_main` in the harness for `run`. */
12
+ skill?: boolean;
13
+ /** Output path; defaults to `harness.dml` in the workspace. */
14
+ path?: string;
15
+ }
16
+ export interface HarnessExportResult {
17
+ path: string;
18
+ clauses: number;
19
+ tools: number;
20
+ scripts: number;
21
+ }
22
+ /** Header used when the caller does not supply one. */
23
+ export declare function buildHarnessHeader(info?: {
24
+ timestamp?: string;
25
+ backend?: string;
26
+ model?: string;
27
+ }): string;
28
+ /** Strip the informational header line, e.g. for byte-stability comparisons. */
29
+ export declare function stripExportHeader(text: string): string;
30
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/repl/export.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8FAA8F;IAC9F,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,IAAI,GAAE;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACX,GAAG,MAAM,CAMd;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Harness export helpers (M2).
3
+ *
4
+ * The actual serialization lives in Prolog (`export_harness/3`); this module
5
+ * builds the header, applies the optional `--skill` wrapper, and defines the
6
+ * result shape.
7
+ */
8
+ /** Header used when the caller does not supply one. */
9
+ export function buildHarnessHeader(info = {}) {
10
+ const parts = ['DML harness — exported'];
11
+ if (info.timestamp)
12
+ parts.push(info.timestamp);
13
+ if (info.backend)
14
+ parts.push(`backend: ${info.backend}`);
15
+ if (info.model)
16
+ parts.push(`model: ${info.model}`);
17
+ return parts.join(' ');
18
+ }
19
+ /** Strip the informational header line, e.g. for byte-stability comparisons. */
20
+ export function stripExportHeader(text) {
21
+ return text.replace(/^% DML harness[^\n]*\n/, '');
22
+ }
23
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/repl/export.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,uDAAuD;AACvD,MAAM,UAAU,kBAAkB,CAAC,OAI/B,EAAE;IACJ,MAAM,KAAK,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Helpers shared by the REPL session/frame layers.
3
+ *
4
+ * The frame stack itself lives in the Prolog runtime (`session_frame/4`,
5
+ * `step_frame/4`) and is driven by `DMLRunner.runFrame`. These helpers cover
6
+ * the Prolog-term marshalling and small presentation utilities the REPL needs.
7
+ */
8
+ import type { FrameKind } from '../types.js';
9
+ /** Unwrap a swipl-wasm tagged value (`{ $t, v }`) into a plain JS value. */
10
+ export declare function plainValue(value: unknown): unknown;
11
+ /** Convert a JS value into a Prolog term string, mirroring DMLRunner.toPrologTerm. */
12
+ export declare function toPrologTerm(value: unknown): string;
13
+ /** Quote a string as a single-line Prolog string literal. */
14
+ export declare function quotePrologString(value: string): string;
15
+ /** Quote a string as a Prolog atom when needed. */
16
+ export declare function quoteAtom(value: string): string;
17
+ /** Build a `params{...}` dict term from a JS record (keys lowercased). */
18
+ export declare function buildParamsTerm(params: Record<string, unknown>): string;
19
+ /** Human label for a frame kind, used by the renderer. */
20
+ export declare function frameKindLabel(kind: FrameKind): string;
21
+ //# sourceMappingURL=frames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../src/repl/frames.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQlD;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAuBnD;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED,mDAAmD;AACnD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAKvE;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAUtD"}