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,1447 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for cli/src/lib/infra-kit-config/infra-kit-config.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../../index.html">All files</a> / <a href="index.html">cli/src/lib/infra-kit-config</a> infra-kit-config.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">97.97% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>97/99</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">91.17% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>31/34</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>11/11</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">98.94% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>94/95</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-yes">19x</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-neutral">&nbsp;</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-yes">19x</span>
537
- <span class="cline-any cline-yes">19x</span>
538
- <span class="cline-any cline-yes">19x</span>
539
- <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-yes">19x</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-neutral">&nbsp;</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-yes">19x</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-yes">19x</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-yes">19x</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-yes">19x</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-yes">19x</span>
569
- <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-yes">19x</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-yes">19x</span>
581
- <span class="cline-any cline-neutral">&nbsp;</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-yes">19x</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-neutral">&nbsp;</span>
587
- <span class="cline-any cline-neutral">&nbsp;</span>
588
- <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-neutral">&nbsp;</span>
591
- <span class="cline-any cline-yes">19x</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
- <span class="cline-any cline-yes">19x</span>
599
- <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-yes">19x</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-yes">19x</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-yes">19x</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-neutral">&nbsp;</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-yes">19x</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-yes">19x</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-neutral">&nbsp;</span>
644
- <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-yes">19x</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-yes">19x</span>
661
- <span class="cline-any cline-yes">24x</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-yes">2x</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-yes">2x</span>
666
- <span class="cline-any cline-yes">4x</span>
667
- <span class="cline-any cline-yes">1x</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-neutral">&nbsp;</span>
673
- <span class="cline-any cline-yes">1x</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-yes">3x</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-yes">19x</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-neutral">&nbsp;</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-neutral">&nbsp;</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-neutral">&nbsp;</span>
695
- <span class="cline-any cline-neutral">&nbsp;</span>
696
- <span class="cline-any cline-neutral">&nbsp;</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-neutral">&nbsp;</span>
700
- <span class="cline-any cline-neutral">&nbsp;</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-neutral">&nbsp;</span>
704
- <span class="cline-any cline-neutral">&nbsp;</span>
705
- <span class="cline-any cline-neutral">&nbsp;</span>
706
- <span class="cline-any cline-yes">19x</span>
707
- <span class="cline-any cline-yes">7x</span>
708
- <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-yes">7x</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-yes">6x</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-neutral">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</span>
717
- <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-yes">19x</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-neutral">&nbsp;</span>
721
- <span class="cline-any cline-neutral">&nbsp;</span>
722
- <span class="cline-any cline-neutral">&nbsp;</span>
723
- <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-neutral">&nbsp;</span>
725
- <span class="cline-any cline-neutral">&nbsp;</span>
726
- <span class="cline-any cline-neutral">&nbsp;</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-yes">19x</span>
730
- <span class="cline-any cline-yes">8x</span>
731
- <span class="cline-any cline-neutral">&nbsp;</span>
732
- <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-neutral">&nbsp;</span>
734
- <span class="cline-any cline-neutral">&nbsp;</span>
735
- <span class="cline-any cline-neutral">&nbsp;</span>
736
- <span class="cline-any cline-neutral">&nbsp;</span>
737
- <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-neutral">&nbsp;</span>
740
- <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-neutral">&nbsp;</span>
743
- <span class="cline-any cline-neutral">&nbsp;</span>
744
- <span class="cline-any cline-neutral">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-neutral">&nbsp;</span>
747
- <span class="cline-any cline-neutral">&nbsp;</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-yes">19x</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-neutral">&nbsp;</span>
753
- <span class="cline-any cline-neutral">&nbsp;</span>
754
- <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-neutral">&nbsp;</span>
760
- <span class="cline-any cline-neutral">&nbsp;</span>
761
- <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-neutral">&nbsp;</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-yes">19x</span>
766
- <span class="cline-any cline-yes">68x</span>
767
- <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-yes">68x</span>
770
- <span class="cline-any cline-yes">68x</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-yes">68x</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-neutral">&nbsp;</span>
775
- <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-neutral">&nbsp;</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-neutral">&nbsp;</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-neutral">&nbsp;</span>
793
- <span class="cline-any cline-neutral">&nbsp;</span>
794
- <span class="cline-any cline-neutral">&nbsp;</span>
795
- <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-neutral">&nbsp;</span>
797
- <span class="cline-any cline-yes">19x</span>
798
- <span class="cline-any cline-yes">29x</span>
799
- <span class="cline-any cline-neutral">&nbsp;</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-yes">29x</span>
803
- <span class="cline-any cline-yes">29x</span>
804
- <span class="cline-any cline-neutral">&nbsp;</span>
805
- <span class="cline-any cline-yes">4x</span>
806
- <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-neutral">&nbsp;</span>
809
- <span class="cline-any cline-yes">4x</span>
810
- <span class="cline-any cline-neutral">&nbsp;</span>
811
- <span class="cline-any cline-yes">4x</span>
812
- <span class="cline-any cline-yes">1x</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-neutral">&nbsp;</span>
816
- <span class="cline-any cline-neutral">&nbsp;</span>
817
- <span class="cline-any cline-yes">3x</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span>
819
- <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-yes">25x</span>
821
- <span class="cline-any cline-neutral">&nbsp;</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-yes">25x</span>
826
- <span class="cline-any cline-neutral">&nbsp;</span>
827
- <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-yes">29x</span>
832
- <span class="cline-any cline-yes">3x</span>
833
- <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-yes">22x</span>
836
- <span class="cline-any cline-neutral">&nbsp;</span>
837
- <span class="cline-any cline-neutral">&nbsp;</span>
838
- <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-neutral">&nbsp;</span>
840
- <span class="cline-any cline-neutral">&nbsp;</span>
841
- <span class="cline-any cline-neutral">&nbsp;</span>
842
- <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-neutral">&nbsp;</span>
844
- <span class="cline-any cline-neutral">&nbsp;</span>
845
- <span class="cline-any cline-yes">22x</span>
846
- <span class="cline-any cline-neutral">&nbsp;</span>
847
- <span class="cline-any cline-yes">22x</span>
848
- <span class="cline-any cline-yes">54x</span>
849
- <span class="cline-any cline-neutral">&nbsp;</span>
850
- <span class="cline-any cline-yes">48x</span>
851
- <span class="cline-any cline-neutral">&nbsp;</span>
852
- <span class="cline-any cline-yes">19x</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-yes">16x</span>
856
- <span class="cline-any cline-neutral">&nbsp;</span>
857
- <span class="cline-any cline-yes">16x</span>
858
- <span class="cline-any cline-yes">1x</span>
859
- <span class="cline-any cline-neutral">&nbsp;</span>
860
- <span class="cline-any cline-neutral">&nbsp;</span>
861
- <span class="cline-any cline-yes">15x</span>
862
- <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-yes">15x</span>
864
- <span class="cline-any cline-neutral">&nbsp;</span>
865
- <span class="cline-any cline-neutral">&nbsp;</span>
866
- <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-neutral">&nbsp;</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-neutral">&nbsp;</span>
871
- <span class="cline-any cline-neutral">&nbsp;</span>
872
- <span class="cline-any cline-neutral">&nbsp;</span>
873
- <span class="cline-any cline-yes">19x</span>
874
- <span class="cline-any cline-yes">99x</span>
875
- <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-neutral">&nbsp;</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-neutral">&nbsp;</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-neutral">&nbsp;</span>
882
- <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-yes">19x</span>
885
- <span class="cline-any cline-yes">54x</span>
886
- <span class="cline-any cline-yes">54x</span>
887
- <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-yes">48x</span>
889
- <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-neutral">&nbsp;</span>
891
- <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-neutral">&nbsp;</span>
897
- <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-yes">19x</span>
900
- <span class="cline-any cline-yes">54x</span>
901
- <span class="cline-any cline-yes">54x</span>
902
- <span class="cline-any cline-neutral">&nbsp;</span>
903
- <span class="cline-any cline-yes">29x</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-neutral">&nbsp;</span>
906
- <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-neutral">&nbsp;</span>
909
- <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-neutral">&nbsp;</span>
911
- <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-neutral">&nbsp;</span>
913
- <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-yes">19x</span>
917
- <span class="cline-any cline-yes">4x</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span>
919
- <span class="cline-any cline-yes">4x</span>
920
- <span class="cline-any cline-neutral">&nbsp;</span>
921
- <span class="cline-any cline-yes">4x</span>
922
- <span class="cline-any cline-yes">10x</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-neutral">&nbsp;</span>
925
- <span class="cline-any cline-neutral">&nbsp;</span>
926
- <span class="cline-any cline-neutral">&nbsp;</span>
927
- <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-neutral">&nbsp;</span>
930
- <span class="cline-any cline-neutral">&nbsp;</span>
931
- <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-neutral">&nbsp;</span>
933
- <span class="cline-any cline-neutral">&nbsp;</span>
934
- <span class="cline-any cline-neutral">&nbsp;</span>
935
- <span class="cline-any cline-neutral">&nbsp;</span>
936
- <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-neutral">&nbsp;</span>
939
- <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
941
- <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-neutral">&nbsp;</span>
945
- <span class="cline-any cline-neutral">&nbsp;</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-yes">19x</span>
948
- <span class="cline-any cline-yes">54x</span>
949
- <span class="cline-any cline-neutral">&nbsp;</span>
950
- <span class="cline-any cline-yes">54x</span>
951
- <span class="cline-any cline-yes">29x</span>
952
- <span class="cline-any cline-no">&nbsp;</span>
953
- <span class="cline-any cline-neutral">&nbsp;</span>
954
- <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-yes">29x</span>
956
- <span class="cline-any cline-neutral">&nbsp;</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-neutral">&nbsp;</span>
959
- <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-yes">25x</span>
961
- <span class="cline-any cline-yes">25x</span>
962
- <span class="cline-any cline-neutral">&nbsp;</span>
963
- <span class="cline-any cline-yes">1x</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-yes">24x</span>
967
- <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-yes">24x</span>
969
- <span class="cline-any cline-yes">5x</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-yes">19x</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import fs from 'node:fs/promises'
975
- import os from 'node:os'
976
- import path from 'node:path'
977
- import { z } from 'zod'
978
- &nbsp;
979
- import { getProjectRoot } from 'src/lib/git-utils'
980
- &nbsp;
981
- const INFRA_KIT_CONFIG_FILE = 'infra-kit.json'
982
- &nbsp;
983
- /**
984
- * Directory under the user's home that holds all machine-local infra-kit config:
985
- * the runtime `infra-kit.json` merge layer, per-project overrides, and the factory
986
- * registry (`vendor.json`). Single source of truth for `.infra-kit`, reused
987
- * by the vendor factory-config loader (no import cycle — this module imports no
988
- * `lib/vendor` code).
989
- */
990
- export const USER_CONFIG_DIR_NAME = '.infra-kit'
991
- const USER_GLOBAL_CONFIG_FILE = 'infra-kit.json'
992
- const USER_PROJECTS_DIR = 'projects'
993
- &nbsp;
994
- // envManagement
995
- const dopplerEnvManagementSchema = z.object({
996
- provider: z.literal('doppler'),
997
- config: z.object({
998
- name: z.string().min(1),
999
- }),
1000
- })
1001
- &nbsp;
1002
- const envManagementSchema = z.discriminatedUnion('provider', [dopplerEnvManagementSchema])
1003
- &nbsp;
1004
- // ide
1005
- // There is one attach style: each worktree is added to the configured editor's
1006
- // workspace and opened (no per-window mode). Cursor needs a `.code-workspace`
1007
- // path to reconcile its `folders` array against.
1008
- const cursorIdeConfigSchema = z.object({
1009
- workspaceConfigPath: z.string().min(1),
1010
- })
1011
- &nbsp;
1012
- const cursorIdeSchema = z.object({
1013
- provider: z.literal('cursor'),
1014
- config: cursorIdeConfigSchema,
1015
- })
1016
- &nbsp;
1017
- // Zed has no portable workspace file (no `.code-workspace`) and no folder-remove
1018
- // CLI: a multi-worktree workspace is realized by a single `zed &lt;root&gt; &lt;wt...&gt;`
1019
- // invocation. So `config` carries no settings — there's no path to point at.
1020
- const zedIdeConfigSchema = z.object({})
1021
- &nbsp;
1022
- const zedIdeSchema = z.object({
1023
- provider: z.literal('zed'),
1024
- config: zedIdeConfigSchema,
1025
- })
1026
- &nbsp;
1027
- const ideSchema = z.discriminatedUnion('provider', [cursorIdeSchema, zedIdeSchema])
1028
- &nbsp;
1029
- // `ide` accepts a single provider (back-compat) OR an array to drive multiple
1030
- // editors at once (e.g. Cursor + Zed). Normalized to an array everywhere via
1031
- // `resolveConfiguredIdes`. Uniqueness-by-provider is enforced at parse time by a
1032
- // `.superRefine` on the full config schema (see below) — not here, so the message
1033
- // survives `z.union` error aggregation.
1034
- const idesSchema = z.union([ideSchema, z.array(ideSchema).min(1)])
1035
- &nbsp;
1036
- // taskManager
1037
- const jiraTaskManagerSchema = z.object({
1038
- provider: z.literal('jira'),
1039
- config: z.object({
1040
- baseUrl: z.string().url(),
1041
- projectId: z.number().int().positive(),
1042
- }),
1043
- })
1044
- &nbsp;
1045
- const taskManagerSchema = z.discriminatedUnion('provider', [jiraTaskManagerSchema])
1046
- &nbsp;
1047
- // cmux pane layout for opened worktree workspaces. Named presets keep the config
1048
- // typo-proof (an enum, not a free string) and let the opener switch on a single
1049
- // value; extend the enum + the opener's switch to add a layout.
1050
- // two-columns — left | right, both full-height (default)
1051
- // three-pane — left split top/bottom + full-height right (legacy layout)
1052
- const cmuxLayouts = ['two-columns', 'three-pane'] as const
1053
- &nbsp;
1054
- const cmuxConfigSchema = z.object({
1055
- layout: z.enum(cmuxLayouts).optional(),
1056
- })
1057
- &nbsp;
1058
- // worktrees prompt defaults
1059
- const worktreesConfigSchema = z.object({
1060
- openInGithubDesktop: z.boolean().optional(),
1061
- openInCmux: z.boolean().optional(),
1062
- cmux: cmuxConfigSchema.optional(),
1063
- })
1064
- &nbsp;
1065
- // dev-server per-app overrides. Maps an app folder name (e.g. `client`) to its
1066
- // local dev port and/or URL prefix. Both keys optional. An app absent from the
1067
- // map falls back to env (`{APP}_PORT` / `PORT`) then the built-in defaults, so
1068
- // the map is intentionally NOT validated against the discovered apps here — an
1069
- // unknown app name is simply ignored at resolve time (lib/dev), never a parse
1070
- // error that would brick every command.
1071
- const devAppConfigSchema = z
1072
- .object({
1073
- port: z.number().int().positive().optional(),
1074
- prefixUrl: z.string().min(1).optional(),
1075
- })
1076
- .strict()
1077
- &nbsp;
1078
- const devConfigSchema = z.record(z.string().min(1), devAppConfigSchema)
1079
- &nbsp;
1080
- // env auto-load: opt-in convenience that primes Doppler env when you work inside
1081
- // this project / a worktree. Absent =&gt; disabled. `trigger` selects the moment
1082
- // (pick one):
1083
- // shell-startup — when a new shell opens inside the project
1084
- // cli-invocation — before each `infra-kit` command (primes SUBSEQUENT commands)
1085
- // `config` names which environment to load. It is intentionally NOT validated
1086
- // against `environments` here: an invalid name must DISABLE the feature at
1087
- // resolve time (lib/env-autoload), never throw inside the merged-config parse and
1088
- // brick every command.
1089
- const envAutoLoadSchema = z
1090
- .object({
1091
- trigger: z.enum(['shell-startup', 'cli-invocation']),
1092
- config: z.string().min(1),
1093
- })
1094
- .strict()
1095
- &nbsp;
1096
- // Base object shape, kept separate so `.partial()` (which only works on a plain
1097
- // ZodObject, not the `.superRefine`-wrapped full schema) can derive the override
1098
- // schema from it.
1099
- const infraKitConfigObject = z.object({
1100
- environments: z.array(z.string().min(1)).min(1),
1101
- envManagement: envManagementSchema,
1102
- ide: idesSchema.optional(),
1103
- taskManager: taskManagerSchema.optional(),
1104
- worktrees: worktreesConfigSchema.optional(),
1105
- envAutoLoad: envAutoLoadSchema.optional(),
1106
- dev: devConfigSchema.optional(),
1107
- })
1108
- &nbsp;
1109
- // Full schema = base object + a parse-time uniqueness check on the `ide` array.
1110
- // This runs inside the *merged* `safeParse` in getInfraKitConfig, so it's the
1111
- // gate for the final config. (The override layers use the `.partial()` form
1112
- // below, which drops this object-level refinement — acceptable, the merged
1113
- // parse is authoritative.)
1114
- export const infraKitConfigSchema = infraKitConfigObject.superRefine((cfg, ctx) =&gt; {
1115
- if (!Array.isArray(cfg.ide)) return
1116
- &nbsp;
1117
- const seen = new Set&lt;string&gt;()
1118
- &nbsp;
1119
- for (const entry of cfg.ide) {
1120
- if (seen.has(entry.provider)) {
1121
- ctx.addIssue({
1122
- code: 'custom',
1123
- message: 'each IDE provider may appear at most once',
1124
- path: ['ide'],
1125
- })
1126
- &nbsp;
1127
- return
1128
- }
1129
- &nbsp;
1130
- seen.add(entry.provider)
1131
- }
1132
- })
1133
- &nbsp;
1134
- export const infraKitOverrideConfigSchema = infraKitConfigObject.partial()
1135
- &nbsp;
1136
- export type InfraKitConfig = z.infer&lt;typeof infraKitConfigSchema&gt;
1137
- &nbsp;
1138
- /** Resolved env auto-load config (`{ trigger, config }`), or `undefined` when off. */
1139
- export type EnvAutoLoadConfig = z.infer&lt;typeof envAutoLoadSchema&gt;
1140
- &nbsp;
1141
- /** Per-app dev-server overrides (`{ port?, prefixUrl? }`). */
1142
- export type DevAppConfig = z.infer&lt;typeof devAppConfigSchema&gt;
1143
- &nbsp;
1144
- /** The full `dev` section: a map of app folder name to its {@link DevAppConfig}. */
1145
- export type DevConfig = z.infer&lt;typeof devConfigSchema&gt;
1146
- &nbsp;
1147
- /** A single resolved IDE entry (`{ provider, config }`). */
1148
- export type ConfiguredIde = z.infer&lt;typeof ideSchema&gt;
1149
- &nbsp;
1150
- /**
1151
- * Normalize the `ide` config (single object, array, or unset) into a flat list.
1152
- * Validation-free: assumes already-parsed input (uniqueness is enforced by the
1153
- * schema). The one source of truth for "which editors are configured."
1154
- *
1155
- * @example
1156
- * resolveConfiguredIdes({ ide: { provider: 'cursor', config: {...} } }) // =&gt; [cursor]
1157
- * resolveConfiguredIdes({ ide: [cursor, zed] }) // =&gt; [cursor, zed]
1158
- * resolveConfiguredIdes({}) // =&gt; []
1159
- */
1160
- export const resolveConfiguredIdes = (config: InfraKitConfig): ConfiguredIde[] =&gt; {
1161
- const ide = config.ide
1162
- &nbsp;
1163
- if (!ide) return []
1164
- &nbsp;
1165
- return Array.isArray(ide) ? ide : [ide]
1166
- }
1167
- &nbsp;
1168
- /** A cmux pane layout preset (see {@link cmuxLayouts}). */
1169
- export type CmuxLayout = (typeof cmuxLayouts)[number]
1170
- &nbsp;
1171
- /** The layout applied when `worktrees.cmux.layout` is left unset. */
1172
- export const DEFAULT_CMUX_LAYOUT: CmuxLayout = 'two-columns'
1173
- &nbsp;
1174
- /**
1175
- * Resolve the cmux pane layout for opened worktree workspaces, falling back to
1176
- * {@link DEFAULT_CMUX_LAYOUT} when unconfigured. The one source of truth for
1177
- * "which layout should the cmux opener build."
1178
- *
1179
- * @example
1180
- * resolveCmuxLayout({ worktrees: { cmux: { layout: 'three-pane' } } }) // =&gt; 'three-pane'
1181
- * resolveCmuxLayout({}) // =&gt; 'two-columns'
1182
- */
1183
- export const resolveCmuxLayout = (config: InfraKitConfig): CmuxLayout =&gt; {
1184
- return config.worktrees?.cmux?.layout ?? DEFAULT_CMUX_LAYOUT
1185
- }
1186
- &nbsp;
1187
- export interface InfraKitConfigPaths {
1188
- /** Committed project config (required). */
1189
- main: string
1190
- /** User-scope global overrides applied to every project. */
1191
- userGlobal: string
1192
- /** User-scope per-project overrides — `&lt;userProjectsDir&gt;/&lt;projectName&gt;/infra-kit.json`. */
1193
- userProject: string
1194
- /** Repo basename (`path.basename(projectRoot)`) used to namespace the user-project file. */
1195
- projectName: string
1196
- }
1197
- &nbsp;
1198
- interface CacheEntry {
1199
- mtimes: Record&lt;keyof Omit&lt;InfraKitConfigPaths, 'projectName'&gt;, number | null&gt;
1200
- value: InfraKitConfig
1201
- }
1202
- &nbsp;
1203
- let cached: CacheEntry | null = null
1204
- &nbsp;
1205
- /**
1206
- * Resolve every file path that participates in the config merge chain. Always
1207
- * returns paths even for files that don't yet exist, so callers can use them
1208
- * for "where would my override go?" prompts.
1209
- *
1210
- * @example
1211
- * const paths = await getInfraKitConfigPaths()
1212
- * // {
1213
- * // main: '/Users/arthur/projects/api/infra-kit.json',
1214
- * // userGlobal: '/Users/arthur/.infra-kit/infra-kit.json',
1215
- * // userProject: '/Users/arthur/.infra-kit/projects/api/infra-kit.json',
1216
- * // projectName: 'api',
1217
- * // }
1218
- */
1219
- export const getInfraKitConfigPaths = async (): Promise&lt;InfraKitConfigPaths&gt; =&gt; {
1220
- const projectRoot = await getProjectRoot()
1221
- // Repo name is the project-root basename (same as getRepoName), derived here to
1222
- // avoid a second `git rev-parse` — getRepoName would re-resolve the root.
1223
- const projectName = path.basename(projectRoot)
1224
- const userConfigDir = path.join(os.homedir(), USER_CONFIG_DIR_NAME)
1225
- &nbsp;
1226
- return {
1227
- main: path.join(projectRoot, INFRA_KIT_CONFIG_FILE),
1228
- userGlobal: path.join(userConfigDir, USER_GLOBAL_CONFIG_FILE),
1229
- userProject: path.join(userConfigDir, USER_PROJECTS_DIR, projectName, INFRA_KIT_CONFIG_FILE),
1230
- projectName,
1231
- }
1232
- }
1233
- &nbsp;
1234
- /**
1235
- * Read and validate `infra-kit.json`, with optional override layers shallow-merged
1236
- * on top in this order (later wins):
1237
- * 1. project `infra-kit.json` — committed source of truth
1238
- * 2. `~/.infra-kit/infra-kit.json` — user-global defaults
1239
- * 3. `~/.infra-kit/projects/&lt;repo-name&gt;/infra-kit.json` — user-scope per-project overrides
1240
- *
1241
- * Top-level keys (entire capability sections like `ide`, `envManagement`)
1242
- * replace wholesale. Results are cached per file mtimes so the long-running
1243
- * MCP server picks up edits without a restart.
1244
- *
1245
- * @example
1246
- * // infra-kit.json: { "environments": ["dev"], "envManagement": { "provider": "doppler", "config": { "name": "p" } } }
1247
- * // ~/.infra-kit/infra-kit.json: { "ide": { "provider": "cursor", "config": { "workspaceConfigPath": "./ws.code-workspace" } } }
1248
- * const cfg = await getInfraKitConfig()
1249
- * // =&gt; { environments: ['dev'], envManagement: {...}, ide: { provider: 'cursor', config: { workspaceConfigPath: './ws.code-workspace' } } }
1250
- */
1251
- export const getInfraKitConfig = async (): Promise&lt;InfraKitConfig&gt; =&gt; {
1252
- const paths = await getInfraKitConfigPaths()
1253
- &nbsp;
1254
- let mainStat: Awaited&lt;ReturnType&lt;typeof fs.stat&gt;&gt;
1255
- &nbsp;
1256
- try {
1257
- mainStat = await fs.stat(paths.main)
1258
- } catch {
1259
- cached = null
1260
- &nbsp;
1261
- // Bridge the YAML→JSON cutover: if a legacy infra-kit.yml is sitting where
1262
- // the JSON config should be, point the user at the one-shot migration.
1263
- const legacyYmlPath = paths.main.replace(/\.json$/, '.yml')
1264
- &nbsp;
1265
- if (await statIfExists(legacyYmlPath)) {
1266
- throw new Error(
1267
- `infra-kit.json not found at ${paths.main}. A legacy infra-kit.yml exists — run \`infra-kit init\` to convert it.`,
1268
- )
1269
- }
1270
- &nbsp;
1271
- throw new Error(`infra-kit.json not found at ${paths.main}`)
1272
- }
1273
- &nbsp;
1274
- const [userGlobalStat, userProjectStat] = await Promise.all([
1275
- statIfExists(paths.userGlobal),
1276
- statIfExists(paths.userProject),
1277
- ])
1278
- &nbsp;
1279
- const mtimes = {
1280
- main: Number(mainStat.mtimeMs),
1281
- userGlobal: userGlobalStat ? Number(userGlobalStat.mtimeMs) : null,
1282
- userProject: userProjectStat ? <span class="branch-0 cbranch-no" title="branch not covered" >Number(userProjectStat.mtimeMs) : n</span>ull,
1283
- }
1284
- &nbsp;
1285
- if (cached &amp;&amp; shallowEqual(cached.mtimes, mtimes)) {
1286
- return cached.value
1287
- }
1288
- &nbsp;
1289
- const layers: ConfigLayer[] = [
1290
- { label: 'infra-kit.json', path: paths.main, required: true },
1291
- { label: '~/.infra-kit/infra-kit.json', path: paths.userGlobal, required: false },
1292
- {
1293
- label: `~/.infra-kit/projects/${paths.projectName}/infra-kit.json`,
1294
- path: paths.userProject,
1295
- required: false,
1296
- },
1297
- ]
1298
- &nbsp;
1299
- let merged: Record&lt;string, unknown&gt; = {}
1300
- &nbsp;
1301
- for (const layer of layers) {
1302
- const data = await loadLayer(layer)
1303
- &nbsp;
1304
- if (data === null) continue
1305
- &nbsp;
1306
- merged = { ...merged, ...data }
1307
- }
1308
- &nbsp;
1309
- const finalResult = infraKitConfigSchema.safeParse(merged)
1310
- &nbsp;
1311
- if (!finalResult.success) {
1312
- throw new Error(`Invalid merged infra-kit config: ${z.prettifyError(finalResult.error)}`)
1313
- }
1314
- &nbsp;
1315
- cached = { mtimes, value: finalResult.data }
1316
- &nbsp;
1317
- return finalResult.data
1318
- }
1319
- &nbsp;
1320
- /**
1321
- * For tests — drops the in-memory cache so the next read hits disk.
1322
- *
1323
- * @example
1324
- * resetInfraKitConfigCache()
1325
- * await getInfraKitConfig() // re-reads files even if mtimes look unchanged
1326
- */
1327
- export const resetInfraKitConfigCache = (): void =&gt; {
1328
- cached = null
1329
- }
1330
- &nbsp;
1331
- /**
1332
- * `fs.stat` that returns `null` instead of throwing on ENOENT. Used so the
1333
- * resolver can probe optional files in the merge chain without try/catch noise.
1334
- *
1335
- * @example
1336
- * const stat = await statIfExists('/does/not/exist') // =&gt; null
1337
- */
1338
- const statIfExists = async (filePath: string): Promise&lt;Awaited&lt;ReturnType&lt;typeof fs.stat&gt;&gt; | null&gt; =&gt; {
1339
- try {
1340
- return await fs.stat(filePath)
1341
- } catch {
1342
- return null
1343
- }
1344
- }
1345
- &nbsp;
1346
- /**
1347
- * `fs.readFile` that returns `null` instead of throwing on ENOENT.
1348
- *
1349
- * @example
1350
- * const raw = await readIfExists('/missing.json') // =&gt; null
1351
- * const raw = await readIfExists('/exists.json') // =&gt; '{ "environments": ["dev"] }\n'
1352
- */
1353
- const readIfExists = async (filePath: string): Promise&lt;string | null&gt; =&gt; {
1354
- try {
1355
- return await fs.readFile(filePath, 'utf-8')
1356
- } catch {
1357
- return null
1358
- }
1359
- }
1360
- &nbsp;
1361
- /**
1362
- * Reference-equality comparison of every key in two flat records. Used to
1363
- * cheaply detect whether the cached mtime fingerprint still matches.
1364
- *
1365
- * @example
1366
- * shallowEqual({ a: 1, b: 2 }, { a: 1, b: 2 }) // =&gt; true
1367
- * shallowEqual({ a: 1 }, { a: 1, b: 2 }) // =&gt; false
1368
- * shallowEqual({ a: 1 }, { a: 2 }) // =&gt; false
1369
- */
1370
- const shallowEqual = &lt;T extends Record&lt;string, unknown&gt;&gt;(a: T, b: T): boolean =&gt; {
1371
- const keys = Object.keys(a)
1372
- &nbsp;
1373
- <span class="missing-if-branch" title="if path not taken" >I</span>if (keys.length !== Object.keys(b).length) <span class="cstat-no" title="statement not covered" >return false</span>
1374
- &nbsp;
1375
- return keys.every((k) =&gt; {
1376
- return a[k] === b[k]
1377
- })
1378
- }
1379
- &nbsp;
1380
- interface ConfigLayer {
1381
- label: string
1382
- path: string
1383
- required: boolean
1384
- }
1385
- &nbsp;
1386
- /**
1387
- * Read a single layer of the merge chain: parse the JSON if the file exists
1388
- * and validate it against the override schema. Returns `null` if an optional
1389
- * layer is missing; throws if the layer is required, malformed, or invalid.
1390
- * An empty/whitespace-only file is treated as `{}` (JSON.parse would throw).
1391
- *
1392
- * @example
1393
- * await loadLayer({ label: '~/.infra-kit/infra-kit.json', path: '/missing.json', required: false })
1394
- * // =&gt; null
1395
- *
1396
- * @example
1397
- * // /home/me/.infra-kit/infra-kit.json: '{ "ide": { "provider": "cursor", "config": { "workspaceConfigPath": "./ws.code-workspace" } } }'
1398
- * await loadLayer({ label: '~/.infra-kit/infra-kit.json', path: '/home/me/.infra-kit/infra-kit.json', required: false })
1399
- * // =&gt; { ide: { provider: 'cursor', config: { workspaceConfigPath: './ws.code-workspace' } } }
1400
- */
1401
- const loadLayer = async (layer: ConfigLayer): Promise&lt;Record&lt;string, unknown&gt; | null&gt; =&gt; {
1402
- const raw = await readIfExists(layer.path)
1403
- &nbsp;
1404
- if (raw === null) {
1405
- <span class="missing-if-branch" title="if path not taken" >I</span>if (layer.required) {
1406
- <span class="cstat-no" title="statement not covered" > throw new Error(`${layer.label} not found at ${layer.path}`)</span>
1407
- }
1408
- &nbsp;
1409
- return null
1410
- }
1411
- &nbsp;
1412
- let parsedRaw: unknown
1413
- &nbsp;
1414
- try {
1415
- parsedRaw = raw.trim() === '' ? {} : JSON.parse(raw)
1416
- } catch (err) {
1417
- throw new Error(`Invalid JSON in ${layer.label} at ${layer.path}: ${(err as Error).message}`)
1418
- }
1419
- &nbsp;
1420
- const result = infraKitOverrideConfigSchema.safeParse(parsedRaw)
1421
- &nbsp;
1422
- if (!result.success) {
1423
- throw new Error(`Invalid ${layer.label} at ${layer.path}: ${z.prettifyError(result.error)}`)
1424
- }
1425
- &nbsp;
1426
- return result.data as Record&lt;string, unknown&gt;
1427
- }
1428
- &nbsp;</pre></td></tr></table></pre>
1429
-
1430
- <div class='push'></div><!-- for sticky footer -->
1431
- </div><!-- /wrapper -->
1432
- <div class='footer quiet pad2 space-top1 center small'>
1433
- Code coverage generated by
1434
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1435
- at 2026-07-02T09:20:45.872Z
1436
- </div>
1437
- <script src="../../../../prettify.js"></script>
1438
- <script>
1439
- window.onload = function () {
1440
- prettyPrint();
1441
- };
1442
- </script>
1443
- <script src="../../../../sorter.js"></script>
1444
- <script src="../../../../block-navigation.js"></script>
1445
- </body>
1446
- </html>
1447
-