aiwcli 0.15.5 → 0.17.0
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 +108 -1124
- package/bin/run.js +0 -4
- package/dist/capabilities/branch/adapters.d.ts +2 -0
- package/dist/capabilities/branch/adapters.js +21 -0
- package/dist/capabilities/branch/contracts.d.ts +57 -0
- package/dist/capabilities/branch/contracts.js +1 -0
- package/dist/capabilities/branch/control-plane.d.ts +2 -0
- package/dist/capabilities/branch/control-plane.js +343 -0
- package/dist/capabilities/branch/runtime-core.d.ts +5 -0
- package/dist/capabilities/branch/runtime-core.js +36 -0
- package/dist/capabilities/installation/control-plane/clean-command.d.ts +41 -0
- package/dist/capabilities/installation/control-plane/clean-command.js +196 -0
- package/dist/capabilities/installation/control-plane/clear-command.d.ts +162 -0
- package/dist/capabilities/installation/control-plane/clear-command.js +1249 -0
- package/dist/capabilities/installation/control-plane/init-command.d.ts +81 -0
- package/dist/capabilities/installation/control-plane/init-command.js +449 -0
- package/dist/capabilities/launch/contracts.d.ts +86 -0
- package/dist/capabilities/launch/contracts.js +1 -0
- package/dist/capabilities/launch/control-plane/execute-launch.d.ts +2 -0
- package/dist/capabilities/launch/control-plane/execute-launch.js +261 -0
- package/dist/capabilities/launch/runtime-core/launch-decisions.d.ts +82 -0
- package/dist/capabilities/launch/runtime-core/launch-decisions.js +202 -0
- package/dist/capabilities/launch/runtime-core/launch-options.d.ts +14 -0
- package/dist/capabilities/launch/runtime-core/launch-options.js +69 -0
- package/dist/cli/base-command.d.ts +18 -0
- package/dist/cli/base-command.js +55 -0
- package/dist/commands/branch.d.ts +1 -21
- package/dist/commands/branch.js +25 -417
- package/dist/commands/clean.d.ts +1 -41
- package/dist/commands/clean.js +1 -196
- package/dist/commands/clear.d.ts +1 -161
- package/dist/commands/clear.js +1 -1121
- package/dist/commands/init/index.d.ts +1 -98
- package/dist/commands/init/index.js +4 -478
- package/dist/commands/launch.d.ts +32 -12
- package/dist/commands/launch.js +107 -166
- package/dist/lib/claude-settings-types.d.ts +31 -19
- package/dist/lib/config.js +1 -2
- package/dist/lib/context/context-formatter.d.ts +74 -0
- package/dist/lib/context/context-formatter.js +493 -0
- package/dist/lib/context/context-selector.d.ts +42 -0
- package/dist/lib/context/context-selector.js +451 -0
- package/dist/lib/context/context-store.d.ts +100 -0
- package/dist/lib/context/context-store.js +644 -0
- package/dist/lib/context/plan-manager.d.ts +54 -0
- package/dist/lib/context/plan-manager.js +282 -0
- package/dist/lib/context/task-tracker.d.ts +44 -0
- package/dist/lib/context/task-tracker.js +146 -0
- package/dist/lib/core-ide-base.d.ts +4 -0
- package/dist/lib/core-ide-base.js +77 -0
- package/dist/lib/core-installer.d.ts +5 -0
- package/dist/lib/core-installer.js +33 -0
- package/dist/lib/debug.d.ts +0 -10
- package/dist/lib/debug.js +0 -10
- package/dist/lib/env-sanitizer.d.ts +25 -0
- package/dist/lib/env-sanitizer.js +46 -0
- package/dist/lib/errors.d.ts +0 -13
- package/dist/lib/errors.js +0 -15
- package/dist/lib/git-exclude-manager.d.ts +2 -2
- package/dist/lib/git-exclude-manager.js +3 -3
- package/dist/lib/hooks/context-monitor-logic.d.ts +6 -0
- package/dist/lib/hooks/context-monitor-logic.js +25 -0
- package/dist/lib/hooks/hook-utils.d.ts +143 -0
- package/dist/lib/hooks/hook-utils.js +620 -0
- package/dist/lib/hooks/prompt-binding-logic.d.ts +7 -0
- package/dist/lib/hooks/prompt-binding-logic.js +50 -0
- package/dist/lib/hooks/session-end-logic.d.ts +5 -0
- package/dist/lib/hooks/session-end-logic.js +51 -0
- package/dist/lib/hooks-merger.js +25 -19
- package/dist/lib/ide-path-resolver.d.ts +19 -7
- package/dist/lib/ide-path-resolver.js +25 -9
- package/dist/lib/install-state.d.ts +34 -0
- package/dist/lib/install-state.js +154 -0
- package/dist/lib/json-io.d.ts +12 -0
- package/dist/lib/json-io.js +30 -0
- package/dist/lib/lsp-patch.d.ts +12 -0
- package/dist/lib/lsp-patch.js +156 -0
- package/dist/lib/multiplexer.d.ts +65 -0
- package/dist/lib/multiplexer.js +38 -0
- package/dist/lib/multiplexers/psmux.d.ts +55 -0
- package/dist/lib/multiplexers/psmux.js +324 -0
- package/dist/lib/multiplexers/tmux.d.ts +36 -0
- package/dist/lib/multiplexers/tmux.js +221 -0
- package/dist/lib/multiplexers/wezterm.d.ts +38 -0
- package/dist/lib/multiplexers/wezterm.js +225 -0
- package/dist/lib/mux-utils.d.ts +6 -0
- package/dist/lib/mux-utils.js +36 -0
- package/dist/lib/paths.d.ts +2 -2
- package/dist/lib/paths.js +2 -2
- package/dist/lib/platform-commands.d.ts +27 -0
- package/dist/lib/platform-commands.js +49 -0
- package/dist/lib/prompt-file-manager.d.ts +23 -0
- package/dist/lib/prompt-file-manager.js +41 -0
- package/dist/lib/runtime/agent-launcher.d.ts +67 -0
- package/dist/lib/runtime/agent-launcher.js +262 -0
- package/dist/lib/runtime/aiw-cli.d.ts +39 -0
- package/dist/lib/runtime/aiw-cli.js +76 -0
- package/dist/lib/runtime/atomic-write.d.ts +19 -0
- package/dist/lib/runtime/atomic-write.js +121 -0
- package/dist/lib/runtime/cli-args.d.ts +58 -0
- package/dist/lib/runtime/cli-args.js +200 -0
- package/dist/lib/runtime/constants.d.ts +56 -0
- package/dist/lib/runtime/constants.js +230 -0
- package/dist/lib/runtime/executable-policy.d.ts +16 -0
- package/dist/lib/runtime/executable-policy.js +57 -0
- package/dist/lib/runtime/git-state.d.ts +9 -0
- package/dist/lib/runtime/git-state.js +59 -0
- package/dist/lib/runtime/inference.d.ts +37 -0
- package/dist/lib/runtime/inference.js +251 -0
- package/dist/lib/runtime/lint-dispatch.d.ts +40 -0
- package/dist/lib/runtime/lint-dispatch.js +285 -0
- package/dist/lib/runtime/logger.d.ts +66 -0
- package/dist/lib/runtime/logger.js +201 -0
- package/dist/lib/runtime/models.d.ts +20 -0
- package/dist/lib/runtime/models.js +20 -0
- package/dist/lib/runtime/platform-adapter.d.ts +7 -0
- package/dist/lib/runtime/platform-adapter.js +21 -0
- package/dist/lib/runtime/preflight.d.ts +24 -0
- package/dist/lib/runtime/preflight.js +65 -0
- package/dist/lib/runtime/sentinel-ipc.d.ts +14 -0
- package/dist/lib/runtime/sentinel-ipc.js +67 -0
- package/dist/lib/runtime/state-io.d.ts +31 -0
- package/dist/lib/runtime/state-io.js +179 -0
- package/dist/lib/runtime/stop-words.d.ts +20 -0
- package/dist/lib/runtime/stop-words.js +150 -0
- package/dist/lib/runtime/subprocess-utils.d.ts +29 -0
- package/dist/lib/runtime/subprocess-utils.js +96 -0
- package/dist/lib/runtime/tmux-preflight.d.ts +13 -0
- package/dist/lib/runtime/tmux-preflight.js +78 -0
- package/dist/lib/runtime/utils.d.ts +62 -0
- package/dist/lib/runtime/utils.js +192 -0
- package/dist/lib/schemas.d.ts +250 -0
- package/dist/lib/schemas.js +216 -0
- package/dist/lib/sentinel-manager.d.ts +32 -0
- package/dist/lib/sentinel-manager.js +62 -0
- package/dist/lib/sentinel-wrapper.d.ts +10 -0
- package/dist/lib/sentinel-wrapper.js +29 -0
- package/dist/lib/settings-hierarchy.js +3 -20
- package/dist/lib/shell-adapters/bash-adapter.d.ts +18 -0
- package/dist/lib/shell-adapters/bash-adapter.js +69 -0
- package/dist/lib/shell-adapters/index.d.ts +5 -0
- package/dist/lib/shell-adapters/index.js +7 -0
- package/dist/lib/shell-adapters/powershell-adapter.d.ts +18 -0
- package/dist/lib/shell-adapters/powershell-adapter.js +62 -0
- package/dist/lib/shell-adapters/shell-adapter.d.ts +45 -0
- package/dist/lib/shell-adapters/shell-adapter.js +5 -0
- package/dist/lib/shell-quoting.d.ts +5 -0
- package/dist/lib/shell-quoting.js +17 -0
- package/dist/lib/spawn-errors.d.ts +9 -0
- package/dist/lib/spawn-errors.js +29 -0
- package/dist/lib/spawn.js +5 -11
- package/dist/lib/spinner.d.ts +0 -5
- package/dist/lib/spinner.js +0 -16
- package/dist/lib/template-installer.d.ts +14 -5
- package/dist/lib/template-installer.js +40 -38
- package/dist/lib/template-resolver.d.ts +6 -7
- package/dist/lib/template-resolver.js +26 -21
- package/dist/lib/template-settings-reconstructor.d.ts +7 -2
- package/dist/lib/template-settings-reconstructor.js +76 -45
- package/dist/lib/terminal-strategy.d.ts +12 -0
- package/dist/lib/terminal-strategy.js +55 -0
- package/dist/lib/terminal.d.ts +34 -4
- package/dist/lib/terminal.js +192 -119
- package/dist/lib/tmux-pane-placement.d.ts +17 -0
- package/dist/lib/tmux-pane-placement.js +58 -0
- package/dist/lib/tmux-primitives.d.ts +3 -0
- package/dist/lib/tmux-primitives.js +11 -0
- package/dist/lib/tmux-session.d.ts +32 -0
- package/dist/lib/tmux-session.js +87 -0
- package/dist/lib/tty-detection.js +1 -1
- package/dist/lib/types.d.ts +168 -0
- package/dist/lib/types.js +6 -0
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/lib/windsurf-hooks-hierarchy.js +6 -23
- package/dist/platform/launch.d.ts +11 -0
- package/dist/platform/launch.js +11 -0
- package/dist/templates/CLAUDE.md +30 -40
- package/dist/templates/cc-native/.claude/settings.json +26 -36
- package/dist/templates/cc-native/CC-NATIVE-README.md +1 -1
- package/dist/templates/cc-native/TEMPLATE-SCHEMA.md +20 -12
- package/dist/templates/cc-native/_cc-native/cc-native.config.json +2 -6
- package/dist/templates/cc-native/_cc-native/hooks/CLAUDE.md +39 -59
- package/dist/templates/cc-native/_cc-native/hooks/cc-native-plan-review.ts +9 -11
- package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_subagent.ts +2 -2
- package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_write.ts +4 -5
- package/dist/templates/cc-native/_cc-native/hooks/mark_questions_asked.ts +4 -4
- package/dist/templates/cc-native/_cc-native/hooks/plan_questions_early.ts +2 -27
- package/dist/templates/cc-native/_cc-native/hooks/validate_task_prompt.ts +7 -7
- package/dist/templates/cc-native/_cc-native/lib-ts/.mocharc.json +9 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/aggregate-agents.test.ts +118 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/artifacts.test.ts +234 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/cc-native-state.test.ts +170 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/cli-output-parser.test.ts +73 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/config.test.ts +64 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/constants.test.ts +40 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/debug.test.ts +42 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/exports.test.ts +58 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/helpers.ts +107 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/hooks/add-plan-context.hook.test.ts +97 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/hooks/plan-questions.hook.test.ts +81 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/hooks/plan-review.hook.test.ts +71 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/json-parser.test.ts +99 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/orchestrator-agent.test.ts +288 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/orchestrator.test.ts +48 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/reviewers.test.ts +32 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/state.test.ts +124 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/verdict.test.ts +93 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/agent-selection.ts +163 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/aggregate-agents.ts +6 -14
- package/dist/templates/cc-native/_cc-native/{artifacts/lib → lib-ts/artifacts}/format.ts +597 -599
- package/dist/templates/cc-native/_cc-native/{artifacts/lib → lib-ts/artifacts}/index.ts +26 -26
- package/dist/templates/cc-native/_cc-native/{artifacts/lib → lib-ts/artifacts}/tracker.ts +106 -107
- package/dist/templates/cc-native/_cc-native/{artifacts/lib → lib-ts/artifacts}/write.ts +118 -119
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts.ts +21 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/cc-native-state.ts +17 -16
- package/dist/templates/cc-native/_cc-native/lib-ts/cli-output-parser.ts +132 -10
- package/dist/templates/cc-native/_cc-native/lib-ts/config.ts +1 -1
- package/dist/templates/cc-native/_cc-native/lib-ts/constants.ts +6 -6
- package/dist/templates/cc-native/_cc-native/lib-ts/corroboration.ts +119 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/debug.ts +2 -3
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/graduation.ts +132 -132
- package/dist/templates/cc-native/_cc-native/lib-ts/index.ts +88 -86
- package/dist/templates/cc-native/_cc-native/lib-ts/json-parser.ts +5 -6
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/orchestrator.ts +70 -70
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/output-builder.ts +130 -121
- package/dist/templates/cc-native/_cc-native/lib-ts/package-lock.json +1679 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/package.json +24 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/plan-discovery.ts +5 -5
- package/dist/templates/cc-native/_cc-native/lib-ts/plan-enhancement.ts +1 -6
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/plan-questions.ts +101 -101
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/review-pipeline.ts +511 -543
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/__tests__/agent-providers.test.ts +262 -0
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/agent.ts +71 -85
- package/dist/templates/{_shared/lib-ts/agent-exec → cc-native/_cc-native/lib-ts/reviewers/base}/base-agent.ts +138 -150
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/index.ts +12 -12
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/providers/claude-agent.ts +66 -57
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/providers/codex-agent.ts +185 -200
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/providers/gemini-agent.ts +39 -40
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/providers/orchestrator-claude-agent.ts +196 -225
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/schemas.ts +201 -201
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/types.ts +21 -23
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/__tests__/hyde.test.ts +365 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/__tests__/ollama-client.test.ts +223 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/embedding-indexer.ts +12 -16
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/hyde.ts +3 -2
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/index.ts +31 -31
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/logger.ts +7 -8
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/ollama-client.ts +7 -9
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/retrieval-pipeline.ts +16 -19
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-indexer.ts +37 -41
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-loader.ts +33 -43
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-searcher.ts +20 -20
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/types.ts +9 -10
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/vector-store.ts +3 -4
- package/dist/templates/cc-native/_cc-native/lib-ts/settings.ts +50 -126
- package/dist/templates/cc-native/_cc-native/lib-ts/state.ts +20 -22
- package/dist/templates/cc-native/_cc-native/lib-ts/tsconfig.json +2 -2
- package/dist/templates/cc-native/_cc-native/lib-ts/types.ts +14 -89
- package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/verdict.ts +72 -72
- package/dist/templates/cc-native/_cc-native/plan-review/CLAUDE.md +38 -1
- package/dist/templates/cc-native/_cc-native/plan-review/lib/__tests__/agent-selection.test.ts +345 -0
- package/dist/templates/cc-native/_cc-native/plan-review/lib/__tests__/preflight.test.ts +344 -0
- package/dist/templates/cc-native/_cc-native/plan-review/lib/agent-selection.ts +38 -16
- package/dist/templates/cc-native/_cc-native/plan-review/lib/preflight.ts +56 -26
- package/dist/templates/cc-native/_cc-native/scripts/council_debate.ts +242 -0
- package/dist/templates/cc-native/_cc-native/scripts/council_debate_simple.ts +294 -0
- package/dist/templates/cc-native/_cc-native/{plan-review/workflows → workflows}/specdev.md +9 -9
- package/dist/templates/core/.claude/skills/codex/SKILL.md +25 -0
- package/dist/templates/core/.claude/skills/devin/SKILL.md +25 -0
- package/dist/templates/core/.claude/skills/handoff/SKILL.md +11 -0
- package/dist/templates/core/.claude/skills/handoff-resume/SKILL.md +11 -0
- package/dist/templates/core/.claude/skills/meta-plan/SKILL.md +13 -0
- package/dist/templates/core/.codex/skills/codex/SKILL.md +13 -0
- package/dist/templates/core/.codex/skills/devin/SKILL.md +19 -0
- package/dist/templates/core/.codex/skills/handoff/SKILL.md +11 -0
- package/dist/templates/core/.codex/skills/handoff-resume/SKILL.md +11 -0
- package/dist/templates/core/.codex/skills/meta-plan/SKILL.md +13 -0
- package/dist/templates/core/.devin/AGENTS.md +5 -0
- package/dist/templates/core/.devin/config.json +12 -0
- package/dist/templates/core/.devin/skills/codex/SKILL.md +19 -0
- package/dist/templates/core/.devin/skills/devin/SKILL.md +13 -0
- package/dist/templates/core/.devin/skills/handoff/SKILL.md +11 -0
- package/dist/templates/core/.devin/skills/handoff-resume/SKILL.md +11 -0
- package/dist/templates/core/.devin/skills/meta-plan/SKILL.md +13 -0
- package/dist/templates/core/.windsurf/workflows/handoff-resume.md +9 -0
- package/dist/templates/{_shared → core}/.windsurf/workflows/handoff.md +1 -1
- package/dist/templates/{_shared → core}/.windsurf/workflows/meta-plan.md +1 -1
- package/dist/templates/core/hooks-ts/_utils/git-state.ts +2 -0
- package/dist/templates/{_shared → core}/hooks-ts/archive_plan.ts +15 -44
- package/dist/templates/core/hooks-ts/codex_explorer.ts +160 -0
- package/dist/templates/{_shared → core}/hooks-ts/context_monitor.ts +23 -55
- package/dist/templates/{_shared → core}/hooks-ts/file-suggestion.ts +5 -22
- package/dist/templates/{_shared → core}/hooks-ts/lint_after_edit.ts +7 -9
- package/dist/templates/core/hooks-ts/pre_compact.ts +36 -0
- package/dist/templates/{_shared → core}/hooks-ts/session_end.ts +38 -78
- package/dist/templates/{_shared → core}/hooks-ts/session_start.ts +5 -5
- package/dist/templates/core/hooks-ts/task_create_capture.ts +32 -0
- package/dist/templates/{_shared → core}/hooks-ts/task_update_capture.ts +9 -24
- package/dist/templates/core/hooks-ts/user_prompt_submit.ts +46 -0
- package/dist/templates/{_shared → core}/lib-ts/CLAUDE.md +27 -16
- package/dist/templates/{_shared → core}/lib-ts/context/CLAUDE.md +9 -6
- package/dist/templates/{_shared → core}/lib-ts/context/context-formatter.ts +16 -21
- package/dist/templates/{_shared → core}/lib-ts/context/context-selector.ts +8 -6
- package/dist/templates/{_shared → core}/lib-ts/context/context-store.ts +59 -20
- package/dist/templates/{_shared → core}/lib-ts/context/plan-manager.ts +19 -15
- package/dist/templates/{_shared → core}/lib-ts/context/task-tracker.ts +3 -3
- package/dist/templates/core/lib-ts/hooks/context-monitor-logic.ts +32 -0
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/hooks}/hook-utils.ts +179 -41
- package/dist/templates/core/lib-ts/hooks/prompt-binding-logic.ts +80 -0
- package/dist/templates/core/lib-ts/hooks/session-end-logic.ts +82 -0
- package/dist/templates/core/lib-ts/package.json +19 -0
- package/dist/templates/core/lib-ts/runtime/agent-launcher.ts +369 -0
- package/dist/templates/core/lib-ts/runtime/aiw-cli.ts +108 -0
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/atomic-write.ts +12 -7
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/cli-args.ts +24 -8
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/constants.ts +326 -324
- package/dist/templates/core/lib-ts/runtime/executable-policy.ts +89 -0
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/git-state.ts +6 -4
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/inference.ts +60 -23
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/lint-dispatch.ts +25 -23
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/logger.ts +32 -29
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/models.ts +9 -2
- package/dist/templates/core/lib-ts/runtime/platform-adapter.ts +33 -0
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/preflight.ts +4 -3
- package/dist/templates/core/lib-ts/runtime/sentinel-ipc.ts +91 -0
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/state-io.ts +20 -11
- package/dist/templates/core/lib-ts/runtime/stop-words.ts +185 -0
- package/dist/templates/core/lib-ts/runtime/subprocess-utils.ts +147 -0
- package/dist/templates/core/lib-ts/runtime/tmux-preflight.ts +93 -0
- package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/utils.ts +34 -4
- package/dist/templates/core/lib-ts/schemas.ts +233 -0
- package/dist/templates/{_shared → core}/lib-ts/templates/formatters.ts +7 -5
- package/dist/templates/{_shared → core}/lib-ts/templates/plan-context.ts +2 -1
- package/dist/templates/{_shared → core}/lib-ts/tsconfig.json +3 -1
- package/dist/templates/{_shared → core}/lib-ts/types.ts +78 -77
- package/dist/templates/core/scripts/resolve-run.ts +93 -0
- package/dist/templates/{_shared → core}/scripts/resolve_context.ts +3 -3
- package/dist/templates/{_shared → core}/scripts/status_line.ts +26 -21
- package/dist/templates/core/skills/codex/CLAUDE.md +83 -0
- package/dist/templates/{_shared → core}/skills/codex/SKILL.md +27 -18
- package/dist/templates/{_shared → core}/skills/codex/lib/codex-watcher.ts +79 -113
- package/dist/templates/{_shared → core}/skills/codex/scripts/launch-codex.ts +134 -148
- package/dist/templates/{_shared → core}/skills/codex/scripts/watch-codex.ts +6 -4
- package/dist/templates/core/skills/devin/CLAUDE.md +122 -0
- package/dist/templates/core/skills/devin/SKILL.md +73 -0
- package/dist/templates/core/skills/devin/lib/devin-watcher.ts +300 -0
- package/dist/templates/core/skills/devin/scripts/launch-devin.ts +258 -0
- package/dist/templates/{_shared → core}/skills/handoff-system/CLAUDE.md +436 -433
- package/dist/templates/{_shared → core}/skills/handoff-system/lib/document-generator.ts +9 -7
- package/dist/templates/{_shared → core}/skills/handoff-system/lib/handoff-reader.ts +6 -4
- package/dist/templates/{_shared → core}/skills/handoff-system/scripts/resume_handoff.ts +10 -8
- package/dist/templates/{_shared → core}/skills/handoff-system/scripts/save_handoff.ts +12 -10
- package/dist/templates/{_shared → core}/skills/handoff-system/workflows/handoff-resume.md +2 -2
- package/dist/templates/{_shared → core}/skills/handoff-system/workflows/handoff.md +6 -5
- package/dist/templates/{_shared → core}/skills/meta-plan/CLAUDE.md +2 -1
- package/dist/templates/{_shared → core}/skills/meta-plan/workflows/meta-plan.md +8 -7
- package/oclif.manifest.json +89 -13
- package/package.json +13 -12
- package/dist/lib/base-command.d.ts +0 -114
- package/dist/lib/base-command.js +0 -153
- package/dist/lib/env-compat.d.ts +0 -18
- package/dist/lib/env-compat.js +0 -23
- package/dist/lib/stdin.d.ts +0 -48
- package/dist/lib/stdin.js +0 -60
- package/dist/templates/_shared/.claude/settings.json +0 -120
- package/dist/templates/_shared/.claude/skills/codex/SKILL.md +0 -35
- package/dist/templates/_shared/.claude/skills/handoff/SKILL.md +0 -13
- package/dist/templates/_shared/.claude/skills/handoff-resume/SKILL.md +0 -13
- package/dist/templates/_shared/.claude/skills/meta-plan/SKILL.md +0 -43
- package/dist/templates/_shared/.codex/workflows/codex.md +0 -11
- package/dist/templates/_shared/.codex/workflows/handoff.md +0 -226
- package/dist/templates/_shared/.codex/workflows/meta-plan.md +0 -347
- package/dist/templates/_shared/hooks-ts/_utils/git-state.ts +0 -2
- package/dist/templates/_shared/hooks-ts/pre_compact.ts +0 -49
- package/dist/templates/_shared/hooks-ts/task_create_capture.ts +0 -48
- package/dist/templates/_shared/hooks-ts/user_prompt_submit.ts +0 -93
- package/dist/templates/_shared/lib-ts/agent-exec/backends/headless.ts +0 -33
- package/dist/templates/_shared/lib-ts/agent-exec/backends/index.ts +0 -6
- package/dist/templates/_shared/lib-ts/agent-exec/backends/tmux.ts +0 -119
- package/dist/templates/_shared/lib-ts/agent-exec/execution-backend.ts +0 -50
- package/dist/templates/_shared/lib-ts/agent-exec/index.ts +0 -6
- package/dist/templates/_shared/lib-ts/agent-exec/structured-output.ts +0 -166
- package/dist/templates/_shared/lib-ts/base/launchers/tmux-launcher.ts +0 -173
- package/dist/templates/_shared/lib-ts/base/launchers/window-launcher.ts +0 -93
- package/dist/templates/_shared/lib-ts/base/launchers/wt-launcher.ts +0 -64
- package/dist/templates/_shared/lib-ts/base/pane-launcher.ts +0 -55
- package/dist/templates/_shared/lib-ts/base/sentinel-ipc.ts +0 -87
- package/dist/templates/_shared/lib-ts/base/stop-words.ts +0 -184
- package/dist/templates/_shared/lib-ts/base/subprocess-utils.ts +0 -249
- package/dist/templates/_shared/lib-ts/base/tmux-driver.ts +0 -341
- package/dist/templates/_shared/lib-ts/base/tmux-pane-placement.ts +0 -78
- package/dist/templates/_shared/lib-ts/package.json +0 -20
- package/dist/templates/_shared/scripts/resolve-run.ts +0 -62
- package/dist/templates/_shared/skills/codex/CLAUDE.md +0 -70
- package/dist/templates/cc-native/_cc-native/CLAUDE.md +0 -73
- package/dist/templates/cc-native/_cc-native/artifacts/CLAUDE.md +0 -64
- package/dist/templates/cc-native/_cc-native/lib-ts/CLAUDE.md +0 -70
- package/dist/templates/cc-native/_cc-native/plan-review/CODING-STANDARDS-CHECKLIST.md +0 -75
- package/dist/templates/cc-native/_cc-native/plan-review/agents/CLAUDE.md +0 -143
- package/dist/templates/cc-native/_cc-native/plan-review/agents/PLAN-ORCHESTRATOR.md +0 -213
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-questions/PLAN-QUESTIONER.md +0 -70
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-EVOLUTION.md +0 -62
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-PATTERNS.md +0 -61
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-STRUCTURE.md +0 -62
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ASSUMPTION-TRACER.md +0 -56
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/CLARITY-AUDITOR.md +0 -53
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-FEASIBILITY.md +0 -66
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-GAPS.md +0 -70
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-ORDERING.md +0 -62
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/CONSTRAINT-VALIDATOR.md +0 -72
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DESIGN-ADR-VALIDATOR.md +0 -61
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DESIGN-SCALE-MATCHER.md +0 -64
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DEVILS-ADVOCATE.md +0 -56
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DOCUMENTATION-PHILOSOPHY.md +0 -86
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/HANDOFF-READINESS.md +0 -59
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/HIDDEN-COMPLEXITY.md +0 -58
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/INCREMENTAL-DELIVERY.md +0 -66
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-DEPENDENCY.md +0 -62
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-FMEA.md +0 -66
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-PREMORTEM.md +0 -71
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-REVERSIBILITY.md +0 -74
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SCOPE-BOUNDARY.md +0 -77
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SIMPLICITY-GUARDIAN.md +0 -62
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SKEPTIC.md +0 -68
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-BEHAVIOR-AUDITOR.md +0 -61
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-CHARACTERIZATION.md +0 -71
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-FIRST-VALIDATOR.md +0 -61
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-PYRAMID-ANALYZER.md +0 -61
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TRADEOFF-COSTS.md +0 -67
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TRADEOFF-STAKEHOLDERS.md +0 -65
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/VERIFY-COVERAGE.md +0 -74
- package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/VERIFY-STRENGTH.md +0 -69
- package/dist/templates/cc-native/_cc-native/plan-review/lib/corroboration.ts +0 -172
- package/dist/templates/cc-native/_cc-native/plan-review/lib/reviewers/base/base-agent.ts +0 -7
|
@@ -13,13 +13,17 @@
|
|
|
13
13
|
*
|
|
14
14
|
* @module lib/template-settings-reconstructor
|
|
15
15
|
*/
|
|
16
|
+
import type { ClaudeSettings } from './claude-settings-types.js';
|
|
16
17
|
/**
|
|
17
18
|
* Reconstruct .claude/settings.json and .windsurf/hooks.json from the union
|
|
18
19
|
* of all specified templates.
|
|
19
20
|
*
|
|
21
|
+
* Note: Codex content is file-based today (`.codex/skills/*`) and does not
|
|
22
|
+
* have a merged settings artifact, so it is intentionally ignored here.
|
|
23
|
+
*
|
|
20
24
|
* The function:
|
|
21
25
|
* 1. Starts with empty settings
|
|
22
|
-
* 2. Merges
|
|
26
|
+
* 2. Merges core template settings (when active templates exist)
|
|
23
27
|
* 3. For each active template, merges its template-source settings
|
|
24
28
|
* 4. Writes the result to the IDE settings file
|
|
25
29
|
*
|
|
@@ -30,6 +34,7 @@
|
|
|
30
34
|
*
|
|
31
35
|
* @param targetDir - Project root directory
|
|
32
36
|
* @param activeTemplates - Template names to include (e.g., ['cc-native', 'bmad'])
|
|
33
|
-
* @param ides - IDEs to reconstruct for (
|
|
37
|
+
* @param ides - IDEs to reconstruct for (currently claude/windsurf)
|
|
34
38
|
*/
|
|
35
39
|
export declare function reconstructIdeSettings(targetDir: string, activeTemplates: string[], ides: string[]): Promise<void>;
|
|
40
|
+
export declare function normalizeTemplateSettingsPaths(settings: ClaudeSettings): ClaudeSettings;
|
|
@@ -14,19 +14,24 @@
|
|
|
14
14
|
* @module lib/template-settings-reconstructor
|
|
15
15
|
*/
|
|
16
16
|
import { join } from 'node:path';
|
|
17
|
+
import { getCoreClaudeSettingsBase, getCoreWindsurfHooksBase } from './core-ide-base.js';
|
|
17
18
|
import { mergeClaudeSettings } from './hooks-merger.js';
|
|
18
19
|
import { IdePathResolver } from './ide-path-resolver.js';
|
|
20
|
+
import { adaptHookCommand, validateCommandsForPlatform } from './platform-commands.js';
|
|
19
21
|
import { readClaudeSettings, writeClaudeSettings } from './settings-hierarchy.js';
|
|
20
|
-
import {
|
|
22
|
+
import { getTemplatePath } from './template-resolver.js';
|
|
21
23
|
import { getTargetHooksFile, readWindsurfHooks, writeWindsurfHooks } from './windsurf-hooks-hierarchy.js';
|
|
22
24
|
import { mergeWindsurfHooks } from './windsurf-hooks-merger.js';
|
|
23
25
|
/**
|
|
24
26
|
* Reconstruct .claude/settings.json and .windsurf/hooks.json from the union
|
|
25
27
|
* of all specified templates.
|
|
26
28
|
*
|
|
29
|
+
* Note: Codex content is file-based today (`.codex/skills/*`) and does not
|
|
30
|
+
* have a merged settings artifact, so it is intentionally ignored here.
|
|
31
|
+
*
|
|
27
32
|
* The function:
|
|
28
33
|
* 1. Starts with empty settings
|
|
29
|
-
* 2. Merges
|
|
34
|
+
* 2. Merges core template settings (when active templates exist)
|
|
30
35
|
* 3. For each active template, merges its template-source settings
|
|
31
36
|
* 4. Writes the result to the IDE settings file
|
|
32
37
|
*
|
|
@@ -37,87 +42,113 @@ import { mergeWindsurfHooks } from './windsurf-hooks-merger.js';
|
|
|
37
42
|
*
|
|
38
43
|
* @param targetDir - Project root directory
|
|
39
44
|
* @param activeTemplates - Template names to include (e.g., ['cc-native', 'bmad'])
|
|
40
|
-
* @param ides - IDEs to reconstruct for (
|
|
45
|
+
* @param ides - IDEs to reconstruct for (currently claude/windsurf)
|
|
41
46
|
*/
|
|
42
47
|
export async function reconstructIdeSettings(targetDir, activeTemplates, ides) {
|
|
43
|
-
const sharedTemplatePath = getSharedTemplatePath();
|
|
44
48
|
if (ides.includes('claude')) {
|
|
45
|
-
await reconstructClaudeSettings(targetDir, activeTemplates
|
|
49
|
+
await reconstructClaudeSettings(targetDir, activeTemplates);
|
|
46
50
|
}
|
|
47
51
|
if (ides.includes('windsurf')) {
|
|
48
|
-
await reconstructWindsurfHooks(targetDir, activeTemplates
|
|
52
|
+
await reconstructWindsurfHooks(targetDir, activeTemplates);
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
55
|
/**
|
|
52
56
|
* Reconstruct .claude/settings.json from scratch using template sources.
|
|
53
57
|
*/
|
|
54
|
-
async function reconstructClaudeSettings(targetDir, activeTemplates
|
|
58
|
+
async function reconstructClaudeSettings(targetDir, activeTemplates) {
|
|
55
59
|
const resolver = new IdePathResolver(targetDir);
|
|
56
60
|
const settingsPath = resolver.getClaudeSettings();
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
//
|
|
60
|
-
const methodsTracking = existingSettings?.methods;
|
|
61
|
-
// Start from empty and merge all template settings
|
|
62
|
-
let reconstructed = {};
|
|
63
|
-
// 1. Merge _shared template settings (only when active templates exist that need them)
|
|
64
|
-
if (activeTemplates.length > 0) {
|
|
65
|
-
const sharedSettingsPath = join(sharedTemplatePath, '.claude', 'settings.json');
|
|
66
|
-
const sharedSettings = await readClaudeSettings(sharedSettingsPath);
|
|
67
|
-
if (sharedSettings) {
|
|
68
|
-
reconstructed = mergeClaudeSettings(reconstructed, sharedSettings);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// 2. Merge each active template's settings (sequential for deterministic merge order)
|
|
61
|
+
// Start from core-owned base settings, then merge method templates.
|
|
62
|
+
let reconstructed = getCoreClaudeSettingsBase();
|
|
63
|
+
// Merge each active template's settings (sequential for deterministic merge order)
|
|
72
64
|
for (const template of activeTemplates) {
|
|
65
|
+
let templateSettingsPath = `<unresolved:${template}>/.claude/settings.json`;
|
|
73
66
|
try {
|
|
74
67
|
const templatePath = await getTemplatePath(template); // eslint-disable-line no-await-in-loop
|
|
75
|
-
|
|
68
|
+
templateSettingsPath = join(templatePath, '.claude', 'settings.json');
|
|
76
69
|
const templateSettings = await readClaudeSettings(templateSettingsPath); // eslint-disable-line no-await-in-loop
|
|
77
70
|
if (templateSettings) {
|
|
78
|
-
reconstructed = mergeClaudeSettings(reconstructed, templateSettings);
|
|
71
|
+
reconstructed = mergeClaudeSettings(reconstructed, normalizeTemplateSettingsPaths(templateSettings));
|
|
79
72
|
}
|
|
80
73
|
}
|
|
81
|
-
catch {
|
|
82
|
-
|
|
74
|
+
catch (error) {
|
|
75
|
+
reportTemplateMergeFailure('claude', template, templateSettingsPath, error);
|
|
83
76
|
}
|
|
84
77
|
}
|
|
85
|
-
// 3.
|
|
86
|
-
|
|
87
|
-
reconstructed.methods = methodsTracking;
|
|
88
|
-
}
|
|
78
|
+
// 3. Platform-adapt hook commands (Windows cmd.exe compatibility)
|
|
79
|
+
reconstructed = adaptSettingsForPlatform(reconstructed);
|
|
89
80
|
// 4. Write reconstructed settings
|
|
90
81
|
await writeClaudeSettings(settingsPath, reconstructed);
|
|
91
82
|
}
|
|
92
83
|
/**
|
|
93
84
|
* Reconstruct .windsurf/hooks.json from scratch using template sources.
|
|
94
85
|
*/
|
|
95
|
-
async function reconstructWindsurfHooks(targetDir, activeTemplates
|
|
86
|
+
async function reconstructWindsurfHooks(targetDir, activeTemplates) {
|
|
96
87
|
const hooksPath = getTargetHooksFile(targetDir);
|
|
97
|
-
// Start from
|
|
98
|
-
let reconstructed =
|
|
99
|
-
//
|
|
100
|
-
if (activeTemplates.length > 0) {
|
|
101
|
-
const sharedHooksPath = join(sharedTemplatePath, '.windsurf', 'hooks.json');
|
|
102
|
-
const sharedHooks = await readWindsurfHooks(sharedHooksPath);
|
|
103
|
-
if (sharedHooks) {
|
|
104
|
-
reconstructed = mergeWindsurfHooks(reconstructed, sharedHooks);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
// 2. Merge each active template's hooks (sequential for deterministic merge order)
|
|
88
|
+
// Start from core-owned base hooks.
|
|
89
|
+
let reconstructed = getCoreWindsurfHooksBase();
|
|
90
|
+
// Merge each active template's hooks (sequential for deterministic merge order)
|
|
108
91
|
for (const template of activeTemplates) {
|
|
92
|
+
let templateHooksPath = `<unresolved:${template}>/.windsurf/hooks.json`;
|
|
109
93
|
try {
|
|
110
94
|
const templatePath = await getTemplatePath(template); // eslint-disable-line no-await-in-loop
|
|
111
|
-
|
|
95
|
+
templateHooksPath = join(templatePath, '.windsurf', 'hooks.json');
|
|
112
96
|
const templateHooks = await readWindsurfHooks(templateHooksPath); // eslint-disable-line no-await-in-loop
|
|
113
97
|
if (templateHooks) {
|
|
114
98
|
reconstructed = mergeWindsurfHooks(reconstructed, templateHooks);
|
|
115
99
|
}
|
|
116
100
|
}
|
|
117
|
-
catch {
|
|
118
|
-
|
|
101
|
+
catch (error) {
|
|
102
|
+
reportTemplateMergeFailure('windsurf', template, templateHooksPath, error);
|
|
119
103
|
}
|
|
120
104
|
}
|
|
121
105
|
// 3. Write reconstructed hooks
|
|
122
106
|
await writeWindsurfHooks(hooksPath, reconstructed);
|
|
123
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Adapt all command strings in settings for the current platform.
|
|
110
|
+
* On Windows: rewrites commands for cmd.exe compatibility.
|
|
111
|
+
* Validates adapted commands and fails fast if unknown remain non-portable.
|
|
112
|
+
*/
|
|
113
|
+
function adaptSettingsForPlatform(settings) {
|
|
114
|
+
const result = { ...settings };
|
|
115
|
+
const allCommands = [];
|
|
116
|
+
// Adapt top-level command configs
|
|
117
|
+
if (result.statusLine && 'command' in result.statusLine) {
|
|
118
|
+
result.statusLine = { ...result.statusLine, command: adaptHookCommand(result.statusLine.command) };
|
|
119
|
+
allCommands.push(result.statusLine.command);
|
|
120
|
+
}
|
|
121
|
+
if (result.fileSuggestion && 'command' in result.fileSuggestion) {
|
|
122
|
+
result.fileSuggestion = { ...result.fileSuggestion, command: adaptHookCommand(result.fileSuggestion.command) };
|
|
123
|
+
allCommands.push(result.fileSuggestion.command);
|
|
124
|
+
}
|
|
125
|
+
// Adapt all hook commands
|
|
126
|
+
if (result.hooks) {
|
|
127
|
+
const adapted = {};
|
|
128
|
+
for (const [event, matchers] of Object.entries(result.hooks)) {
|
|
129
|
+
if (!matchers)
|
|
130
|
+
continue;
|
|
131
|
+
adapted[event] = matchers.map((matcher) => ({
|
|
132
|
+
...matcher,
|
|
133
|
+
hooks: matcher.hooks.map((hook) => {
|
|
134
|
+
if (hook.type !== 'command')
|
|
135
|
+
return hook;
|
|
136
|
+
const adaptedCmd = adaptHookCommand(hook.command);
|
|
137
|
+
allCommands.push(adaptedCmd);
|
|
138
|
+
return { ...hook, command: adaptedCmd };
|
|
139
|
+
}),
|
|
140
|
+
}));
|
|
141
|
+
}
|
|
142
|
+
result.hooks = adapted;
|
|
143
|
+
}
|
|
144
|
+
// Validate: fail fast if unknown command still contains bash-only syntax on Windows
|
|
145
|
+
validateCommandsForPlatform(allCommands);
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
function reportTemplateMergeFailure(ide, template, settingsPath, error) {
|
|
149
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
150
|
+
process.stderr.write(`[warn] Failed to merge ${ide} template "${template}" from ${settingsPath}: ${reason}\n`);
|
|
151
|
+
}
|
|
152
|
+
export function normalizeTemplateSettingsPaths(settings) {
|
|
153
|
+
return structuredClone(settings);
|
|
154
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface TerminalConfig {
|
|
2
|
+
cmd: string;
|
|
3
|
+
getArgs: (command: string) => string[];
|
|
4
|
+
}
|
|
5
|
+
export type WindowsShellPreference = 'default' | 'git-bash' | 'mintty';
|
|
6
|
+
export type WindowsTerminalStrategy = 'git-bash-in-wt' | 'mintty' | 'powershell-fallback' | 'windows-terminal';
|
|
7
|
+
export declare function defaultShell(): string;
|
|
8
|
+
export declare const LINUX_TERMINALS: TerminalConfig[];
|
|
9
|
+
export declare function resolveWindowsTerminalStrategy(preference: WindowsShellPreference, gitBashPath: null | string, minttyExists: boolean, powershellCmd: string): WindowsTerminalStrategy[];
|
|
10
|
+
export declare function detectPowerShell(isAvailable: (command: string) => boolean): string;
|
|
11
|
+
export declare function isWSL(env?: NodeJS.ProcessEnv): boolean;
|
|
12
|
+
export declare function findAvailableLinuxTerminal(isAvailable: (command: string, platform?: NodeJS.Platform) => boolean): null | TerminalConfig;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export function defaultShell() {
|
|
2
|
+
return process.env.SHELL || 'bash';
|
|
3
|
+
}
|
|
4
|
+
export const LINUX_TERMINALS = (() => {
|
|
5
|
+
const shell = defaultShell();
|
|
6
|
+
return [
|
|
7
|
+
{ cmd: 'x-terminal-emulator', getArgs: (command) => ['-e', `${shell} -c "${command}; exec ${shell}"`] },
|
|
8
|
+
{ cmd: 'gnome-terminal', getArgs: (command) => ['--', shell, '-c', `${command}; exec ${shell}`] },
|
|
9
|
+
{ cmd: 'konsole', getArgs: (command) => ['-e', `${shell} -c "${command}; exec ${shell}"`] },
|
|
10
|
+
{ cmd: 'xterm', getArgs: (command) => ['-e', `${shell} -c "${command}; exec ${shell}"`] },
|
|
11
|
+
];
|
|
12
|
+
})();
|
|
13
|
+
export function resolveWindowsTerminalStrategy(preference, gitBashPath, minttyExists, powershellCmd) {
|
|
14
|
+
const strategies = [];
|
|
15
|
+
if (preference === 'mintty') {
|
|
16
|
+
if (minttyExists && gitBashPath) {
|
|
17
|
+
strategies.push('mintty');
|
|
18
|
+
}
|
|
19
|
+
if (gitBashPath) {
|
|
20
|
+
strategies.push('git-bash-in-wt');
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
strategies.push('windows-terminal');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else if (preference === 'git-bash') {
|
|
27
|
+
if (gitBashPath) {
|
|
28
|
+
strategies.push('git-bash-in-wt');
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
strategies.push('windows-terminal');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
strategies.push('windows-terminal');
|
|
36
|
+
}
|
|
37
|
+
if (powershellCmd) {
|
|
38
|
+
strategies.push('powershell-fallback');
|
|
39
|
+
}
|
|
40
|
+
return [...new Set(strategies)];
|
|
41
|
+
}
|
|
42
|
+
export function detectPowerShell(isAvailable) {
|
|
43
|
+
return isAvailable('pwsh') ? 'pwsh' : 'powershell';
|
|
44
|
+
}
|
|
45
|
+
export function isWSL(env = process.env) {
|
|
46
|
+
return Boolean(env['WSL_DISTRO_NAME']);
|
|
47
|
+
}
|
|
48
|
+
export function findAvailableLinuxTerminal(isAvailable) {
|
|
49
|
+
for (const terminal of LINUX_TERMINALS) {
|
|
50
|
+
if (isAvailable(terminal.cmd, 'linux')) {
|
|
51
|
+
return terminal;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
package/dist/lib/terminal.d.ts
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
* ## Supported Platforms
|
|
8
8
|
* - **Windows**: Windows Terminal (wt.exe) with PowerShell 7 (pwsh) fallback to PowerShell 5.1
|
|
9
|
-
* - **macOS**: Terminal.app via
|
|
9
|
+
* - **macOS**: Terminal.app via `open` + temporary `.command` script
|
|
10
10
|
* - **WSL**: Windows Terminal (wt.exe) via wsl.exe, falls back to Linux emulators
|
|
11
|
-
* - **Linux**: gnome-terminal, konsole, xterm
|
|
11
|
+
* - **Linux**: x-terminal-emulator, gnome-terminal, konsole, xterm (in order of preference)
|
|
12
12
|
*
|
|
13
13
|
* ## Usage
|
|
14
14
|
* ```typescript
|
|
@@ -27,6 +27,29 @@
|
|
|
27
27
|
*
|
|
28
28
|
* @module lib/terminal
|
|
29
29
|
*/
|
|
30
|
+
import { type WindowsShellPreference } from './terminal-strategy.js';
|
|
31
|
+
/** @internal */
|
|
32
|
+
export interface SpawnArgs {
|
|
33
|
+
args: string[];
|
|
34
|
+
command: string;
|
|
35
|
+
}
|
|
36
|
+
/** @internal */
|
|
37
|
+
export declare function resolveTerminalPlatform(platform: NodeJS.Platform, isWSLResult: boolean): 'darwin' | 'linux' | 'windows' | 'wsl';
|
|
38
|
+
/** @internal */
|
|
39
|
+
export declare function buildMacTerminalScriptContent(cwd: string, command: string, shellPath?: string): string;
|
|
40
|
+
/** @internal */
|
|
41
|
+
export declare function buildMacTerminalSpawnArgs(scriptPath: string): SpawnArgs;
|
|
42
|
+
/** @internal */
|
|
43
|
+
export declare function buildWindowsTerminalSpawnArgs(cwd: string, command: string, powershellCmd: string): SpawnArgs;
|
|
44
|
+
/** @internal */
|
|
45
|
+
export declare function buildPowerShellFallbackSpawnArgs(cwd: string, command: string, powershellCmd: string): SpawnArgs;
|
|
46
|
+
/** @internal */
|
|
47
|
+
export declare function buildLinuxTerminalSpawnArgs(cwd: string, command: string, terminalInfo: {
|
|
48
|
+
cmd: string;
|
|
49
|
+
getArgs: (cmd: string) => string[];
|
|
50
|
+
}): SpawnArgs;
|
|
51
|
+
/** @internal */
|
|
52
|
+
export declare function buildWSLTerminalSpawnArgs(cwd: string, command: string): SpawnArgs;
|
|
30
53
|
/**
|
|
31
54
|
* Options for launching a new terminal window.
|
|
32
55
|
*/
|
|
@@ -44,6 +67,13 @@ interface TerminalLaunchOptions {
|
|
|
44
67
|
* If provided, debug messages will be passed to this function.
|
|
45
68
|
*/
|
|
46
69
|
debugLog?: (message: string) => void;
|
|
70
|
+
/**
|
|
71
|
+
* Preferred shell when launching on Windows.
|
|
72
|
+
* - default: Existing behavior (PowerShell in wt or fallback)
|
|
73
|
+
* - mintty: Prefer mintty + Git Bash, fallback to git-bash in wt, then PowerShell
|
|
74
|
+
* - git-bash: Prefer Git Bash in wt, fallback to PowerShell if unavailable
|
|
75
|
+
*/
|
|
76
|
+
windowsShellPreference?: WindowsShellPreference;
|
|
47
77
|
}
|
|
48
78
|
/**
|
|
49
79
|
* Result of a terminal launch operation.
|
|
@@ -64,9 +94,9 @@ interface TerminalLaunchResult {
|
|
|
64
94
|
* This function automatically detects the platform and uses the appropriate
|
|
65
95
|
* terminal emulator:
|
|
66
96
|
* - **Windows**: Windows Terminal (wt.exe) with PowerShell, falls back to PowerShell directly
|
|
67
|
-
* - **macOS**: Terminal.app via
|
|
97
|
+
* - **macOS**: Terminal.app via `open` + temporary `.command` script
|
|
68
98
|
* - **WSL**: Windows Terminal (wt.exe) via wsl.exe, falls back to Linux terminals
|
|
69
|
-
* - **Linux**: Tries gnome-terminal, konsole, xterm
|
|
99
|
+
* - **Linux**: Tries x-terminal-emulator, gnome-terminal, konsole, xterm in order
|
|
70
100
|
*
|
|
71
101
|
* The terminal is launched in detached mode, allowing the parent process to exit
|
|
72
102
|
* without affecting the new terminal.
|