@resolveio/server-lib 22.3.149 → 22.3.150

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 (745) hide show
  1. package/.nodemon.json +5 -0
  2. package/.vscode/settings.json +21 -0
  3. package/AGENTS.md +195 -0
  4. package/README.md +22 -0
  5. package/build_package.sh +5 -0
  6. package/compileDTS.pl +64 -0
  7. package/docs/ai-assistant-nightly-eval.md +65 -0
  8. package/docs/ai-assistant-preflight-checklist.md +23 -0
  9. package/docs/ai-assistant-report-builder-bridge-playbook.md +115 -0
  10. package/eslint-plugin-custom/index.js +7 -0
  11. package/eslint-plugin-custom/rules/no-filter-zero-index.js +44 -0
  12. package/eslint.config.js +103 -0
  13. package/gulpfile.js +216 -0
  14. package/methodAndPublicationListGenerator.py +375 -0
  15. package/mongodbensurers.js +2 -0
  16. package/mongostop.js +3 -0
  17. package/package.json +1 -1
  18. package/scripts/cleanup-bypassed-callmethod-logs.js +616 -0
  19. package/settings.development.json +25 -0
  20. package/settings.development.redacted.json +25 -0
  21. package/src/.env +12 -0
  22. package/src/ai/assistant-core-heuristics.ts +379 -0
  23. package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +185 -0
  24. package/src/ai/resolveio-platform-intelligence-memory.ts +325 -0
  25. package/{ai/resolveio-platform-intelligence-types.d.ts → src/ai/resolveio-platform-intelligence-types.ts} +20 -15
  26. package/src/ai/resolveio-platform-intelligence.ts +462 -0
  27. package/src/client-server-app.ts +12 -0
  28. package/src/collections/ai-run.collection.ts +117 -0
  29. package/src/collections/ai-terminal-conversation.collection.ts +91 -0
  30. package/src/collections/ai-terminal-issue-report.collection.ts +99 -0
  31. package/src/collections/ai-terminal-message.collection.ts +77 -0
  32. package/src/collections/app-setting.collection.ts +104 -0
  33. package/src/collections/app-status.collection.ts +58 -0
  34. package/src/collections/communication-metric.collection.ts +84 -0
  35. package/src/collections/counter.collection.ts +56 -0
  36. package/src/collections/cron-job-history.collection.ts +94 -0
  37. package/src/collections/cron-job.collection.ts +92 -0
  38. package/src/collections/customer-notification.collection.ts +131 -0
  39. package/src/collections/customer-portal-password.collection.ts +76 -0
  40. package/src/collections/email-history.collection.ts +134 -0
  41. package/src/collections/email-verified.collection.ts +62 -0
  42. package/src/collections/file.collection.ts +74 -0
  43. package/src/collections/flag-update.collection.ts +57 -0
  44. package/src/collections/flag.collection.ts +57 -0
  45. package/src/collections/log-method-latency.collection.ts +77 -0
  46. package/src/collections/log-subscription.collection.ts +80 -0
  47. package/src/collections/log.collection.ts +93 -0
  48. package/src/collections/logged-in-users.collection.ts +67 -0
  49. package/src/collections/monitor-cpu.collection.ts +65 -0
  50. package/src/collections/monitor-function.collection.ts +74 -0
  51. package/src/collections/monitor-memory.collection.ts +77 -0
  52. package/src/collections/monitor-mongo.collection.ts +71 -0
  53. package/src/collections/notification.collection.ts +57 -0
  54. package/src/collections/openai-usage-ledger.collection.ts +131 -0
  55. package/src/collections/report-builder-dashboard-builder.collection.ts +109 -0
  56. package/src/collections/report-builder-library.collection.ts +89 -0
  57. package/src/collections/report-builder-report.collection.ts +184 -0
  58. package/src/collections/user-group.collection.ts +89 -0
  59. package/src/collections/user-guide.collection.ts +57 -0
  60. package/src/collections/user.collection.ts +181 -0
  61. package/src/cron/cron.ts +117 -0
  62. package/src/fixtures/cron-jobs.ts +95 -0
  63. package/src/fixtures/init.ts +35 -0
  64. package/src/http/auth.ts +818 -0
  65. package/src/http/health.ts +7 -0
  66. package/src/http/home.ts +90 -0
  67. package/src/http/slow-query-publication.ts +49 -0
  68. package/src/index.ts +1 -0
  69. package/src/managers/ai-assistant-codex-manager.manager.ts +1131 -0
  70. package/src/managers/ai-run-evidence.manager.ts +264 -0
  71. package/src/managers/communication-metric.manager.ts +82 -0
  72. package/src/managers/cron.manager.ts +333 -0
  73. package/src/managers/customer-notification-content.manager.ts +236 -0
  74. package/src/managers/diagnostic-manager-bootstrap.ts +165 -0
  75. package/src/managers/error-auto-fix.manager.ts +2767 -0
  76. package/src/managers/local-log.manager.ts +113 -0
  77. package/src/managers/method.manager.ts +1857 -0
  78. package/src/managers/mongo.manager.ts +4575 -0
  79. package/src/managers/monitor.manager.ts +507 -0
  80. package/src/managers/openai-usage-ledger.manager.ts +112 -0
  81. package/src/managers/slow-query-verifier.manager.ts +3590 -0
  82. package/src/managers/slow-query.manager.ts +519 -0
  83. package/src/managers/subscription.manager.ts +3128 -0
  84. package/src/managers/websocket.manager.ts +746 -0
  85. package/src/managers/worker-dispatcher.manager.ts +1360 -0
  86. package/src/managers/worker-server.manager.ts +536 -0
  87. package/src/methods/accounts.ts +532 -0
  88. package/src/methods/ai-terminal.ts +23524 -0
  89. package/src/methods/app-settings.ts +114 -0
  90. package/src/methods/aws.ts +649 -0
  91. package/src/methods/collections.ts +641 -0
  92. package/src/methods/counters.ts +69 -0
  93. package/src/methods/cron-jobs.ts +2614 -0
  94. package/src/methods/customer-notifications.ts +458 -0
  95. package/src/methods/diagnostics.ts +616 -0
  96. package/src/methods/flag-updates.ts +7 -0
  97. package/src/methods/flags.ts +7 -0
  98. package/src/methods/logs.ts +657 -0
  99. package/src/methods/mongo-explorer.ts +1880 -0
  100. package/src/methods/monitor.ts +540 -0
  101. package/src/methods/pdf.ts +1236 -0
  102. package/src/methods/publications.ts +129 -0
  103. package/src/methods/report-builder.ts +3300 -0
  104. package/src/methods/support.ts +335 -0
  105. package/src/models/ai-run.model.ts +27 -0
  106. package/src/models/ai-terminal-conversation.model.ts +19 -0
  107. package/src/models/ai-terminal-issue-report.model.ts +21 -0
  108. package/src/models/ai-terminal-message.model.ts +24 -0
  109. package/src/models/app-setting.model.ts +17 -0
  110. package/{models/app-status.model.d.ts → src/models/app-status.model.ts} +3 -2
  111. package/{models/billing-logged-in-users.model.d.ts → src/models/billing-logged-in-users.model.ts} +5 -4
  112. package/src/models/collection-document.model.ts +24 -0
  113. package/src/models/communication-metric.model.ts +23 -0
  114. package/{models/counter.model.d.ts → src/models/counter.model.ts} +4 -3
  115. package/src/models/cron-job-history.model.ts +16 -0
  116. package/src/models/cron-job.model.ts +15 -0
  117. package/src/models/customer-notification.model.ts +28 -0
  118. package/src/models/customer-portal-password.model.ts +12 -0
  119. package/src/models/dialog.model.ts +25 -0
  120. package/{models/email-history.model.js → src/models/email-history.model.ts} +36 -4
  121. package/{models/email-verified.model.d.ts → src/models/email-verified.model.ts} +6 -5
  122. package/{models/file.model.d.ts → src/models/file.model.ts} +8 -7
  123. package/{models/flag-update.model.d.ts → src/models/flag-update.model.ts} +4 -3
  124. package/{models/flag.model.d.ts → src/models/flag.model.ts} +4 -3
  125. package/src/models/log-method-latency.model.ts +11 -0
  126. package/{models/log-subscription.model.d.ts → src/models/log-subscription.model.ts} +11 -9
  127. package/src/models/log.model.ts +19 -0
  128. package/{models/logged-in-users.model.d.ts → src/models/logged-in-users.model.ts} +6 -5
  129. package/{models/method-response.model.d.ts → src/models/method-response.model.ts} +7 -6
  130. package/src/models/method.model.ts +25 -0
  131. package/{models/monitor-cpu.model.d.ts → src/models/monitor-cpu.model.ts} +9 -7
  132. package/src/models/monitor-function.model.ts +16 -0
  133. package/src/models/monitor-memory.model.ts +17 -0
  134. package/src/models/monitor-mongo.model.ts +15 -0
  135. package/{models/notification.model.d.ts → src/models/notification.model.ts} +6 -4
  136. package/src/models/openai-usage-ledger.model.ts +56 -0
  137. package/src/models/pagination.model.ts +35 -0
  138. package/src/models/permission.model.ts +14 -0
  139. package/src/models/report-builder-dashboard-builder.model.ts +29 -0
  140. package/src/models/report-builder-library.model.ts +20 -0
  141. package/src/models/report-builder-report.model.ts +136 -0
  142. package/src/models/report-builder.model.ts +68 -0
  143. package/src/models/select-data-label.model.ts +9 -0
  144. package/src/models/server-message.model.ts +31 -0
  145. package/src/models/slow-query-report.model.ts +23 -0
  146. package/src/models/subscription.model.ts +73 -0
  147. package/src/models/support-ticket.model.ts +104 -0
  148. package/src/models/user-group.model.ts +24 -0
  149. package/{models/user-guide.model.d.ts → src/models/user-guide.model.ts} +5 -4
  150. package/src/models/user.model.ts +96 -0
  151. package/src/private/images/ResolveIO.png +0 -0
  152. package/src/publications/ai-terminal.ts +73 -0
  153. package/src/publications/app-settings.ts +25 -0
  154. package/src/publications/app-status.ts +13 -0
  155. package/src/publications/cron-jobs.ts +40 -0
  156. package/src/publications/customer-notifications.ts +101 -0
  157. package/src/publications/files.ts +33 -0
  158. package/src/publications/flags-update.ts +19 -0
  159. package/src/publications/flags.ts +19 -0
  160. package/src/publications/logs.ts +163 -0
  161. package/src/publications/notifications.ts +13 -0
  162. package/src/publications/report-builder-dashboard-builders.ts +39 -0
  163. package/src/publications/report-builder-libraries.ts +41 -0
  164. package/src/publications/report-builder-reports.ts +47 -0
  165. package/src/publications/super-admin.ts +13 -0
  166. package/src/publications/user-groups.ts +12 -0
  167. package/src/publications/user-guides.ts +12 -0
  168. package/src/resolveio-server-app.ts +617 -0
  169. package/src/server-app.ts +3354 -0
  170. package/src/services/codex-client.ts +1231 -0
  171. package/src/services/openai-client.ts +265 -0
  172. package/src/types/error-report.ts +26 -0
  173. package/src/types/js-tiktoken.d.ts +11 -0
  174. package/src/types/slow-query-report.ts +28 -0
  175. package/src/util/ai-qa-policy.ts +925 -0
  176. package/src/util/ai-run-evidence-adapters.ts +684 -0
  177. package/src/util/ai-run-evidence-dashboard.ts +313 -0
  178. package/src/util/ai-run-evidence-eval.ts +885 -0
  179. package/src/util/ai-run-evidence.ts +1058 -0
  180. package/src/util/ai-runner-artifacts.ts +586 -0
  181. package/src/util/ai-runner-manager-autopilot.ts +434 -0
  182. package/src/util/ai-runner-manager-policy.ts +2733 -0
  183. package/src/util/ai-runner-qa-auth.ts +821 -0
  184. package/src/util/ai-runner-qa-tools.ts +3045 -0
  185. package/src/util/aicoder-runner-v6.ts +875 -0
  186. package/src/util/common.ts +649 -0
  187. package/src/util/customer-portal-password.ts +183 -0
  188. package/src/util/error-reporter.ts +332 -0
  189. package/src/util/error-tracking.ts +79 -0
  190. package/src/util/openai-usage-cost.ts +114 -0
  191. package/src/util/report-builder-unwinds.ts +180 -0
  192. package/src/util/runner-process-janitor.ts +219 -0
  193. package/src/util/schema-report-builder.ts +448 -0
  194. package/src/util/slow-query-reporter.ts +216 -0
  195. package/src/util/subscription-dependency-context.ts +1096 -0
  196. package/src/util/support-runner-v5.ts +2167 -0
  197. package/src/util/tokenizer.ts +38 -0
  198. package/src/workers/codex-runner.worker.ts +142 -0
  199. package/start_server.sh +5 -0
  200. package/tests/ai-assistant-corpus-build.ts +484 -0
  201. package/tests/ai-assistant-corpus-replay-e2e.ts +774 -0
  202. package/tests/ai-assistant-data-parity-e2e.ts +1989 -0
  203. package/tests/ai-assistant-eval-triage.ts +831 -0
  204. package/tests/ai-assistant-openai-e2e.ts +1061 -0
  205. package/tests/ai-assistant-openai-git-e2e.ts +155 -0
  206. package/tests/ai-assistant-preflight-matrix.ts +215 -0
  207. package/tests/ai-assistant-routing-eval.test.ts +560 -0
  208. package/tests/ai-assistant-snf-live-eval.ts +975 -0
  209. package/tests/ai-assistant-utils.test.ts +2968 -0
  210. package/tests/ai-manager-autopilot-snapshot.test.ts +177 -0
  211. package/tests/ai-manager-recovery-checkpoint.test.ts +595 -0
  212. package/tests/ai-run-eval.test.ts +88 -0
  213. package/tests/ai-run-evidence.test.ts +348 -0
  214. package/tests/ai-runner-contract.test.ts +488 -0
  215. package/tests/aicoder-runner-v6.test.ts +298 -0
  216. package/tests/error-reporter.test.ts +145 -0
  217. package/tests/method-publication-generator.test.ts +46 -0
  218. package/tests/report-builder-linking.test.ts +79 -0
  219. package/tests/resolveio-platform-intelligence.test.ts +352 -0
  220. package/tests/server-app-cron-owner.test.ts +127 -0
  221. package/tests/subscription-connect-race.test.ts +158 -0
  222. package/tests/subscription-dependency-context.test.ts +324 -0
  223. package/tests/subscription-manager-collection-tracking.test.ts +86 -0
  224. package/tests/subscription-manager-invalidation.test.ts +86 -0
  225. package/tests/support-runner-v5.test.ts +488 -0
  226. package/tsconfig.json +34 -0
  227. package/ai/assistant-core-heuristics.d.ts +0 -11
  228. package/ai/assistant-core-heuristics.js +0 -356
  229. package/ai/assistant-core-heuristics.js.map +0 -1
  230. package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +0 -3
  231. package/ai/resolveio-platform-intelligence-memory-corpus.js +0 -214
  232. package/ai/resolveio-platform-intelligence-memory-corpus.js.map +0 -1
  233. package/ai/resolveio-platform-intelligence-memory.d.ts +0 -20
  234. package/ai/resolveio-platform-intelligence-memory.js +0 -341
  235. package/ai/resolveio-platform-intelligence-memory.js.map +0 -1
  236. package/ai/resolveio-platform-intelligence-types.js +0 -4
  237. package/ai/resolveio-platform-intelligence-types.js.map +0 -1
  238. package/ai/resolveio-platform-intelligence.d.ts +0 -6
  239. package/ai/resolveio-platform-intelligence.js +0 -463
  240. package/ai/resolveio-platform-intelligence.js.map +0 -1
  241. package/client-server-app.d.ts +0 -1
  242. package/client-server-app.js +0 -68
  243. package/client-server-app.js.map +0 -1
  244. package/collections/ai-run.collection.d.ts +0 -3
  245. package/collections/ai-run.collection.js +0 -170
  246. package/collections/ai-run.collection.js.map +0 -1
  247. package/collections/ai-terminal-conversation.collection.d.ts +0 -2
  248. package/collections/ai-terminal-conversation.collection.js +0 -140
  249. package/collections/ai-terminal-conversation.collection.js.map +0 -1
  250. package/collections/ai-terminal-issue-report.collection.d.ts +0 -2
  251. package/collections/ai-terminal-issue-report.collection.js +0 -148
  252. package/collections/ai-terminal-issue-report.collection.js.map +0 -1
  253. package/collections/ai-terminal-message.collection.d.ts +0 -2
  254. package/collections/ai-terminal-message.collection.js +0 -121
  255. package/collections/ai-terminal-message.collection.js.map +0 -1
  256. package/collections/app-setting.collection.d.ts +0 -3
  257. package/collections/app-setting.collection.js +0 -103
  258. package/collections/app-setting.collection.js.map +0 -1
  259. package/collections/app-status.collection.d.ts +0 -3
  260. package/collections/app-status.collection.js +0 -57
  261. package/collections/app-status.collection.js.map +0 -1
  262. package/collections/communication-metric.collection.d.ts +0 -2
  263. package/collections/communication-metric.collection.js +0 -133
  264. package/collections/communication-metric.collection.js.map +0 -1
  265. package/collections/counter.collection.d.ts +0 -3
  266. package/collections/counter.collection.js +0 -56
  267. package/collections/counter.collection.js.map +0 -1
  268. package/collections/cron-job-history.collection.d.ts +0 -3
  269. package/collections/cron-job-history.collection.js +0 -137
  270. package/collections/cron-job-history.collection.js.map +0 -1
  271. package/collections/cron-job.collection.d.ts +0 -3
  272. package/collections/cron-job.collection.js +0 -92
  273. package/collections/cron-job.collection.js.map +0 -1
  274. package/collections/customer-notification.collection.d.ts +0 -3
  275. package/collections/customer-notification.collection.js +0 -130
  276. package/collections/customer-notification.collection.js.map +0 -1
  277. package/collections/customer-portal-password.collection.d.ts +0 -3
  278. package/collections/customer-portal-password.collection.js +0 -75
  279. package/collections/customer-portal-password.collection.js.map +0 -1
  280. package/collections/email-history.collection.d.ts +0 -3
  281. package/collections/email-history.collection.js +0 -134
  282. package/collections/email-history.collection.js.map +0 -1
  283. package/collections/email-verified.collection.d.ts +0 -3
  284. package/collections/email-verified.collection.js +0 -62
  285. package/collections/email-verified.collection.js.map +0 -1
  286. package/collections/file.collection.d.ts +0 -3
  287. package/collections/file.collection.js +0 -74
  288. package/collections/file.collection.js.map +0 -1
  289. package/collections/flag-update.collection.d.ts +0 -3
  290. package/collections/flag-update.collection.js +0 -57
  291. package/collections/flag-update.collection.js.map +0 -1
  292. package/collections/flag.collection.d.ts +0 -3
  293. package/collections/flag.collection.js +0 -57
  294. package/collections/flag.collection.js.map +0 -1
  295. package/collections/log-method-latency.collection.d.ts +0 -3
  296. package/collections/log-method-latency.collection.js +0 -77
  297. package/collections/log-method-latency.collection.js.map +0 -1
  298. package/collections/log-subscription.collection.d.ts +0 -3
  299. package/collections/log-subscription.collection.js +0 -80
  300. package/collections/log-subscription.collection.js.map +0 -1
  301. package/collections/log.collection.d.ts +0 -3
  302. package/collections/log.collection.js +0 -93
  303. package/collections/log.collection.js.map +0 -1
  304. package/collections/logged-in-users.collection.d.ts +0 -3
  305. package/collections/logged-in-users.collection.js +0 -67
  306. package/collections/logged-in-users.collection.js.map +0 -1
  307. package/collections/monitor-cpu.collection.d.ts +0 -3
  308. package/collections/monitor-cpu.collection.js +0 -65
  309. package/collections/monitor-cpu.collection.js.map +0 -1
  310. package/collections/monitor-function.collection.d.ts +0 -3
  311. package/collections/monitor-function.collection.js +0 -74
  312. package/collections/monitor-function.collection.js.map +0 -1
  313. package/collections/monitor-memory.collection.d.ts +0 -3
  314. package/collections/monitor-memory.collection.js +0 -77
  315. package/collections/monitor-memory.collection.js.map +0 -1
  316. package/collections/monitor-mongo.collection.d.ts +0 -3
  317. package/collections/monitor-mongo.collection.js +0 -71
  318. package/collections/monitor-mongo.collection.js.map +0 -1
  319. package/collections/notification.collection.d.ts +0 -3
  320. package/collections/notification.collection.js +0 -57
  321. package/collections/notification.collection.js.map +0 -1
  322. package/collections/openai-usage-ledger.collection.d.ts +0 -2
  323. package/collections/openai-usage-ledger.collection.js +0 -188
  324. package/collections/openai-usage-ledger.collection.js.map +0 -1
  325. package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
  326. package/collections/report-builder-dashboard-builder.collection.js +0 -109
  327. package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
  328. package/collections/report-builder-library.collection.d.ts +0 -3
  329. package/collections/report-builder-library.collection.js +0 -87
  330. package/collections/report-builder-library.collection.js.map +0 -1
  331. package/collections/report-builder-report.collection.d.ts +0 -4
  332. package/collections/report-builder-report.collection.js +0 -184
  333. package/collections/report-builder-report.collection.js.map +0 -1
  334. package/collections/user-group.collection.d.ts +0 -4
  335. package/collections/user-group.collection.js +0 -89
  336. package/collections/user-group.collection.js.map +0 -1
  337. package/collections/user-guide.collection.d.ts +0 -3
  338. package/collections/user-guide.collection.js +0 -57
  339. package/collections/user-guide.collection.js.map +0 -1
  340. package/collections/user.collection.d.ts +0 -4
  341. package/collections/user.collection.js +0 -180
  342. package/collections/user.collection.js.map +0 -1
  343. package/cron/cron.d.ts +0 -14
  344. package/cron/cron.js +0 -216
  345. package/cron/cron.js.map +0 -1
  346. package/fixtures/cron-jobs.d.ts +0 -1
  347. package/fixtures/cron-jobs.js +0 -150
  348. package/fixtures/cron-jobs.js.map +0 -1
  349. package/fixtures/init.d.ts +0 -1
  350. package/fixtures/init.js +0 -91
  351. package/fixtures/init.js.map +0 -1
  352. package/http/auth.d.ts +0 -2
  353. package/http/auth.js +0 -951
  354. package/http/auth.js.map +0 -1
  355. package/http/health.d.ts +0 -1
  356. package/http/health.js +0 -11
  357. package/http/health.js.map +0 -1
  358. package/http/home.d.ts +0 -1
  359. package/http/home.js +0 -134
  360. package/http/home.js.map +0 -1
  361. package/http/slow-query-publication.d.ts +0 -2
  362. package/http/slow-query-publication.js +0 -99
  363. package/http/slow-query-publication.js.map +0 -1
  364. package/index.d.ts +0 -1
  365. package/index.js +0 -19
  366. package/index.js.map +0 -1
  367. package/managers/ai-assistant-codex-manager.manager.d.ts +0 -67
  368. package/managers/ai-assistant-codex-manager.manager.js +0 -1113
  369. package/managers/ai-assistant-codex-manager.manager.js.map +0 -1
  370. package/managers/ai-run-evidence.manager.d.ts +0 -36
  371. package/managers/ai-run-evidence.manager.js +0 -377
  372. package/managers/ai-run-evidence.manager.js.map +0 -1
  373. package/managers/communication-metric.manager.d.ts +0 -16
  374. package/managers/communication-metric.manager.js +0 -134
  375. package/managers/communication-metric.manager.js.map +0 -1
  376. package/managers/cron.manager.d.ts +0 -20
  377. package/managers/cron.manager.js +0 -534
  378. package/managers/cron.manager.js.map +0 -1
  379. package/managers/customer-notification-content.manager.d.ts +0 -55
  380. package/managers/customer-notification-content.manager.js +0 -158
  381. package/managers/customer-notification-content.manager.js.map +0 -1
  382. package/managers/diagnostic-manager-bootstrap.d.ts +0 -9
  383. package/managers/diagnostic-manager-bootstrap.js +0 -260
  384. package/managers/diagnostic-manager-bootstrap.js.map +0 -1
  385. package/managers/error-auto-fix.manager.d.ts +0 -149
  386. package/managers/error-auto-fix.manager.js +0 -3064
  387. package/managers/error-auto-fix.manager.js.map +0 -1
  388. package/managers/local-log.manager.d.ts +0 -18
  389. package/managers/local-log.manager.js +0 -88
  390. package/managers/local-log.manager.js.map +0 -1
  391. package/managers/method.manager.d.ts +0 -84
  392. package/managers/method.manager.js +0 -1964
  393. package/managers/method.manager.js.map +0 -1
  394. package/managers/mongo.manager.d.ts +0 -224
  395. package/managers/mongo.manager.js +0 -5000
  396. package/managers/mongo.manager.js.map +0 -1
  397. package/managers/monitor.manager.d.ts +0 -70
  398. package/managers/monitor.manager.js +0 -550
  399. package/managers/monitor.manager.js.map +0 -1
  400. package/managers/openai-usage-ledger.manager.d.ts +0 -30
  401. package/managers/openai-usage-ledger.manager.js +0 -142
  402. package/managers/openai-usage-ledger.manager.js.map +0 -1
  403. package/managers/slow-query-verifier.manager.d.ts +0 -144
  404. package/managers/slow-query-verifier.manager.js +0 -3857
  405. package/managers/slow-query-verifier.manager.js.map +0 -1
  406. package/managers/slow-query.manager.d.ts +0 -28
  407. package/managers/slow-query.manager.js +0 -468
  408. package/managers/slow-query.manager.js.map +0 -1
  409. package/managers/subscription.manager.d.ts +0 -169
  410. package/managers/subscription.manager.js +0 -3434
  411. package/managers/subscription.manager.js.map +0 -1
  412. package/managers/websocket.manager.d.ts +0 -73
  413. package/managers/websocket.manager.js +0 -673
  414. package/managers/websocket.manager.js.map +0 -1
  415. package/managers/worker-dispatcher.manager.d.ts +0 -120
  416. package/managers/worker-dispatcher.manager.js +0 -1266
  417. package/managers/worker-dispatcher.manager.js.map +0 -1
  418. package/managers/worker-server.manager.d.ts +0 -35
  419. package/managers/worker-server.manager.js +0 -582
  420. package/managers/worker-server.manager.js.map +0 -1
  421. package/methods/accounts.d.ts +0 -2
  422. package/methods/accounts.js +0 -624
  423. package/methods/accounts.js.map +0 -1
  424. package/methods/ai-terminal.d.ts +0 -337
  425. package/methods/ai-terminal.js +0 -23193
  426. package/methods/ai-terminal.js.map +0 -1
  427. package/methods/app-settings.d.ts +0 -2
  428. package/methods/app-settings.js +0 -169
  429. package/methods/app-settings.js.map +0 -1
  430. package/methods/aws.d.ts +0 -2
  431. package/methods/aws.js +0 -877
  432. package/methods/aws.js.map +0 -1
  433. package/methods/collections.d.ts +0 -2
  434. package/methods/collections.js +0 -719
  435. package/methods/collections.js.map +0 -1
  436. package/methods/counters.d.ts +0 -2
  437. package/methods/counters.js +0 -113
  438. package/methods/counters.js.map +0 -1
  439. package/methods/cron-jobs.d.ts +0 -2
  440. package/methods/cron-jobs.js +0 -2475
  441. package/methods/cron-jobs.js.map +0 -1
  442. package/methods/customer-notifications.d.ts +0 -2
  443. package/methods/customer-notifications.js +0 -528
  444. package/methods/customer-notifications.js.map +0 -1
  445. package/methods/diagnostics.d.ts +0 -2
  446. package/methods/diagnostics.js +0 -703
  447. package/methods/diagnostics.js.map +0 -1
  448. package/methods/flag-updates.d.ts +0 -2
  449. package/methods/flag-updates.js +0 -8
  450. package/methods/flag-updates.js.map +0 -1
  451. package/methods/flags.d.ts +0 -2
  452. package/methods/flags.js +0 -8
  453. package/methods/flags.js.map +0 -1
  454. package/methods/logs.d.ts +0 -2
  455. package/methods/logs.js +0 -751
  456. package/methods/logs.js.map +0 -1
  457. package/methods/mongo-explorer.d.ts +0 -2
  458. package/methods/mongo-explorer.js +0 -1808
  459. package/methods/mongo-explorer.js.map +0 -1
  460. package/methods/monitor.d.ts +0 -2
  461. package/methods/monitor.js +0 -543
  462. package/methods/monitor.js.map +0 -1
  463. package/methods/pdf.d.ts +0 -2
  464. package/methods/pdf.js +0 -1216
  465. package/methods/pdf.js.map +0 -1
  466. package/methods/publications.d.ts +0 -1
  467. package/methods/publications.js +0 -183
  468. package/methods/publications.js.map +0 -1
  469. package/methods/report-builder.d.ts +0 -2
  470. package/methods/report-builder.js +0 -3094
  471. package/methods/report-builder.js.map +0 -1
  472. package/methods/support.d.ts +0 -2
  473. package/methods/support.js +0 -430
  474. package/methods/support.js.map +0 -1
  475. package/models/ai-run.model.d.ts +0 -19
  476. package/models/ai-run.model.js +0 -4
  477. package/models/ai-run.model.js.map +0 -1
  478. package/models/ai-terminal-conversation.model.d.ts +0 -17
  479. package/models/ai-terminal-conversation.model.js +0 -4
  480. package/models/ai-terminal-conversation.model.js.map +0 -1
  481. package/models/ai-terminal-issue-report.model.d.ts +0 -19
  482. package/models/ai-terminal-issue-report.model.js +0 -4
  483. package/models/ai-terminal-issue-report.model.js.map +0 -1
  484. package/models/ai-terminal-message.model.d.ts +0 -22
  485. package/models/ai-terminal-message.model.js +0 -4
  486. package/models/ai-terminal-message.model.js.map +0 -1
  487. package/models/app-setting.model.d.ts +0 -16
  488. package/models/app-setting.model.js +0 -4
  489. package/models/app-setting.model.js.map +0 -1
  490. package/models/app-status.model.js +0 -4
  491. package/models/app-status.model.js.map +0 -1
  492. package/models/billing-logged-in-users.model.js +0 -4
  493. package/models/billing-logged-in-users.model.js.map +0 -1
  494. package/models/collection-document.model.d.ts +0 -21
  495. package/models/collection-document.model.js +0 -4
  496. package/models/collection-document.model.js.map +0 -1
  497. package/models/communication-metric.model.d.ts +0 -20
  498. package/models/communication-metric.model.js +0 -4
  499. package/models/communication-metric.model.js.map +0 -1
  500. package/models/counter.model.js +0 -4
  501. package/models/counter.model.js.map +0 -1
  502. package/models/cron-job-history.model.d.ts +0 -15
  503. package/models/cron-job-history.model.js +0 -4
  504. package/models/cron-job-history.model.js.map +0 -1
  505. package/models/cron-job.model.d.ts +0 -14
  506. package/models/cron-job.model.js +0 -4
  507. package/models/cron-job.model.js.map +0 -1
  508. package/models/customer-notification.model.d.ts +0 -26
  509. package/models/customer-notification.model.js +0 -4
  510. package/models/customer-notification.model.js.map +0 -1
  511. package/models/customer-portal-password.model.d.ts +0 -11
  512. package/models/customer-portal-password.model.js +0 -4
  513. package/models/customer-portal-password.model.js.map +0 -1
  514. package/models/dialog.model.d.ts +0 -23
  515. package/models/dialog.model.js +0 -4
  516. package/models/dialog.model.js.map +0 -1
  517. package/models/email-history.model.d.ts +0 -32
  518. package/models/email-history.model.js.map +0 -1
  519. package/models/email-verified.model.js +0 -4
  520. package/models/email-verified.model.js.map +0 -1
  521. package/models/file.model.js +0 -4
  522. package/models/file.model.js.map +0 -1
  523. package/models/flag-update.model.js +0 -4
  524. package/models/flag-update.model.js.map +0 -1
  525. package/models/flag.model.js +0 -4
  526. package/models/flag.model.js.map +0 -1
  527. package/models/log-method-latency.model.d.ts +0 -10
  528. package/models/log-method-latency.model.js +0 -4
  529. package/models/log-method-latency.model.js.map +0 -1
  530. package/models/log-subscription.model.js +0 -4
  531. package/models/log-subscription.model.js.map +0 -1
  532. package/models/log.model.d.ts +0 -17
  533. package/models/log.model.js +0 -4
  534. package/models/log.model.js.map +0 -1
  535. package/models/logged-in-users.model.js +0 -4
  536. package/models/logged-in-users.model.js.map +0 -1
  537. package/models/method-response.model.js +0 -4
  538. package/models/method-response.model.js.map +0 -1
  539. package/models/method.model.d.ts +0 -26
  540. package/models/method.model.js +0 -4
  541. package/models/method.model.js.map +0 -1
  542. package/models/monitor-cpu.model.js +0 -4
  543. package/models/monitor-cpu.model.js.map +0 -1
  544. package/models/monitor-function.model.d.ts +0 -14
  545. package/models/monitor-function.model.js +0 -4
  546. package/models/monitor-function.model.js.map +0 -1
  547. package/models/monitor-memory.model.d.ts +0 -15
  548. package/models/monitor-memory.model.js +0 -4
  549. package/models/monitor-memory.model.js.map +0 -1
  550. package/models/monitor-mongo.model.d.ts +0 -13
  551. package/models/monitor-mongo.model.js +0 -4
  552. package/models/monitor-mongo.model.js.map +0 -1
  553. package/models/notification.model.js +0 -4
  554. package/models/notification.model.js.map +0 -1
  555. package/models/openai-usage-ledger.model.d.ts +0 -30
  556. package/models/openai-usage-ledger.model.js +0 -4
  557. package/models/openai-usage-ledger.model.js.map +0 -1
  558. package/models/pagination.model.d.ts +0 -11
  559. package/models/pagination.model.js +0 -28
  560. package/models/pagination.model.js.map +0 -1
  561. package/models/permission.model.d.ts +0 -12
  562. package/models/permission.model.js +0 -4
  563. package/models/permission.model.js.map +0 -1
  564. package/models/report-builder-dashboard-builder.model.d.ts +0 -25
  565. package/models/report-builder-dashboard-builder.model.js +0 -4
  566. package/models/report-builder-dashboard-builder.model.js.map +0 -1
  567. package/models/report-builder-library.model.d.ts +0 -17
  568. package/models/report-builder-library.model.js +0 -4
  569. package/models/report-builder-library.model.js.map +0 -1
  570. package/models/report-builder-report.model.d.ts +0 -121
  571. package/models/report-builder-report.model.js +0 -4
  572. package/models/report-builder-report.model.js.map +0 -1
  573. package/models/report-builder.model.d.ts +0 -61
  574. package/models/report-builder.model.js +0 -4
  575. package/models/report-builder.model.js.map +0 -1
  576. package/models/select-data-label.model.d.ts +0 -9
  577. package/models/select-data-label.model.js +0 -4
  578. package/models/select-data-label.model.js.map +0 -1
  579. package/models/server-message.model.d.ts +0 -32
  580. package/models/server-message.model.js +0 -4
  581. package/models/server-message.model.js.map +0 -1
  582. package/models/slow-query-report.model.d.ts +0 -23
  583. package/models/slow-query-report.model.js +0 -4
  584. package/models/slow-query-report.model.js.map +0 -1
  585. package/models/subscription.model.d.ts +0 -31
  586. package/models/subscription.model.js +0 -4
  587. package/models/subscription.model.js.map +0 -1
  588. package/models/support-ticket.model.d.ts +0 -87
  589. package/models/support-ticket.model.js +0 -4
  590. package/models/support-ticket.model.js.map +0 -1
  591. package/models/user-group.model.d.ts +0 -20
  592. package/models/user-group.model.js +0 -4
  593. package/models/user-group.model.js.map +0 -1
  594. package/models/user-guide.model.js +0 -4
  595. package/models/user-guide.model.js.map +0 -1
  596. package/models/user.model.d.ts +0 -84
  597. package/models/user.model.js +0 -4
  598. package/models/user.model.js.map +0 -1
  599. package/private/images/ResolveIO.png +0 -0
  600. package/public_api.js +0 -127
  601. package/public_api.js.map +0 -1
  602. package/publications/ai-terminal.d.ts +0 -1
  603. package/publications/ai-terminal.js +0 -122
  604. package/publications/ai-terminal.js.map +0 -1
  605. package/publications/app-settings.d.ts +0 -2
  606. package/publications/app-settings.js +0 -28
  607. package/publications/app-settings.js.map +0 -1
  608. package/publications/app-status.d.ts +0 -2
  609. package/publications/app-status.js +0 -16
  610. package/publications/app-status.js.map +0 -1
  611. package/publications/cron-jobs.d.ts +0 -2
  612. package/publications/cron-jobs.js +0 -88
  613. package/publications/cron-jobs.js.map +0 -1
  614. package/publications/customer-notifications.d.ts +0 -2
  615. package/publications/customer-notifications.js +0 -161
  616. package/publications/customer-notifications.js.map +0 -1
  617. package/publications/files.d.ts +0 -2
  618. package/publications/files.js +0 -36
  619. package/publications/files.js.map +0 -1
  620. package/publications/flags-update.d.ts +0 -2
  621. package/publications/flags-update.js +0 -22
  622. package/publications/flags-update.js.map +0 -1
  623. package/publications/flags.d.ts +0 -2
  624. package/publications/flags.js +0 -22
  625. package/publications/flags.js.map +0 -1
  626. package/publications/logs.d.ts +0 -2
  627. package/publications/logs.js +0 -164
  628. package/publications/logs.js.map +0 -1
  629. package/publications/notifications.d.ts +0 -2
  630. package/publications/notifications.js +0 -16
  631. package/publications/notifications.js.map +0 -1
  632. package/publications/report-builder-dashboard-builders.d.ts +0 -2
  633. package/publications/report-builder-dashboard-builders.js +0 -42
  634. package/publications/report-builder-dashboard-builders.js.map +0 -1
  635. package/publications/report-builder-libraries.d.ts +0 -2
  636. package/publications/report-builder-libraries.js +0 -90
  637. package/publications/report-builder-libraries.js.map +0 -1
  638. package/publications/report-builder-reports.d.ts +0 -2
  639. package/publications/report-builder-reports.js +0 -50
  640. package/publications/report-builder-reports.js.map +0 -1
  641. package/publications/super-admin.d.ts +0 -2
  642. package/publications/super-admin.js +0 -16
  643. package/publications/super-admin.js.map +0 -1
  644. package/publications/user-groups.d.ts +0 -1
  645. package/publications/user-groups.js +0 -16
  646. package/publications/user-groups.js.map +0 -1
  647. package/publications/user-guides.d.ts +0 -1
  648. package/publications/user-guides.js +0 -16
  649. package/publications/user-guides.js.map +0 -1
  650. package/resolveio-server-app.d.ts +0 -70
  651. package/resolveio-server-app.js +0 -801
  652. package/resolveio-server-app.js.map +0 -1
  653. package/server-app.d.ts +0 -228
  654. package/server-app.js +0 -3566
  655. package/server-app.js.map +0 -1
  656. package/services/codex-client.d.ts +0 -128
  657. package/services/codex-client.js +0 -1629
  658. package/services/codex-client.js.map +0 -1
  659. package/services/openai-client.d.ts +0 -46
  660. package/services/openai-client.js +0 -318
  661. package/services/openai-client.js.map +0 -1
  662. package/types/error-report.d.ts +0 -25
  663. package/types/error-report.js +0 -4
  664. package/types/error-report.js.map +0 -1
  665. package/types/slow-query-report.d.ts +0 -27
  666. package/types/slow-query-report.js +0 -6
  667. package/types/slow-query-report.js.map +0 -1
  668. package/util/ai-qa-policy.d.ts +0 -124
  669. package/util/ai-qa-policy.js +0 -736
  670. package/util/ai-qa-policy.js.map +0 -1
  671. package/util/ai-run-evidence-adapters.d.ts +0 -33
  672. package/util/ai-run-evidence-adapters.js +0 -838
  673. package/util/ai-run-evidence-adapters.js.map +0 -1
  674. package/util/ai-run-evidence-dashboard.d.ts +0 -84
  675. package/util/ai-run-evidence-dashboard.js +0 -336
  676. package/util/ai-run-evidence-dashboard.js.map +0 -1
  677. package/util/ai-run-evidence-eval.d.ts +0 -86
  678. package/util/ai-run-evidence-eval.js +0 -854
  679. package/util/ai-run-evidence-eval.js.map +0 -1
  680. package/util/ai-run-evidence.d.ts +0 -244
  681. package/util/ai-run-evidence.js +0 -731
  682. package/util/ai-run-evidence.js.map +0 -1
  683. package/util/ai-runner-artifacts.d.ts +0 -82
  684. package/util/ai-runner-artifacts.js +0 -713
  685. package/util/ai-runner-artifacts.js.map +0 -1
  686. package/util/ai-runner-manager-autopilot.d.ts +0 -112
  687. package/util/ai-runner-manager-autopilot.js +0 -313
  688. package/util/ai-runner-manager-autopilot.js.map +0 -1
  689. package/util/ai-runner-manager-policy.d.ts +0 -403
  690. package/util/ai-runner-manager-policy.js +0 -1763
  691. package/util/ai-runner-manager-policy.js.map +0 -1
  692. package/util/ai-runner-qa-auth.d.ts +0 -5
  693. package/util/ai-runner-qa-auth.js +0 -822
  694. package/util/ai-runner-qa-auth.js.map +0 -1
  695. package/util/ai-runner-qa-tools.d.ts +0 -26
  696. package/util/ai-runner-qa-tools.js +0 -3029
  697. package/util/ai-runner-qa-tools.js.map +0 -1
  698. package/util/aicoder-runner-v6.d.ts +0 -214
  699. package/util/aicoder-runner-v6.js +0 -507
  700. package/util/aicoder-runner-v6.js.map +0 -1
  701. package/util/common.d.ts +0 -31
  702. package/util/common.js +0 -683
  703. package/util/common.js.map +0 -1
  704. package/util/customer-portal-password.d.ts +0 -13
  705. package/util/customer-portal-password.js +0 -209
  706. package/util/customer-portal-password.js.map +0 -1
  707. package/util/error-reporter.d.ts +0 -52
  708. package/util/error-reporter.js +0 -326
  709. package/util/error-reporter.js.map +0 -1
  710. package/util/error-tracking.d.ts +0 -13
  711. package/util/error-tracking.js +0 -120
  712. package/util/error-tracking.js.map +0 -1
  713. package/util/openai-usage-cost.d.ts +0 -6
  714. package/util/openai-usage-cost.js +0 -103
  715. package/util/openai-usage-cost.js.map +0 -1
  716. package/util/report-builder-unwinds.d.ts +0 -15
  717. package/util/report-builder-unwinds.js +0 -156
  718. package/util/report-builder-unwinds.js.map +0 -1
  719. package/util/runner-process-janitor.d.ts +0 -27
  720. package/util/runner-process-janitor.js +0 -208
  721. package/util/runner-process-janitor.js.map +0 -1
  722. package/util/schema-report-builder.d.ts +0 -6
  723. package/util/schema-report-builder.js +0 -481
  724. package/util/schema-report-builder.js.map +0 -1
  725. package/util/slow-query-reporter.d.ts +0 -28
  726. package/util/slow-query-reporter.js +0 -226
  727. package/util/slow-query-reporter.js.map +0 -1
  728. package/util/subscription-dependency-context.d.ts +0 -34
  729. package/util/subscription-dependency-context.js +0 -1283
  730. package/util/subscription-dependency-context.js.map +0 -1
  731. package/util/support-runner-v5.d.ts +0 -415
  732. package/util/support-runner-v5.js +0 -1445
  733. package/util/support-runner-v5.js.map +0 -1
  734. package/util/tokenizer.d.ts +0 -5
  735. package/util/tokenizer.js +0 -41
  736. package/util/tokenizer.js.map +0 -1
  737. package/workers/codex-runner.worker.d.ts +0 -1
  738. package/workers/codex-runner.worker.js +0 -192
  739. package/workers/codex-runner.worker.js.map +0 -1
  740. /package/{private → src/private}/email-templates/enrollment.html +0 -0
  741. /package/{private → src/private}/email-templates/forgot-password.html +0 -0
  742. /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
  743. /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
  744. /package/{private → src/private}/email-templates/support-ticket.html +0 -0
  745. /package/{public_api.d.ts → src/public_api.ts} +0 -0
