@resolveio/server-lib 22.3.219 → 22.3.221

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 +29070 -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 +8347 -0
  177. package/src/util/ai-run-evidence-dashboard.ts +323 -0
  178. package/src/util/ai-run-evidence-eval.ts +1057 -0
  179. package/src/util/ai-run-evidence.ts +1430 -0
  180. package/src/util/ai-runner-artifacts.ts +586 -0
  181. package/src/util/ai-runner-manager-autopilot.ts +961 -0
  182. package/src/util/ai-runner-manager-policy.ts +5011 -0
  183. package/src/util/ai-runner-qa-auth.ts +838 -0
  184. package/src/util/ai-runner-qa-tools.ts +3536 -0
  185. package/src/util/aicoder-runner-v6.ts +3121 -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 +10040 -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 +585 -0
  208. package/tests/ai-assistant-snf-live-eval.ts +975 -0
  209. package/tests/ai-assistant-utils.test.ts +4834 -0
  210. package/tests/ai-manager-autopilot-snapshot.test.ts +193 -0
  211. package/tests/ai-manager-recovery-checkpoint.test.ts +1383 -0
  212. package/tests/ai-run-eval.test.ts +132 -0
  213. package/tests/ai-run-evidence.test.ts +3773 -0
  214. package/tests/ai-runner-contract.test.ts +515 -0
  215. package/tests/aicoder-runner-v6.test.ts +822 -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 +3201 -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 -458
  425. package/methods/ai-terminal.js +0 -27991
  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 -109
  672. package/util/ai-run-evidence-adapters.js +0 -7234
  673. package/util/ai-run-evidence-adapters.js.map +0 -1
  674. package/util/ai-run-evidence-dashboard.d.ts +0 -88
  675. package/util/ai-run-evidence-dashboard.js +0 -343
  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 -1018
  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 -1096
  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 -210
  687. package/util/ai-runner-manager-autopilot.js +0 -642
  688. package/util/ai-runner-manager-autopilot.js.map +0 -1
  689. package/util/ai-runner-manager-policy.d.ts +0 -807
  690. package/util/ai-runner-manager-policy.js +0 -3501
  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 -839
  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 -3520
  697. package/util/ai-runner-qa-tools.js.map +0 -1
  698. package/util/aicoder-runner-v6.d.ts +0 -426
  699. package/util/aicoder-runner-v6.js +0 -2464
  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 -1426
  732. package/util/support-runner-v5.js +0 -7624
  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,961 @@
