@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
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
/**
|
|
3
|
+
* @promptwheel/cli
|
|
4
|
+
*
|
|
5
|
+
* PromptWheel command-line interface.
|
|
6
|
+
*
|
|
7
|
+
* This package is a CLI tool only - it has no public API exports.
|
|
8
|
+
* Use it via the command line:
|
|
9
|
+
*
|
|
10
|
+
* npx @promptwheel/cli solo scout .
|
|
11
|
+
*
|
|
12
|
+
* Or installed globally:
|
|
13
|
+
* npm install -g @promptwheel/cli
|
|
14
|
+
* promptwheel solo scout .
|
|
15
|
+
*
|
|
16
|
+
* The CLI entry point is src/bin/promptwheel.ts
|
|
17
|
+
*/
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
/**
|
|
3
|
+
* @promptwheel/cli
|
|
4
|
+
*
|
|
5
|
+
* PromptWheel command-line interface.
|
|
6
|
+
*
|
|
7
|
+
* This package is a CLI tool only - it has no public API exports.
|
|
8
|
+
* Use it via the command line:
|
|
9
|
+
*
|
|
10
|
+
* npx @promptwheel/cli solo scout .
|
|
11
|
+
*
|
|
12
|
+
* Or installed globally:
|
|
13
|
+
* npm install -g @promptwheel/cli
|
|
14
|
+
* promptwheel solo scout .
|
|
15
|
+
*
|
|
16
|
+
* The CLI entry point is src/bin/promptwheel.ts
|
|
17
|
+
*/
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact persistence helpers
|
|
3
|
+
*
|
|
4
|
+
* Writes structured data as JSON files in .promptwheel/artifacts/
|
|
5
|
+
* Used for proposals, run outputs, and other debugging data.
|
|
6
|
+
*
|
|
7
|
+
* Artifact Types:
|
|
8
|
+
* - proposals: Scout proposals before approval
|
|
9
|
+
* - executions: Agent execution logs (stdout, stderr, prompt)
|
|
10
|
+
* - diffs: Git diff snapshots
|
|
11
|
+
* - runs: Complete run summaries with all steps
|
|
12
|
+
* - violations: Scope violation details
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Known artifact types - single source of truth
|
|
16
|
+
*/
|
|
17
|
+
export declare const ARTIFACT_TYPES: readonly ["proposals", "executions", "diffs", "runs", "violations", "spindle", "traces"];
|
|
18
|
+
/**
|
|
19
|
+
* Known artifact types for type safety
|
|
20
|
+
*/
|
|
21
|
+
export type ArtifactType = (typeof ARTIFACT_TYPES)[number];
|
|
22
|
+
/**
|
|
23
|
+
* Run summary artifact structure
|
|
24
|
+
*/
|
|
25
|
+
export interface RunSummaryArtifact {
|
|
26
|
+
runId: string;
|
|
27
|
+
ticketId: string;
|
|
28
|
+
ticketTitle: string;
|
|
29
|
+
projectId: string;
|
|
30
|
+
success: boolean;
|
|
31
|
+
startedAt: string;
|
|
32
|
+
completedAt: string;
|
|
33
|
+
durationMs: number;
|
|
34
|
+
branchName?: string;
|
|
35
|
+
prUrl?: string;
|
|
36
|
+
error?: string;
|
|
37
|
+
steps: Array<{
|
|
38
|
+
name: string;
|
|
39
|
+
status: 'success' | 'failed' | 'skipped';
|
|
40
|
+
durationMs?: number;
|
|
41
|
+
errorMessage?: string;
|
|
42
|
+
artifactPath?: string;
|
|
43
|
+
}>;
|
|
44
|
+
artifacts: {
|
|
45
|
+
execution?: string;
|
|
46
|
+
diff?: string;
|
|
47
|
+
violations?: string;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Scope violations artifact structure
|
|
52
|
+
*/
|
|
53
|
+
export interface ViolationsArtifact {
|
|
54
|
+
runId: string;
|
|
55
|
+
ticketId: string;
|
|
56
|
+
changedFiles: string[];
|
|
57
|
+
allowedPaths: string[];
|
|
58
|
+
forbiddenPaths: string[];
|
|
59
|
+
violations: Array<{
|
|
60
|
+
file: string;
|
|
61
|
+
violation: 'not_in_allowed' | 'in_forbidden';
|
|
62
|
+
pattern?: string;
|
|
63
|
+
}>;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Options for writing an artifact
|
|
67
|
+
*/
|
|
68
|
+
interface WriteArtifactOptions {
|
|
69
|
+
/** Base directory (usually .promptwheel) */
|
|
70
|
+
baseDir: string;
|
|
71
|
+
/** Artifact type (creates subfolder) */
|
|
72
|
+
type: string;
|
|
73
|
+
/** Unique identifier (used in filename) */
|
|
74
|
+
id: string;
|
|
75
|
+
/** Data to serialize */
|
|
76
|
+
data: unknown;
|
|
77
|
+
/** Optional timestamp suffix (default: true) */
|
|
78
|
+
timestamp?: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Write a JSON artifact file
|
|
82
|
+
*
|
|
83
|
+
* Creates: {baseDir}/artifacts/{type}/{id}[-timestamp].json
|
|
84
|
+
*
|
|
85
|
+
* @returns The full path to the written file
|
|
86
|
+
*/
|
|
87
|
+
export declare function writeJsonArtifact(opts: WriteArtifactOptions): string;
|
|
88
|
+
/**
|
|
89
|
+
* Read a JSON artifact file
|
|
90
|
+
*
|
|
91
|
+
* @returns Parsed data or null if file doesn't exist
|
|
92
|
+
*/
|
|
93
|
+
export declare function readJsonArtifact<T = unknown>(filePath: string): T | null;
|
|
94
|
+
/**
|
|
95
|
+
* List artifacts of a given type
|
|
96
|
+
*
|
|
97
|
+
* @returns Array of { path, id, timestamp } sorted by timestamp desc
|
|
98
|
+
*/
|
|
99
|
+
export declare function listArtifacts(baseDir: string, type: string): Array<{
|
|
100
|
+
path: string;
|
|
101
|
+
id: string;
|
|
102
|
+
timestamp: number;
|
|
103
|
+
}>;
|
|
104
|
+
/**
|
|
105
|
+
* Get the most recent artifact of a given type
|
|
106
|
+
*/
|
|
107
|
+
export declare function getLatestArtifact<T = unknown>(baseDir: string, type: string): {
|
|
108
|
+
path: string;
|
|
109
|
+
data: T;
|
|
110
|
+
} | null;
|
|
111
|
+
/**
|
|
112
|
+
* Get all artifacts for a specific run ID
|
|
113
|
+
*
|
|
114
|
+
* Searches across all artifact types for files matching the run ID.
|
|
115
|
+
*/
|
|
116
|
+
export declare function getArtifactsForRun(baseDir: string, runId: string): Record<ArtifactType, {
|
|
117
|
+
path: string;
|
|
118
|
+
data: unknown;
|
|
119
|
+
} | null>;
|
|
120
|
+
/**
|
|
121
|
+
* Get artifact by run ID and type
|
|
122
|
+
*/
|
|
123
|
+
export declare function getArtifactByRunId<T = unknown>(baseDir: string, runId: string, type: ArtifactType): {
|
|
124
|
+
path: string;
|
|
125
|
+
data: T;
|
|
126
|
+
} | null;
|
|
127
|
+
/**
|
|
128
|
+
* Get all artifacts in the base directory, grouped by type
|
|
129
|
+
*/
|
|
130
|
+
export declare function getAllArtifacts(baseDir: string): Record<ArtifactType, Array<{
|
|
131
|
+
path: string;
|
|
132
|
+
id: string;
|
|
133
|
+
timestamp: number;
|
|
134
|
+
}>>;
|
|
135
|
+
export {};
|
|
136
|
+
//# sourceMappingURL=artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/lib/artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact persistence helpers
|
|
3
|
+
*
|
|
4
|
+
* Writes structured data as JSON files in .promptwheel/artifacts/
|
|
5
|
+
* Used for proposals, run outputs, and other debugging data.
|
|
6
|
+
*
|
|
7
|
+
* Artifact Types:
|
|
8
|
+
* - proposals: Scout proposals before approval
|
|
9
|
+
* - executions: Agent execution logs (stdout, stderr, prompt)
|
|
10
|
+
* - diffs: Git diff snapshots
|
|
11
|
+
* - runs: Complete run summaries with all steps
|
|
12
|
+
* - violations: Scope violation details
|
|
13
|
+
*/
|
|
14
|
+
import * as fs from 'node:fs';
|
|
15
|
+
import * as path from 'node:path';
|
|
16
|
+
/**
|
|
17
|
+
* Known artifact types - single source of truth
|
|
18
|
+
*/
|
|
19
|
+
export const ARTIFACT_TYPES = [
|
|
20
|
+
'proposals',
|
|
21
|
+
'executions',
|
|
22
|
+
'diffs',
|
|
23
|
+
'runs',
|
|
24
|
+
'violations',
|
|
25
|
+
'spindle',
|
|
26
|
+
'traces',
|
|
27
|
+
];
|
|
28
|
+
/**
|
|
29
|
+
* Write a JSON artifact file
|
|
30
|
+
*
|
|
31
|
+
* Creates: {baseDir}/artifacts/{type}/{id}[-timestamp].json
|
|
32
|
+
*
|
|
33
|
+
* @returns The full path to the written file
|
|
34
|
+
*/
|
|
35
|
+
export function writeJsonArtifact(opts) {
|
|
36
|
+
const { baseDir, type, id, data, timestamp = true } = opts;
|
|
37
|
+
const artifactsDir = path.join(baseDir, 'artifacts', type);
|
|
38
|
+
// Ensure directory exists
|
|
39
|
+
if (!fs.existsSync(artifactsDir)) {
|
|
40
|
+
fs.mkdirSync(artifactsDir, { recursive: true });
|
|
41
|
+
}
|
|
42
|
+
// Build filename
|
|
43
|
+
const ts = timestamp ? `-${Date.now()}` : '';
|
|
44
|
+
const filename = `${id}${ts}.json`;
|
|
45
|
+
const filePath = path.join(artifactsDir, filename);
|
|
46
|
+
// Write atomically (write to temp, then rename)
|
|
47
|
+
const tempPath = `${filePath}.tmp`;
|
|
48
|
+
fs.writeFileSync(tempPath, JSON.stringify(data, null, 2));
|
|
49
|
+
fs.renameSync(tempPath, filePath);
|
|
50
|
+
return filePath;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Read a JSON artifact file
|
|
54
|
+
*
|
|
55
|
+
* @returns Parsed data or null if file doesn't exist
|
|
56
|
+
*/
|
|
57
|
+
export function readJsonArtifact(filePath) {
|
|
58
|
+
if (!fs.existsSync(filePath)) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
62
|
+
return JSON.parse(content);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* List artifacts of a given type
|
|
66
|
+
*
|
|
67
|
+
* @returns Array of { path, id, timestamp } sorted by timestamp desc
|
|
68
|
+
*/
|
|
69
|
+
export function listArtifacts(baseDir, type) {
|
|
70
|
+
const artifactsDir = path.join(baseDir, 'artifacts', type);
|
|
71
|
+
if (!fs.existsSync(artifactsDir)) {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
const files = fs.readdirSync(artifactsDir)
|
|
75
|
+
.filter(f => f.endsWith('.json'))
|
|
76
|
+
.map(f => {
|
|
77
|
+
// eslint-disable-next-line security/detect-unsafe-regex
|
|
78
|
+
const match = f.match(/^(.+?)(?:-(\d+))?\.json$/);
|
|
79
|
+
if (!match)
|
|
80
|
+
return null;
|
|
81
|
+
const filePath = path.join(artifactsDir, f);
|
|
82
|
+
const stat = fs.statSync(filePath);
|
|
83
|
+
return {
|
|
84
|
+
path: filePath,
|
|
85
|
+
id: match[1],
|
|
86
|
+
timestamp: match[2] ? parseInt(match[2], 10) : stat.mtimeMs,
|
|
87
|
+
};
|
|
88
|
+
})
|
|
89
|
+
.filter((x) => x !== null);
|
|
90
|
+
// Sort by timestamp descending (most recent first)
|
|
91
|
+
return files.sort((a, b) => b.timestamp - a.timestamp);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get the most recent artifact of a given type
|
|
95
|
+
*/
|
|
96
|
+
export function getLatestArtifact(baseDir, type) {
|
|
97
|
+
const artifacts = listArtifacts(baseDir, type);
|
|
98
|
+
if (artifacts.length === 0)
|
|
99
|
+
return null;
|
|
100
|
+
const latest = artifacts[0];
|
|
101
|
+
const data = readJsonArtifact(latest.path);
|
|
102
|
+
if (data === null)
|
|
103
|
+
return null;
|
|
104
|
+
return { path: latest.path, data };
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get all artifacts for a specific run ID
|
|
108
|
+
*
|
|
109
|
+
* Searches across all artifact types for files matching the run ID.
|
|
110
|
+
*/
|
|
111
|
+
export function getArtifactsForRun(baseDir, runId) {
|
|
112
|
+
const result = {};
|
|
113
|
+
for (const type of ARTIFACT_TYPES) {
|
|
114
|
+
const artifacts = listArtifacts(baseDir, type);
|
|
115
|
+
const match = artifacts.find(a => a.id === runId || a.id.startsWith(runId));
|
|
116
|
+
if (match) {
|
|
117
|
+
const data = readJsonArtifact(match.path);
|
|
118
|
+
result[type] = data ? { path: match.path, data } : null;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
result[type] = null;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get artifact by run ID and type
|
|
128
|
+
*/
|
|
129
|
+
export function getArtifactByRunId(baseDir, runId, type) {
|
|
130
|
+
const artifacts = listArtifacts(baseDir, type);
|
|
131
|
+
const match = artifacts.find(a => a.id === runId || a.id.startsWith(runId));
|
|
132
|
+
if (!match)
|
|
133
|
+
return null;
|
|
134
|
+
const data = readJsonArtifact(match.path);
|
|
135
|
+
return data ? { path: match.path, data } : null;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get all artifacts in the base directory, grouped by type
|
|
139
|
+
*/
|
|
140
|
+
export function getAllArtifacts(baseDir) {
|
|
141
|
+
const result = {};
|
|
142
|
+
for (const type of ARTIFACT_TYPES) {
|
|
143
|
+
result[type] = listArtifacts(baseDir, type);
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/lib/artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exports from @promptwheel/core — single source of truth for codebase indexing.
|
|
3
|
+
*/
|
|
4
|
+
export { buildCodebaseIndex, refreshCodebaseIndex, hasStructuralChanges, formatIndexForPrompt, getTrackedDirectories, SOURCE_EXTENSIONS, type CodebaseIndex, type ModuleEntry, type LargeFileEntry, type ClassificationConfidence, } from '@promptwheel/core/codebase-index';
|
|
5
|
+
//# sourceMappingURL=codebase-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codebase-index.d.ts","sourceRoot":"","sources":["../../src/lib/codebase-index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,wBAAwB,GAC9B,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exports from @promptwheel/core — single source of truth for codebase indexing.
|
|
3
|
+
*/
|
|
4
|
+
export { buildCodebaseIndex, refreshCodebaseIndex, hasStructuralChanges, formatIndexForPrompt, getTrackedDirectories, SOURCE_EXTENSIONS, } from '@promptwheel/core/codebase-index';
|
|
5
|
+
//# sourceMappingURL=codebase-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codebase-index.js","sourceRoot":"","sources":["../../src/lib/codebase-index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,GAKlB,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cycle context for convergence-aware scout prompting.
|
|
3
|
+
*
|
|
4
|
+
* Tracks recent cycle outcomes so the scout can propose follow-up work
|
|
5
|
+
* instead of random scattershot. Also computes convergence metrics
|
|
6
|
+
* to guide session-level decisions.
|
|
7
|
+
*/
|
|
8
|
+
import type { SectorState } from './sectors.js';
|
|
9
|
+
export interface CycleSummary {
|
|
10
|
+
cycle: number;
|
|
11
|
+
scope: string;
|
|
12
|
+
formula: string;
|
|
13
|
+
succeeded: Array<{
|
|
14
|
+
title: string;
|
|
15
|
+
category: string;
|
|
16
|
+
}>;
|
|
17
|
+
failed: Array<{
|
|
18
|
+
title: string;
|
|
19
|
+
reason: string;
|
|
20
|
+
}>;
|
|
21
|
+
noChanges: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Build an XML block summarizing recent cycle outcomes for the scout prompt.
|
|
25
|
+
* Optionally includes recent diff summaries for follow-up awareness.
|
|
26
|
+
*/
|
|
27
|
+
export declare function buildCycleContextBlock(recentCycles: CycleSummary[], recentDiffs?: Array<{
|
|
28
|
+
title: string;
|
|
29
|
+
summary: string;
|
|
30
|
+
files: string[];
|
|
31
|
+
cycle: number;
|
|
32
|
+
}>): string;
|
|
33
|
+
/**
|
|
34
|
+
* Ring buffer push — keeps at most `max` entries.
|
|
35
|
+
*/
|
|
36
|
+
export declare function pushCycleSummary(buf: CycleSummary[], summary: CycleSummary, max?: number): CycleSummary[];
|
|
37
|
+
export interface ConvergenceMetrics {
|
|
38
|
+
polishedSectorPct: number;
|
|
39
|
+
avgProposalYield: number;
|
|
40
|
+
learningsDensity: number;
|
|
41
|
+
successRateTrend: 'improving' | 'stable' | 'declining';
|
|
42
|
+
suggestedAction: 'continue' | 'widen_scope' | 'deepen' | 'stop';
|
|
43
|
+
mergeRate: number;
|
|
44
|
+
velocity: {
|
|
45
|
+
prsPerHour: number;
|
|
46
|
+
mergeRatePercent: number;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Compute convergence metrics from sectors, learnings count, and recent cycles.
|
|
51
|
+
*/
|
|
52
|
+
export declare function computeConvergenceMetrics(sectorState: SectorState, learningsCount: number, recentCycles: CycleSummary[], sessionContext?: {
|
|
53
|
+
elapsedMs: number;
|
|
54
|
+
prsCreated: number;
|
|
55
|
+
prsMerged: number;
|
|
56
|
+
prsClosed: number;
|
|
57
|
+
}): ConvergenceMetrics;
|
|
58
|
+
/**
|
|
59
|
+
* Format a one-liner convergence summary for console output.
|
|
60
|
+
*/
|
|
61
|
+
export declare function formatConvergenceOneLiner(m: ConvergenceMetrics): string;
|
|
62
|
+
//# sourceMappingURL=cycle-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cycle-context.d.ts","sourceRoot":"","sources":["../../src/lib/cycle-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAMhD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,YAAY,EAAE,EAC5B,WAAW,CAAC,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GACtF,MAAM,CA4CR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,YAAY,EAAE,EACnB,OAAO,EAAE,YAAY,EACrB,GAAG,GAAE,MAAU,GACd,YAAY,EAAE,CAMhB;AAMD,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACvD,eAAe,EAAE,UAAU,GAAG,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,YAAY,EAAE,EAC5B,cAAc,CAAC,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC/F,kBAAkB,CA+DpB;AAQD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAKvE"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cycle context for convergence-aware scout prompting.
|
|
3
|
+
*
|
|
4
|
+
* Tracks recent cycle outcomes so the scout can propose follow-up work
|
|
5
|
+
* instead of random scattershot. Also computes convergence metrics
|
|
6
|
+
* to guide session-level decisions.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Build an XML block summarizing recent cycle outcomes for the scout prompt.
|
|
10
|
+
* Optionally includes recent diff summaries for follow-up awareness.
|
|
11
|
+
*/
|
|
12
|
+
export function buildCycleContextBlock(recentCycles, recentDiffs) {
|
|
13
|
+
if ((!recentCycles || recentCycles.length === 0) && (!recentDiffs || recentDiffs.length === 0))
|
|
14
|
+
return '';
|
|
15
|
+
const lines = ['<recent-cycles>', '## Recent Cycle Outcomes', ''];
|
|
16
|
+
for (const c of (recentCycles ?? [])) {
|
|
17
|
+
lines.push(`### Cycle ${c.cycle} — scope: ${c.scope}, formula: ${c.formula}`);
|
|
18
|
+
if (c.succeeded.length > 0) {
|
|
19
|
+
lines.push('Succeeded:');
|
|
20
|
+
for (const s of c.succeeded) {
|
|
21
|
+
lines.push(`- [${s.category}] ${s.title}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (c.failed.length > 0) {
|
|
25
|
+
lines.push('Failed:');
|
|
26
|
+
for (const f of c.failed) {
|
|
27
|
+
lines.push(`- ${f.title} (${f.reason})`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (c.noChanges.length > 0) {
|
|
31
|
+
lines.push('No changes produced:');
|
|
32
|
+
for (const nc of c.noChanges) {
|
|
33
|
+
lines.push(`- ${nc}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
lines.push('');
|
|
37
|
+
}
|
|
38
|
+
// Append recent diffs for follow-up awareness
|
|
39
|
+
if (recentDiffs && recentDiffs.length > 0) {
|
|
40
|
+
lines.push('<recent-diffs>');
|
|
41
|
+
for (const d of recentDiffs.slice(-5)) {
|
|
42
|
+
lines.push(`Title: "${d.title}", Files: [${d.files.join(', ')}], Changes: ${d.summary}`);
|
|
43
|
+
}
|
|
44
|
+
lines.push('Consider proposing follow-up work based on these recent changes.');
|
|
45
|
+
lines.push('</recent-diffs>');
|
|
46
|
+
lines.push('');
|
|
47
|
+
}
|
|
48
|
+
lines.push('Use these outcomes to propose FOLLOW-UP work.');
|
|
49
|
+
lines.push('Fix what failed. Build on what succeeded. Avoid repeating no-change proposals.');
|
|
50
|
+
lines.push('</recent-cycles>');
|
|
51
|
+
return lines.join('\n');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Ring buffer push — keeps at most `max` entries.
|
|
55
|
+
*/
|
|
56
|
+
export function pushCycleSummary(buf, summary, max = 5) {
|
|
57
|
+
const result = [...buf, summary];
|
|
58
|
+
if (result.length > max) {
|
|
59
|
+
return result.slice(result.length - max);
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Compute convergence metrics from sectors, learnings count, and recent cycles.
|
|
65
|
+
*/
|
|
66
|
+
export function computeConvergenceMetrics(sectorState, learningsCount, recentCycles, sessionContext) {
|
|
67
|
+
const prodSectors = sectorState.sectors.filter(s => s.production && s.fileCount > 0);
|
|
68
|
+
const polishedCount = prodSectors.filter(s => s.polishedAt > 0).length;
|
|
69
|
+
const polishedSectorPct = prodSectors.length > 0
|
|
70
|
+
? Math.round((polishedCount / prodSectors.length) * 100)
|
|
71
|
+
: 0;
|
|
72
|
+
const scannedSectors = prodSectors.filter(s => s.scanCount > 0);
|
|
73
|
+
const avgProposalYield = scannedSectors.length > 0
|
|
74
|
+
? scannedSectors.reduce((sum, s) => sum + s.proposalYield, 0) / scannedSectors.length
|
|
75
|
+
: 0;
|
|
76
|
+
const totalFiles = prodSectors.reduce((sum, s) => sum + s.fileCount, 0);
|
|
77
|
+
const learningsDensity = totalFiles > 0 ? learningsCount / totalFiles : 0;
|
|
78
|
+
// Compute success rate trend from last 3 cycles
|
|
79
|
+
let successRateTrend = 'stable';
|
|
80
|
+
if (recentCycles.length >= 3) {
|
|
81
|
+
const rates = recentCycles.slice(-3).map(c => {
|
|
82
|
+
const total = c.succeeded.length + c.failed.length + c.noChanges.length;
|
|
83
|
+
return total > 0 ? c.succeeded.length / total : 0;
|
|
84
|
+
});
|
|
85
|
+
const first = rates[0];
|
|
86
|
+
const last = rates[rates.length - 1];
|
|
87
|
+
if (last - first > 0.1)
|
|
88
|
+
successRateTrend = 'improving';
|
|
89
|
+
else if (first - last > 0.1)
|
|
90
|
+
successRateTrend = 'declining';
|
|
91
|
+
}
|
|
92
|
+
// Determine suggested action
|
|
93
|
+
let suggestedAction = 'continue';
|
|
94
|
+
if (polishedSectorPct > 80 && avgProposalYield < 0.5) {
|
|
95
|
+
suggestedAction = 'stop';
|
|
96
|
+
}
|
|
97
|
+
else if (polishedSectorPct > 60 && successRateTrend === 'declining') {
|
|
98
|
+
suggestedAction = 'widen_scope';
|
|
99
|
+
}
|
|
100
|
+
else if (avgProposalYield > 1.5 && successRateTrend === 'improving') {
|
|
101
|
+
suggestedAction = 'deepen';
|
|
102
|
+
}
|
|
103
|
+
// Merge rate from sector-level data
|
|
104
|
+
let totalMerged = 0;
|
|
105
|
+
let totalClosed = 0;
|
|
106
|
+
for (const s of prodSectors) {
|
|
107
|
+
totalMerged += s.mergeCount ?? 0;
|
|
108
|
+
totalClosed += s.closedCount ?? 0;
|
|
109
|
+
}
|
|
110
|
+
const mergeRate = (totalMerged + totalClosed) > 0
|
|
111
|
+
? totalMerged / (totalMerged + totalClosed)
|
|
112
|
+
: NaN;
|
|
113
|
+
// Velocity from session context
|
|
114
|
+
const elapsedHours = sessionContext ? sessionContext.elapsedMs / 3_600_000 : 0;
|
|
115
|
+
const prsPerHour = elapsedHours > 0 ? (sessionContext?.prsCreated ?? 0) / elapsedHours : 0;
|
|
116
|
+
const mergedTotal = sessionContext?.prsMerged ?? 0;
|
|
117
|
+
const closedTotal = sessionContext?.prsClosed ?? 0;
|
|
118
|
+
const mergeRatePercent = (mergedTotal + closedTotal) > 0
|
|
119
|
+
? Math.round((mergedTotal / (mergedTotal + closedTotal)) * 100)
|
|
120
|
+
: 0;
|
|
121
|
+
return {
|
|
122
|
+
polishedSectorPct, avgProposalYield, learningsDensity, successRateTrend, suggestedAction,
|
|
123
|
+
mergeRate,
|
|
124
|
+
velocity: { prsPerHour, mergeRatePercent },
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
const TREND_ARROWS = {
|
|
128
|
+
improving: '\u2191',
|
|
129
|
+
stable: '\u2192',
|
|
130
|
+
declining: '\u2193',
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Format a one-liner convergence summary for console output.
|
|
134
|
+
*/
|
|
135
|
+
export function formatConvergenceOneLiner(m) {
|
|
136
|
+
const arrow = TREND_ARROWS[m.successRateTrend] ?? '→';
|
|
137
|
+
const velStr = m.velocity.prsPerHour > 0 ? `, ${m.velocity.prsPerHour.toFixed(1)} PRs/h` : '';
|
|
138
|
+
const mergeStr = !isNaN(m.mergeRate) ? `, merge ${Math.round(m.mergeRate * 100)}%` : '';
|
|
139
|
+
return `Convergence: ${m.polishedSectorPct}% polished, yield ${m.avgProposalYield.toFixed(1)}/scan, success ${arrow}${velStr}${mergeStr} — ${m.suggestedAction}`;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=cycle-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cycle-context.js","sourceRoot":"","sources":["../../src/lib/cycle-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon forking and PID management.
|
|
3
|
+
*
|
|
4
|
+
* Handles spawning a detached child process, PID file management,
|
|
5
|
+
* and log rotation.
|
|
6
|
+
*/
|
|
7
|
+
export declare function readDaemonPid(repoRoot: string): number | null;
|
|
8
|
+
export declare function writeDaemonPid(repoRoot: string, pid: number): void;
|
|
9
|
+
export declare function removeDaemonPid(repoRoot: string): void;
|
|
10
|
+
/**
|
|
11
|
+
* Check if a daemon process is alive via signal 0.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isDaemonRunning(repoRoot: string): boolean;
|
|
14
|
+
export interface ForkOptions {
|
|
15
|
+
interval?: number;
|
|
16
|
+
formula?: string;
|
|
17
|
+
scope?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Fork a detached daemon child process.
|
|
21
|
+
* The child runs `promptwheel solo daemon __run` with the same env.
|
|
22
|
+
* Returns the child PID.
|
|
23
|
+
*/
|
|
24
|
+
export declare function forkDaemon(repoRoot: string, options: ForkOptions): number;
|
|
25
|
+
/**
|
|
26
|
+
* Stop the daemon process gracefully.
|
|
27
|
+
* Sends SIGTERM, waits up to 10s, then SIGKILL as last resort.
|
|
28
|
+
*/
|
|
29
|
+
export declare function stopDaemon(repoRoot: string): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Rotate daemon.log when it exceeds maxSizeMB.
|
|
32
|
+
* Renames current log to daemon.log.1, starts fresh.
|
|
33
|
+
*/
|
|
34
|
+
export declare function rotateDaemonLog(repoRoot: string, maxSizeMB: number): void;
|
|
35
|
+
/**
|
|
36
|
+
* Get the daemon log file path.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getDaemonLogPath(repoRoot: string): string;
|
|
39
|
+
//# sourceMappingURL=daemon-fork.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-fork.d.ts","sourceRoot":"","sources":["../../src/lib/daemon-fork.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS7D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAIlE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWzD;AAID,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CA6BzE;AAID;;;GAGG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAsCnE;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAczE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|