@@ -0,0 +1,875 @@
1
+ import {
2
+ buildResolveIOAIManagerRecoveryCheckpoint,
3
+ buildResolveIOAIManagerRecoveryActionPacket,
4
+ buildResolveIOAIManagerRecoveryEvidenceProbe,
5
+ buildResolveIOAIManagerRecoveryPlan,
6
+ decideResolveIOAIManagerPolicy,
7
+ hashResolveIOAIManagerEvidence,
8
+ ResolveIOAIManagerRecoveryCheckpoint,
9
+ ResolveIOAIManagerRecoveryActionPacket,
10
+ ResolveIOAIManagerRecoveryActionDispatchRecord,
11
+ ResolveIOAIManagerRecoveryExecutionDirective,
12
+ ResolveIOAIManagerRecoveryEvidenceProbe,
13
+ ResolveIOAIManagerRecoveryPlan,
14
+ ResolveIOAIManagerRecoveryPlanInput
15
+ } from './ai-runner-manager-policy';
16
+
17
+ export type ResolveIOAICoderV6Lane =
18
+ | 'intake'
19
+ | 'plan'
20
+ | 'build'
21
+ | 'qa'
22
+ | 'repair'
23
+ | 'review'
24
+ | 'publish';
25
+
26
+ export type ResolveIOAICoderV6StepType =
27
+ | 'intake'
28
+ | 'journey_contract'
29
+ | 'journey_validation'
30
+ | 'plan'
31
+ | 'task'
32
+ | 'workflow_build'
33
+ | 'workflow_qa'
34
+ | 'build'
35
+ | 'qa'
36
+ | 'repair'
37
+ | 'review'
38
+ | 'test_deploy'
39
+ | 'live_deploy'
40
+ | 'publish'
41
+ | 'cleanup';
42
+
43
+ export type ResolveIOAICoderV6Outcome =
44
+ | 'pass'
45
+ | 'needs_repair'
46
+ | 'retry_same_step'
47
+ | 'park_manual'
48
+ | 'budget_stop'
49
+ | 'infra_retry'
50
+ | 'ready_to_publish'
51
+ | 'published';
52
+
53
+ export type ResolveIOAICoderV6RunKind = 'initial_builder' | 'terminal_helper';
54
+
55
+ export interface ResolveIOAICoderV6Budget {
56
+ maxPromptTokensPerNonInitialStep: number;
57
+ maxTotalPromptTokens: number;
58
+ maxLoopsPerRun: number;
59
+ maxRepeatedNoProgress: number;
60
+ maxRuntimeMinutesPerLane: number;
61
+ softBudgetUsd: number;
62
+ hardBudgetUsd: number;
63
+ totalPromptTokenEstimate: number;
64
+ totalInputTokens: number;
65
+ totalCachedInputTokens: number;
66
+ totalOutputTokens: number;
67
+ totalRuntimeMs: number;
68
+ loopCount: number;
69
+ }
70
+
71
+ export interface ResolveIOAICoderV6LaneMemory {
72
+ lane: ResolveIOAICoderV6Lane;
73
+ model: string;
74
+ threadKey: string;
75
+ scopeSummary: string;
76
+ activeStep: ResolveIOAICoderV6StepType;
77
+ activeBlocker: string;
78
+ activeQaRow?: {
79
+ index?: number;
80
+ workflow?: string;
81
+ route?: string;
82
+ assertion?: string;
83
+ status?: string;
84
+ };
85
+ changedFiles: string[];
86
+ artifactPaths: string[];
87
+ latestPromptVersion?: string;
88
+ latestPromptTokenEstimate?: number;
89
+ updatedAt: string;
90
+ }
91
+
92
+ export interface ResolveIOAICoderV6WorkflowQaRow {
93
+ index?: number;
94
+ workflowId?: string;
95
+ stepId?: string;
96
+ route?: string;
97
+ action?: string;
98
+ assertion?: string;
99
+ expectedState?: string;
100
+ status?: string;
101
+ artifactPaths?: string[];
102
+ }
103
+
104
+ export interface ResolveIOAICoderV6WorkflowMemory {
105
+ journeyContractPath: string;
106
+ primaryWorkflowId: string;
107
+ activeWorkflowStep: string;
108
+ workflowQaRows: ResolveIOAICoderV6WorkflowQaRow[];
109
+ completedWorkflowSteps: string[];
110
+ blockedWorkflowStep: string;
111
+ businessProofArtifacts: string[];
112
+ updatedAt: string;
113
+ }
114
+
115
+ export interface ResolveIOAICoderV6SupervisorState {
116
+ version: 'v6';
117
+ runKind: ResolveIOAICoderV6RunKind;
118
+ status: 'active' | 'parked' | 'complete';
119
+ currentGoal: string;
120
+ approvedScope: string;
121
+ branchName: string;
122
+ activeLane: ResolveIOAICoderV6Lane;
123
+ activeStep: ResolveIOAICoderV6StepType;
124
+ activeBlocker: string;
125
+ lastGoodCheckpoint: string;
126
+ lastGoodCommit?: string;
127
+ testDeployStatus?: string;
128
+ liveDeployStatus?: string;
129
+ processLease?: {
130
+ runId?: string;
131
+ token?: string;
132
+ generation?: number;
133
+ workspace?: string;
134
+ lane?: string;
135
+ };
136
+ artifactLinks: string[];
137
+ updatedAt: string;
138
+ }
139
+
140
+ export interface ResolveIOAICoderV6StepRecord {
141
+ stepType: ResolveIOAICoderV6StepType;
142
+ outcome: ResolveIOAICoderV6Outcome;
143
+ lane: ResolveIOAICoderV6Lane;
144
+ model?: string;
145
+ threadKey?: string;
146
+ promptVersion?: string;
147
+ promptTokenEstimate?: number;
148
+ inputTokens?: number;
149
+ cachedInputTokens?: number;
150
+ outputTokens?: number;
151
+ runtimeMs?: number;
152
+ summary: string;
153
+ blocker?: string;
154
+ blockerFingerprint?: string;
155
+ failureClass?: string;
156
+ evidenceHash?: string;
157
+ changedFiles?: string[];
158
+ artifactPaths?: string[];
159
+ nextAction?: ResolveIOAICoderV6ContinuationDecision['action'];
160
+ recordedAt: string;
161
+ }
162
+
163
+ export interface ResolveIOAICoderV6RunnerIncident {
164
+ incidentClass: string;
165
+ summary: string;
166
+ stepType?: ResolveIOAICoderV6StepType;
167
+ lane?: ResolveIOAICoderV6Lane;
168
+ blockerFingerprint?: string;
169
+ artifactPaths?: string[];
170
+ recordedAt: string;
171
+ }
172
+
173
+ export interface ResolveIOAICoderV6StateBundle {
174
+ aiCoderRunnerVersion: 'v6';
175
+ aiCoderV6SupervisorState: ResolveIOAICoderV6SupervisorState;
176
+ aiCoderV6LaneMemory: Record<ResolveIOAICoderV6Lane, ResolveIOAICoderV6LaneMemory>;
177
+ aiCoderV6WorkflowMemory: ResolveIOAICoderV6WorkflowMemory;
178
+ aiCoderV6StepHistory: ResolveIOAICoderV6StepRecord[];
179
+ aiCoderV6Budget: ResolveIOAICoderV6Budget;
180
+ aiCoderV6RunnerIncidents: ResolveIOAICoderV6RunnerIncident[];
181
+ aiCoderV6RecoveryPlan?: ResolveIOAIManagerRecoveryPlan;
182
+ aiCoderV6RecoveryCheckpoint?: ResolveIOAIManagerRecoveryCheckpoint;
183
+ aiCoderV6RecoveryEvidenceProbe?: ResolveIOAIManagerRecoveryEvidenceProbe;
184
+ aiCoderV6RecoveryAction?: ResolveIOAIManagerRecoveryActionPacket;
185
+ aiCoderV6RecoveryDispatchHistory?: ResolveIOAIManagerRecoveryActionDispatchRecord[];
186
+ aiCoderV6RecoveryDirective?: ResolveIOAIManagerRecoveryExecutionDirective;
187
+ }
188
+
189
+ export interface ResolveIOAICoderV6InitializeInput {
190
+ runKind: ResolveIOAICoderV6RunKind;
191
+ jobId: string;
192
+ appId?: string;
193
+ conversationId?: string;
194
+ title?: string;
195
+ description?: string;
196
+ approvedScopeRequirements?: string[];
197
+ branchName?: string;
198
+ journeyContractPath?: string;
199
+ defaultModel?: string;
200
+ laneThreadKeys?: Partial<Record<ResolveIOAICoderV6Lane, string>>;
201
+ processLease?: ResolveIOAICoderV6SupervisorState['processLease'];
202
+ now?: Date | string;
203
+ existing?: Partial<ResolveIOAICoderV6StateBundle>;
204
+ }
205
+
206
+ export interface ResolveIOAICoderV6StepInput {
207
+ stepType: ResolveIOAICoderV6StepType;
208
+ outcome: ResolveIOAICoderV6Outcome;
209
+ lane: ResolveIOAICoderV6Lane;
210
+ model?: string;
211
+ threadKey?: string;
212
+ promptVersion?: string;
213
+ promptTokenEstimate?: number;
214
+ inputTokens?: number;
215
+ cachedInputTokens?: number;
216
+ outputTokens?: number;
217
+ runtimeMs?: number;
218
+ summary?: string;
219
+ blocker?: string;
220
+ failureClass?: string;
221
+ evidenceHash?: string;
222
+ primaryWorkflowId?: string;
223
+ activeWorkflowStep?: string;
224
+ workflowQaRows?: ResolveIOAICoderV6WorkflowQaRow[];
225
+ completedWorkflowSteps?: string[];
226
+ blockedWorkflowStep?: string;
227
+ businessProofArtifacts?: string[];
228
+ changedFiles?: string[];
229
+ artifactPaths?: string[];
230
+ activeQaRow?: ResolveIOAICoderV6LaneMemory['activeQaRow'];
231
+ nextAction?: ResolveIOAICoderV6ContinuationDecision['action'];
232
+ now?: Date | string;
233
+ }
234
+
235
+ export interface ResolveIOAICoderV6ContinuationDecision {
236
+ action: 'continue' | 'retry_same_step' | 'switch_to_repair' | 'park' | 'budget_stop' | 'infra_retry' | 'ready_to_publish';
237
+ reason: string;
238
+ nextLane: ResolveIOAICoderV6Lane;
239
+ nextStep: ResolveIOAICoderV6StepType;
240
+ repeatedNoProgressCount: number;
241
+ budgetExceeded: boolean;
242
+ recoveryPlan: ResolveIOAIManagerRecoveryPlan;
243
+ recoveryCheckpoint: ResolveIOAIManagerRecoveryCheckpoint;
244
+ recoveryEvidenceProbe: ResolveIOAIManagerRecoveryEvidenceProbe;
245
+ recoveryAction: ResolveIOAIManagerRecoveryActionPacket;
246
+ }
247
+
248
+ const LANES: ResolveIOAICoderV6Lane[] = ['intake', 'plan', 'build', 'qa', 'repair', 'review', 'publish'];
249
+
250
+ function isoNow(value?: Date | string): string {
251
+ if (value instanceof Date) {
252
+ return value.toISOString();
253
+ }
254
+ const parsed = value ? new Date(value) : new Date();
255
+ if (Number.isFinite(parsed.getTime())) {
256
+ return parsed.toISOString();
257
+ }
258
+ return new Date().toISOString();
259
+ }
260
+
261
+ function cleanText(value: any, max = 2000): string {
262
+ return String(value || '').replace(/\s+/g, ' ').trim().slice(0, max);
263
+ }
264
+
265
+ function cleanList(values: any, limit = 20, max = 500): string[] {
266
+ if (!Array.isArray(values)) {
267
+ return [];
268
+ }
269
+ const result: string[] = [];
270
+ for (const value of values) {
271
+ const normalized = cleanText(value, max);
272
+ if (normalized && !result.includes(normalized)) {
273
+ result.push(normalized);
274
+ }
275
+ if (result.length >= limit) {
276
+ break;
277
+ }
278
+ }
279
+ return result;
280
+ }
281
+
282
+ function cleanNumber(value: any): number {
283
+ const parsed = Number(value);
284
+ return Number.isFinite(parsed) && parsed > 0 ? Math.floor(parsed) : 0;
285
+ }
286
+
287
+ function cleanWorkflowQaRows(values: any, limit = 40): ResolveIOAICoderV6WorkflowQaRow[] {
288
+ if (!Array.isArray(values)) {
289
+ return [];
290
+ }
291
+ const rows: ResolveIOAICoderV6WorkflowQaRow[] = [];
292
+ for (const value of values) {
293
+ if (!value || typeof value !== 'object') {
294
+ continue;
295
+ }
296
+ const row: ResolveIOAICoderV6WorkflowQaRow = {
297
+ index: cleanNumber((value as any).index) || undefined,
298
+ workflowId: cleanText((value as any).workflowId || (value as any).workflow_id, 160) || undefined,
299
+ stepId: cleanText((value as any).stepId || (value as any).step_id, 160) || undefined,
300
+ route: cleanText((value as any).route, 240) || undefined,
301
+ action: cleanText((value as any).action, 500) || undefined,
302
+ assertion: cleanText((value as any).assertion, 700) || undefined,
303
+ expectedState: cleanText((value as any).expectedState || (value as any).expected_state, 500) || undefined,
304
+ status: cleanText((value as any).status, 120) || undefined,
305
+ artifactPaths: cleanList((value as any).artifactPaths || (value as any).artifact_paths, 20, 500)
306
+ };
307
+ if (row.workflowId || row.stepId || row.route || row.action || row.assertion) {
308
+ rows.push(row);
309
+ }
310
+ if (rows.length >= limit) {
311
+ break;
312
+ }
313
+ }
314
+ return rows;
315
+ }
316
+
317
+ export function fingerprintResolveIOAICoderV6Blocker(value: any): string {
318
+ const text = cleanText(value, 4000)
319
+ .toLowerCase()
320
+ .replace(/[a-f0-9]{16,}/g, '<id>')
321
+ .replace(/\b\d{2,}\b/g, '<n>')
322
+ .replace(/\bline\s+<n>\b/g, 'line <n>')
323
+ .replace(/https?:\/\/\S+/g, '<url>');
324
+ let hash = 0;
325
+ for (let index = 0; index < text.length; index += 1) {
326
+ hash = ((hash << 5) - hash + text.charCodeAt(index)) | 0;
327
+ }
328
+ return `aicoder-v6-${Math.abs(hash).toString(36)}`;
329
+ }
330
+
331
+ function classifyResolveIOAICoderV6FailureClass(step: {
332
+ outcome?: ResolveIOAICoderV6Outcome;
333
+ lane?: ResolveIOAICoderV6Lane;
334
+ stepType?: ResolveIOAICoderV6StepType;
335
+ blocker?: string;
336
+ summary?: string;
337
+ failureClass?: string;
338
+ }): string {
339
+ const explicit = cleanText(step.failureClass, 80).toLowerCase().replace(/[\s-]+/g, '_');
340
+ if (explicit) {
341
+ return explicit;
342
+ }
343
+ if (step.outcome === 'infra_retry') {
344
+ return 'infra';
345
+ }
346
+ const text = `${step.stepType || ''}\n${step.lane || ''}\n${step.blocker || ''}\n${step.summary || ''}`.toLowerCase();
347
+ if (/\b(puppeteer|chrome|browser executable|mongo|port|startup|settings\.json|node_modules|npm install|cache|lock)\b/.test(text)) {
348
+ return 'infra';
349
+ }
350
+ if (/\b(ts[0-9]{3,5}|typescript|compile|build failed|ng build|cannot find name|module not found|syntax error)\b/.test(text)
351
+ || step.stepType === 'build') {
352
+ return 'compile';
353
+ }
354
+ if (step.stepType === 'journey_contract' || step.stepType === 'journey_validation') {
355
+ return 'journey';
356
+ }
357
+ if (step.stepType === 'workflow_qa' || step.lane === 'qa') {
358
+ return 'business';
359
+ }
360
+ if (step.stepType === 'publish' || step.stepType === 'test_deploy' || step.stepType === 'live_deploy' || step.lane === 'publish') {
361
+ return 'release';
362
+ }
363
+ return 'product_code';
364
+ }
365
+
366
+ export function buildResolveIOAICoderV6Budget(existing?: Partial<ResolveIOAICoderV6Budget>): ResolveIOAICoderV6Budget {
367
+ return {
368
+ maxPromptTokensPerNonInitialStep: Number(existing?.maxPromptTokensPerNonInitialStep || 4000),
369
+ maxTotalPromptTokens: Number(existing?.maxTotalPromptTokens || 120000),
370
+ maxLoopsPerRun: Number(existing?.maxLoopsPerRun || 24),
371
+ maxRepeatedNoProgress: Number(existing?.maxRepeatedNoProgress || 2),
372
+ maxRuntimeMinutesPerLane: Number(existing?.maxRuntimeMinutesPerLane || 30),
373
+ softBudgetUsd: Number(existing?.softBudgetUsd || 30),
374
+ hardBudgetUsd: Number(existing?.hardBudgetUsd || 60),
375
+ totalPromptTokenEstimate: cleanNumber(existing?.totalPromptTokenEstimate),
376
+ totalInputTokens: cleanNumber(existing?.totalInputTokens),
377
+ totalCachedInputTokens: cleanNumber(existing?.totalCachedInputTokens),
378
+ totalOutputTokens: cleanNumber(existing?.totalOutputTokens),
379
+ totalRuntimeMs: cleanNumber(existing?.totalRuntimeMs),
380
+ loopCount: cleanNumber(existing?.loopCount)
381
+ };
382
+ }
383
+
384
+ export function initializeResolveIOAICoderV6State(input: ResolveIOAICoderV6InitializeInput): ResolveIOAICoderV6StateBundle {
385
+ const now = isoNow(input.now);
386
+ const existing = input.existing || {};
387
+ const existingSupervisor = existing.aiCoderV6SupervisorState;
388
+ const existingLaneMemory = existing.aiCoderV6LaneMemory || {} as ResolveIOAICoderV6StateBundle['aiCoderV6LaneMemory'];
389
+ const existingWorkflowMemory = existing.aiCoderV6WorkflowMemory || {} as Partial<ResolveIOAICoderV6WorkflowMemory>;
390
+ const scope = cleanList(input.approvedScopeRequirements, 24, 240).join(' | ')
391
+ || cleanText(input.description, 1000)
392
+ || cleanText(input.title, 300);
393
+ const runId = cleanText(input.conversationId || input.jobId || input.appId, 120);
394
+ const defaultModel = cleanText(input.defaultModel || 'gpt-5.3-codex', 80);
395
+ const buildLaneMemory = (lane: ResolveIOAICoderV6Lane): ResolveIOAICoderV6LaneMemory => {
396
+ const previous = existingLaneMemory[lane] || {} as Partial<ResolveIOAICoderV6LaneMemory>;
397
+ return {
398
+ lane,
399
+ model: cleanText(previous.model || defaultModel, 80),
400
+ threadKey: cleanText(input.laneThreadKeys?.[lane] || previous.threadKey || `aicoder:${input.runKind}:${runId}:${lane}`, 240),
401
+ scopeSummary: cleanText(previous.scopeSummary || scope, 1200),
402
+ activeStep: previous.activeStep || (lane === 'plan' ? 'plan' : lane === 'qa' ? 'qa' : lane === 'review' ? 'review' : lane === 'publish' ? 'publish' : 'task'),
403
+ activeBlocker: cleanText(previous.activeBlocker, 1200),
404
+ activeQaRow: previous.activeQaRow,
405
+ changedFiles: cleanList(previous.changedFiles, 80, 500),
406
+ artifactPaths: cleanList(previous.artifactPaths, 80, 500),
407
+ latestPromptVersion: cleanText(previous.latestPromptVersion, 120) || undefined,
408
+ latestPromptTokenEstimate: cleanNumber(previous.latestPromptTokenEstimate) || undefined,
409
+ updatedAt: previous.updatedAt || now
410
+ };
411
+ };
412
+ const laneMemory = LANES.reduce((accumulator, lane) => {
413
+ accumulator[lane] = buildLaneMemory(lane);
414
+ return accumulator;
415
+ }, {} as Record<ResolveIOAICoderV6Lane, ResolveIOAICoderV6LaneMemory>);
416
+ const activeLane = existingSupervisor?.activeLane || (input.runKind === 'initial_builder' ? 'plan' : 'build');
417
+ return {
418
+ aiCoderRunnerVersion: 'v6',
419
+ aiCoderV6SupervisorState: {
420
+ version: 'v6',
421
+ runKind: input.runKind,
422
+ status: existingSupervisor?.status || 'active',
423
+ currentGoal: cleanText(existingSupervisor?.currentGoal || `Run AICoder ${input.runKind} ${runId}`, 500),
424
+ approvedScope: cleanText(existingSupervisor?.approvedScope || scope, 1400),
425
+ branchName: cleanText(input.branchName || existingSupervisor?.branchName, 240),
426
+ activeLane,
427
+ activeStep: existingSupervisor?.activeStep || laneMemory[activeLane].activeStep,
428
+ activeBlocker: cleanText(existingSupervisor?.activeBlocker, 1200),
429
+ lastGoodCheckpoint: existingSupervisor?.lastGoodCheckpoint || 'v6_initialized',
430
+ lastGoodCommit: cleanText(existingSupervisor?.lastGoodCommit, 240) || undefined,
431
+ testDeployStatus: cleanText(existingSupervisor?.testDeployStatus, 120) || undefined,
432
+ liveDeployStatus: cleanText(existingSupervisor?.liveDeployStatus, 120) || undefined,
433
+ processLease: input.processLease || existingSupervisor?.processLease,
434
+ artifactLinks: cleanList(existingSupervisor?.artifactLinks, 80, 500),
435
+ updatedAt: now
436
+ },
437
+ aiCoderV6LaneMemory: laneMemory,
438
+ aiCoderV6WorkflowMemory: {
439
+ journeyContractPath: cleanText(input.journeyContractPath || existingWorkflowMemory.journeyContractPath || 'docs/APP_JOURNEY_CONTRACT.md', 500),
440
+ primaryWorkflowId: cleanText(existingWorkflowMemory.primaryWorkflowId, 200),
441
+ activeWorkflowStep: cleanText(existingWorkflowMemory.activeWorkflowStep, 200),
442
+ workflowQaRows: cleanWorkflowQaRows(existingWorkflowMemory.workflowQaRows, 80),
443
+ completedWorkflowSteps: cleanList(existingWorkflowMemory.completedWorkflowSteps, 80, 240),
444
+ blockedWorkflowStep: cleanText(existingWorkflowMemory.blockedWorkflowStep, 240),
445
+ businessProofArtifacts: cleanList(existingWorkflowMemory.businessProofArtifacts, 80, 500),
446
+ updatedAt: existingWorkflowMemory.updatedAt || now
447
+ },
448
+ aiCoderV6StepHistory: Array.isArray(existing.aiCoderV6StepHistory)
449
+ ? existing.aiCoderV6StepHistory.slice(-100)
450
+ : [],
451
+ aiCoderV6Budget: buildResolveIOAICoderV6Budget(existing.aiCoderV6Budget),
452
+ aiCoderV6RunnerIncidents: Array.isArray(existing.aiCoderV6RunnerIncidents)
453
+ ? existing.aiCoderV6RunnerIncidents.slice(-100)
454
+ : [],
455
+ aiCoderV6RecoveryPlan: (existing as any).aiCoderV6RecoveryPlan,
456
+ aiCoderV6RecoveryCheckpoint: (existing as any).aiCoderV6RecoveryCheckpoint,
457
+ aiCoderV6RecoveryEvidenceProbe: (existing as any).aiCoderV6RecoveryEvidenceProbe,
458
+ aiCoderV6RecoveryAction: (existing as any).aiCoderV6RecoveryAction,
459
+ aiCoderV6RecoveryDispatchHistory: Array.isArray((existing as any).aiCoderV6RecoveryDispatchHistory)
460
+ ? (existing as any).aiCoderV6RecoveryDispatchHistory.slice(-50)
461
+ : [],
462
+ aiCoderV6RecoveryDirective: (existing as any).aiCoderV6RecoveryDirective
463
+ };
464
+ }
465
+
466
+ export function recordResolveIOAICoderV6Step(
467
+ bundle: ResolveIOAICoderV6StateBundle,
468
+ step: ResolveIOAICoderV6StepInput
469
+ ): ResolveIOAICoderV6StateBundle {
470
+ const now = isoNow(step.now);
471
+ const promptTokens = cleanNumber(step.promptTokenEstimate);
472
+ const inputTokens = cleanNumber(step.inputTokens);
473
+ const cachedInputTokens = cleanNumber(step.cachedInputTokens);
474
+ const outputTokens = cleanNumber(step.outputTokens);
475
+ const runtimeMs = cleanNumber(step.runtimeMs);
476
+ const blocker = cleanText(step.blocker, 1200);
477
+ const failureClass = classifyResolveIOAICoderV6FailureClass({
478
+ outcome: step.outcome,
479
+ lane: step.lane,
480
+ stepType: step.stepType,
481
+ blocker,
482
+ summary: step.summary,
483
+ failureClass: step.failureClass
484
+ });
485
+ const previousWorkflowMemory = bundle.aiCoderV6WorkflowMemory || {} as ResolveIOAICoderV6WorkflowMemory;
486
+ const activeWorkflowStep = cleanText(step.activeWorkflowStep || previousWorkflowMemory.activeWorkflowStep, 200);
487
+ const explicitCompletedSteps = cleanList(step.completedWorkflowSteps, 40, 240);
488
+ const completedWorkflowSteps = Array.from(new Set([
489
+ ...cleanList(previousWorkflowMemory.completedWorkflowSteps, 80, 240),
490
+ ...explicitCompletedSteps,
491
+ ...(step.outcome === 'pass' && activeWorkflowStep ? [activeWorkflowStep] : [])
492
+ ])).slice(-80);
493
+ const businessProofArtifacts = Array.from(new Set([
494
+ ...cleanList(previousWorkflowMemory.businessProofArtifacts, 80, 500),
495
+ ...cleanList(step.businessProofArtifacts, 40, 500),
496
+ ...(step.stepType === 'workflow_qa' ? cleanList(step.artifactPaths, 40, 500) : [])
497
+ ])).slice(-80);
498
+ const workflowQaRows = step.workflowQaRows !== undefined
499
+ ? cleanWorkflowQaRows(step.workflowQaRows, 80)
500
+ : cleanWorkflowQaRows(previousWorkflowMemory.workflowQaRows, 80);
501
+ const blockedWorkflowStep = cleanText(
502
+ step.blockedWorkflowStep
503
+ || ((step.outcome === 'needs_repair' || step.outcome === 'park_manual') ? activeWorkflowStep : '')
504
+ || previousWorkflowMemory.blockedWorkflowStep,
505
+ 240
506
+ );
507
+ const record: ResolveIOAICoderV6StepRecord = {
508
+ stepType: step.stepType,
509
+ outcome: step.outcome,
510
+ lane: step.lane,
511
+ model: cleanText(step.model, 80) || undefined,
512
+ threadKey: cleanText(step.threadKey, 240) || undefined,
513
+ promptVersion: cleanText(step.promptVersion, 120) || undefined,
514
+ promptTokenEstimate: promptTokens || undefined,
515
+ inputTokens: inputTokens || undefined,
516
+ cachedInputTokens: cachedInputTokens || undefined,
517
+ outputTokens: outputTokens || undefined,
518
+ runtimeMs: runtimeMs || undefined,
519
+ summary: cleanText(step.summary || blocker || step.outcome, 1200),
520
+ blocker: blocker || undefined,
521
+ blockerFingerprint: blocker ? fingerprintResolveIOAICoderV6Blocker(blocker) : undefined,
522
+ failureClass,
523
+ changedFiles: cleanList(step.changedFiles, 80, 500),
524
+ artifactPaths: cleanList(step.artifactPaths, 80, 500),
525
+ nextAction: step.nextAction,
526
+ recordedAt: now
527
+ };
528
+ record.evidenceHash = cleanText(step.evidenceHash, 120)
529
+ || hashResolveIOAIManagerEvidence(record);
530
+ const previousRecord = bundle.aiCoderV6StepHistory[bundle.aiCoderV6StepHistory.length - 1];
531
+ const managerDecision = decideResolveIOAIManagerPolicy({
532
+ history: [...bundle.aiCoderV6StepHistory, record],
533
+ current: record,
534
+ maxSameFailureRepeats: buildResolveIOAICoderV6Budget(bundle.aiCoderV6Budget).maxRepeatedNoProgress + 1
535
+ });
536
+ const nextLoopCount = managerDecision.loopBudgetShouldReset
537
+ || previousRecord?.failureClass !== record.failureClass
538
+ || previousRecord?.blockerFingerprint !== record.blockerFingerprint
539
+ || previousRecord?.evidenceHash !== record.evidenceHash
540
+ ? 1
541
+ : bundle.aiCoderV6Budget.loopCount + 1;
542
+ const previousLane = bundle.aiCoderV6LaneMemory[step.lane];
543
+ const laneMemory = {
544
+ ...bundle.aiCoderV6LaneMemory,
545
+ [step.lane]: {
546
+ ...previousLane,
547
+ model: record.model || previousLane.model,
548
+ threadKey: record.threadKey || previousLane.threadKey,
549
+ activeStep: step.stepType,
550
+ activeBlocker: record.blocker || previousLane.activeBlocker || '',
551
+ activeQaRow: step.activeQaRow || previousLane.activeQaRow,
552
+ changedFiles: record.changedFiles?.length ? record.changedFiles : previousLane.changedFiles,
553
+ artifactPaths: record.artifactPaths?.length ? record.artifactPaths : previousLane.artifactPaths,
554
+ latestPromptVersion: record.promptVersion || previousLane.latestPromptVersion,
555
+ latestPromptTokenEstimate: promptTokens || previousLane.latestPromptTokenEstimate,
556
+ updatedAt: now
557
+ }
558
+ };
559
+ const complete = step.outcome === 'published' || step.outcome === 'ready_to_publish';
560
+ const parked = step.outcome === 'park_manual' || step.outcome === 'budget_stop';
561
+ return {
562
+ ...bundle,
563
+ aiCoderV6SupervisorState: {
564
+ ...bundle.aiCoderV6SupervisorState,
565
+ status: complete ? 'complete' : (parked ? 'parked' : 'active'),
566
+ activeLane: step.lane,
567
+ activeStep: step.stepType,
568
+ activeBlocker: record.blocker || '',
569
+ lastGoodCheckpoint: step.outcome === 'pass' || complete ? step.stepType : bundle.aiCoderV6SupervisorState.lastGoodCheckpoint,
570
+ artifactLinks: Array.from(new Set([
571
+ ...bundle.aiCoderV6SupervisorState.artifactLinks,
572
+ ...(record.artifactPaths || [])
573
+ ])).slice(-80),
574
+ updatedAt: now
575
+ },
576
+ aiCoderV6LaneMemory: laneMemory,
577
+ aiCoderV6WorkflowMemory: {
578
+ journeyContractPath: cleanText(previousWorkflowMemory.journeyContractPath || 'docs/APP_JOURNEY_CONTRACT.md', 500),
579
+ primaryWorkflowId: cleanText(step.primaryWorkflowId || previousWorkflowMemory.primaryWorkflowId, 200),
580
+ activeWorkflowStep,
581
+ workflowQaRows,
582
+ completedWorkflowSteps,
583
+ blockedWorkflowStep,
584
+ businessProofArtifacts,
585
+ updatedAt: now
586
+ },
587
+ aiCoderV6StepHistory: [...bundle.aiCoderV6StepHistory, record].slice(-120),
588
+ aiCoderV6Budget: {
589
+ ...bundle.aiCoderV6Budget,
590
+ totalPromptTokenEstimate: bundle.aiCoderV6Budget.totalPromptTokenEstimate + promptTokens,
591
+ totalInputTokens: bundle.aiCoderV6Budget.totalInputTokens + inputTokens,
592
+ totalCachedInputTokens: bundle.aiCoderV6Budget.totalCachedInputTokens + cachedInputTokens,
593
+ totalOutputTokens: bundle.aiCoderV6Budget.totalOutputTokens + outputTokens,
594
+ totalRuntimeMs: bundle.aiCoderV6Budget.totalRuntimeMs + runtimeMs,
595
+ loopCount: nextLoopCount
596
+ },
597
+ aiCoderV6RecoveryPlan: managerDecision.recoveryPlan,
598
+ aiCoderV6RecoveryCheckpoint: managerDecision.recoveryCheckpoint,
599
+ aiCoderV6RecoveryEvidenceProbe: managerDecision.recoveryEvidenceProbe,
600
+ aiCoderV6RecoveryAction: managerDecision.recoveryAction
601
+ };
602
+ }
603
+
604
+ export function decideResolveIOAICoderV6Continuation(bundle: ResolveIOAICoderV6StateBundle): ResolveIOAICoderV6ContinuationDecision {
605
+ const history = bundle.aiCoderV6StepHistory || [];
606
+ const budget = buildResolveIOAICoderV6Budget(bundle.aiCoderV6Budget);
607
+ const last = history[history.length - 1];
608
+ const lastFingerprint = fingerprintResolveIOAICoderV6Blocker(last?.blocker || last?.summary || '');
609
+ let repeatedNoProgressCount = 0;
610
+ for (let index = history.length - 1; index >= 0; index -= 1) {
611
+ const item = history[index];
612
+ if (item.outcome === 'pass' || item.outcome === 'ready_to_publish' || item.outcome === 'published') {
613
+ break;
614
+ }
615
+ if (item.stepType !== last?.stepType || item.lane !== last?.lane) {
616
+ break;
617
+ }
618
+ if (fingerprintResolveIOAICoderV6Blocker(item.blocker || item.summary || '') === lastFingerprint) {
619
+ repeatedNoProgressCount += 1;
620
+ }
621
+ }
622
+ const managerDecision = decideResolveIOAIManagerPolicy({
623
+ history,
624
+ current: last,
625
+ maxSameFailureRepeats: budget.maxRepeatedNoProgress + 1,
626
+ maxPingPongTransitions: 3,
627
+ infraFailureClasses: ['infra', 'compile']
628
+ });
629
+ const recoveryPlanFor = (
630
+ action: ResolveIOAICoderV6ContinuationDecision['action'] | string,
631
+ reason: string,
632
+ extra: Partial<ResolveIOAIManagerRecoveryPlanInput> = {}
633
+ ): ResolveIOAIManagerRecoveryPlan => buildResolveIOAIManagerRecoveryPlan({
634
+ action,
635
+ reason,
636
+ failureClass: last?.failureClass,
637
+ lane: last?.lane || bundle.aiCoderV6SupervisorState.activeLane,
638
+ stepType: last?.stepType || bundle.aiCoderV6SupervisorState.activeStep,
639
+ blocker: last?.blocker || last?.summary,
640
+ changedFiles: last?.changedFiles,
641
+ artifactPaths: last?.artifactPaths,
642
+ maxSameFailureRepeats: budget.maxRepeatedNoProgress + 1,
643
+ ...extra
644
+ });
645
+ const recoveryCheckpointFor = (
646
+ recoveryPlan: ResolveIOAIManagerRecoveryPlan
647
+ ): ResolveIOAIManagerRecoveryCheckpoint => buildResolveIOAIManagerRecoveryCheckpoint({
648
+ plan: recoveryPlan,
649
+ current: last
650
+ });
651
+ const recoveryFieldsFor = (
652
+ recoveryPlan: ResolveIOAIManagerRecoveryPlan,
653
+ recoveryCheckpoint?: ResolveIOAIManagerRecoveryCheckpoint,
654
+ recoveryEvidenceProbe?: ResolveIOAIManagerRecoveryEvidenceProbe
655
+ ): Pick<ResolveIOAICoderV6ContinuationDecision, 'recoveryPlan' | 'recoveryCheckpoint' | 'recoveryEvidenceProbe' | 'recoveryAction'> => {
656
+ const checkpoint = recoveryCheckpoint || recoveryCheckpointFor(recoveryPlan);
657
+ const probe = recoveryEvidenceProbe || buildResolveIOAIManagerRecoveryEvidenceProbe({
658
+ checkpoint,
659
+ current: last
660
+ });
661
+ return {
662
+ recoveryPlan,
663
+ recoveryCheckpoint: checkpoint,
664
+ recoveryEvidenceProbe: probe,
665
+ recoveryAction: buildResolveIOAIManagerRecoveryActionPacket({
666
+ plan: recoveryPlan,
667
+ checkpoint,
668
+ probe,
669
+ current: last
670
+ })
671
+ };
672
+ };
673
+ const managerRecoveryFields = () => recoveryFieldsFor(
674
+ managerDecision.recoveryPlan,
675
+ managerDecision.recoveryCheckpoint,
676
+ managerDecision.recoveryEvidenceProbe
677
+ );
678
+ const budgetExceeded = (budget.loopCount >= budget.maxLoopsPerRun && !managerDecision.loopBudgetShouldReset)
679
+ || budget.totalPromptTokenEstimate >= budget.maxTotalPromptTokens
680
+ || (last?.promptTokenEstimate || 0) > budget.maxPromptTokensPerNonInitialStep * 2;
681
+ if (budgetExceeded) {
682
+ const recoveryPlan = recoveryPlanFor('budget_stop', 'aicoder_v6_budget_guard', {
683
+ productRepairFailure: false
684
+ });
685
+ return {
686
+ action: 'budget_stop',
687
+ reason: 'aicoder_v6_budget_guard',
688
+ nextLane: last?.lane || bundle.aiCoderV6SupervisorState.activeLane,
689
+ nextStep: last?.stepType || bundle.aiCoderV6SupervisorState.activeStep,
690
+ repeatedNoProgressCount,
691
+ budgetExceeded,
692
+ ...recoveryFieldsFor(recoveryPlan)
693
+ };
694
+ }
695
+ if (managerDecision.action === 'park_ping_pong') {
696
+ return {
697
+ action: 'park',
698
+ reason: 'aicoder_v6_ping_pong_no_progress',
699
+ nextLane: last?.lane || bundle.aiCoderV6SupervisorState.activeLane,
700
+ nextStep: last?.stepType || bundle.aiCoderV6SupervisorState.activeStep,
701
+ repeatedNoProgressCount: managerDecision.pingPongCount,
702
+ budgetExceeded: false,
703
+ ...managerRecoveryFields()
704
+ };
705
+ }
706
+ if (managerDecision.action === 'park_repeated_failure') {
707
+ return {
708
+ action: 'park',
709
+ reason: 'aicoder_v6_repeated_no_progress',
710
+ nextLane: last?.lane || bundle.aiCoderV6SupervisorState.activeLane,
711
+ nextStep: last?.stepType || bundle.aiCoderV6SupervisorState.activeStep,
712
+ repeatedNoProgressCount: managerDecision.sameFailureCount,
713
+ budgetExceeded: false,
714
+ ...managerRecoveryFields()
715
+ };
716
+ }
717
+ if (repeatedNoProgressCount > budget.maxRepeatedNoProgress) {
718
+ const recoveryPlan = recoveryPlanFor('park', 'aicoder_v6_repeated_no_progress', {
719
+ action: 'park_repeated_failure',
720
+ productRepairFailure: !/^(?:infra|compile|release)$/i.test(String(last?.failureClass || ''))
721
+ });
722
+ return {
723
+ action: 'park',
724
+ reason: 'aicoder_v6_repeated_no_progress',
725
+ nextLane: last?.lane || bundle.aiCoderV6SupervisorState.activeLane,
726
+ nextStep: last?.stepType || bundle.aiCoderV6SupervisorState.activeStep,
727
+ repeatedNoProgressCount,
728
+ budgetExceeded: false,
729
+ ...recoveryFieldsFor(recoveryPlan)
730
+ };
731
+ }
732
+ if (managerDecision.action === 'retry_infra') {
733
+ const compileRepair = managerDecision.recoveryPlan.recoveryClass === 'compile_repair'
734
+ || managerDecision.failureClass === 'compile'
735
+ || last?.failureClass === 'compile';
736
+ return {
737
+ action: 'infra_retry',
738
+ reason: compileRepair ? 'aicoder_v6_compile_repair_required' : 'aicoder_v6_infra_retry',
739
+ nextLane: last?.lane || bundle.aiCoderV6SupervisorState.activeLane,
740
+ nextStep: last?.stepType || bundle.aiCoderV6SupervisorState.activeStep,
741
+ repeatedNoProgressCount,
742
+ budgetExceeded: false,
743
+ ...managerRecoveryFields()
744
+ };
745
+ }
746
+ if (last?.outcome === 'needs_repair') {
747
+ if (last.failureClass === 'journey') {
748
+ return {
749
+ action: 'retry_same_step',
750
+ reason: 'aicoder_v6_journey_contract_repair_required',
751
+ nextLane: 'plan',
752
+ nextStep: last.stepType === 'journey_validation' ? 'journey_contract' : last.stepType,
753
+ repeatedNoProgressCount,
754
+ budgetExceeded: false,
755
+ ...managerRecoveryFields()
756
+ };
757
+ }
758
+ if (last.failureClass === 'release') {
759
+ return {
760
+ action: 'retry_same_step',
761
+ reason: 'aicoder_v6_release_repair_required',
762
+ nextLane: 'publish',
763
+ nextStep: last.stepType,
764
+ repeatedNoProgressCount,
765
+ budgetExceeded: false,
766
+ ...managerRecoveryFields()
767
+ };
768
+ }
769
+ return {
770
+ action: last.lane === 'repair' ? 'retry_same_step' : 'switch_to_repair',
771
+ reason: 'aicoder_v6_repair_required',
772
+ nextLane: 'repair',
773
+ nextStep: 'repair',
774
+ repeatedNoProgressCount,
775
+ budgetExceeded: false,
776
+ ...managerRecoveryFields()
777
+ };
778
+ }
779
+ if (last?.outcome === 'infra_retry') {
780
+ const recoveryPlan = recoveryPlanFor('infra_retry', 'aicoder_v6_infra_retry', {
781
+ failureClass: 'infra',
782
+ productRepairFailure: false
783
+ });
784
+ return {
785
+ action: 'infra_retry',
786
+ reason: 'aicoder_v6_infra_retry',
787
+ nextLane: last.lane,
788
+ nextStep: last.stepType,
789
+ repeatedNoProgressCount,
790
+ budgetExceeded: false,
791
+ ...recoveryFieldsFor(recoveryPlan)
792
+ };
793
+ }
794
+ if (last?.outcome === 'ready_to_publish') {
795
+ const recoveryPlan = recoveryPlanFor('ready_to_publish', 'aicoder_v6_ready_to_publish', {
796
+ failureClass: 'release',
797
+ productRepairFailure: false
798
+ });
799
+ return {
800
+ action: 'ready_to_publish',
801
+ reason: 'aicoder_v6_ready_to_publish',
802
+ nextLane: 'publish',
803
+ nextStep: 'publish',
804
+ repeatedNoProgressCount,
805
+ budgetExceeded: false,
806
+ ...recoveryFieldsFor(recoveryPlan)
807
+ };
808
+ }
809
+ const recoveryPlan = managerDecision.recoveryPlan || recoveryPlanFor('continue', 'aicoder_v6_continue');
810
+ const fallbackCheckpoint = managerDecision.recoveryCheckpoint || recoveryCheckpointFor(recoveryPlan);
811
+ return {
812
+ action: 'continue',
813
+ reason: 'aicoder_v6_continue',
814
+ nextLane: last?.lane || bundle.aiCoderV6SupervisorState.activeLane,
815
+ nextStep: last?.stepType || bundle.aiCoderV6SupervisorState.activeStep,
816
+ repeatedNoProgressCount,
817
+ budgetExceeded: false,
818
+ ...recoveryFieldsFor(recoveryPlan, fallbackCheckpoint, managerDecision.recoveryEvidenceProbe)
819
+ };
820
+ }
821
+
822
+ export function buildResolveIOAICoderV6DiagnoseFirstPrompt(lines: {
823
+ goal?: string;
824
+ approvedScope?: string[];
825
+ activeLane?: ResolveIOAICoderV6Lane;
826
+ activeStep?: ResolveIOAICoderV6StepType;
827
+ activeBlocker?: string;
828
+ laneSummary?: string;
829
+ currentQaRow?: ResolveIOAICoderV6LaneMemory['activeQaRow'];
830
+ journeyContractPath?: string;
831
+ activeWorkflowStep?: string;
832
+ artifactPaths?: string[];
833
+ changedFiles?: string[];
834
+ }): string[] {
835
+ return [
836
+ 'AICoder Runner V6 contract: use compact lane memory, diagnose first, then make the smallest proven next move.',
837
+ 'Start with Diagnose First: observed evidence, likely cause, smallest next action, and expected proof.',
838
+ 'Use current artifacts, changed files, and lane memory before asking for broad context.',
839
+ 'Do not spawn duplicate build, QA, browser, server, Mongo, or Codex processes.',
840
+ 'If repairing, inspect logs/artifacts/source/diff first; retest the failed check before advancing.',
841
+ 'If the same blocker repeats without new proof, park with the exact blocker instead of burning more tokens.',
842
+ lines.goal ? `Goal: ${cleanText(lines.goal, 500)}` : '',
843
+ cleanList(lines.approvedScope, 12, 240).length ? `Approved scope: ${cleanList(lines.approvedScope, 12, 240).join(' | ')}` : '',
844
+ lines.activeLane ? `Active lane: ${lines.activeLane}` : '',
845
+ lines.activeStep ? `Active step: ${lines.activeStep}` : '',
846
+ lines.laneSummary ? `Lane memory: ${cleanText(lines.laneSummary, 700)}` : '',
847
+ lines.activeBlocker ? `Active blocker: ${cleanText(lines.activeBlocker, 800)}` : '',
848
+ lines.currentQaRow?.workflow ? `Current QA row: ${cleanText(lines.currentQaRow.workflow, 300)}` : '',
849
+ lines.currentQaRow?.route ? `Current QA route: ${cleanText(lines.currentQaRow.route, 300)}` : '',
850
+ lines.journeyContractPath ? `Journey contract: ${cleanText(lines.journeyContractPath, 240)}` : '',
851
+ lines.activeWorkflowStep ? `Active workflow step: ${cleanText(lines.activeWorkflowStep, 240)}` : '',
852
+ cleanList(lines.changedFiles, 12, 200).length ? `Changed files: ${cleanList(lines.changedFiles, 12, 200).join(', ')}` : '',
853
+ cleanList(lines.artifactPaths, 12, 240).length ? `Artifacts: ${cleanList(lines.artifactPaths, 12, 240).join(', ')}` : ''
854
+ ].filter(Boolean);
855
+ }
856
+
857
+ export function buildResolveIOAICoderV6Incident(input: {
858
+ incidentClass: string;
859
+ summary: string;
860
+ stepType?: ResolveIOAICoderV6StepType;
861
+ lane?: ResolveIOAICoderV6Lane;
862
+ blocker?: string;
863
+ artifactPaths?: string[];
864
+ now?: Date | string;
865
+ }): ResolveIOAICoderV6RunnerIncident {
866
+ return {
867
+ incidentClass: cleanText(input.incidentClass, 120) || 'aicoder_v6_runner_incident',
868
+ summary: cleanText(input.summary, 1200),
869
+ stepType: input.stepType,
870
+ lane: input.lane,
871
+ blockerFingerprint: input.blocker ? fingerprintResolveIOAICoderV6Blocker(input.blocker) : undefined,
872
+ artifactPaths: cleanList(input.artifactPaths, 40, 500),
873
+ recordedAt: isoNow(input.now)
874
+ };
875
+ }