1
+ import {
2
+ assessResolveIOAIManagerEvidenceChange,
3
+ decideResolveIOAIManagerAutonomyPolicy,
4
+ ResolveIOAIManagerAutonomyPolicyDecision,
5
+ ResolveIOAIManagerAutonomyPolicyInput,
6
+ ResolveIOAIManagerFailureRecord,
7
+ ResolveIOAIManagerRecoveryActionDispatchRecord,
8
+ ResolveIOAIManagerRecoveryActionPacket,
9
+ ResolveIOAIManagerRecoveryCheckpoint,
10
+ ResolveIOAIManagerRecoveryExecutionDirective,
11
+ ResolveIOAIManagerRecoveryEvidenceProbe,
12
+ ResolveIOAIManagerRecoveryPlan
13
+ } from './ai-runner-manager-policy';
14
+
15
+ export type ResolveIOAIManagerAutopilotSafetyLevel = 'low' | 'medium' | 'high' | 'blocked';
16
+
17
+ export interface ResolveIOAIManagerAutopilotRecommendedAction {
18
+ action: string;
19
+ label: string;
20
+ reason: string;
21
+ safety: ResolveIOAIManagerAutopilotSafetyLevel;
22
+ enabled: boolean;
23
+ autoRunnable: boolean;
24
+ expectedResult: string;
25
+ requiresNewEvidence: boolean;
26
+ canRunProductRepair: boolean;
27
+ canRunExpensiveModel: boolean;
28
+ canResetLoopAfterEvidence: boolean;
29
+ singleActionOnly: boolean;
30
+ allowedDispatchAction: string;
31
+ costCeilingUsd: number;
32
+ requiredStateTransition: string;
33
+ proofRequiredBeforeContinuation: boolean;
34
+ autonomyMode: string;
35
+ autonomyCanAutoDispatch: boolean;
36
+ autonomyBlocked: boolean;
37
+ expectedValueScore: number;
38
+ expectedValueSource: string;
39
+ expectedValuePositive: boolean;
40
+ evidenceBacked: boolean;
41
+ evidenceStrength: string;
42
+ dispatchAction?: string;
43
+ }
44
+
45
+ export interface ResolveIOAIManagerAutopilotControlAction {
46
+ action: string;
47
+ label: string;
48
+ group: 'primary' | 'policy' | 'evidence' | 'release' | 'danger';
49
+ enabled: boolean;
50
+ autoRunnable: boolean;
51
+ requiresConfirmation: boolean;
52
+ confirmationReason: string;
53
+ safety: ResolveIOAIManagerAutopilotSafetyLevel;
54
+ reason: string;
55
+ nextCommand: string;
56
+ expectedResult: string;
57
+ costCeilingUsd: number;
58
+ }
59
+
60
+ export interface ResolveIOAIManagerAutopilotControlGroup {
61
+ groupId: 'policy' | 'evidence' | 'release' | 'danger';
62
+ label: string;
63
+ actions: ResolveIOAIManagerAutopilotControlAction[];
64
+ }
65
+
66
+ export interface ResolveIOAIManagerAutopilotControlPolicy {
67
+ mode: string;
68
+ modeLabel: string;
69
+ modeDescription: string;
70
+ onePrimaryActionOnly: true;
71
+ blocked: boolean;
72
+ blockedReason: string;
73
+ canAutoDispatch: boolean;
74
+ requiresHumanDecision: boolean;
75
+ primaryAction: ResolveIOAIManagerAutopilotControlAction;
76
+ secondaryActionGroups: ResolveIOAIManagerAutopilotControlGroup[];
77
+ budget: {
78
+ currentRunUsd: number;
79
+ totalUsd: number;
80
+ projectedActionCostUsd: number;
81
+ projectedSpendUsd: number;
82
+ budgetSoftUsd: number;
83
+ budgetHardUsd: number;
84
+ softBudgetExceeded: boolean;
85
+ hardBudgetExceeded: boolean;
86
+ untrackedWarning: string;
87
+ };
88
+ }
89
+
90
+ export interface ResolveIOAIManagerHumanDecisionChoice {
91
+ choiceId: string;
92
+ label: string;
93
+ action: string;
94
+ description: string;
95
+ safety: ResolveIOAIManagerAutopilotSafetyLevel;
96
+ requiresConfirmation: boolean;
97
+ nextCommand: string;
98
+ expectedResult: string;
99
+ }
100
+
101
+ export interface ResolveIOAIManagerHumanDecisionRequest {
102
+ requestId: string;
103
+ required: boolean;
104
+ status: 'not_required' | 'waiting_for_operator';
105
+ reason: string;
106
+ question: string;
107
+ preferredChoiceId: string;
108
+ evidence: {
109
+ failureClass: string;
110
+ blocker: string;
111
+ blockerFingerprint: string;
112
+ evidenceHash: string;
113
+ checkpointId: string;
114
+ recoveryClass: string;
115
+ dispatchAction: string;
116
+ requiredArtifacts: string[];
117
+ forbiddenActions: string[];
118
+ recentArtifactPaths: string[];
119
+ };
120
+ choices: ResolveIOAIManagerHumanDecisionChoice[];
121
+ blockedUntil: string[];
122
+ createdAt: string;
123
+ }
124
+
125
+ export interface ResolveIOAIManagerAutopilotLoopGuard {
126
+ state: 'clear' | 'collecting_evidence' | 'parked' | 'manual_handoff' | 'complete';
127
+ blocked: boolean;
128
+ reason: string;
129
+ failureClass: string;
130
+ blocker: string;
131
+ blockerFingerprint: string;
132
+ evidenceHash: string;
133
+ materialEvidence: boolean;
134
+ evidenceStrength: string;
135
+ evidenceSignals: string[];
136
+ sameEvidenceDispatchCount: number;
137
+ sameEvidenceAlreadyAttempted: boolean;
138
+ loopCount: number;
139
+ maxLoopCount: number;
140
+ attempts: number;
141
+ maxAttemptsBeforePark: number;
142
+ canResetLoopAfterEvidence: boolean;
143
+ resetRequires: string[];
144
+ }
145
+
146
+ export interface ResolveIOAIManagerAutopilotRecentDispatch {
147
+ dispatchId: string;
148
+ actionId: string;
149
+ checkpointId: string;
150
+ probeId: string;
151
+ mode: string;
152
+ dispatchAction: string;
153
+ status: string;
154
+ reason: string;
155
+ evidenceHash: string;
156
+ blockerFingerprint: string;
157
+ artifactPaths: string[];
158
+ startedAt: string;
159
+ completedAt: string;
160
+ createdAt: string;
161
+ }
162
+
163
+ export interface ResolveIOAIManagerAutopilotSnapshot {
164
+ surface: string;
165
+ runId: string;
166
+ title: string;
167
+ status: string;
168
+ phase: string;
169
+ lane: string;
170
+ stepType: string;
171
+ runKind: string;
172
+ recommendedAction: ResolveIOAIManagerAutopilotRecommendedAction;
173
+ controlPolicy: ResolveIOAIManagerAutopilotControlPolicy;
174
+ loopGuard: ResolveIOAIManagerAutopilotLoopGuard;
175
+ recovery: {
176
+ checkpointId: string;
177
+ recoveryClass: string;
178
+ dispatchAction: string;
179
+ singleActionOnly: boolean;
180
+ allowedDispatchAction: string;
181
+ directiveAllowed: boolean;
182
+ evidenceOnly: boolean;
183
+ productRepairAllowed: boolean;
184
+ expensiveModelAllowed: boolean;
185
+ costCeilingUsd: number;
186
+ requiredStateTransition: string;
187
+ proofRequiredBeforeContinuation: boolean;
188
+ requiredArtifacts: string[];
189
+ nextCommands: string[];
190
+ successCriteria: string[];
191
+ exitCriteria: string[];
192
+ forbiddenActions: string[];
193
+ };
194
+ autonomyPolicy: ResolveIOAIManagerAutonomyPolicyDecision;
195
+ recentDispatches: ResolveIOAIManagerAutopilotRecentDispatch[];
196
+ humanDecision: ResolveIOAIManagerHumanDecisionRequest;
197
+ cost: {
198
+ currentRunUsd: number;
199
+ totalUsd: number;
200
+ currentRunTokens: number;
201
+ totalTokens: number;
202
+ untrackedWarning: string;
203
+ };
204
+ updatedAt: string;
205
+ }
206
+
207
+ export interface ResolveIOAIManagerAutopilotSnapshotInput {
208
+ surface: string;
209
+ runId?: string;
210
+ title?: string;
211
+ status?: string;
212
+ phase?: string;
213
+ lane?: string;
214
+ stepType?: string;
215
+ runKind?: string;
216
+ current?: ResolveIOAIManagerFailureRecord;
217
+ recoveryPlan?: ResolveIOAIManagerRecoveryPlan;
218
+ recoveryCheckpoint?: ResolveIOAIManagerRecoveryCheckpoint;
219
+ recoveryEvidenceProbe?: ResolveIOAIManagerRecoveryEvidenceProbe;
220
+ recoveryAction?: ResolveIOAIManagerRecoveryActionPacket;
221
+ recoveryDirective?: ResolveIOAIManagerRecoveryExecutionDirective;
222
+ recoveryDispatchHistory?: ResolveIOAIManagerRecoveryActionDispatchRecord[];
223
+ loopCount?: number;
224
+ maxLoopCount?: number;
225
+ currentRunUsd?: number;
226
+ totalUsd?: number;
227
+ currentRunTokens?: number;
228
+ totalTokens?: number;
229
+ untrackedCostWarning?: string;
230
+ autonomyPolicy?: ResolveIOAIManagerAutonomyPolicyInput;
231
+ updatedAt?: Date | string;
232
+ }
233
+
234
+ function cleanText(value: any, max = 1000): string {
235
+ return String(value || '').replace(/\s+/g, ' ').trim().slice(0, max);
236
+ }
237
+
238
+ function cleanList(value: any, limit = 20, max = 500): string[] {
239
+ const raw = Array.isArray(value) ? value : [];
240
+ const output: string[] = [];
241
+ for (const entry of raw) {
242
+ const cleaned = cleanText(entry, max);
243
+ if (cleaned && !output.includes(cleaned)) {
244
+ output.push(cleaned);
245
+ }
246
+ if (output.length >= limit) {
247
+ break;
248
+ }
249
+ }
250
+ return output;
251
+ }
252
+
253
+ function cleanNumber(value: any): number {
254
+ const parsed = Number(value);
255
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : 0;
256
+ }
257
+
258
+ function isoNow(value?: Date | string): string {
259
+ if (value instanceof Date) {
260
+ return value.toISOString();
261
+ }
262
+ const parsed = value ? new Date(value) : new Date();
263
+ return Number.isFinite(parsed.getTime()) ? parsed.toISOString() : new Date().toISOString();
264
+ }
265
+
266
+ function stableHash(prefix: string, value: any): string {
267
+ const normalized = typeof value === 'string'
268
+ ? cleanText(value, 12000)
269
+ : JSON.stringify(value || {});
270
+ let hash = 0;
271
+ for (let index = 0; index < normalized.length; index += 1) {
272
+ hash = ((hash << 5) - hash + normalized.charCodeAt(index)) | 0;
273
+ }
274
+ return `${prefix}-${Math.abs(hash).toString(36) || '0'}`;
275
+ }
276
+
277
+ function defaultLabelForAction(action: string): string {
278
+ switch (action) {
279
+ case 'run_evidence_probe':
280
+ return 'Collect New Evidence';
281
+ case 'run_read_only_diagnosis':
282
+ return 'Run Diagnosis';
283
+ case 'run_infra_repair':
284
+ return 'Repair Infra';
285
+ case 'run_compile_repair':
286
+ return 'Repair Compile';
287
+ case 'run_journey_contract_repair':
288
+ return 'Repair Journey';
289
+ case 'run_business_assertion_repair':
290
+ return 'Repair Business Proof';
291
+ case 'run_release_repair':
292
+ return 'Repair Release';
293
+ case 'run_targeted_product_repair':
294
+ return 'Run Targeted Repair';
295
+ case 'advance':
296
+ return 'Advance';
297
+ case 'continue_gate':
298
+ return 'Continue Gate';
299
+ case 'park_manual':
300
+ return 'Attach New Evidence';
301
+ default:
302
+ return action ? cleanText(action.replace(/_/g, ' '), 120) : 'Review Manager State';
303
+ }
304
+ }
305
+
306
+ function expectedResultForAction(action: string, evidenceOnly: boolean): string {
307
+ if (action === 'park_manual') {
308
+ return 'Runner stays parked until new evidence, operator approval, or a changed blocker is recorded.';
309
+ }
310
+ if (evidenceOnly || action === 'run_evidence_probe' || action === 'run_read_only_diagnosis') {
311
+ return 'Runner records a new artifact path or changed evidence hash before any more product repair.';
312
+ }
313
+ if (action === 'run_infra_repair' || action === 'run_compile_repair' || action === 'run_release_repair') {
314
+ return 'Runner repairs only the named deterministic gate and reruns that gate.';
315
+ }
316
+ if (action === 'run_targeted_product_repair') {
317
+ return 'Runner performs one bounded owner-scope repair and then returns to deterministic proof.';
318
+ }
319
+ return 'Runner advances only after the current gate has proof.';
320
+ }
321
+
322
+ function autonomyModeLabel(mode: string): string {
323
+ switch (mode) {
324
+ case 'monitor_only':
325
+ return 'Monitor Only';
326
+ case 'auto_retry_within_budget':
327
+ return 'Auto Retry Within Budget';
328
+ case 'manual_only':
329
+ default:
330
+ return 'Manual Only';
331
+ }
332
+ }
333
+
334
+ function autonomyModeDescription(mode: string): string {
335
+ switch (mode) {
336
+ case 'monitor_only':
337
+ return 'Watch the runner and record evidence, but do not dispatch recovery, repair, QA, release, or customer actions.';
338
+ case 'auto_retry_within_budget':
339
+ return 'Auto-dispatch only evidence-backed actions with positive expected value inside the configured budget.';
340
+ case 'manual_only':
341
+ default:
342
+ return 'Show the safest next action, but require an operator to dispatch it.';
343
+ }
344
+ }
345
+
346
+ function controlAction(input: {
347
+ action: string;
348
+ label?: string;
349
+ group: ResolveIOAIManagerAutopilotControlAction['group'];
350
+ enabled?: boolean;
351
+ autoRunnable?: boolean;
352
+ requiresConfirmation?: boolean;
353
+ confirmationReason?: string;
354
+ safety?: ResolveIOAIManagerAutopilotSafetyLevel;
355
+ reason?: string;
356
+ nextCommand?: string;
357
+ expectedResult?: string;
358
+ costCeilingUsd?: number;
359
+ }): ResolveIOAIManagerAutopilotControlAction {
360
+ const action = cleanText(input.action, 120) || 'review';
361
+ return {
362
+ action,
363
+ label: cleanText(input.label, 160) || defaultLabelForAction(action),
364
+ group: input.group,
365
+ enabled: input.enabled !== false,
366
+ autoRunnable: input.autoRunnable === true,
367
+ requiresConfirmation: input.requiresConfirmation === true,
368
+ confirmationReason: cleanText(input.confirmationReason, 500),
369
+ safety: input.safety || 'medium',
370
+ reason: cleanText(input.reason, 1000),
371
+ nextCommand: cleanText(input.nextCommand || action, 160),
372
+ expectedResult: cleanText(input.expectedResult || expectedResultForAction(action, false), 500),
373
+ costCeilingUsd: cleanNumber(input.costCeilingUsd)
374
+ };
375
+ }
376
+
377
+ function safetyFor(input: {
378
+ action: string;
379
+ enabled: boolean;
380
+ evidenceOnly: boolean;
381
+ productRepairAllowed: boolean;
382
+ expensiveModelAllowed: boolean;
383
+ }): ResolveIOAIManagerAutopilotSafetyLevel {
384
+ if (!input.enabled || input.action === 'park_manual') {
385
+ return 'blocked';
386
+ }
387
+ if (input.evidenceOnly || input.action === 'run_evidence_probe' || input.action === 'run_read_only_diagnosis') {
388
+ return 'low';
389
+ }
390
+ if (input.expensiveModelAllowed || input.action === 'run_targeted_product_repair') {
391
+ return 'high';
392
+ }
393
+ if (input.productRepairAllowed) {
394
+ return 'medium';
395
+ }
396
+ return 'medium';
397
+ }
398
+
399
+ function buildControlPolicy(input: {
400
+ recommendedAction: ResolveIOAIManagerAutopilotRecommendedAction;
401
+ autonomyPolicy: ResolveIOAIManagerAutonomyPolicyDecision;
402
+ humanDecision: ResolveIOAIManagerHumanDecisionRequest;
403
+ recoveryRequiredArtifacts: string[];
404
+ recoveryForbiddenActions: string[];
405
+ currentRunUsd: number;
406
+ totalUsd: number;
407
+ untrackedWarning: string;
408
+ }): ResolveIOAIManagerAutopilotControlPolicy {
409
+ const recommended = input.recommendedAction;
410
+ const autonomy = input.autonomyPolicy;
411
+ const blocked = recommended.enabled === false || autonomy.blocked === true || recommended.action === 'park_manual';
412
+ const primaryAction = controlAction({
413
+ action: recommended.action,
414
+ label: recommended.label,
415
+ group: 'primary',
416
+ enabled: recommended.enabled,
417
+ autoRunnable: recommended.autoRunnable,
418
+ requiresConfirmation: recommended.safety === 'high'
419
+ || recommended.canRunExpensiveModel
420
+ || recommended.action === 'run_targeted_product_repair'
421
+ || recommended.action === 'run_release_repair',
422
+ confirmationReason: recommended.safety === 'high'
423
+ ? 'This can spend model tokens or modify product code; confirm the diagnosis/proof gate is current.'
424
+ : recommended.action === 'run_release_repair'
425
+ ? 'This can affect release state; confirm hotfix/release evidence first.'
426
+ : '',
427
+ safety: recommended.safety,
428
+ reason: recommended.reason,
429
+ nextCommand: recommended.allowedDispatchAction || recommended.dispatchAction || recommended.action,
430
+ expectedResult: recommended.expectedResult,
431
+ costCeilingUsd: recommended.costCeilingUsd
432
+ });
433
+ const policyActions = (['manual_only', 'monitor_only', 'auto_retry_within_budget'] as const).map((mode) => controlAction({
434
+ action: `set_mode:${mode}`,
435
+ label: autonomyModeLabel(mode),
436
+ group: 'policy',
437
+ enabled: autonomy.mode !== mode,
438
+ autoRunnable: false,
439
+ requiresConfirmation: mode === 'auto_retry_within_budget',
440
+ confirmationReason: mode === 'auto_retry_within_budget'
441
+ ? 'Auto retry will dispatch only evidence-backed actions inside budget, but can still spend runner tokens.'
442
+ : '',
443
+ safety: mode === 'auto_retry_within_budget' ? 'medium' : 'low',
444
+ reason: mode === autonomy.mode ? 'Current manager mode.' : autonomyModeDescription(mode),
445
+ nextCommand: `set_manager_mode_${mode}`,
446
+ expectedResult: mode === autonomy.mode ? 'Mode is unchanged.' : `Manager switches to ${autonomyModeLabel(mode)}.`,
447
+ costCeilingUsd: 0
448
+ }));
449
+ const choiceActions = (input.humanDecision.choices || [])
450
+ .filter((choice) => choice.action !== recommended.action)
451
+ .map((choice) => controlAction({
452
+ action: choice.action,
453
+ label: choice.label,
454
+ group: choice.action === 'record_hotfix_evidence' ? 'release' : (choice.action === 'park_manual' ? 'danger' : 'evidence'),
455
+ enabled: true,
456
+ autoRunnable: false,
457
+ requiresConfirmation: choice.requiresConfirmation || choice.action === 'park_manual',
458
+ confirmationReason: choice.requiresConfirmation
459
+ ? choice.description
460
+ : choice.action === 'park_manual'
461
+ ? 'Parking stops automated progress until new evidence or operator policy changes.'
462
+ : '',
463
+ safety: choice.safety,
464
+ reason: choice.description,
465
+ nextCommand: choice.nextCommand,
466
+ expectedResult: choice.expectedResult,
467
+ costCeilingUsd: 0
468
+ }));
469
+ if (recommended.requiresNewEvidence && !choiceActions.some((action) => action.action === 'run_evidence_probe')) {
470
+ choiceActions.unshift(controlAction({
471
+ action: 'run_evidence_probe',
472
+ label: 'Collect New Evidence',
473
+ group: 'evidence',
474
+ enabled: true,
475
+ autoRunnable: false,
476
+ requiresConfirmation: false,
477
+ safety: 'low',
478
+ reason: 'Collect deterministic evidence before another repair loop.',
479
+ nextCommand: 'run_evidence_probe',
480
+ expectedResult: 'A new artifact path or changed evidence hash is recorded.',
481
+ costCeilingUsd: 0.25
482
+ }));
483
+ }
484
+ const grouped = ([
485
+ { groupId: 'policy', label: 'Mode', actions: policyActions },
486
+ { groupId: 'evidence', label: 'Evidence', actions: choiceActions.filter((action) => action.group === 'evidence') },
487
+ { groupId: 'release', label: 'Release', actions: choiceActions.filter((action) => action.group === 'release') },
488
+ { groupId: 'danger', label: 'Danger Zone', actions: choiceActions.filter((action) => action.group === 'danger') }
489
+ ] as ResolveIOAIManagerAutopilotControlGroup[]).filter((group) => group.actions.length > 0);
490
+ return {
491
+ mode: autonomy.mode,
492
+ modeLabel: autonomyModeLabel(autonomy.mode),
493
+ modeDescription: autonomyModeDescription(autonomy.mode),
494
+ onePrimaryActionOnly: true,
495
+ blocked,
496
+ blockedReason: blocked ? cleanText(autonomy.reason || recommended.reason, 1000) : '',
497
+ canAutoDispatch: recommended.autoRunnable === true && autonomy.canAutoDispatch === true,
498
+ requiresHumanDecision: input.humanDecision.required === true || recommended.autoRunnable !== true,
499
+ primaryAction,
500
+ secondaryActionGroups: grouped,
501
+ budget: {
502
+ currentRunUsd: input.currentRunUsd,
503
+ totalUsd: input.totalUsd,
504
+ projectedActionCostUsd: autonomy.projectedActionCostUsd,
505
+ projectedSpendUsd: autonomy.projectedSpendUsd,
506
+ budgetSoftUsd: autonomy.budgetSoftUsd,
507
+ budgetHardUsd: autonomy.budgetHardUsd,
508
+ softBudgetExceeded: autonomy.softBudgetExceeded,
509
+ hardBudgetExceeded: autonomy.hardBudgetExceeded,
510
+ untrackedWarning: input.untrackedWarning
511
+ }
512
+ };
513
+ }
514
+
515
+ function resolveDispatchAction(input: ResolveIOAIManagerAutopilotSnapshotInput): string {
516
+ const directiveAction = cleanText(input.recoveryDirective?.dispatchAction, 120);
517
+ if (directiveAction) {
518
+ return directiveAction;
519
+ }
520
+ const actionMode = cleanText(input.recoveryAction?.mode, 120);
521
+ switch (actionMode) {
522
+ case 'collect_evidence':
523
+ return 'run_evidence_probe';
524
+ case 'read_only_diagnosis':
525
+ return 'run_read_only_diagnosis';
526
+ case 'repair_infra':
527
+ return 'run_infra_repair';
528
+ case 'repair_compile':
529
+ return 'run_compile_repair';
530
+ case 'repair_journey_contract':
531
+ return 'run_journey_contract_repair';
532
+ case 'repair_business_assertion':
533
+ return 'run_business_assertion_repair';
534
+ case 'repair_release':
535
+ return 'run_release_repair';
536
+ case 'targeted_product_repair':
537
+ return 'run_targeted_product_repair';
538
+ case 'advance':
539
+ return 'advance';
540
+ case 'continue_gate':
541
+ return 'continue_gate';
542
+ case 'manual_review':
543
+ return 'park_manual';
544
+ default:
545
+ return input.recoveryCheckpoint?.status === 'parked' ? 'run_evidence_probe' : 'continue_gate';
546
+ }
547
+ }
548
+
549
+ function countSameEvidenceDispatches(input: ResolveIOAIManagerAutopilotSnapshotInput, dispatchAction: string): number {
550
+ const checkpointId = cleanText(input.recoveryCheckpoint?.checkpointId || input.recoveryAction?.checkpointId, 160);
551
+ const actionId = cleanText(input.recoveryAction?.actionId, 160);
552
+ const evidenceHash = cleanText(input.current?.evidenceHash || input.recoveryCheckpoint?.evidenceHash, 160);
553
+ const blockerFingerprint = cleanText(input.current?.blockerFingerprint || input.recoveryCheckpoint?.blockerFingerprint, 160);
554
+ const history = Array.isArray(input.recoveryDispatchHistory) ? input.recoveryDispatchHistory : [];
555
+ return history.filter((entry) => {
556
+ const sameCheckpoint = checkpointId && cleanText(entry?.checkpointId, 160) === checkpointId;
557
+ const sameAction = actionId && cleanText(entry?.actionId, 160) === actionId;
558
+ const sameEvidence = !evidenceHash || cleanText(entry?.evidenceHash, 160) === evidenceHash;
559
+ const sameBlocker = !blockerFingerprint || cleanText(entry?.blockerFingerprint, 160) === blockerFingerprint;
560
+ const sameDispatchAction = !dispatchAction
561
+ || dispatchAction === 'park_manual'
562
+ || cleanText(entry?.dispatchAction, 120) === dispatchAction
563
+ || cleanText(entry?.dispatchAction, 120) === 'park_manual';
564
+ return (sameCheckpoint || sameAction) && sameEvidence && sameBlocker && sameDispatchAction;
565
+ }).length;
566
+ }
567
+
568
+ function normalizeRecentDispatches(history: ResolveIOAIManagerRecoveryActionDispatchRecord[] | undefined): ResolveIOAIManagerAutopilotRecentDispatch[] {
569
+ const source = Array.isArray(history) ? history.filter(Boolean) : [];
570
+ return source.slice(-5).reverse().map((entry) => ({
571
+ dispatchId: cleanText(entry?.dispatchId, 160),
572
+ actionId: cleanText(entry?.actionId, 160),
573
+ checkpointId: cleanText(entry?.checkpointId, 160),
574
+ probeId: cleanText(entry?.probeId, 160),
575
+ mode: cleanText(entry?.mode, 120),
576
+ dispatchAction: cleanText(entry?.dispatchAction, 120),
577
+ status: cleanText(entry?.status, 80),
578
+ reason: cleanText(entry?.reason, 500),
579
+ evidenceHash: cleanText(entry?.evidenceHash, 160),
580
+ blockerFingerprint: cleanText(entry?.blockerFingerprint, 160),
581
+ artifactPaths: cleanList(entry?.artifactPaths, 8, 500),
582
+ startedAt: cleanText(entry?.startedAt, 80),
583
+ completedAt: cleanText(entry?.completedAt, 80),
584
+ createdAt: cleanText(entry?.createdAt, 80)
585
+ }));
586
+ }
587
+
588
+ function humanDecisionChoice(
589
+ choiceId: string,
590
+ label: string,
591
+ action: string,
592
+ description: string,
593
+ safety: ResolveIOAIManagerAutopilotSafetyLevel,
594
+ nextCommand: string,
595
+ expectedResult: string,
596
+ requiresConfirmation = false
597
+ ): ResolveIOAIManagerHumanDecisionChoice {
598
+ return {
599
+ choiceId,
600
+ label,
601
+ action,
602
+ description: cleanText(description, 500),
603
+ safety,
604
+ requiresConfirmation,
605
+ nextCommand,
606
+ expectedResult: cleanText(expectedResult, 500)
607
+ };
608
+ }
609
+
610
+ function buildHumanDecisionRequest(input: {
611
+ snapshot: ResolveIOAIManagerAutopilotSnapshotInput;
612
+ recommendedAction: ResolveIOAIManagerAutopilotRecommendedAction;
613
+ loopState: ResolveIOAIManagerAutopilotLoopGuard['state'];
614
+ reason: string;
615
+ dispatchAction: string;
616
+ sameEvidenceAlreadyAttempted: boolean;
617
+ requiresNewEvidence: boolean;
618
+ requiredArtifacts: string[];
619
+ forbiddenActions: string[];
620
+ recentDispatches: ResolveIOAIManagerAutopilotRecentDispatch[];
621
+ updatedAt?: Date | string;
622
+ }): ResolveIOAIManagerHumanDecisionRequest {
623
+ const checkpoint = input.snapshot.recoveryCheckpoint;
624
+ const current = input.snapshot.current || {};
625
+ const recoveryClass = cleanText(checkpoint?.recoveryClass || input.snapshot.recoveryAction?.recoveryClass || input.snapshot.recoveryPlan?.recoveryClass, 120);
626
+ const failureClass = cleanText(current.failureClass, 120);
627
+ const blocker = cleanText(current.blocker || current.summary || input.reason, 1000);
628
+ const evidenceHash = cleanText(current.evidenceHash || checkpoint?.evidenceHash, 160);
629
+ const blockerFingerprint = cleanText(current.blockerFingerprint || checkpoint?.blockerFingerprint, 160);
630
+ const checkpointId = cleanText(checkpoint?.checkpointId || input.snapshot.recoveryAction?.checkpointId, 160);
631
+ const recentArtifactPaths = cleanList(
632
+ current.artifactPaths?.length
633
+ ? current.artifactPaths
634
+ : input.recentDispatches.flatMap((entry) => entry.artifactPaths || []),
635
+ 12,
636
+ 500
637
+ );
638
+ const required = input.sameEvidenceAlreadyAttempted
639
+ || input.loopState === 'parked'
640
+ || input.loopState === 'manual_handoff'
641
+ || input.recommendedAction.enabled === false
642
+ || input.recommendedAction.action === 'park_manual';
643
+ const baseEvidence = {
644
+ failureClass,
645
+ blocker,
646
+ blockerFingerprint,
647
+ evidenceHash,
648
+ checkpointId,
649
+ recoveryClass,
650
+ dispatchAction: input.dispatchAction,
651
+ requiredArtifacts: input.requiredArtifacts,
652
+ forbiddenActions: input.forbiddenActions,
653
+ recentArtifactPaths
654
+ };
655
+ const blockedUntil = input.requiresNewEvidence
656
+ ? Array.from(new Set([
657
+ 'new material evidence changes the evidenceHash or blockerFingerprint',
658
+ 'new artifact path is recorded from the failed deterministic gate',
659
+ 'operator updates scope, diagnosis, budget, or retry policy'
660
+ ]))
661
+ : [];
662
+ if (!required) {
663
+ return {
664
+ requestId: stableHash('mgr-human', {
665
+ checkpointId,
666
+ evidenceHash,
667
+ blockerFingerprint,
668
+ required: false
669
+ }),
670
+ required: false,
671
+ status: 'not_required',
672
+ reason: 'No human decision is required for the current bounded next action.',
673
+ question: '',
674
+ preferredChoiceId: '',
675
+ evidence: baseEvidence,
676
+ choices: [],
677
+ blockedUntil: [],
678
+ createdAt: isoNow(input.updatedAt)
679
+ };
680
+ }
681
+ const choices: ResolveIOAIManagerHumanDecisionChoice[] = [];
682
+ if (input.requiresNewEvidence || input.sameEvidenceAlreadyAttempted || input.loopState === 'parked') {
683
+ choices.push(humanDecisionChoice(
684
+ 'attach_new_evidence',
685
+ 'Attach New Evidence',
686
+ 'run_evidence_probe',
687
+ 'Collect a new deterministic artifact before allowing another model/code loop.',
688
+ 'low',
689
+ 'run_evidence_probe',
690
+ 'The runner records a new artifact path or changed evidence hash, then re-evaluates the same gate.'
691
+ ));
692
+ }
693
+ if (/diagnosis|owner|scope|product_code|business|unknown/i.test(`${recoveryClass} ${failureClass}`)) {
694
+ choices.push(humanDecisionChoice(
695
+ 'revise_diagnosis',
696
+ 'Revise Diagnosis',
697
+ 'run_read_only_diagnosis',
698
+ 'Run a read-only diagnosis revision to change owner files or proof plan with evidence.',
699
+ 'low',
700
+ 'run_read_only_diagnosis',
701
+ 'The diagnosis gate is updated before any product-code repair is allowed.'
702
+ ));
703
+ }
704
+ if (/infra|compile/i.test(`${recoveryClass} ${failureClass}`)) {
705
+ choices.push(humanDecisionChoice(
706
+ 'repair_named_gate',
707
+ /compile/i.test(`${recoveryClass} ${failureClass}`) ? 'Repair Compile Gate' : 'Repair Infra Gate',
708
+ /compile/i.test(`${recoveryClass} ${failureClass}`) ? 'run_compile_repair' : 'run_infra_repair',
709
+ 'Repair only the deterministic gate that failed; do not count this as product-code failure.',
710
+ 'medium',
711
+ /compile/i.test(`${recoveryClass} ${failureClass}`) ? 'run_compile_repair' : 'run_infra_repair',
712
+ 'The named infra/compile gate passes or returns a new blocker hash.',
713
+ true
714
+ ));
715
+ }
716
+ if (/release/i.test(`${recoveryClass} ${failureClass}`)) {
717
+ choices.push(humanDecisionChoice(
718
+ 'record_hotfix_evidence',
719
+ 'Record Hotfix Evidence',
720
+ 'record_hotfix_evidence',
721
+ 'Record commit, checksum, restart, health, and self-test proof before continuing release repair.',
722
+ 'low',
723
+ 'record_hotfix_evidence',
724
+ 'Hotfix evidence validates and the runner reruns the smallest release gate.'
725
+ ));
726
+ }
727
+ choices.push(humanDecisionChoice(
728
+ 'keep_parked',
729
+ 'Keep Parked',
730
+ 'park_manual',
731
+ 'Leave the run parked until a human changes the evidence, scope, budget, or retry policy.',
732
+ 'blocked',
733
+ 'park_manual',
734
+ 'No additional model, QA, repair, publish, or deploy work is queued.'
735
+ ));
736
+ const dedupedChoices = choices.filter((choice, index, source) => {
737
+ return source.findIndex((candidate) => candidate.choiceId === choice.choiceId) === index;
738
+ }).slice(0, 4);
739
+ return {
740
+ requestId: stableHash('mgr-human', {
741
+ checkpointId,
742
+ evidenceHash,
743
+ blockerFingerprint,
744
+ choices: dedupedChoices.map((choice) => choice.choiceId)
745
+ }),
746
+ required: true,
747
+ status: 'waiting_for_operator',
748
+ reason: cleanText(input.reason || input.recommendedAction.reason, 1000),
749
+ question: 'Choose the one evidence-backed action that should unblock this runner.',
750
+ preferredChoiceId: dedupedChoices[0]?.choiceId || 'keep_parked',
751
+ evidence: baseEvidence,
752
+ choices: dedupedChoices,
753
+ blockedUntil,
754
+ createdAt: isoNow(input.updatedAt)
755
+ };
756
+ }
757
+
758
+ export function buildResolveIOAIManagerAutopilotSnapshot(
759
+ input: ResolveIOAIManagerAutopilotSnapshotInput
760
+ ): ResolveIOAIManagerAutopilotSnapshot {
761
+ const dispatchAction = resolveDispatchAction(input);
762
+ const directiveAllowed = input.recoveryDirective
763
+ ? input.recoveryDirective.allowed === true
764
+ : input.recoveryAction?.autoRunnable === true;
765
+ const evidenceOnly = input.recoveryDirective?.evidenceOnly === true
766
+ || input.recoveryAction?.evidenceOnly === true
767
+ || input.recoveryEvidenceProbe?.evidenceOnly === true
768
+ || input.recoveryCheckpoint?.status === 'parked';
769
+ const productRepairAllowed = (input.recoveryDirective?.canRunProductRepair ?? input.recoveryDirective?.productRepairAllowed ?? input.recoveryAction?.productRepairAllowed ?? input.recoveryCheckpoint?.productRepairAllowed) === true;
770
+ const expensiveModelAllowed = (input.recoveryDirective?.canRunExpensiveModel ?? input.recoveryDirective?.expensiveModelAllowed ?? input.recoveryAction?.expensiveModelAllowed ?? input.recoveryCheckpoint?.expensiveModelAllowed) === true;
771
+ const requiresNewEvidence = input.recoveryDirective?.requiresNewEvidence === true
772
+ || input.recoveryAction?.retryPolicy?.requireNewEvidence === true
773
+ || input.recoveryCheckpoint?.status === 'parked';
774
+ const sameEvidenceDispatchCount = countSameEvidenceDispatches(input, dispatchAction);
775
+ const sameEvidenceAlreadyAttempted = requiresNewEvidence && sameEvidenceDispatchCount > 0 && input.recoveryDirective?.newEvidence !== true;
776
+ const checkpointStatus = cleanText(input.recoveryCheckpoint?.status, 80);
777
+ const evidenceAssessment = input.recoveryCheckpoint && input.current
778
+ ? assessResolveIOAIManagerEvidenceChange(input.recoveryCheckpoint, input.current, input.recoveryCheckpoint.objective)
779
+ : {
780
+ changed: false,
781
+ material: false,
782
+ strength: 'none',
783
+ signals: [] as string[]
784
+ };
785
+ const loopState = checkpointStatus === 'manual_handoff'
786
+ ? 'manual_handoff'
787
+ : checkpointStatus === 'complete'
788
+ ? 'complete'
789
+ : sameEvidenceAlreadyAttempted || input.recoveryDirective?.allowed === false
790
+ ? 'parked'
791
+ : evidenceOnly && requiresNewEvidence
792
+ ? 'collecting_evidence'
793
+ : 'clear';
794
+ const enabled = directiveAllowed && !sameEvidenceAlreadyAttempted && loopState !== 'manual_handoff';
795
+ const recommendedAction = sameEvidenceAlreadyAttempted || input.recoveryDirective?.allowed === false
796
+ ? 'park_manual'
797
+ : dispatchAction;
798
+ const label = cleanText(
799
+ sameEvidenceAlreadyAttempted
800
+ ? 'Attach New Evidence'
801
+ : input.recoveryDirective?.nextActionLabel || input.recoveryAction?.label || defaultLabelForAction(recommendedAction),
802
+ 140
803
+ );
804
+ const reason = cleanText(
805
+ sameEvidenceAlreadyAttempted
806
+ ? 'The same recovery action already ran against the same evidence; a new artifact path or changed evidence hash is required.'
807
+ : input.recoveryDirective?.reason || input.recoveryAction?.blockedReason || input.recoveryPlan?.objective || input.current?.blocker || 'Manager can continue the current gate.',
808
+ 1000
809
+ );
810
+ const canResetLoopAfterEvidence = input.recoveryDirective?.canResetLoopAfterEvidence === true
811
+ || input.recoveryAction?.canResetLoopAfterEvidence === true
812
+ || cleanList(input.recoveryCheckpoint?.loopResetEvidence, 20, 500).length > 0;
813
+ const resetRequires = cleanList(
814
+ input.recoveryAction?.retryPolicy?.resetLoopWhen?.length
815
+ ? input.recoveryAction.retryPolicy.resetLoopWhen
816
+ : input.recoveryCheckpoint?.loopResetEvidence,
817
+ 20,
818
+ 500
819
+ );
820
+ const recoveryRequiredArtifacts = cleanList(input.recoveryDirective?.requiredArtifacts?.length ? input.recoveryDirective.requiredArtifacts : input.recoveryAction?.requiredArtifacts, 20, 500);
821
+ const recoveryForbiddenActions = cleanList(input.recoveryDirective?.forbiddenActions?.length ? input.recoveryDirective.forbiddenActions : input.recoveryAction?.retryPolicy?.stopWhen, 20, 500);
822
+ const singleActionOnly = input.recoveryDirective?.singleActionOnly !== false && input.recoveryAction?.singleActionOnly !== false;
823
+ const allowedDispatchAction = cleanText(input.recoveryDirective?.allowedDispatchAction || input.recoveryAction?.allowedDispatchAction || dispatchAction, 120);
824
+ const costCeilingUsd = cleanNumber(input.recoveryDirective?.costCeilingUsd || input.recoveryAction?.costCeilingUsd);
825
+ const requiredStateTransition = cleanText(input.recoveryDirective?.requiredStateTransition || input.recoveryAction?.requiredStateTransition, 500);
826
+ const proofRequiredBeforeContinuation = input.recoveryDirective?.proofRequiredBeforeContinuation === true || input.recoveryAction?.proofRequiredBeforeContinuation === true;
827
+ const exitCriteria = cleanList(input.recoveryDirective?.exitCriteria?.length ? input.recoveryDirective.exitCriteria : input.recoveryAction?.exitCriteria, 30, 500);
828
+ const currentRunUsd = cleanNumber(input.currentRunUsd);
829
+ const totalUsd = cleanNumber(input.totalUsd);
830
+ const autonomyPolicy = decideResolveIOAIManagerAutonomyPolicy({
831
+ ...(input.autonomyPolicy || {}),
832
+ currentSpendUsd: input.autonomyPolicy?.currentSpendUsd ?? totalUsd,
833
+ projectedActionCostUsd: input.autonomyPolicy?.projectedActionCostUsd ?? costCeilingUsd,
834
+ dispatchAction,
835
+ newEvidence: input.autonomyPolicy?.newEvidence ?? evidenceAssessment.changed,
836
+ materialEvidence: input.autonomyPolicy?.materialEvidence ?? evidenceAssessment.material,
837
+ evidenceStrength: input.autonomyPolicy?.evidenceStrength ?? evidenceAssessment.strength,
838
+ evidenceSignals: input.autonomyPolicy?.evidenceSignals ?? evidenceAssessment.signals,
839
+ sameEvidenceAlreadyAttempted: input.autonomyPolicy?.sameEvidenceAlreadyAttempted ?? sameEvidenceAlreadyAttempted
840
+ });
841
+ const recentDispatches = normalizeRecentDispatches(input.recoveryDispatchHistory);
842
+ const recommendedActionPacket: ResolveIOAIManagerAutopilotRecommendedAction = {
843
+ action: recommendedAction,
844
+ label,
845
+ reason,
846
+ safety: safetyFor({
847
+ action: recommendedAction,
848
+ enabled,
849
+ evidenceOnly,
850
+ productRepairAllowed,
851
+ expensiveModelAllowed
852
+ }),
853
+ enabled,
854
+ autoRunnable: enabled && input.recoveryAction?.autoRunnable !== false && autonomyPolicy.canAutoDispatch === true,
855
+ expectedResult: expectedResultForAction(recommendedAction, evidenceOnly),
856
+ requiresNewEvidence,
857
+ canRunProductRepair: enabled && productRepairAllowed,
858
+ canRunExpensiveModel: enabled && expensiveModelAllowed,
859
+ canResetLoopAfterEvidence,
860
+ singleActionOnly,
861
+ allowedDispatchAction,
862
+ costCeilingUsd,
863
+ requiredStateTransition,
864
+ proofRequiredBeforeContinuation,
865
+ autonomyMode: autonomyPolicy.mode,
866
+ autonomyCanAutoDispatch: autonomyPolicy.canAutoDispatch,
867
+ autonomyBlocked: autonomyPolicy.blocked,
868
+ expectedValueScore: autonomyPolicy.expectedValueScore,
869
+ expectedValueSource: autonomyPolicy.expectedValueSource,
870
+ expectedValuePositive: autonomyPolicy.expectedValuePositive,
871
+ evidenceBacked: autonomyPolicy.evidenceBacked,
872
+ evidenceStrength: autonomyPolicy.evidenceStrength,
873
+ dispatchAction
874
+ };
875
+ const humanDecision = buildHumanDecisionRequest({
876
+ snapshot: input,
877
+ recommendedAction: recommendedActionPacket,
878
+ loopState,
879
+ reason,
880
+ dispatchAction,
881
+ sameEvidenceAlreadyAttempted,
882
+ requiresNewEvidence,
883
+ requiredArtifacts: recoveryRequiredArtifacts,
884
+ forbiddenActions: recoveryForbiddenActions,
885
+ recentDispatches,
886
+ updatedAt: input.updatedAt
887
+ });
888
+ const untrackedWarning = cleanText(input.untrackedCostWarning || 'Manual Codex sessions outside this runner are not included unless recorded in the usage ledger.', 500);
889
+ const controlPolicy = buildControlPolicy({
890
+ recommendedAction: recommendedActionPacket,
891
+ autonomyPolicy,
892
+ humanDecision,
893
+ recoveryRequiredArtifacts,
894
+ recoveryForbiddenActions,
895
+ currentRunUsd,
896
+ totalUsd,
897
+ untrackedWarning
898
+ });
899
+ return {
900
+ surface: cleanText(input.surface || 'unknown', 120),
901
+ runId: cleanText(input.runId, 160),
902
+ title: cleanText(input.title, 240),
903
+ status: cleanText(input.status || input.recoveryCheckpoint?.status, 80),
904
+ phase: cleanText(input.phase || input.recoveryDirective?.phase, 80),
905
+ lane: cleanText(input.lane || input.recoveryDirective?.lane || input.recoveryCheckpoint?.lane || input.current?.lane, 120),
906
+ stepType: cleanText(input.stepType || input.recoveryDirective?.stepType || input.recoveryCheckpoint?.stepType || input.current?.stepType, 120),
907
+ runKind: cleanText(input.runKind, 120),
908
+ recommendedAction: recommendedActionPacket,
909
+ controlPolicy,
910
+ loopGuard: {
911
+ state: loopState,
912
+ blocked: loopState === 'parked' || loopState === 'manual_handoff',
913
+ reason,
914
+ failureClass: cleanText(input.current?.failureClass, 120),
915
+ blocker: cleanText(input.current?.blocker || input.current?.summary, 1000),
916
+ blockerFingerprint: cleanText(input.current?.blockerFingerprint || input.recoveryCheckpoint?.blockerFingerprint, 160),
917
+ evidenceHash: cleanText(input.current?.evidenceHash || input.recoveryCheckpoint?.evidenceHash, 160),
918
+ materialEvidence: evidenceAssessment.material === true,
919
+ evidenceStrength: cleanText(evidenceAssessment.strength, 40),
920
+ evidenceSignals: cleanList(evidenceAssessment.signals, 12, 120),
921
+ sameEvidenceDispatchCount,
922
+ sameEvidenceAlreadyAttempted,
923
+ loopCount: cleanNumber(input.loopCount),
924
+ maxLoopCount: cleanNumber(input.maxLoopCount),
925
+ attempts: cleanNumber(input.recoveryCheckpoint?.attempts),
926
+ maxAttemptsBeforePark: cleanNumber(input.recoveryCheckpoint?.maxAttemptsBeforePark),
927
+ canResetLoopAfterEvidence,
928
+ resetRequires
929
+ },
930
+ recovery: {
931
+ checkpointId: cleanText(input.recoveryCheckpoint?.checkpointId || input.recoveryAction?.checkpointId, 160),
932
+ recoveryClass: cleanText(input.recoveryCheckpoint?.recoveryClass || input.recoveryAction?.recoveryClass || input.recoveryPlan?.recoveryClass, 120),
933
+ dispatchAction,
934
+ singleActionOnly,
935
+ allowedDispatchAction,
936
+ directiveAllowed,
937
+ evidenceOnly,
938
+ productRepairAllowed,
939
+ expensiveModelAllowed,
940
+ costCeilingUsd,
941
+ requiredStateTransition,
942
+ proofRequiredBeforeContinuation,
943
+ requiredArtifacts: recoveryRequiredArtifacts,
944
+ nextCommands: cleanList(input.recoveryDirective?.nextCommands?.length ? input.recoveryDirective.nextCommands : input.recoveryAction?.nextCommands, 20, 500),
945
+ successCriteria: cleanList(input.recoveryDirective?.successCriteria?.length ? input.recoveryDirective.successCriteria : input.recoveryAction?.successCriteria, 20, 500),
946
+ exitCriteria,
947
+ forbiddenActions: recoveryForbiddenActions
948
+ },
949
+ autonomyPolicy,
950
+ recentDispatches,
951
+ humanDecision,
952
+ cost: {
953
+ currentRunUsd,
954
+ totalUsd,
955
+ currentRunTokens: cleanNumber(input.currentRunTokens),
956
+ totalTokens: cleanNumber(input.totalTokens),
957
+ untrackedWarning
958
+ },
959
+ updatedAt: isoNow(input.updatedAt)
960
+ };
961
+ }