gsd-pi 2.76.0 → 2.77.0-dev.538325aea
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 +32 -30
- package/dist/claude-cli-check.js +32 -3
- package/dist/cli.js +13 -21
- package/dist/extension-registry.js +1 -1
- package/dist/headless-ui.d.ts +1 -1
- package/dist/headless.js +2 -4
- package/dist/loader.js +0 -1
- package/dist/mcp-server.d.ts +7 -0
- package/dist/mcp-server.js +35 -1
- package/dist/onboarding.js +50 -5
- package/dist/provider-migrations.d.ts +2 -2
- package/dist/provider-migrations.js +2 -1
- package/dist/remote-questions-config.js +1 -1
- package/dist/resource-loader.d.ts +1 -1
- package/dist/resource-loader.js +2 -8
- package/dist/resources/agents/researcher.md +1 -1
- package/dist/resources/extensions/async-jobs/async-bash-tool.js +1 -1
- package/dist/resources/extensions/aws-auth/index.js +2 -1
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +6 -9
- package/dist/resources/extensions/bg-shell/process-manager.js +2 -1
- package/dist/resources/extensions/browser-tools/index.js +0 -1
- package/dist/resources/extensions/claude-code-cli/index.js +1 -1
- package/dist/resources/extensions/claude-code-cli/partial-builder.js +106 -17
- package/dist/resources/extensions/claude-code-cli/readiness.js +31 -8
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +94 -27
- package/dist/resources/extensions/gsd/auto/loop.js +9 -0
- package/dist/resources/extensions/gsd/auto/phases.js +104 -11
- package/dist/resources/extensions/gsd/auto/run-unit.js +38 -2
- package/dist/resources/extensions/gsd/auto/session.js +22 -1
- package/dist/resources/extensions/gsd/auto-dispatch.js +56 -17
- package/dist/resources/extensions/gsd/auto-model-selection.js +53 -16
- package/dist/resources/extensions/gsd/auto-post-unit.js +59 -2
- package/dist/resources/extensions/gsd/auto-prompts.js +14 -0
- package/dist/resources/extensions/gsd/auto-recovery.js +69 -1
- package/dist/resources/extensions/gsd/auto-start.js +74 -59
- package/dist/resources/extensions/gsd/auto-verification.js +33 -0
- package/dist/resources/extensions/gsd/auto-worktree.js +51 -53
- package/dist/resources/extensions/gsd/auto.js +70 -28
- package/dist/resources/extensions/gsd/blocked-models.js +68 -0
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +93 -1
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +39 -9
- package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +93 -0
- package/dist/resources/extensions/gsd/bootstrap/memory-tools.js +3 -0
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +12 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +52 -6
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +84 -23
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +34 -2
- package/dist/resources/extensions/gsd/clean-root-preflight.js +93 -0
- package/dist/resources/extensions/gsd/commands-extract-learnings.js +54 -89
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +968 -23
- package/dist/resources/extensions/gsd/compaction-snapshot.js +121 -0
- package/dist/resources/extensions/gsd/complexity-classifier.js +5 -3
- package/dist/resources/extensions/gsd/db-writer.js +88 -16
- package/dist/resources/extensions/gsd/dispatch-guard.js +44 -3
- package/dist/resources/extensions/gsd/doctor-git-checks.js +23 -29
- package/dist/resources/extensions/gsd/doctor-providers.js +51 -5
- package/dist/resources/extensions/gsd/ecosystem/gsd-extension-api.js +1 -0
- package/dist/resources/extensions/gsd/error-classifier.js +31 -3
- package/dist/resources/extensions/gsd/exec-history.js +120 -0
- package/dist/resources/extensions/gsd/exec-sandbox.js +258 -0
- package/dist/resources/extensions/gsd/gitignore.js +1 -0
- package/dist/resources/extensions/gsd/gsd-db.js +168 -23
- package/dist/resources/extensions/gsd/guided-flow.js +191 -2
- package/dist/resources/extensions/gsd/health-widget.js +4 -1
- package/dist/resources/extensions/gsd/hook-emitter.js +108 -0
- package/dist/resources/extensions/gsd/init-wizard.js +15 -1
- package/dist/resources/extensions/gsd/key-manager.js +28 -0
- package/dist/resources/extensions/gsd/memory-backfill.js +126 -0
- package/dist/resources/extensions/gsd/memory-store.js +19 -0
- package/dist/resources/extensions/gsd/model-router.js +36 -3
- package/dist/resources/extensions/gsd/pre-execution-checks.js +44 -9
- package/dist/resources/extensions/gsd/preferences-types.js +9 -0
- package/dist/resources/extensions/gsd/preferences-validation.js +83 -0
- package/dist/resources/extensions/gsd/preferences.js +17 -17
- package/dist/resources/extensions/gsd/prompt-loader.js +22 -7
- package/dist/resources/extensions/gsd/prompts/complete-milestone.md +1 -1
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +2 -2
- package/dist/resources/extensions/gsd/prompts/debug-diagnose.md +2 -0
- package/dist/resources/extensions/gsd/prompts/discuss-headless.md +8 -0
- package/dist/resources/extensions/gsd/prompts/discuss.md +29 -2
- package/dist/resources/extensions/gsd/prompts/execute-task.md +3 -2
- package/dist/resources/extensions/gsd/prompts/parallel-research-slices.md +5 -2
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -0
- package/dist/resources/extensions/gsd/prompts/research-slice.md +1 -0
- package/dist/resources/extensions/gsd/prompts/system.md +1 -0
- package/dist/resources/extensions/gsd/safety/evidence-collector.js +96 -0
- package/dist/resources/extensions/gsd/safety/file-change-validator.js +13 -5
- package/dist/resources/extensions/gsd/safety/safety-harness.js +5 -1
- package/dist/resources/extensions/gsd/state.js +43 -4
- package/dist/resources/extensions/gsd/token-counter.js +22 -5
- package/dist/resources/extensions/gsd/tools/complete-milestone.js +16 -10
- package/dist/resources/extensions/gsd/tools/exec-search-tool.js +59 -0
- package/dist/resources/extensions/gsd/tools/exec-tool.js +126 -0
- package/dist/resources/extensions/gsd/tools/memory-tools.js +26 -1
- package/dist/resources/extensions/gsd/tools/resume-tool.js +23 -0
- package/dist/resources/extensions/gsd/uok/plan-v2.js +20 -3
- package/dist/resources/extensions/gsd/workflow-mcp.js +3 -0
- package/dist/resources/extensions/gsd/workflow-templates/spike.md +6 -0
- package/dist/resources/extensions/gsd/worktree-resolver.js +50 -10
- package/dist/resources/extensions/mcp-client/index.js +1 -1
- package/dist/resources/extensions/ollama/index.js +1 -2
- package/dist/resources/extensions/ollama/ollama-chat-provider.js +5 -15
- package/dist/resources/extensions/remote-questions/config.js +12 -1
- package/dist/resources/extensions/search-the-web/command-search-provider.js +5 -4
- package/dist/resources/extensions/search-the-web/native-search.js +45 -13
- package/dist/resources/extensions/universal-config/index.js +1 -1
- package/dist/resources/skills/api-design/SKILL.md +190 -0
- package/dist/resources/skills/create-mcp-server/SKILL.md +121 -0
- package/dist/resources/skills/decompose-into-slices/SKILL.md +139 -0
- package/dist/resources/skills/dependency-upgrade/SKILL.md +158 -0
- package/dist/resources/skills/design-an-interface/SKILL.md +102 -0
- package/dist/resources/skills/forensics/SKILL.md +153 -0
- package/dist/resources/skills/grill-me/SKILL.md +93 -0
- package/dist/resources/skills/handoff/SKILL.md +121 -0
- package/dist/resources/skills/observability/SKILL.md +174 -0
- package/dist/resources/skills/security-review/SKILL.md +181 -0
- package/dist/resources/skills/spike-wrap-up/SKILL.md +138 -0
- package/dist/resources/skills/tdd/SKILL.md +112 -0
- package/dist/resources/skills/verify-before-complete/SKILL.md +98 -0
- package/dist/resources/skills/write-docs/SKILL.md +82 -0
- package/dist/resources/skills/write-milestone-brief/SKILL.md +135 -0
- package/dist/security-overrides.d.ts +4 -1
- package/dist/security-overrides.js +16 -3
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- 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 +4 -4
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
- package/dist/web/standalone/.next/required-server-files.json +4 -4
- package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +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/page.js +2 -2
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- 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/api/boot/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +4 -4
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
- 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 +3 -3
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/page.js +2 -2
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +11 -11
- package/dist/web/standalone/.next/server/chunks/63.js +3 -3
- package/dist/web/standalone/.next/server/chunks/6897.js +3 -3
- 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/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware.js +2 -2
- package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
- package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
- 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/.next/static/chunks/2826.d445fb428ef41fa1.js +9 -0
- package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/page-5b113fd32bc2a1c3.js +1 -0
- package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{webpack-5fc74f13a25fa1bb.js → webpack-1832629448831fdc.js} +1 -1
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
- package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
- package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
- package/dist/web/standalone/server.js +1 -1
- package/dist/web-mode.js +1 -1
- package/dist/welcome-screen.js +19 -15
- package/dist/wizard.js +4 -5
- package/package.json +25 -7
- package/packages/daemon/package.json +2 -2
- package/packages/gsd-agent-core/dist/agent-session.d.ts +716 -0
- package/packages/gsd-agent-core/dist/agent-session.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/agent-session.js +2595 -0
- package/packages/gsd-agent-core/dist/agent-session.js.map +1 -0
- package/packages/gsd-agent-core/dist/artifact-manager.d.ts +52 -0
- package/packages/gsd-agent-core/dist/artifact-manager.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/artifact-manager.js +118 -0
- package/packages/gsd-agent-core/dist/artifact-manager.js.map +1 -0
- package/packages/gsd-agent-core/dist/bash-executor.d.ts +57 -0
- package/packages/gsd-agent-core/dist/bash-executor.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/bash-executor.js +282 -0
- package/packages/gsd-agent-core/dist/bash-executor.js.map +1 -0
- package/packages/gsd-agent-core/dist/blob-store.d.ts +39 -0
- package/packages/gsd-agent-core/dist/blob-store.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/blob-store.js +151 -0
- package/packages/gsd-agent-core/dist/blob-store.js.map +1 -0
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts +90 -0
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.js +207 -0
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.js.map +1 -0
- package/packages/gsd-agent-core/dist/compaction/compaction.d.ts +137 -0
- package/packages/gsd-agent-core/dist/compaction/compaction.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/compaction/compaction.js +621 -0
- package/packages/gsd-agent-core/dist/compaction/compaction.js.map +1 -0
- package/packages/gsd-agent-core/dist/compaction/index.d.ts +7 -0
- package/packages/gsd-agent-core/dist/compaction/index.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/compaction/index.js +7 -0
- package/packages/gsd-agent-core/dist/compaction/index.js.map +1 -0
- package/packages/gsd-agent-core/dist/compaction/utils.d.ts +78 -0
- package/packages/gsd-agent-core/dist/compaction/utils.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/compaction/utils.js +263 -0
- package/packages/gsd-agent-core/dist/compaction/utils.js.map +1 -0
- package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts +90 -0
- package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/compaction-orchestrator.js +338 -0
- package/packages/gsd-agent-core/dist/compaction-orchestrator.js.map +1 -0
- package/packages/gsd-agent-core/dist/contextual-tips.d.ts +43 -0
- package/packages/gsd-agent-core/dist/contextual-tips.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/contextual-tips.js +208 -0
- package/packages/gsd-agent-core/dist/contextual-tips.js.map +1 -0
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts +18 -0
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js +250 -0
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js.map +1 -0
- package/packages/gsd-agent-core/dist/export-html/index.d.ts +37 -0
- package/packages/gsd-agent-core/dist/export-html/index.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/export-html/index.js +257 -0
- package/packages/gsd-agent-core/dist/export-html/index.js.map +1 -0
- package/packages/gsd-agent-core/dist/export-html/template.css +971 -0
- package/packages/gsd-agent-core/dist/export-html/template.html +54 -0
- package/packages/gsd-agent-core/dist/export-html/template.js +1583 -0
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts +38 -0
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.js +70 -0
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.js.map +1 -0
- package/packages/gsd-agent-core/dist/export-html/vendor/highlight.min.js +1213 -0
- package/packages/gsd-agent-core/dist/export-html/vendor/marked.min.js +6 -0
- package/packages/gsd-agent-core/dist/fallback-resolver.d.ts +75 -0
- package/packages/gsd-agent-core/dist/fallback-resolver.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/fallback-resolver.js +118 -0
- package/packages/gsd-agent-core/dist/fallback-resolver.js.map +1 -0
- package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts +44 -0
- package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/image-overflow-recovery.js +99 -0
- package/packages/gsd-agent-core/dist/image-overflow-recovery.js.map +1 -0
- package/packages/gsd-agent-core/dist/index.d.ts +14 -0
- package/packages/gsd-agent-core/dist/index.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/index.js +19 -0
- package/packages/gsd-agent-core/dist/index.js.map +1 -0
- package/packages/gsd-agent-core/dist/keybindings.d.ts +47 -0
- package/packages/gsd-agent-core/dist/keybindings.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/keybindings.js +156 -0
- package/packages/gsd-agent-core/dist/keybindings.js.map +1 -0
- package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts +42 -0
- package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/lifecycle-hooks.js +204 -0
- package/packages/gsd-agent-core/dist/lifecycle-hooks.js.map +1 -0
- package/packages/gsd-agent-core/dist/retry-handler.d.ts +128 -0
- package/packages/gsd-agent-core/dist/retry-handler.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/retry-handler.js +518 -0
- package/packages/gsd-agent-core/dist/retry-handler.js.map +1 -0
- package/packages/gsd-agent-core/dist/sdk.d.ts +159 -0
- package/packages/gsd-agent-core/dist/sdk.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/sdk.js +375 -0
- package/packages/gsd-agent-core/dist/sdk.js.map +1 -0
- package/packages/gsd-agent-core/dist/system-prompt.d.ts +28 -0
- package/packages/gsd-agent-core/dist/system-prompt.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/system-prompt.js +201 -0
- package/packages/gsd-agent-core/dist/system-prompt.js.map +1 -0
- package/packages/gsd-agent-core/package.json +25 -0
- package/packages/gsd-agent-core/scripts/copy-assets.cjs +43 -0
- package/packages/gsd-agent-core/src/agent-session.test.ts +169 -0
- package/packages/gsd-agent-core/src/agent-session.ts +3358 -0
- package/packages/gsd-agent-core/src/artifact-manager.ts +126 -0
- package/packages/gsd-agent-core/src/bash-executor.ts +352 -0
- package/packages/gsd-agent-core/src/blob-store.ts +154 -0
- package/packages/gsd-agent-core/src/compaction/branch-summarization.ts +317 -0
- package/packages/gsd-agent-core/src/compaction/compaction.ts +855 -0
- package/packages/gsd-agent-core/src/compaction/index.ts +7 -0
- package/packages/gsd-agent-core/src/compaction/utils.ts +312 -0
- package/packages/gsd-agent-core/src/compaction-orchestrator.ts +449 -0
- package/packages/gsd-agent-core/src/contextual-tips.ts +232 -0
- package/packages/gsd-agent-core/src/export-html/ansi-to-html.ts +259 -0
- package/packages/gsd-agent-core/src/export-html/index.ts +345 -0
- package/packages/gsd-agent-core/src/export-html/template.css +971 -0
- package/packages/gsd-agent-core/src/export-html/template.html +54 -0
- package/packages/gsd-agent-core/src/export-html/template.js +1583 -0
- package/packages/gsd-agent-core/src/export-html/tool-renderer.ts +114 -0
- package/packages/gsd-agent-core/src/export-html/vendor/highlight.min.js +1213 -0
- package/packages/gsd-agent-core/src/export-html/vendor/marked.min.js +6 -0
- package/packages/gsd-agent-core/src/fallback-resolver.ts +193 -0
- package/packages/gsd-agent-core/src/image-overflow-recovery.ts +120 -0
- package/packages/gsd-agent-core/src/index.ts +68 -0
- package/packages/gsd-agent-core/src/keybindings.ts +220 -0
- package/packages/gsd-agent-core/src/lifecycle-hooks.ts +284 -0
- package/packages/gsd-agent-core/src/retry-handler.ts +620 -0
- package/packages/gsd-agent-core/src/sdk.ts +550 -0
- package/packages/gsd-agent-core/src/system-prompt.ts +270 -0
- package/packages/gsd-agent-core/tsconfig.json +28 -0
- package/packages/gsd-agent-core/tsconfig.tsbuildinfo +1 -0
- package/packages/gsd-agent-modes/dist/cli/args.d.ts +58 -0
- package/packages/gsd-agent-modes/dist/cli/args.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/cli/args.js +324 -0
- package/packages/gsd-agent-modes/dist/cli/args.js.map +1 -0
- package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts +13 -0
- package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/cli/config-selector.js +32 -0
- package/packages/gsd-agent-modes/dist/cli/config-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts +15 -0
- package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/cli/file-processor.js +86 -0
- package/packages/gsd-agent-modes/dist/cli/file-processor.js.map +1 -0
- package/packages/gsd-agent-modes/dist/cli/list-models.d.ts +21 -0
- package/packages/gsd-agent-modes/dist/cli/list-models.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/cli/list-models.js +114 -0
- package/packages/gsd-agent-modes/dist/cli/list-models.js.map +1 -0
- package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts +10 -0
- package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/cli/session-picker.js +37 -0
- package/packages/gsd-agent-modes/dist/cli/session-picker.js.map +1 -0
- package/packages/gsd-agent-modes/dist/index.d.ts +7 -0
- package/packages/gsd-agent-modes/dist/index.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/index.js +7 -0
- package/packages/gsd-agent-modes/dist/index.js.map +1 -0
- package/packages/gsd-agent-modes/dist/main.d.ts +8 -0
- package/packages/gsd-agent-modes/dist/main.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/main.js +491 -0
- package/packages/gsd-agent-modes/dist/main.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts +34 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js +330 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts +29 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js +141 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts +36 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js +157 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js +48 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js +43 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts +11 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js +47 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js +44 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts +71 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js +474 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts +15 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js +32 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts +22 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js +70 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js +75 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js +140 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts +12 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js +133 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts +33 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js +82 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts +20 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js +111 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts +24 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js +63 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts +33 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js +118 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts +32 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js +230 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts +34 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js +36 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts +48 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js +72 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts +63 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js +213 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts +86 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js +536 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts +19 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js +93 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts +30 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js +169 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts +49 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js +267 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts +21 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js +155 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts +97 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js +810 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts +71 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js +320 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js +34 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js +46 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js +45 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js +46 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts +15 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js +40 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +111 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +984 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts +44 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js +61 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts +109 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js +1035 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js +112 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts +12 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js +38 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js +33 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +27 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +793 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js +62 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts +22 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js +118 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts +7 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js +68 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +50 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +358 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +3409 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts +77 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js +529 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts +6 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js +15 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts +28 -0
- package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/print-mode.js +84 -0
- package/packages/gsd-agent-modes/dist/modes/print-mode.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts +17 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js +49 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts +37 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js +84 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts +243 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js +464 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts +25 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +750 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts +511 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js +8 -0
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts +19 -0
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js +45 -0
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js.map +1 -0
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts +22 -0
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js +21 -0
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js.map +1 -0
- package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts +4 -0
- package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/pi-tui-compat.js +3 -0
- package/packages/gsd-agent-modes/dist/pi-tui-compat.js.map +1 -0
- package/packages/gsd-agent-modes/dist/theme.d.ts +15 -0
- package/packages/gsd-agent-modes/dist/theme.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/theme.js +23 -0
- package/packages/gsd-agent-modes/dist/theme.js.map +1 -0
- package/packages/gsd-agent-modes/dist/utils/theme.d.ts +16 -0
- package/packages/gsd-agent-modes/dist/utils/theme.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/utils/theme.js +11 -0
- package/packages/gsd-agent-modes/dist/utils/theme.js.map +1 -0
- package/packages/gsd-agent-modes/package.json +23 -0
- package/packages/gsd-agent-modes/src/cli/args.ts +350 -0
- package/packages/gsd-agent-modes/src/cli/config-selector.ts +54 -0
- package/packages/gsd-agent-modes/src/cli/file-processor.ts +107 -0
- package/packages/gsd-agent-modes/src/cli/list-models.ts +141 -0
- package/packages/gsd-agent-modes/src/cli/session-picker.ts +59 -0
- package/packages/gsd-agent-modes/src/index.ts +6 -0
- package/packages/gsd-agent-modes/src/main.ts +614 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/login-dialog.test.ts +24 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/provider-display-name.test.ts +18 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/timestamp.test.ts +38 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/tool-execution.test.ts +171 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/armin.ts +382 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/assistant-message.ts +178 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/bash-execution.ts +212 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/bordered-loader.ts +66 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/branch-summary-message.ts +59 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/chat-frame.ts +67 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/compaction-summary-message.ts +60 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/config-selector.ts +597 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/countdown-timer.ts +41 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/custom-editor.ts +88 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/custom-message.ts +100 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/daxnuts.ts +165 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/diff.ts +147 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.test.ts +73 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.ts +89 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/extension-editor.ts +151 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/extension-input.ts +100 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/extension-selector.ts +156 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/footer.ts +257 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/index.ts +35 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/keybinding-hints.ts +84 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/login-dialog.ts +257 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/model-selector.ts +656 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/oauth-selector.ts +122 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/provider-manager.ts +210 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/scoped-models-selector.ts +342 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector-search.ts +194 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector.ts +1011 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/settings-selector.ts +452 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/show-images-selector.ts +45 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/skill-invocation-message.ts +56 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/theme-selector.ts +63 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/thinking-selector.ts +64 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/timestamp.ts +48 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/tool-execution.ts +1157 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/tree-render-utils.ts +81 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/tree-selector.ts +1208 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/user-message-selector.ts +145 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/user-message.ts +44 -0
- package/packages/gsd-agent-modes/src/modes/interactive/components/visual-truncate.ts +50 -0
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller-ordering.test.ts +1430 -0
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.test.ts +71 -0
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.ts +957 -0
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/extension-ui-controller.ts +63 -0
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.test.ts +183 -0
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.ts +140 -0
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/model-controller.ts +77 -0
- package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-ordering.test.ts +44 -0
- package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-state.ts +49 -0
- package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode.ts +4195 -0
- package/packages/gsd-agent-modes/src/modes/interactive/slash-command-handlers.ts +670 -0
- package/packages/gsd-agent-modes/src/modes/interactive/utils/shorten-path.ts +14 -0
- package/packages/gsd-agent-modes/src/modes/print-mode.ts +106 -0
- package/packages/gsd-agent-modes/src/modes/rpc/jsonl.ts +58 -0
- package/packages/gsd-agent-modes/src/modes/rpc/remote-terminal.ts +109 -0
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-client.ts +572 -0
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-mode.ts +902 -0
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-protocol-v2.test.ts +971 -0
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-types.ts +335 -0
- package/packages/gsd-agent-modes/src/modes/shared/command-context-actions.ts +53 -0
- package/packages/gsd-agent-modes/src/pi-coding-agent-compat.ts +42 -0
- package/packages/gsd-agent-modes/src/pi-tui-compat.ts +4 -0
- package/packages/gsd-agent-modes/src/theme.ts +25 -0
- package/packages/gsd-agent-modes/src/utils/theme.ts +24 -0
- package/packages/gsd-agent-modes/tsconfig.json +28 -0
- package/packages/gsd-agent-modes/tsconfig.tsbuildinfo +1 -0
- package/packages/gsd-agent-types/dist/index.d.ts +176 -0
- package/packages/gsd-agent-types/dist/index.d.ts.map +1 -0
- package/packages/gsd-agent-types/dist/index.js +24 -0
- package/packages/gsd-agent-types/dist/index.js.map +1 -0
- package/packages/gsd-agent-types/package.json +24 -0
- package/packages/gsd-agent-types/src/index.ts +206 -0
- package/packages/gsd-agent-types/tsconfig.json +25 -0
- package/packages/gsd-agent-types/tsconfig.tsbuildinfo +1 -0
- package/packages/mcp-server/dist/remote-questions.d.ts +45 -0
- package/packages/mcp-server/dist/remote-questions.d.ts.map +1 -0
- package/packages/mcp-server/dist/remote-questions.js +732 -0
- package/packages/mcp-server/dist/remote-questions.js.map +1 -0
- package/packages/mcp-server/dist/server.d.ts +7 -0
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +77 -11
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/dist/session-manager.d.ts +14 -0
- package/packages/mcp-server/dist/session-manager.d.ts.map +1 -1
- package/packages/mcp-server/dist/session-manager.js +49 -1
- package/packages/mcp-server/dist/session-manager.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +163 -25
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +4 -3
- package/packages/mcp-server/src/mcp-server.test.ts +67 -0
- package/packages/mcp-server/src/remote-questions.test.ts +294 -0
- package/packages/mcp-server/src/remote-questions.ts +916 -0
- package/packages/mcp-server/src/server.ts +94 -18
- package/packages/mcp-server/src/session-manager.ts +43 -1
- package/packages/mcp-server/src/workflow-tools.test.ts +146 -1
- package/packages/mcp-server/src/workflow-tools.ts +215 -43
- package/packages/mcp-server/tsconfig.test.json +19 -0
- package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
- package/packages/native/dist/tsconfig.tsbuildinfo +1 -0
- package/packages/native/package.json +1 -1
- package/packages/native/tsconfig.json +2 -1
- package/packages/pi-agent-core/dist/agent-loop.js +12 -0
- package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/packages/pi-agent-core/dist/types.d.ts +30 -0
- package/packages/pi-agent-core/dist/types.d.ts.map +1 -1
- package/packages/pi-agent-core/dist/types.js.map +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-agent-core/src/agent-loop.ts +14 -0
- package/packages/pi-agent-core/src/types.ts +34 -0
- package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-ai/dist/models/custom.d.ts +38 -0
- package/packages/pi-ai/dist/models/custom.d.ts.map +1 -1
- package/packages/pi-ai/dist/models/custom.js +41 -0
- package/packages/pi-ai/dist/models/custom.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-auth.test.js +1 -1
- package/packages/pi-ai/dist/providers/anthropic-auth.test.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.d.ts +2 -0
- package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.js +13 -0
- package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.js.map +1 -0
- package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.js +27 -4
- package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic.js +13 -4
- package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/packages/pi-ai/dist/providers/minimax-tool-name.test.d.ts +2 -0
- package/packages/pi-ai/dist/providers/minimax-tool-name.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/minimax-tool-name.test.js +80 -0
- package/packages/pi-ai/dist/providers/minimax-tool-name.test.js.map +1 -0
- package/packages/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/openai-completions.js +60 -15
- package/packages/pi-ai/dist/providers/openai-completions.js.map +1 -1
- package/packages/pi-ai/dist/providers/simple-options.d.ts +10 -0
- package/packages/pi-ai/dist/providers/simple-options.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/simple-options.js +16 -1
- package/packages/pi-ai/dist/providers/simple-options.js.map +1 -1
- package/packages/pi-ai/dist/providers/think-tag-parser.d.ts +17 -0
- package/packages/pi-ai/dist/providers/think-tag-parser.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/think-tag-parser.js +75 -0
- package/packages/pi-ai/dist/providers/think-tag-parser.js.map +1 -0
- package/packages/pi-ai/dist/providers/think-tag-parser.test.d.ts +2 -0
- package/packages/pi-ai/dist/providers/think-tag-parser.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/think-tag-parser.test.js +41 -0
- package/packages/pi-ai/dist/providers/think-tag-parser.test.js.map +1 -0
- package/packages/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/oauth/github-copilot.js +12 -2
- package/packages/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
- package/packages/pi-ai/dist/utils/oauth/github-copilot.test.js +164 -14
- package/packages/pi-ai/dist/utils/oauth/github-copilot.test.js.map +1 -1
- package/packages/pi-ai/dist/utils/oauth/google-antigravity.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/oauth/google-antigravity.js +15 -3
- package/packages/pi-ai/dist/utils/oauth/google-antigravity.js.map +1 -1
- package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.d.ts +2 -0
- package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.js +67 -0
- package/packages/pi-ai/dist/utils/oauth/google-antigravity.test.js.map +1 -0
- package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js +16 -3
- package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js.map +1 -1
- package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.d.ts +2 -0
- package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.js +67 -0
- package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.test.js.map +1 -0
- package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.d.ts +2 -0
- package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.js +289 -0
- package/packages/pi-ai/dist/utils/oauth/oauth-providers.test.js.map +1 -0
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-ai/src/models/custom.ts +42 -0
- package/packages/pi-ai/src/providers/anthropic-auth.test.ts +1 -1
- package/packages/pi-ai/src/providers/anthropic-bearer-auth.test.ts +26 -0
- package/packages/pi-ai/src/providers/anthropic-shared.ts +26 -5
- package/packages/pi-ai/src/providers/anthropic.ts +15 -4
- package/packages/pi-ai/src/providers/minimax-tool-name.test.ts +98 -0
- package/packages/pi-ai/src/providers/openai-completions.ts +57 -16
- package/packages/pi-ai/src/providers/simple-options.ts +17 -1
- package/packages/pi-ai/src/providers/think-tag-parser.test.ts +44 -0
- package/packages/pi-ai/src/providers/think-tag-parser.ts +94 -0
- package/packages/pi-ai/src/utils/oauth/github-copilot.test.ts +200 -23
- package/packages/pi-ai/src/utils/oauth/github-copilot.ts +12 -2
- package/packages/pi-ai/src/utils/oauth/google-antigravity.test.ts +84 -0
- package/packages/pi-ai/src/utils/oauth/google-antigravity.ts +15 -5
- package/packages/pi-ai/src/utils/oauth/google-gemini-cli.test.ts +84 -0
- package/packages/pi-ai/src/utils/oauth/google-gemini-cli.ts +16 -5
- package/packages/pi-ai/src/utils/oauth/oauth-providers.test.ts +363 -0
- package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js +3 -2
- package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js +32 -2
- package/packages/pi-coding-agent/dist/core/agent-session.js.map +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.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.js +4 -0
- package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +35 -2
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.js +233 -0
- package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +205 -2
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/hooks-runner.d.ts +53 -0
- package/packages/pi-coding-agent/dist/core/hooks-runner.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/hooks-runner.js +337 -0
- package/packages/pi-coding-agent/dist/core/hooks-runner.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/hooks-runner.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/hooks-runner.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/hooks-runner.test.js +234 -0
- package/packages/pi-coding-agent/dist/core/hooks-runner.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/index.d.ts +1 -0
- package/packages/pi-coding-agent/dist/core/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/index.js +1 -0
- package/packages/pi-coding-agent/dist/core/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-discovery.d.ts +3 -1
- package/packages/pi-coding-agent/dist/core/model-discovery.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-discovery.js +92 -12
- package/packages/pi-coding-agent/dist/core/model-discovery.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-discovery.test.js +16 -1
- package/packages/pi-coding-agent/dist/core/model-discovery.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.js +40 -0
- package/packages/pi-coding-agent/dist/core/model-registry-auth-header.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-registry-custom-caps.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/model-registry-custom-caps.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-registry-custom-caps.test.js +203 -0
- package/packages/pi-coding-agent/dist/core/model-registry-custom-caps.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-registry-discovery.test.js +61 -1
- package/packages/pi-coding-agent/dist/core/model-registry-discovery.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts +5 -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 +90 -10
- package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/redact-secrets.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/redact-secrets.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/redact-secrets.js +49 -0
- package/packages/pi-coding-agent/dist/core/redact-secrets.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/redact-secrets.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/redact-secrets.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/redact-secrets.test.js +67 -0
- package/packages/pi-coding-agent/dist/core/redact-secrets.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/session-manager.js +10 -6
- package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/session-manager.test.js +45 -1
- package/packages/pi-coding-agent/dist/core/session-manager.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +55 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.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.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js +5 -4
- package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.js +13 -7
- package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.d.ts +7 -6
- package/packages/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.js +29 -21
- package/packages/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.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 +13 -1
- 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/agent-session-abort-order.test.ts +3 -2
- package/packages/pi-coding-agent/src/core/agent-session.ts +38 -2
- package/packages/pi-coding-agent/src/core/extensions/index.ts +16 -0
- package/packages/pi-coding-agent/src/core/extensions/loader.ts +5 -0
- package/packages/pi-coding-agent/src/core/extensions/runner.ts +351 -0
- package/packages/pi-coding-agent/src/core/extensions/types.ts +258 -0
- package/packages/pi-coding-agent/src/core/hooks-runner.test.ts +269 -0
- package/packages/pi-coding-agent/src/core/hooks-runner.ts +460 -0
- package/packages/pi-coding-agent/src/core/index.ts +10 -0
- package/packages/pi-coding-agent/src/core/model-discovery.test.ts +19 -0
- package/packages/pi-coding-agent/src/core/model-discovery.ts +99 -12
- package/packages/pi-coding-agent/src/core/model-registry-auth-header.test.ts +44 -0
- package/packages/pi-coding-agent/src/core/model-registry-custom-caps.test.ts +245 -0
- package/packages/pi-coding-agent/src/core/model-registry-discovery.test.ts +75 -0
- package/packages/pi-coding-agent/src/core/model-registry.ts +102 -10
- package/packages/pi-coding-agent/src/core/redact-secrets.test.ts +86 -0
- package/packages/pi-coding-agent/src/core/redact-secrets.ts +58 -0
- package/packages/pi-coding-agent/src/core/session-manager.test.ts +65 -1
- package/packages/pi-coding-agent/src/core/session-manager.ts +10 -6
- package/packages/pi-coding-agent/src/core/settings-manager.ts +57 -0
- package/packages/pi-coding-agent/src/index.ts +16 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/chat-frame.ts +6 -6
- package/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts +16 -7
- package/packages/pi-coding-agent/src/modes/interactive/components/skill-invocation-message.ts +36 -22
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +13 -1
- package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-tui/package.json +1 -1
- package/packages/rpc-client/package.json +1 -1
- package/pkg/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
- package/pkg/dist/core/export-html/ansi-to-html.js +1 -0
- package/pkg/dist/core/export-html/ansi-to-html.js.map +1 -1
- package/pkg/dist/core/export-html/index.d.ts +1 -1
- package/pkg/dist/core/export-html/index.d.ts.map +1 -1
- package/pkg/dist/core/export-html/index.js +39 -5
- package/pkg/dist/core/export-html/index.js.map +1 -1
- package/pkg/dist/core/export-html/tool-renderer.d.ts +2 -2
- package/pkg/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/pkg/dist/core/export-html/tool-renderer.js.map +1 -1
- package/pkg/package.json +1 -1
- package/scripts/ensure-workspace-builds.cjs +2 -0
- package/scripts/install.js +512 -0
- package/scripts/link-workspace-packages.cjs +3 -0
- package/scripts/postinstall.js +9 -178
- package/src/resources/agents/researcher.md +1 -1
- package/src/resources/extensions/async-jobs/async-bash-tool.ts +1 -1
- package/src/resources/extensions/aws-auth/index.ts +2 -1
- package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +4 -7
- package/src/resources/extensions/bg-shell/index.ts +2 -1
- package/src/resources/extensions/bg-shell/process-manager.ts +2 -1
- package/src/resources/extensions/browser-tools/index.ts +2 -1
- package/src/resources/extensions/claude-code-cli/index.ts +1 -1
- package/src/resources/extensions/claude-code-cli/partial-builder.ts +115 -23
- package/src/resources/extensions/claude-code-cli/readiness.ts +32 -8
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +97 -26
- package/src/resources/extensions/claude-code-cli/tests/provider-registration.test.ts +27 -0
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +176 -8
- package/src/resources/extensions/gsd/auto/loop-deps.ts +14 -0
- package/src/resources/extensions/gsd/auto/loop.ts +9 -0
- package/src/resources/extensions/gsd/auto/phases.ts +131 -10
- package/src/resources/extensions/gsd/auto/run-unit.ts +40 -2
- package/src/resources/extensions/gsd/auto/session.ts +35 -2
- package/src/resources/extensions/gsd/auto-dispatch.ts +59 -16
- package/src/resources/extensions/gsd/auto-model-selection.ts +71 -15
- package/src/resources/extensions/gsd/auto-post-unit.ts +62 -3
- package/src/resources/extensions/gsd/auto-prompts.ts +28 -1
- package/src/resources/extensions/gsd/auto-recovery.ts +62 -1
- package/src/resources/extensions/gsd/auto-start.ts +80 -74
- package/src/resources/extensions/gsd/auto-verification.ts +33 -0
- package/src/resources/extensions/gsd/auto-worktree.ts +62 -63
- package/src/resources/extensions/gsd/auto.ts +73 -28
- package/src/resources/extensions/gsd/blocked-models.ts +98 -0
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +120 -1
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +40 -9
- package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +109 -0
- package/src/resources/extensions/gsd/bootstrap/memory-tools.ts +5 -0
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +15 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +54 -6
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +89 -26
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +35 -2
- package/src/resources/extensions/gsd/clean-root-preflight.ts +111 -0
- package/src/resources/extensions/gsd/commands-extract-learnings.ts +55 -90
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +898 -32
- package/src/resources/extensions/gsd/compaction-snapshot.ts +165 -0
- package/src/resources/extensions/gsd/complexity-classifier.ts +5 -3
- package/src/resources/extensions/gsd/db-writer.ts +88 -17
- package/src/resources/extensions/gsd/dispatch-guard.ts +44 -2
- package/src/resources/extensions/gsd/doctor-git-checks.ts +23 -27
- package/src/resources/extensions/gsd/doctor-providers.ts +59 -6
- package/src/resources/extensions/gsd/ecosystem/gsd-extension-api.ts +2 -0
- package/src/resources/extensions/gsd/error-classifier.ts +36 -3
- package/src/resources/extensions/gsd/exec-history.ts +153 -0
- package/src/resources/extensions/gsd/exec-sandbox.ts +326 -0
- package/src/resources/extensions/gsd/gitignore.ts +1 -1
- package/src/resources/extensions/gsd/gsd-db.ts +186 -23
- package/src/resources/extensions/gsd/guided-flow.ts +223 -2
- package/src/resources/extensions/gsd/health-widget.ts +3 -1
- package/src/resources/extensions/gsd/hook-emitter.ts +188 -0
- package/src/resources/extensions/gsd/init-wizard.ts +15 -1
- package/src/resources/extensions/gsd/journal.ts +2 -1
- package/src/resources/extensions/gsd/key-manager.ts +28 -0
- package/src/resources/extensions/gsd/memory-backfill.ts +140 -0
- package/src/resources/extensions/gsd/memory-store.ts +26 -0
- package/src/resources/extensions/gsd/model-router.ts +42 -1
- package/src/resources/extensions/gsd/pre-execution-checks.ts +46 -10
- package/src/resources/extensions/gsd/preferences-types.ts +46 -0
- package/src/resources/extensions/gsd/preferences-validation.ts +79 -0
- package/src/resources/extensions/gsd/preferences.ts +17 -17
- package/src/resources/extensions/gsd/prompt-loader.ts +30 -7
- package/src/resources/extensions/gsd/prompts/complete-milestone.md +1 -1
- package/src/resources/extensions/gsd/prompts/complete-slice.md +2 -2
- package/src/resources/extensions/gsd/prompts/debug-diagnose.md +2 -0
- package/src/resources/extensions/gsd/prompts/discuss-headless.md +8 -0
- package/src/resources/extensions/gsd/prompts/discuss.md +29 -2
- package/src/resources/extensions/gsd/prompts/execute-task.md +3 -2
- package/src/resources/extensions/gsd/prompts/parallel-research-slices.md +5 -2
- package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -0
- package/src/resources/extensions/gsd/prompts/research-slice.md +1 -0
- package/src/resources/extensions/gsd/prompts/system.md +1 -0
- package/src/resources/extensions/gsd/safety/evidence-collector.ts +119 -0
- package/src/resources/extensions/gsd/safety/file-change-validator.ts +17 -4
- package/src/resources/extensions/gsd/safety/safety-harness.ts +9 -0
- package/src/resources/extensions/gsd/state.ts +45 -4
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +188 -2
- package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +95 -1
- package/src/resources/extensions/gsd/tests/auto-paused-session-validation.test.ts +12 -0
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +122 -0
- package/src/resources/extensions/gsd/tests/auto-start-bootstrap-await-3420.test.ts +141 -0
- package/src/resources/extensions/gsd/tests/auto-start-clean-runtime-db-gated.test.ts +63 -0
- package/src/resources/extensions/gsd/tests/auto-start-model-capture.test.ts +33 -3
- package/src/resources/extensions/gsd/tests/auto-thinking-restore.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/auto-wrapup-inflight-guard.test.ts +23 -0
- package/src/resources/extensions/gsd/tests/blocked-models.test.ts +98 -0
- package/src/resources/extensions/gsd/tests/bundled-skill-triggers.test.ts +54 -0
- package/src/resources/extensions/gsd/tests/clean-root-preflight.test.ts +186 -0
- package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +68 -66
- package/src/resources/extensions/gsd/tests/compaction-snapshot.test.ts +123 -0
- package/src/resources/extensions/gsd/tests/complete-milestone-false-merge.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +61 -1
- 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/complexity-classifier.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +2 -0
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +42 -0
- package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +8 -4
- package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +9 -9
- package/src/resources/extensions/gsd/tests/dispatch-guard-summary-db-mismatch.test.ts +77 -0
- package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +148 -3
- package/src/resources/extensions/gsd/tests/double-merge-guard.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +306 -1
- package/src/resources/extensions/gsd/tests/escalation.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/exec-history.test.ts +237 -0
- package/src/resources/extensions/gsd/tests/exec-sandbox.test.ts +210 -0
- package/src/resources/extensions/gsd/tests/file-change-validator.test.ts +58 -0
- package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +40 -9
- package/src/resources/extensions/gsd/tests/freeform-decisions.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/gsd-db.test.ts +447 -1
- package/src/resources/extensions/gsd/tests/init-wizard.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/integration/doctor-git-symlink-cwd.test.ts +11 -0
- package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +78 -0
- package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/integration/gitignore-tracked-gsd.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/integration/idle-recovery.test.ts +30 -0
- package/src/resources/extensions/gsd/tests/integration/worktree-e2e.test.ts +11 -0
- package/src/resources/extensions/gsd/tests/interactive-routing-bypass.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/isolation-none-branch-guard.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/issue-4540-regressions.test.ts +288 -0
- package/src/resources/extensions/gsd/tests/journal-integration.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/key-manager.test.ts +9 -0
- package/src/resources/extensions/gsd/tests/load-memory-block.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/md-importer.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/memory-pressure-stuck-state.test.ts +12 -0
- package/src/resources/extensions/gsd/tests/memory-store.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/milestone-status-authoritative.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/parallel-research-dispatch.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/plan-gate-failed-doctor-heal-hint.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/pre-exec-backtick-strip.test.ts +14 -0
- package/src/resources/extensions/gsd/tests/pre-exec-gate-loop.test.ts +272 -0
- package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +356 -0
- package/src/resources/extensions/gsd/tests/preferences.test.ts +110 -0
- package/src/resources/extensions/gsd/tests/prefs-wizard-coverage.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/prompt-loader-extension-dir.test.ts +49 -0
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +103 -4
- package/src/resources/extensions/gsd/tests/ready-phrase-no-files-4573.test.ts +388 -0
- package/src/resources/extensions/gsd/tests/restore-tools-after-discuss.test.ts +9 -3
- package/src/resources/extensions/gsd/tests/resume-dispatch-worktree.test.ts +230 -0
- package/src/resources/extensions/gsd/tests/safety-harness-false-positives.test.ts +205 -0
- package/src/resources/extensions/gsd/tests/save-gate-result-render.test.ts +95 -0
- package/src/resources/extensions/gsd/tests/schema-v21-sequence.test.ts +413 -0
- package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +32 -40
- package/src/resources/extensions/gsd/tests/stash-queued-context-files.test.ts +56 -0
- package/src/resources/extensions/gsd/tests/token-counter.test.ts +105 -1
- package/src/resources/extensions/gsd/tests/tool-compatibility.test.ts +107 -0
- package/src/resources/extensions/gsd/tests/uok-plan-v2-wiring.test.ts +23 -0
- package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +136 -8
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +65 -2
- package/src/resources/extensions/gsd/tests/worktree-db.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/worktree-journal-events.test.ts +6 -1
- package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +78 -5
- package/src/resources/extensions/gsd/tests/write-gate.test.ts +64 -0
- package/src/resources/extensions/gsd/tests/zombie-gsd-state.test.ts +3 -1
- package/src/resources/extensions/gsd/token-counter.ts +22 -5
- package/src/resources/extensions/gsd/tools/complete-milestone.ts +15 -9
- package/src/resources/extensions/gsd/tools/exec-search-tool.ts +81 -0
- package/src/resources/extensions/gsd/tools/exec-tool.ts +183 -0
- package/src/resources/extensions/gsd/tools/memory-tools.ts +31 -1
- package/src/resources/extensions/gsd/tools/resume-tool.ts +40 -0
- package/src/resources/extensions/gsd/uok/plan-v2.ts +26 -3
- package/src/resources/extensions/gsd/workflow-logger.ts +4 -1
- package/src/resources/extensions/gsd/workflow-mcp.ts +3 -0
- package/src/resources/extensions/gsd/workflow-templates/spike.md +6 -0
- package/src/resources/extensions/gsd/worktree-resolver.ts +54 -9
- package/src/resources/extensions/mcp-client/index.ts +1 -1
- package/src/resources/extensions/ollama/index.ts +3 -3
- package/src/resources/extensions/ollama/ollama-chat-provider.ts +6 -18
- package/src/resources/extensions/remote-questions/config.ts +15 -4
- package/src/resources/extensions/search-the-web/command-search-provider.ts +5 -4
- package/src/resources/extensions/search-the-web/index.ts +2 -1
- package/src/resources/extensions/search-the-web/native-search.ts +48 -12
- package/src/resources/extensions/shared/tests/format-utils.test.ts +5 -3
- package/src/resources/extensions/universal-config/index.ts +1 -1
- package/src/resources/skills/api-design/SKILL.md +190 -0
- package/src/resources/skills/create-mcp-server/SKILL.md +121 -0
- package/src/resources/skills/decompose-into-slices/SKILL.md +139 -0
- package/src/resources/skills/dependency-upgrade/SKILL.md +158 -0
- package/src/resources/skills/design-an-interface/SKILL.md +102 -0
- package/src/resources/skills/forensics/SKILL.md +153 -0
- package/src/resources/skills/grill-me/SKILL.md +93 -0
- package/src/resources/skills/handoff/SKILL.md +121 -0
- package/src/resources/skills/observability/SKILL.md +174 -0
- package/src/resources/skills/security-review/SKILL.md +181 -0
- package/src/resources/skills/spike-wrap-up/SKILL.md +138 -0
- package/src/resources/skills/tdd/SKILL.md +112 -0
- package/src/resources/skills/verify-before-complete/SKILL.md +98 -0
- package/src/resources/skills/write-docs/SKILL.md +82 -0
- package/src/resources/skills/write-milestone-brief/SKILL.md +135 -0
- package/dist/web/standalone/.next/static/chunks/2826.e59e8578e2e28639.js +0 -9
- package/dist/web/standalone/.next/static/chunks/app/page-151349214571e2b6.js +0 -1
- package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
- package/packages/native/tsconfig.tsbuildinfo +0 -1
- /package/dist/web/standalone/.next/static/{ssX7BLv3Dw9Fb4CtrCGeR → gy6_foLMsEzdGBT19c3hr}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{ssX7BLv3Dw9Fb4CtrCGeR → gy6_foLMsEzdGBT19c3hr}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-command-handlers.js","sourceRoot":"","sources":["../../../src/modes/interactive/slash-command-handlers.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Slash command dispatch and handler implementations extracted from InteractiveMode.\n *\n * The `dispatchSlashCommand` function contains the dispatch logic (routing text\n * to handlers), and individual handler functions implement each command.\n *\n * Handlers that are also invoked from keybindings or other subsystems remain on\n * InteractiveMode and are called through the `SlashCommandContext` interface.\n */\n\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport type { ThinkingLevel } from \"@gsd/pi-agent-core\";\nimport type {\n\tEditorComponent,\n\tMarkdownTheme,\n} from \"@gsd/pi-tui\";\nimport {\n\ttype Component,\n\tContainer,\n\tMarkdown,\n\tSpacer,\n\tText,\n} from \"@gsd/pi-tui\";\nimport { spawn, spawnSync } from \"child_process\";\nimport { getShareViewerUrl, getChangelogPath, parseChangelog } from \"../../pi-coding-agent-compat.js\";\nimport type { AgentSession } from \"@gsd/agent-core\";\nimport type { AppAction } from \"@gsd/agent-types\";\nimport { KeybindingsManager } from \"@gsd/agent-core\";\nimport type { SessionManager } from \"@gsd/agent-types\";\nimport type { SettingsManager } from \"@gsd/agent-types\";\nimport { copyToClipboard } from \"@gsd/pi-coding-agent\";\nimport { ArminComponent } from \"./components/armin.js\";\nimport { BorderedLoader } from \"./components/bordered-loader.js\";\nimport { DynamicBorder } from \"./components/dynamic-border.js\";\nimport { appKey, editorKey, formatKeyForDisplay } from \"./components/keybinding-hints.js\";\nimport { SelectSubmenu, THINKING_DESCRIPTIONS } from \"./components/settings-selector.js\";\nimport { theme } from \"../../theme.js\";\n\nimport type { TUI } from \"@gsd/pi-tui\";\nimport type { Keybinding } from \"../../pi-tui-compat.js\";\n\n// ---------------------------------------------------------------------------\n// Context interface — the subset of InteractiveMode needed by slash commands\n// ---------------------------------------------------------------------------\n\n/**\n * Provides slash command handlers with access to the parts of InteractiveMode\n * they need without coupling them to the entire class.\n */\nexport interface SlashCommandContext {\n\t// Core objects\n\treadonly session: AgentSession;\n\treadonly ui: TUI;\n\treadonly keybindings: KeybindingsManager;\n\n\t// Containers\n\treadonly chatContainer: Container;\n\treadonly statusContainer: Container;\n\treadonly editorContainer: Container;\n\treadonly headerContainer: Container;\n\treadonly pendingMessagesContainer: Container;\n\n\t// Editor\n\treadonly editor: EditorComponent;\n\treadonly defaultEditor: EditorComponent & {\n\t\tonEscape?: () => void;\n\t};\n\n\t// Accessors\n\treadonly sessionManager: SessionManager;\n\treadonly settingsManager: SettingsManager;\n\n\t// Footer\n\tinvalidateFooter(): void;\n\n\t// UI helpers\n\tshowStatus(message: string): void;\n\tshowError(message: string): void;\n\tshowWarning(message: string): void;\n\tshowSelector(create: (done: () => void) => { component: Component; focus: Component }): void;\n\tupdateEditorBorderColor(): void;\n\tgetMarkdownThemeWithSettings(): MarkdownTheme;\n\trequestRender(): void;\n\n\tupdateTerminalTitle(): void;\n\n\t// Methods that stay on InteractiveMode (called from both dispatch and keybindings/events)\n\tshowSettingsSelector(): void;\n\tshowModelsSelector(): Promise<void>;\n\thandleModelCommand(searchTerm?: string): Promise<void>;\n\tshowUserMessageSelector(): void;\n\tshowTreeSelector(): void;\n\tshowProviderManager(): void;\n\tshowOAuthSelector(mode: \"login\" | \"logout\"): Promise<void>;\n\tshowSessionSelector(): void;\n\thandleClearCommand(): Promise<void>;\n\thandleReloadCommand(): Promise<void>;\n\thandleDebugCommand(): void;\n\tshutdown(): Promise<void>;\n\n\t// For compaction\n\texecuteCompaction(customInstructions?: string, isAuto?: boolean): Promise<unknown>;\n\n\t// Bash execution\n\thandleBashCommand(command: string, options?: { excludeFromContext?: boolean; displayCommand?: string; loginShell?: boolean }): Promise<void>;\n}\n\n// ---------------------------------------------------------------------------\n// Dispatch\n// ---------------------------------------------------------------------------\n\n/**\n * Routes a slash command string to the appropriate handler.\n *\n * @returns `true` if the text was handled as a slash command (caller should\n * not process it further), `false` otherwise.\n */\nexport async function dispatchSlashCommand(\n\ttext: string,\n\tctx: SlashCommandContext,\n): Promise<boolean> {\n\tif (text === \"/settings\") {\n\t\tctx.showSettingsSelector();\n\t\treturn true;\n\t}\n\tif (text === \"/scoped-models\") {\n\t\tawait ctx.showModelsSelector();\n\t\treturn true;\n\t}\n\tif (text === \"/model\" || text.startsWith(\"/model \")) {\n\t\tconst searchTerm = text.startsWith(\"/model \") ? text.slice(7).trim() : undefined;\n\t\tawait ctx.handleModelCommand(searchTerm);\n\t\treturn true;\n\t}\n\tif (text === \"/export\" || text.startsWith(\"/export \")) {\n\t\tawait handleExportCommand(text, ctx);\n\t\treturn true;\n\t}\n\tif (text === \"/share\") {\n\t\tawait handleShareCommand(ctx);\n\t\treturn true;\n\t}\n\tif (text === \"/copy\") {\n\t\thandleCopyCommand(ctx);\n\t\treturn true;\n\t}\n\tif (text === \"/name\" || text.startsWith(\"/name \")) {\n\t\thandleNameCommand(text, ctx);\n\t\treturn true;\n\t}\n\tif (text === \"/session\") {\n\t\thandleSessionCommand(ctx);\n\t\treturn true;\n\t}\n\tif (text === \"/changelog\") {\n\t\thandleChangelogCommand(ctx);\n\t\treturn true;\n\t}\n\tif (text === \"/hotkeys\") {\n\t\thandleHotkeysCommand(ctx);\n\t\treturn true;\n\t}\n\tif (text === \"/fork\") {\n\t\tctx.showUserMessageSelector();\n\t\treturn true;\n\t}\n\tif (text === \"/tree\") {\n\t\tctx.showTreeSelector();\n\t\treturn true;\n\t}\n\tif (text === \"/provider\") {\n\t\tctx.showProviderManager();\n\t\treturn true;\n\t}\n\tif (text === \"/login\") {\n\t\tawait ctx.showOAuthSelector(\"login\");\n\t\treturn true;\n\t}\n\tif (text === \"/logout\") {\n\t\tawait ctx.showOAuthSelector(\"logout\");\n\t\treturn true;\n\t}\n\tif (text === \"/new\") {\n\t\tawait ctx.handleClearCommand();\n\t\treturn true;\n\t}\n\tif (text === \"/compact\" || text.startsWith(\"/compact \")) {\n\t\tconst customInstructions = text.startsWith(\"/compact \") ? text.slice(9).trim() : undefined;\n\t\tawait handleCompactCommand(customInstructions, ctx);\n\t\treturn true;\n\t}\n\tif (text === \"/reload\") {\n\t\tawait ctx.handleReloadCommand();\n\t\treturn true;\n\t}\n\tif (text === \"/thinking\" || text.startsWith(\"/thinking \")) {\n\t\tconst arg = text.startsWith(\"/thinking \") ? text.slice(10).trim() : undefined;\n\t\thandleThinkingCommand(arg, ctx);\n\t\treturn true;\n\t}\n\tif (text === \"/edit-mode\" || text.startsWith(\"/edit-mode \")) {\n\t\tconst arg = text.startsWith(\"/edit-mode \") ? text.slice(11).trim() : undefined;\n\t\thandleEditModeCommand(arg, ctx);\n\t\treturn true;\n\t}\n\tif (text === \"/debug\") {\n\t\tctx.handleDebugCommand();\n\t\treturn true;\n\t}\n\tif (text === \"/arminsayshi\") {\n\t\thandleArminSaysHi(ctx);\n\t\treturn true;\n\t}\n\tif (text === \"/resume\") {\n\t\tctx.showSessionSelector();\n\t\treturn true;\n\t}\n\tif (text === \"/quit\") {\n\t\tawait ctx.shutdown();\n\t\treturn true;\n\t}\n\tif (text === \"/terminal\" || text.startsWith(\"/terminal \")) {\n\t\tconst command = text.startsWith(\"/terminal \") ? text.slice(10).trim() : \"\";\n\t\tif (!command) {\n\t\t\tctx.showWarning(\"Usage: /terminal <command> (e.g. /terminal ping -c3 1.1.1.1)\");\n\t\t\treturn true;\n\t\t}\n\t\t// Run in the user's login shell ($SHELL -l -c) so PATH additions\n\t\t// and env vars from shell profiles (.zprofile/.profile) are available.\n\t\t// Note: shell aliases are not loaded (requires -i which has side effects).\n\t\tawait ctx.handleBashCommand(command, { loginShell: true });\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n// ---------------------------------------------------------------------------\n// Individual command handlers\n// ---------------------------------------------------------------------------\n\nasync function handleExportCommand(text: string, ctx: SlashCommandContext): Promise<void> {\n\tconst parts = text.split(/\\s+/);\n\tconst outputPath = parts.length > 1 ? parts[1] : undefined;\n\n\ttry {\n\t\tconst filePath = await ctx.session.exportToHtml(outputPath);\n\t\tctx.showStatus(`Session exported to: ${filePath}`);\n\t} catch (error: unknown) {\n\t\tctx.showError(`Failed to export session: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n\t}\n}\n\nasync function handleShareCommand(ctx: SlashCommandContext): Promise<void> {\n\t// Check if gh is available and logged in\n\ttry {\n\t\tconst authResult = spawnSync(\"gh\", [\"auth\", \"status\"], { encoding: \"utf-8\" });\n\t\tif (authResult.status !== 0) {\n\t\t\tctx.showError(\"GitHub CLI is not logged in. Run 'gh auth login' first.\");\n\t\t\treturn;\n\t\t}\n\t} catch {\n\t\tctx.showError(\"GitHub CLI (gh) is not installed. Install it from https://cli.github.com/\");\n\t\treturn;\n\t}\n\n\t// Export to a temp file\n\tconst tmpFile = path.join(os.tmpdir(), \"session.html\");\n\ttry {\n\t\tawait ctx.session.exportToHtml(tmpFile);\n\t} catch (error: unknown) {\n\t\tctx.showError(`Failed to export session: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n\t\treturn;\n\t}\n\n\t// Show cancellable loader, replacing the editor\n\tconst loader = new BorderedLoader(ctx.ui, theme, \"Creating gist...\");\n\tctx.editorContainer.clear();\n\tctx.editorContainer.addChild(loader);\n\tctx.ui.setFocus(loader);\n\tctx.requestRender();\n\n\tconst restoreEditor = (): void => {\n\t\tloader.dispose();\n\t\tctx.editorContainer.clear();\n\t\tctx.editorContainer.addChild(ctx.editor);\n\t\tctx.ui.setFocus(ctx.editor);\n\t\ttry {\n\t\t\tfs.unlinkSync(tmpFile);\n\t\t} catch {\n\t\t\t// Ignore cleanup errors\n\t\t}\n\t};\n\n\t// Create a secret gist asynchronously\n\tlet proc: ReturnType<typeof spawn> | null = null;\n\n\tloader.onAbort = () => {\n\t\tproc?.kill();\n\t\trestoreEditor();\n\t\tctx.showStatus(\"Share cancelled\");\n\t};\n\n\t\ttry {\n\t\t\tconst result = await new Promise<{ stdout: string; stderr: string; code: number | null }>((resolve) => {\n\t\t\t\tproc = spawn(\"gh\", [\"gist\", \"create\", \"--public=false\", tmpFile], {\n\t\t\t\t\tshell: process.platform === \"win32\",\n\t\t\t\t});\n\t\t\t\tlet stdout = \"\";\n\t\t\t\tlet stderr = \"\";\n\t\t\tproc.stdout?.on(\"data\", (data) => {\n\t\t\t\tstdout += data.toString();\n\t\t\t});\n\t\t\tproc.stderr?.on(\"data\", (data) => {\n\t\t\t\tstderr += data.toString();\n\t\t\t});\n\t\t\tproc.on(\"close\", (code) => resolve({ stdout, stderr, code }));\n\t\t});\n\n\t\tif (loader.signal.aborted) return;\n\n\t\trestoreEditor();\n\n\t\tif (result.code !== 0) {\n\t\t\tconst errorMsg = result.stderr?.trim() || \"Unknown error\";\n\t\t\tctx.showError(`Failed to create gist: ${errorMsg}`);\n\t\t\treturn;\n\t\t}\n\n\t\t// Extract gist ID from the URL returned by gh\n\t\t// gh returns something like: https://gist.github.com/username/GIST_ID\n\t\tconst gistUrl = result.stdout?.trim();\n\t\tconst gistId = gistUrl?.split(\"/\").pop();\n\t\tif (!gistId) {\n\t\t\tctx.showError(\"Failed to parse gist ID from gh output\");\n\t\t\treturn;\n\t\t}\n\n\t\t// Create the preview URL\n\t\tconst previewUrl = getShareViewerUrl(gistId);\n\t\tctx.showStatus(`Share URL: ${previewUrl}\\nGist: ${gistUrl}`);\n\t} catch (error: unknown) {\n\t\tif (!loader.signal.aborted) {\n\t\t\trestoreEditor();\n\t\t\tctx.showError(`Failed to create gist: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n\t\t}\n\t}\n}\n\nfunction handleCopyCommand(ctx: SlashCommandContext): void {\n\tconst text = ctx.session.getLastAssistantText();\n\tif (!text) {\n\t\tctx.showError(\"No agent messages to copy yet.\");\n\t\treturn;\n\t}\n\n\ttry {\n\t\tcopyToClipboard(text);\n\t\tctx.showStatus(\"Copied last agent message to clipboard\");\n\t} catch (error) {\n\t\tctx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nfunction handleNameCommand(text: string, ctx: SlashCommandContext): void {\n\tconst name = text.replace(/^\\/name\\s*/, \"\").trim();\n\tif (!name) {\n\t\tconst currentName = ctx.sessionManager.getSessionName();\n\t\tif (currentName) {\n\t\t\tctx.chatContainer.addChild(new Spacer(1));\n\t\t\tctx.chatContainer.addChild(new Text(theme.fg(\"dim\", `Session name: ${currentName}`), 1, 0));\n\t\t} else {\n\t\t\tctx.showWarning(\"Usage: /name <name>\");\n\t\t}\n\t\tctx.requestRender();\n\t\treturn;\n\t}\n\n\tctx.sessionManager.appendSessionInfo(name);\n\tctx.updateTerminalTitle();\n\tctx.chatContainer.addChild(new Spacer(1));\n\tctx.chatContainer.addChild(new Text(theme.fg(\"dim\", `Session name set: ${name}`), 1, 0));\n\tctx.requestRender();\n}\n\nfunction handleSessionCommand(ctx: SlashCommandContext): void {\n\tconst stats = ctx.session.getSessionStats();\n\tconst sessionName = ctx.sessionManager.getSessionName();\n\n\tlet info = `${theme.bold(\"Session Info\")}\\n\\n`;\n\tif (sessionName) {\n\t\tinfo += `${theme.fg(\"dim\", \"Name:\")} ${sessionName}\\n`;\n\t}\n\tinfo += `${theme.fg(\"dim\", \"File:\")} ${stats.sessionFile ?? \"In-memory\"}\\n`;\n\tinfo += `${theme.fg(\"dim\", \"ID:\")} ${stats.sessionId}\\n\\n`;\n\tinfo += `${theme.bold(\"Messages\")}\\n`;\n\tinfo += `${theme.fg(\"dim\", \"User:\")} ${stats.userMessages}\\n`;\n\tinfo += `${theme.fg(\"dim\", \"Assistant:\")} ${stats.assistantMessages}\\n`;\n\tinfo += `${theme.fg(\"dim\", \"Tool Calls:\")} ${stats.toolCalls}\\n`;\n\tinfo += `${theme.fg(\"dim\", \"Tool Results:\")} ${stats.toolResults}\\n`;\n\tinfo += `${theme.fg(\"dim\", \"Total:\")} ${stats.totalMessages}\\n\\n`;\n\tinfo += `${theme.bold(\"Tokens\")}\\n`;\n\tinfo += `${theme.fg(\"dim\", \"Input:\")} ${stats.tokens.input.toLocaleString()}\\n`;\n\tinfo += `${theme.fg(\"dim\", \"Output:\")} ${stats.tokens.output.toLocaleString()}\\n`;\n\tif (stats.tokens.cacheRead > 0) {\n\t\tinfo += `${theme.fg(\"dim\", \"Cache Read:\")} ${stats.tokens.cacheRead.toLocaleString()}\\n`;\n\t}\n\tif (stats.tokens.cacheWrite > 0) {\n\t\tinfo += `${theme.fg(\"dim\", \"Cache Write:\")} ${stats.tokens.cacheWrite.toLocaleString()}\\n`;\n\t}\n\tinfo += `${theme.fg(\"dim\", \"Total:\")} ${stats.tokens.total.toLocaleString()}\\n`;\n\n\tif (stats.cost > 0) {\n\t\tinfo += `\\n${theme.bold(\"Cost\")}\\n`;\n\t\tinfo += `${theme.fg(\"dim\", \"Total:\")} ${stats.cost.toFixed(4)}`;\n\t}\n\n\tctx.chatContainer.addChild(new Spacer(1));\n\tctx.chatContainer.addChild(new Text(info, 1, 0));\n\tctx.requestRender();\n}\n\nfunction handleChangelogCommand(ctx: SlashCommandContext): void {\n\tconst changelogPath = getChangelogPath();\n\tconst allEntries = parseChangelog(changelogPath);\n\n\tconst changelogMarkdown =\n\t\tallEntries.length > 0\n\t\t\t? allEntries\n\t\t\t\t\t.reverse()\n\t\t\t\t\t.map((e) => e.content)\n\t\t\t\t\t.join(\"\\n\\n\")\n\t\t\t: \"No changelog entries found.\";\n\n\tctx.chatContainer.addChild(new Spacer(1));\n\tctx.chatContainer.addChild(new DynamicBorder());\n\tctx.chatContainer.addChild(new Text(theme.bold(theme.fg(\"accent\", \"What's New\")), 1, 0));\n\tctx.chatContainer.addChild(new Spacer(1));\n\tctx.chatContainer.addChild(new Markdown(changelogMarkdown, 1, 1, ctx.getMarkdownThemeWithSettings()));\n\tctx.chatContainer.addChild(new DynamicBorder());\n\tctx.requestRender();\n}\n\n// ---------------------------------------------------------------------------\n// /hotkeys helpers\n// ---------------------------------------------------------------------------\n\nexport function capitalizeKey(key: string): string {\n\treturn key\n\t\t.split(\"/\")\n\t\t.map((k) =>\n\t\t\tk\n\t\t\t\t.split(\"+\")\n\t\t\t\t.map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n\t\t\t\t.join(\"+\"),\n\t\t)\n\t\t.join(\"/\");\n}\n\nexport function getAppKeyDisplay(keybindings: KeybindingsManager, action: AppAction): string {\n\treturn capitalizeKey(appKey(keybindings, action));\n}\n\nfunction getEditorKeyDisplay(action: Keybinding): string {\n\treturn capitalizeKey(editorKey(action));\n}\n\nfunction handleHotkeysCommand(ctx: SlashCommandContext): void {\n\t// Navigation keybindings\n\tconst cursorWordLeft = getEditorKeyDisplay(\"cursorWordLeft\");\n\tconst cursorWordRight = getEditorKeyDisplay(\"cursorWordRight\");\n\tconst cursorLineStart = getEditorKeyDisplay(\"cursorLineStart\");\n\tconst cursorLineEnd = getEditorKeyDisplay(\"cursorLineEnd\");\n\tconst jumpForward = getEditorKeyDisplay(\"jumpForward\");\n\tconst jumpBackward = getEditorKeyDisplay(\"jumpBackward\");\n\tconst pageUp = getEditorKeyDisplay(\"pageUp\");\n\tconst pageDown = getEditorKeyDisplay(\"pageDown\");\n\n\t// Editing keybindings\n\tconst submit = getEditorKeyDisplay(\"submit\");\n\tconst newLine = getEditorKeyDisplay(\"newLine\");\n\tconst deleteWordBackward = getEditorKeyDisplay(\"deleteWordBackward\");\n\tconst deleteWordForward = getEditorKeyDisplay(\"deleteWordForward\");\n\tconst deleteToLineStart = getEditorKeyDisplay(\"deleteToLineStart\");\n\tconst deleteToLineEnd = getEditorKeyDisplay(\"deleteToLineEnd\");\n\tconst yank = getEditorKeyDisplay(\"yank\");\n\tconst yankPop = getEditorKeyDisplay(\"yankPop\");\n\tconst undo = getEditorKeyDisplay(\"undo\");\n\tconst tab = getEditorKeyDisplay(\"tab\");\n\n\t// App keybindings\n\tconst interrupt = getAppKeyDisplay(ctx.keybindings, \"interrupt\");\n\tconst clear = getAppKeyDisplay(ctx.keybindings, \"clear\");\n\tconst exit = getAppKeyDisplay(ctx.keybindings, \"exit\");\n\tconst suspend = getAppKeyDisplay(ctx.keybindings, \"suspend\");\n\tconst cycleThinkingLevel = getAppKeyDisplay(ctx.keybindings, \"cycleThinkingLevel\");\n\tconst cycleModelForward = getAppKeyDisplay(ctx.keybindings, \"cycleModelForward\");\n\tconst cycleModelBackward = getAppKeyDisplay(ctx.keybindings, \"cycleModelBackward\");\n\tconst selectModel = getAppKeyDisplay(ctx.keybindings, \"selectModel\");\n\tconst expandTools = getAppKeyDisplay(ctx.keybindings, \"expandTools\");\n\tconst toggleThinking = getAppKeyDisplay(ctx.keybindings, \"toggleThinking\");\n\tconst externalEditor = getAppKeyDisplay(ctx.keybindings, \"externalEditor\");\n\tconst followUp = getAppKeyDisplay(ctx.keybindings, \"followUp\");\n\tconst dequeue = getAppKeyDisplay(ctx.keybindings, \"dequeue\");\n\tconst pasteImage = getAppKeyDisplay(ctx.keybindings, \"pasteImage\");\n\n\tlet hotkeys = `\n**Navigation**\n| Key | Action |\n|-----|--------|\n| \\`Arrow keys\\` | Move cursor / browse history (Up when empty) |\n| \\`${cursorWordLeft}\\` / \\`${cursorWordRight}\\` | Move by word |\n| \\`${cursorLineStart}\\` | Start of line |\n| \\`${cursorLineEnd}\\` | End of line |\n| \\`${jumpForward}\\` | Jump forward to character |\n| \\`${jumpBackward}\\` | Jump backward to character |\n| \\`${pageUp}\\` / \\`${pageDown}\\` | Scroll by page |\n\n**Editing**\n| Key | Action |\n|-----|--------|\n| \\`${submit}\\` | Send message |\n| \\`${newLine}\\` | New line${process.platform === \"win32\" ? \" (Ctrl+Enter on Windows Terminal)\" : \"\"} |\n| \\`${deleteWordBackward}\\` | Delete word backwards |\n| \\`${deleteWordForward}\\` | Delete word forwards |\n| \\`${deleteToLineStart}\\` | Delete to start of line |\n| \\`${deleteToLineEnd}\\` | Delete to end of line |\n| \\`${yank}\\` | Paste the most-recently-deleted text |\n| \\`${yankPop}\\` | Cycle through the deleted text after pasting |\n| \\`${undo}\\` | Undo |\n\n**Other**\n| Key | Action |\n|-----|--------|\n| \\`${tab}\\` | Path completion / accept autocomplete |\n| \\`${interrupt}\\` | Cancel autocomplete / abort streaming |\n| \\`${clear}\\` | Clear editor (first) / exit (second) |\n| \\`${exit}\\` | Exit (when editor is empty) |\n| \\`${suspend}\\` | Suspend to background |\n| \\`${cycleThinkingLevel}\\` | Cycle thinking level |\n| \\`${cycleModelForward}\\` / \\`${cycleModelBackward}\\` | Cycle models |\n| \\`${selectModel}\\` | Open model selector |\n| \\`${expandTools}\\` | Toggle tool output expansion |\n| \\`${toggleThinking}\\` | Toggle thinking block visibility |\n| \\`${externalEditor}\\` | Edit message in external editor |\n| \\`${followUp}\\` | Queue follow-up message |\n| \\`${dequeue}\\` | Restore queued messages |\n| \\`${pasteImage}\\` | Paste image from clipboard |\n| \\`/\\` | Slash commands |\n| \\`!\\` | Run bash command |\n| \\`!!\\` | Run bash command (excluded from context) |\n`;\n\n\t// Add extension-registered shortcuts\n\tconst extensionRunner = ctx.session.extensionRunner;\n\tif (extensionRunner) {\n\t\tconst shortcuts = extensionRunner.getShortcuts(ctx.keybindings.getEffectiveConfig());\n\t\tif (shortcuts.size > 0) {\n\t\t\thotkeys += `\n**Extensions**\n| Key | Action |\n|-----|--------|\n`;\n\t\t\tfor (const [key, shortcut] of shortcuts) {\n\t\t\t\tconst description = shortcut.description ?? shortcut.extensionPath;\n\t\t\t\tconst keyDisplay = formatKeyForDisplay(key).replace(/\\b\\w/g, (c) => c.toUpperCase());\n\t\t\t\thotkeys += `| \\`${keyDisplay}\\` | ${description} |\\n`;\n\t\t\t}\n\t\t}\n\t}\n\n\tctx.chatContainer.addChild(new Spacer(1));\n\tctx.chatContainer.addChild(new DynamicBorder());\n\tctx.chatContainer.addChild(new Text(theme.bold(theme.fg(\"accent\", \"Keyboard Shortcuts\")), 1, 0));\n\tctx.chatContainer.addChild(new Spacer(1));\n\tctx.chatContainer.addChild(new Markdown(hotkeys.trim(), 1, 1, ctx.getMarkdownThemeWithSettings()));\n\tctx.chatContainer.addChild(new DynamicBorder());\n\tctx.requestRender();\n}\n\nasync function handleCompactCommand(customInstructions: string | undefined, ctx: SlashCommandContext): Promise<void> {\n\tconst entries = ctx.sessionManager.getEntries();\n\tconst messageCount = entries.filter((e) => e.type === \"message\").length;\n\n\tif (messageCount < 2) {\n\t\tctx.showWarning(\"Nothing to compact (no messages yet)\");\n\t\treturn;\n\t}\n\n\tawait ctx.executeCompaction(customInstructions, false);\n}\n\nfunction handleThinkingCommand(arg: string | undefined, ctx: SlashCommandContext): void {\n\tif (!ctx.session.supportsThinking()) {\n\t\tctx.showStatus(\"Current model does not support thinking\");\n\t\treturn;\n\t}\n\n\tconst availableLevels = ctx.session.getAvailableThinkingLevels();\n\n\tif (arg) {\n\t\tconst level = arg.toLowerCase();\n\t\tif (!availableLevels.includes(level as ThinkingLevel)) {\n\t\t\tctx.showStatus(`Invalid thinking level \"${arg}\". Available: ${availableLevels.join(\", \")}`);\n\t\t\treturn;\n\t\t}\n\t\tctx.session.setThinkingLevel(level as ThinkingLevel);\n\t\tctx.invalidateFooter();\n\t\tctx.updateEditorBorderColor();\n\t\tctx.showStatus(`Thinking level: ${level}`);\n\t\treturn;\n\t}\n\n\tshowThinkingSelector(ctx, availableLevels);\n}\n\nfunction showThinkingSelector(ctx: SlashCommandContext, availableLevels: readonly ThinkingLevel[]): void {\n\tctx.showSelector((done) => {\n\t\tconst selector = new SelectSubmenu(\n\t\t\t\"Thinking Level\",\n\t\t\t\"Select reasoning depth for thinking-capable models\",\n\t\t\tavailableLevels.map((level) => ({\n\t\t\t\tvalue: level,\n\t\t\t\tlabel: level,\n\t\t\t\tdescription: THINKING_DESCRIPTIONS[level],\n\t\t\t})),\n\t\t\tctx.session.thinkingLevel,\n\t\t\t(value) => {\n\t\t\t\tctx.session.setThinkingLevel(value as ThinkingLevel);\n\t\t\t\tctx.invalidateFooter();\n\t\t\t\tctx.updateEditorBorderColor();\n\t\t\t\tdone();\n\t\t\t\tctx.showStatus(`Thinking level: ${value}`);\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tdone();\n\t\t\t},\n\t\t);\n\t\treturn { component: selector, focus: selector };\n\t});\n}\n\nfunction handleEditModeCommand(arg: string | undefined, ctx: SlashCommandContext): void {\n\tconst modes = [\"standard\", \"hashline\"] as const;\n\n\tif (arg) {\n\t\tconst mode = arg.toLowerCase();\n\t\tif (!modes.includes(mode as typeof modes[number])) {\n\t\t\tctx.showStatus(`Invalid edit mode \"${arg}\". Available: standard, hashline`);\n\t\t\treturn;\n\t\t}\n\t\tctx.session.setEditMode(mode as \"standard\" | \"hashline\");\n\t\tctx.showStatus(`Edit mode: ${mode}${mode === \"hashline\" ? \" (LINE#ID anchored edits)\" : \" (text-match edits)\"}`);\n\t\treturn;\n\t}\n\n\t// Toggle\n\tconst current = ctx.session.editMode;\n\tconst next = current === \"standard\" ? \"hashline\" : \"standard\";\n\tctx.session.setEditMode(next);\n\tctx.showStatus(`Edit mode: ${next}${next === \"hashline\" ? \" (LINE#ID anchored edits)\" : \" (text-match edits)\"}`);\n}\n\nfunction handleArminSaysHi(ctx: SlashCommandContext): void {\n\tctx.chatContainer.addChild(new Spacer(1));\n\tctx.chatContainer.addChild(new ArminComponent(ctx.ui));\n\tctx.requestRender();\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shorten-path.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/utils/shorten-path.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOjD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as os from "node:os";
|
|
2
|
+
/**
|
|
3
|
+
* Convert absolute path to tilde notation if it's in home directory.
|
|
4
|
+
* Returns empty string for non-string or empty inputs.
|
|
5
|
+
*/
|
|
6
|
+
export function shortenPath(path) {
|
|
7
|
+
if (typeof path !== "string" || !path)
|
|
8
|
+
return "";
|
|
9
|
+
const home = os.homedir();
|
|
10
|
+
if (path.startsWith(home)) {
|
|
11
|
+
return `~${path.slice(home.length)}`;
|
|
12
|
+
}
|
|
13
|
+
return path;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=shorten-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shorten-path.js","sourceRoot":"","sources":["../../../../src/modes/interactive/utils/shorten-path.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa;IACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC","sourcesContent":["import * as os from \"node:os\";\n\n/**\n * Convert absolute path to tilde notation if it's in home directory.\n * Returns empty string for non-string or empty inputs.\n */\nexport function shortenPath(path: unknown): string {\n\tif (typeof path !== \"string\" || !path) return \"\";\n\tconst home = os.homedir();\n\tif (path.startsWith(home)) {\n\t\treturn `~${path.slice(home.length)}`;\n\t}\n\treturn path;\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Print mode (single-shot): Send prompts, output result, exit.
|
|
3
|
+
*
|
|
4
|
+
* Used for:
|
|
5
|
+
* - `pi -p "prompt"` - text output
|
|
6
|
+
* - `pi --mode json "prompt"` - JSON event stream
|
|
7
|
+
*/
|
|
8
|
+
import type { ImageContent } from "@gsd/pi-ai";
|
|
9
|
+
import type { AgentSession } from "@gsd/agent-core";
|
|
10
|
+
/**
|
|
11
|
+
* Options for print mode.
|
|
12
|
+
*/
|
|
13
|
+
export interface PrintModeOptions {
|
|
14
|
+
/** Output mode: "text" for final response only, "json" for all events */
|
|
15
|
+
mode: "text" | "json";
|
|
16
|
+
/** Array of additional prompts to send after initialMessage */
|
|
17
|
+
messages?: string[];
|
|
18
|
+
/** First message to send (may contain @file content) */
|
|
19
|
+
initialMessage?: string;
|
|
20
|
+
/** Images to attach to the initial message */
|
|
21
|
+
initialImages?: ImageContent[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Run in print (single-shot) mode.
|
|
25
|
+
* Sends prompts to the agent and outputs the result.
|
|
26
|
+
*/
|
|
27
|
+
export declare function runPrintMode(session: AgentSession, options: PrintModeOptions): Promise<void>;
|
|
28
|
+
//# sourceMappingURL=print-mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-mode.d.ts","sourceRoot":"","sources":["../../src/modes/print-mode.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,yEAAyE;IACzE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ElG"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Print mode (single-shot): Send prompts, output result, exit.
|
|
3
|
+
*
|
|
4
|
+
* Used for:
|
|
5
|
+
* - `pi -p "prompt"` - text output
|
|
6
|
+
* - `pi --mode json "prompt"` - JSON event stream
|
|
7
|
+
*/
|
|
8
|
+
import { createDefaultCommandContextActions } from "./shared/command-context-actions.js";
|
|
9
|
+
/**
|
|
10
|
+
* Run in print (single-shot) mode.
|
|
11
|
+
* Sends prompts to the agent and outputs the result.
|
|
12
|
+
*/
|
|
13
|
+
export async function runPrintMode(session, options) {
|
|
14
|
+
const { mode, messages = [], initialMessage, initialImages } = options;
|
|
15
|
+
if (mode === "json") {
|
|
16
|
+
const header = session.sessionManager.getHeader();
|
|
17
|
+
if (header) {
|
|
18
|
+
console.log(JSON.stringify(header));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
// Set up extensions for print mode (no UI)
|
|
22
|
+
await session.bindExtensions({
|
|
23
|
+
commandContextActions: createDefaultCommandContextActions(session),
|
|
24
|
+
onError: (err) => {
|
|
25
|
+
console.error(`Extension error (${err.extensionPath}): ${err.error}`);
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
// Always subscribe to enable session persistence via _handleAgentEvent
|
|
29
|
+
const unsubscribe = session.subscribe((event) => {
|
|
30
|
+
// In JSON mode, output all events
|
|
31
|
+
if (mode === "json") {
|
|
32
|
+
console.log(JSON.stringify(event));
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
let exitCode = 0;
|
|
36
|
+
try {
|
|
37
|
+
// Send initial message with attachments
|
|
38
|
+
if (initialMessage) {
|
|
39
|
+
await session.prompt(initialMessage, { images: initialImages });
|
|
40
|
+
}
|
|
41
|
+
// Send remaining messages
|
|
42
|
+
for (const message of messages) {
|
|
43
|
+
await session.prompt(message);
|
|
44
|
+
}
|
|
45
|
+
// In text mode, output final response
|
|
46
|
+
if (mode === "text") {
|
|
47
|
+
const state = session.state;
|
|
48
|
+
const lastMessage = state.messages[state.messages.length - 1];
|
|
49
|
+
if (lastMessage?.role === "assistant") {
|
|
50
|
+
const assistantMsg = lastMessage;
|
|
51
|
+
// Check for error/aborted
|
|
52
|
+
if (assistantMsg.stopReason === "error" || assistantMsg.stopReason === "aborted") {
|
|
53
|
+
console.error(assistantMsg.errorMessage || `Request ${assistantMsg.stopReason}`);
|
|
54
|
+
exitCode = 1;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Output text content
|
|
58
|
+
for (const content of assistantMsg.content) {
|
|
59
|
+
if (content.type === "text") {
|
|
60
|
+
console.log(content.text);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Ensure stdout is fully flushed before returning
|
|
67
|
+
// This prevents race conditions where the process exits before all output is written
|
|
68
|
+
await new Promise((resolve, reject) => {
|
|
69
|
+
process.stdout.write("", (err) => {
|
|
70
|
+
if (err)
|
|
71
|
+
reject(err);
|
|
72
|
+
else
|
|
73
|
+
resolve();
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
unsubscribe();
|
|
79
|
+
}
|
|
80
|
+
if (exitCode !== 0) {
|
|
81
|
+
process.exit(exitCode);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=print-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-mode.js","sourceRoot":"","sources":["../../src/modes/print-mode.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Print mode (single-shot): Send prompts, output result, exit.\n *\n * Used for:\n * - `pi -p \"prompt\"` - text output\n * - `pi --mode json \"prompt\"` - JSON event stream\n */\n\nimport type { AssistantMessage, ImageContent } from \"@gsd/pi-ai\";\nimport type { AgentSession } from \"@gsd/agent-core\";\nimport { createDefaultCommandContextActions } from \"./shared/command-context-actions.js\";\n\n/**\n * Options for print mode.\n */\nexport interface PrintModeOptions {\n\t/** Output mode: \"text\" for final response only, \"json\" for all events */\n\tmode: \"text\" | \"json\";\n\t/** Array of additional prompts to send after initialMessage */\n\tmessages?: string[];\n\t/** First message to send (may contain @file content) */\n\tinitialMessage?: string;\n\t/** Images to attach to the initial message */\n\tinitialImages?: ImageContent[];\n}\n\n/**\n * Run in print (single-shot) mode.\n * Sends prompts to the agent and outputs the result.\n */\nexport async function runPrintMode(session: AgentSession, options: PrintModeOptions): Promise<void> {\n\tconst { mode, messages = [], initialMessage, initialImages } = options;\n\tif (mode === \"json\") {\n\t\tconst header = session.sessionManager.getHeader();\n\t\tif (header) {\n\t\t\tconsole.log(JSON.stringify(header));\n\t\t}\n\t}\n\t// Set up extensions for print mode (no UI)\n\tawait session.bindExtensions({\n\t\tcommandContextActions: createDefaultCommandContextActions(session),\n\t\tonError: (err) => {\n\t\t\tconsole.error(`Extension error (${err.extensionPath}): ${err.error}`);\n\t\t},\n\t});\n\n\t// Always subscribe to enable session persistence via _handleAgentEvent\n\tconst unsubscribe = session.subscribe((event) => {\n\t\t// In JSON mode, output all events\n\t\tif (mode === \"json\") {\n\t\t\tconsole.log(JSON.stringify(event));\n\t\t}\n\t});\n\n\tlet exitCode = 0;\n\n\ttry {\n\t\t// Send initial message with attachments\n\t\tif (initialMessage) {\n\t\t\tawait session.prompt(initialMessage, { images: initialImages });\n\t\t}\n\n\t\t// Send remaining messages\n\t\tfor (const message of messages) {\n\t\t\tawait session.prompt(message);\n\t\t}\n\n\t\t// In text mode, output final response\n\t\tif (mode === \"text\") {\n\t\t\tconst state = session.state;\n\t\t\tconst lastMessage = state.messages[state.messages.length - 1];\n\n\t\t\tif (lastMessage?.role === \"assistant\") {\n\t\t\t\tconst assistantMsg = lastMessage as AssistantMessage;\n\n\t\t\t\t// Check for error/aborted\n\t\t\t\tif (assistantMsg.stopReason === \"error\" || assistantMsg.stopReason === \"aborted\") {\n\t\t\t\t\tconsole.error(assistantMsg.errorMessage || `Request ${assistantMsg.stopReason}`);\n\t\t\t\t\texitCode = 1;\n\t\t\t\t} else {\n\t\t\t\t\t// Output text content\n\t\t\t\t\tfor (const content of assistantMsg.content) {\n\t\t\t\t\t\tif (content.type === \"text\") {\n\t\t\t\t\t\t\tconsole.log(content.text);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Ensure stdout is fully flushed before returning\n\t\t// This prevents race conditions where the process exits before all output is written\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tprocess.stdout.write(\"\", (err) => {\n\t\t\t\tif (err) reject(err);\n\t\t\t\telse resolve();\n\t\t\t});\n\t\t});\n\t} finally {\n\t\tunsubscribe();\n\t}\n\n\tif (exitCode !== 0) {\n\t\tprocess.exit(exitCode);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Readable } from "node:stream";
|
|
2
|
+
/**
|
|
3
|
+
* Serialize a single strict JSONL record.
|
|
4
|
+
*
|
|
5
|
+
* Framing is LF-only. Payload strings may contain other Unicode separators such as
|
|
6
|
+
* U+2028 and U+2029. Clients must split records on `\n` only.
|
|
7
|
+
*/
|
|
8
|
+
export declare function serializeJsonLine(value: unknown): string;
|
|
9
|
+
/**
|
|
10
|
+
* Attach an LF-only JSONL reader to a stream.
|
|
11
|
+
*
|
|
12
|
+
* This intentionally does not use Node readline. Readline splits on additional
|
|
13
|
+
* Unicode separators that are valid inside JSON strings and therefore does not
|
|
14
|
+
* implement strict JSONL framing.
|
|
15
|
+
*/
|
|
16
|
+
export declare function attachJsonlLineReader(stream: Readable, onLine: (line: string) => void): () => void;
|
|
17
|
+
//# sourceMappingURL=jsonl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/jsonl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAqClG"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { StringDecoder } from "node:string_decoder";
|
|
2
|
+
/**
|
|
3
|
+
* Serialize a single strict JSONL record.
|
|
4
|
+
*
|
|
5
|
+
* Framing is LF-only. Payload strings may contain other Unicode separators such as
|
|
6
|
+
* U+2028 and U+2029. Clients must split records on `\n` only.
|
|
7
|
+
*/
|
|
8
|
+
export function serializeJsonLine(value) {
|
|
9
|
+
return `${JSON.stringify(value)}\n`;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Attach an LF-only JSONL reader to a stream.
|
|
13
|
+
*
|
|
14
|
+
* This intentionally does not use Node readline. Readline splits on additional
|
|
15
|
+
* Unicode separators that are valid inside JSON strings and therefore does not
|
|
16
|
+
* implement strict JSONL framing.
|
|
17
|
+
*/
|
|
18
|
+
export function attachJsonlLineReader(stream, onLine) {
|
|
19
|
+
const decoder = new StringDecoder("utf8");
|
|
20
|
+
let buffer = "";
|
|
21
|
+
const emitLine = (line) => {
|
|
22
|
+
onLine(line.endsWith("\r") ? line.slice(0, -1) : line);
|
|
23
|
+
};
|
|
24
|
+
const onData = (chunk) => {
|
|
25
|
+
buffer += typeof chunk === "string" ? chunk : decoder.write(chunk);
|
|
26
|
+
while (true) {
|
|
27
|
+
const newlineIndex = buffer.indexOf("\n");
|
|
28
|
+
if (newlineIndex === -1) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
emitLine(buffer.slice(0, newlineIndex));
|
|
32
|
+
buffer = buffer.slice(newlineIndex + 1);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const onEnd = () => {
|
|
36
|
+
buffer += decoder.end();
|
|
37
|
+
if (buffer.length > 0) {
|
|
38
|
+
emitLine(buffer);
|
|
39
|
+
buffer = "";
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
stream.on("data", onData);
|
|
43
|
+
stream.on("end", onEnd);
|
|
44
|
+
return () => {
|
|
45
|
+
stream.off("data", onData);
|
|
46
|
+
stream.off("end", onEnd);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=jsonl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../../src/modes/rpc/jsonl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC/C,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAgB,EAAE,MAA8B;IACrF,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAQ,EAAE;QACvC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,KAAsB,EAAQ,EAAE;QAC/C,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEnE,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;gBACzB,OAAO;YACR,CAAC;YAED,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YACxC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAS,EAAE;QACxB,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,MAAM,GAAG,EAAE,CAAC;QACb,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAExB,OAAO,GAAG,EAAE;QACX,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;AACH,CAAC","sourcesContent":["import type { Readable } from \"node:stream\";\nimport { StringDecoder } from \"node:string_decoder\";\n\n/**\n * Serialize a single strict JSONL record.\n *\n * Framing is LF-only. Payload strings may contain other Unicode separators such as\n * U+2028 and U+2029. Clients must split records on `\\n` only.\n */\nexport function serializeJsonLine(value: unknown): string {\n\treturn `${JSON.stringify(value)}\\n`;\n}\n\n/**\n * Attach an LF-only JSONL reader to a stream.\n *\n * This intentionally does not use Node readline. Readline splits on additional\n * Unicode separators that are valid inside JSON strings and therefore does not\n * implement strict JSONL framing.\n */\nexport function attachJsonlLineReader(stream: Readable, onLine: (line: string) => void): () => void {\n\tconst decoder = new StringDecoder(\"utf8\");\n\tlet buffer = \"\";\n\n\tconst emitLine = (line: string): void => {\n\t\tonLine(line.endsWith(\"\\r\") ? line.slice(0, -1) : line);\n\t};\n\n\tconst onData = (chunk: string | Buffer): void => {\n\t\tbuffer += typeof chunk === \"string\" ? chunk : decoder.write(chunk);\n\n\t\twhile (true) {\n\t\t\tconst newlineIndex = buffer.indexOf(\"\\n\");\n\t\t\tif (newlineIndex === -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\temitLine(buffer.slice(0, newlineIndex));\n\t\t\tbuffer = buffer.slice(newlineIndex + 1);\n\t\t}\n\t};\n\n\tconst onEnd = (): void => {\n\t\tbuffer += decoder.end();\n\t\tif (buffer.length > 0) {\n\t\t\temitLine(buffer);\n\t\t\tbuffer = \"\";\n\t\t}\n\t};\n\n\tstream.on(\"data\", onData);\n\tstream.on(\"end\", onEnd);\n\n\treturn () => {\n\t\tstream.off(\"data\", onData);\n\t\tstream.off(\"end\", onEnd);\n\t};\n}\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Terminal } from "@gsd/pi-tui";
|
|
2
|
+
export interface RemoteTerminalOptions {
|
|
3
|
+
onWrite: (data: string) => void;
|
|
4
|
+
initialColumns?: number;
|
|
5
|
+
initialRows?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Browser-backed terminal transport for the bridge-hosted native TUI.
|
|
9
|
+
* It implements the pi-tui Terminal contract but forwards output over the
|
|
10
|
+
* RPC bridge instead of writing to process stdout.
|
|
11
|
+
*/
|
|
12
|
+
export declare class RemoteTerminal implements Terminal {
|
|
13
|
+
private readonly options;
|
|
14
|
+
private inputHandler?;
|
|
15
|
+
private resizeHandler?;
|
|
16
|
+
private _columns;
|
|
17
|
+
private _rows;
|
|
18
|
+
constructor(options: RemoteTerminalOptions);
|
|
19
|
+
start(onInput: (data: string) => void, onResize: () => void): void;
|
|
20
|
+
stop(): void;
|
|
21
|
+
drainInput(): Promise<void>;
|
|
22
|
+
write(data: string): void;
|
|
23
|
+
get columns(): number;
|
|
24
|
+
get rows(): number;
|
|
25
|
+
get isTTY(): boolean;
|
|
26
|
+
get kittyProtocolActive(): boolean;
|
|
27
|
+
pushInput(data: string): void;
|
|
28
|
+
resize(columns: number, rows: number): void;
|
|
29
|
+
moveBy(lines: number): void;
|
|
30
|
+
hideCursor(): void;
|
|
31
|
+
showCursor(): void;
|
|
32
|
+
clearLine(): void;
|
|
33
|
+
clearFromCursor(): void;
|
|
34
|
+
clearScreen(): void;
|
|
35
|
+
setTitle(title: string): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=remote-terminal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-terminal.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/remote-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACrC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAMlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,YAAY,CAAC,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;gBAEO,OAAO,EAAE,qBAAqB;IAK3D,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAKlE,IAAI,IAAI,IAAI;IAKN,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKzB,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,OAAO,CAInB;IAED,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK7B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAW3C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3B,UAAU,IAAI,IAAI;IAIlB,UAAU,IAAI,IAAI;IAIlB,SAAS,IAAI,IAAI;IAIjB,eAAe,IAAI,IAAI;IAIvB,WAAW,IAAI,IAAI;IAInB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAG7B"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-backed terminal transport for the bridge-hosted native TUI.
|
|
3
|
+
* It implements the pi-tui Terminal contract but forwards output over the
|
|
4
|
+
* RPC bridge instead of writing to process stdout.
|
|
5
|
+
*/
|
|
6
|
+
export class RemoteTerminal {
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.options = options;
|
|
9
|
+
this._columns = Math.max(1, options.initialColumns ?? 120);
|
|
10
|
+
this._rows = Math.max(1, options.initialRows ?? 30);
|
|
11
|
+
}
|
|
12
|
+
start(onInput, onResize) {
|
|
13
|
+
this.inputHandler = onInput;
|
|
14
|
+
this.resizeHandler = onResize;
|
|
15
|
+
}
|
|
16
|
+
stop() {
|
|
17
|
+
this.inputHandler = undefined;
|
|
18
|
+
this.resizeHandler = undefined;
|
|
19
|
+
}
|
|
20
|
+
async drainInput() {
|
|
21
|
+
// Browser transport has no local stdin buffer to drain.
|
|
22
|
+
}
|
|
23
|
+
write(data) {
|
|
24
|
+
if (!data)
|
|
25
|
+
return;
|
|
26
|
+
this.options.onWrite(data);
|
|
27
|
+
}
|
|
28
|
+
get columns() {
|
|
29
|
+
return this._columns;
|
|
30
|
+
}
|
|
31
|
+
get rows() {
|
|
32
|
+
return this._rows;
|
|
33
|
+
}
|
|
34
|
+
get isTTY() {
|
|
35
|
+
// RemoteTerminal renders to a browser-based terminal emulator via
|
|
36
|
+
// the RPC bridge — it behaves like a real TTY for rendering purposes.
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
get kittyProtocolActive() {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
pushInput(data) {
|
|
43
|
+
if (!data)
|
|
44
|
+
return;
|
|
45
|
+
this.inputHandler?.(data);
|
|
46
|
+
}
|
|
47
|
+
resize(columns, rows) {
|
|
48
|
+
const nextColumns = Math.max(1, Math.floor(columns));
|
|
49
|
+
const nextRows = Math.max(1, Math.floor(rows));
|
|
50
|
+
const changed = nextColumns !== this._columns || nextRows !== this._rows;
|
|
51
|
+
this._columns = nextColumns;
|
|
52
|
+
this._rows = nextRows;
|
|
53
|
+
if (changed) {
|
|
54
|
+
this.resizeHandler?.();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
moveBy(lines) {
|
|
58
|
+
if (lines > 0) {
|
|
59
|
+
this.write(`\x1b[${lines}B`);
|
|
60
|
+
}
|
|
61
|
+
else if (lines < 0) {
|
|
62
|
+
this.write(`\x1b[${-lines}A`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
hideCursor() {
|
|
66
|
+
this.write("\x1b[?25l");
|
|
67
|
+
}
|
|
68
|
+
showCursor() {
|
|
69
|
+
this.write("\x1b[?25h");
|
|
70
|
+
}
|
|
71
|
+
clearLine() {
|
|
72
|
+
this.write("\x1b[K");
|
|
73
|
+
}
|
|
74
|
+
clearFromCursor() {
|
|
75
|
+
this.write("\x1b[J");
|
|
76
|
+
}
|
|
77
|
+
clearScreen() {
|
|
78
|
+
this.write("\x1b[2J\x1b[H");
|
|
79
|
+
}
|
|
80
|
+
setTitle(title) {
|
|
81
|
+
this.write(`\x1b]0;${title}\x07`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=remote-terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-terminal.js","sourceRoot":"","sources":["../../../src/modes/rpc/remote-terminal.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Terminal } from \"@gsd/pi-tui\";\n\nexport interface RemoteTerminalOptions {\n\tonWrite: (data: string) => void;\n\tinitialColumns?: number;\n\tinitialRows?: number;\n}\n\n/**\n * Browser-backed terminal transport for the bridge-hosted native TUI.\n * It implements the pi-tui Terminal contract but forwards output over the\n * RPC bridge instead of writing to process stdout.\n */\nexport class RemoteTerminal implements Terminal {\n\tprivate inputHandler?: (data: string) => void;\n\tprivate resizeHandler?: () => void;\n\tprivate _columns: number;\n\tprivate _rows: number;\n\n\tconstructor(private readonly options: RemoteTerminalOptions) {\n\t\tthis._columns = Math.max(1, options.initialColumns ?? 120);\n\t\tthis._rows = Math.max(1, options.initialRows ?? 30);\n\t}\n\n\tstart(onInput: (data: string) => void, onResize: () => void): void {\n\t\tthis.inputHandler = onInput;\n\t\tthis.resizeHandler = onResize;\n\t}\n\n\tstop(): void {\n\t\tthis.inputHandler = undefined;\n\t\tthis.resizeHandler = undefined;\n\t}\n\n\tasync drainInput(): Promise<void> {\n\t\t// Browser transport has no local stdin buffer to drain.\n\t}\n\n\twrite(data: string): void {\n\t\tif (!data) return;\n\t\tthis.options.onWrite(data);\n\t}\n\n\tget columns(): number {\n\t\treturn this._columns;\n\t}\n\n\tget rows(): number {\n\t\treturn this._rows;\n\t}\n\n\tget isTTY(): boolean {\n\t\t// RemoteTerminal renders to a browser-based terminal emulator via\n\t\t// the RPC bridge — it behaves like a real TTY for rendering purposes.\n\t\treturn true;\n\t}\n\n\tget kittyProtocolActive(): boolean {\n\t\treturn false;\n\t}\n\n\tpushInput(data: string): void {\n\t\tif (!data) return;\n\t\tthis.inputHandler?.(data);\n\t}\n\n\tresize(columns: number, rows: number): void {\n\t\tconst nextColumns = Math.max(1, Math.floor(columns));\n\t\tconst nextRows = Math.max(1, Math.floor(rows));\n\t\tconst changed = nextColumns !== this._columns || nextRows !== this._rows;\n\t\tthis._columns = nextColumns;\n\t\tthis._rows = nextRows;\n\t\tif (changed) {\n\t\t\tthis.resizeHandler?.();\n\t\t}\n\t}\n\n\tmoveBy(lines: number): void {\n\t\tif (lines > 0) {\n\t\t\tthis.write(`\\x1b[${lines}B`);\n\t\t} else if (lines < 0) {\n\t\t\tthis.write(`\\x1b[${-lines}A`);\n\t\t}\n\t}\n\n\thideCursor(): void {\n\t\tthis.write(\"\\x1b[?25l\");\n\t}\n\n\tshowCursor(): void {\n\t\tthis.write(\"\\x1b[?25h\");\n\t}\n\n\tclearLine(): void {\n\t\tthis.write(\"\\x1b[K\");\n\t}\n\n\tclearFromCursor(): void {\n\t\tthis.write(\"\\x1b[J\");\n\t}\n\n\tclearScreen(): void {\n\t\tthis.write(\"\\x1b[2J\\x1b[H\");\n\t}\n\n\tsetTitle(title: string): void {\n\t\tthis.write(`\\x1b]0;${title}\\x07`);\n\t}\n}\n"]}
|