@resolveio/server-lib 22.3.176 → 22.3.177

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/ai/assistant-core-heuristics.d.ts +11 -0
  2. package/ai/assistant-core-heuristics.js +356 -0
  3. package/ai/assistant-core-heuristics.js.map +1 -0
  4. package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +3 -0
  5. package/ai/resolveio-platform-intelligence-memory-corpus.js +214 -0
  6. package/ai/resolveio-platform-intelligence-memory-corpus.js.map +1 -0
  7. package/ai/resolveio-platform-intelligence-memory.d.ts +20 -0
  8. package/ai/resolveio-platform-intelligence-memory.js +341 -0
  9. package/ai/resolveio-platform-intelligence-memory.js.map +1 -0
  10. package/{src/ai/resolveio-platform-intelligence-types.ts → ai/resolveio-platform-intelligence-types.d.ts} +15 -20
  11. package/ai/resolveio-platform-intelligence-types.js +4 -0
  12. package/ai/resolveio-platform-intelligence-types.js.map +1 -0
  13. package/ai/resolveio-platform-intelligence.d.ts +6 -0
  14. package/ai/resolveio-platform-intelligence.js +463 -0
  15. package/ai/resolveio-platform-intelligence.js.map +1 -0
  16. package/client-server-app.d.ts +1 -0
  17. package/client-server-app.js +68 -0
  18. package/client-server-app.js.map +1 -0
  19. package/collections/ai-run.collection.d.ts +3 -0
  20. package/collections/ai-run.collection.js +170 -0
  21. package/collections/ai-run.collection.js.map +1 -0
  22. package/collections/ai-terminal-conversation.collection.d.ts +2 -0
  23. package/collections/ai-terminal-conversation.collection.js +140 -0
  24. package/collections/ai-terminal-conversation.collection.js.map +1 -0
  25. package/collections/ai-terminal-issue-report.collection.d.ts +2 -0
  26. package/collections/ai-terminal-issue-report.collection.js +148 -0
  27. package/collections/ai-terminal-issue-report.collection.js.map +1 -0
  28. package/collections/ai-terminal-message.collection.d.ts +2 -0
  29. package/collections/ai-terminal-message.collection.js +121 -0
  30. package/collections/ai-terminal-message.collection.js.map +1 -0
  31. package/collections/app-setting.collection.d.ts +3 -0
  32. package/collections/app-setting.collection.js +103 -0
  33. package/collections/app-setting.collection.js.map +1 -0
  34. package/collections/app-status.collection.d.ts +3 -0
  35. package/collections/app-status.collection.js +57 -0
  36. package/collections/app-status.collection.js.map +1 -0
  37. package/collections/communication-metric.collection.d.ts +2 -0
  38. package/collections/communication-metric.collection.js +133 -0
  39. package/collections/communication-metric.collection.js.map +1 -0
  40. package/collections/counter.collection.d.ts +3 -0
  41. package/collections/counter.collection.js +56 -0
  42. package/collections/counter.collection.js.map +1 -0
  43. package/collections/cron-job-history.collection.d.ts +3 -0
  44. package/collections/cron-job-history.collection.js +137 -0
  45. package/collections/cron-job-history.collection.js.map +1 -0
  46. package/collections/cron-job.collection.d.ts +3 -0
  47. package/collections/cron-job.collection.js +92 -0
  48. package/collections/cron-job.collection.js.map +1 -0
  49. package/collections/customer-notification.collection.d.ts +3 -0
  50. package/collections/customer-notification.collection.js +130 -0
  51. package/collections/customer-notification.collection.js.map +1 -0
  52. package/collections/customer-portal-password.collection.d.ts +3 -0
  53. package/collections/customer-portal-password.collection.js +75 -0
  54. package/collections/customer-portal-password.collection.js.map +1 -0
  55. package/collections/email-history.collection.d.ts +3 -0
  56. package/collections/email-history.collection.js +134 -0
  57. package/collections/email-history.collection.js.map +1 -0
  58. package/collections/email-verified.collection.d.ts +3 -0
  59. package/collections/email-verified.collection.js +62 -0
  60. package/collections/email-verified.collection.js.map +1 -0
  61. package/collections/file.collection.d.ts +3 -0
  62. package/collections/file.collection.js +74 -0
  63. package/collections/file.collection.js.map +1 -0
  64. package/collections/flag-update.collection.d.ts +3 -0
  65. package/collections/flag-update.collection.js +57 -0
  66. package/collections/flag-update.collection.js.map +1 -0
  67. package/collections/flag.collection.d.ts +3 -0
  68. package/collections/flag.collection.js +57 -0
  69. package/collections/flag.collection.js.map +1 -0
  70. package/collections/log-method-latency.collection.d.ts +3 -0
  71. package/collections/log-method-latency.collection.js +77 -0
  72. package/collections/log-method-latency.collection.js.map +1 -0
  73. package/collections/log-subscription.collection.d.ts +3 -0
  74. package/collections/log-subscription.collection.js +80 -0
  75. package/collections/log-subscription.collection.js.map +1 -0
  76. package/collections/log.collection.d.ts +3 -0
  77. package/collections/log.collection.js +93 -0
  78. package/collections/log.collection.js.map +1 -0
  79. package/collections/logged-in-users.collection.d.ts +3 -0
  80. package/collections/logged-in-users.collection.js +67 -0
  81. package/collections/logged-in-users.collection.js.map +1 -0
  82. package/collections/monitor-cpu.collection.d.ts +3 -0
  83. package/collections/monitor-cpu.collection.js +65 -0
  84. package/collections/monitor-cpu.collection.js.map +1 -0
  85. package/collections/monitor-function.collection.d.ts +3 -0
  86. package/collections/monitor-function.collection.js +74 -0
  87. package/collections/monitor-function.collection.js.map +1 -0
  88. package/collections/monitor-memory.collection.d.ts +3 -0
  89. package/collections/monitor-memory.collection.js +77 -0
  90. package/collections/monitor-memory.collection.js.map +1 -0
  91. package/collections/monitor-mongo.collection.d.ts +3 -0
  92. package/collections/monitor-mongo.collection.js +71 -0
  93. package/collections/monitor-mongo.collection.js.map +1 -0
  94. package/collections/notification.collection.d.ts +3 -0
  95. package/collections/notification.collection.js +57 -0
  96. package/collections/notification.collection.js.map +1 -0
  97. package/collections/openai-usage-ledger.collection.d.ts +2 -0
  98. package/collections/openai-usage-ledger.collection.js +188 -0
  99. package/collections/openai-usage-ledger.collection.js.map +1 -0
  100. package/collections/report-builder-dashboard-builder.collection.d.ts +3 -0
  101. package/collections/report-builder-dashboard-builder.collection.js +109 -0
  102. package/collections/report-builder-dashboard-builder.collection.js.map +1 -0
  103. package/collections/report-builder-library.collection.d.ts +3 -0
  104. package/collections/report-builder-library.collection.js +87 -0
  105. package/collections/report-builder-library.collection.js.map +1 -0
  106. package/collections/report-builder-report.collection.d.ts +4 -0
  107. package/collections/report-builder-report.collection.js +184 -0
  108. package/collections/report-builder-report.collection.js.map +1 -0
  109. package/collections/user-group.collection.d.ts +4 -0
  110. package/collections/user-group.collection.js +89 -0
  111. package/collections/user-group.collection.js.map +1 -0
  112. package/collections/user-guide.collection.d.ts +3 -0
  113. package/collections/user-guide.collection.js +57 -0
  114. package/collections/user-guide.collection.js.map +1 -0
  115. package/collections/user.collection.d.ts +4 -0
  116. package/collections/user.collection.js +180 -0
  117. package/collections/user.collection.js.map +1 -0
  118. package/cron/cron.d.ts +14 -0
  119. package/cron/cron.js +216 -0
  120. package/cron/cron.js.map +1 -0
  121. package/fixtures/cron-jobs.d.ts +1 -0
  122. package/fixtures/cron-jobs.js +150 -0
  123. package/fixtures/cron-jobs.js.map +1 -0
  124. package/fixtures/init.d.ts +1 -0
  125. package/fixtures/init.js +91 -0
  126. package/fixtures/init.js.map +1 -0
  127. package/http/auth.d.ts +2 -0
  128. package/http/auth.js +951 -0
  129. package/http/auth.js.map +1 -0
  130. package/http/health.d.ts +1 -0
  131. package/http/health.js +11 -0
  132. package/http/health.js.map +1 -0
  133. package/http/home.d.ts +1 -0
  134. package/http/home.js +134 -0
  135. package/http/home.js.map +1 -0
  136. package/http/slow-query-publication.d.ts +2 -0
  137. package/http/slow-query-publication.js +99 -0
  138. package/http/slow-query-publication.js.map +1 -0
  139. package/index.d.ts +1 -0
  140. package/index.js +19 -0
  141. package/index.js.map +1 -0
  142. package/managers/ai-assistant-codex-manager.manager.d.ts +67 -0
  143. package/managers/ai-assistant-codex-manager.manager.js +1113 -0
  144. package/managers/ai-assistant-codex-manager.manager.js.map +1 -0
  145. package/managers/ai-run-evidence.manager.d.ts +36 -0
  146. package/managers/ai-run-evidence.manager.js +377 -0
  147. package/managers/ai-run-evidence.manager.js.map +1 -0
  148. package/managers/communication-metric.manager.d.ts +16 -0
  149. package/managers/communication-metric.manager.js +134 -0
  150. package/managers/communication-metric.manager.js.map +1 -0
  151. package/managers/cron.manager.d.ts +20 -0
  152. package/managers/cron.manager.js +534 -0
  153. package/managers/cron.manager.js.map +1 -0
  154. package/managers/customer-notification-content.manager.d.ts +55 -0
  155. package/managers/customer-notification-content.manager.js +158 -0
  156. package/managers/customer-notification-content.manager.js.map +1 -0
  157. package/managers/diagnostic-manager-bootstrap.d.ts +9 -0
  158. package/managers/diagnostic-manager-bootstrap.js +260 -0
  159. package/managers/diagnostic-manager-bootstrap.js.map +1 -0
  160. package/managers/error-auto-fix.manager.d.ts +149 -0
  161. package/managers/error-auto-fix.manager.js +3064 -0
  162. package/managers/error-auto-fix.manager.js.map +1 -0
  163. package/managers/local-log.manager.d.ts +18 -0
  164. package/managers/local-log.manager.js +88 -0
  165. package/managers/local-log.manager.js.map +1 -0
  166. package/managers/method.manager.d.ts +84 -0
  167. package/managers/method.manager.js +1964 -0
  168. package/managers/method.manager.js.map +1 -0
  169. package/managers/mongo.manager.d.ts +224 -0
  170. package/managers/mongo.manager.js +5000 -0
  171. package/managers/mongo.manager.js.map +1 -0
  172. package/managers/monitor.manager.d.ts +70 -0
  173. package/managers/monitor.manager.js +550 -0
  174. package/managers/monitor.manager.js.map +1 -0
  175. package/managers/openai-usage-ledger.manager.d.ts +30 -0
  176. package/managers/openai-usage-ledger.manager.js +142 -0
  177. package/managers/openai-usage-ledger.manager.js.map +1 -0
  178. package/managers/slow-query-verifier.manager.d.ts +144 -0
  179. package/managers/slow-query-verifier.manager.js +3857 -0
  180. package/managers/slow-query-verifier.manager.js.map +1 -0
  181. package/managers/slow-query.manager.d.ts +28 -0
  182. package/managers/slow-query.manager.js +468 -0
  183. package/managers/slow-query.manager.js.map +1 -0
  184. package/managers/subscription.manager.d.ts +169 -0
  185. package/managers/subscription.manager.js +3434 -0
  186. package/managers/subscription.manager.js.map +1 -0
  187. package/managers/websocket.manager.d.ts +73 -0
  188. package/managers/websocket.manager.js +673 -0
  189. package/managers/websocket.manager.js.map +1 -0
  190. package/managers/worker-dispatcher.manager.d.ts +120 -0
  191. package/managers/worker-dispatcher.manager.js +1266 -0
  192. package/managers/worker-dispatcher.manager.js.map +1 -0
  193. package/managers/worker-server.manager.d.ts +35 -0
  194. package/managers/worker-server.manager.js +582 -0
  195. package/managers/worker-server.manager.js.map +1 -0
  196. package/methods/accounts.d.ts +2 -0
  197. package/methods/accounts.js +624 -0
  198. package/methods/accounts.js.map +1 -0
  199. package/methods/ai-terminal.d.ts +338 -0
  200. package/methods/ai-terminal.js +23454 -0
  201. package/methods/ai-terminal.js.map +1 -0
  202. package/methods/app-settings.d.ts +2 -0
  203. package/methods/app-settings.js +169 -0
  204. package/methods/app-settings.js.map +1 -0
  205. package/methods/aws.d.ts +2 -0
  206. package/methods/aws.js +877 -0
  207. package/methods/aws.js.map +1 -0
  208. package/methods/collections.d.ts +2 -0
  209. package/methods/collections.js +719 -0
  210. package/methods/collections.js.map +1 -0
  211. package/methods/counters.d.ts +2 -0
  212. package/methods/counters.js +113 -0
  213. package/methods/counters.js.map +1 -0
  214. package/methods/cron-jobs.d.ts +2 -0
  215. package/methods/cron-jobs.js +2475 -0
  216. package/methods/cron-jobs.js.map +1 -0
  217. package/methods/customer-notifications.d.ts +2 -0
  218. package/methods/customer-notifications.js +528 -0
  219. package/methods/customer-notifications.js.map +1 -0
  220. package/methods/diagnostics.d.ts +2 -0
  221. package/methods/diagnostics.js +703 -0
  222. package/methods/diagnostics.js.map +1 -0
  223. package/methods/flag-updates.d.ts +2 -0
  224. package/methods/flag-updates.js +8 -0
  225. package/methods/flag-updates.js.map +1 -0
  226. package/methods/flags.d.ts +2 -0
  227. package/methods/flags.js +8 -0
  228. package/methods/flags.js.map +1 -0
  229. package/methods/logs.d.ts +2 -0
  230. package/methods/logs.js +751 -0
  231. package/methods/logs.js.map +1 -0
  232. package/methods/mongo-explorer.d.ts +2 -0
  233. package/methods/mongo-explorer.js +1808 -0
  234. package/methods/mongo-explorer.js.map +1 -0
  235. package/methods/monitor.d.ts +2 -0
  236. package/methods/monitor.js +543 -0
  237. package/methods/monitor.js.map +1 -0
  238. package/methods/pdf.d.ts +2 -0
  239. package/methods/pdf.js +1216 -0
  240. package/methods/pdf.js.map +1 -0
  241. package/methods/publications.d.ts +1 -0
  242. package/methods/publications.js +183 -0
  243. package/methods/publications.js.map +1 -0
  244. package/methods/report-builder.d.ts +2 -0
  245. package/methods/report-builder.js +3094 -0
  246. package/methods/report-builder.js.map +1 -0
  247. package/methods/support.d.ts +2 -0
  248. package/methods/support.js +430 -0
  249. package/methods/support.js.map +1 -0
  250. package/models/ai-run.model.d.ts +19 -0
  251. package/models/ai-run.model.js +4 -0
  252. package/models/ai-run.model.js.map +1 -0
  253. package/models/ai-terminal-conversation.model.d.ts +17 -0
  254. package/models/ai-terminal-conversation.model.js +4 -0
  255. package/models/ai-terminal-conversation.model.js.map +1 -0
  256. package/models/ai-terminal-issue-report.model.d.ts +19 -0
  257. package/models/ai-terminal-issue-report.model.js +4 -0
  258. package/models/ai-terminal-issue-report.model.js.map +1 -0
  259. package/models/ai-terminal-message.model.d.ts +22 -0
  260. package/models/ai-terminal-message.model.js +4 -0
  261. package/models/ai-terminal-message.model.js.map +1 -0
  262. package/models/app-setting.model.d.ts +16 -0
  263. package/models/app-setting.model.js +4 -0
  264. package/models/app-setting.model.js.map +1 -0
  265. package/{src/models/app-status.model.ts → models/app-status.model.d.ts} +2 -3
  266. package/models/app-status.model.js +4 -0
  267. package/models/app-status.model.js.map +1 -0
  268. package/{src/models/billing-logged-in-users.model.ts → models/billing-logged-in-users.model.d.ts} +4 -5
  269. package/models/billing-logged-in-users.model.js +4 -0
  270. package/models/billing-logged-in-users.model.js.map +1 -0
  271. package/models/collection-document.model.d.ts +21 -0
  272. package/models/collection-document.model.js +4 -0
  273. package/models/collection-document.model.js.map +1 -0
  274. package/models/communication-metric.model.d.ts +20 -0
  275. package/models/communication-metric.model.js +4 -0
  276. package/models/communication-metric.model.js.map +1 -0
  277. package/{src/models/counter.model.ts → models/counter.model.d.ts} +3 -4
  278. package/models/counter.model.js +4 -0
  279. package/models/counter.model.js.map +1 -0
  280. package/models/cron-job-history.model.d.ts +15 -0
  281. package/models/cron-job-history.model.js +4 -0
  282. package/models/cron-job-history.model.js.map +1 -0
  283. package/models/cron-job.model.d.ts +14 -0
  284. package/models/cron-job.model.js +4 -0
  285. package/models/cron-job.model.js.map +1 -0
  286. package/models/customer-notification.model.d.ts +26 -0
  287. package/models/customer-notification.model.js +4 -0
  288. package/models/customer-notification.model.js.map +1 -0
  289. package/models/customer-portal-password.model.d.ts +11 -0
  290. package/models/customer-portal-password.model.js +4 -0
  291. package/models/customer-portal-password.model.js.map +1 -0
  292. package/models/dialog.model.d.ts +23 -0
  293. package/models/dialog.model.js +4 -0
  294. package/models/dialog.model.js.map +1 -0
  295. package/models/email-history.model.d.ts +32 -0
  296. package/{src/models/email-history.model.ts → models/email-history.model.js} +4 -36
  297. package/models/email-history.model.js.map +1 -0
  298. package/{src/models/email-verified.model.ts → models/email-verified.model.d.ts} +5 -6
  299. package/models/email-verified.model.js +4 -0
  300. package/models/email-verified.model.js.map +1 -0
  301. package/{src/models/file.model.ts → models/file.model.d.ts} +7 -8
  302. package/models/file.model.js +4 -0
  303. package/models/file.model.js.map +1 -0
  304. package/{src/models/flag-update.model.ts → models/flag-update.model.d.ts} +3 -4
  305. package/models/flag-update.model.js +4 -0
  306. package/models/flag-update.model.js.map +1 -0
  307. package/{src/models/flag.model.ts → models/flag.model.d.ts} +3 -4
  308. package/models/flag.model.js +4 -0
  309. package/models/flag.model.js.map +1 -0
  310. package/models/log-method-latency.model.d.ts +10 -0
  311. package/models/log-method-latency.model.js +4 -0
  312. package/models/log-method-latency.model.js.map +1 -0
  313. package/{src/models/log-subscription.model.ts → models/log-subscription.model.d.ts} +9 -11
  314. package/models/log-subscription.model.js +4 -0
  315. package/models/log-subscription.model.js.map +1 -0
  316. package/models/log.model.d.ts +17 -0
  317. package/models/log.model.js +4 -0
  318. package/models/log.model.js.map +1 -0
  319. package/{src/models/logged-in-users.model.ts → models/logged-in-users.model.d.ts} +5 -6
  320. package/models/logged-in-users.model.js +4 -0
  321. package/models/logged-in-users.model.js.map +1 -0
  322. package/{src/models/method-response.model.ts → models/method-response.model.d.ts} +6 -7
  323. package/models/method-response.model.js +4 -0
  324. package/models/method-response.model.js.map +1 -0
  325. package/models/method.model.d.ts +26 -0
  326. package/models/method.model.js +4 -0
  327. package/models/method.model.js.map +1 -0
  328. package/{src/models/monitor-cpu.model.ts → models/monitor-cpu.model.d.ts} +7 -9
  329. package/models/monitor-cpu.model.js +4 -0
  330. package/models/monitor-cpu.model.js.map +1 -0
  331. package/models/monitor-function.model.d.ts +14 -0
  332. package/models/monitor-function.model.js +4 -0
  333. package/models/monitor-function.model.js.map +1 -0
  334. package/models/monitor-memory.model.d.ts +15 -0
  335. package/models/monitor-memory.model.js +4 -0
  336. package/models/monitor-memory.model.js.map +1 -0
  337. package/models/monitor-mongo.model.d.ts +13 -0
  338. package/models/monitor-mongo.model.js +4 -0
  339. package/models/monitor-mongo.model.js.map +1 -0
  340. package/{src/models/notification.model.ts → models/notification.model.d.ts} +4 -6
  341. package/models/notification.model.js +4 -0
  342. package/models/notification.model.js.map +1 -0
  343. package/models/openai-usage-ledger.model.d.ts +30 -0
  344. package/models/openai-usage-ledger.model.js +4 -0
  345. package/models/openai-usage-ledger.model.js.map +1 -0
  346. package/models/pagination.model.d.ts +11 -0
  347. package/models/pagination.model.js +28 -0
  348. package/models/pagination.model.js.map +1 -0
  349. package/models/permission.model.d.ts +12 -0
  350. package/models/permission.model.js +4 -0
  351. package/models/permission.model.js.map +1 -0
  352. package/models/report-builder-dashboard-builder.model.d.ts +25 -0
  353. package/models/report-builder-dashboard-builder.model.js +4 -0
  354. package/models/report-builder-dashboard-builder.model.js.map +1 -0
  355. package/models/report-builder-library.model.d.ts +17 -0
  356. package/models/report-builder-library.model.js +4 -0
  357. package/models/report-builder-library.model.js.map +1 -0
  358. package/models/report-builder-report.model.d.ts +121 -0
  359. package/models/report-builder-report.model.js +4 -0
  360. package/models/report-builder-report.model.js.map +1 -0
  361. package/models/report-builder.model.d.ts +61 -0
  362. package/models/report-builder.model.js +4 -0
  363. package/models/report-builder.model.js.map +1 -0
  364. package/models/select-data-label.model.d.ts +9 -0
  365. package/models/select-data-label.model.js +4 -0
  366. package/models/select-data-label.model.js.map +1 -0
  367. package/models/server-message.model.d.ts +32 -0
  368. package/models/server-message.model.js +4 -0
  369. package/models/server-message.model.js.map +1 -0
  370. package/models/slow-query-report.model.d.ts +23 -0
  371. package/models/slow-query-report.model.js +4 -0
  372. package/models/slow-query-report.model.js.map +1 -0
  373. package/models/subscription.model.d.ts +31 -0
  374. package/models/subscription.model.js +4 -0
  375. package/models/subscription.model.js.map +1 -0
  376. package/models/support-ticket.model.d.ts +87 -0
  377. package/models/support-ticket.model.js +4 -0
  378. package/models/support-ticket.model.js.map +1 -0
  379. package/models/user-group.model.d.ts +20 -0
  380. package/models/user-group.model.js +4 -0
  381. package/models/user-group.model.js.map +1 -0
  382. package/{src/models/user-guide.model.ts → models/user-guide.model.d.ts} +4 -5
  383. package/models/user-guide.model.js +4 -0
  384. package/models/user-guide.model.js.map +1 -0
  385. package/models/user.model.d.ts +84 -0
  386. package/models/user.model.js +4 -0
  387. package/models/user.model.js.map +1 -0
  388. package/package.json +1 -1
  389. package/private/images/ResolveIO.png +0 -0
  390. package/public_api.js +127 -0
  391. package/public_api.js.map +1 -0
  392. package/publications/ai-terminal.d.ts +1 -0
  393. package/publications/ai-terminal.js +122 -0
  394. package/publications/ai-terminal.js.map +1 -0
  395. package/publications/app-settings.d.ts +2 -0
  396. package/publications/app-settings.js +28 -0
  397. package/publications/app-settings.js.map +1 -0
  398. package/publications/app-status.d.ts +2 -0
  399. package/publications/app-status.js +16 -0
  400. package/publications/app-status.js.map +1 -0
  401. package/publications/cron-jobs.d.ts +2 -0
  402. package/publications/cron-jobs.js +88 -0
  403. package/publications/cron-jobs.js.map +1 -0
  404. package/publications/customer-notifications.d.ts +2 -0
  405. package/publications/customer-notifications.js +161 -0
  406. package/publications/customer-notifications.js.map +1 -0
  407. package/publications/files.d.ts +2 -0
  408. package/publications/files.js +36 -0
  409. package/publications/files.js.map +1 -0
  410. package/publications/flags-update.d.ts +2 -0
  411. package/publications/flags-update.js +22 -0
  412. package/publications/flags-update.js.map +1 -0
  413. package/publications/flags.d.ts +2 -0
  414. package/publications/flags.js +22 -0
  415. package/publications/flags.js.map +1 -0
  416. package/publications/logs.d.ts +2 -0
  417. package/publications/logs.js +164 -0
  418. package/publications/logs.js.map +1 -0
  419. package/publications/notifications.d.ts +2 -0
  420. package/publications/notifications.js +16 -0
  421. package/publications/notifications.js.map +1 -0
  422. package/publications/report-builder-dashboard-builders.d.ts +2 -0
  423. package/publications/report-builder-dashboard-builders.js +42 -0
  424. package/publications/report-builder-dashboard-builders.js.map +1 -0
  425. package/publications/report-builder-libraries.d.ts +2 -0
  426. package/publications/report-builder-libraries.js +90 -0
  427. package/publications/report-builder-libraries.js.map +1 -0
  428. package/publications/report-builder-reports.d.ts +2 -0
  429. package/publications/report-builder-reports.js +50 -0
  430. package/publications/report-builder-reports.js.map +1 -0
  431. package/publications/super-admin.d.ts +2 -0
  432. package/publications/super-admin.js +16 -0
  433. package/publications/super-admin.js.map +1 -0
  434. package/publications/user-groups.d.ts +1 -0
  435. package/publications/user-groups.js +16 -0
  436. package/publications/user-groups.js.map +1 -0
  437. package/publications/user-guides.d.ts +1 -0
  438. package/publications/user-guides.js +16 -0
  439. package/publications/user-guides.js.map +1 -0
  440. package/resolveio-server-app.d.ts +70 -0
  441. package/resolveio-server-app.js +801 -0
  442. package/resolveio-server-app.js.map +1 -0
  443. package/server-app.d.ts +228 -0
  444. package/server-app.js +3566 -0
  445. package/server-app.js.map +1 -0
  446. package/services/codex-client.d.ts +128 -0
  447. package/services/codex-client.js +1629 -0
  448. package/services/codex-client.js.map +1 -0
  449. package/services/openai-client.d.ts +46 -0
  450. package/services/openai-client.js +318 -0
  451. package/services/openai-client.js.map +1 -0
  452. package/types/error-report.d.ts +25 -0
  453. package/types/error-report.js +4 -0
  454. package/types/error-report.js.map +1 -0
  455. package/types/slow-query-report.d.ts +27 -0
  456. package/types/slow-query-report.js +6 -0
  457. package/types/slow-query-report.js.map +1 -0
  458. package/util/ai-qa-policy.d.ts +124 -0
  459. package/util/ai-qa-policy.js +736 -0
  460. package/util/ai-qa-policy.js.map +1 -0
  461. package/util/ai-run-evidence-adapters.d.ts +73 -0
  462. package/util/ai-run-evidence-adapters.js +3087 -0
  463. package/util/ai-run-evidence-adapters.js.map +1 -0
  464. package/util/ai-run-evidence-dashboard.d.ts +84 -0
  465. package/util/ai-run-evidence-dashboard.js +336 -0
  466. package/util/ai-run-evidence-dashboard.js.map +1 -0
  467. package/util/ai-run-evidence-eval.d.ts +86 -0
  468. package/util/ai-run-evidence-eval.js +1015 -0
  469. package/util/ai-run-evidence-eval.js.map +1 -0
  470. package/util/ai-run-evidence.d.ts +244 -0
  471. package/util/ai-run-evidence.js +792 -0
  472. package/util/ai-run-evidence.js.map +1 -0
  473. package/util/ai-runner-artifacts.d.ts +82 -0
  474. package/util/ai-runner-artifacts.js +713 -0
  475. package/util/ai-runner-artifacts.js.map +1 -0
  476. package/util/ai-runner-manager-autopilot.d.ts +210 -0
  477. package/util/ai-runner-manager-autopilot.js +642 -0
  478. package/util/ai-runner-manager-autopilot.js.map +1 -0
  479. package/util/ai-runner-manager-policy.d.ts +653 -0
  480. package/util/ai-runner-manager-policy.js +2880 -0
  481. package/util/ai-runner-manager-policy.js.map +1 -0
  482. package/util/ai-runner-qa-auth.d.ts +5 -0
  483. package/util/ai-runner-qa-auth.js +822 -0
  484. package/util/ai-runner-qa-auth.js.map +1 -0
  485. package/util/ai-runner-qa-tools.d.ts +26 -0
  486. package/util/ai-runner-qa-tools.js +3029 -0
  487. package/util/ai-runner-qa-tools.js.map +1 -0
  488. package/util/aicoder-runner-v6.d.ts +367 -0
  489. package/util/aicoder-runner-v6.js +1925 -0
  490. package/util/aicoder-runner-v6.js.map +1 -0
  491. package/util/common.d.ts +31 -0
  492. package/util/common.js +683 -0
  493. package/util/common.js.map +1 -0
  494. package/util/customer-portal-password.d.ts +13 -0
  495. package/util/customer-portal-password.js +209 -0
  496. package/util/customer-portal-password.js.map +1 -0
  497. package/util/error-reporter.d.ts +52 -0
  498. package/util/error-reporter.js +326 -0
  499. package/util/error-reporter.js.map +1 -0
  500. package/util/error-tracking.d.ts +13 -0
  501. package/util/error-tracking.js +120 -0
  502. package/util/error-tracking.js.map +1 -0
  503. package/util/openai-usage-cost.d.ts +6 -0
  504. package/util/openai-usage-cost.js +103 -0
  505. package/util/openai-usage-cost.js.map +1 -0
  506. package/util/report-builder-unwinds.d.ts +15 -0
  507. package/util/report-builder-unwinds.js +156 -0
  508. package/util/report-builder-unwinds.js.map +1 -0
  509. package/util/runner-process-janitor.d.ts +27 -0
  510. package/util/runner-process-janitor.js +208 -0
  511. package/util/runner-process-janitor.js.map +1 -0
  512. package/util/schema-report-builder.d.ts +6 -0
  513. package/util/schema-report-builder.js +481 -0
  514. package/util/schema-report-builder.js.map +1 -0
  515. package/util/slow-query-reporter.d.ts +28 -0
  516. package/util/slow-query-reporter.js +226 -0
  517. package/util/slow-query-reporter.js.map +1 -0
  518. package/util/subscription-dependency-context.d.ts +34 -0
  519. package/util/subscription-dependency-context.js +1283 -0
  520. package/util/subscription-dependency-context.js.map +1 -0
  521. package/util/support-runner-v5.d.ts +810 -0
  522. package/util/support-runner-v5.js +3497 -0
  523. package/util/support-runner-v5.js.map +1 -0
  524. package/util/tokenizer.d.ts +5 -0
  525. package/util/tokenizer.js +41 -0
  526. package/util/tokenizer.js.map +1 -0
  527. package/workers/codex-runner.worker.d.ts +1 -0
  528. package/workers/codex-runner.worker.js +192 -0
  529. package/workers/codex-runner.worker.js.map +1 -0
  530. package/.nodemon.json +0 -5
  531. package/.vscode/settings.json +0 -21
  532. package/AGENTS.md +0 -195
  533. package/README.md +0 -22
  534. package/build_package.sh +0 -5
  535. package/compileDTS.pl +0 -64
  536. package/docs/ai-assistant-nightly-eval.md +0 -65
  537. package/docs/ai-assistant-preflight-checklist.md +0 -23
  538. package/docs/ai-assistant-report-builder-bridge-playbook.md +0 -115
  539. package/eslint-plugin-custom/index.js +0 -7
  540. package/eslint-plugin-custom/rules/no-filter-zero-index.js +0 -44
  541. package/eslint.config.js +0 -103
  542. package/gulpfile.js +0 -216
  543. package/methodAndPublicationListGenerator.py +0 -375
  544. package/mongodbensurers.js +0 -2
  545. package/mongostop.js +0 -3
  546. package/scripts/cleanup-bypassed-callmethod-logs.js +0 -616
  547. package/settings.development.json +0 -25
  548. package/settings.development.redacted.json +0 -25
  549. package/src/.env +0 -12
  550. package/src/ai/assistant-core-heuristics.ts +0 -379
  551. package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +0 -185
  552. package/src/ai/resolveio-platform-intelligence-memory.ts +0 -325
  553. package/src/ai/resolveio-platform-intelligence.ts +0 -462
  554. package/src/client-server-app.ts +0 -12
  555. package/src/collections/ai-run.collection.ts +0 -117
  556. package/src/collections/ai-terminal-conversation.collection.ts +0 -91
  557. package/src/collections/ai-terminal-issue-report.collection.ts +0 -99
  558. package/src/collections/ai-terminal-message.collection.ts +0 -77
  559. package/src/collections/app-setting.collection.ts +0 -104
  560. package/src/collections/app-status.collection.ts +0 -58
  561. package/src/collections/communication-metric.collection.ts +0 -84
  562. package/src/collections/counter.collection.ts +0 -56
  563. package/src/collections/cron-job-history.collection.ts +0 -94
  564. package/src/collections/cron-job.collection.ts +0 -92
  565. package/src/collections/customer-notification.collection.ts +0 -131
  566. package/src/collections/customer-portal-password.collection.ts +0 -76
  567. package/src/collections/email-history.collection.ts +0 -134
  568. package/src/collections/email-verified.collection.ts +0 -62
  569. package/src/collections/file.collection.ts +0 -74
  570. package/src/collections/flag-update.collection.ts +0 -57
  571. package/src/collections/flag.collection.ts +0 -57
  572. package/src/collections/log-method-latency.collection.ts +0 -77
  573. package/src/collections/log-subscription.collection.ts +0 -80
  574. package/src/collections/log.collection.ts +0 -93
  575. package/src/collections/logged-in-users.collection.ts +0 -67
  576. package/src/collections/monitor-cpu.collection.ts +0 -65
  577. package/src/collections/monitor-function.collection.ts +0 -74
  578. package/src/collections/monitor-memory.collection.ts +0 -77
  579. package/src/collections/monitor-mongo.collection.ts +0 -71
  580. package/src/collections/notification.collection.ts +0 -57
  581. package/src/collections/openai-usage-ledger.collection.ts +0 -131
  582. package/src/collections/report-builder-dashboard-builder.collection.ts +0 -109
  583. package/src/collections/report-builder-library.collection.ts +0 -89
  584. package/src/collections/report-builder-report.collection.ts +0 -184
  585. package/src/collections/user-group.collection.ts +0 -89
  586. package/src/collections/user-guide.collection.ts +0 -57
  587. package/src/collections/user.collection.ts +0 -181
  588. package/src/cron/cron.ts +0 -117
  589. package/src/fixtures/cron-jobs.ts +0 -95
  590. package/src/fixtures/init.ts +0 -35
  591. package/src/http/auth.ts +0 -818
  592. package/src/http/health.ts +0 -7
  593. package/src/http/home.ts +0 -90
  594. package/src/http/slow-query-publication.ts +0 -49
  595. package/src/index.ts +0 -1
  596. package/src/managers/ai-assistant-codex-manager.manager.ts +0 -1131
  597. package/src/managers/ai-run-evidence.manager.ts +0 -264
  598. package/src/managers/communication-metric.manager.ts +0 -82
  599. package/src/managers/cron.manager.ts +0 -333
  600. package/src/managers/customer-notification-content.manager.ts +0 -236
  601. package/src/managers/diagnostic-manager-bootstrap.ts +0 -165
  602. package/src/managers/error-auto-fix.manager.ts +0 -2767
  603. package/src/managers/local-log.manager.ts +0 -113
  604. package/src/managers/method.manager.ts +0 -1857
  605. package/src/managers/mongo.manager.ts +0 -4575
  606. package/src/managers/monitor.manager.ts +0 -507
  607. package/src/managers/openai-usage-ledger.manager.ts +0 -112
  608. package/src/managers/slow-query-verifier.manager.ts +0 -3590
  609. package/src/managers/slow-query.manager.ts +0 -519
  610. package/src/managers/subscription.manager.ts +0 -3128
  611. package/src/managers/websocket.manager.ts +0 -746
  612. package/src/managers/worker-dispatcher.manager.ts +0 -1360
  613. package/src/managers/worker-server.manager.ts +0 -536
  614. package/src/methods/accounts.ts +0 -532
  615. package/src/methods/ai-terminal.ts +0 -23825
  616. package/src/methods/app-settings.ts +0 -114
  617. package/src/methods/aws.ts +0 -649
  618. package/src/methods/collections.ts +0 -641
  619. package/src/methods/counters.ts +0 -69
  620. package/src/methods/cron-jobs.ts +0 -2614
  621. package/src/methods/customer-notifications.ts +0 -458
  622. package/src/methods/diagnostics.ts +0 -616
  623. package/src/methods/flag-updates.ts +0 -7
  624. package/src/methods/flags.ts +0 -7
  625. package/src/methods/logs.ts +0 -657
  626. package/src/methods/mongo-explorer.ts +0 -1880
  627. package/src/methods/monitor.ts +0 -540
  628. package/src/methods/pdf.ts +0 -1236
  629. package/src/methods/publications.ts +0 -129
  630. package/src/methods/report-builder.ts +0 -3300
  631. package/src/methods/support.ts +0 -335
  632. package/src/models/ai-run.model.ts +0 -27
  633. package/src/models/ai-terminal-conversation.model.ts +0 -19
  634. package/src/models/ai-terminal-issue-report.model.ts +0 -21
  635. package/src/models/ai-terminal-message.model.ts +0 -24
  636. package/src/models/app-setting.model.ts +0 -17
  637. package/src/models/collection-document.model.ts +0 -24
  638. package/src/models/communication-metric.model.ts +0 -23
  639. package/src/models/cron-job-history.model.ts +0 -16
  640. package/src/models/cron-job.model.ts +0 -15
  641. package/src/models/customer-notification.model.ts +0 -28
  642. package/src/models/customer-portal-password.model.ts +0 -12
  643. package/src/models/dialog.model.ts +0 -25
  644. package/src/models/log-method-latency.model.ts +0 -11
  645. package/src/models/log.model.ts +0 -19
  646. package/src/models/method.model.ts +0 -25
  647. package/src/models/monitor-function.model.ts +0 -16
  648. package/src/models/monitor-memory.model.ts +0 -17
  649. package/src/models/monitor-mongo.model.ts +0 -15
  650. package/src/models/openai-usage-ledger.model.ts +0 -56
  651. package/src/models/pagination.model.ts +0 -35
  652. package/src/models/permission.model.ts +0 -14
  653. package/src/models/report-builder-dashboard-builder.model.ts +0 -29
  654. package/src/models/report-builder-library.model.ts +0 -20
  655. package/src/models/report-builder-report.model.ts +0 -136
  656. package/src/models/report-builder.model.ts +0 -68
  657. package/src/models/select-data-label.model.ts +0 -9
  658. package/src/models/server-message.model.ts +0 -31
  659. package/src/models/slow-query-report.model.ts +0 -23
  660. package/src/models/subscription.model.ts +0 -73
  661. package/src/models/support-ticket.model.ts +0 -104
  662. package/src/models/user-group.model.ts +0 -24
  663. package/src/models/user.model.ts +0 -96
  664. package/src/private/images/ResolveIO.png +0 -0
  665. package/src/publications/ai-terminal.ts +0 -73
  666. package/src/publications/app-settings.ts +0 -25
  667. package/src/publications/app-status.ts +0 -13
  668. package/src/publications/cron-jobs.ts +0 -40
  669. package/src/publications/customer-notifications.ts +0 -101
  670. package/src/publications/files.ts +0 -33
  671. package/src/publications/flags-update.ts +0 -19
  672. package/src/publications/flags.ts +0 -19
  673. package/src/publications/logs.ts +0 -163
  674. package/src/publications/notifications.ts +0 -13
  675. package/src/publications/report-builder-dashboard-builders.ts +0 -39
  676. package/src/publications/report-builder-libraries.ts +0 -41
  677. package/src/publications/report-builder-reports.ts +0 -47
  678. package/src/publications/super-admin.ts +0 -13
  679. package/src/publications/user-groups.ts +0 -12
  680. package/src/publications/user-guides.ts +0 -12
  681. package/src/resolveio-server-app.ts +0 -617
  682. package/src/server-app.ts +0 -3354
  683. package/src/services/codex-client.ts +0 -1231
  684. package/src/services/openai-client.ts +0 -265
  685. package/src/types/error-report.ts +0 -26
  686. package/src/types/js-tiktoken.d.ts +0 -11
  687. package/src/types/slow-query-report.ts +0 -28
  688. package/src/util/ai-qa-policy.ts +0 -925
  689. package/src/util/ai-run-evidence-adapters.ts +0 -3292
  690. package/src/util/ai-run-evidence-dashboard.ts +0 -313
  691. package/src/util/ai-run-evidence-eval.ts +0 -1054
  692. package/src/util/ai-run-evidence.ts +0 -1124
  693. package/src/util/ai-runner-artifacts.ts +0 -586
  694. package/src/util/ai-runner-manager-autopilot.ts +0 -961
  695. package/src/util/ai-runner-manager-policy.ts +0 -4193
  696. package/src/util/ai-runner-qa-auth.ts +0 -821
  697. package/src/util/ai-runner-qa-tools.ts +0 -3045
  698. package/src/util/aicoder-runner-v6.ts +0 -2510
  699. package/src/util/common.ts +0 -649
  700. package/src/util/customer-portal-password.ts +0 -183
  701. package/src/util/error-reporter.ts +0 -332
  702. package/src/util/error-tracking.ts +0 -79
  703. package/src/util/openai-usage-cost.ts +0 -114
  704. package/src/util/report-builder-unwinds.ts +0 -180
  705. package/src/util/runner-process-janitor.ts +0 -219
  706. package/src/util/schema-report-builder.ts +0 -448
  707. package/src/util/slow-query-reporter.ts +0 -216
  708. package/src/util/subscription-dependency-context.ts +0 -1096
  709. package/src/util/support-runner-v5.ts +0 -4785
  710. package/src/util/tokenizer.ts +0 -38
  711. package/src/workers/codex-runner.worker.ts +0 -142
  712. package/start_server.sh +0 -5
  713. package/tests/ai-assistant-corpus-build.ts +0 -484
  714. package/tests/ai-assistant-corpus-replay-e2e.ts +0 -774
  715. package/tests/ai-assistant-data-parity-e2e.ts +0 -1989
  716. package/tests/ai-assistant-eval-triage.ts +0 -831
  717. package/tests/ai-assistant-openai-e2e.ts +0 -1061
  718. package/tests/ai-assistant-openai-git-e2e.ts +0 -155
  719. package/tests/ai-assistant-preflight-matrix.ts +0 -215
  720. package/tests/ai-assistant-routing-eval.test.ts +0 -560
  721. package/tests/ai-assistant-snf-live-eval.ts +0 -975
  722. package/tests/ai-assistant-utils.test.ts +0 -3057
  723. package/tests/ai-manager-autopilot-snapshot.test.ts +0 -193
  724. package/tests/ai-manager-recovery-checkpoint.test.ts +0 -1136
  725. package/tests/ai-run-eval.test.ts +0 -112
  726. package/tests/ai-run-evidence.test.ts +0 -1403
  727. package/tests/ai-runner-contract.test.ts +0 -488
  728. package/tests/aicoder-runner-v6.test.ts +0 -676
  729. package/tests/error-reporter.test.ts +0 -145
  730. package/tests/method-publication-generator.test.ts +0 -46
  731. package/tests/report-builder-linking.test.ts +0 -79
  732. package/tests/resolveio-platform-intelligence.test.ts +0 -352
  733. package/tests/server-app-cron-owner.test.ts +0 -127
  734. package/tests/subscription-connect-race.test.ts +0 -158
  735. package/tests/subscription-dependency-context.test.ts +0 -324
  736. package/tests/subscription-manager-collection-tracking.test.ts +0 -86
  737. package/tests/subscription-manager-invalidation.test.ts +0 -86
  738. package/tests/support-runner-v5.test.ts +0 -1166
  739. package/tsconfig.json +0 -34
  740. /package/{src/private → private}/email-templates/enrollment.html +0 -0
  741. /package/{src/private → private}/email-templates/forgot-password.html +0 -0
  742. /package/{src/private → private}/email-templates/support-ticket-deleted.html +0 -0
  743. /package/{src/private → private}/email-templates/support-ticket-modified.html +0 -0
  744. /package/{src/private → private}/email-templates/support-ticket.html +0 -0
  745. /package/{src/public_api.ts → public_api.d.ts} +0 -0
