infra-kit 0.1.128 → 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.
- package/dist/chunk-2PZRQHWF.js +2 -0
- package/dist/chunk-2PZRQHWF.js.map +7 -0
- package/dist/chunk-6RRAK2QO.js +5 -0
- package/dist/chunk-6RRAK2QO.js.map +7 -0
- package/dist/chunk-IX2A34UU.js +2 -0
- package/dist/chunk-IX2A34UU.js.map +7 -0
- package/dist/chunk-V5IDN7ZM.js +162 -0
- package/dist/chunk-V5IDN7ZM.js.map +7 -0
- package/dist/{chunk-YSBF5C7C.js → chunk-Z6KTUVIC.js} +2 -2
- package/dist/chunk-Z6KTUVIC.js.map +7 -0
- package/dist/cli.js +4 -4
- package/dist/cli.js.map +3 -3
- package/dist/dev-server.js +15 -10
- package/dist/dev-server.js.map +4 -4
- package/dist/entry/index.d.ts +1 -1
- package/dist/entry/vite.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/lib/package-config/package-config-schema.d.ts +35 -0
- package/dist/lib/package-config/package-config.d.ts +28 -0
- package/dist/lib/release-slug/release-slug.d.ts +19 -0
- package/dist/lib/vite/vite.d.ts +135 -0
- package/dist/mcp.js +1 -1
- package/dist/mcp.js.map +1 -1
- package/dist/vite.js +2 -0
- package/dist/vite.js.map +7 -0
- package/package.json +10 -2
- package/.eslintcache +0 -1
- package/.omc/state/agent-replay-036daa78-5fee-4c7d-9b44-53584acb0d87.jsonl +0 -26
- package/.omc/state/agent-replay-0a58307d-2a37-4c69-851c-83a646502d62.jsonl +0 -1
- package/.omc/state/agent-replay-0a65ec83-9de7-458d-9d0f-e56e1a26c68e.jsonl +0 -2
- package/.omc/state/agent-replay-0d1515ce-4ebe-4ce8-a865-2897f68de168.jsonl +0 -1
- package/.omc/state/agent-replay-11c41aa0-51fa-49e1-a1dc-26dcd6ac26cc.jsonl +0 -16
- package/.omc/state/agent-replay-127837d3-a000-4656-9453-2324ab353723.jsonl +0 -5
- package/.omc/state/agent-replay-15c409af-24fa-4026-88d3-a82dd1e68b87.jsonl +0 -11
- package/.omc/state/agent-replay-1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a.jsonl +0 -17
- package/.omc/state/agent-replay-1fcfe0ec-7567-41c3-9bfd-501e99e86819.jsonl +0 -19
- package/.omc/state/agent-replay-2ac0dcd0-01f7-41a8-a8c9-f2195599817b.jsonl +0 -5
- package/.omc/state/agent-replay-2ccbd177-0d5d-4d4a-ab94-a22464786221.jsonl +0 -1
- package/.omc/state/agent-replay-36d91435-50b4-442f-9f4e-3cc68d776236.jsonl +0 -2
- package/.omc/state/agent-replay-38382db5-3088-4b5a-aff7-2561a60827c7.jsonl +0 -17
- package/.omc/state/agent-replay-4cf1c186-81b2-497c-b002-d7f84e7839f3.jsonl +0 -9
- package/.omc/state/agent-replay-50c36be9-a3a2-42b9-9c85-5a06d3e22f6a.jsonl +0 -5
- package/.omc/state/agent-replay-5c4ab554-64f1-42ae-83e3-21e0237e955c.jsonl +0 -11
- package/.omc/state/agent-replay-6be1264f-8069-4412-8119-86118ed1943e.jsonl +0 -3
- package/.omc/state/agent-replay-707b4784-2117-4b19-ae68-68a031f0d76d.jsonl +0 -2
- package/.omc/state/agent-replay-74afa912-1443-4011-b4f2-db9f055cdd9f.jsonl +0 -3
- package/.omc/state/agent-replay-8198b3e5-fad6-4ee0-9c59-ef773ad89af4.jsonl +0 -1
- package/.omc/state/agent-replay-8cd7652a-b8b5-49cf-9b1f-bee8e5972458.jsonl +0 -3
- package/.omc/state/agent-replay-8dd0ad2f-3a90-4158-b9de-ec8e19a7c983.jsonl +0 -3
- package/.omc/state/agent-replay-9bea518f-a9ee-4d14-bb53-a936ebaf647c.jsonl +0 -7
- package/.omc/state/agent-replay-a60ac2ec-afbd-449f-a540-6df287392fc2.jsonl +0 -1
- package/.omc/state/agent-replay-afc6290b-40d3-4bef-b3b6-14484c034ab9.jsonl +0 -14
- package/.omc/state/agent-replay-b52d89fb-0e24-4901-bc66-27e3c1697126.jsonl +0 -2
- package/.omc/state/agent-replay-be37e426-6fc8-47f4-8178-221c8494551c.jsonl +0 -3
- package/.omc/state/agent-replay-c967c819-3d1c-447b-ab48-56a8448ef9f8.jsonl +0 -2
- package/.omc/state/agent-replay-d02e6565-5168-40c8-8629-de219a29fa43.jsonl +0 -2
- package/.omc/state/agent-replay-d367c3be-9c2a-48e7-bcea-b45861af568c.jsonl +0 -2
- package/.omc/state/agent-replay-d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc.jsonl +0 -10
- package/.omc/state/agent-replay-e947a3c6-989d-4a60-91dd-6b0ddd827b2d.jsonl +0 -3
- package/.omc/state/agent-replay-eb44055b-c2fa-4e66-b491-a1d9b44f51c7.jsonl +0 -1
- package/.omc/state/agent-replay-f2846d8f-974c-486c-b16f-4bdaa28ca45f.jsonl +0 -2
- package/.omc/state/agent-replay-f581a1ae-0ee4-48a3-96f3-ce31a0633bb0.jsonl +0 -1
- package/.omc/state/agent-replay-f99d8dad-81d1-4987-8183-62edf0843d0c.jsonl +0 -2
- package/.omc/state/agent-replay-fe1057b4-9a25-4e8e-8c3f-3e11652ee697.jsonl +0 -5
- package/.omc/state/idle-notif-cooldown.json +0 -3
- package/.omc/state/last-tool-error.json +0 -7
- package/.omc/state/mission-state.json +0 -53
- package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/mission-state.json +0 -129
- package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/pre-tool-advisory-throttle.json +0 -34
- package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/ralph-state.json +0 -13
- package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/ralplan-state.json +0 -11
- package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/subagent-tracking-state.json +0 -80
- package/.omc/state/sessions/036daa78-5fee-4c7d-9b44-53584acb0d87/ultrawork-state.json +0 -11
- package/.omc/state/sessions/0a58307d-2a37-4c69-851c-83a646502d62/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/0a58307d-2a37-4c69-851c-83a646502d62/subagent-tracking-state.json +0 -7
- package/.omc/state/sessions/0a65ec83-9de7-458d-9d0f-e56e1a26c68e/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/0a65ec83-9de7-458d-9d0f-e56e1a26c68e/skill-active-state.json +0 -15
- package/.omc/state/sessions/0d1515ce-4ebe-4ce8-a865-2897f68de168/pre-tool-advisory-throttle.json +0 -10
- package/.omc/state/sessions/11c41aa0-51fa-49e1-a1dc-26dcd6ac26cc/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/11c41aa0-51fa-49e1-a1dc-26dcd6ac26cc/mission-state.json +0 -117
- package/.omc/state/sessions/11c41aa0-51fa-49e1-a1dc-26dcd6ac26cc/pre-tool-advisory-throttle.json +0 -42
- package/.omc/state/sessions/11c41aa0-51fa-49e1-a1dc-26dcd6ac26cc/subagent-tracking-state.json +0 -53
- package/.omc/state/sessions/127837d3-a000-4656-9453-2324ab353723/mission-state.json +0 -61
- package/.omc/state/sessions/127837d3-a000-4656-9453-2324ab353723/pre-tool-advisory-throttle.json +0 -22
- package/.omc/state/sessions/127837d3-a000-4656-9453-2324ab353723/skill-active-state.json +0 -15
- package/.omc/state/sessions/127837d3-a000-4656-9453-2324ab353723/subagent-tracking-state.json +0 -26
- package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/mission-state.json +0 -89
- package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/pre-tool-advisory-throttle.json +0 -34
- package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/ralph-state.json +0 -13
- package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/skill-active-state.json +0 -15
- package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/subagent-tracking-state.json +0 -44
- package/.omc/state/sessions/15c409af-24fa-4026-88d3-a82dd1e68b87/ultrawork-state.json +0 -11
- package/.omc/state/sessions/1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a/mission-state.json +0 -139
- package/.omc/state/sessions/1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a/pre-tool-advisory-throttle.json +0 -50
- package/.omc/state/sessions/1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a/ralplan-state.json +0 -11
- package/.omc/state/sessions/1b6ffc57-2d9b-4af4-b603-f1cef7e01b0a/subagent-tracking-state.json +0 -90
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/mission-state.json +0 -109
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/pre-tool-advisory-throttle.json +0 -42
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/ralph-state.json +0 -13
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/skill-active-state.json +0 -15
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/subagent-tracking-state.json +0 -62
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/ultrawork-state.json +0 -11
- package/.omc/state/sessions/23d0ff82-17e5-428b-8743-38f7979bb6f3/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/23d0ff82-17e5-428b-8743-38f7979bb6f3/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/mission-state.json +0 -79
- package/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/pre-tool-advisory-throttle.json +0 -10
- package/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/skill-active-state.json +0 -15
- package/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/subagent-tracking-state.json +0 -26
- package/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/36d91435-50b4-442f-9f4e-3cc68d776236/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/36d91435-50b4-442f-9f4e-3cc68d776236/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/mission-state.json +0 -145
- package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/pre-tool-advisory-throttle.json +0 -38
- package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/ralplan-state.json +0 -11
- package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/subagent-tracking-state.json +0 -98
- package/.omc/state/sessions/3a844fbd-ace8-4af1-8516-33d611839886/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/4cf1c186-81b2-497c-b002-d7f84e7839f3/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/4cf1c186-81b2-497c-b002-d7f84e7839f3/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/4cf1c186-81b2-497c-b002-d7f84e7839f3/subagent-tracking-state.json +0 -7
- package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/mission-state.json +0 -61
- package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/pre-tool-advisory-throttle.json +0 -22
- package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/skill-active-state.json +0 -15
- package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/subagent-tracking-state.json +0 -26
- package/.omc/state/sessions/560ea519-574a-4713-b134-5bf6cfaf3c33/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/5c4ab554-64f1-42ae-83e3-21e0237e955c/mission-state.json +0 -117
- package/.omc/state/sessions/5c4ab554-64f1-42ae-83e3-21e0237e955c/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/5c4ab554-64f1-42ae-83e3-21e0237e955c/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/6be1264f-8069-4412-8119-86118ed1943e/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/6be1264f-8069-4412-8119-86118ed1943e/mission-state.json +0 -53
- package/.omc/state/sessions/6be1264f-8069-4412-8119-86118ed1943e/pre-tool-advisory-throttle.json +0 -22
- package/.omc/state/sessions/6be1264f-8069-4412-8119-86118ed1943e/skill-active-state.json +0 -15
- package/.omc/state/sessions/6be1264f-8069-4412-8119-86118ed1943e/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/74afa912-1443-4011-b4f2-db9f055cdd9f/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/74afa912-1443-4011-b4f2-db9f055cdd9f/skill-active-state.json +0 -15
- package/.omc/state/sessions/74afa912-1443-4011-b4f2-db9f055cdd9f/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/7772f972-4ec1-4287-bf42-a92c14cf3ffc/pre-tool-advisory-throttle.json +0 -10
- package/.omc/state/sessions/8198b3e5-fad6-4ee0-9c59-ef773ad89af4/pre-tool-advisory-throttle.json +0 -14
- package/.omc/state/sessions/8198b3e5-fad6-4ee0-9c59-ef773ad89af4/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/8cd7652a-b8b5-49cf-9b1f-bee8e5972458/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/8cd7652a-b8b5-49cf-9b1f-bee8e5972458/ralplan-state.json +0 -11
- package/.omc/state/sessions/8cd7652a-b8b5-49cf-9b1f-bee8e5972458/subagent-tracking-state.json +0 -35
- package/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/pre-tool-advisory-throttle.json +0 -14
- package/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/ralph-state.json +0 -13
- package/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/ultrawork-state.json +0 -11
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/mission-state.json +0 -79
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/pre-tool-advisory-throttle.json +0 -22
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/progress.txt +0 -7
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/skill-active-state.json +0 -15
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/subagent-tracking-state.json +0 -26
- package/.omc/state/sessions/a60ac2ec-afbd-449f-a540-6df287392fc2/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/a60ac2ec-afbd-449f-a540-6df287392fc2/subagent-tracking-state.json +0 -7
- package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/mission-state.json +0 -89
- package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/pre-tool-advisory-throttle.json +0 -34
- package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/ralph-state.json +0 -13
- package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/skill-active-state.json +0 -15
- package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/subagent-tracking-state.json +0 -35
- package/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/ultrawork-state.json +0 -11
- package/.omc/state/sessions/b52d89fb-0e24-4901-bc66-27e3c1697126/pre-tool-advisory-throttle.json +0 -14
- package/.omc/state/sessions/b52d89fb-0e24-4901-bc66-27e3c1697126/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/c967c819-3d1c-447b-ab48-56a8448ef9f8/pre-tool-advisory-throttle.json +0 -10
- package/.omc/state/sessions/c967c819-3d1c-447b-ab48-56a8448ef9f8/subagent-tracking-state.json +0 -7
- package/.omc/state/sessions/d02e6565-5168-40c8-8629-de219a29fa43/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/d02e6565-5168-40c8-8629-de219a29fa43/mission-state.json +0 -53
- package/.omc/state/sessions/d02e6565-5168-40c8-8629-de219a29fa43/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/d02e6565-5168-40c8-8629-de219a29fa43/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/mission-state.json +0 -103
- package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/pre-tool-advisory-throttle.json +0 -30
- package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/ralph-state.json +0 -13
- package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/subagent-tracking-state.json +0 -62
- package/.omc/state/sessions/d5aae73c-340d-4aa2-9fe0-1bf2d79b69dc/ultrawork-state.json +0 -11
- package/.omc/state/sessions/e947a3c6-989d-4a60-91dd-6b0ddd827b2d/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/e947a3c6-989d-4a60-91dd-6b0ddd827b2d/pre-tool-advisory-throttle.json +0 -10
- package/.omc/state/sessions/e947a3c6-989d-4a60-91dd-6b0ddd827b2d/subagent-tracking-state.json +0 -26
- package/.omc/state/sessions/eb44055b-c2fa-4e66-b491-a1d9b44f51c7/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/eb44055b-c2fa-4e66-b491-a1d9b44f51c7/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/eb44055b-c2fa-4e66-b491-a1d9b44f51c7/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/f581a1ae-0ee4-48a3-96f3-ce31a0633bb0/pre-tool-advisory-throttle.json +0 -18
- package/.omc/state/sessions/f581a1ae-0ee4-48a3-96f3-ce31a0633bb0/subagent-tracking-state.json +0 -17
- package/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/pre-tool-advisory-throttle.json +0 -14
- package/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/ralph-state.json +0 -13
- package/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/ultrawork-state.json +0 -11
- package/.omc/state/sessions/f9c17a0e-2dd8-4f7d-badf-631f266c5d4c/pre-tool-advisory-throttle.json +0 -10
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/last-tool-error-state.json +0 -7
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/mission-state.json +0 -61
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/prd.json +0 -22
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/pre-tool-advisory-throttle.json +0 -22
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/progress.txt +0 -22
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/skill-active-state.json +0 -15
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/subagent-tracking-state.json +0 -26
- package/.omc/state/subagent-tracking.json +0 -17
- package/.turbo/turbo-build.log +0 -7
- package/.turbo/turbo-check.log +0 -14
- package/.turbo/turbo-eslint-check.log +0 -2
- package/.turbo/turbo-eslint-fix.log +0 -1
- package/.turbo/turbo-infra-kit-check.log +0 -14
- package/.turbo/turbo-prettier-check.log +0 -1
- package/.turbo/turbo-prettier-fix.log +0 -1
- package/.turbo/turbo-test.log +0 -406
- package/.turbo/turbo-ts-check.log +0 -1
- package/.turbo/turbo-validate.log +0 -14
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/cli/index.html +0 -116
- package/coverage/cli/package.json.html +0 -283
- package/coverage/cli/src/commands/audit/audit.ts.html +0 -616
- package/coverage/cli/src/commands/audit/index.html +0 -131
- package/coverage/cli/src/commands/audit/index.ts.html +0 -88
- package/coverage/cli/src/commands/doctor/doctor.ts.html +0 -1654
- package/coverage/cli/src/commands/doctor/index.html +0 -131
- package/coverage/cli/src/commands/doctor/index.ts.html +0 -88
- package/coverage/cli/src/commands/env-clear/env-clear.ts.html +0 -370
- package/coverage/cli/src/commands/env-clear/index.html +0 -131
- package/coverage/cli/src/commands/env-clear/index.ts.html +0 -88
- package/coverage/cli/src/commands/env-list/env-list.ts.html +0 -229
- package/coverage/cli/src/commands/env-list/index.html +0 -131
- package/coverage/cli/src/commands/env-list/index.ts.html +0 -88
- package/coverage/cli/src/commands/env-load/env-load.ts.html +0 -1201
- package/coverage/cli/src/commands/env-load/index.html +0 -131
- package/coverage/cli/src/commands/env-load/index.ts.html +0 -91
- package/coverage/cli/src/commands/env-status/env-status.ts.html +0 -409
- package/coverage/cli/src/commands/env-status/index.html +0 -131
- package/coverage/cli/src/commands/env-status/index.ts.html +0 -88
- package/coverage/cli/src/commands/gh-merge-dev/gh-merge-dev.ts.html +0 -694
- package/coverage/cli/src/commands/gh-merge-dev/index.html +0 -131
- package/coverage/cli/src/commands/gh-merge-dev/index.ts.html +0 -88
- package/coverage/cli/src/commands/gh-release-deliver/gh-release-deliver.ts.html +0 -1495
- package/coverage/cli/src/commands/gh-release-deliver/index.html +0 -131
- package/coverage/cli/src/commands/gh-release-deliver/index.ts.html +0 -88
- package/coverage/cli/src/commands/gh-release-deploy-all/gh-release-deploy-all.ts.html +0 -706
- package/coverage/cli/src/commands/gh-release-deploy-all/index.html +0 -131
- package/coverage/cli/src/commands/gh-release-deploy-all/index.ts.html +0 -88
- package/coverage/cli/src/commands/gh-release-deploy-selected/gh-release-deploy-selected.ts.html +0 -994
- package/coverage/cli/src/commands/gh-release-deploy-selected/index.html +0 -131
- package/coverage/cli/src/commands/gh-release-deploy-selected/index.ts.html +0 -88
- package/coverage/cli/src/commands/gh-release-list/gh-release-list.ts.html +0 -355
- package/coverage/cli/src/commands/gh-release-list/index.html +0 -131
- package/coverage/cli/src/commands/gh-release-list/index.ts.html +0 -88
- package/coverage/cli/src/commands/init/agent-files.ts.html +0 -742
- package/coverage/cli/src/commands/init/index.html +0 -146
- package/coverage/cli/src/commands/init/init.ts.html +0 -1159
- package/coverage/cli/src/commands/init/migrate-config.ts.html +0 -1219
- package/coverage/cli/src/commands/release-create/index.html +0 -131
- package/coverage/cli/src/commands/release-create/index.ts.html +0 -88
- package/coverage/cli/src/commands/release-create/release-create.ts.html +0 -1426
- package/coverage/cli/src/commands/release-desc-edit/index.html +0 -131
- package/coverage/cli/src/commands/release-desc-edit/index.ts.html +0 -88
- package/coverage/cli/src/commands/release-desc-edit/release-desc-edit.ts.html +0 -766
- package/coverage/cli/src/commands/vendor-check/index.html +0 -131
- package/coverage/cli/src/commands/vendor-check/index.ts.html +0 -88
- package/coverage/cli/src/commands/vendor-check/vendor-check.ts.html +0 -466
- package/coverage/cli/src/commands/vendor-config/index.html +0 -116
- package/coverage/cli/src/commands/vendor-config/vendor-config.ts.html +0 -571
- package/coverage/cli/src/commands/vendor-diff/index.html +0 -131
- package/coverage/cli/src/commands/vendor-diff/index.ts.html +0 -88
- package/coverage/cli/src/commands/vendor-diff/vendor-diff.ts.html +0 -316
- package/coverage/cli/src/commands/vendor-manifest/index.html +0 -131
- package/coverage/cli/src/commands/vendor-manifest/index.ts.html +0 -88
- package/coverage/cli/src/commands/vendor-manifest/vendor-manifest.ts.html +0 -265
- package/coverage/cli/src/commands/vendor-sync/index.html +0 -131
- package/coverage/cli/src/commands/vendor-sync/index.ts.html +0 -88
- package/coverage/cli/src/commands/vendor-sync/vendor-sync.ts.html +0 -355
- package/coverage/cli/src/commands/version/index.html +0 -131
- package/coverage/cli/src/commands/version/index.ts.html +0 -88
- package/coverage/cli/src/commands/version/version.ts.html +0 -184
- package/coverage/cli/src/commands/worktrees-add/index.html +0 -131
- package/coverage/cli/src/commands/worktrees-add/index.ts.html +0 -88
- package/coverage/cli/src/commands/worktrees-add/worktrees-add.ts.html +0 -1183
- package/coverage/cli/src/commands/worktrees-list/index.html +0 -131
- package/coverage/cli/src/commands/worktrees-list/index.ts.html +0 -88
- package/coverage/cli/src/commands/worktrees-list/worktrees-list.ts.html +0 -400
- package/coverage/cli/src/commands/worktrees-reload/index.html +0 -131
- package/coverage/cli/src/commands/worktrees-reload/index.ts.html +0 -88
- package/coverage/cli/src/commands/worktrees-reload/worktrees-reload.ts.html +0 -775
- package/coverage/cli/src/commands/worktrees-remove/index.html +0 -131
- package/coverage/cli/src/commands/worktrees-remove/index.ts.html +0 -88
- package/coverage/cli/src/commands/worktrees-remove/worktrees-remove.ts.html +0 -682
- package/coverage/cli/src/commands/worktrees-sync/index.html +0 -131
- package/coverage/cli/src/commands/worktrees-sync/index.ts.html +0 -88
- package/coverage/cli/src/commands/worktrees-sync/worktrees-sync.ts.html +0 -679
- package/coverage/cli/src/dev/__tests__/fixtures.ts.html +0 -787
- package/coverage/cli/src/dev/__tests__/index.html +0 -116
- package/coverage/cli/src/dev/dev-server.ts.html +0 -1855
- package/coverage/cli/src/dev/discovery.ts.html +0 -598
- package/coverage/cli/src/dev/index.html +0 -191
- package/coverage/cli/src/dev/interfaces.ts.html +0 -223
- package/coverage/cli/src/dev/logger.ts.html +0 -1102
- package/coverage/cli/src/dev/ports.ts.html +0 -430
- package/coverage/cli/src/dev/serverless-local-run.ts.html +0 -916
- package/coverage/cli/src/entry/dev-server.ts.html +0 -409
- package/coverage/cli/src/entry/index.html +0 -116
- package/coverage/cli/src/index.html +0 -116
- package/coverage/cli/src/integrations/cmux/canonicalize-cmux-title.ts.html +0 -178
- package/coverage/cli/src/integrations/cmux/close-workspace-by-title.ts.html +0 -262
- package/coverage/cli/src/integrations/cmux/index.html +0 -191
- package/coverage/cli/src/integrations/cmux/index.ts.html +0 -100
- package/coverage/cli/src/integrations/cmux/list-workspace-titles.ts.html +0 -226
- package/coverage/cli/src/integrations/cmux/open-workspace-with-layout.ts.html +0 -325
- package/coverage/cli/src/integrations/cmux/workspace-title.ts.html +0 -154
- package/coverage/cli/src/integrations/cursor/add-folders-to-workspace.ts.html +0 -337
- package/coverage/cli/src/integrations/cursor/index.html +0 -206
- package/coverage/cli/src/integrations/cursor/index.ts.html +0 -103
- package/coverage/cli/src/integrations/cursor/launch-cursor.ts.html +0 -121
- package/coverage/cli/src/integrations/cursor/open-cursor-workspace.ts.html +0 -277
- package/coverage/cli/src/integrations/cursor/reconcile-workspace-folders.ts.html +0 -355
- package/coverage/cli/src/integrations/cursor/remove-folders-from-workspace.ts.html +0 -364
- package/coverage/cli/src/integrations/cursor/resolve-workspace-path.ts.html +0 -124
- package/coverage/cli/src/integrations/doppler/doppler-cli-auth.ts.html +0 -178
- package/coverage/cli/src/integrations/doppler/doppler-errors.ts.html +0 -349
- package/coverage/cli/src/integrations/doppler/doppler-project.ts.html +0 -355
- package/coverage/cli/src/integrations/doppler/index.html +0 -161
- package/coverage/cli/src/integrations/doppler/index.ts.html +0 -97
- package/coverage/cli/src/integrations/gh/gh-cli-auth/gh-cli-auth.ts.html +0 -172
- package/coverage/cli/src/integrations/gh/gh-cli-auth/index.html +0 -131
- package/coverage/cli/src/integrations/gh/gh-cli-auth/index.ts.html +0 -88
- package/coverage/cli/src/integrations/gh/gh-release-prs/gh-release-prs.ts.html +0 -703
- package/coverage/cli/src/integrations/gh/gh-release-prs/index.html +0 -131
- package/coverage/cli/src/integrations/gh/gh-release-prs/index.ts.html +0 -91
- package/coverage/cli/src/integrations/gh/index.html +0 -116
- package/coverage/cli/src/integrations/gh/index.ts.html +0 -94
- package/coverage/cli/src/integrations/ide/add-ide-worktree-folders.ts.html +0 -316
- package/coverage/cli/src/integrations/ide/index.html +0 -191
- package/coverage/cli/src/integrations/ide/index.ts.html +0 -103
- package/coverage/cli/src/integrations/ide/open-ide-workspace.ts.html +0 -238
- package/coverage/cli/src/integrations/ide/provider-label.ts.html +0 -157
- package/coverage/cli/src/integrations/ide/remove-ide-worktree-folders.ts.html +0 -520
- package/coverage/cli/src/integrations/ide/types.ts.html +0 -208
- package/coverage/cli/src/integrations/jira/api.ts.html +0 -1060
- package/coverage/cli/src/integrations/jira/index.html +0 -131
- package/coverage/cli/src/integrations/jira/index.ts.html +0 -142
- package/coverage/cli/src/integrations/zed/add-folders-to-zed-workspace.ts.html +0 -175
- package/coverage/cli/src/integrations/zed/index.html +0 -161
- package/coverage/cli/src/integrations/zed/index.ts.html +0 -94
- package/coverage/cli/src/integrations/zed/open-zed-workspace.ts.html +0 -238
- package/coverage/cli/src/integrations/zed/reuse-zed-workspace.ts.html +0 -256
- package/coverage/cli/src/lib/assert-never/assert-never.ts.html +0 -130
- package/coverage/cli/src/lib/assert-never/index.html +0 -131
- package/coverage/cli/src/lib/assert-never/index.ts.html +0 -88
- package/coverage/cli/src/lib/command-catalog/command-catalog.ts.html +0 -523
- package/coverage/cli/src/lib/command-catalog/index.html +0 -116
- package/coverage/cli/src/lib/command-echo/command-echo.ts.html +0 -319
- package/coverage/cli/src/lib/command-echo/index.html +0 -131
- package/coverage/cli/src/lib/command-echo/index.ts.html +0 -88
- package/coverage/cli/src/lib/constants/constants.ts.html +0 -472
- package/coverage/cli/src/lib/constants/index.html +0 -131
- package/coverage/cli/src/lib/constants/index.ts.html +0 -139
- package/coverage/cli/src/lib/env-autoload/env-autoload.ts.html +0 -1111
- package/coverage/cli/src/lib/env-autoload/index.html +0 -116
- package/coverage/cli/src/lib/errors/format-zx-error.ts.html +0 -247
- package/coverage/cli/src/lib/errors/index.html +0 -146
- package/coverage/cli/src/lib/errors/is-prompt-cancellation.ts.html +0 -199
- package/coverage/cli/src/lib/errors/operation-error.ts.html +0 -325
- package/coverage/cli/src/lib/git-guard/git-guard.ts.html +0 -250
- package/coverage/cli/src/lib/git-guard/index.html +0 -131
- package/coverage/cli/src/lib/git-guard/index.ts.html +0 -91
- package/coverage/cli/src/lib/git-utils/git-utils.ts.html +0 -622
- package/coverage/cli/src/lib/git-utils/index.html +0 -131
- package/coverage/cli/src/lib/git-utils/index.ts.html +0 -115
- package/coverage/cli/src/lib/infra-kit-config/index.html +0 -131
- package/coverage/cli/src/lib/infra-kit-config/index.ts.html +0 -142
- package/coverage/cli/src/lib/infra-kit-config/infra-kit-config.ts.html +0 -1447
- package/coverage/cli/src/lib/json-output/index.html +0 -116
- package/coverage/cli/src/lib/json-output/json-output.ts.html +0 -226
- package/coverage/cli/src/lib/logger/index.html +0 -116
- package/coverage/cli/src/lib/logger/index.ts.html +0 -205
- package/coverage/cli/src/lib/managed-block/index.html +0 -131
- package/coverage/cli/src/lib/managed-block/index.ts.html +0 -109
- package/coverage/cli/src/lib/managed-block/managed-block.ts.html +0 -520
- package/coverage/cli/src/lib/package-config/index.html +0 -146
- package/coverage/cli/src/lib/package-config/index.ts.html +0 -94
- package/coverage/cli/src/lib/package-config/package-config-schema.ts.html +0 -142
- package/coverage/cli/src/lib/package-config/package-config.ts.html +0 -376
- package/coverage/cli/src/lib/package-validator/checks/config-check.ts.html +0 -175
- package/coverage/cli/src/lib/package-validator/checks/files-check.ts.html +0 -172
- package/coverage/cli/src/lib/package-validator/checks/index.html +0 -176
- package/coverage/cli/src/lib/package-validator/checks/index.ts.html +0 -97
- package/coverage/cli/src/lib/package-validator/checks/scripts-check.ts.html +0 -154
- package/coverage/cli/src/lib/package-validator/checks/turbo-check.ts.html +0 -226
- package/coverage/cli/src/lib/package-validator/fs-utils.ts.html +0 -139
- package/coverage/cli/src/lib/package-validator/index.html +0 -146
- package/coverage/cli/src/lib/package-validator/index.ts.html +0 -94
- package/coverage/cli/src/lib/package-validator/loader/config-loader.ts.html +0 -316
- package/coverage/cli/src/lib/package-validator/loader/index.html +0 -146
- package/coverage/cli/src/lib/package-validator/loader/index.ts.html +0 -91
- package/coverage/cli/src/lib/package-validator/loader/package-discovery.ts.html +0 -379
- package/coverage/cli/src/lib/package-validator/package-validator.ts.html +0 -229
- package/coverage/cli/src/lib/path-display/index.html +0 -131
- package/coverage/cli/src/lib/path-display/index.ts.html +0 -88
- package/coverage/cli/src/lib/path-display/path-display.ts.html +0 -211
- package/coverage/cli/src/lib/release-id/index.html +0 -131
- package/coverage/cli/src/lib/release-id/index.ts.html +0 -130
- package/coverage/cli/src/lib/release-id/release-id.ts.html +0 -859
- package/coverage/cli/src/lib/release-utils/index.html +0 -131
- package/coverage/cli/src/lib/release-utils/index.ts.html +0 -130
- package/coverage/cli/src/lib/release-utils/release-utils.ts.html +0 -778
- package/coverage/cli/src/lib/render/index.html +0 -116
- package/coverage/cli/src/lib/render/render.ts.html +0 -157
- package/coverage/cli/src/lib/vendor/__tests__/index.html +0 -116
- package/coverage/cli/src/lib/vendor/__tests__/zx-mock.ts.html +0 -181
- package/coverage/cli/src/lib/vendor/config-schema.ts.html +0 -319
- package/coverage/cli/src/lib/vendor/config.ts.html +0 -259
- package/coverage/cli/src/lib/vendor/factory-config-schema.ts.html +0 -190
- package/coverage/cli/src/lib/vendor/factory-config.ts.html +0 -358
- package/coverage/cli/src/lib/vendor/hash.ts.html +0 -133
- package/coverage/cli/src/lib/vendor/index.html +0 -251
- package/coverage/cli/src/lib/vendor/index.ts.html +0 -154
- package/coverage/cli/src/lib/vendor/manifest.ts.html +0 -538
- package/coverage/cli/src/lib/vendor/skip-sets.ts.html +0 -229
- package/coverage/cli/src/lib/vendor/sync-ops.ts.html +0 -955
- package/coverage/cli/src/lib/vendor/walk.ts.html +0 -253
- package/coverage/cli/src/lib/version-utils/index.html +0 -161
- package/coverage/cli/src/lib/version-utils/index.ts.html +0 -139
- package/coverage/cli/src/lib/version-utils/load-existing-versions.ts.html +0 -343
- package/coverage/cli/src/lib/version-utils/next-version.ts.html +0 -934
- package/coverage/cli/src/lib/version-utils/version-utils.ts.html +0 -178
- package/coverage/cli/src/lib/worktrees/index.html +0 -131
- package/coverage/cli/src/lib/worktrees/index.ts.html +0 -88
- package/coverage/cli/src/lib/worktrees/remove-worktrees.ts.html +0 -283
- package/coverage/cli/src/tui/boot.tsx.html +0 -265
- package/coverage/cli/src/tui/index.html +0 -116
- package/coverage/cli/src/tui/screens/command-palette.tsx.html +0 -562
- package/coverage/cli/src/tui/screens/index.html +0 -116
- package/coverage/cli/src/types.ts.html +0 -283
- package/coverage/clover.xml +0 -4488
- package/coverage/coverage-final.json +0 -156
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -1076
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/dist/chunk-DB6CTNBS.js +0 -3
- package/dist/chunk-DB6CTNBS.js.map +0 -7
- package/dist/chunk-QBHCWAAG.js +0 -164
- package/dist/chunk-QBHCWAAG.js.map +0 -7
- package/dist/chunk-YSBF5C7C.js.map +0 -7
- package/eslint.config.js +0 -35
- package/infra-kit.config.ts +0 -5
- package/scripts/build.js +0 -75
- package/src/.omc/state/agent-replay-2ac0dcd0-01f7-41a8-a8c9-f2195599817b.jsonl +0 -5
- package/src/.omc/state/agent-replay-2ccbd177-0d5d-4d4a-ab94-a22464786221.jsonl +0 -2
- package/src/.omc/state/agent-replay-707b4784-2117-4b19-ae68-68a031f0d76d.jsonl +0 -2
- package/src/.omc/state/agent-replay-8dd0ad2f-3a90-4158-b9de-ec8e19a7c983.jsonl +0 -11
- package/src/.omc/state/agent-replay-c513ef38-cc3e-4a29-9c4c-1e0137245dd5.jsonl +0 -4
- package/src/.omc/state/agent-replay-ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a.jsonl +0 -2
- package/src/.omc/state/idle-notif-cooldown.json +0 -3
- package/src/.omc/state/sessions/0a58307d-2a37-4c69-851c-83a646502d62/pre-tool-advisory-throttle.json +0 -18
- package/src/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/mission-state.json +0 -79
- package/src/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/pre-tool-advisory-throttle.json +0 -26
- package/src/.omc/state/sessions/2ac0dcd0-01f7-41a8-a8c9-f2195599817b/subagent-tracking-state.json +0 -26
- package/src/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/last-tool-error-state.json +0 -7
- package/src/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/mission-state.json +0 -53
- package/src/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/pre-tool-advisory-throttle.json +0 -22
- package/src/.omc/state/sessions/2ccbd177-0d5d-4d4a-ab94-a22464786221/subagent-tracking-state.json +0 -17
- package/src/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/last-tool-error-state.json +0 -7
- package/src/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/mission-state.json +0 -53
- package/src/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/pre-tool-advisory-throttle.json +0 -22
- package/src/.omc/state/sessions/707b4784-2117-4b19-ae68-68a031f0d76d/subagent-tracking-state.json +0 -17
- package/src/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/mission-state.json +0 -79
- package/src/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/pre-tool-advisory-throttle.json +0 -22
- package/src/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/ralph-state.json +0 -13
- package/src/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/subagent-tracking-state.json +0 -26
- package/src/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/ultrawork-state.json +0 -11
- package/src/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/mission-state.json +0 -79
- package/src/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/pre-tool-advisory-throttle.json +0 -22
- package/src/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/subagent-tracking-state.json +0 -26
- package/src/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/pre-tool-advisory-throttle.json +0 -18
- package/src/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/ralph-state.json +0 -13
- package/src/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/ultrawork-state.json +0 -11
- package/src/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/pre-tool-advisory-throttle.json +0 -14
- package/src/commands/.omc/state/sessions/afc6290b-40d3-4bef-b3b6-14484c034ab9/pre-tool-advisory-throttle.json +0 -14
- package/src/commands/.omc/state/sessions/c967c819-3d1c-447b-ab48-56a8448ef9f8/pre-tool-advisory-throttle.json +0 -18
- package/src/commands/.omc/state/sessions/f09f401f-56c6-42cd-97be-c742c1956468/pre-tool-advisory-throttle.json +0 -14
- package/src/commands/audit/.omc/state/agent-replay-f9c17a0e-2dd8-4f7d-badf-631f266c5d4c.jsonl +0 -4
- package/src/commands/audit/.omc/state/sessions/f9c17a0e-2dd8-4f7d-badf-631f266c5d4c/mission-state.json +0 -79
- package/src/commands/audit/.omc/state/sessions/f9c17a0e-2dd8-4f7d-badf-631f266c5d4c/pre-tool-advisory-throttle.json +0 -22
- package/src/commands/audit/.omc/state/sessions/f9c17a0e-2dd8-4f7d-badf-631f266c5d4c/subagent-tracking-state.json +0 -26
- package/src/commands/audit/__tests__/audit.test.ts +0 -59
- package/src/commands/audit/audit.ts +0 -177
- package/src/commands/audit/index.ts +0 -1
- package/src/commands/config/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/last-tool-error-state.json +0 -7
- package/src/commands/config/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/pre-tool-advisory-throttle.json +0 -18
- package/src/commands/config/config.ts +0 -137
- package/src/commands/config/index.ts +0 -1
- package/src/commands/doctor/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/pre-tool-advisory-throttle.json +0 -14
- package/src/commands/doctor/__tests__/agent-files.test.ts +0 -88
- package/src/commands/doctor/__tests__/check-ide-installed.test.ts +0 -142
- package/src/commands/doctor/__tests__/check-legacy-user-global-config.test.ts +0 -110
- package/src/commands/doctor/doctor.ts +0 -576
- package/src/commands/doctor/index.ts +0 -1
- package/src/commands/env-autoload/env-autoload.ts +0 -24
- package/src/commands/env-autoload/index.ts +0 -1
- package/src/commands/env-clear/__tests__/env-clear.test.ts +0 -27
- package/src/commands/env-clear/env-clear.ts +0 -136
- package/src/commands/env-clear/index.ts +0 -1
- package/src/commands/env-list/env-list.ts +0 -48
- package/src/commands/env-list/index.ts +0 -1
- package/src/commands/env-load/__tests__/env-load.test.ts +0 -200
- package/src/commands/env-load/env-load.ts +0 -394
- package/src/commands/env-load/index.ts +0 -2
- package/src/commands/env-status/__tests__/env-status.test.ts +0 -78
- package/src/commands/env-status/env-status.ts +0 -108
- package/src/commands/env-status/index.ts +0 -1
- package/src/commands/gh-merge-dev/gh-merge-dev.ts +0 -203
- package/src/commands/gh-merge-dev/index.ts +0 -1
- package/src/commands/gh-release-deliver/gh-release-deliver.ts +0 -470
- package/src/commands/gh-release-deliver/index.ts +0 -1
- package/src/commands/gh-release-deploy-all/gh-release-deploy-all.ts +0 -207
- package/src/commands/gh-release-deploy-all/index.ts +0 -1
- package/src/commands/gh-release-deploy-selected/gh-release-deploy-selected.ts +0 -303
- package/src/commands/gh-release-deploy-selected/index.ts +0 -1
- package/src/commands/gh-release-list/gh-release-list.ts +0 -90
- package/src/commands/gh-release-list/index.ts +0 -1
- package/src/commands/init/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/pre-tool-advisory-throttle.json +0 -18
- package/src/commands/init/__tests__/agent-files.test.ts +0 -265
- package/src/commands/init/__tests__/migrate-config.test.ts +0 -422
- package/src/commands/init/__tests__/migrate-factory-config.test.ts +0 -93
- package/src/commands/init/__tests__/seed-user-global-config.test.ts +0 -64
- package/src/commands/init/__tests__/shell-body.test.ts +0 -131
- package/src/commands/init/agent-files.ts +0 -219
- package/src/commands/init/index.ts +0 -8
- package/src/commands/init/init.ts +0 -440
- package/src/commands/init/migrate-config.ts +0 -378
- package/src/commands/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
- package/src/commands/release-create/__tests__/release-create.test.ts +0 -92
- package/src/commands/release-create/index.ts +0 -1
- package/src/commands/release-create/release-create.ts +0 -447
- package/src/commands/release-desc-edit/index.ts +0 -1
- package/src/commands/release-desc-edit/release-desc-edit.ts +0 -227
- package/src/commands/vendor-check/__tests__/runtime-isolation.test.ts +0 -71
- package/src/commands/vendor-check/__tests__/vendor-check.test.ts +0 -87
- package/src/commands/vendor-check/index.ts +0 -1
- package/src/commands/vendor-check/vendor-check.ts +0 -127
- package/src/commands/vendor-config/__tests__/vendor-config.test.ts +0 -103
- package/src/commands/vendor-config/index.ts +0 -1
- package/src/commands/vendor-config/vendor-config.ts +0 -162
- package/src/commands/vendor-diff/__tests__/vendor-diff.test.ts +0 -74
- package/src/commands/vendor-diff/index.ts +0 -1
- package/src/commands/vendor-diff/vendor-diff.ts +0 -77
- package/src/commands/vendor-manifest/index.ts +0 -1
- package/src/commands/vendor-manifest/vendor-manifest.ts +0 -60
- package/src/commands/vendor-sync/__tests__/vendor-write.test.ts +0 -86
- package/src/commands/vendor-sync/index.ts +0 -1
- package/src/commands/vendor-sync/vendor-sync.ts +0 -90
- package/src/commands/version/index.ts +0 -1
- package/src/commands/version/version.ts +0 -33
- package/src/commands/worktrees-add/index.ts +0 -1
- package/src/commands/worktrees-add/worktrees-add.ts +0 -366
- package/src/commands/worktrees-list/index.ts +0 -1
- package/src/commands/worktrees-list/worktrees-list.ts +0 -105
- package/src/commands/worktrees-reload/__tests__/reload-cmux.test.ts +0 -119
- package/src/commands/worktrees-reload/index.ts +0 -1
- package/src/commands/worktrees-reload/worktrees-reload.ts +0 -230
- package/src/commands/worktrees-remove/index.ts +0 -1
- package/src/commands/worktrees-remove/worktrees-remove.ts +0 -199
- package/src/commands/worktrees-sync/index.ts +0 -1
- package/src/commands/worktrees-sync/worktrees-sync.ts +0 -198
- package/src/dev/__tests__/dev-server-options.test.ts +0 -57
- package/src/dev/__tests__/dev-server.test.ts +0 -420
- package/src/dev/__tests__/discovery.test.ts +0 -181
- package/src/dev/__tests__/fixtures.ts +0 -257
- package/src/dev/__tests__/ports.test.ts +0 -98
- package/src/dev/__tests__/serverless-local-run.test.ts +0 -533
- package/src/dev/dev-server.ts +0 -796
- package/src/dev/discovery.ts +0 -229
- package/src/dev/interfaces.ts +0 -11
- package/src/dev/managed-child.ts +0 -73
- package/src/dev/ports.ts +0 -100
- package/src/dev/serverless-local-run.ts +0 -329
- package/src/dev/turbo-watch.ts +0 -62
- package/src/dev/ui-dev.ts +0 -62
- package/src/entry/cli.ts +0 -630
- package/src/entry/dev-server.ts +0 -103
- package/src/entry/index.ts +0 -11
- package/src/entry/mcp.ts +0 -43
- package/src/integrations/cmux/__tests__/canonicalize-cmux-title.test.ts +0 -56
- package/src/integrations/cmux/__tests__/close-workspace-by-title.test.ts +0 -63
- package/src/integrations/cmux/__tests__/list-workspace-titles.test.ts +0 -65
- package/src/integrations/cmux/__tests__/open-workspace-with-layout.test.ts +0 -127
- package/src/integrations/cmux/canonicalize-cmux-title.ts +0 -31
- package/src/integrations/cmux/close-workspace-by-title.ts +0 -59
- package/src/integrations/cmux/index.ts +0 -5
- package/src/integrations/cmux/list-workspace-titles.ts +0 -47
- package/src/integrations/cmux/open-workspace-with-layout.ts +0 -80
- package/src/integrations/cmux/workspace-title.ts +0 -23
- package/src/integrations/cursor/.omc/state/agent-replay-f99d8dad-81d1-4987-8183-62edf0843d0c.jsonl +0 -2
- package/src/integrations/cursor/.omc/state/idle-notif-cooldown.json +0 -3
- package/src/integrations/cursor/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/pre-tool-advisory-throttle.json +0 -18
- package/src/integrations/cursor/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/subagent-tracking-state.json +0 -17
- package/src/integrations/cursor/add-folders-to-workspace.ts +0 -84
- package/src/integrations/cursor/index.ts +0 -6
- package/src/integrations/cursor/launch-cursor.ts +0 -12
- package/src/integrations/cursor/open-cursor-workspace.ts +0 -64
- package/src/integrations/cursor/reconcile-workspace-folders.ts +0 -90
- package/src/integrations/cursor/remove-folders-from-workspace.ts +0 -93
- package/src/integrations/cursor/resolve-workspace-path.ts +0 -13
- package/src/integrations/doppler/__tests__/doppler-errors.test.ts +0 -76
- package/src/integrations/doppler/doppler-cli-auth.ts +0 -31
- package/src/integrations/doppler/doppler-errors.ts +0 -88
- package/src/integrations/doppler/doppler-project.ts +0 -90
- package/src/integrations/doppler/index.ts +0 -4
- package/src/integrations/gh/gh-cli-auth/gh-cli-auth.ts +0 -29
- package/src/integrations/gh/gh-cli-auth/index.ts +0 -1
- package/src/integrations/gh/gh-release-prs/.omc/state/sessions/c6ed6186-1aac-48e0-aa2a-edc6da8e0410/pre-tool-advisory-throttle.json +0 -10
- package/src/integrations/gh/gh-release-prs/__tests__/gh-release-prs.test.ts +0 -198
- package/src/integrations/gh/gh-release-prs/gh-release-prs.ts +0 -206
- package/src/integrations/gh/gh-release-prs/index.ts +0 -2
- package/src/integrations/gh/index.ts +0 -3
- package/src/integrations/ide/__tests__/ide-facade.test.ts +0 -289
- package/src/integrations/ide/add-ide-worktree-folders.ts +0 -77
- package/src/integrations/ide/index.ts +0 -6
- package/src/integrations/ide/open-ide-workspace.ts +0 -51
- package/src/integrations/ide/provider-label.ts +0 -24
- package/src/integrations/ide/remove-ide-worktree-folders.ts +0 -145
- package/src/integrations/ide/types.ts +0 -41
- package/src/integrations/jira/api.ts +0 -325
- package/src/integrations/jira/index.ts +0 -19
- package/src/integrations/jira/types.ts +0 -85
- package/src/integrations/linear/.gitkeep +0 -0
- package/src/integrations/zed/__tests__/open-zed-workspace.test.ts +0 -69
- package/src/integrations/zed/__tests__/reuse-zed-workspace.test.ts +0 -86
- package/src/integrations/zed/add-folders-to-zed-workspace.ts +0 -30
- package/src/integrations/zed/index.ts +0 -3
- package/src/integrations/zed/open-zed-workspace.ts +0 -51
- package/src/integrations/zed/reuse-zed-workspace.ts +0 -57
- package/src/lib/.omc/state/sessions/f9c17a0e-2dd8-4f7d-badf-631f266c5d4c/pre-tool-advisory-throttle.json +0 -18
- package/src/lib/assert-never/assert-never.ts +0 -15
- package/src/lib/assert-never/index.ts +0 -1
- package/src/lib/command-catalog/__tests__/__snapshots__/command-catalog.test.ts.snap +0 -213
- package/src/lib/command-catalog/__tests__/command-catalog.test.ts +0 -193
- package/src/lib/command-catalog/command-catalog.ts +0 -146
- package/src/lib/command-catalog/index.ts +0 -2
- package/src/lib/command-echo/__tests__/command-echo.test.ts +0 -127
- package/src/lib/command-echo/command-echo.ts +0 -78
- package/src/lib/command-echo/index.ts +0 -1
- package/src/lib/constants/__tests__/constants.test.ts +0 -182
- package/src/lib/constants/constants.ts +0 -167
- package/src/lib/constants/index.ts +0 -22
- package/src/lib/env-autoload/__tests__/env-autoload.test.ts +0 -327
- package/src/lib/env-autoload/env-autoload.ts +0 -373
- package/src/lib/env-autoload/index.ts +0 -9
- package/src/lib/error-handlers/index.ts +0 -36
- package/src/lib/errors/__tests__/is-prompt-cancellation.test.ts +0 -48
- package/src/lib/errors/__tests__/operation-error.test.ts +0 -62
- package/src/lib/errors/format-zx-error.ts +0 -54
- package/src/lib/errors/is-prompt-cancellation.ts +0 -38
- package/src/lib/errors/operation-error.ts +0 -80
- package/src/lib/git-guard/__tests__/git-guard.test.ts +0 -92
- package/src/lib/git-guard/git-guard.ts +0 -55
- package/src/lib/git-guard/index.ts +0 -2
- package/src/lib/git-utils/__tests__/git-primitives.test.ts +0 -217
- package/src/lib/git-utils/__tests__/git-utils.test.ts +0 -49
- package/src/lib/git-utils/git-utils.ts +0 -179
- package/src/lib/git-utils/index.ts +0 -10
- package/src/lib/infra-kit-config/.omc/state/sessions/8dd0ad2f-3a90-4158-b9de-ec8e19a7c983/pre-tool-advisory-throttle.json +0 -18
- package/src/lib/infra-kit-config/__tests__/env-autoload-schema.test.ts +0 -71
- package/src/lib/infra-kit-config/__tests__/infra-kit-config.test.ts +0 -504
- package/src/lib/infra-kit-config/index.ts +0 -19
- package/src/lib/infra-kit-config/infra-kit-config.ts +0 -454
- package/src/lib/json-output/__tests__/json-output.test.ts +0 -139
- package/src/lib/json-output/index.ts +0 -1
- package/src/lib/json-output/json-output.ts +0 -47
- package/src/lib/logger/index.ts +0 -40
- package/src/lib/managed-block/__tests__/managed-block.test.ts +0 -121
- package/src/lib/managed-block/index.ts +0 -8
- package/src/lib/managed-block/managed-block.ts +0 -145
- package/src/lib/package-config/.omc/state/sessions/dde22a92-a0e9-4948-905d-25c9a812ab35/last-tool-error-state.json +0 -7
- package/src/lib/package-config/.omc/state/sessions/dde22a92-a0e9-4948-905d-25c9a812ab35/pre-tool-advisory-throttle.json +0 -10
- package/src/lib/package-config/__tests__/package-config.test.ts +0 -95
- package/src/lib/package-config/index.ts +0 -3
- package/src/lib/package-config/package-config-schema.ts +0 -19
- package/src/lib/package-config/package-config.ts +0 -97
- package/src/lib/package-validator/.omc/state/sessions/f9c17a0e-2dd8-4f7d-badf-631f266c5d4c/pre-tool-advisory-throttle.json +0 -10
- package/src/lib/package-validator/__tests__/package-validator.test.ts +0 -270
- package/src/lib/package-validator/checks/__tests__/checks.test.ts +0 -130
- package/src/lib/package-validator/checks/config-check.ts +0 -30
- package/src/lib/package-validator/checks/files-check.ts +0 -29
- package/src/lib/package-validator/checks/index.ts +0 -4
- package/src/lib/package-validator/checks/scripts-check.ts +0 -23
- package/src/lib/package-validator/checks/turbo-check.ts +0 -47
- package/src/lib/package-validator/fs-utils.ts +0 -18
- package/src/lib/package-validator/index.ts +0 -3
- package/src/lib/package-validator/loader/config-loader.ts +0 -77
- package/src/lib/package-validator/loader/index.ts +0 -2
- package/src/lib/package-validator/loader/package-discovery.ts +0 -98
- package/src/lib/package-validator/package-validator.ts +0 -48
- package/src/lib/package-validator/types.ts +0 -15
- package/src/lib/path-display/index.ts +0 -1
- package/src/lib/path-display/path-display.ts +0 -42
- package/src/lib/release-id/__tests__/release-id.test.ts +0 -359
- package/src/lib/release-id/__tests__/versioned-regression.test.ts +0 -69
- package/src/lib/release-id/index.ts +0 -15
- package/src/lib/release-id/release-id.ts +0 -258
- package/src/lib/release-utils/__tests__/release-utils.test.ts +0 -122
- package/src/lib/release-utils/index.ts +0 -15
- package/src/lib/release-utils/release-utils.ts +0 -231
- package/src/lib/render/__tests__/render.test.ts +0 -48
- package/src/lib/render/index.ts +0 -1
- package/src/lib/render/render.ts +0 -24
- package/src/lib/tool-handler/index.ts +0 -1
- package/src/lib/tool-handler/tool-handler.ts +0 -30
- package/src/lib/vendor/.omc/state/sessions/f09f401f-56c6-42cd-97be-c742c1956468/pre-tool-advisory-throttle.json +0 -10
- package/src/lib/vendor/__tests__/config-schema.test.ts +0 -31
- package/src/lib/vendor/__tests__/config.test.ts +0 -63
- package/src/lib/vendor/__tests__/factory-config.test.ts +0 -92
- package/src/lib/vendor/__tests__/vendor-lib.test.ts +0 -158
- package/src/lib/vendor/__tests__/zx-mock.ts +0 -32
- package/src/lib/vendor/config-schema.ts +0 -78
- package/src/lib/vendor/config.ts +0 -58
- package/src/lib/vendor/factory-config-schema.ts +0 -35
- package/src/lib/vendor/factory-config.ts +0 -91
- package/src/lib/vendor/hash.ts +0 -16
- package/src/lib/vendor/index.ts +0 -23
- package/src/lib/vendor/manifest.ts +0 -151
- package/src/lib/vendor/skip-sets.ts +0 -48
- package/src/lib/vendor/sync-ops.ts +0 -290
- package/src/lib/vendor/walk.ts +0 -56
- package/src/lib/version-utils/__tests__/load-existing-versions.test.ts +0 -37
- package/src/lib/version-utils/__tests__/next-version.test.ts +0 -407
- package/src/lib/version-utils/index.ts +0 -18
- package/src/lib/version-utils/load-existing-versions.ts +0 -86
- package/src/lib/version-utils/next-version.ts +0 -283
- package/src/lib/version-utils/version-utils.ts +0 -31
- package/src/lib/warm-cache/__tests__/warm-cache.test.ts +0 -164
- package/src/lib/warm-cache/index.ts +0 -7
- package/src/lib/warm-cache/warm-cache.ts +0 -136
- package/src/lib/worktrees/__tests__/remove-worktrees.test.ts +0 -167
- package/src/lib/worktrees/index.ts +0 -1
- package/src/lib/worktrees/remove-worktrees.ts +0 -66
- package/src/mcp/prompts/index.ts +0 -3
- package/src/mcp/resources/index.ts +0 -3
- package/src/mcp/server.ts +0 -27
- package/src/mcp/tools/index.ts +0 -21
- package/src/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
- package/src/sanity.test.tsx +0 -8
- package/src/tui/__tests__/boot.test.tsx +0 -61
- package/src/tui/__tests__/no-react-boundary.test.ts +0 -51
- package/src/tui/boot.tsx +0 -60
- package/src/tui/screens/__tests__/command-palette.test.tsx +0 -136
- package/src/tui/screens/command-palette.tsx +0 -159
- package/src/tui/types.ts +0 -8
- package/src/types.ts +0 -66
- package/tsconfig.json +0 -46
- package/tsconfig.tsbuildinfo +0 -1
- package/vitest.config.ts +0 -26
- package/vitest.setup.ts +0 -1
|
@@ -1,454 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs/promises'
|
|
2
|
-
import os from 'node:os'
|
|
3
|
-
import path from 'node:path'
|
|
4
|
-
import { z } from 'zod'
|
|
5
|
-
|
|
6
|
-
import { getProjectRoot } from 'src/lib/git-utils'
|
|
7
|
-
|
|
8
|
-
const INFRA_KIT_CONFIG_FILE = 'infra-kit.json'
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Directory under the user's home that holds all machine-local infra-kit config:
|
|
12
|
-
* the runtime `infra-kit.json` merge layer, per-project overrides, and the factory
|
|
13
|
-
* registry (`vendor.json`). Single source of truth for `.infra-kit`, reused
|
|
14
|
-
* by the vendor factory-config loader (no import cycle — this module imports no
|
|
15
|
-
* `lib/vendor` code).
|
|
16
|
-
*/
|
|
17
|
-
export const USER_CONFIG_DIR_NAME = '.infra-kit'
|
|
18
|
-
const USER_GLOBAL_CONFIG_FILE = 'infra-kit.json'
|
|
19
|
-
const USER_PROJECTS_DIR = 'projects'
|
|
20
|
-
|
|
21
|
-
// envManagement
|
|
22
|
-
const dopplerEnvManagementSchema = z.object({
|
|
23
|
-
provider: z.literal('doppler'),
|
|
24
|
-
config: z.object({
|
|
25
|
-
name: z.string().min(1),
|
|
26
|
-
}),
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
const envManagementSchema = z.discriminatedUnion('provider', [dopplerEnvManagementSchema])
|
|
30
|
-
|
|
31
|
-
// ide
|
|
32
|
-
// There is one attach style: each worktree is added to the configured editor's
|
|
33
|
-
// workspace and opened (no per-window mode). Cursor needs a `.code-workspace`
|
|
34
|
-
// path to reconcile its `folders` array against.
|
|
35
|
-
const cursorIdeConfigSchema = z.object({
|
|
36
|
-
workspaceConfigPath: z.string().min(1),
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
const cursorIdeSchema = z.object({
|
|
40
|
-
provider: z.literal('cursor'),
|
|
41
|
-
config: cursorIdeConfigSchema,
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
// Zed has no portable workspace file (no `.code-workspace`) and no folder-remove
|
|
45
|
-
// CLI: a multi-worktree workspace is realized by a single `zed <root> <wt...>`
|
|
46
|
-
// invocation. So `config` carries no settings — there's no path to point at.
|
|
47
|
-
const zedIdeConfigSchema = z.object({})
|
|
48
|
-
|
|
49
|
-
const zedIdeSchema = z.object({
|
|
50
|
-
provider: z.literal('zed'),
|
|
51
|
-
config: zedIdeConfigSchema,
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
const ideSchema = z.discriminatedUnion('provider', [cursorIdeSchema, zedIdeSchema])
|
|
55
|
-
|
|
56
|
-
// `ide` accepts a single provider (back-compat) OR an array to drive multiple
|
|
57
|
-
// editors at once (e.g. Cursor + Zed). Normalized to an array everywhere via
|
|
58
|
-
// `resolveConfiguredIdes`. Uniqueness-by-provider is enforced at parse time by a
|
|
59
|
-
// `.superRefine` on the full config schema (see below) — not here, so the message
|
|
60
|
-
// survives `z.union` error aggregation.
|
|
61
|
-
const idesSchema = z.union([ideSchema, z.array(ideSchema).min(1)])
|
|
62
|
-
|
|
63
|
-
// taskManager
|
|
64
|
-
const jiraTaskManagerSchema = z.object({
|
|
65
|
-
provider: z.literal('jira'),
|
|
66
|
-
config: z.object({
|
|
67
|
-
baseUrl: z.string().url(),
|
|
68
|
-
projectId: z.number().int().positive(),
|
|
69
|
-
}),
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
const taskManagerSchema = z.discriminatedUnion('provider', [jiraTaskManagerSchema])
|
|
73
|
-
|
|
74
|
-
// cmux pane layout for opened worktree workspaces. Named presets keep the config
|
|
75
|
-
// typo-proof (an enum, not a free string) and let the opener switch on a single
|
|
76
|
-
// value; extend the enum + the opener's switch to add a layout.
|
|
77
|
-
// two-columns — left | right, both full-height (default)
|
|
78
|
-
// three-pane — left split top/bottom + full-height right (legacy layout)
|
|
79
|
-
const cmuxLayouts = ['two-columns', 'three-pane'] as const
|
|
80
|
-
|
|
81
|
-
const cmuxConfigSchema = z.object({
|
|
82
|
-
layout: z.enum(cmuxLayouts).optional(),
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
// worktrees prompt defaults
|
|
86
|
-
const worktreesConfigSchema = z.object({
|
|
87
|
-
openInGithubDesktop: z.boolean().optional(),
|
|
88
|
-
openInCmux: z.boolean().optional(),
|
|
89
|
-
cmux: cmuxConfigSchema.optional(),
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
// dev-server per-app overrides. Maps an app folder name (e.g. `client`) to its
|
|
93
|
-
// local dev port and/or URL prefix. Both keys optional. An app absent from the
|
|
94
|
-
// map falls back to env (`{APP}_PORT` / `PORT`) then the built-in defaults, so
|
|
95
|
-
// the map is intentionally NOT validated against the discovered apps here — an
|
|
96
|
-
// unknown app name is simply ignored at resolve time (lib/dev), never a parse
|
|
97
|
-
// error that would brick every command.
|
|
98
|
-
const devAppConfigSchema = z
|
|
99
|
-
.object({
|
|
100
|
-
port: z.number().int().positive().optional(),
|
|
101
|
-
prefixUrl: z.string().min(1).optional(),
|
|
102
|
-
})
|
|
103
|
-
.strict()
|
|
104
|
-
|
|
105
|
-
const devConfigSchema = z.record(z.string().min(1), devAppConfigSchema)
|
|
106
|
-
|
|
107
|
-
// env auto-load: opt-in convenience that primes Doppler env when you work inside
|
|
108
|
-
// this project / a worktree. Absent => disabled. `trigger` selects the moment
|
|
109
|
-
// (pick one):
|
|
110
|
-
// shell-startup — when a new shell opens inside the project
|
|
111
|
-
// cli-invocation — before each `infra-kit` command (primes SUBSEQUENT commands)
|
|
112
|
-
// `config` names which environment to load. It is intentionally NOT validated
|
|
113
|
-
// against `environments` here: an invalid name must DISABLE the feature at
|
|
114
|
-
// resolve time (lib/env-autoload), never throw inside the merged-config parse and
|
|
115
|
-
// brick every command.
|
|
116
|
-
const envAutoLoadSchema = z
|
|
117
|
-
.object({
|
|
118
|
-
trigger: z.enum(['shell-startup', 'cli-invocation']),
|
|
119
|
-
config: z.string().min(1),
|
|
120
|
-
})
|
|
121
|
-
.strict()
|
|
122
|
-
|
|
123
|
-
// Base object shape, kept separate so `.partial()` (which only works on a plain
|
|
124
|
-
// ZodObject, not the `.superRefine`-wrapped full schema) can derive the override
|
|
125
|
-
// schema from it.
|
|
126
|
-
const infraKitConfigObject = z.object({
|
|
127
|
-
environments: z.array(z.string().min(1)).min(1),
|
|
128
|
-
envManagement: envManagementSchema,
|
|
129
|
-
ide: idesSchema.optional(),
|
|
130
|
-
taskManager: taskManagerSchema.optional(),
|
|
131
|
-
worktrees: worktreesConfigSchema.optional(),
|
|
132
|
-
envAutoLoad: envAutoLoadSchema.optional(),
|
|
133
|
-
dev: devConfigSchema.optional(),
|
|
134
|
-
})
|
|
135
|
-
|
|
136
|
-
// Full schema = base object + a parse-time uniqueness check on the `ide` array.
|
|
137
|
-
// This runs inside the *merged* `safeParse` in getInfraKitConfig, so it's the
|
|
138
|
-
// gate for the final config. (The override layers use the `.partial()` form
|
|
139
|
-
// below, which drops this object-level refinement — acceptable, the merged
|
|
140
|
-
// parse is authoritative.)
|
|
141
|
-
export const infraKitConfigSchema = infraKitConfigObject.superRefine((cfg, ctx) => {
|
|
142
|
-
if (!Array.isArray(cfg.ide)) return
|
|
143
|
-
|
|
144
|
-
const seen = new Set<string>()
|
|
145
|
-
|
|
146
|
-
for (const entry of cfg.ide) {
|
|
147
|
-
if (seen.has(entry.provider)) {
|
|
148
|
-
ctx.addIssue({
|
|
149
|
-
code: 'custom',
|
|
150
|
-
message: 'each IDE provider may appear at most once',
|
|
151
|
-
path: ['ide'],
|
|
152
|
-
})
|
|
153
|
-
|
|
154
|
-
return
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
seen.add(entry.provider)
|
|
158
|
-
}
|
|
159
|
-
})
|
|
160
|
-
|
|
161
|
-
export const infraKitOverrideConfigSchema = infraKitConfigObject.partial()
|
|
162
|
-
|
|
163
|
-
export type InfraKitConfig = z.infer<typeof infraKitConfigSchema>
|
|
164
|
-
|
|
165
|
-
/** Resolved env auto-load config (`{ trigger, config }`), or `undefined` when off. */
|
|
166
|
-
export type EnvAutoLoadConfig = z.infer<typeof envAutoLoadSchema>
|
|
167
|
-
|
|
168
|
-
/** Per-app dev-server overrides (`{ port?, prefixUrl? }`). */
|
|
169
|
-
export type DevAppConfig = z.infer<typeof devAppConfigSchema>
|
|
170
|
-
|
|
171
|
-
/** The full `dev` section: a map of app folder name to its {@link DevAppConfig}. */
|
|
172
|
-
export type DevConfig = z.infer<typeof devConfigSchema>
|
|
173
|
-
|
|
174
|
-
/** A single resolved IDE entry (`{ provider, config }`). */
|
|
175
|
-
export type ConfiguredIde = z.infer<typeof ideSchema>
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Normalize the `ide` config (single object, array, or unset) into a flat list.
|
|
179
|
-
* Validation-free: assumes already-parsed input (uniqueness is enforced by the
|
|
180
|
-
* schema). The one source of truth for "which editors are configured."
|
|
181
|
-
*
|
|
182
|
-
* @example
|
|
183
|
-
* resolveConfiguredIdes({ ide: { provider: 'cursor', config: {...} } }) // => [cursor]
|
|
184
|
-
* resolveConfiguredIdes({ ide: [cursor, zed] }) // => [cursor, zed]
|
|
185
|
-
* resolveConfiguredIdes({}) // => []
|
|
186
|
-
*/
|
|
187
|
-
export const resolveConfiguredIdes = (config: InfraKitConfig): ConfiguredIde[] => {
|
|
188
|
-
const ide = config.ide
|
|
189
|
-
|
|
190
|
-
if (!ide) return []
|
|
191
|
-
|
|
192
|
-
return Array.isArray(ide) ? ide : [ide]
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/** A cmux pane layout preset (see {@link cmuxLayouts}). */
|
|
196
|
-
export type CmuxLayout = (typeof cmuxLayouts)[number]
|
|
197
|
-
|
|
198
|
-
/** The layout applied when `worktrees.cmux.layout` is left unset. */
|
|
199
|
-
export const DEFAULT_CMUX_LAYOUT: CmuxLayout = 'two-columns'
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Resolve the cmux pane layout for opened worktree workspaces, falling back to
|
|
203
|
-
* {@link DEFAULT_CMUX_LAYOUT} when unconfigured. The one source of truth for
|
|
204
|
-
* "which layout should the cmux opener build."
|
|
205
|
-
*
|
|
206
|
-
* @example
|
|
207
|
-
* resolveCmuxLayout({ worktrees: { cmux: { layout: 'three-pane' } } }) // => 'three-pane'
|
|
208
|
-
* resolveCmuxLayout({}) // => 'two-columns'
|
|
209
|
-
*/
|
|
210
|
-
export const resolveCmuxLayout = (config: InfraKitConfig): CmuxLayout => {
|
|
211
|
-
return config.worktrees?.cmux?.layout ?? DEFAULT_CMUX_LAYOUT
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
export interface InfraKitConfigPaths {
|
|
215
|
-
/** Committed project config (required). */
|
|
216
|
-
main: string
|
|
217
|
-
/** User-scope global overrides applied to every project. */
|
|
218
|
-
userGlobal: string
|
|
219
|
-
/** User-scope per-project overrides — `<userProjectsDir>/<projectName>/infra-kit.json`. */
|
|
220
|
-
userProject: string
|
|
221
|
-
/** Repo basename (`path.basename(projectRoot)`) used to namespace the user-project file. */
|
|
222
|
-
projectName: string
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
interface CacheEntry {
|
|
226
|
-
mtimes: Record<keyof Omit<InfraKitConfigPaths, 'projectName'>, number | null>
|
|
227
|
-
value: InfraKitConfig
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
let cached: CacheEntry | null = null
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Resolve every file path that participates in the config merge chain. Always
|
|
234
|
-
* returns paths even for files that don't yet exist, so callers can use them
|
|
235
|
-
* for "where would my override go?" prompts.
|
|
236
|
-
*
|
|
237
|
-
* @example
|
|
238
|
-
* const paths = await getInfraKitConfigPaths()
|
|
239
|
-
* // {
|
|
240
|
-
* // main: '/Users/arthur/projects/api/infra-kit.json',
|
|
241
|
-
* // userGlobal: '/Users/arthur/.infra-kit/infra-kit.json',
|
|
242
|
-
* // userProject: '/Users/arthur/.infra-kit/projects/api/infra-kit.json',
|
|
243
|
-
* // projectName: 'api',
|
|
244
|
-
* // }
|
|
245
|
-
*/
|
|
246
|
-
export const getInfraKitConfigPaths = async (): Promise<InfraKitConfigPaths> => {
|
|
247
|
-
const projectRoot = await getProjectRoot()
|
|
248
|
-
// Repo name is the project-root basename (same as getRepoName), derived here to
|
|
249
|
-
// avoid a second `git rev-parse` — getRepoName would re-resolve the root.
|
|
250
|
-
const projectName = path.basename(projectRoot)
|
|
251
|
-
const userConfigDir = path.join(os.homedir(), USER_CONFIG_DIR_NAME)
|
|
252
|
-
|
|
253
|
-
return {
|
|
254
|
-
main: path.join(projectRoot, INFRA_KIT_CONFIG_FILE),
|
|
255
|
-
userGlobal: path.join(userConfigDir, USER_GLOBAL_CONFIG_FILE),
|
|
256
|
-
userProject: path.join(userConfigDir, USER_PROJECTS_DIR, projectName, INFRA_KIT_CONFIG_FILE),
|
|
257
|
-
projectName,
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* Read and validate `infra-kit.json`, with optional override layers shallow-merged
|
|
263
|
-
* on top in this order (later wins):
|
|
264
|
-
* 1. project `infra-kit.json` — committed source of truth
|
|
265
|
-
* 2. `~/.infra-kit/infra-kit.json` — user-global defaults
|
|
266
|
-
* 3. `~/.infra-kit/projects/<repo-name>/infra-kit.json` — user-scope per-project overrides
|
|
267
|
-
*
|
|
268
|
-
* Top-level keys (entire capability sections like `ide`, `envManagement`)
|
|
269
|
-
* replace wholesale. Results are cached per file mtimes so the long-running
|
|
270
|
-
* MCP server picks up edits without a restart.
|
|
271
|
-
*
|
|
272
|
-
* @example
|
|
273
|
-
* // infra-kit.json: { "environments": ["dev"], "envManagement": { "provider": "doppler", "config": { "name": "p" } } }
|
|
274
|
-
* // ~/.infra-kit/infra-kit.json: { "ide": { "provider": "cursor", "config": { "workspaceConfigPath": "./ws.code-workspace" } } }
|
|
275
|
-
* const cfg = await getInfraKitConfig()
|
|
276
|
-
* // => { environments: ['dev'], envManagement: {...}, ide: { provider: 'cursor', config: { workspaceConfigPath: './ws.code-workspace' } } }
|
|
277
|
-
*/
|
|
278
|
-
export const getInfraKitConfig = async (): Promise<InfraKitConfig> => {
|
|
279
|
-
const paths = await getInfraKitConfigPaths()
|
|
280
|
-
|
|
281
|
-
let mainStat: Awaited<ReturnType<typeof fs.stat>>
|
|
282
|
-
|
|
283
|
-
try {
|
|
284
|
-
mainStat = await fs.stat(paths.main)
|
|
285
|
-
} catch {
|
|
286
|
-
cached = null
|
|
287
|
-
|
|
288
|
-
// Bridge the YAML→JSON cutover: if a legacy infra-kit.yml is sitting where
|
|
289
|
-
// the JSON config should be, point the user at the one-shot migration.
|
|
290
|
-
const legacyYmlPath = paths.main.replace(/\.json$/, '.yml')
|
|
291
|
-
|
|
292
|
-
if (await statIfExists(legacyYmlPath)) {
|
|
293
|
-
throw new Error(
|
|
294
|
-
`infra-kit.json not found at ${paths.main}. A legacy infra-kit.yml exists — run \`infra-kit init\` to convert it.`,
|
|
295
|
-
)
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
throw new Error(`infra-kit.json not found at ${paths.main}`)
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
const [userGlobalStat, userProjectStat] = await Promise.all([
|
|
302
|
-
statIfExists(paths.userGlobal),
|
|
303
|
-
statIfExists(paths.userProject),
|
|
304
|
-
])
|
|
305
|
-
|
|
306
|
-
const mtimes = {
|
|
307
|
-
main: Number(mainStat.mtimeMs),
|
|
308
|
-
userGlobal: userGlobalStat ? Number(userGlobalStat.mtimeMs) : null,
|
|
309
|
-
userProject: userProjectStat ? Number(userProjectStat.mtimeMs) : null,
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
if (cached && shallowEqual(cached.mtimes, mtimes)) {
|
|
313
|
-
return cached.value
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
const layers: ConfigLayer[] = [
|
|
317
|
-
{ label: 'infra-kit.json', path: paths.main, required: true },
|
|
318
|
-
{ label: '~/.infra-kit/infra-kit.json', path: paths.userGlobal, required: false },
|
|
319
|
-
{
|
|
320
|
-
label: `~/.infra-kit/projects/${paths.projectName}/infra-kit.json`,
|
|
321
|
-
path: paths.userProject,
|
|
322
|
-
required: false,
|
|
323
|
-
},
|
|
324
|
-
]
|
|
325
|
-
|
|
326
|
-
let merged: Record<string, unknown> = {}
|
|
327
|
-
|
|
328
|
-
for (const layer of layers) {
|
|
329
|
-
const data = await loadLayer(layer)
|
|
330
|
-
|
|
331
|
-
if (data === null) continue
|
|
332
|
-
|
|
333
|
-
merged = { ...merged, ...data }
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
const finalResult = infraKitConfigSchema.safeParse(merged)
|
|
337
|
-
|
|
338
|
-
if (!finalResult.success) {
|
|
339
|
-
throw new Error(`Invalid merged infra-kit config: ${z.prettifyError(finalResult.error)}`)
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
cached = { mtimes, value: finalResult.data }
|
|
343
|
-
|
|
344
|
-
return finalResult.data
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
/**
|
|
348
|
-
* For tests — drops the in-memory cache so the next read hits disk.
|
|
349
|
-
*
|
|
350
|
-
* @example
|
|
351
|
-
* resetInfraKitConfigCache()
|
|
352
|
-
* await getInfraKitConfig() // re-reads files even if mtimes look unchanged
|
|
353
|
-
*/
|
|
354
|
-
export const resetInfraKitConfigCache = (): void => {
|
|
355
|
-
cached = null
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
/**
|
|
359
|
-
* `fs.stat` that returns `null` instead of throwing on ENOENT. Used so the
|
|
360
|
-
* resolver can probe optional files in the merge chain without try/catch noise.
|
|
361
|
-
*
|
|
362
|
-
* @example
|
|
363
|
-
* const stat = await statIfExists('/does/not/exist') // => null
|
|
364
|
-
*/
|
|
365
|
-
const statIfExists = async (filePath: string): Promise<Awaited<ReturnType<typeof fs.stat>> | null> => {
|
|
366
|
-
try {
|
|
367
|
-
return await fs.stat(filePath)
|
|
368
|
-
} catch {
|
|
369
|
-
return null
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
/**
|
|
374
|
-
* `fs.readFile` that returns `null` instead of throwing on ENOENT.
|
|
375
|
-
*
|
|
376
|
-
* @example
|
|
377
|
-
* const raw = await readIfExists('/missing.json') // => null
|
|
378
|
-
* const raw = await readIfExists('/exists.json') // => '{ "environments": ["dev"] }\n'
|
|
379
|
-
*/
|
|
380
|
-
const readIfExists = async (filePath: string): Promise<string | null> => {
|
|
381
|
-
try {
|
|
382
|
-
return await fs.readFile(filePath, 'utf-8')
|
|
383
|
-
} catch {
|
|
384
|
-
return null
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
/**
|
|
389
|
-
* Reference-equality comparison of every key in two flat records. Used to
|
|
390
|
-
* cheaply detect whether the cached mtime fingerprint still matches.
|
|
391
|
-
*
|
|
392
|
-
* @example
|
|
393
|
-
* shallowEqual({ a: 1, b: 2 }, { a: 1, b: 2 }) // => true
|
|
394
|
-
* shallowEqual({ a: 1 }, { a: 1, b: 2 }) // => false
|
|
395
|
-
* shallowEqual({ a: 1 }, { a: 2 }) // => false
|
|
396
|
-
*/
|
|
397
|
-
const shallowEqual = <T extends Record<string, unknown>>(a: T, b: T): boolean => {
|
|
398
|
-
const keys = Object.keys(a)
|
|
399
|
-
|
|
400
|
-
if (keys.length !== Object.keys(b).length) return false
|
|
401
|
-
|
|
402
|
-
return keys.every((k) => {
|
|
403
|
-
return a[k] === b[k]
|
|
404
|
-
})
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
interface ConfigLayer {
|
|
408
|
-
label: string
|
|
409
|
-
path: string
|
|
410
|
-
required: boolean
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
/**
|
|
414
|
-
* Read a single layer of the merge chain: parse the JSON if the file exists
|
|
415
|
-
* and validate it against the override schema. Returns `null` if an optional
|
|
416
|
-
* layer is missing; throws if the layer is required, malformed, or invalid.
|
|
417
|
-
* An empty/whitespace-only file is treated as `{}` (JSON.parse would throw).
|
|
418
|
-
*
|
|
419
|
-
* @example
|
|
420
|
-
* await loadLayer({ label: '~/.infra-kit/infra-kit.json', path: '/missing.json', required: false })
|
|
421
|
-
* // => null
|
|
422
|
-
*
|
|
423
|
-
* @example
|
|
424
|
-
* // /home/me/.infra-kit/infra-kit.json: '{ "ide": { "provider": "cursor", "config": { "workspaceConfigPath": "./ws.code-workspace" } } }'
|
|
425
|
-
* await loadLayer({ label: '~/.infra-kit/infra-kit.json', path: '/home/me/.infra-kit/infra-kit.json', required: false })
|
|
426
|
-
* // => { ide: { provider: 'cursor', config: { workspaceConfigPath: './ws.code-workspace' } } }
|
|
427
|
-
*/
|
|
428
|
-
const loadLayer = async (layer: ConfigLayer): Promise<Record<string, unknown> | null> => {
|
|
429
|
-
const raw = await readIfExists(layer.path)
|
|
430
|
-
|
|
431
|
-
if (raw === null) {
|
|
432
|
-
if (layer.required) {
|
|
433
|
-
throw new Error(`${layer.label} not found at ${layer.path}`)
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
return null
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
let parsedRaw: unknown
|
|
440
|
-
|
|
441
|
-
try {
|
|
442
|
-
parsedRaw = raw.trim() === '' ? {} : JSON.parse(raw)
|
|
443
|
-
} catch (err) {
|
|
444
|
-
throw new Error(`Invalid JSON in ${layer.label} at ${layer.path}: ${(err as Error).message}`)
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
const result = infraKitOverrideConfigSchema.safeParse(parsedRaw)
|
|
448
|
-
|
|
449
|
-
if (!result.success) {
|
|
450
|
-
throw new Error(`Invalid ${layer.label} at ${layer.path}: ${z.prettifyError(result.error)}`)
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
return result.data as Record<string, unknown>
|
|
454
|
-
}
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander'
|
|
2
|
-
import { afterEach, describe, expect, it } from 'vitest'
|
|
3
|
-
|
|
4
|
-
import { addJsonOption, emit, jsonOutput } from '../json-output'
|
|
5
|
-
|
|
6
|
-
describe('json-output', () => {
|
|
7
|
-
afterEach(() => {
|
|
8
|
-
jsonOutput.enabled = false
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
describe('emit', () => {
|
|
12
|
-
it('writes structuredContent as pretty JSON when enabled', () => {
|
|
13
|
-
jsonOutput.enabled = true
|
|
14
|
-
const writes: string[] = []
|
|
15
|
-
|
|
16
|
-
const result = emit({ structuredContent: { version: '1.2.3' } }, (text) => {
|
|
17
|
-
writes.push(text)
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
expect(writes).toHaveLength(1)
|
|
21
|
-
const [payload = ''] = writes
|
|
22
|
-
|
|
23
|
-
expect(JSON.parse(payload)).toEqual({ version: '1.2.3' })
|
|
24
|
-
// returns the result unchanged for pass-through use (emit(await handler()))
|
|
25
|
-
expect(result).toEqual({ structuredContent: { version: '1.2.3' } })
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
it('is a no-op when json mode is disabled', () => {
|
|
29
|
-
jsonOutput.enabled = false
|
|
30
|
-
const writes: string[] = []
|
|
31
|
-
|
|
32
|
-
emit({ structuredContent: { a: 1 } }, (text) => {
|
|
33
|
-
writes.push(text)
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
expect(writes).toHaveLength(0)
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
it('writes nothing when structuredContent is undefined or null, even if enabled', () => {
|
|
40
|
-
jsonOutput.enabled = true
|
|
41
|
-
const writes: string[] = []
|
|
42
|
-
|
|
43
|
-
emit(undefined, (text) => {
|
|
44
|
-
writes.push(text)
|
|
45
|
-
})
|
|
46
|
-
emit({}, (text) => {
|
|
47
|
-
writes.push(text)
|
|
48
|
-
})
|
|
49
|
-
emit({ structuredContent: null }, (text) => {
|
|
50
|
-
writes.push(text)
|
|
51
|
-
})
|
|
52
|
-
|
|
53
|
-
expect(writes).toHaveLength(0)
|
|
54
|
-
})
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
// Regression: `--json` must activate on grouped/nested subcommands, not just
|
|
58
|
-
// flat top-level commands. Commander binds a post-subcommand `--json` to the
|
|
59
|
-
// parent group, so the preAction hook must read `optsWithGlobals()`, not
|
|
60
|
-
// `opts()`. This drives the real Commander parse path end-to-end.
|
|
61
|
-
describe('grouped subcommand --json (regression)', () => {
|
|
62
|
-
const buildProgram = (writes: string[]): Command => {
|
|
63
|
-
const program = new Command()
|
|
64
|
-
const group = program.command('group')
|
|
65
|
-
|
|
66
|
-
group.command('leaf').action(() => {
|
|
67
|
-
emit({ structuredContent: { ok: true } }, (text) => {
|
|
68
|
-
writes.push(text)
|
|
69
|
-
})
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
program.commands.forEach(addJsonOption)
|
|
73
|
-
program.hook('preAction', (_thisCommand, actionCommand) => {
|
|
74
|
-
jsonOutput.enabled = Boolean(actionCommand.optsWithGlobals().json)
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
return program
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
it('emits JSON for `group leaf --json` (post-subcommand flag on a nested command)', async () => {
|
|
81
|
-
const writes: string[] = []
|
|
82
|
-
|
|
83
|
-
await buildProgram(writes).parseAsync(['node', 'cli', 'group', 'leaf', '--json'])
|
|
84
|
-
|
|
85
|
-
expect(writes).toHaveLength(1)
|
|
86
|
-
const [payload = ''] = writes
|
|
87
|
-
|
|
88
|
-
expect(JSON.parse(payload)).toEqual({ ok: true })
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
it('emits nothing for `group leaf` without --json', async () => {
|
|
92
|
-
const writes: string[] = []
|
|
93
|
-
|
|
94
|
-
await buildProgram(writes).parseAsync(['node', 'cli', 'group', 'leaf'])
|
|
95
|
-
|
|
96
|
-
expect(writes).toHaveLength(0)
|
|
97
|
-
})
|
|
98
|
-
})
|
|
99
|
-
|
|
100
|
-
describe('addJsonOption', () => {
|
|
101
|
-
it('registers --json on a command', () => {
|
|
102
|
-
const cmd = new Command('demo')
|
|
103
|
-
|
|
104
|
-
addJsonOption(cmd)
|
|
105
|
-
|
|
106
|
-
expect(
|
|
107
|
-
cmd.options.some((option) => {
|
|
108
|
-
return option.long === '--json'
|
|
109
|
-
}),
|
|
110
|
-
).toBe(true)
|
|
111
|
-
})
|
|
112
|
-
|
|
113
|
-
it('is idempotent (does not double-register)', () => {
|
|
114
|
-
const cmd = new Command('demo')
|
|
115
|
-
|
|
116
|
-
addJsonOption(cmd)
|
|
117
|
-
addJsonOption(cmd)
|
|
118
|
-
|
|
119
|
-
const jsonOptions = cmd.options.filter((option) => {
|
|
120
|
-
return option.long === '--json'
|
|
121
|
-
})
|
|
122
|
-
|
|
123
|
-
expect(jsonOptions).toHaveLength(1)
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
it('registers --json on nested subcommands too', () => {
|
|
127
|
-
const parent = new Command('parent')
|
|
128
|
-
const child = parent.command('child')
|
|
129
|
-
|
|
130
|
-
addJsonOption(parent)
|
|
131
|
-
|
|
132
|
-
expect(
|
|
133
|
-
child.options.some((option) => {
|
|
134
|
-
return option.long === '--json'
|
|
135
|
-
}),
|
|
136
|
-
).toBe(true)
|
|
137
|
-
})
|
|
138
|
-
})
|
|
139
|
-
})
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { addJsonOption, emit, jsonOutput } from './json-output'
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import type { Command } from 'commander'
|
|
2
|
-
import process from 'node:process'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* `--json` output mode for the CLI. This is a presentation concern only: every
|
|
6
|
-
* command handler already returns a `structuredContent` payload (the same one
|
|
7
|
-
* the MCP surface consumes). Human/log output goes to stderr (see lib/logger),
|
|
8
|
-
* so writing the structured payload to stdout never collides with it.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
export interface CommandResult {
|
|
12
|
-
structuredContent?: unknown
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/** Mutable holder (object so `prefer-const` holds while the flag toggles per run). */
|
|
16
|
-
export const jsonOutput = { enabled: false }
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* In `--json` mode, write a command result's `structuredContent` to stdout as
|
|
20
|
-
* pretty JSON and return the result unchanged. Outside `--json` mode it is a
|
|
21
|
-
* no-op pass-through. The writer is injectable for testing.
|
|
22
|
-
*/
|
|
23
|
-
export const emit = <T extends CommandResult | void>(
|
|
24
|
-
result: T,
|
|
25
|
-
write: (text: string) => void = (text) => {
|
|
26
|
-
process.stdout.write(text)
|
|
27
|
-
},
|
|
28
|
-
): T => {
|
|
29
|
-
if (jsonOutput.enabled && result && result.structuredContent != null) {
|
|
30
|
-
write(`${JSON.stringify(result.structuredContent, null, 2)}\n`)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return result
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/** Register `--json` on a command and every nested subcommand (idempotent). */
|
|
37
|
-
export const addJsonOption = (cmd: Command): void => {
|
|
38
|
-
const alreadyHasJson = cmd.options.some((option) => {
|
|
39
|
-
return option.long === '--json'
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
if (!alreadyHasJson) {
|
|
43
|
-
cmd.option('--json', 'Output the structured result as JSON on stdout (human logs stay on stderr)')
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
cmd.commands.forEach(addJsonOption)
|
|
47
|
-
}
|
package/src/lib/logger/index.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import process from 'node:process'
|
|
2
|
-
import pino from 'pino'
|
|
3
|
-
import pretty from 'pino-pretty'
|
|
4
|
-
|
|
5
|
-
// eslint-disable-next-line sonarjs/publicly-writable-directories
|
|
6
|
-
export const LOG_FILE_PATH = '/tmp/mcp-infra-kit.log'
|
|
7
|
-
|
|
8
|
-
export const initLoggerMcp = () => {
|
|
9
|
-
const logLevel = process.argv.includes('--debug') ? 'debug' : 'info'
|
|
10
|
-
|
|
11
|
-
const logger = pino({ level: logLevel }, pino.destination({ dest: LOG_FILE_PATH }))
|
|
12
|
-
|
|
13
|
-
logger.info(`Logger initialized with level: ${logLevel}. Logging to: ${LOG_FILE_PATH}`)
|
|
14
|
-
|
|
15
|
-
return logger
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const initLoggerCLI = () => {
|
|
19
|
-
const logLevel = process.argv.includes('--debug') ? 'debug' : 'info'
|
|
20
|
-
|
|
21
|
-
const ignoreFields = ['time', 'pid', 'hostname']
|
|
22
|
-
|
|
23
|
-
if (logLevel === 'debug') {
|
|
24
|
-
ignoreFields.push('level')
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const logger = pino(
|
|
28
|
-
{ level: logLevel },
|
|
29
|
-
pretty({
|
|
30
|
-
destination: 2,
|
|
31
|
-
ignore: ignoreFields.join(','),
|
|
32
|
-
colorize: true,
|
|
33
|
-
}),
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
return logger
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Singleton logger instance for CLI usage
|
|
40
|
-
export const logger = initLoggerCLI()
|