gsd-pi 2.33.1-dev.235d83a → 2.33.1-dev.29a8268
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/dist/cli.js +0 -16
- package/dist/resource-loader.d.ts +0 -2
- package/dist/resource-loader.js +3 -36
- package/dist/resources/extensions/ask-user-questions.ts +290 -0
- package/dist/resources/extensions/async-jobs/async-bash-tool.ts +212 -0
- package/dist/resources/extensions/async-jobs/await-tool.ts +103 -0
- package/dist/resources/extensions/async-jobs/cancel-job-tool.ts +35 -0
- package/dist/resources/extensions/async-jobs/index.ts +141 -0
- package/dist/resources/extensions/async-jobs/job-manager.ts +211 -0
- package/dist/resources/extensions/aws-auth/index.ts +144 -0
- package/dist/resources/extensions/bg-shell/bg-shell-command.ts +219 -0
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.ts +400 -0
- package/dist/resources/extensions/bg-shell/bg-shell-tool.ts +985 -0
- package/dist/resources/extensions/bg-shell/index.ts +59 -0
- package/dist/resources/extensions/bg-shell/interaction.ts +198 -0
- package/dist/resources/extensions/bg-shell/output-formatter.ts +279 -0
- package/dist/resources/extensions/bg-shell/overlay.ts +437 -0
- package/dist/resources/extensions/bg-shell/process-manager.ts +464 -0
- package/dist/resources/extensions/bg-shell/readiness-detector.ts +126 -0
- package/dist/resources/extensions/bg-shell/types.ts +303 -0
- package/dist/resources/extensions/bg-shell/utilities.ts +57 -0
- package/dist/resources/extensions/browser-tools/capture.ts +199 -0
- package/dist/resources/extensions/browser-tools/core.ts +1196 -0
- package/dist/resources/extensions/browser-tools/{evaluate-helpers.js → evaluate-helpers.ts} +1 -0
- package/dist/resources/extensions/browser-tools/index.ts +71 -0
- package/dist/resources/extensions/browser-tools/lifecycle.ts +270 -0
- package/dist/resources/extensions/browser-tools/refs.ts +264 -0
- package/dist/resources/extensions/browser-tools/settle.ts +197 -0
- package/dist/resources/extensions/browser-tools/state.ts +408 -0
- package/dist/resources/extensions/browser-tools/tools/action-cache.ts +216 -0
- package/dist/resources/extensions/browser-tools/tools/assertions.ts +342 -0
- package/dist/resources/extensions/browser-tools/tools/codegen.ts +274 -0
- package/dist/resources/extensions/browser-tools/tools/device.ts +183 -0
- package/dist/resources/extensions/browser-tools/tools/extract.ts +229 -0
- package/dist/resources/extensions/browser-tools/tools/forms.ts +801 -0
- package/dist/resources/extensions/browser-tools/tools/injection-detect.ts +221 -0
- package/dist/resources/extensions/browser-tools/tools/inspection.ts +492 -0
- package/dist/resources/extensions/browser-tools/tools/intent.ts +614 -0
- package/dist/resources/extensions/browser-tools/tools/interaction.ts +865 -0
- package/dist/resources/extensions/browser-tools/tools/navigation.ts +232 -0
- package/dist/resources/extensions/browser-tools/tools/network-mock.ts +244 -0
- package/dist/resources/extensions/browser-tools/tools/pages.ts +303 -0
- package/dist/resources/extensions/browser-tools/tools/pdf.ts +92 -0
- package/dist/resources/extensions/browser-tools/tools/refs.ts +541 -0
- package/dist/resources/extensions/browser-tools/tools/screenshot.ts +101 -0
- package/dist/resources/extensions/browser-tools/tools/session.ts +400 -0
- package/dist/resources/extensions/browser-tools/tools/state-persistence.ts +202 -0
- package/dist/resources/extensions/browser-tools/tools/visual-diff.ts +209 -0
- package/dist/resources/extensions/browser-tools/tools/wait.ts +247 -0
- package/dist/resources/extensions/browser-tools/tools/zoom.ts +104 -0
- package/dist/resources/extensions/browser-tools/utils.ts +660 -0
- package/dist/resources/extensions/context7/index.ts +428 -0
- package/dist/resources/extensions/get-secrets-from-user.ts +607 -0
- package/dist/resources/extensions/google-search/index.ts +466 -0
- package/dist/resources/extensions/gsd/activity-log.ts +162 -0
- package/dist/resources/extensions/gsd/atomic-write.ts +35 -0
- package/dist/resources/extensions/gsd/auto/session.ts +236 -0
- package/dist/resources/extensions/gsd/auto-budget.ts +32 -0
- package/dist/resources/extensions/gsd/{auto-constants.js → auto-constants.ts} +1 -0
- package/dist/resources/extensions/gsd/auto-dashboard.ts +626 -0
- package/dist/resources/extensions/gsd/auto-direct-dispatch.ts +224 -0
- package/dist/resources/extensions/gsd/auto-dispatch.ts +409 -0
- package/dist/resources/extensions/gsd/auto-idempotency.ts +151 -0
- package/dist/resources/extensions/gsd/auto-model-selection.ts +179 -0
- package/dist/resources/extensions/gsd/auto-observability.ts +72 -0
- package/dist/resources/extensions/gsd/auto-post-unit.ts +618 -0
- package/dist/resources/extensions/gsd/auto-prompts.ts +1273 -0
- package/dist/resources/extensions/gsd/auto-recovery.ts +578 -0
- package/dist/resources/extensions/gsd/auto-start.ts +483 -0
- package/dist/resources/extensions/gsd/auto-stuck-detection.ts +221 -0
- package/dist/resources/extensions/gsd/{auto-supervisor.js → auto-supervisor.ts} +33 -25
- package/dist/resources/extensions/gsd/auto-timeout-recovery.ts +263 -0
- package/dist/resources/extensions/gsd/auto-timers.ts +224 -0
- package/dist/resources/extensions/gsd/auto-tool-tracking.ts +54 -0
- package/dist/resources/extensions/gsd/auto-unit-closeout.ts +48 -0
- package/dist/resources/extensions/gsd/auto-verification.ts +229 -0
- package/dist/resources/extensions/gsd/auto-worktree.ts +658 -0
- package/dist/resources/extensions/gsd/auto.ts +1834 -0
- package/dist/resources/extensions/gsd/{cache.js → cache.ts} +7 -5
- package/dist/resources/extensions/gsd/captures.ts +427 -0
- package/dist/resources/extensions/gsd/claude-import.ts +656 -0
- package/dist/resources/extensions/gsd/collision-diagnostics.ts +332 -0
- package/dist/resources/extensions/gsd/commands-config.ts +102 -0
- package/dist/resources/extensions/gsd/commands-extensions.ts +328 -0
- package/dist/resources/extensions/gsd/commands-handlers.ts +395 -0
- package/dist/resources/extensions/gsd/commands-inspect.ts +91 -0
- package/dist/resources/extensions/gsd/commands-logs.ts +536 -0
- package/dist/resources/extensions/gsd/commands-maintenance.ts +206 -0
- package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +780 -0
- package/dist/resources/extensions/gsd/commands-workflow-templates.ts +543 -0
- package/dist/resources/extensions/gsd/commands.ts +1149 -0
- package/dist/resources/extensions/gsd/complexity-classifier.ts +320 -0
- package/dist/resources/extensions/gsd/{constants.js → constants.ts} +6 -0
- package/dist/resources/extensions/gsd/context-budget.ts +266 -0
- package/dist/resources/extensions/gsd/context-store.ts +195 -0
- package/dist/resources/extensions/gsd/crash-recovery.ts +121 -0
- package/dist/resources/extensions/gsd/dashboard-overlay.ts +681 -0
- package/dist/resources/extensions/gsd/db-writer.ts +360 -0
- package/dist/resources/extensions/gsd/debug-logger.ts +178 -0
- package/dist/resources/extensions/gsd/detection.ts +470 -0
- package/dist/resources/extensions/gsd/diff-context.ts +214 -0
- package/dist/resources/extensions/gsd/dispatch-guard.ts +81 -0
- package/dist/resources/extensions/gsd/doctor-checks.ts +612 -0
- package/dist/resources/extensions/gsd/doctor-environment.ts +497 -0
- package/dist/resources/extensions/gsd/doctor-format.ts +78 -0
- package/dist/resources/extensions/gsd/doctor-proactive.ts +292 -0
- package/dist/resources/extensions/gsd/doctor-providers.ts +343 -0
- package/dist/resources/extensions/gsd/doctor-types.ts +87 -0
- package/dist/resources/extensions/gsd/doctor.ts +722 -0
- package/dist/resources/extensions/gsd/error-utils.ts +6 -0
- package/dist/resources/extensions/gsd/{errors.js → errors.ts} +11 -6
- package/dist/resources/extensions/gsd/exit-command.ts +18 -0
- package/dist/resources/extensions/gsd/{export-html.js → export-html.ts} +614 -482
- package/dist/resources/extensions/gsd/export.ts +317 -0
- package/dist/resources/extensions/gsd/file-watcher.ts +97 -0
- package/dist/resources/extensions/gsd/files.ts +1058 -0
- package/dist/resources/extensions/gsd/forensics.ts +629 -0
- package/dist/resources/extensions/gsd/{git-constants.js → git-constants.ts} +5 -4
- package/dist/resources/extensions/gsd/git-self-heal.ts +127 -0
- package/dist/resources/extensions/gsd/git-service.ts +586 -0
- package/dist/resources/extensions/gsd/{gitignore.js → gitignore.ts} +125 -98
- package/dist/resources/extensions/gsd/gsd-db.ts +685 -0
- package/dist/resources/extensions/gsd/guided-flow-queue.ts +440 -0
- package/dist/resources/extensions/gsd/guided-flow.ts +1303 -0
- package/dist/resources/extensions/gsd/health-widget.ts +167 -0
- package/dist/resources/extensions/gsd/history.ts +143 -0
- package/dist/resources/extensions/gsd/index.ts +1401 -0
- package/dist/resources/extensions/gsd/init-wizard.ts +587 -0
- package/dist/resources/extensions/gsd/json-persistence.ts +67 -0
- package/dist/resources/extensions/gsd/{jsonl-utils.js → jsonl-utils.ts} +7 -10
- package/dist/resources/extensions/gsd/key-manager.ts +996 -0
- package/dist/resources/extensions/gsd/marketplace-discovery.ts +508 -0
- package/dist/resources/extensions/gsd/md-importer.ts +527 -0
- package/dist/resources/extensions/gsd/mechanical-completion.ts +430 -0
- package/dist/resources/extensions/gsd/memory-extractor.ts +352 -0
- package/dist/resources/extensions/gsd/memory-store.ts +441 -0
- package/dist/resources/extensions/gsd/metrics.ts +532 -0
- package/dist/resources/extensions/gsd/migrate/command.ts +219 -0
- package/dist/resources/extensions/gsd/migrate/index.ts +42 -0
- package/dist/resources/extensions/gsd/migrate/parser.ts +323 -0
- package/dist/resources/extensions/gsd/migrate/parsers.ts +539 -0
- package/dist/resources/extensions/gsd/migrate/preview.ts +48 -0
- package/dist/resources/extensions/gsd/migrate/transformer.ts +346 -0
- package/dist/resources/extensions/gsd/migrate/types.ts +370 -0
- package/dist/resources/extensions/gsd/migrate/validator.ts +55 -0
- package/dist/resources/extensions/gsd/migrate/writer.ts +579 -0
- package/dist/resources/extensions/gsd/migrate-external.ts +140 -0
- package/dist/resources/extensions/gsd/milestone-actions.ts +126 -0
- package/dist/resources/extensions/gsd/{milestone-ids.js → milestone-ids.ts} +63 -50
- package/dist/resources/extensions/gsd/model-cost-table.ts +65 -0
- package/dist/resources/extensions/gsd/model-router.ts +256 -0
- package/dist/resources/extensions/gsd/namespaced-registry.ts +467 -0
- package/dist/resources/extensions/gsd/namespaced-resolver.ts +307 -0
- package/dist/resources/extensions/gsd/native-git-bridge.ts +1041 -0
- package/dist/resources/extensions/gsd/native-parser-bridge.ts +267 -0
- package/dist/resources/extensions/gsd/notifications.ts +87 -0
- package/dist/resources/extensions/gsd/observability-validator.ts +429 -0
- package/dist/resources/extensions/gsd/parallel-eligibility.ts +233 -0
- package/dist/resources/extensions/gsd/parallel-merge.ts +157 -0
- package/dist/resources/extensions/gsd/parallel-orchestrator.ts +826 -0
- package/dist/resources/extensions/gsd/paths.ts +449 -0
- package/dist/resources/extensions/gsd/plugin-importer.ts +411 -0
- package/dist/resources/extensions/gsd/post-unit-hooks.ts +520 -0
- package/dist/resources/extensions/gsd/preferences-models.ts +329 -0
- package/dist/resources/extensions/gsd/preferences-skills.ts +169 -0
- package/dist/resources/extensions/gsd/preferences-types.ts +229 -0
- package/dist/resources/extensions/gsd/preferences-validation.ts +590 -0
- package/dist/resources/extensions/gsd/preferences.ts +416 -0
- package/dist/resources/extensions/gsd/progress-score.ts +273 -0
- package/dist/resources/extensions/gsd/prompt-cache-optimizer.ts +213 -0
- package/dist/resources/extensions/gsd/prompt-compressor.ts +508 -0
- package/dist/resources/extensions/gsd/prompt-loader.ts +130 -0
- package/dist/resources/extensions/gsd/prompt-ordering.ts +200 -0
- package/dist/resources/extensions/gsd/provider-error-pause.ts +88 -0
- package/dist/resources/extensions/gsd/queue-order.ts +230 -0
- package/dist/resources/extensions/gsd/queue-reorder-ui.ts +276 -0
- package/dist/resources/extensions/gsd/quick.ts +212 -0
- package/dist/resources/extensions/gsd/repo-identity.ts +169 -0
- package/dist/resources/extensions/gsd/{reports.js → reports.ts} +241 -146
- package/dist/resources/extensions/gsd/{resource-version.js → resource-version.ts} +53 -50
- package/dist/resources/extensions/gsd/roadmap-slices.ts +149 -0
- package/dist/resources/extensions/gsd/routing-history.ts +286 -0
- package/dist/resources/extensions/gsd/safe-fs.ts +47 -0
- package/dist/resources/extensions/gsd/semantic-chunker.ts +336 -0
- package/dist/resources/extensions/gsd/session-forensics.ts +537 -0
- package/dist/resources/extensions/gsd/session-lock.ts +426 -0
- package/dist/resources/extensions/gsd/session-status-io.ts +179 -0
- package/dist/resources/extensions/gsd/skill-discovery.ts +139 -0
- package/dist/resources/extensions/gsd/skill-health.ts +417 -0
- package/dist/resources/extensions/gsd/{skill-telemetry.js → skill-telemetry.ts} +74 -58
- package/dist/resources/extensions/gsd/state.ts +727 -0
- package/dist/resources/extensions/gsd/structured-data-formatter.ts +144 -0
- package/dist/resources/extensions/gsd/summary-distiller.ts +258 -0
- package/dist/resources/extensions/gsd/tests/activity-log.test.ts +213 -0
- package/dist/resources/extensions/gsd/tests/agent-end-retry.test.ts +107 -0
- package/dist/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +200 -0
- package/dist/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +50 -0
- package/dist/resources/extensions/gsd/tests/auto-dashboard.test.ts +166 -0
- package/dist/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +691 -0
- package/dist/resources/extensions/gsd/tests/auto-lock-creation.test.ts +186 -0
- package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +40 -0
- package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +640 -0
- package/dist/resources/extensions/gsd/tests/auto-reentrancy-guard.test.ts +127 -0
- package/dist/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +302 -0
- package/dist/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +257 -0
- package/dist/resources/extensions/gsd/tests/auto-skip-loop.test.ts +123 -0
- package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +340 -0
- package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +167 -0
- package/dist/resources/extensions/gsd/tests/budget-prediction.test.ts +220 -0
- package/dist/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +317 -0
- package/dist/resources/extensions/gsd/tests/captures.test.ts +438 -0
- package/dist/resources/extensions/gsd/tests/claude-import-tui.test.ts +351 -0
- package/dist/resources/extensions/gsd/tests/collect-from-manifest.test.ts +469 -0
- package/dist/resources/extensions/gsd/tests/collision-diagnostics.test.ts +705 -0
- package/dist/resources/extensions/gsd/tests/commands-logs.test.ts +241 -0
- package/dist/resources/extensions/gsd/tests/complete-milestone.test.ts +209 -0
- package/dist/resources/extensions/gsd/tests/complexity-classifier.test.ts +181 -0
- package/dist/resources/extensions/gsd/tests/context-budget.test.ts +352 -0
- package/dist/resources/extensions/gsd/tests/context-compression.test.ts +193 -0
- package/dist/resources/extensions/gsd/tests/context-store.test.ts +462 -0
- package/dist/resources/extensions/gsd/tests/continue-here.test.ts +285 -0
- package/dist/resources/extensions/gsd/tests/cost-projection.test.ts +134 -0
- package/dist/resources/extensions/gsd/tests/crash-recovery.test.ts +134 -0
- package/dist/resources/extensions/gsd/tests/dashboard-budget.test.ts +346 -0
- package/dist/resources/extensions/gsd/tests/db-writer.test.ts +602 -0
- package/dist/resources/extensions/gsd/tests/debug-logger.test.ts +185 -0
- package/dist/resources/extensions/gsd/tests/derive-state-db.test.ts +405 -0
- package/dist/resources/extensions/gsd/tests/derive-state-deps.test.ts +421 -0
- package/dist/resources/extensions/gsd/tests/derive-state-draft.test.ts +308 -0
- package/dist/resources/extensions/gsd/tests/derive-state.test.ts +788 -0
- package/dist/resources/extensions/gsd/tests/detection.test.ts +398 -0
- package/dist/resources/extensions/gsd/tests/diff-context.test.ts +136 -0
- package/dist/resources/extensions/gsd/tests/discuss-prompt.test.ts +15 -0
- package/dist/resources/extensions/gsd/tests/dispatch-guard.test.ts +128 -0
- package/dist/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +132 -0
- package/dist/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +126 -0
- package/dist/resources/extensions/gsd/tests/doctor-environment.test.ts +314 -0
- package/dist/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +245 -0
- package/dist/resources/extensions/gsd/tests/doctor-git.test.ts +344 -0
- package/dist/resources/extensions/gsd/tests/doctor-proactive.test.ts +278 -0
- package/dist/resources/extensions/gsd/tests/doctor-providers.test.ts +298 -0
- package/dist/resources/extensions/gsd/tests/doctor-runtime.test.ts +302 -0
- package/dist/resources/extensions/gsd/tests/doctor.test.ts +652 -0
- package/dist/resources/extensions/gsd/tests/draft-promotion.test.ts +169 -0
- package/dist/resources/extensions/gsd/tests/exit-command.test.ts +50 -0
- package/dist/resources/extensions/gsd/tests/export-html-all.test.ts +105 -0
- package/dist/resources/extensions/gsd/tests/export-html-enhancements.test.ts +378 -0
- package/dist/resources/extensions/gsd/tests/extension-selector-separator.test.ts +144 -0
- package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +424 -0
- package/dist/resources/extensions/gsd/tests/git-self-heal.test.ts +131 -0
- package/dist/resources/extensions/gsd/tests/git-service.test.ts +1181 -0
- package/dist/resources/extensions/gsd/tests/gsd-db.test.ts +353 -0
- package/dist/resources/extensions/gsd/tests/gsd-inspect.test.ts +125 -0
- package/dist/resources/extensions/gsd/tests/gsd-tools.test.ts +326 -0
- package/dist/resources/extensions/gsd/tests/headless-answers.test.ts +340 -0
- package/dist/resources/extensions/gsd/tests/headless-query.test.ts +162 -0
- package/dist/resources/extensions/gsd/tests/idle-recovery.test.ts +485 -0
- package/dist/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +32 -0
- package/dist/resources/extensions/gsd/tests/init-wizard.test.ts +197 -0
- package/dist/resources/extensions/gsd/tests/integration/headless-command.ts +534 -0
- package/dist/resources/extensions/gsd/tests/integration-edge.test.ts +228 -0
- package/dist/resources/extensions/gsd/tests/integration-lifecycle.test.ts +277 -0
- package/dist/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +523 -0
- package/dist/resources/extensions/gsd/tests/key-manager.test.ts +414 -0
- package/dist/resources/extensions/gsd/tests/knowledge.test.ts +161 -0
- package/dist/resources/extensions/gsd/tests/loop-regression.test.ts +877 -0
- package/dist/resources/extensions/gsd/tests/manifest-status.test.ts +283 -0
- package/dist/resources/extensions/gsd/tests/marketplace-test-fixtures.ts +91 -0
- package/dist/resources/extensions/gsd/tests/md-importer.test.ts +410 -0
- package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +356 -0
- package/dist/resources/extensions/gsd/tests/memory-extractor.test.ts +180 -0
- package/dist/resources/extensions/gsd/tests/memory-leak-guards.test.ts +91 -0
- package/dist/resources/extensions/gsd/tests/memory-store.test.ts +345 -0
- package/dist/resources/extensions/gsd/tests/metrics.test.ts +253 -0
- package/dist/resources/extensions/gsd/tests/migrate-command.test.ts +369 -0
- package/dist/resources/extensions/gsd/tests/migrate-parser.test.ts +757 -0
- package/dist/resources/extensions/gsd/tests/migrate-transformer.test.ts +635 -0
- package/dist/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +414 -0
- package/dist/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +303 -0
- package/dist/resources/extensions/gsd/tests/migrate-writer.test.ts +398 -0
- package/dist/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +147 -0
- package/dist/resources/extensions/gsd/tests/model-cost-table.test.ts +69 -0
- package/dist/resources/extensions/gsd/tests/model-isolation.test.ts +157 -0
- package/dist/resources/extensions/gsd/tests/model-router.test.ts +167 -0
- package/dist/resources/extensions/gsd/tests/must-have-parser.test.ts +291 -0
- package/dist/resources/extensions/gsd/tests/namespaced-registry.test.ts +1027 -0
- package/dist/resources/extensions/gsd/tests/namespaced-resolver.test.ts +671 -0
- package/dist/resources/extensions/gsd/tests/native-has-changes-cache.test.ts +61 -0
- package/dist/resources/extensions/gsd/tests/next-milestone-id.test.ts +23 -0
- package/dist/resources/extensions/gsd/tests/none-mode-gates.test.ts +114 -0
- package/dist/resources/extensions/gsd/tests/notifications.test.ts +67 -0
- package/dist/resources/extensions/gsd/tests/overrides.test.ts +131 -0
- package/dist/resources/extensions/gsd/tests/parallel-budget-atomicity.test.ts +331 -0
- package/dist/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +298 -0
- package/dist/resources/extensions/gsd/tests/parallel-merge.test.ts +468 -0
- package/dist/resources/extensions/gsd/tests/parallel-orchestration.test.ts +685 -0
- package/dist/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +171 -0
- package/dist/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +354 -0
- package/dist/resources/extensions/gsd/tests/park-edge-cases.test.ts +276 -0
- package/dist/resources/extensions/gsd/tests/park-milestone.test.ts +401 -0
- package/dist/resources/extensions/gsd/tests/parsers.test.ts +1704 -0
- package/dist/resources/extensions/gsd/tests/plan-milestone.test.ts +133 -0
- package/dist/resources/extensions/gsd/tests/plan-quality-validator.test.ts +363 -0
- package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +42 -0
- package/dist/resources/extensions/gsd/tests/plugin-importer-live.test.ts +481 -0
- package/dist/resources/extensions/gsd/tests/plugin-importer.test.ts +1383 -0
- package/dist/resources/extensions/gsd/tests/post-unit-hooks.test.ts +337 -0
- package/dist/resources/extensions/gsd/tests/preferences.test.ts +276 -0
- package/dist/resources/extensions/gsd/tests/progress-score.test.ts +206 -0
- package/dist/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +464 -0
- package/dist/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +314 -0
- package/dist/resources/extensions/gsd/tests/prompt-compressor.test.ts +529 -0
- package/dist/resources/extensions/gsd/tests/prompt-db.test.ts +385 -0
- package/dist/resources/extensions/gsd/tests/prompt-ordering.test.ts +296 -0
- package/dist/resources/extensions/gsd/tests/provider-errors.test.ts +338 -0
- package/dist/resources/extensions/gsd/tests/queue-draft-detection.test.ts +126 -0
- package/dist/resources/extensions/gsd/tests/queue-order.test.ts +204 -0
- package/dist/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +282 -0
- package/dist/resources/extensions/gsd/tests/reassess-detection.test.ts +154 -0
- package/dist/resources/extensions/gsd/tests/reassess-prompt.test.ts +145 -0
- package/dist/resources/extensions/gsd/tests/regex-hardening.test.ts +281 -0
- package/dist/resources/extensions/gsd/tests/remote-questions.test.ts +642 -0
- package/dist/resources/extensions/gsd/tests/remote-status.test.ts +99 -0
- package/dist/resources/extensions/gsd/tests/replan-slice.test.ts +538 -0
- package/dist/resources/extensions/gsd/tests/requirements.test.ts +106 -0
- package/dist/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +358 -0
- package/dist/resources/extensions/gsd/tests/roadmap-slices.test.ts +66 -0
- package/dist/resources/extensions/gsd/tests/routing-history.test.ts +240 -0
- package/dist/resources/extensions/gsd/tests/run-uat.test.ts +416 -0
- package/dist/resources/extensions/gsd/tests/secure-env-collect.test.ts +185 -0
- package/dist/resources/extensions/gsd/tests/semantic-chunker.test.ts +426 -0
- package/dist/resources/extensions/gsd/tests/session-lock-regression.test.ts +216 -0
- package/dist/resources/extensions/gsd/tests/session-lock.test.ts +434 -0
- package/dist/resources/extensions/gsd/tests/skill-lifecycle.test.ts +126 -0
- package/dist/resources/extensions/gsd/tests/smart-entry-draft.test.ts +123 -0
- package/dist/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +142 -0
- package/dist/resources/extensions/gsd/tests/stop-auto-remote.test.ts +156 -0
- package/dist/resources/extensions/gsd/tests/structured-data-formatter.test.ts +365 -0
- package/dist/resources/extensions/gsd/tests/summary-distiller.test.ts +323 -0
- package/dist/resources/extensions/gsd/tests/test-helpers.ts +61 -0
- package/dist/resources/extensions/gsd/tests/token-counter.test.ts +129 -0
- package/dist/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +1272 -0
- package/dist/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +164 -0
- package/dist/resources/extensions/gsd/tests/token-profile.test.ts +268 -0
- package/dist/resources/extensions/gsd/tests/token-savings.test.ts +366 -0
- package/dist/resources/extensions/gsd/tests/triage-dispatch.test.ts +340 -0
- package/dist/resources/extensions/gsd/tests/triage-resolution.test.ts +416 -0
- package/dist/resources/extensions/gsd/tests/undo.test.ts +136 -0
- package/dist/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +219 -0
- package/dist/resources/extensions/gsd/tests/unit-runtime.test.ts +258 -0
- package/dist/resources/extensions/gsd/tests/update-command.test.ts +67 -0
- package/dist/resources/extensions/gsd/tests/validate-directory.test.ts +222 -0
- package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +375 -0
- package/dist/resources/extensions/gsd/tests/verification-evidence.test.ts +745 -0
- package/dist/resources/extensions/gsd/tests/verification-gate.test.ts +1208 -0
- package/dist/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +145 -0
- package/dist/resources/extensions/gsd/tests/visualizer-data.test.ts +446 -0
- package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +237 -0
- package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +718 -0
- package/dist/resources/extensions/gsd/tests/worker-registry.test.ts +148 -0
- package/dist/resources/extensions/gsd/tests/workflow-templates.test.ts +173 -0
- package/dist/resources/extensions/gsd/tests/workspace-index.test.ts +38 -0
- package/dist/resources/extensions/gsd/tests/worktree-bugfix.test.ts +120 -0
- package/dist/resources/extensions/gsd/tests/worktree-e2e.test.ts +244 -0
- package/dist/resources/extensions/gsd/tests/worktree-integration.test.ts +207 -0
- package/dist/resources/extensions/gsd/tests/worktree-manager.test.ts +141 -0
- package/dist/resources/extensions/gsd/tests/worktree-post-create-hook.test.ts +165 -0
- package/dist/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +206 -0
- package/dist/resources/extensions/gsd/tests/worktree.test.ts +171 -0
- package/dist/resources/extensions/gsd/tests/write-gate.test.ts +211 -0
- package/dist/resources/extensions/gsd/token-counter.ts +65 -0
- package/dist/resources/extensions/gsd/triage-resolution.ts +284 -0
- package/dist/resources/extensions/gsd/triage-ui.ts +175 -0
- package/dist/resources/extensions/gsd/types.ts +425 -0
- package/dist/resources/extensions/gsd/undo.ts +223 -0
- package/dist/resources/extensions/gsd/unit-id.ts +14 -0
- package/dist/resources/extensions/gsd/unit-runtime.ts +192 -0
- package/dist/resources/extensions/gsd/validate-directory.ts +164 -0
- package/dist/resources/extensions/gsd/verification-evidence.ts +188 -0
- package/dist/resources/extensions/gsd/verification-gate.ts +643 -0
- package/dist/resources/extensions/gsd/visualizer-data.ts +866 -0
- package/dist/resources/extensions/gsd/visualizer-overlay.ts +566 -0
- package/dist/resources/extensions/gsd/visualizer-views.ts +1171 -0
- package/dist/resources/extensions/gsd/workflow-templates.ts +241 -0
- package/dist/resources/extensions/gsd/workspace-index.ts +217 -0
- package/dist/resources/extensions/gsd/worktree-command.ts +807 -0
- package/dist/resources/extensions/gsd/worktree-manager.ts +449 -0
- package/dist/resources/extensions/gsd/worktree.ts +257 -0
- package/dist/resources/extensions/mac-tools/index.ts +852 -0
- package/dist/resources/extensions/mcp-client/index.ts +459 -0
- package/dist/resources/extensions/remote-questions/config.ts +83 -0
- package/dist/resources/extensions/remote-questions/discord-adapter.ts +148 -0
- package/dist/resources/extensions/remote-questions/format.ts +315 -0
- package/dist/resources/extensions/remote-questions/http-client.ts +76 -0
- package/dist/resources/extensions/remote-questions/manager.ts +184 -0
- package/dist/resources/extensions/remote-questions/{mod.js → mod.ts} +10 -1
- package/dist/resources/extensions/remote-questions/notify.ts +90 -0
- package/dist/resources/extensions/remote-questions/remote-command.ts +457 -0
- package/dist/resources/extensions/remote-questions/slack-adapter.ts +141 -0
- package/dist/resources/extensions/remote-questions/status.ts +31 -0
- package/dist/resources/extensions/remote-questions/store.ts +81 -0
- package/dist/resources/extensions/remote-questions/telegram-adapter.ts +149 -0
- package/dist/resources/extensions/remote-questions/types.ts +102 -0
- package/dist/resources/extensions/search-the-web/cache.ts +78 -0
- package/dist/resources/extensions/search-the-web/command-search-provider.ts +101 -0
- package/dist/resources/extensions/search-the-web/format.ts +258 -0
- package/dist/resources/extensions/search-the-web/http.ts +238 -0
- package/dist/resources/extensions/search-the-web/index.ts +65 -0
- package/dist/resources/extensions/search-the-web/native-search.ts +193 -0
- package/dist/resources/extensions/search-the-web/provider.ts +148 -0
- package/dist/resources/extensions/search-the-web/tavily.ts +116 -0
- package/dist/resources/extensions/search-the-web/tool-fetch-page.ts +589 -0
- package/dist/resources/extensions/search-the-web/tool-llm-context.ts +608 -0
- package/dist/resources/extensions/search-the-web/tool-search.ts +649 -0
- package/dist/resources/extensions/search-the-web/url-utils.ts +125 -0
- package/dist/resources/extensions/shared/confirm-ui.ts +126 -0
- package/dist/resources/extensions/shared/{format-utils.js → format-utils.ts} +91 -85
- package/dist/resources/extensions/shared/frontmatter.ts +117 -0
- package/dist/resources/extensions/shared/interview-ui.ts +613 -0
- package/dist/resources/extensions/shared/{mod.js → mod.ts} +24 -2
- package/dist/resources/extensions/shared/next-action-ui.ts +212 -0
- package/dist/resources/extensions/shared/{path-display.js → path-display.ts} +3 -2
- package/dist/resources/extensions/shared/sanitize.ts +19 -0
- package/dist/resources/extensions/shared/terminal.ts +23 -0
- package/dist/resources/extensions/shared/tests/format-utils.test.ts +153 -0
- package/dist/resources/extensions/shared/ui.ts +400 -0
- package/dist/resources/extensions/shared/wizard-ui.ts +551 -0
- package/dist/resources/extensions/slash-commands/audit.ts +88 -0
- package/dist/resources/extensions/slash-commands/clear.ts +10 -0
- package/dist/resources/extensions/slash-commands/create-extension.ts +297 -0
- package/dist/resources/extensions/slash-commands/create-slash-command.ts +234 -0
- package/dist/resources/extensions/slash-commands/index.ts +12 -0
- package/dist/resources/extensions/subagent/agents.ts +126 -0
- package/dist/resources/extensions/subagent/index.ts +1121 -0
- package/dist/resources/extensions/subagent/isolation.ts +501 -0
- package/dist/resources/extensions/subagent/worker-registry.ts +99 -0
- package/dist/resources/extensions/ttsr/index.ts +168 -0
- package/dist/resources/extensions/ttsr/rule-loader.ts +74 -0
- package/dist/resources/extensions/ttsr/ttsr-manager.ts +456 -0
- package/dist/resources/extensions/universal-config/discovery.ts +104 -0
- package/dist/resources/extensions/universal-config/format.ts +191 -0
- package/dist/resources/extensions/universal-config/index.ts +120 -0
- package/dist/resources/extensions/universal-config/scanners.ts +642 -0
- package/dist/resources/extensions/universal-config/tests/discovery.test.ts +119 -0
- package/dist/resources/extensions/universal-config/tests/format.test.ts +127 -0
- package/dist/resources/extensions/universal-config/tests/scanners.test.ts +456 -0
- package/dist/resources/extensions/universal-config/tools.ts +60 -0
- package/dist/resources/extensions/universal-config/types.ts +135 -0
- package/dist/resources/extensions/voice/index.ts +272 -0
- package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +51 -0
- package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +143 -0
- package/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +0 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.js +4 -31
- package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/index.js +1 -1
- package/packages/pi-coding-agent/dist/index.js.map +1 -1
- package/packages/pi-coding-agent/src/core/extensions/index.ts +0 -1
- package/packages/pi-coding-agent/src/core/extensions/loader.ts +4 -35
- package/packages/pi-coding-agent/src/index.ts +0 -1
- package/src/resources/extensions/bg-shell/index.ts +46 -41
- package/src/resources/extensions/browser-tools/index.ts +67 -156
- package/src/resources/extensions/gsd/auto-verification.ts +2 -20
- package/src/resources/extensions/gsd/auto-worktree.ts +2 -3
- package/src/resources/extensions/gsd/commands.ts +31 -39
- package/src/resources/extensions/gsd/git-service.ts +0 -7
- package/src/resources/extensions/gsd/index.ts +32 -93
- package/src/resources/extensions/gsd/quick.ts +3 -52
- package/src/resources/extensions/gsd/repo-identity.ts +22 -56
- package/src/resources/extensions/gsd/tests/loop-regression.test.ts +4 -1
- package/src/resources/extensions/gsd/tests/verification-gate.test.ts +0 -65
- package/src/resources/extensions/gsd/types.ts +0 -4
- package/src/resources/extensions/gsd/verification-evidence.ts +1 -1
- package/src/resources/extensions/gsd/verification-gate.ts +2 -23
- package/src/resources/extensions/gsd/worktree-command.ts +11 -17
- package/src/resources/extensions/search-the-web/command-search-provider.ts +1 -1
- package/src/resources/extensions/search-the-web/index.ts +52 -35
- package/src/resources/extensions/search-the-web/tavily.ts +1 -1
- package/dist/resources/extensions/ask-user-questions.js +0 -217
- package/dist/resources/extensions/async-jobs/async-bash-tool.js +0 -180
- package/dist/resources/extensions/async-jobs/await-tool.js +0 -90
- package/dist/resources/extensions/async-jobs/cancel-job-tool.js +0 -28
- package/dist/resources/extensions/async-jobs/index.js +0 -119
- package/dist/resources/extensions/async-jobs/job-manager.js +0 -159
- package/dist/resources/extensions/aws-auth/index.js +0 -138
- package/dist/resources/extensions/bg-shell/bg-shell-command.js +0 -182
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +0 -343
- package/dist/resources/extensions/bg-shell/bg-shell-tool.js +0 -831
- package/dist/resources/extensions/bg-shell/index.js +0 -41
- package/dist/resources/extensions/bg-shell/interaction.js +0 -160
- package/dist/resources/extensions/bg-shell/output-formatter.js +0 -245
- package/dist/resources/extensions/bg-shell/overlay.js +0 -378
- package/dist/resources/extensions/bg-shell/process-manager.js +0 -413
- package/dist/resources/extensions/bg-shell/readiness-detector.js +0 -109
- package/dist/resources/extensions/bg-shell/types.js +0 -96
- package/dist/resources/extensions/bg-shell/utilities.js +0 -50
- package/dist/resources/extensions/browser-tools/capture.js +0 -179
- package/dist/resources/extensions/browser-tools/core.js +0 -899
- package/dist/resources/extensions/browser-tools/index.js +0 -123
- package/dist/resources/extensions/browser-tools/lifecycle.js +0 -222
- package/dist/resources/extensions/browser-tools/refs.js +0 -254
- package/dist/resources/extensions/browser-tools/settle.js +0 -173
- package/dist/resources/extensions/browser-tools/state.js +0 -126
- package/dist/resources/extensions/browser-tools/tools/action-cache.js +0 -179
- package/dist/resources/extensions/browser-tools/tools/assertions.js +0 -320
- package/dist/resources/extensions/browser-tools/tools/codegen.js +0 -242
- package/dist/resources/extensions/browser-tools/tools/device.js +0 -162
- package/dist/resources/extensions/browser-tools/tools/extract.js +0 -191
- package/dist/resources/extensions/browser-tools/tools/forms.js +0 -710
- package/dist/resources/extensions/browser-tools/tools/injection-detect.js +0 -178
- package/dist/resources/extensions/browser-tools/tools/inspection.js +0 -426
- package/dist/resources/extensions/browser-tools/tools/intent.js +0 -556
- package/dist/resources/extensions/browser-tools/tools/interaction.js +0 -776
- package/dist/resources/extensions/browser-tools/tools/navigation.js +0 -208
- package/dist/resources/extensions/browser-tools/tools/network-mock.js +0 -194
- package/dist/resources/extensions/browser-tools/tools/pages.js +0 -280
- package/dist/resources/extensions/browser-tools/tools/pdf.js +0 -74
- package/dist/resources/extensions/browser-tools/tools/refs.js +0 -485
- package/dist/resources/extensions/browser-tools/tools/screenshot.js +0 -87
- package/dist/resources/extensions/browser-tools/tools/session.js +0 -375
- package/dist/resources/extensions/browser-tools/tools/state-persistence.js +0 -180
- package/dist/resources/extensions/browser-tools/tools/visual-diff.js +0 -174
- package/dist/resources/extensions/browser-tools/tools/wait.js +0 -201
- package/dist/resources/extensions/browser-tools/tools/zoom.js +0 -90
- package/dist/resources/extensions/browser-tools/utils.js +0 -490
- package/dist/resources/extensions/context7/index.js +0 -337
- package/dist/resources/extensions/get-secrets-from-user.js +0 -492
- package/dist/resources/extensions/google-search/index.js +0 -373
- package/dist/resources/extensions/gsd/activity-log.js +0 -146
- package/dist/resources/extensions/gsd/atomic-write.js +0 -38
- package/dist/resources/extensions/gsd/auto/session.js +0 -187
- package/dist/resources/extensions/gsd/auto-budget.js +0 -30
- package/dist/resources/extensions/gsd/auto-dashboard.js +0 -509
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +0 -180
- package/dist/resources/extensions/gsd/auto-dispatch.js +0 -382
- package/dist/resources/extensions/gsd/auto-idempotency.js +0 -106
- package/dist/resources/extensions/gsd/auto-model-selection.js +0 -133
- package/dist/resources/extensions/gsd/auto-observability.js +0 -54
- package/dist/resources/extensions/gsd/auto-post-unit.js +0 -495
- package/dist/resources/extensions/gsd/auto-prompts.js +0 -1121
- package/dist/resources/extensions/gsd/auto-recovery.js +0 -550
- package/dist/resources/extensions/gsd/auto-start.js +0 -393
- package/dist/resources/extensions/gsd/auto-stuck-detection.js +0 -165
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +0 -183
- package/dist/resources/extensions/gsd/auto-timers.js +0 -181
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +0 -50
- package/dist/resources/extensions/gsd/auto-unit-closeout.js +0 -30
- package/dist/resources/extensions/gsd/auto-verification.js +0 -209
- package/dist/resources/extensions/gsd/auto-worktree.js +0 -594
- package/dist/resources/extensions/gsd/auto.js +0 -1485
- package/dist/resources/extensions/gsd/captures.js +0 -348
- package/dist/resources/extensions/gsd/claude-import.js +0 -540
- package/dist/resources/extensions/gsd/collision-diagnostics.js +0 -226
- package/dist/resources/extensions/gsd/commands-bootstrap.js +0 -223
- package/dist/resources/extensions/gsd/commands-config.js +0 -89
- package/dist/resources/extensions/gsd/commands-extensions.js +0 -259
- package/dist/resources/extensions/gsd/commands-handlers.js +0 -310
- package/dist/resources/extensions/gsd/commands-inspect.js +0 -70
- package/dist/resources/extensions/gsd/commands-logs.js +0 -468
- package/dist/resources/extensions/gsd/commands-maintenance.js +0 -185
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +0 -660
- package/dist/resources/extensions/gsd/commands-workflow-templates.js +0 -408
- package/dist/resources/extensions/gsd/commands.js +0 -1024
- package/dist/resources/extensions/gsd/complexity-classifier.js +0 -257
- package/dist/resources/extensions/gsd/context-budget.js +0 -187
- package/dist/resources/extensions/gsd/context-store.js +0 -165
- package/dist/resources/extensions/gsd/crash-recovery.js +0 -110
- package/dist/resources/extensions/gsd/dashboard-overlay.js +0 -562
- package/dist/resources/extensions/gsd/db-writer.js +0 -298
- package/dist/resources/extensions/gsd/debug-logger.js +0 -161
- package/dist/resources/extensions/gsd/detection.js +0 -373
- package/dist/resources/extensions/gsd/diff-context.js +0 -168
- package/dist/resources/extensions/gsd/dispatch-guard.js +0 -76
- package/dist/resources/extensions/gsd/doctor-checks.js +0 -563
- package/dist/resources/extensions/gsd/doctor-environment.js +0 -429
- package/dist/resources/extensions/gsd/doctor-format.js +0 -71
- package/dist/resources/extensions/gsd/doctor-proactive.js +0 -239
- package/dist/resources/extensions/gsd/doctor-providers.js +0 -292
- package/dist/resources/extensions/gsd/doctor-types.js +0 -12
- package/dist/resources/extensions/gsd/doctor.js +0 -672
- package/dist/resources/extensions/gsd/error-utils.js +0 -6
- package/dist/resources/extensions/gsd/exit-command.js +0 -11
- package/dist/resources/extensions/gsd/export.js +0 -268
- package/dist/resources/extensions/gsd/file-watcher.js +0 -76
- package/dist/resources/extensions/gsd/files.js +0 -937
- package/dist/resources/extensions/gsd/forensics.js +0 -511
- package/dist/resources/extensions/gsd/git-self-heal.js +0 -113
- package/dist/resources/extensions/gsd/git-service.js +0 -460
- package/dist/resources/extensions/gsd/gsd-db.js +0 -590
- package/dist/resources/extensions/gsd/guided-flow-queue.js +0 -366
- package/dist/resources/extensions/gsd/guided-flow.js +0 -1149
- package/dist/resources/extensions/gsd/health-widget.js +0 -141
- package/dist/resources/extensions/gsd/history.js +0 -118
- package/dist/resources/extensions/gsd/index.js +0 -1250
- package/dist/resources/extensions/gsd/init-wizard.js +0 -479
- package/dist/resources/extensions/gsd/json-persistence.js +0 -62
- package/dist/resources/extensions/gsd/key-manager.js +0 -829
- package/dist/resources/extensions/gsd/marketplace-discovery.js +0 -356
- package/dist/resources/extensions/gsd/md-importer.js +0 -440
- package/dist/resources/extensions/gsd/mechanical-completion.js +0 -351
- package/dist/resources/extensions/gsd/memory-extractor.js +0 -295
- package/dist/resources/extensions/gsd/memory-store.js +0 -351
- package/dist/resources/extensions/gsd/metrics.js +0 -377
- package/dist/resources/extensions/gsd/migrate/command.js +0 -157
- package/dist/resources/extensions/gsd/migrate/index.js +0 -7
- package/dist/resources/extensions/gsd/migrate/parser.js +0 -268
- package/dist/resources/extensions/gsd/migrate/parsers.js +0 -477
- package/dist/resources/extensions/gsd/migrate/preview.js +0 -47
- package/dist/resources/extensions/gsd/migrate/transformer.js +0 -278
- package/dist/resources/extensions/gsd/migrate/types.js +0 -4
- package/dist/resources/extensions/gsd/migrate/validator.js +0 -41
- package/dist/resources/extensions/gsd/migrate/writer.js +0 -477
- package/dist/resources/extensions/gsd/migrate-external.js +0 -130
- package/dist/resources/extensions/gsd/milestone-actions.js +0 -111
- package/dist/resources/extensions/gsd/model-cost-table.js +0 -48
- package/dist/resources/extensions/gsd/model-router.js +0 -187
- package/dist/resources/extensions/gsd/namespaced-registry.js +0 -322
- package/dist/resources/extensions/gsd/namespaced-resolver.js +0 -176
- package/dist/resources/extensions/gsd/native-git-bridge.js +0 -842
- package/dist/resources/extensions/gsd/native-parser-bridge.js +0 -156
- package/dist/resources/extensions/gsd/notifications.js +0 -58
- package/dist/resources/extensions/gsd/observability-validator.js +0 -398
- package/dist/resources/extensions/gsd/parallel-eligibility.js +0 -182
- package/dist/resources/extensions/gsd/parallel-merge.js +0 -121
- package/dist/resources/extensions/gsd/parallel-orchestrator.js +0 -687
- package/dist/resources/extensions/gsd/paths.js +0 -414
- package/dist/resources/extensions/gsd/plugin-importer.js +0 -254
- package/dist/resources/extensions/gsd/post-unit-hooks.js +0 -433
- package/dist/resources/extensions/gsd/preferences-models.js +0 -294
- package/dist/resources/extensions/gsd/preferences-skills.js +0 -154
- package/dist/resources/extensions/gsd/preferences-types.js +0 -73
- package/dist/resources/extensions/gsd/preferences-validation.js +0 -607
- package/dist/resources/extensions/gsd/preferences.js +0 -325
- package/dist/resources/extensions/gsd/progress-score.js +0 -197
- package/dist/resources/extensions/gsd/prompt-cache-optimizer.js +0 -150
- package/dist/resources/extensions/gsd/prompt-compressor.js +0 -393
- package/dist/resources/extensions/gsd/prompt-loader.js +0 -119
- package/dist/resources/extensions/gsd/prompt-ordering.js +0 -170
- package/dist/resources/extensions/gsd/provider-error-pause.js +0 -60
- package/dist/resources/extensions/gsd/queue-order.js +0 -178
- package/dist/resources/extensions/gsd/queue-reorder-ui.js +0 -234
- package/dist/resources/extensions/gsd/quick.js +0 -230
- package/dist/resources/extensions/gsd/repo-identity.js +0 -187
- package/dist/resources/extensions/gsd/roadmap-slices.js +0 -130
- package/dist/resources/extensions/gsd/routing-history.js +0 -210
- package/dist/resources/extensions/gsd/safe-fs.js +0 -52
- package/dist/resources/extensions/gsd/semantic-chunker.js +0 -254
- package/dist/resources/extensions/gsd/session-forensics.js +0 -427
- package/dist/resources/extensions/gsd/session-lock.js +0 -376
- package/dist/resources/extensions/gsd/session-status-io.js +0 -134
- package/dist/resources/extensions/gsd/skill-discovery.js +0 -121
- package/dist/resources/extensions/gsd/skill-health.js +0 -324
- package/dist/resources/extensions/gsd/state.js +0 -653
- package/dist/resources/extensions/gsd/structured-data-formatter.js +0 -97
- package/dist/resources/extensions/gsd/summary-distiller.js +0 -212
- package/dist/resources/extensions/gsd/token-counter.js +0 -54
- package/dist/resources/extensions/gsd/triage-resolution.js +0 -217
- package/dist/resources/extensions/gsd/triage-ui.js +0 -125
- package/dist/resources/extensions/gsd/types.js +0 -4
- package/dist/resources/extensions/gsd/undo.js +0 -210
- package/dist/resources/extensions/gsd/unit-id.js +0 -7
- package/dist/resources/extensions/gsd/unit-runtime.js +0 -130
- package/dist/resources/extensions/gsd/validate-directory.js +0 -143
- package/dist/resources/extensions/gsd/verification-evidence.js +0 -123
- package/dist/resources/extensions/gsd/verification-gate.js +0 -543
- package/dist/resources/extensions/gsd/visualizer-data.js +0 -612
- package/dist/resources/extensions/gsd/visualizer-overlay.js +0 -501
- package/dist/resources/extensions/gsd/visualizer-views.js +0 -893
- package/dist/resources/extensions/gsd/workflow-templates.js +0 -188
- package/dist/resources/extensions/gsd/workspace-index.js +0 -139
- package/dist/resources/extensions/gsd/worktree-command-bootstrap.js +0 -40
- package/dist/resources/extensions/gsd/worktree-command.js +0 -676
- package/dist/resources/extensions/gsd/worktree-manager.js +0 -359
- package/dist/resources/extensions/gsd/worktree.js +0 -236
- package/dist/resources/extensions/mac-tools/index.js +0 -768
- package/dist/resources/extensions/mcp-client/index.js +0 -363
- package/dist/resources/extensions/package.json +0 -3
- package/dist/resources/extensions/remote-questions/config.js +0 -70
- package/dist/resources/extensions/remote-questions/discord-adapter.js +0 -134
- package/dist/resources/extensions/remote-questions/format.js +0 -234
- package/dist/resources/extensions/remote-questions/http-client.js +0 -43
- package/dist/resources/extensions/remote-questions/manager.js +0 -156
- package/dist/resources/extensions/remote-questions/notify.js +0 -89
- package/dist/resources/extensions/remote-questions/remote-command.js +0 -453
- package/dist/resources/extensions/remote-questions/slack-adapter.js +0 -123
- package/dist/resources/extensions/remote-questions/status.js +0 -25
- package/dist/resources/extensions/remote-questions/store.js +0 -70
- package/dist/resources/extensions/remote-questions/telegram-adapter.js +0 -123
- package/dist/resources/extensions/remote-questions/types.js +0 -5
- package/dist/resources/extensions/search-the-web/cache.js +0 -74
- package/dist/resources/extensions/search-the-web/command-search-provider.js +0 -79
- package/dist/resources/extensions/search-the-web/format.js +0 -161
- package/dist/resources/extensions/search-the-web/http.js +0 -178
- package/dist/resources/extensions/search-the-web/index.js +0 -41
- package/dist/resources/extensions/search-the-web/native-search.js +0 -166
- package/dist/resources/extensions/search-the-web/provider.js +0 -143
- package/dist/resources/extensions/search-the-web/tavily.js +0 -82
- package/dist/resources/extensions/search-the-web/tool-fetch-page.js +0 -452
- package/dist/resources/extensions/search-the-web/tool-llm-context.js +0 -455
- package/dist/resources/extensions/search-the-web/tool-search.js +0 -482
- package/dist/resources/extensions/search-the-web/url-utils.js +0 -121
- package/dist/resources/extensions/shared/confirm-ui.js +0 -96
- package/dist/resources/extensions/shared/frontmatter.js +0 -109
- package/dist/resources/extensions/shared/interview-ui.js +0 -569
- package/dist/resources/extensions/shared/next-action-ui.js +0 -168
- package/dist/resources/extensions/shared/sanitize.js +0 -17
- package/dist/resources/extensions/shared/terminal.js +0 -21
- package/dist/resources/extensions/shared/ui.js +0 -245
- package/dist/resources/extensions/shared/wizard-ui.js +0 -478
- package/dist/resources/extensions/slash-commands/audit.js +0 -72
- package/dist/resources/extensions/slash-commands/clear.js +0 -8
- package/dist/resources/extensions/slash-commands/create-extension.js +0 -264
- package/dist/resources/extensions/slash-commands/create-slash-command.js +0 -208
- package/dist/resources/extensions/slash-commands/index.js +0 -10
- package/dist/resources/extensions/subagent/agents.js +0 -103
- package/dist/resources/extensions/subagent/index.js +0 -905
- package/dist/resources/extensions/subagent/isolation.js +0 -384
- package/dist/resources/extensions/subagent/worker-registry.js +0 -73
- package/dist/resources/extensions/ttsr/index.js +0 -144
- package/dist/resources/extensions/ttsr/rule-loader.js +0 -70
- package/dist/resources/extensions/ttsr/ttsr-manager.js +0 -380
- package/dist/resources/extensions/universal-config/discovery.js +0 -94
- package/dist/resources/extensions/universal-config/format.js +0 -178
- package/dist/resources/extensions/universal-config/index.js +0 -99
- package/dist/resources/extensions/universal-config/scanners.js +0 -574
- package/dist/resources/extensions/universal-config/tools.js +0 -57
- package/dist/resources/extensions/universal-config/types.js +0 -8
- package/dist/resources/extensions/voice/index.js +0 -247
- package/dist/startup-timings.d.ts +0 -2
- package/dist/startup-timings.js +0 -22
- package/src/resources/extensions/gsd/commands-bootstrap.ts +0 -252
- package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +0 -281
- package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +0 -71
- package/src/resources/extensions/gsd/worktree-command-bootstrap.ts +0 -46
- package/src/resources/extensions/package.json +0 -3
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GSD Milestone Actions — Park, Unpark, and Discard operations.
|
|
3
|
-
*
|
|
4
|
-
* Park: Creates a PARKED.md marker file. deriveState() skips parked milestones
|
|
5
|
-
* when finding the active milestone, but keeps them in the registry.
|
|
6
|
-
*
|
|
7
|
-
* Unpark: Removes the PARKED.md marker. The milestone resumes normal state
|
|
8
|
-
* derivation (active/pending depending on position and dependencies).
|
|
9
|
-
*
|
|
10
|
-
* Discard: Permanently removes the milestone directory. Also prunes
|
|
11
|
-
* QUEUE-ORDER.json if the discarded milestone was in it.
|
|
12
|
-
*/
|
|
13
|
-
import { existsSync, rmSync, writeFileSync, readFileSync, unlinkSync } from "node:fs";
|
|
14
|
-
import { join } from "node:path";
|
|
15
|
-
import { resolveMilestonePath, resolveMilestoneFile, buildMilestoneFileName, } from "./paths.js";
|
|
16
|
-
import { invalidateAllCaches } from "./cache.js";
|
|
17
|
-
import { loadQueueOrder, saveQueueOrder } from "./queue-order.js";
|
|
18
|
-
// ─── Park ──────────────────────────────────────────────────────────────────
|
|
19
|
-
/**
|
|
20
|
-
* Park a milestone — creates a PARKED.md marker file with reason and timestamp.
|
|
21
|
-
* Parked milestones are skipped during active-milestone discovery but stay on disk.
|
|
22
|
-
* Returns true if successfully parked, false if milestone not found or already parked.
|
|
23
|
-
*/
|
|
24
|
-
export function parkMilestone(basePath, milestoneId, reason) {
|
|
25
|
-
const mDir = resolveMilestonePath(basePath, milestoneId);
|
|
26
|
-
if (!mDir || !existsSync(mDir))
|
|
27
|
-
return false;
|
|
28
|
-
// Guard: do not park a completed milestone — it would corrupt depends_on satisfaction
|
|
29
|
-
const summaryFile = resolveMilestoneFile(basePath, milestoneId, "SUMMARY");
|
|
30
|
-
if (summaryFile)
|
|
31
|
-
return false;
|
|
32
|
-
const parkedPath = join(mDir, buildMilestoneFileName(milestoneId, "PARKED"));
|
|
33
|
-
if (existsSync(parkedPath))
|
|
34
|
-
return false; // already parked
|
|
35
|
-
const content = [
|
|
36
|
-
"---",
|
|
37
|
-
`parked_at: ${new Date().toISOString()}`,
|
|
38
|
-
`reason: "${reason.replace(/"/g, '\\"')}"`,
|
|
39
|
-
"---",
|
|
40
|
-
"",
|
|
41
|
-
`# ${milestoneId} — Parked`,
|
|
42
|
-
"",
|
|
43
|
-
`> ${reason}`,
|
|
44
|
-
"",
|
|
45
|
-
].join("\n");
|
|
46
|
-
writeFileSync(parkedPath, content, "utf-8");
|
|
47
|
-
invalidateAllCaches();
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
// ─── Unpark ────────────────────────────────────────────────────────────────
|
|
51
|
-
/**
|
|
52
|
-
* Unpark a milestone — removes the PARKED.md marker file.
|
|
53
|
-
* Returns true if successfully unparked, false if milestone not found or not parked.
|
|
54
|
-
*/
|
|
55
|
-
export function unparkMilestone(basePath, milestoneId) {
|
|
56
|
-
const mDir = resolveMilestonePath(basePath, milestoneId);
|
|
57
|
-
if (!mDir || !existsSync(mDir))
|
|
58
|
-
return false;
|
|
59
|
-
const parkedPath = join(mDir, buildMilestoneFileName(milestoneId, "PARKED"));
|
|
60
|
-
if (!existsSync(parkedPath))
|
|
61
|
-
return false; // not parked
|
|
62
|
-
unlinkSync(parkedPath);
|
|
63
|
-
invalidateAllCaches();
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
// ─── Discard ───────────────────────────────────────────────────────────────
|
|
67
|
-
/**
|
|
68
|
-
* Discard a milestone — permanently removes the milestone directory and
|
|
69
|
-
* prunes it from QUEUE-ORDER.json if present.
|
|
70
|
-
* Returns true if successfully discarded, false if milestone not found.
|
|
71
|
-
*/
|
|
72
|
-
export function discardMilestone(basePath, milestoneId) {
|
|
73
|
-
const mDir = resolveMilestonePath(basePath, milestoneId);
|
|
74
|
-
if (!mDir || !existsSync(mDir))
|
|
75
|
-
return false;
|
|
76
|
-
rmSync(mDir, { recursive: true, force: true });
|
|
77
|
-
// Prune from queue order if present
|
|
78
|
-
const order = loadQueueOrder(basePath);
|
|
79
|
-
if (order && order.includes(milestoneId)) {
|
|
80
|
-
saveQueueOrder(basePath, order.filter(id => id !== milestoneId));
|
|
81
|
-
}
|
|
82
|
-
invalidateAllCaches();
|
|
83
|
-
return true;
|
|
84
|
-
}
|
|
85
|
-
// ─── Query ─────────────────────────────────────────────────────────────────
|
|
86
|
-
/**
|
|
87
|
-
* Check whether a milestone is parked (PARKED.md exists).
|
|
88
|
-
*/
|
|
89
|
-
export function isParked(basePath, milestoneId) {
|
|
90
|
-
return !!resolveMilestoneFile(basePath, milestoneId, "PARKED");
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Read the park reason from PARKED.md frontmatter.
|
|
94
|
-
* Returns null if the milestone is not parked or the reason can't be extracted.
|
|
95
|
-
*/
|
|
96
|
-
export function getParkedReason(basePath, milestoneId) {
|
|
97
|
-
const parkedFile = resolveMilestoneFile(basePath, milestoneId, "PARKED");
|
|
98
|
-
if (!parkedFile)
|
|
99
|
-
return null;
|
|
100
|
-
try {
|
|
101
|
-
const content = readFileSync(parkedFile, "utf-8");
|
|
102
|
-
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
103
|
-
if (!match)
|
|
104
|
-
return null;
|
|
105
|
-
const reasonMatch = match[1].match(/reason:\s*"([^"]*?)"/);
|
|
106
|
-
return reasonMatch ? reasonMatch[1] : null;
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// GSD Extension — Model Cost Table
|
|
2
|
-
// Static cost reference for known models, used by the dynamic router
|
|
3
|
-
// for cross-provider cost comparison.
|
|
4
|
-
//
|
|
5
|
-
// Costs are approximate per-1K-token rates in USD (input tokens).
|
|
6
|
-
// Updated with GSD releases. Users can override via preferences.
|
|
7
|
-
/**
|
|
8
|
-
* Bundled cost table for known models.
|
|
9
|
-
* Updated periodically with GSD releases.
|
|
10
|
-
*/
|
|
11
|
-
export const BUNDLED_COST_TABLE = [
|
|
12
|
-
// Anthropic
|
|
13
|
-
{ id: "claude-opus-4-6", inputPer1k: 0.015, outputPer1k: 0.075, updatedAt: "2025-03-15" },
|
|
14
|
-
{ id: "claude-sonnet-4-6", inputPer1k: 0.003, outputPer1k: 0.015, updatedAt: "2025-03-15" },
|
|
15
|
-
{ id: "claude-haiku-4-5", inputPer1k: 0.0008, outputPer1k: 0.004, updatedAt: "2025-03-15" },
|
|
16
|
-
{ id: "claude-sonnet-4-5-20250514", inputPer1k: 0.003, outputPer1k: 0.015, updatedAt: "2025-03-15" },
|
|
17
|
-
{ id: "claude-3-5-sonnet-latest", inputPer1k: 0.003, outputPer1k: 0.015, updatedAt: "2025-03-15" },
|
|
18
|
-
{ id: "claude-3-5-haiku-latest", inputPer1k: 0.0008, outputPer1k: 0.004, updatedAt: "2025-03-15" },
|
|
19
|
-
{ id: "claude-3-opus-latest", inputPer1k: 0.015, outputPer1k: 0.075, updatedAt: "2025-03-15" },
|
|
20
|
-
// OpenAI
|
|
21
|
-
{ id: "gpt-4o", inputPer1k: 0.0025, outputPer1k: 0.01, updatedAt: "2025-03-15" },
|
|
22
|
-
{ id: "gpt-4o-mini", inputPer1k: 0.00015, outputPer1k: 0.0006, updatedAt: "2025-03-15" },
|
|
23
|
-
{ id: "o1", inputPer1k: 0.015, outputPer1k: 0.06, updatedAt: "2025-03-15" },
|
|
24
|
-
{ id: "o3", inputPer1k: 0.015, outputPer1k: 0.06, updatedAt: "2025-03-15" },
|
|
25
|
-
{ id: "gpt-4-turbo", inputPer1k: 0.01, outputPer1k: 0.03, updatedAt: "2025-03-15" },
|
|
26
|
-
// Google
|
|
27
|
-
{ id: "gemini-2.0-flash", inputPer1k: 0.0001, outputPer1k: 0.0004, updatedAt: "2025-03-15" },
|
|
28
|
-
{ id: "gemini-flash-2.0", inputPer1k: 0.0001, outputPer1k: 0.0004, updatedAt: "2025-03-15" },
|
|
29
|
-
{ id: "gemini-2.5-pro", inputPer1k: 0.00125, outputPer1k: 0.005, updatedAt: "2025-03-15" },
|
|
30
|
-
// DeepSeek
|
|
31
|
-
{ id: "deepseek-chat", inputPer1k: 0.00014, outputPer1k: 0.00028, updatedAt: "2025-03-15" },
|
|
32
|
-
];
|
|
33
|
-
/**
|
|
34
|
-
* Lookup cost for a model ID. Returns undefined if not found.
|
|
35
|
-
*/
|
|
36
|
-
export function lookupModelCost(modelId) {
|
|
37
|
-
const bareId = modelId.includes("/") ? modelId.split("/").pop() : modelId;
|
|
38
|
-
return BUNDLED_COST_TABLE.find(e => e.id === bareId)
|
|
39
|
-
?? BUNDLED_COST_TABLE.find(e => bareId.includes(e.id) || e.id.includes(bareId));
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Compare two models by input cost. Returns negative if a is cheaper.
|
|
43
|
-
*/
|
|
44
|
-
export function compareModelCost(modelIdA, modelIdB) {
|
|
45
|
-
const costA = lookupModelCost(modelIdA)?.inputPer1k ?? 999;
|
|
46
|
-
const costB = lookupModelCost(modelIdB)?.inputPer1k ?? 999;
|
|
47
|
-
return costA - costB;
|
|
48
|
-
}
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
// GSD Extension — Dynamic Model Router
|
|
2
|
-
// Maps complexity tiers to models, enforcing downgrade-only semantics.
|
|
3
|
-
// The user's configured model is always the ceiling.
|
|
4
|
-
import { tierOrdinal } from "./complexity-classifier.js";
|
|
5
|
-
// ─── Known Model Tiers ───────────────────────────────────────────────────────
|
|
6
|
-
// Maps known model IDs to their capability tier. Used when tier_models is not
|
|
7
|
-
// explicitly configured to pick the best available model for each tier.
|
|
8
|
-
const MODEL_CAPABILITY_TIER = {
|
|
9
|
-
// Light-tier models (cheapest)
|
|
10
|
-
"claude-haiku-4-5": "light",
|
|
11
|
-
"claude-3-5-haiku-latest": "light",
|
|
12
|
-
"claude-3-haiku-20240307": "light",
|
|
13
|
-
"gpt-4o-mini": "light",
|
|
14
|
-
"gemini-2.0-flash": "light",
|
|
15
|
-
"gemini-flash-2.0": "light",
|
|
16
|
-
// Standard-tier models
|
|
17
|
-
"claude-sonnet-4-6": "standard",
|
|
18
|
-
"claude-sonnet-4-5-20250514": "standard",
|
|
19
|
-
"claude-3-5-sonnet-latest": "standard",
|
|
20
|
-
"gpt-4o": "standard",
|
|
21
|
-
"gemini-2.5-pro": "standard",
|
|
22
|
-
"deepseek-chat": "standard",
|
|
23
|
-
// Heavy-tier models (most capable)
|
|
24
|
-
"claude-opus-4-6": "heavy",
|
|
25
|
-
"claude-3-opus-latest": "heavy",
|
|
26
|
-
"gpt-4-turbo": "heavy",
|
|
27
|
-
"o1": "heavy",
|
|
28
|
-
"o3": "heavy",
|
|
29
|
-
};
|
|
30
|
-
// ─── Cost Table (per 1K input tokens, approximate USD) ───────────────────────
|
|
31
|
-
// Used for cross-provider cost comparison when multiple providers offer
|
|
32
|
-
// the same capability tier.
|
|
33
|
-
const MODEL_COST_PER_1K_INPUT = {
|
|
34
|
-
"claude-haiku-4-5": 0.0008,
|
|
35
|
-
"claude-3-5-haiku-latest": 0.0008,
|
|
36
|
-
"claude-sonnet-4-6": 0.003,
|
|
37
|
-
"claude-sonnet-4-5-20250514": 0.003,
|
|
38
|
-
"claude-opus-4-6": 0.015,
|
|
39
|
-
"gpt-4o-mini": 0.00015,
|
|
40
|
-
"gpt-4o": 0.0025,
|
|
41
|
-
"gemini-2.0-flash": 0.0001,
|
|
42
|
-
"gemini-2.5-pro": 0.00125,
|
|
43
|
-
"deepseek-chat": 0.00014,
|
|
44
|
-
};
|
|
45
|
-
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
46
|
-
/**
|
|
47
|
-
* Resolve the model to use for a given complexity tier.
|
|
48
|
-
*
|
|
49
|
-
* Downgrade-only: the returned model is always equal to or cheaper than
|
|
50
|
-
* the user's configured primary model. Never upgrades beyond configuration.
|
|
51
|
-
*
|
|
52
|
-
* @param classification The complexity classification result
|
|
53
|
-
* @param phaseConfig The user's configured model for this phase (ceiling)
|
|
54
|
-
* @param routingConfig Dynamic routing configuration
|
|
55
|
-
* @param availableModelIds List of available model IDs (from registry)
|
|
56
|
-
*/
|
|
57
|
-
export function resolveModelForComplexity(classification, phaseConfig, routingConfig, availableModelIds) {
|
|
58
|
-
// If no phase config or routing disabled, pass through
|
|
59
|
-
if (!phaseConfig || !routingConfig.enabled) {
|
|
60
|
-
return {
|
|
61
|
-
modelId: phaseConfig?.primary ?? "",
|
|
62
|
-
fallbacks: phaseConfig?.fallbacks ?? [],
|
|
63
|
-
tier: classification.tier,
|
|
64
|
-
wasDowngraded: false,
|
|
65
|
-
reason: "dynamic routing disabled or no phase config",
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
const configuredPrimary = phaseConfig.primary;
|
|
69
|
-
const configuredTier = getModelTier(configuredPrimary);
|
|
70
|
-
const requestedTier = classification.tier;
|
|
71
|
-
// Downgrade-only: if requested tier >= configured tier, no change
|
|
72
|
-
if (tierOrdinal(requestedTier) >= tierOrdinal(configuredTier)) {
|
|
73
|
-
return {
|
|
74
|
-
modelId: configuredPrimary,
|
|
75
|
-
fallbacks: phaseConfig.fallbacks,
|
|
76
|
-
tier: requestedTier,
|
|
77
|
-
wasDowngraded: false,
|
|
78
|
-
reason: `tier ${requestedTier} >= configured ${configuredTier}`,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
// Find the best model for the requested tier
|
|
82
|
-
const targetModelId = findModelForTier(requestedTier, routingConfig, availableModelIds, routingConfig.cross_provider !== false);
|
|
83
|
-
if (!targetModelId) {
|
|
84
|
-
// No suitable model found — use configured primary
|
|
85
|
-
return {
|
|
86
|
-
modelId: configuredPrimary,
|
|
87
|
-
fallbacks: phaseConfig.fallbacks,
|
|
88
|
-
tier: requestedTier,
|
|
89
|
-
wasDowngraded: false,
|
|
90
|
-
reason: `no ${requestedTier}-tier model available`,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
// Build fallback chain: [downgraded_model, ...configured_fallbacks, configured_primary]
|
|
94
|
-
const fallbacks = [
|
|
95
|
-
...phaseConfig.fallbacks.filter(f => f !== targetModelId),
|
|
96
|
-
configuredPrimary,
|
|
97
|
-
].filter(f => f !== targetModelId);
|
|
98
|
-
return {
|
|
99
|
-
modelId: targetModelId,
|
|
100
|
-
fallbacks,
|
|
101
|
-
tier: requestedTier,
|
|
102
|
-
wasDowngraded: true,
|
|
103
|
-
reason: classification.reason,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Escalate to the next tier after a failure.
|
|
108
|
-
* Returns the new tier, or null if already at heavy (max).
|
|
109
|
-
*/
|
|
110
|
-
export function escalateTier(currentTier) {
|
|
111
|
-
switch (currentTier) {
|
|
112
|
-
case "light": return "standard";
|
|
113
|
-
case "standard": return "heavy";
|
|
114
|
-
case "heavy": return null;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Get the default routing config (all features enabled).
|
|
119
|
-
*/
|
|
120
|
-
export function defaultRoutingConfig() {
|
|
121
|
-
return {
|
|
122
|
-
enabled: false,
|
|
123
|
-
escalate_on_failure: true,
|
|
124
|
-
budget_pressure: true,
|
|
125
|
-
cross_provider: true,
|
|
126
|
-
hooks: true,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
// ─── Internal ────────────────────────────────────────────────────────────────
|
|
130
|
-
function getModelTier(modelId) {
|
|
131
|
-
// Strip provider prefix if present
|
|
132
|
-
const bareId = modelId.includes("/") ? modelId.split("/").pop() : modelId;
|
|
133
|
-
// Check exact match first
|
|
134
|
-
if (MODEL_CAPABILITY_TIER[bareId])
|
|
135
|
-
return MODEL_CAPABILITY_TIER[bareId];
|
|
136
|
-
// Check if any known model ID is a prefix/suffix match
|
|
137
|
-
for (const [knownId, tier] of Object.entries(MODEL_CAPABILITY_TIER)) {
|
|
138
|
-
if (bareId.includes(knownId) || knownId.includes(bareId))
|
|
139
|
-
return tier;
|
|
140
|
-
}
|
|
141
|
-
// Unknown models are assumed heavy (safest assumption)
|
|
142
|
-
return "heavy";
|
|
143
|
-
}
|
|
144
|
-
function findModelForTier(tier, config, availableModelIds, crossProvider) {
|
|
145
|
-
// 1. Check explicit tier_models config
|
|
146
|
-
const explicitModel = config.tier_models?.[tier];
|
|
147
|
-
if (explicitModel && availableModelIds.includes(explicitModel)) {
|
|
148
|
-
return explicitModel;
|
|
149
|
-
}
|
|
150
|
-
// Also check with provider prefix stripped
|
|
151
|
-
if (explicitModel) {
|
|
152
|
-
const match = availableModelIds.find(id => {
|
|
153
|
-
const bareAvail = id.includes("/") ? id.split("/").pop() : id;
|
|
154
|
-
const bareExplicit = explicitModel.includes("/") ? explicitModel.split("/").pop() : explicitModel;
|
|
155
|
-
return bareAvail === bareExplicit;
|
|
156
|
-
});
|
|
157
|
-
if (match)
|
|
158
|
-
return match;
|
|
159
|
-
}
|
|
160
|
-
// 2. Auto-detect: find the cheapest available model in the requested tier
|
|
161
|
-
const candidates = availableModelIds
|
|
162
|
-
.filter(id => {
|
|
163
|
-
const modelTier = getModelTier(id);
|
|
164
|
-
return modelTier === tier;
|
|
165
|
-
})
|
|
166
|
-
.sort((a, b) => {
|
|
167
|
-
if (!crossProvider)
|
|
168
|
-
return 0;
|
|
169
|
-
const costA = getModelCost(a);
|
|
170
|
-
const costB = getModelCost(b);
|
|
171
|
-
return costA - costB;
|
|
172
|
-
});
|
|
173
|
-
return candidates[0] ?? null;
|
|
174
|
-
}
|
|
175
|
-
function getModelCost(modelId) {
|
|
176
|
-
const bareId = modelId.includes("/") ? modelId.split("/").pop() : modelId;
|
|
177
|
-
if (MODEL_COST_PER_1K_INPUT[bareId] !== undefined) {
|
|
178
|
-
return MODEL_COST_PER_1K_INPUT[bareId];
|
|
179
|
-
}
|
|
180
|
-
// Check partial matches
|
|
181
|
-
for (const [knownId, cost] of Object.entries(MODEL_COST_PER_1K_INPUT)) {
|
|
182
|
-
if (bareId.includes(knownId) || knownId.includes(bareId))
|
|
183
|
-
return cost;
|
|
184
|
-
}
|
|
185
|
-
// Unknown cost — assume expensive to avoid routing to unknown cheap models
|
|
186
|
-
return 999;
|
|
187
|
-
}
|
|
@@ -1,322 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Namespaced Component Registry Module
|
|
3
|
-
*
|
|
4
|
-
* Provides the canonical identity model for imported plugin components.
|
|
5
|
-
* Supports both namespaced (plugin:component) and flat (bare name) components,
|
|
6
|
-
* detects collisions at registration time, and provides lookup by canonical name
|
|
7
|
-
* or namespace listing.
|
|
8
|
-
*
|
|
9
|
-
* This registry serves as the bridge between S01's plugin discovery output
|
|
10
|
-
* and Pi's internal component resolution system.
|
|
11
|
-
*/
|
|
12
|
-
// ============================================================================
|
|
13
|
-
// NamespacedRegistry Class
|
|
14
|
-
// ============================================================================
|
|
15
|
-
/**
|
|
16
|
-
* Registry for namespaced plugin components.
|
|
17
|
-
*
|
|
18
|
-
* Features:
|
|
19
|
-
* - Computes canonical names from namespace + name
|
|
20
|
-
* - Detects and reports collisions at registration time
|
|
21
|
-
* - First registration wins; subsequent duplicates return diagnostic
|
|
22
|
-
* - Lookup by canonical name or namespace listing
|
|
23
|
-
* - Compatible with both namespaced and flat (non-namespaced) components
|
|
24
|
-
*
|
|
25
|
-
* Usage:
|
|
26
|
-
* ```typescript
|
|
27
|
-
* const registry = new NamespacedRegistry();
|
|
28
|
-
*
|
|
29
|
-
* // Register a namespaced component
|
|
30
|
-
* const diag = registry.register({
|
|
31
|
-
* name: 'code-review',
|
|
32
|
-
* namespace: 'my-plugin',
|
|
33
|
-
* type: 'skill',
|
|
34
|
-
* filePath: '/plugins/my-plugin/skills/code-review/SKILL.md',
|
|
35
|
-
* source: 'plugin:my-plugin',
|
|
36
|
-
* description: 'Reviews code for quality issues',
|
|
37
|
-
* metadata: { pluginVersion: '1.0.0' }
|
|
38
|
-
* });
|
|
39
|
-
*
|
|
40
|
-
* // Lookup by canonical name
|
|
41
|
-
* const skill = registry.getByCanonical('my-plugin:code-review');
|
|
42
|
-
*
|
|
43
|
-
* // List all components in a namespace
|
|
44
|
-
* const allSkills = registry.getByNamespace('my-plugin');
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
export class NamespacedRegistry {
|
|
48
|
-
/** Internal storage: canonicalName -> component */
|
|
49
|
-
components = new Map();
|
|
50
|
-
/** Internal storage: alias -> canonicalName */
|
|
51
|
-
aliasMap = new Map();
|
|
52
|
-
/** Collision diagnostics collected during registration */
|
|
53
|
-
diagnostics = [];
|
|
54
|
-
/**
|
|
55
|
-
* Register a component in the registry.
|
|
56
|
-
*
|
|
57
|
-
* Computes the canonical name as `${namespace}:${name}` when namespace is present,
|
|
58
|
-
* or bare `name` otherwise. Returns a diagnostic if the canonical name already exists.
|
|
59
|
-
*
|
|
60
|
-
* @param component - Component data (without canonicalName, which is computed)
|
|
61
|
-
* @returns Diagnostic if collision detected, undefined otherwise
|
|
62
|
-
*/
|
|
63
|
-
register(component) {
|
|
64
|
-
// Compute canonical name
|
|
65
|
-
const canonicalName = component.namespace
|
|
66
|
-
? `${component.namespace}:${component.name}`
|
|
67
|
-
: component.name;
|
|
68
|
-
// Create full component with canonical name
|
|
69
|
-
const fullComponent = {
|
|
70
|
-
...component,
|
|
71
|
-
canonicalName,
|
|
72
|
-
};
|
|
73
|
-
// Check for collision
|
|
74
|
-
const existing = this.components.get(canonicalName);
|
|
75
|
-
if (existing) {
|
|
76
|
-
const diagnostic = {
|
|
77
|
-
type: 'collision',
|
|
78
|
-
message: `canonical name "${canonicalName}" collision`,
|
|
79
|
-
collision: {
|
|
80
|
-
canonicalName,
|
|
81
|
-
winnerPath: existing.filePath,
|
|
82
|
-
loserPath: component.filePath,
|
|
83
|
-
winnerSource: existing.source,
|
|
84
|
-
loserSource: component.source,
|
|
85
|
-
},
|
|
86
|
-
};
|
|
87
|
-
this.diagnostics.push(diagnostic);
|
|
88
|
-
return diagnostic;
|
|
89
|
-
}
|
|
90
|
-
// Register the component
|
|
91
|
-
this.components.set(canonicalName, fullComponent);
|
|
92
|
-
return undefined;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Get a component by its canonical name.
|
|
96
|
-
*
|
|
97
|
-
* @param canonicalName - The canonical name (e.g., "my-plugin:code-review" or "code-review")
|
|
98
|
-
* @returns The component if found, undefined otherwise
|
|
99
|
-
*/
|
|
100
|
-
getByCanonical(canonicalName) {
|
|
101
|
-
return this.components.get(canonicalName);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Get all components belonging to a specific namespace.
|
|
105
|
-
*
|
|
106
|
-
* @param namespace - The namespace to filter by (e.g., "my-plugin")
|
|
107
|
-
* @returns Array of components in that namespace
|
|
108
|
-
*/
|
|
109
|
-
getByNamespace(namespace) {
|
|
110
|
-
const results = [];
|
|
111
|
-
for (const component of this.components.values()) {
|
|
112
|
-
if (component.namespace === namespace) {
|
|
113
|
-
results.push(component);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return results;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Get all registered components.
|
|
120
|
-
*
|
|
121
|
-
* @returns Array of all components
|
|
122
|
-
*/
|
|
123
|
-
getAll() {
|
|
124
|
-
return Array.from(this.components.values());
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Get all diagnostics collected during registration.
|
|
128
|
-
*
|
|
129
|
-
* Returns deep copies to prevent external mutation of internal state.
|
|
130
|
-
*
|
|
131
|
-
* @returns Array of diagnostics (collisions, etc.)
|
|
132
|
-
*/
|
|
133
|
-
getDiagnostics() {
|
|
134
|
-
return this.diagnostics.map((d) => ({
|
|
135
|
-
type: d.type,
|
|
136
|
-
message: d.message,
|
|
137
|
-
collision: { ...d.collision },
|
|
138
|
-
}));
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Check if a canonical name is already registered.
|
|
142
|
-
*
|
|
143
|
-
* @param canonicalName - The canonical name to check
|
|
144
|
-
* @returns true if registered, false otherwise
|
|
145
|
-
*/
|
|
146
|
-
has(canonicalName) {
|
|
147
|
-
return this.components.has(canonicalName);
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Get the count of registered components.
|
|
151
|
-
*
|
|
152
|
-
* @returns Number of components
|
|
153
|
-
*/
|
|
154
|
-
get size() {
|
|
155
|
-
return this.components.size;
|
|
156
|
-
}
|
|
157
|
-
// ============================================================================
|
|
158
|
-
// Alias Management
|
|
159
|
-
// ============================================================================
|
|
160
|
-
/**
|
|
161
|
-
* Register an alias for a canonical name.
|
|
162
|
-
*
|
|
163
|
-
* Validates:
|
|
164
|
-
* 1. The target canonical name must exist
|
|
165
|
-
* 2. The alias cannot shadow an existing canonical name
|
|
166
|
-
* 3. The alias cannot already exist pointing to a different target
|
|
167
|
-
*
|
|
168
|
-
* @param alias - The short alias (e.g., "py3d")
|
|
169
|
-
* @param canonicalName - The target canonical name (e.g., "python-tools:3d-visualizer")
|
|
170
|
-
* @returns Result indicating success or failure with reason
|
|
171
|
-
*/
|
|
172
|
-
registerAlias(alias, canonicalName) {
|
|
173
|
-
// Check that target canonical name exists
|
|
174
|
-
if (!this.components.has(canonicalName)) {
|
|
175
|
-
return {
|
|
176
|
-
success: false,
|
|
177
|
-
reason: 'canonical-not-found',
|
|
178
|
-
message: `Cannot create alias "${alias}": target canonical name "${canonicalName}" does not exist`,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
// Check that alias doesn't shadow an existing canonical name
|
|
182
|
-
if (this.components.has(alias)) {
|
|
183
|
-
return {
|
|
184
|
-
success: false,
|
|
185
|
-
reason: 'shadows-canonical',
|
|
186
|
-
message: `Cannot create alias "${alias}": it shadows an existing canonical name`,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
// Check for duplicate alias pointing to different target
|
|
190
|
-
const existingTarget = this.aliasMap.get(alias);
|
|
191
|
-
if (existingTarget !== undefined && existingTarget !== canonicalName) {
|
|
192
|
-
return {
|
|
193
|
-
success: false,
|
|
194
|
-
reason: 'duplicate-alias',
|
|
195
|
-
message: `Cannot create alias "${alias}": already exists pointing to "${existingTarget}"`,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
// Register the alias (idempotent if same target)
|
|
199
|
-
this.aliasMap.set(alias, canonicalName);
|
|
200
|
-
return { success: true };
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Remove an alias.
|
|
204
|
-
*
|
|
205
|
-
* @param alias - The alias to remove
|
|
206
|
-
* @returns true if the alias existed and was removed, false otherwise
|
|
207
|
-
*/
|
|
208
|
-
removeAlias(alias) {
|
|
209
|
-
return this.aliasMap.delete(alias);
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Resolve an alias to its canonical name.
|
|
213
|
-
*
|
|
214
|
-
* @param alias - The alias to resolve
|
|
215
|
-
* @returns The canonical name if alias exists, undefined otherwise
|
|
216
|
-
*/
|
|
217
|
-
resolveAlias(alias) {
|
|
218
|
-
return this.aliasMap.get(alias);
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Get all registered aliases.
|
|
222
|
-
*
|
|
223
|
-
* @returns A copy of the alias map (alias -> canonicalName)
|
|
224
|
-
*/
|
|
225
|
-
getAliases() {
|
|
226
|
-
return new Map(this.aliasMap);
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Check if an alias exists.
|
|
230
|
-
*
|
|
231
|
-
* @param alias - The alias to check
|
|
232
|
-
* @returns true if the alias exists, false otherwise
|
|
233
|
-
*/
|
|
234
|
-
hasAlias(alias) {
|
|
235
|
-
return this.aliasMap.has(alias);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
// ============================================================================
|
|
239
|
-
// Discovery Bridge Helper
|
|
240
|
-
// ============================================================================
|
|
241
|
-
/**
|
|
242
|
-
* Convert a discovered plugin's inventory into registerable component entries.
|
|
243
|
-
*
|
|
244
|
-
* This helper bridges S01's discovery output (DiscoveredPlugin) with the
|
|
245
|
-
* namespaced registry. It maps skill and agent directory names to component
|
|
246
|
-
* entries with the plugin's namespace.
|
|
247
|
-
*
|
|
248
|
-
* @param plugin - A discovered plugin from S01's discovery process
|
|
249
|
-
* @returns Array of registerable component entries (without canonicalName)
|
|
250
|
-
*/
|
|
251
|
-
export function componentsFromDiscovery(plugin) {
|
|
252
|
-
const components = [];
|
|
253
|
-
// Use the plugin's canonical name as the namespace
|
|
254
|
-
const namespace = plugin.canonicalName;
|
|
255
|
-
// Extract common metadata from the plugin
|
|
256
|
-
const commonMetadata = {
|
|
257
|
-
pluginVersion: plugin.version,
|
|
258
|
-
pluginAuthor: plugin.author?.name,
|
|
259
|
-
pluginHomepage: plugin.homepage,
|
|
260
|
-
pluginCategory: plugin.category,
|
|
261
|
-
};
|
|
262
|
-
// Process skills
|
|
263
|
-
for (const skillName of plugin.inventory.skills) {
|
|
264
|
-
// Resolve the skill file path
|
|
265
|
-
// Skills are in <plugin>/skills/<name>/SKILL.md or <plugin>/skills/<name>.md
|
|
266
|
-
let filePath;
|
|
267
|
-
if (plugin.resolvedPath) {
|
|
268
|
-
const skillDirPath = `${plugin.resolvedPath}/skills/${skillName}`;
|
|
269
|
-
// Prefer direct markdown file entries, otherwise directory with SKILL.md
|
|
270
|
-
filePath = skillName.endsWith('.md')
|
|
271
|
-
? `${plugin.resolvedPath}/skills/${skillName}`
|
|
272
|
-
: `${skillDirPath}/SKILL.md`;
|
|
273
|
-
}
|
|
274
|
-
else {
|
|
275
|
-
// External plugin - use placeholder path
|
|
276
|
-
filePath = `<external>/${namespace}/skills/${skillName}/SKILL.md`;
|
|
277
|
-
}
|
|
278
|
-
components.push({
|
|
279
|
-
name: skillName.replace(/\.md$/, ''), // Strip .md if present
|
|
280
|
-
namespace,
|
|
281
|
-
type: 'skill',
|
|
282
|
-
filePath,
|
|
283
|
-
source: `plugin:${namespace}`,
|
|
284
|
-
description: undefined, // Would require reading the file
|
|
285
|
-
metadata: {
|
|
286
|
-
...commonMetadata,
|
|
287
|
-
componentDir: skillName,
|
|
288
|
-
},
|
|
289
|
-
});
|
|
290
|
-
}
|
|
291
|
-
// Process agents
|
|
292
|
-
for (const agentName of plugin.inventory.agents) {
|
|
293
|
-
// Resolve the agent file path
|
|
294
|
-
let filePath;
|
|
295
|
-
if (plugin.resolvedPath) {
|
|
296
|
-
const agentDirPath = `${plugin.resolvedPath}/agents/${agentName}`;
|
|
297
|
-
filePath = agentName.endsWith('.md')
|
|
298
|
-
? `${plugin.resolvedPath}/agents/${agentName}`
|
|
299
|
-
: `${agentDirPath}/AGENT.md`;
|
|
300
|
-
}
|
|
301
|
-
else {
|
|
302
|
-
filePath = `<external>/${namespace}/agents/${agentName}/AGENT.md`;
|
|
303
|
-
}
|
|
304
|
-
components.push({
|
|
305
|
-
name: agentName.replace(/\.md$/, ''), // Strip .md if present
|
|
306
|
-
namespace,
|
|
307
|
-
type: 'agent',
|
|
308
|
-
filePath,
|
|
309
|
-
source: `plugin:${namespace}`,
|
|
310
|
-
description: undefined, // Would require reading the file
|
|
311
|
-
metadata: {
|
|
312
|
-
...commonMetadata,
|
|
313
|
-
componentDir: agentName,
|
|
314
|
-
},
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
return components;
|
|
318
|
-
}
|
|
319
|
-
// ============================================================================
|
|
320
|
-
// Exports
|
|
321
|
-
// ============================================================================
|
|
322
|
-
export default NamespacedRegistry;
|