@@ -0,0 +1,1925 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __values = (this && this.__values) || function(o) {
14
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
15
+ if (m) return m.call(o);
16
+ if (o && typeof o.length === "number") return {
17
+ next: function () {
18
+ if (o && i >= o.length) o = void 0;
19
+ return { value: o && o[i++], done: !o };
20
+ }
21
+ };
22
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
23
+ };
24
+ var __read = (this && this.__read) || function (o, n) {
25
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
26
+ if (!m) return o;
27
+ var i = m.call(o), r, ar = [], e;
28
+ try {
29
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
+ }
31
+ catch (error) { e = { error: error }; }
32
+ finally {
33
+ try {
34
+ if (r && !r.done && (m = i["return"])) m.call(i);
35
+ }
36
+ finally { if (e) throw e.error; }
37
+ }
38
+ return ar;
39
+ };
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.extractResolveIOAICoderJourneyContractFromMarkdown = extractResolveIOAICoderJourneyContractFromMarkdown;
51
+ exports.buildResolveIOAICoderWorkflowQaRowsFromJourneyContract = buildResolveIOAICoderWorkflowQaRowsFromJourneyContract;
52
+ exports.validateResolveIOAICoderJourneyContract = validateResolveIOAICoderJourneyContract;
53
+ exports.collectResolveIOAICoderJourneyContractIssues = collectResolveIOAICoderJourneyContractIssues;
54
+ exports.evaluateResolveIOAICoderWorkflowProofReadiness = evaluateResolveIOAICoderWorkflowProofReadiness;
55
+ exports.fingerprintResolveIOAICoderV6Blocker = fingerprintResolveIOAICoderV6Blocker;
56
+ exports.buildResolveIOAICoderWorkflowProofCheckpoint = buildResolveIOAICoderWorkflowProofCheckpoint;
57
+ exports.buildResolveIOAICoderV6WorkflowReadiness = buildResolveIOAICoderV6WorkflowReadiness;
58
+ exports.buildResolveIOAICoderV6Budget = buildResolveIOAICoderV6Budget;
59
+ exports.initializeResolveIOAICoderV6State = initializeResolveIOAICoderV6State;
60
+ exports.recordResolveIOAICoderV6Step = recordResolveIOAICoderV6Step;
61
+ exports.decideResolveIOAICoderV6Continuation = decideResolveIOAICoderV6Continuation;
62
+ exports.buildResolveIOAICoderV6DiagnoseFirstPrompt = buildResolveIOAICoderV6DiagnoseFirstPrompt;
63
+ exports.buildResolveIOAICoderV6Incident = buildResolveIOAICoderV6Incident;
64
+ var ai_runner_manager_policy_1 = require("./ai-runner-manager-policy");
65
+ var LANES = ['intake', 'plan', 'build', 'qa', 'repair', 'review', 'publish'];
66
+ function isoNow(value) {
67
+ if (value instanceof Date) {
68
+ return value.toISOString();
69
+ }
70
+ var parsed = value ? new Date(value) : new Date();
71
+ if (Number.isFinite(parsed.getTime())) {
72
+ return parsed.toISOString();
73
+ }
74
+ return new Date().toISOString();
75
+ }
76
+ function cleanText(value, max) {
77
+ if (max === void 0) { max = 2000; }
78
+ return String(value || '').replace(/\s+/g, ' ').trim().slice(0, max);
79
+ }
80
+ function cleanList(values, limit, max) {
81
+ var e_1, _a;
82
+ if (limit === void 0) { limit = 20; }
83
+ if (max === void 0) { max = 500; }
84
+ if (!Array.isArray(values)) {
85
+ return [];
86
+ }
87
+ var result = [];
88
+ try {
89
+ for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {
90
+ var value = values_1_1.value;
91
+ var normalized = cleanText(value, max);
92
+ if (normalized && !result.includes(normalized)) {
93
+ result.push(normalized);
94
+ }
95
+ if (result.length >= limit) {
96
+ break;
97
+ }
98
+ }
99
+ }
100
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
101
+ finally {
102
+ try {
103
+ if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);
104
+ }
105
+ finally { if (e_1) throw e_1.error; }
106
+ }
107
+ return result;
108
+ }
109
+ function readField(source, keys) {
110
+ var e_2, _a;
111
+ if (!source || typeof source !== 'object') {
112
+ return undefined;
113
+ }
114
+ try {
115
+ for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
116
+ var key = keys_1_1.value;
117
+ if (source[key] !== undefined && source[key] !== null) {
118
+ return source[key];
119
+ }
120
+ }
121
+ }
122
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
123
+ finally {
124
+ try {
125
+ if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
126
+ }
127
+ finally { if (e_2) throw e_2.error; }
128
+ }
129
+ return undefined;
130
+ }
131
+ function cleanField(source, keys, max) {
132
+ if (max === void 0) { max = 500; }
133
+ return cleanText(readField(source, keys), max);
134
+ }
135
+ function concatFields(source, keys, maxEach) {
136
+ if (maxEach === void 0) { maxEach = 500; }
137
+ if (!source || typeof source !== 'object') {
138
+ return '';
139
+ }
140
+ return keys
141
+ .map(function (key) { return cleanText(source[key], maxEach); })
142
+ .filter(Boolean)
143
+ .join(' ');
144
+ }
145
+ function asArray(value) {
146
+ if (!Array.isArray(value)) {
147
+ return [];
148
+ }
149
+ return value;
150
+ }
151
+ function stripJsonComments(value) {
152
+ var output = '';
153
+ var inString = false;
154
+ var escaped = false;
155
+ for (var index = 0; index < value.length; index += 1) {
156
+ var char = value[index];
157
+ var next = value[index + 1];
158
+ if (inString) {
159
+ output += char;
160
+ if (escaped) {
161
+ escaped = false;
162
+ }
163
+ else if (char === '\\') {
164
+ escaped = true;
165
+ }
166
+ else if (char === '"') {
167
+ inString = false;
168
+ }
169
+ continue;
170
+ }
171
+ if (char === '"') {
172
+ inString = true;
173
+ output += char;
174
+ continue;
175
+ }
176
+ if (char === '/' && next === '/') {
177
+ while (index < value.length && value[index] !== '\n') {
178
+ index += 1;
179
+ }
180
+ output += '\n';
181
+ continue;
182
+ }
183
+ if (char === '/' && next === '*') {
184
+ index += 2;
185
+ while (index < value.length && !(value[index] === '*' && value[index + 1] === '/')) {
186
+ index += 1;
187
+ }
188
+ index += 1;
189
+ continue;
190
+ }
191
+ output += char;
192
+ }
193
+ return output;
194
+ }
195
+ function parseJsonObject(value) {
196
+ try {
197
+ var parsed = JSON.parse(stripJsonComments(value));
198
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : null;
199
+ }
200
+ catch (_a) {
201
+ return null;
202
+ }
203
+ }
204
+ function extractResolveIOAICoderJourneyContractFromMarkdown(content) {
205
+ var normalized = String(content || '').replace(/\r\n/g, '\n');
206
+ var sectionMatch = normalized.match(/##\s*journey_contract[\s\S]*?```json\s*([\s\S]*?)```/i)
207
+ || normalized.match(/##\s*journey_contract[\s\S]*?```\s*([\s\S]*?)```/i);
208
+ if (sectionMatch === null || sectionMatch === void 0 ? void 0 : sectionMatch[1]) {
209
+ return parseJsonObject(sectionMatch[1].trim());
210
+ }
211
+ var fencedMatch = normalized.match(/```json\s*([\s\S]*?)```/i);
212
+ if (fencedMatch === null || fencedMatch === void 0 ? void 0 : fencedMatch[1]) {
213
+ return parseJsonObject(fencedMatch[1].trim());
214
+ }
215
+ var objectMatch = normalized.match(/\{\s*"app_archetype"[\s\S]*\}\s*$/m);
216
+ if (objectMatch === null || objectMatch === void 0 ? void 0 : objectMatch[0]) {
217
+ return parseJsonObject(objectMatch[0].trim());
218
+ }
219
+ return null;
220
+ }
221
+ function looksLikeAbsoluteRoute(value) {
222
+ return value.startsWith('/') && !/\s/.test(value);
223
+ }
224
+ function looksPlaceholder(value) {
225
+ return /\b(tbd|todo|placeholder|generic crud|crud-only|lorem ipsum|add details|fill in|coming soon)\b/i.test(value || '');
226
+ }
227
+ function isNavigationOnlyAction(source) {
228
+ var effect = cleanField(source, ['effect', 'outcome', 'state_change', 'expected_state_transition', 'expected_next_state'], 500).toLowerCase();
229
+ var implementation = cleanField(source, [
230
+ 'method_or_calculation',
231
+ 'server_method_or_publication',
232
+ 'local_calculation_path',
233
+ 'action_implementation',
234
+ 'calculation_path',
235
+ 'data_mutation',
236
+ 'mutation',
237
+ 'persisted_result'
238
+ ], 500);
239
+ if (implementation) {
240
+ return false;
241
+ }
242
+ var actionType = cleanField(source, ['action_type', 'type', 'kind'], 120).toLowerCase();
243
+ var actionText = [
244
+ cleanField(source, ['action', 'visible_cta', 'cta', 'label'], 300),
245
+ cleanField(source, ['next_step_destination', 'next_step', 'destination'], 300)
246
+ ].join(' ').toLowerCase();
247
+ var navigationSignals = /\b(navigate|go to|open|view|link|route|page)\b/.test(actionText)
248
+ || /^(?:link|nav|navigation|route)$/i.test(actionType);
249
+ var productiveEffect = /\b(save|saved|create|created|update|updated|calculate|calculated|optimize|optimized|import|export|report|persist|queued|submitted|validated|generated|compare|recommendation|complete|completed)\b/.test(effect);
250
+ return navigationSignals && !productiveEffect;
251
+ }
252
+ function addJourneyIssue(issues, code, path, message, severity) {
253
+ if (severity === void 0) { severity = 'error'; }
254
+ issues.push({ code: code, path: path, message: message, severity: severity });
255
+ }
256
+ function normalizeWorkflowStepPosition(step, index, total) {
257
+ var explicit = cleanField(step, ['position', 'phase', 'order_role'], 60).toLowerCase();
258
+ if (explicit) {
259
+ return explicit;
260
+ }
261
+ if (index === 0) {
262
+ return 'first';
263
+ }
264
+ if (index === total - 1) {
265
+ return 'last';
266
+ }
267
+ return 'next';
268
+ }
269
+ function buildWorkflowStepId(step, index) {
270
+ return cleanField(step, ['id', 'step_id', 'key'], 120)
271
+ || cleanField(step, ['label', 'title', 'visible_cta'], 120).toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '')
272
+ || "step-".concat(index + 1);
273
+ }
274
+ function normalizeWorkflowProofKind(source, fallbackText) {
275
+ if (fallbackText === void 0) { fallbackText = ''; }
276
+ var explicit = cleanField(source, ['proof_kind', 'proofKind', 'coverage', 'type', 'kind'], 120).toLowerCase().replace(/[\s-]+/g, '_');
277
+ if (explicit) {
278
+ return explicit;
279
+ }
280
+ var text = cleanText([
281
+ fallbackText,
282
+ concatFields(source, ['id', 'step_id', 'stepId', 'action', 'browser_steps', 'expected_dom_or_data_proof', 'proof', 'expected_result', 'viewport'], 700)
283
+ ].filter(Boolean).join(' '), 1800).toLowerCase();
284
+ if (/\b(mobile|390x844|viewport)\b/.test(text)) {
285
+ return 'mobile';
286
+ }
287
+ if (/\b(export|report|pdf|download)\b/.test(text)) {
288
+ return 'report_export';
289
+ }
290
+ if (/\b(complete|saved|save|result|recommendation|calculated|optimized|final)\b/.test(text)) {
291
+ return 'workflow_completion';
292
+ }
293
+ if (/\b(sample|seeded|non[-\s]?empty|kpi|table|chart|record|row)\b/.test(text)) {
294
+ return 'non_empty_data';
295
+ }
296
+ if (/\b(empty|error|recovery|invalid)\b/.test(text)) {
297
+ return 'recovery';
298
+ }
299
+ if (/\b(hub|dashboard|command center|next up|queue)\b/.test(text)) {
300
+ return 'hub_action';
301
+ }
302
+ return 'business_workflow';
303
+ }
304
+ function buildWorkflowQaRequiredArtifacts(source, proofKind) {
305
+ var explicit = cleanList(readField(source, ['required_artifacts', 'requiredArtifacts', 'proof_artifacts', 'artifact_expectation', 'artifacts_required']), 12, 180);
306
+ var defaultsByKind = {
307
+ hub_action: ['hub screenshot or DOM snapshot', 'next action state proof'],
308
+ workflow_completion: ['before/action/after trace', 'saved or calculated output proof', 'business assertion artifact'],
309
+ report_export: ['generated report/export artifact', 'export control proof', 'saved output row proof'],
310
+ non_empty_data: ['seeded data snapshot', 'non-empty KPI/table/chart proof'],
311
+ mobile: ['mobile viewport screenshot or trace', 'responsive workflow action proof'],
312
+ recovery: ['empty/error state screenshot or trace', 'recovery action proof'],
313
+ business_workflow: ['browser trace or screenshot', 'DOM/data assertion artifact']
314
+ };
315
+ return Array.from(new Set(__spreadArray(__spreadArray([], __read(explicit), false), __read((defaultsByKind[proofKind] || defaultsByKind.business_workflow)), false))).slice(0, 16);
316
+ }
317
+ function buildWorkflowQaStateTransition(source, fallback) {
318
+ if (fallback === void 0) { fallback = {}; }
319
+ return {
320
+ before: cleanField(source, ['before', 'setup_state', 'initial_state'], 700) || fallback.expectedState,
321
+ action: cleanField(source, ['action', 'browser_steps', 'visible_cta', 'cta'], 700) || fallback.action,
322
+ after: cleanField(source, ['after', 'expected_state', 'expected_result', 'expected_dom_or_data_proof', 'proof'], 700) || fallback.assertion || fallback.expectedState,
323
+ assertion: cleanField(source, ['assertion', 'expected_dom_or_data_proof', 'proof', 'expected_result'], 700) || fallback.assertion
324
+ };
325
+ }
326
+ function buildResolveIOAICoderWorkflowQaRowsFromJourneyContract(input) {
327
+ var contract = typeof input === 'string'
328
+ ? extractResolveIOAICoderJourneyContractFromMarkdown(input)
329
+ : (input && typeof input === 'object' && !Array.isArray(input) ? input : null);
330
+ if (!contract) {
331
+ return [];
332
+ }
333
+ var workflowId = cleanField(contract, ['primary_workflow_id', 'workflow_id', 'id'], 160) || 'north-star';
334
+ var rows = [];
335
+ var qaAssertions = asArray(contract.qa_assertions);
336
+ qaAssertions.forEach(function (assertion, index) {
337
+ if (!assertion || typeof assertion !== 'object' || Array.isArray(assertion)) {
338
+ return;
339
+ }
340
+ var route = cleanField(assertion, ['route', 'screen_route', 'path'], 240);
341
+ var action = cleanField(assertion, ['action', 'browser_steps', 'cta', 'visible_cta'], 500);
342
+ var expectedState = cleanField(assertion, ['expected_state', 'expected_result', 'expected_dom_or_data_proof', 'proof'], 500);
343
+ var assertionText = cleanField(assertion, ['assertion', 'expected_dom_or_data_proof', 'proof', 'expected_result'], 700);
344
+ if (!route && !action && !assertionText) {
345
+ return;
346
+ }
347
+ var proofKind = normalizeWorkflowProofKind(assertion);
348
+ var rowBase = {
349
+ route: route || undefined,
350
+ action: action || undefined,
351
+ assertion: assertionText || undefined,
352
+ expectedState: expectedState || undefined
353
+ };
354
+ rows.push(__assign(__assign({ index: cleanNumber(readField(assertion, ['index', 'order'])) || index + 1, workflowId: cleanField(assertion, ['workflow_id', 'workflowId'], 160) || workflowId, stepId: cleanField(assertion, ['step_id', 'stepId', 'id'], 160) || "qa-".concat(index + 1) }, rowBase), { expectedOutput: cleanField(assertion, ['expected_output', 'expectedOutput', 'saved_output', 'calculated_output', 'report_output'], 700) || expectedState || assertionText || undefined, proofKind: proofKind, acceptanceGate: 'aiqa_business_assertion', requiredArtifacts: buildWorkflowQaRequiredArtifacts(assertion, proofKind), stateTransition: buildWorkflowQaStateTransition(assertion, rowBase), status: cleanField(assertion, ['status'], 120) || undefined, artifactPaths: cleanList(readField(assertion, ['artifact_paths', 'artifactPaths']), 20, 500) }));
355
+ });
356
+ if (rows.length) {
357
+ return rows.slice(0, 80);
358
+ }
359
+ asArray(contract.north_star_workflow).forEach(function (step, index, workflow) {
360
+ if (!step || typeof step !== 'object' || Array.isArray(step)) {
361
+ return;
362
+ }
363
+ var proofKind = normalizeWorkflowProofKind(step, normalizeWorkflowStepPosition(step, index, workflow.length));
364
+ var rowBase = {
365
+ route: cleanField(step, ['route'], 240) || undefined,
366
+ action: cleanField(step, ['visible_cta', 'action', 'cta'], 500) || undefined,
367
+ assertion: cleanField(step, ['success_confirmation', 'expected_state_transition', 'final_result'], 700) || undefined,
368
+ expectedState: cleanField(step, ['expected_state_transition', 'success_confirmation', 'final_result'], 500) || undefined
369
+ };
370
+ rows.push(__assign(__assign({ index: index + 1, workflowId: workflowId, stepId: buildWorkflowStepId(step, index) }, rowBase), { expectedOutput: cleanField(step, ['final_result', 'saved_exported_reported_result', 'completion_result', 'expected_state_transition'], 700) || rowBase.expectedState || rowBase.assertion, proofKind: proofKind, acceptanceGate: 'aiqa_business_assertion', requiredArtifacts: buildWorkflowQaRequiredArtifacts(step, proofKind), stateTransition: buildWorkflowQaStateTransition(step, rowBase), status: undefined, artifactPaths: [] }));
371
+ void workflow;
372
+ });
373
+ return rows.slice(0, 80);
374
+ }
375
+ function validateResolveIOAICoderJourneyContract(input, options) {
376
+ var e_3, _a, e_4, _b, e_5, _c, e_6, _d;
377
+ if (options === void 0) { options = {}; }
378
+ var pathLabel = cleanText(options.pathLabel || 'docs/APP_JOURNEY_CONTRACT.md', 240) || 'docs/APP_JOURNEY_CONTRACT.md';
379
+ var issues = [];
380
+ var contract = null;
381
+ if (typeof input === 'string') {
382
+ var normalized = input.replace(/\r\n/g, '\n');
383
+ if (!normalized.trim()) {
384
+ addJourneyIssue(issues, 'missing_contract', pathLabel, "".concat(pathLabel, ": missing app journey contract."));
385
+ return { valid: false, contract: null, issues: issues, workflowQaRows: [], primaryWorkflowId: '' };
386
+ }
387
+ if (options.requireMarkdownEnvelope !== false && !/^\s*#\s+App Journey Contract/im.test(normalized)) {
388
+ addJourneyIssue(issues, 'missing_heading', pathLabel, "".concat(pathLabel, ": missing \"# App Journey Contract\" heading."));
389
+ }
390
+ if (options.requireMarkdownEnvelope !== false && !/##\s*journey_contract/i.test(normalized)) {
391
+ addJourneyIssue(issues, 'missing_json_section', pathLabel, "".concat(pathLabel, ": missing \"## journey_contract\" JSON section."));
392
+ }
393
+ if (looksPlaceholder(normalized)) {
394
+ addJourneyIssue(issues, 'placeholder_text', pathLabel, "".concat(pathLabel, ": contains placeholder or generic journey text."));
395
+ }
396
+ contract = extractResolveIOAICoderJourneyContractFromMarkdown(normalized);
397
+ }
398
+ else if (input && typeof input === 'object' && !Array.isArray(input)) {
399
+ contract = input;
400
+ }
401
+ if (!contract) {
402
+ addJourneyIssue(issues, 'invalid_json', pathLabel, "".concat(pathLabel, ": journey_contract JSON is missing or invalid."));
403
+ return { valid: false, contract: null, issues: issues, workflowQaRows: [], primaryWorkflowId: '' };
404
+ }
405
+ var requiredKeys = [
406
+ 'app_archetype',
407
+ 'primary_actor',
408
+ 'primary_goal',
409
+ 'first_screen',
410
+ 'north_star_workflow',
411
+ 'secondary_workflows',
412
+ 'screen_sequence',
413
+ 'data_story',
414
+ 'completion_states',
415
+ 'qa_assertions'
416
+ ];
417
+ try {
418
+ for (var requiredKeys_1 = __values(requiredKeys), requiredKeys_1_1 = requiredKeys_1.next(); !requiredKeys_1_1.done; requiredKeys_1_1 = requiredKeys_1.next()) {
419
+ var key = requiredKeys_1_1.value;
420
+ if (!(key in contract)) {
421
+ addJourneyIssue(issues, 'missing_key', "".concat(pathLabel, ".journey_contract.").concat(key), "".concat(pathLabel, ": journey_contract missing key \"").concat(key, "\"."));
422
+ }
423
+ }
424
+ }
425
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
426
+ finally {
427
+ try {
428
+ if (requiredKeys_1_1 && !requiredKeys_1_1.done && (_a = requiredKeys_1.return)) _a.call(requiredKeys_1);
429
+ }
430
+ finally { if (e_3) throw e_3.error; }
431
+ }
432
+ try {
433
+ for (var _e = __values(['app_archetype', 'primary_actor', 'primary_goal']), _f = _e.next(); !_f.done; _f = _e.next()) {
434
+ var key = _f.value;
435
+ var value = cleanText(contract[key], 500);
436
+ if (value.length < 4) {
437
+ addJourneyIssue(issues, 'empty_core_field', "".concat(pathLabel, ".journey_contract.").concat(key), "".concat(pathLabel, ": journey_contract.").concat(key, " must be non-empty."));
438
+ }
439
+ if (looksPlaceholder(value)) {
440
+ addJourneyIssue(issues, 'placeholder_core_field', "".concat(pathLabel, ".journey_contract.").concat(key), "".concat(pathLabel, ": journey_contract.").concat(key, " is placeholder text."));
441
+ }
442
+ }
443
+ }
444
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
445
+ finally {
446
+ try {
447
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
448
+ }
449
+ finally { if (e_4) throw e_4.error; }
450
+ }
451
+ var firstScreen = contract.first_screen;
452
+ if (!firstScreen || typeof firstScreen !== 'object' || Array.isArray(firstScreen)) {
453
+ addJourneyIssue(issues, 'invalid_first_screen', "".concat(pathLabel, ".journey_contract.first_screen"), "".concat(pathLabel, ": first_screen must be an object."));
454
+ }
455
+ else {
456
+ var route = cleanField(firstScreen, ['route'], 240);
457
+ try {
458
+ for (var _g = __values([
459
+ ['route', ['route']],
460
+ ['purpose', ['purpose', 'screen_purpose']],
461
+ ['visible_cta', ['visible_cta', 'cta', 'primary_cta']],
462
+ ['next_step', ['next_step', 'next_step_destination', 'expected_next_state']]
463
+ ]), _h = _g.next(); !_h.done; _h = _g.next()) {
464
+ var _j = __read(_h.value, 2), label = _j[0], keys = _j[1];
465
+ if (cleanField(firstScreen, keys, 500).length < 4) {
466
+ addJourneyIssue(issues, 'incomplete_first_screen', "".concat(pathLabel, ".journey_contract.first_screen.").concat(label), "".concat(pathLabel, ": first_screen.").concat(label, " must be non-empty."));
467
+ }
468
+ }
469
+ }
470
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
471
+ finally {
472
+ try {
473
+ if (_h && !_h.done && (_c = _g.return)) _c.call(_g);
474
+ }
475
+ finally { if (e_5) throw e_5.error; }
476
+ }
477
+ if (route && !looksLikeAbsoluteRoute(route)) {
478
+ addJourneyIssue(issues, 'relative_first_screen_route', "".concat(pathLabel, ".journey_contract.first_screen.route"), "".concat(pathLabel, ": first_screen.route must be an absolute app route."));
479
+ }
480
+ }
481
+ var workflow = asArray(contract.north_star_workflow);
482
+ if (workflow.length < 3) {
483
+ addJourneyIssue(issues, 'workflow_too_short', "".concat(pathLabel, ".journey_contract.north_star_workflow"), "".concat(pathLabel, ": north_star_workflow must include at least first, next, and last steps."));
484
+ }
485
+ var positions = new Set(workflow.map(function (step, index) { return normalizeWorkflowStepPosition(step, index, workflow.length); }));
486
+ try {
487
+ for (var _k = __values(['first', 'next', 'last']), _l = _k.next(); !_l.done; _l = _k.next()) {
488
+ var requiredPosition = _l.value;
489
+ if (!positions.has(requiredPosition)) {
490
+ addJourneyIssue(issues, 'missing_workflow_position', "".concat(pathLabel, ".journey_contract.north_star_workflow"), "".concat(pathLabel, ": north_star_workflow missing position \"").concat(requiredPosition, "\"."));
491
+ }
492
+ }
493
+ }
494
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
495
+ finally {
496
+ try {
497
+ if (_l && !_l.done && (_d = _k.return)) _d.call(_k);
498
+ }
499
+ finally { if (e_6) throw e_6.error; }
500
+ }
501
+ workflow.forEach(function (step, index) {
502
+ var e_7, _a;
503
+ var stepPath = "".concat(pathLabel, ".journey_contract.north_star_workflow[").concat(index, "]");
504
+ if (!step || typeof step !== 'object' || Array.isArray(step)) {
505
+ addJourneyIssue(issues, 'invalid_workflow_step', stepPath, "".concat(pathLabel, ": north_star_workflow[").concat(index, "] must be an object."));
506
+ return;
507
+ }
508
+ var position = normalizeWorkflowStepPosition(step, index, workflow.length);
509
+ var route = cleanField(step, ['route'], 240);
510
+ var embeddedAction = cleanField(step, ['embedded_hub_action', 'hub_action'], 240);
511
+ var implementation = cleanField(step, [
512
+ 'method_or_calculation',
513
+ 'server_method_or_publication',
514
+ 'local_calculation_path',
515
+ 'action_implementation',
516
+ 'calculation_path',
517
+ 'data_mutation',
518
+ 'mutation',
519
+ 'persisted_result'
520
+ ], 500);
521
+ var requiredStepFields = [
522
+ ['position', ['position']],
523
+ ['visible_cta', ['visible_cta', 'cta', 'label']],
524
+ ['data_input_or_selection', ['data_input_or_selection', 'data_input', 'selection', 'input']],
525
+ ['expected_state_transition', ['expected_state_transition', 'expected_next_state', 'state_change']],
526
+ ['success_confirmation', ['success_confirmation', 'confirmation', 'success_message']],
527
+ ['next_step_destination', ['next_step_destination', 'next_step', 'destination']]
528
+ ];
529
+ try {
530
+ for (var requiredStepFields_1 = __values(requiredStepFields), requiredStepFields_1_1 = requiredStepFields_1.next(); !requiredStepFields_1_1.done; requiredStepFields_1_1 = requiredStepFields_1.next()) {
531
+ var _b = __read(requiredStepFields_1_1.value, 2), fieldName = _b[0], keys = _b[1];
532
+ if (fieldName === 'next_step_destination' && position === 'last') {
533
+ continue;
534
+ }
535
+ if (cleanField(step, keys, 500).length < 3) {
536
+ addJourneyIssue(issues, 'incomplete_workflow_step', "".concat(stepPath, ".").concat(fieldName), "".concat(pathLabel, ": north_star_workflow[").concat(index, "].").concat(fieldName, " must be non-empty."));
537
+ }
538
+ }
539
+ }
540
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
541
+ finally {
542
+ try {
543
+ if (requiredStepFields_1_1 && !requiredStepFields_1_1.done && (_a = requiredStepFields_1.return)) _a.call(requiredStepFields_1);
544
+ }
545
+ finally { if (e_7) throw e_7.error; }
546
+ }
547
+ if (!route && !embeddedAction) {
548
+ addJourneyIssue(issues, 'workflow_step_missing_route_or_hub_action', stepPath, "".concat(pathLabel, ": north_star_workflow[").concat(index, "] must specify a route or embedded hub action."));
549
+ }
550
+ if (route && !looksLikeAbsoluteRoute(route)) {
551
+ addJourneyIssue(issues, 'relative_workflow_route', "".concat(stepPath, ".route"), "".concat(pathLabel, ": north_star_workflow[").concat(index, "].route must be an absolute app route."));
552
+ }
553
+ if (!implementation) {
554
+ addJourneyIssue(issues, 'workflow_step_missing_implementation', stepPath, "".concat(pathLabel, ": north_star_workflow[").concat(index, "] must map the CTA to a server method, publication, local calculation, persisted mutation, or export/report action."));
555
+ }
556
+ if (isNavigationOnlyAction(step)) {
557
+ addJourneyIssue(issues, 'navigation_only_workflow_step', stepPath, "".concat(pathLabel, ": north_star_workflow[").concat(index, "] appears to be navigation-only instead of advancing state."));
558
+ }
559
+ if (position === 'last' && cleanField(step, ['final_result', 'saved_exported_reported_result', 'completion_result'], 700).length < 8) {
560
+ addJourneyIssue(issues, 'last_step_missing_final_result', "".concat(stepPath, ".final_result"), "".concat(pathLabel, ": last workflow step must define the saved, exported, reported, or calculated final result."));
561
+ }
562
+ });
563
+ var secondaryWorkflows = asArray(contract.secondary_workflows);
564
+ if (secondaryWorkflows.length < 3) {
565
+ addJourneyIssue(issues, 'missing_secondary_workflows', "".concat(pathLabel, ".journey_contract.secondary_workflows"), "".concat(pathLabel, ": secondary_workflows must include setup, manage, report/export, settings/secrets, or recovery coverage."));
566
+ }
567
+ var screenSequence = asArray(contract.screen_sequence);
568
+ if (screenSequence.length < Math.min(3, Math.max(workflow.length, 3))) {
569
+ addJourneyIssue(issues, 'screen_sequence_too_short', "".concat(pathLabel, ".journey_contract.screen_sequence"), "".concat(pathLabel, ": screen_sequence must map workflow steps to routes, CTAs, data, and next state."));
570
+ }
571
+ screenSequence.forEach(function (screen, index) {
572
+ var e_8, _a;
573
+ var screenPath = "".concat(pathLabel, ".journey_contract.screen_sequence[").concat(index, "]");
574
+ if (!screen || typeof screen !== 'object' || Array.isArray(screen)) {
575
+ addJourneyIssue(issues, 'invalid_screen_sequence_row', screenPath, "".concat(pathLabel, ": screen_sequence[").concat(index, "] must be an object."));
576
+ return;
577
+ }
578
+ try {
579
+ for (var _b = __values([
580
+ ['route', ['route']],
581
+ ['screen_purpose', ['screen_purpose', 'purpose']],
582
+ ['visible_cta', ['visible_cta', 'cta']],
583
+ ['expected_next_state', ['expected_next_state', 'expected_state_transition']],
584
+ ['data_shown', ['data_shown', 'data', 'records_shown']]
585
+ ]), _c = _b.next(); !_c.done; _c = _b.next()) {
586
+ var _d = __read(_c.value, 2), fieldName = _d[0], keys = _d[1];
587
+ if (cleanField(screen, keys, 500).length < 3) {
588
+ addJourneyIssue(issues, 'incomplete_screen_sequence_row', "".concat(screenPath, ".").concat(fieldName), "".concat(pathLabel, ": screen_sequence[").concat(index, "].").concat(fieldName, " must be non-empty."));
589
+ }
590
+ }
591
+ }
592
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
593
+ finally {
594
+ try {
595
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
596
+ }
597
+ finally { if (e_8) throw e_8.error; }
598
+ }
599
+ var route = cleanField(screen, ['route'], 240);
600
+ if (route && !looksLikeAbsoluteRoute(route)) {
601
+ addJourneyIssue(issues, 'relative_screen_route', "".concat(screenPath, ".route"), "".concat(pathLabel, ": screen_sequence[").concat(index, "].route must be an absolute app route."));
602
+ }
603
+ if (isNavigationOnlyAction(screen)) {
604
+ addJourneyIssue(issues, 'navigation_only_screen_action', screenPath, "".concat(pathLabel, ": screen_sequence[").concat(index, "] CTA appears to navigate without changing workflow state."));
605
+ }
606
+ });
607
+ var firstScreenRoute = cleanField(firstScreen, ['route'], 240);
608
+ var hubScreens = screenSequence.filter(function (screen) {
609
+ var route = cleanField(screen, ['route'], 240);
610
+ return route === firstScreenRoute || /hub|dashboard/i.test(route);
611
+ });
612
+ var hubHasEmbeddedAction = hubScreens.some(function (screen) {
613
+ var text = [
614
+ cleanField(screen, ['embedded_action', 'hub_action', 'action'], 500),
615
+ cleanField(screen, ['method_or_calculation', 'server_method_or_publication', 'local_calculation_path', 'action_implementation'], 500),
616
+ cleanField(screen, ['expected_next_state', 'expected_state_transition'], 500)
617
+ ].join(' ');
618
+ return text.trim().length >= 8 && !isNavigationOnlyAction(screen);
619
+ });
620
+ if (!hubHasEmbeddedAction) {
621
+ addJourneyIssue(issues, 'hub_missing_embedded_action', "".concat(pathLabel, ".journey_contract.screen_sequence"), "".concat(pathLabel, ": dashboard hub/first screen must embed at least one primary workflow action instead of acting as a link farm."));
622
+ }
623
+ var dataStory = contract.data_story;
624
+ if (!dataStory || typeof dataStory !== 'object' || Array.isArray(dataStory)) {
625
+ addJourneyIssue(issues, 'invalid_data_story', "".concat(pathLabel, ".journey_contract.data_story"), "".concat(pathLabel, ": data_story must be an object."));
626
+ }
627
+ else {
628
+ if (cleanField(dataStory, ['seeded_scenario', 'scenario'], 800).length < 12) {
629
+ addJourneyIssue(issues, 'missing_seeded_scenario', "".concat(pathLabel, ".journey_contract.data_story.seeded_scenario"), "".concat(pathLabel, ": data_story.seeded_scenario must describe the launch sample scenario."));
630
+ }
631
+ if (!asArray(readField(dataStory, ['records', 'seed_records'])).length) {
632
+ addJourneyIssue(issues, 'missing_seed_records', "".concat(pathLabel, ".journey_contract.data_story.records"), "".concat(pathLabel, ": data_story.records must list seeded records."));
633
+ }
634
+ if (!asArray(readField(dataStory, ['relationships', 'record_relationships'])).length) {
635
+ addJourneyIssue(issues, 'missing_seed_relationships', "".concat(pathLabel, ".journey_contract.data_story.relationships"), "".concat(pathLabel, ": data_story.relationships must list seeded data relationships."));
636
+ }
637
+ if (asArray(readField(dataStory, ['non_empty_states', 'non_empty_dashboard_states'])).length < 2) {
638
+ addJourneyIssue(issues, 'missing_non_empty_states', "".concat(pathLabel, ".journey_contract.data_story.non_empty_states"), "".concat(pathLabel, ": data_story.non_empty_states must list non-empty dashboard, workflow, or report states."));
639
+ }
640
+ }
641
+ if (asArray(contract.completion_states).length < 2) {
642
+ addJourneyIssue(issues, 'missing_completion_states', "".concat(pathLabel, ".journey_contract.completion_states"), "".concat(pathLabel, ": completion_states must define what done looks like to the user."));
643
+ }
644
+ var qaAssertions = asArray(contract.qa_assertions);
645
+ if (qaAssertions.length < 5) {
646
+ addJourneyIssue(issues, 'qa_assertions_too_short', "".concat(pathLabel, ".journey_contract.qa_assertions"), "".concat(pathLabel, ": qa_assertions must include login, hub action, workflow completion, sample data, and mobile proof."));
647
+ }
648
+ var hasMobileQa = false;
649
+ var hasRecoveryQa = false;
650
+ var hasCompletionQa = false;
651
+ var hasNonEmptyQa = false;
652
+ qaAssertions.forEach(function (assertion, index) {
653
+ var e_9, _a;
654
+ var qaPath = "".concat(pathLabel, ".journey_contract.qa_assertions[").concat(index, "]");
655
+ if (!assertion || typeof assertion !== 'object' || Array.isArray(assertion)) {
656
+ addJourneyIssue(issues, 'invalid_qa_assertion', qaPath, "".concat(pathLabel, ": qa_assertions[").concat(index, "] must be an object."));
657
+ return;
658
+ }
659
+ try {
660
+ for (var _b = __values([
661
+ ['route', ['route', 'screen_route', 'path']],
662
+ ['action', ['action', 'browser_steps', 'visible_cta']],
663
+ ['expected_dom_or_data_proof', ['expected_dom_or_data_proof', 'proof', 'expected_result']]
664
+ ]), _c = _b.next(); !_c.done; _c = _b.next()) {
665
+ var _d = __read(_c.value, 2), fieldName = _d[0], keys = _d[1];
666
+ if (cleanField(assertion, keys, 700).length < 3) {
667
+ addJourneyIssue(issues, 'incomplete_qa_assertion', "".concat(qaPath, ".").concat(fieldName), "".concat(pathLabel, ": qa_assertions[").concat(index, "].").concat(fieldName, " must be non-empty."));
668
+ }
669
+ }
670
+ }
671
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
672
+ finally {
673
+ try {
674
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
675
+ }
676
+ finally { if (e_9) throw e_9.error; }
677
+ }
678
+ var route = cleanField(assertion, ['route', 'screen_route', 'path'], 240);
679
+ if (route && !looksLikeAbsoluteRoute(route)) {
680
+ addJourneyIssue(issues, 'relative_qa_route', "".concat(qaPath, ".route"), "".concat(pathLabel, ": qa_assertions[").concat(index, "].route must be an absolute app route."));
681
+ }
682
+ var text = [
683
+ concatFields(assertion, ['id', 'type', 'kind', 'coverage', 'viewport'], 300),
684
+ concatFields(assertion, ['action', 'browser_steps', 'expected_dom_or_data_proof', 'proof', 'expected_result'], 1000)
685
+ ].join(' ').toLowerCase();
686
+ hasMobileQa = hasMobileQa || /\b(mobile|390x844|viewport)\b/.test(text);
687
+ hasRecoveryQa = hasRecoveryQa || /\b(empty|error|recovery|invalid)\b/.test(text);
688
+ hasCompletionQa = hasCompletionQa || /\b(complete|saved|export|report|result|recommendation|calculated|optimized)\b/.test(text);
689
+ hasNonEmptyQa = hasNonEmptyQa || /\b(sample|seeded|non[-\s]?empty|kpi|table|chart|record|row)\b/.test(text);
690
+ });
691
+ if (!hasCompletionQa) {
692
+ addJourneyIssue(issues, 'missing_completion_qa', "".concat(pathLabel, ".journey_contract.qa_assertions"), "".concat(pathLabel, ": qa_assertions missing business completion proof."));
693
+ }
694
+ if (!hasNonEmptyQa) {
695
+ addJourneyIssue(issues, 'missing_non_empty_qa', "".concat(pathLabel, ".journey_contract.qa_assertions"), "".concat(pathLabel, ": qa_assertions missing non-empty seeded data proof."));
696
+ }
697
+ if (!hasMobileQa) {
698
+ addJourneyIssue(issues, 'missing_mobile_qa', "".concat(pathLabel, ".journey_contract.qa_assertions"), "".concat(pathLabel, ": qa_assertions missing mobile viewport proof."));
699
+ }
700
+ if (!hasRecoveryQa) {
701
+ addJourneyIssue(issues, 'missing_recovery_qa', "".concat(pathLabel, ".journey_contract.qa_assertions"), "".concat(pathLabel, ": qa_assertions missing empty/error recovery proof."));
702
+ }
703
+ var workflowQaRows = buildResolveIOAICoderWorkflowQaRowsFromJourneyContract(contract);
704
+ return {
705
+ valid: !issues.some(function (issue) { return issue.severity === 'error'; }),
706
+ contract: contract,
707
+ issues: issues,
708
+ workflowQaRows: workflowQaRows,
709
+ primaryWorkflowId: cleanField(contract, ['primary_workflow_id', 'workflow_id', 'id'], 160) || 'north-star'
710
+ };
711
+ }
712
+ function collectResolveIOAICoderJourneyContractIssues(input, options) {
713
+ if (options === void 0) { options = {}; }
714
+ return validateResolveIOAICoderJourneyContract(input, options).issues.map(function (issue) { return issue.message; });
715
+ }
716
+ function cleanNumber(value) {
717
+ var parsed = Number(value);
718
+ return Number.isFinite(parsed) && parsed > 0 ? Math.floor(parsed) : 0;
719
+ }
720
+ function cleanWorkflowQaRows(values, limit) {
721
+ var e_10, _a;
722
+ if (limit === void 0) { limit = 40; }
723
+ if (!Array.isArray(values)) {
724
+ return [];
725
+ }
726
+ var rows = [];
727
+ try {
728
+ for (var values_2 = __values(values), values_2_1 = values_2.next(); !values_2_1.done; values_2_1 = values_2.next()) {
729
+ var value = values_2_1.value;
730
+ if (!value || typeof value !== 'object') {
731
+ continue;
732
+ }
733
+ var row = {
734
+ index: cleanNumber(value.index) || undefined,
735
+ workflowId: cleanText(value.workflowId || value.workflow_id, 160) || undefined,
736
+ stepId: cleanText(value.stepId || value.step_id, 160) || undefined,
737
+ route: cleanText(value.route, 240) || undefined,
738
+ action: cleanText(value.action, 500) || undefined,
739
+ assertion: cleanText(value.assertion, 700) || undefined,
740
+ expectedState: cleanText(value.expectedState || value.expected_state, 500) || undefined,
741
+ expectedOutput: cleanText(value.expectedOutput || value.expected_output, 700) || undefined,
742
+ proofKind: cleanText(value.proofKind || value.proof_kind, 120) || undefined,
743
+ acceptanceGate: (value.acceptanceGate || value.acceptance_gate) === 'aiqa_business_assertion'
744
+ ? 'aiqa_business_assertion'
745
+ : undefined,
746
+ requiredArtifacts: cleanList(value.requiredArtifacts || value.required_artifacts, 20, 180),
747
+ stateTransition: value.stateTransition || value.state_transition
748
+ ? {
749
+ before: cleanText((value.stateTransition || value.state_transition).before, 700) || undefined,
750
+ action: cleanText((value.stateTransition || value.state_transition).action, 700) || undefined,
751
+ after: cleanText((value.stateTransition || value.state_transition).after, 700) || undefined,
752
+ assertion: cleanText((value.stateTransition || value.state_transition).assertion, 700) || undefined
753
+ }
754
+ : undefined,
755
+ status: cleanText(value.status, 120) || undefined,
756
+ artifactPaths: cleanList(value.artifactPaths || value.artifact_paths, 20, 500)
757
+ };
758
+ if (row.workflowId || row.stepId || row.route || row.action || row.assertion) {
759
+ rows.push(row);
760
+ }
761
+ if (rows.length >= limit) {
762
+ break;
763
+ }
764
+ }
765
+ }
766
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
767
+ finally {
768
+ try {
769
+ if (values_2_1 && !values_2_1.done && (_a = values_2.return)) _a.call(values_2);
770
+ }
771
+ finally { if (e_10) throw e_10.error; }
772
+ }
773
+ return rows;
774
+ }
775
+ function statusLooksPassed(value) {
776
+ var normalized = cleanText(value, 120).toLowerCase();
777
+ return !!normalized && /\b(pass|passed|success|succeeded|ok|done|complete|completed|ready|saved|published|deployed)\b/i.test(normalized);
778
+ }
779
+ function statusLooksFailed(value) {
780
+ var normalized = cleanText(value, 160).toLowerCase();
781
+ return !!normalized && /\b(fail|failed|error|blocked|missing|empty|stale|skipped|not ready|not_ready|cannot|could not|invalid)\b/i.test(normalized);
782
+ }
783
+ function normalizeProofKey(value) {
784
+ return cleanText(value, 500).toLowerCase().replace(/[^a-z0-9]+/g, ' ').replace(/\s+/g, ' ').trim();
785
+ }
786
+ function cleanAssertionArtifactPaths(value) {
787
+ return cleanList(value.artifactPaths
788
+ || value.artifact_paths
789
+ || value.artifacts
790
+ || value.screenshots
791
+ || (value.screenshot ? [value.screenshot] : []), 20, 500);
792
+ }
793
+ function normalizeWorkflowProofAssertion(value) {
794
+ var source = value && typeof value === 'object' && !Array.isArray(value) ? value : {};
795
+ return {
796
+ assertion: cleanText(source.assertion || source.name || source.label || source.expected, 1000),
797
+ status: cleanText(source.status || source.outcome || source.result || (source.passed === true ? 'pass' : source.passed === false ? 'fail' : ''), 120),
798
+ workflowId: cleanText(source.workflowId || source.workflow_id || source.workflow || source.workflowName || source.workflow_name, 200),
799
+ stepId: cleanText(source.stepId || source.step_id || source.id || source.key, 200),
800
+ route: cleanText(source.route || source.path || source.url, 500),
801
+ action: cleanText(source.action || source.browser_steps || source.action_under_test || source.actionUnderTest, 800),
802
+ expected: cleanText(source.expected || source.expected_state || source.expectedState || source.expected_business_state_change || source.expectedBusinessStateChange, 1000),
803
+ observed: cleanText(source.observed || source.actual || source.after || source.after_state || source.afterState, 1000),
804
+ dataProof: cleanText(source.dataProof || source.data_proof || source.domProof || source.dom_proof || source.proof || source.summary, 1400),
805
+ artifactPaths: cleanAssertionArtifactPaths(source),
806
+ metadata: source.metadata && typeof source.metadata === 'object' && !Array.isArray(source.metadata) ? source.metadata : {}
807
+ };
808
+ }
809
+ function workflowRowKey(row, index) {
810
+ return cleanText(row.stepId || row.assertion || row.action || row.route || "workflow-row-".concat(index + 1), 200);
811
+ }
812
+ function sameWorkflowRow(left, right) {
813
+ var leftStep = normalizeProofKey(left.stepId);
814
+ var rightStep = normalizeProofKey(right.stepId);
815
+ if (leftStep && rightStep && leftStep === rightStep) {
816
+ return true;
817
+ }
818
+ var leftRoute = normalizeProofKey(left.route);
819
+ var rightRoute = normalizeProofKey(right.route);
820
+ var leftAction = normalizeProofKey(left.action || left.assertion);
821
+ var rightAction = normalizeProofKey(right.action || right.assertion);
822
+ return !!leftRoute && !!rightRoute && leftRoute === rightRoute && !!leftAction && !!rightAction && (leftAction.includes(rightAction) || rightAction.includes(leftAction));
823
+ }
824
+ function mergeWorkflowQaRows(contractRows, recordedRows) {
825
+ if (!contractRows.length) {
826
+ return recordedRows;
827
+ }
828
+ return contractRows.map(function (contractRow) {
829
+ var recorded = recordedRows.find(function (row) { return sameWorkflowRow(contractRow, row); });
830
+ if (!recorded) {
831
+ return contractRow;
832
+ }
833
+ return __assign(__assign(__assign({}, contractRow), recorded), { workflowId: recorded.workflowId || contractRow.workflowId, stepId: recorded.stepId || contractRow.stepId, route: recorded.route || contractRow.route, action: recorded.action || contractRow.action, assertion: recorded.assertion || contractRow.assertion, expectedState: recorded.expectedState || contractRow.expectedState, expectedOutput: recorded.expectedOutput || contractRow.expectedOutput, proofKind: recorded.proofKind || contractRow.proofKind, acceptanceGate: recorded.acceptanceGate || contractRow.acceptanceGate, requiredArtifacts: Array.from(new Set(__spreadArray(__spreadArray([], __read(cleanList(contractRow.requiredArtifacts, 20, 180)), false), __read(cleanList(recorded.requiredArtifacts, 20, 180)), false))), stateTransition: recorded.stateTransition || contractRow.stateTransition, artifactPaths: Array.from(new Set(__spreadArray(__spreadArray([], __read(cleanList(contractRow.artifactPaths, 20, 500)), false), __read(cleanList(recorded.artifactPaths, 20, 500)), false))) });
834
+ });
835
+ }
836
+ function assertionMatchesWorkflowRow(assertion, row) {
837
+ var metadata = assertion.metadata || {};
838
+ if (metadata.workflowQaRowMatched === true || metadata.journeyContractMatched === true || metadata.aicoderWorkflowProof === true) {
839
+ return true;
840
+ }
841
+ var rowStep = normalizeProofKey(row.stepId);
842
+ var assertionStep = normalizeProofKey(assertion.stepId || metadata.stepId || metadata.step_id);
843
+ if (rowStep && assertionStep && rowStep === assertionStep) {
844
+ return true;
845
+ }
846
+ var rowRoute = normalizeProofKey(row.route);
847
+ var assertionRoute = normalizeProofKey(assertion.route);
848
+ var rowAction = normalizeProofKey(row.action || row.assertion);
849
+ var assertionAction = normalizeProofKey([
850
+ assertion.action,
851
+ assertion.assertion,
852
+ assertion.expected,
853
+ assertion.observed,
854
+ assertion.dataProof
855
+ ].filter(Boolean).join(' '));
856
+ return !!rowRoute
857
+ && !!assertionRoute
858
+ && rowRoute === assertionRoute
859
+ && !!rowAction
860
+ && !!assertionAction
861
+ && (assertionAction.includes(rowAction) || rowAction.includes(assertionAction));
862
+ }
863
+ function workflowRowPassingAssertion(row, assertions) {
864
+ return assertions.find(function (assertion) { return statusLooksPassed(assertion.status) && assertionMatchesWorkflowRow(assertion, row); });
865
+ }
866
+ function workflowAssertionHasOutputProof(assertion) {
867
+ if (!assertion) {
868
+ return false;
869
+ }
870
+ return cleanText(assertion.dataProof, 1000).length >= 8
871
+ || cleanText(assertion.observed, 1000).length >= 8
872
+ || cleanText(assertion.expected, 1000).length >= 8
873
+ || cleanList(assertion.artifactPaths, 20, 500).length > 0;
874
+ }
875
+ function workflowRowArtifactPaths(row, assertion) {
876
+ return Array.from(new Set(__spreadArray(__spreadArray([], __read(cleanList(row.artifactPaths, 20, 500)), false), __read(cleanList(assertion === null || assertion === void 0 ? void 0 : assertion.artifactPaths, 20, 500)), false)));
877
+ }
878
+ function workflowRowRequiresOutputProof(row) {
879
+ var _a, _b;
880
+ var proofKind = cleanText(row.proofKind, 120).toLowerCase();
881
+ if (/^(workflow_completion|report_export|non_empty_data|hub_action|business_workflow)$/.test(proofKind)) {
882
+ return true;
883
+ }
884
+ var text = cleanText([
885
+ row.expectedOutput,
886
+ row.expectedState,
887
+ row.assertion,
888
+ (_a = row.stateTransition) === null || _a === void 0 ? void 0 : _a.after,
889
+ (_b = row.stateTransition) === null || _b === void 0 ? void 0 : _b.assertion
890
+ ].filter(Boolean).join(' '), 1600).toLowerCase();
891
+ return /\b(save|saved|persist|calculated|optimized|recommendation|report|export|result|non[-\s]?empty|record|row|kpi|table|chart)\b/.test(text);
892
+ }
893
+ function workflowRowRequiresMappedBusinessAssertion(row) {
894
+ var _a;
895
+ var proofKind = cleanText(row.proofKind, 120).toLowerCase();
896
+ if (/^(workflow_completion|report_export)$/.test(proofKind)) {
897
+ return true;
898
+ }
899
+ if (/^(mobile|recovery|hub_action|non_empty_data)$/.test(proofKind)) {
900
+ return false;
901
+ }
902
+ var text = cleanText([
903
+ row.stepId,
904
+ row.expectedOutput,
905
+ row.expectedState,
906
+ row.assertion,
907
+ (_a = row.stateTransition) === null || _a === void 0 ? void 0 : _a.after
908
+ ].filter(Boolean).join(' '), 1600).toLowerCase();
909
+ return /\b(workflow[-_\s]?completion|save|saved|persist|calculated|optimized|recommendation|report|export|final result)\b/.test(text);
910
+ }
911
+ function workflowRowWeakProofReason(row, assertions) {
912
+ var assertion = workflowRowPassingAssertion(row, assertions);
913
+ var rowPassed = statusLooksPassed(row.status);
914
+ if (!rowPassed && !assertion) {
915
+ return '';
916
+ }
917
+ var artifactPaths = workflowRowArtifactPaths(row, assertion);
918
+ var requiredArtifacts = cleanList(row.requiredArtifacts, 20, 180);
919
+ if (requiredArtifacts.length && !artifactPaths.length) {
920
+ return "".concat(workflowRowKey(row, 0), " missing required artifact proof: ").concat(requiredArtifacts.slice(0, 3).join(', '));
921
+ }
922
+ if (row.acceptanceGate === 'aiqa_business_assertion' && workflowRowRequiresMappedBusinessAssertion(row) && !assertion) {
923
+ return "".concat(workflowRowKey(row, 0), " requires mapped AIQaBusinessAssertion proof.");
924
+ }
925
+ if (workflowRowRequiresOutputProof(row) && !workflowAssertionHasOutputProof(assertion) && !cleanText(row.expectedOutput || row.expectedState, 700)) {
926
+ return "".concat(workflowRowKey(row, 0), " missing saved/calculated/report output proof.");
927
+ }
928
+ return '';
929
+ }
930
+ function workflowRowHasProof(row, assertions) {
931
+ if (workflowRowWeakProofReason(row, assertions)) {
932
+ return false;
933
+ }
934
+ if (statusLooksPassed(row.status) && cleanList(row.artifactPaths, 20, 500).length) {
935
+ return true;
936
+ }
937
+ return !!workflowRowPassingAssertion(row, assertions);
938
+ }
939
+ function workflowRowFailed(row, assertions) {
940
+ if (statusLooksFailed(row.status)) {
941
+ return true;
942
+ }
943
+ return assertions.some(function (assertion) { return statusLooksFailed(assertion.status) && assertionMatchesWorkflowRow(assertion, row); });
944
+ }
945
+ function collectContractArtifactPaths(rows, assertions, extraPaths) {
946
+ return Array.from(new Set(__spreadArray(__spreadArray(__spreadArray([], __read(cleanList(extraPaths, 40, 500)), false), __read(rows.flatMap(function (row) { return cleanList(row.artifactPaths, 20, 500); })), false), __read(assertions.flatMap(function (assertion) { return cleanList(assertion.artifactPaths, 20, 500); })), false))).slice(0, 80);
947
+ }
948
+ function stableProofValue(value) {
949
+ if (Array.isArray(value)) {
950
+ return value.map(stableProofValue);
951
+ }
952
+ if (value && typeof value === 'object') {
953
+ return Object.keys(value)
954
+ .sort()
955
+ .reduce(function (accumulator, key) {
956
+ var cleanKey = cleanText(key, 120);
957
+ if (!cleanKey || /^(evaluatedAt|recordedAt|createdAt|updatedAt|timestamp|durationMs)$/i.test(cleanKey)) {
958
+ return accumulator;
959
+ }
960
+ var nextValue = stableProofValue(value[key]);
961
+ if (nextValue !== undefined && nextValue !== '' && !(Array.isArray(nextValue) && !nextValue.length)) {
962
+ accumulator[cleanKey] = nextValue;
963
+ }
964
+ return accumulator;
965
+ }, {});
966
+ }
967
+ if (typeof value === 'number') {
968
+ return Number.isFinite(value) ? value : undefined;
969
+ }
970
+ if (typeof value === 'boolean') {
971
+ return value;
972
+ }
973
+ return cleanText(value, 2000);
974
+ }
975
+ function fingerprintResolveIOAICoderWorkflowProofPayload(value, prefix) {
976
+ var text = JSON.stringify(stableProofValue(value));
977
+ var hash = 0;
978
+ for (var index = 0; index < text.length; index += 1) {
979
+ hash = ((hash << 5) - hash + text.charCodeAt(index)) | 0;
980
+ }
981
+ return "".concat(prefix, "-").concat(Math.abs(hash).toString(36));
982
+ }
983
+ function normalizeWorkflowProofFingerprintList() {
984
+ var e_11, _a, e_12, _b;
985
+ var values = [];
986
+ for (var _i = 0; _i < arguments.length; _i++) {
987
+ values[_i] = arguments[_i];
988
+ }
989
+ var fingerprints = [];
990
+ try {
991
+ for (var values_3 = __values(values), values_3_1 = values_3.next(); !values_3_1.done; values_3_1 = values_3.next()) {
992
+ var value = values_3_1.value;
993
+ var list = Array.isArray(value) ? value : value ? [value] : [];
994
+ try {
995
+ for (var list_1 = (e_12 = void 0, __values(list)), list_1_1 = list_1.next(); !list_1_1.done; list_1_1 = list_1.next()) {
996
+ var entry = list_1_1.value;
997
+ var normalized = cleanText(entry, 200);
998
+ if (normalized && !fingerprints.includes(normalized)) {
999
+ fingerprints.push(normalized);
1000
+ }
1001
+ }
1002
+ }
1003
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
1004
+ finally {
1005
+ try {
1006
+ if (list_1_1 && !list_1_1.done && (_b = list_1.return)) _b.call(list_1);
1007
+ }
1008
+ finally { if (e_12) throw e_12.error; }
1009
+ }
1010
+ }
1011
+ }
1012
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
1013
+ finally {
1014
+ try {
1015
+ if (values_3_1 && !values_3_1.done && (_a = values_3.return)) _a.call(values_3);
1016
+ }
1017
+ finally { if (e_11) throw e_11.error; }
1018
+ }
1019
+ return fingerprints.slice(0, 40);
1020
+ }
1021
+ function evaluateResolveIOAICoderWorkflowProofReadiness(input) {
1022
+ var _a, _b;
1023
+ if (input === void 0) { input = {}; }
1024
+ var now = isoNow(input.now);
1025
+ var journeyInput = input.journeyContract !== undefined ? input.journeyContract : input.journeyContractMarkdown;
1026
+ var hasJourneyInput = journeyInput !== undefined && journeyInput !== null && cleanText(journeyInput, 100).length > 0;
1027
+ var journeyValidation = hasJourneyInput
1028
+ ? validateResolveIOAICoderJourneyContract(journeyInput, {
1029
+ requireMarkdownEnvelope: typeof journeyInput === 'string'
1030
+ })
1031
+ : {
1032
+ valid: false,
1033
+ contract: null,
1034
+ issues: [{
1035
+ code: 'missing_contract',
1036
+ path: 'docs/APP_JOURNEY_CONTRACT.md',
1037
+ message: 'docs/APP_JOURNEY_CONTRACT.md is required before workflow proof can accept the app.',
1038
+ severity: 'error'
1039
+ }],
1040
+ workflowQaRows: [],
1041
+ primaryWorkflowId: ''
1042
+ };
1043
+ var recordedRows = cleanWorkflowQaRows(input.workflowQaRows, 120);
1044
+ var rows = mergeWorkflowQaRows(journeyValidation.workflowQaRows, recordedRows);
1045
+ var assertions = asArray(input.businessAssertions).map(normalizeWorkflowProofAssertion).filter(function (assertion) {
1046
+ return assertion.assertion || assertion.route || assertion.action || assertion.dataProof || assertion.status;
1047
+ });
1048
+ var routeOnly = asArray(input.routeProbes).some(function (probe) { return statusLooksPassed((probe === null || probe === void 0 ? void 0 : probe.status) || ((probe === null || probe === void 0 ? void 0 : probe.passed) === true ? 'pass' : '')); })
1049
+ && !assertions.some(function (assertion) { return statusLooksPassed(assertion.status); });
1050
+ var weakProofReasons = rows.map(function (row) { return workflowRowWeakProofReason(row, assertions); }).filter(Boolean);
1051
+ var failedRows = rows.filter(function (row) { return workflowRowFailed(row, assertions); });
1052
+ var passedRows = rows.filter(function (row) { return workflowRowHasProof(row, assertions); });
1053
+ var missingRows = rows.filter(function (row) { return !workflowRowHasProof(row, assertions) && !workflowRowFailed(row, assertions); });
1054
+ var passedAssertions = assertions.filter(function (assertion) { return statusLooksPassed(assertion.status); });
1055
+ var releaseBlockers = [
1056
+ statusLooksFailed(input.deployStatus) ? "deploy=".concat(cleanText(input.deployStatus, 160)) : '',
1057
+ statusLooksFailed(input.publishStatus) ? "publish=".concat(cleanText(input.publishStatus, 160)) : '',
1058
+ statusLooksFailed(input.sampleDataStatus) ? "sample_data=".concat(cleanText(input.sampleDataStatus, 160)) : ''
1059
+ ].filter(Boolean);
1060
+ var hasDataProof = passedAssertions.some(function (assertion) { return cleanText(assertion.dataProof, 1000).length >= 8; });
1061
+ var sampleDataReady = statusLooksPassed(input.sampleDataStatus)
1062
+ || (!statusLooksFailed(input.sampleDataStatus) && hasDataProof);
1063
+ var artifactPaths = collectContractArtifactPaths(rows, assertions, input.artifactPaths);
1064
+ var workflowProofFingerprint = fingerprintResolveIOAICoderWorkflowProofPayload({
1065
+ primaryWorkflowId: journeyValidation.primaryWorkflowId || cleanText((_a = recordedRows[0]) === null || _a === void 0 ? void 0 : _a.workflowId, 160),
1066
+ passedWorkflowRows: passedRows.map(workflowRowKey),
1067
+ failedWorkflowRows: failedRows.map(workflowRowKey),
1068
+ missingWorkflowRows: missingRows.map(workflowRowKey),
1069
+ passedBusinessAssertions: passedAssertions.map(function (assertion) { return ({
1070
+ assertion: assertion.assertion,
1071
+ workflowId: assertion.workflowId,
1072
+ stepId: assertion.stepId,
1073
+ route: assertion.route,
1074
+ action: assertion.action,
1075
+ expected: assertion.expected,
1076
+ observed: assertion.observed,
1077
+ dataProof: assertion.dataProof,
1078
+ artifactPaths: assertion.artifactPaths
1079
+ }); }),
1080
+ sampleDataStatus: input.sampleDataStatus,
1081
+ sampleDataReady: sampleDataReady,
1082
+ artifactPaths: artifactPaths
1083
+ }, 'aicoder-workflow-proof');
1084
+ var artifactFingerprint = fingerprintResolveIOAICoderWorkflowProofPayload({
1085
+ artifactPaths: artifactPaths,
1086
+ businessDataProof: passedAssertions.map(function (assertion) { return ({
1087
+ stepId: assertion.stepId,
1088
+ route: assertion.route,
1089
+ dataProof: assertion.dataProof,
1090
+ observed: assertion.observed,
1091
+ artifactPaths: assertion.artifactPaths
1092
+ }); })
1093
+ }, 'aicoder-workflow-artifacts');
1094
+ var previousWorkflowFingerprints = normalizeWorkflowProofFingerprintList(input.previousWorkflowProofFingerprint, input.previousWorkflowProofFingerprints);
1095
+ var previousArtifactFingerprints = normalizeWorkflowProofFingerprintList(input.previousArtifactFingerprint, input.previousArtifactFingerprints);
1096
+ var proofFreshness = 'unknown';
1097
+ if (!passedAssertions.length && !artifactPaths.length) {
1098
+ proofFreshness = 'missing';
1099
+ }
1100
+ else if (previousWorkflowFingerprints.includes(workflowProofFingerprint)) {
1101
+ proofFreshness = 'same_as_previous';
1102
+ }
1103
+ else if (previousArtifactFingerprints.includes(artifactFingerprint)) {
1104
+ proofFreshness = 'stale_artifact';
1105
+ }
1106
+ else {
1107
+ proofFreshness = 'fresh';
1108
+ }
1109
+ var blockers = [];
1110
+ var status = 'ready';
1111
+ var reason = 'Journey contract and workflow business proof are ready.';
1112
+ var nextAction = 'Proceed to the smallest remaining release gate.';
1113
+ if (!hasJourneyInput) {
1114
+ status = 'missing_journey_contract';
1115
+ blockers.push('Generate and validate docs/APP_JOURNEY_CONTRACT.md before build/acceptance.');
1116
+ reason = 'AICoder cannot accept an app without a journey contract.';
1117
+ nextAction = 'Run journey_contract generation and validation first.';
1118
+ }
1119
+ else if (!journeyValidation.valid) {
1120
+ status = 'journey_invalid';
1121
+ blockers.push.apply(blockers, __spreadArray([], __read(journeyValidation.issues.filter(function (issue) { return issue.severity === 'error'; }).map(function (issue) { return issue.message; }).slice(0, 8)), false));
1122
+ reason = 'Journey contract validation failed.';
1123
+ nextAction = 'Repair docs/APP_JOURNEY_CONTRACT.md before product-code repair.';
1124
+ }
1125
+ else if (routeOnly) {
1126
+ status = 'route_only';
1127
+ blockers.push('Route/browser proof passed, but no workflow business assertion passed.');
1128
+ reason = 'Route-only proof cannot accept an AICoder app.';
1129
+ nextAction = 'Run workflow QA generated from the journey contract.';
1130
+ }
1131
+ else if (!rows.length) {
1132
+ status = 'workflow_qa_missing';
1133
+ blockers.push('No workflow QA rows were generated or recorded from the journey contract.');
1134
+ reason = 'Workflow QA evidence is missing.';
1135
+ nextAction = 'Generate workflow QA rows from journey_contract.qa_assertions.';
1136
+ }
1137
+ else if (weakProofReasons.length) {
1138
+ status = 'business_proof_weak';
1139
+ blockers.push.apply(blockers, __spreadArray([], __read(weakProofReasons.slice(0, 8)), false));
1140
+ reason = 'Workflow QA rows passed without the structured artifacts or mapped output proof required by the Journey Contract.';
1141
+ nextAction = 'Rerun the weak workflow QA rows and record AIQaBusinessAssertion plus required artifacts.';
1142
+ }
1143
+ else if (failedRows.length || missingRows.length) {
1144
+ status = 'workflow_qa_incomplete';
1145
+ blockers.push.apply(blockers, __spreadArray(__spreadArray([], __read(failedRows.map(function (row, index) { return "failed:".concat(workflowRowKey(row, index)); }).slice(0, 8)), false), __read(missingRows.map(function (row, index) { return "missing:".concat(workflowRowKey(row, index)); }).slice(0, 8)), false));
1146
+ reason = 'Not all journey contract workflow QA rows have passed business proof.';
1147
+ nextAction = 'Rerun or repair the incomplete workflow QA rows before publish.';
1148
+ }
1149
+ else if (!passedAssertions.length) {
1150
+ status = input.scorecardPassed === true ? 'business_proof_missing' : 'workflow_qa_incomplete';
1151
+ blockers.push('Workflow rows have no mapped AIQaBusinessAssertion business proof.');
1152
+ reason = input.scorecardPassed === true
1153
+ ? 'Scorecard-only proof is not acceptance.'
1154
+ : 'Workflow business proof is missing.';
1155
+ nextAction = 'Record AIQaBusinessAssertion rows tied to the journey contract.';
1156
+ }
1157
+ else if (releaseBlockers.length) {
1158
+ status = 'release_blocked';
1159
+ blockers.push.apply(blockers, __spreadArray([], __read(releaseBlockers), false));
1160
+ reason = 'Workflow proof passed, but release/deploy/sample-data gates block acceptance.';
1161
+ nextAction = 'Repair only the failed release gate or hotfix artifact before rerunning publish/deploy.';
1162
+ }
1163
+ else if (!sampleDataReady) {
1164
+ status = 'sample_data_missing';
1165
+ blockers.push('No non-empty seeded/sample data proof is available for the workflow.');
1166
+ reason = 'AICoder app proof must include meaningful non-empty data.';
1167
+ nextAction = 'Seed meaningful records and rerun workflow QA against that data.';
1168
+ }
1169
+ else if (proofFreshness === 'same_as_previous' || proofFreshness === 'stale_artifact') {
1170
+ status = 'stale_workflow_proof';
1171
+ blockers.push(proofFreshness === 'same_as_previous'
1172
+ ? 'Workflow business proof fingerprint is unchanged from a prior run.'
1173
+ : 'Workflow proof artifacts are unchanged from a prior run.');
1174
+ reason = 'AICoder workflow proof is stale; repeated evidence cannot advance acceptance.';
1175
+ nextAction = 'Rerun workflow QA from journey_contract.qa_assertions and record fresh AIQaBusinessAssertion artifacts.';
1176
+ }
1177
+ return {
1178
+ ready: status === 'ready',
1179
+ status: status,
1180
+ reason: reason,
1181
+ blockers: blockers,
1182
+ journeyContractValid: journeyValidation.valid,
1183
+ primaryWorkflowId: journeyValidation.primaryWorkflowId || cleanText((_b = recordedRows[0]) === null || _b === void 0 ? void 0 : _b.workflowId, 160),
1184
+ passedWorkflowRows: passedRows.map(workflowRowKey),
1185
+ missingWorkflowRows: missingRows.map(workflowRowKey),
1186
+ failedWorkflowRows: failedRows.map(workflowRowKey),
1187
+ passedBusinessAssertions: passedAssertions.map(function (assertion) { return cleanText(assertion.assertion || assertion.stepId || assertion.route, 300); }).filter(Boolean).slice(0, 40),
1188
+ routeOnly: routeOnly,
1189
+ scorecardOnly: input.scorecardPassed === true && !passedAssertions.length,
1190
+ sampleDataReady: sampleDataReady,
1191
+ releaseBlockers: releaseBlockers,
1192
+ artifactPaths: artifactPaths,
1193
+ workflowProofFingerprint: workflowProofFingerprint,
1194
+ artifactFingerprint: artifactFingerprint,
1195
+ proofFreshness: proofFreshness,
1196
+ nextAction: nextAction,
1197
+ evaluatedAt: now
1198
+ };
1199
+ }
1200
+ function fingerprintResolveIOAICoderV6Blocker(value) {
1201
+ var text = cleanText(value, 4000)
1202
+ .toLowerCase()
1203
+ .replace(/[a-f0-9]{16,}/g, '<id>')
1204
+ .replace(/\b\d{2,}\b/g, '<n>')
1205
+ .replace(/\bline\s+<n>\b/g, 'line <n>')
1206
+ .replace(/https?:\/\/\S+/g, '<url>');
1207
+ var hash = 0;
1208
+ for (var index = 0; index < text.length; index += 1) {
1209
+ hash = ((hash << 5) - hash + text.charCodeAt(index)) | 0;
1210
+ }
1211
+ return "aicoder-v6-".concat(Math.abs(hash).toString(36));
1212
+ }
1213
+ function classifyResolveIOAICoderV6FailureClass(step) {
1214
+ var explicit = cleanText(step.failureClass, 80).toLowerCase().replace(/[\s-]+/g, '_');
1215
+ if (explicit) {
1216
+ return explicit;
1217
+ }
1218
+ if (step.outcome === 'infra_retry') {
1219
+ return 'infra';
1220
+ }
1221
+ var text = "".concat(step.stepType || '', "\n").concat(step.lane || '', "\n").concat(step.blocker || '', "\n").concat(step.summary || '').toLowerCase();
1222
+ if (/\b(puppeteer|chrome|browser executable|mongo|port|startup|settings\.json|node_modules|npm install|cache|lock)\b/.test(text)) {
1223
+ return 'infra';
1224
+ }
1225
+ if (/\b(ts[0-9]{3,5}|typescript|compile|build failed|ng build|cannot find name|module not found|syntax error)\b/.test(text)
1226
+ || step.stepType === 'build') {
1227
+ return 'compile';
1228
+ }
1229
+ if (step.stepType === 'journey_contract' || step.stepType === 'journey_validation') {
1230
+ return 'journey';
1231
+ }
1232
+ if (step.stepType === 'workflow_qa' || step.lane === 'qa') {
1233
+ return 'business';
1234
+ }
1235
+ if (step.stepType === 'publish' || step.stepType === 'test_deploy' || step.stepType === 'live_deploy' || step.lane === 'publish') {
1236
+ return 'release';
1237
+ }
1238
+ return 'product_code';
1239
+ }
1240
+ function aicoderWorkflowReadinessNextCommand(status) {
1241
+ switch (status) {
1242
+ case 'journey_contract_required':
1243
+ return 'Generate and validate docs/APP_JOURNEY_CONTRACT.md before product-code build work.';
1244
+ case 'journey_contract_repair_required':
1245
+ return 'Repair the journey contract until first/next/last workflow QA rows validate.';
1246
+ case 'workflow_build_ready':
1247
+ return 'Build the north-star workflow from the journey contract and seeded data story.';
1248
+ case 'workflow_qa_required':
1249
+ return 'Run workflow QA from journey_contract.qa_assertions and record AIQaBusinessAssertion proof.';
1250
+ case 'workflow_business_proof_ready':
1251
+ return 'Proceed only to release/publish gates; wow UI polish is allowed after business proof.';
1252
+ case 'release_repair_required':
1253
+ return 'Repair the failed publish/deploy/sample-data gate without rebuilding the app shell.';
1254
+ case 'infra_repair_only':
1255
+ return 'Repair Puppeteer, Chrome, Mongo, startup, port, cache, or environment evidence only.';
1256
+ case 'compile_repair_only':
1257
+ return 'Repair compile/build evidence only and rerun the same deterministic build gate.';
1258
+ case 'collect_new_evidence':
1259
+ return 'Collect new evidence for the stuck blocker before another model/code loop.';
1260
+ case 'budget_stopped':
1261
+ return 'Stop autonomous spend and request a bounded human decision.';
1262
+ case 'parked':
1263
+ return 'Park the run until a human chooses the next bounded action.';
1264
+ default:
1265
+ return 'Review workflow evidence before continuing.';
1266
+ }
1267
+ }
1268
+ function aicoderWorkflowReadinessGateFor(status) {
1269
+ switch (status) {
1270
+ case 'journey_contract_required':
1271
+ case 'journey_contract_repair_required':
1272
+ return 'journey_contract';
1273
+ case 'workflow_build_ready':
1274
+ return 'build';
1275
+ case 'workflow_qa_required':
1276
+ case 'workflow_business_proof_ready':
1277
+ return 'workflow_qa';
1278
+ case 'release_repair_required':
1279
+ return 'release';
1280
+ case 'infra_repair_only':
1281
+ return 'infra';
1282
+ case 'compile_repair_only':
1283
+ return 'compile';
1284
+ case 'collect_new_evidence':
1285
+ return 'evidence';
1286
+ case 'budget_stopped':
1287
+ case 'parked':
1288
+ return 'manual';
1289
+ default:
1290
+ return 'manual';
1291
+ }
1292
+ }
1293
+ function buildResolveIOAICoderWorkflowProofCheckpoint(input) {
1294
+ var _a, _b, _c, _d, _e;
1295
+ var status = input.status;
1296
+ var nextGate = input.nextGate;
1297
+ var proofArtifacts = cleanList(input.businessProofArtifacts, 80, 500);
1298
+ var workflowRows = cleanWorkflowQaRows(input.workflowQaRows, 80);
1299
+ var completedWorkflowSteps = cleanList(input.completedWorkflowSteps, 80, 240);
1300
+ var workflowProofFingerprint = fingerprintResolveIOAICoderWorkflowProofPayload({
1301
+ primaryWorkflowId: input.primaryWorkflowId,
1302
+ activeWorkflowStep: input.activeWorkflowStep,
1303
+ workflowRows: workflowRows.map(function (row) { return ({
1304
+ workflowId: row.workflowId,
1305
+ stepId: row.stepId,
1306
+ status: row.status,
1307
+ acceptanceGate: row.acceptanceGate,
1308
+ assertion: row.assertion
1309
+ }); }),
1310
+ completedWorkflowSteps: completedWorkflowSteps,
1311
+ proofArtifacts: proofArtifacts
1312
+ }, 'aicoder-workflow-readiness');
1313
+ var artifactFingerprint = fingerprintResolveIOAICoderWorkflowProofPayload({
1314
+ proofArtifacts: proofArtifacts,
1315
+ rowArtifacts: workflowRows.flatMap(function (row) { return cleanList(row.artifactPaths, 10, 500); })
1316
+ }, 'aicoder-workflow-artifacts');
1317
+ var requiredEvidenceByStatus = {
1318
+ journey_contract_required: [
1319
+ 'docs/APP_JOURNEY_CONTRACT.md with validated journey_contract JSON',
1320
+ 'first/next/last north_star_workflow steps',
1321
+ 'workflow QA rows generated from journey_contract.qa_assertions'
1322
+ ],
1323
+ journey_contract_repair_required: [
1324
+ 'repaired journey contract validation result',
1325
+ 'command-center hub action mapped to workflow state transition'
1326
+ ],
1327
+ workflow_build_ready: [
1328
+ 'implemented north-star workflow from the Journey Contract',
1329
+ 'seeded data story available in the app'
1330
+ ],
1331
+ workflow_qa_required: [
1332
+ 'AIQaBusinessAssertion for the north-star workflow',
1333
+ 'non-empty data proof',
1334
+ 'saved/calculated output proof',
1335
+ 'report/export proof when promised'
1336
+ ],
1337
+ workflow_business_proof_ready: [
1338
+ 'deterministic release gate before publish',
1339
+ 'workflow proof artifact retained for acceptance'
1340
+ ],
1341
+ release_repair_required: [
1342
+ 'publish/deploy/sample-data failure artifact',
1343
+ 'hotfix or release-gate evidence before another full deploy'
1344
+ ],
1345
+ infra_repair_only: [
1346
+ 'Puppeteer/Chrome/Mongo/startup/preflight evidence',
1347
+ 'infra failure class changed or preflight passed'
1348
+ ],
1349
+ compile_repair_only: [
1350
+ 'compile/build log evidence',
1351
+ 'compile failure class changed or build passed'
1352
+ ],
1353
+ collect_new_evidence: [
1354
+ 'changed blocker fingerprint or evidence hash',
1355
+ 'fresh workflow QA artifact',
1356
+ 'AIQaBusinessAssertion or precise workflow blocker artifact'
1357
+ ],
1358
+ budget_stopped: [
1359
+ 'budget summary',
1360
+ 'one human decision for next bounded action'
1361
+ ],
1362
+ parked: [
1363
+ 'operator decision',
1364
+ 'new evidence before retry'
1365
+ ]
1366
+ };
1367
+ var waitingStatus = status === 'workflow_business_proof_ready'
1368
+ ? 'ready_to_continue'
1369
+ : status === 'release_repair_required'
1370
+ ? 'waiting_for_release_gate'
1371
+ : status === 'collect_new_evidence' || input.sameFailureParked === true
1372
+ ? 'waiting_for_new_evidence'
1373
+ : status === 'infra_repair_only' || status === 'compile_repair_only'
1374
+ ? 'waiting_for_infra_or_compile'
1375
+ : status === 'journey_contract_required' || status === 'journey_contract_repair_required'
1376
+ ? 'waiting_for_journey_contract'
1377
+ : 'waiting_for_workflow_proof';
1378
+ var blocksProductRepairUntilJourneyContract = input.journeyContractReady !== true
1379
+ || status === 'journey_contract_required'
1380
+ || status === 'journey_contract_repair_required';
1381
+ var blocksPublishUntilWorkflowProof = input.businessProofReady !== true
1382
+ || input.routeOnlyBlocked === true
1383
+ || input.sameFailureParked === true
1384
+ || blocksProductRepairUntilJourneyContract
1385
+ || status === 'workflow_qa_required'
1386
+ || status === 'workflow_build_ready'
1387
+ || status === 'collect_new_evidence';
1388
+ return {
1389
+ required: true,
1390
+ status: waitingStatus,
1391
+ readinessStatus: status,
1392
+ nextGate: nextGate,
1393
+ startingFailureClass: cleanText((_a = input.last) === null || _a === void 0 ? void 0 : _a.failureClass, 120),
1394
+ startingBlockerFingerprint: cleanText(((_b = input.last) === null || _b === void 0 ? void 0 : _b.blockerFingerprint) || fingerprintResolveIOAICoderV6Blocker(((_c = input.last) === null || _c === void 0 ? void 0 : _c.blocker) || ((_d = input.last) === null || _d === void 0 ? void 0 : _d.summary) || ''), 160),
1395
+ startingEvidenceHash: cleanText((_e = input.last) === null || _e === void 0 ? void 0 : _e.evidenceHash, 160),
1396
+ workflowProofFingerprint: workflowProofFingerprint,
1397
+ artifactFingerprint: artifactFingerprint,
1398
+ requiredEvidence: (requiredEvidenceByStatus[status] || []).slice(0, 20),
1399
+ requiredResetEvidence: Array.from(new Set(__spreadArray(__spreadArray(__spreadArray([], __read((requiredEvidenceByStatus[status] || [])), false), __read((input.sameFailureParked === true ? ['new workflow proof fingerprint', 'new artifact fingerprint'] : [])), false), __read((input.releaseBlocked === true ? ['changed release gate fingerprint'] : [])), false))).slice(0, 20),
1400
+ successRequiresWorkflowBusinessProof: status !== 'infra_repair_only' && status !== 'compile_repair_only' && status !== 'budget_stopped',
1401
+ blocksProductRepairUntilJourneyContract: blocksProductRepairUntilJourneyContract,
1402
+ blocksPublishUntilWorkflowProof: blocksPublishUntilWorkflowProof,
1403
+ blocksPublishUntilReleaseGate: input.releaseBlocked === true || status === 'release_repair_required',
1404
+ blocksWowUiUntilWorkflowProof: blocksPublishUntilWorkflowProof,
1405
+ nextAction: cleanText(input.nextAction, 500) || aicoderWorkflowReadinessNextCommand(status)
1406
+ };
1407
+ }
1408
+ function buildResolveIOAICoderV6WorkflowReadiness(bundle, context) {
1409
+ var _a, _b;
1410
+ if (context === void 0) { context = {}; }
1411
+ var history = Array.isArray(bundle.aiCoderV6StepHistory) ? bundle.aiCoderV6StepHistory : [];
1412
+ var last = history[history.length - 1];
1413
+ var workflowMemory = bundle.aiCoderV6WorkflowMemory || {};
1414
+ var rows = cleanWorkflowQaRows(workflowMemory.workflowQaRows, 80);
1415
+ var proofArtifacts = cleanList(workflowMemory.businessProofArtifacts, 80, 500);
1416
+ var completedSteps = cleanList(workflowMemory.completedWorkflowSteps, 80, 240);
1417
+ var primaryWorkflowId = cleanText(workflowMemory.primaryWorkflowId || ((_a = rows[0]) === null || _a === void 0 ? void 0 : _a.workflowId), 200);
1418
+ var activeWorkflowStep = cleanText(workflowMemory.activeWorkflowStep || workflowMemory.blockedWorkflowStep || ((_b = rows.find(function (row) { return !statusLooksPassed(row.status); })) === null || _b === void 0 ? void 0 : _b.stepId), 200);
1419
+ var failureClass = cleanText(last === null || last === void 0 ? void 0 : last.failureClass, 120).toLowerCase();
1420
+ var contextReason = cleanText(context.reason, 1000);
1421
+ var observedBlocker = cleanText((last === null || last === void 0 ? void 0 : last.blocker) || (last === null || last === void 0 ? void 0 : last.summary), 1000);
1422
+ var reason = contextReason || observedBlocker;
1423
+ var combinedText = "".concat(failureClass, "\n").concat(contextReason, "\n").concat(observedBlocker, "\n").concat((last === null || last === void 0 ? void 0 : last.stepType) || '', "\n").concat((last === null || last === void 0 ? void 0 : last.lane) || '').toLowerCase();
1424
+ var compileOnly = failureClass === 'compile'
1425
+ || /\b(compile|typescript|ts[0-9]{3,5}|ng build|cannot find name|module not found)\b/i.test(combinedText);
1426
+ var infraOnly = !compileOnly && (failureClass === 'infra'
1427
+ || /\b(puppeteer|chrome|browser executable|mongo|port|startup|settings\.json|node_modules|cache|lock)\b/i.test(combinedText));
1428
+ var releaseBlocked = failureClass === 'release'
1429
+ || context.nextLane === 'publish'
1430
+ || /\b(release|publish|deploy|cloudfront|artifact|sample data|sample_data)\b/i.test(combinedText);
1431
+ var routeOnlyBlocked = /\b(route only|route-only|route loaded|route_probe|browser route|shell only|shell-only)\b/i.test(combinedText);
1432
+ var sameFailureParked = context.action === 'park'
1433
+ || context.reason === 'aicoder_v6_repeated_no_progress'
1434
+ || context.reason === 'aicoder_v6_ping_pong_no_progress';
1435
+ var budgetStopped = context.action === 'budget_stop' || context.budgetExceeded === true;
1436
+ var workflowQaRowsReady = rows.length > 0;
1437
+ var journeyContractReady = !!cleanText(workflowMemory.journeyContractPath, 500)
1438
+ && (!!primaryWorkflowId || workflowQaRowsReady || completedSteps.length > 0);
1439
+ var passedWorkflowRows = rows.filter(function (row) { return statusLooksPassed(row.status); });
1440
+ var businessProofReady = proofArtifacts.length > 0
1441
+ || passedWorkflowRows.some(function (row) { return cleanList(row.artifactPaths, 10, 500).length > 0; })
1442
+ || completedSteps.length > 0;
1443
+ var status = 'workflow_build_ready';
1444
+ var blockers = [];
1445
+ if (budgetStopped) {
1446
+ status = 'budget_stopped';
1447
+ blockers.push('Budget guard stopped autonomous spend.');
1448
+ }
1449
+ else if (sameFailureParked) {
1450
+ status = 'collect_new_evidence';
1451
+ blockers.push('Same failure class repeated without enough new evidence.');
1452
+ }
1453
+ else if (compileOnly && context.action === 'infra_retry') {
1454
+ status = 'compile_repair_only';
1455
+ blockers.push('Compile/build gate failed; do not count this as product workflow failure.');
1456
+ }
1457
+ else if (infraOnly && context.action === 'infra_retry') {
1458
+ status = 'infra_repair_only';
1459
+ blockers.push('Infra gate failed; repair only environment/browser/startup dependencies.');
1460
+ }
1461
+ else if (failureClass === 'journey' || context.reason === 'aicoder_v6_journey_contract_repair_required') {
1462
+ status = 'journey_contract_repair_required';
1463
+ blockers.push('Journey contract failed validation.');
1464
+ }
1465
+ else if (!journeyContractReady) {
1466
+ status = 'journey_contract_required';
1467
+ blockers.push('Journey contract workflow memory is not ready.');
1468
+ }
1469
+ else if (releaseBlocked || context.reason === 'aicoder_v6_release_repair_required') {
1470
+ status = 'release_repair_required';
1471
+ blockers.push('Release/publish/deploy gate blocks acceptance.');
1472
+ }
1473
+ else if (!workflowQaRowsReady || !businessProofReady || routeOnlyBlocked) {
1474
+ status = 'workflow_qa_required';
1475
+ if (!workflowQaRowsReady) {
1476
+ blockers.push('Workflow QA rows are missing.');
1477
+ }
1478
+ if (!businessProofReady) {
1479
+ blockers.push('AIQaBusinessAssertion proof is missing.');
1480
+ }
1481
+ if (routeOnlyBlocked) {
1482
+ blockers.push('Route/browser proof is not workflow business proof.');
1483
+ }
1484
+ }
1485
+ else if (businessProofReady) {
1486
+ status = 'workflow_business_proof_ready';
1487
+ }
1488
+ var canRunWorkflowQa = journeyContractReady
1489
+ && workflowQaRowsReady
1490
+ && !infraOnly
1491
+ && !compileOnly
1492
+ && !sameFailureParked
1493
+ && !budgetStopped;
1494
+ var canPublish = status === 'workflow_business_proof_ready'
1495
+ && !releaseBlocked
1496
+ && !infraOnly
1497
+ && !compileOnly
1498
+ && !sameFailureParked
1499
+ && !budgetStopped;
1500
+ var canRunProductRepair = journeyContractReady
1501
+ && !infraOnly
1502
+ && !compileOnly
1503
+ && !sameFailureParked
1504
+ && !budgetStopped
1505
+ && status !== 'journey_contract_repair_required'
1506
+ && status !== 'release_repair_required'
1507
+ && status !== 'workflow_business_proof_ready';
1508
+ var nextGate = aicoderWorkflowReadinessGateFor(status);
1509
+ var nextCommand = aicoderWorkflowReadinessNextCommand(status);
1510
+ var workflowProofCheckpoint = buildResolveIOAICoderWorkflowProofCheckpoint({
1511
+ status: status,
1512
+ nextGate: nextGate,
1513
+ nextAction: nextCommand,
1514
+ last: last,
1515
+ journeyContractReady: journeyContractReady,
1516
+ businessProofReady: businessProofReady,
1517
+ routeOnlyBlocked: routeOnlyBlocked,
1518
+ releaseBlocked: releaseBlocked,
1519
+ infraOnly: infraOnly,
1520
+ compileOnly: compileOnly,
1521
+ sameFailureParked: sameFailureParked,
1522
+ primaryWorkflowId: primaryWorkflowId,
1523
+ activeWorkflowStep: activeWorkflowStep,
1524
+ workflowQaRows: rows,
1525
+ businessProofArtifacts: proofArtifacts,
1526
+ completedWorkflowSteps: completedSteps
1527
+ });
1528
+ return {
1529
+ status: status,
1530
+ nextGate: nextGate,
1531
+ nextLane: context.nextLane || (last === null || last === void 0 ? void 0 : last.lane) || bundle.aiCoderV6SupervisorState.activeLane,
1532
+ nextStep: context.nextStep || (last === null || last === void 0 ? void 0 : last.stepType) || bundle.aiCoderV6SupervisorState.activeStep,
1533
+ nextCommand: nextCommand,
1534
+ journeyContractReady: journeyContractReady,
1535
+ workflowQaRowsReady: workflowQaRowsReady,
1536
+ businessProofReady: businessProofReady,
1537
+ routeOnlyBlocked: routeOnlyBlocked,
1538
+ releaseBlocked: releaseBlocked,
1539
+ infraOnly: infraOnly,
1540
+ compileOnly: compileOnly,
1541
+ sameFailureParked: sameFailureParked,
1542
+ canRunProductRepair: canRunProductRepair,
1543
+ canRunWorkflowQa: canRunWorkflowQa,
1544
+ canPublish: canPublish,
1545
+ canPolishWowUi: canPublish,
1546
+ requiresHumanDecision: budgetStopped || sameFailureParked,
1547
+ reason: reason || aicoderWorkflowReadinessNextCommand(status),
1548
+ blockers: blockers.slice(0, 8),
1549
+ primaryWorkflowId: primaryWorkflowId,
1550
+ activeWorkflowStep: activeWorkflowStep,
1551
+ businessProofArtifacts: proofArtifacts,
1552
+ workflowProofCheckpoint: workflowProofCheckpoint
1553
+ };
1554
+ }
1555
+ function buildResolveIOAICoderV6Budget(existing) {
1556
+ return {
1557
+ maxPromptTokensPerNonInitialStep: Number((existing === null || existing === void 0 ? void 0 : existing.maxPromptTokensPerNonInitialStep) || 4000),
1558
+ maxTotalPromptTokens: Number((existing === null || existing === void 0 ? void 0 : existing.maxTotalPromptTokens) || 120000),
1559
+ maxLoopsPerRun: Number((existing === null || existing === void 0 ? void 0 : existing.maxLoopsPerRun) || 24),
1560
+ maxRepeatedNoProgress: Number((existing === null || existing === void 0 ? void 0 : existing.maxRepeatedNoProgress) || 2),
1561
+ maxRuntimeMinutesPerLane: Number((existing === null || existing === void 0 ? void 0 : existing.maxRuntimeMinutesPerLane) || 30),
1562
+ softBudgetUsd: Number((existing === null || existing === void 0 ? void 0 : existing.softBudgetUsd) || 30),
1563
+ hardBudgetUsd: Number((existing === null || existing === void 0 ? void 0 : existing.hardBudgetUsd) || 60),
1564
+ totalPromptTokenEstimate: cleanNumber(existing === null || existing === void 0 ? void 0 : existing.totalPromptTokenEstimate),
1565
+ totalInputTokens: cleanNumber(existing === null || existing === void 0 ? void 0 : existing.totalInputTokens),
1566
+ totalCachedInputTokens: cleanNumber(existing === null || existing === void 0 ? void 0 : existing.totalCachedInputTokens),
1567
+ totalOutputTokens: cleanNumber(existing === null || existing === void 0 ? void 0 : existing.totalOutputTokens),
1568
+ totalRuntimeMs: cleanNumber(existing === null || existing === void 0 ? void 0 : existing.totalRuntimeMs),
1569
+ loopCount: cleanNumber(existing === null || existing === void 0 ? void 0 : existing.loopCount)
1570
+ };
1571
+ }
1572
+ function initializeResolveIOAICoderV6State(input) {
1573
+ var now = isoNow(input.now);
1574
+ var existing = input.existing || {};
1575
+ var existingSupervisor = existing.aiCoderV6SupervisorState;
1576
+ var existingLaneMemory = existing.aiCoderV6LaneMemory || {};
1577
+ var existingWorkflowMemory = existing.aiCoderV6WorkflowMemory || {};
1578
+ var scope = cleanList(input.approvedScopeRequirements, 24, 240).join(' | ')
1579
+ || cleanText(input.description, 1000)
1580
+ || cleanText(input.title, 300);
1581
+ var runId = cleanText(input.conversationId || input.jobId || input.appId, 120);
1582
+ var defaultModel = cleanText(input.defaultModel || 'gpt-5.3-codex', 80);
1583
+ var buildLaneMemory = function (lane) {
1584
+ var _a;
1585
+ var previous = existingLaneMemory[lane] || {};
1586
+ return {
1587
+ lane: lane,
1588
+ model: cleanText(previous.model || defaultModel, 80),
1589
+ threadKey: cleanText(((_a = input.laneThreadKeys) === null || _a === void 0 ? void 0 : _a[lane]) || previous.threadKey || "aicoder:".concat(input.runKind, ":").concat(runId, ":").concat(lane), 240),
1590
+ scopeSummary: cleanText(previous.scopeSummary || scope, 1200),
1591
+ activeStep: previous.activeStep || (lane === 'plan' ? 'plan' : lane === 'qa' ? 'qa' : lane === 'review' ? 'review' : lane === 'publish' ? 'publish' : 'task'),
1592
+ activeBlocker: cleanText(previous.activeBlocker, 1200),
1593
+ activeQaRow: previous.activeQaRow,
1594
+ changedFiles: cleanList(previous.changedFiles, 80, 500),
1595
+ artifactPaths: cleanList(previous.artifactPaths, 80, 500),
1596
+ latestPromptVersion: cleanText(previous.latestPromptVersion, 120) || undefined,
1597
+ latestPromptTokenEstimate: cleanNumber(previous.latestPromptTokenEstimate) || undefined,
1598
+ updatedAt: previous.updatedAt || now
1599
+ };
1600
+ };
1601
+ var laneMemory = LANES.reduce(function (accumulator, lane) {
1602
+ accumulator[lane] = buildLaneMemory(lane);
1603
+ return accumulator;
1604
+ }, {});
1605
+ var activeLane = (existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.activeLane) || (input.runKind === 'initial_builder' ? 'plan' : 'build');
1606
+ return {
1607
+ aiCoderRunnerVersion: 'v6',
1608
+ aiCoderV6SupervisorState: {
1609
+ version: 'v6',
1610
+ runKind: input.runKind,
1611
+ status: (existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.status) || 'active',
1612
+ currentGoal: cleanText((existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.currentGoal) || "Run AICoder ".concat(input.runKind, " ").concat(runId), 500),
1613
+ approvedScope: cleanText((existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.approvedScope) || scope, 1400),
1614
+ branchName: cleanText(input.branchName || (existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.branchName), 240),
1615
+ activeLane: activeLane,
1616
+ activeStep: (existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.activeStep) || laneMemory[activeLane].activeStep,
1617
+ activeBlocker: cleanText(existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.activeBlocker, 1200),
1618
+ lastGoodCheckpoint: (existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.lastGoodCheckpoint) || 'v6_initialized',
1619
+ lastGoodCommit: cleanText(existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.lastGoodCommit, 240) || undefined,
1620
+ testDeployStatus: cleanText(existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.testDeployStatus, 120) || undefined,
1621
+ liveDeployStatus: cleanText(existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.liveDeployStatus, 120) || undefined,
1622
+ processLease: input.processLease || (existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.processLease),
1623
+ artifactLinks: cleanList(existingSupervisor === null || existingSupervisor === void 0 ? void 0 : existingSupervisor.artifactLinks, 80, 500),
1624
+ updatedAt: now
1625
+ },
1626
+ aiCoderV6LaneMemory: laneMemory,
1627
+ aiCoderV6WorkflowMemory: {
1628
+ journeyContractPath: cleanText(input.journeyContractPath || existingWorkflowMemory.journeyContractPath || 'docs/APP_JOURNEY_CONTRACT.md', 500),
1629
+ primaryWorkflowId: cleanText(existingWorkflowMemory.primaryWorkflowId, 200),
1630
+ activeWorkflowStep: cleanText(existingWorkflowMemory.activeWorkflowStep, 200),
1631
+ workflowQaRows: cleanWorkflowQaRows(existingWorkflowMemory.workflowQaRows, 80),
1632
+ completedWorkflowSteps: cleanList(existingWorkflowMemory.completedWorkflowSteps, 80, 240),
1633
+ blockedWorkflowStep: cleanText(existingWorkflowMemory.blockedWorkflowStep, 240),
1634
+ businessProofArtifacts: cleanList(existingWorkflowMemory.businessProofArtifacts, 80, 500),
1635
+ updatedAt: existingWorkflowMemory.updatedAt || now
1636
+ },
1637
+ aiCoderV6StepHistory: Array.isArray(existing.aiCoderV6StepHistory)
1638
+ ? existing.aiCoderV6StepHistory.slice(-100)
1639
+ : [],
1640
+ aiCoderV6Budget: buildResolveIOAICoderV6Budget(existing.aiCoderV6Budget),
1641
+ aiCoderV6RunnerIncidents: Array.isArray(existing.aiCoderV6RunnerIncidents)
1642
+ ? existing.aiCoderV6RunnerIncidents.slice(-100)
1643
+ : [],
1644
+ aiCoderV6RecoveryPlan: existing.aiCoderV6RecoveryPlan,
1645
+ aiCoderV6RecoveryCheckpoint: existing.aiCoderV6RecoveryCheckpoint,
1646
+ aiCoderV6RecoveryEvidenceProbe: existing.aiCoderV6RecoveryEvidenceProbe,
1647
+ aiCoderV6RecoveryAction: existing.aiCoderV6RecoveryAction,
1648
+ aiCoderV6RecoveryDispatchHistory: Array.isArray(existing.aiCoderV6RecoveryDispatchHistory)
1649
+ ? existing.aiCoderV6RecoveryDispatchHistory.slice(-50)
1650
+ : [],
1651
+ aiCoderV6RecoveryDirective: existing.aiCoderV6RecoveryDirective
1652
+ };
1653
+ }
1654
+ function recordResolveIOAICoderV6Step(bundle, step) {
1655
+ var _a;
1656
+ var _b, _c;
1657
+ var now = isoNow(step.now);
1658
+ var promptTokens = cleanNumber(step.promptTokenEstimate);
1659
+ var inputTokens = cleanNumber(step.inputTokens);
1660
+ var cachedInputTokens = cleanNumber(step.cachedInputTokens);
1661
+ var outputTokens = cleanNumber(step.outputTokens);
1662
+ var runtimeMs = cleanNumber(step.runtimeMs);
1663
+ var blocker = cleanText(step.blocker, 1200);
1664
+ var failureClass = classifyResolveIOAICoderV6FailureClass({
1665
+ outcome: step.outcome,
1666
+ lane: step.lane,
1667
+ stepType: step.stepType,
1668
+ blocker: blocker,
1669
+ summary: step.summary,
1670
+ failureClass: step.failureClass
1671
+ });
1672
+ var previousWorkflowMemory = bundle.aiCoderV6WorkflowMemory || {};
1673
+ var activeWorkflowStep = cleanText(step.activeWorkflowStep || previousWorkflowMemory.activeWorkflowStep, 200);
1674
+ var explicitCompletedSteps = cleanList(step.completedWorkflowSteps, 40, 240);
1675
+ var completedWorkflowSteps = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray([], __read(cleanList(previousWorkflowMemory.completedWorkflowSteps, 80, 240)), false), __read(explicitCompletedSteps), false), __read((step.outcome === 'pass' && activeWorkflowStep ? [activeWorkflowStep] : [])), false))).slice(-80);
1676
+ var businessProofArtifacts = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray([], __read(cleanList(previousWorkflowMemory.businessProofArtifacts, 80, 500)), false), __read(cleanList(step.businessProofArtifacts, 40, 500)), false), __read((step.stepType === 'workflow_qa' ? cleanList(step.artifactPaths, 40, 500) : [])), false))).slice(-80);
1677
+ var workflowQaRows = step.workflowQaRows !== undefined
1678
+ ? cleanWorkflowQaRows(step.workflowQaRows, 80)
1679
+ : cleanWorkflowQaRows(previousWorkflowMemory.workflowQaRows, 80);
1680
+ var blockedWorkflowStep = cleanText(step.blockedWorkflowStep
1681
+ || ((step.outcome === 'needs_repair' || step.outcome === 'park_manual') ? activeWorkflowStep : '')
1682
+ || previousWorkflowMemory.blockedWorkflowStep, 240);
1683
+ var record = {
1684
+ stepType: step.stepType,
1685
+ outcome: step.outcome,
1686
+ lane: step.lane,
1687
+ model: cleanText(step.model, 80) || undefined,
1688
+ threadKey: cleanText(step.threadKey, 240) || undefined,
1689
+ promptVersion: cleanText(step.promptVersion, 120) || undefined,
1690
+ promptTokenEstimate: promptTokens || undefined,
1691
+ inputTokens: inputTokens || undefined,
1692
+ cachedInputTokens: cachedInputTokens || undefined,
1693
+ outputTokens: outputTokens || undefined,
1694
+ runtimeMs: runtimeMs || undefined,
1695
+ summary: cleanText(step.summary || blocker || step.outcome, 1200),
1696
+ blocker: blocker || undefined,
1697
+ blockerFingerprint: blocker ? fingerprintResolveIOAICoderV6Blocker(blocker) : undefined,
1698
+ failureClass: failureClass,
1699
+ changedFiles: cleanList(step.changedFiles, 80, 500),
1700
+ artifactPaths: cleanList(step.artifactPaths, 80, 500),
1701
+ nextAction: step.nextAction,
1702
+ recordedAt: now
1703
+ };
1704
+ record.evidenceHash = cleanText(step.evidenceHash, 120)
1705
+ || (0, ai_runner_manager_policy_1.hashResolveIOAIManagerEvidence)(record);
1706
+ var previousRecord = bundle.aiCoderV6StepHistory[bundle.aiCoderV6StepHistory.length - 1];
1707
+ var managerDecision = (0, ai_runner_manager_policy_1.decideResolveIOAIManagerPolicy)({
1708
+ history: __spreadArray(__spreadArray([], __read(bundle.aiCoderV6StepHistory), false), [record], false),
1709
+ current: record,
1710
+ maxSameFailureRepeats: buildResolveIOAICoderV6Budget(bundle.aiCoderV6Budget).maxRepeatedNoProgress + 1
1711
+ });
1712
+ var nextLoopCount = managerDecision.loopBudgetShouldReset
1713
+ || (previousRecord === null || previousRecord === void 0 ? void 0 : previousRecord.failureClass) !== record.failureClass
1714
+ || (previousRecord === null || previousRecord === void 0 ? void 0 : previousRecord.blockerFingerprint) !== record.blockerFingerprint
1715
+ || (previousRecord === null || previousRecord === void 0 ? void 0 : previousRecord.evidenceHash) !== record.evidenceHash
1716
+ ? 1
1717
+ : bundle.aiCoderV6Budget.loopCount + 1;
1718
+ var budget = buildResolveIOAICoderV6Budget(bundle.aiCoderV6Budget);
1719
+ var shouldParkForRepeatedNoProgress = !managerDecision.loopBudgetShouldReset
1720
+ && nextLoopCount > budget.maxRepeatedNoProgress
1721
+ && step.outcome !== 'pass'
1722
+ && step.outcome !== 'ready_to_publish'
1723
+ && step.outcome !== 'published';
1724
+ var recordedRecoveryPlan = shouldParkForRepeatedNoProgress
1725
+ ? (0, ai_runner_manager_policy_1.buildResolveIOAIManagerRecoveryPlan)({
1726
+ action: 'park_repeated_failure',
1727
+ reason: 'aicoder_v6_repeated_no_progress',
1728
+ failureClass: record.failureClass,
1729
+ lane: record.lane,
1730
+ stepType: record.stepType,
1731
+ blocker: record.blocker || record.summary,
1732
+ changedFiles: record.changedFiles,
1733
+ artifactPaths: record.artifactPaths,
1734
+ maxSameFailureRepeats: budget.maxRepeatedNoProgress + 1
1735
+ })
1736
+ : managerDecision.recoveryPlan;
1737
+ var recordedRecoveryCheckpoint = shouldParkForRepeatedNoProgress
1738
+ ? (0, ai_runner_manager_policy_1.buildResolveIOAIManagerRecoveryCheckpoint)({
1739
+ plan: recordedRecoveryPlan,
1740
+ current: record
1741
+ })
1742
+ : managerDecision.recoveryCheckpoint;
1743
+ var recordedRecoveryEvidenceProbe = shouldParkForRepeatedNoProgress
1744
+ ? (0, ai_runner_manager_policy_1.buildResolveIOAIManagerRecoveryEvidenceProbe)({
1745
+ checkpoint: recordedRecoveryCheckpoint,
1746
+ current: record
1747
+ })
1748
+ : managerDecision.recoveryEvidenceProbe;
1749
+ var recordedRecoveryAction = shouldParkForRepeatedNoProgress
1750
+ ? (0, ai_runner_manager_policy_1.buildResolveIOAIManagerRecoveryActionPacket)({
1751
+ plan: recordedRecoveryPlan,
1752
+ checkpoint: recordedRecoveryCheckpoint,
1753
+ probe: recordedRecoveryEvidenceProbe,
1754
+ current: record
1755
+ })
1756
+ : managerDecision.recoveryAction;
1757
+ var previousLane = bundle.aiCoderV6LaneMemory[step.lane];
1758
+ var laneMemory = __assign(__assign({}, bundle.aiCoderV6LaneMemory), (_a = {}, _a[step.lane] = __assign(__assign({}, previousLane), { model: record.model || previousLane.model, threadKey: record.threadKey || previousLane.threadKey, activeStep: step.stepType, activeBlocker: record.blocker || previousLane.activeBlocker || '', activeQaRow: step.activeQaRow || previousLane.activeQaRow, changedFiles: ((_b = record.changedFiles) === null || _b === void 0 ? void 0 : _b.length) ? record.changedFiles : previousLane.changedFiles, artifactPaths: ((_c = record.artifactPaths) === null || _c === void 0 ? void 0 : _c.length) ? record.artifactPaths : previousLane.artifactPaths, latestPromptVersion: record.promptVersion || previousLane.latestPromptVersion, latestPromptTokenEstimate: promptTokens || previousLane.latestPromptTokenEstimate, updatedAt: now }), _a));
1759
+ var complete = step.outcome === 'published' || step.outcome === 'ready_to_publish';
1760
+ var parked = step.outcome === 'park_manual' || step.outcome === 'budget_stop';
1761
+ return __assign(__assign({}, bundle), { aiCoderV6SupervisorState: __assign(__assign({}, bundle.aiCoderV6SupervisorState), { status: complete ? 'complete' : (parked ? 'parked' : 'active'), activeLane: step.lane, activeStep: step.stepType, activeBlocker: record.blocker || '', lastGoodCheckpoint: step.outcome === 'pass' || complete ? step.stepType : bundle.aiCoderV6SupervisorState.lastGoodCheckpoint, artifactLinks: Array.from(new Set(__spreadArray(__spreadArray([], __read(bundle.aiCoderV6SupervisorState.artifactLinks), false), __read((record.artifactPaths || [])), false))).slice(-80), updatedAt: now }), aiCoderV6LaneMemory: laneMemory, aiCoderV6WorkflowMemory: {
1762
+ journeyContractPath: cleanText(previousWorkflowMemory.journeyContractPath || 'docs/APP_JOURNEY_CONTRACT.md', 500),
1763
+ primaryWorkflowId: cleanText(step.primaryWorkflowId || previousWorkflowMemory.primaryWorkflowId, 200),
1764
+ activeWorkflowStep: activeWorkflowStep,
1765
+ workflowQaRows: workflowQaRows,
1766
+ completedWorkflowSteps: completedWorkflowSteps,
1767
+ blockedWorkflowStep: blockedWorkflowStep,
1768
+ businessProofArtifacts: businessProofArtifacts,
1769
+ updatedAt: now
1770
+ }, aiCoderV6StepHistory: __spreadArray(__spreadArray([], __read(bundle.aiCoderV6StepHistory), false), [record], false).slice(-120), aiCoderV6Budget: __assign(__assign({}, bundle.aiCoderV6Budget), { totalPromptTokenEstimate: bundle.aiCoderV6Budget.totalPromptTokenEstimate + promptTokens, totalInputTokens: bundle.aiCoderV6Budget.totalInputTokens + inputTokens, totalCachedInputTokens: bundle.aiCoderV6Budget.totalCachedInputTokens + cachedInputTokens, totalOutputTokens: bundle.aiCoderV6Budget.totalOutputTokens + outputTokens, totalRuntimeMs: bundle.aiCoderV6Budget.totalRuntimeMs + runtimeMs, loopCount: nextLoopCount }), aiCoderV6RecoveryPlan: recordedRecoveryPlan, aiCoderV6RecoveryCheckpoint: recordedRecoveryCheckpoint, aiCoderV6RecoveryEvidenceProbe: recordedRecoveryEvidenceProbe, aiCoderV6RecoveryAction: recordedRecoveryAction });
1771
+ }
1772
+ function decideResolveIOAICoderV6Continuation(bundle) {
1773
+ var history = bundle.aiCoderV6StepHistory || [];
1774
+ var budget = buildResolveIOAICoderV6Budget(bundle.aiCoderV6Budget);
1775
+ var last = history[history.length - 1];
1776
+ var lastFingerprint = fingerprintResolveIOAICoderV6Blocker((last === null || last === void 0 ? void 0 : last.blocker) || (last === null || last === void 0 ? void 0 : last.summary) || '');
1777
+ var repeatedNoProgressCount = 0;
1778
+ for (var index = history.length - 1; index >= 0; index -= 1) {
1779
+ var item = history[index];
1780
+ if (item.outcome === 'pass' || item.outcome === 'ready_to_publish' || item.outcome === 'published') {
1781
+ break;
1782
+ }
1783
+ if (item.stepType !== (last === null || last === void 0 ? void 0 : last.stepType) || item.lane !== (last === null || last === void 0 ? void 0 : last.lane)) {
1784
+ break;
1785
+ }
1786
+ if (fingerprintResolveIOAICoderV6Blocker(item.blocker || item.summary || '') === lastFingerprint) {
1787
+ repeatedNoProgressCount += 1;
1788
+ }
1789
+ }
1790
+ var managerDecision = (0, ai_runner_manager_policy_1.decideResolveIOAIManagerPolicy)({
1791
+ history: history,
1792
+ current: last,
1793
+ maxSameFailureRepeats: budget.maxRepeatedNoProgress + 1,
1794
+ maxPingPongTransitions: 3,
1795
+ infraFailureClasses: ['infra', 'compile']
1796
+ });
1797
+ var recoveryPlanFor = function (action, reason, extra) {
1798
+ if (extra === void 0) { extra = {}; }
1799
+ return (0, ai_runner_manager_policy_1.buildResolveIOAIManagerRecoveryPlan)(__assign({ action: action, reason: reason, failureClass: last === null || last === void 0 ? void 0 : last.failureClass, lane: (last === null || last === void 0 ? void 0 : last.lane) || bundle.aiCoderV6SupervisorState.activeLane, stepType: (last === null || last === void 0 ? void 0 : last.stepType) || bundle.aiCoderV6SupervisorState.activeStep, blocker: (last === null || last === void 0 ? void 0 : last.blocker) || (last === null || last === void 0 ? void 0 : last.summary), changedFiles: last === null || last === void 0 ? void 0 : last.changedFiles, artifactPaths: last === null || last === void 0 ? void 0 : last.artifactPaths, maxSameFailureRepeats: budget.maxRepeatedNoProgress + 1 }, extra));
1800
+ };
1801
+ var recoveryCheckpointFor = function (recoveryPlan) { return (0, ai_runner_manager_policy_1.buildResolveIOAIManagerRecoveryCheckpoint)({
1802
+ plan: recoveryPlan,
1803
+ current: last
1804
+ }); };
1805
+ var recoveryFieldsFor = function (recoveryPlan, recoveryCheckpoint, recoveryEvidenceProbe) {
1806
+ var checkpoint = recoveryCheckpoint || recoveryCheckpointFor(recoveryPlan);
1807
+ var probe = recoveryEvidenceProbe || (0, ai_runner_manager_policy_1.buildResolveIOAIManagerRecoveryEvidenceProbe)({
1808
+ checkpoint: checkpoint,
1809
+ current: last
1810
+ });
1811
+ return {
1812
+ recoveryPlan: recoveryPlan,
1813
+ recoveryCheckpoint: checkpoint,
1814
+ recoveryEvidenceProbe: probe,
1815
+ recoveryAction: (0, ai_runner_manager_policy_1.buildResolveIOAIManagerRecoveryActionPacket)({
1816
+ plan: recoveryPlan,
1817
+ checkpoint: checkpoint,
1818
+ probe: probe,
1819
+ current: last
1820
+ })
1821
+ };
1822
+ };
1823
+ var managerRecoveryFields = function () { return recoveryFieldsFor(managerDecision.recoveryPlan, managerDecision.recoveryCheckpoint, managerDecision.recoveryEvidenceProbe); };
1824
+ var withWorkflowReadiness = function (decision) {
1825
+ var workflowReadiness = buildResolveIOAICoderV6WorkflowReadiness(bundle, {
1826
+ action: decision.action,
1827
+ reason: decision.reason,
1828
+ nextLane: decision.nextLane,
1829
+ nextStep: decision.nextStep,
1830
+ budgetExceeded: decision.budgetExceeded,
1831
+ repeatedNoProgressCount: decision.repeatedNoProgressCount
1832
+ });
1833
+ return __assign(__assign({}, decision), { workflowReadiness: workflowReadiness, workflowProofCheckpoint: workflowReadiness.workflowProofCheckpoint });
1834
+ };
1835
+ var budgetExceeded = (budget.loopCount >= budget.maxLoopsPerRun && !managerDecision.loopBudgetShouldReset)
1836
+ || budget.totalPromptTokenEstimate >= budget.maxTotalPromptTokens
1837
+ || ((last === null || last === void 0 ? void 0 : last.promptTokenEstimate) || 0) > budget.maxPromptTokensPerNonInitialStep * 2;
1838
+ if (budgetExceeded) {
1839
+ var recoveryPlan_1 = recoveryPlanFor('budget_stop', 'aicoder_v6_budget_guard', {
1840
+ productRepairFailure: false
1841
+ });
1842
+ return withWorkflowReadiness(__assign({ action: 'budget_stop', reason: 'aicoder_v6_budget_guard', nextLane: (last === null || last === void 0 ? void 0 : last.lane) || bundle.aiCoderV6SupervisorState.activeLane, nextStep: (last === null || last === void 0 ? void 0 : last.stepType) || bundle.aiCoderV6SupervisorState.activeStep, repeatedNoProgressCount: repeatedNoProgressCount, budgetExceeded: budgetExceeded }, recoveryFieldsFor(recoveryPlan_1)));
1843
+ }
1844
+ if (managerDecision.action === 'park_ping_pong') {
1845
+ return withWorkflowReadiness(__assign({ action: 'park', reason: 'aicoder_v6_ping_pong_no_progress', nextLane: (last === null || last === void 0 ? void 0 : last.lane) || bundle.aiCoderV6SupervisorState.activeLane, nextStep: (last === null || last === void 0 ? void 0 : last.stepType) || bundle.aiCoderV6SupervisorState.activeStep, repeatedNoProgressCount: managerDecision.pingPongCount, budgetExceeded: false }, managerRecoveryFields()));
1846
+ }
1847
+ if (managerDecision.action === 'park_repeated_failure') {
1848
+ return withWorkflowReadiness(__assign({ action: 'park', reason: 'aicoder_v6_repeated_no_progress', nextLane: (last === null || last === void 0 ? void 0 : last.lane) || bundle.aiCoderV6SupervisorState.activeLane, nextStep: (last === null || last === void 0 ? void 0 : last.stepType) || bundle.aiCoderV6SupervisorState.activeStep, repeatedNoProgressCount: managerDecision.sameFailureCount, budgetExceeded: false }, managerRecoveryFields()));
1849
+ }
1850
+ if (repeatedNoProgressCount > budget.maxRepeatedNoProgress) {
1851
+ var recoveryPlan_2 = recoveryPlanFor('park', 'aicoder_v6_repeated_no_progress', {
1852
+ action: 'park_repeated_failure',
1853
+ productRepairFailure: !/^(?:infra|compile|release)$/i.test(String((last === null || last === void 0 ? void 0 : last.failureClass) || ''))
1854
+ });
1855
+ return withWorkflowReadiness(__assign({ action: 'park', reason: 'aicoder_v6_repeated_no_progress', nextLane: (last === null || last === void 0 ? void 0 : last.lane) || bundle.aiCoderV6SupervisorState.activeLane, nextStep: (last === null || last === void 0 ? void 0 : last.stepType) || bundle.aiCoderV6SupervisorState.activeStep, repeatedNoProgressCount: repeatedNoProgressCount, budgetExceeded: false }, recoveryFieldsFor(recoveryPlan_2)));
1856
+ }
1857
+ if (managerDecision.action === 'retry_infra') {
1858
+ var compileRepair = managerDecision.recoveryPlan.recoveryClass === 'compile_repair'
1859
+ || managerDecision.failureClass === 'compile'
1860
+ || (last === null || last === void 0 ? void 0 : last.failureClass) === 'compile';
1861
+ return withWorkflowReadiness(__assign({ action: 'infra_retry', reason: compileRepair ? 'aicoder_v6_compile_repair_required' : 'aicoder_v6_infra_retry', nextLane: (last === null || last === void 0 ? void 0 : last.lane) || bundle.aiCoderV6SupervisorState.activeLane, nextStep: (last === null || last === void 0 ? void 0 : last.stepType) || bundle.aiCoderV6SupervisorState.activeStep, repeatedNoProgressCount: repeatedNoProgressCount, budgetExceeded: false }, managerRecoveryFields()));
1862
+ }
1863
+ if ((last === null || last === void 0 ? void 0 : last.outcome) === 'needs_repair') {
1864
+ if (last.failureClass === 'journey') {
1865
+ return withWorkflowReadiness(__assign({ action: 'retry_same_step', reason: 'aicoder_v6_journey_contract_repair_required', nextLane: 'plan', nextStep: last.stepType === 'journey_validation' ? 'journey_contract' : last.stepType, repeatedNoProgressCount: repeatedNoProgressCount, budgetExceeded: false }, managerRecoveryFields()));
1866
+ }
1867
+ if (last.failureClass === 'release') {
1868
+ return withWorkflowReadiness(__assign({ action: 'retry_same_step', reason: 'aicoder_v6_release_repair_required', nextLane: 'publish', nextStep: last.stepType, repeatedNoProgressCount: repeatedNoProgressCount, budgetExceeded: false }, managerRecoveryFields()));
1869
+ }
1870
+ return withWorkflowReadiness(__assign({ action: last.lane === 'repair' ? 'retry_same_step' : 'switch_to_repair', reason: 'aicoder_v6_repair_required', nextLane: 'repair', nextStep: 'repair', repeatedNoProgressCount: repeatedNoProgressCount, budgetExceeded: false }, managerRecoveryFields()));
1871
+ }
1872
+ if ((last === null || last === void 0 ? void 0 : last.outcome) === 'infra_retry') {
1873
+ var recoveryPlan_3 = recoveryPlanFor('infra_retry', 'aicoder_v6_infra_retry', {
1874
+ failureClass: 'infra',
1875
+ productRepairFailure: false
1876
+ });
1877
+ return withWorkflowReadiness(__assign({ action: 'infra_retry', reason: 'aicoder_v6_infra_retry', nextLane: last.lane, nextStep: last.stepType, repeatedNoProgressCount: repeatedNoProgressCount, budgetExceeded: false }, recoveryFieldsFor(recoveryPlan_3)));
1878
+ }
1879
+ if ((last === null || last === void 0 ? void 0 : last.outcome) === 'ready_to_publish') {
1880
+ var recoveryPlan_4 = recoveryPlanFor('ready_to_publish', 'aicoder_v6_ready_to_publish', {
1881
+ failureClass: 'release',
1882
+ productRepairFailure: false
1883
+ });
1884
+ return withWorkflowReadiness(__assign({ action: 'ready_to_publish', reason: 'aicoder_v6_ready_to_publish', nextLane: 'publish', nextStep: 'publish', repeatedNoProgressCount: repeatedNoProgressCount, budgetExceeded: false }, recoveryFieldsFor(recoveryPlan_4)));
1885
+ }
1886
+ var recoveryPlan = managerDecision.recoveryPlan || recoveryPlanFor('continue', 'aicoder_v6_continue');
1887
+ var fallbackCheckpoint = managerDecision.recoveryCheckpoint || recoveryCheckpointFor(recoveryPlan);
1888
+ return withWorkflowReadiness(__assign({ action: 'continue', reason: 'aicoder_v6_continue', nextLane: (last === null || last === void 0 ? void 0 : last.lane) || bundle.aiCoderV6SupervisorState.activeLane, nextStep: (last === null || last === void 0 ? void 0 : last.stepType) || bundle.aiCoderV6SupervisorState.activeStep, repeatedNoProgressCount: repeatedNoProgressCount, budgetExceeded: false }, recoveryFieldsFor(recoveryPlan, fallbackCheckpoint, managerDecision.recoveryEvidenceProbe)));
1889
+ }
1890
+ function buildResolveIOAICoderV6DiagnoseFirstPrompt(lines) {
1891
+ var _a, _b;
1892
+ return [
1893
+ 'AICoder Runner V6 contract: use compact lane memory, diagnose first, then make the smallest proven next move.',
1894
+ 'Start with Diagnose First: observed evidence, likely cause, smallest next action, and expected proof.',
1895
+ 'Use current artifacts, changed files, and lane memory before asking for broad context.',
1896
+ 'Do not spawn duplicate build, QA, browser, server, Mongo, or Codex processes.',
1897
+ 'If repairing, inspect logs/artifacts/source/diff first; retest the failed check before advancing.',
1898
+ 'If the same blocker repeats without new proof, park with the exact blocker instead of burning more tokens.',
1899
+ lines.goal ? "Goal: ".concat(cleanText(lines.goal, 500)) : '',
1900
+ cleanList(lines.approvedScope, 12, 240).length ? "Approved scope: ".concat(cleanList(lines.approvedScope, 12, 240).join(' | ')) : '',
1901
+ lines.activeLane ? "Active lane: ".concat(lines.activeLane) : '',
1902
+ lines.activeStep ? "Active step: ".concat(lines.activeStep) : '',
1903
+ lines.laneSummary ? "Lane memory: ".concat(cleanText(lines.laneSummary, 700)) : '',
1904
+ lines.activeBlocker ? "Active blocker: ".concat(cleanText(lines.activeBlocker, 800)) : '',
1905
+ ((_a = lines.currentQaRow) === null || _a === void 0 ? void 0 : _a.workflow) ? "Current QA row: ".concat(cleanText(lines.currentQaRow.workflow, 300)) : '',
1906
+ ((_b = lines.currentQaRow) === null || _b === void 0 ? void 0 : _b.route) ? "Current QA route: ".concat(cleanText(lines.currentQaRow.route, 300)) : '',
1907
+ lines.journeyContractPath ? "Journey contract: ".concat(cleanText(lines.journeyContractPath, 240)) : '',
1908
+ lines.activeWorkflowStep ? "Active workflow step: ".concat(cleanText(lines.activeWorkflowStep, 240)) : '',
1909
+ cleanList(lines.changedFiles, 12, 200).length ? "Changed files: ".concat(cleanList(lines.changedFiles, 12, 200).join(', ')) : '',
1910
+ cleanList(lines.artifactPaths, 12, 240).length ? "Artifacts: ".concat(cleanList(lines.artifactPaths, 12, 240).join(', ')) : ''
1911
+ ].filter(Boolean);
1912
+ }
1913
+ function buildResolveIOAICoderV6Incident(input) {
1914
+ return {
1915
+ incidentClass: cleanText(input.incidentClass, 120) || 'aicoder_v6_runner_incident',
1916
+ summary: cleanText(input.summary, 1200),
1917
+ stepType: input.stepType,
1918
+ lane: input.lane,
1919
+ blockerFingerprint: input.blocker ? fingerprintResolveIOAICoderV6Blocker(input.blocker) : undefined,
1920
+ artifactPaths: cleanList(input.artifactPaths, 40, 500),
1921
+ recordedAt: isoNow(input.now)
1922
+ };
1923
+ }
1924
+
1925
+ //# sourceMappingURL=aicoder-runner-v6.js.map