@nervekit/orchestrator 0.1.0 → 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 (546) hide show
  1. package/dist/{server.d.ts → app/orchestrator-state.d.ts} +11 -17
  2. package/dist/app/orchestrator-state.d.ts.map +1 -0
  3. package/dist/app/orchestrator-state.js +105 -0
  4. package/dist/app/orchestrator-state.js.map +1 -0
  5. package/dist/app/server.d.ts +5 -0
  6. package/dist/app/server.d.ts.map +1 -0
  7. package/dist/{server.js → app/server.js} +6 -112
  8. package/dist/app/server.js.map +1 -0
  9. package/dist/app/version.d.ts.map +1 -0
  10. package/dist/app/version.js.map +1 -0
  11. package/dist/domains/agents/agent-lifecycle.service.d.ts +1 -1
  12. package/dist/domains/agents/agent-lifecycle.service.d.ts.map +1 -1
  13. package/dist/domains/agents/prompting/index.d.ts +4 -0
  14. package/dist/domains/agents/prompting/index.d.ts.map +1 -0
  15. package/dist/domains/agents/prompting/index.js +4 -0
  16. package/dist/domains/agents/prompting/index.js.map +1 -0
  17. package/dist/domains/agents/prompting/nerve-system-prompt.d.ts.map +1 -0
  18. package/dist/{nerve-system-prompt.js → domains/agents/prompting/nerve-system-prompt.js} +4 -2
  19. package/dist/domains/agents/prompting/nerve-system-prompt.js.map +1 -0
  20. package/dist/domains/agents/prompting/prompt-text.d.ts.map +1 -0
  21. package/dist/domains/agents/prompting/prompt-text.js.map +1 -0
  22. package/dist/domains/agents/prompting/resource-loader.d.ts.map +1 -0
  23. package/dist/{resource-loader.js → domains/agents/prompting/resource-loader.js} +1 -1
  24. package/dist/domains/agents/prompting/resource-loader.js.map +1 -0
  25. package/dist/domains/agents/run/agent-run-session.d.ts.map +1 -1
  26. package/dist/domains/agents/run/agent-run-session.js +28 -3
  27. package/dist/domains/agents/run/agent-run-session.js.map +1 -1
  28. package/dist/domains/agents/run/agent-runner.d.ts +18 -7
  29. package/dist/domains/agents/run/agent-runner.d.ts.map +1 -1
  30. package/dist/domains/agents/run/agent-runner.js +30 -83
  31. package/dist/domains/agents/run/agent-runner.js.map +1 -1
  32. package/dist/domains/agents/run/auto-compaction-runner.d.ts +19 -0
  33. package/dist/domains/agents/run/auto-compaction-runner.d.ts.map +1 -0
  34. package/dist/domains/agents/run/auto-compaction-runner.js +105 -0
  35. package/dist/domains/agents/run/auto-compaction-runner.js.map +1 -0
  36. package/dist/domains/agents/run/explore-helpers.d.ts.map +1 -1
  37. package/dist/domains/agents/run/explore-helpers.js +73 -16
  38. package/dist/domains/agents/run/explore-helpers.js.map +1 -1
  39. package/dist/domains/agents/run/inline-command-results.d.ts +8 -0
  40. package/dist/domains/agents/run/inline-command-results.d.ts.map +1 -0
  41. package/dist/domains/agents/run/inline-command-results.js +108 -0
  42. package/dist/domains/agents/run/inline-command-results.js.map +1 -0
  43. package/dist/domains/agents/run/inline-command-runner.d.ts +19 -0
  44. package/dist/domains/agents/run/inline-command-runner.d.ts.map +1 -0
  45. package/dist/domains/agents/run/inline-command-runner.js +168 -0
  46. package/dist/domains/agents/run/inline-command-runner.js.map +1 -0
  47. package/dist/domains/agents/run/interrupted-run-recovery.d.ts +1 -1
  48. package/dist/domains/agents/run/interrupted-run-recovery.d.ts.map +1 -1
  49. package/dist/domains/agents/run/subagent-runner.d.ts +4 -2
  50. package/dist/domains/agents/run/subagent-runner.d.ts.map +1 -1
  51. package/dist/domains/agents/run/subagent-runner.js +13 -7
  52. package/dist/domains/agents/run/subagent-runner.js.map +1 -1
  53. package/dist/domains/agents/run/system-prompt-builder.d.ts +1 -1
  54. package/dist/domains/agents/run/system-prompt-builder.d.ts.map +1 -1
  55. package/dist/domains/agents/run/system-prompt-builder.js +2 -2
  56. package/dist/domains/agents/run/system-prompt-builder.js.map +1 -1
  57. package/dist/domains/agents/run/tool-draft-progress.d.ts +4 -0
  58. package/dist/domains/agents/run/tool-draft-progress.d.ts.map +1 -1
  59. package/dist/domains/agents/run/tool-draft-progress.js +114 -2
  60. package/dist/domains/agents/run/tool-draft-progress.js.map +1 -1
  61. package/dist/{auth.d.ts → domains/auth/auth-manager.d.ts} +2 -2
  62. package/dist/domains/auth/auth-manager.d.ts.map +1 -0
  63. package/dist/{auth.js → domains/auth/auth-manager.js} +1 -1
  64. package/dist/domains/auth/auth-manager.js.map +1 -0
  65. package/dist/{credential-crypto.d.ts → domains/auth/credential-key.service.d.ts} +1 -1
  66. package/dist/domains/auth/credential-key.service.d.ts.map +1 -0
  67. package/dist/{credential-crypto.js → domains/auth/credential-key.service.js} +2 -2
  68. package/dist/domains/auth/credential-key.service.js.map +1 -0
  69. package/dist/domains/auth/index.d.ts +4 -0
  70. package/dist/domains/auth/index.d.ts.map +1 -0
  71. package/dist/domains/auth/index.js +4 -0
  72. package/dist/domains/auth/index.js.map +1 -0
  73. package/dist/{oauth-flow.d.ts → domains/auth/oauth-flow-manager.d.ts} +3 -3
  74. package/dist/domains/auth/oauth-flow-manager.d.ts.map +1 -0
  75. package/dist/{oauth-flow.js → domains/auth/oauth-flow-manager.js} +2 -2
  76. package/dist/domains/auth/oauth-flow-manager.js.map +1 -0
  77. package/dist/domains/conversations/conversation-lifecycle.service.d.ts +1 -1
  78. package/dist/domains/conversations/conversation-lifecycle.service.d.ts.map +1 -1
  79. package/dist/domains/conversations/conversation-lifecycle.service.js +21 -4
  80. package/dist/domains/conversations/conversation-lifecycle.service.js.map +1 -1
  81. package/dist/domains/conversations/conversation-query.service.d.ts +2 -2
  82. package/dist/domains/conversations/conversation-query.service.d.ts.map +1 -1
  83. package/dist/domains/conversations/conversation-query.service.js +6 -2
  84. package/dist/domains/conversations/conversation-query.service.js.map +1 -1
  85. package/dist/domains/conversations/conversation-runtime.d.ts +2 -0
  86. package/dist/domains/conversations/conversation-runtime.d.ts.map +1 -1
  87. package/dist/domains/conversations/conversation-runtime.js +36 -2
  88. package/dist/domains/conversations/conversation-runtime.js.map +1 -1
  89. package/dist/domains/conversations/operations/import-service.d.ts.map +1 -1
  90. package/dist/domains/conversations/operations/import-service.js +1 -0
  91. package/dist/domains/conversations/operations/import-service.js.map +1 -1
  92. package/dist/domains/git/git-service.d.ts +1 -0
  93. package/dist/domains/git/git-service.d.ts.map +1 -1
  94. package/dist/domains/git/git-service.js +53 -0
  95. package/dist/domains/git/git-service.js.map +1 -1
  96. package/dist/domains/human-input/human-input-resolution.service.d.ts +1 -1
  97. package/dist/domains/human-input/human-input-resolution.service.d.ts.map +1 -1
  98. package/dist/domains/pinned-commands/pinned-command.service.d.ts +3 -1
  99. package/dist/domains/pinned-commands/pinned-command.service.d.ts.map +1 -1
  100. package/dist/domains/pinned-commands/pinned-command.service.js +26 -3
  101. package/dist/domains/pinned-commands/pinned-command.service.js.map +1 -1
  102. package/dist/domains/plans/plan-service.d.ts +2 -0
  103. package/dist/domains/plans/plan-service.d.ts.map +1 -1
  104. package/dist/domains/plans/plan-service.js +31 -6
  105. package/dist/domains/plans/plan-service.js.map +1 -1
  106. package/dist/domains/projects/prune-conversations.service.d.ts +1 -1
  107. package/dist/domains/projects/prune-conversations.service.d.ts.map +1 -1
  108. package/dist/domains/tasks/index.d.ts +1 -0
  109. package/dist/domains/tasks/index.d.ts.map +1 -1
  110. package/dist/domains/tasks/index.js +1 -0
  111. package/dist/domains/tasks/index.js.map +1 -1
  112. package/dist/domains/tasks/task-launch-config.store.d.ts +1 -1
  113. package/dist/domains/tasks/task-launch-config.store.d.ts.map +1 -1
  114. package/dist/domains/tasks/task-manager-foreground.d.ts.map +1 -1
  115. package/dist/domains/tasks/task-manager-foreground.js +4 -1
  116. package/dist/domains/tasks/task-manager-foreground.js.map +1 -1
  117. package/dist/domains/tasks/task-manager-orphan.d.ts +4 -1
  118. package/dist/domains/tasks/task-manager-orphan.d.ts.map +1 -1
  119. package/dist/domains/tasks/task-manager-orphan.js +100 -1
  120. package/dist/domains/tasks/task-manager-orphan.js.map +1 -1
  121. package/dist/domains/tasks/task-manager-start.d.ts.map +1 -1
  122. package/dist/domains/tasks/task-manager-start.js +46 -0
  123. package/dist/domains/tasks/task-manager-start.js.map +1 -1
  124. package/dist/domains/tasks/task-manager.d.ts +26 -4
  125. package/dist/domains/tasks/task-manager.d.ts.map +1 -1
  126. package/dist/domains/tasks/task-manager.js +10 -1
  127. package/dist/domains/tasks/task-manager.js.map +1 -1
  128. package/dist/domains/tasks/task-notification.service.d.ts +2 -2
  129. package/dist/domains/tasks/task-notification.service.d.ts.map +1 -1
  130. package/dist/domains/tasks/task-port-inspector.d.ts +7 -0
  131. package/dist/domains/tasks/task-port-inspector.d.ts.map +1 -0
  132. package/dist/domains/tasks/task-port-inspector.js +286 -0
  133. package/dist/domains/tasks/task-port-inspector.js.map +1 -0
  134. package/dist/domains/tasks/task-summary-format.d.ts +1 -0
  135. package/dist/domains/tasks/task-summary-format.d.ts.map +1 -1
  136. package/dist/domains/tasks/task-summary-format.js +14 -0
  137. package/dist/domains/tasks/task-summary-format.js.map +1 -1
  138. package/dist/domains/tasks/task-supervisor.d.ts +3 -1
  139. package/dist/domains/tasks/task-supervisor.d.ts.map +1 -1
  140. package/dist/domains/tasks/task-supervisor.js +15 -1
  141. package/dist/domains/tasks/task-supervisor.js.map +1 -1
  142. package/dist/domains/tools/agent-tool-adapter.d.ts.map +1 -1
  143. package/dist/domains/tools/agent-tool-adapter.js +1 -2
  144. package/dist/domains/tools/agent-tool-adapter.js.map +1 -1
  145. package/dist/domains/tools/orchestration-tool-dispatcher-handlers.d.ts.map +1 -1
  146. package/dist/domains/tools/orchestration-tool-dispatcher-handlers.js +24 -4
  147. package/dist/domains/tools/orchestration-tool-dispatcher-handlers.js.map +1 -1
  148. package/dist/domains/tools/orchestration-tool-dispatcher.d.ts.map +1 -1
  149. package/dist/domains/tools/orchestration-tool-dispatcher.js +3 -1
  150. package/dist/domains/tools/orchestration-tool-dispatcher.js.map +1 -1
  151. package/dist/domains/tools/tool-call-transcript-preview.d.ts +3 -0
  152. package/dist/domains/tools/tool-call-transcript-preview.d.ts.map +1 -0
  153. package/dist/domains/tools/tool-call-transcript-preview.js +442 -0
  154. package/dist/domains/tools/tool-call-transcript-preview.js.map +1 -0
  155. package/dist/domains/tools/tool-call.repository.d.ts.map +1 -1
  156. package/dist/domains/tools/tool-call.repository.js +6 -9
  157. package/dist/domains/tools/tool-call.repository.js.map +1 -1
  158. package/dist/domains/tools/tool-executor.service.d.ts +1 -1
  159. package/dist/domains/tools/tool-executor.service.d.ts.map +1 -1
  160. package/dist/domains/tools/tool-executor.service.js +3 -2
  161. package/dist/domains/tools/tool-executor.service.js.map +1 -1
  162. package/dist/domains/tools/tool-result-bounds.d.ts.map +1 -1
  163. package/dist/domains/tools/tool-result-bounds.js +23 -9
  164. package/dist/domains/tools/tool-result-bounds.js.map +1 -1
  165. package/dist/domains/tools/tool-result-model-limits.d.ts +2 -0
  166. package/dist/domains/tools/tool-result-model-limits.d.ts.map +1 -0
  167. package/dist/domains/tools/tool-result-model-limits.js +84 -0
  168. package/dist/domains/tools/tool-result-model-limits.js.map +1 -0
  169. package/dist/domains/tools/tool-service.d.ts +6 -2
  170. package/dist/domains/tools/tool-service.d.ts.map +1 -1
  171. package/dist/domains/tools/tool-service.js +2 -1
  172. package/dist/domains/tools/tool-service.js.map +1 -1
  173. package/dist/domains/transcription/transcription.service.d.ts +1 -1
  174. package/dist/domains/transcription/transcription.service.d.ts.map +1 -1
  175. package/dist/domains/transcription/transcription.service.js.map +1 -1
  176. package/dist/domains/usage/subscription-usage-service.d.ts +1 -1
  177. package/dist/domains/usage/subscription-usage-service.d.ts.map +1 -1
  178. package/dist/http/request-context.d.ts +1 -1
  179. package/dist/http/request-context.d.ts.map +1 -1
  180. package/dist/http/static-files.d.ts +1 -1
  181. package/dist/http/static-files.d.ts.map +1 -1
  182. package/dist/index.d.ts +3 -1
  183. package/dist/index.d.ts.map +1 -1
  184. package/dist/index.js +3 -1
  185. package/dist/index.js.map +1 -1
  186. package/dist/infrastructure/diagnostics/crash-reports.d.ts +14 -0
  187. package/dist/infrastructure/diagnostics/crash-reports.d.ts.map +1 -0
  188. package/dist/infrastructure/diagnostics/crash-reports.js +199 -0
  189. package/dist/infrastructure/diagnostics/crash-reports.js.map +1 -0
  190. package/dist/infrastructure/diagnostics/index.d.ts +3 -0
  191. package/dist/infrastructure/diagnostics/index.d.ts.map +1 -0
  192. package/dist/infrastructure/diagnostics/index.js +3 -0
  193. package/dist/infrastructure/diagnostics/index.js.map +1 -0
  194. package/dist/infrastructure/diagnostics/logging.d.ts.map +1 -0
  195. package/dist/{logging.js → infrastructure/diagnostics/logging.js} +1 -1
  196. package/dist/infrastructure/diagnostics/logging.js.map +1 -0
  197. package/dist/{secrets.d.ts → infrastructure/secrets/index.d.ts} +1 -1
  198. package/dist/infrastructure/secrets/index.d.ts.map +1 -0
  199. package/dist/{secrets.js → infrastructure/secrets/index.js} +2 -2
  200. package/dist/infrastructure/secrets/index.js.map +1 -0
  201. package/dist/main.js +43 -7
  202. package/dist/main.js.map +1 -1
  203. package/dist/routes/agent-routes.d.ts +1 -1
  204. package/dist/routes/agent-routes.d.ts.map +1 -1
  205. package/dist/routes/agent-routes.js.map +1 -1
  206. package/dist/routes/auth-routes.d.ts +1 -1
  207. package/dist/routes/auth-routes.d.ts.map +1 -1
  208. package/dist/routes/auth-routes.js.map +1 -1
  209. package/dist/routes/completion-routes.d.ts +1 -1
  210. package/dist/routes/completion-routes.d.ts.map +1 -1
  211. package/dist/routes/completion-routes.js.map +1 -1
  212. package/dist/routes/conversation-routes.d.ts +1 -1
  213. package/dist/routes/conversation-routes.d.ts.map +1 -1
  214. package/dist/routes/conversation-routes.js.map +1 -1
  215. package/dist/routes/filesystem-routes.d.ts +1 -1
  216. package/dist/routes/filesystem-routes.d.ts.map +1 -1
  217. package/dist/routes/filesystem-routes.js.map +1 -1
  218. package/dist/routes/git-routes.d.ts +1 -1
  219. package/dist/routes/git-routes.d.ts.map +1 -1
  220. package/dist/routes/git-routes.js +4 -0
  221. package/dist/routes/git-routes.js.map +1 -1
  222. package/dist/routes/index.d.ts +1 -1
  223. package/dist/routes/index.d.ts.map +1 -1
  224. package/dist/routes/log-routes.d.ts +1 -1
  225. package/dist/routes/log-routes.d.ts.map +1 -1
  226. package/dist/routes/log-routes.js.map +1 -1
  227. package/dist/routes/model-routes.d.ts +1 -1
  228. package/dist/routes/model-routes.d.ts.map +1 -1
  229. package/dist/routes/project-routes.d.ts +1 -1
  230. package/dist/routes/project-routes.d.ts.map +1 -1
  231. package/dist/routes/project-routes.js +7 -1
  232. package/dist/routes/project-routes.js.map +1 -1
  233. package/dist/routes/provider-catalog-routes.d.ts +1 -1
  234. package/dist/routes/provider-catalog-routes.d.ts.map +1 -1
  235. package/dist/routes/provider-catalog-routes.js +1 -1
  236. package/dist/routes/provider-catalog-routes.js.map +1 -1
  237. package/dist/routes/settings-routes.d.ts +1 -1
  238. package/dist/routes/settings-routes.d.ts.map +1 -1
  239. package/dist/routes/settings-routes.js.map +1 -1
  240. package/dist/routes/status-routes.d.ts +1 -1
  241. package/dist/routes/status-routes.d.ts.map +1 -1
  242. package/dist/routes/status-routes.js +1 -1
  243. package/dist/routes/status-routes.js.map +1 -1
  244. package/dist/routes/storage-routes.d.ts +1 -1
  245. package/dist/routes/storage-routes.d.ts.map +1 -1
  246. package/dist/routes/storage-routes.js.map +1 -1
  247. package/dist/routes/task-routes.d.ts +1 -1
  248. package/dist/routes/task-routes.d.ts.map +1 -1
  249. package/dist/routes/task-routes.js.map +1 -1
  250. package/dist/routes/tool-routes.d.ts +1 -1
  251. package/dist/routes/tool-routes.d.ts.map +1 -1
  252. package/dist/routes/tool-routes.js +47 -19
  253. package/dist/routes/tool-routes.js.map +1 -1
  254. package/dist/routes/transcription-routes.d.ts +1 -1
  255. package/dist/routes/transcription-routes.d.ts.map +1 -1
  256. package/dist/routes/transcription-routes.js.map +1 -1
  257. package/dist/routes/worker-routes.d.ts +1 -1
  258. package/dist/routes/worker-routes.d.ts.map +1 -1
  259. package/dist/routes/worker-routes.js.map +1 -1
  260. package/dist/runtime/runtime-composition.d.ts +3 -3
  261. package/dist/runtime/runtime-composition.d.ts.map +1 -1
  262. package/dist/runtime/runtime-composition.js.map +1 -1
  263. package/dist/{registry.d.ts → runtime/runtime-registry.d.ts} +159 -44
  264. package/dist/runtime/runtime-registry.d.ts.map +1 -0
  265. package/dist/{registry.js → runtime/runtime-registry.js} +7 -12
  266. package/dist/runtime/runtime-registry.js.map +1 -0
  267. package/dist/runtime/runtime-state.d.ts +3 -2
  268. package/dist/runtime/runtime-state.d.ts.map +1 -1
  269. package/dist/runtime/types.d.ts.map +1 -0
  270. package/dist/{registry → runtime}/types.js.map +1 -1
  271. package/dist/web/assets/{dist-DVpGQCt0.js → dist-DuVh-9Yy.js} +1 -1
  272. package/dist/web/assets/index-bmeeVJYV.css +2 -0
  273. package/dist/web/assets/index-hdM6dgBG.js +192 -0
  274. package/dist/web/index.html +2 -2
  275. package/dist/web/sw.js +1 -1
  276. package/package.json +4 -4
  277. package/dist/agent-process.d.ts +0 -32
  278. package/dist/agent-process.d.ts.map +0 -1
  279. package/dist/agent-process.js +0 -129
  280. package/dist/agent-process.js.map +0 -1
  281. package/dist/agent-runner/agent-runner.d.ts +0 -65
  282. package/dist/agent-runner/agent-runner.d.ts.map +0 -1
  283. package/dist/agent-runner/agent-runner.js +0 -802
  284. package/dist/agent-runner/agent-runner.js.map +0 -1
  285. package/dist/agent-runner/index.d.ts +0 -6
  286. package/dist/agent-runner/index.d.ts.map +0 -1
  287. package/dist/agent-runner/index.js +0 -4
  288. package/dist/agent-runner/index.js.map +0 -1
  289. package/dist/agent-runner/message-mirror.d.ts +0 -44
  290. package/dist/agent-runner/message-mirror.d.ts.map +0 -1
  291. package/dist/agent-runner/message-mirror.js +0 -154
  292. package/dist/agent-runner/message-mirror.js.map +0 -1
  293. package/dist/agent-runner/run-state.d.ts +0 -12
  294. package/dist/agent-runner/run-state.d.ts.map +0 -1
  295. package/dist/agent-runner/run-state.js +0 -2
  296. package/dist/agent-runner/run-state.js.map +0 -1
  297. package/dist/agent-runner/subagent-runner.d.ts +0 -29
  298. package/dist/agent-runner/subagent-runner.d.ts.map +0 -1
  299. package/dist/agent-runner/subagent-runner.js +0 -84
  300. package/dist/agent-runner/subagent-runner.js.map +0 -1
  301. package/dist/agent-runner/system-prompt-builder.d.ts +0 -19
  302. package/dist/agent-runner/system-prompt-builder.d.ts.map +0 -1
  303. package/dist/agent-runner/system-prompt-builder.js +0 -35
  304. package/dist/agent-runner/system-prompt-builder.js.map +0 -1
  305. package/dist/agent-runner/tool-draft-streaming.d.ts +0 -2
  306. package/dist/agent-runner/tool-draft-streaming.d.ts.map +0 -1
  307. package/dist/agent-runner/tool-draft-streaming.js +0 -5
  308. package/dist/agent-runner/tool-draft-streaming.js.map +0 -1
  309. package/dist/agent-suspension-service.d.ts +0 -44
  310. package/dist/agent-suspension-service.d.ts.map +0 -1
  311. package/dist/agent-suspension-service.js +0 -96
  312. package/dist/agent-suspension-service.js.map +0 -1
  313. package/dist/agent-tool-adapter.d.ts +0 -20
  314. package/dist/agent-tool-adapter.d.ts.map +0 -1
  315. package/dist/agent-tool-adapter.js +0 -215
  316. package/dist/agent-tool-adapter.js.map +0 -1
  317. package/dist/agents/agent-authority.d.ts +0 -5
  318. package/dist/agents/agent-authority.d.ts.map +0 -1
  319. package/dist/agents/agent-authority.js +0 -28
  320. package/dist/agents/agent-authority.js.map +0 -1
  321. package/dist/agents/agent-budget.d.ts +0 -3
  322. package/dist/agents/agent-budget.d.ts.map +0 -1
  323. package/dist/agents/agent-budget.js +0 -17
  324. package/dist/agents/agent-budget.js.map +0 -1
  325. package/dist/agents/agent-status.d.ts +0 -4
  326. package/dist/agents/agent-status.d.ts.map +0 -1
  327. package/dist/agents/agent-status.js +0 -10
  328. package/dist/agents/agent-status.js.map +0 -1
  329. package/dist/auth.d.ts.map +0 -1
  330. package/dist/auth.js.map +0 -1
  331. package/dist/conversation-operations/compaction-service.d.ts +0 -37
  332. package/dist/conversation-operations/compaction-service.d.ts.map +0 -1
  333. package/dist/conversation-operations/compaction-service.js +0 -102
  334. package/dist/conversation-operations/compaction-service.js.map +0 -1
  335. package/dist/conversation-operations/export-service.d.ts +0 -22
  336. package/dist/conversation-operations/export-service.d.ts.map +0 -1
  337. package/dist/conversation-operations/export-service.js +0 -79
  338. package/dist/conversation-operations/export-service.js.map +0 -1
  339. package/dist/conversation-operations/import-service.d.ts +0 -20
  340. package/dist/conversation-operations/import-service.d.ts.map +0 -1
  341. package/dist/conversation-operations/import-service.js +0 -97
  342. package/dist/conversation-operations/import-service.js.map +0 -1
  343. package/dist/conversation-operations/index.d.ts +0 -8
  344. package/dist/conversation-operations/index.d.ts.map +0 -1
  345. package/dist/conversation-operations/index.js +0 -6
  346. package/dist/conversation-operations/index.js.map +0 -1
  347. package/dist/conversation-operations/navigation-service.d.ts +0 -18
  348. package/dist/conversation-operations/navigation-service.d.ts.map +0 -1
  349. package/dist/conversation-operations/navigation-service.js +0 -102
  350. package/dist/conversation-operations/navigation-service.js.map +0 -1
  351. package/dist/conversation-operations/summary.d.ts +0 -11
  352. package/dist/conversation-operations/summary.d.ts.map +0 -1
  353. package/dist/conversation-operations/summary.js +0 -29
  354. package/dist/conversation-operations/summary.js.map +0 -1
  355. package/dist/conversation-runtime.d.ts +0 -96
  356. package/dist/conversation-runtime.d.ts.map +0 -1
  357. package/dist/conversation-runtime.js +0 -363
  358. package/dist/conversation-runtime.js.map +0 -1
  359. package/dist/conversation-service.d.ts +0 -17
  360. package/dist/conversation-service.d.ts.map +0 -1
  361. package/dist/conversation-service.js +0 -56
  362. package/dist/conversation-service.js.map +0 -1
  363. package/dist/credential-crypto.d.ts.map +0 -1
  364. package/dist/credential-crypto.js.map +0 -1
  365. package/dist/domains/processes/index.d.ts +0 -10
  366. package/dist/domains/processes/index.d.ts.map +0 -1
  367. package/dist/domains/processes/index.js +0 -7
  368. package/dist/domains/processes/index.js.map +0 -1
  369. package/dist/domains/processes/process-launch-config.store.d.ts +0 -21
  370. package/dist/domains/processes/process-launch-config.store.d.ts.map +0 -1
  371. package/dist/domains/processes/process-launch-config.store.js +0 -49
  372. package/dist/domains/processes/process-launch-config.store.js.map +0 -1
  373. package/dist/domains/processes/process-log.service.d.ts +0 -25
  374. package/dist/domains/processes/process-log.service.d.ts.map +0 -1
  375. package/dist/domains/processes/process-log.service.js +0 -155
  376. package/dist/domains/processes/process-log.service.js.map +0 -1
  377. package/dist/domains/processes/process-manager.d.ts +0 -107
  378. package/dist/domains/processes/process-manager.d.ts.map +0 -1
  379. package/dist/domains/processes/process-manager.js +0 -814
  380. package/dist/domains/processes/process-manager.js.map +0 -1
  381. package/dist/domains/processes/process-readiness.service.d.ts +0 -7
  382. package/dist/domains/processes/process-readiness.service.d.ts.map +0 -1
  383. package/dist/domains/processes/process-readiness.service.js +0 -26
  384. package/dist/domains/processes/process-readiness.service.js.map +0 -1
  385. package/dist/domains/processes/process-status.d.ts +0 -5
  386. package/dist/domains/processes/process-status.d.ts.map +0 -1
  387. package/dist/domains/processes/process-status.js +0 -13
  388. package/dist/domains/processes/process-status.js.map +0 -1
  389. package/dist/domains/processes/process-supervisor.d.ts +0 -34
  390. package/dist/domains/processes/process-supervisor.d.ts.map +0 -1
  391. package/dist/domains/processes/process-supervisor.js +0 -211
  392. package/dist/domains/processes/process-supervisor.js.map +0 -1
  393. package/dist/domains/processes/process.repository.d.ts +0 -11
  394. package/dist/domains/processes/process.repository.d.ts.map +0 -1
  395. package/dist/domains/processes/process.repository.js +0 -31
  396. package/dist/domains/processes/process.repository.js.map +0 -1
  397. package/dist/domains/tasks/task-completion.service.d.ts +0 -31
  398. package/dist/domains/tasks/task-completion.service.d.ts.map +0 -1
  399. package/dist/domains/tasks/task-completion.service.js +0 -147
  400. package/dist/domains/tasks/task-completion.service.js.map +0 -1
  401. package/dist/domains/tasks/task-legacy-migration.d.ts +0 -15
  402. package/dist/domains/tasks/task-legacy-migration.d.ts.map +0 -1
  403. package/dist/domains/tasks/task-legacy-migration.js +0 -191
  404. package/dist/domains/tasks/task-legacy-migration.js.map +0 -1
  405. package/dist/events.d.ts +0 -2
  406. package/dist/events.d.ts.map +0 -1
  407. package/dist/events.js +0 -2
  408. package/dist/events.js.map +0 -1
  409. package/dist/git/git-service.d.ts +0 -51
  410. package/dist/git/git-service.d.ts.map +0 -1
  411. package/dist/git/git-service.js +0 -716
  412. package/dist/git/git-service.js.map +0 -1
  413. package/dist/git/git-status.d.ts +0 -24
  414. package/dist/git/git-status.d.ts.map +0 -1
  415. package/dist/git/git-status.js +0 -133
  416. package/dist/git/git-status.js.map +0 -1
  417. package/dist/harness-manager.d.ts +0 -21
  418. package/dist/harness-manager.d.ts.map +0 -1
  419. package/dist/harness-manager.js +0 -105
  420. package/dist/harness-manager.js.map +0 -1
  421. package/dist/index-store.d.ts +0 -2
  422. package/dist/index-store.d.ts.map +0 -1
  423. package/dist/index-store.js +0 -2
  424. package/dist/index-store.js.map +0 -1
  425. package/dist/logging.d.ts.map +0 -1
  426. package/dist/logging.js.map +0 -1
  427. package/dist/nerve-system-prompt.d.ts.map +0 -1
  428. package/dist/nerve-system-prompt.js.map +0 -1
  429. package/dist/oauth-flow.d.ts.map +0 -1
  430. package/dist/oauth-flow.js.map +0 -1
  431. package/dist/plan-paths.d.ts +0 -6
  432. package/dist/plan-paths.d.ts.map +0 -1
  433. package/dist/plan-paths.js +0 -30
  434. package/dist/plan-paths.js.map +0 -1
  435. package/dist/plan-service.d.ts +0 -61
  436. package/dist/plan-service.d.ts.map +0 -1
  437. package/dist/plan-service.js +0 -255
  438. package/dist/plan-service.js.map +0 -1
  439. package/dist/policy.d.ts +0 -14
  440. package/dist/policy.d.ts.map +0 -1
  441. package/dist/policy.js +0 -247
  442. package/dist/policy.js.map +0 -1
  443. package/dist/process-manager.d.ts +0 -72
  444. package/dist/process-manager.d.ts.map +0 -1
  445. package/dist/process-manager.js +0 -376
  446. package/dist/process-manager.js.map +0 -1
  447. package/dist/prompt-text.d.ts.map +0 -1
  448. package/dist/prompt-text.js.map +0 -1
  449. package/dist/registry/agent-lifecycle-service.d.ts +0 -38
  450. package/dist/registry/agent-lifecycle-service.d.ts.map +0 -1
  451. package/dist/registry/agent-lifecycle-service.js +0 -199
  452. package/dist/registry/agent-lifecycle-service.js.map +0 -1
  453. package/dist/registry/conversation-lifecycle-service.d.ts +0 -35
  454. package/dist/registry/conversation-lifecycle-service.d.ts.map +0 -1
  455. package/dist/registry/conversation-lifecycle-service.js +0 -136
  456. package/dist/registry/conversation-lifecycle-service.js.map +0 -1
  457. package/dist/registry/pinned-command-service.d.ts +0 -11
  458. package/dist/registry/pinned-command-service.d.ts.map +0 -1
  459. package/dist/registry/pinned-command-service.js +0 -40
  460. package/dist/registry/pinned-command-service.js.map +0 -1
  461. package/dist/registry/project-lifecycle-service.d.ts +0 -22
  462. package/dist/registry/project-lifecycle-service.d.ts.map +0 -1
  463. package/dist/registry/project-lifecycle-service.js +0 -87
  464. package/dist/registry/project-lifecycle-service.js.map +0 -1
  465. package/dist/registry/types.d.ts.map +0 -1
  466. package/dist/registry.d.ts.map +0 -1
  467. package/dist/registry.js.map +0 -1
  468. package/dist/repositories/agent-repository.d.ts +0 -12
  469. package/dist/repositories/agent-repository.d.ts.map +0 -1
  470. package/dist/repositories/agent-repository.js +0 -33
  471. package/dist/repositories/agent-repository.js.map +0 -1
  472. package/dist/repositories/conversation-repository.d.ts +0 -13
  473. package/dist/repositories/conversation-repository.d.ts.map +0 -1
  474. package/dist/repositories/conversation-repository.js +0 -39
  475. package/dist/repositories/conversation-repository.js.map +0 -1
  476. package/dist/repositories/entry-repository.d.ts +0 -15
  477. package/dist/repositories/entry-repository.d.ts.map +0 -1
  478. package/dist/repositories/entry-repository.js +0 -81
  479. package/dist/repositories/entry-repository.js.map +0 -1
  480. package/dist/repositories/index.d.ts +0 -7
  481. package/dist/repositories/index.d.ts.map +0 -1
  482. package/dist/repositories/index.js +0 -7
  483. package/dist/repositories/index.js.map +0 -1
  484. package/dist/repositories/pinned-command-repository.d.ts +0 -10
  485. package/dist/repositories/pinned-command-repository.d.ts.map +0 -1
  486. package/dist/repositories/pinned-command-repository.js +0 -28
  487. package/dist/repositories/pinned-command-repository.js.map +0 -1
  488. package/dist/repositories/project-repository.d.ts +0 -12
  489. package/dist/repositories/project-repository.d.ts.map +0 -1
  490. package/dist/repositories/project-repository.js +0 -33
  491. package/dist/repositories/project-repository.js.map +0 -1
  492. package/dist/repositories/prompt-queue-repository.d.ts +0 -28
  493. package/dist/repositories/prompt-queue-repository.d.ts.map +0 -1
  494. package/dist/repositories/prompt-queue-repository.js +0 -88
  495. package/dist/repositories/prompt-queue-repository.js.map +0 -1
  496. package/dist/resource-loader.d.ts.map +0 -1
  497. package/dist/resource-loader.js.map +0 -1
  498. package/dist/routes/process-routes.d.ts +0 -4
  499. package/dist/routes/process-routes.d.ts.map +0 -1
  500. package/dist/routes/process-routes.js +0 -43
  501. package/dist/routes/process-routes.js.map +0 -1
  502. package/dist/secrets.d.ts.map +0 -1
  503. package/dist/secrets.js.map +0 -1
  504. package/dist/server.d.ts.map +0 -1
  505. package/dist/server.js.map +0 -1
  506. package/dist/storage.d.ts +0 -2
  507. package/dist/storage.d.ts.map +0 -1
  508. package/dist/storage.js +0 -2
  509. package/dist/storage.js.map +0 -1
  510. package/dist/tool-service.d.ts +0 -82
  511. package/dist/tool-service.d.ts.map +0 -1
  512. package/dist/tool-service.js +0 -409
  513. package/dist/tool-service.js.map +0 -1
  514. package/dist/transcription-service.d.ts +0 -15
  515. package/dist/transcription-service.d.ts.map +0 -1
  516. package/dist/transcription-service.js +0 -128
  517. package/dist/transcription-service.js.map +0 -1
  518. package/dist/usage/anthropic-client.d.ts +0 -9
  519. package/dist/usage/anthropic-client.d.ts.map +0 -1
  520. package/dist/usage/anthropic-client.js +0 -207
  521. package/dist/usage/anthropic-client.js.map +0 -1
  522. package/dist/usage/codex-client.d.ts +0 -18
  523. package/dist/usage/codex-client.d.ts.map +0 -1
  524. package/dist/usage/codex-client.js +0 -316
  525. package/dist/usage/codex-client.js.map +0 -1
  526. package/dist/usage/subscription-usage-service.d.ts +0 -42
  527. package/dist/usage/subscription-usage-service.d.ts.map +0 -1
  528. package/dist/usage/subscription-usage-service.js +0 -131
  529. package/dist/usage/subscription-usage-service.js.map +0 -1
  530. package/dist/version.d.ts.map +0 -1
  531. package/dist/version.js.map +0 -1
  532. package/dist/web/assets/index-DFKLdj_D.css +0 -2
  533. package/dist/web/assets/index-DP6SGqvJ.js +0 -165
  534. package/dist/worker-manager.d.ts +0 -51
  535. package/dist/worker-manager.d.ts.map +0 -1
  536. package/dist/worker-manager.js +0 -116
  537. package/dist/worker-manager.js.map +0 -1
  538. /package/dist/{version.d.ts → app/version.d.ts} +0 -0
  539. /package/dist/{version.js → app/version.js} +0 -0
  540. /package/dist/{nerve-system-prompt.d.ts → domains/agents/prompting/nerve-system-prompt.d.ts} +0 -0
  541. /package/dist/{prompt-text.d.ts → domains/agents/prompting/prompt-text.d.ts} +0 -0
  542. /package/dist/{prompt-text.js → domains/agents/prompting/prompt-text.js} +0 -0
  543. /package/dist/{resource-loader.d.ts → domains/agents/prompting/resource-loader.d.ts} +0 -0
  544. /package/dist/{logging.d.ts → infrastructure/diagnostics/logging.d.ts} +0 -0
  545. /package/dist/{registry → runtime}/types.d.ts +0 -0
  546. /package/dist/{registry → runtime}/types.js +0 -0
