@promptwheel/cli 0.6.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 +215 -0
- package/dist/bin/promptwheel.d.ts +17 -0
- package/dist/bin/promptwheel.d.ts.map +1 -0
- package/dist/bin/promptwheel.js +90 -0
- package/dist/bin/promptwheel.js.map +1 -0
- package/dist/commands/auto-auth.d.ts +26 -0
- package/dist/commands/auto-auth.d.ts.map +1 -0
- package/dist/commands/auto-auth.js +216 -0
- package/dist/commands/auto-auth.js.map +1 -0
- package/dist/commands/auto-ci-mode.d.ts +9 -0
- package/dist/commands/auto-ci-mode.d.ts.map +1 -0
- package/dist/commands/auto-ci-mode.js +176 -0
- package/dist/commands/auto-ci-mode.js.map +1 -0
- package/dist/commands/solo-analytics.d.ts +6 -0
- package/dist/commands/solo-analytics.d.ts.map +1 -0
- package/dist/commands/solo-analytics.js +267 -0
- package/dist/commands/solo-analytics.js.map +1 -0
- package/dist/commands/solo-auto.d.ts +6 -0
- package/dist/commands/solo-auto.d.ts.map +1 -0
- package/dist/commands/solo-auto.js +135 -0
- package/dist/commands/solo-auto.js.map +1 -0
- package/dist/commands/solo-daemon.d.ts +12 -0
- package/dist/commands/solo-daemon.d.ts.map +1 -0
- package/dist/commands/solo-daemon.js +177 -0
- package/dist/commands/solo-daemon.js.map +1 -0
- package/dist/commands/solo-exec.d.ts +6 -0
- package/dist/commands/solo-exec.d.ts.map +1 -0
- package/dist/commands/solo-exec.js +656 -0
- package/dist/commands/solo-exec.js.map +1 -0
- package/dist/commands/solo-inspect.d.ts +6 -0
- package/dist/commands/solo-inspect.d.ts.map +1 -0
- package/dist/commands/solo-inspect.js +765 -0
- package/dist/commands/solo-inspect.js.map +1 -0
- package/dist/commands/solo-lifecycle.d.ts +6 -0
- package/dist/commands/solo-lifecycle.d.ts.map +1 -0
- package/dist/commands/solo-lifecycle.js +226 -0
- package/dist/commands/solo-lifecycle.js.map +1 -0
- package/dist/commands/solo-nudge.d.ts +6 -0
- package/dist/commands/solo-nudge.d.ts.map +1 -0
- package/dist/commands/solo-nudge.js +49 -0
- package/dist/commands/solo-nudge.js.map +1 -0
- package/dist/commands/solo-qa.d.ts +6 -0
- package/dist/commands/solo-qa.d.ts.map +1 -0
- package/dist/commands/solo-qa.js +253 -0
- package/dist/commands/solo-qa.js.map +1 -0
- package/dist/commands/solo-trajectory.d.ts +6 -0
- package/dist/commands/solo-trajectory.d.ts.map +1 -0
- package/dist/commands/solo-trajectory.js +268 -0
- package/dist/commands/solo-trajectory.js.map +1 -0
- package/dist/commands/solo.d.ts +11 -0
- package/dist/commands/solo.d.ts.map +1 -0
- package/dist/commands/solo.js +52 -0
- package/dist/commands/solo.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/artifacts.d.ts +136 -0
- package/dist/lib/artifacts.d.ts.map +1 -0
- package/dist/lib/artifacts.js +147 -0
- package/dist/lib/artifacts.js.map +1 -0
- package/dist/lib/codebase-index.d.ts +5 -0
- package/dist/lib/codebase-index.d.ts.map +1 -0
- package/dist/lib/codebase-index.js +5 -0
- package/dist/lib/codebase-index.js.map +1 -0
- package/dist/lib/cycle-context.d.ts +62 -0
- package/dist/lib/cycle-context.d.ts.map +1 -0
- package/dist/lib/cycle-context.js +141 -0
- package/dist/lib/cycle-context.js.map +1 -0
- package/dist/lib/daemon-fork.d.ts +39 -0
- package/dist/lib/daemon-fork.d.ts.map +1 -0
- package/dist/lib/daemon-fork.js +164 -0
- package/dist/lib/daemon-fork.js.map +1 -0
- package/dist/lib/daemon-notifier.d.ts +29 -0
- package/dist/lib/daemon-notifier.d.ts.map +1 -0
- package/dist/lib/daemon-notifier.js +147 -0
- package/dist/lib/daemon-notifier.js.map +1 -0
- package/dist/lib/daemon.d.ts +75 -0
- package/dist/lib/daemon.d.ts.map +1 -0
- package/dist/lib/daemon.js +265 -0
- package/dist/lib/daemon.js.map +1 -0
- package/dist/lib/dedup-memory.d.ts +46 -0
- package/dist/lib/dedup-memory.d.ts.map +1 -0
- package/dist/lib/dedup-memory.js +190 -0
- package/dist/lib/dedup-memory.js.map +1 -0
- package/dist/lib/dedup.d.ts +37 -0
- package/dist/lib/dedup.d.ts.map +1 -0
- package/dist/lib/dedup.js +85 -0
- package/dist/lib/dedup.js.map +1 -0
- package/dist/lib/display-adapter-log.d.ts +26 -0
- package/dist/lib/display-adapter-log.d.ts.map +1 -0
- package/dist/lib/display-adapter-log.js +63 -0
- package/dist/lib/display-adapter-log.js.map +1 -0
- package/dist/lib/display-adapter-spinner.d.ts +28 -0
- package/dist/lib/display-adapter-spinner.d.ts.map +1 -0
- package/dist/lib/display-adapter-spinner.js +93 -0
- package/dist/lib/display-adapter-spinner.js.map +1 -0
- package/dist/lib/display-adapter-tui.d.ts +32 -0
- package/dist/lib/display-adapter-tui.d.ts.map +1 -0
- package/dist/lib/display-adapter-tui.js +77 -0
- package/dist/lib/display-adapter-tui.js.map +1 -0
- package/dist/lib/display-adapter.d.ts +40 -0
- package/dist/lib/display-adapter.d.ts.map +1 -0
- package/dist/lib/display-adapter.js +9 -0
- package/dist/lib/display-adapter.js.map +1 -0
- package/dist/lib/doctor.d.ts +45 -0
- package/dist/lib/doctor.d.ts.map +1 -0
- package/dist/lib/doctor.js +382 -0
- package/dist/lib/doctor.js.map +1 -0
- package/dist/lib/exclusion-index.d.ts +50 -0
- package/dist/lib/exclusion-index.d.ts.map +1 -0
- package/dist/lib/exclusion-index.js +249 -0
- package/dist/lib/exclusion-index.js.map +1 -0
- package/dist/lib/exec.d.ts +24 -0
- package/dist/lib/exec.d.ts.map +1 -0
- package/dist/lib/exec.js +295 -0
- package/dist/lib/exec.js.map +1 -0
- package/dist/lib/execution-backends/claude.d.ts +27 -0
- package/dist/lib/execution-backends/claude.d.ts.map +1 -0
- package/dist/lib/execution-backends/claude.js +161 -0
- package/dist/lib/execution-backends/claude.js.map +1 -0
- package/dist/lib/execution-backends/codex.d.ts +28 -0
- package/dist/lib/execution-backends/codex.d.ts.map +1 -0
- package/dist/lib/execution-backends/codex.js +216 -0
- package/dist/lib/execution-backends/codex.js.map +1 -0
- package/dist/lib/execution-backends/index.d.ts +10 -0
- package/dist/lib/execution-backends/index.d.ts.map +1 -0
- package/dist/lib/execution-backends/index.js +9 -0
- package/dist/lib/execution-backends/index.js.map +1 -0
- package/dist/lib/execution-backends/kimi.d.ts +25 -0
- package/dist/lib/execution-backends/kimi.d.ts.map +1 -0
- package/dist/lib/execution-backends/kimi.js +76 -0
- package/dist/lib/execution-backends/kimi.js.map +1 -0
- package/dist/lib/execution-backends/types.d.ts +38 -0
- package/dist/lib/execution-backends/types.d.ts.map +1 -0
- package/dist/lib/execution-backends/types.js +5 -0
- package/dist/lib/execution-backends/types.js.map +1 -0
- package/dist/lib/failure-classifier.d.ts +11 -0
- package/dist/lib/failure-classifier.d.ts.map +1 -0
- package/dist/lib/failure-classifier.js +24 -0
- package/dist/lib/failure-classifier.js.map +1 -0
- package/dist/lib/file-cooldown.d.ts +9 -0
- package/dist/lib/file-cooldown.d.ts.map +1 -0
- package/dist/lib/file-cooldown.js +75 -0
- package/dist/lib/file-cooldown.js.map +1 -0
- package/dist/lib/formulas.d.ts +52 -0
- package/dist/lib/formulas.d.ts.map +1 -0
- package/dist/lib/formulas.js +123 -0
- package/dist/lib/formulas.js.map +1 -0
- package/dist/lib/git.d.ts +9 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +60 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/goals.d.ts +59 -0
- package/dist/lib/goals.d.ts.map +1 -0
- package/dist/lib/goals.js +216 -0
- package/dist/lib/goals.js.map +1 -0
- package/dist/lib/guidelines.d.ts +32 -0
- package/dist/lib/guidelines.d.ts.map +1 -0
- package/dist/lib/guidelines.js +102 -0
- package/dist/lib/guidelines.js.map +1 -0
- package/dist/lib/learnings.d.ts +65 -0
- package/dist/lib/learnings.d.ts.map +1 -0
- package/dist/lib/learnings.js +193 -0
- package/dist/lib/learnings.js.map +1 -0
- package/dist/lib/logger.d.ts +17 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +42 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/meta-learnings.d.ts +27 -0
- package/dist/lib/meta-learnings.d.ts.map +1 -0
- package/dist/lib/meta-learnings.js +270 -0
- package/dist/lib/meta-learnings.js.map +1 -0
- package/dist/lib/metrics.d.ts +48 -0
- package/dist/lib/metrics.d.ts.map +1 -0
- package/dist/lib/metrics.js +107 -0
- package/dist/lib/metrics.js.map +1 -0
- package/dist/lib/openai-local-execution.d.ts +29 -0
- package/dist/lib/openai-local-execution.d.ts.map +1 -0
- package/dist/lib/openai-local-execution.js +282 -0
- package/dist/lib/openai-local-execution.js.map +1 -0
- package/dist/lib/project-metadata/csharp.d.ts +6 -0
- package/dist/lib/project-metadata/csharp.d.ts.map +1 -0
- package/dist/lib/project-metadata/csharp.js +19 -0
- package/dist/lib/project-metadata/csharp.js.map +1 -0
- package/dist/lib/project-metadata/elixir.d.ts +6 -0
- package/dist/lib/project-metadata/elixir.d.ts.map +1 -0
- package/dist/lib/project-metadata/elixir.js +23 -0
- package/dist/lib/project-metadata/elixir.js.map +1 -0
- package/dist/lib/project-metadata/go.d.ts +6 -0
- package/dist/lib/project-metadata/go.d.ts.map +1 -0
- package/dist/lib/project-metadata/go.js +30 -0
- package/dist/lib/project-metadata/go.js.map +1 -0
- package/dist/lib/project-metadata/index.d.ts +13 -0
- package/dist/lib/project-metadata/index.d.ts.map +1 -0
- package/dist/lib/project-metadata/index.js +111 -0
- package/dist/lib/project-metadata/index.js.map +1 -0
- package/dist/lib/project-metadata/java.d.ts +6 -0
- package/dist/lib/project-metadata/java.d.ts.map +1 -0
- package/dist/lib/project-metadata/java.js +37 -0
- package/dist/lib/project-metadata/java.js.map +1 -0
- package/dist/lib/project-metadata/node.d.ts +6 -0
- package/dist/lib/project-metadata/node.d.ts.map +1 -0
- package/dist/lib/project-metadata/node.js +135 -0
- package/dist/lib/project-metadata/node.js.map +1 -0
- package/dist/lib/project-metadata/php.d.ts +6 -0
- package/dist/lib/project-metadata/php.d.ts.map +1 -0
- package/dist/lib/project-metadata/php.js +29 -0
- package/dist/lib/project-metadata/php.js.map +1 -0
- package/dist/lib/project-metadata/python.d.ts +6 -0
- package/dist/lib/project-metadata/python.d.ts.map +1 -0
- package/dist/lib/project-metadata/python.js +79 -0
- package/dist/lib/project-metadata/python.js.map +1 -0
- package/dist/lib/project-metadata/ruby.d.ts +6 -0
- package/dist/lib/project-metadata/ruby.d.ts.map +1 -0
- package/dist/lib/project-metadata/ruby.js +38 -0
- package/dist/lib/project-metadata/ruby.js.map +1 -0
- package/dist/lib/project-metadata/rust.d.ts +6 -0
- package/dist/lib/project-metadata/rust.d.ts.map +1 -0
- package/dist/lib/project-metadata/rust.js +33 -0
- package/dist/lib/project-metadata/rust.js.map +1 -0
- package/dist/lib/project-metadata/swift.d.ts +6 -0
- package/dist/lib/project-metadata/swift.d.ts.map +1 -0
- package/dist/lib/project-metadata/swift.js +19 -0
- package/dist/lib/project-metadata/swift.js.map +1 -0
- package/dist/lib/project-metadata/types.d.ts +37 -0
- package/dist/lib/project-metadata/types.d.ts.map +1 -0
- package/dist/lib/project-metadata/types.js +5 -0
- package/dist/lib/project-metadata/types.js.map +1 -0
- package/dist/lib/proposal-review.d.ts +9 -0
- package/dist/lib/proposal-review.d.ts.map +1 -0
- package/dist/lib/proposal-review.js +9 -0
- package/dist/lib/proposal-review.js.map +1 -0
- package/dist/lib/providers/claude.d.ts +6 -0
- package/dist/lib/providers/claude.d.ts.map +1 -0
- package/dist/lib/providers/claude.js +21 -0
- package/dist/lib/providers/claude.js.map +1 -0
- package/dist/lib/providers/codex.d.ts +6 -0
- package/dist/lib/providers/codex.d.ts.map +1 -0
- package/dist/lib/providers/codex.js +26 -0
- package/dist/lib/providers/codex.js.map +1 -0
- package/dist/lib/providers/index.d.ts +22 -0
- package/dist/lib/providers/index.d.ts.map +1 -0
- package/dist/lib/providers/index.js +39 -0
- package/dist/lib/providers/index.js.map +1 -0
- package/dist/lib/providers/kimi.d.ts +6 -0
- package/dist/lib/providers/kimi.d.ts.map +1 -0
- package/dist/lib/providers/kimi.js +22 -0
- package/dist/lib/providers/kimi.js.map +1 -0
- package/dist/lib/providers/openai-local.d.ts +8 -0
- package/dist/lib/providers/openai-local.d.ts.map +1 -0
- package/dist/lib/providers/openai-local.js +30 -0
- package/dist/lib/providers/openai-local.js.map +1 -0
- package/dist/lib/providers/types.d.ts +37 -0
- package/dist/lib/providers/types.d.ts.map +1 -0
- package/dist/lib/providers/types.js +5 -0
- package/dist/lib/providers/types.js.map +1 -0
- package/dist/lib/qa-stats.d.ts +113 -0
- package/dist/lib/qa-stats.d.ts.map +1 -0
- package/dist/lib/qa-stats.js +311 -0
- package/dist/lib/qa-stats.js.map +1 -0
- package/dist/lib/retention.d.ts +125 -0
- package/dist/lib/retention.d.ts.map +1 -0
- package/dist/lib/retention.js +767 -0
- package/dist/lib/retention.js.map +1 -0
- package/dist/lib/run-history.d.ts +52 -0
- package/dist/lib/run-history.d.ts.map +1 -0
- package/dist/lib/run-history.js +116 -0
- package/dist/lib/run-history.js.map +1 -0
- package/dist/lib/run-state.d.ts +129 -0
- package/dist/lib/run-state.d.ts.map +1 -0
- package/dist/lib/run-state.js +312 -0
- package/dist/lib/run-state.js.map +1 -0
- package/dist/lib/scope.d.ts +8 -0
- package/dist/lib/scope.d.ts.map +1 -0
- package/dist/lib/scope.js +8 -0
- package/dist/lib/scope.js.map +1 -0
- package/dist/lib/scout-prompt-builder.d.ts +22 -0
- package/dist/lib/scout-prompt-builder.d.ts.map +1 -0
- package/dist/lib/scout-prompt-builder.js +97 -0
- package/dist/lib/scout-prompt-builder.js.map +1 -0
- package/dist/lib/sectors.d.ts +21 -0
- package/dist/lib/sectors.d.ts.map +1 -0
- package/dist/lib/sectors.js +96 -0
- package/dist/lib/sectors.js.map +1 -0
- package/dist/lib/selection.d.ts +35 -0
- package/dist/lib/selection.d.ts.map +1 -0
- package/dist/lib/selection.js +110 -0
- package/dist/lib/selection.js.map +1 -0
- package/dist/lib/session-report.d.ts +26 -0
- package/dist/lib/session-report.d.ts.map +1 -0
- package/dist/lib/session-report.js +143 -0
- package/dist/lib/session-report.js.map +1 -0
- package/dist/lib/solo-auto-between-cycles.d.ts +10 -0
- package/dist/lib/solo-auto-between-cycles.d.ts.map +1 -0
- package/dist/lib/solo-auto-between-cycles.js +577 -0
- package/dist/lib/solo-auto-between-cycles.js.map +1 -0
- package/dist/lib/solo-auto-execute.d.ts +22 -0
- package/dist/lib/solo-auto-execute.d.ts.map +1 -0
- package/dist/lib/solo-auto-execute.js +530 -0
- package/dist/lib/solo-auto-execute.js.map +1 -0
- package/dist/lib/solo-auto-filter.d.ts +14 -0
- package/dist/lib/solo-auto-filter.d.ts.map +1 -0
- package/dist/lib/solo-auto-filter.js +311 -0
- package/dist/lib/solo-auto-filter.js.map +1 -0
- package/dist/lib/solo-auto-finalize.d.ts +6 -0
- package/dist/lib/solo-auto-finalize.d.ts.map +1 -0
- package/dist/lib/solo-auto-finalize.js +242 -0
- package/dist/lib/solo-auto-finalize.js.map +1 -0
- package/dist/lib/solo-auto-init-qa.d.ts +23 -0
- package/dist/lib/solo-auto-init-qa.d.ts.map +1 -0
- package/dist/lib/solo-auto-init-qa.js +183 -0
- package/dist/lib/solo-auto-init-qa.js.map +1 -0
- package/dist/lib/solo-auto-planning.d.ts +40 -0
- package/dist/lib/solo-auto-planning.d.ts.map +1 -0
- package/dist/lib/solo-auto-planning.js +171 -0
- package/dist/lib/solo-auto-planning.js.map +1 -0
- package/dist/lib/solo-auto-scout.d.ts +18 -0
- package/dist/lib/solo-auto-scout.d.ts.map +1 -0
- package/dist/lib/solo-auto-scout.js +269 -0
- package/dist/lib/solo-auto-scout.js.map +1 -0
- package/dist/lib/solo-auto-state.d.ts +20 -0
- package/dist/lib/solo-auto-state.d.ts.map +1 -0
- package/dist/lib/solo-auto-state.js +859 -0
- package/dist/lib/solo-auto-state.js.map +1 -0
- package/dist/lib/solo-auto-types.d.ts +197 -0
- package/dist/lib/solo-auto-types.d.ts.map +1 -0
- package/dist/lib/solo-auto-types.js +11 -0
- package/dist/lib/solo-auto-types.js.map +1 -0
- package/dist/lib/solo-auto-utils.d.ts +23 -0
- package/dist/lib/solo-auto-utils.d.ts.map +1 -0
- package/dist/lib/solo-auto-utils.js +53 -0
- package/dist/lib/solo-auto-utils.js.map +1 -0
- package/dist/lib/solo-auto.d.ts +25 -0
- package/dist/lib/solo-auto.d.ts.map +1 -0
- package/dist/lib/solo-auto.js +345 -0
- package/dist/lib/solo-auto.js.map +1 -0
- package/dist/lib/solo-ci.d.ts +84 -0
- package/dist/lib/solo-ci.d.ts.map +1 -0
- package/dist/lib/solo-ci.js +306 -0
- package/dist/lib/solo-ci.js.map +1 -0
- package/dist/lib/solo-config.d.ts +242 -0
- package/dist/lib/solo-config.d.ts.map +1 -0
- package/dist/lib/solo-config.js +354 -0
- package/dist/lib/solo-config.js.map +1 -0
- package/dist/lib/solo-cycle-formula.d.ts +36 -0
- package/dist/lib/solo-cycle-formula.d.ts.map +1 -0
- package/dist/lib/solo-cycle-formula.js +90 -0
- package/dist/lib/solo-cycle-formula.js.map +1 -0
- package/dist/lib/solo-git.d.ts +87 -0
- package/dist/lib/solo-git.d.ts.map +1 -0
- package/dist/lib/solo-git.js +365 -0
- package/dist/lib/solo-git.js.map +1 -0
- package/dist/lib/solo-hints.d.ts +32 -0
- package/dist/lib/solo-hints.d.ts.map +1 -0
- package/dist/lib/solo-hints.js +98 -0
- package/dist/lib/solo-hints.js.map +1 -0
- package/dist/lib/solo-prompt-builder.d.ts +12 -0
- package/dist/lib/solo-prompt-builder.d.ts.map +1 -0
- package/dist/lib/solo-prompt-builder.js +53 -0
- package/dist/lib/solo-prompt-builder.js.map +1 -0
- package/dist/lib/solo-qa-retry.d.ts +43 -0
- package/dist/lib/solo-qa-retry.d.ts.map +1 -0
- package/dist/lib/solo-qa-retry.js +125 -0
- package/dist/lib/solo-qa-retry.js.map +1 -0
- package/dist/lib/solo-remote.d.ts +14 -0
- package/dist/lib/solo-remote.d.ts.map +1 -0
- package/dist/lib/solo-remote.js +48 -0
- package/dist/lib/solo-remote.js.map +1 -0
- package/dist/lib/solo-session-summary.d.ts +52 -0
- package/dist/lib/solo-session-summary.d.ts.map +1 -0
- package/dist/lib/solo-session-summary.js +188 -0
- package/dist/lib/solo-session-summary.js.map +1 -0
- package/dist/lib/solo-stdin.d.ts +33 -0
- package/dist/lib/solo-stdin.d.ts.map +1 -0
- package/dist/lib/solo-stdin.js +299 -0
- package/dist/lib/solo-stdin.js.map +1 -0
- package/dist/lib/solo-ticket-qa.d.ts +19 -0
- package/dist/lib/solo-ticket-qa.d.ts.map +1 -0
- package/dist/lib/solo-ticket-qa.js +68 -0
- package/dist/lib/solo-ticket-qa.js.map +1 -0
- package/dist/lib/solo-ticket-types.d.ts +146 -0
- package/dist/lib/solo-ticket-types.d.ts.map +1 -0
- package/dist/lib/solo-ticket-types.js +26 -0
- package/dist/lib/solo-ticket-types.js.map +1 -0
- package/dist/lib/solo-ticket.d.ts +12 -0
- package/dist/lib/solo-ticket.d.ts.map +1 -0
- package/dist/lib/solo-ticket.js +192 -0
- package/dist/lib/solo-ticket.js.map +1 -0
- package/dist/lib/solo-utils.d.ts +130 -0
- package/dist/lib/solo-utils.d.ts.map +1 -0
- package/dist/lib/solo-utils.js +277 -0
- package/dist/lib/solo-utils.js.map +1 -0
- package/dist/lib/spindle/failure-patterns.d.ts +15 -0
- package/dist/lib/spindle/failure-patterns.d.ts.map +1 -0
- package/dist/lib/spindle/failure-patterns.js +22 -0
- package/dist/lib/spindle/failure-patterns.js.map +1 -0
- package/dist/lib/spindle/format.d.ts +9 -0
- package/dist/lib/spindle/format.d.ts.map +1 -0
- package/dist/lib/spindle/format.js +37 -0
- package/dist/lib/spindle/format.js.map +1 -0
- package/dist/lib/spindle/index.d.ts +33 -0
- package/dist/lib/spindle/index.d.ts.map +1 -0
- package/dist/lib/spindle/index.js +231 -0
- package/dist/lib/spindle/index.js.map +1 -0
- package/dist/lib/spindle/oscillation.d.ts +17 -0
- package/dist/lib/spindle/oscillation.d.ts.map +1 -0
- package/dist/lib/spindle/oscillation.js +96 -0
- package/dist/lib/spindle/oscillation.js.map +1 -0
- package/dist/lib/spindle/repetition.d.ts +16 -0
- package/dist/lib/spindle/repetition.d.ts.map +1 -0
- package/dist/lib/spindle/repetition.js +52 -0
- package/dist/lib/spindle/repetition.js.map +1 -0
- package/dist/lib/spindle/similarity.d.ts +14 -0
- package/dist/lib/spindle/similarity.d.ts.map +1 -0
- package/dist/lib/spindle/similarity.js +58 -0
- package/dist/lib/spindle/similarity.js.map +1 -0
- package/dist/lib/spindle/types.d.ts +97 -0
- package/dist/lib/spindle/types.d.ts.map +1 -0
- package/dist/lib/spindle/types.js +46 -0
- package/dist/lib/spindle/types.js.map +1 -0
- package/dist/lib/spinner.d.ts +41 -0
- package/dist/lib/spinner.d.ts.map +1 -0
- package/dist/lib/spinner.js +186 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/taste-profile.d.ts +26 -0
- package/dist/lib/taste-profile.d.ts.map +1 -0
- package/dist/lib/taste-profile.js +121 -0
- package/dist/lib/taste-profile.js.map +1 -0
- package/dist/lib/ticket-steps/index.d.ts +14 -0
- package/dist/lib/ticket-steps/index.d.ts.map +1 -0
- package/dist/lib/ticket-steps/index.js +13 -0
- package/dist/lib/ticket-steps/index.js.map +1 -0
- package/dist/lib/ticket-steps/step-agent.d.ts +6 -0
- package/dist/lib/ticket-steps/step-agent.d.ts.map +1 -0
- package/dist/lib/ticket-steps/step-agent.js +122 -0
- package/dist/lib/ticket-steps/step-agent.js.map +1 -0
- package/dist/lib/ticket-steps/step-cleanup.d.ts +6 -0
- package/dist/lib/ticket-steps/step-cleanup.d.ts.map +1 -0
- package/dist/lib/ticket-steps/step-cleanup.js +11 -0
- package/dist/lib/ticket-steps/step-cleanup.js.map +1 -0
- package/dist/lib/ticket-steps/step-commit.d.ts +6 -0
- package/dist/lib/ticket-steps/step-commit.d.ts.map +1 -0
- package/dist/lib/ticket-steps/step-commit.js +31 -0
- package/dist/lib/ticket-steps/step-commit.js.map +1 -0
- package/dist/lib/ticket-steps/step-pr.d.ts +6 -0
- package/dist/lib/ticket-steps/step-pr.d.ts.map +1 -0
- package/dist/lib/ticket-steps/step-pr.js +38 -0
- package/dist/lib/ticket-steps/step-pr.js.map +1 -0
- package/dist/lib/ticket-steps/step-push.d.ts +6 -0
- package/dist/lib/ticket-steps/step-push.d.ts.map +1 -0
- package/dist/lib/ticket-steps/step-push.js +35 -0
- package/dist/lib/ticket-steps/step-push.js.map +1 -0
- package/dist/lib/ticket-steps/step-qa.d.ts +6 -0
- package/dist/lib/ticket-steps/step-qa.d.ts.map +1 -0
- package/dist/lib/ticket-steps/step-qa.js +300 -0
- package/dist/lib/ticket-steps/step-qa.js.map +1 -0
- package/dist/lib/ticket-steps/step-scope.d.ts +6 -0
- package/dist/lib/ticket-steps/step-scope.d.ts.map +1 -0
- package/dist/lib/ticket-steps/step-scope.js +121 -0
- package/dist/lib/ticket-steps/step-scope.js.map +1 -0
- package/dist/lib/ticket-steps/step-spindle.d.ts +9 -0
- package/dist/lib/ticket-steps/step-spindle.d.ts.map +1 -0
- package/dist/lib/ticket-steps/step-spindle.js +160 -0
- package/dist/lib/ticket-steps/step-spindle.js.map +1 -0
- package/dist/lib/ticket-steps/step-worktree.d.ts +6 -0
- package/dist/lib/ticket-steps/step-worktree.d.ts.map +1 -0
- package/dist/lib/ticket-steps/step-worktree.js +157 -0
- package/dist/lib/ticket-steps/step-worktree.js.map +1 -0
- package/dist/lib/ticket-steps/types.d.ts +70 -0
- package/dist/lib/ticket-steps/types.d.ts.map +1 -0
- package/dist/lib/ticket-steps/types.js +8 -0
- package/dist/lib/ticket-steps/types.js.map +1 -0
- package/dist/lib/tool-command-map.d.ts +11 -0
- package/dist/lib/tool-command-map.d.ts.map +1 -0
- package/dist/lib/tool-command-map.js +24 -0
- package/dist/lib/tool-command-map.js.map +1 -0
- package/dist/lib/trajectory-generate.d.ts +24 -0
- package/dist/lib/trajectory-generate.d.ts.map +1 -0
- package/dist/lib/trajectory-generate.js +163 -0
- package/dist/lib/trajectory-generate.js.map +1 -0
- package/dist/lib/trajectory.d.ts +20 -0
- package/dist/lib/trajectory.d.ts.map +1 -0
- package/dist/lib/trajectory.js +104 -0
- package/dist/lib/trajectory.js.map +1 -0
- package/dist/lib/trigger-config.d.ts +12 -0
- package/dist/lib/trigger-config.d.ts.map +1 -0
- package/dist/lib/trigger-config.js +37 -0
- package/dist/lib/trigger-config.js.map +1 -0
- package/dist/lib/update-check.d.ts +28 -0
- package/dist/lib/update-check.d.ts.map +1 -0
- package/dist/lib/update-check.js +178 -0
- package/dist/lib/update-check.js.map +1 -0
- package/dist/lib/wave-scheduling.d.ts +18 -0
- package/dist/lib/wave-scheduling.d.ts.map +1 -0
- package/dist/lib/wave-scheduling.js +29 -0
- package/dist/lib/wave-scheduling.js.map +1 -0
- package/dist/tui/app.d.ts +17 -0
- package/dist/tui/app.d.ts.map +1 -0
- package/dist/tui/app.js +139 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/index.d.ts +10 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +9 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/poller.d.ts +42 -0
- package/dist/tui/poller.d.ts.map +1 -0
- package/dist/tui/poller.js +62 -0
- package/dist/tui/poller.js.map +1 -0
- package/dist/tui/screens/auto.d.ts +85 -0
- package/dist/tui/screens/auto.d.ts.map +1 -0
- package/dist/tui/screens/auto.js +440 -0
- package/dist/tui/screens/auto.js.map +1 -0
- package/dist/tui/screens/overview.d.ts +9 -0
- package/dist/tui/screens/overview.d.ts.map +1 -0
- package/dist/tui/screens/overview.js +189 -0
- package/dist/tui/screens/overview.js.map +1 -0
- package/dist/tui/state.d.ts +93 -0
- package/dist/tui/state.d.ts.map +1 -0
- package/dist/tui/state.js +169 -0
- package/dist/tui/state.js.map +1 -0
- package/dist/tui/ticket-output-buffer.d.ts +23 -0
- package/dist/tui/ticket-output-buffer.d.ts.map +1 -0
- package/dist/tui/ticket-output-buffer.js +60 -0
- package/dist/tui/ticket-output-buffer.js.map +1 -0
- package/dist/tui/types.d.ts +18 -0
- package/dist/tui/types.d.ts.map +1 -0
- package/dist/tui/types.js +5 -0
- package/dist/tui/types.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive Console — Claude-like input bar at the bottom.
|
|
3
|
+
*
|
|
4
|
+
* Uses ANSI escape codes to maintain a persistent input line at the
|
|
5
|
+
* bottom of the terminal while output scrolls above it.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Input bar always visible at bottom
|
|
9
|
+
* - Output scrolls above without interrupting typing
|
|
10
|
+
* - Proper line editing (backspace, arrows)
|
|
11
|
+
* - Special commands (?, s, p, q)
|
|
12
|
+
*/
|
|
13
|
+
import chalk from 'chalk';
|
|
14
|
+
import { addHint, readHints, clearHints } from './solo-hints.js';
|
|
15
|
+
// ANSI escape sequences
|
|
16
|
+
const ESC = '\x1b';
|
|
17
|
+
const CSI = ESC + '[';
|
|
18
|
+
const SAVE_CURSOR = CSI + 's';
|
|
19
|
+
const RESTORE_CURSOR = CSI + 'u';
|
|
20
|
+
const CLEAR_LINE = CSI + '2K';
|
|
21
|
+
const CURSOR_TO = (row, col) => CSI + row + ';' + col + 'H';
|
|
22
|
+
/**
|
|
23
|
+
* Start the interactive console with a persistent input bar.
|
|
24
|
+
*/
|
|
25
|
+
export function startInteractiveConsole(opts) {
|
|
26
|
+
const { repoRoot, onQuit, onStatus } = opts;
|
|
27
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
28
|
+
return startPipedInput(repoRoot);
|
|
29
|
+
}
|
|
30
|
+
let isPaused = false;
|
|
31
|
+
let stopped = false;
|
|
32
|
+
let quitRequested = false;
|
|
33
|
+
let inputBuffer = '';
|
|
34
|
+
let cursorPos = 0;
|
|
35
|
+
// Get terminal dimensions
|
|
36
|
+
const getHeight = () => process.stdout.rows || 24;
|
|
37
|
+
// Set raw mode for character-by-character input
|
|
38
|
+
process.stdin.setRawMode(true);
|
|
39
|
+
process.stdin.resume();
|
|
40
|
+
process.stdin.setEncoding('utf8');
|
|
41
|
+
const inputRow = () => getHeight(); // Bottom line
|
|
42
|
+
const promptStr = chalk.cyan('☀') + ' ';
|
|
43
|
+
const promptLen = 2; // "☀ "
|
|
44
|
+
// Draw the input bar
|
|
45
|
+
function drawInputBar() {
|
|
46
|
+
if (stopped || isPaused)
|
|
47
|
+
return;
|
|
48
|
+
const row = inputRow();
|
|
49
|
+
// Move to input row, clear it, draw prompt and current input
|
|
50
|
+
process.stdout.write(SAVE_CURSOR +
|
|
51
|
+
CURSOR_TO(row, 1) +
|
|
52
|
+
CLEAR_LINE +
|
|
53
|
+
promptStr +
|
|
54
|
+
inputBuffer +
|
|
55
|
+
CURSOR_TO(row, promptLen + 1 + cursorPos) +
|
|
56
|
+
RESTORE_CURSOR);
|
|
57
|
+
}
|
|
58
|
+
// Write output above the input bar
|
|
59
|
+
function log(message) {
|
|
60
|
+
if (stopped) {
|
|
61
|
+
console.log(message);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const row = inputRow();
|
|
65
|
+
// Save cursor, move to row above input, print, restore
|
|
66
|
+
process.stdout.write(SAVE_CURSOR +
|
|
67
|
+
CURSOR_TO(row - 1, 1) + // Line above input bar
|
|
68
|
+
'\n' + // Scroll everything up
|
|
69
|
+
CURSOR_TO(row - 1, 1) + // Back to that line
|
|
70
|
+
CLEAR_LINE +
|
|
71
|
+
message +
|
|
72
|
+
RESTORE_CURSOR);
|
|
73
|
+
drawInputBar();
|
|
74
|
+
}
|
|
75
|
+
// Process a completed line
|
|
76
|
+
function processLine(line) {
|
|
77
|
+
const text = line.trim();
|
|
78
|
+
if (!text)
|
|
79
|
+
return;
|
|
80
|
+
const lower = text.toLowerCase();
|
|
81
|
+
// Slash commands
|
|
82
|
+
if (lower === '/help' || lower === '/') {
|
|
83
|
+
log(chalk.cyan(' ☀ Commands:'));
|
|
84
|
+
log(chalk.gray(' /help Show this help'));
|
|
85
|
+
log(chalk.gray(' /status Show session status'));
|
|
86
|
+
log(chalk.gray(' /pending Show pending guidance'));
|
|
87
|
+
log(chalk.gray(' /clear Clear pending guidance'));
|
|
88
|
+
log(chalk.gray(' /quit Stop gracefully'));
|
|
89
|
+
log(chalk.gray(' <text> Add guidance for next scout'));
|
|
90
|
+
}
|
|
91
|
+
else if (lower === '/status' || lower === '/s') {
|
|
92
|
+
if (onStatus) {
|
|
93
|
+
onStatus();
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
log(chalk.gray(' Status not available'));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else if (lower === '/pending' || lower === '/p') {
|
|
100
|
+
const hints = readHints(repoRoot).filter(h => !h.consumed);
|
|
101
|
+
if (hints.length === 0) {
|
|
102
|
+
log(chalk.gray(' No pending guidance'));
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
log(chalk.cyan(` ☀ Pending (${hints.length}):`));
|
|
106
|
+
for (const h of hints) {
|
|
107
|
+
log(chalk.gray(` • ${h.text}`));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else if (lower === '/clear' || lower === '/c') {
|
|
112
|
+
clearHints(repoRoot);
|
|
113
|
+
log(chalk.green(' ✓ Cleared pending guidance'));
|
|
114
|
+
}
|
|
115
|
+
else if (lower === '/quit' || lower === '/q' || lower === '/exit') {
|
|
116
|
+
log(chalk.yellow(' ⏹ Stopping after current operation...'));
|
|
117
|
+
if (onQuit)
|
|
118
|
+
onQuit();
|
|
119
|
+
}
|
|
120
|
+
else if (lower.startsWith('/')) {
|
|
121
|
+
log(chalk.yellow(` Unknown command: ${text}`));
|
|
122
|
+
log(chalk.gray(' Type /help for available commands'));
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Add as guidance
|
|
126
|
+
const hint = addHint(repoRoot, text);
|
|
127
|
+
log(chalk.green(' ✓ ') + chalk.gray(`"${hint.text}"`));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Handle keypress
|
|
131
|
+
function onData(key) {
|
|
132
|
+
if (stopped || isPaused)
|
|
133
|
+
return;
|
|
134
|
+
// Ctrl+C — first graceful, second force-quit
|
|
135
|
+
if (key === '\x03') {
|
|
136
|
+
if (quitRequested) {
|
|
137
|
+
// Second Ctrl+C — force quit immediately
|
|
138
|
+
stop();
|
|
139
|
+
console.log(chalk.red('\nForce quit. Exiting immediately.'));
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
quitRequested = true;
|
|
143
|
+
if (onQuit) {
|
|
144
|
+
log(chalk.yellow(' ⏹ Stopping after current operation... (Ctrl+C again to force quit)'));
|
|
145
|
+
onQuit();
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
stop();
|
|
149
|
+
process.exit(0);
|
|
150
|
+
}
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Ctrl+D
|
|
154
|
+
if (key === '\x04') {
|
|
155
|
+
if (onQuit) {
|
|
156
|
+
log(chalk.yellow(' ⏹ Stopping...'));
|
|
157
|
+
onQuit();
|
|
158
|
+
}
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
// Enter
|
|
162
|
+
if (key === '\r' || key === '\n') {
|
|
163
|
+
const line = inputBuffer;
|
|
164
|
+
inputBuffer = '';
|
|
165
|
+
cursorPos = 0;
|
|
166
|
+
drawInputBar();
|
|
167
|
+
processLine(line);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
// Backspace
|
|
171
|
+
if (key === '\x7f' || key === '\b') {
|
|
172
|
+
if (cursorPos > 0) {
|
|
173
|
+
inputBuffer = inputBuffer.slice(0, cursorPos - 1) + inputBuffer.slice(cursorPos);
|
|
174
|
+
cursorPos--;
|
|
175
|
+
drawInputBar();
|
|
176
|
+
}
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
// Escape sequences (arrows, etc.)
|
|
180
|
+
if (key.startsWith(ESC)) {
|
|
181
|
+
if (key === CSI + 'D') { // Left arrow
|
|
182
|
+
if (cursorPos > 0)
|
|
183
|
+
cursorPos--;
|
|
184
|
+
drawInputBar();
|
|
185
|
+
}
|
|
186
|
+
else if (key === CSI + 'C') { // Right arrow
|
|
187
|
+
if (cursorPos < inputBuffer.length)
|
|
188
|
+
cursorPos++;
|
|
189
|
+
drawInputBar();
|
|
190
|
+
}
|
|
191
|
+
else if (key === CSI + 'H' || key === '\x01') { // Home or Ctrl+A
|
|
192
|
+
cursorPos = 0;
|
|
193
|
+
drawInputBar();
|
|
194
|
+
}
|
|
195
|
+
else if (key === CSI + 'F' || key === '\x05') { // End or Ctrl+E
|
|
196
|
+
cursorPos = inputBuffer.length;
|
|
197
|
+
drawInputBar();
|
|
198
|
+
}
|
|
199
|
+
// Ignore other escape sequences
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
// Ctrl+A (start of line)
|
|
203
|
+
if (key === '\x01') {
|
|
204
|
+
cursorPos = 0;
|
|
205
|
+
drawInputBar();
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
// Ctrl+E (end of line)
|
|
209
|
+
if (key === '\x05') {
|
|
210
|
+
cursorPos = inputBuffer.length;
|
|
211
|
+
drawInputBar();
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
// Ctrl+U (clear line)
|
|
215
|
+
if (key === '\x15') {
|
|
216
|
+
inputBuffer = '';
|
|
217
|
+
cursorPos = 0;
|
|
218
|
+
drawInputBar();
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
// Regular character
|
|
222
|
+
if (key.length === 1 && key >= ' ') {
|
|
223
|
+
inputBuffer = inputBuffer.slice(0, cursorPos) + key + inputBuffer.slice(cursorPos);
|
|
224
|
+
cursorPos++;
|
|
225
|
+
drawInputBar();
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
process.stdin.on('data', onData);
|
|
229
|
+
// Initial draw
|
|
230
|
+
setTimeout(() => {
|
|
231
|
+
if (!stopped) {
|
|
232
|
+
log(chalk.gray(' ☀ Type anytime to guide the session (/help for commands)'));
|
|
233
|
+
drawInputBar();
|
|
234
|
+
}
|
|
235
|
+
}, 1000);
|
|
236
|
+
function stop() {
|
|
237
|
+
if (stopped)
|
|
238
|
+
return;
|
|
239
|
+
stopped = true;
|
|
240
|
+
process.stdin.removeListener('data', onData);
|
|
241
|
+
try {
|
|
242
|
+
process.stdin.setRawMode(false);
|
|
243
|
+
}
|
|
244
|
+
catch { /* ignore */ }
|
|
245
|
+
// Clear input bar area
|
|
246
|
+
process.stdout.write(CURSOR_TO(inputRow(), 1) + CLEAR_LINE);
|
|
247
|
+
}
|
|
248
|
+
return {
|
|
249
|
+
stop,
|
|
250
|
+
pause: () => {
|
|
251
|
+
isPaused = true;
|
|
252
|
+
try {
|
|
253
|
+
process.stdin.setRawMode(false);
|
|
254
|
+
}
|
|
255
|
+
catch { /* ignore */ }
|
|
256
|
+
},
|
|
257
|
+
resume: () => {
|
|
258
|
+
isPaused = false;
|
|
259
|
+
try {
|
|
260
|
+
process.stdin.setRawMode(true);
|
|
261
|
+
}
|
|
262
|
+
catch { /* ignore */ }
|
|
263
|
+
drawInputBar();
|
|
264
|
+
},
|
|
265
|
+
log,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Simple piped input handler for non-TTY environments.
|
|
270
|
+
*/
|
|
271
|
+
function startPipedInput(repoRoot) {
|
|
272
|
+
const onData = (data) => {
|
|
273
|
+
const lines = data.toString().split('\n');
|
|
274
|
+
for (const line of lines) {
|
|
275
|
+
const text = line.trim();
|
|
276
|
+
if (!text)
|
|
277
|
+
continue;
|
|
278
|
+
addHint(repoRoot, text);
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
process.stdin.on('data', onData);
|
|
282
|
+
return {
|
|
283
|
+
stop: () => {
|
|
284
|
+
process.stdin.removeListener('data', onData);
|
|
285
|
+
},
|
|
286
|
+
pause: () => { },
|
|
287
|
+
resume: () => { },
|
|
288
|
+
log: (message) => console.log(message),
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Legacy API — starts stdin listener and returns cleanup function.
|
|
293
|
+
* @deprecated Use startInteractiveConsole instead
|
|
294
|
+
*/
|
|
295
|
+
export function startStdinListener(repoRoot) {
|
|
296
|
+
const console = startInteractiveConsole({ repoRoot });
|
|
297
|
+
return () => console.stop();
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=solo-stdin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solo-stdin.js","sourceRoot":"","sources":["../../src/lib/solo-stdin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QA baseline capture — extracted from solo-ticket.ts.
|
|
3
|
+
* Captures pre-existing QA pass/fail state before agent execution.
|
|
4
|
+
*/
|
|
5
|
+
import type { SoloConfig } from './solo-config.js';
|
|
6
|
+
export interface BaselineResult {
|
|
7
|
+
passed: boolean;
|
|
8
|
+
output?: string;
|
|
9
|
+
}
|
|
10
|
+
/** Convert full baseline results to simple pass/fail map */
|
|
11
|
+
export declare function baselineToPassFail(baseline: Map<string, BaselineResult>): Map<string, boolean>;
|
|
12
|
+
/**
|
|
13
|
+
* Run QA commands to capture baseline pass/fail state.
|
|
14
|
+
* Returns a map of command name → result (passed + error output).
|
|
15
|
+
* Lightweight — no DB records, no artifacts, just exit codes.
|
|
16
|
+
* Async to avoid blocking the event loop during long QA runs.
|
|
17
|
+
*/
|
|
18
|
+
export declare function captureQaBaseline(cwd: string, config: SoloConfig, onProgress?: (msg: string) => void, projectRoot?: string): Promise<Map<string, BaselineResult>>;
|
|
19
|
+
//# sourceMappingURL=solo-ticket-qa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solo-ticket-qa.d.ts","sourceRoot":"","sources":["../../src/lib/solo-ticket-qa.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAM9F;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,UAAU,EAClB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAClC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CA4CtC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QA baseline capture — extracted from solo-ticket.ts.
|
|
3
|
+
* Captures pre-existing QA pass/fail state before agent execution.
|
|
4
|
+
*/
|
|
5
|
+
import * as path from 'node:path';
|
|
6
|
+
import { execFile } from 'node:child_process';
|
|
7
|
+
import { normalizeQaConfig } from './solo-utils.js';
|
|
8
|
+
import { recordBaselineResult } from './qa-stats.js';
|
|
9
|
+
/** Convert full baseline results to simple pass/fail map */
|
|
10
|
+
export function baselineToPassFail(baseline) {
|
|
11
|
+
const result = new Map();
|
|
12
|
+
for (const [name, r] of baseline) {
|
|
13
|
+
result.set(name, r.passed);
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Run QA commands to capture baseline pass/fail state.
|
|
19
|
+
* Returns a map of command name → result (passed + error output).
|
|
20
|
+
* Lightweight — no DB records, no artifacts, just exit codes.
|
|
21
|
+
* Async to avoid blocking the event loop during long QA runs.
|
|
22
|
+
*/
|
|
23
|
+
export async function captureQaBaseline(cwd, config, onProgress, projectRoot) {
|
|
24
|
+
const baseline = new Map();
|
|
25
|
+
const qaConfig = normalizeQaConfig(config);
|
|
26
|
+
for (const cmd of qaConfig.commands) {
|
|
27
|
+
onProgress?.(` baseline: running ${cmd.name}...`);
|
|
28
|
+
const cmdCwd = cmd.cwd && cmd.cwd !== '.'
|
|
29
|
+
? path.resolve(cwd, cmd.cwd)
|
|
30
|
+
: cwd;
|
|
31
|
+
try {
|
|
32
|
+
await new Promise((resolve, reject) => {
|
|
33
|
+
execFile('sh', ['-c', cmd.cmd], {
|
|
34
|
+
cwd: cmdCwd,
|
|
35
|
+
timeout: cmd.timeoutMs ?? 120_000,
|
|
36
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
37
|
+
}, (err) => err ? reject(err) : resolve());
|
|
38
|
+
});
|
|
39
|
+
baseline.set(cmd.name, { passed: true });
|
|
40
|
+
onProgress?.(` baseline: ${cmd.name} ✓`);
|
|
41
|
+
if (projectRoot)
|
|
42
|
+
recordBaselineResult(projectRoot, cmd.name, true);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
// Capture error output for the fix prompt
|
|
46
|
+
let output = '';
|
|
47
|
+
if (err && typeof err === 'object' && 'stderr' in err) {
|
|
48
|
+
output = String(err.stderr || '');
|
|
49
|
+
}
|
|
50
|
+
if (!output && err && typeof err === 'object' && 'stdout' in err) {
|
|
51
|
+
output = String(err.stdout || '');
|
|
52
|
+
}
|
|
53
|
+
if (!output && err instanceof Error) {
|
|
54
|
+
output = err.message;
|
|
55
|
+
}
|
|
56
|
+
// Truncate to avoid huge prompts
|
|
57
|
+
if (output.length > 2000) {
|
|
58
|
+
output = output.slice(-2000) + '\n... (truncated)';
|
|
59
|
+
}
|
|
60
|
+
baseline.set(cmd.name, { passed: false, output });
|
|
61
|
+
onProgress?.(` baseline: ${cmd.name} ✗ (pre-existing failure)`);
|
|
62
|
+
if (projectRoot)
|
|
63
|
+
recordBaselineResult(projectRoot, cmd.name, false);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return baseline;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=solo-ticket-qa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solo-ticket-qa.js","sourceRoot":"","sources":["../../src/lib/solo-ticket-qa.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types and constants for solo ticket execution
|
|
3
|
+
*/
|
|
4
|
+
import type { tickets } from '@promptwheel/core/repos';
|
|
5
|
+
import type { StepKind } from '@promptwheel/core/repos';
|
|
6
|
+
import type { TraceAnalysis } from '@promptwheel/core/trace/shared';
|
|
7
|
+
import type { SoloConfig } from './solo-config.js';
|
|
8
|
+
import type { getAdapter } from './solo-config.js';
|
|
9
|
+
import type { ExecutionBackend } from './execution-backends/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Canonical failure reasons for run results
|
|
12
|
+
*/
|
|
13
|
+
export type FailureReason = 'agent_error' | 'scope_violation' | 'spindle_abort' | 'qa_failed' | 'git_error' | 'pr_error' | 'timeout' | 'cancelled';
|
|
14
|
+
/**
|
|
15
|
+
* Outcome type for successful completions that don't involve code changes
|
|
16
|
+
*/
|
|
17
|
+
export type CompletionOutcome = 'no_changes_needed';
|
|
18
|
+
/**
|
|
19
|
+
* Spindle abort details for diagnostics
|
|
20
|
+
*/
|
|
21
|
+
export interface SpindleAbortDetails {
|
|
22
|
+
trigger: 'oscillation' | 'spinning' | 'stalling' | 'repetition' | 'token_budget' | 'qa_ping_pong' | 'command_failure';
|
|
23
|
+
confidence: number;
|
|
24
|
+
estimatedTokens: number;
|
|
25
|
+
iteration: number;
|
|
26
|
+
thresholds: {
|
|
27
|
+
similarityThreshold: number;
|
|
28
|
+
maxSimilarOutputs: number;
|
|
29
|
+
maxStallIterations: number;
|
|
30
|
+
tokenBudgetWarning: number;
|
|
31
|
+
tokenBudgetAbort: number;
|
|
32
|
+
};
|
|
33
|
+
metrics: {
|
|
34
|
+
similarityScore?: number;
|
|
35
|
+
iterationsWithoutChange?: number;
|
|
36
|
+
repeatedPatterns?: string[];
|
|
37
|
+
oscillationPattern?: string;
|
|
38
|
+
};
|
|
39
|
+
recommendations: string[];
|
|
40
|
+
artifactPath: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Result of running a ticket
|
|
44
|
+
*/
|
|
45
|
+
export interface RunTicketResult {
|
|
46
|
+
success: boolean;
|
|
47
|
+
branchName?: string;
|
|
48
|
+
prUrl?: string;
|
|
49
|
+
durationMs: number;
|
|
50
|
+
error?: string;
|
|
51
|
+
failureReason?: FailureReason;
|
|
52
|
+
completionOutcome?: CompletionOutcome;
|
|
53
|
+
spindle?: SpindleAbortDetails;
|
|
54
|
+
artifacts?: {
|
|
55
|
+
execution?: string;
|
|
56
|
+
diff?: string;
|
|
57
|
+
violations?: string;
|
|
58
|
+
spindle?: string;
|
|
59
|
+
runSummary?: string;
|
|
60
|
+
};
|
|
61
|
+
scopeExpanded?: {
|
|
62
|
+
addedPaths: string[];
|
|
63
|
+
newRetryCount: number;
|
|
64
|
+
};
|
|
65
|
+
/** Trace analysis from stream-json output (when available) */
|
|
66
|
+
traceAnalysis?: TraceAnalysis;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Exit codes for solo run
|
|
70
|
+
*/
|
|
71
|
+
export declare const EXIT_CODES: {
|
|
72
|
+
readonly SUCCESS: 0;
|
|
73
|
+
readonly FAILURE: 1;
|
|
74
|
+
readonly SPINDLE_ABORT: 2;
|
|
75
|
+
readonly SIGINT: 130;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Options for running a ticket
|
|
79
|
+
*/
|
|
80
|
+
export interface RunTicketOptions {
|
|
81
|
+
ticket: Awaited<ReturnType<typeof tickets.getById>> & {};
|
|
82
|
+
repoRoot: string;
|
|
83
|
+
config: SoloConfig | null;
|
|
84
|
+
adapter: Awaited<ReturnType<typeof getAdapter>>;
|
|
85
|
+
runId: string;
|
|
86
|
+
skipQa: boolean;
|
|
87
|
+
createPr: boolean;
|
|
88
|
+
draftPr?: boolean;
|
|
89
|
+
timeoutMs: number;
|
|
90
|
+
verbose: boolean;
|
|
91
|
+
onProgress: (msg: string) => void;
|
|
92
|
+
/** Override the base branch for worktree creation (e.g. milestone branch) */
|
|
93
|
+
baseBranch?: string;
|
|
94
|
+
/** Skip pushing the branch to origin */
|
|
95
|
+
skipPush?: boolean;
|
|
96
|
+
/** Skip PR creation even if createPr is true */
|
|
97
|
+
skipPr?: boolean;
|
|
98
|
+
/** Execution backend override (default: ClaudeExecutionBackend) */
|
|
99
|
+
executionBackend?: ExecutionBackend;
|
|
100
|
+
/** Project guidelines context to prepend to execution prompt */
|
|
101
|
+
guidelinesContext?: string;
|
|
102
|
+
/** Learnings context to prepend to execution prompt */
|
|
103
|
+
learningsContext?: string;
|
|
104
|
+
/** Project metadata context to prepend to execution prompt */
|
|
105
|
+
metadataContext?: string;
|
|
106
|
+
/** If true, retry QA failures by expanding scope to include test files and fixing them */
|
|
107
|
+
qaRetryWithTestFix?: boolean;
|
|
108
|
+
/** Scout confidence score (0-100) — used to add planning preamble for complex changes */
|
|
109
|
+
confidence?: number;
|
|
110
|
+
/** Estimated complexity from scout — used to add planning preamble */
|
|
111
|
+
complexity?: string;
|
|
112
|
+
/** Pre-captured QA baseline from cycle-level cache. If provided, skips per-ticket capture. */
|
|
113
|
+
qaBaseline?: Map<string, boolean>;
|
|
114
|
+
/** Stream raw agent output chunks for live TUI display */
|
|
115
|
+
onRawOutput?: (chunk: string) => void;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Execution step definitions
|
|
119
|
+
*/
|
|
120
|
+
export declare const EXECUTE_STEPS: readonly [{
|
|
121
|
+
readonly name: "worktree";
|
|
122
|
+
readonly kind: StepKind;
|
|
123
|
+
}, {
|
|
124
|
+
readonly name: "agent";
|
|
125
|
+
readonly kind: StepKind;
|
|
126
|
+
}, {
|
|
127
|
+
readonly name: "scope";
|
|
128
|
+
readonly kind: StepKind;
|
|
129
|
+
}, {
|
|
130
|
+
readonly name: "commit";
|
|
131
|
+
readonly kind: StepKind;
|
|
132
|
+
}, {
|
|
133
|
+
readonly name: "push";
|
|
134
|
+
readonly kind: StepKind;
|
|
135
|
+
}, {
|
|
136
|
+
readonly name: "qa";
|
|
137
|
+
readonly kind: StepKind;
|
|
138
|
+
}, {
|
|
139
|
+
readonly name: "pr";
|
|
140
|
+
readonly kind: StepKind;
|
|
141
|
+
}, {
|
|
142
|
+
readonly name: "cleanup";
|
|
143
|
+
readonly kind: StepKind;
|
|
144
|
+
}];
|
|
145
|
+
export type StepName = typeof EXECUTE_STEPS[number]['name'];
|
|
146
|
+
//# sourceMappingURL=solo-ticket-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solo-ticket-types.d.ts","sourceRoot":"","sources":["../../src/lib/solo-ticket-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types and constants for solo ticket execution
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Exit codes for solo run
|
|
6
|
+
*/
|
|
7
|
+
export const EXIT_CODES = {
|
|
8
|
+
SUCCESS: 0,
|
|
9
|
+
FAILURE: 1,
|
|
10
|
+
SPINDLE_ABORT: 2,
|
|
11
|
+
SIGINT: 130,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Execution step definitions
|
|
15
|
+
*/
|
|
16
|
+
export const EXECUTE_STEPS = [
|
|
17
|
+
{ name: 'worktree', kind: 'git' },
|
|
18
|
+
{ name: 'agent', kind: 'internal' },
|
|
19
|
+
{ name: 'scope', kind: 'internal' },
|
|
20
|
+
{ name: 'commit', kind: 'git' },
|
|
21
|
+
{ name: 'push', kind: 'git' },
|
|
22
|
+
{ name: 'qa', kind: 'command' },
|
|
23
|
+
{ name: 'pr', kind: 'git' },
|
|
24
|
+
{ name: 'cleanup', kind: 'internal' },
|
|
25
|
+
];
|
|
26
|
+
//# sourceMappingURL=solo-ticket-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solo-ticket-types.js","sourceRoot":"","sources":["../../src/lib/solo-ticket-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgFH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,CAAC;IAChB,MAAM,EAAE,GAAG;CACH,CAAC;AA2CX;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAiB,EAAE;IAC7C,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAsB,EAAE;IAC/C,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAsB,EAAE;IAC/C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAiB,EAAE;IAC3C,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAiB,EAAE;IACzC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAqB,EAAE;IAC3C,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAiB,EAAE;IACvC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAsB,EAAE;CACzC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solo mode ticket execution
|
|
3
|
+
*/
|
|
4
|
+
import type { RunTicketResult, RunTicketOptions } from './solo-ticket-types.js';
|
|
5
|
+
export { type BaselineResult, baselineToPassFail, captureQaBaseline } from './solo-ticket-qa.js';
|
|
6
|
+
/**
|
|
7
|
+
* Execute a ticket in isolation with step tracking.
|
|
8
|
+
*
|
|
9
|
+
* Pipeline: worktree → agent → spindle → scope → commit → push → qa → pr → cleanup
|
|
10
|
+
*/
|
|
11
|
+
export declare function soloRunTicket(opts: RunTicketOptions): Promise<RunTicketResult>;
|
|
12
|
+
//# sourceMappingURL=solo-ticket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solo-ticket.d.ts","sourceRoot":"","sources":["../../src/lib/solo-ticket.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAEjB,MAAM,wBAAwB,CAAC;AAgBhC,OAAO,EAAE,KAAK,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AA4JjG;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CA4CpF"}
|