infra-kit 0.1.113 → 0.1.115
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/.eslintcache +1 -1
- package/.omc/state/agent-replay-0d1515ce-4ebe-4ce8-a865-2897f68de168.jsonl +1 -0
- package/.omc/state/agent-replay-1fcfe0ec-7567-41c3-9bfd-501e99e86819.jsonl +19 -0
- package/.omc/state/agent-replay-38382db5-3088-4b5a-aff7-2561a60827c7.jsonl +17 -0
- package/.omc/state/agent-replay-50c36be9-a3a2-42b9-9c85-5a06d3e22f6a.jsonl +5 -0
- package/.omc/state/agent-replay-8198b3e5-fad6-4ee0-9c59-ef773ad89af4.jsonl +1 -0
- package/.omc/state/agent-replay-8cd7652a-b8b5-49cf-9b1f-bee8e5972458.jsonl +3 -0
- package/.omc/state/agent-replay-9bea518f-a9ee-4d14-bb53-a936ebaf647c.jsonl +7 -0
- package/.omc/state/agent-replay-b52d89fb-0e24-4901-bc66-27e3c1697126.jsonl +2 -0
- package/.omc/state/agent-replay-f581a1ae-0ee4-48a3-96f3-ce31a0633bb0.jsonl +1 -0
- package/.omc/state/agent-replay-f99d8dad-81d1-4987-8183-62edf0843d0c.jsonl +2 -0
- package/.omc/state/agent-replay-fe1057b4-9a25-4e8e-8c3f-3e11652ee697.jsonl +5 -0
- package/.omc/state/idle-notif-cooldown.json +1 -1
- package/.omc/state/sessions/0d1515ce-4ebe-4ce8-a865-2897f68de168/pre-tool-advisory-throttle.json +10 -0
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/last-tool-error-state.json +7 -0
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/mission-state.json +109 -0
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/pre-tool-advisory-throttle.json +42 -0
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/ralph-state.json +13 -0
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/skill-active-state.json +15 -0
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/subagent-tracking-state.json +62 -0
- package/.omc/state/sessions/1fcfe0ec-7567-41c3-9bfd-501e99e86819/ultrawork-state.json +11 -0
- package/.omc/state/sessions/23d0ff82-17e5-428b-8743-38f7979bb6f3/last-tool-error-state.json +7 -0
- package/.omc/state/sessions/23d0ff82-17e5-428b-8743-38f7979bb6f3/pre-tool-advisory-throttle.json +18 -0
- package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/last-tool-error-state.json +7 -0
- package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/mission-state.json +145 -0
- package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/pre-tool-advisory-throttle.json +38 -0
- package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/ralplan-state.json +11 -0
- package/.omc/state/sessions/38382db5-3088-4b5a-aff7-2561a60827c7/subagent-tracking-state.json +98 -0
- package/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/last-tool-error-state.json +7 -0
- package/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/pre-tool-advisory-throttle.json +18 -0
- package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/mission-state.json +61 -0
- package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/pre-tool-advisory-throttle.json +22 -0
- package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/skill-active-state.json +15 -0
- package/.omc/state/sessions/50c36be9-a3a2-42b9-9c85-5a06d3e22f6a/subagent-tracking-state.json +26 -0
- package/.omc/state/sessions/560ea519-574a-4713-b134-5bf6cfaf3c33/pre-tool-advisory-throttle.json +18 -0
- package/.omc/state/sessions/8198b3e5-fad6-4ee0-9c59-ef773ad89af4/pre-tool-advisory-throttle.json +14 -0
- package/.omc/state/sessions/8198b3e5-fad6-4ee0-9c59-ef773ad89af4/subagent-tracking-state.json +17 -0
- package/.omc/state/sessions/8cd7652a-b8b5-49cf-9b1f-bee8e5972458/pre-tool-advisory-throttle.json +18 -0
- package/.omc/state/sessions/8cd7652a-b8b5-49cf-9b1f-bee8e5972458/ralplan-state.json +11 -0
- package/.omc/state/sessions/8cd7652a-b8b5-49cf-9b1f-bee8e5972458/subagent-tracking-state.json +35 -0
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/last-tool-error-state.json +7 -0
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/mission-state.json +79 -0
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/pre-tool-advisory-throttle.json +22 -0
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/progress.txt +7 -0
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/skill-active-state.json +15 -0
- package/.omc/state/sessions/9bea518f-a9ee-4d14-bb53-a936ebaf647c/subagent-tracking-state.json +26 -0
- package/.omc/state/sessions/b52d89fb-0e24-4901-bc66-27e3c1697126/pre-tool-advisory-throttle.json +14 -0
- package/.omc/state/sessions/b52d89fb-0e24-4901-bc66-27e3c1697126/subagent-tracking-state.json +17 -0
- package/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/pre-tool-advisory-throttle.json +18 -0
- package/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/pre-tool-advisory-throttle.json +18 -0
- package/.omc/state/sessions/f581a1ae-0ee4-48a3-96f3-ce31a0633bb0/pre-tool-advisory-throttle.json +18 -0
- package/.omc/state/sessions/f581a1ae-0ee4-48a3-96f3-ce31a0633bb0/subagent-tracking-state.json +17 -0
- package/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/pre-tool-advisory-throttle.json +14 -0
- package/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/ralph-state.json +13 -0
- package/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/ultrawork-state.json +11 -0
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/last-tool-error-state.json +7 -0
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/mission-state.json +61 -0
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/prd.json +22 -0
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/pre-tool-advisory-throttle.json +22 -0
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/progress.txt +22 -0
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/skill-active-state.json +15 -0
- package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/subagent-tracking-state.json +26 -0
- package/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-test.log +92 -44
- package/dist/boot-K4QUAFSP.js +2 -0
- package/dist/boot-K4QUAFSP.js.map +7 -0
- package/dist/chunk-RTSP2FCA.js +2 -0
- package/dist/chunk-RTSP2FCA.js.map +7 -0
- package/dist/chunk-VPBZR2PY.js +166 -0
- package/dist/chunk-VPBZR2PY.js.map +7 -0
- package/dist/cli.js +11 -107
- package/dist/cli.js.map +4 -4
- package/dist/entry/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/lib/vendor/config-schema.d.ts +58 -0
- package/dist/mcp.js +1 -54
- package/dist/mcp.js.map +4 -4
- package/eslint.config.js +33 -1
- package/package.json +5 -1
- package/scripts/build.js +11 -1
- package/src/.omc/state/agent-replay-c513ef38-cc3e-4a29-9c4c-1e0137245dd5.jsonl +4 -0
- package/src/.omc/state/agent-replay-ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a.jsonl +2 -0
- package/src/.omc/state/idle-notif-cooldown.json +1 -1
- package/src/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/mission-state.json +79 -0
- package/src/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/pre-tool-advisory-throttle.json +22 -0
- package/src/.omc/state/sessions/c513ef38-cc3e-4a29-9c4c-1e0137245dd5/subagent-tracking-state.json +26 -0
- package/src/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/pre-tool-advisory-throttle.json +18 -0
- package/src/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/ralph-state.json +13 -0
- package/src/.omc/state/sessions/ed3e2cfb-a666-4bb1-bcc1-569d5d0b837a/ultrawork-state.json +11 -0
- package/src/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/pre-tool-advisory-throttle.json +14 -0
- package/src/commands/config/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/last-tool-error-state.json +7 -0
- package/src/commands/config/.omc/state/sessions/41336850-028c-476b-be1a-2164e1e46cac/pre-tool-advisory-throttle.json +18 -0
- package/src/commands/config/config.ts +7 -37
- package/src/commands/doctor/__tests__/agent-files.test.ts +8 -30
- package/src/commands/doctor/__tests__/check-legacy-user-global-config.test.ts +110 -0
- package/src/commands/doctor/doctor.ts +110 -44
- package/src/commands/env-autoload/env-autoload.ts +12 -0
- package/src/commands/env-autoload/index.ts +1 -0
- package/src/commands/env-clear/__tests__/env-clear.test.ts +27 -0
- package/src/commands/env-clear/env-clear.ts +22 -8
- package/src/commands/env-load/__tests__/env-load.test.ts +36 -1
- package/src/commands/env-load/env-load.ts +152 -35
- package/src/commands/env-load/index.ts +2 -1
- package/src/commands/env-status/__tests__/env-status.test.ts +78 -0
- package/src/commands/env-status/env-status.ts +19 -7
- package/src/commands/gh-release-deploy-all/gh-release-deploy-all.ts +45 -1
- package/src/commands/gh-release-deploy-selected/gh-release-deploy-selected.ts +46 -1
- package/src/commands/init/__tests__/agent-files.test.ts +145 -27
- package/src/commands/init/__tests__/migrate-config.test.ts +136 -5
- package/src/commands/init/__tests__/migrate-factory-config.test.ts +93 -0
- package/src/commands/init/__tests__/seed-user-global-config.test.ts +64 -0
- package/src/commands/init/__tests__/shell-body.test.ts +30 -0
- package/src/commands/init/agent-files.ts +65 -45
- package/src/commands/init/init.ts +140 -31
- package/src/commands/init/migrate-config.ts +160 -32
- package/src/commands/vendor-check/__tests__/runtime-isolation.test.ts +71 -0
- package/src/commands/vendor-check/__tests__/vendor-check.test.ts +87 -0
- package/src/commands/vendor-check/index.ts +1 -0
- package/src/commands/vendor-check/vendor-check.ts +127 -0
- package/src/commands/vendor-config/__tests__/vendor-config.test.ts +103 -0
- package/src/commands/vendor-config/index.ts +1 -0
- package/src/commands/vendor-config/vendor-config.ts +162 -0
- package/src/commands/vendor-diff/__tests__/vendor-diff.test.ts +74 -0
- package/src/commands/vendor-diff/index.ts +1 -0
- package/src/commands/vendor-diff/vendor-diff.ts +77 -0
- package/src/commands/vendor-manifest/index.ts +1 -0
- package/src/commands/vendor-manifest/vendor-manifest.ts +60 -0
- package/src/commands/vendor-sync/__tests__/vendor-write.test.ts +86 -0
- package/src/commands/vendor-sync/index.ts +1 -0
- package/src/commands/vendor-sync/vendor-sync.ts +90 -0
- package/src/commands/worktrees-add/worktrees-add.ts +1 -1
- package/src/commands/worktrees-reload/worktrees-reload.ts +6 -5
- package/src/commands/worktrees-remove/worktrees-remove.ts +10 -1
- package/src/commands/worktrees-sync/worktrees-sync.ts +9 -1
- package/src/entry/cli.ts +417 -210
- package/src/entry/index.ts +7 -1
- package/src/integrations/cmux/__tests__/open-workspace-with-layout.test.ts +127 -0
- package/src/integrations/cmux/close-workspace-by-title.ts +2 -2
- package/src/integrations/cmux/list-workspace-titles.ts +1 -1
- package/src/integrations/cmux/open-workspace-with-layout.ts +15 -4
- package/src/integrations/cursor/.omc/state/agent-replay-f99d8dad-81d1-4987-8183-62edf0843d0c.jsonl +2 -0
- package/src/integrations/cursor/.omc/state/idle-notif-cooldown.json +3 -0
- package/src/integrations/cursor/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/pre-tool-advisory-throttle.json +18 -0
- package/src/integrations/cursor/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/subagent-tracking-state.json +17 -0
- package/src/integrations/cursor/index.ts +1 -0
- package/src/integrations/cursor/launch-cursor.ts +12 -0
- package/src/integrations/cursor/open-cursor-workspace.ts +8 -14
- package/src/integrations/doppler/__tests__/doppler-errors.test.ts +76 -0
- package/src/integrations/doppler/doppler-cli-auth.ts +12 -4
- package/src/integrations/doppler/doppler-errors.ts +88 -0
- package/src/integrations/doppler/doppler-project.ts +80 -0
- package/src/integrations/doppler/index.ts +3 -1
- package/src/integrations/gh/gh-cli-auth/gh-cli-auth.ts +9 -5
- package/src/integrations/gh/gh-release-prs/gh-release-prs.ts +16 -8
- package/src/integrations/ide/__tests__/ide-facade.test.ts +57 -10
- package/src/integrations/ide/add-ide-worktree-folders.ts +2 -4
- package/src/integrations/ide/open-ide-workspace.ts +6 -6
- package/src/integrations/ide/remove-ide-worktree-folders.ts +95 -30
- package/src/integrations/ide/types.ts +10 -1
- package/src/integrations/zed/__tests__/open-zed-workspace.test.ts +1 -17
- package/src/integrations/zed/__tests__/reuse-zed-workspace.test.ts +86 -0
- package/src/integrations/zed/index.ts +1 -0
- package/src/integrations/zed/open-zed-workspace.ts +4 -10
- package/src/integrations/zed/reuse-zed-workspace.ts +57 -0
- package/src/lib/command-catalog/__tests__/__snapshots__/command-catalog.test.ts.snap +212 -0
- package/src/lib/command-catalog/__tests__/command-catalog.test.ts +193 -0
- package/src/lib/command-catalog/command-catalog.ts +141 -0
- package/src/lib/command-catalog/index.ts +2 -0
- package/src/lib/command-echo/__tests__/command-echo.test.ts +127 -0
- package/src/lib/constants/constants.ts +13 -0
- package/src/lib/constants/index.ts +2 -0
- package/src/lib/env-autoload/__tests__/env-autoload.test.ts +288 -0
- package/src/lib/env-autoload/env-autoload.ts +294 -0
- package/src/lib/env-autoload/index.ts +9 -0
- package/src/lib/errors/operation-error.ts +1 -1
- package/src/lib/infra-kit-config/__tests__/env-autoload-schema.test.ts +71 -0
- package/src/lib/infra-kit-config/__tests__/infra-kit-config.test.ts +77 -6
- package/src/lib/infra-kit-config/index.ts +9 -1
- package/src/lib/infra-kit-config/infra-kit-config.ts +71 -11
- package/src/lib/json-output/__tests__/json-output.test.ts +139 -0
- package/src/lib/json-output/index.ts +1 -0
- package/src/lib/json-output/json-output.ts +47 -0
- package/src/lib/managed-block/managed-block.ts +4 -4
- package/src/lib/path-display/index.ts +1 -0
- package/src/lib/path-display/path-display.ts +42 -0
- package/src/lib/render/__tests__/render.test.ts +48 -0
- package/src/lib/render/index.ts +1 -0
- package/src/lib/render/render.ts +24 -0
- package/src/lib/vendor/__tests__/config-schema.test.ts +31 -0
- package/src/lib/vendor/__tests__/config.test.ts +63 -0
- package/src/lib/vendor/__tests__/factory-config.test.ts +92 -0
- package/src/lib/vendor/__tests__/vendor-lib.test.ts +158 -0
- package/src/lib/vendor/__tests__/zx-mock.ts +32 -0
- package/src/lib/vendor/config-schema.ts +78 -0
- package/src/lib/vendor/config.ts +58 -0
- package/src/lib/vendor/factory-config-schema.ts +35 -0
- package/src/lib/vendor/factory-config.ts +91 -0
- package/src/lib/vendor/hash.ts +16 -0
- package/src/lib/vendor/index.ts +23 -0
- package/src/lib/vendor/manifest.ts +151 -0
- package/src/lib/vendor/skip-sets.ts +48 -0
- package/src/lib/vendor/sync-ops.ts +290 -0
- package/src/lib/vendor/walk.ts +56 -0
- package/src/lib/worktrees/remove-worktrees.ts +15 -0
- package/src/mcp/tools/index.ts +5 -42
- package/src/sanity.test.tsx +1 -0
- package/src/tui/__tests__/no-react-boundary.test.ts +51 -0
- package/src/tui/boot.tsx +45 -0
- package/src/tui/screens/__tests__/command-palette.test.tsx +136 -0
- package/src/tui/screens/command-palette.tsx +159 -0
- package/src/tui/types.ts +8 -0
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/vitest.config.ts +8 -0
- package/src/commands/worktrees-open/__tests__/open-cmux.test.ts +0 -96
- package/src/commands/worktrees-open/index.ts +0 -1
- package/src/commands/worktrees-open/worktrees-open.ts +0 -195
package/.omc/state/sessions/f99d8dad-81d1-4987-8183-62edf0843d0c/pre-tool-advisory-throttle.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"entries": {
|
|
4
|
+
"79a93d4a2f8f50b95f852280616242fee1855dc99a3c75211917f55e72e95fae": {
|
|
5
|
+
"last_emitted_at_ms": 1782111838873,
|
|
6
|
+
"message": "Use parallel execution for independent tasks. Use run_in_background for long operations (npm install, builds, tests)."
|
|
7
|
+
},
|
|
8
|
+
"466399dafa2d20f60587180bad0a07358eb7f2bce724df0ff682f038ad33f5ad": {
|
|
9
|
+
"last_emitted_at_ms": 1782111836437,
|
|
10
|
+
"message": "Read multiple files in parallel when possible for faster analysis."
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"updated_at": "2026-06-22T07:03:58.873Z"
|
|
14
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"active": true,
|
|
3
|
+
"iteration": 1,
|
|
4
|
+
"max_iterations": 100,
|
|
5
|
+
"started_at": "2026-06-22T07:07:31.606Z",
|
|
6
|
+
"prompt": "/ralph fix it",
|
|
7
|
+
"session_id": "f99d8dad-81d1-4987-8183-62edf0843d0c",
|
|
8
|
+
"project_path": "/Users/arthur/projects/infra-kit/apps/infra-kit/cli",
|
|
9
|
+
"linked_ultrawork": true,
|
|
10
|
+
"awaiting_confirmation": true,
|
|
11
|
+
"awaiting_confirmation_set_at": "2026-06-22T07:07:31.606Z",
|
|
12
|
+
"last_checked_at": "2026-06-22T07:07:31.606Z"
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"active": true,
|
|
3
|
+
"started_at": "2026-06-22T07:07:31.618Z",
|
|
4
|
+
"original_prompt": "/ralph fix it",
|
|
5
|
+
"session_id": "f99d8dad-81d1-4987-8183-62edf0843d0c",
|
|
6
|
+
"project_path": "/Users/arthur/projects/infra-kit/apps/infra-kit/cli",
|
|
7
|
+
"reinforcement_count": 0,
|
|
8
|
+
"awaiting_confirmation": true,
|
|
9
|
+
"awaiting_confirmation_set_at": "2026-06-22T07:07:31.618Z",
|
|
10
|
+
"last_checked_at": "2026-06-22T07:07:31.618Z"
|
|
11
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tool_name": "Read",
|
|
3
|
+
"tool_input_preview": "{\"file_path\":\"/Users/arthur/projects/infra-kit/apps/infra-kit/cli/src/lib/release-utils/release-utils.test.ts\"}",
|
|
4
|
+
"error": "File does not exist. Note: your current working directory is /Users/arthur/projects/infra-kit/apps/infra-kit/cli.",
|
|
5
|
+
"timestamp": "2026-06-22T10:50:56.310Z",
|
|
6
|
+
"retry_count": 2
|
|
7
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"updatedAt": "2026-06-22T10:56:08.258Z",
|
|
3
|
+
"missions": [
|
|
4
|
+
{
|
|
5
|
+
"id": "session:fe1057b4-9a25-4e8e-8c3f-3e11652ee697:none",
|
|
6
|
+
"source": "session",
|
|
7
|
+
"name": "none",
|
|
8
|
+
"objective": "Session mission",
|
|
9
|
+
"createdAt": "2026-06-22T10:50:30.138Z",
|
|
10
|
+
"updatedAt": "2026-06-22T10:56:08.258Z",
|
|
11
|
+
"status": "done",
|
|
12
|
+
"workerCount": 1,
|
|
13
|
+
"taskCounts": {
|
|
14
|
+
"total": 1,
|
|
15
|
+
"pending": 0,
|
|
16
|
+
"blocked": 0,
|
|
17
|
+
"inProgress": 0,
|
|
18
|
+
"completed": 1,
|
|
19
|
+
"failed": 0
|
|
20
|
+
},
|
|
21
|
+
"agents": [
|
|
22
|
+
{
|
|
23
|
+
"name": "architect:a5b8b19",
|
|
24
|
+
"role": "architect",
|
|
25
|
+
"ownership": "a5b8b195fc9e1c552",
|
|
26
|
+
"status": "done",
|
|
27
|
+
"currentStep": null,
|
|
28
|
+
"latestUpdate": "completed",
|
|
29
|
+
"completedSummary": null,
|
|
30
|
+
"updatedAt": "2026-06-22T10:56:08.258Z"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"timeline": [
|
|
34
|
+
{
|
|
35
|
+
"id": "session-start:a5b8b195fc9e1c552:2026-06-22T10:50:30.138Z",
|
|
36
|
+
"at": "2026-06-22T10:50:30.138Z",
|
|
37
|
+
"kind": "update",
|
|
38
|
+
"agent": "architect:a5b8b19",
|
|
39
|
+
"detail": "started architect:a5b8b19",
|
|
40
|
+
"sourceKey": "session-start:a5b8b195fc9e1c552"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "session-stop:a5b8b195fc9e1c552:2026-06-22T10:51:50.153Z",
|
|
44
|
+
"at": "2026-06-22T10:51:50.153Z",
|
|
45
|
+
"kind": "completion",
|
|
46
|
+
"agent": "architect:a5b8b19",
|
|
47
|
+
"detail": "completed",
|
|
48
|
+
"sourceKey": "session-stop:a5b8b195fc9e1c552"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "session-stop:a218b18d41dcf9eac:2026-06-22T10:56:08.258Z",
|
|
52
|
+
"at": "2026-06-22T10:56:08.258Z",
|
|
53
|
+
"kind": "completion",
|
|
54
|
+
"agent": "architect:a5b8b19",
|
|
55
|
+
"detail": "completed",
|
|
56
|
+
"sourceKey": "session-stop:a218b18d41dcf9eac"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"task": "Add unit tests for the command-echo module (apps/infra-kit/cli/src/lib/command-echo).",
|
|
3
|
+
"stories": [
|
|
4
|
+
{
|
|
5
|
+
"id": "US-001",
|
|
6
|
+
"title": "Cover command-echo print()/addOption()/lifecycle formatting",
|
|
7
|
+
"passes": true,
|
|
8
|
+
"acceptanceCriteria": [
|
|
9
|
+
"Test file exists at src/lib/command-echo/__tests__/command-echo.test.ts",
|
|
10
|
+
"print() emits nothing when not interactive (logger.info not called)",
|
|
11
|
+
"print() emits nothing when interactive but zero options",
|
|
12
|
+
"boolean true option renders as a bare flag (e.g. --yes), boolean false is omitted",
|
|
13
|
+
"string option is quoted (--flag \"value\")",
|
|
14
|
+
"array option is joined and quoted (--flag \"a, b\")",
|
|
15
|
+
"full equivalent-command line matches 'pnpm exec infra-kit <name> <opts>' format including the description round-trip via --release spec",
|
|
16
|
+
"start()/reset() clear prior state",
|
|
17
|
+
"All command-echo tests pass under vitest",
|
|
18
|
+
"Existing CLI tests still pass (no regression)"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
package/.omc/state/sessions/fe1057b4-9a25-4e8e-8c3f-3e11652ee697/pre-tool-advisory-throttle.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"entries": {
|
|
4
|
+
"79a93d4a2f8f50b95f852280616242fee1855dc99a3c75211917f55e72e95fae": {
|
|
5
|
+
"last_emitted_at_ms": 1782125437533,
|
|
6
|
+
"message": "Use parallel execution for independent tasks. Use run_in_background for long operations (npm install, builds, tests)."
|
|
7
|
+
},
|
|
8
|
+
"f6cbe67e25c00ba9a0ead130929145ece91fc2e69e856c9f7113a46311d4f6be": {
|
|
9
|
+
"last_emitted_at_ms": 1782125430019,
|
|
10
|
+
"message": "Spawning agent: oh-my-claudecode:architect (sonnet) | Task: Verify command-echo tests"
|
|
11
|
+
},
|
|
12
|
+
"466399dafa2d20f60587180bad0a07358eb7f2bce724df0ff682f038ad33f5ad": {
|
|
13
|
+
"last_emitted_at_ms": 1782125415238,
|
|
14
|
+
"message": "Read multiple files in parallel when possible for faster analysis."
|
|
15
|
+
},
|
|
16
|
+
"445ed27a3872b681d98190bae61ccb84954e1bc4e140df5370be958dee776b3a": {
|
|
17
|
+
"last_emitted_at_ms": 1782125373373,
|
|
18
|
+
"message": "Verify changes work after editing. Test functionality before marking complete."
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"updated_at": "2026-06-22T10:50:37.533Z"
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
US-001 — Add unit tests for command-echo: COMPLETE
|
|
2
|
+
|
|
3
|
+
Implemented:
|
|
4
|
+
- New test: apps/infra-kit/cli/src/lib/command-echo/__tests__/command-echo.test.ts (9 tests)
|
|
5
|
+
- Covers: not-interactive no-op, zero-options no-op, boolean true→bare flag / false→omitted,
|
|
6
|
+
string quoting, array join+quote, full equivalent-command format with --release description
|
|
7
|
+
round-trip, start()/reset() state clearing.
|
|
8
|
+
|
|
9
|
+
Verification (fresh evidence):
|
|
10
|
+
- command-echo tests: 9/9 pass
|
|
11
|
+
- full CLI suite: 365/365 pass across 32 files
|
|
12
|
+
- tsc --noEmit: clean
|
|
13
|
+
- architect review (sonnet): APPROVE — all 7 criteria covered by real assertions
|
|
14
|
+
- deslop pass: clean, no edits needed
|
|
15
|
+
- post-deslop regression: 9/9 pass
|
|
16
|
+
|
|
17
|
+
Learnings / patterns:
|
|
18
|
+
- Logger is mocked via vi.mock('src/lib/logger', () => ({ logger: { info: vi.fn(), ... } }));
|
|
19
|
+
capture print() output with vi.mocked(logger.info).
|
|
20
|
+
- command-echo is a singleton — tests reset() + mockClear() in beforeEach for isolation.
|
|
21
|
+
- Test setup is intentionally explicit (not DRY-abstracted) per repo conventions.
|
|
22
|
+
- Untested edge (optional, non-blocking): addOption() before start() yields empty command name.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"active": true,
|
|
3
|
+
"skill_name": "ai-slop-cleaner",
|
|
4
|
+
"session_id": "fe1057b4-9a25-4e8e-8c3f-3e11652ee697",
|
|
5
|
+
"started_at": "2026-06-22T10:51:56.134Z",
|
|
6
|
+
"last_checked_at": "2026-06-22T10:51:56.134Z",
|
|
7
|
+
"reinforcement_count": 0,
|
|
8
|
+
"max_reinforcements": 5,
|
|
9
|
+
"stale_ttl_ms": 900000,
|
|
10
|
+
"_meta": {
|
|
11
|
+
"written_at": "2026-06-22T10:51:56.134Z",
|
|
12
|
+
"mode": "skill-active",
|
|
13
|
+
"sessionId": "fe1057b4-9a25-4e8e-8c3f-3e11652ee697"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"agents": [
|
|
3
|
+
{
|
|
4
|
+
"agent_id": "a5b8b195fc9e1c552",
|
|
5
|
+
"agent_type": "oh-my-claudecode:architect",
|
|
6
|
+
"started_at": "2026-06-22T10:50:30.138Z",
|
|
7
|
+
"parent_mode": "none",
|
|
8
|
+
"status": "completed",
|
|
9
|
+
"completed_at": "2026-06-22T10:51:50.153Z",
|
|
10
|
+
"duration_ms": 80015
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"agent_id": "a218b18d41dcf9eac",
|
|
14
|
+
"agent_type": "unknown",
|
|
15
|
+
"started_at": "2026-06-22T10:56:08.258Z",
|
|
16
|
+
"parent_mode": "none",
|
|
17
|
+
"status": "completed",
|
|
18
|
+
"completed_at": "2026-06-22T10:56:08.258Z",
|
|
19
|
+
"duration_ms": 0
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"total_spawned": 1,
|
|
23
|
+
"total_completed": 2,
|
|
24
|
+
"total_failed": 0,
|
|
25
|
+
"last_updated": "2026-06-22T10:56:08.362Z"
|
|
26
|
+
}
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[2m$ pnpm run clean-artifacts && node ./scripts/build.js[22m
|
|
2
2
|
[2m$ rm -rf dist[22m
|
|
3
|
-
✅ Build was completed successfully: cli.js - [33m0.
|
|
4
|
-
✅ Build was completed successfully: index.js - [33m0.
|
|
5
|
-
✅ Build was completed successfully: mcp.js - [33m0.
|
|
3
|
+
✅ Build was completed successfully: cli.js - [33m0.0168[39m MB
|
|
4
|
+
✅ Build was completed successfully: index.js - [33m0.000126[39m MB
|
|
5
|
+
✅ Build was completed successfully: mcp.js - [33m0.00182[39m MB
|
|
6
6
|
✅ Type declarations emitted: dist/entry/index.d.ts
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -2,6 +2,33 @@
|
|
|
2
2
|
[?25l
|
|
3
3
|
[1m[30m[46m RUN [49m[39m[22m [36mv4.1.9 [39m[90m/Users/arthur/projects/infra-kit/apps/infra-kit/cli[39m
|
|
4
4
|
|
|
5
|
+
Sourcemap for "/Users/arthur/Library/pnpm/store/v11/links/@/ink-testing-library/4.0.0/990ef278cd16926ca8f94e3d73dd86da3c7d702a314086dabc7217c3d9b139d2/node_modules/ink-testing-library/build/index.js" points to missing source files
|
|
6
|
+
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
7
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
8
|
+
[32mINFO[39m: [36m updated CLAUDE.md[39m
|
|
9
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
10
|
+
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
11
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
12
|
+
[32mINFO[39m: [36m unchanged CLAUDE.md[39m
|
|
13
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
14
|
+
[32mINFO[39m: [36mSkipped agent-instruction files — no infra-kit.json at the repo root[39m
|
|
15
|
+
[32mINFO[39m: [36m updated CLAUDE.md[39m
|
|
16
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
17
|
+
[32mINFO[39m: [36m updated CLAUDE.md[39m
|
|
18
|
+
[32mINFO[39m: [36m removed AGENTS.md[39m
|
|
19
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
20
|
+
[32mINFO[39m: [36m updated CLAUDE.md[39m
|
|
21
|
+
[32mINFO[39m: [36m updated AGENTS.md[39m
|
|
22
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
23
|
+
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
24
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
25
|
+
[32mINFO[39m: [36m updated CLAUDE.md[39m
|
|
26
|
+
[32mINFO[39m: [36m removed AGENTS.md[39m
|
|
27
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
28
|
+
[32mINFO[39m: [36m unchanged CLAUDE.md[39m
|
|
29
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
30
|
+
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
31
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
5
32
|
[32mINFO[39m: [36m✓ Migrated ~/infra-kit.yml → ~/infra-kit.json[39m
|
|
6
33
|
[32mINFO[39m: [36m⚠ Skipped ~/infra-kit.yml — ~/infra-kit.json already exists (remove the stale .yml manually)[39m
|
|
7
34
|
[32mINFO[39m: [36m✓ Migrated ~/infra-kit.yml → ~/infra-kit.json[39m
|
|
@@ -12,68 +39,89 @@
|
|
|
12
39
|
: : :
|
|
13
40
|
^
|
|
14
41
|
[39m
|
|
15
|
-
[32mINFO[39m: [36m created AGENTS.md[39m
|
|
16
42
|
[32mINFO[39m: [36m✓ Migrated ~/infra-kit.yml → ~/infra-kit.json[39m
|
|
17
|
-
[32mINFO[39m: [36m
|
|
18
|
-
[32mINFO[39m: [
|
|
19
|
-
[32mINFO[39m: [
|
|
20
|
-
|
|
21
|
-
[32mINFO[39m: [
|
|
22
|
-
[32mINFO[39m: [
|
|
23
|
-
[32mINFO[39m: [
|
|
24
|
-
[32mINFO[39m: [36m
|
|
25
|
-
[32mINFO[39m: [
|
|
26
|
-
[32mINFO[39m: [
|
|
27
|
-
[32mINFO[39m: [
|
|
28
|
-
[32mINFO[39m: [36m
|
|
29
|
-
[32mINFO[39m: [36m
|
|
30
|
-
[32mINFO[39m: [36m
|
|
31
|
-
[32mINFO[39m: [
|
|
32
|
-
[32mINFO[39m: [
|
|
33
|
-
[32mINFO[39m: [36m
|
|
34
|
-
[32mINFO[39m: [36m
|
|
35
|
-
[32mINFO[39m: [36m
|
|
36
|
-
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.112)[39m
|
|
37
|
-
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/config.yml → ~/.infra-kit/config.json[39m
|
|
38
|
-
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/projects/infra-kit-init-migrate-test-0UISIg/infra-kit.yml → ~/.infra-kit/projects/infra-kit-init-migrate-test-0UISIg/infra-kit.json[39m
|
|
43
|
+
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/config.yml → ~/.infra-kit/infra-kit.json[39m
|
|
44
|
+
[32mINFO[39m: [36mFactory config: ~/.infra-kit/vendor.json [ ][39m
|
|
45
|
+
[32mINFO[39m: [36m
|
|
46
|
+
Not found — run `infra-kit vendor-config --init` to scaffold it.[39m
|
|
47
|
+
[32mINFO[39m: [36mFactory config: ~/.infra-kit/vendor.json [✓][39m
|
|
48
|
+
[32mINFO[39m: [36mworkspaceDir: /tmp/vendor-config-home-1leOPd/projects (resolved: /tmp/vendor-config-home-1leOPd/projects) [✓ exists][39m
|
|
49
|
+
[32mINFO[39m: [36mTargets:[39m
|
|
50
|
+
[32mINFO[39m: [36m [✓] repo-a ~/projects/repo-a[39m
|
|
51
|
+
[32mINFO[39m: [36mFactory config: ~/.infra-kit/vendor.json [✓][39m
|
|
52
|
+
[32mINFO[39m: [36mworkspaceDir: /tmp/vendor-config-home-ggiYiu/projects (resolved: /tmp/vendor-config-home-ggiYiu/projects) [✓ exists][39m
|
|
53
|
+
[32mINFO[39m: [36mTargets:[39m
|
|
54
|
+
[32mINFO[39m: [36m [ ] missing-repo ~/projects/missing-repo (not found — clone or remove)[39m
|
|
55
|
+
[32mINFO[39m: [36m✓ Created ~/.infra-kit/vendor.json[39m
|
|
56
|
+
[32mINFO[39m: [36m Edit `workspaceDir` (placeholder: ~/projects) to point at where your repos live.[39m
|
|
57
|
+
[32mINFO[39m: [36m Add at least one repo name to `targets` before running vendor sync/manifest/diff.[39m
|
|
58
|
+
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/projects/infra-kit-init-migrate-test-QB1hTw/infra-kit.yml → ~/.infra-kit/projects/infra-kit-init-migrate-test-QB1hTw/infra-kit.json[39m
|
|
59
|
+
[32mINFO[39m: [36m✓ Created ~/.infra-kit/vendor.json[39m
|
|
60
|
+
[32mINFO[39m: [36m Seeded 2 target(s) from the source vendor.config.ts.[39m
|
|
61
|
+
[32mINFO[39m: [36m Edit `workspaceDir` (placeholder: ~/projects) to point at where your repos live.[39m
|
|
39
62
|
[32mINFO[39m: [36m✓ Normalized ide config in ~/infra-kit.json (removed legacy "mode")[39m
|
|
63
|
+
[32mINFO[39m: [36mFactory config already exists at ~/.infra-kit/vendor.json — leaving it untouched.[39m
|
|
40
64
|
[32mINFO[39m: [36m✓ Normalized ide config in ~/infra-kit.json (removed legacy "mode")[39m
|
|
41
|
-
[32mINFO[39m: [36m✓ Normalized ide config in ~/.infra-kit/
|
|
42
|
-
[32mINFO[39m: [36m✓ Normalized ide config in ~/.infra-kit/projects/infra-kit-init-migrate-test-
|
|
65
|
+
[32mINFO[39m: [36m✓ Normalized ide config in ~/.infra-kit/infra-kit.json (removed legacy "mode")[39m
|
|
66
|
+
[32mINFO[39m: [36m✓ Normalized ide config in ~/.infra-kit/projects/infra-kit-init-migrate-test-kdR8XZ/infra-kit.json (removed legacy "mode")[39m
|
|
43
67
|
[32mINFO[39m: [36m⚠ Skipped normalizing ~/infra-kit.json — Expected property name or '}' in JSON at position 2 (line 1 column 3)[39m
|
|
68
|
+
[32mINFO[39m: [36m✓ Renamed ~/.infra-kit/config.json → ~/.infra-kit/infra-kit.json[39m
|
|
69
|
+
[32mINFO[39m: [36m✓ Renamed ~/.infra-kit/config.example.jsonc → ~/.infra-kit/infra-kit.example.jsonc[39m
|
|
70
|
+
[32mINFO[39m: [36m⚠ Skipped ~/.infra-kit/config.json — ~/.infra-kit/infra-kit.json already exists (remove the stale file manually)[39m
|
|
71
|
+
[32mINFO[39m: [36m✓ Renamed ~/.infra-kit/config.example.jsonc → ~/.infra-kit/infra-kit.example.jsonc[39m
|
|
72
|
+
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/config.yml → ~/.infra-kit/infra-kit.json[39m
|
|
73
|
+
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/config.yml → ~/.infra-kit/infra-kit.json[39m
|
|
74
|
+
[32mINFO[39m: [36m⚠ Skipped ~/.infra-kit/config.json — ~/.infra-kit/infra-kit.json already exists (remove the stale file manually)[39m
|
|
75
|
+
[32mINFO[39m: [36m❌ target-repo → vendor/configs (1 change(s)):[39m
|
|
76
|
+
[32mINFO[39m: [36m >f.st..... configs/a.js[39m
|
|
77
|
+
[32mINFO[39m: [36m✅ target-repo: copied 1/1 items + manifest[39m
|
|
44
78
|
[32mINFO[39m: [36m
|
|
45
79
|
@x/ok — PASS[39m
|
|
46
80
|
[32mINFO[39m: [36m [PASS] infra-kit.config.ts: present and valid[39m
|
|
47
81
|
[32mINFO[39m: [36m
|
|
48
82
|
✅ All valid (1 checked)[39m
|
|
83
|
+
[32mINFO[39m: [36m🎉 No drift detected.[39m
|
|
49
84
|
[32mINFO[39m: [36m
|
|
50
85
|
@x/no-config — FAIL[39m
|
|
51
|
-
[32mINFO[39m: [36m [FAIL] infra-kit.config.ts: infra-kit.config.ts not found at /tmp/audit-cmd-
|
|
86
|
+
[32mINFO[39m: [36m [FAIL] infra-kit.config.ts: infra-kit.config.ts not found at /tmp/audit-cmd-LG37cx/infra-kit.config.ts[39m
|
|
52
87
|
[32mINFO[39m: [36m
|
|
53
88
|
❌ Audit failed (1 checked)[39m
|
|
54
|
-
[32mINFO[39m: [36m
|
|
55
|
-
[32mINFO[39m: [36m
|
|
56
|
-
[
|
|
57
|
-
[
|
|
58
|
-
[32mINFO[39m: [36m
|
|
59
|
-
|
|
60
|
-
[32mINFO[39m: [36m
|
|
61
|
-
[32mINFO[39m: [
|
|
62
|
-
[
|
|
89
|
+
[32mINFO[39m: [36m⚠️ target-repo: target does not exist — skipped[39m
|
|
90
|
+
[32mINFO[39m: [36m✅ vendor/ matches manifest (1 files).[39m
|
|
91
|
+
[31mERROR[39m: [36m❌ vendor/ has drifted from vendor/.sync-manifest.json.[39m
|
|
92
|
+
[31mERROR[39m: [36m These files are mirrored from the source repo — edit them upstream, not here.[39m
|
|
93
|
+
[32mINFO[39m: [36m
|
|
94
|
+
Modified (1):[39m
|
|
95
|
+
[32mINFO[39m: [36m configs/a.js[39m
|
|
96
|
+
[32mINFO[39m: [36mℹ️ No vendor/ folder found — nothing to check.[39m
|
|
97
|
+
[31mERROR[39m: [36m❌ Missing vendor/.sync-manifest.json. Re-run the vendor sync to generate it.[39m
|
|
98
|
+
[32mINFO[39m: [36m✅ vendor/ matches manifest (2 files).[39m
|
|
99
|
+
[31mERROR[39m: [36m❌ vendor/ has drifted from vendor/.sync-manifest.json.[39m
|
|
100
|
+
[31mERROR[39m: [36m These files are mirrored from the source repo — edit them upstream, not here.[39m
|
|
101
|
+
[32mINFO[39m: [36m
|
|
102
|
+
Modified (1):[39m
|
|
103
|
+
[32mINFO[39m: [36m a.js[39m
|
|
104
|
+
[32mINFO[39m: [36m
|
|
105
|
+
Added (not in manifest) (1):[39m
|
|
106
|
+
[32mINFO[39m: [36m c.js[39m
|
|
107
|
+
[32mINFO[39m: [36m
|
|
108
|
+
Removed (in manifest, now missing) (1):[39m
|
|
109
|
+
[32mINFO[39m: [36m b.js[39m
|
|
110
|
+
[31mERROR[39m: [36m❌ vendor/.sync-manifest.json has a newer schemaVersion (2) than this CLI supports. Upgrade infra-kit.[39m
|
|
63
111
|
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
64
|
-
[32mINFO[39m: [
|
|
65
|
-
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.112)[39m
|
|
66
|
-
[32mINFO[39m: [36m created AGENTS.md[39m
|
|
112
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
67
113
|
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
68
|
-
[32mINFO[39m: [
|
|
69
|
-
[32mINFO[39m: [
|
|
114
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.114)[39m
|
|
115
|
+
[32mINFO[39m: [36mWrote user-global config to /tmp/seed-user-global-test-bhoQdQ/.infra-kit/infra-kit.json (see the sibling .example.jsonc files for reference)[39m
|
|
116
|
+
[32mINFO[39m: [36mWrote user-global config to /tmp/seed-user-global-test-nxcGED/.infra-kit/infra-kit.json (see the sibling .example.jsonc files for reference)[39m
|
|
117
|
+
[32mINFO[39m: [36mUser-global config already present at /tmp/seed-user-global-test-a2bUF5/.infra-kit/infra-kit.json (refreshed reference examples)[39m
|
|
70
118
|
[33mWARN[39m: [36m⚠️ Failed to reopen cmux workspace for release/v1.48.0[39m
|
|
71
119
|
[35mtitle[39m: "hulyo-monorepo 1.48.0"
|
|
72
120
|
error: {}
|
|
73
121
|
|
|
74
|
-
[2m Test Files [22m [1m[
|
|
75
|
-
[2m Tests [22m [1m[
|
|
76
|
-
[2m Start at [22m
|
|
77
|
-
[2m Duration [22m
|
|
122
|
+
[2m Test Files [22m [1m[32m56 passed[39m[22m[90m (56)[39m
|
|
123
|
+
[2m Tests [22m [1m[32m529 passed[39m[22m[90m (529)[39m
|
|
124
|
+
[2m Start at [22m 23:25:55
|
|
125
|
+
[2m Duration [22m 2.63s[2m (transform 6.74s, setup 1.42s, import 15.02s, tests 2.47s, environment 15ms)[22m
|
|
78
126
|
|
|
79
127
|
[?25h
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{render as D}from"ink";import M from"node:process";import{Box as d,Text as o,useApp as E,useInput as v}from"ink";import{useEffect as A,useMemo as b,useState as h}from"react";import{jsx as r,jsxs as f}from"react/jsx-runtime";var I=x=>{let{items:l,onSelect:s,onCancel:g}=x,m={hint:"Select a command \u2014 type to filter, \u2191\u2193 to move, Enter to run, Esc to cancel",prompt:"\u276F ",empty:"No matching commands"},y=24,{exit:C}=E(),[i,P]=h(""),[B,a]=h(0),[u,T]=h(!1);A(()=>{u&&C()},[u,C]);let c=b(()=>{let e=i.trim().toLowerCase();return e?l.filter(t=>`${t.name} ${t.description}`.toLowerCase().includes(e)):l},[l,i]),p=Math.min(B,Math.max(0,c.length-1));if(v((e,t)=>{if(!u){if(t.escape||t.ctrl&&e==="c"){g(),T(!0);return}if(t.return){let n=c[p];n&&(s(n.name),T(!0));return}if(t.upArrow){let n=c.length;n>0&&a((p-1+n)%n);return}if(t.downArrow){let n=c.length;n>0&&a((p+1)%n);return}if(t.backspace||t.delete){P(i.slice(0,-1)),a(0);return}e&&!t.ctrl&&!t.meta&&(P(i+e),a(0))}}),u)return null;let w="";return f(d,{flexDirection:"column",children:[r(o,{dimColor:!0,children:m.hint}),f(d,{children:[r(o,{color:"cyan",children:m.prompt}),r(o,{children:i})]}),r(d,{flexDirection:"column",marginTop:1,children:c.length===0?r(o,{dimColor:!0,children:m.empty}):c.map((e,t)=>{let n=t===p,S=e.group!==w;return w=e.group,f(d,{flexDirection:"column",children:[S&&t>0?r(o,{children:" "}):null,S?r(o,{color:"yellow",children:`\u2014 ${e.group} \u2014`}):null,f(o,{color:n?"green":void 0,children:[n?"\u203A ":" ",e.name.padEnd(y)," ",r(o,{dimColor:!0,children:e.description})]})]},e.name)})})]})};import{jsx as $}from"react/jsx-runtime";var U=async x=>new Promise(l=>{let s=null,{waitUntilExit:g}=D($(I,{items:x,onSelect:m=>{s=m},onCancel:()=>{s=null}}),{stdout:M.stderr});g().then(()=>{l(s)}).catch(()=>{l(null)})});export{U as runCommandPalette};
|
|
2
|
+
//# sourceMappingURL=boot-K4QUAFSP.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/tui/boot.tsx", "../src/tui/screens/command-palette.tsx"],
|
|
4
|
+
"sourcesContent": ["import { render } from 'ink'\nimport process from 'node:process'\n\nimport { CommandPalette } from './screens/command-palette'\nimport type { PaletteItem } from './types'\n\n/**\n * Entry point for the Ink TUI. This module (and everything under `src/tui/`) is\n * the ONLY place allowed to import `ink`/`react`; it is reached exclusively via a\n * dynamic `await import('src/tui/boot')` from the TTY branch of entry/cli.ts, so\n * React never loads on the MCP / `--json` / non-TTY paths. Build splitting keeps\n * it in a separate lazy chunk (see scripts/build.js).\n */\n\n/**\n * Render the command palette and resolve to the chosen command name, or `null`\n * if the user cancels. Frames are written to stderr so stdout stays clean for\n * the command that runs afterwards (mirrors the previous Inquirer menu).\n */\nexport const runCommandPalette = async (items: PaletteItem[]): Promise<string | null> => {\n return new Promise((resolve) => {\n let selected: string | null = null\n\n const { waitUntilExit } = render(\n <CommandPalette\n items={items}\n onSelect={(name) => {\n selected = name\n }}\n onCancel={() => {\n selected = null\n }}\n />,\n { stdout: process.stderr as unknown as NodeJS.WriteStream },\n )\n\n waitUntilExit()\n .then(() => {\n resolve(selected)\n })\n .catch(() => {\n resolve(null)\n })\n })\n}\n", "import { Box, Text, useApp, useInput } from 'ink'\nimport { useEffect, useMemo, useState } from 'react'\n\nimport type { PaletteItem } from '../types'\n\ninterface CommandPaletteProps {\n items: PaletteItem[]\n /** Called with the chosen command name; the app then exits. */\n onSelect: (name: string) => void\n /** Called when the user cancels (Esc / Ctrl-C); the app then exits. */\n onCancel: () => void\n}\n\n/**\n * Fuzzy-ish command picker rendered with Ink. Pure presentation: it receives a\n * flat list of commands (already grouped/ordered by the catalog) and returns the\n * selected name. It never executes anything \u2014 the caller runs the command via\n * the existing Commander path.\n */\nexport const CommandPalette = (props: CommandPaletteProps) => {\n const { items, onSelect, onCancel } = props\n\n const T = {\n hint: 'Select a command \u2014 type to filter, \u2191\u2193 to move, Enter to run, Esc to cancel',\n prompt: '\u276F ',\n empty: 'No matching commands',\n }\n const nameWidth = 24\n\n const { exit } = useApp()\n const [query, setQuery] = useState('')\n const [index, setIndex] = useState(0)\n // When set, the component renders `null` for one frame so Ink erases the list\n // before unmount commits its final frame (Ink's `log.done()` would otherwise\n // freeze the last drawn frame \u2014 the command list \u2014 into the scrollback).\n const [submitted, setSubmitted] = useState(false)\n\n // Exit only after the empty frame has committed, so the list is wiped first.\n useEffect(() => {\n if (submitted) {\n exit()\n }\n }, [submitted, exit])\n\n const filtered = useMemo(() => {\n const q = query.trim().toLowerCase()\n\n if (!q) {\n return items\n }\n\n return items.filter((item) => {\n return `${item.name} ${item.description}`.toLowerCase().includes(q)\n })\n }, [items, query])\n\n const activeIndex = Math.min(index, Math.max(0, filtered.length - 1))\n\n useInput((input, key) => {\n if (submitted) {\n return\n }\n\n if (key.escape || (key.ctrl && input === 'c')) {\n onCancel()\n setSubmitted(true)\n\n return\n }\n\n if (key.return) {\n const selected = filtered[activeIndex]\n\n if (selected) {\n onSelect(selected.name)\n setSubmitted(true)\n }\n\n return\n }\n\n if (key.upArrow) {\n const n = filtered.length\n\n // Wrap to the bottom when stepping up past the first item. The `+ n`\n // sidesteps JS negative modulo (e.g. -1 % 5 === -1, not 4).\n if (n > 0) {\n setIndex((activeIndex - 1 + n) % n)\n }\n\n return\n }\n\n if (key.downArrow) {\n const n = filtered.length\n\n // Wrap to the top when stepping down past the last item.\n if (n > 0) {\n setIndex((activeIndex + 1) % n)\n }\n\n return\n }\n\n if (key.backspace || key.delete) {\n setQuery(query.slice(0, -1))\n setIndex(0)\n\n return\n }\n\n // Printable character: append to the filter.\n if (input && !key.ctrl && !key.meta) {\n setQuery(query + input)\n setIndex(0)\n }\n })\n\n // Final frame: render nothing so Ink erases the list on its way out.\n if (submitted) {\n return null\n }\n\n let lastGroup = ''\n\n return (\n <Box flexDirection=\"column\">\n <Text dimColor>{T.hint}</Text>\n <Box>\n <Text color=\"cyan\">{T.prompt}</Text>\n <Text>{query}</Text>\n </Box>\n <Box flexDirection=\"column\" marginTop={1}>\n {filtered.length === 0 ? (\n <Text dimColor>{T.empty}</Text>\n ) : (\n filtered.map((item, position) => {\n const isActive = position === activeIndex\n const showGroup = item.group !== lastGroup\n\n lastGroup = item.group\n\n return (\n <Box flexDirection=\"column\" key={item.name}>\n {/* Blank line between groups (not before the very first group). */}\n {showGroup && position > 0 ? <Text> </Text> : null}\n {showGroup ? <Text color=\"yellow\">{`\u2014 ${item.group} \u2014`}</Text> : null}\n <Text color={isActive ? 'green' : undefined}>\n {isActive ? '\u203A ' : ' '}\n {item.name.padEnd(nameWidth)} <Text dimColor>{item.description}</Text>\n </Text>\n </Box>\n )\n })\n )}\n </Box>\n </Box>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["render", "process", "Box", "Text", "useApp", "useInput", "useEffect", "useMemo", "useState", "jsx", "jsxs", "CommandPalette", "props", "items", "onSelect", "onCancel", "T", "nameWidth", "exit", "query", "setQuery", "index", "setIndex", "submitted", "setSubmitted", "filtered", "q", "item", "activeIndex", "input", "key", "selected", "lastGroup", "position", "isActive", "showGroup", "jsx", "runCommandPalette", "items", "resolve", "selected", "waitUntilExit", "render", "CommandPalette", "name", "process"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var a=e=>e,n={requiredScripts:["build","ts-check","eslint-check","prettier-check","test"],requiredFiles:["tsconfig.json","eslint.config.js","readme.md"],turboTasks:[]},c={requiredScripts:["build","dev","test","qa","check","fix"],requiredFiles:["turbo.json","pnpm-workspace.yaml"],turboTasks:["build","test","ts-check","eslint-check","prettier-check","check"]},d=(e,t=n)=>({requiredScripts:e.requiredScripts??[...t.requiredScripts],requiredFiles:e.requiredFiles??[...t.requiredFiles],turboTasks:e.turbo?.requiredTasks??[...t.turboTasks]});import{z as r}from"zod";var p="vendor.config.ts",o=r.string().refine(e=>{let t=/^(?:[/\\]|[a-z]:)/i.test(e),i=e.split(/[\\/]/).includes("..");return!t&&!i&&e.trim().length>0},{message:'must be a non-empty repo-relative path without ".." segments'}),s=r.object({name:r.string(),source:o,target:o,type:r.enum(["file","directory"]),vendored:r.boolean().optional()}),f=r.object({copy:r.array(s)}).strict(),l=e=>e;export{a,n as b,c,d,p as e,f,l as g};
|
|
2
|
+
//# sourceMappingURL=chunk-RTSP2FCA.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/lib/package-config/package-config.ts", "../src/lib/vendor/config-schema.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Validation rules for a single workspace package, declared in its\n * `infra-kit.config.js`. Every field is optional: a key left unset falls back to\n * the active baseline ({@link DEFAULT_RULES} for packages, {@link ROOT_DEFAULT_RULES}\n * for the monorepo root), and a key set replaces that default wholesale (per-key,\n * no array concatenation) so a package can opt out with an explicit empty array.\n *\n * Most packages need none of these \u2014 the standard rules live in the baseline, so\n * a typical config is just `defineConfig(() => ({}))`.\n *\n * @example\n * // infra-kit.config.js\n * import { defineConfig } from 'infra-kit'\n *\n * export default defineConfig(() => ({}))\n */\nexport interface InfraKitPackageConfig {\n /** Scripts that must be present in the package's package.json `scripts` map. */\n requiredScripts?: string[]\n /** Files (relative to the package root) that must exist on disk. */\n requiredFiles?: string[]\n /** Turborepo expectations \u2014 only meaningful where a turbo.json lives (the root). */\n turbo?: {\n /** Tasks that must be defined in turbo.json `tasks`. */\n requiredTasks?: string[]\n }\n}\n\n/**\n * Accepted shapes for a package config's default export \u2014 mirrors Vite's\n * `defineConfig` input: a plain object, a sync factory, or an async factory.\n */\nexport type InfraKitPackageConfigInput =\n | InfraKitPackageConfig\n | (() => InfraKitPackageConfig)\n | (() => Promise<InfraKitPackageConfig>)\n\n/**\n * Identity helper that gives `infra-kit.config.js` authors full type inference\n * and editor autocomplete without changing the value \u2014 exactly like Vite's\n * `defineConfig`. Resolution of the factory form happens in the loader, not here.\n *\n * @example\n * export default defineConfig(() => ({}))\n *\n * @example\n * export default defineConfig(() => ({ requiredScripts: [] }))\n */\nexport const defineConfig = (config: InfraKitPackageConfigInput): InfraKitPackageConfigInput => {\n return config\n}\n\n/** Fully-resolved rules with every defaultable field present. */\nexport interface ResolvedPackageRules {\n requiredScripts: string[]\n requiredFiles: string[]\n turboTasks: string[]\n}\n\n/**\n * Baseline rules for a standard TypeScript workspace package, applied to any key\n * a package leaves unset. These are the \"under the hood\" defaults so a conforming\n * package's config can stay empty; non-standard packages override the relevant key.\n */\nexport const DEFAULT_RULES: Readonly<ResolvedPackageRules> = {\n requiredScripts: ['build', 'ts-check', 'eslint-check', 'prettier-check', 'test'],\n requiredFiles: ['tsconfig.json', 'eslint.config.js', 'readme.md'],\n turboTasks: [],\n}\n\n/**\n * Baseline rules for the monorepo root (`infra-kit audit --root`). Checks the\n * root commands, the workspace/turbo files, and that the turbo pipeline defines\n * the expected tasks \u2014 so the root's own config can also stay empty.\n */\nexport const ROOT_DEFAULT_RULES: Readonly<ResolvedPackageRules> = {\n requiredScripts: ['build', 'dev', 'test', 'qa', 'check', 'fix'],\n requiredFiles: ['turbo.json', 'pnpm-workspace.yaml'],\n turboTasks: ['build', 'test', 'ts-check', 'eslint-check', 'prettier-check', 'check'],\n}\n\n/**\n * Merge a parsed package config over a baseline. Each key is replaced wholesale\n * when the package provides it, otherwise the baseline value is used.\n *\n * @example\n * resolvePackageConfig({ requiredScripts: [] })\n * // => { requiredScripts: [], requiredFiles: [...DEFAULT_RULES.requiredFiles], turboTasks: [] }\n */\nexport const resolvePackageConfig = (\n config: InfraKitPackageConfig,\n baseline: Readonly<ResolvedPackageRules> = DEFAULT_RULES,\n): ResolvedPackageRules => {\n return {\n requiredScripts: config.requiredScripts ?? [...baseline.requiredScripts],\n requiredFiles: config.requiredFiles ?? [...baseline.requiredFiles],\n turboTasks: config.turbo?.requiredTasks ?? [...baseline.turboTasks],\n }\n}\n", "import { z } from 'zod'\n\n/**\n * Pure (node-free) vendor config schema + authoring helper. Kept separate from\n * `config.ts` (which imports node builtins for the runtime loader) so the public\n * lib entry can re-export `defineVendorConfig` without dragging node types into\n * the emitted `.d.ts`.\n */\n\n/**\n * Filename a source repo provides at its root to declare WHAT `vendor sync`\n * copies (`copy[]`). Lives ONLY on the write path \u2014 `vendor check` never loads it.\n * WHERE/WHICH to stamp (`workspaceDir` + `targets`) is machine-local and lives in\n * the user-global factory config (`~/.infra-kit/vendor.json`).\n */\nexport const VENDOR_CONFIG_FILE = 'vendor.config.ts'\n\n/**\n * A non-empty, repo-relative path with no `..` segments and no absolute prefix\n * (POSIX `/`, UNC/`\\`, or a Windows drive like `C:`). Containment guard for\n * vendor copy items so a malicious/typo config can't read or write outside the\n * source/target repo roots. Kept as a string/regex check (no `node:path`) to\n * respect this file's node-free constraint \u2014 `sync-ops.ts` does the resolved\n * runtime containment assert as defense in depth.\n */\nconst safeRelPath = z.string().refine(\n (p) => {\n const isAbsolute = /^(?:[/\\\\]|[a-z]:)/i.test(p)\n const hasDotDotSegment = p.split(/[\\\\/]/).includes('..')\n\n return !isAbsolute && !hasDotDotSegment && p.trim().length > 0\n },\n { message: 'must be a non-empty repo-relative path without \"..\" segments' },\n)\n\n/**\n * One item to sync from the source repo into each target. `vendored: true` marks\n * workspace packages that must land under `vendor/` (the single-source-of-truth\n * code); everything else is root-level tooling that stays at the repo root.\n */\nexport const vendorCopyItemSchema = z.object({\n name: z.string(),\n source: safeRelPath,\n target: safeRelPath,\n type: z.enum(['file', 'directory']),\n vendored: z.boolean().optional(),\n})\n\nexport const vendorConfigSchema = z\n .object({\n /** Files/dirs to copy. Items with `vendored: true` land under `vendor/`. */\n copy: z.array(vendorCopyItemSchema),\n })\n // Reject stray keys so a leftover `targets` (now machine-local, in\n // ~/.infra-kit/vendor.json) yields a clear \"unrecognized key\" error rather\n // than being silently ignored.\n .strict()\n\nexport type VendorCopyItem = z.infer<typeof vendorCopyItemSchema>\nexport type VendorConfig = z.infer<typeof vendorConfigSchema>\n\n/**\n * Identity helper for authoring a type-safe `vendor.config.ts` in a source repo.\n * Re-exported from the public lib entry so a source repo can\n * `import { defineVendorConfig } from 'infra-kit'`.\n *\n * NOTE: a `vendor.config.ts` must be type-strippable \u2014 Node's native type\n * stripping (Node >= 24) loads it without a build step, which forbids `enum`,\n * `namespace`, and parameter properties.\n *\n * @example\n * export default defineVendorConfig({\n * copy: [{ name: 'Configs', source: 'vendor/configs', target: 'vendor/configs', type: 'directory', vendored: true }],\n * })\n */\nexport const defineVendorConfig = (config: VendorConfig): VendorConfig => {\n return config\n}\n"],
|
|
5
|
+
"mappings": "AAgDO,IAAMA,EAAgBC,GACpBA,EAeIC,EAAgD,CAC3D,gBAAiB,CAAC,QAAS,WAAY,eAAgB,iBAAkB,MAAM,EAC/E,cAAe,CAAC,gBAAiB,mBAAoB,WAAW,EAChE,WAAY,CAAC,CACf,EAOaC,EAAqD,CAChE,gBAAiB,CAAC,QAAS,MAAO,OAAQ,KAAM,QAAS,KAAK,EAC9D,cAAe,CAAC,aAAc,qBAAqB,EACnD,WAAY,CAAC,QAAS,OAAQ,WAAY,eAAgB,iBAAkB,OAAO,CACrF,EAUaC,EAAuB,CAClCH,EACAI,EAA2CH,KAEpC,CACL,gBAAiBD,EAAO,iBAAmB,CAAC,GAAGI,EAAS,eAAe,EACvE,cAAeJ,EAAO,eAAiB,CAAC,GAAGI,EAAS,aAAa,EACjE,WAAYJ,EAAO,OAAO,eAAiB,CAAC,GAAGI,EAAS,UAAU,CACpE,GCjGF,OAAS,KAAAC,MAAS,MAeX,IAAMC,EAAqB,mBAU5BC,EAAcF,EAAE,OAAO,EAAE,OAC5BG,GAAM,CACL,IAAMC,EAAa,qBAAqB,KAAKD,CAAC,EACxCE,EAAmBF,EAAE,MAAM,OAAO,EAAE,SAAS,IAAI,EAEvD,MAAO,CAACC,GAAc,CAACC,GAAoBF,EAAE,KAAK,EAAE,OAAS,CAC/D,EACA,CAAE,QAAS,8DAA+D,CAC5E,EAOaG,EAAuBN,EAAE,OAAO,CAC3C,KAAMA,EAAE,OAAO,EACf,OAAQE,EACR,OAAQA,EACR,KAAMF,EAAE,KAAK,CAAC,OAAQ,WAAW,CAAC,EAClC,SAAUA,EAAE,QAAQ,EAAE,SAAS,CACjC,CAAC,EAEYO,EAAqBP,EAC/B,OAAO,CAEN,KAAMA,EAAE,MAAMM,CAAoB,CACpC,CAAC,EAIA,OAAO,EAmBGE,EAAsBC,GAC1BA",
|
|
6
|
+
"names": ["defineConfig", "config", "DEFAULT_RULES", "ROOT_DEFAULT_RULES", "resolvePackageConfig", "baseline", "z", "VENDOR_CONFIG_FILE", "safeRelPath", "p", "isAbsolute", "hasDotDotSegment", "vendorCopyItemSchema", "vendorConfigSchema", "defineVendorConfig", "config"]
|
|
7
|
+
}
|