@prestyj/cli 4.3.210 → 4.3.237
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/README.md +17 -9
- package/dist/cli/auth.d.ts +4 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +344 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/command-routing.d.ts +28 -0
- package/dist/cli/command-routing.d.ts.map +1 -0
- package/dist/cli/command-routing.js +53 -0
- package/dist/cli/command-routing.js.map +1 -0
- package/dist/cli/command-routing.test.d.ts +2 -0
- package/dist/cli/command-routing.test.d.ts.map +1 -0
- package/dist/cli/command-routing.test.js +60 -0
- package/dist/cli/command-routing.test.js.map +1 -0
- package/dist/cli/mcp.d.ts +2 -0
- package/dist/cli/mcp.d.ts.map +1 -0
- package/dist/cli/mcp.js +309 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/cli/pixel.d.ts +27 -0
- package/dist/cli/pixel.d.ts.map +1 -0
- package/dist/cli/pixel.js +103 -0
- package/dist/cli/pixel.js.map +1 -0
- package/dist/cli/shared.d.ts +13 -0
- package/dist/cli/shared.d.ts.map +1 -0
- package/dist/cli/shared.js +82 -0
- package/dist/cli/shared.js.map +1 -0
- package/dist/cli.d.ts +4 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +174 -732
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +4 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -1
- package/dist/config.js.map +1 -1
- package/dist/config.test.d.ts +2 -0
- package/dist/config.test.d.ts.map +1 -0
- package/dist/config.test.js +29 -0
- package/dist/config.test.js.map +1 -0
- package/dist/core/agent-session-compaction.test.d.ts +2 -0
- package/dist/core/agent-session-compaction.test.d.ts.map +1 -0
- package/dist/core/agent-session-compaction.test.js +114 -0
- package/dist/core/agent-session-compaction.test.js.map +1 -0
- package/dist/core/agent-session.d.ts +0 -23
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +6 -101
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/checkpoint-store.d.ts +93 -0
- package/dist/core/checkpoint-store.d.ts.map +1 -0
- package/dist/core/checkpoint-store.js +188 -0
- package/dist/core/checkpoint-store.js.map +1 -0
- package/dist/core/checkpoint-store.test.d.ts +2 -0
- package/dist/core/checkpoint-store.test.d.ts.map +1 -0
- package/dist/core/checkpoint-store.test.js +111 -0
- package/dist/core/checkpoint-store.test.js.map +1 -0
- package/dist/core/compaction/compactor.d.ts +4 -0
- package/dist/core/compaction/compactor.d.ts.map +1 -1
- package/dist/core/compaction/compactor.js +81 -28
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/compactor.test.js +33 -9
- package/dist/core/compaction/compactor.test.js.map +1 -1
- package/dist/core/compaction/token-estimator.test.js +1 -1
- package/dist/core/continue-replay-inventory.test.d.ts +2 -0
- package/dist/core/continue-replay-inventory.test.d.ts.map +1 -0
- package/dist/core/continue-replay-inventory.test.js +42 -0
- package/dist/core/continue-replay-inventory.test.js.map +1 -0
- package/dist/core/goal-controller.d.ts +4 -0
- package/dist/core/goal-controller.d.ts.map +1 -1
- package/dist/core/goal-controller.js +223 -32
- package/dist/core/goal-controller.js.map +1 -1
- package/dist/core/goal-controller.test.js +387 -22
- package/dist/core/goal-controller.test.js.map +1 -1
- package/dist/core/goal-lifecycle-smoke.test.js +49 -8
- package/dist/core/goal-lifecycle-smoke.test.js.map +1 -1
- package/dist/core/goal-prerequisites.d.ts +23 -0
- package/dist/core/goal-prerequisites.d.ts.map +1 -0
- package/dist/core/goal-prerequisites.js +114 -0
- package/dist/core/goal-prerequisites.js.map +1 -0
- package/dist/core/goal-prerequisites.test.d.ts +2 -0
- package/dist/core/goal-prerequisites.test.d.ts.map +1 -0
- package/dist/core/goal-prerequisites.test.js +118 -0
- package/dist/core/goal-prerequisites.test.js.map +1 -0
- package/dist/core/goal-store.d.ts +12 -1
- package/dist/core/goal-store.d.ts.map +1 -1
- package/dist/core/goal-store.js +146 -40
- package/dist/core/goal-store.js.map +1 -1
- package/dist/core/goal-store.test.js +65 -8
- package/dist/core/goal-store.test.js.map +1 -1
- package/dist/core/goal-verifier.d.ts.map +1 -1
- package/dist/core/goal-verifier.js +4 -1
- package/dist/core/goal-verifier.js.map +1 -1
- package/dist/core/goal-verifier.test.js +43 -0
- package/dist/core/goal-verifier.test.js.map +1 -1
- package/dist/core/goal-worker.d.ts +2 -0
- package/dist/core/goal-worker.d.ts.map +1 -1
- package/dist/core/goal-worker.js +31 -7
- package/dist/core/goal-worker.js.map +1 -1
- package/dist/core/goal-worker.test.js +44 -0
- package/dist/core/goal-worker.test.js.map +1 -1
- package/dist/core/ideal-review.d.ts +20 -0
- package/dist/core/ideal-review.d.ts.map +1 -0
- package/dist/core/ideal-review.js +55 -0
- package/dist/core/ideal-review.js.map +1 -0
- package/dist/core/ideal-review.test.d.ts +2 -0
- package/dist/core/ideal-review.test.d.ts.map +1 -0
- package/dist/core/ideal-review.test.js +59 -0
- package/dist/core/ideal-review.test.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/loop-breaker.d.ts +46 -0
- package/dist/core/loop-breaker.d.ts.map +1 -0
- package/dist/core/loop-breaker.js +79 -0
- package/dist/core/loop-breaker.js.map +1 -0
- package/dist/core/loop-breaker.test.d.ts +2 -0
- package/dist/core/loop-breaker.test.d.ts.map +1 -0
- package/dist/core/loop-breaker.test.js +110 -0
- package/dist/core/loop-breaker.test.js.map +1 -0
- package/dist/core/mcp/client.d.ts +20 -0
- package/dist/core/mcp/client.d.ts.map +1 -1
- package/dist/core/mcp/client.js +55 -11
- package/dist/core/mcp/client.js.map +1 -1
- package/dist/core/mcp/defaults.d.ts +7 -0
- package/dist/core/mcp/defaults.d.ts.map +1 -1
- package/dist/core/mcp/defaults.js +14 -0
- package/dist/core/mcp/defaults.js.map +1 -1
- package/dist/core/mcp/index.d.ts +6 -1
- package/dist/core/mcp/index.d.ts.map +1 -1
- package/dist/core/mcp/index.js +3 -1
- package/dist/core/mcp/index.js.map +1 -1
- package/dist/core/mcp/parse-add-command.d.ts +25 -0
- package/dist/core/mcp/parse-add-command.d.ts.map +1 -0
- package/dist/core/mcp/parse-add-command.js +220 -0
- package/dist/core/mcp/parse-add-command.js.map +1 -0
- package/dist/core/mcp/parse-add-command.test.d.ts +2 -0
- package/dist/core/mcp/parse-add-command.test.d.ts.map +1 -0
- package/dist/core/mcp/parse-add-command.test.js +75 -0
- package/dist/core/mcp/parse-add-command.test.js.map +1 -0
- package/dist/core/mcp/store.d.ts +80 -0
- package/dist/core/mcp/store.d.ts.map +1 -0
- package/dist/core/mcp/store.js +157 -0
- package/dist/core/mcp/store.js.map +1 -0
- package/dist/core/mcp/store.test.d.ts +2 -0
- package/dist/core/mcp/store.test.d.ts.map +1 -0
- package/dist/core/mcp/store.test.js +101 -0
- package/dist/core/mcp/store.test.js.map +1 -0
- package/dist/core/model-registry.d.ts +2 -2
- package/dist/core/model-registry.js +4 -4
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-registry.test.js +1 -1
- package/dist/core/model-registry.test.js.map +1 -1
- package/dist/core/prompt-commands.d.ts.map +1 -1
- package/dist/core/prompt-commands.js +64 -894
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/core/prompt-commands.test.js +49 -41
- package/dist/core/prompt-commands.test.js.map +1 -1
- package/dist/core/regrounding.d.ts +23 -0
- package/dist/core/regrounding.d.ts.map +1 -0
- package/dist/core/regrounding.js +21 -0
- package/dist/core/regrounding.js.map +1 -0
- package/dist/core/regrounding.test.d.ts +2 -0
- package/dist/core/regrounding.test.d.ts.map +1 -0
- package/dist/core/regrounding.test.js +38 -0
- package/dist/core/regrounding.test.js.map +1 -0
- package/dist/core/runtime-mode.d.ts +23 -0
- package/dist/core/runtime-mode.d.ts.map +1 -0
- package/dist/core/runtime-mode.js +30 -0
- package/dist/core/runtime-mode.js.map +1 -0
- package/dist/core/session-manager.d.ts +4 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +20 -0
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-restore-display.test.d.ts +2 -0
- package/dist/core/session-restore-display.test.d.ts.map +1 -0
- package/dist/core/session-restore-display.test.js +78 -0
- package/dist/core/session-restore-display.test.js.map +1 -0
- package/dist/core/settings-manager.d.ts +4 -2
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +3 -6
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts +0 -2
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +10 -15
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/style-packs/index.js +1 -1
- package/dist/core/style-packs/index.js.map +1 -1
- package/dist/core/task-store.d.ts +26 -0
- package/dist/core/task-store.d.ts.map +1 -0
- package/dist/core/task-store.js +147 -0
- package/dist/core/task-store.js.map +1 -0
- package/dist/core/tasks-store.d.ts +24 -0
- package/dist/core/tasks-store.d.ts.map +1 -0
- package/dist/core/tasks-store.js +81 -0
- package/dist/core/tasks-store.js.map +1 -0
- package/dist/core/thinking-level.d.ts +5 -0
- package/dist/core/thinking-level.d.ts.map +1 -0
- package/dist/core/thinking-level.js +59 -0
- package/dist/core/thinking-level.js.map +1 -0
- package/dist/core/thinking-level.test.d.ts +2 -0
- package/dist/core/thinking-level.test.d.ts.map +1 -0
- package/dist/core/thinking-level.test.js +38 -0
- package/dist/core/thinking-level.test.js.map +1 -0
- package/dist/core/verify-commands.js +4 -4
- package/dist/core/verify-commands.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +3 -1
- package/dist/interactive.js.map +1 -1
- package/dist/system-prompt.d.ts +5 -1
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +76 -48
- package/dist/system-prompt.js.map +1 -1
- package/dist/system-prompt.test.js +98 -46
- package/dist/system-prompt.test.js.map +1 -1
- package/dist/tools/bash.d.ts +6 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +21 -3
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/checkpoint-hook.test.d.ts +2 -0
- package/dist/tools/checkpoint-hook.test.d.ts.map +1 -0
- package/dist/tools/checkpoint-hook.test.js +65 -0
- package/dist/tools/checkpoint-hook.test.js.map +1 -0
- package/dist/tools/edit-diff.d.ts +17 -4
- package/dist/tools/edit-diff.d.ts.map +1 -1
- package/dist/tools/edit-diff.js +78 -16
- package/dist/tools/edit-diff.js.map +1 -1
- package/dist/tools/edit-diff.test.js +31 -1
- package/dist/tools/edit-diff.test.js.map +1 -1
- package/dist/tools/edit-robustness.test.d.ts +2 -0
- package/dist/tools/edit-robustness.test.d.ts.map +1 -0
- package/dist/tools/edit-robustness.test.js +415 -0
- package/dist/tools/edit-robustness.test.js.map +1 -0
- package/dist/tools/edit.d.ts +8 -2
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +48 -20
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/edit.test.js +23 -22
- package/dist/tools/edit.test.js.map +1 -1
- package/dist/tools/enter-plan.d.ts +1 -3
- package/dist/tools/enter-plan.d.ts.map +1 -1
- package/dist/tools/enter-plan.js +9 -21
- package/dist/tools/enter-plan.js.map +1 -1
- package/dist/tools/exit-plan.d.ts.map +1 -1
- package/dist/tools/exit-plan.js +8 -9
- package/dist/tools/exit-plan.js.map +1 -1
- package/dist/tools/goal-mode.test.d.ts +2 -0
- package/dist/tools/goal-mode.test.d.ts.map +1 -0
- package/dist/tools/goal-mode.test.js +121 -0
- package/dist/tools/goal-mode.test.js.map +1 -0
- package/dist/tools/goals.d.ts +14 -2
- package/dist/tools/goals.d.ts.map +1 -1
- package/dist/tools/goals.js +257 -26
- package/dist/tools/goals.js.map +1 -1
- package/dist/tools/goals.test.js +365 -1
- package/dist/tools/goals.test.js.map +1 -1
- package/dist/tools/html-extract.d.ts +58 -0
- package/dist/tools/html-extract.d.ts.map +1 -0
- package/dist/tools/html-extract.js +130 -0
- package/dist/tools/html-extract.js.map +1 -0
- package/dist/tools/html-extract.test.d.ts +2 -0
- package/dist/tools/html-extract.test.d.ts.map +1 -0
- package/dist/tools/html-extract.test.js +60 -0
- package/dist/tools/html-extract.test.js.map +1 -0
- package/dist/tools/index.d.ts +15 -12
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +12 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/pdf-extract.d.ts +18 -0
- package/dist/tools/pdf-extract.d.ts.map +1 -0
- package/dist/tools/pdf-extract.js +43 -0
- package/dist/tools/pdf-extract.js.map +1 -0
- package/dist/tools/pdf-extract.test.d.ts +2 -0
- package/dist/tools/pdf-extract.test.d.ts.map +1 -0
- package/dist/tools/pdf-extract.test.js +15 -0
- package/dist/tools/pdf-extract.test.js.map +1 -0
- package/dist/tools/plan-mode.test.js +82 -243
- package/dist/tools/plan-mode.test.js.map +1 -1
- package/dist/tools/prompt-hints.d.ts.map +1 -1
- package/dist/tools/prompt-hints.js +6 -9
- package/dist/tools/prompt-hints.js.map +1 -1
- package/dist/tools/read-only-bash.d.ts +13 -0
- package/dist/tools/read-only-bash.d.ts.map +1 -0
- package/dist/tools/read-only-bash.js +155 -0
- package/dist/tools/read-only-bash.js.map +1 -0
- package/dist/tools/read-only-bash.test.d.ts +2 -0
- package/dist/tools/read-only-bash.test.d.ts.map +1 -0
- package/dist/tools/read-only-bash.test.js +47 -0
- package/dist/tools/read-only-bash.test.js.map +1 -0
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +14 -1
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/read.test.js +4 -0
- package/dist/tools/read.test.js.map +1 -1
- package/dist/tools/screenshot.d.ts +25 -0
- package/dist/tools/screenshot.d.ts.map +1 -0
- package/dist/tools/screenshot.js +165 -0
- package/dist/tools/screenshot.js.map +1 -0
- package/dist/tools/screenshot.test.d.ts +2 -0
- package/dist/tools/screenshot.test.d.ts.map +1 -0
- package/dist/tools/screenshot.test.js +145 -0
- package/dist/tools/screenshot.test.js.map +1 -0
- package/dist/tools/subagent.d.ts +7 -2
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +31 -9
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +22 -58
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/web-fetch.d.ts +16 -1
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +357 -45
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-fetch.test.js +263 -2
- package/dist/tools/web-fetch.test.js.map +1 -1
- package/dist/tools/web-search.d.ts +14 -0
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +321 -35
- package/dist/tools/web-search.js.map +1 -1
- package/dist/tools/web-search.test.js +144 -1
- package/dist/tools/web-search.test.js.map +1 -1
- package/dist/tools/write.d.ts +8 -2
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +36 -9
- package/dist/tools/write.js.map +1 -1
- package/dist/tools/write.test.js +0 -16
- package/dist/tools/write.test.js.map +1 -1
- package/dist/ui/App.d.ts +52 -280
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +1608 -2235
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/activity-phrases.d.ts.map +1 -1
- package/dist/ui/activity-phrases.js +0 -2
- package/dist/ui/activity-phrases.js.map +1 -1
- package/dist/ui/app-items.d.ts +276 -0
- package/dist/ui/app-items.d.ts.map +1 -0
- package/dist/ui/app-items.js +52 -0
- package/dist/ui/app-items.js.map +1 -0
- package/dist/ui/app-items.test.d.ts +2 -0
- package/dist/ui/app-items.test.d.ts.map +1 -0
- package/dist/ui/app-items.test.js +38 -0
- package/dist/ui/app-items.test.js.map +1 -0
- package/dist/ui/app-state-persistence.test.js +45 -160
- package/dist/ui/app-state-persistence.test.js.map +1 -1
- package/dist/ui/assistant-stream-flush-parity.test.d.ts +2 -0
- package/dist/ui/assistant-stream-flush-parity.test.d.ts.map +1 -0
- package/dist/ui/assistant-stream-flush-parity.test.js +85 -0
- package/dist/ui/assistant-stream-flush-parity.test.js.map +1 -0
- package/dist/ui/chat-layout-pinning.test.d.ts +2 -0
- package/dist/ui/chat-layout-pinning.test.d.ts.map +1 -0
- package/dist/ui/chat-layout-pinning.test.js +525 -0
- package/dist/ui/chat-layout-pinning.test.js.map +1 -0
- package/dist/ui/components/ActivityIndicator.d.ts +1 -2
- package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
- package/dist/ui/components/ActivityIndicator.js +63 -94
- package/dist/ui/components/ActivityIndicator.js.map +1 -1
- package/dist/ui/components/AnimationContext.d.ts.map +1 -1
- package/dist/ui/components/AnimationContext.js +3 -5
- package/dist/ui/components/AnimationContext.js.map +1 -1
- package/dist/ui/components/AssistantMessage.d.ts +6 -2
- package/dist/ui/components/AssistantMessage.d.ts.map +1 -1
- package/dist/ui/components/AssistantMessage.js +9 -4
- package/dist/ui/components/AssistantMessage.js.map +1 -1
- package/dist/ui/components/AssistantMessage.test.d.ts +2 -0
- package/dist/ui/components/AssistantMessage.test.d.ts.map +1 -0
- package/dist/ui/components/AssistantMessage.test.js +387 -0
- package/dist/ui/components/AssistantMessage.test.js.map +1 -0
- package/dist/ui/components/BackgroundTasksBar.d.ts +1 -3
- package/dist/ui/components/BackgroundTasksBar.d.ts.map +1 -1
- package/dist/ui/components/BackgroundTasksBar.js +8 -10
- package/dist/ui/components/BackgroundTasksBar.js.map +1 -1
- package/dist/ui/components/Banner.d.ts +1 -2
- package/dist/ui/components/Banner.d.ts.map +1 -1
- package/dist/ui/components/Banner.js +9 -4
- package/dist/ui/components/Banner.js.map +1 -1
- package/dist/ui/components/ChatFooterPane.d.ts +25 -0
- package/dist/ui/components/ChatFooterPane.d.ts.map +1 -0
- package/dist/ui/components/ChatFooterPane.js +15 -0
- package/dist/ui/components/ChatFooterPane.js.map +1 -0
- package/dist/ui/components/ChatInputStack.d.ts +36 -0
- package/dist/ui/components/ChatInputStack.d.ts.map +1 -0
- package/dist/ui/components/ChatInputStack.js +10 -0
- package/dist/ui/components/ChatInputStack.js.map +1 -0
- package/dist/ui/components/ChatLayout.d.ts +37 -0
- package/dist/ui/components/ChatLayout.d.ts.map +1 -0
- package/dist/ui/components/ChatLayout.js +21 -0
- package/dist/ui/components/ChatLayout.js.map +1 -0
- package/dist/ui/components/ChatLivePane.d.ts +18 -0
- package/dist/ui/components/ChatLivePane.d.ts.map +1 -0
- package/dist/ui/components/ChatLivePane.js +22 -0
- package/dist/ui/components/ChatLivePane.js.map +1 -0
- package/dist/ui/components/ChatScreen.d.ts +136 -0
- package/dist/ui/components/ChatScreen.d.ts.map +1 -0
- package/dist/ui/components/ChatScreen.js +16 -0
- package/dist/ui/components/ChatScreen.js.map +1 -0
- package/dist/ui/components/ChatStatusRow.d.ts +34 -0
- package/dist/ui/components/ChatStatusRow.d.ts.map +1 -0
- package/dist/ui/components/ChatStatusRow.js +11 -0
- package/dist/ui/components/ChatStatusRow.js.map +1 -0
- package/dist/ui/components/CompactionNotice.d.ts +4 -2
- package/dist/ui/components/CompactionNotice.d.ts.map +1 -1
- package/dist/ui/components/CompactionNotice.js +4 -4
- package/dist/ui/components/CompactionNotice.js.map +1 -1
- package/dist/ui/components/Footer.d.ts +27 -6
- package/dist/ui/components/Footer.d.ts.map +1 -1
- package/dist/ui/components/Footer.js +75 -30
- package/dist/ui/components/Footer.js.map +1 -1
- package/dist/ui/components/FooterStatusRow.d.ts +20 -0
- package/dist/ui/components/FooterStatusRow.d.ts.map +1 -0
- package/dist/ui/components/FooterStatusRow.js +10 -0
- package/dist/ui/components/FooterStatusRow.js.map +1 -0
- package/dist/ui/components/FullScreenOverlayRouter.d.ts +19 -0
- package/dist/ui/components/FullScreenOverlayRouter.d.ts.map +1 -0
- package/dist/ui/components/FullScreenOverlayRouter.js +18 -0
- package/dist/ui/components/FullScreenOverlayRouter.js.map +1 -0
- package/dist/ui/components/GoalOverlay.d.ts +28 -20
- package/dist/ui/components/GoalOverlay.d.ts.map +1 -1
- package/dist/ui/components/GoalOverlay.js +283 -253
- package/dist/ui/components/GoalOverlay.js.map +1 -1
- package/dist/ui/components/GoalStatusBar.d.ts.map +1 -1
- package/dist/ui/components/GoalStatusBar.js +2 -1
- package/dist/ui/components/GoalStatusBar.js.map +1 -1
- package/dist/ui/components/IdealHookMessage.d.ts +14 -0
- package/dist/ui/components/IdealHookMessage.d.ts.map +1 -0
- package/dist/ui/components/IdealHookMessage.js +26 -0
- package/dist/ui/components/IdealHookMessage.js.map +1 -0
- package/dist/ui/components/InputArea.d.ts +31 -6
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +208 -50
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/InputArea.test.js +11 -1
- package/dist/ui/components/InputArea.test.js.map +1 -1
- package/dist/ui/components/LiveToolPanel.d.ts +30 -0
- package/dist/ui/components/LiveToolPanel.d.ts.map +1 -0
- package/dist/ui/components/LiveToolPanel.js +66 -0
- package/dist/ui/components/LiveToolPanel.js.map +1 -0
- package/dist/ui/components/Markdown.d.ts +11 -11
- package/dist/ui/components/Markdown.d.ts.map +1 -1
- package/dist/ui/components/Markdown.js +28 -198
- package/dist/ui/components/Markdown.js.map +1 -1
- package/dist/ui/components/ModelSelector.d.ts.map +1 -1
- package/dist/ui/components/ModelSelector.js +18 -18
- package/dist/ui/components/ModelSelector.js.map +1 -1
- package/dist/ui/components/PlanModeLogo.d.ts +3 -0
- package/dist/ui/components/PlanModeLogo.d.ts.map +1 -0
- package/dist/ui/components/PlanModeLogo.js +49 -0
- package/dist/ui/components/PlanModeLogo.js.map +1 -0
- package/dist/ui/components/PlanOverlay.d.ts +7 -0
- package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
- package/dist/ui/components/PlanOverlay.js +17 -3
- package/dist/ui/components/PlanOverlay.js.map +1 -1
- package/dist/ui/components/PlanOverlay.test.d.ts +2 -0
- package/dist/ui/components/PlanOverlay.test.d.ts.map +1 -0
- package/dist/ui/components/PlanOverlay.test.js +24 -0
- package/dist/ui/components/PlanOverlay.test.js.map +1 -0
- package/dist/ui/components/QueueIndicator.d.ts +9 -0
- package/dist/ui/components/QueueIndicator.d.ts.map +1 -0
- package/dist/ui/components/QueueIndicator.js +9 -0
- package/dist/ui/components/QueueIndicator.js.map +1 -0
- package/dist/ui/components/RewindOverlay.d.ts +18 -0
- package/dist/ui/components/RewindOverlay.d.ts.map +1 -0
- package/dist/ui/components/RewindOverlay.js +52 -0
- package/dist/ui/components/RewindOverlay.js.map +1 -0
- package/dist/ui/components/SelectList.d.ts.map +1 -1
- package/dist/ui/components/SelectList.js +5 -0
- package/dist/ui/components/SelectList.js.map +1 -1
- package/dist/ui/components/ServerToolExecution.d.ts +2 -0
- package/dist/ui/components/ServerToolExecution.d.ts.map +1 -1
- package/dist/ui/components/ServerToolExecution.js +7 -23
- package/dist/ui/components/ServerToolExecution.js.map +1 -1
- package/dist/ui/components/SessionSummary.d.ts +5 -0
- package/dist/ui/components/SessionSummary.d.ts.map +1 -0
- package/dist/ui/components/SessionSummary.js +32 -0
- package/dist/ui/components/SessionSummary.js.map +1 -0
- package/dist/ui/components/SlashCommandMenu.d.ts +4 -3
- package/dist/ui/components/SlashCommandMenu.d.ts.map +1 -1
- package/dist/ui/components/SlashCommandMenu.js +38 -26
- package/dist/ui/components/SlashCommandMenu.js.map +1 -1
- package/dist/ui/components/SlashStyledSelectList.d.ts +21 -0
- package/dist/ui/components/SlashStyledSelectList.d.ts.map +1 -0
- package/dist/ui/components/SlashStyledSelectList.js +71 -0
- package/dist/ui/components/SlashStyledSelectList.js.map +1 -0
- package/dist/ui/components/StreamingArea.d.ts +11 -2
- package/dist/ui/components/StreamingArea.d.ts.map +1 -1
- package/dist/ui/components/StreamingArea.js +20 -23
- package/dist/ui/components/StreamingArea.js.map +1 -1
- package/dist/ui/components/StreamingArea.test.d.ts +2 -0
- package/dist/ui/components/StreamingArea.test.d.ts.map +1 -0
- package/dist/ui/components/StreamingArea.test.js +18 -0
- package/dist/ui/components/StreamingArea.test.js.map +1 -0
- package/dist/ui/components/SubAgentPanel.d.ts +2 -1
- package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
- package/dist/ui/components/SubAgentPanel.js +4 -3
- package/dist/ui/components/SubAgentPanel.js.map +1 -1
- package/dist/ui/components/TaskOverlay.d.ts.map +1 -1
- package/dist/ui/components/TaskOverlay.js +53 -82
- package/dist/ui/components/TaskOverlay.js.map +1 -1
- package/dist/ui/components/TaskPickerMenu.d.ts +9 -0
- package/dist/ui/components/TaskPickerMenu.d.ts.map +1 -0
- package/dist/ui/components/TaskPickerMenu.js +33 -0
- package/dist/ui/components/TaskPickerMenu.js.map +1 -0
- package/dist/ui/components/ThemeSelector.js +2 -2
- package/dist/ui/components/ThemeSelector.js.map +1 -1
- package/dist/ui/components/ToolExecution.d.ts +2 -0
- package/dist/ui/components/ToolExecution.d.ts.map +1 -1
- package/dist/ui/components/ToolExecution.js +18 -52
- package/dist/ui/components/ToolExecution.js.map +1 -1
- package/dist/ui/components/ToolGroupExecution.d.ts +6 -2
- package/dist/ui/components/ToolGroupExecution.d.ts.map +1 -1
- package/dist/ui/components/ToolGroupExecution.js +15 -147
- package/dist/ui/components/ToolGroupExecution.js.map +1 -1
- package/dist/ui/components/ToolUseLoader.d.ts +3 -1
- package/dist/ui/components/ToolUseLoader.d.ts.map +1 -1
- package/dist/ui/components/ToolUseLoader.js +2 -2
- package/dist/ui/components/ToolUseLoader.js.map +1 -1
- package/dist/ui/components/TranscriptViewport.d.ts +34 -0
- package/dist/ui/components/TranscriptViewport.d.ts.map +1 -0
- package/dist/ui/components/TranscriptViewport.js +45 -0
- package/dist/ui/components/TranscriptViewport.js.map +1 -0
- package/dist/ui/components/UserMessage.d.ts.map +1 -1
- package/dist/ui/components/UserMessage.js +15 -10
- package/dist/ui/components/UserMessage.js.map +1 -1
- package/dist/ui/components/UserMessage.test.d.ts +2 -0
- package/dist/ui/components/UserMessage.test.d.ts.map +1 -0
- package/dist/ui/components/UserMessage.test.js +39 -0
- package/dist/ui/components/UserMessage.test.js.map +1 -0
- package/dist/ui/components/index.d.ts +5 -0
- package/dist/ui/components/index.d.ts.map +1 -1
- package/dist/ui/components/index.js +5 -0
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/duration-format.d.ts +2 -0
- package/dist/ui/duration-format.d.ts.map +1 -0
- package/dist/ui/duration-format.js +9 -0
- package/dist/ui/duration-format.js.map +1 -0
- package/dist/ui/duration-summary.d.ts +2 -0
- package/dist/ui/duration-summary.d.ts.map +1 -0
- package/dist/ui/duration-summary.js +66 -0
- package/dist/ui/duration-summary.js.map +1 -0
- package/dist/ui/error-item.d.ts +8 -0
- package/dist/ui/error-item.d.ts.map +1 -0
- package/dist/ui/error-item.js +32 -0
- package/dist/ui/error-item.js.map +1 -0
- package/dist/ui/footer-jump-regression.test.d.ts +2 -0
- package/dist/ui/footer-jump-regression.test.d.ts.map +1 -0
- package/dist/ui/footer-jump-regression.test.js +177 -0
- package/dist/ui/footer-jump-regression.test.js.map +1 -0
- package/dist/ui/footer-status-layout.test.js +22 -7
- package/dist/ui/footer-status-layout.test.js.map +1 -1
- package/dist/ui/goal-events.d.ts.map +1 -1
- package/dist/ui/goal-events.js +14 -6
- package/dist/ui/goal-events.js.map +1 -1
- package/dist/ui/goal-events.test.js +40 -2
- package/dist/ui/goal-events.test.js.map +1 -1
- package/dist/ui/goal-lifecycle-orchestration.test.d.ts +2 -0
- package/dist/ui/goal-lifecycle-orchestration.test.d.ts.map +1 -0
- package/dist/ui/goal-lifecycle-orchestration.test.js +512 -0
- package/dist/ui/goal-lifecycle-orchestration.test.js.map +1 -0
- package/dist/ui/goal-overlay.test.js +122 -44
- package/dist/ui/goal-overlay.test.js.map +1 -1
- package/dist/ui/goal-status-bar.test.js +29 -0
- package/dist/ui/goal-status-bar.test.js.map +1 -1
- package/dist/ui/goal-summary.d.ts +14 -0
- package/dist/ui/goal-summary.d.ts.map +1 -0
- package/dist/ui/goal-summary.js +194 -0
- package/dist/ui/goal-summary.js.map +1 -0
- package/dist/ui/hooks/useAgentLoop.d.ts +25 -4
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +197 -22
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.test.d.ts +2 -0
- package/dist/ui/hooks/useAgentLoop.test.d.ts.map +1 -0
- package/dist/ui/hooks/useAgentLoop.test.js +8 -0
- package/dist/ui/hooks/useAgentLoop.test.js.map +1 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.d.ts +45 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.d.ts.map +1 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.js +97 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.js.map +1 -0
- package/dist/ui/hooks/useContextCompaction.d.ts +41 -0
- package/dist/ui/hooks/useContextCompaction.d.ts.map +1 -0
- package/dist/ui/hooks/useContextCompaction.js +149 -0
- package/dist/ui/hooks/useContextCompaction.js.map +1 -0
- package/dist/ui/hooks/useModeState.d.ts +56 -0
- package/dist/ui/hooks/useModeState.d.ts.map +1 -0
- package/dist/ui/hooks/useModeState.js +65 -0
- package/dist/ui/hooks/useModeState.js.map +1 -0
- package/dist/ui/hooks/usePixelFixFlow.d.ts +57 -0
- package/dist/ui/hooks/usePixelFixFlow.d.ts.map +1 -0
- package/dist/ui/hooks/usePixelFixFlow.js +102 -0
- package/dist/ui/hooks/usePixelFixFlow.js.map +1 -0
- package/dist/ui/hooks/useSessionPersistence.d.ts +34 -0
- package/dist/ui/hooks/useSessionPersistence.d.ts.map +1 -0
- package/dist/ui/hooks/useSessionPersistence.js +67 -0
- package/dist/ui/hooks/useSessionPersistence.js.map +1 -0
- package/dist/ui/hooks/useTaskPickerController.d.ts +19 -0
- package/dist/ui/hooks/useTaskPickerController.d.ts.map +1 -0
- package/dist/ui/hooks/useTaskPickerController.js +41 -0
- package/dist/ui/hooks/useTaskPickerController.js.map +1 -0
- package/dist/ui/hooks/useTerminalSize.d.ts +13 -10
- package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalSize.js +21 -16
- package/dist/ui/hooks/useTerminalSize.js.map +1 -1
- package/dist/ui/hooks/useTranscriptHistory.d.ts +48 -0
- package/dist/ui/hooks/useTranscriptHistory.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptHistory.js +113 -0
- package/dist/ui/hooks/useTranscriptHistory.js.map +1 -0
- package/dist/ui/hooks/useTranscriptHistory.test.d.ts +2 -0
- package/dist/ui/hooks/useTranscriptHistory.test.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptHistory.test.js +61 -0
- package/dist/ui/hooks/useTranscriptHistory.test.js.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.d.ts +30 -0
- package/dist/ui/hooks/useTranscriptScroll.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.js +44 -0
- package/dist/ui/hooks/useTranscriptScroll.js.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.test.d.ts +2 -0
- package/dist/ui/hooks/useTranscriptScroll.test.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.test.js +119 -0
- package/dist/ui/hooks/useTranscriptScroll.test.js.map +1 -0
- package/dist/ui/item-helpers.d.ts +26 -0
- package/dist/ui/item-helpers.d.ts.map +1 -0
- package/dist/ui/item-helpers.js +114 -0
- package/dist/ui/item-helpers.js.map +1 -0
- package/dist/ui/layout-decisions.d.ts +81 -0
- package/dist/ui/layout-decisions.d.ts.map +1 -0
- package/dist/ui/layout-decisions.js +89 -0
- package/dist/ui/layout-decisions.js.map +1 -0
- package/dist/ui/live-area-clamp.test.d.ts +2 -0
- package/dist/ui/live-area-clamp.test.d.ts.map +1 -0
- package/dist/ui/live-area-clamp.test.js +88 -0
- package/dist/ui/live-area-clamp.test.js.map +1 -0
- package/dist/ui/live-area-height.d.ts +35 -0
- package/dist/ui/live-area-height.d.ts.map +1 -0
- package/dist/ui/live-area-height.js +80 -0
- package/dist/ui/live-area-height.js.map +1 -0
- package/dist/ui/live-area-height.test.d.ts +2 -0
- package/dist/ui/live-area-height.test.d.ts.map +1 -0
- package/dist/ui/live-area-height.test.js +67 -0
- package/dist/ui/live-area-height.test.js.map +1 -0
- package/dist/ui/live-frame-height.test.d.ts +2 -0
- package/dist/ui/live-frame-height.test.d.ts.map +1 -0
- package/dist/ui/live-frame-height.test.js +116 -0
- package/dist/ui/live-frame-height.test.js.map +1 -0
- package/dist/ui/live-item-flush.d.ts +2 -2
- package/dist/ui/live-item-flush.d.ts.map +1 -1
- package/dist/ui/live-item-flush.js +8 -4
- package/dist/ui/live-item-flush.js.map +1 -1
- package/dist/ui/login.js +1 -1
- package/dist/ui/long-prompt-regression-harness.test.d.ts +2 -0
- package/dist/ui/long-prompt-regression-harness.test.d.ts.map +1 -0
- package/dist/ui/long-prompt-regression-harness.test.js +195 -0
- package/dist/ui/long-prompt-regression-harness.test.js.map +1 -0
- package/dist/ui/mcp.d.ts +62 -0
- package/dist/ui/mcp.d.ts.map +1 -0
- package/dist/ui/mcp.js +306 -0
- package/dist/ui/mcp.js.map +1 -0
- package/dist/ui/plan-overlay.test.js +7 -29
- package/dist/ui/plan-overlay.test.js.map +1 -1
- package/dist/ui/prompt-routing.d.ts +11 -0
- package/dist/ui/prompt-routing.d.ts.map +1 -0
- package/dist/ui/prompt-routing.js +61 -0
- package/dist/ui/prompt-routing.js.map +1 -0
- package/dist/ui/queued-message.test.d.ts +2 -0
- package/dist/ui/queued-message.test.d.ts.map +1 -0
- package/dist/ui/queued-message.test.js +162 -0
- package/dist/ui/queued-message.test.js.map +1 -0
- package/dist/ui/render.d.ts +38 -42
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +128 -42
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/render.test.d.ts +2 -0
- package/dist/ui/render.test.d.ts.map +1 -0
- package/dist/ui/render.test.js +16 -0
- package/dist/ui/render.test.js.map +1 -0
- package/dist/ui/scroll-stabilization.test.js +1 -7
- package/dist/ui/scroll-stabilization.test.js.map +1 -1
- package/dist/ui/session-summary.d.ts +63 -0
- package/dist/ui/session-summary.d.ts.map +1 -0
- package/dist/ui/session-summary.js +81 -0
- package/dist/ui/session-summary.js.map +1 -0
- package/dist/ui/slash-command-images.test.js +12 -11
- package/dist/ui/slash-command-images.test.js.map +1 -1
- package/dist/ui/stores/transcript-scroll-store.d.ts +27 -0
- package/dist/ui/stores/transcript-scroll-store.d.ts.map +1 -0
- package/dist/ui/stores/transcript-scroll-store.js +73 -0
- package/dist/ui/stores/transcript-scroll-store.js.map +1 -0
- package/dist/ui/stores/transcript-scroll-store.test.d.ts +2 -0
- package/dist/ui/stores/transcript-scroll-store.test.d.ts.map +1 -0
- package/dist/ui/stores/transcript-scroll-store.test.js +73 -0
- package/dist/ui/stores/transcript-scroll-store.test.js.map +1 -0
- package/dist/ui/streaming-flush-bounce.test.d.ts +2 -0
- package/dist/ui/streaming-flush-bounce.test.d.ts.map +1 -0
- package/dist/ui/streaming-flush-bounce.test.js +156 -0
- package/dist/ui/streaming-flush-bounce.test.js.map +1 -0
- package/dist/ui/submit-prompt-command.d.ts +49 -0
- package/dist/ui/submit-prompt-command.d.ts.map +1 -0
- package/dist/ui/submit-prompt-command.js +107 -0
- package/dist/ui/submit-prompt-command.js.map +1 -0
- package/dist/ui/submit-slash-commands.d.ts +12 -0
- package/dist/ui/submit-slash-commands.d.ts.map +1 -0
- package/dist/ui/submit-slash-commands.js +32 -0
- package/dist/ui/submit-slash-commands.js.map +1 -0
- package/dist/ui/terminal-history-format.d.ts +43 -0
- package/dist/ui/terminal-history-format.d.ts.map +1 -0
- package/dist/ui/terminal-history-format.js +133 -0
- package/dist/ui/terminal-history-format.js.map +1 -0
- package/dist/ui/terminal-history-retry-dedup.test.d.ts +2 -0
- package/dist/ui/terminal-history-retry-dedup.test.d.ts.map +1 -0
- package/dist/ui/terminal-history-retry-dedup.test.js +61 -0
- package/dist/ui/terminal-history-retry-dedup.test.js.map +1 -0
- package/dist/ui/terminal-history-spacing.d.ts +2 -0
- package/dist/ui/terminal-history-spacing.d.ts.map +1 -0
- package/dist/ui/terminal-history-spacing.js +2 -0
- package/dist/ui/terminal-history-spacing.js.map +1 -0
- package/dist/ui/terminal-history-status-renderers.d.ts +15 -0
- package/dist/ui/terminal-history-status-renderers.d.ts.map +1 -0
- package/dist/ui/terminal-history-status-renderers.js +99 -0
- package/dist/ui/terminal-history-status-renderers.js.map +1 -0
- package/dist/ui/terminal-history.d.ts +26 -0
- package/dist/ui/terminal-history.d.ts.map +1 -0
- package/dist/ui/terminal-history.js +916 -0
- package/dist/ui/terminal-history.js.map +1 -0
- package/dist/ui/terminal-history.test.d.ts +2 -0
- package/dist/ui/terminal-history.test.d.ts.map +1 -0
- package/dist/ui/terminal-history.test.js +550 -0
- package/dist/ui/terminal-history.test.js.map +1 -0
- package/dist/ui/testing/screen-recorder.d.ts +29 -0
- package/dist/ui/testing/screen-recorder.d.ts.map +1 -0
- package/dist/ui/testing/screen-recorder.js +179 -0
- package/dist/ui/testing/screen-recorder.js.map +1 -0
- package/dist/ui/thinking-level-cycle.test.d.ts +2 -0
- package/dist/ui/thinking-level-cycle.test.d.ts.map +1 -0
- package/dist/ui/thinking-level-cycle.test.js +45 -0
- package/dist/ui/thinking-level-cycle.test.js.map +1 -0
- package/dist/ui/thinking-level.d.ts +2 -0
- package/dist/ui/thinking-level.d.ts.map +1 -0
- package/dist/ui/thinking-level.js +2 -0
- package/dist/ui/thinking-level.js.map +1 -0
- package/dist/ui/tool-group-summary.d.ts +24 -0
- package/dist/ui/tool-group-summary.d.ts.map +1 -0
- package/dist/ui/tool-group-summary.js +233 -0
- package/dist/ui/tool-group-summary.js.map +1 -0
- package/dist/ui/tool-group-summary.test.d.ts +2 -0
- package/dist/ui/tool-group-summary.test.d.ts.map +1 -0
- package/dist/ui/tool-group-summary.test.js +79 -0
- package/dist/ui/tool-group-summary.test.js.map +1 -0
- package/dist/ui/tool-line-summary.d.ts +29 -0
- package/dist/ui/tool-line-summary.d.ts.map +1 -0
- package/dist/ui/tool-line-summary.js +153 -0
- package/dist/ui/tool-line-summary.js.map +1 -0
- package/dist/ui/transcript/MiscRows.d.ts +26 -0
- package/dist/ui/transcript/MiscRows.d.ts.map +1 -0
- package/dist/ui/transcript/MiscRows.js +68 -0
- package/dist/ui/transcript/MiscRows.js.map +1 -0
- package/dist/ui/transcript/StatusRow.d.ts +14 -0
- package/dist/ui/transcript/StatusRow.d.ts.map +1 -0
- package/dist/ui/transcript/StatusRow.js +14 -0
- package/dist/ui/transcript/StatusRow.js.map +1 -0
- package/dist/ui/transcript/ToolRows.d.ts +20 -0
- package/dist/ui/transcript/ToolRows.d.ts.map +1 -0
- package/dist/ui/transcript/ToolRows.js +25 -0
- package/dist/ui/transcript/ToolRows.js.map +1 -0
- package/dist/ui/transcript/TranscriptItemFrame.d.ts +8 -0
- package/dist/ui/transcript/TranscriptItemFrame.d.ts.map +1 -0
- package/dist/ui/transcript/TranscriptItemFrame.js +9 -0
- package/dist/ui/transcript/TranscriptItemFrame.js.map +1 -0
- package/dist/ui/transcript/TranscriptRenderer.d.ts +22 -0
- package/dist/ui/transcript/TranscriptRenderer.d.ts.map +1 -0
- package/dist/ui/transcript/TranscriptRenderer.js +111 -0
- package/dist/ui/transcript/TranscriptRenderer.js.map +1 -0
- package/dist/ui/transcript/presentation.d.ts +61 -0
- package/dist/ui/transcript/presentation.d.ts.map +1 -0
- package/dist/ui/transcript/presentation.js +86 -0
- package/dist/ui/transcript/presentation.js.map +1 -0
- package/dist/ui/transcript/spacing.d.ts +56 -0
- package/dist/ui/transcript/spacing.d.ts.map +1 -0
- package/dist/ui/transcript/spacing.js +129 -0
- package/dist/ui/transcript/spacing.js.map +1 -0
- package/dist/ui/transcript/spacing.test.d.ts +2 -0
- package/dist/ui/transcript/spacing.test.d.ts.map +1 -0
- package/dist/ui/transcript/spacing.test.js +193 -0
- package/dist/ui/transcript/spacing.test.js.map +1 -0
- package/dist/ui/transcript/tool-presentation.d.ts +12 -0
- package/dist/ui/transcript/tool-presentation.d.ts.map +1 -0
- package/dist/ui/transcript/tool-presentation.js +55 -0
- package/dist/ui/transcript/tool-presentation.js.map +1 -0
- package/dist/ui/transcript/transcript-lines.d.ts +32 -0
- package/dist/ui/transcript/transcript-lines.d.ts.map +1 -0
- package/dist/ui/transcript/transcript-lines.js +86 -0
- package/dist/ui/transcript/transcript-lines.js.map +1 -0
- package/dist/ui/transcript/transcript-lines.test.d.ts +2 -0
- package/dist/ui/transcript/transcript-lines.test.d.ts.map +1 -0
- package/dist/ui/transcript/transcript-lines.test.js +76 -0
- package/dist/ui/transcript/transcript-lines.test.js.map +1 -0
- package/dist/ui/transcript-viewport-pinning.test.d.ts +2 -0
- package/dist/ui/transcript-viewport-pinning.test.d.ts.map +1 -0
- package/dist/ui/transcript-viewport-pinning.test.js +148 -0
- package/dist/ui/transcript-viewport-pinning.test.js.map +1 -0
- package/dist/ui/tui-history-parity.test.d.ts +2 -0
- package/dist/ui/tui-history-parity.test.d.ts.map +1 -0
- package/dist/ui/tui-history-parity.test.js +381 -0
- package/dist/ui/tui-history-parity.test.js.map +1 -0
- package/dist/ui/tui-simulation.test.d.ts +2 -0
- package/dist/ui/tui-simulation.test.d.ts.map +1 -0
- package/dist/ui/tui-simulation.test.js +139 -0
- package/dist/ui/tui-simulation.test.js.map +1 -0
- package/dist/ui/tui-terminal-recorder.test.d.ts +2 -0
- package/dist/ui/tui-terminal-recorder.test.d.ts.map +1 -0
- package/dist/ui/tui-terminal-recorder.test.js +134 -0
- package/dist/ui/tui-terminal-recorder.test.js.map +1 -0
- package/dist/ui/utils/assistant-stream-split.d.ts +23 -0
- package/dist/ui/utils/assistant-stream-split.d.ts.map +1 -0
- package/dist/ui/utils/assistant-stream-split.js +41 -0
- package/dist/ui/utils/assistant-stream-split.js.map +1 -0
- package/dist/ui/utils/assistant-stream-split.test.d.ts +2 -0
- package/dist/ui/utils/assistant-stream-split.test.d.ts.map +1 -0
- package/dist/ui/utils/assistant-stream-split.test.js +40 -0
- package/dist/ui/utils/assistant-stream-split.test.js.map +1 -0
- package/dist/ui/utils/latex-to-unicode.d.ts +22 -0
- package/dist/ui/utils/latex-to-unicode.d.ts.map +1 -0
- package/dist/ui/utils/latex-to-unicode.js +538 -0
- package/dist/ui/utils/latex-to-unicode.js.map +1 -0
- package/dist/ui/utils/markdown-renderer.d.ts +20 -0
- package/dist/ui/utils/markdown-renderer.d.ts.map +1 -0
- package/dist/ui/utils/markdown-renderer.js +327 -0
- package/dist/ui/utils/markdown-renderer.js.map +1 -0
- package/dist/ui/utils/markdown-table.d.ts +9 -0
- package/dist/ui/utils/markdown-table.d.ts.map +1 -0
- package/dist/ui/utils/markdown-table.js +95 -0
- package/dist/ui/utils/markdown-table.js.map +1 -0
- package/dist/ui/utils/terminal-graphics.d.ts +16 -0
- package/dist/ui/utils/terminal-graphics.d.ts.map +1 -0
- package/dist/ui/utils/terminal-graphics.js +68 -0
- package/dist/ui/utils/terminal-graphics.js.map +1 -0
- package/dist/ui/utils/terminal-graphics.test.d.ts +2 -0
- package/dist/ui/utils/terminal-graphics.test.d.ts.map +1 -0
- package/dist/ui/utils/terminal-graphics.test.js +61 -0
- package/dist/ui/utils/terminal-graphics.test.js.map +1 -0
- package/dist/ui/utils/terminal-input.d.ts +3 -0
- package/dist/ui/utils/terminal-input.d.ts.map +1 -0
- package/dist/ui/utils/terminal-input.js +28 -0
- package/dist/ui/utils/terminal-input.js.map +1 -0
- package/dist/ui/utils/terminal-input.test.d.ts +2 -0
- package/dist/ui/utils/terminal-input.test.d.ts.map +1 -0
- package/dist/ui/utils/terminal-input.test.js +15 -0
- package/dist/ui/utils/terminal-input.test.js.map +1 -0
- package/dist/ui/utils/text-utils.d.ts +8 -0
- package/dist/ui/utils/text-utils.d.ts.map +1 -0
- package/dist/ui/utils/text-utils.js +16 -0
- package/dist/ui/utils/text-utils.js.map +1 -0
- package/dist/ui/utils/token-to-ansi.js +19 -9
- package/dist/ui/utils/token-to-ansi.js.map +1 -1
- package/dist/ui/utils/user-message-display.d.ts +7 -0
- package/dist/ui/utils/user-message-display.d.ts.map +1 -0
- package/dist/ui/utils/user-message-display.js +26 -0
- package/dist/ui/utils/user-message-display.js.map +1 -0
- package/dist/utils/format.js +7 -9
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/image.d.ts +9 -0
- package/dist/utils/image.d.ts.map +1 -1
- package/dist/utils/image.js +25 -0
- package/dist/utils/image.js.map +1 -1
- package/dist/utils/plan-steps.d.ts.map +1 -1
- package/dist/utils/plan-steps.js +5 -1
- package/dist/utils/plan-steps.js.map +1 -1
- package/dist/utils/plan-steps.test.d.ts +2 -0
- package/dist/utils/plan-steps.test.d.ts.map +1 -0
- package/dist/utils/plan-steps.test.js +16 -0
- package/dist/utils/plan-steps.test.js.map +1 -0
- package/package.json +50 -10
- package/dist/core/repomap-context.d.ts +0 -11
- package/dist/core/repomap-context.d.ts.map +0 -1
- package/dist/core/repomap-context.js +0 -68
- package/dist/core/repomap-context.js.map +0 -1
- package/dist/core/repomap-context.test.d.ts +0 -2
- package/dist/core/repomap-context.test.d.ts.map +0 -1
- package/dist/core/repomap-context.test.js +0 -47
- package/dist/core/repomap-context.test.js.map +0 -1
- package/dist/core/repomap.d.ts +0 -74
- package/dist/core/repomap.d.ts.map +0 -1
- package/dist/core/repomap.js +0 -906
- package/dist/core/repomap.js.map +0 -1
- package/dist/core/repomap.test.d.ts +0 -2
- package/dist/core/repomap.test.d.ts.map +0 -1
- package/dist/core/repomap.test.js +0 -494
- package/dist/core/repomap.test.js.map +0 -1
- package/dist/ui/components/EyesOverlay.d.ts +0 -10
- package/dist/ui/components/EyesOverlay.d.ts.map +0 -1
- package/dist/ui/components/EyesOverlay.js +0 -220
- package/dist/ui/components/EyesOverlay.js.map +0 -1
|
@@ -6,333 +6,97 @@ export const PROMPT_COMMANDS = [
|
|
|
6
6
|
{
|
|
7
7
|
name: "goal",
|
|
8
8
|
aliases: ["g"],
|
|
9
|
-
description: "
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
## User objective
|
|
15
|
-
|
|
16
|
-
The user's objective is in the command arguments. If the arguments are absent or too vague to identify an actionable objective, ask exactly one concise clarifying question and do not create a Goal run yet.
|
|
17
|
-
|
|
18
|
-
## Required behavior
|
|
19
|
-
|
|
20
|
-
1. Translate the user's objective into:
|
|
21
|
-
- a short title,
|
|
22
|
-
- the original goal text,
|
|
23
|
-
- concrete success criteria that can be verified,
|
|
24
|
-
- prerequisite checks,
|
|
25
|
-
- an evidence plan: the simplest proof paths that would demonstrate success end-to-end,
|
|
26
|
-
- the local/free harness or observability you can build,
|
|
27
|
-
- a verifier command or verifier description.
|
|
28
|
-
2. Build a capability/evidence plan before implementation: decide what would actually prove the goal works, such as scripts, tests, fixtures, seeded data, app/dev servers, browser automation, screenshots, logs, video/frame inspection, source/docs/code-search comparison, local CLIs, or generated assets. Do not require a script for every task; choose the simplest reliable proof that removes assumptions.
|
|
29
|
-
3. Before doing implementation work or launching workers, identify prerequisites and check the ones you can check locally. Examples:
|
|
30
|
-
- model/API/OAuth credentials exist for simulated-agent testing,
|
|
31
|
-
- required local CLIs exist (ffmpeg, expo, adb, xcrun, playwright, etc.),
|
|
32
|
-
- required app/dev server can start or is already running,
|
|
33
|
-
- required fixture files, assets, devices, emulators, or test data exist or can be generated locally.
|
|
34
|
-
4. Prefer local/free tools: scripts, shell commands, existing CLIs, test runners, logs, screenshots/images, existing dependencies, source_path, web docs, kencode search, and disposable workers/subagents. Do not require paid services, signups, or new external accounts unless unavoidable.
|
|
35
|
-
5. Only ask the user for true external blockers after checking what you can do yourself. If a missing input cannot be generated or verified locally (credentials, paid services, physical devices, private assets, permissions), record the exact minimal prerequisite and ask once in chat; do not ask for broad lists of things you could inspect or create yourself.
|
|
36
|
-
6. Treat user-provided prerequisites as the first Goal item, named "User prerequisites" in the pane. The user may provide the missing value or instructions in chat. After they do, verify it locally without revealing secrets, then update the matching prerequisite to \`met\` with short evidence before any worker task runs.
|
|
37
|
-
7. Persist the run with the goals tool:
|
|
38
|
-
- call \`goals({ action: "create", ... })\` once the objective is understood,
|
|
39
|
-
- include success criteria, prerequisites, evidence_plan items, harness items, and verifier info,
|
|
40
|
-
- if any prerequisite is missing or unknown and cannot be automatically checked, persist the run as blocked and ask the user for the exact missing thing once.
|
|
41
|
-
8. Add Goal tasks with \`goals({ action: "task", ... })\`. Do not use the normal tasks tool for this workflow. Each Goal task prompt must be standalone, mention the same project cwd, the specific files/scripts/commands to use, evidence to record, and verification expectations. Avoid pure "investigate and report" tasks unless their prompt explicitly requires persisting concrete findings with \`goals({ action: "evidence", ... })\` and creating or updating the next implementation task from those findings.
|
|
42
|
-
9. Persist evidence with \`goals({ action: "evidence", ... })\` whenever you create diagnostics, run harnesses, capture logs/screenshots, record controller decisions, attach verifier artifact paths, or learn a blocker.
|
|
43
|
-
10. Completion means verifier evidence satisfies the original success criteria. Do not call \`goals({ action: "complete" })\` merely because tasks are done; only complete after verification passes.
|
|
44
|
-
11. When the Goal reaches a terminal state, give the user a concise final summary in chat. Use a compact 3–4 column table with columns that fit what happened, such as outcome, evidence/verifier, changed work, blockers, or next action. Do not dump worker logs; point to artifact paths when useful.
|
|
45
|
-
|
|
46
|
-
## Loop semantics
|
|
47
|
-
|
|
48
|
-
Think in this order: observe → instrument → automate → run → inspect evidence → fix → rerun until verified or blocked.
|
|
49
|
-
|
|
50
|
-
After the user starts a Goal from the Goal pane with (R), worker and verifier completions are sent back to you as hidden synthetic events. On each event, call \`goals({ action: "status", run_id })\`, inspect current state, briefly say what the orchestrator is doing so the chat shows progress, and take the next durable control-loop action rather than merely narrating. The UI keeps auto-continuing until the run is passed, blocked, paused, or failed.
|
|
51
|
-
|
|
52
|
-
If no verifier command exists yet, create a task to define one. If the verifier fails, persist the failure evidence and add the next Goal task that addresses the failure. Cap runaway loops by pausing and recording evidence when repeated attempts stop making progress.
|
|
53
|
-
|
|
54
|
-
## Final response
|
|
55
|
-
|
|
56
|
-
When initially creating the Goal, keep the response short: say whether the Goal was created, ready, or blocked; mention the exact missing prerequisite if blocked; and tell the user they can press Ctrl+G to view it. If they ask how to start it, tell them the Goal pane keybind is (R) to run it. When auto-continuation eventually passes, fails, blocks, or pauses the Goal, provide the compact final summary table described above.`,
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
name: "scan",
|
|
60
|
-
aliases: [],
|
|
61
|
-
description: "Find confirmed dead code only",
|
|
62
|
-
prompt: `# Scan: Confirmed Dead Code Review
|
|
63
|
-
|
|
64
|
-
Find dead code in this codebase. Do not look for bugs, security issues, performance issues, style issues, or refactors. This command is report-first: do not edit or delete anything until the user chooses an option at the end.
|
|
65
|
-
|
|
66
|
-
## Phase 1: Parallel dead-code search
|
|
67
|
-
|
|
68
|
-
Spawn exactly 3 sub-agents in parallel using the subagent tool (call the subagent tool 3 times in a single response), each with a different validation angle:
|
|
69
|
-
|
|
70
|
-
**Agent 1 - Static Reachability**: Check exports, imports, call sites, route registration, command registration, component usage, tests, package entrypoints, and public API surfaces. Identify candidates only when references appear absent or unreachable.
|
|
71
|
-
|
|
72
|
-
**Agent 2 - Runtime & Dynamic Usage**: Check dynamic loading, reflection, string-based references, plugin systems, CLI commands, routes, config keys, generated-code hooks, framework conventions, side-effect imports, and files used outside TypeScript import graphs.
|
|
73
|
-
|
|
74
|
-
**Agent 3 - Historical & Boundary Safety**: Check git history, package manifests, build configs, docs, examples, scripts, CI, release artifacts, and external-facing filenames/API names that may be consumed by users even if unused internally.
|
|
75
|
-
|
|
76
|
-
Each sub-agent must return only candidates with file:line ranges, estimated line counts, validation evidence, and reasons removal may be unsafe. Finding nothing is valid.
|
|
77
|
-
|
|
78
|
-
## Phase 2: Main-agent validation
|
|
79
|
-
|
|
80
|
-
For every candidate, validate it yourself before reporting it:
|
|
81
|
-
|
|
82
|
-
1. Search for references with grep/find and language-aware patterns where possible, including exact symbol names, filenames, route names, config keys, CLI command names, test names, and documented examples.
|
|
83
|
-
2. Check exports and package/public entrypoints before marking anything removable.
|
|
84
|
-
3. Check framework conventions and dynamic lookup risks before marking anything removable. Use official docs when a framework/tool convention could imply usage without direct imports.
|
|
85
|
-
4. Check whether removing it would change public API, CLI behavior, routes, config support, migration behavior, generated artifacts, docs examples, tests, or side effects.
|
|
86
|
-
5. For code-level removal tasks, kencode search is secondary: use it only to verify framework/tool conventions or common generated-code patterns that could make code appear unused locally. Do not treat absence from public code search as proof that local code is dead.
|
|
87
|
-
6. If evidence is incomplete, mark safety as Low or drop the finding.
|
|
88
|
-
|
|
89
|
-
## What counts as dead code
|
|
90
|
-
|
|
91
|
-
Report only code that is validated as one of:
|
|
92
|
-
|
|
93
|
-
- **Unused file**: no imports, no entrypoint references, no dynamic/framework usage, no public/exported contract.
|
|
94
|
-
- **Unused export**: exported but not referenced internally or by package entrypoints, and not part of documented/public API.
|
|
95
|
-
- **Unreachable branch**: condition/path cannot execute based on current code and config.
|
|
96
|
-
- **Obsolete artifact**: stale script/config/example/generated artifact no longer referenced by build, docs, package manifests, or CI.
|
|
97
|
-
- **No-op code**: code executes but has no observable effect and no intentional placeholder/documentation purpose.
|
|
98
|
-
|
|
99
|
-
Do not report:
|
|
100
|
-
- Public APIs, package exports, CLI commands, routes, config keys, migrations, docs examples, tests, generated-code integration points, or plugin hooks unless you can prove they are obsolete.
|
|
101
|
-
- Code only unused in the current test suite.
|
|
102
|
-
- Code that might be used through strings, framework conventions, side effects, or external consumers.
|
|
103
|
-
- Anything you are not confident is safe to remove.
|
|
104
|
-
|
|
105
|
-
## Safety labels
|
|
106
|
-
|
|
107
|
-
- **High**: Strong evidence from static references, entrypoints, configs, docs, tests, and dynamic-use checks; removal is likely safe.
|
|
108
|
-
- **Medium**: Probably dead, but one boundary or dynamic-use risk remains; remove only with targeted verification.
|
|
109
|
-
- **Low**: Suspicious but not proven; do not remove without more investigation.
|
|
110
|
-
|
|
111
|
-
## Final output
|
|
112
|
-
|
|
113
|
-
Output one concise table, prioritized by safety and impact. No prose before the table.
|
|
114
|
-
|
|
115
|
-
| Priority | Location | Lines | Dead-code type | Evidence | Safety to remove | Recommended action |
|
|
116
|
-
|---|---|---:|---|---|---|---|
|
|
117
|
-
| P0/P1/P2/P3 | file:line-line | N | unused file/export/branch/artifact/no-op | one sentence | High/Medium/Low | Remove / Investigate / Keep |
|
|
118
|
-
|
|
119
|
-
Priority guide:
|
|
120
|
-
- **P0**: High-safety removal with meaningful line or complexity reduction.
|
|
121
|
-
- **P1**: High-safety small removal, or Medium-safety meaningful cleanup.
|
|
122
|
-
- **P2**: Medium-safety small cleanup; needs targeted verification.
|
|
123
|
-
- **P3**: Low-safety candidate; keep unless user wants deeper investigation.
|
|
124
|
-
|
|
125
|
-
Rules:
|
|
126
|
-
- Put High safety rows first, then Medium, then Low.
|
|
127
|
-
- Keep each table cell short.
|
|
128
|
-
- If no confirmed dead code is found, output one row saying none found and set action to \`Keep\`.
|
|
129
|
-
- Do not recommend deletion for Low-safety rows.
|
|
130
|
-
|
|
131
|
-
After the table, ask exactly:
|
|
132
|
-
|
|
133
|
-
What should I do?
|
|
134
|
-
A) Create tasks to remove all High-safety dead code
|
|
135
|
-
B) Create tasks to remove only top priorities
|
|
136
|
-
C) Skip
|
|
137
|
-
|
|
138
|
-
Do not start deleting or editing until the user chooses.
|
|
139
|
-
|
|
140
|
-
If the user chooses A or B, do not remove code directly. Instead, use the tasks tool to create one task per selected removal or tightly coupled removal group, ordered by dependency and risk. Each task prompt must be standalone and include the exact locations, safety evidence, reference-search requirements, removal instructions, project verification commands, and instructions to prove the removal did not delete used code before marking the task complete. That proof must include fresh local reference searches after editing, relevant project checks/tests, and official-docs or kencode comparison only where framework/tool conventions or generated-code patterns could imply hidden usage. After creating tasks, tell the user exactly: "Tasks created. Press CTRL + T to open the Tasks Pane and press R to run all tasks." Do not begin executing them unless the user explicitly starts a task.`,
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
name: "verify",
|
|
144
|
-
aliases: [],
|
|
145
|
-
description: "Review this codebase against real-world implementations",
|
|
146
|
-
prompt: `# Verify: Codebase Real-World Check
|
|
147
|
-
|
|
148
|
-
Review this codebase's implementation against real-world code, not opinions. Start with changes from this conversation or \`git diff\` / \`git status\`; if there are no relevant changes, choose the most important implemented feature or module in the current project and review that.
|
|
149
|
-
|
|
150
|
-
## Phase 1: Parallel codebase review
|
|
151
|
-
|
|
152
|
-
Spawn exactly 3 sub-agents in parallel using the subagent tool (call the subagent tool 3 times in a single response), each with a different focus:
|
|
153
|
-
|
|
154
|
-
**Agent 1 - Implementation Shape**: Identify the main APIs, components, functions, file structure, state flow, and integration points. Return only concrete search anchors and candidate concerns.
|
|
155
|
-
|
|
156
|
-
**Agent 2 - Completeness**: Check whether the implementation appears to miss expected pieces: edge cases, cleanup, error states, validation, tests, configuration, accessibility, migrations, docs, or lifecycle handling. Return only concrete candidate gaps.
|
|
157
|
-
|
|
158
|
-
**Agent 3 - Divergence**: Look for unusual patterns, over-custom code, reinvented utilities, brittle abstractions, or choices that may differ from how mature projects solve the same problem. Return only concrete candidate divergences.
|
|
159
|
-
|
|
160
|
-
Each sub-agent must include file:line references and suggested literal search anchors for kencode search, such as imports, function names, hooks, props, config keys, or API calls. Do not report subjective style preferences.
|
|
161
|
-
|
|
162
|
-
## Phase 2: Real-world comparison with kencode search
|
|
163
|
-
|
|
164
|
-
After the 3 agents return, use \`mcp__kencode-search__searchCode\` yourself to verify or reject their candidates.
|
|
165
|
-
|
|
166
|
-
Search rules:
|
|
167
|
-
- Use literal code tokens, not conceptual phrases.
|
|
168
|
-
- Prefer imports, framework identifiers, config keys, hook names, component names, and API calls from this codebase.
|
|
169
|
-
- Use \`peek: true\` first when exploring, then fetch narrowed examples with repo/path filters when useful.
|
|
170
|
-
- Compare against multiple real repositories when possible; one repo is weak evidence unless it is an official or canonical implementation.
|
|
171
|
-
- If kencode search is unavailable or returns insufficient evidence, say that in the Evidence column and lower confidence.
|
|
172
|
-
|
|
173
|
-
## What to classify
|
|
174
|
-
|
|
175
|
-
Report only findings that fit one of these:
|
|
176
|
-
|
|
177
|
-
1. **Aligned** - The implementation matches consistent real-world practice. No action needed.
|
|
178
|
-
2. **Missing** - Real-world implementations consistently include something this code lacks.
|
|
179
|
-
3. **Divergent** - This code differs from common implementations in a way that likely matters.
|
|
180
|
-
4. **Better Elsewhere** - Real-world implementations solve the same problem more robustly or simply, with evidence.
|
|
181
|
-
|
|
182
|
-
Drop anything that is only taste, personal preference, or unsupported by code evidence.
|
|
183
|
-
|
|
184
|
-
## Final output
|
|
185
|
-
|
|
186
|
-
Output one concise table, prioritized by impact. No prose before the table.
|
|
187
|
-
|
|
188
|
-
| Priority | Type | Location | Finding | Evidence | Recommended action |
|
|
189
|
-
|---|---|---|---|---|---|
|
|
190
|
-
| P0/P1/P2/P3 | Missing/Divergent/Better Elsewhere/Aligned | file:line | one sentence | kencode evidence in one sentence | concrete action or \`None\` |
|
|
191
|
-
|
|
192
|
-
Priority guide:
|
|
193
|
-
- **P0**: likely bug, data loss, security risk, or broken integration.
|
|
194
|
-
- **P1**: important missing behavior or maintainability risk.
|
|
195
|
-
- **P2**: useful improvement backed by real-world evidence.
|
|
196
|
-
- **P3**: aligned/no-action observations.
|
|
197
|
-
|
|
198
|
-
Rules:
|
|
199
|
-
- Keep each table cell short.
|
|
200
|
-
- Put action-taking findings before aligned findings.
|
|
201
|
-
- If everything is aligned, output only aligned rows and set every action to \`None\`.
|
|
202
|
-
- If there is not enough evidence for any finding, output one row explaining that verification was inconclusive.
|
|
203
|
-
|
|
204
|
-
After the table, ask exactly:
|
|
205
|
-
|
|
206
|
-
Which should I do?
|
|
207
|
-
A) Create tasks to refine and adjust all
|
|
208
|
-
B) Create tasks for just top priorities
|
|
209
|
-
C) Skip
|
|
210
|
-
|
|
211
|
-
Do not start fixing until the user chooses.
|
|
212
|
-
|
|
213
|
-
If the user chooses A or B, do not fix directly. Instead, use the tasks tool to create one task per selected finding or tightly coupled finding group, ordered by dependency and priority. Each task prompt must be standalone and include the finding, affected local files/anchors, kencode evidence from the report, instructions to compare the approach with kencode search before editing, implementation instructions, project verification commands, and instructions to compare the final implementation with kencode search again before marking the task complete. After creating tasks, tell the user exactly: "Tasks created. Press CTRL + T to open the Tasks Pane and press R to run all tasks." Do not begin executing them unless the user explicitly starts a task.`,
|
|
9
|
+
description: "Plan as needed, then create a programmatic goal loop",
|
|
10
|
+
// Contract anchors for the audit verifier: /goal setup is setup-only.
|
|
11
|
+
// Do not implement; plan/research as needed first, then define success criteria, evidence_plan, verifier, and goals metadata, then stop.
|
|
12
|
+
prompt: "Create a Goal run for the following objective. First plan/research only if needed; Goal setup will consume that plan and create durable Goal state.",
|
|
214
13
|
},
|
|
215
14
|
{
|
|
216
15
|
name: "expand",
|
|
217
16
|
aliases: [],
|
|
218
|
-
description: "Find
|
|
219
|
-
prompt: `# Expand:
|
|
17
|
+
description: "Find exciting new features to add",
|
|
18
|
+
prompt: `# Expand: Exciting Feature Discovery
|
|
220
19
|
|
|
221
|
-
Find
|
|
20
|
+
Find the most exciting new features this project should add by comparing it to similar, adjacent, and best-in-class repositories/tools/products/services. This command is project-agnostic: infer what THIS project is before choosing comparisons. This command is report-first and feature-first — the only deliverable is a single ranked table of exciting, user-facing features. Do not edit, install, or implement anything until the user chooses an option at the end.
|
|
21
|
+
|
|
22
|
+
Focus on what users actually get excited about: the new, killer, user-facing capabilities that make a product stand out. Security audits, refactors, code-quality cleanups, tests, CI, and ops/DX hygiene are OUT OF SCOPE here — exclude them unless a specific item is itself an exciting user-facing feature.
|
|
222
23
|
|
|
223
24
|
## Phase 0: Profile this project first
|
|
224
25
|
|
|
225
26
|
Before external research, inspect the local project and write a private working profile:
|
|
226
27
|
|
|
227
|
-
- What the project does, who
|
|
228
|
-
- Core
|
|
229
|
-
-
|
|
230
|
-
- The most relevant comparison categories for THIS project. Do not assume this is an AI-agent app unless the repo proves it.
|
|
28
|
+
- What the project does, who its users are, and how they use it.
|
|
29
|
+
- Core user-facing surfaces, workflows, commands/routes/screens, and the features that already exist.
|
|
30
|
+
- The feature categories most relevant to THIS project. Do not assume a stack or product type.
|
|
231
31
|
|
|
232
|
-
Use this profile to decide
|
|
32
|
+
Use this profile to decide which features are relevant and genuinely missing. If the user passed arguments to /expand, treat them as a focus area and prioritize that lens while still validating relevance.
|
|
233
33
|
|
|
234
|
-
## Phase 1: Parallel
|
|
34
|
+
## Phase 1: Parallel feature research
|
|
235
35
|
|
|
236
|
-
Spawn exactly 5 sub-agents in parallel using the subagent tool (call the subagent tool 5 times in a single response). Give each sub-agent the project profile and a different
|
|
36
|
+
Spawn exactly 5 sub-agents in parallel using the subagent tool (call the subagent tool 5 times in a single response). Give each sub-agent the project profile and a different feature-hunting lens:
|
|
237
37
|
|
|
238
|
-
**Agent 1 - Direct
|
|
38
|
+
**Agent 1 - Direct competitor killer features**: The standout, most-loved user-facing features in the closest peer projects/tools/products that this project lacks.
|
|
239
39
|
|
|
240
|
-
**Agent 2 -
|
|
40
|
+
**Agent 2 - Adjacent & emerging tools**: Exciting user-facing features from adjacent products that would translate well to this project.
|
|
241
41
|
|
|
242
|
-
**Agent 3 -
|
|
42
|
+
**Agent 3 - User demand signals**: Highly requested or trending features — top-voted issues, roadmap items, community asks, reviews, discussions — that point at what users want next.
|
|
243
43
|
|
|
244
|
-
**Agent 4 -
|
|
44
|
+
**Agent 4 - Platform & ecosystem trends**: New user-facing capabilities unlocked by recent framework/API/model/platform releases that this project has not adopted yet.
|
|
245
45
|
|
|
246
|
-
**Agent 5 -
|
|
46
|
+
**Agent 5 - Differentiators & wow-factor**: Novel or innovative features that would make this project stand out, even if no single peer has shipped them yet.
|
|
247
47
|
|
|
248
48
|
Each sub-agent must:
|
|
249
49
|
|
|
250
|
-
1. Use current sources: prefer repos/releases/
|
|
251
|
-
2. Return only
|
|
252
|
-
3. Include source names/URLs, freshness date (commit/release/article/doc date), and the local search anchors they used or recommend to verify
|
|
253
|
-
4.
|
|
254
|
-
5. Avoid generic wishlist items. Every
|
|
50
|
+
1. Use current sources: prefer repos/releases/changelogs/docs/articles updated within the last 6 months. Drop old or stale sources unless they are canonical and still actively maintained.
|
|
51
|
+
2. Return only user-facing FEATURES that appear absent in this project — not refactors, hardening, tooling, tests, or internal cleanup.
|
|
52
|
+
3. Include source names/URLs, freshness date (commit/release/article/doc date), and the local search anchors they used or recommend to verify the feature is absent.
|
|
53
|
+
4. Rank its own candidates by how exciting and valuable they would be to users, and state why each is exciting.
|
|
54
|
+
5. Avoid generic wishlist items. Every feature must be grounded in an external comparison or a real user-demand signal and relevant to this project profile.
|
|
255
55
|
|
|
256
56
|
## Phase 2: Main-agent validation against this repo
|
|
257
57
|
|
|
258
58
|
For every candidate from the sub-agents, validate it yourself before reporting:
|
|
259
59
|
|
|
260
60
|
1. Confirm the external source is relevant to this project and fresh enough (normally within 6 months).
|
|
261
|
-
2. Search this repo with grep/find and language-aware anchors to
|
|
262
|
-
3. Check
|
|
263
|
-
4. Use mcp__kencode-search__searchCode when code-level
|
|
264
|
-
5. Drop anything already present,
|
|
265
|
-
6.
|
|
266
|
-
|
|
267
|
-
## What counts as a reportable gap
|
|
268
|
-
|
|
269
|
-
Report only gaps that are:
|
|
270
|
-
|
|
271
|
-
- **Missing capability**: A relevant current peer has a feature, integration, workflow, or user-facing behavior this project lacks.
|
|
272
|
-
- **Security/privacy hardening**: A current source addressed a meaningful risk this project has not addressed.
|
|
273
|
-
- **Operational maturity**: A relevant project has CI, release, observability, packaging, migration, or support practices this project lacks.
|
|
274
|
-
- **Developer experience**: A relevant project has docs, examples, tests, debugging, local dev, extension points, or generated commands that would materially improve this project.
|
|
275
|
-
- **Implementation quality**: A comparable codebase handles a shared concern more simply, safely, extensibly, or robustly, and this repo lacks that pattern.
|
|
276
|
-
- **Ecosystem alignment**: A recent framework/API/standard/release changed expectations and this project has not caught up.
|
|
277
|
-
|
|
278
|
-
Do not report:
|
|
279
|
-
|
|
280
|
-
- Ideas not tied to a real current source.
|
|
281
|
-
- Things this repo already has, even if named differently.
|
|
282
|
-
- Stale comparisons with no activity in the last 6 months unless canonical and still relevant.
|
|
283
|
-
- Pure taste or style preferences.
|
|
284
|
-
- Massive rewrites unless there is a specific incremental gap to implement.
|
|
285
|
-
- Low-confidence guesses.
|
|
286
|
-
|
|
287
|
-
## Priority levels
|
|
288
|
-
|
|
289
|
-
- **P0**: Critical gap: security exposure, data loss risk, broken compatibility, major missing core workflow, or urgent ecosystem change.
|
|
290
|
-
- **P1**: High-value gap: important feature/hardening/DX/ops improvement with strong external evidence and clear fit.
|
|
291
|
-
- **P2**: Useful gap: meaningful but not urgent, or requires a scoped design decision before implementation.
|
|
292
|
-
- **P3**: Exploratory gap: promising but lower confidence or lower immediate impact. Use sparingly.
|
|
61
|
+
2. Search this repo with grep/find and language-aware anchors to confirm the feature is not already present under another name.
|
|
62
|
+
3. Check routes, CLI commands, UI surfaces, package exports, config, docs, and examples before calling a feature missing.
|
|
63
|
+
4. Use mcp__kencode-search__searchCode when a code-level look clarifies how peers actually ship the feature. Use literal imports, functions, config keys, CLI flags, route names, or package names — not conceptual phrases.
|
|
64
|
+
5. Drop anything already present, irrelevant, too vague, too stale, or that is not a real user-facing feature.
|
|
65
|
+
6. Merge duplicates and keep only the most exciting 5–10 features.
|
|
293
66
|
|
|
294
67
|
## Final output
|
|
295
68
|
|
|
296
|
-
Output
|
|
69
|
+
Output ONLY a single table, ranked most exciting (rank 1) to least exciting. No prose before or after the table except the options below. Include 5–10 rows. The table must have exactly 3 columns:
|
|
297
70
|
|
|
298
|
-
|
|
|
71
|
+
| Rank | Feature | Why it's exciting + evidence |
|
|
299
72
|
|---|---|---|
|
|
300
|
-
| name +
|
|
73
|
+
| 1 | concise feature name + what it does | why users would love it, which peers/tools have it, source + fresh date, and local proof it is missing |
|
|
301
74
|
|
|
302
75
|
Rules:
|
|
303
76
|
|
|
304
|
-
-
|
|
305
|
-
-
|
|
77
|
+
- 5–10 rows, ordered most exciting first (rank 1 = most exciting).
|
|
78
|
+
- Only user-facing features. No security, refactor, ops, tooling, or test rows.
|
|
79
|
+
- The table must have exactly 3 columns. Put source URL/date/evidence and local absence proof inside the cells, not extra columns.
|
|
306
80
|
- Keep each cell concise but specific enough to be actionable.
|
|
307
|
-
- If no validated
|
|
308
|
-
- Do not include implementation prose after the tables except the options below.
|
|
81
|
+
- If no exciting validated features are found, output one row saying no fresh validated features were found.
|
|
309
82
|
|
|
310
|
-
After the
|
|
83
|
+
After the table, ask exactly:
|
|
311
84
|
|
|
312
85
|
What should I do?
|
|
313
|
-
A)
|
|
314
|
-
B)
|
|
315
|
-
C)
|
|
86
|
+
A) Build all of these features in plan mode
|
|
87
|
+
B) Build only the top priority ones in plan mode
|
|
88
|
+
C) Other
|
|
316
89
|
|
|
317
90
|
Do not start implementing until the user chooses.
|
|
318
91
|
|
|
319
|
-
If the user chooses A or B, do not implement
|
|
320
|
-
|
|
321
|
-
Each task prompt must be standalone and include:
|
|
322
|
-
|
|
323
|
-
1. The specific gap, including relevant local files/anchors and source evidence from the /expand report.
|
|
324
|
-
2. Instructions to compare the implementation approach with kencode search before editing, using literal code tokens and current real-world examples.
|
|
325
|
-
3. Instructions to implement the gap in the local codebase.
|
|
326
|
-
4. Instructions to verify correctness after implementation by running project checks and by comparing the final implementation with kencode search again before marking the task complete.
|
|
327
|
-
|
|
328
|
-
Do not create planning tasks, do not instruct tasks to use planning-only workflows, and do not create or write implementation plans from /expand selections.
|
|
92
|
+
If the user chooses A or B, do not implement directly. First call the enter_plan tool, then research and design an implementation plan for the selected features (all of them for A; the top 3 most exciting — ranks 1-3 — for B). The plan must cover, per feature: the user-facing behavior, the local files/anchors it touches, the implementation approach (compared against real-world examples via kencode search using literal code tokens), and how it will be verified. Write the plan to .ezcoder/plans/<name>.md, then call exit_plan with the plan path so the user can review and approve it. Do not begin implementing until the user approves the plan.
|
|
329
93
|
|
|
330
|
-
|
|
94
|
+
If the user chooses C, ask what they would like — pick specific features by rank, refine or re-scope the list, or skip — and do not implement anything until they say so.`,
|
|
331
95
|
},
|
|
332
96
|
{
|
|
333
97
|
name: "bullet-proof",
|
|
334
98
|
aliases: ["bp"],
|
|
335
|
-
description: "
|
|
99
|
+
description: "Audit exploitable weaknesses",
|
|
336
100
|
prompt: `# Bullet-Proof: Defensive Security Review
|
|
337
101
|
|
|
338
102
|
You are a defensive security auditor reviewing this codebase to identify exploitable weaknesses so they can be patched before the project ships. Think rigorously about realistic threat scenarios — boundary checks, edge cases, race conditions, trust assumptions, supply-chain risks, agent-mediated paths.
|
|
@@ -464,14 +228,14 @@ Threat model: [from recon]
|
|
|
464
228
|
After the report, ask:
|
|
465
229
|
|
|
466
230
|
> Which (if any) should I fix? Options:
|
|
467
|
-
> - A)
|
|
468
|
-
> - B)
|
|
469
|
-
> - C)
|
|
231
|
+
> - A) Add tasks for all Critical + High
|
|
232
|
+
> - B) Add tasks for specific findings (give IDs, e.g. "BP-001, BP-004")
|
|
233
|
+
> - C) Add tasks for a category (auth, supply chain, secrets, …)
|
|
470
234
|
> - D) None — report only
|
|
471
235
|
|
|
472
236
|
**Do not start fixing until the user picks.**
|
|
473
237
|
|
|
474
|
-
If the user chooses A, B, or C, do not fix directly. Instead,
|
|
238
|
+
If the user chooses A, B, or C, do not fix directly. Instead, add one task per selected finding or tightly coupled finding group using the \`tasks\` tool (action=add), ordered by severity, exploitability, and dependency. Each task needs a short title and a standalone prompt that includes the finding ID, vulnerability scenario, affected local files/anchors, concrete remediation, instructions to compare security-sensitive implementation details with kencode search or authoritative docs before editing, project verification commands, and instructions to compare the final fix with kencode search or authoritative docs again before completing the task. After adding the tasks, tell the user exactly: "Tasks added. Press Ctrl+T to open the task list and run them." Do not begin executing them unless the user explicitly says so.
|
|
475
239
|
|
|
476
240
|
## Threat reference (May 2026)
|
|
477
241
|
|
|
@@ -516,147 +280,6 @@ Cite these as needed per audit. Do not dump them into the report — use them to
|
|
|
516
280
|
- **Strict confidence gate (≥0.8).** Drop everything else, even if it looks suspicious.
|
|
517
281
|
- **Adapt to the stack, always.** The audit catalog and threat reference above are guidance, not a checklist to apply uniformly.
|
|
518
282
|
- **Report only.** Wait for the user to pick what to fix in Phase 6.`,
|
|
519
|
-
},
|
|
520
|
-
{
|
|
521
|
-
name: "source",
|
|
522
|
-
aliases: ["depcheck", "depsource"],
|
|
523
|
-
description: "Plan, source-check, adjust, and verify dependency-aligned code",
|
|
524
|
-
prompt: `# Source: Plan → Research → Adjust → Verify
|
|
525
|
-
|
|
526
|
-
Use exact installed dependency source as the source of truth, then align this project end-to-end. This command is action-oriented like /verify and /compare: plan the investigation, research with source_path, adjust the code, and verify everything before finishing.
|
|
527
|
-
|
|
528
|
-
## Phase 1: Plan the source check
|
|
529
|
-
|
|
530
|
-
Do a short, private plan before tool-heavy work:
|
|
531
|
-
|
|
532
|
-
1. Identify the dependency surface to check.
|
|
533
|
-
- If the user passed args, treat them as the package/repo/spec plus optional focus area.
|
|
534
|
-
- If no args were passed, inspect recent changes, changed files, imports, manifests, and current conversation context to pick the 1-3 dependencies most likely to matter.
|
|
535
|
-
2. Decide what “aligned” means for this run: APIs/types, exports, CLI flags, config schema, runtime behavior, lifecycle/cleanup, error handling, package subpaths, tests, docs examples, or UI/tool wording.
|
|
536
|
-
3. Decide the parallel research slices. Use up to 3 sub-agents; use fewer when the scope is obvious. Do not pad.
|
|
537
|
-
|
|
538
|
-
Do not ask the user for confirmation. Proceed unless the focus is impossible to infer.
|
|
539
|
-
|
|
540
|
-
## Phase 2: Research exact dependency source
|
|
541
|
-
|
|
542
|
-
For every in-scope dependency, call \`source_path\` before making claims about APIs, types, flags, config, exports, or runtime behavior.
|
|
543
|
-
|
|
544
|
-
Inspect the returned absolute source path with \`read\`, \`grep\`, \`find\`, and \`ls\`. Prefer dependency source files, package manifests, type definitions, exports, tests, examples, changelogs, and README sections inside that source checkout. Use web docs only when source alone is ambiguous.
|
|
545
|
-
|
|
546
|
-
Spawn the research sub-agents in parallel in one response when useful:
|
|
547
|
-
|
|
548
|
-
- **Local Usage Agent**: find local imports, wrappers, tool calls, config keys, CLI flags, tests, docs, and assumptions tied to the dependency. Return exact file:line anchors.
|
|
549
|
-
- **Dependency Source Agent**: inspect the exact source_path checkout. Return exact source file paths and authoritative facts about APIs, types, exports, lifecycle, errors, config, and gotchas.
|
|
550
|
-
- **Alignment Agent**: compare local assumptions to dependency facts. Return concrete mismatches, missing handling, stale usage, brittle assumptions, or simplifications backed by exact source evidence.
|
|
551
|
-
|
|
552
|
-
Every finding must include both local file paths and dependency-source file paths. Mark unproven items as \`aligned\` or \`inconclusive\`; do not turn them into fixes.
|
|
553
|
-
|
|
554
|
-
## Phase 3: Adjust the code
|
|
555
|
-
|
|
556
|
-
Validate every candidate yourself, then fix all confirmed issues directly.
|
|
557
|
-
|
|
558
|
-
Valid adjustments include:
|
|
559
|
-
|
|
560
|
-
- Correct wrong/stale API or type usage for the installed version
|
|
561
|
-
- Fix import/export/package-subpath usage
|
|
562
|
-
- Fix config keys, option shapes, CLI flags, or tool schemas
|
|
563
|
-
- Add missing lifecycle cleanup, abort handling, error handling, or edge-case handling proven by source
|
|
564
|
-
- Align local tests/docs/examples with the installed dependency source
|
|
565
|
-
- Align local tool prompts/TUI wording when they misrepresent dependency behavior
|
|
566
|
-
- Remove small custom workarounds when the installed dependency source shows a supported built-in path
|
|
567
|
-
|
|
568
|
-
Rules:
|
|
569
|
-
|
|
570
|
-
- Read each local file before editing it.
|
|
571
|
-
- Match neighboring local patterns and tone.
|
|
572
|
-
- Keep edits minimal and focused; no broad refactors.
|
|
573
|
-
- Do not upgrade dependencies unless the user explicitly asked for an upgrade.
|
|
574
|
-
- Do not edit just because upstream source uses a different style.
|
|
575
|
-
- If a formatter, codegen, or autofix mutates files, re-read before more edits.
|
|
576
|
-
|
|
577
|
-
## Phase 4: Verify everything
|
|
578
|
-
|
|
579
|
-
Run the relevant project checks for changed files. If this project specifies commands, use them. Otherwise infer from manifests. For TypeScript, run lint, typecheck, format check, and tests when available.
|
|
580
|
-
|
|
581
|
-
If verification fails, read the failure, fix it, and rerun. Do not report success with failing or unrun checks.
|
|
582
|
-
|
|
583
|
-
## Final response
|
|
584
|
-
|
|
585
|
-
Keep it short:
|
|
586
|
-
|
|
587
|
-
- Dependencies/source paths checked
|
|
588
|
-
- Adjustments made, or \`No changes needed — local usage aligns with installed source\`
|
|
589
|
-
- Verification commands run
|
|
590
|
-
|
|
591
|
-
Do not ask what to do next unless blocked by missing information or an external failure.`,
|
|
592
|
-
},
|
|
593
|
-
{
|
|
594
|
-
name: "research",
|
|
595
|
-
aliases: [],
|
|
596
|
-
description: "Research best tools, deps, and patterns",
|
|
597
|
-
prompt: `Research the best tools, dependencies, and architecture for this project.
|
|
598
|
-
|
|
599
|
-
First, if it's not clear what the project is building, ask me to describe the features, target platform, and any constraints. If you can infer this from the codebase, proceed directly.
|
|
600
|
-
|
|
601
|
-
Then spawn 6 sub-agents in parallel using the subagent tool (call the subagent tool 6 times in a single response, each with a different task). Every agent must verify ALL recommendations with current official docs, package registries, releases, or maintained source repositories - no training-data assumptions allowed. Use kencode search for architecture and implementation-shape comparisons where real code examples matter.
|
|
602
|
-
|
|
603
|
-
**Agent 1 - Project Scan**: Read the current working directory. Catalog what already exists: config files, installed deps, directory structure, language/framework already chosen. Report exactly what's in place.
|
|
604
|
-
|
|
605
|
-
**Agent 2 - Stack Validation**: Research whether the current framework/language is the best choice for this project. Compare top 2-3 alternatives on performance, ecosystem, and developer experience. Pick ONE winner with evidence.
|
|
606
|
-
|
|
607
|
-
**Agent 3 - Core Dependencies**: For EACH feature, find the single best library for this stack. Confirm latest stable versions. No outdated packages. Output: package name, version, one-line purpose.
|
|
608
|
-
|
|
609
|
-
**Agent 4 - Dev Tooling**: Research the best dev tooling for this stack: package manager, bundler, linter, formatter, test framework, type checker. Pick ONE per category with exact versions.
|
|
610
|
-
|
|
611
|
-
**Agent 5 - Architecture**: Find how real projects of this type structure their code. Look for directory layouts, file naming conventions, and key patterns. Output a concrete directory tree and list of patterns.
|
|
612
|
-
|
|
613
|
-
**Agent 6 - Config & Integration**: Research required config files for the chosen stack and tools. Cover: linter config, formatter config, TS/type config, env setup, CI/CD basics.
|
|
614
|
-
|
|
615
|
-
## Agent Rules
|
|
616
|
-
|
|
617
|
-
1. Every recommendation MUST be verified with a source URL/date - no guessing
|
|
618
|
-
2. Confirm latest stable versions from official registries or release pages - do not assume version numbers
|
|
619
|
-
3. Verify CLI flags, config keys, and file formats against official docs before recommending them
|
|
620
|
-
4. Pick ONE best option per category - no "you could also use X"
|
|
621
|
-
5. No prose, no hedging, no alternatives lists - decisive answers only
|
|
622
|
-
|
|
623
|
-
## Output
|
|
624
|
-
|
|
625
|
-
After all agents complete, synthesize findings into a single RESEARCH.md file:
|
|
626
|
-
|
|
627
|
-
\`\`\`markdown
|
|
628
|
-
# RESEARCH: [short project description]
|
|
629
|
-
Generated: [today's date]
|
|
630
|
-
Stack: [framework + language + runtime]
|
|
631
|
-
|
|
632
|
-
## INSTALL
|
|
633
|
-
[exact shell commands - copy-paste ready]
|
|
634
|
-
|
|
635
|
-
## DEPENDENCIES
|
|
636
|
-
| package | version | purpose |
|
|
637
|
-
[each purpose max 5 words]
|
|
638
|
-
|
|
639
|
-
## DEV DEPENDENCIES
|
|
640
|
-
| package | version | purpose |
|
|
641
|
-
|
|
642
|
-
## CONFIG FILES TO CREATE
|
|
643
|
-
### [filename]
|
|
644
|
-
[exact file contents or key settings]
|
|
645
|
-
|
|
646
|
-
## PROJECT STRUCTURE
|
|
647
|
-
[tree showing recommended directories]
|
|
648
|
-
|
|
649
|
-
## SETUP STEPS
|
|
650
|
-
1. [concrete action]
|
|
651
|
-
|
|
652
|
-
## KEY PATTERNS
|
|
653
|
-
[brief list of architectural patterns]
|
|
654
|
-
|
|
655
|
-
## SOURCES
|
|
656
|
-
[URLs used for verification]
|
|
657
|
-
\`\`\`
|
|
658
|
-
|
|
659
|
-
Write the file, then summarize what was researched and list the verification sources used. If any recommendation could not be verified from current official sources or maintained repos, omit it rather than guessing.`,
|
|
660
283
|
},
|
|
661
284
|
{
|
|
662
285
|
name: "init",
|
|
@@ -664,7 +287,7 @@ Write the file, then summarize what was researched and list the verification sou
|
|
|
664
287
|
description: "Generate or update CLAUDE.md for this project",
|
|
665
288
|
prompt: `Generate or update a minimal CLAUDE.md with project-specific context only: what this project is, how it is structured, and commands/workflows that are unique to it.
|
|
666
289
|
|
|
667
|
-
Do NOT add generic agent behavior already covered by the system prompt, including: read before edit/write, re-read after formatters, ask before destructive actions, no fake verification, generic code-quality advice, single-responsibility rules, one-file-per-component rules, or language-style conventions. Include only project-specific overrides or stricter local requirements.
|
|
290
|
+
Do NOT add generic agent behavior already covered by the system prompt, including: read before edit/write, re-read after formatters, ask before destructive actions, no fake verification, generic code-quality advice, single-responsibility rules, one-file-per-component rules, or language-style conventions. Never add guidance that requires running checks, builds, or the full quality suite after every edit or every file change. Include only project-specific overrides or stricter local requirements.
|
|
668
291
|
|
|
669
292
|
## Step 1: Check if CLAUDE.md Exists
|
|
670
293
|
|
|
@@ -679,11 +302,13 @@ If CLAUDE.md does NOT exist:
|
|
|
679
302
|
|
|
680
303
|
## Step 2: Analyze Project (Use Sub-agents in Parallel)
|
|
681
304
|
|
|
305
|
+
Derive every fact from the actual project — source code, entry points, manifests, and config. Treat README, docs, and code comments as unverified hints that are frequently stale: never copy claims from them, and only state things you can confirm from the code and config themselves.
|
|
306
|
+
|
|
682
307
|
Spawn 3 sub-agents in parallel using the subagent tool (call the subagent tool 3 times in a single response):
|
|
683
308
|
|
|
684
|
-
1. **Project Purpose Agent**:
|
|
309
|
+
1. **Project Purpose Agent**: Determine what the project actually does from its real code — entry points, main modules, exported/public APIs, CLI commands, routes, and manifests. Do not rely on the README's description.
|
|
685
310
|
2. **Directory Structure Agent**: Map out the folder structure and what each folder contains
|
|
686
|
-
3. **Tech Stack Agent**: Identify languages, frameworks, tools, dependencies
|
|
311
|
+
3. **Tech Stack Agent**: Identify languages, frameworks, tools, and dependencies from manifests/lockfiles and config (not from prose docs)
|
|
687
312
|
|
|
688
313
|
Wait for all sub-agents to complete, then synthesize the information.
|
|
689
314
|
|
|
@@ -695,11 +320,11 @@ Check for config files:
|
|
|
695
320
|
- go.mod -> Go
|
|
696
321
|
- Cargo.toml -> Rust
|
|
697
322
|
|
|
698
|
-
Extract exact commands that are useful project facts.
|
|
323
|
+
Extract exact commands that are useful project facts. Take commands from authoritative sources — package scripts, manifests, Makefiles, and CI config; do not invent them from convention, and do not trust README/doc command snippets unless a script or manifest confirms they still exist. Do not restate generic "run checks after edits" behavior, and do not turn discovered commands into mandatory after-every-edit requirements unless local docs or CI explicitly require that stricter sequence.
|
|
699
324
|
|
|
700
325
|
## Step 4: Summarize Stable Structure
|
|
701
326
|
|
|
702
|
-
If useful, create a concise structure summary for future agents showing only key stable directories and files with brief descriptions. Do NOT embed generated symbol maps, exhaustive file indexes,
|
|
327
|
+
If useful, create a concise structure summary for future agents showing only key stable directories and files with brief descriptions. Do NOT embed generated symbol maps, exhaustive file indexes, auto-generated directory listings, or large trees in CLAUDE.md.
|
|
703
328
|
|
|
704
329
|
## Step 5: Generate or Update CLAUDE.md
|
|
705
330
|
|
|
@@ -711,7 +336,7 @@ Create CLAUDE.md with only sections that add project-specific value. Prefer this
|
|
|
711
336
|
- Exact local commands (install/build/check/test/dev/publish/deploy) when they are not obvious from package scripts alone
|
|
712
337
|
- Project-specific constraints that override defaults (for example required publish order, generated-file workflow, auth/secrets storage, deployment caveats)
|
|
713
338
|
|
|
714
|
-
Avoid generic sections named "Code Quality", "Organization Rules", or "How to Work" unless every bullet is specific to this project. Do not duplicate language style packs
|
|
339
|
+
Avoid generic sections named "Code Quality", "Organization Rules", or "How to Work" unless every bullet is specific to this project. Do not duplicate language style packs, generic verification rules, or boilerplate quality gates such as "After editing ANY file" / "Code Quality — Zero Tolerance". Do not add symbol indexes, exhaustive file indexes, or auto-generated project inventories; CLAUDE.md must remain durable, agent-focused project context.
|
|
715
340
|
|
|
716
341
|
Keep total file under 100 lines. If updating, preserve any custom sections the user added. After writing, re-read CLAUDE.md and confirm it contains only project-specific facts supported by local files.
|
|
717
342
|
|
|
@@ -720,79 +345,11 @@ Keep total file under 100 lines. If updating, preserve any custom sections the u
|
|
|
720
345
|
End your reply with this exact notice so the user doesn't miss it:
|
|
721
346
|
|
|
722
347
|
> ⚠️ CLAUDE.md was created/updated. ezcoder loads it at startup, so **exit and restart ezcoder** (\`/quit\` then run \`ezcoder\` again) before continuing. Without a restart, I won't see the new context.`,
|
|
723
|
-
},
|
|
724
|
-
{
|
|
725
|
-
name: "setup-lint",
|
|
726
|
-
aliases: [],
|
|
727
|
-
description: "Generate a /fix command for linting and typechecking",
|
|
728
|
-
prompt: `Detect the project type and generate a /fix command for linting and typechecking.
|
|
729
|
-
|
|
730
|
-
## Step 1: Detect Project Type
|
|
731
|
-
|
|
732
|
-
Check for config files:
|
|
733
|
-
- package.json -> JavaScript/TypeScript
|
|
734
|
-
- pyproject.toml or requirements.txt -> Python
|
|
735
|
-
- go.mod -> Go
|
|
736
|
-
- Cargo.toml -> Rust
|
|
737
|
-
- composer.json -> PHP
|
|
738
|
-
|
|
739
|
-
Read the relevant config file to understand the project structure.
|
|
740
|
-
|
|
741
|
-
## Step 2: Check Existing Tools
|
|
742
|
-
|
|
743
|
-
Based on the project type, check if linting/typechecking tools are already configured:
|
|
744
|
-
|
|
745
|
-
- **JS/TS**: eslint, prettier, typescript — check package.json scripts and config files
|
|
746
|
-
- **Python**: mypy, pylint, black, ruff — check dependencies and config files
|
|
747
|
-
- **Go**: go vet, gofmt, staticcheck
|
|
748
|
-
- **Rust**: clippy, rustfmt
|
|
749
|
-
|
|
750
|
-
## Step 3: Install Missing Tools (if needed)
|
|
751
|
-
|
|
752
|
-
Only install what's missing. Use the detected package manager. Before installing or writing config, verify current recommended setup, CLI flags, and config filenames against official docs for the selected tools.
|
|
753
|
-
|
|
754
|
-
## Step 4: Generate /fix Command
|
|
755
|
-
|
|
756
|
-
Create the directory \`.ezcoder/commands/\` if it doesn't exist, then write \`.ezcoder/commands/fix.md\`:
|
|
757
|
-
|
|
758
|
-
\`\`\`markdown
|
|
759
|
-
---
|
|
760
|
-
name: fix
|
|
761
|
-
description: Run typechecking and linting, then spawn parallel agents to fix all issues
|
|
762
|
-
---
|
|
763
|
-
|
|
764
|
-
Run all linting and typechecking tools, collect errors, group them by domain, and use the subagent tool to spawn parallel sub-agents to fix them.
|
|
765
|
-
|
|
766
|
-
## Step 1: Run Checks
|
|
767
|
-
|
|
768
|
-
[INSERT PROJECT-SPECIFIC COMMANDS — e.g. npm run lint, npm run typecheck, etc.]
|
|
769
|
-
|
|
770
|
-
## Step 2: Collect and Group Errors
|
|
771
|
-
|
|
772
|
-
Parse the output. Group errors by domain:
|
|
773
|
-
- **Type errors**: Issues from TypeScript, mypy, etc.
|
|
774
|
-
- **Lint errors**: Issues from eslint, pylint, ruff, clippy, etc.
|
|
775
|
-
- **Format errors**: Issues from prettier, black, rustfmt, gofmt
|
|
776
|
-
|
|
777
|
-
## Step 3: Spawn Parallel Agents
|
|
778
|
-
|
|
779
|
-
For each domain with issues, use the subagent tool to spawn a sub-agent to fix all errors in that domain.
|
|
780
|
-
|
|
781
|
-
## Step 4: Verify
|
|
782
|
-
|
|
783
|
-
After all agents complete, re-run all checks to verify all issues are resolved.
|
|
784
|
-
\`\`\`
|
|
785
|
-
|
|
786
|
-
Replace [INSERT PROJECT-SPECIFIC COMMANDS] with the actual commands for the detected project.
|
|
787
|
-
|
|
788
|
-
## Step 5: Confirm
|
|
789
|
-
|
|
790
|
-
Report what was detected, what official docs or local configs were used to verify it, what was installed, and that /fix is now available.`,
|
|
791
348
|
},
|
|
792
349
|
{
|
|
793
350
|
name: "setup-commit",
|
|
794
351
|
aliases: [],
|
|
795
|
-
description: "Generate a /commit command
|
|
352
|
+
description: "Generate a /commit command",
|
|
796
353
|
prompt: `Detect the project type and generate a /commit command that enforces quality checks before committing.
|
|
797
354
|
|
|
798
355
|
## Step 1: Detect Project and Extract Commands
|
|
@@ -839,398 +396,11 @@ Keep the command file under 20 lines.
|
|
|
839
396
|
## Step 3: Confirm
|
|
840
397
|
|
|
841
398
|
Report that /commit is now available with quality checks and AI-generated commit messages, and mention which local scripts/docs verified the commands.`,
|
|
842
|
-
},
|
|
843
|
-
{
|
|
844
|
-
name: "setup-tests",
|
|
845
|
-
aliases: [],
|
|
846
|
-
description: "Set up testing and generate a /test command",
|
|
847
|
-
prompt: `Set up comprehensive testing for this project and generate a /test command.
|
|
848
|
-
|
|
849
|
-
## Step 1: Analyze Project
|
|
850
|
-
|
|
851
|
-
Detect the project type, framework, and architecture. Identify all critical business logic that needs testing.
|
|
852
|
-
|
|
853
|
-
## Step 2: Determine Testing Strategy
|
|
854
|
-
|
|
855
|
-
Use these tools based on project type (2025-2026 best practices), but verify current versions, install commands, config files, and runner flags against official docs before installing anything:
|
|
856
|
-
|
|
857
|
-
| Language | Unit/Integration | E2E | Notes |
|
|
858
|
-
|----------|------------------|-----|-------|
|
|
859
|
-
| JS/TS | Vitest (not Jest) | Playwright | Vitest is faster, native ESM/TS. Use Testing Library for components. |
|
|
860
|
-
| Python | pytest | Playwright | pytest-django for Django, httpx+pytest-asyncio for FastAPI. |
|
|
861
|
-
| Go | testing + testify | httptest | testcontainers-go for integration. Table-driven tests. |
|
|
862
|
-
| Rust | #[test] + rstest | axum-test | assert_cmd for CLI, proptest for property-based. |
|
|
863
|
-
| PHP | Pest 4 (Laravel) / PHPUnit 12 | Laravel Dusk | Pest preferred for Laravel. |
|
|
864
|
-
|
|
865
|
-
## Step 3: Set Up Testing Infrastructure
|
|
866
|
-
|
|
867
|
-
Spawn 4 sub-agents in parallel using the subagent tool (call the subagent tool 4 times in a single response):
|
|
868
|
-
|
|
869
|
-
**Agent 1 - Dependencies & Config**: Install test frameworks and create config files
|
|
870
|
-
**Agent 2 - Unit Tests**: Create comprehensive unit tests for all business logic, utilities, and core functions
|
|
871
|
-
**Agent 3 - Integration Tests**: Create integration tests for APIs, database operations, and service interactions
|
|
872
|
-
**Agent 4 - E2E Tests** (if applicable): Create end-to-end tests for critical user flows
|
|
873
|
-
|
|
874
|
-
Each agent should create COMPREHENSIVE tests covering all critical code paths - not just samples. Each agent must verify test framework APIs and helper patterns against official docs or current maintained examples before adding tests.
|
|
875
|
-
|
|
876
|
-
## Step 4: Verify and Generate /test Command
|
|
877
|
-
|
|
878
|
-
Run the tests to verify everything works. Fix any issues.
|
|
879
|
-
|
|
880
|
-
Then create the directory \`.ezcoder/commands/\` if it doesn't exist and write \`.ezcoder/commands/test.md\` with:
|
|
881
|
-
|
|
882
|
-
\`\`\`markdown
|
|
883
|
-
---
|
|
884
|
-
name: test
|
|
885
|
-
description: Run tests, then spawn parallel agents to fix failures
|
|
886
|
-
---
|
|
887
|
-
|
|
888
|
-
Run all tests for this project, collect failures, and use the subagent tool to spawn parallel sub-agents to fix them.
|
|
889
|
-
|
|
890
|
-
## Step 1: Run Tests
|
|
891
|
-
|
|
892
|
-
[PROJECT-SPECIFIC TEST COMMANDS with options for watch mode, coverage, filtering]
|
|
893
|
-
|
|
894
|
-
## Step 2: If Failures
|
|
895
|
-
|
|
896
|
-
For each failing test, use the subagent tool to spawn a sub-agent to fix the underlying issue (not the test).
|
|
897
|
-
|
|
898
|
-
## Step 3: Re-run
|
|
899
|
-
|
|
900
|
-
Re-run tests to verify all fixes.
|
|
901
|
-
\`\`\`
|
|
902
|
-
|
|
903
|
-
Replace placeholders with the actual test commands for this project.
|
|
904
|
-
|
|
905
|
-
## Step 5: Report
|
|
906
|
-
|
|
907
|
-
Summarize what was set up, how many tests were created, what official docs/current examples verified the setup, and that /test is now available.`,
|
|
908
|
-
},
|
|
909
|
-
{
|
|
910
|
-
name: "setup-update",
|
|
911
|
-
aliases: [],
|
|
912
|
-
description: "Generate an /update command for dependency updates",
|
|
913
|
-
prompt: `Detect the project type and generate an /update command for dependency updates and deprecation fixes.
|
|
914
|
-
|
|
915
|
-
## Step 1: Detect Project Type & Package Manager
|
|
916
|
-
|
|
917
|
-
Check for config files and lock files:
|
|
918
|
-
- package.json + package-lock.json -> npm
|
|
919
|
-
- package.json + yarn.lock -> yarn
|
|
920
|
-
- package.json + pnpm-lock.yaml -> pnpm
|
|
921
|
-
- pyproject.toml + poetry.lock -> poetry
|
|
922
|
-
- requirements.txt -> pip
|
|
923
|
-
- go.mod -> Go
|
|
924
|
-
- Cargo.toml -> Rust
|
|
925
|
-
|
|
926
|
-
## Step 2: Generate /update Command
|
|
927
|
-
|
|
928
|
-
Create the directory \`.ezcoder/commands/\` if it doesn't exist, then write \`.ezcoder/commands/update.md\`:
|
|
929
|
-
|
|
930
|
-
\`\`\`markdown
|
|
931
|
-
---
|
|
932
|
-
name: update
|
|
933
|
-
description: Update dependencies, fix deprecations and warnings
|
|
934
|
-
---
|
|
935
|
-
|
|
936
|
-
## Step 1: Check for Updates
|
|
937
|
-
|
|
938
|
-
[OUTDATED CHECK COMMAND for detected package manager]
|
|
939
|
-
|
|
940
|
-
## Step 2: Update Dependencies
|
|
941
|
-
|
|
942
|
-
[UPDATE COMMAND + SECURITY AUDIT]
|
|
943
|
-
|
|
944
|
-
## Step 3: Check for Deprecations & Warnings
|
|
945
|
-
|
|
946
|
-
Run a clean install and read ALL output carefully. Look for:
|
|
947
|
-
- Deprecation warnings
|
|
948
|
-
- Security vulnerabilities
|
|
949
|
-
- Peer dependency warnings
|
|
950
|
-
- Breaking changes
|
|
951
|
-
|
|
952
|
-
## Step 4: Fix Issues
|
|
953
|
-
|
|
954
|
-
For each warning/deprecation:
|
|
955
|
-
1. Research the recommended replacement or fix using official changelogs, migration guides, advisories, or package docs
|
|
956
|
-
2. Update code/dependencies accordingly
|
|
957
|
-
3. Re-run installation
|
|
958
|
-
4. Verify no warnings remain
|
|
959
|
-
|
|
960
|
-
## Step 5: Run Quality Checks
|
|
961
|
-
|
|
962
|
-
[PROJECT-SPECIFIC LINT/TYPECHECK COMMANDS]
|
|
963
|
-
|
|
964
|
-
Fix all errors before completing.
|
|
965
|
-
|
|
966
|
-
## Step 6: Verify Clean Install
|
|
967
|
-
|
|
968
|
-
Delete dependency folders/caches, run a fresh install, verify ZERO warnings/errors.
|
|
969
|
-
\`\`\`
|
|
970
|
-
|
|
971
|
-
Replace all placeholders with the actual commands for the detected project type and package manager.
|
|
972
|
-
|
|
973
|
-
## Step 3: Confirm
|
|
974
|
-
|
|
975
|
-
Report that /update is now available with dependency updates, security audits, and deprecation fixes, and mention that generated update steps require official changelog/migration-guide verification before applying changes.`,
|
|
976
|
-
},
|
|
977
|
-
{
|
|
978
|
-
name: "setup-eyes",
|
|
979
|
-
aliases: [],
|
|
980
|
-
description: "Set up project perception probes and document them",
|
|
981
|
-
prompt: `# Eyes: Set Up or Expand Project Perception
|
|
982
|
-
|
|
983
|
-
Build the perception probes this project needs and document them in CLAUDE.md so any future agent can use them. The \`ezcoder eyes\` CLI does the mechanical work (detect, install, verify); your job is **judgment** (which capabilities matter for THIS project) and **prose** (the project-specific triggers in CLAUDE.md). Re-run this command anytime to add or fix probes.
|
|
984
|
-
|
|
985
|
-
## Steps
|
|
986
|
-
|
|
987
|
-
1. \`ezcoder eyes list\` — see what's already installed/verified. **Resume**, don't restart. Skip verified probes; re-run failed ones.
|
|
988
|
-
2. \`ezcoder eyes detect\` — emits JSON of \`{capability: {candidates, primary}}\` for this project.
|
|
989
|
-
3. **Pick 3–8 capabilities to install this run.** Verify any capability assumptions against \`ezcoder eyes\` help output or official/local CLI docs before installing. Heuristics:
|
|
990
|
-
- Universal: \`http\` for any API/backend, \`runtime_logs\` for anything with a server.
|
|
991
|
-
- UI: \`visual\` — for multi-stack projects (e.g. React Native), install all primary candidates with distinct names: \`install visual --impl playwright --as visual-web\`, \`install visual --impl adb --as visual-android\`, \`install visual --impl simctl --as visual-ios\`.
|
|
992
|
-
- Backend with email/webhooks: \`capture_email\`, \`capture_webhook\`.
|
|
993
|
-
- **Always defer** opt-ins: \`load\`, \`chaos\`, \`remote\`, \`apm\` — unless the user explicitly asked.
|
|
994
|
-
4. For each pick: \`ezcoder eyes install <cap> [--impl <name>] [--as <name>]\`. On failure: retry once, then mark and continue — don't abort the whole run.
|
|
995
|
-
5. \`ezcoder eyes verify\` — runs every installed probe's self-test. Some failures (\`adb\` no device, \`simctl\` no booted simulator) are expected; they get recorded.
|
|
996
|
-
6. **Write/update the \`## Eyes\` section in CLAUDE.md** (create CLAUDE.md if missing; do NOT clobber other sections). Use the template below. The triggers are the load-bearing piece — make them project-specific and actionable.
|
|
997
|
-
7. **Report**: list verified ✓ / failed ✗ / deferred, and note which probe self-tests or docs verified the setup. End with the restart notice.
|
|
998
|
-
|
|
999
|
-
## CLAUDE.md \`## Eyes\` template
|
|
1000
|
-
|
|
1001
|
-
\`\`\`markdown
|
|
1002
|
-
## Eyes
|
|
1003
|
-
|
|
1004
|
-
Perception probes live in \`.ezcoder/eyes/\`. All headless. Artifacts → \`.ezcoder/eyes/out/\` (gitignored). Invoke probes yourself; don't ask the user to verify what you can verify.
|
|
1005
|
-
|
|
1006
|
-
### Available probes
|
|
1007
|
-
|
|
1008
|
-
| Need | Run | Then |
|
|
1009
|
-
|---|---|---|
|
|
1010
|
-
| <one-line need> | \`.ezcoder/eyes/<id>.sh <args>\` | <how to consume the output> |
|
|
1011
|
-
| ... | ... | ... |
|
|
1012
|
-
|
|
1013
|
-
### When to use these eyes (automatically, without being asked)
|
|
1014
|
-
|
|
1015
|
-
Reach for probes ON YOUR OWN INITIATIVE when any of these apply:
|
|
1016
|
-
|
|
1017
|
-
- <project-specific trigger 1, e.g. "After editing any \`.tsx\` file under \`src/components/\`, screenshot the affected page with \`.ezcoder/eyes/visual.sh http://localhost:3000/<path>\`.">
|
|
1018
|
-
- <trigger 2, e.g. "After adding/modifying a route under \`src/routes/\`, hit it with \`.ezcoder/eyes/http.sh\` and confirm the response shape.">
|
|
1019
|
-
- <trigger 3>
|
|
1020
|
-
|
|
1021
|
-
If a probe fails or returns unexpected results, investigate the artifact directly before assuming the probe itself is broken.
|
|
1022
|
-
|
|
1023
|
-
### When NOT to use
|
|
1024
|
-
|
|
1025
|
-
- Docs-only changes, comments, formatting.
|
|
1026
|
-
- Refactors covered by tests.
|
|
1027
|
-
- Dev server / simulator / sink isn't up AND the task doesn't require runtime verification.
|
|
1028
|
-
- Same probe already ran this turn on the same artifact — reuse the output.
|
|
1029
|
-
|
|
1030
|
-
### When to escalate a capability gap (the self-improvement loop)
|
|
1031
|
-
|
|
1032
|
-
If you're about to **guess**, **skip verification**, or **hand-wave** about something a better probe would show you — STOP and surface the tradeoff inline. Phrasing like:
|
|
1033
|
-
|
|
1034
|
-
> "I tried screenshotting but the failure is a JS error I can only see in the browser console — and there's no \`browser_console\` probe. Two paths: (a) ~3 min to add it, then I can diagnose properly. (b) Workaround: I'd guess from the DOM state. Your call?"
|
|
1035
|
-
|
|
1036
|
-
Wait for the user's choice. **Don't escalate more than once per request** — if the user picked the workaround, don't re-ask in the same turn.
|
|
1037
|
-
|
|
1038
|
-
For minor friction (worked around it but wished it were better), don't interrupt — log it for later review:
|
|
1039
|
-
- \`ezcoder eyes log rough "<reason>" [--probe <name>]\` — minor friction, you handled it
|
|
1040
|
-
- \`ezcoder eyes log wish "<gap>"\` — capability you wished existed
|
|
1041
|
-
- \`ezcoder eyes log blocked "<reason>"\` — call this AFTER the user approves an inline-escalation fix, for the audit trail
|
|
1042
|
-
|
|
1043
|
-
These accumulate quietly. The user reviews them periodically. Open signals will appear in your context on future turns until they're acked.
|
|
1044
|
-
\`\`\`
|
|
1045
|
-
|
|
1046
|
-
## Trigger writing rules
|
|
1047
|
-
|
|
1048
|
-
The "When to use" triggers are project-specific and the load-bearing piece — without them the agent has probes but no instinct to use them. Rules:
|
|
1049
|
-
- For each verified probe, write at least one trigger that names a real **file pattern** or **task type** the agent will recognize ("after editing \`*.tsx\` under \`src/ui/\`", not "after UI changes").
|
|
1050
|
-
- Be **actionable** ("screenshot the page", "hit the endpoint") not **vague** ("verify it works").
|
|
1051
|
-
- Match density to the project: a UI-heavy app warrants strong visual triggers; a pure backend library does not.
|
|
1052
|
-
|
|
1053
|
-
## Restart notice
|
|
1054
|
-
|
|
1055
|
-
End your report with:
|
|
1056
|
-
|
|
1057
|
-
> ⚠ CLAUDE.md was updated. ezcoder loads CLAUDE.md at startup, so **exit and restart ezcoder** (\`/quit\` then \`ezcoder\` again) before asking me to use these probes. Without a restart, I won't see the new instructions in my context.`,
|
|
1058
|
-
},
|
|
1059
|
-
{
|
|
1060
|
-
name: "eyes-improve",
|
|
1061
|
-
aliases: [],
|
|
1062
|
-
description: "Triage eyes signals and apply approved probe fixes",
|
|
1063
|
-
prompt: `# Eyes Improve: Triage Accumulated Signals
|
|
1064
|
-
|
|
1065
|
-
Read the open signals in \`.ezcoder/eyes/journal.jsonl\`, group related ones, propose concrete fixes, and apply what the user approves. This isn't unbounded refactoring — it's incremental probe improvement driven by real use.
|
|
1066
|
-
|
|
1067
|
-
## Steps
|
|
1068
|
-
|
|
1069
|
-
1. \`ezcoder eyes log list --status open\` — if zero entries, say "nothing to triage" and stop.
|
|
1070
|
-
2. **Group** signals by likely fix:
|
|
1071
|
-
- Multiple \`rough\` entries naming the same probe / same frustration → one patch to that probe.
|
|
1072
|
-
- \`wish\` entries naming a capability not installed → one \`ezcoder eyes install <cap>\` proposal.
|
|
1073
|
-
- \`blocked\` entries are historical (user already resolved inline) → ack them, no new work.
|
|
1074
|
-
3. **Cap at 5 proposals this run.** If more would apply, mention them and stop — they'll resurface next run.
|
|
1075
|
-
4. For each group, propose ONE concrete change:
|
|
1076
|
-
- **Probe tweak**: read \`.ezcoder/eyes/<name>.sh\`, show a diff, explain what it fixes.
|
|
1077
|
-
- **New probe**: \`ezcoder eyes install <cap>\` with a one-line justification.
|
|
1078
|
-
- **New/updated trigger**: bullet added under \`## Eyes → When to use\` in CLAUDE.md.
|
|
1079
|
-
5. Present all proposals as a numbered list with diffs inline. Ask: **"Accept which? Reply with numbers (e.g. '1, 3') or 'none'."**
|
|
1080
|
-
6. On user reply:
|
|
1081
|
-
- For accepted: apply the change. Then run the relevant probe self-test or a focused command that exercises the changed probe/trigger. Then \`ezcoder eyes log ack <id>\` for every journal entry the proposal covers.
|
|
1082
|
-
- For unmentioned / rejected: \`ezcoder eyes log defer <id>\` so they stop appearing in context every turn. The user can resurrect deferred entries later.
|
|
1083
|
-
7. **Report**: applied changes (one line each), verification run, entries acked, entries deferred.
|
|
1084
|
-
|
|
1085
|
-
## Rules
|
|
1086
|
-
|
|
1087
|
-
- **No fishing.** Only act on entries already in the journal. Don't scan the repo for hypothetical gaps.
|
|
1088
|
-
- **No scope creep.** "Add a \`--wait-for-selector\` flag to the visual probe" is in scope. "Rewrite the probe in TypeScript" is not.
|
|
1089
|
-
- **Preserve user edits.** If \`.ezcoder/eyes/<name>.sh\` has diverged from the shipped impl (user hand-edited), point this out and ask before overwriting.
|
|
1090
|
-
- **Be honest about tradeoffs.** If a proposed fix might break existing invocations, say so in the proposal.
|
|
1091
|
-
- **Decline when appropriate.** If open signals are all vague or low-value, say so and defer them — don't manufacture fixes.`,
|
|
1092
|
-
},
|
|
1093
|
-
{
|
|
1094
|
-
name: "simplify",
|
|
1095
|
-
aliases: [],
|
|
1096
|
-
description: "Review changed code and fix issues found",
|
|
1097
|
-
prompt: `# Simplify: Code Review and Cleanup
|
|
1098
|
-
|
|
1099
|
-
Review all changed files for reuse, quality, and efficiency. Fix any issues found.
|
|
1100
|
-
|
|
1101
|
-
## Phase 1: Identify Changes
|
|
1102
|
-
|
|
1103
|
-
Run \`git diff\` (or \`git diff HEAD\` if there are staged changes) to see what changed. If there are no git changes, review the most recently modified files that the user mentioned or that you edited earlier in this conversation.
|
|
1104
|
-
|
|
1105
|
-
## Phase 2: Launch Three Review Agents in Parallel
|
|
1106
|
-
|
|
1107
|
-
Use the subagent tool to launch all three agents concurrently in a single response (call the subagent tool 3 times in one message). Pass each agent the full diff so it has the complete context.
|
|
1108
|
-
|
|
1109
|
-
### Agent 1: Code Reuse Review
|
|
1110
|
-
|
|
1111
|
-
For each change:
|
|
1112
|
-
|
|
1113
|
-
1. **Search for existing utilities and helpers** that could replace newly written code. Look for similar patterns elsewhere in the codebase — common locations are utility directories, shared modules, and files adjacent to the changed ones.
|
|
1114
|
-
2. **Flag any new function that duplicates existing functionality.** Suggest the existing function to use instead.
|
|
1115
|
-
3. **Flag any inline logic that could use an existing utility** — hand-rolled string manipulation, manual path handling, custom environment checks, ad-hoc type guards, and similar patterns are common candidates.
|
|
1116
|
-
|
|
1117
|
-
### Agent 2: Code Quality Review
|
|
1118
|
-
|
|
1119
|
-
Review the same changes for hacky patterns:
|
|
1120
|
-
|
|
1121
|
-
1. **Redundant state**: state that duplicates existing state, cached values that could be derived, observers/effects that could be direct calls
|
|
1122
|
-
2. **Parameter sprawl**: adding new parameters to a function instead of generalizing or restructuring existing ones
|
|
1123
|
-
3. **Copy-paste with slight variation**: near-duplicate code blocks that should be unified with a shared abstraction
|
|
1124
|
-
4. **Leaky abstractions**: exposing internal details that should be encapsulated, or breaking existing abstraction boundaries
|
|
1125
|
-
5. **Stringly-typed code**: using raw strings where constants, enums (string unions), or branded types already exist in the codebase
|
|
1126
|
-
6. **Unnecessary JSX nesting**: wrapper Boxes/elements that add no layout value — check if inner component props (flexShrink, alignItems, etc.) already provide the needed behavior
|
|
1127
|
-
7. **Unnecessary comments**: comments explaining WHAT the code does (well-named identifiers already do that), narrating the change, or referencing the task/caller — delete; keep only non-obvious WHY (hidden constraints, subtle invariants, workarounds)
|
|
1128
|
-
|
|
1129
|
-
### Agent 3: Efficiency Review
|
|
1130
|
-
|
|
1131
|
-
Review the same changes for efficiency:
|
|
1132
|
-
|
|
1133
|
-
1. **Unnecessary work**: redundant computations, repeated file reads, duplicate network/API calls, N+1 patterns
|
|
1134
|
-
2. **Missed concurrency**: independent operations run sequentially when they could run in parallel
|
|
1135
|
-
3. **Hot-path bloat**: new blocking work added to startup or per-request/per-render hot paths
|
|
1136
|
-
4. **Recurring no-op updates**: state/store updates inside polling loops, intervals, or event handlers that fire unconditionally — add a change-detection guard so downstream consumers aren't notified when nothing changed. Also: if a wrapper function takes an updater/reducer callback, verify it honors same-reference returns (or whatever the "no change" signal is) — otherwise callers' early-return no-ops are silently defeated
|
|
1137
|
-
5. **Unnecessary existence checks**: pre-checking file/resource existence before operating (TOCTOU anti-pattern) — operate directly and handle the error
|
|
1138
|
-
6. **Memory**: unbounded data structures, missing cleanup, event listener leaks
|
|
1139
|
-
7. **Overly broad operations**: reading entire files when only a portion is needed, loading all items when filtering for one
|
|
1140
|
-
|
|
1141
|
-
## Phase 3: Fix Issues
|
|
1142
|
-
|
|
1143
|
-
Wait for all three agents to complete. Aggregate their findings and fix each issue directly. If a finding is a false positive or not worth addressing, note it and move on — do not argue with the finding, just skip it.
|
|
1144
|
-
|
|
1145
|
-
Before making any non-trivial pattern/API change, verify the intended approach against local neighboring code first; use kencode search or official docs when the change touches framework APIs, lifecycle behavior, concurrency, cleanup, or other conventions where real-world practice matters.
|
|
1146
|
-
|
|
1147
|
-
When done, run relevant project checks/tests, then briefly summarize what was fixed (or confirm the code was already clean) and what verification ran.`,
|
|
1148
|
-
},
|
|
1149
|
-
{
|
|
1150
|
-
name: "batch",
|
|
1151
|
-
aliases: [],
|
|
1152
|
-
description: "Plan a large change, execute in parallel PRs",
|
|
1153
|
-
prompt: `# Batch: Parallel Work Orchestration
|
|
1154
|
-
|
|
1155
|
-
You are orchestrating a large, parallelizable change across this codebase.
|
|
1156
|
-
|
|
1157
|
-
## Phase 1: Research
|
|
1158
|
-
|
|
1159
|
-
Launch one or more subagents using the subagent tool with \`agent: "researcher"\` to deeply research what this instruction touches. You need their results before proceeding, so wait for them to complete. Have them:
|
|
1160
|
-
|
|
1161
|
-
- Find ALL files, patterns, and call sites that need to change
|
|
1162
|
-
- Understand existing conventions so the migration is consistent
|
|
1163
|
-
- Quantify the surface area (how many files, how many call sites)
|
|
1164
|
-
- Note any risks or complications
|
|
1165
|
-
|
|
1166
|
-
## Phase 2: Plan
|
|
1167
|
-
|
|
1168
|
-
After research completes, call the enter_plan tool to enter plan mode. Using the research findings:
|
|
1169
|
-
|
|
1170
|
-
1. **Decompose into independent units.** Break the work into 5–30 self-contained units. Each unit must:
|
|
1171
|
-
- Be independently implementable on its own git branch (no shared state with sibling units)
|
|
1172
|
-
- Be mergeable on its own without depending on another unit's PR landing first
|
|
1173
|
-
- Be roughly uniform in size (split large units, merge trivial ones)
|
|
1174
|
-
|
|
1175
|
-
Scale the count to the actual work: few files → closer to 5; hundreds of files → closer to 30. Prefer per-directory or per-module slicing over arbitrary file lists.
|
|
1176
|
-
|
|
1177
|
-
2. **Determine the test recipe.** Figure out how a worker can verify its change actually works — not just that unit tests pass. Look for:
|
|
1178
|
-
- An existing e2e/integration test suite the worker can run
|
|
1179
|
-
- A dev-server + curl pattern (for API changes)
|
|
1180
|
-
- A CLI verification pattern (for CLI changes)
|
|
1181
|
-
|
|
1182
|
-
If you cannot find a concrete verification path, ask the user how to verify. Offer 2–3 specific options based on what the researcher found. Do not skip this — the workers cannot ask the user themselves.
|
|
1183
|
-
|
|
1184
|
-
3. **Write the plan** to \`.ezcoder/plans/batch.md\` with:
|
|
1185
|
-
- Summary of research findings
|
|
1186
|
-
- Numbered list of work units — each with: title, file list, one-line description
|
|
1187
|
-
- The test recipe (or "skip e2e because …")
|
|
1188
|
-
- Note that each worker will use the \`worker\` agent (branch-isolated)
|
|
1189
|
-
|
|
1190
|
-
4. Call exit_plan to present the plan for approval.
|
|
1191
|
-
|
|
1192
|
-
## Phase 3: Spawn Workers (After Plan Approval)
|
|
1193
|
-
|
|
1194
|
-
Record the current branch name first: \`git branch --show-current\`.
|
|
1195
|
-
|
|
1196
|
-
Spawn one subagent per work unit using the subagent tool with \`agent: "worker"\`. **Launch them all in a single message block so they run in parallel.**
|
|
1197
|
-
|
|
1198
|
-
For each worker, the task must be fully self-contained. Include:
|
|
1199
|
-
- The overall goal (the user's instruction)
|
|
1200
|
-
- The starting branch to branch from (the branch name you recorded above)
|
|
1201
|
-
- This unit's specific task (title, file list, change description — copied verbatim from your plan)
|
|
1202
|
-
- Any codebase conventions discovered during research
|
|
1203
|
-
- The test recipe from your plan (or "skip e2e because …")
|
|
1204
|
-
- These additional instructions, copied verbatim:
|
|
1205
|
-
|
|
1206
|
-
\`\`\`
|
|
1207
|
-
After you finish implementing the change:
|
|
1208
|
-
1. Self-review your diff for code reuse, quality, and efficiency. Search the codebase for existing utilities that could replace new code. Fix any issues found.
|
|
1209
|
-
2. For framework/API/config changes, compare the approach with official docs or kencode search examples before finalizing. Do not use kencode for purely local renames or mechanical edits.
|
|
1210
|
-
3. Run the project's test suite (check for package.json scripts, Makefile targets, or common commands like npm test, pnpm test, pytest, go test). If tests fail, fix them.
|
|
1211
|
-
4. Follow the e2e test recipe above. If it says to skip e2e, skip it.
|
|
1212
|
-
5. Commit all changes with a clear message, push the branch, and create a PR with gh pr create. Use a descriptive title.
|
|
1213
|
-
6. Switch back to the original branch with git checkout -.
|
|
1214
|
-
7. End with exactly: PR: <url> or PR: none — <reason>
|
|
1215
|
-
\`\`\`
|
|
1216
|
-
|
|
1217
|
-
## Phase 4: Track Results
|
|
1218
|
-
|
|
1219
|
-
After launching all workers, render an initial status table:
|
|
1220
|
-
|
|
1221
|
-
| # | Unit | Status | PR |
|
|
1222
|
-
|---|------|--------|----|
|
|
1223
|
-
| 1 | <title> | running | — |
|
|
1224
|
-
| 2 | <title> | running | — |
|
|
1225
|
-
|
|
1226
|
-
As workers complete, parse the \`PR: <url>\` line from each result and re-render the table with updated status (\`done\` / \`failed\`) and PR links. Keep a brief failure note for any worker that did not produce a PR.
|
|
1227
|
-
|
|
1228
|
-
When all workers have reported, render the final table and a one-line summary (e.g., "22/24 units landed as PRs").`,
|
|
1229
399
|
},
|
|
1230
400
|
{
|
|
1231
401
|
name: "compare",
|
|
1232
402
|
aliases: [],
|
|
1233
|
-
description: "Compare
|
|
403
|
+
description: "Compare real-world code",
|
|
1234
404
|
prompt: `Compare the code you just created or modified in this conversation against real-world implementations using the \`mcp__kencode-search__searchCode\` tool.
|
|
1235
405
|
|
|
1236
406
|
You already know what you just built. For each file you created or modified, use \`mcp__kencode-search__searchCode\` to search for how real projects implement the same patterns. Look at the specific APIs, hooks, functions, and architecture you used.
|
|
@@ -1251,7 +421,7 @@ If the code aligns well with real-world patterns, say so. That's a good outcome.
|
|
|
1251
421
|
{
|
|
1252
422
|
name: "setup-skills",
|
|
1253
423
|
aliases: [],
|
|
1254
|
-
description: "
|
|
424
|
+
description: "Recommend useful skills",
|
|
1255
425
|
prompt: `# Skills Audit: Find useful skills for this project
|
|
1256
426
|
|
|
1257
427
|
Analyze this project and recommend skills from the open ecosystem that would make **working on this project more efficient, easier, and safer**. That is the goal, full stop. Every recommendation must pass the test: does this skill save real time, lower real cognitive load, or prevent real mistakes for someone working on THIS project, repeatedly?
|
|
@@ -1350,7 +520,7 @@ After presenting the list, ask which (if any) to install. Install nothing withou
|
|
|
1350
520
|
{
|
|
1351
521
|
name: "setup",
|
|
1352
522
|
aliases: ["setup-project"],
|
|
1353
|
-
description: "Audit project
|
|
523
|
+
description: "Audit project setup",
|
|
1354
524
|
prompt: `Audit this project across six categories and report gaps. **Do not fix anything yet.** Wait for me to choose what to address after the report.
|
|
1355
525
|
|
|
1356
526
|
Language-agnostic and project-agnostic — adapt findings to the languages and stack actually present. Ignore categories that don't apply (e.g. skip CI for a local-only scratchpad).
|
|
@@ -1425,16 +595,16 @@ At the end:
|
|
|
1425
595
|
<N> gaps in hygiene, <N> in tooling, <N> in verify pipeline, <N> in style-pack alignment.
|
|
1426
596
|
|
|
1427
597
|
Which (if any) would you like me to fix? Options:
|
|
1428
|
-
- A)
|
|
1429
|
-
- B)
|
|
1430
|
-
- C)
|
|
598
|
+
- A) Add tasks for all [GAP] items that are safe + additive (no overwrites)
|
|
599
|
+
- B) Add tasks for a category: hygiene / tooling / verify / style-pack alignment
|
|
600
|
+
- C) Add tasks for specific items — tell me which
|
|
1431
601
|
- D) None — just the report
|
|
1432
602
|
\`\`\`
|
|
1433
603
|
|
|
1434
604
|
## Rules
|
|
1435
605
|
|
|
1436
606
|
- **Report only.** No edits, no installs, no commits without explicit user confirmation after the report.
|
|
1437
|
-
- **Task handoff for fixes.** If the user chooses A, B, or C, do not fix directly.
|
|
607
|
+
- **Task handoff for fixes.** If the user chooses A, B, or C, do not fix directly. Add one task per selected gap or tightly coupled gap group using the \`tasks\` tool (action=add). Each task needs a short title and a standalone prompt that includes the gap, affected files/configs, safe-additive constraints, implementation instructions, project verification commands, and instructions to verify relevant tool/config semantics against official docs before completing the task. Use kencode search only for code-level examples, not as proof of scaffolding requirements. After adding the tasks, tell the user exactly: "Tasks added. Press Ctrl+T to open the task list and run them." Do not begin executing them unless the user explicitly says so.
|
|
1438
608
|
- **No code refactors recommended.** This audit is about scaffolding/tooling, not code review. Use \`/scan\` or \`/verify\` for code-level findings.
|
|
1439
609
|
- **No dependency installations in the report.** Listing them as observations is fine; recommending installation is not — that's the user's call.
|
|
1440
610
|
- **Skip empty categories.** If a category has no findings, omit it.
|