infra-kit 0.1.114 → 0.1.117
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-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-fe1057b4-9a25-4e8e-8c3f-3e11652ee697.jsonl +5 -0
- package/.omc/state/idle-notif-cooldown.json +1 -1
- 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/{src/lib/.omc/state/sessions/a60ac2ec-afbd-449f-a540-6df287392fc2 → .omc/state/sessions/8198b3e5-fad6-4ee0-9c59-ef773ad89af4}/pre-tool-advisory-throttle.json +3 -3
- 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/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-eslint-check.log +2 -0
- package/.turbo/turbo-test.log +90 -42
- package/dist/boot-K4QUAFSP.js +2 -0
- package/dist/boot-K4QUAFSP.js.map +7 -0
- package/dist/chunk-FEGOOVZE.js +166 -0
- package/dist/chunk-FEGOOVZE.js.map +7 -0
- package/dist/chunk-WA4BQRDC.js +2 -0
- package/dist/chunk-WA4BQRDC.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/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 +104 -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/open-cursor-workspace.ts +6 -11
- 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 +49 -10
- 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/package-config/package-config.ts +1 -3
- 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/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
|
@@ -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,7 @@
|
|
|
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
|
|
5
6
|
[32mINFO[39m: [36m✓ Migrated ~/infra-kit.yml → ~/infra-kit.json[39m
|
|
6
7
|
[32mINFO[39m: [36m⚠ Skipped ~/infra-kit.yml — ~/infra-kit.json already exists (remove the stale .yml manually)[39m
|
|
7
8
|
[32mINFO[39m: [36m✓ Migrated ~/infra-kit.yml → ~/infra-kit.json[39m
|
|
@@ -13,34 +14,43 @@
|
|
|
13
14
|
^
|
|
14
15
|
[39m
|
|
15
16
|
[32mINFO[39m: [36m✓ Migrated ~/infra-kit.yml → ~/infra-kit.json[39m
|
|
16
|
-
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/config.yml → ~/.infra-kit/
|
|
17
|
-
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/projects/infra-kit-init-migrate-test-
|
|
17
|
+
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/config.yml → ~/.infra-kit/infra-kit.json[39m
|
|
18
|
+
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/projects/infra-kit-init-migrate-test-dC9SjH/infra-kit.yml → ~/.infra-kit/projects/infra-kit-init-migrate-test-dC9SjH/infra-kit.json[39m
|
|
18
19
|
[32mINFO[39m: [36m✓ Normalized ide config in ~/infra-kit.json (removed legacy "mode")[39m
|
|
19
20
|
[32mINFO[39m: [36m✓ Normalized ide config in ~/infra-kit.json (removed legacy "mode")[39m
|
|
20
|
-
[32mINFO[39m: [36m✓ Normalized ide config in ~/.infra-kit/
|
|
21
|
-
[32mINFO[39m: [36m✓ Normalized ide config in ~/.infra-kit/projects/infra-kit-init-migrate-test-
|
|
21
|
+
[32mINFO[39m: [36m✓ Normalized ide config in ~/.infra-kit/infra-kit.json (removed legacy "mode")[39m
|
|
22
|
+
[32mINFO[39m: [36m✓ Normalized ide config in ~/.infra-kit/projects/infra-kit-init-migrate-test-vlGJyA/infra-kit.json (removed legacy "mode")[39m
|
|
22
23
|
[32mINFO[39m: [36m⚠ Skipped normalizing ~/infra-kit.json — Expected property name or '}' in JSON at position 2 (line 1 column 3)[39m
|
|
23
|
-
[32mINFO[39m: [36m
|
|
24
|
-
[32mINFO[39m: [36m
|
|
25
|
-
[32mINFO[39m: [36m
|
|
26
|
-
[32mINFO[39m: [
|
|
27
|
-
[32mINFO[39m: [
|
|
28
|
-
[32mINFO[39m: [36m
|
|
29
|
-
|
|
30
|
-
[32mINFO[39m: [
|
|
31
|
-
[32mINFO[39m: [36m
|
|
32
|
-
[32mINFO[39m: [
|
|
33
|
-
[32mINFO[39m: [
|
|
34
|
-
[32mINFO[39m: [
|
|
35
|
-
[32mINFO[39m: [
|
|
36
|
-
[32mINFO[39m: [
|
|
37
|
-
[32mINFO[39m: [
|
|
38
|
-
[32mINFO[39m: [
|
|
39
|
-
[32mINFO[39m: [
|
|
40
|
-
[32mINFO[39m: [36m
|
|
41
|
-
[32mINFO[39m: [36m
|
|
42
|
-
[32mINFO[39m: [36m
|
|
43
|
-
[32mINFO[39m: [
|
|
24
|
+
[32mINFO[39m: [36m✓ Renamed ~/.infra-kit/config.json → ~/.infra-kit/infra-kit.json[39m
|
|
25
|
+
[32mINFO[39m: [36m✓ Renamed ~/.infra-kit/config.example.jsonc → ~/.infra-kit/infra-kit.example.jsonc[39m
|
|
26
|
+
[32mINFO[39m: [36m⚠ Skipped ~/.infra-kit/config.json — ~/.infra-kit/infra-kit.json already exists (remove the stale file manually)[39m
|
|
27
|
+
[32mINFO[39m: [36m✓ Renamed ~/.infra-kit/config.example.jsonc → ~/.infra-kit/infra-kit.example.jsonc[39m
|
|
28
|
+
[32mINFO[39m: [36mFactory config: ~/.infra-kit/vendor.json [ ][39m
|
|
29
|
+
[32mINFO[39m: [36m
|
|
30
|
+
Not found — run `infra-kit vendor-config --init` to scaffold it.[39m
|
|
31
|
+
[32mINFO[39m: [36mFactory config: ~/.infra-kit/vendor.json [✓][39m
|
|
32
|
+
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/config.yml → ~/.infra-kit/infra-kit.json[39m
|
|
33
|
+
[32mINFO[39m: [36mworkspaceDir: /tmp/vendor-config-home-L0d1PR/projects (resolved: /tmp/vendor-config-home-L0d1PR/projects) [✓ exists][39m
|
|
34
|
+
[32mINFO[39m: [36mTargets:[39m
|
|
35
|
+
[32mINFO[39m: [36m [✓] repo-a ~/projects/repo-a[39m
|
|
36
|
+
[32mINFO[39m: [36mFactory config: ~/.infra-kit/vendor.json [✓][39m
|
|
37
|
+
[32mINFO[39m: [36mworkspaceDir: /tmp/vendor-config-home-CVd2s7/projects (resolved: /tmp/vendor-config-home-CVd2s7/projects) [✓ exists][39m
|
|
38
|
+
[32mINFO[39m: [36mTargets:[39m
|
|
39
|
+
[32mINFO[39m: [36m [ ] missing-repo ~/projects/missing-repo (not found — clone or remove)[39m
|
|
40
|
+
[32mINFO[39m: [36m✓ Migrated ~/.infra-kit/config.yml → ~/.infra-kit/infra-kit.json[39m
|
|
41
|
+
[32mINFO[39m: [36m⚠ Skipped ~/.infra-kit/config.json — ~/.infra-kit/infra-kit.json already exists (remove the stale file manually)[39m
|
|
42
|
+
[32mINFO[39m: [36m✓ Created ~/.infra-kit/vendor.json[39m
|
|
43
|
+
[32mINFO[39m: [36m Edit `workspaceDir` (placeholder: ~/projects) to point at where your repos live.[39m
|
|
44
|
+
[32mINFO[39m: [36m Add at least one repo name to `targets` before running vendor sync/manifest/diff.[39m
|
|
45
|
+
[32mINFO[39m: [36m✓ Created ~/.infra-kit/vendor.json[39m
|
|
46
|
+
[32mINFO[39m: [36m Seeded 2 target(s) from the source vendor.config.ts.[39m
|
|
47
|
+
[32mINFO[39m: [36m Edit `workspaceDir` (placeholder: ~/projects) to point at where your repos live.[39m
|
|
48
|
+
[32mINFO[39m: [36mFactory config already exists at ~/.infra-kit/vendor.json — leaving it untouched.[39m
|
|
49
|
+
[32mINFO[39m: [36m❌ target-repo → vendor/configs (1 change(s)):[39m
|
|
50
|
+
[32mINFO[39m: [36m >f.st..... configs/a.js[39m
|
|
51
|
+
[32mINFO[39m: [36m✅ target-repo: copied 1/1 items + manifest[39m
|
|
52
|
+
[32mINFO[39m: [36m🎉 No drift detected.[39m
|
|
53
|
+
[32mINFO[39m: [36m⚠️ target-repo: target does not exist — skipped[39m
|
|
44
54
|
[32mINFO[39m: [36m
|
|
45
55
|
@x/ok — PASS[39m
|
|
46
56
|
[32mINFO[39m: [36m [PASS] infra-kit.config.ts: present and valid[39m
|
|
@@ -48,32 +58,70 @@
|
|
|
48
58
|
✅ All valid (1 checked)[39m
|
|
49
59
|
[32mINFO[39m: [36m
|
|
50
60
|
@x/no-config — FAIL[39m
|
|
51
|
-
[32mINFO[39m: [36m [FAIL] infra-kit.config.ts: infra-kit.config.ts not found at /tmp/audit-cmd-
|
|
61
|
+
[32mINFO[39m: [36m [FAIL] infra-kit.config.ts: infra-kit.config.ts not found at /tmp/audit-cmd-GDNU3r/infra-kit.config.ts[39m
|
|
52
62
|
[32mINFO[39m: [36m
|
|
53
63
|
❌ Audit failed (1 checked)[39m
|
|
54
|
-
[32mINFO[39m: [36m created AGENTS.md[39m
|
|
55
64
|
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
56
|
-
[32mINFO[39m: [
|
|
57
|
-
[32mINFO[39m: [
|
|
58
|
-
[32mINFO[39m: [
|
|
65
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
66
|
+
[32mINFO[39m: [36m updated CLAUDE.md[39m
|
|
67
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
59
68
|
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
60
|
-
[32mINFO[39m: [
|
|
61
|
-
[32mINFO[39m: [
|
|
62
|
-
[32mINFO[39m: [
|
|
69
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
70
|
+
[32mINFO[39m: [36m unchanged CLAUDE.md[39m
|
|
71
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
72
|
+
[32mINFO[39m: [36mSkipped agent-instruction files — no infra-kit.json at the repo root[39m
|
|
73
|
+
[32mINFO[39m: [36m updated CLAUDE.md[39m
|
|
74
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
75
|
+
[32mINFO[39m: [36m updated CLAUDE.md[39m
|
|
76
|
+
[32mINFO[39m: [36m removed AGENTS.md[39m
|
|
77
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
78
|
+
[32mINFO[39m: [36m updated CLAUDE.md[39m
|
|
79
|
+
[32mINFO[39m: [36m updated AGENTS.md[39m
|
|
80
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
81
|
+
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
82
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
83
|
+
[32mINFO[39m: [36m updated CLAUDE.md[39m
|
|
84
|
+
[32mINFO[39m: [36m removed AGENTS.md[39m
|
|
85
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
86
|
+
[32mINFO[39m: [36m unchanged CLAUDE.md[39m
|
|
87
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
88
|
+
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
89
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
90
|
+
[32mINFO[39m: [36mWrote user-global config to /tmp/seed-user-global-test-OnnbjR/.infra-kit/infra-kit.json (see the sibling .example.jsonc files for reference)[39m
|
|
91
|
+
[32mINFO[39m: [36mWrote user-global config to /tmp/seed-user-global-test-0SuzJu/.infra-kit/infra-kit.json (see the sibling .example.jsonc files for reference)[39m
|
|
92
|
+
[32mINFO[39m: [36mUser-global config already present at /tmp/seed-user-global-test-zWpSCj/.infra-kit/infra-kit.json (refreshed reference examples)[39m
|
|
93
|
+
[32mINFO[39m: [36m✅ vendor/ matches manifest (1 files).[39m
|
|
94
|
+
[31mERROR[39m: [36m❌ vendor/ has drifted from vendor/.sync-manifest.json.[39m
|
|
95
|
+
[31mERROR[39m: [36m These files are mirrored from the source repo — edit them upstream, not here.[39m
|
|
96
|
+
[32mINFO[39m: [36m
|
|
97
|
+
Modified (1):[39m
|
|
98
|
+
[32mINFO[39m: [36m configs/a.js[39m
|
|
99
|
+
[32mINFO[39m: [36mℹ️ No vendor/ folder found — nothing to check.[39m
|
|
100
|
+
[31mERROR[39m: [36m❌ Missing vendor/.sync-manifest.json. Re-run the vendor sync to generate it.[39m
|
|
101
|
+
[32mINFO[39m: [36m✅ vendor/ matches manifest (2 files).[39m
|
|
102
|
+
[31mERROR[39m: [36m❌ vendor/ has drifted from vendor/.sync-manifest.json.[39m
|
|
103
|
+
[31mERROR[39m: [36m These files are mirrored from the source repo — edit them upstream, not here.[39m
|
|
104
|
+
[32mINFO[39m: [36m
|
|
105
|
+
Modified (1):[39m
|
|
106
|
+
[32mINFO[39m: [36m a.js[39m
|
|
107
|
+
[32mINFO[39m: [36m
|
|
108
|
+
Added (not in manifest) (1):[39m
|
|
109
|
+
[32mINFO[39m: [36m c.js[39m
|
|
110
|
+
[32mINFO[39m: [36m
|
|
111
|
+
Removed (in manifest, now missing) (1):[39m
|
|
112
|
+
[32mINFO[39m: [36m b.js[39m
|
|
113
|
+
[31mERROR[39m: [36m❌ vendor/.sync-manifest.json has a newer schemaVersion (2) than this CLI supports. Upgrade infra-kit.[39m
|
|
63
114
|
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
64
|
-
[32mINFO[39m: [
|
|
65
|
-
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.113)[39m
|
|
66
|
-
[32mINFO[39m: [36m created AGENTS.md[39m
|
|
115
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[39m
|
|
67
116
|
[32mINFO[39m: [36m created CLAUDE.md[39m
|
|
68
|
-
[32mINFO[39m: [
|
|
69
|
-
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.113)[39m
|
|
117
|
+
[32mINFO[39m: [36mAgent-instruction files synced (infra-kit 0.1.115)[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 1.
|
|
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 15:58:49
|
|
125
|
+
[2m Duration [22m 1.84s[2m (transform 4.57s, setup 754ms, import 9.46s, tests 2.13s, environment 21ms)[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
|
+
}
|