infra-kit 0.1.127 β†’ 0.1.129

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 (755) hide show
  1. package/dist/chunk-2PZRQHWF.js +2 -0
  2. package/dist/chunk-2PZRQHWF.js.map +7 -0
  3. package/dist/chunk-6RRAK2QO.js +5 -0
  4. package/dist/chunk-6RRAK2QO.js.map +7 -0
  5. package/dist/chunk-IX2A34UU.js +2 -0
  6. package/dist/chunk-IX2A34UU.js.map +7 -0
  7. package/dist/chunk-V5IDN7ZM.js +162 -0
  8. package/dist/chunk-V5IDN7ZM.js.map +7 -0
  9. package/dist/chunk-Z6KTUVIC.js +2 -0
  10. package/dist/chunk-Z6KTUVIC.js.map +7 -0
  11. package/dist/cli.js +4 -4
  12. package/dist/cli.js.map +3 -3
  13. package/dist/dev-server.js +15 -10
  14. package/dist/dev-server.js.map +4 -4
  15. package/dist/entry/index.d.ts +1 -1
  16. package/dist/entry/vite.d.ts +2 -0
  17. package/dist/index.js +1 -1
  18. package/dist/lib/package-config/package-config-schema.d.ts +35 -0
  19. package/dist/lib/package-config/package-config.d.ts +28 -0
  20. package/dist/lib/release-slug/release-slug.d.ts +19 -0
  21. package/dist/lib/vite/vite.d.ts +135 -0
  22. package/dist/mcp.js +1 -1
  23. package/dist/mcp.js.map +1 -1
  24. package/dist/vite.js +2 -0
  25. package/dist/vite.js.map +7 -0
  26. package/package.json +10 -2
  27. package/.eslintcache +0 -1
  28. package/.omc/state/agent-replay-036daa78-5fee-4c7d-9b44-53584acb0d87.jsonl +0 -26
  29. package/.omc/state/agent-replay-0a58307d-2a37-4c69-851c-83a646502d62.jsonl +0 -1
  30. package/.omc/state/agent-replay-0a65ec83-9de7-458d-9d0f-e56e1a26c68e.jsonl +0 -2
  31. package/.omc/state/agent-replay-0d1515ce-4ebe-4ce8-a865-2897f68de168.jsonl +0 -1
  32. package/.omc/state/agent-replay-11c41aa0-51fa-49e1-a1dc-26dcd6ac26cc.jsonl +0 -16
  33. package/.omc/state/agent-replay-127837d3-a000-4656-9453-2324ab353723.jsonl +0 -5
  34. package/.omc/state/agent-replay-15c409af-24fa-4026-88d3-a82dd1e68b87.jsonl +0 -11
  35. package/.omc/state/agent-replay-1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a.jsonl +0 -17
  36. package/.omc/state/agent-replay-1fcfe0ec-7567-41c3-9bfd-501e99e86819.jsonl +0 -19
  37. package/.omc/state/agent-replay-2ac0dcd0-01f7-41a8-a8c9-f2195599817b.jsonl +0 -5
  38. package/.omc/state/agent-replay-2ccbd177-0d5d-4d4a-ab94-a22464786221.jsonl +0 -1
  39. package/.omc/state/agent-replay-36d91435-50b4-442f-9f4e-3cc68d776236.jsonl +0 -2
  40. package/.omc/state/agent-replay-38382db5-3088-4b5a-aff7-2561a60827c7.jsonl +0 -17
  41. package/.omc/state/agent-replay-4cf1c186-81b2-497c-b002-d7f84e7839f3.jsonl +0 -9
  42. package/.omc/state/agent-replay-50c36be9-a3a2-42b9-9c85-5a06d3e22f6a.jsonl +0 -5
  43. package/.omc/state/agent-replay-5c4ab554-64f1-42ae-83e3-21e0237e955c.jsonl +0 -11
  44. package/.omc/state/agent-replay-6be1264f-8069-4412-8119-86118ed1943e.jsonl +0 -3
  45. package/.omc/state/agent-replay-707b4784-2117-4b19-ae68-68a031f0d76d.jsonl +0 -2
  46. package/.omc/state/agent-replay-74afa912-1443-4011-b4f2-db9f055cdd9f.jsonl +0 -3
  47. package/.omc/state/agent-replay-8198b3e5-fad6-4ee0-9c59-ef773ad89af4.jsonl +0 -1
  48. package/.omc/state/agent-replay-8cd7652a-b8b5-49cf-9b1f-bee8e5972458.jsonl +0 -3
  49. package/.omc/state/agent-replay-8dd0ad2f-3a90-4158-b9de-ec8e19a7c983.jsonl +0 -3
  50. package/.omc/state/agent-replay-9bea518f-a9ee-4d14-bb53-a936ebaf647c.jsonl +0 -7
  51. package/.omc/state/agent-replay-a60ac2ec-afbd-449f-a540-6df287392fc2.jsonl +0 -1
  52. package/.omc/state/agent-replay-afc6290b-40d3-4bef-b3b6-14484c034ab9.jsonl +0 -14
  53. package/.omc/state/agent-replay-b52d89fb-0e24-4901-bc66-27e3c1697126.jsonl +0 -2
  54. package/.omc/state/agent-replay-be37e426-6fc8-47f4-8178-221c8494551c.jsonl +0 -3
  55. package/.omc/state/agent-replay-c967c819-3d1c-447b-ab48-56a8448ef9f8.jsonl +0 -2
  56. package/.omc/state/agent-replay-d02e6565-5168-40c8-8629-de219a29fa43.jsonl +0 -2
  57. package/.omc/state/agent-replay-d367c3be-9c2a-48e7-bcea-b45861af568c.jsonl +0 -2
  58. package/.omc/state/agent-replay-d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc.jsonl +0 -10
  59. package/.omc/state/agent-replay-e947a3c6-989d-4a60-91dd-6b0ddd827b2d.jsonl +0 -3
  60. package/.omc/state/agent-replay-eb44055b-c2fa-4e66-b491-a1d9b44f51c7.jsonl +0 -1
  61. package/.omc/state/agent-replay-f2846d8f-974c-486c-b16f-4bdaa28ca45f.jsonl +0 -2
  62. package/.omc/state/agent-replay-f581a1ae-0ee4-48a3-96f3-ce31a0633bb0.jsonl +0 -1
  63. package/.omc/state/agent-replay-f99d8dad-81d1-4987-8183-62edf0843d0c.jsonl +0 -2
  64. package/.omc/state/agent-replay-fe1057b4-9a25-4e8e-8c3f-3e11652ee697.jsonl +0 -5
  65. package/.omc/state/idle-notif-cooldown.json +0 -3
  66. package/.omc/state/last-tool-error.json +0 -7
  67. package/.omc/state/mission-state.json +0 -53
  68. package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/last-tool-error-state.json +0 -7
  69. package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/mission-state.json +0 -129
  70. package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/pre-tool-advisory-throttle.json +0 -34
  71. package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/ralph-state.json +0 -13
  72. package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/ralplan-state.json +0 -11
  73. package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/subagent-tracking-state.json +0 -80
  74. package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/ultrawork-state.json +0 -11
  75. package/.omc/state/sessions/0a58307d-2a37-4c69-851c-83a646502d62/pre-tool-advisory-throttle.json +0 -18
  76. package/.omc/state/sessions/0a58307d-2a37-4c69-851c-83a646502d62/subagent-tracking-state.json +0 -7
  77. package/.omc/state/sessions/0a65ec83-9de7-458d-9d0f-e56e1a26c68e/pre-tool-advisory-throttle.json +0 -18
  78. package/.omc/state/sessions/0a65ec83-9de7-458d-9d0f-e56e1a26c68e/skill-active-state.json +0 -15
  79. package/.omc/state/sessions/0d1515ce-4ebe-4ce8-a865-2897f68de168/pre-tool-advisory-throttle.json +0 -10
  80. package/.omc/state/sessions/11c41aa0-51fa-49e1-a1dc-26dcd6ac26cc/last-tool-error-state.json +0 -7
  81. package/.omc/state/sessions/11c41aa0-51fa-49e1-a1dc-26dcd6ac26cc/mission-state.json +0 -117
  82. package/.omc/state/sessions/11c41aa0-51fa-49e1-a1dc-26dcd6ac26cc/pre-tool-advisory-throttle.json +0 -42
  83. package/.omc/state/sessions/11c41aa0-51fa-49e1-a1dc-26dcd6ac26cc/subagent-tracking-state.json +0 -53
  84. package/.omc/state/sessions/127837d3-a000-4656-9453-2324ab353723/mission-state.json +0 -61
  85. package/.omc/state/sessions/127837d3-a000-4656-9453-2324ab353723/pre-tool-advisory-throttle.json +0 -22
  86. package/.omc/state/sessions/127837d3-a000-4656-9453-2324ab353723/skill-active-state.json +0 -15
  87. package/.omc/state/sessions/127837d3-a000-4656-9453-2324ab353723/subagent-tracking-state.json +0 -26
  88. package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/last-tool-error-state.json +0 -7
  89. package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/mission-state.json +0 -89
  90. package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/pre-tool-advisory-throttle.json +0 -34
  91. package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/ralph-state.json +0 -13
  92. package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/skill-active-state.json +0 -15
  93. package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/subagent-tracking-state.json +0 -44
  94. package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/ultrawork-state.json +0 -11
  95. package/.omc/state/sessions/1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a/last-tool-error-state.json +0 -7
  96. package/.omc/state/sessions/1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a/mission-state.json +0 -139
  97. package/.omc/state/sessions/1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a/pre-tool-advisory-throttle.json +0 -50
  98. package/.omc/state/sessions/1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a/ralplan-state.json +0 -11
  99. package/.omc/state/sessions/1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a/subagent-tracking-state.json +0 -90
  100. package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/last-tool-error-state.json +0 -7
  101. package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/mission-state.json +0 -109
  102. package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/pre-tool-advisory-throttle.json +0 -42
  103. package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/ralph-state.json +0 -13
  104. package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/skill-active-state.json +0 -15
  105. package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/subagent-tracking-state.json +0 -62
  106. package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/ultrawork-state.json +0 -11
  107. package/.omc/state/sessions/23d0ff82-17e5-428b-8743-38f7979bb6f3/last-tool-error-state.json +0 -7
  108. package/.omc/state/sessions/23d0ff82-17e5-428b-8743-38f7979bb6f3/pre-tool-advisory-throttle.json +0 -18
  109. package/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/last-tool-error-state.json +0 -7
  110. package/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/mission-state.json +0 -79
  111. package/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/pre-tool-advisory-throttle.json +0 -10
  112. package/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/skill-active-state.json +0 -15
  113. package/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/subagent-tracking-state.json +0 -26
  114. package/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/pre-tool-advisory-throttle.json +0 -18
  115. package/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/subagent-tracking-state.json +0 -17
  116. package/.omc/state/sessions/36d91435-50b4-442f-9f4e-3cc68d776236/pre-tool-advisory-throttle.json +0 -18
  117. package/.omc/state/sessions/36d91435-50b4-442f-9f4e-3cc68d776236/subagent-tracking-state.json +0 -17
  118. package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/last-tool-error-state.json +0 -7
  119. package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/mission-state.json +0 -145
  120. package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/pre-tool-advisory-throttle.json +0 -38
  121. package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/ralplan-state.json +0 -11
  122. package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/subagent-tracking-state.json +0 -98
  123. package/.omc/state/sessions/3a844fbd-ace8-4af1-8516-33d611839886/pre-tool-advisory-throttle.json +0 -18
  124. package/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/last-tool-error-state.json +0 -7
  125. package/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/pre-tool-advisory-throttle.json +0 -18
  126. package/.omc/state/sessions/4cf1c186-81b2-497c-b002-d7f84e7839f3/last-tool-error-state.json +0 -7
  127. package/.omc/state/sessions/4cf1c186-81b2-497c-b002-d7f84e7839f3/pre-tool-advisory-throttle.json +0 -18
  128. package/.omc/state/sessions/4cf1c186-81b2-497c-b002-d7f84e7839f3/subagent-tracking-state.json +0 -7
  129. package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/mission-state.json +0 -61
  130. package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/pre-tool-advisory-throttle.json +0 -22
  131. package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/skill-active-state.json +0 -15
  132. package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/subagent-tracking-state.json +0 -26
  133. package/.omc/state/sessions/560ea519-574a-4713-b134-5bf6cfaf3c33/pre-tool-advisory-throttle.json +0 -18
  134. package/.omc/state/sessions/5c4ab554-64f1-42ae-83e3-21e0237e955c/mission-state.json +0 -117
  135. package/.omc/state/sessions/5c4ab554-64f1-42ae-83e3-21e0237e955c/pre-tool-advisory-throttle.json +0 -18
  136. package/.omc/state/sessions/5c4ab554-64f1-42ae-83e3-21e0237e955c/subagent-tracking-state.json +0 -17
  137. package/.omc/state/sessions/6be1264f-8069-4412-8119-86118ed1943e/last-tool-error-state.json +0 -7
  138. package/.omc/state/sessions/6be1264f-8069-4412-8119-86118ed1943e/mission-state.json +0 -53
  139. package/.omc/state/sessions/6be1264f-8069-4412-8119-86118ed1943e/pre-tool-advisory-throttle.json +0 -22
  140. package/.omc/state/sessions/6be1264f-8069-4412-8119-86118ed1943e/skill-active-state.json +0 -15
  141. package/.omc/state/sessions/6be1264f-8069-4412-8119-86118ed1943e/subagent-tracking-state.json +0 -17
  142. package/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/pre-tool-advisory-throttle.json +0 -18
  143. package/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/subagent-tracking-state.json +0 -17
  144. package/.omc/state/sessions/74afa912-1443-4011-b4f2-db9f055cdd9f/pre-tool-advisory-throttle.json +0 -18
  145. package/.omc/state/sessions/74afa912-1443-4011-b4f2-db9f055cdd9f/skill-active-state.json +0 -15
  146. package/.omc/state/sessions/74afa912-1443-4011-b4f2-db9f055cdd9f/subagent-tracking-state.json +0 -17
  147. package/.omc/state/sessions/7772f972-4ec1-4287-bf42-a92c14cf3ffc/pre-tool-advisory-throttle.json +0 -10
  148. package/.omc/state/sessions/8198b3e5-fad6-4ee0-9c59-ef773ad89af4/pre-tool-advisory-throttle.json +0 -14
  149. package/.omc/state/sessions/8198b3e5-fad6-4ee0-9c59-ef773ad89af4/subagent-tracking-state.json +0 -17
  150. package/.omc/state/sessions/8cd7652a-b8b5-49cf-9b1f-bee8e5972458/pre-tool-advisory-throttle.json +0 -18
  151. package/.omc/state/sessions/8cd7652a-b8b5-49cf-9b1f-bee8e5972458/ralplan-state.json +0 -11
  152. package/.omc/state/sessions/8cd7652a-b8b5-49cf-9b1f-bee8e5972458/subagent-tracking-state.json +0 -35
  153. package/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/pre-tool-advisory-throttle.json +0 -14
  154. package/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/ralph-state.json +0 -13
  155. package/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/subagent-tracking-state.json +0 -17
  156. package/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/ultrawork-state.json +0 -11
  157. package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/last-tool-error-state.json +0 -7
  158. package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/mission-state.json +0 -79
  159. package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/pre-tool-advisory-throttle.json +0 -22
  160. package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/progress.txt +0 -7
  161. package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/skill-active-state.json +0 -15
  162. package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/subagent-tracking-state.json +0 -26
  163. package/.omc/state/sessions/a60ac2ec-afbd-449f-a540-6df287392fc2/pre-tool-advisory-throttle.json +0 -18
  164. package/.omc/state/sessions/a60ac2ec-afbd-449f-a540-6df287392fc2/subagent-tracking-state.json +0 -7
  165. package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/last-tool-error-state.json +0 -7
  166. package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/mission-state.json +0 -89
  167. package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/pre-tool-advisory-throttle.json +0 -34
  168. package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/ralph-state.json +0 -13
  169. package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/skill-active-state.json +0 -15
  170. package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/subagent-tracking-state.json +0 -35
  171. package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/ultrawork-state.json +0 -11
  172. package/.omc/state/sessions/b52d89fb-0e24-4901-bc66-27e3c1697126/pre-tool-advisory-throttle.json +0 -14
  173. package/.omc/state/sessions/b52d89fb-0e24-4901-bc66-27e3c1697126/subagent-tracking-state.json +0 -17
  174. package/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/pre-tool-advisory-throttle.json +0 -18
  175. package/.omc/state/sessions/c967c819-3d1c-447b-ab48-56a8448ef9f8/pre-tool-advisory-throttle.json +0 -10
  176. package/.omc/state/sessions/c967c819-3d1c-447b-ab48-56a8448ef9f8/subagent-tracking-state.json +0 -7
  177. package/.omc/state/sessions/d02e6565-5168-40c8-8629-de219a29fa43/last-tool-error-state.json +0 -7
  178. package/.omc/state/sessions/d02e6565-5168-40c8-8629-de219a29fa43/mission-state.json +0 -53
  179. package/.omc/state/sessions/d02e6565-5168-40c8-8629-de219a29fa43/pre-tool-advisory-throttle.json +0 -18
  180. package/.omc/state/sessions/d02e6565-5168-40c8-8629-de219a29fa43/subagent-tracking-state.json +0 -17
  181. package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/last-tool-error-state.json +0 -7
  182. package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/mission-state.json +0 -103
  183. package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/pre-tool-advisory-throttle.json +0 -30
  184. package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/ralph-state.json +0 -13
  185. package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/subagent-tracking-state.json +0 -62
  186. package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/ultrawork-state.json +0 -11
  187. package/.omc/state/sessions/e947a3c6-989d-4a60-91dd-6b0ddd827b2d/last-tool-error-state.json +0 -7
  188. package/.omc/state/sessions/e947a3c6-989d-4a60-91dd-6b0ddd827b2d/pre-tool-advisory-throttle.json +0 -10
  189. package/.omc/state/sessions/e947a3c6-989d-4a60-91dd-6b0ddd827b2d/subagent-tracking-state.json +0 -26
  190. package/.omc/state/sessions/eb44055b-c2fa-4e66-b491-a1d9b44f51c7/last-tool-error-state.json +0 -7
  191. package/.omc/state/sessions/eb44055b-c2fa-4e66-b491-a1d9b44f51c7/pre-tool-advisory-throttle.json +0 -18
  192. package/.omc/state/sessions/eb44055b-c2fa-4e66-b491-a1d9b44f51c7/subagent-tracking-state.json +0 -17
  193. package/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/pre-tool-advisory-throttle.json +0 -18
  194. package/.omc/state/sessions/f581a1ae-0ee4-48a3-96f3-ce31a0633bb0/pre-tool-advisory-throttle.json +0 -18
  195. package/.omc/state/sessions/f581a1ae-0ee4-48a3-96f3-ce31a0633bb0/subagent-tracking-state.json +0 -17
  196. package/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/pre-tool-advisory-throttle.json +0 -14
  197. package/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/ralph-state.json +0 -13
  198. package/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/ultrawork-state.json +0 -11
  199. package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/last-tool-error-state.json +0 -7
  200. package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/mission-state.json +0 -61
  201. package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/prd.json +0 -22
  202. package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/pre-tool-advisory-throttle.json +0 -22
  203. package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/progress.txt +0 -22
  204. package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/skill-active-state.json +0 -15
  205. package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/subagent-tracking-state.json +0 -26
  206. package/.omc/state/subagent-tracking.json +0 -17
  207. package/.turbo/turbo-build.log +0 -7
  208. package/.turbo/turbo-check.log +0 -14
  209. package/.turbo/turbo-eslint-check.log +0 -2
  210. package/.turbo/turbo-eslint-fix.log +0 -1
  211. package/.turbo/turbo-prettier-check.log +0 -1
  212. package/.turbo/turbo-prettier-fix.log +0 -1
  213. package/.turbo/turbo-test.log +0 -406
  214. package/.turbo/turbo-ts-check.log +0 -1
  215. package/.turbo/turbo-validate.log +0 -14
  216. package/coverage/base.css +0 -224
  217. package/coverage/block-navigation.js +0 -87
  218. package/coverage/cli/index.html +0 -116
  219. package/coverage/cli/package.json.html +0 -283
  220. package/coverage/cli/src/commands/audit/audit.ts.html +0 -616
  221. package/coverage/cli/src/commands/audit/index.html +0 -131
  222. package/coverage/cli/src/commands/audit/index.ts.html +0 -88
  223. package/coverage/cli/src/commands/doctor/doctor.ts.html +0 -1654
  224. package/coverage/cli/src/commands/doctor/index.html +0 -131
  225. package/coverage/cli/src/commands/doctor/index.ts.html +0 -88
  226. package/coverage/cli/src/commands/env-clear/env-clear.ts.html +0 -370
  227. package/coverage/cli/src/commands/env-clear/index.html +0 -131
  228. package/coverage/cli/src/commands/env-clear/index.ts.html +0 -88
  229. package/coverage/cli/src/commands/env-list/env-list.ts.html +0 -229
  230. package/coverage/cli/src/commands/env-list/index.html +0 -131
  231. package/coverage/cli/src/commands/env-list/index.ts.html +0 -88
  232. package/coverage/cli/src/commands/env-load/env-load.ts.html +0 -1201
  233. package/coverage/cli/src/commands/env-load/index.html +0 -131
  234. package/coverage/cli/src/commands/env-load/index.ts.html +0 -91
  235. package/coverage/cli/src/commands/env-status/env-status.ts.html +0 -409
  236. package/coverage/cli/src/commands/env-status/index.html +0 -131
  237. package/coverage/cli/src/commands/env-status/index.ts.html +0 -88
  238. package/coverage/cli/src/commands/gh-merge-dev/gh-merge-dev.ts.html +0 -694
  239. package/coverage/cli/src/commands/gh-merge-dev/index.html +0 -131
  240. package/coverage/cli/src/commands/gh-merge-dev/index.ts.html +0 -88
  241. package/coverage/cli/src/commands/gh-release-deliver/gh-release-deliver.ts.html +0 -1495
  242. package/coverage/cli/src/commands/gh-release-deliver/index.html +0 -131
  243. package/coverage/cli/src/commands/gh-release-deliver/index.ts.html +0 -88
  244. package/coverage/cli/src/commands/gh-release-deploy-all/gh-release-deploy-all.ts.html +0 -706
  245. package/coverage/cli/src/commands/gh-release-deploy-all/index.html +0 -131
  246. package/coverage/cli/src/commands/gh-release-deploy-all/index.ts.html +0 -88
  247. package/coverage/cli/src/commands/gh-release-deploy-selected/gh-release-deploy-selected.ts.html +0 -994
  248. package/coverage/cli/src/commands/gh-release-deploy-selected/index.html +0 -131
  249. package/coverage/cli/src/commands/gh-release-deploy-selected/index.ts.html +0 -88
  250. package/coverage/cli/src/commands/gh-release-list/gh-release-list.ts.html +0 -355
  251. package/coverage/cli/src/commands/gh-release-list/index.html +0 -131
  252. package/coverage/cli/src/commands/gh-release-list/index.ts.html +0 -88
  253. package/coverage/cli/src/commands/init/agent-files.ts.html +0 -742
  254. package/coverage/cli/src/commands/init/index.html +0 -146
  255. package/coverage/cli/src/commands/init/init.ts.html +0 -1159
  256. package/coverage/cli/src/commands/init/migrate-config.ts.html +0 -1219
  257. package/coverage/cli/src/commands/release-create/index.html +0 -131
  258. package/coverage/cli/src/commands/release-create/index.ts.html +0 -88
  259. package/coverage/cli/src/commands/release-create/release-create.ts.html +0 -1426
  260. package/coverage/cli/src/commands/release-desc-edit/index.html +0 -131
  261. package/coverage/cli/src/commands/release-desc-edit/index.ts.html +0 -88
  262. package/coverage/cli/src/commands/release-desc-edit/release-desc-edit.ts.html +0 -766
  263. package/coverage/cli/src/commands/vendor-check/index.html +0 -131
  264. package/coverage/cli/src/commands/vendor-check/index.ts.html +0 -88
  265. package/coverage/cli/src/commands/vendor-check/vendor-check.ts.html +0 -466
  266. package/coverage/cli/src/commands/vendor-config/index.html +0 -116
  267. package/coverage/cli/src/commands/vendor-config/vendor-config.ts.html +0 -571
  268. package/coverage/cli/src/commands/vendor-diff/index.html +0 -131
  269. package/coverage/cli/src/commands/vendor-diff/index.ts.html +0 -88
  270. package/coverage/cli/src/commands/vendor-diff/vendor-diff.ts.html +0 -316
  271. package/coverage/cli/src/commands/vendor-manifest/index.html +0 -131
  272. package/coverage/cli/src/commands/vendor-manifest/index.ts.html +0 -88
  273. package/coverage/cli/src/commands/vendor-manifest/vendor-manifest.ts.html +0 -265
  274. package/coverage/cli/src/commands/vendor-sync/index.html +0 -131
  275. package/coverage/cli/src/commands/vendor-sync/index.ts.html +0 -88
  276. package/coverage/cli/src/commands/vendor-sync/vendor-sync.ts.html +0 -355
  277. package/coverage/cli/src/commands/version/index.html +0 -131
  278. package/coverage/cli/src/commands/version/index.ts.html +0 -88
  279. package/coverage/cli/src/commands/version/version.ts.html +0 -184
  280. package/coverage/cli/src/commands/worktrees-add/index.html +0 -131
  281. package/coverage/cli/src/commands/worktrees-add/index.ts.html +0 -88
  282. package/coverage/cli/src/commands/worktrees-add/worktrees-add.ts.html +0 -1183
  283. package/coverage/cli/src/commands/worktrees-list/index.html +0 -131
  284. package/coverage/cli/src/commands/worktrees-list/index.ts.html +0 -88
  285. package/coverage/cli/src/commands/worktrees-list/worktrees-list.ts.html +0 -400
  286. package/coverage/cli/src/commands/worktrees-reload/index.html +0 -131
  287. package/coverage/cli/src/commands/worktrees-reload/index.ts.html +0 -88
  288. package/coverage/cli/src/commands/worktrees-reload/worktrees-reload.ts.html +0 -775
  289. package/coverage/cli/src/commands/worktrees-remove/index.html +0 -131
  290. package/coverage/cli/src/commands/worktrees-remove/index.ts.html +0 -88
  291. package/coverage/cli/src/commands/worktrees-remove/worktrees-remove.ts.html +0 -682
  292. package/coverage/cli/src/commands/worktrees-sync/index.html +0 -131
  293. package/coverage/cli/src/commands/worktrees-sync/index.ts.html +0 -88
  294. package/coverage/cli/src/commands/worktrees-sync/worktrees-sync.ts.html +0 -679
  295. package/coverage/cli/src/dev/__tests__/fixtures.ts.html +0 -787
  296. package/coverage/cli/src/dev/__tests__/index.html +0 -116
  297. package/coverage/cli/src/dev/dev-server.ts.html +0 -1855
  298. package/coverage/cli/src/dev/discovery.ts.html +0 -598
  299. package/coverage/cli/src/dev/index.html +0 -191
  300. package/coverage/cli/src/dev/interfaces.ts.html +0 -223
  301. package/coverage/cli/src/dev/logger.ts.html +0 -1102
  302. package/coverage/cli/src/dev/ports.ts.html +0 -430
  303. package/coverage/cli/src/dev/serverless-local-run.ts.html +0 -916
  304. package/coverage/cli/src/entry/dev-server.ts.html +0 -409
  305. package/coverage/cli/src/entry/index.html +0 -116
  306. package/coverage/cli/src/index.html +0 -116
  307. package/coverage/cli/src/integrations/cmux/canonicalize-cmux-title.ts.html +0 -178
  308. package/coverage/cli/src/integrations/cmux/close-workspace-by-title.ts.html +0 -262
  309. package/coverage/cli/src/integrations/cmux/index.html +0 -191
  310. package/coverage/cli/src/integrations/cmux/index.ts.html +0 -100
  311. package/coverage/cli/src/integrations/cmux/list-workspace-titles.ts.html +0 -226
  312. package/coverage/cli/src/integrations/cmux/open-workspace-with-layout.ts.html +0 -325
  313. package/coverage/cli/src/integrations/cmux/workspace-title.ts.html +0 -154
  314. package/coverage/cli/src/integrations/cursor/add-folders-to-workspace.ts.html +0 -337
  315. package/coverage/cli/src/integrations/cursor/index.html +0 -206
  316. package/coverage/cli/src/integrations/cursor/index.ts.html +0 -103
  317. package/coverage/cli/src/integrations/cursor/launch-cursor.ts.html +0 -121
  318. package/coverage/cli/src/integrations/cursor/open-cursor-workspace.ts.html +0 -277
  319. package/coverage/cli/src/integrations/cursor/reconcile-workspace-folders.ts.html +0 -355
  320. package/coverage/cli/src/integrations/cursor/remove-folders-from-workspace.ts.html +0 -364
  321. package/coverage/cli/src/integrations/cursor/resolve-workspace-path.ts.html +0 -124
  322. package/coverage/cli/src/integrations/doppler/doppler-cli-auth.ts.html +0 -178
  323. package/coverage/cli/src/integrations/doppler/doppler-errors.ts.html +0 -349
  324. package/coverage/cli/src/integrations/doppler/doppler-project.ts.html +0 -355
  325. package/coverage/cli/src/integrations/doppler/index.html +0 -161
  326. package/coverage/cli/src/integrations/doppler/index.ts.html +0 -97
  327. package/coverage/cli/src/integrations/gh/gh-cli-auth/gh-cli-auth.ts.html +0 -172
  328. package/coverage/cli/src/integrations/gh/gh-cli-auth/index.html +0 -131
  329. package/coverage/cli/src/integrations/gh/gh-cli-auth/index.ts.html +0 -88
  330. package/coverage/cli/src/integrations/gh/gh-release-prs/gh-release-prs.ts.html +0 -703
  331. package/coverage/cli/src/integrations/gh/gh-release-prs/index.html +0 -131
  332. package/coverage/cli/src/integrations/gh/gh-release-prs/index.ts.html +0 -91
  333. package/coverage/cli/src/integrations/gh/index.html +0 -116
  334. package/coverage/cli/src/integrations/gh/index.ts.html +0 -94
  335. package/coverage/cli/src/integrations/ide/add-ide-worktree-folders.ts.html +0 -316
  336. package/coverage/cli/src/integrations/ide/index.html +0 -191
  337. package/coverage/cli/src/integrations/ide/index.ts.html +0 -103
  338. package/coverage/cli/src/integrations/ide/open-ide-workspace.ts.html +0 -238
  339. package/coverage/cli/src/integrations/ide/provider-label.ts.html +0 -157
  340. package/coverage/cli/src/integrations/ide/remove-ide-worktree-folders.ts.html +0 -520
  341. package/coverage/cli/src/integrations/ide/types.ts.html +0 -208
  342. package/coverage/cli/src/integrations/jira/api.ts.html +0 -1060
  343. package/coverage/cli/src/integrations/jira/index.html +0 -131
  344. package/coverage/cli/src/integrations/jira/index.ts.html +0 -142
  345. package/coverage/cli/src/integrations/zed/add-folders-to-zed-workspace.ts.html +0 -175
  346. package/coverage/cli/src/integrations/zed/index.html +0 -161
  347. package/coverage/cli/src/integrations/zed/index.ts.html +0 -94
  348. package/coverage/cli/src/integrations/zed/open-zed-workspace.ts.html +0 -238
  349. package/coverage/cli/src/integrations/zed/reuse-zed-workspace.ts.html +0 -256
  350. package/coverage/cli/src/lib/assert-never/assert-never.ts.html +0 -130
  351. package/coverage/cli/src/lib/assert-never/index.html +0 -131
  352. package/coverage/cli/src/lib/assert-never/index.ts.html +0 -88
  353. package/coverage/cli/src/lib/command-catalog/command-catalog.ts.html +0 -523
  354. package/coverage/cli/src/lib/command-catalog/index.html +0 -116
  355. package/coverage/cli/src/lib/command-echo/command-echo.ts.html +0 -319
  356. package/coverage/cli/src/lib/command-echo/index.html +0 -131
  357. package/coverage/cli/src/lib/command-echo/index.ts.html +0 -88
  358. package/coverage/cli/src/lib/constants/constants.ts.html +0 -472
  359. package/coverage/cli/src/lib/constants/index.html +0 -131
  360. package/coverage/cli/src/lib/constants/index.ts.html +0 -139
  361. package/coverage/cli/src/lib/env-autoload/env-autoload.ts.html +0 -1111
  362. package/coverage/cli/src/lib/env-autoload/index.html +0 -116
  363. package/coverage/cli/src/lib/errors/format-zx-error.ts.html +0 -247
  364. package/coverage/cli/src/lib/errors/index.html +0 -146
  365. package/coverage/cli/src/lib/errors/is-prompt-cancellation.ts.html +0 -199
  366. package/coverage/cli/src/lib/errors/operation-error.ts.html +0 -325
  367. package/coverage/cli/src/lib/git-guard/git-guard.ts.html +0 -250
  368. package/coverage/cli/src/lib/git-guard/index.html +0 -131
  369. package/coverage/cli/src/lib/git-guard/index.ts.html +0 -91
  370. package/coverage/cli/src/lib/git-utils/git-utils.ts.html +0 -622
  371. package/coverage/cli/src/lib/git-utils/index.html +0 -131
  372. package/coverage/cli/src/lib/git-utils/index.ts.html +0 -115
  373. package/coverage/cli/src/lib/infra-kit-config/index.html +0 -131
  374. package/coverage/cli/src/lib/infra-kit-config/index.ts.html +0 -142
  375. package/coverage/cli/src/lib/infra-kit-config/infra-kit-config.ts.html +0 -1447
  376. package/coverage/cli/src/lib/json-output/index.html +0 -116
  377. package/coverage/cli/src/lib/json-output/json-output.ts.html +0 -226
  378. package/coverage/cli/src/lib/logger/index.html +0 -116
  379. package/coverage/cli/src/lib/logger/index.ts.html +0 -205
  380. package/coverage/cli/src/lib/managed-block/index.html +0 -131
  381. package/coverage/cli/src/lib/managed-block/index.ts.html +0 -109
  382. package/coverage/cli/src/lib/managed-block/managed-block.ts.html +0 -520
  383. package/coverage/cli/src/lib/package-config/index.html +0 -146
  384. package/coverage/cli/src/lib/package-config/index.ts.html +0 -94
  385. package/coverage/cli/src/lib/package-config/package-config-schema.ts.html +0 -142
  386. package/coverage/cli/src/lib/package-config/package-config.ts.html +0 -376
  387. package/coverage/cli/src/lib/package-validator/checks/config-check.ts.html +0 -175
  388. package/coverage/cli/src/lib/package-validator/checks/files-check.ts.html +0 -172
  389. package/coverage/cli/src/lib/package-validator/checks/index.html +0 -176
  390. package/coverage/cli/src/lib/package-validator/checks/index.ts.html +0 -97
  391. package/coverage/cli/src/lib/package-validator/checks/scripts-check.ts.html +0 -154
  392. package/coverage/cli/src/lib/package-validator/checks/turbo-check.ts.html +0 -226
  393. package/coverage/cli/src/lib/package-validator/fs-utils.ts.html +0 -139
  394. package/coverage/cli/src/lib/package-validator/index.html +0 -146
  395. package/coverage/cli/src/lib/package-validator/index.ts.html +0 -94
  396. package/coverage/cli/src/lib/package-validator/loader/config-loader.ts.html +0 -316
  397. package/coverage/cli/src/lib/package-validator/loader/index.html +0 -146
  398. package/coverage/cli/src/lib/package-validator/loader/index.ts.html +0 -91
  399. package/coverage/cli/src/lib/package-validator/loader/package-discovery.ts.html +0 -379
  400. package/coverage/cli/src/lib/package-validator/package-validator.ts.html +0 -229
  401. package/coverage/cli/src/lib/path-display/index.html +0 -131
  402. package/coverage/cli/src/lib/path-display/index.ts.html +0 -88
  403. package/coverage/cli/src/lib/path-display/path-display.ts.html +0 -211
  404. package/coverage/cli/src/lib/release-id/index.html +0 -131
  405. package/coverage/cli/src/lib/release-id/index.ts.html +0 -130
  406. package/coverage/cli/src/lib/release-id/release-id.ts.html +0 -859
  407. package/coverage/cli/src/lib/release-utils/index.html +0 -131
  408. package/coverage/cli/src/lib/release-utils/index.ts.html +0 -130
  409. package/coverage/cli/src/lib/release-utils/release-utils.ts.html +0 -778
  410. package/coverage/cli/src/lib/render/index.html +0 -116
  411. package/coverage/cli/src/lib/render/render.ts.html +0 -157
  412. package/coverage/cli/src/lib/vendor/__tests__/index.html +0 -116
  413. package/coverage/cli/src/lib/vendor/__tests__/zx-mock.ts.html +0 -181
  414. package/coverage/cli/src/lib/vendor/config-schema.ts.html +0 -319
  415. package/coverage/cli/src/lib/vendor/config.ts.html +0 -259
  416. package/coverage/cli/src/lib/vendor/factory-config-schema.ts.html +0 -190
  417. package/coverage/cli/src/lib/vendor/factory-config.ts.html +0 -358
  418. package/coverage/cli/src/lib/vendor/hash.ts.html +0 -133
  419. package/coverage/cli/src/lib/vendor/index.html +0 -251
  420. package/coverage/cli/src/lib/vendor/index.ts.html +0 -154
  421. package/coverage/cli/src/lib/vendor/manifest.ts.html +0 -538
  422. package/coverage/cli/src/lib/vendor/skip-sets.ts.html +0 -229
  423. package/coverage/cli/src/lib/vendor/sync-ops.ts.html +0 -955
  424. package/coverage/cli/src/lib/vendor/walk.ts.html +0 -253
  425. package/coverage/cli/src/lib/version-utils/index.html +0 -161
  426. package/coverage/cli/src/lib/version-utils/index.ts.html +0 -139
  427. package/coverage/cli/src/lib/version-utils/load-existing-versions.ts.html +0 -343
  428. package/coverage/cli/src/lib/version-utils/next-version.ts.html +0 -934
  429. package/coverage/cli/src/lib/version-utils/version-utils.ts.html +0 -178
  430. package/coverage/cli/src/lib/worktrees/index.html +0 -131
  431. package/coverage/cli/src/lib/worktrees/index.ts.html +0 -88
  432. package/coverage/cli/src/lib/worktrees/remove-worktrees.ts.html +0 -283
  433. package/coverage/cli/src/tui/boot.tsx.html +0 -265
  434. package/coverage/cli/src/tui/index.html +0 -116
  435. package/coverage/cli/src/tui/screens/command-palette.tsx.html +0 -562
  436. package/coverage/cli/src/tui/screens/index.html +0 -116
  437. package/coverage/cli/src/types.ts.html +0 -283
  438. package/coverage/clover.xml +0 -4488
  439. package/coverage/coverage-final.json +0 -156
  440. package/coverage/favicon.png +0 -0
  441. package/coverage/index.html +0 -1076
  442. package/coverage/prettify.css +0 -1
  443. package/coverage/prettify.js +0 -2
  444. package/coverage/sort-arrow-sprite.png +0 -0
  445. package/coverage/sorter.js +0 -210
  446. package/dist/chunk-DB6CTNBS.js +0 -3
  447. package/dist/chunk-DB6CTNBS.js.map +0 -7
  448. package/dist/chunk-SGR2XAVR.js +0 -164
  449. package/dist/chunk-SGR2XAVR.js.map +0 -7
  450. package/dist/chunk-WA4BQRDC.js +0 -2
  451. package/dist/chunk-WA4BQRDC.js.map +0 -7
  452. package/eslint.config.js +0 -35
  453. package/infra-kit.config.ts +0 -5
  454. package/scripts/build.js +0 -75
  455. package/src/.omc/state/agent-replay-2ac0dcd0-01f7-41a8-a8c9-f2195599817b.jsonl +0 -5
  456. package/src/.omc/state/agent-replay-2ccbd177-0d5d-4d4a-ab94-a22464786221.jsonl +0 -2
  457. package/src/.omc/state/agent-replay-707b4784-2117-4b19-ae68-68a031f0d76d.jsonl +0 -2
  458. package/src/.omc/state/agent-replay-8dd0ad2f-3a90-4158-b9de-ec8e19a7c983.jsonl +0 -11
  459. package/src/.omc/state/agent-replay-c513ef38-cc3e-4a29-9c4c-1e0137245dd5.jsonl +0 -4
  460. package/src/.omc/state/agent-replay-ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a.jsonl +0 -2
  461. package/src/.omc/state/idle-notif-cooldown.json +0 -3
  462. package/src/.omc/state/sessions/0a58307d-2a37-4c69-851c-83a646502d62/pre-tool-advisory-throttle.json +0 -18
  463. package/src/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/mission-state.json +0 -79
  464. package/src/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/pre-tool-advisory-throttle.json +0 -26
  465. package/src/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/subagent-tracking-state.json +0 -26
  466. package/src/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/last-tool-error-state.json +0 -7
  467. package/src/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/mission-state.json +0 -53
  468. package/src/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/pre-tool-advisory-throttle.json +0 -22
  469. package/src/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/subagent-tracking-state.json +0 -17
  470. package/src/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/last-tool-error-state.json +0 -7
  471. package/src/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/mission-state.json +0 -53
  472. package/src/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/pre-tool-advisory-throttle.json +0 -22
  473. package/src/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/subagent-tracking-state.json +0 -17
  474. package/src/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/mission-state.json +0 -79
  475. package/src/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/pre-tool-advisory-throttle.json +0 -22
  476. package/src/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/ralph-state.json +0 -13
  477. package/src/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/subagent-tracking-state.json +0 -26
  478. package/src/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/ultrawork-state.json +0 -11
  479. package/src/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/mission-state.json +0 -79
  480. package/src/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/pre-tool-advisory-throttle.json +0 -22
  481. package/src/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/subagent-tracking-state.json +0 -26
  482. package/src/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/pre-tool-advisory-throttle.json +0 -18
  483. package/src/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/ralph-state.json +0 -13
  484. package/src/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/ultrawork-state.json +0 -11
  485. package/src/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/pre-tool-advisory-throttle.json +0 -14
  486. package/src/commands/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/pre-tool-advisory-throttle.json +0 -14
  487. package/src/commands/.omc/state/sessions/c967c819-3d1c-447b-ab48-56a8448ef9f8/pre-tool-advisory-throttle.json +0 -18
  488. package/src/commands/.omc/state/sessions/f09f401f-56c6-42cd-97be-c742c1956468/pre-tool-advisory-throttle.json +0 -14
  489. package/src/commands/audit/__tests__/audit.test.ts +0 -59
  490. package/src/commands/audit/audit.ts +0 -177
  491. package/src/commands/audit/index.ts +0 -1
  492. package/src/commands/config/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/last-tool-error-state.json +0 -7
  493. package/src/commands/config/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/pre-tool-advisory-throttle.json +0 -18
  494. package/src/commands/config/config.ts +0 -137
  495. package/src/commands/config/index.ts +0 -1
  496. package/src/commands/doctor/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/pre-tool-advisory-throttle.json +0 -14
  497. package/src/commands/doctor/__tests__/agent-files.test.ts +0 -88
  498. package/src/commands/doctor/__tests__/check-ide-installed.test.ts +0 -142
  499. package/src/commands/doctor/__tests__/check-legacy-user-global-config.test.ts +0 -110
  500. package/src/commands/doctor/doctor.ts +0 -576
  501. package/src/commands/doctor/index.ts +0 -1
  502. package/src/commands/env-autoload/env-autoload.ts +0 -24
  503. package/src/commands/env-autoload/index.ts +0 -1
  504. package/src/commands/env-clear/__tests__/env-clear.test.ts +0 -27
  505. package/src/commands/env-clear/env-clear.ts +0 -136
  506. package/src/commands/env-clear/index.ts +0 -1
  507. package/src/commands/env-list/env-list.ts +0 -48
  508. package/src/commands/env-list/index.ts +0 -1
  509. package/src/commands/env-load/__tests__/env-load.test.ts +0 -200
  510. package/src/commands/env-load/env-load.ts +0 -394
  511. package/src/commands/env-load/index.ts +0 -2
  512. package/src/commands/env-status/__tests__/env-status.test.ts +0 -78
  513. package/src/commands/env-status/env-status.ts +0 -108
  514. package/src/commands/env-status/index.ts +0 -1
  515. package/src/commands/gh-merge-dev/gh-merge-dev.ts +0 -203
  516. package/src/commands/gh-merge-dev/index.ts +0 -1
  517. package/src/commands/gh-release-deliver/gh-release-deliver.ts +0 -470
  518. package/src/commands/gh-release-deliver/index.ts +0 -1
  519. package/src/commands/gh-release-deploy-all/gh-release-deploy-all.ts +0 -207
  520. package/src/commands/gh-release-deploy-all/index.ts +0 -1
  521. package/src/commands/gh-release-deploy-selected/gh-release-deploy-selected.ts +0 -303
  522. package/src/commands/gh-release-deploy-selected/index.ts +0 -1
  523. package/src/commands/gh-release-list/gh-release-list.ts +0 -90
  524. package/src/commands/gh-release-list/index.ts +0 -1
  525. package/src/commands/init/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/pre-tool-advisory-throttle.json +0 -18
  526. package/src/commands/init/__tests__/agent-files.test.ts +0 -265
  527. package/src/commands/init/__tests__/migrate-config.test.ts +0 -422
  528. package/src/commands/init/__tests__/migrate-factory-config.test.ts +0 -93
  529. package/src/commands/init/__tests__/seed-user-global-config.test.ts +0 -64
  530. package/src/commands/init/__tests__/shell-body.test.ts +0 -100
  531. package/src/commands/init/agent-files.ts +0 -219
  532. package/src/commands/init/index.ts +0 -8
  533. package/src/commands/init/init.ts +0 -425
  534. package/src/commands/init/migrate-config.ts +0 -378
  535. package/src/commands/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  536. package/src/commands/release-create/__tests__/release-create.test.ts +0 -92
  537. package/src/commands/release-create/index.ts +0 -1
  538. package/src/commands/release-create/release-create.ts +0 -447
  539. package/src/commands/release-desc-edit/index.ts +0 -1
  540. package/src/commands/release-desc-edit/release-desc-edit.ts +0 -227
  541. package/src/commands/vendor-check/__tests__/runtime-isolation.test.ts +0 -71
  542. package/src/commands/vendor-check/__tests__/vendor-check.test.ts +0 -87
  543. package/src/commands/vendor-check/index.ts +0 -1
  544. package/src/commands/vendor-check/vendor-check.ts +0 -127
  545. package/src/commands/vendor-config/__tests__/vendor-config.test.ts +0 -103
  546. package/src/commands/vendor-config/index.ts +0 -1
  547. package/src/commands/vendor-config/vendor-config.ts +0 -162
  548. package/src/commands/vendor-diff/__tests__/vendor-diff.test.ts +0 -74
  549. package/src/commands/vendor-diff/index.ts +0 -1
  550. package/src/commands/vendor-diff/vendor-diff.ts +0 -77
  551. package/src/commands/vendor-manifest/index.ts +0 -1
  552. package/src/commands/vendor-manifest/vendor-manifest.ts +0 -60
  553. package/src/commands/vendor-sync/__tests__/vendor-write.test.ts +0 -86
  554. package/src/commands/vendor-sync/index.ts +0 -1
  555. package/src/commands/vendor-sync/vendor-sync.ts +0 -90
  556. package/src/commands/version/index.ts +0 -1
  557. package/src/commands/version/version.ts +0 -33
  558. package/src/commands/worktrees-add/index.ts +0 -1
  559. package/src/commands/worktrees-add/worktrees-add.ts +0 -366
  560. package/src/commands/worktrees-list/index.ts +0 -1
  561. package/src/commands/worktrees-list/worktrees-list.ts +0 -105
  562. package/src/commands/worktrees-reload/__tests__/reload-cmux.test.ts +0 -119
  563. package/src/commands/worktrees-reload/index.ts +0 -1
  564. package/src/commands/worktrees-reload/worktrees-reload.ts +0 -230
  565. package/src/commands/worktrees-remove/index.ts +0 -1
  566. package/src/commands/worktrees-remove/worktrees-remove.ts +0 -199
  567. package/src/commands/worktrees-sync/index.ts +0 -1
  568. package/src/commands/worktrees-sync/worktrees-sync.ts +0 -198
  569. package/src/dev/__tests__/dev-server-options.test.ts +0 -57
  570. package/src/dev/__tests__/dev-server.test.ts +0 -420
  571. package/src/dev/__tests__/discovery.test.ts +0 -181
  572. package/src/dev/__tests__/fixtures.ts +0 -257
  573. package/src/dev/__tests__/ports.test.ts +0 -98
  574. package/src/dev/__tests__/serverless-local-run.test.ts +0 -533
  575. package/src/dev/dev-server.ts +0 -796
  576. package/src/dev/discovery.ts +0 -229
  577. package/src/dev/interfaces.ts +0 -11
  578. package/src/dev/managed-child.ts +0 -73
  579. package/src/dev/ports.ts +0 -100
  580. package/src/dev/serverless-local-run.ts +0 -329
  581. package/src/dev/turbo-watch.ts +0 -62
  582. package/src/dev/ui-dev.ts +0 -62
  583. package/src/entry/cli.ts +0 -630
  584. package/src/entry/dev-server.ts +0 -103
  585. package/src/entry/index.ts +0 -11
  586. package/src/entry/mcp.ts +0 -43
  587. package/src/integrations/cmux/__tests__/canonicalize-cmux-title.test.ts +0 -56
  588. package/src/integrations/cmux/__tests__/close-workspace-by-title.test.ts +0 -63
  589. package/src/integrations/cmux/__tests__/list-workspace-titles.test.ts +0 -65
  590. package/src/integrations/cmux/__tests__/open-workspace-with-layout.test.ts +0 -127
  591. package/src/integrations/cmux/canonicalize-cmux-title.ts +0 -31
  592. package/src/integrations/cmux/close-workspace-by-title.ts +0 -59
  593. package/src/integrations/cmux/index.ts +0 -5
  594. package/src/integrations/cmux/list-workspace-titles.ts +0 -47
  595. package/src/integrations/cmux/open-workspace-with-layout.ts +0 -80
  596. package/src/integrations/cmux/workspace-title.ts +0 -23
  597. package/src/integrations/cursor/.omc/state/agent-replay-f99d8dad-81d1-4987-8183-62edf0843d0c.jsonl +0 -2
  598. package/src/integrations/cursor/.omc/state/idle-notif-cooldown.json +0 -3
  599. package/src/integrations/cursor/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/pre-tool-advisory-throttle.json +0 -18
  600. package/src/integrations/cursor/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/subagent-tracking-state.json +0 -17
  601. package/src/integrations/cursor/add-folders-to-workspace.ts +0 -84
  602. package/src/integrations/cursor/index.ts +0 -6
  603. package/src/integrations/cursor/launch-cursor.ts +0 -12
  604. package/src/integrations/cursor/open-cursor-workspace.ts +0 -64
  605. package/src/integrations/cursor/reconcile-workspace-folders.ts +0 -90
  606. package/src/integrations/cursor/remove-folders-from-workspace.ts +0 -93
  607. package/src/integrations/cursor/resolve-workspace-path.ts +0 -13
  608. package/src/integrations/doppler/__tests__/doppler-errors.test.ts +0 -76
  609. package/src/integrations/doppler/doppler-cli-auth.ts +0 -31
  610. package/src/integrations/doppler/doppler-errors.ts +0 -88
  611. package/src/integrations/doppler/doppler-project.ts +0 -90
  612. package/src/integrations/doppler/index.ts +0 -4
  613. package/src/integrations/gh/gh-cli-auth/gh-cli-auth.ts +0 -29
  614. package/src/integrations/gh/gh-cli-auth/index.ts +0 -1
  615. package/src/integrations/gh/gh-release-prs/.omc/state/sessions/c6ed6186-1aac-48e0-aa2a-edc6da8e0410/pre-tool-advisory-throttle.json +0 -10
  616. package/src/integrations/gh/gh-release-prs/__tests__/gh-release-prs.test.ts +0 -198
  617. package/src/integrations/gh/gh-release-prs/gh-release-prs.ts +0 -206
  618. package/src/integrations/gh/gh-release-prs/index.ts +0 -2
  619. package/src/integrations/gh/index.ts +0 -3
  620. package/src/integrations/ide/__tests__/ide-facade.test.ts +0 -289
  621. package/src/integrations/ide/add-ide-worktree-folders.ts +0 -77
  622. package/src/integrations/ide/index.ts +0 -6
  623. package/src/integrations/ide/open-ide-workspace.ts +0 -51
  624. package/src/integrations/ide/provider-label.ts +0 -24
  625. package/src/integrations/ide/remove-ide-worktree-folders.ts +0 -145
  626. package/src/integrations/ide/types.ts +0 -41
  627. package/src/integrations/jira/api.ts +0 -325
  628. package/src/integrations/jira/index.ts +0 -19
  629. package/src/integrations/jira/types.ts +0 -85
  630. package/src/integrations/linear/.gitkeep +0 -0
  631. package/src/integrations/zed/__tests__/open-zed-workspace.test.ts +0 -69
  632. package/src/integrations/zed/__tests__/reuse-zed-workspace.test.ts +0 -86
  633. package/src/integrations/zed/add-folders-to-zed-workspace.ts +0 -30
  634. package/src/integrations/zed/index.ts +0 -3
  635. package/src/integrations/zed/open-zed-workspace.ts +0 -51
  636. package/src/integrations/zed/reuse-zed-workspace.ts +0 -57
  637. package/src/lib/assert-never/assert-never.ts +0 -15
  638. package/src/lib/assert-never/index.ts +0 -1
  639. package/src/lib/command-catalog/__tests__/__snapshots__/command-catalog.test.ts.snap +0 -213
  640. package/src/lib/command-catalog/__tests__/command-catalog.test.ts +0 -193
  641. package/src/lib/command-catalog/command-catalog.ts +0 -146
  642. package/src/lib/command-catalog/index.ts +0 -2
  643. package/src/lib/command-echo/__tests__/command-echo.test.ts +0 -127
  644. package/src/lib/command-echo/command-echo.ts +0 -78
  645. package/src/lib/command-echo/index.ts +0 -1
  646. package/src/lib/constants/__tests__/constants.test.ts +0 -182
  647. package/src/lib/constants/constants.ts +0 -167
  648. package/src/lib/constants/index.ts +0 -22
  649. package/src/lib/env-autoload/__tests__/env-autoload.test.ts +0 -327
  650. package/src/lib/env-autoload/env-autoload.ts +0 -373
  651. package/src/lib/env-autoload/index.ts +0 -9
  652. package/src/lib/error-handlers/index.ts +0 -36
  653. package/src/lib/errors/__tests__/is-prompt-cancellation.test.ts +0 -48
  654. package/src/lib/errors/__tests__/operation-error.test.ts +0 -62
  655. package/src/lib/errors/format-zx-error.ts +0 -54
  656. package/src/lib/errors/is-prompt-cancellation.ts +0 -38
  657. package/src/lib/errors/operation-error.ts +0 -80
  658. package/src/lib/git-guard/__tests__/git-guard.test.ts +0 -92
  659. package/src/lib/git-guard/git-guard.ts +0 -55
  660. package/src/lib/git-guard/index.ts +0 -2
  661. package/src/lib/git-utils/__tests__/git-primitives.test.ts +0 -217
  662. package/src/lib/git-utils/__tests__/git-utils.test.ts +0 -49
  663. package/src/lib/git-utils/git-utils.ts +0 -179
  664. package/src/lib/git-utils/index.ts +0 -10
  665. package/src/lib/infra-kit-config/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/pre-tool-advisory-throttle.json +0 -18
  666. package/src/lib/infra-kit-config/__tests__/env-autoload-schema.test.ts +0 -71
  667. package/src/lib/infra-kit-config/__tests__/infra-kit-config.test.ts +0 -504
  668. package/src/lib/infra-kit-config/index.ts +0 -19
  669. package/src/lib/infra-kit-config/infra-kit-config.ts +0 -454
  670. package/src/lib/json-output/__tests__/json-output.test.ts +0 -139
  671. package/src/lib/json-output/index.ts +0 -1
  672. package/src/lib/json-output/json-output.ts +0 -47
  673. package/src/lib/logger/index.ts +0 -40
  674. package/src/lib/managed-block/__tests__/managed-block.test.ts +0 -121
  675. package/src/lib/managed-block/index.ts +0 -8
  676. package/src/lib/managed-block/managed-block.ts +0 -145
  677. package/src/lib/package-config/.omc/state/sessions/dde22a92-a0e9-4948-905d-25c9a812ab35/last-tool-error-state.json +0 -7
  678. package/src/lib/package-config/.omc/state/sessions/dde22a92-a0e9-4948-905d-25c9a812ab35/pre-tool-advisory-throttle.json +0 -10
  679. package/src/lib/package-config/__tests__/package-config.test.ts +0 -95
  680. package/src/lib/package-config/index.ts +0 -3
  681. package/src/lib/package-config/package-config-schema.ts +0 -19
  682. package/src/lib/package-config/package-config.ts +0 -97
  683. package/src/lib/package-validator/__tests__/package-validator.test.ts +0 -263
  684. package/src/lib/package-validator/checks/__tests__/checks.test.ts +0 -130
  685. package/src/lib/package-validator/checks/config-check.ts +0 -30
  686. package/src/lib/package-validator/checks/files-check.ts +0 -29
  687. package/src/lib/package-validator/checks/index.ts +0 -4
  688. package/src/lib/package-validator/checks/scripts-check.ts +0 -23
  689. package/src/lib/package-validator/checks/turbo-check.ts +0 -47
  690. package/src/lib/package-validator/fs-utils.ts +0 -18
  691. package/src/lib/package-validator/index.ts +0 -3
  692. package/src/lib/package-validator/loader/config-loader.ts +0 -77
  693. package/src/lib/package-validator/loader/index.ts +0 -2
  694. package/src/lib/package-validator/loader/package-discovery.ts +0 -98
  695. package/src/lib/package-validator/package-validator.ts +0 -48
  696. package/src/lib/package-validator/types.ts +0 -15
  697. package/src/lib/path-display/index.ts +0 -1
  698. package/src/lib/path-display/path-display.ts +0 -42
  699. package/src/lib/release-id/__tests__/release-id.test.ts +0 -359
  700. package/src/lib/release-id/__tests__/versioned-regression.test.ts +0 -69
  701. package/src/lib/release-id/index.ts +0 -15
  702. package/src/lib/release-id/release-id.ts +0 -258
  703. package/src/lib/release-utils/__tests__/release-utils.test.ts +0 -122
  704. package/src/lib/release-utils/index.ts +0 -15
  705. package/src/lib/release-utils/release-utils.ts +0 -231
  706. package/src/lib/render/__tests__/render.test.ts +0 -48
  707. package/src/lib/render/index.ts +0 -1
  708. package/src/lib/render/render.ts +0 -24
  709. package/src/lib/tool-handler/index.ts +0 -1
  710. package/src/lib/tool-handler/tool-handler.ts +0 -30
  711. package/src/lib/vendor/.omc/state/sessions/f09f401f-56c6-42cd-97be-c742c1956468/pre-tool-advisory-throttle.json +0 -10
  712. package/src/lib/vendor/__tests__/config-schema.test.ts +0 -31
  713. package/src/lib/vendor/__tests__/config.test.ts +0 -63
  714. package/src/lib/vendor/__tests__/factory-config.test.ts +0 -92
  715. package/src/lib/vendor/__tests__/vendor-lib.test.ts +0 -158
  716. package/src/lib/vendor/__tests__/zx-mock.ts +0 -32
  717. package/src/lib/vendor/config-schema.ts +0 -78
  718. package/src/lib/vendor/config.ts +0 -58
  719. package/src/lib/vendor/factory-config-schema.ts +0 -35
  720. package/src/lib/vendor/factory-config.ts +0 -91
  721. package/src/lib/vendor/hash.ts +0 -16
  722. package/src/lib/vendor/index.ts +0 -23
  723. package/src/lib/vendor/manifest.ts +0 -151
  724. package/src/lib/vendor/skip-sets.ts +0 -48
  725. package/src/lib/vendor/sync-ops.ts +0 -290
  726. package/src/lib/vendor/walk.ts +0 -56
  727. package/src/lib/version-utils/__tests__/load-existing-versions.test.ts +0 -37
  728. package/src/lib/version-utils/__tests__/next-version.test.ts +0 -407
  729. package/src/lib/version-utils/index.ts +0 -18
  730. package/src/lib/version-utils/load-existing-versions.ts +0 -86
  731. package/src/lib/version-utils/next-version.ts +0 -283
  732. package/src/lib/version-utils/version-utils.ts +0 -31
  733. package/src/lib/warm-cache/__tests__/warm-cache.test.ts +0 -164
  734. package/src/lib/warm-cache/index.ts +0 -7
  735. package/src/lib/warm-cache/warm-cache.ts +0 -136
  736. package/src/lib/worktrees/__tests__/remove-worktrees.test.ts +0 -167
  737. package/src/lib/worktrees/index.ts +0 -1
  738. package/src/lib/worktrees/remove-worktrees.ts +0 -66
  739. package/src/mcp/prompts/index.ts +0 -3
  740. package/src/mcp/resources/index.ts +0 -3
  741. package/src/mcp/server.ts +0 -27
  742. package/src/mcp/tools/index.ts +0 -21
  743. package/src/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  744. package/src/sanity.test.tsx +0 -8
  745. package/src/tui/__tests__/boot.test.tsx +0 -61
  746. package/src/tui/__tests__/no-react-boundary.test.ts +0 -51
  747. package/src/tui/boot.tsx +0 -60
  748. package/src/tui/screens/__tests__/command-palette.test.tsx +0 -136
  749. package/src/tui/screens/command-palette.tsx +0 -159
  750. package/src/tui/types.ts +0 -8
  751. package/src/types.ts +0 -66
  752. package/tsconfig.json +0 -46
  753. package/tsconfig.tsbuildinfo +0 -1
  754. package/vitest.config.ts +0 -26
  755. package/vitest.setup.ts +0 -1
