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,534 @@
1
+ /**
2
+ * Codex Clean Service
3
+ * Transforms Codex raw parsed data to clean normalized format
4
+ */
5
+ import { readdir, readFile } from 'node:fs/promises';
6
+ import path from 'node:path';
7
+ import { addTurnIds, combineToolResults, } from './shared.js';
8
+ /**
9
+ * Codex Clean Service
10
+ * Transforms Codex raw parsed sessions to clean normalized format
11
+ */
12
+ export class CodexCleanService {
13
+ ide;
14
+ constructor(ide) {
15
+ this.ide = ide;
16
+ }
17
+ /**
18
+ * Parse and transform Codex raw sessions to clean normalized format
19
+ *
20
+ * Reads Codex raw session files organized by date, transforms them to a unified
21
+ * format, and returns the normalized sessions. Each session is processed using
22
+ * Codex-specific transformation logic. Returns sessions in-memory without file writing.
23
+ *
24
+ * @param rawDir - Absolute path to the directory containing raw Codex session files organized by date
25
+ * @returns Promise resolving to array of clean normalized sessions
26
+ */
27
+ /* eslint-disable no-await-in-loop */
28
+ async parse(rawDir) {
29
+ console.log('🔍 Starting Codex clean transformation...');
30
+ console.log(`📁 Raw directory: ${rawDir}`);
31
+ try {
32
+ // Read raw sessions organized by date
33
+ const dateDirs = await readdir(rawDir);
34
+ const allCleanSessions = [];
35
+ for (const dateDir of dateDirs) {
36
+ const datePath = path.join(rawDir, dateDir);
37
+ const files = await readdir(datePath);
38
+ console.log(`\n 📅 ${dateDir}`);
39
+ for (const file of files) {
40
+ if (!file.endsWith('.json'))
41
+ continue;
42
+ try {
43
+ const content = await readFile(path.join(datePath, file), 'utf8');
44
+ const session = JSON.parse(content);
45
+ // Normalize the session using Codex-specific transformer
46
+ const normalized = this.normalizeCodexSession(session);
47
+ // Add to array instead of writing to disk
48
+ allCleanSessions.push(normalized);
49
+ console.log(` ✅ ${session.title}`);
50
+ }
51
+ catch (error) {
52
+ console.warn(`⚠️ Failed to transform ${file}:`, error instanceof Error ? error.message : String(error));
53
+ }
54
+ }
55
+ }
56
+ console.log(`\n🎉 Codex clean transformation complete! ${allCleanSessions.length} sessions processed`);
57
+ return Object.freeze(allCleanSessions);
58
+ }
59
+ catch (error) {
60
+ console.error('❌ Error during transformation:', error instanceof Error ? error.message : 'Unknown error');
61
+ return Object.freeze([]);
62
+ }
63
+ }
64
+ /**
65
+ * Extract tool execution output from Codex payload
66
+ *
67
+ * Attempts to parse the output field from a tool execution payload. Handles both
68
+ * stringified JSON output and direct string/object output. Returns the extracted
69
+ * output or nested output data if present.
70
+ *
71
+ * @param payload - Tool execution payload object containing output field
72
+ * @returns Extracted output as object or string, empty string if parsing fails
73
+ */
74
+ extractToolOutput(payload) {
75
+ try {
76
+ if (typeof payload.output === 'string') {
77
+ const outputData = JSON.parse(payload.output);
78
+ return outputData.output || payload.output || '';
79
+ }
80
+ return payload.output || '';
81
+ }
82
+ catch {
83
+ return payload.output || '';
84
+ }
85
+ }
86
+ /**
87
+ * Extract workspace paths from a Codex payload entry
88
+ *
89
+ * Searches payload for workspace path information in two locations:
90
+ * 1. Direct cwd (current working directory) field
91
+ * 2. writable_roots field (either direct or nested in sandbox_policy)
92
+ * Handles both string and array values for writable_roots.
93
+ *
94
+ * @param payload - Codex payload object to extract paths from
95
+ * @returns Array of workspace path strings found in the payload
96
+ */
97
+ extractWorkspacePathsFromPayload(payload) {
98
+ const paths = [];
99
+ // Add cwd if present
100
+ const { cwd } = payload;
101
+ if (cwd && typeof cwd === 'string') {
102
+ paths.push(cwd);
103
+ }
104
+ // Add writable_roots if present (can be direct or nested in sandbox_policy)
105
+ let writableRoots = payload.writable_roots;
106
+ // If not found, check inside sandbox_policy
107
+ if (!writableRoots && typeof payload.sandbox_policy === 'object' && payload.sandbox_policy !== null) {
108
+ writableRoots = payload.sandbox_policy.writable_roots;
109
+ }
110
+ if (!writableRoots) {
111
+ return paths;
112
+ }
113
+ if (Array.isArray(writableRoots)) {
114
+ for (const root of writableRoots) {
115
+ if (typeof root === 'string') {
116
+ paths.push(root);
117
+ }
118
+ }
119
+ }
120
+ else if (typeof writableRoots === 'string') {
121
+ paths.push(writableRoots);
122
+ }
123
+ return paths;
124
+ }
125
+ /**
126
+ * Normalize a Codex content block to unified ContentBlock format
127
+ *
128
+ * Transforms Codex-specific content block formats to standardized format.
129
+ * Handles multiple block types:
130
+ * - String blocks → text blocks
131
+ * - input_text/output_text → text blocks
132
+ * - thinking blocks
133
+ * - tool_use blocks
134
+ * - tool_result blocks
135
+ * Returns null for invalid or unrecognized blocks.
136
+ *
137
+ * @param block - Codex content block to normalize (string, object, or other)
138
+ * @returns Normalized ContentBlock or null if block is invalid
139
+ */
140
+ normalizeCodexContentBlock(block) {
141
+ if (typeof block === 'string') {
142
+ return {
143
+ text: block,
144
+ type: 'text',
145
+ };
146
+ }
147
+ if (!block || typeof block !== 'object') {
148
+ return null;
149
+ }
150
+ const blockObj = block;
151
+ // Handle input_text/output_text types (Codex format)
152
+ if (blockObj.type === 'input_text' || blockObj.type === 'output_text') {
153
+ return this.normalizeInputTextBlock(blockObj);
154
+ }
155
+ // Handle thinking blocks
156
+ if (blockObj.type === 'thinking') {
157
+ return this.normalizeThinkingBlock(blockObj);
158
+ }
159
+ // Handle text blocks
160
+ if (blockObj.type === 'text') {
161
+ return this.normalizeTextBlock(blockObj);
162
+ }
163
+ // Handle tool_use blocks
164
+ if (blockObj.type === 'tool_use' || (blockObj.name && blockObj.input)) {
165
+ return this.normalizeToolUseBlock(blockObj);
166
+ }
167
+ // Handle tool_result blocks
168
+ if (blockObj.type === 'tool_result' || blockObj.tool_use_id) {
169
+ return this.normalizeToolResultBlock(blockObj);
170
+ }
171
+ // Default: treat as text
172
+ if (blockObj.text) {
173
+ return {
174
+ text: blockObj.text,
175
+ type: 'text',
176
+ };
177
+ }
178
+ return null;
179
+ }
180
+ /**
181
+ * Normalize Codex session data to unified session format
182
+ *
183
+ * Transforms raw Codex session structure to standardized format:
184
+ * 1. Extracts session metadata from session_meta entry
185
+ * 2. Transforms rawEntries to normalized messages
186
+ * 3. Extracts unique workspace paths from all entries
187
+ * 4. Combines tool use/result messages
188
+ * 5. Assigns turn IDs
189
+ *
190
+ * @param session - Raw Codex session object with rawEntries and metadata
191
+ * @returns Normalized session object with messages, metadata, and workspace paths
192
+ */
193
+ normalizeCodexSession(session) {
194
+ const rawEntries = session.rawEntries || [];
195
+ // Find session metadata
196
+ const sessionMeta = rawEntries.find((e) => e.type === 'session_meta');
197
+ const sessionPayload = sessionMeta?.payload || {};
198
+ // Transform raw entries to messages
199
+ const messages = this.transformCodexEntries(rawEntries);
200
+ // Extract unique workspace paths from rawEntries
201
+ const workspacePaths = new Set();
202
+ for (const entry of rawEntries) {
203
+ const payload = entry.payload;
204
+ const paths = this.extractWorkspacePathsFromPayload(payload);
205
+ for (const p of paths) {
206
+ workspacePaths.add(p);
207
+ }
208
+ }
209
+ return {
210
+ id: session.id,
211
+ messages,
212
+ metadata: {
213
+ // eslint-disable-next-line camelcase
214
+ cli_version: sessionPayload.cli_version,
215
+ git: sessionPayload.git,
216
+ // eslint-disable-next-line camelcase
217
+ model_provider: sessionPayload.model_provider,
218
+ originator: sessionPayload.originator,
219
+ source: sessionPayload.source,
220
+ },
221
+ timestamp: session.timestamp,
222
+ title: session.title || 'Codex Session',
223
+ type: 'Codex',
224
+ workspacePaths: [...workspacePaths].sort(),
225
+ };
226
+ }
227
+ /**
228
+ * Normalize input_text or output_text blocks to standard text format
229
+ *
230
+ * Extracts text content from Codex input_text or output_text blocks and
231
+ * converts them to the unified text content block format.
232
+ *
233
+ * @param blockObj - Codex input/output text block object
234
+ * @returns TextContentBlock with extracted text content
235
+ */
236
+ normalizeInputTextBlock(blockObj) {
237
+ return {
238
+ text: blockObj.text || '',
239
+ type: 'text',
240
+ };
241
+ }
242
+ /**
243
+ * Normalize standard text content blocks
244
+ *
245
+ * Extracts text field from a content block object and returns it in
246
+ * the standardized text content block format.
247
+ *
248
+ * @param blockObj - Content block object with text field
249
+ * @returns TextContentBlock with extracted text content
250
+ */
251
+ normalizeTextBlock(blockObj) {
252
+ return {
253
+ text: blockObj.text || '',
254
+ type: 'text',
255
+ };
256
+ }
257
+ /**
258
+ * Normalize thinking content blocks
259
+ *
260
+ * Extracts thinking content from block object, using either the thinking field
261
+ * or falling back to text field. Returns standardized thinking content block.
262
+ *
263
+ * @param blockObj - Content block object with thinking or text field
264
+ * @returns ThinkingContentBlock with extracted thinking content
265
+ */
266
+ normalizeThinkingBlock(blockObj) {
267
+ return {
268
+ thinking: blockObj.thinking || blockObj.text || '',
269
+ type: 'thinking',
270
+ };
271
+ }
272
+ /**
273
+ * Normalize tool result content blocks
274
+ *
275
+ * Extracts tool result data from block object, mapping content and tool_use_id
276
+ * fields to the standardized tool result format.
277
+ *
278
+ * @param blockObj - Tool result block object with content and tool_use_id
279
+ * @returns ToolResultContentBlock with extracted result data
280
+ */
281
+ normalizeToolResultBlock(blockObj) {
282
+ return {
283
+ content: blockObj.content || blockObj.text || '',
284
+ // eslint-disable-next-line camelcase
285
+ tool_use_id: blockObj.tool_use_id || '',
286
+ type: 'tool_result',
287
+ };
288
+ }
289
+ /**
290
+ * Normalize tool use content blocks
291
+ *
292
+ * Extracts tool invocation data from block object, mapping id, name, input,
293
+ * and tool_use_id fields to the standardized tool use format.
294
+ *
295
+ * @param blockObj - Tool use block object with tool invocation data
296
+ * @returns ToolUseContentBlock with extracted tool invocation data
297
+ */
298
+ normalizeToolUseBlock(blockObj) {
299
+ return {
300
+ id: blockObj.id || '',
301
+ input: blockObj.input || {},
302
+ name: blockObj.name || '',
303
+ // eslint-disable-next-line camelcase
304
+ tool_use_id: blockObj.tool_use_id || blockObj.id || '',
305
+ type: 'tool_use',
306
+ };
307
+ }
308
+ /**
309
+ * Parse tool input from payload supporting multiple Codex formats
310
+ *
311
+ * Extracts and normalizes tool input arguments from different payload formats:
312
+ * - custom_tool_call: wraps input in an object
313
+ * - function_call: parses arguments (string or object)
314
+ * Handles JSON parsing for stringified arguments with fallback to wrapped format.
315
+ *
316
+ * @param payload - Tool call payload with input or arguments field
317
+ * @returns Parsed tool input as object, empty object if no input found
318
+ */
319
+ parseToolInput(payload) {
320
+ if (payload.input !== undefined) {
321
+ // custom_tool_call: wrap input in an object
322
+ return typeof payload.input === 'string' ? { input: payload.input } : payload.input || {};
323
+ }
324
+ if (payload.arguments !== undefined) {
325
+ // function_call: arguments are already an object
326
+ if (typeof payload.arguments === 'string') {
327
+ try {
328
+ return JSON.parse(payload.arguments);
329
+ }
330
+ catch {
331
+ return { arguments: payload.arguments };
332
+ }
333
+ }
334
+ return payload.arguments || {};
335
+ }
336
+ return {};
337
+ }
338
+ /**
339
+ * Process message payload and append content blocks to array
340
+ *
341
+ * Extracts message content array from payload and processes each content block,
342
+ * appending normalized blocks to the provided content array.
343
+ *
344
+ * @param payload - Message payload object with content array
345
+ * @param content - Array to append processed content blocks to (modified in place)
346
+ */
347
+ processMessage(payload, content) {
348
+ const msgContent = payload.content || [];
349
+ content.push(...this.processMessageContent(msgContent));
350
+ }
351
+ /**
352
+ * Process and normalize message content blocks from array
353
+ *
354
+ * Iterates through message content array, normalizing each block to the
355
+ * unified ContentBlock format. Filters out any null results from normalization.
356
+ *
357
+ * @param msgContent - Array of raw message content blocks
358
+ * @returns Array of normalized ContentBlock objects
359
+ */
360
+ processMessageContent(msgContent) {
361
+ const content = [];
362
+ if (Array.isArray(msgContent)) {
363
+ for (const block of msgContent) {
364
+ const contentBlock = this.normalizeCodexContentBlock(block);
365
+ if (contentBlock) {
366
+ content.push(contentBlock);
367
+ }
368
+ }
369
+ }
370
+ return content;
371
+ }
372
+ /**
373
+ * Process reasoning payload and append thinking blocks to content array
374
+ *
375
+ * Extracts summary array from reasoning payload and processes it into
376
+ * thinking content blocks, appending them to the provided content array.
377
+ *
378
+ * @param payload - Reasoning payload object with summary array
379
+ * @param content - Array to append thinking blocks to (modified in place)
380
+ */
381
+ processReasoning(payload, content) {
382
+ const summary = payload.summary || [];
383
+ content.push(...this.processReasoningContent(summary));
384
+ }
385
+ /**
386
+ * Process reasoning summary into thinking content blocks
387
+ *
388
+ * Extracts text from summary_text type blocks in the summary array and
389
+ * converts them to thinking content blocks.
390
+ *
391
+ * @param summary - Array of summary blocks from reasoning payload
392
+ * @returns Array of ThinkingContentBlock objects extracted from summary
393
+ */
394
+ processReasoningContent(summary) {
395
+ const content = [];
396
+ if (Array.isArray(summary)) {
397
+ for (const block of summary) {
398
+ if (block.type === 'summary_text' && block.text) {
399
+ content.push({
400
+ thinking: block.text,
401
+ type: 'thinking',
402
+ });
403
+ }
404
+ }
405
+ }
406
+ return content;
407
+ }
408
+ /**
409
+ * Process Codex response item into a CleanMessage
410
+ *
411
+ * Transforms a Codex raw entry (response_item) into a normalized message.
412
+ * Handles different item types:
413
+ * - custom_tool_call/function_call → tool use blocks (assistant)
414
+ * - custom_tool_call_output/function_call_output → tool result blocks (assistant)
415
+ * - message → text content (user or assistant based on role)
416
+ * - reasoning → thinking blocks (assistant)
417
+ * Returns null if no content blocks are generated.
418
+ *
419
+ * @param item - Codex raw entry to process
420
+ * @returns CleanMessage with type, content, and timestamp, or null if no content
421
+ */
422
+ processResponseItem(item) {
423
+ const payload = item.payload;
424
+ const itemType = payload.type;
425
+ const role = payload.role || 'assistant';
426
+ const timestampIso = typeof item.timestamp === 'string' ? item.timestamp : new Date(item.timestamp).toISOString();
427
+ let messageType = role;
428
+ const content = [];
429
+ switch (itemType) {
430
+ case 'custom_tool_call':
431
+ case 'function_call': {
432
+ this.processToolCall(payload, content);
433
+ messageType = 'assistant';
434
+ break;
435
+ }
436
+ case 'custom_tool_call_output':
437
+ case 'function_call_output': {
438
+ this.processToolOutput(payload, content);
439
+ messageType = 'assistant';
440
+ break;
441
+ }
442
+ case 'message': {
443
+ messageType = payload.role || 'assistant';
444
+ this.processMessage(payload, content);
445
+ break;
446
+ }
447
+ case 'reasoning': {
448
+ this.processReasoning(payload, content);
449
+ messageType = 'assistant';
450
+ break;
451
+ }
452
+ }
453
+ if (content.length === 0) {
454
+ return null;
455
+ }
456
+ return {
457
+ content,
458
+ timestamp: timestampIso,
459
+ type: messageType,
460
+ };
461
+ }
462
+ /**
463
+ * Process tool call payload and append tool use block to content
464
+ *
465
+ * Parses tool input from payload and creates a tool_use content block with
466
+ * call ID, input, and tool name. Appends the block to the provided array.
467
+ *
468
+ * @param payload - Tool call payload with name, input/arguments, and call_id
469
+ * @param content - Array to append tool use block to (modified in place)
470
+ */
471
+ processToolCall(payload, content) {
472
+ const toolInput = this.parseToolInput(payload);
473
+ content.push({
474
+ id: payload.call_id || payload.tool_call_id || '',
475
+ input: toolInput,
476
+ name: payload.name || '',
477
+ // eslint-disable-next-line camelcase
478
+ tool_use_id: payload.call_id || payload.tool_call_id || '',
479
+ type: 'tool_use',
480
+ });
481
+ }
482
+ /**
483
+ * Process tool output payload and append tool result block to content
484
+ *
485
+ * Extracts tool execution output from payload and creates a tool_result
486
+ * content block with the output content and tool_use_id. Appends the block
487
+ * to the provided array.
488
+ *
489
+ * @param payload - Tool output payload with output field and call_id
490
+ * @param content - Array to append tool result block to (modified in place)
491
+ */
492
+ processToolOutput(payload, content) {
493
+ const outputContent = this.extractToolOutput(payload);
494
+ content.push({
495
+ content: outputContent,
496
+ // eslint-disable-next-line camelcase
497
+ tool_use_id: payload.call_id || payload.tool_call_id || '',
498
+ type: 'tool_result',
499
+ });
500
+ }
501
+ /**
502
+ * Transform Codex rawEntries to unified message format with turn IDs
503
+ *
504
+ * Performs complete transformation pipeline:
505
+ * 1. Filters out event_msg and turn_context entries
506
+ * 2. Processes each response_item into a message
507
+ * 3. Sorts messages by timestamp
508
+ * 4. Combines tool_use and tool_result messages
509
+ * 5. Assigns turn IDs to all messages
510
+ *
511
+ * @param rawEntries - Array of Codex raw entries from session
512
+ * @returns Array of CleanMessage objects with turn IDs and combined tool blocks
513
+ */
514
+ transformCodexEntries(rawEntries) {
515
+ // Filter out event_msg and turn_context entries - keep only response_item and session_meta
516
+ const filteredEntries = rawEntries.filter((entry) => entry.type !== 'event_msg' && entry.type !== 'turn_context');
517
+ const responseItems = filteredEntries.filter((e) => e.type === 'response_item');
518
+ const messages = [];
519
+ // Process each response item into its own message
520
+ for (const item of responseItems) {
521
+ const message = this.processResponseItem(item);
522
+ if (message) {
523
+ messages.push(message);
524
+ }
525
+ }
526
+ // Sort messages by timestamp
527
+ messages.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
528
+ // Combine tool_use and tool_result messages
529
+ const combinedMessages = combineToolResults(messages);
530
+ // Add turn_id
531
+ const finalMessages = addTurnIds(combinedMessages);
532
+ return finalMessages;
533
+ }
534
+ }