byterover-cli 0.2.1 → 0.3.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 (490) hide show
  1. package/README.md +56 -56
  2. package/bin/dev.js +1 -1
  3. package/dist/commands/cipher-agent/run.d.ts +111 -0
  4. package/dist/commands/cipher-agent/run.js +493 -0
  5. package/dist/commands/cipher-agent/set-prompt.d.ts +14 -0
  6. package/dist/commands/cipher-agent/set-prompt.js +53 -0
  7. package/dist/commands/cipher-agent/show-prompt.d.ts +11 -0
  8. package/dist/commands/cipher-agent/show-prompt.js +48 -0
  9. package/dist/commands/clear.d.ts +6 -0
  10. package/dist/commands/clear.js +36 -15
  11. package/dist/commands/curate.d.ts +74 -0
  12. package/dist/commands/curate.js +396 -0
  13. package/dist/commands/foo.d.ts +12 -0
  14. package/dist/commands/foo.js +61 -0
  15. package/dist/commands/gen-rules.d.ts +3 -0
  16. package/dist/commands/gen-rules.js +39 -20
  17. package/dist/commands/init.d.ts +48 -3
  18. package/dist/commands/init.js +242 -70
  19. package/dist/commands/login.js +9 -4
  20. package/dist/commands/pull.d.ts +33 -0
  21. package/dist/commands/pull.js +115 -0
  22. package/dist/commands/push.d.ts +13 -13
  23. package/dist/commands/push.js +81 -101
  24. package/dist/commands/query.d.ts +63 -0
  25. package/dist/commands/query.js +349 -0
  26. package/dist/commands/space/list.d.ts +5 -2
  27. package/dist/commands/space/list.js +60 -56
  28. package/dist/commands/space/switch.d.ts +16 -0
  29. package/dist/commands/space/switch.js +102 -53
  30. package/dist/commands/status.d.ts +5 -2
  31. package/dist/commands/status.js +43 -33
  32. package/dist/commands/watch.d.ts +23 -0
  33. package/dist/commands/watch.js +171 -0
  34. package/dist/config/auth.config.js +14 -2
  35. package/dist/config/context-tree-domains.d.ts +12 -0
  36. package/dist/config/context-tree-domains.js +29 -0
  37. package/dist/config/environment.d.ts +6 -0
  38. package/dist/config/environment.js +9 -2
  39. package/dist/constants.d.ts +5 -0
  40. package/dist/constants.js +6 -0
  41. package/dist/core/domain/cipher/agent/agent-state-machine.d.ts +128 -0
  42. package/dist/core/domain/cipher/agent/agent-state-machine.js +183 -0
  43. package/dist/core/domain/cipher/agent/agent-state.d.ts +77 -0
  44. package/dist/core/domain/cipher/agent/agent-state.js +59 -0
  45. package/dist/core/domain/cipher/agent/index.d.ts +7 -0
  46. package/dist/core/domain/cipher/agent/index.js +7 -0
  47. package/dist/core/domain/cipher/agent-events/index.d.ts +8 -0
  48. package/dist/core/domain/cipher/agent-events/index.js +7 -0
  49. package/dist/core/domain/cipher/agent-events/types.d.ts +419 -0
  50. package/dist/core/domain/cipher/agent-events/types.js +42 -0
  51. package/dist/core/domain/cipher/blob/types.d.ts +108 -0
  52. package/dist/core/domain/cipher/errors/blob-error.d.ts +36 -0
  53. package/dist/core/domain/cipher/errors/blob-error.js +68 -0
  54. package/dist/core/domain/cipher/errors/file-system-error.d.ts +211 -0
  55. package/dist/core/domain/cipher/errors/file-system-error.js +291 -0
  56. package/dist/core/domain/cipher/errors/llm-error.d.ts +120 -0
  57. package/dist/core/domain/cipher/errors/llm-error.js +161 -0
  58. package/dist/core/domain/cipher/errors/memory-error.d.ts +35 -0
  59. package/dist/core/domain/cipher/errors/memory-error.js +62 -0
  60. package/dist/core/domain/cipher/errors/process-error-code.d.ts +97 -0
  61. package/dist/core/domain/cipher/errors/process-error-code.js +98 -0
  62. package/dist/core/domain/cipher/errors/process-error.d.ts +135 -0
  63. package/dist/core/domain/cipher/errors/process-error.js +173 -0
  64. package/dist/core/domain/cipher/errors/session-error.d.ts +56 -0
  65. package/dist/core/domain/cipher/errors/session-error.js +74 -0
  66. package/dist/core/domain/cipher/errors/tool-error.d.ts +57 -0
  67. package/dist/core/domain/cipher/errors/tool-error.js +81 -0
  68. package/dist/core/domain/cipher/file-system/types.d.ts +203 -0
  69. package/dist/core/domain/cipher/memory/types.d.ts +102 -0
  70. package/dist/core/domain/cipher/memory/types.js +4 -0
  71. package/dist/core/domain/cipher/parsed-interaction.d.ts +47 -0
  72. package/dist/core/domain/cipher/parsed-interaction.js +25 -0
  73. package/dist/core/domain/cipher/process/types.d.ts +286 -0
  74. package/dist/core/domain/cipher/session/types.d.ts +54 -0
  75. package/dist/core/domain/cipher/storage/history-types.d.ts +38 -0
  76. package/dist/core/domain/cipher/system-prompt/types.d.ts +131 -0
  77. package/dist/core/domain/cipher/todos/index.d.ts +4 -0
  78. package/dist/core/domain/cipher/todos/index.js +4 -0
  79. package/dist/core/domain/cipher/todos/types.d.ts +57 -0
  80. package/dist/core/domain/cipher/todos/types.js +5 -0
  81. package/dist/core/domain/cipher/tools/constants.d.ts +28 -0
  82. package/dist/core/domain/cipher/tools/constants.js +24 -0
  83. package/dist/core/domain/cipher/tools/tool-error.d.ts +183 -0
  84. package/dist/core/domain/cipher/tools/tool-error.js +246 -0
  85. package/dist/core/domain/cipher/tools/types.d.ts +145 -0
  86. package/dist/core/domain/entities/brv-config.d.ts +42 -6
  87. package/dist/core/domain/entities/brv-config.js +115 -17
  88. package/dist/core/domain/entities/cogit-push-context.d.ts +38 -0
  89. package/dist/core/domain/entities/cogit-push-context.js +91 -0
  90. package/dist/core/domain/entities/cogit-push-response.d.ts +20 -0
  91. package/dist/core/domain/entities/cogit-push-response.js +31 -0
  92. package/dist/core/domain/entities/cogit-snapshot-author.d.ts +24 -0
  93. package/dist/core/domain/entities/cogit-snapshot-author.js +39 -0
  94. package/dist/core/domain/entities/cogit-snapshot-file.d.ts +34 -0
  95. package/dist/core/domain/entities/cogit-snapshot-file.js +59 -0
  96. package/dist/core/domain/entities/cogit-snapshot.d.ts +31 -0
  97. package/dist/core/domain/entities/cogit-snapshot.js +58 -0
  98. package/dist/core/domain/entities/context-tree-index.d.ts +26 -0
  99. package/dist/core/domain/entities/context-tree-index.js +27 -0
  100. package/dist/core/domain/entities/context-tree-snapshot.d.ts +56 -0
  101. package/dist/core/domain/entities/context-tree-snapshot.js +83 -0
  102. package/dist/core/domain/entities/event.d.ts +1 -1
  103. package/dist/core/domain/entities/event.js +3 -1
  104. package/dist/core/domain/entities/parser.d.ts +567 -0
  105. package/dist/core/domain/entities/parser.js +10 -0
  106. package/dist/core/domain/entities/playbook.d.ts +2 -23
  107. package/dist/core/domain/entities/playbook.js +2 -70
  108. package/dist/core/domain/errors/brv-config-version-error.d.ts +16 -0
  109. package/dist/core/domain/errors/brv-config-version-error.js +21 -0
  110. package/dist/core/domain/knowledge/directory-manager.d.ts +80 -0
  111. package/dist/core/domain/knowledge/directory-manager.js +145 -0
  112. package/dist/core/domain/knowledge/markdown-writer.d.ts +18 -0
  113. package/dist/core/domain/knowledge/markdown-writer.js +18 -0
  114. package/dist/core/domain/knowledge/relation-parser.d.ts +90 -0
  115. package/dist/core/domain/knowledge/relation-parser.js +131 -0
  116. package/dist/core/interfaces/cipher/cipher-services.d.ts +71 -0
  117. package/dist/core/interfaces/cipher/cipher-services.js +1 -0
  118. package/dist/core/interfaces/cipher/i-blob-storage.d.ts +78 -0
  119. package/dist/core/interfaces/cipher/i-blob-storage.js +1 -0
  120. package/dist/core/interfaces/cipher/i-chat-session.d.ts +62 -0
  121. package/dist/core/interfaces/cipher/i-chat-session.js +1 -0
  122. package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +88 -0
  123. package/dist/core/interfaces/cipher/i-cipher-agent.js +1 -0
  124. package/dist/core/interfaces/cipher/i-coding-agent-log-parser.d.ts +20 -0
  125. package/dist/core/interfaces/cipher/i-coding-agent-log-parser.js +1 -0
  126. package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.d.ts +31 -0
  127. package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.js +1 -0
  128. package/dist/core/interfaces/cipher/i-content-generator.d.ts +120 -0
  129. package/dist/core/interfaces/cipher/i-content-generator.js +12 -0
  130. package/dist/core/interfaces/cipher/i-event-emitter.d.ts +76 -0
  131. package/dist/core/interfaces/cipher/i-event-emitter.js +1 -0
  132. package/dist/core/interfaces/cipher/i-file-system.d.ts +68 -0
  133. package/dist/core/interfaces/cipher/i-file-system.js +1 -0
  134. package/dist/core/interfaces/cipher/i-history-storage.d.ts +53 -0
  135. package/dist/core/interfaces/cipher/i-history-storage.js +1 -0
  136. package/dist/core/interfaces/cipher/i-llm-provider.d.ts +14 -0
  137. package/dist/core/interfaces/cipher/i-llm-provider.js +1 -0
  138. package/dist/core/interfaces/cipher/i-llm-service.d.ts +62 -0
  139. package/dist/core/interfaces/cipher/i-llm-service.js +1 -0
  140. package/dist/core/interfaces/cipher/i-logger.d.ts +78 -0
  141. package/dist/core/interfaces/cipher/i-logger.js +28 -0
  142. package/dist/core/interfaces/cipher/i-message-formatter.d.ts +44 -0
  143. package/dist/core/interfaces/cipher/i-message-formatter.js +1 -0
  144. package/dist/core/interfaces/cipher/i-policy-engine.d.ts +102 -0
  145. package/dist/core/interfaces/cipher/i-policy-engine.js +9 -0
  146. package/dist/core/interfaces/cipher/i-process-service.d.ts +65 -0
  147. package/dist/core/interfaces/cipher/i-process-service.js +1 -0
  148. package/dist/core/interfaces/cipher/i-system-prompt-contributor.d.ts +25 -0
  149. package/dist/core/interfaces/cipher/i-system-prompt-contributor.js +1 -0
  150. package/dist/core/interfaces/cipher/i-tokenizer.d.ts +15 -0
  151. package/dist/core/interfaces/cipher/i-tokenizer.js +1 -0
  152. package/dist/core/interfaces/cipher/i-tool-provider.d.ts +64 -0
  153. package/dist/core/interfaces/cipher/i-tool-provider.js +1 -0
  154. package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +103 -0
  155. package/dist/core/interfaces/cipher/i-tool-scheduler.js +11 -0
  156. package/dist/core/interfaces/cipher/llm-types.d.ts +46 -0
  157. package/dist/core/interfaces/cipher/llm-types.js +5 -0
  158. package/dist/core/interfaces/cipher/message-types.d.ts +118 -0
  159. package/dist/core/interfaces/cipher/message-types.js +5 -0
  160. package/dist/core/interfaces/cipher/tokenizer-types.d.ts +11 -0
  161. package/dist/core/interfaces/cipher/tokenizer-types.js +14 -0
  162. package/dist/core/interfaces/i-cogit-pull-service.d.ts +24 -0
  163. package/dist/core/interfaces/i-cogit-pull-service.js +1 -0
  164. package/dist/core/interfaces/i-cogit-push-service.d.ts +27 -0
  165. package/dist/core/interfaces/i-cogit-push-service.js +1 -0
  166. package/dist/core/interfaces/i-context-file-reader.d.ts +32 -0
  167. package/dist/core/interfaces/i-context-file-reader.js +1 -0
  168. package/dist/core/interfaces/i-context-tree-service.d.ts +21 -0
  169. package/dist/core/interfaces/i-context-tree-service.js +1 -0
  170. package/dist/core/interfaces/i-context-tree-snapshot-service.d.ts +36 -0
  171. package/dist/core/interfaces/i-context-tree-snapshot-service.js +1 -0
  172. package/dist/core/interfaces/i-context-tree-writer-service.d.ts +32 -0
  173. package/dist/core/interfaces/i-context-tree-writer-service.js +1 -0
  174. package/dist/core/interfaces/i-file-watcher-service.d.ts +41 -0
  175. package/dist/core/interfaces/i-file-watcher-service.js +1 -0
  176. package/dist/core/interfaces/parser/i-clean-parser-service.d.ts +18 -0
  177. package/dist/core/interfaces/parser/i-clean-parser-service.js +1 -0
  178. package/dist/core/interfaces/parser/i-raw-parser-service.d.ts +17 -0
  179. package/dist/core/interfaces/parser/i-raw-parser-service.js +1 -0
  180. package/dist/core/interfaces/parser/i-session-normalizer.d.ts +56 -0
  181. package/dist/core/interfaces/parser/i-session-normalizer.js +1 -0
  182. package/dist/hooks/command_not_found/handle-invalid-commands.d.ts +7 -0
  183. package/dist/hooks/command_not_found/handle-invalid-commands.js +32 -0
  184. package/dist/hooks/error/clean-errors.d.ts +7 -0
  185. package/dist/hooks/error/clean-errors.js +50 -0
  186. package/dist/hooks/init/welcome.js +72 -1
  187. package/dist/hooks/prerun/validate-brv-config-version.d.ts +28 -0
  188. package/dist/hooks/prerun/validate-brv-config-version.js +43 -0
  189. package/dist/infra/cipher/agent-service-factory.d.ts +86 -0
  190. package/dist/infra/cipher/agent-service-factory.js +212 -0
  191. package/dist/infra/cipher/blob/blob-storage-factory.d.ts +13 -0
  192. package/dist/infra/cipher/blob/blob-storage-factory.js +14 -0
  193. package/dist/infra/cipher/blob/index.d.ts +10 -0
  194. package/dist/infra/cipher/blob/index.js +12 -0
  195. package/dist/infra/cipher/blob/migrations.d.ts +63 -0
  196. package/dist/infra/cipher/blob/migrations.js +148 -0
  197. package/dist/infra/cipher/blob/sqlite-blob-storage.d.ts +82 -0
  198. package/dist/infra/cipher/blob/sqlite-blob-storage.js +307 -0
  199. package/dist/infra/cipher/cipher-agent-state-manager.d.ts +63 -0
  200. package/dist/infra/cipher/cipher-agent-state-manager.js +108 -0
  201. package/dist/infra/cipher/cipher-agent.d.ts +182 -0
  202. package/dist/infra/cipher/cipher-agent.js +317 -0
  203. package/dist/infra/cipher/command-parser.d.ts +23 -0
  204. package/dist/infra/cipher/command-parser.js +85 -0
  205. package/dist/infra/cipher/display/todo-display.d.ts +23 -0
  206. package/dist/infra/cipher/display/todo-display.js +129 -0
  207. package/dist/infra/cipher/events/event-emitter.d.ts +137 -0
  208. package/dist/infra/cipher/events/event-emitter.js +158 -0
  209. package/dist/infra/cipher/exit-codes.d.ts +44 -0
  210. package/dist/infra/cipher/exit-codes.js +58 -0
  211. package/dist/infra/cipher/file-system/file-system-service.d.ts +105 -0
  212. package/dist/infra/cipher/file-system/file-system-service.js +641 -0
  213. package/dist/infra/cipher/file-system/gitignore-filter.d.ts +77 -0
  214. package/dist/infra/cipher/file-system/gitignore-filter.js +120 -0
  215. package/dist/infra/cipher/file-system/glob-utils.d.ts +60 -0
  216. package/dist/infra/cipher/file-system/glob-utils.js +120 -0
  217. package/dist/infra/cipher/file-system/path-validator.d.ts +69 -0
  218. package/dist/infra/cipher/file-system/path-validator.js +184 -0
  219. package/dist/infra/cipher/grpc/internal-llm-grpc-service.d.ts +149 -0
  220. package/dist/infra/cipher/grpc/internal-llm-grpc-service.js +364 -0
  221. package/dist/infra/cipher/grpc/internal-llm-grpc.proto +94 -0
  222. package/dist/infra/cipher/interactive-commands.d.ts +16 -0
  223. package/dist/infra/cipher/interactive-commands.js +198 -0
  224. package/dist/infra/cipher/interactive-loop.d.ts +24 -0
  225. package/dist/infra/cipher/interactive-loop.js +352 -0
  226. package/dist/infra/cipher/llm/context/async-mutex.d.ts +59 -0
  227. package/dist/infra/cipher/llm/context/async-mutex.js +92 -0
  228. package/dist/infra/cipher/llm/context/compression/index.d.ts +6 -0
  229. package/dist/infra/cipher/llm/context/compression/index.js +5 -0
  230. package/dist/infra/cipher/llm/context/compression/middle-removal.d.ts +40 -0
  231. package/dist/infra/cipher/llm/context/compression/middle-removal.js +76 -0
  232. package/dist/infra/cipher/llm/context/compression/oldest-removal.d.ts +38 -0
  233. package/dist/infra/cipher/llm/context/compression/oldest-removal.js +53 -0
  234. package/dist/infra/cipher/llm/context/compression/types.d.ts +36 -0
  235. package/dist/infra/cipher/llm/context/compression/types.js +1 -0
  236. package/dist/infra/cipher/llm/context/context-manager.d.ts +234 -0
  237. package/dist/infra/cipher/llm/context/context-manager.js +419 -0
  238. package/dist/infra/cipher/llm/context/index.d.ts +2 -0
  239. package/dist/infra/cipher/llm/context/index.js +2 -0
  240. package/dist/infra/cipher/llm/context/loop-detector.d.ts +125 -0
  241. package/dist/infra/cipher/llm/context/loop-detector.js +194 -0
  242. package/dist/infra/cipher/llm/context/utils.d.ts +17 -0
  243. package/dist/infra/cipher/llm/context/utils.js +89 -0
  244. package/dist/infra/cipher/llm/formatters/claude-formatter.d.ts +54 -0
  245. package/dist/infra/cipher/llm/formatters/claude-formatter.js +182 -0
  246. package/dist/infra/cipher/llm/formatters/gemini-formatter.d.ts +69 -0
  247. package/dist/infra/cipher/llm/formatters/gemini-formatter.js +253 -0
  248. package/dist/infra/cipher/llm/formatters/openrouter-formatter.d.ts +47 -0
  249. package/dist/infra/cipher/llm/formatters/openrouter-formatter.js +238 -0
  250. package/dist/infra/cipher/llm/generators/byterover-content-generator.d.ts +92 -0
  251. package/dist/infra/cipher/llm/generators/byterover-content-generator.js +211 -0
  252. package/dist/infra/cipher/llm/generators/index.d.ts +13 -0
  253. package/dist/infra/cipher/llm/generators/index.js +13 -0
  254. package/dist/infra/cipher/llm/generators/logging-content-generator.d.ts +104 -0
  255. package/dist/infra/cipher/llm/generators/logging-content-generator.js +182 -0
  256. package/dist/infra/cipher/llm/generators/openrouter-content-generator.d.ts +93 -0
  257. package/dist/infra/cipher/llm/generators/openrouter-content-generator.js +254 -0
  258. package/dist/infra/cipher/llm/generators/retryable-content-generator.d.ts +90 -0
  259. package/dist/infra/cipher/llm/generators/retryable-content-generator.js +157 -0
  260. package/dist/infra/cipher/llm/index.d.ts +9 -0
  261. package/dist/infra/cipher/llm/index.js +13 -0
  262. package/dist/infra/cipher/llm/internal-llm-service.d.ts +308 -0
  263. package/dist/infra/cipher/llm/internal-llm-service.js +724 -0
  264. package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +183 -0
  265. package/dist/infra/cipher/llm/openrouter-llm-service.js +386 -0
  266. package/dist/infra/cipher/llm/response-validator.d.ts +89 -0
  267. package/dist/infra/cipher/llm/response-validator.js +157 -0
  268. package/dist/infra/cipher/llm/retry/index.d.ts +10 -0
  269. package/dist/infra/cipher/llm/retry/index.js +10 -0
  270. package/dist/infra/cipher/llm/retry/retry-policy.d.ts +74 -0
  271. package/dist/infra/cipher/llm/retry/retry-policy.js +146 -0
  272. package/dist/infra/cipher/llm/retry/retry-with-backoff.d.ts +113 -0
  273. package/dist/infra/cipher/llm/retry/retry-with-backoff.js +247 -0
  274. package/dist/infra/cipher/llm/thought-parser.d.ts +145 -0
  275. package/dist/infra/cipher/llm/thought-parser.js +190 -0
  276. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +47 -0
  277. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +55 -0
  278. package/dist/infra/cipher/llm/tokenizers/default-tokenizer.d.ts +31 -0
  279. package/dist/infra/cipher/llm/tokenizers/default-tokenizer.js +38 -0
  280. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +37 -0
  281. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +45 -0
  282. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +29 -0
  283. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +37 -0
  284. package/dist/infra/cipher/llm/tool-output-processor.d.ts +117 -0
  285. package/dist/infra/cipher/llm/tool-output-processor.js +153 -0
  286. package/dist/infra/cipher/logger/console-logger.d.ts +42 -0
  287. package/dist/infra/cipher/logger/console-logger.js +63 -0
  288. package/dist/infra/cipher/logger/event-based-logger.d.ts +54 -0
  289. package/dist/infra/cipher/logger/event-based-logger.js +92 -0
  290. package/dist/infra/cipher/memory/index.d.ts +6 -0
  291. package/dist/infra/cipher/memory/index.js +7 -0
  292. package/dist/infra/cipher/memory/memory-manager.d.ts +136 -0
  293. package/dist/infra/cipher/memory/memory-manager.js +523 -0
  294. package/dist/infra/cipher/parsers/coding-agent-log-parser.d.ts +24 -0
  295. package/dist/infra/cipher/parsers/coding-agent-log-parser.js +51 -0
  296. package/dist/infra/cipher/process/command-validator.d.ts +59 -0
  297. package/dist/infra/cipher/process/command-validator.js +266 -0
  298. package/dist/infra/cipher/process/index.d.ts +8 -0
  299. package/dist/infra/cipher/process/index.js +8 -0
  300. package/dist/infra/cipher/process/process-service.d.ts +95 -0
  301. package/dist/infra/cipher/process/process-service.js +439 -0
  302. package/dist/infra/cipher/session/chat-session.d.ts +80 -0
  303. package/dist/infra/cipher/session/chat-session.js +165 -0
  304. package/dist/infra/cipher/session/index.d.ts +6 -0
  305. package/dist/infra/cipher/session/index.js +5 -0
  306. package/dist/infra/cipher/session/session-event-forwarder.d.ts +37 -0
  307. package/dist/infra/cipher/session/session-event-forwarder.js +83 -0
  308. package/dist/infra/cipher/session/session-manager.d.ts +109 -0
  309. package/dist/infra/cipher/session/session-manager.js +172 -0
  310. package/dist/infra/cipher/storage/blob-history-storage.d.ts +76 -0
  311. package/dist/infra/cipher/storage/blob-history-storage.js +178 -0
  312. package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +105 -0
  313. package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +290 -0
  314. package/dist/infra/cipher/tools/core-tool-scheduler.d.ts +99 -0
  315. package/dist/infra/cipher/tools/core-tool-scheduler.js +161 -0
  316. package/dist/infra/cipher/tools/default-policy-rules.d.ts +26 -0
  317. package/dist/infra/cipher/tools/default-policy-rules.js +125 -0
  318. package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +12 -0
  319. package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +93 -0
  320. package/dist/infra/cipher/tools/implementations/bash-output-tool.d.ts +12 -0
  321. package/dist/infra/cipher/tools/implementations/bash-output-tool.js +47 -0
  322. package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.d.ts +11 -0
  323. package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.js +142 -0
  324. package/dist/infra/cipher/tools/implementations/delete-memory-tool.d.ts +12 -0
  325. package/dist/infra/cipher/tools/implementations/delete-memory-tool.js +37 -0
  326. package/dist/infra/cipher/tools/implementations/detect-domains-tool.d.ts +7 -0
  327. package/dist/infra/cipher/tools/implementations/detect-domains-tool.js +73 -0
  328. package/dist/infra/cipher/tools/implementations/edit-file-tool.d.ts +13 -0
  329. package/dist/infra/cipher/tools/implementations/edit-file-tool.js +50 -0
  330. package/dist/infra/cipher/tools/implementations/edit-memory-tool.d.ts +13 -0
  331. package/dist/infra/cipher/tools/implementations/edit-memory-tool.js +53 -0
  332. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +7 -0
  333. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +421 -0
  334. package/dist/infra/cipher/tools/implementations/glob-files-tool.d.ts +18 -0
  335. package/dist/infra/cipher/tools/implementations/glob-files-tool.js +70 -0
  336. package/dist/infra/cipher/tools/implementations/grep-content-tool.d.ts +12 -0
  337. package/dist/infra/cipher/tools/implementations/grep-content-tool.js +77 -0
  338. package/dist/infra/cipher/tools/implementations/kill-process-tool.d.ts +12 -0
  339. package/dist/infra/cipher/tools/implementations/kill-process-tool.js +55 -0
  340. package/dist/infra/cipher/tools/implementations/list-memories-tool.d.ts +12 -0
  341. package/dist/infra/cipher/tools/implementations/list-memories-tool.js +63 -0
  342. package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +12 -0
  343. package/dist/infra/cipher/tools/implementations/read-file-tool.js +54 -0
  344. package/dist/infra/cipher/tools/implementations/read-memory-tool.d.ts +12 -0
  345. package/dist/infra/cipher/tools/implementations/read-memory-tool.js +39 -0
  346. package/dist/infra/cipher/tools/implementations/search-history-tool.d.ts +10 -0
  347. package/dist/infra/cipher/tools/implementations/search-history-tool.js +36 -0
  348. package/dist/infra/cipher/tools/implementations/write-file-tool.d.ts +12 -0
  349. package/dist/infra/cipher/tools/implementations/write-file-tool.js +52 -0
  350. package/dist/infra/cipher/tools/implementations/write-memory-tool.d.ts +13 -0
  351. package/dist/infra/cipher/tools/implementations/write-memory-tool.js +52 -0
  352. package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +10 -0
  353. package/dist/infra/cipher/tools/implementations/write-todos-tool.js +165 -0
  354. package/dist/infra/cipher/tools/index.d.ts +18 -0
  355. package/dist/infra/cipher/tools/index.js +19 -0
  356. package/dist/infra/cipher/tools/policy-engine.d.ts +80 -0
  357. package/dist/infra/cipher/tools/policy-engine.js +110 -0
  358. package/dist/infra/cipher/tools/tool-invocation-queue.d.ts +191 -0
  359. package/dist/infra/cipher/tools/tool-invocation-queue.js +254 -0
  360. package/dist/infra/cipher/tools/tool-invocation.d.ts +216 -0
  361. package/dist/infra/cipher/tools/tool-invocation.js +294 -0
  362. package/dist/infra/cipher/tools/tool-manager.d.ts +135 -0
  363. package/dist/infra/cipher/tools/tool-manager.js +209 -0
  364. package/dist/infra/cipher/tools/tool-markers.d.ts +48 -0
  365. package/dist/infra/cipher/tools/tool-markers.js +49 -0
  366. package/dist/infra/cipher/tools/tool-provider.d.ts +77 -0
  367. package/dist/infra/cipher/tools/tool-provider.js +196 -0
  368. package/dist/infra/cipher/tools/tool-registry.d.ts +52 -0
  369. package/dist/infra/cipher/tools/tool-registry.js +144 -0
  370. package/dist/infra/cipher/tools/utils/schema-converter.d.ts +10 -0
  371. package/dist/infra/cipher/tools/utils/schema-converter.js +29 -0
  372. package/dist/infra/cipher/validation/workspace-validator.d.ts +19 -0
  373. package/dist/infra/cipher/validation/workspace-validator.js +37 -0
  374. package/dist/infra/cipher/watcher/coding-agent-log-watcher.d.ts +14 -0
  375. package/dist/infra/cipher/watcher/coding-agent-log-watcher.js +55 -0
  376. package/dist/infra/cogit/context-tree-to-push-context-mapper.d.ts +21 -0
  377. package/dist/infra/cogit/context-tree-to-push-context-mapper.js +32 -0
  378. package/dist/infra/cogit/http-cogit-pull-service.d.ts +15 -0
  379. package/dist/infra/cogit/http-cogit-pull-service.js +30 -0
  380. package/dist/infra/cogit/http-cogit-push-service.d.ts +17 -0
  381. package/dist/infra/cogit/http-cogit-push-service.js +104 -0
  382. package/dist/infra/config/file-config-store.js +9 -3
  383. package/dist/infra/context-tree/file-context-file-reader.d.ts +14 -0
  384. package/dist/infra/context-tree/file-context-file-reader.js +46 -0
  385. package/dist/infra/context-tree/file-context-tree-service.d.ts +14 -0
  386. package/dist/infra/context-tree/file-context-tree-service.js +46 -0
  387. package/dist/infra/context-tree/file-context-tree-snapshot-service.d.ts +34 -0
  388. package/dist/infra/context-tree/file-context-tree-snapshot-service.js +117 -0
  389. package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +22 -0
  390. package/dist/infra/context-tree/file-context-tree-writer-service.js +61 -0
  391. package/dist/infra/memory/http-memory-retrieval-service.js +2 -1
  392. package/dist/infra/memory/http-memory-storage-service.js +4 -3
  393. package/dist/infra/parsers/clean/clean-claude-service.d.ts +111 -0
  394. package/dist/infra/parsers/clean/clean-claude-service.js +271 -0
  395. package/dist/infra/parsers/clean/clean-codex-service.d.ts +231 -0
  396. package/dist/infra/parsers/clean/clean-codex-service.js +534 -0
  397. package/dist/infra/parsers/clean/clean-copilot-service.d.ts +255 -0
  398. package/dist/infra/parsers/clean/clean-copilot-service.js +729 -0
  399. package/dist/infra/parsers/clean/clean-cursor-service.d.ts +161 -0
  400. package/dist/infra/parsers/clean/clean-cursor-service.js +432 -0
  401. package/dist/infra/parsers/clean/clean-parser-service-factory.d.ts +54 -0
  402. package/dist/infra/parsers/clean/clean-parser-service-factory.js +80 -0
  403. package/dist/infra/parsers/clean/shared.d.ts +84 -0
  404. package/dist/infra/parsers/clean/shared.js +273 -0
  405. package/dist/infra/parsers/raw/raw-claude-service.d.ts +195 -0
  406. package/dist/infra/parsers/raw/raw-claude-service.js +548 -0
  407. package/dist/infra/parsers/raw/raw-codex-service.d.ts +313 -0
  408. package/dist/infra/parsers/raw/raw-codex-service.js +782 -0
  409. package/dist/infra/parsers/raw/raw-copilot-service.d.ts +196 -0
  410. package/dist/infra/parsers/raw/raw-copilot-service.js +558 -0
  411. package/dist/infra/parsers/raw/raw-cursor-service.d.ts +316 -0
  412. package/dist/infra/parsers/raw/raw-cursor-service.js +818 -0
  413. package/dist/infra/parsers/raw/raw-parser-service-factory.d.ts +54 -0
  414. package/dist/infra/parsers/raw/raw-parser-service-factory.js +81 -0
  415. package/dist/infra/space/http-space-service.js +2 -1
  416. package/dist/infra/team/http-team-service.js +2 -1
  417. package/dist/infra/user/http-user-service.js +2 -1
  418. package/dist/infra/watcher/file-watcher-service.d.ts +10 -0
  419. package/dist/infra/watcher/file-watcher-service.js +81 -0
  420. package/dist/infra/workspace/workspace-detector-service.d.ts +60 -0
  421. package/dist/infra/workspace/workspace-detector-service.js +165 -0
  422. package/dist/resources/prompts/curate-context-tree-curation.yml +48 -0
  423. package/dist/resources/prompts/modes/autonomous.yml +9 -0
  424. package/dist/resources/prompts/query-context-tree-retrieval.yml +49 -0
  425. package/dist/resources/prompts/reflection.yml +27 -0
  426. package/dist/resources/prompts/system-prompt.yml +82 -0
  427. package/dist/resources/prompts/tool-outputs.yml +30 -0
  428. package/dist/templates/README.md +6 -7
  429. package/dist/templates/sections/command-reference.md +40 -111
  430. package/dist/templates/sections/workflow.md +3 -30
  431. package/dist/utils/emoji-helpers.d.ts +38 -0
  432. package/dist/utils/emoji-helpers.js +42 -0
  433. package/dist/utils/error-handler.d.ts +51 -0
  434. package/dist/utils/error-handler.js +169 -0
  435. package/dist/utils/error-helpers.d.ts +30 -0
  436. package/dist/utils/error-helpers.js +47 -0
  437. package/dist/utils/file-helpers.d.ts +15 -0
  438. package/dist/utils/file-helpers.js +44 -0
  439. package/dist/utils/oclif-error-helpers.d.ts +40 -0
  440. package/dist/utils/oclif-error-helpers.js +46 -0
  441. package/dist/utils/tool-display-formatter.d.ts +53 -0
  442. package/dist/utils/tool-display-formatter.js +257 -0
  443. package/oclif.manifest.json +381 -141
  444. package/package.json +27 -6
  445. package/dist/commands/add.d.ts +0 -49
  446. package/dist/commands/add.js +0 -192
  447. package/dist/commands/complete.d.ts +0 -108
  448. package/dist/commands/complete.js +0 -340
  449. package/dist/commands/retrieve.d.ts +0 -26
  450. package/dist/commands/retrieve.js +0 -101
  451. package/dist/core/domain/entities/curator-output.d.ts +0 -14
  452. package/dist/core/domain/entities/curator-output.js +0 -23
  453. package/dist/core/domain/entities/delta-batch.d.ts +0 -30
  454. package/dist/core/domain/entities/delta-batch.js +0 -52
  455. package/dist/core/domain/entities/delta-operation.d.ts +0 -31
  456. package/dist/core/domain/entities/delta-operation.js +0 -50
  457. package/dist/core/domain/entities/executor-output.d.ts +0 -27
  458. package/dist/core/domain/entities/executor-output.js +0 -33
  459. package/dist/core/domain/entities/reflector-output.d.ts +0 -38
  460. package/dist/core/domain/entities/reflector-output.js +0 -44
  461. package/dist/core/interfaces/i-ace-prompt-builder.d.ts +0 -48
  462. package/dist/core/interfaces/i-bullet-content-store.d.ts +0 -36
  463. package/dist/core/interfaces/i-delta-store.d.ts +0 -15
  464. package/dist/core/interfaces/i-executor-output-store.d.ts +0 -14
  465. package/dist/core/interfaces/i-playbook-service.d.ts +0 -69
  466. package/dist/core/interfaces/i-playbook-store.d.ts +0 -38
  467. package/dist/core/interfaces/i-reflection-store.d.ts +0 -21
  468. package/dist/infra/ace/ace-file-utils.d.ts +0 -46
  469. package/dist/infra/ace/ace-file-utils.js +0 -83
  470. package/dist/infra/ace/ace-prompt-templates.d.ts +0 -13
  471. package/dist/infra/ace/ace-prompt-templates.js +0 -177
  472. package/dist/infra/ace/file-bullet-content-store.d.ts +0 -27
  473. package/dist/infra/ace/file-bullet-content-store.js +0 -89
  474. package/dist/infra/ace/file-delta-store.d.ts +0 -9
  475. package/dist/infra/ace/file-delta-store.js +0 -26
  476. package/dist/infra/ace/file-executor-output-store.d.ts +0 -9
  477. package/dist/infra/ace/file-executor-output-store.js +0 -26
  478. package/dist/infra/ace/file-playbook-store.d.ts +0 -29
  479. package/dist/infra/ace/file-playbook-store.js +0 -107
  480. package/dist/infra/ace/file-reflection-store.d.ts +0 -10
  481. package/dist/infra/ace/file-reflection-store.js +0 -55
  482. package/dist/infra/playbook/file-playbook-service.d.ts +0 -42
  483. package/dist/infra/playbook/file-playbook-service.js +0 -132
  484. /package/dist/core/{interfaces/i-ace-prompt-builder.js → domain/cipher/blob/types.js} +0 -0
  485. /package/dist/core/{interfaces/i-bullet-content-store.js → domain/cipher/file-system/types.js} +0 -0
  486. /package/dist/core/{interfaces/i-delta-store.js → domain/cipher/process/types.js} +0 -0
  487. /package/dist/core/{interfaces/i-executor-output-store.js → domain/cipher/session/types.js} +0 -0
  488. /package/dist/core/{interfaces/i-playbook-service.js → domain/cipher/storage/history-types.js} +0 -0
  489. /package/dist/core/{interfaces/i-playbook-store.js → domain/cipher/system-prompt/types.js} +0 -0
  490. /package/dist/core/{interfaces/i-reflection-store.js → domain/cipher/tools/types.js} +0 -0
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Claude Clean Service
3
+ * Transforms Claude raw parsed data to clean normalized format
4
+ * Consolidates agent sessions and normalizes messages
5
+ */
6
+ import { readdir, readFile } from 'node:fs/promises';
7
+ import path from 'node:path';
8
+ import { normalizeClaudeSession } from './shared.js';
9
+ /**
10
+ * Claude Clean Service
11
+ * Transforms Claude raw parsed sessions to clean normalized format
12
+ */
13
+ export class ClaudeCleanService {
14
+ ide;
15
+ /**
16
+ * Initialize Claude Clean Service
17
+ *
18
+ * @param ide - The IDE type (Claude Code)
19
+ */
20
+ constructor(ide) {
21
+ this.ide = ide;
22
+ }
23
+ /**
24
+ * Parse and transform raw Claude sessions to clean normalized format
25
+ *
26
+ * Reads raw sessions organized by workspace, consolidates agent sessions into main
27
+ * conversations, and normalizes message format. Returns sessions in-memory without file writing.
28
+ *
29
+ * @param rawDir - Path to directory containing raw Claude session files organized by workspace
30
+ * @returns Promise resolving to array of clean normalized sessions
31
+ */
32
+ /* eslint-disable no-await-in-loop */
33
+ async parse(rawDir) {
34
+ console.log('🔍 Starting Claude clean transformation...');
35
+ console.log(`📁 Raw directory: ${rawDir}`);
36
+ try {
37
+ const entries = await readdir(rawDir);
38
+ const allCleanSessions = [];
39
+ for (const entry of entries) {
40
+ const workspacePath = path.join(rawDir, entry);
41
+ const files = await readdir(workspacePath);
42
+ const jsonFiles = files.filter((f) => f.endsWith('.json') && f !== 'summary.json');
43
+ if (jsonFiles.length === 0)
44
+ continue;
45
+ const { agentSessions, allSessions } = await this.loadSessions(workspacePath, jsonFiles);
46
+ const cleanedSession = await this.processMainSessions(allSessions, agentSessions);
47
+ allCleanSessions.push(...cleanedSession);
48
+ }
49
+ console.log(`\n🎉 Claude clean transformation complete! ${allCleanSessions.length} sessions processed`);
50
+ return Object.freeze(allCleanSessions);
51
+ }
52
+ catch (error) {
53
+ console.error('❌ Error during transformation:', error instanceof Error ? error.message : 'Unknown error');
54
+ return Object.freeze([]);
55
+ }
56
+ }
57
+ /* eslint-enable no-await-in-loop */
58
+ /**
59
+ * Calculate string similarity score using word overlap method
60
+ *
61
+ * Computes similarity by comparing words with length > 3 characters.
62
+ * Returns fraction of matching words relative to max length.
63
+ *
64
+ * @param str1 - First string to compare
65
+ * @param str2 - Second string to compare
66
+ * @returns Similarity score between 0 (no match) and 1 (perfect match)
67
+ */
68
+ calculateSimilarity(str1, str2) {
69
+ const words1 = str1
70
+ .toLowerCase()
71
+ .split(/\s+/)
72
+ .filter((w) => w.length > 3);
73
+ const words2 = str2
74
+ .toLowerCase()
75
+ .split(/\s+/)
76
+ .filter((w) => w.length > 3);
77
+ if (words1.length === 0 || words2.length === 0)
78
+ return 0;
79
+ const matches = words1.filter((w) => words2.some((w2) => w2.includes(w) || w.includes(w2)));
80
+ return matches.length / Math.max(words1.length, words2.length);
81
+ }
82
+ /**
83
+ * Consolidate agent session data into main conversation
84
+ *
85
+ * When main conversation contains Task subagent invocation, flattens the agent
86
+ * session messages into the main message stream. Two-pass algorithm: first identify
87
+ * Task invocations with matching agent sessions, then insert agent messages.
88
+ *
89
+ * @param mainSession - Main Claude conversation session to consolidate into
90
+ * @param agentSessions - Map of agent sessions keyed by agent session ID
91
+ * @returns Promise resolving to consolidated session with agent messages merged
92
+ */
93
+ async consolidateAgentSessions(mainSession, agentSessions) {
94
+ if (!mainSession.messages || mainSession.messages.length === 0) {
95
+ return mainSession;
96
+ }
97
+ // First pass: identify Task tool_use invocations that have matching agent sessions
98
+ const taskToolUseIds = this.identifyTaskToolIds(mainSession.messages, agentSessions);
99
+ // Second pass: flatten messages, inserting agent messages after Task invocations
100
+ const newMessages = this.flattenMessagesWithAgentSessions(mainSession.messages, taskToolUseIds, agentSessions);
101
+ return {
102
+ ...mainSession,
103
+ messages: newMessages,
104
+ };
105
+ }
106
+ /**
107
+ * Find best matching agent session for a task description and timestamp
108
+ *
109
+ * Locates matching agent session using similarity scoring and timestamp proximity.
110
+ * Considers both task description similarity and temporal closeness (within 5 seconds).
111
+ *
112
+ * @param description - Task description from Task tool_use invocation
113
+ * @param messageTimestamp - Timestamp of message containing Task invocation
114
+ * @param agentSessions - Map of available agent sessions
115
+ * @returns Matching agent session or null if no good match found
116
+ */
117
+ findMatchingAgentSession(description, messageTimestamp, agentSessions) {
118
+ let matchedAgent = null;
119
+ let bestScore = 0.2; // Minimum similarity threshold
120
+ for (const agentSession of agentSessions.values()) {
121
+ const agentTitle = agentSession.title || '';
122
+ const agentTimestamp = new Date(agentSession.timestamp).getTime();
123
+ // Calculate similarity score
124
+ let score = this.calculateSimilarity(description, agentTitle);
125
+ // Boost score for nearby timestamps (within 5 seconds)
126
+ const timeDiff = Math.abs(messageTimestamp - agentTimestamp);
127
+ if (timeDiff < 5000) {
128
+ score += 0.3;
129
+ }
130
+ // If this is the best match so far, use it
131
+ if (score > bestScore) {
132
+ bestScore = score;
133
+ matchedAgent = agentSession;
134
+ }
135
+ }
136
+ return matchedAgent;
137
+ }
138
+ /**
139
+ * Flatten messages with agent sessions inserted after Task invocations
140
+ *
141
+ * Inserts agent session messages into message stream after Task tool_use invocations
142
+ * that have matching agent sessions. Preserves message order.
143
+ *
144
+ * @param messages - Array of raw session messages
145
+ * @param taskToolUseIds - Set of Task tool_use IDs that have matching agent sessions
146
+ * @param agentSessions - Map of available agent sessions
147
+ * @returns Flattened message array with agent messages interleaved
148
+ */
149
+ flattenMessagesWithAgentSessions(messages, taskToolUseIds, agentSessions) {
150
+ const newMessages = [];
151
+ for (const message of messages) {
152
+ newMessages.push(message);
153
+ if (message.type !== 'assistant' || !message.content || !Array.isArray(message.content)) {
154
+ continue;
155
+ }
156
+ for (const content of message.content) {
157
+ if (content.type !== 'tool_use' || content.name !== 'Task') {
158
+ continue;
159
+ }
160
+ const contentId = content.id;
161
+ if (!taskToolUseIds.has(contentId)) {
162
+ continue;
163
+ }
164
+ const taskInput = content.input || {};
165
+ const description = taskInput.description || '';
166
+ const messageTimestamp = new Date(message.timestamp).getTime();
167
+ const matchedAgent = this.findMatchingAgentSession(description, messageTimestamp, agentSessions);
168
+ if (matchedAgent && matchedAgent.messages && Array.isArray(matchedAgent.messages)) {
169
+ newMessages.push(...matchedAgent.messages);
170
+ }
171
+ }
172
+ }
173
+ return newMessages;
174
+ }
175
+ /**
176
+ * Identify Task tool_use IDs that have matching agent sessions
177
+ *
178
+ * Scans messages for Task tool_use invocations and identifies which ones
179
+ * have corresponding agent sessions that can be consolidated.
180
+ *
181
+ * @param messages - Array of session messages
182
+ * @param agentSessions - Map of available agent sessions
183
+ * @returns Set of tool_use IDs that have matching agent sessions
184
+ */
185
+ identifyTaskToolIds(messages, agentSessions) {
186
+ const taskToolUseIds = new Set();
187
+ for (const message of messages) {
188
+ if (message.type !== 'assistant' || !message.content || !Array.isArray(message.content)) {
189
+ continue;
190
+ }
191
+ for (const content of message.content) {
192
+ if (content.type !== 'tool_use' || content.name !== 'Task') {
193
+ continue;
194
+ }
195
+ const taskInput = content.input || {};
196
+ const description = taskInput.description || '';
197
+ const messageTimestamp = new Date(message.timestamp).getTime();
198
+ const matchedAgent = this.findMatchingAgentSession(description, messageTimestamp, agentSessions);
199
+ if (matchedAgent && matchedAgent.messages) {
200
+ const contentId = content.id;
201
+ taskToolUseIds.add(contentId);
202
+ }
203
+ }
204
+ }
205
+ return taskToolUseIds;
206
+ }
207
+ /**
208
+ * Load and organize sessions from workspace directory
209
+ *
210
+ * Reads JSON files from workspace directory and organizes them into main sessions
211
+ * and agent sessions based on filename prefix ('agent-' for agent sessions).
212
+ *
213
+ * @param workspacePath - Path to workspace directory containing session files
214
+ * @param jsonFiles - Array of JSON filenames to load
215
+ * @returns Promise resolving to object with separated agentSessions and allSessions maps
216
+ */
217
+ async loadSessions(workspacePath, jsonFiles) {
218
+ const allSessions = new Map();
219
+ const agentSessions = new Map();
220
+ /* eslint-disable no-await-in-loop */
221
+ for (const file of jsonFiles) {
222
+ try {
223
+ const content = await readFile(path.join(workspacePath, file), 'utf8');
224
+ const session = JSON.parse(content);
225
+ const sessionId = file.replace('.json', '');
226
+ if (file.startsWith('agent-')) {
227
+ agentSessions.set(sessionId, session);
228
+ }
229
+ else {
230
+ allSessions.set(sessionId, session);
231
+ }
232
+ }
233
+ catch (error) {
234
+ console.warn(`⚠️ Failed to read ${file}:`, error instanceof Error ? error.message : String(error));
235
+ }
236
+ }
237
+ /* eslint-enable no-await-in-loop */
238
+ return { agentSessions, allSessions };
239
+ }
240
+ /**
241
+ * Process main sessions and return normalized outputs
242
+ *
243
+ * Consolidates agent sessions and normalizes each session.
244
+ * Returns normalized sessions in-memory without writing to disk.
245
+ *
246
+ * @param allSessions - Map of main sessions to process
247
+ * @param agentSessions - Map of available agent sessions for consolidation
248
+ * @returns Promise resolving to array of clean normalized sessions
249
+ */
250
+ async processMainSessions(allSessions, agentSessions) {
251
+ const cleanedSessions = [];
252
+ /* eslint-disable no-await-in-loop */
253
+ for (const [sessionId, session] of allSessions) {
254
+ try {
255
+ // Consolidate agent sessions if any exist
256
+ let consolidatedSession = session;
257
+ if (agentSessions.size > 0) {
258
+ consolidatedSession = await this.consolidateAgentSessions(session, agentSessions);
259
+ }
260
+ const normalized = normalizeClaudeSession(consolidatedSession, 'Claude');
261
+ cleanedSessions.push(normalized);
262
+ console.log(` ✅ ${session.title}`);
263
+ }
264
+ catch (error) {
265
+ console.warn(`⚠️ Failed to transform ${sessionId}:`, error instanceof Error ? error.message : 'Unknown error');
266
+ }
267
+ }
268
+ /* eslint-enable no-await-in-loop */
269
+ return cleanedSessions;
270
+ }
271
+ }
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Codex Clean Service
3
+ * Transforms Codex raw parsed data to clean normalized format
4
+ */
5
+ import type { CleanSession } from '../../../core/domain/entities/parser.js';
6
+ import { Agent } from '../../../core/domain/entities/agent.js';
7
+ import { ICleanParserService } from '../../../core/interfaces/parser/i-clean-parser-service.js';
8
+ /**
9
+ * Codex Clean Service
10
+ * Transforms Codex raw parsed sessions to clean normalized format
11
+ */
12
+ export declare class CodexCleanService implements ICleanParserService {
13
+ private ide;
14
+ constructor(ide: Agent);
15
+ /**
16
+ * Parse and transform Codex raw sessions to clean normalized format
17
+ *
18
+ * Reads Codex raw session files organized by date, transforms them to a unified
19
+ * format, and returns the normalized sessions. Each session is processed using
20
+ * Codex-specific transformation logic. Returns sessions in-memory without file writing.
21
+ *
22
+ * @param rawDir - Absolute path to the directory containing raw Codex session files organized by date
23
+ * @returns Promise resolving to array of clean normalized sessions
24
+ */
25
+ parse(rawDir: string): Promise<readonly CleanSession[]>;
26
+ /**
27
+ * Extract tool execution output from Codex payload
28
+ *
29
+ * Attempts to parse the output field from a tool execution payload. Handles both
30
+ * stringified JSON output and direct string/object output. Returns the extracted
31
+ * output or nested output data if present.
32
+ *
33
+ * @param payload - Tool execution payload object containing output field
34
+ * @returns Extracted output as object or string, empty string if parsing fails
35
+ */
36
+ private extractToolOutput;
37
+ /**
38
+ * Extract workspace paths from a Codex payload entry
39
+ *
40
+ * Searches payload for workspace path information in two locations:
41
+ * 1. Direct cwd (current working directory) field
42
+ * 2. writable_roots field (either direct or nested in sandbox_policy)
43
+ * Handles both string and array values for writable_roots.
44
+ *
45
+ * @param payload - Codex payload object to extract paths from
46
+ * @returns Array of workspace path strings found in the payload
47
+ */
48
+ private extractWorkspacePathsFromPayload;
49
+ /**
50
+ * Normalize a Codex content block to unified ContentBlock format
51
+ *
52
+ * Transforms Codex-specific content block formats to standardized format.
53
+ * Handles multiple block types:
54
+ * - String blocks → text blocks
55
+ * - input_text/output_text → text blocks
56
+ * - thinking blocks
57
+ * - tool_use blocks
58
+ * - tool_result blocks
59
+ * Returns null for invalid or unrecognized blocks.
60
+ *
61
+ * @param block - Codex content block to normalize (string, object, or other)
62
+ * @returns Normalized ContentBlock or null if block is invalid
63
+ */
64
+ private normalizeCodexContentBlock;
65
+ /**
66
+ * Normalize Codex session data to unified session format
67
+ *
68
+ * Transforms raw Codex session structure to standardized format:
69
+ * 1. Extracts session metadata from session_meta entry
70
+ * 2. Transforms rawEntries to normalized messages
71
+ * 3. Extracts unique workspace paths from all entries
72
+ * 4. Combines tool use/result messages
73
+ * 5. Assigns turn IDs
74
+ *
75
+ * @param session - Raw Codex session object with rawEntries and metadata
76
+ * @returns Normalized session object with messages, metadata, and workspace paths
77
+ */
78
+ private normalizeCodexSession;
79
+ /**
80
+ * Normalize input_text or output_text blocks to standard text format
81
+ *
82
+ * Extracts text content from Codex input_text or output_text blocks and
83
+ * converts them to the unified text content block format.
84
+ *
85
+ * @param blockObj - Codex input/output text block object
86
+ * @returns TextContentBlock with extracted text content
87
+ */
88
+ private normalizeInputTextBlock;
89
+ /**
90
+ * Normalize standard text content blocks
91
+ *
92
+ * Extracts text field from a content block object and returns it in
93
+ * the standardized text content block format.
94
+ *
95
+ * @param blockObj - Content block object with text field
96
+ * @returns TextContentBlock with extracted text content
97
+ */
98
+ private normalizeTextBlock;
99
+ /**
100
+ * Normalize thinking content blocks
101
+ *
102
+ * Extracts thinking content from block object, using either the thinking field
103
+ * or falling back to text field. Returns standardized thinking content block.
104
+ *
105
+ * @param blockObj - Content block object with thinking or text field
106
+ * @returns ThinkingContentBlock with extracted thinking content
107
+ */
108
+ private normalizeThinkingBlock;
109
+ /**
110
+ * Normalize tool result content blocks
111
+ *
112
+ * Extracts tool result data from block object, mapping content and tool_use_id
113
+ * fields to the standardized tool result format.
114
+ *
115
+ * @param blockObj - Tool result block object with content and tool_use_id
116
+ * @returns ToolResultContentBlock with extracted result data
117
+ */
118
+ private normalizeToolResultBlock;
119
+ /**
120
+ * Normalize tool use content blocks
121
+ *
122
+ * Extracts tool invocation data from block object, mapping id, name, input,
123
+ * and tool_use_id fields to the standardized tool use format.
124
+ *
125
+ * @param blockObj - Tool use block object with tool invocation data
126
+ * @returns ToolUseContentBlock with extracted tool invocation data
127
+ */
128
+ private normalizeToolUseBlock;
129
+ /**
130
+ * Parse tool input from payload supporting multiple Codex formats
131
+ *
132
+ * Extracts and normalizes tool input arguments from different payload formats:
133
+ * - custom_tool_call: wraps input in an object
134
+ * - function_call: parses arguments (string or object)
135
+ * Handles JSON parsing for stringified arguments with fallback to wrapped format.
136
+ *
137
+ * @param payload - Tool call payload with input or arguments field
138
+ * @returns Parsed tool input as object, empty object if no input found
139
+ */
140
+ private parseToolInput;
141
+ /**
142
+ * Process message payload and append content blocks to array
143
+ *
144
+ * Extracts message content array from payload and processes each content block,
145
+ * appending normalized blocks to the provided content array.
146
+ *
147
+ * @param payload - Message payload object with content array
148
+ * @param content - Array to append processed content blocks to (modified in place)
149
+ */
150
+ private processMessage;
151
+ /**
152
+ * Process and normalize message content blocks from array
153
+ *
154
+ * Iterates through message content array, normalizing each block to the
155
+ * unified ContentBlock format. Filters out any null results from normalization.
156
+ *
157
+ * @param msgContent - Array of raw message content blocks
158
+ * @returns Array of normalized ContentBlock objects
159
+ */
160
+ private processMessageContent;
161
+ /**
162
+ * Process reasoning payload and append thinking blocks to content array
163
+ *
164
+ * Extracts summary array from reasoning payload and processes it into
165
+ * thinking content blocks, appending them to the provided content array.
166
+ *
167
+ * @param payload - Reasoning payload object with summary array
168
+ * @param content - Array to append thinking blocks to (modified in place)
169
+ */
170
+ private processReasoning;
171
+ /**
172
+ * Process reasoning summary into thinking content blocks
173
+ *
174
+ * Extracts text from summary_text type blocks in the summary array and
175
+ * converts them to thinking content blocks.
176
+ *
177
+ * @param summary - Array of summary blocks from reasoning payload
178
+ * @returns Array of ThinkingContentBlock objects extracted from summary
179
+ */
180
+ private processReasoningContent;
181
+ /**
182
+ * Process Codex response item into a CleanMessage
183
+ *
184
+ * Transforms a Codex raw entry (response_item) into a normalized message.
185
+ * Handles different item types:
186
+ * - custom_tool_call/function_call → tool use blocks (assistant)
187
+ * - custom_tool_call_output/function_call_output → tool result blocks (assistant)
188
+ * - message → text content (user or assistant based on role)
189
+ * - reasoning → thinking blocks (assistant)
190
+ * Returns null if no content blocks are generated.
191
+ *
192
+ * @param item - Codex raw entry to process
193
+ * @returns CleanMessage with type, content, and timestamp, or null if no content
194
+ */
195
+ private processResponseItem;
196
+ /**
197
+ * Process tool call payload and append tool use block to content
198
+ *
199
+ * Parses tool input from payload and creates a tool_use content block with
200
+ * call ID, input, and tool name. Appends the block to the provided array.
201
+ *
202
+ * @param payload - Tool call payload with name, input/arguments, and call_id
203
+ * @param content - Array to append tool use block to (modified in place)
204
+ */
205
+ private processToolCall;
206
+ /**
207
+ * Process tool output payload and append tool result block to content
208
+ *
209
+ * Extracts tool execution output from payload and creates a tool_result
210
+ * content block with the output content and tool_use_id. Appends the block
211
+ * to the provided array.
212
+ *
213
+ * @param payload - Tool output payload with output field and call_id
214
+ * @param content - Array to append tool result block to (modified in place)
215
+ */
216
+ private processToolOutput;
217
+ /**
218
+ * Transform Codex rawEntries to unified message format with turn IDs
219
+ *
220
+ * Performs complete transformation pipeline:
221
+ * 1. Filters out event_msg and turn_context entries
222
+ * 2. Processes each response_item into a message
223
+ * 3. Sorts messages by timestamp
224
+ * 4. Combines tool_use and tool_result messages
225
+ * 5. Assigns turn IDs to all messages
226
+ *
227
+ * @param rawEntries - Array of Codex raw entries from session
228
+ * @returns Array of CleanMessage objects with turn IDs and combined tool blocks
229
+ */
230
+ private transformCodexEntries;
231
+ }