@@ -1,796 +0,0 @@
1
- /**
2
- * Unified Development Server Runner
3
- *
4
- * Discovers and runs API apps under each `apps/<app>/api` folder that contains `serverless.yml`.
5
- *
6
- * Ports: `{APP}_PORT`, then `process.env.PORT`, then `dev.<app>.port` from infra-kit.json,
7
- * else 3010. URL prefix: `dev.<app>.prefixUrl`, else `/api/v1`.
8
- * Env vars should be provided via secrets manager (e.g. `doppler run -- pnpm dev-server`) or shell.
9
- *
10
- * This module is side-effect free on import: call `run()` (or construct `DevServerRunner`
11
- * directly) to start. Signal handling and process exit are the entry point's responsibility.
12
- *
13
- * Runner messages append to `<cwd>/.infra-kit/dev-server.log`. Lambda / Powertools logs from
14
- * handlers go to stdout.
15
- */
16
- import chokidar from 'chokidar'
17
- import type { FSWatcher } from 'chokidar'
18
- import { exec } from 'node:child_process'
19
- import * as fs from 'node:fs'
20
- import * as path from 'node:path'
21
- import process from 'node:process'
22
- import util from 'node:util'
23
-
24
- import type { DevConfig } from 'src/lib/infra-kit-config'
25
- import { getInfraKitConfig } from 'src/lib/infra-kit-config'
26
-
27
- import {
28
- classifyDistChange,
29
- discoverApiApps as discoverApiAppsBare,
30
- discoverUiApps as discoverUiAppsBare,
31
- findMonorepoRoot,
32
- getAppDistDirs,
33
- getPackageDistDirs,
34
- normalizeAppInclude as normalizeAppIncludePure,
35
- } from './discovery.js'
36
- import type { DiscoveredUiApp } from './discovery.js'
37
- import { findPortConflicts, resolvePort as resolvePortPure, resolvePrefixUrl as resolvePrefixUrlPure } from './ports.js'
38
- import { ServerlessLocalRun } from './serverless-local-run.js'
39
- import { defaultTurboWatchFactory } from './turbo-watch.js'
40
- import type { TurboWatchFactory, TurboWatchHandle } from './turbo-watch.js'
41
- import { defaultUiDevFactory } from './ui-dev.js'
42
- import type { UiDevFactory, UiDevHandle } from './ui-dev.js'
43
-
44
- /** Runner-only log file, resolved under the consumer repo's `.infra-kit/` dir at startup. */
45
- let LOG_FILE_PATH = path.join(process.cwd(), '.infra-kit', 'dev-server.log')
46
-
47
- /** Resolve `<cwd>/.infra-kit/dev-server.log`, ensure the dir exists, and clear the file. */
48
- function initLogFile(): void {
49
- LOG_FILE_PATH = path.join(process.cwd(), '.infra-kit', 'dev-server.log')
50
- fs.mkdirSync(path.dirname(LOG_FILE_PATH), { recursive: true })
51
- fs.writeFileSync(LOG_FILE_PATH, `=== Dev Server Started: ${new Date().toISOString()} ===\n\n`)
52
- }
53
-
54
- const execFn = util.promisify(exec)
55
-
56
- type LogFn = (msg: string, level?: 'info' | 'warn' | 'error' | 'debug') => void
57
-
58
- /**
59
- * Build seam: shells out to turbo by default ({@link launchScript}); injectable so
60
- * tests can run the orchestrator without a real build. `logFn` is optional so both
61
- * the verbose initial build and the terse restart builds keep their current output.
62
- */
63
- export type BuildRunner = (cmd: string, logFn?: LogFn) => Promise<void>
64
-
65
- const launchScript = async (script: string, logFn?: LogFn): Promise<void> => {
66
- try {
67
- const { stderr } = await execFn(script)
68
-
69
- if (stderr && logFn) logFn(` (build) ${stderr.trim()}`, 'debug')
70
- if (stderr && !logFn) console.error('stderr:', stderr)
71
- } catch (error) {
72
- const err = error as { stdout?: string; stderr?: string; message?: string }
73
-
74
- if (logFn && (err.stdout || err.stderr)) {
75
- if (err.stdout) logFn(` stdout: ${err.stdout.trim()}`, 'error')
76
- if (err.stderr) logFn(` stderr: ${err.stderr.trim()}`, 'error')
77
- }
78
-
79
- throw error
80
- }
81
- }
82
-
83
- /** Append raw text to the runner-only log file (the single tee-to-file seam). */
84
- function appendLogFile(text: string): void {
85
- fs.appendFileSync(LOG_FILE_PATH, text)
86
- }
87
-
88
- /** Write a message to the console (routed by level) and tee it to the log file. */
89
- function log(message: string, level: 'info' | 'warn' | 'error' | 'debug' = 'info'): void {
90
- if (level === 'error') {
91
- console.error(message)
92
- } else if (level === 'warn') {
93
- console.warn(message)
94
- } else {
95
- process.stdout.write(`${message}\n`)
96
- }
97
-
98
- appendLogFile(`[${new Date().toISOString()}] [${level.toUpperCase()}] ${message}\n`)
99
- }
100
-
101
- /** Write pre-formatted table lines to stdout and tee them to the log file. */
102
- function logTable(lines: string[]): void {
103
- const output = `${lines.join('\n')}\n`
104
-
105
- process.stdout.write(`${output}\n`)
106
- appendLogFile(`${output}\n`)
107
- }
108
-
109
- /** Center `s` within `width` columns (clamped, so a too-long string is never truncated). */
110
- function center(s: string, width: number): string {
111
- const pad = Math.max(0, width - s.length)
112
- const left = Math.floor(pad / 2)
113
-
114
- return `${' '.repeat(left)}${s}${' '.repeat(pad - left)}`
115
- }
116
-
117
- /**
118
- * Render a box-drawn table whose column widths are computed from the longest cell in
119
- * each column, so every emitted line shares one width regardless of app-name length
120
- * (the old fixed `padEnd` misaligned on long names). Borders are generated from the
121
- * same widths, so they always match the rows.
122
- */
123
- function renderTable(title: string, headers: string[], rows: string[][]): string[] {
124
- const widths = headers.map((header, i) => {
125
- return Math.max(
126
- header.length,
127
- ...rows.map((row) => {
128
- return (row[i] ?? '').length
129
- }),
130
- )
131
- })
132
- // Grow the last column if the title is wider than the columns, so the title band never clips.
133
- const columnsInner =
134
- widths.reduce((sum, w) => {
135
- return sum + w + 2
136
- }, 0) +
137
- (widths.length - 1)
138
-
139
- const lastIdx = widths.length - 1
140
-
141
- if (lastIdx >= 0 && title.length + 2 > columnsInner) {
142
- widths[lastIdx] = (widths[lastIdx] ?? 0) + (title.length + 2 - columnsInner)
143
- }
144
-
145
- const inner =
146
- widths.reduce((sum, w) => {
147
- return sum + w + 2
148
- }, 0) +
149
- (widths.length - 1)
150
- const blocks = widths.map((w) => {
151
- return '─'.repeat(w + 2)
152
- })
153
- const rowLine = (cells: string[]): string => {
154
- return `β”‚ ${cells
155
- .map((c, i) => {
156
- return (c ?? '').padEnd(widths[i]!)
157
- })
158
- .join(' β”‚ ')} β”‚`
159
- }
160
-
161
- return [
162
- '',
163
- `β”Œ${'─'.repeat(inner)}┐`,
164
- `β”‚${center(title, inner)}β”‚`,
165
- `β”œ${blocks.join('┬')}─`,
166
- rowLine(headers),
167
- `β”œ${blocks.join('β”Ό')}─`,
168
- ...rows.map(rowLine),
169
- `β””${blocks.join('β”΄')}β”˜`,
170
- '',
171
- ]
172
- }
173
-
174
- interface IApiAppConfig {
175
- /** App folder name (e.g. backoffice, client) */
176
- name: string
177
- /** Package name from package.json (e.g. sls-trvl-client) */
178
- packageName: string
179
- path: string
180
- port: number
181
- prefixUrl: string
182
- }
183
-
184
- /**
185
- * Runner options, parsed by the CLI entry point (`--watch`, `--app`) and threaded
186
- * through `run()`. The entry owns flag parsing; the runner never reads `process.argv`
187
- * itself. App selection is `--app` only; ports come from env/config (see `resolvePort`).
188
- */
189
- export interface DevServerOptions {
190
- /**
191
- * Watch mode: start a long-lived `turbo watch build` engine (incremental rebuilds
192
- * + dependency fan-out) and restart the affected server(s) when compiled `dist/`
193
- * changes. Without it, `dev` builds and serves once and exits on signal.
194
- */
195
- watch?: boolean
196
- /** Only run these app folder names (null/empty = all discovered). Filters BOTH api and ui apps. */
197
- include?: string[] | null
198
- /**
199
- * Also run frontends: discover `apps/<app>/ui` with a `dev` script and start them via one
200
- * delegated `turbo run dev` child (streamed to the terminal). Default (unset) = api-only,
201
- * preserving today's behavior.
202
- */
203
- ui?: boolean
204
- }
205
-
206
- interface IAppServer {
207
- app: IApiAppConfig
208
- server: ServerlessLocalRun
209
- }
210
-
211
- export class DevServerRunner {
212
- private readonly monorepoRoot: string
213
- private readonly appServers: IAppServer[] = []
214
- private watchDebounceTimers: Map<string, ReturnType<typeof setTimeout>> = new Map()
215
- /** Active chokidar watcher in `--watch` mode; closed on {@link shutdown}. */
216
- private watcher: FSWatcher | null = null
217
- private static readonly WATCH_DEBOUNCE_MS = 400
218
- /** Serialized restarts so rapid saves never bind :port while the previous server is still shutting down. */
219
- private restartWorkChain: Promise<void> = Promise.resolve()
220
- private static readonly PORT_RELEASE_DELAY_MS = 200
221
- private readonly options: DevServerOptions
222
- /** Build runner seam β€” real turbo shell-out by default, injectable for tests. */
223
- private readonly runBuild: BuildRunner
224
- /** `turbo watch` spawn seam β€” real detached child by default, injectable for tests. */
225
- private readonly turboWatchFactory: TurboWatchFactory
226
- /** Live `turbo watch` engine in `--watch` mode; reaped on {@link shutdown}. */
227
- private turboWatch: TurboWatchHandle | null = null
228
- /** `turbo run dev` (frontends) spawn seam β€” real detached child by default, injectable for tests. */
229
- private readonly uiDevFactory: UiDevFactory
230
- /** Live `turbo run dev` frontend engine in `--ui` mode; reaped on {@link shutdown}. */
231
- private uiDev: UiDevHandle | null = null
232
-
233
- constructor(
234
- options: DevServerOptions = {},
235
- runBuild: BuildRunner = launchScript,
236
- turboWatchFactory: TurboWatchFactory = defaultTurboWatchFactory,
237
- uiDevFactory: UiDevFactory = defaultUiDevFactory,
238
- ) {
239
- this.options = options
240
- this.runBuild = runBuild
241
- this.turboWatchFactory = turboWatchFactory
242
- this.uiDevFactory = uiDevFactory
243
- initLogFile()
244
-
245
- // Walk up from the consumer repo cwd to the monorepo root.
246
- this.monorepoRoot = findMonorepoRoot(process.cwd())
247
- log(`Monorepo root: ${this.monorepoRoot}`)
248
-
249
- if (process.env.DOPPLER_PROJECT != null || process.env.DOPPLER_ENVIRONMENT != null) {
250
- log('πŸ” Doppler env detected (DOPPLER_PROJECT / DOPPLER_ENVIRONMENT)', 'debug')
251
- }
252
- }
253
-
254
- /**
255
- * Discover API apps and resolve each app's port + URL prefix. Delegates bare
256
- * filesystem discovery to {@link discoverApiAppsBare} and per-app resolution to
257
- * the pure `resolvePort` / `resolvePrefixUrl`, preserving the original behavior.
258
- */
259
- private discoverApiApps(devConfig: DevConfig): IApiAppConfig[] {
260
- return discoverApiAppsBare(this.monorepoRoot).map((app) => {
261
- return {
262
- ...app,
263
- port: this.resolvePort(app.name, devConfig),
264
- prefixUrl: this.resolvePrefixUrl(app.name, devConfig),
265
- }
266
- })
267
- }
268
-
269
- /**
270
- * Read the `dev` section from the resolved infra-kit config. Defensive: any
271
- * failure (not in an infra-kit project, missing/invalid config) resolves to an
272
- * empty map so the dev-server always falls back to env vars + built-in defaults
273
- * rather than refusing to start.
274
- */
275
- private async loadDevConfig(): Promise<DevConfig> {
276
- try {
277
- const config = await getInfraKitConfig()
278
-
279
- return config.dev ?? {}
280
- } catch {
281
- return {}
282
- }
283
- }
284
-
285
- /** Thin delegator to the pure {@link normalizeAppIncludePure} over the runner's `--app` list. */
286
- private normalizeAppInclude(): string[] | null {
287
- return normalizeAppIncludePure(this.options.include)
288
- }
289
-
290
- /** Thin delegator to the pure {@link resolvePortPure}, threading env + config. */
291
- private resolvePort(appName: string, devConfig: DevConfig): number {
292
- return resolvePortPure(appName, process.env, devConfig)
293
- }
294
-
295
- /** Thin delegator to the pure {@link resolvePrefixUrlPure}. */
296
- private resolvePrefixUrl(appName: string, devConfig: DevConfig): string {
297
- return resolvePrefixUrlPure(appName, devConfig)
298
- }
299
-
300
- public async start(): Promise<void> {
301
- const include = this.normalizeAppInclude()
302
- const watch = this.options.watch ?? false
303
- const devConfig = await this.loadDevConfig()
304
-
305
- process.env.POWERTOOLS_DEV ??= 'true'
306
- process.env.LOG_LEVEL ??= 'DEBUG'
307
-
308
- log('πŸš€ Starting Development Server Runner')
309
-
310
- if (watch) {
311
- log('πŸ‘€ Watch mode: will rebuild and restart on file save')
312
- }
313
- log(`πŸ“‚ Monorepo root: ${this.monorepoRoot}`)
314
-
315
- const apps = this.selectApps(this.discoverApiApps(devConfig), include)
316
- const uiApps = (this.options.ui ?? false) ? this.selectUiApps(include) : []
317
-
318
- if (apps.length === 0 && uiApps.length === 0) {
319
- log(this.options.ui ? '⚠️ No API or UI apps found to run' : '⚠️ No API apps found to run', 'warn')
320
-
321
- return
322
- }
323
-
324
- // Build the API boot closure (dist must exist before servers import handlers).
325
- if (apps.length > 0) {
326
- log(`πŸ“¦ Discovered ${apps.length} API app(s): ${this.formatAppList(apps)}`)
327
- this.assertNoPortConflicts(apps)
328
- await this.buildApps(apps, watch)
329
- }
330
-
331
- // Warm the UI dependency closure BEFORE spawning any persistent child (turbo watch / turbo run
332
- // dev), so both see a warm cache and the cold-cache double-build race can't corrupt shared dist.
333
- if (uiApps.length > 0) {
334
- await this.buildUiApps(uiApps)
335
- }
336
-
337
- if (apps.length > 0) {
338
- await this.startAllApps(apps)
339
- log('πŸŽ‰ All servers started!')
340
- this.printServerTable(apps)
341
- this.printRouteDump()
342
- log(
343
- `πŸ“ Handler logs (AWS Powertools, logger.info/debug, etc.) β†’ this terminal. Runner-only file: ${LOG_FILE_PATH}`,
344
- )
345
- }
346
-
347
- if (watch && this.appServers.length > 0) {
348
- this.setupWatch(apps)
349
- }
350
-
351
- // Frontends last: their delegated `turbo run dev` streams raw to the terminal below the BE table.
352
- if (uiApps.length > 0) {
353
- this.startUiDev(uiApps)
354
- }
355
- }
356
-
357
- /** Discover `apps/<app>/ui` frontends (with a `dev` script), applying the `--app` include filter. */
358
- private selectUiApps(include: string[] | null): DiscoveredUiApp[] {
359
- const uiApps = discoverUiAppsBare(this.monorepoRoot)
360
- const selected = include
361
- ? uiApps.filter((a) => {
362
- return include.includes(a.name)
363
- })
364
- : uiApps
365
-
366
- if (selected.length > 0) {
367
- log(
368
- `🎨 Discovered ${selected.length} UI app(s): ${selected
369
- .map((a) => {
370
- return a.name
371
- })
372
- .join(', ')}`,
373
- )
374
- }
375
-
376
- return selected
377
- }
378
-
379
- /**
380
- * Warm ONLY each UI's dependency closure (`<pkg>^...` β€” deps, excluding the UI itself, so no full
381
- * production `vite build`) with a cache-friendly (non-`--force`) turbo build. Non-fatal: if it
382
- * fails, `turbo run dev`'s own `^build` retries and surfaces the error in its streamed output.
383
- */
384
- private async buildUiApps(uiApps: DiscoveredUiApp[]): Promise<void> {
385
- const filters = uiApps
386
- .map((a) => {
387
- return `--filter=${a.packageName}^...`
388
- })
389
- .join(' ')
390
-
391
- log('πŸ”¨ Warming UI dependency build cache (turbo)...')
392
- try {
393
- await this.runBuild(`pnpm exec turbo run build ${filters} --env-mode=loose`, log)
394
- log('βœ… UI deps built')
395
- } catch (error) {
396
- log(`⚠️ UI dep warm build failed (continuing; turbo run dev will build): ${String(error)}`, 'warn')
397
- }
398
- }
399
-
400
- /**
401
- * Start the frontends via ONE delegated `turbo run dev` child (streamed to the terminal). Reaped
402
- * on {@link shutdown}. Concurrency β‰₯ the persistent UI `dev` task count (turbo hard-errors otherwise).
403
- */
404
- private startUiDev(uiApps: DiscoveredUiApp[]): void {
405
- const names = uiApps
406
- .map((a) => {
407
- return a.name
408
- })
409
- .join(', ')
410
-
411
- log(`🎨 Starting ${uiApps.length} UI dev server(s) via \`turbo run dev\`: ${names}`)
412
- log(' (framework dev output streams below; each prints its own local URL)')
413
-
414
- this.uiDev = this.uiDevFactory({
415
- packageNames: uiApps.map((a) => {
416
- return a.packageName
417
- }),
418
- cwd: process.cwd(),
419
- concurrency: Math.max(uiApps.length + 4, 12),
420
- })
421
- }
422
-
423
- /** Render an app list as `name:port, name:port` for log lines. */
424
- private formatAppList(apps: Array<{ name: string; port: number }>): string {
425
- return apps
426
- .map((a) => {
427
- return `${a.name}:${a.port}`
428
- })
429
- .join(', ')
430
- }
431
-
432
- /** Apply the `--app` include filter (logging it when applied). */
433
- private selectApps(apps: IApiAppConfig[], include: string[] | null): IApiAppConfig[] {
434
- if (!include) {
435
- return apps
436
- }
437
-
438
- log(`πŸ” Filtering to apps: ${include.join(', ')}`)
439
-
440
- return apps.filter((app) => {
441
- return include.includes(app.name)
442
- })
443
- }
444
-
445
- /** Throw (after logging remediation tips) when two apps resolve to the same port. */
446
- private assertNoPortConflicts(apps: IApiAppConfig[]): void {
447
- const { duplicatePorts, conflictingApps } = findPortConflicts(apps)
448
-
449
- if (duplicatePorts.length === 0) {
450
- return
451
- }
452
-
453
- log(`⚠️ Port conflict detected! ${duplicatePorts.join(', ')}`, 'error')
454
- log(`Conflicting apps: ${this.formatAppList(conflictingApps)}`, 'error')
455
- log('\nπŸ’‘ Tip: give each app a distinct port via `{APP}_PORT` env (e.g. `CLIENT_PORT=`,', 'error')
456
- log(' `SEARCH_ENGINE_PORT=`) or `dev.<app>.port` in infra-kit.json; or run a subset with', 'error')
457
- log(' `--app=<name>,<name>`.\n', 'error')
458
- throw new Error(`Port conflict detected: ${duplicatePorts.join(', ')}`)
459
- }
460
-
461
- /** Build every app via turbo; rethrows the build error after logging stdout/stderr. */
462
- private async buildApps(apps: IApiAppConfig[], watch: boolean): Promise<void> {
463
- const filters = apps
464
- .map((a) => {
465
- return `--filter=${a.packageName}`
466
- })
467
- .join(' ')
468
- // With `--watch`, always bypass Turbo cache so `tsc` runs and `dist/` matches disk (otherwise watch restarts can be no-ops).
469
- const buildCmd = `pnpm exec turbo run build ${filters} --env-mode=loose${watch ? ' --force' : ''}`
470
-
471
- log('πŸ”¨ Building API apps (turbo)...')
472
- try {
473
- await this.runBuild(buildCmd, log)
474
- log('βœ… Build complete')
475
- } catch (buildError) {
476
- log(`❌ Build failed: ${String(buildError)}`, 'error')
477
- if (buildError instanceof Error && buildError.message) {
478
- log(` ${buildError.message}`, 'error')
479
- }
480
- const err = buildError as { stdout?: string; stderr?: string }
481
-
482
- if (err.stdout) log(` stdout: ${err.stdout.trim()}`, 'error')
483
- if (err.stderr) log(` stderr: ${err.stderr.trim()}`, 'error')
484
- throw buildError
485
- }
486
- }
487
-
488
- /**
489
- * Start every app concurrently, collecting the ones that boot; per-app failures are logged,
490
- * not fatal. Safe to parallelize because each app has a distinct port (guarded up-front) and a
491
- * distinct `ServerlessLocalRun`, and `startOneApp` no longer mutates cwd. Push order into
492
- * `appServers` is non-deterministic but nothing depends on it (the table renders from `apps`).
493
- */
494
- private async startAllApps(apps: IApiAppConfig[]): Promise<void> {
495
- await Promise.all(
496
- apps.map(async (app) => {
497
- try {
498
- const server = await this.startOneApp(app)
499
-
500
- if (server) {
501
- this.appServers.push({ app, server })
502
- }
503
- } catch (error) {
504
- log(`❌ Failed to start ${app.name}: ${String(error)}`, 'error')
505
- }
506
- }),
507
- )
508
- }
509
-
510
- private async startOneApp(app: IApiAppConfig): Promise<ServerlessLocalRun | null> {
511
- log(`πŸ”„ Starting ${app.name}...`)
512
-
513
- // No `process.chdir` here: `ServerlessLocalRun` reads `serverless.yml` and imports the
514
- // compiled handler from `controllersPath` (absolute), so the runner never mutates cwd β€”
515
- // which is what makes concurrent boot/restart safe.
516
- const server = new ServerlessLocalRun({
517
- controllersPath: app.path,
518
- prefixUrl: app.prefixUrl,
519
- port: app.port,
520
- appName: app.name,
521
- })
522
-
523
- await server.start()
524
- log(`βœ… ${app.name} started on port ${app.port}`)
525
-
526
- return server
527
- }
528
-
529
- /** Run restart jobs one after another (watch can fire faster than close + listen). */
530
- private scheduleRestartWork(work: () => Promise<void>): Promise<void> {
531
- const run = this.restartWorkChain.then(
532
- () => {
533
- return work()
534
- },
535
- () => {
536
- return work()
537
- },
538
- )
539
-
540
- this.restartWorkChain = run.catch(() => {})
541
-
542
- return run
543
- }
544
-
545
- private async delayPortRelease(): Promise<void> {
546
- await new Promise((r) => {
547
- return setTimeout(r, DevServerRunner.PORT_RELEASE_DELAY_MS)
548
- })
549
- }
550
-
551
- /**
552
- * Schedule a restart of the given apps (1 or N), serialized against other restarts via
553
- * {@link scheduleRestartWork}. A single-app dist change passes `[app]`; a dependency-package
554
- * dist change passes every running app. The `turbo watch` engine has already rebuilt `dist/`,
555
- * so the runner only bounces the fastify server(s) β€” no build here.
556
- */
557
- private restart(apps: IApiAppConfig[]): Promise<void> {
558
- return this.scheduleRestartWork(() => {
559
- return this.runRestart(apps)
560
- })
561
- }
562
-
563
- /** Resolve the requested apps to their live server slots (dropping any not running). */
564
- private resolveRestartTargets(apps: IApiAppConfig[]): Array<{ idx: number; app: IApiAppConfig }> {
565
- return apps
566
- .map((app) => {
567
- return {
568
- idx: this.appServers.findIndex((e) => {
569
- return e.app.name === app.name
570
- }),
571
- app,
572
- }
573
- })
574
- .filter((t) => {
575
- return t.idx >= 0
576
- })
577
- }
578
-
579
- private async runRestart(apps: IApiAppConfig[]): Promise<void> {
580
- const targets = this.resolveRestartTargets(apps)
581
-
582
- if (targets.length === 0) return
583
-
584
- const label = targets.length === 1 ? targets[0]!.app.name : `${targets.length} apps`
585
-
586
- log(`πŸ”„ Restarting ${label}...`)
587
- await Promise.all(
588
- targets.map(async ({ idx }) => {
589
- try {
590
- await this.appServers[idx]!.server.close()
591
- } catch (err) {
592
- log(` Close warning: ${String(err)}`, 'debug')
593
- }
594
- }),
595
- )
596
-
597
- await this.delayPortRelease()
598
-
599
- await Promise.all(
600
- targets.map(async ({ idx, app }) => {
601
- try {
602
- const newServer = await this.startOneApp(app)
603
-
604
- if (newServer) {
605
- this.appServers[idx] = { app, server: newServer }
606
- }
607
- } catch (error) {
608
- log(`❌ Failed to restart ${app.name}: ${String(error)}`, 'error')
609
- }
610
- }),
611
- )
612
- log(`βœ… Restarted ${label}`)
613
- }
614
-
615
- /**
616
- * Start the long-lived `turbo watch build` engine, then watch compiled `dist/` output to
617
- * trigger restarts. A change under an app's `dist` restarts that app; a change under any
618
- * `packages/<pkg>/dist` restarts every app (editing a shared lib rewrites only the lib's
619
- * `dist`, so a package-dist change is the lib-rebuild signal). Restarts are build-less β€”
620
- * the engine already rebuilt `dist/`.
621
- */
622
- private setupWatch(apps: IApiAppConfig[]): void {
623
- this.turboWatch = this.turboWatchFactory({
624
- packageNames: apps.map((a) => {
625
- return a.packageName
626
- }),
627
- cwd: process.cwd(),
628
- logFile: LOG_FILE_PATH,
629
- })
630
- log('πŸ‘€ Watch mode: started `turbo watch build` engine; watching dist output')
631
-
632
- const appDistDirs = getAppDistDirs(apps)
633
- const packageDistDirs = getPackageDistDirs(this.monorepoRoot)
634
- const allDistDirs = [...appDistDirs, ...packageDistDirs]
635
-
636
- if (allDistDirs.length === 0) {
637
- log('⚠️ No app or package dist directories found to watch (were they built?)', 'warn')
638
-
639
- return
640
- }
641
-
642
- const usePoll = process.env.DEV_SERVER_CHOKIDAR_POLL === '1'
643
-
644
- const watcher = chokidar.watch(allDistDirs, {
645
- ignoreInitial: true,
646
- awaitWriteFinish: { stabilityThreshold: 200, pollInterval: 100 },
647
- // Ignore tsc's incremental bookkeeping + sourcemaps: they rewrite on every build
648
- // (even content-identical ones) and would bounce fastify onto no real change.
649
- ignored: (p: string): boolean => {
650
- return p.endsWith('.tsbuildinfo') || p.endsWith('.map')
651
- },
652
- ...(usePoll ? { usePolling: true, interval: 400 } : {}),
653
- })
654
-
655
- this.watcher = watcher
656
-
657
- if (usePoll) {
658
- log('πŸ‘€ chokidar: usePolling enabled (DEV_SERVER_CHOKIDAR_POLL=1)', 'debug')
659
- }
660
-
661
- watcher.on('change', (filePath: string) => {
662
- log(`πŸ‘€ dist change detected: ${filePath}`, 'debug')
663
-
664
- const change = classifyDistChange(filePath, appDistDirs, packageDistDirs)
665
-
666
- if (change.kind === 'package') {
667
- // A dependency package's dist was rebuilt β€” restart every app.
668
- this.scheduleDebounced('__packages__', () => {
669
- return this.restart(apps)
670
- })
671
-
672
- return
673
- }
674
-
675
- const app = apps.find((a) => {
676
- return path.join(a.path, 'dist') === change.app
677
- })
678
-
679
- if (!app) return
680
-
681
- this.scheduleDebounced(app.name, () => {
682
- return this.restart([app])
683
- })
684
- })
685
-
686
- log(`πŸ‘€ Watching ${appDistDirs.length} app dist + ${packageDistDirs.length} package dist dir(s) for changes...`)
687
- }
688
-
689
- /**
690
- * Debounce a restart under `key`: cancel any pending timer for the same key and start
691
- * a fresh {@link DevServerRunner.WATCH_DEBOUNCE_MS} timer, so a burst of saves collapses
692
- * into one restart. Errors from the scheduled work are logged, never thrown.
693
- */
694
- private scheduleDebounced(key: string, work: () => Promise<void>): void {
695
- const existing = this.watchDebounceTimers.get(key)
696
-
697
- if (existing) clearTimeout(existing)
698
-
699
- const timer = setTimeout(() => {
700
- this.watchDebounceTimers.delete(key)
701
- work().catch((err) => {
702
- log(`Restart error (${key}): ${String(err)}`, 'error')
703
- })
704
- }, DevServerRunner.WATCH_DEBOUNCE_MS)
705
-
706
- this.watchDebounceTimers.set(key, timer)
707
- }
708
-
709
- /**
710
- * Print the running-server table. The `Base URL` column carries each app's
711
- * `prefixUrl` (e.g. `/api/v1`) so it is copy-pasteable β€” the old table showed a bare
712
- * `http://localhost:<port>` that 404s against prefixed handler routes. A `Health`
713
- * column surfaces the unprefixed `/__health` liveness URL.
714
- */
715
- private printServerTable(apps: IApiAppConfig[]): void {
716
- const rows = apps.map((app) => {
717
- return [
718
- app.name,
719
- String(app.port),
720
- `http://localhost:${app.port}${app.prefixUrl}`,
721
- `http://localhost:${app.port}/__health`,
722
- ]
723
- })
724
-
725
- logTable(renderTable('πŸ–₯️ Running Servers', ['App', 'Port', 'Base URL', 'Health'], rows))
726
- }
727
-
728
- /**
729
- * Dump each running app's registered `METHOD /path` routes at startup so the
730
- * emulator is self-describing (no need to open `serverless.yml` to learn the routes).
731
- * Reads the live route set via {@link ServerlessLocalRun.getRegisteredRoutes}.
732
- */
733
- private printRouteDump(): void {
734
- if (this.appServers.length === 0) return
735
-
736
- log('πŸ—ΊοΈ Registered routes:')
737
- for (const { app, server } of this.appServers) {
738
- const routes = server.getRegisteredRoutes()
739
-
740
- log(` ${app.name} (${routes.length}): ${routes.length > 0 ? routes.join(', ') : '(none)'}`)
741
- }
742
- }
743
-
744
- /**
745
- * Stop watching, cancel any pending debounced restart, and close all running servers.
746
- * Does not exit the process β€” the entry point owns exit.
747
- */
748
- public async shutdown(): Promise<void> {
749
- log('πŸ›‘ Shutting down all servers...')
750
-
751
- // Reap the long-lived engines FIRST (group SIGTERM→SIGKILL) so neither writes fresh dist nor
752
- // holds a port mid-teardown. Reaped here (not only in the entry signal handler) because tests
753
- // and any non-signal caller invoke shutdown() directly. Awaited so the SIGKILL escalation
754
- // completes before the entry point's `process.exit`.
755
- if (this.turboWatch) {
756
- await this.turboWatch.kill()
757
- this.turboWatch = null
758
- }
759
-
760
- if (this.uiDev) {
761
- await this.uiDev.kill()
762
- this.uiDev = null
763
- }
764
-
765
- for (const timer of this.watchDebounceTimers.values()) {
766
- clearTimeout(timer)
767
- }
768
- this.watchDebounceTimers.clear()
769
-
770
- if (this.watcher) {
771
- await this.watcher.close()
772
- this.watcher = null
773
- }
774
-
775
- for (const { server } of this.appServers) {
776
- try {
777
- await server.close()
778
- } catch {
779
- // ignore
780
- }
781
- }
782
- log(`πŸ“ Logs saved to: ${LOG_FILE_PATH}`)
783
- }
784
- }
785
-
786
- /**
787
- * Construct a {@link DevServerRunner}, start it, and return the instance so the caller
788
- * (the CLI entry point) can wire signal handlers to `shutdown()` and own process exit.
789
- */
790
- export async function run(options: DevServerOptions = {}): Promise<DevServerRunner> {
791
- const runner = new DevServerRunner(options)
792
-
793
- await runner.start()
794
-
795
- return runner
796
- }