longer-agent 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 (289) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +227 -0
  3. package/README.zh-CN.md +227 -0
  4. package/agent_templates/executor/agent.yaml +22 -0
  5. package/agent_templates/executor/system_prompt.md +17 -0
  6. package/agent_templates/explorer/agent.yaml +13 -0
  7. package/agent_templates/explorer/system_prompt.md +19 -0
  8. package/agent_templates/main/agent.yaml +7 -0
  9. package/agent_templates/main/system_prompt.md +45 -0
  10. package/configExample.yaml +83 -0
  11. package/dist/agents/agent.d.ts +79 -0
  12. package/dist/agents/agent.d.ts.map +1 -0
  13. package/dist/agents/agent.js +156 -0
  14. package/dist/agents/agent.js.map +1 -0
  15. package/dist/agents/tool-loop.d.ts +140 -0
  16. package/dist/agents/tool-loop.d.ts.map +1 -0
  17. package/dist/agents/tool-loop.js +465 -0
  18. package/dist/agents/tool-loop.js.map +1 -0
  19. package/dist/ask.d.ts +81 -0
  20. package/dist/ask.d.ts.map +1 -0
  21. package/dist/ask.js +34 -0
  22. package/dist/ask.js.map +1 -0
  23. package/dist/auth/openai-oauth.d.ts +66 -0
  24. package/dist/auth/openai-oauth.d.ts.map +1 -0
  25. package/dist/auth/openai-oauth.js +640 -0
  26. package/dist/auth/openai-oauth.js.map +1 -0
  27. package/dist/cli.d.ts +14 -0
  28. package/dist/cli.d.ts.map +1 -0
  29. package/dist/cli.js +254 -0
  30. package/dist/cli.js.map +1 -0
  31. package/dist/commands.d.ts +118 -0
  32. package/dist/commands.d.ts.map +1 -0
  33. package/dist/commands.js +862 -0
  34. package/dist/commands.js.map +1 -0
  35. package/dist/config.d.ts +130 -0
  36. package/dist/config.d.ts.map +1 -0
  37. package/dist/config.js +648 -0
  38. package/dist/config.js.map +1 -0
  39. package/dist/context-rendering.d.ts +69 -0
  40. package/dist/context-rendering.d.ts.map +1 -0
  41. package/dist/context-rendering.js +250 -0
  42. package/dist/context-rendering.js.map +1 -0
  43. package/dist/document-projection.d.ts +12 -0
  44. package/dist/document-projection.d.ts.map +1 -0
  45. package/dist/document-projection.js +75 -0
  46. package/dist/document-projection.js.map +1 -0
  47. package/dist/ephemeral-log.d.ts +15 -0
  48. package/dist/ephemeral-log.d.ts.map +1 -0
  49. package/dist/ephemeral-log.js +173 -0
  50. package/dist/ephemeral-log.js.map +1 -0
  51. package/dist/file-attach.d.ts +89 -0
  52. package/dist/file-attach.d.ts.map +1 -0
  53. package/dist/file-attach.js +571 -0
  54. package/dist/file-attach.js.map +1 -0
  55. package/dist/index.d.ts +29 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +43 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/init-wizard.d.ts +13 -0
  60. package/dist/init-wizard.d.ts.map +1 -0
  61. package/dist/init-wizard.js +328 -0
  62. package/dist/init-wizard.js.map +1 -0
  63. package/dist/log-entry.d.ts +104 -0
  64. package/dist/log-entry.d.ts.map +1 -0
  65. package/dist/log-entry.js +292 -0
  66. package/dist/log-entry.js.map +1 -0
  67. package/dist/log-projection.d.ts +73 -0
  68. package/dist/log-projection.d.ts.map +1 -0
  69. package/dist/log-projection.js +651 -0
  70. package/dist/log-projection.js.map +1 -0
  71. package/dist/mcp-client.d.ts +55 -0
  72. package/dist/mcp-client.d.ts.map +1 -0
  73. package/dist/mcp-client.js +402 -0
  74. package/dist/mcp-client.js.map +1 -0
  75. package/dist/model-selection.d.ts +16 -0
  76. package/dist/model-selection.d.ts.map +1 -0
  77. package/dist/model-selection.js +181 -0
  78. package/dist/model-selection.js.map +1 -0
  79. package/dist/network-retry.d.ts +38 -0
  80. package/dist/network-retry.d.ts.map +1 -0
  81. package/dist/network-retry.js +140 -0
  82. package/dist/network-retry.js.map +1 -0
  83. package/dist/persistence.d.ts +104 -0
  84. package/dist/persistence.d.ts.map +1 -0
  85. package/dist/persistence.js +644 -0
  86. package/dist/persistence.js.map +1 -0
  87. package/dist/primitives/context.d.ts +29 -0
  88. package/dist/primitives/context.d.ts.map +1 -0
  89. package/dist/primitives/context.js +85 -0
  90. package/dist/primitives/context.js.map +1 -0
  91. package/dist/progress.d.ts +51 -0
  92. package/dist/progress.d.ts.map +1 -0
  93. package/dist/progress.js +229 -0
  94. package/dist/progress.js.map +1 -0
  95. package/dist/provider-presets.d.ts +34 -0
  96. package/dist/provider-presets.d.ts.map +1 -0
  97. package/dist/provider-presets.js +181 -0
  98. package/dist/provider-presets.js.map +1 -0
  99. package/dist/providers/anthropic.d.ts +32 -0
  100. package/dist/providers/anthropic.d.ts.map +1 -0
  101. package/dist/providers/anthropic.js +450 -0
  102. package/dist/providers/anthropic.js.map +1 -0
  103. package/dist/providers/base.d.ts +135 -0
  104. package/dist/providers/base.d.ts.map +1 -0
  105. package/dist/providers/base.js +104 -0
  106. package/dist/providers/base.js.map +1 -0
  107. package/dist/providers/glm.d.ts +18 -0
  108. package/dist/providers/glm.d.ts.map +1 -0
  109. package/dist/providers/glm.js +59 -0
  110. package/dist/providers/glm.js.map +1 -0
  111. package/dist/providers/kimi.d.ts +23 -0
  112. package/dist/providers/kimi.d.ts.map +1 -0
  113. package/dist/providers/kimi.js +89 -0
  114. package/dist/providers/kimi.js.map +1 -0
  115. package/dist/providers/minimax.d.ts +20 -0
  116. package/dist/providers/minimax.d.ts.map +1 -0
  117. package/dist/providers/minimax.js +192 -0
  118. package/dist/providers/minimax.js.map +1 -0
  119. package/dist/providers/openai-chat.d.ts +33 -0
  120. package/dist/providers/openai-chat.d.ts.map +1 -0
  121. package/dist/providers/openai-chat.js +543 -0
  122. package/dist/providers/openai-chat.js.map +1 -0
  123. package/dist/providers/openai-responses.d.ts +26 -0
  124. package/dist/providers/openai-responses.d.ts.map +1 -0
  125. package/dist/providers/openai-responses.js +443 -0
  126. package/dist/providers/openai-responses.js.map +1 -0
  127. package/dist/providers/openrouter.d.ts +24 -0
  128. package/dist/providers/openrouter.d.ts.map +1 -0
  129. package/dist/providers/openrouter.js +177 -0
  130. package/dist/providers/openrouter.js.map +1 -0
  131. package/dist/providers/registry.d.ts +7 -0
  132. package/dist/providers/registry.d.ts.map +1 -0
  133. package/dist/providers/registry.js +38 -0
  134. package/dist/providers/registry.js.map +1 -0
  135. package/dist/security/path.d.ts +51 -0
  136. package/dist/security/path.d.ts.map +1 -0
  137. package/dist/security/path.js +187 -0
  138. package/dist/security/path.js.map +1 -0
  139. package/dist/security/sensitive-files.d.ts +3 -0
  140. package/dist/security/sensitive-files.d.ts.map +1 -0
  141. package/dist/security/sensitive-files.js +41 -0
  142. package/dist/security/sensitive-files.js.map +1 -0
  143. package/dist/session.d.ts +446 -0
  144. package/dist/session.d.ts.map +1 -0
  145. package/dist/session.js +4595 -0
  146. package/dist/session.js.map +1 -0
  147. package/dist/settings.d.ts +46 -0
  148. package/dist/settings.d.ts.map +1 -0
  149. package/dist/settings.js +134 -0
  150. package/dist/settings.js.map +1 -0
  151. package/dist/show-context.d.ts +35 -0
  152. package/dist/show-context.d.ts.map +1 -0
  153. package/dist/show-context.js +320 -0
  154. package/dist/show-context.js.map +1 -0
  155. package/dist/skills/loader.d.ts +49 -0
  156. package/dist/skills/loader.d.ts.map +1 -0
  157. package/dist/skills/loader.js +166 -0
  158. package/dist/skills/loader.js.map +1 -0
  159. package/dist/summarize-context.d.ts +29 -0
  160. package/dist/summarize-context.d.ts.map +1 -0
  161. package/dist/summarize-context.js +247 -0
  162. package/dist/summarize-context.js.map +1 -0
  163. package/dist/templates/loader.d.ts +104 -0
  164. package/dist/templates/loader.d.ts.map +1 -0
  165. package/dist/templates/loader.js +514 -0
  166. package/dist/templates/loader.js.map +1 -0
  167. package/dist/tools/basic.d.ts +29 -0
  168. package/dist/tools/basic.d.ts.map +1 -0
  169. package/dist/tools/basic.js +2079 -0
  170. package/dist/tools/basic.js.map +1 -0
  171. package/dist/tools/comm.d.ts +17 -0
  172. package/dist/tools/comm.d.ts.map +1 -0
  173. package/dist/tools/comm.js +192 -0
  174. package/dist/tools/comm.js.map +1 -0
  175. package/dist/tools/web-fetch.d.ts +11 -0
  176. package/dist/tools/web-fetch.d.ts.map +1 -0
  177. package/dist/tools/web-fetch.js +237 -0
  178. package/dist/tools/web-fetch.js.map +1 -0
  179. package/dist/tools/web-search.d.ts +24 -0
  180. package/dist/tools/web-search.d.ts.map +1 -0
  181. package/dist/tools/web-search.js +51 -0
  182. package/dist/tools/web-search.js.map +1 -0
  183. package/dist/tui/app.d.ts +35 -0
  184. package/dist/tui/app.d.ts.map +1 -0
  185. package/dist/tui/app.js +1042 -0
  186. package/dist/tui/app.js.map +1 -0
  187. package/dist/tui/checkbox-picker.d.ts +35 -0
  188. package/dist/tui/checkbox-picker.d.ts.map +1 -0
  189. package/dist/tui/checkbox-picker.js +85 -0
  190. package/dist/tui/checkbox-picker.js.map +1 -0
  191. package/dist/tui/command-picker.d.ts +31 -0
  192. package/dist/tui/command-picker.d.ts.map +1 -0
  193. package/dist/tui/command-picker.js +113 -0
  194. package/dist/tui/command-picker.js.map +1 -0
  195. package/dist/tui/components/ask-panel.d.ts +21 -0
  196. package/dist/tui/components/ask-panel.d.ts.map +1 -0
  197. package/dist/tui/components/ask-panel.js +81 -0
  198. package/dist/tui/components/ask-panel.js.map +1 -0
  199. package/dist/tui/components/conversation-panel.d.ts +68 -0
  200. package/dist/tui/components/conversation-panel.d.ts.map +1 -0
  201. package/dist/tui/components/conversation-panel.js +611 -0
  202. package/dist/tui/components/conversation-panel.js.map +1 -0
  203. package/dist/tui/components/input-panel.d.ts +27 -0
  204. package/dist/tui/components/input-panel.d.ts.map +1 -0
  205. package/dist/tui/components/input-panel.js +725 -0
  206. package/dist/tui/components/input-panel.js.map +1 -0
  207. package/dist/tui/components/logo-panel.d.ts +14 -0
  208. package/dist/tui/components/logo-panel.d.ts.map +1 -0
  209. package/dist/tui/components/logo-panel.js +37 -0
  210. package/dist/tui/components/logo-panel.js.map +1 -0
  211. package/dist/tui/components/plan-panel.d.ts +10 -0
  212. package/dist/tui/components/plan-panel.d.ts.map +1 -0
  213. package/dist/tui/components/plan-panel.js +8 -0
  214. package/dist/tui/components/plan-panel.js.map +1 -0
  215. package/dist/tui/components/status-bar.d.ts +24 -0
  216. package/dist/tui/components/status-bar.d.ts.map +1 -0
  217. package/dist/tui/components/status-bar.js +80 -0
  218. package/dist/tui/components/status-bar.js.map +1 -0
  219. package/dist/tui/input/editor-state.d.ts +22 -0
  220. package/dist/tui/input/editor-state.d.ts.map +1 -0
  221. package/dist/tui/input/editor-state.js +157 -0
  222. package/dist/tui/input/editor-state.js.map +1 -0
  223. package/dist/tui/input/keymap.d.ts +3 -0
  224. package/dist/tui/input/keymap.d.ts.map +1 -0
  225. package/dist/tui/input/keymap.js +72 -0
  226. package/dist/tui/input/keymap.js.map +1 -0
  227. package/dist/tui/input/paste-slots.d.ts +17 -0
  228. package/dist/tui/input/paste-slots.d.ts.map +1 -0
  229. package/dist/tui/input/paste-slots.js +46 -0
  230. package/dist/tui/input/paste-slots.js.map +1 -0
  231. package/dist/tui/input/paste.d.ts +15 -0
  232. package/dist/tui/input/paste.d.ts.map +1 -0
  233. package/dist/tui/input/paste.js +35 -0
  234. package/dist/tui/input/paste.js.map +1 -0
  235. package/dist/tui/input/protocol.d.ts +9 -0
  236. package/dist/tui/input/protocol.d.ts.map +1 -0
  237. package/dist/tui/input/protocol.js +387 -0
  238. package/dist/tui/input/protocol.js.map +1 -0
  239. package/dist/tui/input/sanitize.d.ts +6 -0
  240. package/dist/tui/input/sanitize.d.ts.map +1 -0
  241. package/dist/tui/input/sanitize.js +20 -0
  242. package/dist/tui/input/sanitize.js.map +1 -0
  243. package/dist/tui/input/types.d.ts +18 -0
  244. package/dist/tui/input/types.d.ts.map +1 -0
  245. package/dist/tui/input/types.js +2 -0
  246. package/dist/tui/input/types.js.map +1 -0
  247. package/dist/tui/launch.d.ts +23 -0
  248. package/dist/tui/launch.d.ts.map +1 -0
  249. package/dist/tui/launch.js +104 -0
  250. package/dist/tui/launch.js.map +1 -0
  251. package/dist/tui/theme.d.ts +20 -0
  252. package/dist/tui/theme.d.ts.map +1 -0
  253. package/dist/tui/theme.js +29 -0
  254. package/dist/tui/theme.js.map +1 -0
  255. package/dist/tui/types.d.ts +136 -0
  256. package/dist/tui/types.d.ts.map +1 -0
  257. package/dist/tui/types.js +9 -0
  258. package/dist/tui/types.js.map +1 -0
  259. package/package.json +76 -0
  260. package/prompts/sections/agents_md.md +23 -0
  261. package/prompts/sections/important_log.md +16 -0
  262. package/prompts/sections/system_mechanisms.md +18 -0
  263. package/prompts/tools/apply_patch.md +31 -0
  264. package/prompts/tools/ask.md +18 -0
  265. package/prompts/tools/bash.md +13 -0
  266. package/prompts/tools/bash_background.md +9 -0
  267. package/prompts/tools/bash_output.md +9 -0
  268. package/prompts/tools/check_status.md +3 -0
  269. package/prompts/tools/diff.md +5 -0
  270. package/prompts/tools/edit_file.md +11 -0
  271. package/prompts/tools/glob.md +7 -0
  272. package/prompts/tools/grep.md +20 -0
  273. package/prompts/tools/kill_agent.md +3 -0
  274. package/prompts/tools/kill_shell.md +5 -0
  275. package/prompts/tools/list_dir.md +5 -0
  276. package/prompts/tools/plan.md +252 -0
  277. package/prompts/tools/read_file.md +9 -0
  278. package/prompts/tools/show_context.md +12 -0
  279. package/prompts/tools/skill.md +7 -0
  280. package/prompts/tools/spawn_agent.md +195 -0
  281. package/prompts/tools/summarize_context.md +122 -0
  282. package/prompts/tools/test.md +5 -0
  283. package/prompts/tools/wait.md +17 -0
  284. package/prompts/tools/web_fetch.md +9 -0
  285. package/prompts/tools/web_search.md +5 -0
  286. package/prompts/tools/write_file.md +11 -0
  287. package/skills/.staging/.gitkeep +0 -0
  288. package/skills/explain-code/SKILL.md +15 -0
  289. package/skills/skill-manager/SKILL.md +83 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Context-tag and message-shaping utilities shared by the log-native runtime.
