gsd-pi 2.73.1-dev.d987996 → 2.74.0-dev.14c45ac
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-web-branch.d.ts +4 -3
- package/dist/cli-web-branch.js +10 -7
- package/dist/cli.js +184 -206
- package/dist/headless-query.js +4 -1
- package/dist/help-text.js +23 -0
- package/dist/logo.d.ts +1 -1
- package/dist/logo.js +1 -1
- package/dist/onboarding.js +59 -53
- package/dist/resource-loader.js +2 -2
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +68 -4
- package/dist/resources/extensions/gsd/activity-log.js +16 -0
- package/dist/resources/extensions/gsd/auto/detect-stuck.js +11 -4
- package/dist/resources/extensions/gsd/auto/loop.js +147 -10
- package/dist/resources/extensions/gsd/auto/phases.js +173 -13
- package/dist/resources/extensions/gsd/auto/session.js +10 -0
- package/dist/resources/extensions/gsd/auto-dispatch.js +22 -4
- package/dist/resources/extensions/gsd/auto-model-selection.js +105 -16
- package/dist/resources/extensions/gsd/auto-post-unit.js +254 -15
- package/dist/resources/extensions/gsd/auto-prompts.js +12 -0
- package/dist/resources/extensions/gsd/auto-start.js +23 -6
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +13 -0
- package/dist/resources/extensions/gsd/auto-unit-closeout.js +18 -0
- package/dist/resources/extensions/gsd/auto-verification.js +186 -3
- package/dist/resources/extensions/gsd/auto.js +65 -12
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +21 -8
- package/dist/resources/extensions/gsd/commands/catalog.js +26 -1
- package/dist/resources/extensions/gsd/commands/handlers/ops.js +25 -0
- package/dist/resources/extensions/gsd/commands/handlers/workflow.js +68 -9
- package/dist/resources/extensions/gsd/commands-add-tests.js +111 -0
- package/dist/resources/extensions/gsd/commands-backlog.js +140 -0
- package/dist/resources/extensions/gsd/commands-do.js +79 -0
- package/dist/resources/extensions/gsd/commands-extract-learnings.js +225 -0
- package/dist/resources/extensions/gsd/commands-handlers.js +8 -2
- package/dist/resources/extensions/gsd/commands-maintenance.js +6 -6
- package/dist/resources/extensions/gsd/commands-pr-branch.js +180 -0
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +1 -1
- package/dist/resources/extensions/gsd/commands-session-report.js +82 -0
- package/dist/resources/extensions/gsd/commands-ship.js +187 -0
- package/dist/resources/extensions/gsd/db-writer.js +3 -5
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +15 -2
- package/dist/resources/extensions/gsd/git-service.js +49 -1
- package/dist/resources/extensions/gsd/graph-context.js +157 -0
- package/dist/resources/extensions/gsd/gsd-db.js +581 -2
- package/dist/resources/extensions/gsd/guided-flow.js +23 -0
- package/dist/resources/extensions/gsd/index.js +15 -2
- package/dist/resources/extensions/gsd/init-wizard.js +1 -0
- package/dist/resources/extensions/gsd/journal.js +27 -0
- package/dist/resources/extensions/gsd/md-importer.js +3 -4
- package/dist/resources/extensions/gsd/memory-store.js +19 -51
- package/dist/resources/extensions/gsd/metrics.js +19 -0
- package/dist/resources/extensions/gsd/milestone-validation-gates.js +13 -12
- package/dist/resources/extensions/gsd/native-git-bridge.js +7 -4
- package/dist/resources/extensions/gsd/notification-widget.js +2 -2
- package/dist/resources/extensions/gsd/parallel-orchestrator.js +33 -1
- package/dist/resources/extensions/gsd/preferences-models.js +63 -3
- package/dist/resources/extensions/gsd/preferences-types.js +2 -0
- package/dist/resources/extensions/gsd/preferences-validation.js +130 -2
- package/dist/resources/extensions/gsd/preferences.js +26 -0
- package/dist/resources/extensions/gsd/prompts/add-tests.md +35 -0
- package/dist/resources/extensions/gsd/slice-parallel-orchestrator.js +12 -2
- package/dist/resources/extensions/gsd/state.js +66 -15
- package/dist/resources/extensions/gsd/templates/PREFERENCES.md +18 -0
- package/dist/resources/extensions/gsd/tools/complete-slice.js +20 -0
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +39 -4
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +3 -14
- package/dist/resources/extensions/gsd/triage-resolution.js +2 -5
- package/dist/resources/extensions/gsd/unit-ownership.js +1 -1
- package/dist/resources/extensions/gsd/uok/audit-toggle.js +7 -0
- package/dist/resources/extensions/gsd/uok/audit.js +40 -0
- package/dist/resources/extensions/gsd/uok/contracts.js +1 -0
- package/dist/resources/extensions/gsd/uok/execution-graph.js +179 -0
- package/dist/resources/extensions/gsd/uok/flags.js +29 -0
- package/dist/resources/extensions/gsd/uok/gate-runner.js +109 -0
- package/dist/resources/extensions/gsd/uok/gitops.js +53 -0
- package/dist/resources/extensions/gsd/uok/kernel.js +80 -0
- package/dist/resources/extensions/gsd/uok/loop-adapter.js +133 -0
- package/dist/resources/extensions/gsd/uok/model-policy.js +66 -0
- package/dist/resources/extensions/gsd/uok/plan-v2.js +132 -0
- package/dist/resources/extensions/gsd/workflow-logger.js +22 -0
- package/dist/resources/extensions/gsd/workflow-manifest.js +8 -69
- package/dist/resources/extensions/gsd/workflow-migration.js +21 -22
- package/dist/resources/extensions/gsd/workflow-projections.js +4 -1
- package/dist/resources/extensions/gsd/workflow-reconcile.js +14 -11
- package/dist/resources/extensions/ttsr/ttsr-manager.js +3 -1
- package/dist/tsconfig.extensions.tsbuildinfo +1 -0
- package/dist/update-check.d.ts +1 -0
- package/dist/update-check.js +13 -5
- package/dist/update-cmd.js +4 -3
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +11 -11
- package/dist/web/standalone/.next/build-manifest.json +2 -2
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/required-server-files.json +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +11 -11
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/server.js +1 -1
- package/package.json +3 -3
- package/packages/daemon/package.json +2 -2
- package/packages/mcp-server/dist/index.d.ts +3 -0
- package/packages/mcp-server/dist/index.d.ts.map +1 -1
- package/packages/mcp-server/dist/index.js +3 -0
- package/packages/mcp-server/dist/index.js.map +1 -1
- package/packages/mcp-server/dist/readers/graph.d.ts +87 -0
- package/packages/mcp-server/dist/readers/graph.d.ts.map +1 -0
- package/packages/mcp-server/dist/readers/graph.js +655 -0
- package/packages/mcp-server/dist/readers/graph.js.map +1 -0
- package/packages/mcp-server/dist/readers/index.d.ts +2 -0
- package/packages/mcp-server/dist/readers/index.d.ts.map +1 -1
- package/packages/mcp-server/dist/readers/index.js +1 -0
- package/packages/mcp-server/dist/readers/index.js.map +1 -1
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +65 -0
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/package.json +2 -2
- package/packages/mcp-server/src/index.ts +15 -0
- package/packages/mcp-server/src/readers/graph.test.ts +604 -0
- package/packages/mcp-server/src/readers/graph.ts +855 -0
- package/packages/mcp-server/src/readers/index.ts +12 -0
- package/packages/mcp-server/src/server.ts +83 -0
- package/packages/mcp-server/tsconfig.json +1 -0
- package/packages/mcp-server/tsconfig.tsbuildinfo +1 -0
- package/packages/native/package.json +2 -2
- package/packages/native/tsconfig.tsbuildinfo +1 -0
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-agent-core/tsconfig.json +1 -0
- package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -0
- package/packages/pi-ai/dist/index.d.ts +1 -0
- package/packages/pi-ai/dist/index.d.ts.map +1 -1
- package/packages/pi-ai/dist/index.js +1 -0
- package/packages/pi-ai/dist/index.js.map +1 -1
- package/packages/pi-ai/dist/utils/overflow.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/overflow.js +12 -0
- package/packages/pi-ai/dist/utils/overflow.js.map +1 -1
- package/packages/pi-ai/dist/utils/tests/overflow.test.d.ts +2 -0
- package/packages/pi-ai/dist/utils/tests/overflow.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/utils/tests/overflow.test.js +50 -0
- package/packages/pi-ai/dist/utils/tests/overflow.test.js.map +1 -0
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-ai/src/index.ts +4 -0
- package/packages/pi-ai/src/utils/overflow.ts +14 -1
- package/packages/pi-ai/src/utils/tests/overflow.test.ts +58 -0
- package/packages/pi-ai/tsconfig.json +1 -0
- package/packages/pi-ai/tsconfig.tsbuildinfo +1 -0
- package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +511 -8
- package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction/utils.js +5 -5
- package/packages/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction-utils.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/compaction-utils.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/compaction-utils.test.js +45 -0
- package/packages/pi-coding-agent/dist/core/compaction-utils.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.js +52 -0
- package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.js +2 -2
- package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts +12 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +61 -28
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.d.ts +2 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js +9 -3
- package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.js +52 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +165 -20
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +11 -3
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +620 -8
- package/packages/pi-coding-agent/src/core/compaction/utils.ts +5 -5
- package/packages/pi-coding-agent/src/core/compaction-utils.test.ts +50 -0
- package/packages/pi-coding-agent/src/core/model-registry-env-fallback.test.ts +59 -0
- package/packages/pi-coding-agent/src/core/model-registry.ts +2 -1
- package/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +74 -32
- package/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.test.ts +73 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.ts +9 -3
- package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +189 -25
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +11 -3
- package/packages/pi-coding-agent/src/types/ambient-modules.d.ts +69 -0
- package/packages/pi-coding-agent/tsconfig.json +3 -2
- package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -0
- package/packages/pi-tui/dist/__tests__/tui.test.js +60 -1
- package/packages/pi-tui/dist/__tests__/tui.test.js.map +1 -1
- package/packages/pi-tui/dist/tui.d.ts +8 -0
- package/packages/pi-tui/dist/tui.d.ts.map +1 -1
- package/packages/pi-tui/dist/tui.js +32 -3
- package/packages/pi-tui/dist/tui.js.map +1 -1
- package/packages/pi-tui/package.json +1 -1
- package/packages/pi-tui/src/__tests__/tui.test.ts +76 -1
- package/packages/pi-tui/src/tui.ts +31 -3
- package/packages/pi-tui/tsconfig.json +1 -0
- package/packages/pi-tui/tsconfig.tsbuildinfo +1 -0
- package/packages/rpc-client/package.json +1 -1
- package/packages/rpc-client/tsconfig.json +1 -0
- package/packages/rpc-client/tsconfig.tsbuildinfo +1 -0
- package/pkg/package.json +1 -1
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +107 -5
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +111 -2
- package/src/resources/extensions/gsd/activity-log.ts +21 -0
- package/src/resources/extensions/gsd/auto/detect-stuck.ts +12 -4
- package/src/resources/extensions/gsd/auto/loop-deps.ts +10 -0
- package/src/resources/extensions/gsd/auto/loop.ts +159 -10
- package/src/resources/extensions/gsd/auto/phases.ts +213 -13
- package/src/resources/extensions/gsd/auto/session.ts +10 -0
- package/src/resources/extensions/gsd/auto-dispatch.ts +26 -10
- package/src/resources/extensions/gsd/auto-model-selection.ts +151 -16
- package/src/resources/extensions/gsd/auto-post-unit.ts +278 -16
- package/src/resources/extensions/gsd/auto-prompts.ts +13 -0
- package/src/resources/extensions/gsd/auto-start.ts +30 -6
- package/src/resources/extensions/gsd/auto-timeout-recovery.ts +17 -0
- package/src/resources/extensions/gsd/auto-unit-closeout.ts +25 -1
- package/src/resources/extensions/gsd/auto-verification.ts +225 -3
- package/src/resources/extensions/gsd/auto.ts +72 -16
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +24 -8
- package/src/resources/extensions/gsd/commands/catalog.ts +26 -1
- package/src/resources/extensions/gsd/commands/handlers/ops.ts +25 -0
- package/src/resources/extensions/gsd/commands/handlers/workflow.ts +74 -9
- package/src/resources/extensions/gsd/commands-add-tests.ts +137 -0
- package/src/resources/extensions/gsd/commands-backlog.ts +182 -0
- package/src/resources/extensions/gsd/commands-do.ts +109 -0
- package/src/resources/extensions/gsd/commands-extract-learnings.ts +304 -0
- package/src/resources/extensions/gsd/commands-handlers.ts +8 -2
- package/src/resources/extensions/gsd/commands-maintenance.ts +6 -6
- package/src/resources/extensions/gsd/commands-pr-branch.ts +234 -0
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +1 -1
- package/src/resources/extensions/gsd/commands-session-report.ts +101 -0
- package/src/resources/extensions/gsd/commands-ship.ts +219 -0
- package/src/resources/extensions/gsd/db-writer.ts +3 -5
- package/src/resources/extensions/gsd/docs/preferences-reference.md +15 -2
- package/src/resources/extensions/gsd/git-service.ts +68 -0
- package/src/resources/extensions/gsd/graph-context.ts +212 -0
- package/src/resources/extensions/gsd/gsd-db.ts +788 -3
- package/src/resources/extensions/gsd/guided-flow.ts +32 -0
- package/src/resources/extensions/gsd/index.ts +18 -2
- package/src/resources/extensions/gsd/init-wizard.ts +3 -2
- package/src/resources/extensions/gsd/journal.ts +30 -0
- package/src/resources/extensions/gsd/md-importer.ts +3 -5
- package/src/resources/extensions/gsd/memory-store.ts +31 -62
- package/src/resources/extensions/gsd/metrics.ts +26 -0
- package/src/resources/extensions/gsd/milestone-validation-gates.ts +13 -14
- package/src/resources/extensions/gsd/native-git-bridge.ts +11 -12
- package/src/resources/extensions/gsd/notification-widget.ts +2 -2
- package/src/resources/extensions/gsd/parallel-orchestrator.ts +40 -1
- package/src/resources/extensions/gsd/preferences-models.ts +61 -3
- package/src/resources/extensions/gsd/preferences-types.ts +44 -0
- package/src/resources/extensions/gsd/preferences-validation.ts +130 -2
- package/src/resources/extensions/gsd/preferences.ts +28 -0
- package/src/resources/extensions/gsd/prompts/add-tests.md +35 -0
- package/src/resources/extensions/gsd/session-lock.ts +14 -2
- package/src/resources/extensions/gsd/slice-parallel-orchestrator.ts +20 -1
- package/src/resources/extensions/gsd/state.ts +80 -17
- package/src/resources/extensions/gsd/templates/PREFERENCES.md +18 -0
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +9 -5
- package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +20 -0
- package/src/resources/extensions/gsd/tests/auto-post-unit-step-message.test.ts +53 -0
- package/src/resources/extensions/gsd/tests/auto-project-root-env.test.ts +7 -3
- package/src/resources/extensions/gsd/tests/auto-start-model-capture.test.ts +51 -2
- package/src/resources/extensions/gsd/tests/cold-resume-db-reopen.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/commands-backlog.test.ts +158 -0
- package/src/resources/extensions/gsd/tests/commands-do.test.ts +127 -0
- package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +340 -0
- package/src/resources/extensions/gsd/tests/commands-pr-branch.test.ts +68 -0
- package/src/resources/extensions/gsd/tests/commands-session-report.test.ts +82 -0
- package/src/resources/extensions/gsd/tests/commands-ship.test.ts +71 -0
- package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +14 -0
- package/src/resources/extensions/gsd/tests/complete-milestone-false-merge.test.ts +142 -0
- package/src/resources/extensions/gsd/tests/complete-slice.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/completed-at-reconcile.test.ts +42 -0
- package/src/resources/extensions/gsd/tests/derive-state-crossval.test.ts +3 -2
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +3 -2
- package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +68 -8
- package/src/resources/extensions/gsd/tests/derive-state.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/extension-bootstrap-isolation.test.ts +154 -0
- package/src/resources/extensions/gsd/tests/finalize-timeout-guard.test.ts +10 -7
- package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +137 -1
- package/src/resources/extensions/gsd/tests/graph-context.test.ts +337 -0
- package/src/resources/extensions/gsd/tests/gsd-db.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/integration/state-machine-edge-cases.test.ts +4 -2
- package/src/resources/extensions/gsd/tests/journal-integration.test.ts +68 -1
- package/src/resources/extensions/gsd/tests/md-importer.test.ts +1 -2
- package/src/resources/extensions/gsd/tests/memory-store.test.ts +2 -3
- package/src/resources/extensions/gsd/tests/model-isolation.test.ts +91 -2
- package/src/resources/extensions/gsd/tests/native-git-bridge-exec-fallback.test.ts +140 -0
- package/src/resources/extensions/gsd/tests/post-exec-retry-bypass.test.ts +79 -1
- package/src/resources/extensions/gsd/tests/post-unit-state-rebuild.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/pre-execution-pause-wiring.test.ts +40 -1
- package/src/resources/extensions/gsd/tests/preferences.test.ts +47 -0
- package/src/resources/extensions/gsd/tests/single-writer-invariant.test.ts +180 -0
- package/src/resources/extensions/gsd/tests/state-machine-full-walkthrough.test.ts +5 -7
- package/src/resources/extensions/gsd/tests/token-profile.test.ts +9 -6
- package/src/resources/extensions/gsd/tests/uok-audit-unified.test.ts +101 -0
- package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +85 -0
- package/src/resources/extensions/gsd/tests/uok-execution-graph.test.ts +69 -0
- package/src/resources/extensions/gsd/tests/uok-flags.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/uok-gate-runner.test.ts +70 -0
- package/src/resources/extensions/gsd/tests/uok-gitops-turn-action.test.ts +85 -0
- package/src/resources/extensions/gsd/tests/uok-gitops-wiring.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/uok-model-policy.test.ts +89 -0
- package/src/resources/extensions/gsd/tests/uok-plan-v2-wiring.test.ts +167 -0
- package/src/resources/extensions/gsd/tests/uok-preferences.test.ts +42 -0
- package/src/resources/extensions/gsd/tests/validate-milestone-stuck-guard.test.ts +179 -0
- package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +223 -0
- package/src/resources/extensions/gsd/tools/complete-slice.ts +26 -0
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +48 -3
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +3 -11
- package/src/resources/extensions/gsd/triage-resolution.ts +2 -7
- package/src/resources/extensions/gsd/types.ts +1 -1
- package/src/resources/extensions/gsd/unit-ownership.ts +2 -2
- package/src/resources/extensions/gsd/uok/audit-toggle.ts +9 -0
- package/src/resources/extensions/gsd/uok/audit.ts +51 -0
- package/src/resources/extensions/gsd/uok/contracts.ts +135 -0
- package/src/resources/extensions/gsd/uok/execution-graph.ts +241 -0
- package/src/resources/extensions/gsd/uok/flags.ts +45 -0
- package/src/resources/extensions/gsd/uok/gate-runner.ts +146 -0
- package/src/resources/extensions/gsd/uok/gitops.ts +75 -0
- package/src/resources/extensions/gsd/uok/kernel.ts +105 -0
- package/src/resources/extensions/gsd/uok/loop-adapter.ts +162 -0
- package/src/resources/extensions/gsd/uok/model-policy.ts +112 -0
- package/src/resources/extensions/gsd/uok/plan-v2.ts +156 -0
- package/src/resources/extensions/gsd/workflow-logger.ts +25 -0
- package/src/resources/extensions/gsd/workflow-manifest.ts +9 -104
- package/src/resources/extensions/gsd/workflow-migration.ts +21 -29
- package/src/resources/extensions/gsd/workflow-projections.ts +8 -1
- package/src/resources/extensions/gsd/workflow-reconcile.ts +15 -15
- package/src/resources/extensions/ttsr/ttsr-manager.ts +10 -5
- /package/dist/web/standalone/.next/static/{cGmbVq2su4f9tMpgIkG8u → ZMKM0OI0CrTgzKWbgfPOg}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{cGmbVq2su4f9tMpgIkG8u → ZMKM0OI0CrTgzKWbgfPOg}/_ssgManifest.js +0 -0
|
@@ -10,6 +10,21 @@ import { appKey } from "../components/keybinding-hints.js";
|
|
|
10
10
|
// Tracks the last processed content index to avoid re-scanning all blocks on every message_update
|
|
11
11
|
let lastProcessedContentIndex = 0;
|
|
12
12
|
|
|
13
|
+
// Tracks the previous content[] length so we can detect when an adapter resets
|
|
14
|
+
// the assistant content array for a new provider sub-turn within one lifecycle.
|
|
15
|
+
let lastContentLength = 0;
|
|
16
|
+
|
|
17
|
+
// --- Segment walker state (per streaming assistant turn) ---
|
|
18
|
+
type RenderedSegment =
|
|
19
|
+
| { kind: "text-run"; startIndex: number; endIndex: number; component: AssistantMessageComponent }
|
|
20
|
+
| { kind: "tool"; contentIndex: number; component: ToolExecutionComponent };
|
|
21
|
+
|
|
22
|
+
let renderedSegments: RenderedSegment[] = [];
|
|
23
|
+
// When providers reuse one assistant lifecycle across internal sub-turns,
|
|
24
|
+
// a content[] shrink resets renderedSegments. Keep the displaced segments so
|
|
25
|
+
// claude-code MCP pruning can remove stale provisional text later.
|
|
26
|
+
let orphanedSegments: RenderedSegment[] = [];
|
|
27
|
+
|
|
13
28
|
function hasVisibleAssistantContent(message: { content: Array<any> }): boolean {
|
|
14
29
|
return message.content.some(
|
|
15
30
|
(c) =>
|
|
@@ -78,8 +93,11 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
|
|
|
78
93
|
// Reset content index tracker and pinned state when a new assistant message starts
|
|
79
94
|
if (event.type === "message_start" && event.message.role === "assistant") {
|
|
80
95
|
lastProcessedContentIndex = 0;
|
|
96
|
+
lastContentLength = 0;
|
|
81
97
|
lastPinnedText = "";
|
|
82
98
|
hasToolsInTurn = false;
|
|
99
|
+
renderedSegments = [];
|
|
100
|
+
orphanedSegments = [];
|
|
83
101
|
if (pinnedBorder) pinnedBorder.stopSpinner();
|
|
84
102
|
pinnedBorder = undefined;
|
|
85
103
|
pinnedTextComponent = undefined;
|
|
@@ -99,6 +117,9 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
|
|
|
99
117
|
host.pinnedMessageContainer.clear();
|
|
100
118
|
lastPinnedText = "";
|
|
101
119
|
hasToolsInTurn = false;
|
|
120
|
+
renderedSegments = [];
|
|
121
|
+
orphanedSegments = [];
|
|
122
|
+
lastContentLength = 0;
|
|
102
123
|
if (pinnedBorder) pinnedBorder.stopSpinner();
|
|
103
124
|
pinnedBorder = undefined;
|
|
104
125
|
pinnedTextComponent = undefined;
|
|
@@ -202,12 +223,23 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
|
|
|
202
223
|
}
|
|
203
224
|
|
|
204
225
|
const contentBlocks = host.streamingMessage.content;
|
|
205
|
-
// Some adapters reuse a single assistant
|
|
206
|
-
// spanning multiple provider turns.
|
|
207
|
-
//
|
|
208
|
-
|
|
226
|
+
// Some adapters (notably claude-code) reuse a single assistant
|
|
227
|
+
// lifecycle while internally spanning multiple provider sub-turns.
|
|
228
|
+
// When a new sub-turn starts, content[] length shrinks back to 0/1.
|
|
229
|
+
// The scan loop needs its index reset, AND the segment walker's
|
|
230
|
+
// renderedSegments map must be cleared so existing text-run
|
|
231
|
+
// components don't get overwritten in place with new sub-turn
|
|
232
|
+
// content (#4144 regression). Prior sub-turn children stay in
|
|
233
|
+
// chatContainer as frozen history; new segments append after them.
|
|
234
|
+
if (contentBlocks.length < lastContentLength) {
|
|
235
|
+
orphanedSegments = [...renderedSegments];
|
|
236
|
+
renderedSegments = [];
|
|
237
|
+
lastPinnedText = "";
|
|
238
|
+
lastProcessedContentIndex = 0;
|
|
239
|
+
} else if (lastProcessedContentIndex >= contentBlocks.length) {
|
|
209
240
|
lastProcessedContentIndex = 0;
|
|
210
241
|
}
|
|
242
|
+
lastContentLength = contentBlocks.length;
|
|
211
243
|
for (let i = lastProcessedContentIndex; i < contentBlocks.length; i++) {
|
|
212
244
|
const content = contentBlocks[i];
|
|
213
245
|
if (content.type === "toolCall") {
|
|
@@ -273,24 +305,148 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
|
|
|
273
305
|
}
|
|
274
306
|
}
|
|
275
307
|
|
|
276
|
-
//
|
|
277
|
-
//
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
host.
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
308
|
+
// Segment walker: render content blocks in stream order, append-only.
|
|
309
|
+
// Build desired segment plan from content[].
|
|
310
|
+
{
|
|
311
|
+
const blocks = host.streamingMessage.content;
|
|
312
|
+
const isClaudeCodeProvider = host.streamingMessage.provider === "claude-code";
|
|
313
|
+
const hasMcpToolBlock = blocks.some((b: any) => {
|
|
314
|
+
if (b?.type === "toolCall") {
|
|
315
|
+
return typeof b?.mcpServer === "string" || String(b?.name ?? "").startsWith("mcp__");
|
|
316
|
+
}
|
|
317
|
+
if (b?.type === "serverToolUse") {
|
|
318
|
+
return typeof b?.mcpServer === "string" || String(b?.name ?? "").startsWith("mcp__");
|
|
319
|
+
}
|
|
320
|
+
return false;
|
|
321
|
+
});
|
|
322
|
+
const shouldDropPreToolText = isClaudeCodeProvider && hasMcpToolBlock;
|
|
323
|
+
const firstToolIdx = blocks.findIndex((b: any) => b.type === "toolCall" || b.type === "serverToolUse");
|
|
324
|
+
type DesiredSegment =
|
|
325
|
+
| { kind: "text-run"; startIndex: number; endIndex: number }
|
|
326
|
+
| { kind: "tool"; contentIndex: number; toolId: string };
|
|
327
|
+
const desired: DesiredSegment[] = [];
|
|
328
|
+
let runStart = -1;
|
|
329
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
330
|
+
const b = blocks[i];
|
|
331
|
+
const isText = b.type === "text" || b.type === "thinking";
|
|
332
|
+
const isTool = b.type === "toolCall" || b.type === "serverToolUse";
|
|
333
|
+
if (isText) {
|
|
334
|
+
if (shouldDropPreToolText && firstToolIdx >= 0 && i < firstToolIdx) {
|
|
335
|
+
continue;
|
|
336
|
+
}
|
|
337
|
+
if (runStart === -1) runStart = i;
|
|
338
|
+
} else {
|
|
339
|
+
if (runStart !== -1) {
|
|
340
|
+
desired.push({ kind: "text-run", startIndex: runStart, endIndex: i - 1 });
|
|
341
|
+
runStart = -1;
|
|
342
|
+
}
|
|
343
|
+
if (isTool) {
|
|
344
|
+
desired.push({ kind: "tool", contentIndex: i, toolId: b.id });
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
if (runStart !== -1) {
|
|
349
|
+
desired.push({ kind: "text-run", startIndex: runStart, endIndex: blocks.length - 1 });
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Claude Code MCP can emit provisional pre-tool prose that gets
|
|
353
|
+
// superseded by post-tool output. Prune stale text-run segments so
|
|
354
|
+
// the final assistant output remains below tool output.
|
|
355
|
+
if (shouldDropPreToolText && firstToolIdx >= 0) {
|
|
356
|
+
if (orphanedSegments.length > 0) {
|
|
357
|
+
const remainingOrphans: RenderedSegment[] = [];
|
|
358
|
+
for (const orphan of orphanedSegments) {
|
|
359
|
+
if (orphan.kind === "text-run") {
|
|
360
|
+
host.chatContainer.removeChild(orphan.component);
|
|
361
|
+
if (host.streamingComponent === orphan.component) {
|
|
362
|
+
host.streamingComponent = undefined;
|
|
363
|
+
}
|
|
364
|
+
continue;
|
|
365
|
+
}
|
|
366
|
+
remainingOrphans.push(orphan);
|
|
367
|
+
}
|
|
368
|
+
orphanedSegments = remainingOrphans;
|
|
369
|
+
}
|
|
370
|
+
const desiredTextStarts = new Set(
|
|
371
|
+
desired
|
|
372
|
+
.filter((seg): seg is Extract<DesiredSegment, { kind: "text-run" }> => seg.kind === "text-run")
|
|
373
|
+
.map((seg) => seg.startIndex),
|
|
374
|
+
);
|
|
375
|
+
const desiredToolIndices = new Set(
|
|
376
|
+
desired
|
|
377
|
+
.filter((seg): seg is Extract<DesiredSegment, { kind: "tool" }> => seg.kind === "tool")
|
|
378
|
+
.map((seg) => seg.contentIndex),
|
|
379
|
+
);
|
|
380
|
+
const nextRendered: RenderedSegment[] = [];
|
|
381
|
+
for (const seg of renderedSegments) {
|
|
382
|
+
if (seg.kind === "text-run" && !desiredTextStarts.has(seg.startIndex)) {
|
|
383
|
+
host.chatContainer.removeChild(seg.component);
|
|
384
|
+
if (host.streamingComponent === seg.component) {
|
|
385
|
+
host.streamingComponent = undefined;
|
|
386
|
+
}
|
|
387
|
+
continue;
|
|
388
|
+
}
|
|
389
|
+
if (seg.kind === "tool" && !desiredToolIndices.has(seg.contentIndex)) {
|
|
390
|
+
continue;
|
|
391
|
+
}
|
|
392
|
+
nextRendered.push(seg);
|
|
393
|
+
}
|
|
394
|
+
renderedSegments = nextRendered;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// Append any newly needed segments (never reorder existing ones).
|
|
398
|
+
for (const seg of desired) {
|
|
399
|
+
if (seg.kind === "tool") {
|
|
400
|
+
// Tool segments are already handled above via pendingTools; just
|
|
401
|
+
// register them in renderedSegments if not yet tracked.
|
|
402
|
+
const existing = renderedSegments.find(
|
|
403
|
+
(s) => s.kind === "tool" && s.contentIndex === seg.contentIndex,
|
|
404
|
+
);
|
|
405
|
+
if (!existing) {
|
|
406
|
+
const comp = host.pendingTools.get(seg.toolId);
|
|
407
|
+
if (comp) {
|
|
408
|
+
renderedSegments.push({ kind: "tool", contentIndex: seg.contentIndex, component: comp });
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
} else {
|
|
412
|
+
// text-run segment
|
|
413
|
+
const existing = renderedSegments.find(
|
|
414
|
+
(s) => s.kind === "text-run" && s.startIndex === seg.startIndex,
|
|
415
|
+
);
|
|
416
|
+
if (!existing) {
|
|
417
|
+
const comp = new AssistantMessageComponent(
|
|
418
|
+
undefined,
|
|
419
|
+
host.hideThinkingBlock,
|
|
420
|
+
host.getMarkdownThemeWithSettings(),
|
|
421
|
+
host.settingsManager.getTimestampFormat(),
|
|
422
|
+
{ startIndex: seg.startIndex, endIndex: seg.endIndex },
|
|
423
|
+
);
|
|
424
|
+
host.chatContainer.addChild(comp);
|
|
425
|
+
renderedSegments.push({ kind: "text-run", startIndex: seg.startIndex, endIndex: seg.endIndex, component: comp });
|
|
426
|
+
host.streamingComponent = comp;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// Update all trailing text-run segments with the latest message so
|
|
432
|
+
// streaming text grows in place.
|
|
433
|
+
for (const seg of renderedSegments) {
|
|
434
|
+
if (seg.kind === "text-run") {
|
|
435
|
+
// Find corresponding desired segment to get current endIndex
|
|
436
|
+
const d = desired.find((ds) => ds.kind === "text-run" && ds.startIndex === seg.startIndex);
|
|
437
|
+
if (d && d.kind === "text-run" && d.endIndex !== seg.endIndex) {
|
|
438
|
+
seg.endIndex = d.endIndex;
|
|
439
|
+
seg.component.setRange({ startIndex: seg.startIndex, endIndex: seg.endIndex });
|
|
440
|
+
}
|
|
441
|
+
seg.component.updateContent(host.streamingMessage);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
// Keep streamingComponent pointing at the last text-run for message_end compatibility.
|
|
446
|
+
const lastTextSeg = [...renderedSegments].reverse().find((s) => s.kind === "text-run");
|
|
447
|
+
if (lastTextSeg && lastTextSeg.kind === "text-run") {
|
|
448
|
+
host.streamingComponent = lastTextSeg.component;
|
|
292
449
|
}
|
|
293
|
-
host.streamingComponent.updateContent(host.streamingMessage);
|
|
294
450
|
}
|
|
295
451
|
|
|
296
452
|
// Update index: fully processed blocks won't need re-scanning.
|
|
@@ -376,6 +532,7 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
|
|
|
376
532
|
host.chatContainer.addChild(host.streamingComponent);
|
|
377
533
|
}
|
|
378
534
|
if (host.streamingComponent) {
|
|
535
|
+
host.streamingComponent.setShowMetadata(true);
|
|
379
536
|
host.streamingComponent.updateContent(host.streamingMessage);
|
|
380
537
|
}
|
|
381
538
|
|
|
@@ -399,6 +556,9 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
|
|
|
399
556
|
}
|
|
400
557
|
host.streamingComponent = undefined;
|
|
401
558
|
host.streamingMessage = undefined;
|
|
559
|
+
renderedSegments = [];
|
|
560
|
+
orphanedSegments = [];
|
|
561
|
+
lastContentLength = 0;
|
|
402
562
|
// Clear pinned output once the message is finalized in the chat
|
|
403
563
|
// container — prevents duplicate display when the agent continues
|
|
404
564
|
// (e.g. form elicitation) after the assistant message ends.
|
|
@@ -454,11 +614,15 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
|
|
|
454
614
|
host.loadingAnimation = undefined;
|
|
455
615
|
host.statusContainer.clear();
|
|
456
616
|
}
|
|
457
|
-
if (host.streamingComponent) {
|
|
458
|
-
host.
|
|
459
|
-
host.streamingComponent
|
|
460
|
-
host.streamingMessage = undefined;
|
|
617
|
+
if (host.streamingComponent && host.streamingMessage) {
|
|
618
|
+
host.streamingComponent.setShowMetadata(true);
|
|
619
|
+
host.streamingComponent.updateContent(host.streamingMessage);
|
|
461
620
|
}
|
|
621
|
+
host.streamingComponent = undefined;
|
|
622
|
+
host.streamingMessage = undefined;
|
|
623
|
+
renderedSegments = [];
|
|
624
|
+
orphanedSegments = [];
|
|
625
|
+
lastContentLength = 0;
|
|
462
626
|
host.pendingTools.clear();
|
|
463
627
|
// Pinned output is only useful while work is actively streaming.
|
|
464
628
|
// Keep chat history as the single source after completion.
|
|
@@ -1402,7 +1402,9 @@ export class InteractiveMode {
|
|
|
1402
1402
|
|
|
1403
1403
|
// widgetContainerAbove: spacer collapses when pinned content is visible
|
|
1404
1404
|
// so there's no extra blank line between pinned output and the editor border.
|
|
1405
|
-
|
|
1405
|
+
// Use detachChildren() (not clear()) — the extensionWidgetsAbove map owns
|
|
1406
|
+
// disposal; clear() would dispose every mounted widget on every re-render.
|
|
1407
|
+
this.widgetContainerAbove.detachChildren();
|
|
1406
1408
|
const pinned = this.pinnedMessageContainer;
|
|
1407
1409
|
this.widgetContainerAbove.addChild({
|
|
1408
1410
|
render: () => pinned.children.length > 0 ? [] : [""],
|
|
@@ -1422,7 +1424,9 @@ export class InteractiveMode {
|
|
|
1422
1424
|
spacerWhenEmpty: boolean,
|
|
1423
1425
|
leadingSpacer: boolean,
|
|
1424
1426
|
): void {
|
|
1425
|
-
|
|
1427
|
+
// Detach without disposing — the widgets map owns lifecycle; disposing
|
|
1428
|
+
// here would kill refresh timers and subscriptions on every re-render.
|
|
1429
|
+
container.detachChildren();
|
|
1426
1430
|
|
|
1427
1431
|
if (widgets.size === 0) {
|
|
1428
1432
|
if (spacerWhenEmpty) {
|
|
@@ -2302,9 +2306,13 @@ export class InteractiveMode {
|
|
|
2302
2306
|
|
|
2303
2307
|
private rebuildChatFromMessages(): void {
|
|
2304
2308
|
this.chatContainer.clear();
|
|
2309
|
+
this.pinnedMessageContainer.clear();
|
|
2305
2310
|
const context = this.sessionManager.buildSessionContext();
|
|
2306
2311
|
this.renderSessionContext(context);
|
|
2307
|
-
|
|
2312
|
+
// Pinned content NOT re-populated here — the streaming lifecycle in
|
|
2313
|
+
// chat-controller.ts manages the pinned zone during active work.
|
|
2314
|
+
// populatePinnedFromMessages() remains in renderInitialMessages()
|
|
2315
|
+
// for the session-resume case at startup.
|
|
2308
2316
|
}
|
|
2309
2317
|
|
|
2310
2318
|
/**
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
declare module "proper-lockfile" {
|
|
2
|
+
export interface RetryOptions {
|
|
3
|
+
retries?: number;
|
|
4
|
+
factor?: number;
|
|
5
|
+
minTimeout?: number;
|
|
6
|
+
maxTimeout?: number;
|
|
7
|
+
randomize?: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface LockOptions {
|
|
11
|
+
realpath?: boolean;
|
|
12
|
+
retries?: number | RetryOptions;
|
|
13
|
+
stale?: number;
|
|
14
|
+
onCompromised?: (err: Error) => void;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type ReleaseSync = () => void;
|
|
18
|
+
export type ReleaseAsync = () => Promise<void>;
|
|
19
|
+
|
|
20
|
+
export interface ProperLockfileApi {
|
|
21
|
+
lockSync(path: string, options?: LockOptions): ReleaseSync;
|
|
22
|
+
lock(path: string, options?: LockOptions): Promise<ReleaseAsync>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const lockfile: ProperLockfileApi;
|
|
26
|
+
export default lockfile;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
declare module "sql.js" {
|
|
30
|
+
export interface Statement {
|
|
31
|
+
bind(values: (string | number | null | Uint8Array)[]): void;
|
|
32
|
+
step(): boolean;
|
|
33
|
+
getAsObject(): Record<string, unknown>;
|
|
34
|
+
free(): void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface Database {
|
|
38
|
+
run(sql: string, params?: unknown[]): void;
|
|
39
|
+
prepare(sql: string): Statement;
|
|
40
|
+
export(): Uint8Array;
|
|
41
|
+
close(): void;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface SqlJsStatic {
|
|
45
|
+
Database: new (data?: Uint8Array | ArrayBuffer | Buffer) => Database;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface SqlJsConfig {
|
|
49
|
+
locateFile?: (file: string) => string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export default function initSqlJs(config?: SqlJsConfig): Promise<SqlJsStatic>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
declare module "hosted-git-info" {
|
|
56
|
+
export interface HostedGitInfo {
|
|
57
|
+
domain?: string;
|
|
58
|
+
user?: string;
|
|
59
|
+
project?: string;
|
|
60
|
+
committish?: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface HostedGitInfoApi {
|
|
64
|
+
fromUrl(url: string): HostedGitInfo | undefined;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const hostedGitInfo: HostedGitInfoApi;
|
|
68
|
+
export default hostedGitInfo;
|
|
69
|
+
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"strict": true,
|
|
7
7
|
"esModuleInterop": true,
|
|
8
8
|
"skipLibCheck": true,
|
|
9
|
+
"incremental": true,
|
|
9
10
|
"forceConsistentCasingInFileNames": true,
|
|
10
11
|
"declaration": true,
|
|
11
12
|
"declarationMap": true,
|
|
@@ -22,6 +23,6 @@
|
|
|
22
23
|
"outDir": "./dist",
|
|
23
24
|
"rootDir": "./src"
|
|
24
25
|
},
|
|
25
|
-
"include": ["src/**/*.ts"],
|
|
26
|
-
"exclude": ["node_modules", "dist"
|
|
26
|
+
"include": ["src/**/*.ts", "src/**/*.d.ts"],
|
|
27
|
+
"exclude": ["node_modules", "dist"]
|
|
27
28
|
}
|