gsd-pi 2.33.0-dev.bafba33 → 2.33.1-dev.235d83a
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 +13 -18
- package/dist/cli.js +16 -0
- package/dist/resource-loader.d.ts +2 -0
- package/dist/resource-loader.js +36 -3
- package/dist/resources/extensions/ask-user-questions.js +217 -0
- package/dist/resources/extensions/async-jobs/async-bash-tool.js +180 -0
- package/dist/resources/extensions/async-jobs/await-tool.js +90 -0
- package/dist/resources/extensions/async-jobs/cancel-job-tool.js +28 -0
- package/dist/resources/extensions/async-jobs/index.js +119 -0
- package/dist/resources/extensions/async-jobs/job-manager.js +159 -0
- package/dist/resources/extensions/aws-auth/index.js +138 -0
- package/dist/resources/extensions/bg-shell/bg-shell-command.js +182 -0
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +343 -0
- package/dist/resources/extensions/bg-shell/bg-shell-tool.js +831 -0
- package/dist/resources/extensions/bg-shell/index.js +41 -0
- package/dist/resources/extensions/bg-shell/interaction.js +160 -0
- package/dist/resources/extensions/bg-shell/output-formatter.js +245 -0
- package/dist/resources/extensions/bg-shell/overlay.js +378 -0
- package/dist/resources/extensions/bg-shell/process-manager.js +413 -0
- package/dist/resources/extensions/bg-shell/readiness-detector.js +109 -0
- package/dist/resources/extensions/bg-shell/types.js +96 -0
- package/dist/resources/extensions/bg-shell/utilities.js +50 -0
- package/dist/resources/extensions/browser-tools/capture.js +179 -0
- package/dist/resources/extensions/browser-tools/core.js +899 -0
- package/dist/resources/extensions/browser-tools/{evaluate-helpers.ts → evaluate-helpers.js} +0 -1
- package/dist/resources/extensions/browser-tools/index.js +123 -0
- package/dist/resources/extensions/browser-tools/lifecycle.js +222 -0
- package/dist/resources/extensions/browser-tools/refs.js +254 -0
- package/dist/resources/extensions/browser-tools/settle.js +173 -0
- package/dist/resources/extensions/browser-tools/state.js +126 -0
- package/dist/resources/extensions/browser-tools/tools/action-cache.js +179 -0
- package/dist/resources/extensions/browser-tools/tools/assertions.js +320 -0
- package/dist/resources/extensions/browser-tools/tools/codegen.js +242 -0
- package/dist/resources/extensions/browser-tools/tools/device.js +162 -0
- package/dist/resources/extensions/browser-tools/tools/extract.js +191 -0
- package/dist/resources/extensions/browser-tools/tools/forms.js +710 -0
- package/dist/resources/extensions/browser-tools/tools/injection-detect.js +178 -0
- package/dist/resources/extensions/browser-tools/tools/inspection.js +426 -0
- package/dist/resources/extensions/browser-tools/tools/intent.js +556 -0
- package/dist/resources/extensions/browser-tools/tools/interaction.js +776 -0
- package/dist/resources/extensions/browser-tools/tools/navigation.js +208 -0
- package/dist/resources/extensions/browser-tools/tools/network-mock.js +194 -0
- package/dist/resources/extensions/browser-tools/tools/pages.js +280 -0
- package/dist/resources/extensions/browser-tools/tools/pdf.js +74 -0
- package/dist/resources/extensions/browser-tools/tools/refs.js +485 -0
- package/dist/resources/extensions/browser-tools/tools/screenshot.js +87 -0
- package/dist/resources/extensions/browser-tools/tools/session.js +375 -0
- package/dist/resources/extensions/browser-tools/tools/state-persistence.js +180 -0
- package/dist/resources/extensions/browser-tools/tools/visual-diff.js +174 -0
- package/dist/resources/extensions/browser-tools/tools/wait.js +201 -0
- package/dist/resources/extensions/browser-tools/tools/zoom.js +90 -0
- package/dist/resources/extensions/browser-tools/utils.js +490 -0
- package/dist/resources/extensions/context7/index.js +337 -0
- package/dist/resources/extensions/get-secrets-from-user.js +492 -0
- package/dist/resources/extensions/google-search/index.js +373 -0
- package/dist/resources/extensions/gsd/activity-log.js +146 -0
- package/dist/resources/extensions/gsd/atomic-write.js +38 -0
- package/dist/resources/extensions/gsd/auto/session.js +187 -0
- package/dist/resources/extensions/gsd/auto-budget.js +30 -0
- package/dist/resources/extensions/gsd/{auto-constants.ts → auto-constants.js} +0 -1
- package/dist/resources/extensions/gsd/auto-dashboard.js +509 -0
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +180 -0
- package/dist/resources/extensions/gsd/auto-dispatch.js +382 -0
- package/dist/resources/extensions/gsd/auto-idempotency.js +106 -0
- package/dist/resources/extensions/gsd/auto-model-selection.js +133 -0
- package/dist/resources/extensions/gsd/auto-observability.js +54 -0
- package/dist/resources/extensions/gsd/auto-post-unit.js +495 -0
- package/dist/resources/extensions/gsd/auto-prompts.js +1121 -0
- package/dist/resources/extensions/gsd/auto-recovery.js +550 -0
- package/dist/resources/extensions/gsd/auto-start.js +393 -0
- package/dist/resources/extensions/gsd/auto-stuck-detection.js +165 -0
- package/dist/resources/extensions/gsd/{auto-supervisor.ts → auto-supervisor.js} +29 -32
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +183 -0
- package/dist/resources/extensions/gsd/auto-timers.js +181 -0
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +50 -0
- package/dist/resources/extensions/gsd/auto-unit-closeout.js +30 -0
- package/dist/resources/extensions/gsd/auto-verification.js +209 -0
- package/dist/resources/extensions/gsd/auto-worktree.js +594 -0
- package/dist/resources/extensions/gsd/auto.js +1485 -0
- package/dist/resources/extensions/gsd/{cache.ts → cache.js} +5 -7
- package/dist/resources/extensions/gsd/captures.js +348 -0
- package/dist/resources/extensions/gsd/claude-import.js +540 -0
- package/dist/resources/extensions/gsd/collision-diagnostics.js +226 -0
- package/dist/resources/extensions/gsd/commands-bootstrap.js +223 -0
- package/dist/resources/extensions/gsd/commands-config.js +89 -0
- package/dist/resources/extensions/gsd/commands-extensions.js +259 -0
- package/dist/resources/extensions/gsd/commands-handlers.js +310 -0
- package/dist/resources/extensions/gsd/commands-inspect.js +70 -0
- package/dist/resources/extensions/gsd/commands-logs.js +468 -0
- package/dist/resources/extensions/gsd/commands-maintenance.js +185 -0
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +660 -0
- package/dist/resources/extensions/gsd/commands-workflow-templates.js +408 -0
- package/dist/resources/extensions/gsd/commands.js +1024 -0
- package/dist/resources/extensions/gsd/complexity-classifier.js +257 -0
- package/dist/resources/extensions/gsd/{constants.ts → constants.js} +0 -6
- package/dist/resources/extensions/gsd/context-budget.js +187 -0
- package/dist/resources/extensions/gsd/context-store.js +165 -0
- package/dist/resources/extensions/gsd/crash-recovery.js +110 -0
- package/dist/resources/extensions/gsd/dashboard-overlay.js +562 -0
- package/dist/resources/extensions/gsd/db-writer.js +298 -0
- package/dist/resources/extensions/gsd/debug-logger.js +161 -0
- package/dist/resources/extensions/gsd/detection.js +373 -0
- package/dist/resources/extensions/gsd/diff-context.js +168 -0
- package/dist/resources/extensions/gsd/dispatch-guard.js +76 -0
- package/dist/resources/extensions/gsd/doctor-checks.js +563 -0
- package/dist/resources/extensions/gsd/doctor-environment.js +429 -0
- package/dist/resources/extensions/gsd/doctor-format.js +71 -0
- package/dist/resources/extensions/gsd/doctor-proactive.js +239 -0
- package/dist/resources/extensions/gsd/doctor-providers.js +292 -0
- package/dist/resources/extensions/gsd/doctor-types.js +12 -0
- package/dist/resources/extensions/gsd/doctor.js +672 -0
- package/dist/resources/extensions/gsd/error-utils.js +6 -0
- package/dist/resources/extensions/gsd/{errors.ts → errors.js} +6 -11
- package/dist/resources/extensions/gsd/exit-command.js +11 -0
- package/dist/resources/extensions/gsd/{export-html.ts → export-html.js} +482 -614
- package/dist/resources/extensions/gsd/export.js +268 -0
- package/dist/resources/extensions/gsd/file-watcher.js +76 -0
- package/dist/resources/extensions/gsd/files.js +937 -0
- package/dist/resources/extensions/gsd/forensics.js +511 -0
- package/dist/resources/extensions/gsd/{git-constants.ts → git-constants.js} +4 -5
- package/dist/resources/extensions/gsd/git-self-heal.js +113 -0
- package/dist/resources/extensions/gsd/git-service.js +460 -0
- package/dist/resources/extensions/gsd/{gitignore.ts → gitignore.js} +98 -125
- package/dist/resources/extensions/gsd/gsd-db.js +590 -0
- package/dist/resources/extensions/gsd/guided-flow-queue.js +366 -0
- package/dist/resources/extensions/gsd/guided-flow.js +1149 -0
- package/dist/resources/extensions/gsd/health-widget.js +141 -0
- package/dist/resources/extensions/gsd/history.js +118 -0
- package/dist/resources/extensions/gsd/index.js +1250 -0
- package/dist/resources/extensions/gsd/init-wizard.js +479 -0
- package/dist/resources/extensions/gsd/json-persistence.js +62 -0
- package/dist/resources/extensions/gsd/{jsonl-utils.ts → jsonl-utils.js} +10 -7
- package/dist/resources/extensions/gsd/key-manager.js +829 -0
- package/dist/resources/extensions/gsd/marketplace-discovery.js +356 -0
- package/dist/resources/extensions/gsd/md-importer.js +440 -0
- package/dist/resources/extensions/gsd/mechanical-completion.js +351 -0
- package/dist/resources/extensions/gsd/memory-extractor.js +295 -0
- package/dist/resources/extensions/gsd/memory-store.js +351 -0
- package/dist/resources/extensions/gsd/metrics.js +377 -0
- package/dist/resources/extensions/gsd/migrate/command.js +157 -0
- package/dist/resources/extensions/gsd/migrate/index.js +7 -0
- package/dist/resources/extensions/gsd/migrate/parser.js +268 -0
- package/dist/resources/extensions/gsd/migrate/parsers.js +477 -0
- package/dist/resources/extensions/gsd/migrate/preview.js +47 -0
- package/dist/resources/extensions/gsd/migrate/transformer.js +278 -0
- package/dist/resources/extensions/gsd/migrate/types.js +4 -0
- package/dist/resources/extensions/gsd/migrate/validator.js +41 -0
- package/dist/resources/extensions/gsd/migrate/writer.js +477 -0
- package/dist/resources/extensions/gsd/migrate-external.js +130 -0
- package/dist/resources/extensions/gsd/milestone-actions.js +111 -0
- package/dist/resources/extensions/gsd/{milestone-ids.ts → milestone-ids.js} +50 -63
- package/dist/resources/extensions/gsd/model-cost-table.js +48 -0
- package/dist/resources/extensions/gsd/model-router.js +187 -0
- package/dist/resources/extensions/gsd/namespaced-registry.js +322 -0
- package/dist/resources/extensions/gsd/namespaced-resolver.js +176 -0
- package/dist/resources/extensions/gsd/native-git-bridge.js +842 -0
- package/dist/resources/extensions/gsd/native-parser-bridge.js +156 -0
- package/dist/resources/extensions/gsd/notifications.js +58 -0
- package/dist/resources/extensions/gsd/observability-validator.js +398 -0
- package/dist/resources/extensions/gsd/parallel-eligibility.js +182 -0
- package/dist/resources/extensions/gsd/parallel-merge.js +121 -0
- package/dist/resources/extensions/gsd/parallel-orchestrator.js +687 -0
- package/dist/resources/extensions/gsd/paths.js +414 -0
- package/dist/resources/extensions/gsd/plugin-importer.js +254 -0
- package/dist/resources/extensions/gsd/post-unit-hooks.js +433 -0
- package/dist/resources/extensions/gsd/preferences-models.js +294 -0
- package/dist/resources/extensions/gsd/preferences-skills.js +154 -0
- package/dist/resources/extensions/gsd/preferences-types.js +73 -0
- package/dist/resources/extensions/gsd/preferences-validation.js +607 -0
- package/dist/resources/extensions/gsd/preferences.js +325 -0
- package/dist/resources/extensions/gsd/progress-score.js +197 -0
- package/dist/resources/extensions/gsd/prompt-cache-optimizer.js +150 -0
- package/dist/resources/extensions/gsd/prompt-compressor.js +393 -0
- package/dist/resources/extensions/gsd/prompt-loader.js +119 -0
- package/dist/resources/extensions/gsd/prompt-ordering.js +170 -0
- package/dist/resources/extensions/gsd/provider-error-pause.js +60 -0
- package/dist/resources/extensions/gsd/queue-order.js +178 -0
- package/dist/resources/extensions/gsd/queue-reorder-ui.js +234 -0
- package/dist/resources/extensions/gsd/quick.js +230 -0
- package/dist/resources/extensions/gsd/repo-identity.js +187 -0
- package/dist/resources/extensions/gsd/{reports.ts → reports.js} +146 -241
- package/dist/resources/extensions/gsd/{resource-version.ts → resource-version.js} +50 -53
- package/dist/resources/extensions/gsd/roadmap-slices.js +130 -0
- package/dist/resources/extensions/gsd/routing-history.js +210 -0
- package/dist/resources/extensions/gsd/safe-fs.js +52 -0
- package/dist/resources/extensions/gsd/semantic-chunker.js +254 -0
- package/dist/resources/extensions/gsd/session-forensics.js +427 -0
- package/dist/resources/extensions/gsd/session-lock.js +376 -0
- package/dist/resources/extensions/gsd/session-status-io.js +134 -0
- package/dist/resources/extensions/gsd/skill-discovery.js +121 -0
- package/dist/resources/extensions/gsd/skill-health.js +324 -0
- package/dist/resources/extensions/gsd/{skill-telemetry.ts → skill-telemetry.js} +58 -74
- package/dist/resources/extensions/gsd/state.js +653 -0
- package/dist/resources/extensions/gsd/structured-data-formatter.js +97 -0
- package/dist/resources/extensions/gsd/summary-distiller.js +212 -0
- package/dist/resources/extensions/gsd/token-counter.js +54 -0
- package/dist/resources/extensions/gsd/triage-resolution.js +217 -0
- package/dist/resources/extensions/gsd/triage-ui.js +125 -0
- package/dist/resources/extensions/gsd/types.js +4 -0
- package/dist/resources/extensions/gsd/undo.js +210 -0
- package/dist/resources/extensions/gsd/unit-id.js +7 -0
- package/dist/resources/extensions/gsd/unit-runtime.js +130 -0
- package/dist/resources/extensions/gsd/validate-directory.js +143 -0
- package/dist/resources/extensions/gsd/verification-evidence.js +123 -0
- package/dist/resources/extensions/gsd/verification-gate.js +543 -0
- package/dist/resources/extensions/gsd/visualizer-data.js +612 -0
- package/dist/resources/extensions/gsd/visualizer-overlay.js +501 -0
- package/dist/resources/extensions/gsd/visualizer-views.js +893 -0
- package/dist/resources/extensions/gsd/workflow-templates.js +188 -0
- package/dist/resources/extensions/gsd/workspace-index.js +139 -0
- package/dist/resources/extensions/gsd/worktree-command-bootstrap.js +40 -0
- package/dist/resources/extensions/gsd/worktree-command.js +676 -0
- package/dist/resources/extensions/gsd/worktree-manager.js +359 -0
- package/dist/resources/extensions/gsd/worktree.js +236 -0
- package/dist/resources/extensions/mac-tools/index.js +768 -0
- package/dist/resources/extensions/mcp-client/index.js +363 -0
- package/dist/resources/extensions/package.json +3 -0
- package/dist/resources/extensions/remote-questions/config.js +70 -0
- package/dist/resources/extensions/remote-questions/discord-adapter.js +134 -0
- package/dist/resources/extensions/remote-questions/format.js +234 -0
- package/dist/resources/extensions/remote-questions/http-client.js +43 -0
- package/dist/resources/extensions/remote-questions/manager.js +156 -0
- package/dist/resources/extensions/remote-questions/{mod.ts → mod.js} +1 -10
- package/dist/resources/extensions/remote-questions/notify.js +89 -0
- package/dist/resources/extensions/remote-questions/remote-command.js +453 -0
- package/dist/resources/extensions/remote-questions/slack-adapter.js +123 -0
- package/dist/resources/extensions/remote-questions/status.js +25 -0
- package/dist/resources/extensions/remote-questions/store.js +70 -0
- package/dist/resources/extensions/remote-questions/telegram-adapter.js +123 -0
- package/dist/resources/extensions/remote-questions/types.js +5 -0
- package/dist/resources/extensions/search-the-web/cache.js +74 -0
- package/dist/resources/extensions/search-the-web/command-search-provider.js +79 -0
- package/dist/resources/extensions/search-the-web/format.js +161 -0
- package/dist/resources/extensions/search-the-web/http.js +178 -0
- package/dist/resources/extensions/search-the-web/index.js +41 -0
- package/dist/resources/extensions/search-the-web/native-search.js +166 -0
- package/dist/resources/extensions/search-the-web/provider.js +143 -0
- package/dist/resources/extensions/search-the-web/tavily.js +82 -0
- package/dist/resources/extensions/search-the-web/tool-fetch-page.js +452 -0
- package/dist/resources/extensions/search-the-web/tool-llm-context.js +455 -0
- package/dist/resources/extensions/search-the-web/tool-search.js +482 -0
- package/dist/resources/extensions/search-the-web/url-utils.js +121 -0
- package/dist/resources/extensions/shared/confirm-ui.js +96 -0
- package/dist/resources/extensions/shared/{format-utils.ts → format-utils.js} +85 -91
- package/dist/resources/extensions/shared/frontmatter.js +109 -0
- package/dist/resources/extensions/shared/interview-ui.js +569 -0
- package/dist/resources/extensions/shared/{mod.ts → mod.js} +2 -24
- package/dist/resources/extensions/shared/next-action-ui.js +168 -0
- package/dist/resources/extensions/shared/{path-display.ts → path-display.js} +2 -3
- package/dist/resources/extensions/shared/sanitize.js +17 -0
- package/dist/resources/extensions/shared/terminal.js +21 -0
- package/dist/resources/extensions/shared/ui.js +245 -0
- package/dist/resources/extensions/shared/wizard-ui.js +478 -0
- package/dist/resources/extensions/slash-commands/audit.js +72 -0
- package/dist/resources/extensions/slash-commands/clear.js +8 -0
- package/dist/resources/extensions/slash-commands/create-extension.js +264 -0
- package/dist/resources/extensions/slash-commands/create-slash-command.js +208 -0
- package/dist/resources/extensions/slash-commands/index.js +10 -0
- package/dist/resources/extensions/subagent/agents.js +103 -0
- package/dist/resources/extensions/subagent/index.js +905 -0
- package/dist/resources/extensions/subagent/isolation.js +384 -0
- package/dist/resources/extensions/subagent/worker-registry.js +73 -0
- package/dist/resources/extensions/ttsr/index.js +144 -0
- package/dist/resources/extensions/ttsr/rule-loader.js +70 -0
- package/dist/resources/extensions/ttsr/ttsr-manager.js +380 -0
- package/dist/resources/extensions/universal-config/discovery.js +94 -0
- package/dist/resources/extensions/universal-config/format.js +178 -0
- package/dist/resources/extensions/universal-config/index.js +99 -0
- package/dist/resources/extensions/universal-config/scanners.js +574 -0
- package/dist/resources/extensions/universal-config/tools.js +57 -0
- package/dist/resources/extensions/universal-config/types.js +8 -0
- package/dist/resources/extensions/voice/index.js +247 -0
- package/dist/startup-timings.d.ts +2 -0
- package/dist/startup-timings.js +22 -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 +1 -0
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.js +31 -4
- 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/package.json +1 -1
- package/packages/pi-coding-agent/src/core/extensions/index.ts +1 -0
- package/packages/pi-coding-agent/src/core/extensions/loader.ts +35 -4
- package/packages/pi-coding-agent/src/index.ts +1 -0
- package/pkg/package.json +1 -1
- package/src/resources/extensions/bg-shell/index.ts +41 -46
- package/src/resources/extensions/browser-tools/index.ts +156 -67
- package/src/resources/extensions/gsd/auto-supervisor.ts +10 -5
- package/src/resources/extensions/gsd/auto-verification.ts +20 -2
- package/src/resources/extensions/gsd/auto-worktree.ts +136 -1
- package/src/resources/extensions/gsd/commands-bootstrap.ts +252 -0
- package/src/resources/extensions/gsd/commands.ts +53 -33
- package/src/resources/extensions/gsd/git-service.ts +24 -11
- package/src/resources/extensions/gsd/index.ts +106 -34
- package/src/resources/extensions/gsd/quick.ts +52 -3
- package/src/resources/extensions/gsd/repo-identity.ts +56 -22
- package/src/resources/extensions/gsd/session-lock.ts +80 -16
- package/src/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +691 -0
- package/src/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +317 -0
- package/src/resources/extensions/gsd/tests/git-service.test.ts +16 -7
- package/src/resources/extensions/gsd/tests/loop-regression.test.ts +40 -5
- package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +281 -0
- package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +71 -0
- package/src/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +358 -0
- package/src/resources/extensions/gsd/tests/session-lock-regression.test.ts +216 -0
- package/src/resources/extensions/gsd/tests/session-lock.test.ts +119 -0
- package/src/resources/extensions/gsd/tests/verification-gate.test.ts +65 -0
- package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +206 -0
- package/src/resources/extensions/gsd/types.ts +4 -0
- package/src/resources/extensions/gsd/verification-evidence.ts +1 -1
- package/src/resources/extensions/gsd/verification-gate.ts +23 -2
- package/src/resources/extensions/gsd/worktree-command-bootstrap.ts +46 -0
- package/src/resources/extensions/gsd/worktree-command.ts +17 -11
- package/src/resources/extensions/package.json +3 -0
- package/src/resources/extensions/search-the-web/command-search-provider.ts +1 -1
- package/src/resources/extensions/search-the-web/index.ts +35 -52
- package/src/resources/extensions/search-the-web/tavily.ts +1 -1
- package/dist/resources/extensions/ask-user-questions.ts +0 -290
- package/dist/resources/extensions/async-jobs/async-bash-tool.ts +0 -212
- package/dist/resources/extensions/async-jobs/await-tool.ts +0 -103
- package/dist/resources/extensions/async-jobs/cancel-job-tool.ts +0 -35
- package/dist/resources/extensions/async-jobs/index.ts +0 -141
- package/dist/resources/extensions/async-jobs/job-manager.ts +0 -211
- package/dist/resources/extensions/aws-auth/index.ts +0 -144
- package/dist/resources/extensions/bg-shell/bg-shell-command.ts +0 -219
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.ts +0 -400
- package/dist/resources/extensions/bg-shell/bg-shell-tool.ts +0 -985
- package/dist/resources/extensions/bg-shell/index.ts +0 -59
- package/dist/resources/extensions/bg-shell/interaction.ts +0 -198
- package/dist/resources/extensions/bg-shell/output-formatter.ts +0 -279
- package/dist/resources/extensions/bg-shell/overlay.ts +0 -437
- package/dist/resources/extensions/bg-shell/process-manager.ts +0 -464
- package/dist/resources/extensions/bg-shell/readiness-detector.ts +0 -126
- package/dist/resources/extensions/bg-shell/types.ts +0 -303
- package/dist/resources/extensions/bg-shell/utilities.ts +0 -57
- package/dist/resources/extensions/browser-tools/capture.ts +0 -199
- package/dist/resources/extensions/browser-tools/core.ts +0 -1196
- package/dist/resources/extensions/browser-tools/index.ts +0 -71
- package/dist/resources/extensions/browser-tools/lifecycle.ts +0 -270
- package/dist/resources/extensions/browser-tools/refs.ts +0 -264
- package/dist/resources/extensions/browser-tools/settle.ts +0 -197
- package/dist/resources/extensions/browser-tools/state.ts +0 -408
- package/dist/resources/extensions/browser-tools/tools/action-cache.ts +0 -216
- package/dist/resources/extensions/browser-tools/tools/assertions.ts +0 -342
- package/dist/resources/extensions/browser-tools/tools/codegen.ts +0 -274
- package/dist/resources/extensions/browser-tools/tools/device.ts +0 -183
- package/dist/resources/extensions/browser-tools/tools/extract.ts +0 -229
- package/dist/resources/extensions/browser-tools/tools/forms.ts +0 -801
- package/dist/resources/extensions/browser-tools/tools/injection-detect.ts +0 -221
- package/dist/resources/extensions/browser-tools/tools/inspection.ts +0 -492
- package/dist/resources/extensions/browser-tools/tools/intent.ts +0 -614
- package/dist/resources/extensions/browser-tools/tools/interaction.ts +0 -865
- package/dist/resources/extensions/browser-tools/tools/navigation.ts +0 -232
- package/dist/resources/extensions/browser-tools/tools/network-mock.ts +0 -244
- package/dist/resources/extensions/browser-tools/tools/pages.ts +0 -303
- package/dist/resources/extensions/browser-tools/tools/pdf.ts +0 -92
- package/dist/resources/extensions/browser-tools/tools/refs.ts +0 -541
- package/dist/resources/extensions/browser-tools/tools/screenshot.ts +0 -101
- package/dist/resources/extensions/browser-tools/tools/session.ts +0 -400
- package/dist/resources/extensions/browser-tools/tools/state-persistence.ts +0 -202
- package/dist/resources/extensions/browser-tools/tools/visual-diff.ts +0 -209
- package/dist/resources/extensions/browser-tools/tools/wait.ts +0 -247
- package/dist/resources/extensions/browser-tools/tools/zoom.ts +0 -104
- package/dist/resources/extensions/browser-tools/utils.ts +0 -660
- package/dist/resources/extensions/context7/index.ts +0 -428
- package/dist/resources/extensions/get-secrets-from-user.ts +0 -607
- package/dist/resources/extensions/google-search/index.ts +0 -466
- package/dist/resources/extensions/gsd/activity-log.ts +0 -162
- package/dist/resources/extensions/gsd/atomic-write.ts +0 -35
- package/dist/resources/extensions/gsd/auto/session.ts +0 -236
- package/dist/resources/extensions/gsd/auto-budget.ts +0 -32
- package/dist/resources/extensions/gsd/auto-dashboard.ts +0 -626
- package/dist/resources/extensions/gsd/auto-direct-dispatch.ts +0 -224
- package/dist/resources/extensions/gsd/auto-dispatch.ts +0 -409
- package/dist/resources/extensions/gsd/auto-idempotency.ts +0 -151
- package/dist/resources/extensions/gsd/auto-model-selection.ts +0 -179
- package/dist/resources/extensions/gsd/auto-observability.ts +0 -72
- package/dist/resources/extensions/gsd/auto-post-unit.ts +0 -618
- package/dist/resources/extensions/gsd/auto-prompts.ts +0 -1273
- package/dist/resources/extensions/gsd/auto-recovery.ts +0 -578
- package/dist/resources/extensions/gsd/auto-start.ts +0 -483
- package/dist/resources/extensions/gsd/auto-stuck-detection.ts +0 -221
- package/dist/resources/extensions/gsd/auto-timeout-recovery.ts +0 -263
- package/dist/resources/extensions/gsd/auto-timers.ts +0 -224
- package/dist/resources/extensions/gsd/auto-tool-tracking.ts +0 -54
- package/dist/resources/extensions/gsd/auto-unit-closeout.ts +0 -48
- package/dist/resources/extensions/gsd/auto-verification.ts +0 -229
- package/dist/resources/extensions/gsd/auto-worktree.ts +0 -524
- package/dist/resources/extensions/gsd/auto.ts +0 -1834
- package/dist/resources/extensions/gsd/captures.ts +0 -427
- package/dist/resources/extensions/gsd/claude-import.ts +0 -656
- package/dist/resources/extensions/gsd/collision-diagnostics.ts +0 -332
- package/dist/resources/extensions/gsd/commands-config.ts +0 -102
- package/dist/resources/extensions/gsd/commands-extensions.ts +0 -328
- package/dist/resources/extensions/gsd/commands-handlers.ts +0 -395
- package/dist/resources/extensions/gsd/commands-inspect.ts +0 -91
- package/dist/resources/extensions/gsd/commands-logs.ts +0 -536
- package/dist/resources/extensions/gsd/commands-maintenance.ts +0 -206
- package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +0 -780
- package/dist/resources/extensions/gsd/commands-workflow-templates.ts +0 -543
- package/dist/resources/extensions/gsd/commands.ts +0 -1137
- package/dist/resources/extensions/gsd/complexity-classifier.ts +0 -320
- package/dist/resources/extensions/gsd/context-budget.ts +0 -266
- package/dist/resources/extensions/gsd/context-store.ts +0 -195
- package/dist/resources/extensions/gsd/crash-recovery.ts +0 -121
- package/dist/resources/extensions/gsd/dashboard-overlay.ts +0 -681
- package/dist/resources/extensions/gsd/db-writer.ts +0 -360
- package/dist/resources/extensions/gsd/debug-logger.ts +0 -178
- package/dist/resources/extensions/gsd/detection.ts +0 -470
- package/dist/resources/extensions/gsd/diff-context.ts +0 -214
- package/dist/resources/extensions/gsd/dispatch-guard.ts +0 -81
- package/dist/resources/extensions/gsd/doctor-checks.ts +0 -612
- package/dist/resources/extensions/gsd/doctor-environment.ts +0 -497
- package/dist/resources/extensions/gsd/doctor-format.ts +0 -78
- package/dist/resources/extensions/gsd/doctor-proactive.ts +0 -292
- package/dist/resources/extensions/gsd/doctor-providers.ts +0 -343
- package/dist/resources/extensions/gsd/doctor-types.ts +0 -87
- package/dist/resources/extensions/gsd/doctor.ts +0 -722
- package/dist/resources/extensions/gsd/error-utils.ts +0 -6
- package/dist/resources/extensions/gsd/exit-command.ts +0 -18
- package/dist/resources/extensions/gsd/export.ts +0 -317
- package/dist/resources/extensions/gsd/file-watcher.ts +0 -97
- package/dist/resources/extensions/gsd/files.ts +0 -1058
- package/dist/resources/extensions/gsd/forensics.ts +0 -629
- package/dist/resources/extensions/gsd/git-self-heal.ts +0 -127
- package/dist/resources/extensions/gsd/git-service.ts +0 -580
- package/dist/resources/extensions/gsd/gsd-db.ts +0 -685
- package/dist/resources/extensions/gsd/guided-flow-queue.ts +0 -440
- package/dist/resources/extensions/gsd/guided-flow.ts +0 -1303
- package/dist/resources/extensions/gsd/health-widget.ts +0 -167
- package/dist/resources/extensions/gsd/history.ts +0 -143
- package/dist/resources/extensions/gsd/index.ts +0 -1390
- package/dist/resources/extensions/gsd/init-wizard.ts +0 -587
- package/dist/resources/extensions/gsd/json-persistence.ts +0 -67
- package/dist/resources/extensions/gsd/key-manager.ts +0 -996
- package/dist/resources/extensions/gsd/marketplace-discovery.ts +0 -508
- package/dist/resources/extensions/gsd/md-importer.ts +0 -527
- package/dist/resources/extensions/gsd/mechanical-completion.ts +0 -430
- package/dist/resources/extensions/gsd/memory-extractor.ts +0 -352
- package/dist/resources/extensions/gsd/memory-store.ts +0 -441
- package/dist/resources/extensions/gsd/metrics.ts +0 -532
- package/dist/resources/extensions/gsd/migrate/command.ts +0 -219
- package/dist/resources/extensions/gsd/migrate/index.ts +0 -42
- package/dist/resources/extensions/gsd/migrate/parser.ts +0 -323
- package/dist/resources/extensions/gsd/migrate/parsers.ts +0 -539
- package/dist/resources/extensions/gsd/migrate/preview.ts +0 -48
- package/dist/resources/extensions/gsd/migrate/transformer.ts +0 -346
- package/dist/resources/extensions/gsd/migrate/types.ts +0 -370
- package/dist/resources/extensions/gsd/migrate/validator.ts +0 -55
- package/dist/resources/extensions/gsd/migrate/writer.ts +0 -579
- package/dist/resources/extensions/gsd/migrate-external.ts +0 -140
- package/dist/resources/extensions/gsd/milestone-actions.ts +0 -126
- package/dist/resources/extensions/gsd/model-cost-table.ts +0 -65
- package/dist/resources/extensions/gsd/model-router.ts +0 -256
- package/dist/resources/extensions/gsd/namespaced-registry.ts +0 -467
- package/dist/resources/extensions/gsd/namespaced-resolver.ts +0 -307
- package/dist/resources/extensions/gsd/native-git-bridge.ts +0 -1041
- package/dist/resources/extensions/gsd/native-parser-bridge.ts +0 -267
- package/dist/resources/extensions/gsd/notifications.ts +0 -87
- package/dist/resources/extensions/gsd/observability-validator.ts +0 -429
- package/dist/resources/extensions/gsd/parallel-eligibility.ts +0 -233
- package/dist/resources/extensions/gsd/parallel-merge.ts +0 -157
- package/dist/resources/extensions/gsd/parallel-orchestrator.ts +0 -826
- package/dist/resources/extensions/gsd/paths.ts +0 -449
- package/dist/resources/extensions/gsd/plugin-importer.ts +0 -411
- package/dist/resources/extensions/gsd/post-unit-hooks.ts +0 -520
- package/dist/resources/extensions/gsd/preferences-models.ts +0 -329
- package/dist/resources/extensions/gsd/preferences-skills.ts +0 -169
- package/dist/resources/extensions/gsd/preferences-types.ts +0 -229
- package/dist/resources/extensions/gsd/preferences-validation.ts +0 -590
- package/dist/resources/extensions/gsd/preferences.ts +0 -416
- package/dist/resources/extensions/gsd/progress-score.ts +0 -273
- package/dist/resources/extensions/gsd/prompt-cache-optimizer.ts +0 -213
- package/dist/resources/extensions/gsd/prompt-compressor.ts +0 -508
- package/dist/resources/extensions/gsd/prompt-loader.ts +0 -130
- package/dist/resources/extensions/gsd/prompt-ordering.ts +0 -200
- package/dist/resources/extensions/gsd/provider-error-pause.ts +0 -88
- package/dist/resources/extensions/gsd/queue-order.ts +0 -230
- package/dist/resources/extensions/gsd/queue-reorder-ui.ts +0 -276
- package/dist/resources/extensions/gsd/quick.ts +0 -212
- package/dist/resources/extensions/gsd/repo-identity.ts +0 -169
- package/dist/resources/extensions/gsd/roadmap-slices.ts +0 -149
- package/dist/resources/extensions/gsd/routing-history.ts +0 -286
- package/dist/resources/extensions/gsd/safe-fs.ts +0 -47
- package/dist/resources/extensions/gsd/semantic-chunker.ts +0 -336
- package/dist/resources/extensions/gsd/session-forensics.ts +0 -537
- package/dist/resources/extensions/gsd/session-lock.ts +0 -362
- package/dist/resources/extensions/gsd/session-status-io.ts +0 -179
- package/dist/resources/extensions/gsd/skill-discovery.ts +0 -139
- package/dist/resources/extensions/gsd/skill-health.ts +0 -417
- package/dist/resources/extensions/gsd/state.ts +0 -727
- package/dist/resources/extensions/gsd/structured-data-formatter.ts +0 -144
- package/dist/resources/extensions/gsd/summary-distiller.ts +0 -258
- package/dist/resources/extensions/gsd/tests/activity-log.test.ts +0 -213
- package/dist/resources/extensions/gsd/tests/agent-end-retry.test.ts +0 -107
- package/dist/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +0 -200
- package/dist/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +0 -50
- package/dist/resources/extensions/gsd/tests/auto-dashboard.test.ts +0 -166
- package/dist/resources/extensions/gsd/tests/auto-lock-creation.test.ts +0 -186
- package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +0 -40
- package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +0 -640
- package/dist/resources/extensions/gsd/tests/auto-reentrancy-guard.test.ts +0 -127
- package/dist/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +0 -302
- package/dist/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +0 -257
- package/dist/resources/extensions/gsd/tests/auto-skip-loop.test.ts +0 -123
- package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +0 -167
- package/dist/resources/extensions/gsd/tests/budget-prediction.test.ts +0 -220
- package/dist/resources/extensions/gsd/tests/captures.test.ts +0 -438
- package/dist/resources/extensions/gsd/tests/claude-import-tui.test.ts +0 -351
- package/dist/resources/extensions/gsd/tests/collect-from-manifest.test.ts +0 -469
- package/dist/resources/extensions/gsd/tests/collision-diagnostics.test.ts +0 -705
- package/dist/resources/extensions/gsd/tests/commands-logs.test.ts +0 -241
- package/dist/resources/extensions/gsd/tests/complete-milestone.test.ts +0 -209
- package/dist/resources/extensions/gsd/tests/complexity-classifier.test.ts +0 -181
- package/dist/resources/extensions/gsd/tests/context-budget.test.ts +0 -352
- package/dist/resources/extensions/gsd/tests/context-compression.test.ts +0 -193
- package/dist/resources/extensions/gsd/tests/context-store.test.ts +0 -462
- package/dist/resources/extensions/gsd/tests/continue-here.test.ts +0 -285
- package/dist/resources/extensions/gsd/tests/cost-projection.test.ts +0 -134
- package/dist/resources/extensions/gsd/tests/crash-recovery.test.ts +0 -134
- package/dist/resources/extensions/gsd/tests/dashboard-budget.test.ts +0 -346
- package/dist/resources/extensions/gsd/tests/db-writer.test.ts +0 -602
- package/dist/resources/extensions/gsd/tests/debug-logger.test.ts +0 -185
- package/dist/resources/extensions/gsd/tests/derive-state-db.test.ts +0 -405
- package/dist/resources/extensions/gsd/tests/derive-state-deps.test.ts +0 -421
- package/dist/resources/extensions/gsd/tests/derive-state-draft.test.ts +0 -308
- package/dist/resources/extensions/gsd/tests/derive-state.test.ts +0 -788
- package/dist/resources/extensions/gsd/tests/detection.test.ts +0 -398
- package/dist/resources/extensions/gsd/tests/diff-context.test.ts +0 -136
- package/dist/resources/extensions/gsd/tests/discuss-prompt.test.ts +0 -15
- package/dist/resources/extensions/gsd/tests/dispatch-guard.test.ts +0 -128
- package/dist/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +0 -132
- package/dist/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/doctor-environment.test.ts +0 -314
- package/dist/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +0 -245
- package/dist/resources/extensions/gsd/tests/doctor-git.test.ts +0 -344
- package/dist/resources/extensions/gsd/tests/doctor-proactive.test.ts +0 -278
- package/dist/resources/extensions/gsd/tests/doctor-providers.test.ts +0 -298
- package/dist/resources/extensions/gsd/tests/doctor-runtime.test.ts +0 -302
- package/dist/resources/extensions/gsd/tests/doctor.test.ts +0 -652
- package/dist/resources/extensions/gsd/tests/draft-promotion.test.ts +0 -169
- package/dist/resources/extensions/gsd/tests/exit-command.test.ts +0 -50
- package/dist/resources/extensions/gsd/tests/export-html-all.test.ts +0 -105
- package/dist/resources/extensions/gsd/tests/export-html-enhancements.test.ts +0 -378
- package/dist/resources/extensions/gsd/tests/extension-selector-separator.test.ts +0 -144
- package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +0 -424
- package/dist/resources/extensions/gsd/tests/git-self-heal.test.ts +0 -131
- package/dist/resources/extensions/gsd/tests/git-service.test.ts +0 -1172
- package/dist/resources/extensions/gsd/tests/gsd-db.test.ts +0 -353
- package/dist/resources/extensions/gsd/tests/gsd-inspect.test.ts +0 -125
- package/dist/resources/extensions/gsd/tests/gsd-tools.test.ts +0 -326
- package/dist/resources/extensions/gsd/tests/headless-answers.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/headless-query.test.ts +0 -162
- package/dist/resources/extensions/gsd/tests/idle-recovery.test.ts +0 -485
- package/dist/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +0 -32
- package/dist/resources/extensions/gsd/tests/init-wizard.test.ts +0 -197
- package/dist/resources/extensions/gsd/tests/integration/headless-command.ts +0 -534
- package/dist/resources/extensions/gsd/tests/integration-edge.test.ts +0 -228
- package/dist/resources/extensions/gsd/tests/integration-lifecycle.test.ts +0 -277
- package/dist/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +0 -523
- package/dist/resources/extensions/gsd/tests/key-manager.test.ts +0 -414
- package/dist/resources/extensions/gsd/tests/knowledge.test.ts +0 -161
- package/dist/resources/extensions/gsd/tests/loop-regression.test.ts +0 -839
- package/dist/resources/extensions/gsd/tests/manifest-status.test.ts +0 -283
- package/dist/resources/extensions/gsd/tests/marketplace-test-fixtures.ts +0 -91
- package/dist/resources/extensions/gsd/tests/md-importer.test.ts +0 -410
- package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +0 -356
- package/dist/resources/extensions/gsd/tests/memory-extractor.test.ts +0 -180
- package/dist/resources/extensions/gsd/tests/memory-leak-guards.test.ts +0 -91
- package/dist/resources/extensions/gsd/tests/memory-store.test.ts +0 -345
- package/dist/resources/extensions/gsd/tests/metrics.test.ts +0 -253
- package/dist/resources/extensions/gsd/tests/migrate-command.test.ts +0 -369
- package/dist/resources/extensions/gsd/tests/migrate-parser.test.ts +0 -757
- package/dist/resources/extensions/gsd/tests/migrate-transformer.test.ts +0 -635
- package/dist/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +0 -414
- package/dist/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +0 -303
- package/dist/resources/extensions/gsd/tests/migrate-writer.test.ts +0 -398
- package/dist/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +0 -147
- package/dist/resources/extensions/gsd/tests/model-cost-table.test.ts +0 -69
- package/dist/resources/extensions/gsd/tests/model-isolation.test.ts +0 -157
- package/dist/resources/extensions/gsd/tests/model-router.test.ts +0 -167
- package/dist/resources/extensions/gsd/tests/must-have-parser.test.ts +0 -291
- package/dist/resources/extensions/gsd/tests/namespaced-registry.test.ts +0 -1027
- package/dist/resources/extensions/gsd/tests/namespaced-resolver.test.ts +0 -671
- package/dist/resources/extensions/gsd/tests/native-has-changes-cache.test.ts +0 -61
- package/dist/resources/extensions/gsd/tests/next-milestone-id.test.ts +0 -23
- package/dist/resources/extensions/gsd/tests/none-mode-gates.test.ts +0 -114
- package/dist/resources/extensions/gsd/tests/notifications.test.ts +0 -67
- package/dist/resources/extensions/gsd/tests/overrides.test.ts +0 -131
- package/dist/resources/extensions/gsd/tests/parallel-budget-atomicity.test.ts +0 -331
- package/dist/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +0 -298
- package/dist/resources/extensions/gsd/tests/parallel-merge.test.ts +0 -468
- package/dist/resources/extensions/gsd/tests/parallel-orchestration.test.ts +0 -685
- package/dist/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +0 -171
- package/dist/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +0 -354
- package/dist/resources/extensions/gsd/tests/park-edge-cases.test.ts +0 -276
- package/dist/resources/extensions/gsd/tests/park-milestone.test.ts +0 -401
- package/dist/resources/extensions/gsd/tests/parsers.test.ts +0 -1704
- package/dist/resources/extensions/gsd/tests/plan-milestone.test.ts +0 -133
- package/dist/resources/extensions/gsd/tests/plan-quality-validator.test.ts +0 -363
- package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +0 -42
- package/dist/resources/extensions/gsd/tests/plugin-importer-live.test.ts +0 -481
- package/dist/resources/extensions/gsd/tests/plugin-importer.test.ts +0 -1383
- package/dist/resources/extensions/gsd/tests/post-unit-hooks.test.ts +0 -337
- package/dist/resources/extensions/gsd/tests/preferences.test.ts +0 -276
- package/dist/resources/extensions/gsd/tests/progress-score.test.ts +0 -206
- package/dist/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +0 -464
- package/dist/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +0 -314
- package/dist/resources/extensions/gsd/tests/prompt-compressor.test.ts +0 -529
- package/dist/resources/extensions/gsd/tests/prompt-db.test.ts +0 -385
- package/dist/resources/extensions/gsd/tests/prompt-ordering.test.ts +0 -296
- package/dist/resources/extensions/gsd/tests/provider-errors.test.ts +0 -338
- package/dist/resources/extensions/gsd/tests/queue-draft-detection.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/queue-order.test.ts +0 -204
- package/dist/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +0 -282
- package/dist/resources/extensions/gsd/tests/reassess-detection.test.ts +0 -154
- package/dist/resources/extensions/gsd/tests/reassess-prompt.test.ts +0 -145
- package/dist/resources/extensions/gsd/tests/regex-hardening.test.ts +0 -281
- package/dist/resources/extensions/gsd/tests/remote-questions.test.ts +0 -642
- package/dist/resources/extensions/gsd/tests/remote-status.test.ts +0 -99
- package/dist/resources/extensions/gsd/tests/replan-slice.test.ts +0 -538
- package/dist/resources/extensions/gsd/tests/requirements.test.ts +0 -106
- package/dist/resources/extensions/gsd/tests/roadmap-slices.test.ts +0 -66
- package/dist/resources/extensions/gsd/tests/routing-history.test.ts +0 -240
- package/dist/resources/extensions/gsd/tests/run-uat.test.ts +0 -416
- package/dist/resources/extensions/gsd/tests/secure-env-collect.test.ts +0 -185
- package/dist/resources/extensions/gsd/tests/semantic-chunker.test.ts +0 -426
- package/dist/resources/extensions/gsd/tests/session-lock.test.ts +0 -315
- package/dist/resources/extensions/gsd/tests/skill-lifecycle.test.ts +0 -126
- package/dist/resources/extensions/gsd/tests/smart-entry-draft.test.ts +0 -123
- package/dist/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +0 -142
- package/dist/resources/extensions/gsd/tests/stop-auto-remote.test.ts +0 -156
- package/dist/resources/extensions/gsd/tests/structured-data-formatter.test.ts +0 -365
- package/dist/resources/extensions/gsd/tests/summary-distiller.test.ts +0 -323
- package/dist/resources/extensions/gsd/tests/test-helpers.ts +0 -61
- package/dist/resources/extensions/gsd/tests/token-counter.test.ts +0 -129
- package/dist/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +0 -1272
- package/dist/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +0 -164
- package/dist/resources/extensions/gsd/tests/token-profile.test.ts +0 -268
- package/dist/resources/extensions/gsd/tests/token-savings.test.ts +0 -366
- package/dist/resources/extensions/gsd/tests/triage-dispatch.test.ts +0 -340
- package/dist/resources/extensions/gsd/tests/triage-resolution.test.ts +0 -416
- package/dist/resources/extensions/gsd/tests/undo.test.ts +0 -136
- package/dist/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +0 -219
- package/dist/resources/extensions/gsd/tests/unit-runtime.test.ts +0 -258
- package/dist/resources/extensions/gsd/tests/update-command.test.ts +0 -67
- package/dist/resources/extensions/gsd/tests/validate-directory.test.ts +0 -222
- package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +0 -375
- package/dist/resources/extensions/gsd/tests/verification-evidence.test.ts +0 -745
- package/dist/resources/extensions/gsd/tests/verification-gate.test.ts +0 -1208
- package/dist/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +0 -145
- package/dist/resources/extensions/gsd/tests/visualizer-data.test.ts +0 -446
- package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +0 -237
- package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +0 -718
- package/dist/resources/extensions/gsd/tests/worker-registry.test.ts +0 -148
- package/dist/resources/extensions/gsd/tests/workflow-templates.test.ts +0 -173
- package/dist/resources/extensions/gsd/tests/workspace-index.test.ts +0 -38
- package/dist/resources/extensions/gsd/tests/worktree-bugfix.test.ts +0 -120
- package/dist/resources/extensions/gsd/tests/worktree-e2e.test.ts +0 -244
- package/dist/resources/extensions/gsd/tests/worktree-integration.test.ts +0 -207
- package/dist/resources/extensions/gsd/tests/worktree-manager.test.ts +0 -141
- package/dist/resources/extensions/gsd/tests/worktree-post-create-hook.test.ts +0 -165
- package/dist/resources/extensions/gsd/tests/worktree.test.ts +0 -171
- package/dist/resources/extensions/gsd/tests/write-gate.test.ts +0 -211
- package/dist/resources/extensions/gsd/token-counter.ts +0 -65
- package/dist/resources/extensions/gsd/triage-resolution.ts +0 -284
- package/dist/resources/extensions/gsd/triage-ui.ts +0 -175
- package/dist/resources/extensions/gsd/types.ts +0 -425
- package/dist/resources/extensions/gsd/undo.ts +0 -223
- package/dist/resources/extensions/gsd/unit-id.ts +0 -14
- package/dist/resources/extensions/gsd/unit-runtime.ts +0 -192
- package/dist/resources/extensions/gsd/validate-directory.ts +0 -164
- package/dist/resources/extensions/gsd/verification-evidence.ts +0 -188
- package/dist/resources/extensions/gsd/verification-gate.ts +0 -643
- package/dist/resources/extensions/gsd/visualizer-data.ts +0 -866
- package/dist/resources/extensions/gsd/visualizer-overlay.ts +0 -566
- package/dist/resources/extensions/gsd/visualizer-views.ts +0 -1171
- package/dist/resources/extensions/gsd/workflow-templates.ts +0 -241
- package/dist/resources/extensions/gsd/workspace-index.ts +0 -217
- package/dist/resources/extensions/gsd/worktree-command.ts +0 -807
- package/dist/resources/extensions/gsd/worktree-manager.ts +0 -449
- package/dist/resources/extensions/gsd/worktree.ts +0 -257
- package/dist/resources/extensions/mac-tools/index.ts +0 -852
- package/dist/resources/extensions/mcp-client/index.ts +0 -459
- package/dist/resources/extensions/mcporter/extension-manifest.json +0 -12
- package/dist/resources/extensions/remote-questions/config.ts +0 -83
- package/dist/resources/extensions/remote-questions/discord-adapter.ts +0 -148
- package/dist/resources/extensions/remote-questions/format.ts +0 -315
- package/dist/resources/extensions/remote-questions/http-client.ts +0 -76
- package/dist/resources/extensions/remote-questions/manager.ts +0 -184
- package/dist/resources/extensions/remote-questions/notify.ts +0 -90
- package/dist/resources/extensions/remote-questions/remote-command.ts +0 -457
- package/dist/resources/extensions/remote-questions/slack-adapter.ts +0 -141
- package/dist/resources/extensions/remote-questions/status.ts +0 -31
- package/dist/resources/extensions/remote-questions/store.ts +0 -81
- package/dist/resources/extensions/remote-questions/telegram-adapter.ts +0 -149
- package/dist/resources/extensions/remote-questions/types.ts +0 -102
- package/dist/resources/extensions/search-the-web/cache.ts +0 -78
- package/dist/resources/extensions/search-the-web/command-search-provider.ts +0 -101
- package/dist/resources/extensions/search-the-web/format.ts +0 -258
- package/dist/resources/extensions/search-the-web/http.ts +0 -238
- package/dist/resources/extensions/search-the-web/index.ts +0 -65
- package/dist/resources/extensions/search-the-web/native-search.ts +0 -193
- package/dist/resources/extensions/search-the-web/provider.ts +0 -148
- package/dist/resources/extensions/search-the-web/tavily.ts +0 -116
- package/dist/resources/extensions/search-the-web/tool-fetch-page.ts +0 -589
- package/dist/resources/extensions/search-the-web/tool-llm-context.ts +0 -608
- package/dist/resources/extensions/search-the-web/tool-search.ts +0 -649
- package/dist/resources/extensions/search-the-web/url-utils.ts +0 -125
- package/dist/resources/extensions/shared/confirm-ui.ts +0 -126
- package/dist/resources/extensions/shared/frontmatter.ts +0 -117
- package/dist/resources/extensions/shared/interview-ui.ts +0 -613
- package/dist/resources/extensions/shared/next-action-ui.ts +0 -212
- package/dist/resources/extensions/shared/sanitize.ts +0 -19
- package/dist/resources/extensions/shared/terminal.ts +0 -23
- package/dist/resources/extensions/shared/tests/format-utils.test.ts +0 -153
- package/dist/resources/extensions/shared/ui.ts +0 -400
- package/dist/resources/extensions/shared/wizard-ui.ts +0 -551
- package/dist/resources/extensions/slash-commands/audit.ts +0 -88
- package/dist/resources/extensions/slash-commands/clear.ts +0 -10
- package/dist/resources/extensions/slash-commands/create-extension.ts +0 -297
- package/dist/resources/extensions/slash-commands/create-slash-command.ts +0 -234
- package/dist/resources/extensions/slash-commands/index.ts +0 -12
- package/dist/resources/extensions/subagent/agents.ts +0 -126
- package/dist/resources/extensions/subagent/index.ts +0 -1121
- package/dist/resources/extensions/subagent/isolation.ts +0 -501
- package/dist/resources/extensions/subagent/worker-registry.ts +0 -99
- package/dist/resources/extensions/ttsr/index.ts +0 -168
- package/dist/resources/extensions/ttsr/rule-loader.ts +0 -74
- package/dist/resources/extensions/ttsr/ttsr-manager.ts +0 -456
- package/dist/resources/extensions/universal-config/discovery.ts +0 -104
- package/dist/resources/extensions/universal-config/format.ts +0 -191
- package/dist/resources/extensions/universal-config/index.ts +0 -120
- package/dist/resources/extensions/universal-config/scanners.ts +0 -642
- package/dist/resources/extensions/universal-config/tests/discovery.test.ts +0 -119
- package/dist/resources/extensions/universal-config/tests/format.test.ts +0 -127
- package/dist/resources/extensions/universal-config/tests/scanners.test.ts +0 -456
- package/dist/resources/extensions/universal-config/tools.ts +0 -60
- package/dist/resources/extensions/universal-config/types.ts +0 -135
- package/dist/resources/extensions/voice/index.ts +0 -272
- package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +0 -51
- package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +0 -143
- package/src/resources/extensions/mcporter/extension-manifest.json +0 -12
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* auto-reentrancy-guard.test.ts — Tests for the unconditional reentrancy guard.
|
|
3
|
-
*
|
|
4
|
-
* Regression for #1272: auto-mode stuck-loop where gap watchdog or
|
|
5
|
-
* pendingAgentEndRetry could enter dispatchNextUnit concurrently during
|
|
6
|
-
* recursive skip chains because the reentrancy guard was bypassed when
|
|
7
|
-
* skipDepth > 0.
|
|
8
|
-
*
|
|
9
|
-
* The fix makes the guard unconditional (`if (s.dispatching)` without
|
|
10
|
-
* `&& s.skipDepth === 0`), and defers recursive re-dispatch via
|
|
11
|
-
* setImmediate/setTimeout so s.dispatching is released first.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import {
|
|
15
|
-
_getDispatching,
|
|
16
|
-
_setDispatching,
|
|
17
|
-
_getSkipDepth,
|
|
18
|
-
_setSkipDepth,
|
|
19
|
-
} from "../auto.ts";
|
|
20
|
-
import { createTestContext } from "./test-helpers.ts";
|
|
21
|
-
|
|
22
|
-
const { assertEq, assertTrue, report } = createTestContext();
|
|
23
|
-
|
|
24
|
-
async function main(): Promise<void> {
|
|
25
|
-
// ─── Test-only accessors work ───────────────────────────────────────────
|
|
26
|
-
console.log("\n=== reentrancy guard: test accessors round-trip ===");
|
|
27
|
-
{
|
|
28
|
-
_setDispatching(false);
|
|
29
|
-
assertEq(_getDispatching(), false, "dispatching starts false");
|
|
30
|
-
|
|
31
|
-
_setDispatching(true);
|
|
32
|
-
assertEq(_getDispatching(), true, "dispatching set to true");
|
|
33
|
-
|
|
34
|
-
_setDispatching(false);
|
|
35
|
-
assertEq(_getDispatching(), false, "dispatching reset to false");
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// ─── skipDepth accessors ────────────────────────────────────────────────
|
|
39
|
-
console.log("\n=== reentrancy guard: skipDepth accessors round-trip ===");
|
|
40
|
-
{
|
|
41
|
-
_setSkipDepth(0);
|
|
42
|
-
assertEq(_getSkipDepth(), 0, "skipDepth starts at 0");
|
|
43
|
-
|
|
44
|
-
_setSkipDepth(3);
|
|
45
|
-
assertEq(_getSkipDepth(), 3, "skipDepth set to 3");
|
|
46
|
-
|
|
47
|
-
_setSkipDepth(0);
|
|
48
|
-
assertEq(_getSkipDepth(), 0, "skipDepth reset to 0");
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// ─── Guard blocks even when skipDepth > 0 (#1272 regression) ───────────
|
|
52
|
-
console.log("\n=== reentrancy guard: blocks when dispatching=true regardless of skipDepth ===");
|
|
53
|
-
{
|
|
54
|
-
// Simulate the scenario from #1272: dispatching=true + skipDepth>0
|
|
55
|
-
// The old guard (`if (s.dispatching && s.skipDepth === 0)`) would allow
|
|
56
|
-
// concurrent entry when skipDepth > 0. The fix makes the check
|
|
57
|
-
// unconditional on skipDepth.
|
|
58
|
-
_setDispatching(true);
|
|
59
|
-
_setSkipDepth(2);
|
|
60
|
-
|
|
61
|
-
// Verify dispatching is true — guard should block regardless of skipDepth
|
|
62
|
-
assertTrue(
|
|
63
|
-
_getDispatching() === true,
|
|
64
|
-
"dispatching flag is true during skip chain"
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
// The actual reentrancy guard in dispatchNextUnit checks:
|
|
68
|
-
// if (s.dispatching) { return; }
|
|
69
|
-
// We verify the state that would trigger the guard:
|
|
70
|
-
const wouldBlock = _getDispatching(); // unconditional check
|
|
71
|
-
const wouldBlockOld = _getDispatching() && _getSkipDepth() === 0; // old check
|
|
72
|
-
|
|
73
|
-
assertTrue(wouldBlock === true, "new guard blocks when dispatching=true, skipDepth=2");
|
|
74
|
-
assertTrue(wouldBlockOld === false, "old guard WOULD NOT block when dispatching=true, skipDepth=2 (the bug)");
|
|
75
|
-
|
|
76
|
-
// Clean up
|
|
77
|
-
_setDispatching(false);
|
|
78
|
-
_setSkipDepth(0);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// ─── Guard allows entry when dispatching=false ──────────────────────────
|
|
82
|
-
console.log("\n=== reentrancy guard: allows entry when dispatching=false ===");
|
|
83
|
-
{
|
|
84
|
-
_setDispatching(false);
|
|
85
|
-
_setSkipDepth(0);
|
|
86
|
-
assertTrue(!_getDispatching(), "guard allows entry when dispatching=false, skipDepth=0");
|
|
87
|
-
|
|
88
|
-
_setDispatching(false);
|
|
89
|
-
_setSkipDepth(3);
|
|
90
|
-
assertTrue(!_getDispatching(), "guard allows entry when dispatching=false, skipDepth=3");
|
|
91
|
-
|
|
92
|
-
_setSkipDepth(0);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// ─── skipDepth does not affect guard decision (the fix) ─────────────────
|
|
96
|
-
console.log("\n=== reentrancy guard: skipDepth is irrelevant to guard decision ===");
|
|
97
|
-
{
|
|
98
|
-
for (const depth of [0, 1, 2, 5]) {
|
|
99
|
-
_setDispatching(true);
|
|
100
|
-
_setSkipDepth(depth);
|
|
101
|
-
assertTrue(
|
|
102
|
-
_getDispatching() === true,
|
|
103
|
-
`guard blocks at skipDepth=${depth} when dispatching=true`
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
for (const depth of [0, 1, 2, 5]) {
|
|
108
|
-
_setDispatching(false);
|
|
109
|
-
_setSkipDepth(depth);
|
|
110
|
-
assertTrue(
|
|
111
|
-
_getDispatching() === false,
|
|
112
|
-
`guard allows at skipDepth=${depth} when dispatching=false`
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// Clean up
|
|
117
|
-
_setDispatching(false);
|
|
118
|
-
_setSkipDepth(0);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
report();
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
main().catch((err) => {
|
|
125
|
-
console.error(err);
|
|
126
|
-
process.exit(1);
|
|
127
|
-
});
|
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Integration tests for the secrets collection gate in startAuto().
|
|
3
|
-
*
|
|
4
|
-
* Exercises getManifestStatus() → collectSecretsFromManifest() composition
|
|
5
|
-
* end-to-end using real filesystem state. Proves the gate paths:
|
|
6
|
-
* 1. No manifest exists — gate skips silently
|
|
7
|
-
* 2. Pending keys exist — gate triggers collection (direct call)
|
|
8
|
-
* 3. No pending keys — gate skips silently
|
|
9
|
-
* 4. Pending keys in auto-mode — session pauses instead of blocking (#1146)
|
|
10
|
-
*
|
|
11
|
-
* Uses temp directories with real .gsd/milestones/M001/ structure, mirroring
|
|
12
|
-
* the pattern from manifest-status.test.ts.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import test from 'node:test';
|
|
16
|
-
import assert from 'node:assert/strict';
|
|
17
|
-
import { mkdirSync, writeFileSync, readFileSync, rmSync } from 'node:fs';
|
|
18
|
-
import { join } from 'node:path';
|
|
19
|
-
import { tmpdir } from 'node:os';
|
|
20
|
-
import { getManifestStatus } from '../files.ts';
|
|
21
|
-
import { collectSecretsFromManifest } from '../../get-secrets-from-user.ts';
|
|
22
|
-
import { AutoSession } from '../auto/session.ts';
|
|
23
|
-
|
|
24
|
-
function makeTempDir(prefix: string): string {
|
|
25
|
-
const dir = join(tmpdir(), `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
26
|
-
mkdirSync(dir, { recursive: true });
|
|
27
|
-
return dir;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/** Create the .gsd/milestones/M001/ directory structure and write a secrets manifest. */
|
|
31
|
-
function writeManifest(base: string, content: string): void {
|
|
32
|
-
const mDir = join(base, '.gsd', 'milestones', 'M001');
|
|
33
|
-
mkdirSync(mDir, { recursive: true });
|
|
34
|
-
writeFileSync(join(mDir, 'M001-SECRETS.md'), content);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/** Stub ctx with hasUI: false — collectOneSecret returns null (skip), showSecretsSummary is a no-op. */
|
|
38
|
-
function makeNoUICtx(cwd: string) {
|
|
39
|
-
return {
|
|
40
|
-
ui: {},
|
|
41
|
-
hasUI: false,
|
|
42
|
-
cwd,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// ─── Scenario 1: No manifest exists ──────────────────────────────────────────
|
|
47
|
-
|
|
48
|
-
test('secrets gate: no manifest exists — getManifestStatus returns null', async () => {
|
|
49
|
-
const tmp = makeTempDir('gate-no-manifest');
|
|
50
|
-
try {
|
|
51
|
-
// No .gsd directory at all
|
|
52
|
-
const result = await getManifestStatus(tmp, 'M001');
|
|
53
|
-
assert.strictEqual(result, null, 'should return null when no manifest file exists');
|
|
54
|
-
} finally {
|
|
55
|
-
rmSync(tmp, { recursive: true, force: true });
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
// ─── Scenario 2: Pending keys exist ─────────────────────────────────────────
|
|
60
|
-
|
|
61
|
-
test('secrets gate: pending keys exist — gate triggers collection, manifest updated on disk', async () => {
|
|
62
|
-
const tmp = makeTempDir('gate-pending');
|
|
63
|
-
const savedA = process.env.GSD_GATE_TEST_EXISTING;
|
|
64
|
-
try {
|
|
65
|
-
// Simulate one key already in env
|
|
66
|
-
process.env.GSD_GATE_TEST_EXISTING = 'already-here';
|
|
67
|
-
|
|
68
|
-
// Ensure pending keys are NOT in env
|
|
69
|
-
delete process.env.GSD_GATE_TEST_PEND_A;
|
|
70
|
-
delete process.env.GSD_GATE_TEST_PEND_B;
|
|
71
|
-
|
|
72
|
-
writeManifest(tmp, `# Secrets Manifest
|
|
73
|
-
|
|
74
|
-
**Milestone:** M001
|
|
75
|
-
**Generated:** 2025-06-20T10:00:00Z
|
|
76
|
-
|
|
77
|
-
### GSD_GATE_TEST_PEND_A
|
|
78
|
-
|
|
79
|
-
**Service:** ServiceA
|
|
80
|
-
**Status:** pending
|
|
81
|
-
**Destination:** dotenv
|
|
82
|
-
|
|
83
|
-
1. Get key A from dashboard
|
|
84
|
-
|
|
85
|
-
### GSD_GATE_TEST_PEND_B
|
|
86
|
-
|
|
87
|
-
**Service:** ServiceB
|
|
88
|
-
**Status:** pending
|
|
89
|
-
**Destination:** dotenv
|
|
90
|
-
|
|
91
|
-
1. Get key B from dashboard
|
|
92
|
-
|
|
93
|
-
### GSD_GATE_TEST_EXISTING
|
|
94
|
-
|
|
95
|
-
**Service:** ServiceC
|
|
96
|
-
**Status:** pending
|
|
97
|
-
**Destination:** dotenv
|
|
98
|
-
|
|
99
|
-
1. Already in env
|
|
100
|
-
`);
|
|
101
|
-
|
|
102
|
-
// (a) Verify getManifestStatus shows pending keys
|
|
103
|
-
const status = await getManifestStatus(tmp, 'M001');
|
|
104
|
-
assert.notStrictEqual(status, null, 'manifest should exist');
|
|
105
|
-
assert.ok(status!.pending.length > 0, 'should have pending keys');
|
|
106
|
-
assert.deepStrictEqual(status!.pending, ['GSD_GATE_TEST_PEND_A', 'GSD_GATE_TEST_PEND_B']);
|
|
107
|
-
assert.deepStrictEqual(status!.existing, ['GSD_GATE_TEST_EXISTING']);
|
|
108
|
-
|
|
109
|
-
// (b) Call collectSecretsFromManifest with no-UI context
|
|
110
|
-
// With hasUI: false, collectOneSecret returns null → pending keys become "skipped"
|
|
111
|
-
const result = await collectSecretsFromManifest(tmp, 'M001', makeNoUICtx(tmp));
|
|
112
|
-
|
|
113
|
-
// (c) Verify return shape
|
|
114
|
-
assert.deepStrictEqual(result.applied, [], 'no keys applied (no UI to enter values)');
|
|
115
|
-
assert.ok(result.skipped.includes('GSD_GATE_TEST_PEND_A'), 'PEND_A should be skipped');
|
|
116
|
-
assert.ok(result.skipped.includes('GSD_GATE_TEST_PEND_B'), 'PEND_B should be skipped');
|
|
117
|
-
assert.deepStrictEqual(result.existingSkipped, ['GSD_GATE_TEST_EXISTING']);
|
|
118
|
-
|
|
119
|
-
// (d) Verify manifest on disk was updated — pending entries that went through
|
|
120
|
-
// collection are now "skipped". The existing-in-env entry retains its manifest
|
|
121
|
-
// status ("pending") because collectSecretsFromManifest only updates entries
|
|
122
|
-
// that flow through collectOneSecret. At runtime, getManifestStatus overrides
|
|
123
|
-
// env-present entries to "existing" regardless of manifest status.
|
|
124
|
-
const manifestPath = join(tmp, '.gsd', 'milestones', 'M001', 'M001-SECRETS.md');
|
|
125
|
-
const updatedContent = readFileSync(manifestPath, 'utf8');
|
|
126
|
-
assert.ok(
|
|
127
|
-
updatedContent.includes('**Status:** skipped'),
|
|
128
|
-
'formerly-pending entries should now have status "skipped" in the manifest file',
|
|
129
|
-
);
|
|
130
|
-
// Count: PEND_A → skipped, PEND_B → skipped, EXISTING stays pending on disk
|
|
131
|
-
const skippedMatches = updatedContent.match(/\*\*Status:\*\* skipped/g);
|
|
132
|
-
assert.strictEqual(skippedMatches?.length, 2, 'two entries should have status "skipped"');
|
|
133
|
-
const pendingMatches = updatedContent.match(/\*\*Status:\*\* pending/g);
|
|
134
|
-
assert.strictEqual(pendingMatches?.length, 1, 'one entry (existing-in-env) retains pending on disk');
|
|
135
|
-
|
|
136
|
-
// (e) Verify getManifestStatus now shows no pending
|
|
137
|
-
const statusAfter = await getManifestStatus(tmp, 'M001');
|
|
138
|
-
assert.notStrictEqual(statusAfter, null);
|
|
139
|
-
assert.deepStrictEqual(statusAfter!.pending, [], 'no pending keys after collection');
|
|
140
|
-
} finally {
|
|
141
|
-
delete process.env.GSD_GATE_TEST_EXISTING;
|
|
142
|
-
if (savedA !== undefined) process.env.GSD_GATE_TEST_EXISTING = savedA;
|
|
143
|
-
delete process.env.GSD_GATE_TEST_PEND_A;
|
|
144
|
-
delete process.env.GSD_GATE_TEST_PEND_B;
|
|
145
|
-
rmSync(tmp, { recursive: true, force: true });
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
// ─── Scenario 3: No pending keys — all collected or in env ──────────────────
|
|
150
|
-
|
|
151
|
-
// ─── Scenario 4: Pending keys pause AutoSession instead of blocking (#1146) ──
|
|
152
|
-
|
|
153
|
-
test('secrets gate: pending keys set pausedForSecrets on AutoSession', async () => {
|
|
154
|
-
const tmp = makeTempDir('gate-pause-session');
|
|
155
|
-
try {
|
|
156
|
-
// Ensure pending keys are NOT in env
|
|
157
|
-
delete process.env.GSD_PAUSE_TEST_KEY_A;
|
|
158
|
-
delete process.env.GSD_PAUSE_TEST_KEY_B;
|
|
159
|
-
|
|
160
|
-
writeManifest(tmp, `# Secrets Manifest
|
|
161
|
-
|
|
162
|
-
**Milestone:** M001
|
|
163
|
-
**Generated:** 2025-06-20T10:00:00Z
|
|
164
|
-
|
|
165
|
-
### GSD_PAUSE_TEST_KEY_A
|
|
166
|
-
|
|
167
|
-
**Service:** ServiceA
|
|
168
|
-
**Status:** pending
|
|
169
|
-
**Destination:** dotenv
|
|
170
|
-
|
|
171
|
-
1. Get key A from dashboard
|
|
172
|
-
|
|
173
|
-
### GSD_PAUSE_TEST_KEY_B
|
|
174
|
-
|
|
175
|
-
**Service:** ServiceB
|
|
176
|
-
**Status:** pending
|
|
177
|
-
**Destination:** dotenv
|
|
178
|
-
|
|
179
|
-
1. Get key B from dashboard
|
|
180
|
-
`);
|
|
181
|
-
|
|
182
|
-
// Verify manifest has pending keys
|
|
183
|
-
const status = await getManifestStatus(tmp, 'M001');
|
|
184
|
-
assert.notStrictEqual(status, null, 'manifest should exist');
|
|
185
|
-
assert.deepStrictEqual(status!.pending, ['GSD_PAUSE_TEST_KEY_A', 'GSD_PAUSE_TEST_KEY_B']);
|
|
186
|
-
|
|
187
|
-
// Simulate what auto-start.ts now does: set pause flags on session
|
|
188
|
-
const session = new AutoSession();
|
|
189
|
-
session.active = true;
|
|
190
|
-
session.currentMilestoneId = 'M001';
|
|
191
|
-
|
|
192
|
-
// The new gate logic: if pending keys exist, pause instead of collecting
|
|
193
|
-
if (status!.pending.length > 0) {
|
|
194
|
-
session.paused = true;
|
|
195
|
-
session.pausedForSecrets = true;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
assert.strictEqual(session.paused, true, 'session should be paused');
|
|
199
|
-
assert.strictEqual(session.pausedForSecrets, true, 'pausedForSecrets flag should be set');
|
|
200
|
-
|
|
201
|
-
// Verify reset() clears pausedForSecrets
|
|
202
|
-
session.reset();
|
|
203
|
-
assert.strictEqual(session.pausedForSecrets, false, 'reset() should clear pausedForSecrets');
|
|
204
|
-
} finally {
|
|
205
|
-
delete process.env.GSD_PAUSE_TEST_KEY_A;
|
|
206
|
-
delete process.env.GSD_PAUSE_TEST_KEY_B;
|
|
207
|
-
rmSync(tmp, { recursive: true, force: true });
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
test('secrets gate: no pending keys do not set pausedForSecrets', async () => {
|
|
212
|
-
const tmp = makeTempDir('gate-no-pause');
|
|
213
|
-
const savedKey = process.env.GSD_NO_PAUSE_TEST_KEY;
|
|
214
|
-
try {
|
|
215
|
-
process.env.GSD_NO_PAUSE_TEST_KEY = 'already-set';
|
|
216
|
-
|
|
217
|
-
writeManifest(tmp, `# Secrets Manifest
|
|
218
|
-
|
|
219
|
-
**Milestone:** M001
|
|
220
|
-
**Generated:** 2025-06-20T10:00:00Z
|
|
221
|
-
|
|
222
|
-
### GSD_NO_PAUSE_TEST_KEY
|
|
223
|
-
|
|
224
|
-
**Service:** ServiceX
|
|
225
|
-
**Status:** pending
|
|
226
|
-
**Destination:** dotenv
|
|
227
|
-
|
|
228
|
-
1. Already in env
|
|
229
|
-
`);
|
|
230
|
-
|
|
231
|
-
const status = await getManifestStatus(tmp, 'M001');
|
|
232
|
-
assert.notStrictEqual(status, null, 'manifest should exist');
|
|
233
|
-
assert.deepStrictEqual(status!.pending, [], 'no pending keys — already in env');
|
|
234
|
-
|
|
235
|
-
// Simulate gate logic — no pending keys, no pause
|
|
236
|
-
const session = new AutoSession();
|
|
237
|
-
session.active = true;
|
|
238
|
-
|
|
239
|
-
if (status!.pending.length > 0) {
|
|
240
|
-
session.paused = true;
|
|
241
|
-
session.pausedForSecrets = true;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
assert.strictEqual(session.paused, false, 'session should NOT be paused');
|
|
245
|
-
assert.strictEqual(session.pausedForSecrets, false, 'pausedForSecrets should NOT be set');
|
|
246
|
-
} finally {
|
|
247
|
-
delete process.env.GSD_NO_PAUSE_TEST_KEY;
|
|
248
|
-
if (savedKey !== undefined) process.env.GSD_NO_PAUSE_TEST_KEY = savedKey;
|
|
249
|
-
rmSync(tmp, { recursive: true, force: true });
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
// ─── Scenario 3: No pending keys — all collected or in env ──────────────────
|
|
254
|
-
|
|
255
|
-
test('secrets gate: no pending keys — getManifestStatus shows pending.length === 0', async () => {
|
|
256
|
-
const tmp = makeTempDir('gate-no-pending');
|
|
257
|
-
const savedKey = process.env.GSD_GATE_TEST_ENVKEY;
|
|
258
|
-
try {
|
|
259
|
-
process.env.GSD_GATE_TEST_ENVKEY = 'some-value';
|
|
260
|
-
|
|
261
|
-
writeManifest(tmp, `# Secrets Manifest
|
|
262
|
-
|
|
263
|
-
**Milestone:** M001
|
|
264
|
-
**Generated:** 2025-06-20T10:00:00Z
|
|
265
|
-
|
|
266
|
-
### ALREADY_COLLECTED
|
|
267
|
-
|
|
268
|
-
**Service:** ServiceX
|
|
269
|
-
**Status:** collected
|
|
270
|
-
**Destination:** dotenv
|
|
271
|
-
|
|
272
|
-
1. Was collected previously
|
|
273
|
-
|
|
274
|
-
### ALREADY_SKIPPED
|
|
275
|
-
|
|
276
|
-
**Service:** ServiceY
|
|
277
|
-
**Status:** skipped
|
|
278
|
-
**Destination:** dotenv
|
|
279
|
-
|
|
280
|
-
1. Not needed
|
|
281
|
-
|
|
282
|
-
### GSD_GATE_TEST_ENVKEY
|
|
283
|
-
|
|
284
|
-
**Service:** ServiceZ
|
|
285
|
-
**Status:** pending
|
|
286
|
-
**Destination:** dotenv
|
|
287
|
-
|
|
288
|
-
1. In env already
|
|
289
|
-
`);
|
|
290
|
-
|
|
291
|
-
const result = await getManifestStatus(tmp, 'M001');
|
|
292
|
-
assert.notStrictEqual(result, null, 'manifest should exist');
|
|
293
|
-
assert.deepStrictEqual(result!.pending, [], 'no pending keys — gate would skip');
|
|
294
|
-
assert.deepStrictEqual(result!.collected, ['ALREADY_COLLECTED']);
|
|
295
|
-
assert.deepStrictEqual(result!.skipped, ['ALREADY_SKIPPED']);
|
|
296
|
-
assert.deepStrictEqual(result!.existing, ['GSD_GATE_TEST_ENVKEY']);
|
|
297
|
-
} finally {
|
|
298
|
-
delete process.env.GSD_GATE_TEST_ENVKEY;
|
|
299
|
-
if (savedKey !== undefined) process.env.GSD_GATE_TEST_ENVKEY = savedKey;
|
|
300
|
-
rmSync(tmp, { recursive: true, force: true });
|
|
301
|
-
}
|
|
302
|
-
});
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* auto-session-encapsulation.test.ts — Guards the AutoSession encapsulation invariant.
|
|
3
|
-
*
|
|
4
|
-
* All mutable auto-mode state must live in AutoSession (auto/session.ts).
|
|
5
|
-
* auto.ts must not declare module-level `let` or `var` variables.
|
|
6
|
-
*
|
|
7
|
-
* These tests parse auto.ts source to detect violations, so they fail at
|
|
8
|
-
* test time — before a PR merges — when someone accidentally adds mutable
|
|
9
|
-
* module-level state to auto.ts instead of AutoSession.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import test from "node:test";
|
|
13
|
-
import assert from "node:assert/strict";
|
|
14
|
-
import { readFileSync } from "node:fs";
|
|
15
|
-
import { join, dirname } from "node:path";
|
|
16
|
-
import { fileURLToPath } from "node:url";
|
|
17
|
-
|
|
18
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
19
|
-
const AUTO_TS_PATH = join(__dirname, "..", "auto.ts");
|
|
20
|
-
const SESSION_TS_PATH = join(__dirname, "..", "auto", "session.ts");
|
|
21
|
-
|
|
22
|
-
function getAutoTsSource(): string {
|
|
23
|
-
return readFileSync(AUTO_TS_PATH, "utf-8");
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function getSessionTsSource(): string {
|
|
27
|
-
return readFileSync(SESSION_TS_PATH, "utf-8");
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// ── Invariant 1: No module-level mutable variables in auto.ts ────────────────
|
|
31
|
-
|
|
32
|
-
test("auto.ts has no module-level let declarations", () => {
|
|
33
|
-
const source = getAutoTsSource();
|
|
34
|
-
const lines = source.split("\n");
|
|
35
|
-
const violations: string[] = [];
|
|
36
|
-
|
|
37
|
-
for (let i = 0; i < lines.length; i++) {
|
|
38
|
-
const line = lines[i]!;
|
|
39
|
-
// Match lines starting with `let ` or `export let ` (module-level)
|
|
40
|
-
// Skip lines inside functions/blocks (indented)
|
|
41
|
-
if (/^(export\s+)?let\s+/.test(line)) {
|
|
42
|
-
violations.push(`line ${i + 1}: ${line.trim()}`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
assert.equal(
|
|
47
|
-
violations.length,
|
|
48
|
-
0,
|
|
49
|
-
`auto.ts must not have module-level \`let\` declarations. ` +
|
|
50
|
-
`All mutable state belongs in AutoSession (auto/session.ts).\n` +
|
|
51
|
-
`Violations:\n${violations.join("\n")}`,
|
|
52
|
-
);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
test("auto.ts has no module-level var declarations", () => {
|
|
56
|
-
const source = getAutoTsSource();
|
|
57
|
-
const lines = source.split("\n");
|
|
58
|
-
const violations: string[] = [];
|
|
59
|
-
|
|
60
|
-
for (let i = 0; i < lines.length; i++) {
|
|
61
|
-
const line = lines[i]!;
|
|
62
|
-
if (/^(export\s+)?var\s+/.test(line)) {
|
|
63
|
-
violations.push(`line ${i + 1}: ${line.trim()}`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
assert.equal(
|
|
68
|
-
violations.length,
|
|
69
|
-
0,
|
|
70
|
-
`auto.ts must not have module-level \`var\` declarations. ` +
|
|
71
|
-
`All mutable state belongs in AutoSession (auto/session.ts).\n` +
|
|
72
|
-
`Violations:\n${violations.join("\n")}`,
|
|
73
|
-
);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
// ── Invariant 2: AutoSession singleton is the only mutable module-level binding ──
|
|
77
|
-
|
|
78
|
-
test("auto.ts has exactly one module-level const for AutoSession", () => {
|
|
79
|
-
const source = getAutoTsSource();
|
|
80
|
-
const lines = source.split("\n");
|
|
81
|
-
|
|
82
|
-
const sessionConsts = lines.filter(line =>
|
|
83
|
-
/^const\s+\w+\s*=\s*new\s+AutoSession/.test(line),
|
|
84
|
-
);
|
|
85
|
-
|
|
86
|
-
assert.equal(
|
|
87
|
-
sessionConsts.length,
|
|
88
|
-
1,
|
|
89
|
-
`auto.ts should have exactly one \`const s = new AutoSession()\`. ` +
|
|
90
|
-
`Found ${sessionConsts.length}: ${sessionConsts.join(", ")}`,
|
|
91
|
-
);
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
// ── Invariant 3: AutoSession.reset() covers all instance properties ──────────
|
|
95
|
-
|
|
96
|
-
test("AutoSession.reset() references every instance property", () => {
|
|
97
|
-
const source = getSessionTsSource();
|
|
98
|
-
|
|
99
|
-
// Extract property names from class body (lines like ` propName = ...` or ` propName:`)
|
|
100
|
-
// Skip readonly collections (Maps/Sets) that use .clear() instead of reassignment
|
|
101
|
-
const propertyPattern = /^\s+(readonly\s+)?(\w+)\s*[:=]/;
|
|
102
|
-
const properties: string[] = [];
|
|
103
|
-
let inClass = false;
|
|
104
|
-
let inMethod = false;
|
|
105
|
-
let braceDepth = 0;
|
|
106
|
-
|
|
107
|
-
for (const line of source.split("\n")) {
|
|
108
|
-
if (/^export class AutoSession/.test(line)) {
|
|
109
|
-
inClass = true;
|
|
110
|
-
braceDepth = 0;
|
|
111
|
-
continue;
|
|
112
|
-
}
|
|
113
|
-
if (!inClass) continue;
|
|
114
|
-
|
|
115
|
-
// Track brace depth to distinguish properties from method bodies
|
|
116
|
-
for (const ch of line) {
|
|
117
|
-
if (ch === "{") braceDepth++;
|
|
118
|
-
if (ch === "}") braceDepth--;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// Class-level properties are at brace depth 1 (inside the class, outside methods)
|
|
122
|
-
if (braceDepth === 1 && !inMethod) {
|
|
123
|
-
const match = line.match(propertyPattern);
|
|
124
|
-
if (match && match[2]) {
|
|
125
|
-
const propName = match[2];
|
|
126
|
-
// Skip method-like names and type-only declarations
|
|
127
|
-
if (!["constructor", "clearTimers", "resetDispatchCounters", "lockBasePath",
|
|
128
|
-
"completeCurrentUnit", "reset", "toJSON"].includes(propName)) {
|
|
129
|
-
properties.push(propName);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// Detect method start/end
|
|
135
|
-
if (braceDepth === 1 && /^\s+(get |async )?(\w+)\s*\(/.test(line)) {
|
|
136
|
-
inMethod = true;
|
|
137
|
-
}
|
|
138
|
-
if (braceDepth === 1 && inMethod) {
|
|
139
|
-
inMethod = false;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// Extract the reset() method body
|
|
144
|
-
const resetMatch = source.match(/reset\(\): void \{([\s\S]*?)^\s{2}\}/m);
|
|
145
|
-
assert.ok(resetMatch, "AutoSession.reset() method not found");
|
|
146
|
-
const resetBody = resetMatch![1]!;
|
|
147
|
-
|
|
148
|
-
// completedKeySet is intentionally not cleared (documented in reset())
|
|
149
|
-
const intentionallySkipped = new Set(["completedKeySet"]);
|
|
150
|
-
|
|
151
|
-
const missingFromReset: string[] = [];
|
|
152
|
-
for (const prop of properties) {
|
|
153
|
-
if (intentionallySkipped.has(prop)) continue;
|
|
154
|
-
// Check if the property name appears in reset body (as `this.prop` assignment or `.clear()`)
|
|
155
|
-
if (!resetBody.includes(`this.${prop}`)) {
|
|
156
|
-
missingFromReset.push(prop);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
assert.equal(
|
|
161
|
-
missingFromReset.length,
|
|
162
|
-
0,
|
|
163
|
-
`AutoSession.reset() must reference every instance property. ` +
|
|
164
|
-
`Missing: ${missingFromReset.join(", ")}. ` +
|
|
165
|
-
`If a property should persist across resets, add it to the intentionallySkipped set in this test.`,
|
|
166
|
-
);
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
// ── Invariant 4: AutoSession.toJSON() provides diagnostic visibility ─────────
|
|
170
|
-
|
|
171
|
-
test("AutoSession.toJSON() includes key diagnostic properties", () => {
|
|
172
|
-
const source = getSessionTsSource();
|
|
173
|
-
|
|
174
|
-
const toJSONMatch = source.match(/toJSON\(\)[\s\S]*?return \{([\s\S]*?)\};/);
|
|
175
|
-
assert.ok(toJSONMatch, "AutoSession.toJSON() method not found");
|
|
176
|
-
const toJSONBody = toJSONMatch![1]!;
|
|
177
|
-
|
|
178
|
-
// These are the minimum properties needed for diagnostic snapshots
|
|
179
|
-
const requiredDiagnostics = [
|
|
180
|
-
"active",
|
|
181
|
-
"paused",
|
|
182
|
-
"basePath",
|
|
183
|
-
"currentMilestoneId",
|
|
184
|
-
"currentUnit",
|
|
185
|
-
"dispatching",
|
|
186
|
-
];
|
|
187
|
-
|
|
188
|
-
const missing = requiredDiagnostics.filter(prop => !toJSONBody.includes(prop));
|
|
189
|
-
|
|
190
|
-
assert.equal(
|
|
191
|
-
missing.length,
|
|
192
|
-
0,
|
|
193
|
-
`AutoSession.toJSON() must include diagnostic properties: ${missing.join(", ")}`,
|
|
194
|
-
);
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
// ── Invariant 5: No state-bearing module-level consts that should be in AutoSession ──
|
|
198
|
-
|
|
199
|
-
test("auto.ts module-level consts are only AutoSession instance, true constants, or static accessors", () => {
|
|
200
|
-
const source = getAutoTsSource();
|
|
201
|
-
const lines = source.split("\n");
|
|
202
|
-
const violations: string[] = [];
|
|
203
|
-
|
|
204
|
-
// Patterns that are acceptable at module level
|
|
205
|
-
const allowedPatterns = [
|
|
206
|
-
/^const s = new AutoSession/, // The session singleton
|
|
207
|
-
/^const [A-Z_]+\s*=/, // UPPER_CASE constants
|
|
208
|
-
/^const \w+StateAccessors/, // Static accessor objects
|
|
209
|
-
/^const \w+:\s*\w+\s*=/, // Typed constants
|
|
210
|
-
];
|
|
211
|
-
|
|
212
|
-
for (let i = 0; i < lines.length; i++) {
|
|
213
|
-
const line = lines[i]!;
|
|
214
|
-
if (!/^(export\s+)?const\s+/.test(line)) continue;
|
|
215
|
-
|
|
216
|
-
const isAllowed = allowedPatterns.some(p => p.test(line.replace(/^export\s+/, "")));
|
|
217
|
-
if (!isAllowed) {
|
|
218
|
-
// Check if it looks like mutable state (arrays, objects with mutable semantics)
|
|
219
|
-
if (/= new (Map|Set|Array)\(/.test(line) || /= \[\]/.test(line)) {
|
|
220
|
-
violations.push(`line ${i + 1}: ${line.trim()}`);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
assert.equal(
|
|
226
|
-
violations.length,
|
|
227
|
-
0,
|
|
228
|
-
`auto.ts has module-level const declarations that look like mutable state. ` +
|
|
229
|
-
`Move these into AutoSession:\n${violations.join("\n")}`,
|
|
230
|
-
);
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
// ── Invariant 6: session.ts file exists and exports AutoSession ──────────────
|
|
234
|
-
|
|
235
|
-
test("auto/session.ts exports AutoSession class", () => {
|
|
236
|
-
const source = getSessionTsSource();
|
|
237
|
-
assert.ok(
|
|
238
|
-
/export class AutoSession/.test(source),
|
|
239
|
-
"auto/session.ts must export the AutoSession class",
|
|
240
|
-
);
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
test("AutoSession has a reset() method", () => {
|
|
244
|
-
const source = getSessionTsSource();
|
|
245
|
-
assert.ok(
|
|
246
|
-
/reset\(\): void/.test(source),
|
|
247
|
-
"AutoSession must have a reset(): void method",
|
|
248
|
-
);
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
test("AutoSession has a toJSON() method", () => {
|
|
252
|
-
const source = getSessionTsSource();
|
|
253
|
-
assert.ok(
|
|
254
|
-
/toJSON\(\)/.test(source),
|
|
255
|
-
"AutoSession must have a toJSON() method for diagnostics",
|
|
256
|
-
);
|
|
257
|
-
});
|