3
+ *
4
+ * Provides:
5
+ * - Compact marker constants and type guards
6
+ * - Context ID injection utilities
7
+ * - Consecutive same-role merging for provider-specific alternation rules
8
+ */
9
+ /** Sentinel role used for compact markers in the conversation array. */
10
+ export declare const COMPACT_MARKER_ROLE = "__compact_marker";
11
+ /** Shape of a compact marker in provider-message-like projections. */
12
+ export interface CompactMarker {
13
+ role: typeof COMPACT_MARKER_ROLE;
14
+ marker_type: "plan_advance" | "auto_compact" | "context_reset";
15
+ timestamp: number;
16
+ }
17
+ /** Type guard: is this message a compact marker? */
18
+ export declare function isCompactMarker(msg: Record<string, unknown>): boolean;
19
+ /** Metadata field name for context IDs stored on messages. */
20
+ export declare const CONTEXT_ID_KEY = "_context_id";
21
+ /**
22
+ * Allocate a unique random hex context ID (4 hex chars).
23
+ * Retries on collision (up to 10 times), then falls back to 6 hex chars.
24
+ */
25
+ export declare function allocateContextId(usedIds: Set<string>): string;
26
+ /** Format a context ID into the injection tag: `§{contextId}§` */
27
+ export declare function formatContextTag(contextId: string): string;
28
+ /** Regex matching any `§{...}§` context tag, plus optional trailing newline (global). */
29
+ export declare const CONTEXT_TAG_REGEX: RegExp;
30
+ /** Strip all `§{...}§` context tags (and their trailing newline) from text. */
31
+ export declare function stripContextTags(text: string): string;
32
+ /**
33
+ * Buffers streaming text to strip `§{...}§` context tags that the model
34
+ * may produce. When `§` is encountered, buffering starts. If the buffer
35
+ * completes a `§{...}§` pattern, it's discarded. Otherwise the buffer
36
+ * is flushed downstream.
37
+ */
38
+ export declare class ContextTagStripBuffer {
39
+ private _downstream;
40
+ private _buffer;
41
+ private _buffering;
42
+ private _swallowNewline;
43
+ constructor(downstream: (chunk: string) => void);
44
+ feed(chunk: string): void;
45
+ /** Flush any remaining buffered content. */
46
+ flush(): void;
47
+ private _flush;
48
+ }
49
+ /**
50
+ * Inject a context tag at the beginning of message content.
51
+ *
52
+ * Handles both string content and Anthropic-style array content
53
+ * (array of content blocks with `{type, text, ...}`).
54
+ */
55
+ export declare function injectContextIdTag(content: string | Array<Record<string, unknown>>, contextId: number | string): string | Array<Record<string, unknown>>;
56
+ /**
57
+ * Role-aware merge for consecutive same-role messages.
58
+ *
59
+ * For providers that require strictly alternating user/assistant turns.
60
+ *
61
+ * Rules:
62
+ * - system messages: never merged
63
+ * - tool_result messages: never merged (each has its own tool_call_id)
64
+ * - assistant with tool_calls: never merged, but absorbs preceding pure-text assistant
65
+ * - user + user: block concat (concatAsContentBlocks)
66
+ * - assistant(text) + assistant(text): text concat via \n\n
67
+ */
68
+ export declare function mergeConsecutiveSameRole(messages: Array<Record<string, unknown>>): Array<Record<string, unknown>>;
69
+ //# sourceMappingURL=context-rendering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-rendering.d.ts","sourceRoot":"","sources":["../src/context-rendering.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AAEtD,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,mBAAmB,CAAC;IACjC,WAAW,EAAE,cAAc,GAAG,cAAc,GAAG,eAAe,CAAC;IAC/D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAErE;AAMD,8DAA8D;AAC9D,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAY9D;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,yFAAyF;AACzF,eAAO,MAAM,iBAAiB,QAAoB,CAAC;AAEnD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAMD;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAS;gBAEpB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;IAI/C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAiCzB,4CAA4C;IAC5C,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,MAAM;CAKf;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAChD,SAAS,EAAE,MAAM,GAAG,MAAM,GACzB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0BzC;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACvC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0EhC"}
@@ -0,0 +1,250 @@
1
+ /**
2
+ * Context-tag and message-shaping utilities shared by the log-native runtime.
3
+ *
4
+ * Provides:
5
+ * - Compact marker constants and type guards
6
+ * - Context ID injection utilities
7
+ * - Consecutive same-role merging for provider-specific alternation rules
8
+ */
9
+ import { randomBytes } from "node:crypto";
10
+ // ------------------------------------------------------------------
11
+ // Compact marker
12
+ // ------------------------------------------------------------------
13
+ /** Sentinel role used for compact markers in the conversation array. */
14
+ export const COMPACT_MARKER_ROLE = "__compact_marker";
15
+ /** Type guard: is this message a compact marker? */
16
+ export function isCompactMarker(msg) {
17
+ return msg["role"] === COMPACT_MARKER_ROLE;
18
+ }
19
+ // ------------------------------------------------------------------
20
+ // Context ID
21
+ // ------------------------------------------------------------------
22
+ /** Metadata field name for context IDs stored on messages. */
23
+ export const CONTEXT_ID_KEY = "_context_id";
24
+ /**
25
+ * Allocate a unique random hex context ID (4 hex chars).
26
+ * Retries on collision (up to 10 times), then falls back to 6 hex chars.
27
+ */
28
+ export function allocateContextId(usedIds) {
29
+ for (let attempt = 0; attempt < 10; attempt++) {
30
+ const id = randomBytes(2).toString("hex");
31
+ if (!usedIds.has(id)) {
32
+ usedIds.add(id);
33
+ return id;
34
+ }
35
+ }
36
+ // Fallback to 6 hex chars
37
+ const id = randomBytes(3).toString("hex");
38
+ usedIds.add(id);
39
+ return id;
40
+ }
41
+ /** Format a context ID into the injection tag: `§{contextId}§` */
42
+ export function formatContextTag(contextId) {
43
+ return `§{${contextId}}§`;
44
+ }
45
+ /** Regex matching any `§{...}§` context tag, plus optional trailing newline (global). */
46
+ export const CONTEXT_TAG_REGEX = /§\{[^}]*\}§\n?/g;
47
+ /** Strip all `§{...}§` context tags (and their trailing newline) from text. */
48
+ export function stripContextTags(text) {
49
+ return text.replace(CONTEXT_TAG_REGEX, "");
50
+ }
51
+ // ------------------------------------------------------------------
52
+ // ContextTagStripBuffer — streaming strip for §{...}§ tags
53
+ // ------------------------------------------------------------------
54
+ /**
55
+ * Buffers streaming text to strip `§{...}§` context tags that the model
56
+ * may produce. When `§` is encountered, buffering starts. If the buffer
57
+ * completes a `§{...}§` pattern, it's discarded. Otherwise the buffer
58
+ * is flushed downstream.
59
+ */
60
+ export class ContextTagStripBuffer {
61
+ _downstream;
62
+ _buffer = "";
63
+ _buffering = false;
64
+ _swallowNewline = false; // eat one \n after a matched tag
65
+ constructor(downstream) {
66
+ this._downstream = downstream;
67
+ }
68
+ feed(chunk) {
69
+ for (const ch of chunk) {
70
+ if (this._swallowNewline) {
71
+ this._swallowNewline = false;
72
+ if (ch === "\n")
73
+ continue; // consumed
74
+ // Not a newline — fall through to normal processing
75
+ }
76
+ if (this._buffering) {
77
+ this._buffer += ch;
78
+ if (ch === "§" && this._buffer.length >= 4) {
79
+ // Check if we completed a §{...}§ pattern
80
+ if (this._buffer.startsWith("§{") && this._buffer.endsWith("}§")) {
81
+ // Discard the matched tag, and swallow the next \n if present
82
+ this._buffer = "";
83
+ this._buffering = false;
84
+ this._swallowNewline = true;
85
+ }
86
+ else {
87
+ // Not a valid tag — flush buffer
88
+ this._flush();
89
+ }
90
+ }
91
+ else if (this._buffer.length > 50) {
92
+ // Safety: if buffer gets too long without closing, flush
93
+ this._flush();
94
+ }
95
+ }
96
+ else if (ch === "§") {
97
+ this._buffering = true;
98
+ this._buffer = ch;
99
+ }
100
+ else {
101
+ this._downstream(ch);
102
+ }
103
+ }
104
+ }
105
+ /** Flush any remaining buffered content. */
106
+ flush() {
107
+ if (this._buffer) {
108
+ this._downstream(this._buffer);
109
+ this._buffer = "";
110
+ }
111
+ this._buffering = false;
112
+ }
113
+ _flush() {
114
+ this._downstream(this._buffer);
115
+ this._buffer = "";
116
+ this._buffering = false;
117
+ }
118
+ }
119
+ /**
120
+ * Inject a context tag at the beginning of message content.
121
+ *
122
+ * Handles both string content and Anthropic-style array content
123
+ * (array of content blocks with `{type, text, ...}`).
124
+ */
125
+ export function injectContextIdTag(content, contextId) {
126
+ const tag = formatContextTag(String(contextId));
127
+ if (typeof content === "string") {
128
+ return `${tag}\n${content}`;
129
+ }
130
+ if (Array.isArray(content)) {
131
+ // Find first text block and prepend the tag
132
+ const copy = content.map((block) => ({ ...block }));
133
+ let injected = false;
134
+ for (const block of copy) {
135
+ if (block["type"] === "text" && typeof block["text"] === "string") {
136
+ block["text"] = `${tag}\n${block["text"]}`;
137
+ injected = true;
138
+ break;
139
+ }
140
+ }
141
+ if (!injected) {
142
+ // No text block found — insert one at the beginning
143
+ copy.unshift({ type: "text", text: tag });
144
+ }
145
+ return copy;
146
+ }
147
+ return content;
148
+ }
149
+ // ------------------------------------------------------------------
150
+ // Consecutive same-role merging
151
+ // ------------------------------------------------------------------
152
+ /**
153
+ * Role-aware merge for consecutive same-role messages.
154
+ *
155
+ * For providers that require strictly alternating user/assistant turns.
156
+ *
157
+ * Rules:
158
+ * - system messages: never merged
159
+ * - tool_result messages: never merged (each has its own tool_call_id)
160
+ * - assistant with tool_calls: never merged, but absorbs preceding pure-text assistant
161
+ * - user + user: block concat (concatAsContentBlocks)
162
+ * - assistant(text) + assistant(text): text concat via \n\n
163
+ */
164
+ export function mergeConsecutiveSameRole(messages) {
165
+ if (messages.length === 0)
166
+ return [];
167
+ const result = [];
168
+ for (const msg of messages) {
169
+ const role = msg["role"];
170
+ // Never merge these — but handle adjacent assistant edge case
171
+ if (role === "system" ||
172
+ role === "tool_result") {
173
+ result.push(msg);
174
+ continue;
175
+ }
176
+ if (role === "assistant" && msg["tool_calls"]) {
177
+ // If the previous message is a pure-text assistant (e.g. a summary
178
+ // inserted by summarize_context), merge its text into this message
179
+ // to avoid consecutive model turns that violate strict
180
+ // role-alternation requirements.
181
+ const prev = result.length > 0 ? result[result.length - 1] : null;
182
+ if (prev &&
183
+ prev["role"] === "assistant" &&
184
+ !prev["tool_calls"]) {
185
+ const prevText = (typeof prev["content"] === "string" ? prev["content"] : "") ||
186
+ (typeof prev["text"] === "string" ? prev["text"] : "");
187
+ if (prevText) {
188
+ const merged = { ...msg };
189
+ const curText = (typeof merged["text"] === "string" ? merged["text"] : "") ||
190
+ (typeof merged["content"] === "string" ? merged["content"] : "");
191
+ merged["text"] = curText ? `${prevText}\n\n${curText}` : prevText;
192
+ result.pop();
193
+ result.push(merged);
194
+ }
195
+ else {
196
+ // prev is empty — just remove it
197
+ result.pop();
198
+ result.push(msg);
199
+ }
200
+ }
201
+ else {
202
+ result.push(msg);
203
+ }
204
+ continue;
205
+ }
206
+ const prev = result.length > 0 ? result[result.length - 1] : null;
207
+ if (!prev || prev["role"] !== role) {
208
+ result.push(msg);
209
+ continue;
210
+ }
211
+ // Previous message also shouldn't be a "never merge" type
212
+ if (prev["role"] === "system" ||
213
+ prev["role"] === "tool_result" ||
214
+ (prev["role"] === "assistant" && prev["tool_calls"])) {
215
+ result.push(msg);
216
+ continue;
217
+ }
218
+ // Merge into previous
219
+ const prevContent = prev["content"];
220
+ const curContent = msg["content"];
221
+ prev["content"] = mergeContent(prevContent, curContent);
222
+ }
223
+ return result;
224
+ }
225
+ /**
226
+ * Merge two message content values together.
227
+ * Handles string + string, array + array, string + array, array + string.
228
+ */
229
+ function mergeContent(a, b) {
230
+ const aIsString = typeof a === "string";
231
+ const bIsString = typeof b === "string";
232
+ const aIsArray = Array.isArray(a);
233
+ const bIsArray = Array.isArray(b);
234
+ if (aIsString && bIsString) {
235
+ return `${a}\n\n${b}`;
236
+ }
237
+ // Convert strings to text blocks for array merging
238
+ const aBlocks = aIsArray
239
+ ? a
240
+ : aIsString
241
+ ? [{ type: "text", text: a }]
242
+ : [{ type: "text", text: String(a) }];
243
+ const bBlocks = bIsArray
244
+ ? b
245
+ : bIsString
246
+ ? [{ type: "text", text: b }]
247
+ : [{ type: "text", text: String(b) }];
248
+ return [...aBlocks, ...bBlocks];
249
+ }
250
+ //# sourceMappingURL=context-rendering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-rendering.js","sourceRoot":"","sources":["../src/context-rendering.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare const PROJECTED_DOCUMENT_EXTENSIONS: Set<string>;
2
+ export interface ProjectedDocumentView {
3
+ sourcePath: string;
4
+ sourceExt: string;
5
+ text: string;
6
+ sizeBytes: number;
7
+ mtimeMs: number;
8
+ }
9
+ export declare function isProjectedDocumentPath(filePath: string): boolean;
10
+ export declare function projectedDocumentLabel(filePath: string): string;
11
+ export declare function loadProjectedDocumentView(filePath: string, artifactsDir?: string): Promise<ProjectedDocumentView>;
12
+ //# sourceMappingURL=document-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-projection.d.ts","sourceRoot":"","sources":["../src/document-projection.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,6BAA6B,aAA+C,CAAC;AAO1F,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AA0BD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,qBAAqB,CAAC,CA+ChC"}
@@ -0,0 +1,75 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ export const PROJECTED_DOCUMENT_EXTENSIONS = new Set([".pdf", ".docx", ".xlsx", ".pptx"]);
5
+ const PROJECTION_CACHE_DIR = ".document-projections";
6
+ let markItDownPromise = null;
7
+ function normalizeDocBaseName(filePath) {
8
+ const base = path.basename(filePath, path.extname(filePath)) || "document";
9
+ return base.replace(/[^A-Za-z0-9._-]+/g, "-").replace(/-+/g, "-").slice(0, 64) || "document";
10
+ }
11
+ function buildCachePath(filePath, artifactsDir, sizeBytes, mtimeMs) {
12
+ const ext = path.extname(filePath).toLowerCase();
13
+ const safeBase = normalizeDocBaseName(filePath);
14
+ const hash = createHash("sha256")
15
+ .update(`${filePath}:${sizeBytes}:${mtimeMs}`)
16
+ .digest("hex")
17
+ .slice(0, 10);
18
+ return path.join(artifactsDir, PROJECTION_CACHE_DIR, `${safeBase}-${hash}${ext}.md`);
19
+ }
20
+ async function getMarkItDown() {
21
+ if (!markItDownPromise) {
22
+ markItDownPromise = import("markitdown-ts").then((mod) => new mod.MarkItDown());
23
+ }
24
+ return markItDownPromise;
25
+ }
26
+ export function isProjectedDocumentPath(filePath) {
27
+ return PROJECTED_DOCUMENT_EXTENSIONS.has(path.extname(filePath).toLowerCase());
28
+ }
29
+ export function projectedDocumentLabel(filePath) {
30
+ return path.extname(filePath).toLowerCase().slice(1).toUpperCase() || "document";
31
+ }
32
+ export async function loadProjectedDocumentView(filePath, artifactsDir) {
33
+ const ext = path.extname(filePath).toLowerCase();
34
+ if (!PROJECTED_DOCUMENT_EXTENSIONS.has(ext)) {
35
+ throw new Error(`Unsupported projected document type: ${ext || "(no extension)"}`);
36
+ }
37
+ if (ext === ".pptx") {
38
+ throw new Error("PPTX projection is not yet available in this runtime.");
39
+ }
40
+ const stat = statSync(filePath);
41
+ if (!stat.isFile()) {
42
+ throw new Error(`Not a file: ${filePath}`);
43
+ }
44
+ let cachePath = null;
45
+ if (artifactsDir) {
46
+ cachePath = buildCachePath(filePath, artifactsDir, stat.size, stat.mtimeMs);
47
+ if (existsSync(cachePath)) {
48
+ return {
49
+ sourcePath: filePath,
50
+ sourceExt: ext,
51
+ text: readFileSync(cachePath, "utf-8"),
52
+ sizeBytes: stat.size,
53
+ mtimeMs: Math.trunc(stat.mtimeMs),
54
+ };
55
+ }
56
+ }
57
+ const markItDown = await getMarkItDown();
58
+ const result = await markItDown.convert(filePath);
59
+ const markdown = result?.markdown?.trim();
60
+ if (!markdown) {
61
+ throw new Error(`${projectedDocumentLabel(filePath)} conversion produced no text.`);
62
+ }
63
+ if (cachePath) {
64
+ mkdirSync(path.dirname(cachePath), { recursive: true });
65
+ writeFileSync(cachePath, markdown, "utf-8");
66
+ }
67
+ return {
68
+ sourcePath: filePath,
69
+ sourceExt: ext,
70
+ text: markdown,
71
+ sizeBytes: stat.size,
72
+ mtimeMs: Math.trunc(stat.mtimeMs),
73
+ };
74
+ }
75
+ //# sourceMappingURL=document-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-projection.js","sourceRoot":"","sources":["../src/document-projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { LogEntry } from "./log-entry.js";
2
+ import { type InternalMessage } from "./log-projection.js";
3
+ export interface EphemeralLogState {
4
+ entries: LogEntry[];
5
+ getMessages: () => InternalMessage[];
6
+ appendEntry: (entry: LogEntry) => void;
7
+ allocId: (type: LogEntry["type"]) => string;
8
+ allocateContextId: () => string;
9
+ computeNextRoundIndex: () => number;
10
+ }
11
+ export declare function createEphemeralLogState(initialMessages: InternalMessage[], opts?: {
12
+ requiresAlternatingRoles?: boolean;
13
+ turnIndex?: number;
14
+ }): EphemeralLogState;
15
+ //# sourceMappingURL=ephemeral-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ephemeral-log.d.ts","sourceRoot":"","sources":["../src/ephemeral-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAY/C,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,eAAe,EAAE,CAAC;IACrC,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;IAC5C,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,MAAM,CAAC;CACrC;AAED,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,eAAe,EAAE,EAClC,IAAI,CAAC,EAAE;IACL,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACA,iBAAiB,CAsLnB"}