@@ -1,207 +0,0 @@
1
- import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- const API_HOST = "api.anthropic.com";
4
- const API_PATH = "/api/oauth/usage";
5
- const API_URL = `https://${API_HOST}${API_PATH}`;
6
- const API_TIMEOUT_MS = 5000;
7
- const CACHE_MAX_AGE_MS = 30_000;
8
- const LOCK_MAX_AGE_MS = 10_000;
9
- const DEFAULT_RATE_LIMIT_BACKOFF_MS = 30_000;
10
- let cache = null;
11
- function cacheFile(cacheDir) {
12
- return join(cacheDir, "anthropic-usage.json");
13
- }
14
- async function readCacheFile(cacheDir) {
15
- const path = cacheFile(cacheDir);
16
- try {
17
- const raw = await readFile(path, "utf8");
18
- return {
19
- data: JSON.parse(raw),
20
- time: (await stat(path)).mtimeMs,
21
- };
22
- }
23
- catch {
24
- return null;
25
- }
26
- }
27
- async function writeCacheFile(cacheDir, data) {
28
- try {
29
- await mkdir(cacheDir, { recursive: true });
30
- await writeFile(cacheFile(cacheDir), JSON.stringify(data), "utf8");
31
- }
32
- catch {
33
- // best-effort cache
34
- }
35
- }
36
- function lockFile(cacheDir) {
37
- return join(cacheDir, "anthropic-usage.lock");
38
- }
39
- async function readLock(cacheDir, nowMs) {
40
- const path = lockFile(cacheDir);
41
- try {
42
- const parsed = JSON.parse(await readFile(path, "utf8"));
43
- const blockedUntil = Number(parsed.blockedUntil);
44
- return Number.isFinite(blockedUntil) && blockedUntil > nowMs
45
- ? blockedUntil
46
- : null;
47
- }
48
- catch {
49
- try {
50
- const blockedUntil = (await stat(path)).mtimeMs + LOCK_MAX_AGE_MS;
51
- return blockedUntil > nowMs ? blockedUntil : null;
52
- }
53
- catch {
54
- return null;
55
- }
56
- }
57
- }
58
- async function writeLock(cacheDir, blockedUntil) {
59
- try {
60
- await mkdir(cacheDir, { recursive: true });
61
- await writeFile(lockFile(cacheDir), JSON.stringify({ blockedUntil }), "utf8");
62
- }
63
- catch {
64
- // best-effort cross-process backoff
65
- }
66
- }
67
- function parseRetryAfterMs(header, nowMs) {
68
- const trimmed = header?.trim();
69
- if (!trimmed)
70
- return null;
71
- if (/^\d+$/.test(trimmed)) {
72
- const s = Number.parseInt(trimmed, 10);
73
- return s > 0 ? s * 1000 : null;
74
- }
75
- const ms = Date.parse(trimmed);
76
- if (Number.isNaN(ms))
77
- return null;
78
- return ms > nowMs ? ms - nowMs : null;
79
- }
80
- function toWindow(raw) {
81
- if (!raw)
82
- return null;
83
- const usedPercent = raw.utilization != null ? Number(raw.utilization) : null;
84
- const resetsAt = typeof raw.resets_at === "string" ? raw.resets_at : null;
85
- if (usedPercent == null && resetsAt == null)
86
- return null;
87
- return {
88
- usedPercent: usedPercent != null && Number.isFinite(usedPercent) ? usedPercent : null,
89
- resetsAt,
90
- resetAfterSeconds: null,
91
- windowMinutes: null,
92
- };
93
- }
94
- export function parseAnthropicUsageResponse(raw) {
95
- let parsed;
96
- try {
97
- parsed = JSON.parse(raw);
98
- }
99
- catch {
100
- return null;
101
- }
102
- if (typeof parsed !== "object" || parsed === null)
103
- return null;
104
- const obj = parsed;
105
- const session = toWindow(obj.five_hour);
106
- const weekly = toWindow(obj.seven_day);
107
- if (!session && !weekly)
108
- return null;
109
- return {
110
- provider: "anthropic",
111
- session,
112
- weekly,
113
- planType: null,
114
- updatedAt: new Date().toISOString(),
115
- };
116
- }
117
- async function fetchApi(token) {
118
- const controller = new AbortController();
119
- const timeout = setTimeout(() => controller.abort(), API_TIMEOUT_MS);
120
- try {
121
- const res = await fetch(API_URL, {
122
- method: "GET",
123
- headers: {
124
- Authorization: `Bearer ${token}`,
125
- "anthropic-beta": "oauth-2025-04-20",
126
- },
127
- signal: controller.signal,
128
- });
129
- if (res.ok)
130
- return { kind: "success", body: await res.text() };
131
- if (res.status === 429) {
132
- return {
133
- kind: "rate-limited",
134
- retryAfterMs: parseRetryAfterMs(res.headers.get("retry-after"), Date.now()) ??
135
- DEFAULT_RATE_LIMIT_BACKOFF_MS,
136
- };
137
- }
138
- return { kind: "error" };
139
- }
140
- catch {
141
- return { kind: "error" };
142
- }
143
- finally {
144
- clearTimeout(timeout);
145
- }
146
- }
147
- /**
148
- * Fetch Anthropic subscription usage (5h session + 7d weekly) using an OAuth
149
- * bearer token. Memoized for {@link CACHE_MAX_AGE_MS} with rate-limit backoff;
150
- * the last good snapshot is served on transient failures.
151
- */
152
- export async function fetchAnthropicUsage(token, cacheDir) {
153
- const now = Date.now();
154
- if (cache &&
155
- now - cache.time < CACHE_MAX_AGE_MS &&
156
- cache.blockedUntil <= now) {
157
- return cache.data;
158
- }
159
- const fileCache = await readCacheFile(cacheDir);
160
- if (fileCache?.data && now - fileCache.time < CACHE_MAX_AGE_MS) {
161
- cache = { data: fileCache.data, time: fileCache.time, blockedUntil: 0 };
162
- return fileCache.data;
163
- }
164
- const lastKnown = cache?.data ?? fileCache?.data ?? null;
165
- if (cache && cache.blockedUntil > now) {
166
- return lastKnown;
167
- }
168
- const lockedUntil = await readLock(cacheDir, now);
169
- if (lockedUntil) {
170
- cache = { data: lastKnown, time: now, blockedUntil: lockedUntil };
171
- return lastKnown;
172
- }
173
- await writeLock(cacheDir, now + LOCK_MAX_AGE_MS);
174
- const resp = await fetchApi(token);
175
- if (resp.kind === "rate-limited") {
176
- await writeLock(cacheDir, now + resp.retryAfterMs);
177
- cache = {
178
- data: lastKnown,
179
- time: now,
180
- blockedUntil: now + resp.retryAfterMs,
181
- };
182
- return lastKnown;
183
- }
184
- if (resp.kind === "error") {
185
- await writeLock(cacheDir, now + DEFAULT_RATE_LIMIT_BACKOFF_MS);
186
- cache = {
187
- data: lastKnown,
188
- time: now,
189
- blockedUntil: now + DEFAULT_RATE_LIMIT_BACKOFF_MS,
190
- };
191
- return lastKnown;
192
- }
193
- const data = parseAnthropicUsageResponse(resp.body);
194
- if (!data) {
195
- await writeLock(cacheDir, now + DEFAULT_RATE_LIMIT_BACKOFF_MS);
196
- cache = {
197
- data: lastKnown,
198
- time: now,
199
- blockedUntil: now + DEFAULT_RATE_LIMIT_BACKOFF_MS,
200
- };
201
- return lastKnown;
202
- }
203
- cache = { data, time: now, blockedUntil: 0 };
204
- await writeCacheFile(cacheDir, data);
205
- return data;
206
- }
207
- //# sourceMappingURL=anthropic-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic-client.js","sourceRoot":"","sources":["../../src/usage/anthropic-client.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { SubscriptionUsage } from "@nerve/shared";
2
- type HeaderLike = Record<string, string | number | boolean | null | undefined>;
3
- /** Parse a Codex usage JSON payload into a normalized snapshot. */
4
- export declare function parseCodexUsageResponse(payload: unknown, nowMs?: number): SubscriptionUsage | null;
5
- /** Parse Codex rate-limit usage from provider response headers. */
6
- export declare function parseCodexUsageHeaders(headers: HeaderLike, nowMs?: number): SubscriptionUsage | null;
7
- /** Merge a newer snapshot over a base, preferring defined fields. */
8
- export declare function mergeCodexUsage(base: SubscriptionUsage | null, update: SubscriptionUsage): SubscriptionUsage;
9
- /**
10
- * Fetch Codex subscription usage from the backend endpoint using an OAuth
11
- * bearer token. Memoized for {@link CACHE_MAX_AGE_MS} with rate-limit backoff;
12
- * live updates also arrive via {@link parseCodexUsageHeaders}.
13
- */
14
- export declare function fetchCodexUsage(token: string, cacheDir: string): Promise<SubscriptionUsage | null>;
15
- /** Persist a header-derived snapshot into the cache. */
16
- export declare function writeCodexUsageCache(cacheDir: string, data: SubscriptionUsage): Promise<void>;
17
- export {};
18
- //# sourceMappingURL=codex-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-client.d.ts","sourceRoot":"","sources":["../../src/usage/codex-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,eAAe,CAAC;AAe3E,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAuI/E,mEAAmE;AACnE,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,KAAK,SAAa,GACjB,iBAAiB,GAAG,IAAI,CAkC1B;AAwCD,mEAAmE;AACnE,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,UAAU,EACnB,KAAK,SAAa,GACjB,iBAAiB,GAAG,IAAI,CAW1B;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAC7B,IAAI,EAAE,iBAAiB,GAAG,IAAI,EAC9B,MAAM,EAAE,iBAAiB,GACxB,iBAAiB,CASnB;AAwFD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAiEnC;AAED,wDAAwD;AACxD,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -1,316 +0,0 @@
1
- import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- const API_URL = "https://chatgpt.com/backend-api/wham/usage";
4
- const API_TIMEOUT_MS = 5000;
5
- const CACHE_MAX_AGE_MS = 30_000;
6
- const LOCK_MAX_AGE_MS = 10_000;
7
- const DEFAULT_RATE_LIMIT_BACKOFF_MS = 30_000;
8
- const ACCOUNT_ID_CLAIM = "https://api.openai.com/auth.chatgpt_account_id";
9
- let cache = null;
10
- function cacheFile(cacheDir) {
11
- return join(cacheDir, "codex-usage.json");
12
- }
13
- async function readCacheFile(cacheDir) {
14
- const path = cacheFile(cacheDir);
15
- try {
16
- return {
17
- data: JSON.parse(await readFile(path, "utf8")),
18
- time: (await stat(path)).mtimeMs,
19
- };
20
- }
21
- catch {
22
- return null;
23
- }
24
- }
25
- async function writeCacheFile(cacheDir, data) {
26
- try {
27
- await mkdir(cacheDir, { recursive: true });
28
- await writeFile(cacheFile(cacheDir), JSON.stringify(data), "utf8");
29
- }
30
- catch {
31
- // best-effort cache
32
- }
33
- }
34
- function lockFile(cacheDir) {
35
- return join(cacheDir, "codex-usage.lock");
36
- }
37
- async function readLock(cacheDir, nowMs) {
38
- const path = lockFile(cacheDir);
39
- try {
40
- const parsed = JSON.parse(await readFile(path, "utf8"));
41
- const blockedUntil = Number(parsed.blockedUntil);
42
- return Number.isFinite(blockedUntil) && blockedUntil > nowMs
43
- ? blockedUntil
44
- : null;
45
- }
46
- catch {
47
- try {
48
- const blockedUntil = (await stat(path)).mtimeMs + LOCK_MAX_AGE_MS;
49
- return blockedUntil > nowMs ? blockedUntil : null;
50
- }
51
- catch {
52
- return null;
53
- }
54
- }
55
- }
56
- async function writeLock(cacheDir, blockedUntil) {
57
- try {
58
- await mkdir(cacheDir, { recursive: true });
59
- await writeFile(lockFile(cacheDir), JSON.stringify({ blockedUntil }), "utf8");
60
- }
61
- catch {
62
- // best-effort cross-process backoff
63
- }
64
- }
65
- function numberValue(value) {
66
- if (typeof value === "number" && Number.isFinite(value))
67
- return value;
68
- if (typeof value !== "string" || value.trim() === "")
69
- return null;
70
- const parsed = Number(value);
71
- return Number.isFinite(parsed) ? parsed : null;
72
- }
73
- function stringValue(value) {
74
- if (typeof value === "string" && value !== "")
75
- return value;
76
- if (typeof value === "number" && Number.isFinite(value))
77
- return String(value);
78
- return null;
79
- }
80
- function normalizeResetAt(value) {
81
- if (value == null)
82
- return null;
83
- return value > 10_000_000_000 ? Math.round(value / 1000) : value;
84
- }
85
- function resetAfterFromResetAt(resetAt, nowMs) {
86
- const normalized = normalizeResetAt(resetAt);
87
- if (normalized == null)
88
- return null;
89
- return Math.max(0, Math.round(normalized - nowMs / 1000));
90
- }
91
- function parseApiWindow(window, nowMs) {
92
- if (!window)
93
- return null;
94
- const usedPercent = numberValue(window.used_percent ?? window.usedPercent);
95
- const resetAfterSeconds = numberValue(window.reset_after_seconds ?? window.resetAfterSeconds) ??
96
- resetAfterFromResetAt(numberValue(window.reset_at ?? window.resetAt), nowMs);
97
- const limitWindowSeconds = numberValue(window.limit_window_seconds ?? window.windowSeconds);
98
- const windowMinutes = numberValue(window.window_minutes ?? window.windowMinutes) ??
99
- (limitWindowSeconds != null ? limitWindowSeconds / 60 : null);
100
- if (usedPercent == null &&
101
- resetAfterSeconds == null &&
102
- windowMinutes == null) {
103
- return null;
104
- }
105
- return { usedPercent, resetsAt: null, resetAfterSeconds, windowMinutes };
106
- }
107
- /** Parse a Codex usage JSON payload into a normalized snapshot. */
108
- export function parseCodexUsageResponse(payload, nowMs = Date.now()) {
109
- if (typeof payload !== "object" ||
110
- payload === null ||
111
- Array.isArray(payload)) {
112
- return null;
113
- }
114
- const api = payload;
115
- const session = parseApiWindow(api.rate_limit?.primary_window ?? api.rate_limit?.primaryWindow, nowMs);
116
- const weekly = parseApiWindow(api.rate_limit?.secondary_window ?? api.rate_limit?.secondaryWindow, nowMs);
117
- if (!session && !weekly)
118
- return null;
119
- return {
120
- provider: "openai-codex",
121
- session,
122
- weekly,
123
- planType: stringValue(api.plan_type ?? api.planType),
124
- updatedAt: new Date().toISOString(),
125
- };
126
- }
127
- function headerValue(headers, name) {
128
- const wanted = `x-codex-${name}`.toLowerCase();
129
- for (const [key, value] of Object.entries(headers)) {
130
- if (key.toLowerCase() === wanted && value != null)
131
- return String(value);
132
- }
133
- return undefined;
134
- }
135
- function headerNumber(headers, name) {
136
- return numberValue(headerValue(headers, name));
137
- }
138
- function headerResetAfter(headers, prefix, nowMs) {
139
- return (headerNumber(headers, `${prefix}-reset-after-seconds`) ??
140
- resetAfterFromResetAt(headerNumber(headers, `${prefix}-reset-at`), nowMs));
141
- }
142
- function headerWindow(headers, prefix, nowMs) {
143
- const usedPercent = headerNumber(headers, `${prefix}-used-percent`);
144
- if (usedPercent == null)
145
- return null;
146
- return {
147
- usedPercent,
148
- resetsAt: null,
149
- resetAfterSeconds: headerResetAfter(headers, prefix, nowMs),
150
- windowMinutes: headerNumber(headers, `${prefix}-window-minutes`),
151
- };
152
- }
153
- /** Parse Codex rate-limit usage from provider response headers. */
154
- export function parseCodexUsageHeaders(headers, nowMs = Date.now()) {
155
- const session = headerWindow(headers, "primary", nowMs);
156
- const weekly = headerWindow(headers, "secondary", nowMs);
157
- if (!session && !weekly)
158
- return null;
159
- return {
160
- provider: "openai-codex",
161
- session,
162
- weekly,
163
- planType: headerValue(headers, "plan-type") ?? null,
164
- updatedAt: new Date().toISOString(),
165
- };
166
- }
167
- /** Merge a newer snapshot over a base, preferring defined fields. */
168
- export function mergeCodexUsage(base, update) {
169
- if (!base)
170
- return update;
171
- return {
172
- provider: "openai-codex",
173
- session: update.session ?? base.session,
174
- weekly: update.weekly ?? base.weekly,
175
- planType: update.planType ?? base.planType,
176
- updatedAt: update.updatedAt,
177
- };
178
- }
179
- function decodeBase64UrlJson(segment) {
180
- try {
181
- const normalized = segment.replace(/-/g, "+").replace(/_/g, "/");
182
- const padded = normalized.padEnd(normalized.length + ((4 - (normalized.length % 4)) % 4), "=");
183
- const parsed = JSON.parse(Buffer.from(padded, "base64").toString("utf8"));
184
- if (typeof parsed !== "object" ||
185
- parsed === null ||
186
- Array.isArray(parsed)) {
187
- return null;
188
- }
189
- return parsed;
190
- }
191
- catch {
192
- return null;
193
- }
194
- }
195
- function extractAccountId(token) {
196
- const [, payload] = token.split(".");
197
- if (!payload)
198
- return null;
199
- const claims = decodeBase64UrlJson(payload);
200
- return stringValue(claims?.[ACCOUNT_ID_CLAIM] ??
201
- claims?.chatgpt_account_id ??
202
- claims?.account_id);
203
- }
204
- function parseRetryAfterMs(header, nowMs) {
205
- const trimmed = header?.trim();
206
- if (!trimmed)
207
- return null;
208
- if (/^\d+$/.test(trimmed)) {
209
- const s = Number.parseInt(trimmed, 10);
210
- return s > 0 ? s * 1000 : null;
211
- }
212
- const ms = Date.parse(trimmed);
213
- if (Number.isNaN(ms))
214
- return null;
215
- return ms > nowMs ? ms - nowMs : null;
216
- }
217
- async function fetchApi(token, accountId) {
218
- const controller = new AbortController();
219
- const timeout = setTimeout(() => controller.abort(), API_TIMEOUT_MS);
220
- try {
221
- const headers = {
222
- Authorization: `Bearer ${token}`,
223
- accept: "application/json",
224
- "user-agent": "nerve/0.0.0",
225
- };
226
- if (accountId)
227
- headers["chatgpt-account-id"] = accountId;
228
- const res = await fetch(API_URL, {
229
- method: "GET",
230
- headers,
231
- signal: controller.signal,
232
- });
233
- if (res.ok)
234
- return { kind: "success", body: await res.json() };
235
- if (res.status === 429) {
236
- return {
237
- kind: "rate-limited",
238
- retryAfterMs: parseRetryAfterMs(res.headers.get("retry-after"), Date.now()) ??
239
- DEFAULT_RATE_LIMIT_BACKOFF_MS,
240
- };
241
- }
242
- return { kind: "error" };
243
- }
244
- catch {
245
- return { kind: "error" };
246
- }
247
- finally {
248
- clearTimeout(timeout);
249
- }
250
- }
251
- /**
252
- * Fetch Codex subscription usage from the backend endpoint using an OAuth
253
- * bearer token. Memoized for {@link CACHE_MAX_AGE_MS} with rate-limit backoff;
254
- * live updates also arrive via {@link parseCodexUsageHeaders}.
255
- */
256
- export async function fetchCodexUsage(token, cacheDir) {
257
- const now = Date.now();
258
- if (cache &&
259
- now - cache.time < CACHE_MAX_AGE_MS &&
260
- cache.blockedUntil <= now) {
261
- return cache.data;
262
- }
263
- const fileCache = await readCacheFile(cacheDir);
264
- if (fileCache?.data && now - fileCache.time < CACHE_MAX_AGE_MS) {
265
- cache = { data: fileCache.data, time: fileCache.time, blockedUntil: 0 };
266
- return fileCache.data;
267
- }
268
- const lastKnown = cache?.data ?? fileCache?.data ?? null;
269
- if (cache && cache.blockedUntil > now) {
270
- return lastKnown;
271
- }
272
- const lockedUntil = await readLock(cacheDir, now);
273
- if (lockedUntil) {
274
- cache = { data: lastKnown, time: now, blockedUntil: lockedUntil };
275
- return lastKnown;
276
- }
277
- await writeLock(cacheDir, now + LOCK_MAX_AGE_MS);
278
- const resp = await fetchApi(token, extractAccountId(token));
279
- if (resp.kind === "rate-limited") {
280
- await writeLock(cacheDir, now + resp.retryAfterMs);
281
- cache = {
282
- data: lastKnown,
283
- time: now,
284
- blockedUntil: now + resp.retryAfterMs,
285
- };
286
- return lastKnown;
287
- }
288
- if (resp.kind === "error") {
289
- await writeLock(cacheDir, now + DEFAULT_RATE_LIMIT_BACKOFF_MS);
290
- cache = {
291
- data: lastKnown,
292
- time: now,
293
- blockedUntil: now + DEFAULT_RATE_LIMIT_BACKOFF_MS,
294
- };
295
- return lastKnown;
296
- }
297
- const data = parseCodexUsageResponse(resp.body);
298
- if (!data) {
299
- await writeLock(cacheDir, now + DEFAULT_RATE_LIMIT_BACKOFF_MS);
300
- cache = {
301
- data: lastKnown,
302
- time: now,
303
- blockedUntil: now + DEFAULT_RATE_LIMIT_BACKOFF_MS,
304
- };
305
- return lastKnown;
306
- }
307
- cache = { data, time: now, blockedUntil: 0 };
308
- await writeCacheFile(cacheDir, data);
309
- return data;
310
- }
311
- /** Persist a header-derived snapshot into the cache. */
312
- export async function writeCodexUsageCache(cacheDir, data) {
313
- cache = { data, time: Date.now(), blockedUntil: 0 };
314
- await writeCacheFile(cacheDir, data);
315
- }
316
- //# sourceMappingURL=codex-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-client.js","sourceRoot":"","sources":["../../src/usage/codex-client.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import { type SubscriptionUsage } from "@nerve/shared";
2
- import type { AuthManager } from "../auth.js";
3
- import type { EventBus } from "../infrastructure/events/index.js";
4
- type FetchUsage = (token: string, cacheDir: string) => Promise<SubscriptionUsage | null>;
5
- export interface SubscriptionUsageServiceDeps {
6
- auth: AuthManager;
7
- events: EventBus;
8
- /** Directory for persisted usage caches (e.g. `<dataDir>/cache/usage`). */
9
- cacheDir: string;
10
- fetchAnthropicUsage?: FetchUsage;
11
- fetchCodexUsage?: FetchUsage;
12
- now?: () => number;
13
- }
14
- /**
15
- * Manages provider subscription usage (Anthropic 5h/7d, Codex
16
- * primary/secondary) for globally supported OAuth providers.
17
- *
18
- * Refreshing is request-driven: callers ask for fresh snapshots and the service
19
- * debounces upstream provider calls to at most one attempt per provider every
20
- * {@link MIN_REFRESH_INTERVAL_MS}. Codex also receives live header updates via
21
- * {@link applyCodexHeaders}.
22
- */
23
- export declare class SubscriptionUsageService {
24
- #private;
25
- constructor(deps: SubscriptionUsageServiceDeps);
26
- start(): void;
27
- stop(): void;
28
- /** Current snapshots, optionally refreshing all globally supported providers. */
29
- getSnapshots(options?: {
30
- refresh?: boolean;
31
- }): Promise<SubscriptionUsage[]>;
32
- /** Mark a model provider as used and request a debounced refresh. */
33
- touchProvider(provider: string): void;
34
- /** Apply a Codex usage snapshot derived from provider response headers. */
35
- applyCodexHeaders(headers: Record<string, string>): void;
36
- private configuredSnapshots;
37
- private refreshProvider;
38
- private performRefresh;
39
- private now;
40
- }
41
- export {};
42
- //# sourceMappingURL=subscription-usage-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subscription-usage-service.d.ts","sourceRoot":"","sources":["../../src/usage/subscription-usage-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAelE,KAAK,UAAU,GAAG,CAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;AAEvC,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,QAAQ,CAAC;IACjB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBAAa,wBAAwB;;gBAMvB,IAAI,EAAE,4BAA4B;IAI9C,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIZ,iFAAiF;IAC3E,YAAY,CAChB,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GAClC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAS/B,qEAAqE;IACrE,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKrC,2EAA2E;IAC3E,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;YAgB1C,mBAAmB;IAajC,OAAO,CAAC,eAAe;YAWT,cAAc;IAqC5B,OAAO,CAAC,GAAG;CAGZ"}