@kenkaiiii/ggcoder 5.49.5 → 5.49.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-sidecar.js +34 -9
- package/dist/app-sidecar.js.map +1 -1
- package/dist/core/settings-manager.d.ts +2 -2
- package/dist/hf-pull.d.ts +38 -2
- package/dist/hf-pull.d.ts.map +1 -1
- package/dist/hf-pull.js +122 -6
- package/dist/hf-pull.js.map +1 -1
- package/package.json +5 -5
- package/dist/app-sidecar-auth-broadcast.test.d.ts +0 -2
- package/dist/app-sidecar-auth-broadcast.test.d.ts.map +0 -1
- package/dist/app-sidecar-auth-broadcast.test.js +0 -383
- package/dist/app-sidecar-auth-broadcast.test.js.map +0 -1
- package/dist/app-sidecar-sessions.test.d.ts +0 -2
- package/dist/app-sidecar-sessions.test.d.ts.map +0 -1
- package/dist/app-sidecar-sessions.test.js +0 -178
- package/dist/app-sidecar-sessions.test.js.map +0 -1
- package/dist/chat-agents/general.test.d.ts +0 -2
- package/dist/chat-agents/general.test.d.ts.map +0 -1
- package/dist/chat-agents/general.test.js +0 -53
- package/dist/chat-agents/general.test.js.map +0 -1
- package/dist/chat-agents/jiwa.test.d.ts +0 -2
- package/dist/chat-agents/jiwa.test.d.ts.map +0 -1
- package/dist/chat-agents/jiwa.test.js +0 -66
- package/dist/chat-agents/jiwa.test.js.map +0 -1
- package/dist/chat-agents/memory.test.d.ts +0 -2
- package/dist/chat-agents/memory.test.d.ts.map +0 -1
- package/dist/chat-agents/memory.test.js +0 -165
- package/dist/chat-agents/memory.test.js.map +0 -1
- package/dist/chat-agents/specialists.test.d.ts +0 -2
- package/dist/chat-agents/specialists.test.d.ts.map +0 -1
- package/dist/chat-agents/specialists.test.js +0 -98
- package/dist/chat-agents/specialists.test.js.map +0 -1
- package/dist/cli/command-routing.test.d.ts +0 -2
- package/dist/cli/command-routing.test.d.ts.map +0 -1
- package/dist/cli/command-routing.test.js +0 -60
- package/dist/cli/command-routing.test.js.map +0 -1
- package/dist/config.test.d.ts +0 -2
- package/dist/config.test.d.ts.map +0 -1
- package/dist/config.test.js +0 -148
- package/dist/config.test.js.map +0 -1
- package/dist/core/agent-mcp-passthrough.test.d.ts +0 -2
- package/dist/core/agent-mcp-passthrough.test.d.ts.map +0 -1
- package/dist/core/agent-mcp-passthrough.test.js +0 -61
- package/dist/core/agent-mcp-passthrough.test.js.map +0 -1
- package/dist/core/agent-notifications.test.d.ts +0 -2
- package/dist/core/agent-notifications.test.d.ts.map +0 -1
- package/dist/core/agent-notifications.test.js +0 -97
- package/dist/core/agent-notifications.test.js.map +0 -1
- package/dist/core/agent-session-add-dir.test.d.ts +0 -2
- package/dist/core/agent-session-add-dir.test.d.ts.map +0 -1
- package/dist/core/agent-session-add-dir.test.js +0 -110
- package/dist/core/agent-session-add-dir.test.js.map +0 -1
- package/dist/core/agent-session-checkpoint-flush.test.d.ts +0 -2
- package/dist/core/agent-session-checkpoint-flush.test.d.ts.map +0 -1
- package/dist/core/agent-session-checkpoint-flush.test.js +0 -201
- package/dist/core/agent-session-checkpoint-flush.test.js.map +0 -1
- package/dist/core/agent-session-compaction.test.d.ts +0 -2
- package/dist/core/agent-session-compaction.test.d.ts.map +0 -1
- package/dist/core/agent-session-compaction.test.js +0 -1157
- package/dist/core/agent-session-compaction.test.js.map +0 -1
- package/dist/core/agent-session-crash-durability.test.d.ts +0 -2
- package/dist/core/agent-session-crash-durability.test.d.ts.map +0 -1
- package/dist/core/agent-session-crash-durability.test.js +0 -102
- package/dist/core/agent-session-crash-durability.test.js.map +0 -1
- package/dist/core/agent-session-marker-anchors.test.d.ts +0 -2
- package/dist/core/agent-session-marker-anchors.test.d.ts.map +0 -1
- package/dist/core/agent-session-marker-anchors.test.js +0 -326
- package/dist/core/agent-session-marker-anchors.test.js.map +0 -1
- package/dist/core/agent-session-memory-tail.test.d.ts +0 -2
- package/dist/core/agent-session-memory-tail.test.d.ts.map +0 -1
- package/dist/core/agent-session-memory-tail.test.js +0 -119
- package/dist/core/agent-session-memory-tail.test.js.map +0 -1
- package/dist/core/agent-session-model-switch.test.d.ts +0 -2
- package/dist/core/agent-session-model-switch.test.d.ts.map +0 -1
- package/dist/core/agent-session-model-switch.test.js +0 -161
- package/dist/core/agent-session-model-switch.test.js.map +0 -1
- package/dist/core/agent-session-notifications.test.d.ts +0 -2
- package/dist/core/agent-session-notifications.test.d.ts.map +0 -1
- package/dist/core/agent-session-notifications.test.js +0 -114
- package/dist/core/agent-session-notifications.test.js.map +0 -1
- package/dist/core/agent-session-pre-init-arming.test.d.ts +0 -2
- package/dist/core/agent-session-pre-init-arming.test.d.ts.map +0 -1
- package/dist/core/agent-session-pre-init-arming.test.js +0 -60
- package/dist/core/agent-session-pre-init-arming.test.js.map +0 -1
- package/dist/core/agent-session-process-gate.test.d.ts +0 -2
- package/dist/core/agent-session-process-gate.test.d.ts.map +0 -1
- package/dist/core/agent-session-process-gate.test.js +0 -98
- package/dist/core/agent-session-process-gate.test.js.map +0 -1
- package/dist/core/agent-session-queue.test.d.ts +0 -2
- package/dist/core/agent-session-queue.test.d.ts.map +0 -1
- package/dist/core/agent-session-queue.test.js +0 -184
- package/dist/core/agent-session-queue.test.js.map +0 -1
- package/dist/core/agent-session-review-coverage.test.d.ts +0 -2
- package/dist/core/agent-session-review-coverage.test.d.ts.map +0 -1
- package/dist/core/agent-session-review-coverage.test.js +0 -191
- package/dist/core/agent-session-review-coverage.test.js.map +0 -1
- package/dist/core/agent-session-slash-restore.test.d.ts +0 -2
- package/dist/core/agent-session-slash-restore.test.d.ts.map +0 -1
- package/dist/core/agent-session-slash-restore.test.js +0 -121
- package/dist/core/agent-session-slash-restore.test.js.map +0 -1
- package/dist/core/agent-session-subagent-policy.test.d.ts +0 -2
- package/dist/core/agent-session-subagent-policy.test.d.ts.map +0 -1
- package/dist/core/agent-session-subagent-policy.test.js +0 -40
- package/dist/core/agent-session-subagent-policy.test.js.map +0 -1
- package/dist/core/agent-session-tool-result-policy.test.d.ts +0 -2
- package/dist/core/agent-session-tool-result-policy.test.d.ts.map +0 -1
- package/dist/core/agent-session-tool-result-policy.test.js +0 -25
- package/dist/core/agent-session-tool-result-policy.test.js.map +0 -1
- package/dist/core/agent-session-tool-tiers.test.d.ts +0 -2
- package/dist/core/agent-session-tool-tiers.test.d.ts.map +0 -1
- package/dist/core/agent-session-tool-tiers.test.js +0 -138
- package/dist/core/agent-session-tool-tiers.test.js.map +0 -1
- package/dist/core/agent-session-verification-flow.test.d.ts +0 -2
- package/dist/core/agent-session-verification-flow.test.d.ts.map +0 -1
- package/dist/core/agent-session-verification-flow.test.js +0 -125
- package/dist/core/agent-session-verification-flow.test.js.map +0 -1
- package/dist/core/agent-session-verification-gate.test.d.ts +0 -2
- package/dist/core/agent-session-verification-gate.test.d.ts.map +0 -1
- package/dist/core/agent-session-verification-gate.test.js +0 -137
- package/dist/core/agent-session-verification-gate.test.js.map +0 -1
- package/dist/core/agent-tools-allowlist.test.d.ts +0 -2
- package/dist/core/agent-tools-allowlist.test.d.ts.map +0 -1
- package/dist/core/agent-tools-allowlist.test.js +0 -74
- package/dist/core/agent-tools-allowlist.test.js.map +0 -1
- package/dist/core/agents.test.d.ts +0 -2
- package/dist/core/agents.test.d.ts.map +0 -1
- package/dist/core/agents.test.js +0 -147
- package/dist/core/agents.test.js.map +0 -1
- package/dist/core/auto-update.test.d.ts +0 -2
- package/dist/core/auto-update.test.d.ts.map +0 -1
- package/dist/core/auto-update.test.js +0 -204
- package/dist/core/auto-update.test.js.map +0 -1
- package/dist/core/autopilot-cycle.test.d.ts +0 -2
- package/dist/core/autopilot-cycle.test.d.ts.map +0 -1
- package/dist/core/autopilot-cycle.test.js +0 -375
- package/dist/core/autopilot-cycle.test.js.map +0 -1
- package/dist/core/autopilot-gate.test.d.ts +0 -2
- package/dist/core/autopilot-gate.test.d.ts.map +0 -1
- package/dist/core/autopilot-gate.test.js +0 -298
- package/dist/core/autopilot-gate.test.js.map +0 -1
- package/dist/core/autopilot-verdict.test.d.ts +0 -2
- package/dist/core/autopilot-verdict.test.d.ts.map +0 -1
- package/dist/core/autopilot-verdict.test.js +0 -153
- package/dist/core/autopilot-verdict.test.js.map +0 -1
- package/dist/core/checkpoint-store.test.d.ts +0 -2
- package/dist/core/checkpoint-store.test.d.ts.map +0 -1
- package/dist/core/checkpoint-store.test.js +0 -111
- package/dist/core/checkpoint-store.test.js.map +0 -1
- package/dist/core/code-retrieval-chunkers.test.d.ts +0 -2
- package/dist/core/code-retrieval-chunkers.test.d.ts.map +0 -1
- package/dist/core/code-retrieval-chunkers.test.js +0 -203
- package/dist/core/code-retrieval-chunkers.test.js.map +0 -1
- package/dist/core/compaction/active-context.test.d.ts +0 -2
- package/dist/core/compaction/active-context.test.d.ts.map +0 -1
- package/dist/core/compaction/active-context.test.js +0 -57
- package/dist/core/compaction/active-context.test.js.map +0 -1
- package/dist/core/compaction/compactor.test.d.ts +0 -2
- package/dist/core/compaction/compactor.test.d.ts.map +0 -1
- package/dist/core/compaction/compactor.test.js +0 -1072
- package/dist/core/compaction/compactor.test.js.map +0 -1
- package/dist/core/compaction/policy.test.d.ts +0 -2
- package/dist/core/compaction/policy.test.d.ts.map +0 -1
- package/dist/core/compaction/policy.test.js +0 -35
- package/dist/core/compaction/policy.test.js.map +0 -1
- package/dist/core/compaction/query-aware-selector.test.d.ts +0 -2
- package/dist/core/compaction/query-aware-selector.test.d.ts.map +0 -1
- package/dist/core/compaction/query-aware-selector.test.js +0 -96
- package/dist/core/compaction/query-aware-selector.test.js.map +0 -1
- package/dist/core/compaction/token-estimator.test.d.ts +0 -2
- package/dist/core/compaction/token-estimator.test.d.ts.map +0 -1
- package/dist/core/compaction/token-estimator.test.js +0 -283
- package/dist/core/compaction/token-estimator.test.js.map +0 -1
- package/dist/core/compaction/tool-result-pruner.test.d.ts +0 -2
- package/dist/core/compaction/tool-result-pruner.test.d.ts.map +0 -1
- package/dist/core/compaction/tool-result-pruner.test.js +0 -320
- package/dist/core/compaction/tool-result-pruner.test.js.map +0 -1
- package/dist/core/context-limits.test.d.ts +0 -2
- package/dist/core/context-limits.test.d.ts.map +0 -1
- package/dist/core/context-limits.test.js +0 -55
- package/dist/core/context-limits.test.js.map +0 -1
- package/dist/core/continue-replay-inventory.test.d.ts +0 -2
- package/dist/core/continue-replay-inventory.test.d.ts.map +0 -1
- package/dist/core/continue-replay-inventory.test.js +0 -42
- package/dist/core/continue-replay-inventory.test.js.map +0 -1
- package/dist/core/encode-cwd.test.d.ts +0 -2
- package/dist/core/encode-cwd.test.d.ts.map +0 -1
- package/dist/core/encode-cwd.test.js +0 -80
- package/dist/core/encode-cwd.test.js.map +0 -1
- package/dist/core/event-bus.test.d.ts +0 -2
- package/dist/core/event-bus.test.d.ts.map +0 -1
- package/dist/core/event-bus.test.js +0 -33
- package/dist/core/event-bus.test.js.map +0 -1
- package/dist/core/extensions/plugin-bundles.test.d.ts +0 -2
- package/dist/core/extensions/plugin-bundles.test.d.ts.map +0 -1
- package/dist/core/extensions/plugin-bundles.test.js +0 -110
- package/dist/core/extensions/plugin-bundles.test.js.map +0 -1
- package/dist/core/foreign-session-import.test.d.ts +0 -2
- package/dist/core/foreign-session-import.test.d.ts.map +0 -1
- package/dist/core/foreign-session-import.test.js +0 -220
- package/dist/core/foreign-session-import.test.js.map +0 -1
- package/dist/core/hashline-edit-benchmark.test.d.ts +0 -2
- package/dist/core/hashline-edit-benchmark.test.d.ts.map +0 -1
- package/dist/core/hashline-edit-benchmark.test.js +0 -190
- package/dist/core/hashline-edit-benchmark.test.js.map +0 -1
- package/dist/core/ideal-review.test.d.ts +0 -2
- package/dist/core/ideal-review.test.d.ts.map +0 -1
- package/dist/core/ideal-review.test.js +0 -242
- package/dist/core/ideal-review.test.js.map +0 -1
- package/dist/core/input-normalization.test.d.ts +0 -2
- package/dist/core/input-normalization.test.d.ts.map +0 -1
- package/dist/core/input-normalization.test.js +0 -75
- package/dist/core/input-normalization.test.js.map +0 -1
- package/dist/core/json-mode-flag-parity.test.d.ts +0 -2
- package/dist/core/json-mode-flag-parity.test.d.ts.map +0 -1
- package/dist/core/json-mode-flag-parity.test.js +0 -66
- package/dist/core/json-mode-flag-parity.test.js.map +0 -1
- package/dist/core/ken-context.test.d.ts +0 -2
- package/dist/core/ken-context.test.d.ts.map +0 -1
- package/dist/core/ken-context.test.js +0 -342
- package/dist/core/ken-context.test.js.map +0 -1
- package/dist/core/ken-model.test.d.ts +0 -2
- package/dist/core/ken-model.test.d.ts.map +0 -1
- package/dist/core/ken-model.test.js +0 -51
- package/dist/core/ken-model.test.js.map +0 -1
- package/dist/core/ken-prompt.test.d.ts +0 -2
- package/dist/core/ken-prompt.test.d.ts.map +0 -1
- package/dist/core/ken-prompt.test.js +0 -191
- package/dist/core/ken-prompt.test.js.map +0 -1
- package/dist/core/language-detector.test.d.ts +0 -2
- package/dist/core/language-detector.test.d.ts.map +0 -1
- package/dist/core/language-detector.test.js +0 -109
- package/dist/core/language-detector.test.js.map +0 -1
- package/dist/core/local-endpoint-store.test.d.ts +0 -2
- package/dist/core/local-endpoint-store.test.d.ts.map +0 -1
- package/dist/core/local-endpoint-store.test.js +0 -123
- package/dist/core/local-endpoint-store.test.js.map +0 -1
- package/dist/core/loop-breaker.test.d.ts +0 -2
- package/dist/core/loop-breaker.test.d.ts.map +0 -1
- package/dist/core/loop-breaker.test.js +0 -238
- package/dist/core/loop-breaker.test.js.map +0 -1
- package/dist/core/lsp/client-navigation.test.d.ts +0 -2
- package/dist/core/lsp/client-navigation.test.d.ts.map +0 -1
- package/dist/core/lsp/client-navigation.test.js +0 -135
- package/dist/core/lsp/client-navigation.test.js.map +0 -1
- package/dist/core/lsp/format.test.d.ts +0 -2
- package/dist/core/lsp/format.test.d.ts.map +0 -1
- package/dist/core/lsp/format.test.js +0 -56
- package/dist/core/lsp/format.test.js.map +0 -1
- package/dist/core/lsp/integration.test.d.ts +0 -2
- package/dist/core/lsp/integration.test.d.ts.map +0 -1
- package/dist/core/lsp/integration.test.js +0 -60
- package/dist/core/lsp/integration.test.js.map +0 -1
- package/dist/core/lsp/jsonrpc.test.d.ts +0 -2
- package/dist/core/lsp/jsonrpc.test.d.ts.map +0 -1
- package/dist/core/lsp/jsonrpc.test.js +0 -127
- package/dist/core/lsp/jsonrpc.test.js.map +0 -1
- package/dist/core/lsp/manager-navigation.test.d.ts +0 -2
- package/dist/core/lsp/manager-navigation.test.d.ts.map +0 -1
- package/dist/core/lsp/manager-navigation.test.js +0 -121
- package/dist/core/lsp/manager-navigation.test.js.map +0 -1
- package/dist/core/lsp/manager.test.d.ts +0 -2
- package/dist/core/lsp/manager.test.d.ts.map +0 -1
- package/dist/core/lsp/manager.test.js +0 -286
- package/dist/core/lsp/manager.test.js.map +0 -1
- package/dist/core/lsp/pool.test.d.ts +0 -2
- package/dist/core/lsp/pool.test.d.ts.map +0 -1
- package/dist/core/lsp/pool.test.js +0 -286
- package/dist/core/lsp/pool.test.js.map +0 -1
- package/dist/core/lsp/servers.test.d.ts +0 -2
- package/dist/core/lsp/servers.test.d.ts.map +0 -1
- package/dist/core/lsp/servers.test.js +0 -67
- package/dist/core/lsp/servers.test.js.map +0 -1
- package/dist/core/lsp/uri.test.d.ts +0 -2
- package/dist/core/lsp/uri.test.d.ts.map +0 -1
- package/dist/core/lsp/uri.test.js +0 -56
- package/dist/core/lsp/uri.test.js.map +0 -1
- package/dist/core/lsp/windows.test.d.ts +0 -2
- package/dist/core/lsp/windows.test.d.ts.map +0 -1
- package/dist/core/lsp/windows.test.js +0 -239
- package/dist/core/lsp/windows.test.js.map +0 -1
- package/dist/core/mcp/catalog-cache.test.d.ts +0 -2
- package/dist/core/mcp/catalog-cache.test.d.ts.map +0 -1
- package/dist/core/mcp/catalog-cache.test.js +0 -99
- package/dist/core/mcp/catalog-cache.test.js.map +0 -1
- package/dist/core/mcp/client-session-recovery.test.d.ts +0 -2
- package/dist/core/mcp/client-session-recovery.test.d.ts.map +0 -1
- package/dist/core/mcp/client-session-recovery.test.js +0 -231
- package/dist/core/mcp/client-session-recovery.test.js.map +0 -1
- package/dist/core/mcp/content.test.d.ts +0 -2
- package/dist/core/mcp/content.test.d.ts.map +0 -1
- package/dist/core/mcp/content.test.js +0 -152
- package/dist/core/mcp/content.test.js.map +0 -1
- package/dist/core/mcp/defaults.test.d.ts +0 -2
- package/dist/core/mcp/defaults.test.d.ts.map +0 -1
- package/dist/core/mcp/defaults.test.js +0 -60
- package/dist/core/mcp/defaults.test.js.map +0 -1
- package/dist/core/mcp/elicitation.test.d.ts +0 -2
- package/dist/core/mcp/elicitation.test.d.ts.map +0 -1
- package/dist/core/mcp/elicitation.test.js +0 -158
- package/dist/core/mcp/elicitation.test.js.map +0 -1
- package/dist/core/mcp/legacy-negotiation.test.d.ts +0 -2
- package/dist/core/mcp/legacy-negotiation.test.d.ts.map +0 -1
- package/dist/core/mcp/legacy-negotiation.test.js +0 -80
- package/dist/core/mcp/legacy-negotiation.test.js.map +0 -1
- package/dist/core/mcp/loopback.test.d.ts +0 -2
- package/dist/core/mcp/loopback.test.d.ts.map +0 -1
- package/dist/core/mcp/loopback.test.js +0 -87
- package/dist/core/mcp/loopback.test.js.map +0 -1
- package/dist/core/mcp/oauth-store.test.d.ts +0 -2
- package/dist/core/mcp/oauth-store.test.d.ts.map +0 -1
- package/dist/core/mcp/oauth-store.test.js +0 -94
- package/dist/core/mcp/oauth-store.test.js.map +0 -1
- package/dist/core/mcp/parse-add-command.test.d.ts +0 -2
- package/dist/core/mcp/parse-add-command.test.d.ts.map +0 -1
- package/dist/core/mcp/parse-add-command.test.js +0 -81
- package/dist/core/mcp/parse-add-command.test.js.map +0 -1
- package/dist/core/mcp/resolve-stdio.test.d.ts +0 -2
- package/dist/core/mcp/resolve-stdio.test.d.ts.map +0 -1
- package/dist/core/mcp/resolve-stdio.test.js +0 -239
- package/dist/core/mcp/resolve-stdio.test.js.map +0 -1
- package/dist/core/mcp/session-elicitation-wiring.test.d.ts +0 -2
- package/dist/core/mcp/session-elicitation-wiring.test.d.ts.map +0 -1
- package/dist/core/mcp/session-elicitation-wiring.test.js +0 -138
- package/dist/core/mcp/session-elicitation-wiring.test.js.map +0 -1
- package/dist/core/mcp/shared-pool.test.d.ts +0 -2
- package/dist/core/mcp/shared-pool.test.d.ts.map +0 -1
- package/dist/core/mcp/shared-pool.test.js +0 -425
- package/dist/core/mcp/shared-pool.test.js.map +0 -1
- package/dist/core/mcp/store.test.d.ts +0 -2
- package/dist/core/mcp/store.test.d.ts.map +0 -1
- package/dist/core/mcp/store.test.js +0 -110
- package/dist/core/mcp/store.test.js.map +0 -1
- package/dist/core/mcp/when-connected.test.d.ts +0 -2
- package/dist/core/mcp/when-connected.test.d.ts.map +0 -1
- package/dist/core/mcp/when-connected.test.js +0 -46
- package/dist/core/mcp/when-connected.test.js.map +0 -1
- package/dist/core/message-images.test.d.ts +0 -2
- package/dist/core/message-images.test.d.ts.map +0 -1
- package/dist/core/message-images.test.js +0 -62
- package/dist/core/message-images.test.js.map +0 -1
- package/dist/core/network-guard.test.d.ts +0 -2
- package/dist/core/network-guard.test.d.ts.map +0 -1
- package/dist/core/network-guard.test.js +0 -72
- package/dist/core/network-guard.test.js.map +0 -1
- package/dist/core/persistent-shell.test.d.ts +0 -2
- package/dist/core/persistent-shell.test.d.ts.map +0 -1
- package/dist/core/persistent-shell.test.js +0 -84
- package/dist/core/persistent-shell.test.js.map +0 -1
- package/dist/core/process-gate.test.d.ts +0 -2
- package/dist/core/process-gate.test.d.ts.map +0 -1
- package/dist/core/process-gate.test.js +0 -87
- package/dist/core/process-gate.test.js.map +0 -1
- package/dist/core/process-manager-dev-server-repro.test.d.ts +0 -2
- package/dist/core/process-manager-dev-server-repro.test.d.ts.map +0 -1
- package/dist/core/process-manager-dev-server-repro.test.js +0 -225
- package/dist/core/process-manager-dev-server-repro.test.js.map +0 -1
- package/dist/core/process-manager-notifications.test.d.ts +0 -2
- package/dist/core/process-manager-notifications.test.d.ts.map +0 -1
- package/dist/core/process-manager-notifications.test.js +0 -245
- package/dist/core/process-manager-notifications.test.js.map +0 -1
- package/dist/core/process-manager-wake.test.d.ts +0 -2
- package/dist/core/process-manager-wake.test.d.ts.map +0 -1
- package/dist/core/process-manager-wake.test.js +0 -100
- package/dist/core/process-manager-wake.test.js.map +0 -1
- package/dist/core/progress/engine.test.d.ts +0 -2
- package/dist/core/progress/engine.test.d.ts.map +0 -1
- package/dist/core/progress/engine.test.js +0 -136
- package/dist/core/progress/engine.test.js.map +0 -1
- package/dist/core/progress/git-xp.test.d.ts +0 -2
- package/dist/core/progress/git-xp.test.d.ts.map +0 -1
- package/dist/core/progress/git-xp.test.js +0 -88
- package/dist/core/progress/git-xp.test.js.map +0 -1
- package/dist/core/progress/ranks.test.d.ts +0 -2
- package/dist/core/progress/ranks.test.d.ts.map +0 -1
- package/dist/core/progress/ranks.test.js +0 -100
- package/dist/core/progress/ranks.test.js.map +0 -1
- package/dist/core/progress/rebuild.test.d.ts +0 -2
- package/dist/core/progress/rebuild.test.d.ts.map +0 -1
- package/dist/core/progress/rebuild.test.js +0 -103
- package/dist/core/progress/rebuild.test.js.map +0 -1
- package/dist/core/progress/store.test.d.ts +0 -2
- package/dist/core/progress/store.test.d.ts.map +0 -1
- package/dist/core/progress/store.test.js +0 -108
- package/dist/core/progress/store.test.js.map +0 -1
- package/dist/core/project-discovery.test.d.ts +0 -2
- package/dist/core/project-discovery.test.d.ts.map +0 -1
- package/dist/core/project-discovery.test.js +0 -519
- package/dist/core/project-discovery.test.js.map +0 -1
- package/dist/core/prompt-commands.test.d.ts +0 -2
- package/dist/core/prompt-commands.test.d.ts.map +0 -1
- package/dist/core/prompt-commands.test.js +0 -180
- package/dist/core/prompt-commands.test.js.map +0 -1
- package/dist/core/provider-cache.e2e.test.d.ts +0 -2
- package/dist/core/provider-cache.e2e.test.d.ts.map +0 -1
- package/dist/core/provider-cache.e2e.test.js +0 -125
- package/dist/core/provider-cache.e2e.test.js.map +0 -1
- package/dist/core/radio.test.d.ts +0 -2
- package/dist/core/radio.test.d.ts.map +0 -1
- package/dist/core/radio.test.js +0 -117
- package/dist/core/radio.test.js.map +0 -1
- package/dist/core/regrounding.test.d.ts +0 -2
- package/dist/core/regrounding.test.d.ts.map +0 -1
- package/dist/core/regrounding.test.js +0 -38
- package/dist/core/regrounding.test.js.map +0 -1
- package/dist/core/resolve-start.test.d.ts +0 -2
- package/dist/core/resolve-start.test.d.ts.map +0 -1
- package/dist/core/resolve-start.test.js +0 -68
- package/dist/core/resolve-start.test.js.map +0 -1
- package/dist/core/run-claim.test.d.ts +0 -2
- package/dist/core/run-claim.test.d.ts.map +0 -1
- package/dist/core/run-claim.test.js +0 -107
- package/dist/core/run-claim.test.js.map +0 -1
- package/dist/core/run-journal.test.d.ts +0 -2
- package/dist/core/run-journal.test.d.ts.map +0 -1
- package/dist/core/run-journal.test.js +0 -195
- package/dist/core/run-journal.test.js.map +0 -1
- package/dist/core/run-lifecycle.test.d.ts +0 -2
- package/dist/core/run-lifecycle.test.d.ts.map +0 -1
- package/dist/core/run-lifecycle.test.js +0 -64
- package/dist/core/run-lifecycle.test.js.map +0 -1
- package/dist/core/sandbox-feedback.test.d.ts +0 -2
- package/dist/core/sandbox-feedback.test.d.ts.map +0 -1
- package/dist/core/sandbox-feedback.test.js +0 -32
- package/dist/core/sandbox-feedback.test.js.map +0 -1
- package/dist/core/sandbox.test.d.ts +0 -2
- package/dist/core/sandbox.test.d.ts.map +0 -1
- package/dist/core/sandbox.test.js +0 -288
- package/dist/core/sandbox.test.js.map +0 -1
- package/dist/core/semantic-search-benchmark.test.d.ts +0 -2
- package/dist/core/semantic-search-benchmark.test.d.ts.map +0 -1
- package/dist/core/semantic-search-benchmark.test.js +0 -89
- package/dist/core/semantic-search-benchmark.test.js.map +0 -1
- package/dist/core/session-compaction.test.d.ts +0 -2
- package/dist/core/session-compaction.test.d.ts.map +0 -1
- package/dist/core/session-compaction.test.js +0 -92
- package/dist/core/session-compaction.test.js.map +0 -1
- package/dist/core/session-export.test.d.ts +0 -2
- package/dist/core/session-export.test.d.ts.map +0 -1
- package/dist/core/session-export.test.js +0 -353
- package/dist/core/session-export.test.js.map +0 -1
- package/dist/core/session-history.test.d.ts +0 -2
- package/dist/core/session-history.test.d.ts.map +0 -1
- package/dist/core/session-history.test.js +0 -272
- package/dist/core/session-history.test.js.map +0 -1
- package/dist/core/session-injections.test.d.ts +0 -2
- package/dist/core/session-injections.test.d.ts.map +0 -1
- package/dist/core/session-injections.test.js +0 -117
- package/dist/core/session-injections.test.js.map +0 -1
- package/dist/core/session-manager.test.d.ts +0 -2
- package/dist/core/session-manager.test.d.ts.map +0 -1
- package/dist/core/session-manager.test.js +0 -571
- package/dist/core/session-manager.test.js.map +0 -1
- package/dist/core/session-notification-visibility.test.d.ts +0 -2
- package/dist/core/session-notification-visibility.test.d.ts.map +0 -1
- package/dist/core/session-notification-visibility.test.js +0 -113
- package/dist/core/session-notification-visibility.test.js.map +0 -1
- package/dist/core/session-reconstructability.test.d.ts +0 -2
- package/dist/core/session-reconstructability.test.d.ts.map +0 -1
- package/dist/core/session-reconstructability.test.js +0 -105
- package/dist/core/session-reconstructability.test.js.map +0 -1
- package/dist/core/session-restore-display.test.d.ts +0 -2
- package/dist/core/session-restore-display.test.d.ts.map +0 -1
- package/dist/core/session-restore-display.test.js +0 -103
- package/dist/core/session-restore-display.test.js.map +0 -1
- package/dist/core/session-storage-fd-leak.test.d.ts +0 -2
- package/dist/core/session-storage-fd-leak.test.d.ts.map +0 -1
- package/dist/core/session-storage-fd-leak.test.js +0 -116
- package/dist/core/session-storage-fd-leak.test.js.map +0 -1
- package/dist/core/session-storage.test.d.ts +0 -2
- package/dist/core/session-storage.test.d.ts.map +0 -1
- package/dist/core/session-storage.test.js +0 -277
- package/dist/core/session-storage.test.js.map +0 -1
- package/dist/core/setup-history.test.d.ts +0 -2
- package/dist/core/setup-history.test.d.ts.map +0 -1
- package/dist/core/setup-history.test.js +0 -59
- package/dist/core/setup-history.test.js.map +0 -1
- package/dist/core/shell.test.d.ts +0 -2
- package/dist/core/shell.test.d.ts.map +0 -1
- package/dist/core/shell.test.js +0 -87
- package/dist/core/shell.test.js.map +0 -1
- package/dist/core/shutdown.test.d.ts +0 -2
- package/dist/core/shutdown.test.d.ts.map +0 -1
- package/dist/core/shutdown.test.js +0 -160
- package/dist/core/shutdown.test.js.map +0 -1
- package/dist/core/sidecar-error-reporter.test.d.ts +0 -2
- package/dist/core/sidecar-error-reporter.test.d.ts.map +0 -1
- package/dist/core/sidecar-error-reporter.test.js +0 -61
- package/dist/core/sidecar-error-reporter.test.js.map +0 -1
- package/dist/core/skills-routing.test.d.ts +0 -2
- package/dist/core/skills-routing.test.d.ts.map +0 -1
- package/dist/core/skills-routing.test.js +0 -310
- package/dist/core/skills-routing.test.js.map +0 -1
- package/dist/core/slash-commands.test.d.ts +0 -2
- package/dist/core/slash-commands.test.d.ts.map +0 -1
- package/dist/core/slash-commands.test.js +0 -59
- package/dist/core/slash-commands.test.js.map +0 -1
- package/dist/core/source-maps.test.d.ts +0 -2
- package/dist/core/source-maps.test.d.ts.map +0 -1
- package/dist/core/source-maps.test.js +0 -175
- package/dist/core/source-maps.test.js.map +0 -1
- package/dist/core/speed-benchmark.test.d.ts +0 -2
- package/dist/core/speed-benchmark.test.d.ts.map +0 -1
- package/dist/core/speed-benchmark.test.js +0 -102
- package/dist/core/speed-benchmark.test.js.map +0 -1
- package/dist/core/subagent-manager.test.d.ts +0 -2
- package/dist/core/subagent-manager.test.d.ts.map +0 -1
- package/dist/core/subagent-manager.test.js +0 -536
- package/dist/core/subagent-manager.test.js.map +0 -1
- package/dist/core/subagent-store.test.d.ts +0 -2
- package/dist/core/subagent-store.test.d.ts.map +0 -1
- package/dist/core/subagent-store.test.js +0 -106
- package/dist/core/subagent-store.test.js.map +0 -1
- package/dist/core/subagent-turn-record.test.d.ts +0 -2
- package/dist/core/subagent-turn-record.test.d.ts.map +0 -1
- package/dist/core/subagent-turn-record.test.js +0 -70
- package/dist/core/subagent-turn-record.test.js.map +0 -1
- package/dist/core/verification-evidence.test.d.ts +0 -2
- package/dist/core/verification-evidence.test.d.ts.map +0 -1
- package/dist/core/verification-evidence.test.js +0 -103
- package/dist/core/verification-evidence.test.js.map +0 -1
- package/dist/core/verification-gate.test.d.ts +0 -2
- package/dist/core/verification-gate.test.d.ts.map +0 -1
- package/dist/core/verification-gate.test.js +0 -138
- package/dist/core/verification-gate.test.js.map +0 -1
- package/dist/core/verify-commands.test.d.ts +0 -2
- package/dist/core/verify-commands.test.d.ts.map +0 -1
- package/dist/core/verify-commands.test.js +0 -81
- package/dist/core/verify-commands.test.js.map +0 -1
- package/dist/core/workspace-guard.test.d.ts +0 -2
- package/dist/core/workspace-guard.test.d.ts.map +0 -1
- package/dist/core/workspace-guard.test.js +0 -107
- package/dist/core/workspace-guard.test.js.map +0 -1
- package/dist/hf-pull.test.d.ts +0 -2
- package/dist/hf-pull.test.d.ts.map +0 -1
- package/dist/hf-pull.test.js +0 -112
- package/dist/hf-pull.test.js.map +0 -1
- package/dist/modes/acp-mode.test.d.ts +0 -2
- package/dist/modes/acp-mode.test.d.ts.map +0 -1
- package/dist/modes/acp-mode.test.js +0 -1067
- package/dist/modes/acp-mode.test.js.map +0 -1
- package/dist/modes/json-mode.test.d.ts +0 -2
- package/dist/modes/json-mode.test.d.ts.map +0 -1
- package/dist/modes/json-mode.test.js +0 -84
- package/dist/modes/json-mode.test.js.map +0 -1
- package/dist/modes/subagent-worker-mode.test.d.ts +0 -2
- package/dist/modes/subagent-worker-mode.test.d.ts.map +0 -1
- package/dist/modes/subagent-worker-mode.test.js +0 -52
- package/dist/modes/subagent-worker-mode.test.js.map +0 -1
- package/dist/session.test.d.ts +0 -2
- package/dist/session.test.d.ts.map +0 -1
- package/dist/session.test.js +0 -35
- package/dist/session.test.js.map +0 -1
- package/dist/system-prompt.test.d.ts +0 -2
- package/dist/system-prompt.test.d.ts.map +0 -1
- package/dist/system-prompt.test.js +0 -684
- package/dist/system-prompt.test.js.map +0 -1
- package/dist/system-prompt.tiering.test.d.ts +0 -2
- package/dist/system-prompt.tiering.test.d.ts.map +0 -1
- package/dist/system-prompt.tiering.test.js +0 -112
- package/dist/system-prompt.tiering.test.js.map +0 -1
- package/dist/tools/bash.test.d.ts +0 -2
- package/dist/tools/bash.test.d.ts.map +0 -1
- package/dist/tools/bash.test.js +0 -248
- package/dist/tools/bash.test.js.map +0 -1
- package/dist/tools/checkpoint-hook.test.d.ts +0 -2
- package/dist/tools/checkpoint-hook.test.d.ts.map +0 -1
- package/dist/tools/checkpoint-hook.test.js +0 -65
- package/dist/tools/checkpoint-hook.test.js.map +0 -1
- package/dist/tools/code-nav.test.d.ts +0 -2
- package/dist/tools/code-nav.test.d.ts.map +0 -1
- package/dist/tools/code-nav.test.js +0 -136
- package/dist/tools/code-nav.test.js.map +0 -1
- package/dist/tools/code-skeleton.test.d.ts +0 -2
- package/dist/tools/code-skeleton.test.d.ts.map +0 -1
- package/dist/tools/code-skeleton.test.js +0 -115
- package/dist/tools/code-skeleton.test.js.map +0 -1
- package/dist/tools/compress-integration.test.d.ts +0 -2
- package/dist/tools/compress-integration.test.d.ts.map +0 -1
- package/dist/tools/compress-integration.test.js +0 -59
- package/dist/tools/compress-integration.test.js.map +0 -1
- package/dist/tools/compress.test.d.ts +0 -2
- package/dist/tools/compress.test.d.ts.map +0 -1
- package/dist/tools/compress.test.js +0 -60
- package/dist/tools/compress.test.js.map +0 -1
- package/dist/tools/edit-diff.test.d.ts +0 -2
- package/dist/tools/edit-diff.test.d.ts.map +0 -1
- package/dist/tools/edit-diff.test.js +0 -329
- package/dist/tools/edit-diff.test.js.map +0 -1
- package/dist/tools/edit-robustness.test.d.ts +0 -2
- package/dist/tools/edit-robustness.test.d.ts.map +0 -1
- package/dist/tools/edit-robustness.test.js +0 -417
- package/dist/tools/edit-robustness.test.js.map +0 -1
- package/dist/tools/edit.test.d.ts +0 -2
- package/dist/tools/edit.test.d.ts.map +0 -1
- package/dist/tools/edit.test.js +0 -1037
- package/dist/tools/edit.test.js.map +0 -1
- package/dist/tools/exit-plan.test.d.ts +0 -2
- package/dist/tools/exit-plan.test.d.ts.map +0 -1
- package/dist/tools/exit-plan.test.js +0 -72
- package/dist/tools/exit-plan.test.js.map +0 -1
- package/dist/tools/generate-image.test.d.ts +0 -2
- package/dist/tools/generate-image.test.d.ts.map +0 -1
- package/dist/tools/generate-image.test.js +0 -240
- package/dist/tools/generate-image.test.js.map +0 -1
- package/dist/tools/grep-parity.test.d.ts +0 -2
- package/dist/tools/grep-parity.test.d.ts.map +0 -1
- package/dist/tools/grep-parity.test.js +0 -92
- package/dist/tools/grep-parity.test.js.map +0 -1
- package/dist/tools/grep-recall.test.d.ts +0 -2
- package/dist/tools/grep-recall.test.d.ts.map +0 -1
- package/dist/tools/grep-recall.test.js +0 -114
- package/dist/tools/grep-recall.test.js.map +0 -1
- package/dist/tools/grep-spawn.test.d.ts +0 -2
- package/dist/tools/grep-spawn.test.d.ts.map +0 -1
- package/dist/tools/grep-spawn.test.js +0 -66
- package/dist/tools/grep-spawn.test.js.map +0 -1
- package/dist/tools/grep.test.d.ts +0 -2
- package/dist/tools/grep.test.d.ts.map +0 -1
- package/dist/tools/grep.test.js +0 -82
- package/dist/tools/grep.test.js.map +0 -1
- package/dist/tools/html-extract.test.d.ts +0 -2
- package/dist/tools/html-extract.test.d.ts.map +0 -1
- package/dist/tools/html-extract.test.js +0 -60
- package/dist/tools/html-extract.test.js.map +0 -1
- package/dist/tools/index.test.d.ts +0 -2
- package/dist/tools/index.test.d.ts.map +0 -1
- package/dist/tools/index.test.js +0 -55
- package/dist/tools/index.test.js.map +0 -1
- package/dist/tools/overflow.test.d.ts +0 -2
- package/dist/tools/overflow.test.d.ts.map +0 -1
- package/dist/tools/overflow.test.js +0 -59
- package/dist/tools/overflow.test.js.map +0 -1
- package/dist/tools/path-utils.test.d.ts +0 -2
- package/dist/tools/path-utils.test.d.ts.map +0 -1
- package/dist/tools/path-utils.test.js +0 -110
- package/dist/tools/path-utils.test.js.map +0 -1
- package/dist/tools/pdf-extract.test.d.ts +0 -2
- package/dist/tools/pdf-extract.test.d.ts.map +0 -1
- package/dist/tools/pdf-extract.test.js +0 -15
- package/dist/tools/pdf-extract.test.js.map +0 -1
- package/dist/tools/plan-mode.test.d.ts +0 -2
- package/dist/tools/plan-mode.test.d.ts.map +0 -1
- package/dist/tools/plan-mode.test.js +0 -91
- package/dist/tools/plan-mode.test.js.map +0 -1
- package/dist/tools/read-only-bash.test.d.ts +0 -2
- package/dist/tools/read-only-bash.test.d.ts.map +0 -1
- package/dist/tools/read-only-bash.test.js +0 -96
- package/dist/tools/read-only-bash.test.js.map +0 -1
- package/dist/tools/read.test.d.ts +0 -2
- package/dist/tools/read.test.d.ts.map +0 -1
- package/dist/tools/read.test.js +0 -146
- package/dist/tools/read.test.js.map +0 -1
- package/dist/tools/screenshot.test.d.ts +0 -2
- package/dist/tools/screenshot.test.d.ts.map +0 -1
- package/dist/tools/screenshot.test.js +0 -145
- package/dist/tools/screenshot.test.js.map +0 -1
- package/dist/tools/search-code.test.d.ts +0 -2
- package/dist/tools/search-code.test.d.ts.map +0 -1
- package/dist/tools/search-code.test.js +0 -83
- package/dist/tools/search-code.test.js.map +0 -1
- package/dist/tools/source-path.test.d.ts +0 -2
- package/dist/tools/source-path.test.d.ts.map +0 -1
- package/dist/tools/source-path.test.js +0 -80
- package/dist/tools/source-path.test.js.map +0 -1
- package/dist/tools/subagent-control.test.d.ts +0 -2
- package/dist/tools/subagent-control.test.d.ts.map +0 -1
- package/dist/tools/subagent-control.test.js +0 -73
- package/dist/tools/subagent-control.test.js.map +0 -1
- package/dist/tools/subagent-shared.test.d.ts +0 -2
- package/dist/tools/subagent-shared.test.d.ts.map +0 -1
- package/dist/tools/subagent-shared.test.js +0 -83
- package/dist/tools/subagent-shared.test.js.map +0 -1
- package/dist/tools/subagent.test.d.ts +0 -2
- package/dist/tools/subagent.test.d.ts.map +0 -1
- package/dist/tools/subagent.test.js +0 -180
- package/dist/tools/subagent.test.js.map +0 -1
- package/dist/tools/task-send.test.d.ts +0 -2
- package/dist/tools/task-send.test.d.ts.map +0 -1
- package/dist/tools/task-send.test.js +0 -104
- package/dist/tools/task-send.test.js.map +0 -1
- package/dist/tools/tool-catalog.test.d.ts +0 -2
- package/dist/tools/tool-catalog.test.d.ts.map +0 -1
- package/dist/tools/tool-catalog.test.js +0 -124
- package/dist/tools/tool-catalog.test.js.map +0 -1
- package/dist/tools/tool-search.test.d.ts +0 -2
- package/dist/tools/tool-search.test.d.ts.map +0 -1
- package/dist/tools/tool-search.test.js +0 -127
- package/dist/tools/tool-search.test.js.map +0 -1
- package/dist/tools/tool-tiers.test.d.ts +0 -2
- package/dist/tools/tool-tiers.test.d.ts.map +0 -1
- package/dist/tools/tool-tiers.test.js +0 -48
- package/dist/tools/tool-tiers.test.js.map +0 -1
- package/dist/tools/truncate-utils.test.d.ts +0 -2
- package/dist/tools/truncate-utils.test.d.ts.map +0 -1
- package/dist/tools/truncate-utils.test.js +0 -93
- package/dist/tools/truncate-utils.test.js.map +0 -1
- package/dist/tools/truncate.test.d.ts +0 -2
- package/dist/tools/truncate.test.d.ts.map +0 -1
- package/dist/tools/truncate.test.js +0 -100
- package/dist/tools/truncate.test.js.map +0 -1
- package/dist/tools/web-fetch.test.d.ts +0 -2
- package/dist/tools/web-fetch.test.d.ts.map +0 -1
- package/dist/tools/web-fetch.test.js +0 -692
- package/dist/tools/web-fetch.test.js.map +0 -1
- package/dist/tools/web-search.test.d.ts +0 -2
- package/dist/tools/web-search.test.d.ts.map +0 -1
- package/dist/tools/web-search.test.js +0 -333
- package/dist/tools/web-search.test.js.map +0 -1
- package/dist/tools/write.test.d.ts +0 -2
- package/dist/tools/write.test.d.ts.map +0 -1
- package/dist/tools/write.test.js +0 -176
- package/dist/tools/write.test.js.map +0 -1
- package/dist/ui/anchor-pad-reclaim.test.d.ts +0 -2
- package/dist/ui/anchor-pad-reclaim.test.d.ts.map +0 -1
- package/dist/ui/anchor-pad-reclaim.test.js +0 -146
- package/dist/ui/anchor-pad-reclaim.test.js.map +0 -1
- package/dist/ui/app-items.test.d.ts +0 -2
- package/dist/ui/app-items.test.d.ts.map +0 -1
- package/dist/ui/app-items.test.js +0 -54
- package/dist/ui/app-items.test.js.map +0 -1
- package/dist/ui/app-state-persistence.test.d.ts +0 -2
- package/dist/ui/app-state-persistence.test.d.ts.map +0 -1
- package/dist/ui/app-state-persistence.test.js +0 -71
- package/dist/ui/app-state-persistence.test.js.map +0 -1
- package/dist/ui/assistant-stream-flush-parity.test.d.ts +0 -2
- package/dist/ui/assistant-stream-flush-parity.test.d.ts.map +0 -1
- package/dist/ui/assistant-stream-flush-parity.test.js +0 -85
- package/dist/ui/assistant-stream-flush-parity.test.js.map +0 -1
- package/dist/ui/atomic-flush-regression.test.d.ts +0 -2
- package/dist/ui/atomic-flush-regression.test.d.ts.map +0 -1
- package/dist/ui/atomic-flush-regression.test.js +0 -218
- package/dist/ui/atomic-flush-regression.test.js.map +0 -1
- package/dist/ui/chat-layout-pinning.test.d.ts +0 -2
- package/dist/ui/chat-layout-pinning.test.d.ts.map +0 -1
- package/dist/ui/chat-layout-pinning.test.js +0 -525
- package/dist/ui/chat-layout-pinning.test.js.map +0 -1
- package/dist/ui/components/ActivityIndicator.test.d.ts +0 -2
- package/dist/ui/components/ActivityIndicator.test.d.ts.map +0 -1
- package/dist/ui/components/ActivityIndicator.test.js +0 -40
- package/dist/ui/components/ActivityIndicator.test.js.map +0 -1
- package/dist/ui/components/AssistantMessage.test.d.ts +0 -2
- package/dist/ui/components/AssistantMessage.test.d.ts.map +0 -1
- package/dist/ui/components/AssistantMessage.test.js +0 -418
- package/dist/ui/components/AssistantMessage.test.js.map +0 -1
- package/dist/ui/components/Footer.test.d.ts +0 -2
- package/dist/ui/components/Footer.test.d.ts.map +0 -1
- package/dist/ui/components/Footer.test.js +0 -16
- package/dist/ui/components/Footer.test.js.map +0 -1
- package/dist/ui/components/InputArea.test.d.ts +0 -2
- package/dist/ui/components/InputArea.test.d.ts.map +0 -1
- package/dist/ui/components/InputArea.test.js +0 -95
- package/dist/ui/components/InputArea.test.js.map +0 -1
- package/dist/ui/components/PlanOverlay.test.d.ts +0 -2
- package/dist/ui/components/PlanOverlay.test.d.ts.map +0 -1
- package/dist/ui/components/PlanOverlay.test.js +0 -24
- package/dist/ui/components/PlanOverlay.test.js.map +0 -1
- package/dist/ui/components/StreamingArea.test.d.ts +0 -2
- package/dist/ui/components/StreamingArea.test.d.ts.map +0 -1
- package/dist/ui/components/StreamingArea.test.js +0 -18
- package/dist/ui/components/StreamingArea.test.js.map +0 -1
- package/dist/ui/components/UserMessage.test.d.ts +0 -2
- package/dist/ui/components/UserMessage.test.d.ts.map +0 -1
- package/dist/ui/components/UserMessage.test.js +0 -39
- package/dist/ui/components/UserMessage.test.js.map +0 -1
- package/dist/ui/components/themed-output.test.d.ts +0 -2
- package/dist/ui/components/themed-output.test.d.ts.map +0 -1
- package/dist/ui/components/themed-output.test.js +0 -111
- package/dist/ui/components/themed-output.test.js.map +0 -1
- package/dist/ui/footer-jump-regression.test.d.ts +0 -2
- package/dist/ui/footer-jump-regression.test.d.ts.map +0 -1
- package/dist/ui/footer-jump-regression.test.js +0 -224
- package/dist/ui/footer-jump-regression.test.js.map +0 -1
- package/dist/ui/footer-status-layout.test.d.ts +0 -2
- package/dist/ui/footer-status-layout.test.d.ts.map +0 -1
- package/dist/ui/footer-status-layout.test.js +0 -71
- package/dist/ui/footer-status-layout.test.js.map +0 -1
- package/dist/ui/frame-clip-regression.test.d.ts +0 -2
- package/dist/ui/frame-clip-regression.test.d.ts.map +0 -1
- package/dist/ui/frame-clip-regression.test.js +0 -215
- package/dist/ui/frame-clip-regression.test.js.map +0 -1
- package/dist/ui/hooks/stall-retry-duplicate.test.d.ts +0 -2
- package/dist/ui/hooks/stall-retry-duplicate.test.d.ts.map +0 -1
- package/dist/ui/hooks/stall-retry-duplicate.test.js +0 -94
- package/dist/ui/hooks/stall-retry-duplicate.test.js.map +0 -1
- package/dist/ui/hooks/useAgentLoop.test.d.ts +0 -2
- package/dist/ui/hooks/useAgentLoop.test.d.ts.map +0 -1
- package/dist/ui/hooks/useAgentLoop.test.js +0 -66
- package/dist/ui/hooks/useAgentLoop.test.js.map +0 -1
- package/dist/ui/hooks/useContextCompaction.test.d.ts +0 -2
- package/dist/ui/hooks/useContextCompaction.test.d.ts.map +0 -1
- package/dist/ui/hooks/useContextCompaction.test.js +0 -135
- package/dist/ui/hooks/useContextCompaction.test.js.map +0 -1
- package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.d.ts +0 -2
- package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.d.ts.map +0 -1
- package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.js +0 -81
- package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.js.map +0 -1
- package/dist/ui/hooks/useTranscriptHistory.test.d.ts +0 -2
- package/dist/ui/hooks/useTranscriptHistory.test.d.ts.map +0 -1
- package/dist/ui/hooks/useTranscriptHistory.test.js +0 -61
- package/dist/ui/hooks/useTranscriptHistory.test.js.map +0 -1
- package/dist/ui/hooks/useTranscriptScroll.test.d.ts +0 -2
- package/dist/ui/hooks/useTranscriptScroll.test.d.ts.map +0 -1
- package/dist/ui/hooks/useTranscriptScroll.test.js +0 -119
- package/dist/ui/hooks/useTranscriptScroll.test.js.map +0 -1
- package/dist/ui/live-area-clamp.test.d.ts +0 -2
- package/dist/ui/live-area-clamp.test.d.ts.map +0 -1
- package/dist/ui/live-area-clamp.test.js +0 -125
- package/dist/ui/live-area-clamp.test.js.map +0 -1
- package/dist/ui/live-area-height.test.d.ts +0 -2
- package/dist/ui/live-area-height.test.d.ts.map +0 -1
- package/dist/ui/live-area-height.test.js +0 -76
- package/dist/ui/live-area-height.test.js.map +0 -1
- package/dist/ui/live-frame-height.test.d.ts +0 -2
- package/dist/ui/live-frame-height.test.d.ts.map +0 -1
- package/dist/ui/live-frame-height.test.js +0 -116
- package/dist/ui/live-frame-height.test.js.map +0 -1
- package/dist/ui/live-item-flush.test.d.ts +0 -2
- package/dist/ui/live-item-flush.test.d.ts.map +0 -1
- package/dist/ui/live-item-flush.test.js +0 -437
- package/dist/ui/live-item-flush.test.js.map +0 -1
- package/dist/ui/long-prompt-regression-harness.test.d.ts +0 -2
- package/dist/ui/long-prompt-regression-harness.test.d.ts.map +0 -1
- package/dist/ui/long-prompt-regression-harness.test.js +0 -195
- package/dist/ui/long-prompt-regression-harness.test.js.map +0 -1
- package/dist/ui/plan-overlay.test.d.ts +0 -2
- package/dist/ui/plan-overlay.test.d.ts.map +0 -1
- package/dist/ui/plan-overlay.test.js +0 -305
- package/dist/ui/plan-overlay.test.js.map +0 -1
- package/dist/ui/queued-message.test.d.ts +0 -2
- package/dist/ui/queued-message.test.d.ts.map +0 -1
- package/dist/ui/queued-message.test.js +0 -172
- package/dist/ui/queued-message.test.js.map +0 -1
- package/dist/ui/render.test.d.ts +0 -2
- package/dist/ui/render.test.d.ts.map +0 -1
- package/dist/ui/render.test.js +0 -42
- package/dist/ui/render.test.js.map +0 -1
- package/dist/ui/scroll-stabilization.test.d.ts +0 -2
- package/dist/ui/scroll-stabilization.test.d.ts.map +0 -1
- package/dist/ui/scroll-stabilization.test.js +0 -64
- package/dist/ui/scroll-stabilization.test.js.map +0 -1
- package/dist/ui/slash-command-images.test.d.ts +0 -2
- package/dist/ui/slash-command-images.test.d.ts.map +0 -1
- package/dist/ui/slash-command-images.test.js +0 -110
- package/dist/ui/slash-command-images.test.js.map +0 -1
- package/dist/ui/startup-banner-order.test.d.ts +0 -2
- package/dist/ui/startup-banner-order.test.d.ts.map +0 -1
- package/dist/ui/startup-banner-order.test.js +0 -105
- package/dist/ui/startup-banner-order.test.js.map +0 -1
- package/dist/ui/stores/transcript-scroll-store.test.d.ts +0 -2
- package/dist/ui/stores/transcript-scroll-store.test.d.ts.map +0 -1
- package/dist/ui/stores/transcript-scroll-store.test.js +0 -73
- package/dist/ui/stores/transcript-scroll-store.test.js.map +0 -1
- package/dist/ui/streaming-flush-bounce.test.d.ts +0 -2
- package/dist/ui/streaming-flush-bounce.test.d.ts.map +0 -1
- package/dist/ui/streaming-flush-bounce.test.js +0 -177
- package/dist/ui/streaming-flush-bounce.test.js.map +0 -1
- package/dist/ui/submit-boundary-gap.test.d.ts +0 -2
- package/dist/ui/submit-boundary-gap.test.d.ts.map +0 -1
- package/dist/ui/submit-boundary-gap.test.js +0 -180
- package/dist/ui/submit-boundary-gap.test.js.map +0 -1
- package/dist/ui/terminal-history-repaint.test.d.ts +0 -2
- package/dist/ui/terminal-history-repaint.test.d.ts.map +0 -1
- package/dist/ui/terminal-history-repaint.test.js +0 -73
- package/dist/ui/terminal-history-repaint.test.js.map +0 -1
- package/dist/ui/terminal-history-retry-dedup.test.d.ts +0 -2
- package/dist/ui/terminal-history-retry-dedup.test.d.ts.map +0 -1
- package/dist/ui/terminal-history-retry-dedup.test.js +0 -61
- package/dist/ui/terminal-history-retry-dedup.test.js.map +0 -1
- package/dist/ui/terminal-history.test.d.ts +0 -2
- package/dist/ui/terminal-history.test.d.ts.map +0 -1
- package/dist/ui/terminal-history.test.js +0 -557
- package/dist/ui/terminal-history.test.js.map +0 -1
- package/dist/ui/thinking-level-cycle.test.d.ts +0 -2
- package/dist/ui/thinking-level-cycle.test.d.ts.map +0 -1
- package/dist/ui/thinking-level-cycle.test.js +0 -45
- package/dist/ui/thinking-level-cycle.test.js.map +0 -1
- package/dist/ui/tool-group-summary.test.d.ts +0 -2
- package/dist/ui/tool-group-summary.test.d.ts.map +0 -1
- package/dist/ui/tool-group-summary.test.js +0 -79
- package/dist/ui/tool-group-summary.test.js.map +0 -1
- package/dist/ui/transcript/spacing.test.d.ts +0 -2
- package/dist/ui/transcript/spacing.test.d.ts.map +0 -1
- package/dist/ui/transcript/spacing.test.js +0 -187
- package/dist/ui/transcript/spacing.test.js.map +0 -1
- package/dist/ui/transcript/transcript-lines.test.d.ts +0 -2
- package/dist/ui/transcript/transcript-lines.test.d.ts.map +0 -1
- package/dist/ui/transcript/transcript-lines.test.js +0 -76
- package/dist/ui/transcript/transcript-lines.test.js.map +0 -1
- package/dist/ui/transcript-viewport-pinning.test.d.ts +0 -2
- package/dist/ui/transcript-viewport-pinning.test.d.ts.map +0 -1
- package/dist/ui/transcript-viewport-pinning.test.js +0 -148
- package/dist/ui/transcript-viewport-pinning.test.js.map +0 -1
- package/dist/ui/tui-history-parity.test.d.ts +0 -2
- package/dist/ui/tui-history-parity.test.d.ts.map +0 -1
- package/dist/ui/tui-history-parity.test.js +0 -369
- package/dist/ui/tui-history-parity.test.js.map +0 -1
- package/dist/ui/tui-simulation.test.d.ts +0 -2
- package/dist/ui/tui-simulation.test.d.ts.map +0 -1
- package/dist/ui/tui-simulation.test.js +0 -145
- package/dist/ui/tui-simulation.test.js.map +0 -1
- package/dist/ui/tui-terminal-recorder.test.d.ts +0 -2
- package/dist/ui/tui-terminal-recorder.test.d.ts.map +0 -1
- package/dist/ui/tui-terminal-recorder.test.js +0 -134
- package/dist/ui/tui-terminal-recorder.test.js.map +0 -1
- package/dist/ui/utils/assistant-stream-split.test.d.ts +0 -2
- package/dist/ui/utils/assistant-stream-split.test.d.ts.map +0 -1
- package/dist/ui/utils/assistant-stream-split.test.js +0 -74
- package/dist/ui/utils/assistant-stream-split.test.js.map +0 -1
- package/dist/ui/utils/markdown-renderer.test.d.ts +0 -2
- package/dist/ui/utils/markdown-renderer.test.d.ts.map +0 -1
- package/dist/ui/utils/markdown-renderer.test.js +0 -63
- package/dist/ui/utils/markdown-renderer.test.js.map +0 -1
- package/dist/ui/utils/table-text.test.d.ts +0 -2
- package/dist/ui/utils/table-text.test.d.ts.map +0 -1
- package/dist/ui/utils/table-text.test.js +0 -202
- package/dist/ui/utils/table-text.test.js.map +0 -1
- package/dist/ui/utils/terminal-graphics.test.d.ts +0 -2
- package/dist/ui/utils/terminal-graphics.test.d.ts.map +0 -1
- package/dist/ui/utils/terminal-graphics.test.js +0 -100
- package/dist/ui/utils/terminal-graphics.test.js.map +0 -1
- package/dist/ui/utils/terminal-input.test.d.ts +0 -2
- package/dist/ui/utils/terminal-input.test.d.ts.map +0 -1
- package/dist/ui/utils/terminal-input.test.js +0 -15
- package/dist/ui/utils/terminal-input.test.js.map +0 -1
- package/dist/ui/utils/text-utils.test.d.ts +0 -2
- package/dist/ui/utils/text-utils.test.d.ts.map +0 -1
- package/dist/ui/utils/text-utils.test.js +0 -31
- package/dist/ui/utils/text-utils.test.js.map +0 -1
- package/dist/utils/git.test.d.ts +0 -2
- package/dist/utils/git.test.d.ts.map +0 -1
- package/dist/utils/git.test.js +0 -36
- package/dist/utils/git.test.js.map +0 -1
- package/dist/utils/github.test.d.ts +0 -2
- package/dist/utils/github.test.d.ts.map +0 -1
- package/dist/utils/github.test.js +0 -23
- package/dist/utils/github.test.js.map +0 -1
- package/dist/utils/http-body.test.d.ts +0 -2
- package/dist/utils/http-body.test.d.ts.map +0 -1
- package/dist/utils/http-body.test.js +0 -68
- package/dist/utils/http-body.test.js.map +0 -1
- package/dist/utils/image.test.d.ts +0 -2
- package/dist/utils/image.test.d.ts.map +0 -1
- package/dist/utils/image.test.js +0 -139
- package/dist/utils/image.test.js.map +0 -1
- package/dist/utils/plan-steps.test.d.ts +0 -2
- package/dist/utils/plan-steps.test.d.ts.map +0 -1
- package/dist/utils/plan-steps.test.js +0 -159
- package/dist/utils/plan-steps.test.js.map +0 -1
- package/dist/utils/process.test.d.ts +0 -2
- package/dist/utils/process.test.d.ts.map +0 -1
- package/dist/utils/process.test.js +0 -42
- package/dist/utils/process.test.js.map +0 -1
- package/dist/utils/text.test.d.ts +0 -2
- package/dist/utils/text.test.d.ts.map +0 -1
- package/dist/utils/text.test.js +0 -91
- package/dist/utils/text.test.js.map +0 -1
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import os from "node:os";
|
|
3
|
-
import { buildKenDigest, buildKenAutopilotContext, buildKenAutopilotPlanContext, AUTOPILOT_REVIEW_INSTRUCTION, AUTOPILOT_PLAN_REVIEW_INSTRUCTION, KEN_RECENT_MESSAGE_LIMIT, INJECTED_PROMPT_LABEL, } from "./ken-context.js";
|
|
4
|
-
import { USER_INSTRUCTIONS_HEADER } from "./autopilot-gate.js";
|
|
5
|
-
import { PROMPT_COMMANDS } from "./prompt-commands.js";
|
|
6
|
-
import { createTools } from "../tools/index.js";
|
|
7
|
-
// Mirror the sidecar's Ken allow-list so the filter test tracks the real set.
|
|
8
|
-
const KEN_ALLOWED_TOOLS = [
|
|
9
|
-
"read",
|
|
10
|
-
"grep",
|
|
11
|
-
"find",
|
|
12
|
-
"ls",
|
|
13
|
-
"source_path",
|
|
14
|
-
"web_fetch",
|
|
15
|
-
"web_search",
|
|
16
|
-
"screenshot",
|
|
17
|
-
];
|
|
18
|
-
const KEN_ALLOWED_MCP_SERVERS = ["kencode-search"];
|
|
19
|
-
// Mirror of AgentSession.isToolAllowed (which is private): a tool passes when
|
|
20
|
-
// its name is in the allow-list, OR it's an mcp__<server>__<tool> whose server
|
|
21
|
-
// is whitelisted. Kept in lockstep so this test tracks the real filter.
|
|
22
|
-
function isToolAllowed(name) {
|
|
23
|
-
if (KEN_ALLOWED_TOOLS.includes(name))
|
|
24
|
-
return true;
|
|
25
|
-
if (name.startsWith("mcp__")) {
|
|
26
|
-
const server = name.slice("mcp__".length).split("__")[0];
|
|
27
|
-
return KEN_ALLOWED_MCP_SERVERS.includes(server);
|
|
28
|
-
}
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
describe("Ken allowedTools filter", () => {
|
|
32
|
-
it("excludes every mutating tool from the Ken set", async () => {
|
|
33
|
-
const { tools, processManager, lspManager } = await createTools(os.tmpdir(), {
|
|
34
|
-
lspDiagnostics: false,
|
|
35
|
-
});
|
|
36
|
-
try {
|
|
37
|
-
const kenTools = tools.filter((t) => isToolAllowed(t.name)).map((t) => t.name);
|
|
38
|
-
// The mutating / orchestration tools must NOT survive the filter.
|
|
39
|
-
for (const banned of ["write", "edit", "bash", "tasks", "subagent", "generate_image"]) {
|
|
40
|
-
expect(kenTools).not.toContain(banned);
|
|
41
|
-
}
|
|
42
|
-
// The read-only research/vision tools must survive.
|
|
43
|
-
for (const allowed of ["read", "grep", "find", "ls", "screenshot"]) {
|
|
44
|
-
expect(kenTools).toContain(allowed);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
finally {
|
|
48
|
-
processManager.shutdownAll();
|
|
49
|
-
lspManager?.shutdownAll();
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
it("allows whitelisted kencode-search MCP tools but blocks other MCP tools", () => {
|
|
53
|
-
// kencode-search is Ken's research server: all its tools pass.
|
|
54
|
-
expect(isToolAllowed("mcp__kencode-search__searchCode")).toBe(true);
|
|
55
|
-
expect(isToolAllowed("mcp__kencode-search__referenceSources")).toBe(true);
|
|
56
|
-
expect(isToolAllowed("mcp__kencode-search__discoverRepos")).toBe(true);
|
|
57
|
-
// A non-whitelisted MCP server (e.g. a user-configured one) is blocked,
|
|
58
|
-
// even if it exposes an innocuous-looking name.
|
|
59
|
-
expect(isToolAllowed("mcp__some-other-server__searchCode")).toBe(false);
|
|
60
|
-
expect(isToolAllowed("mcp__filesystem__write_file")).toBe(false);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
describe("buildKenDigest", () => {
|
|
64
|
-
const base = {
|
|
65
|
-
question: "what next?",
|
|
66
|
-
cwd: "/tmp/proj",
|
|
67
|
-
gitBranch: "main",
|
|
68
|
-
platform: "darwin",
|
|
69
|
-
};
|
|
70
|
-
it("includes the env and the question", () => {
|
|
71
|
-
const digest = buildKenDigest({ ...base, messages: [] });
|
|
72
|
-
expect(digest).toContain("/tmp/proj");
|
|
73
|
-
expect(digest).toContain("main");
|
|
74
|
-
expect(digest).toContain("what next?");
|
|
75
|
-
expect(digest).toContain("(no conversation yet)");
|
|
76
|
-
});
|
|
77
|
-
it("caps recent activity at the last-N messages", () => {
|
|
78
|
-
const messages = [];
|
|
79
|
-
for (let i = 0; i < KEN_RECENT_MESSAGE_LIMIT + 10; i++) {
|
|
80
|
-
messages.push({ role: "user", content: `msg-${i}` });
|
|
81
|
-
}
|
|
82
|
-
const digest = buildKenDigest({ ...base, messages });
|
|
83
|
-
// The earliest messages fall outside the cap.
|
|
84
|
-
expect(digest).not.toContain("msg-0");
|
|
85
|
-
expect(digest).not.toContain("msg-5");
|
|
86
|
-
// The newest message is kept.
|
|
87
|
-
expect(digest).toContain(`msg-${KEN_RECENT_MESSAGE_LIMIT + 9}`);
|
|
88
|
-
});
|
|
89
|
-
it("strips image blocks from user messages", () => {
|
|
90
|
-
const messages = [
|
|
91
|
-
{
|
|
92
|
-
role: "user",
|
|
93
|
-
content: [
|
|
94
|
-
{ type: "text", text: "look at this" },
|
|
95
|
-
{ type: "image", mediaType: "image/png", data: "AAAABBBBCCCC" },
|
|
96
|
-
],
|
|
97
|
-
},
|
|
98
|
-
];
|
|
99
|
-
const digest = buildKenDigest({ ...base, messages });
|
|
100
|
-
expect(digest).toContain("look at this");
|
|
101
|
-
expect(digest).not.toContain("AAAABBBBCCCC");
|
|
102
|
-
});
|
|
103
|
-
it("buildKenAutopilotContext injects the fixed review instruction as the question", () => {
|
|
104
|
-
const messages = [
|
|
105
|
-
{ role: "user", content: "add a login form" },
|
|
106
|
-
{ role: "assistant", content: "Added the form." },
|
|
107
|
-
];
|
|
108
|
-
const digest = buildKenAutopilotContext({
|
|
109
|
-
cwd: base.cwd,
|
|
110
|
-
gitBranch: base.gitBranch,
|
|
111
|
-
platform: base.platform,
|
|
112
|
-
messages,
|
|
113
|
-
});
|
|
114
|
-
// The transcript is still inlined (Ken reviews it) ...
|
|
115
|
-
expect(digest).toContain("add a login form");
|
|
116
|
-
expect(digest).toContain("Added the form.");
|
|
117
|
-
// ... and the trailing question is the fixed autopilot instruction, not a
|
|
118
|
-
// user-typed one.
|
|
119
|
-
expect(digest).toContain(AUTOPILOT_REVIEW_INSTRUCTION);
|
|
120
|
-
expect(digest).toContain("PROMPT");
|
|
121
|
-
expect(digest).toContain("ALL_CLEAR");
|
|
122
|
-
expect(digest).toContain("HUMAN");
|
|
123
|
-
});
|
|
124
|
-
it("feeds only harness-classified command outcomes into verification evidence", () => {
|
|
125
|
-
const messages = [
|
|
126
|
-
{
|
|
127
|
-
role: "assistant",
|
|
128
|
-
content: [
|
|
129
|
-
{ type: "tool_call", id: "pass", name: "bash", args: { command: "tsc --noEmit" } },
|
|
130
|
-
],
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
role: "tool",
|
|
134
|
-
content: [{ type: "tool_result", toolCallId: "pass", content: "Exit code: 0\n" }],
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
role: "assistant",
|
|
138
|
-
content: [
|
|
139
|
-
{
|
|
140
|
-
type: "tool_call",
|
|
141
|
-
id: "watch",
|
|
142
|
-
name: "bash",
|
|
143
|
-
args: { command: "vitest --watch" },
|
|
144
|
-
},
|
|
145
|
-
{ type: "tool_call", id: "status", name: "bash", args: { command: "git status" } },
|
|
146
|
-
],
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
role: "tool",
|
|
150
|
-
content: [
|
|
151
|
-
{ type: "tool_result", toolCallId: "watch", content: "Exit code: 0\n" },
|
|
152
|
-
{ type: "tool_result", toolCallId: "status", content: "Exit code: 0\n" },
|
|
153
|
-
],
|
|
154
|
-
},
|
|
155
|
-
];
|
|
156
|
-
const digest = buildKenAutopilotContext({ ...base, messages });
|
|
157
|
-
const evidence = digest
|
|
158
|
-
.split("## Harness-classified verification evidence")[1]
|
|
159
|
-
.split("## They just asked you")[0];
|
|
160
|
-
expect(evidence).toContain("PASSED: `tsc --noEmit`");
|
|
161
|
-
expect(evidence).toContain("REJECTED: `vitest --watch`");
|
|
162
|
-
expect(evidence).not.toContain("git status");
|
|
163
|
-
});
|
|
164
|
-
it("autopilot review instruction separates true human decisions from safe implied follow-ups", () => {
|
|
165
|
-
// GG Coder ending with a question/options is HUMAN only when it needs a
|
|
166
|
-
// real user-level decision. Permission to continue safe work implied by the
|
|
167
|
-
// original ask should become a PROMPT, not a blocker. Ken must also be told
|
|
168
|
-
// injected lines are his own — these are leak regressions.
|
|
169
|
-
expect(AUTOPILOT_REVIEW_INSTRUCTION).toContain("asking the user a question");
|
|
170
|
-
expect(AUTOPILOT_REVIEW_INSTRUCTION).toContain("HUMAN only when");
|
|
171
|
-
expect(AUTOPILOT_REVIEW_INSTRUCTION).toContain("actual user-level decision");
|
|
172
|
-
expect(AUTOPILOT_REVIEW_INSTRUCTION).toContain("mechanically implied by the user's original ask");
|
|
173
|
-
expect(AUTOPILOT_REVIEW_INSTRUCTION).toContain("safe for GG Coder to do without new information");
|
|
174
|
-
expect(AUTOPILOT_REVIEW_INSTRUCTION).toContain("use PROMPT with the next concrete follow-up");
|
|
175
|
-
expect(AUTOPILOT_REVIEW_INSTRUCTION).toContain("Original user request");
|
|
176
|
-
expect(AUTOPILOT_REVIEW_INSTRUCTION).toContain("Ken autopilot (injected)");
|
|
177
|
-
});
|
|
178
|
-
it("buildKenAutopilotPlanContext inlines the plan section + plan instruction", () => {
|
|
179
|
-
const messages = [
|
|
180
|
-
{ role: "user", content: "add OAuth login" },
|
|
181
|
-
{ role: "assistant", content: "Plan drafted." },
|
|
182
|
-
];
|
|
183
|
-
const digest = buildKenAutopilotPlanContext({
|
|
184
|
-
cwd: base.cwd,
|
|
185
|
-
gitBranch: base.gitBranch,
|
|
186
|
-
platform: base.platform,
|
|
187
|
-
messages,
|
|
188
|
-
originalRequest: "add OAuth login",
|
|
189
|
-
planContent: "# OAuth plan\n\n1. Add provider config\n2. Wire callback route",
|
|
190
|
-
});
|
|
191
|
-
// The plan itself is inlined under its own section …
|
|
192
|
-
expect(digest).toContain("## Plan under review");
|
|
193
|
-
expect(digest).toContain("Wire callback route");
|
|
194
|
-
// … before the trailing question, which is the PLAN instruction (not the
|
|
195
|
-
// work-review one).
|
|
196
|
-
expect(digest.indexOf("## Plan under review")).toBeLessThan(digest.indexOf("## They just asked you"));
|
|
197
|
-
expect(digest).toContain(AUTOPILOT_PLAN_REVIEW_INSTRUCTION);
|
|
198
|
-
expect(digest).not.toContain(AUTOPILOT_REVIEW_INSTRUCTION);
|
|
199
|
-
});
|
|
200
|
-
it("buildKenAutopilotPlanContext caps a pathological plan", () => {
|
|
201
|
-
const digest = buildKenAutopilotPlanContext({
|
|
202
|
-
cwd: base.cwd,
|
|
203
|
-
gitBranch: base.gitBranch,
|
|
204
|
-
platform: base.platform,
|
|
205
|
-
messages: [],
|
|
206
|
-
planContent: "x".repeat(10_000),
|
|
207
|
-
});
|
|
208
|
-
const section = digest.slice(digest.indexOf("## Plan under review"));
|
|
209
|
-
expect(section).toContain("more chars]");
|
|
210
|
-
expect(section.length).toBeLessThan(9000);
|
|
211
|
-
});
|
|
212
|
-
it("plan review instruction names the three allowed verdicts and forbids IGNORE", () => {
|
|
213
|
-
expect(AUTOPILOT_PLAN_REVIEW_INSTRUCTION).toContain("ALL_CLEAR");
|
|
214
|
-
expect(AUTOPILOT_PLAN_REVIEW_INSTRUCTION).toContain("PROMPT");
|
|
215
|
-
expect(AUTOPILOT_PLAN_REVIEW_INSTRUCTION).toContain("HUMAN");
|
|
216
|
-
expect(AUTOPILOT_PLAN_REVIEW_INSTRUCTION).toContain("Never IGNORE a plan");
|
|
217
|
-
expect(AUTOPILOT_PLAN_REVIEW_INSTRUCTION).toContain("Plan under review");
|
|
218
|
-
});
|
|
219
|
-
it("uses the latest compaction summary as the story-so-far base", () => {
|
|
220
|
-
const messages = [
|
|
221
|
-
{ role: "user", content: "old turn that should be summarized away" },
|
|
222
|
-
{ role: "user", content: "[Previous conversation summary]\n\nWe scaffolded the app." },
|
|
223
|
-
{ role: "assistant", content: "Added the header." },
|
|
224
|
-
];
|
|
225
|
-
const digest = buildKenDigest({ ...base, messages });
|
|
226
|
-
expect(digest).toContain("Story so far");
|
|
227
|
-
expect(digest).toContain("We scaffolded the app.");
|
|
228
|
-
// Pre-summary messages are not echoed into recent activity.
|
|
229
|
-
expect(digest).not.toContain("old turn that should be summarized away");
|
|
230
|
-
// Post-summary activity is kept.
|
|
231
|
-
expect(digest).toContain("Added the header.");
|
|
232
|
-
});
|
|
233
|
-
});
|
|
234
|
-
describe("buildKenDigest — original request pinning", () => {
|
|
235
|
-
const base = {
|
|
236
|
-
question: "review it",
|
|
237
|
-
cwd: "/tmp/proj",
|
|
238
|
-
gitBranch: "main",
|
|
239
|
-
platform: "darwin",
|
|
240
|
-
};
|
|
241
|
-
it("pins the original request in its own section", () => {
|
|
242
|
-
const digest = buildKenDigest({
|
|
243
|
-
...base,
|
|
244
|
-
messages: [],
|
|
245
|
-
originalRequest: "build a login form with validation",
|
|
246
|
-
});
|
|
247
|
-
expect(digest).toContain("## Original user request (the turn under review)");
|
|
248
|
-
expect(digest).toContain("build a login form with validation");
|
|
249
|
-
});
|
|
250
|
-
it("keeps the original request even when it scrolled out of recent activity", () => {
|
|
251
|
-
// The drift bug: multi-round cycles push the real ask out of the rolling
|
|
252
|
-
// 20-message window. The pinned section must survive that.
|
|
253
|
-
const messages = [{ role: "user", content: "THE-REAL-ASK: add dark mode" }];
|
|
254
|
-
for (let i = 0; i < KEN_RECENT_MESSAGE_LIMIT + 5; i++) {
|
|
255
|
-
messages.push({ role: "assistant", content: `working… step ${i}` });
|
|
256
|
-
}
|
|
257
|
-
const digest = buildKenDigest({
|
|
258
|
-
...base,
|
|
259
|
-
messages,
|
|
260
|
-
originalRequest: "THE-REAL-ASK: add dark mode",
|
|
261
|
-
});
|
|
262
|
-
// Scrolled out of recent activity…
|
|
263
|
-
expect(digest.split("## Original user request")[0]).not.toContain("THE-REAL-ASK");
|
|
264
|
-
// …but pinned in its own section.
|
|
265
|
-
expect(digest.split("## Original user request")[1]).toContain("THE-REAL-ASK: add dark mode");
|
|
266
|
-
});
|
|
267
|
-
it("gives the pinned request far more room than a recent-activity line", () => {
|
|
268
|
-
// Recent-activity lines truncate at 1500 chars; the ask under review must
|
|
269
|
-
// not be judged against a mid-sentence cut, so its cap is 4000.
|
|
270
|
-
const longAsk = "requirement " + "x".repeat(3000);
|
|
271
|
-
const digest = buildKenDigest({ ...base, messages: [], originalRequest: longAsk });
|
|
272
|
-
const pinned = digest.split("## Original user request")[1];
|
|
273
|
-
expect(pinned).toContain("x".repeat(3000));
|
|
274
|
-
});
|
|
275
|
-
it("omits the section when there is no original request (chat Ken)", () => {
|
|
276
|
-
const digest = buildKenDigest({ ...base, messages: [] });
|
|
277
|
-
expect(digest).not.toContain("## Original user request");
|
|
278
|
-
});
|
|
279
|
-
});
|
|
280
|
-
describe("buildKenDigest — injected-prompt labeling", () => {
|
|
281
|
-
const base = {
|
|
282
|
-
question: "review it",
|
|
283
|
-
cwd: "/tmp/proj",
|
|
284
|
-
gitBranch: null,
|
|
285
|
-
platform: "darwin",
|
|
286
|
-
};
|
|
287
|
-
it("labels autopilot-injected prompts as Ken's, never **User:**", () => {
|
|
288
|
-
const injected = "Fix the failing auth test and prove it by running it.";
|
|
289
|
-
const messages = [
|
|
290
|
-
{ role: "user", content: "add auth" },
|
|
291
|
-
{ role: "assistant", content: "Added auth." },
|
|
292
|
-
{ role: "user", content: injected },
|
|
293
|
-
{ role: "assistant", content: "Fixed the test." },
|
|
294
|
-
];
|
|
295
|
-
const digest = buildKenDigest({ ...base, messages, injectedPrompts: [injected] });
|
|
296
|
-
expect(digest).toContain(`${INJECTED_PROMPT_LABEL} ${injected}`);
|
|
297
|
-
expect(digest).not.toContain(`**User:** ${injected}`);
|
|
298
|
-
// Real user asks keep the normal label.
|
|
299
|
-
expect(digest).toContain("**User:** add auth");
|
|
300
|
-
});
|
|
301
|
-
it("matches injected prompts through whitespace drift", () => {
|
|
302
|
-
const injected = "Fix the failing test.";
|
|
303
|
-
const messages = [{ role: "user", content: ` ${injected} ` }];
|
|
304
|
-
const digest = buildKenDigest({ ...base, messages, injectedPrompts: [injected] });
|
|
305
|
-
expect(digest).toContain(INJECTED_PROMPT_LABEL);
|
|
306
|
-
});
|
|
307
|
-
});
|
|
308
|
-
describe("buildKenDigest — workflow-command labeling", () => {
|
|
309
|
-
const base = {
|
|
310
|
-
question: "review it",
|
|
311
|
-
cwd: "/tmp/proj",
|
|
312
|
-
gitBranch: null,
|
|
313
|
-
platform: "darwin",
|
|
314
|
-
};
|
|
315
|
-
const compare = PROMPT_COMMANDS.find((c) => c.name === "compare");
|
|
316
|
-
it("renders an expanded template as a short command note, not a user ask", () => {
|
|
317
|
-
// AgentSession.prompt() stores the EXPANDED template as a plain user
|
|
318
|
-
// message; the digest must not present 400 template lines as **User:**.
|
|
319
|
-
const messages = [
|
|
320
|
-
{ role: "user", content: compare.prompt },
|
|
321
|
-
{ role: "assistant", content: "Compared against 12 repos, all aligned." },
|
|
322
|
-
];
|
|
323
|
-
const digest = buildKenDigest({ ...base, messages, workflowCommands: PROMPT_COMMANDS });
|
|
324
|
-
expect(digest).toContain("**User:** [ran workflow command /compare]");
|
|
325
|
-
// The template body itself never leaks into the digest.
|
|
326
|
-
expect(digest).not.toContain("Compare the code you just created or modified");
|
|
327
|
-
});
|
|
328
|
-
it("keeps the user's own args from an expanded command", () => {
|
|
329
|
-
const messages = [
|
|
330
|
-
{ role: "user", content: `${compare.prompt}${USER_INSTRUCTIONS_HEADER}only src/auth.ts` },
|
|
331
|
-
];
|
|
332
|
-
const digest = buildKenDigest({ ...base, messages, workflowCommands: PROMPT_COMMANDS });
|
|
333
|
-
expect(digest).toContain("[ran workflow command /compare]");
|
|
334
|
-
expect(digest).toContain("only src/auth.ts");
|
|
335
|
-
});
|
|
336
|
-
it("leaves ordinary user text untouched when specs are provided", () => {
|
|
337
|
-
const messages = [{ role: "user", content: "please compare my two branches" }];
|
|
338
|
-
const digest = buildKenDigest({ ...base, messages, workflowCommands: PROMPT_COMMANDS });
|
|
339
|
-
expect(digest).toContain("**User:** please compare my two branches");
|
|
340
|
-
});
|
|
341
|
-
});
|
|
342
|
-
//# sourceMappingURL=ken-context.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ken-context.test.js","sourceRoot":"","sources":["../../src/core/ken-context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ken-model.test.d.ts","sourceRoot":"","sources":["../../src/core/ken-model.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { validateKenModelPref, effectiveKenModel } from "./ken-model.js";
|
|
3
|
-
const REGISTRY = new Set(["claude-opus-5", "gpt-5.5", "kimi-k2.7-code"]);
|
|
4
|
-
const CONNECTED = new Set(["anthropic", "openai"]);
|
|
5
|
-
const opts = {
|
|
6
|
-
modelExists: (id) => REGISTRY.has(id),
|
|
7
|
-
providerConnected: (p) => CONNECTED.has(p),
|
|
8
|
-
};
|
|
9
|
-
describe("validateKenModelPref", () => {
|
|
10
|
-
it("passes a valid pref through", () => {
|
|
11
|
-
const pref = { provider: "openai", model: "gpt-5.5" };
|
|
12
|
-
expect(validateKenModelPref(pref, opts)).toEqual(pref);
|
|
13
|
-
});
|
|
14
|
-
it("nulls when the model left the registry (stale persisted pin)", () => {
|
|
15
|
-
expect(validateKenModelPref({ provider: "openai", model: "gpt-4-turbo" }, opts)).toBeNull();
|
|
16
|
-
});
|
|
17
|
-
it("nulls when the provider is no longer connected (logged out)", () => {
|
|
18
|
-
expect(validateKenModelPref({ provider: "moonshot", model: "kimi-k2.7-code" }, opts)).toBeNull();
|
|
19
|
-
});
|
|
20
|
-
it("nulls absent / malformed prefs", () => {
|
|
21
|
-
expect(validateKenModelPref(null, opts)).toBeNull();
|
|
22
|
-
expect(validateKenModelPref(undefined, opts)).toBeNull();
|
|
23
|
-
expect(validateKenModelPref({ provider: "openai", model: "" }, opts)).toBeNull();
|
|
24
|
-
expect(validateKenModelPref({ provider: "", model: "gpt-5.5" }, opts)).toBeNull();
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
describe("effectiveKenModel", () => {
|
|
28
|
-
const build = { provider: "anthropic", model: "claude-opus-5" };
|
|
29
|
-
it("follows the build session when no override is set", () => {
|
|
30
|
-
expect(effectiveKenModel(null, build)).toEqual({
|
|
31
|
-
kenProvider: "anthropic",
|
|
32
|
-
kenModel: "claude-opus-5",
|
|
33
|
-
kenModelOverride: false,
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
it("uses the pin when set, ignoring the build model", () => {
|
|
37
|
-
expect(effectiveKenModel({ provider: "openai", model: "gpt-5.5" }, build)).toEqual({
|
|
38
|
-
kenProvider: "openai",
|
|
39
|
-
kenModel: "gpt-5.5",
|
|
40
|
-
kenModelOverride: true,
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
it("pin identical to the build model still reports override=true (it survives GG switches)", () => {
|
|
44
|
-
expect(effectiveKenModel({ provider: "anthropic", model: "claude-opus-5" }, build)).toEqual({
|
|
45
|
-
kenProvider: "anthropic",
|
|
46
|
-
kenModel: "claude-opus-5",
|
|
47
|
-
kenModelOverride: true,
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
//# sourceMappingURL=ken-model.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ken-model.test.js","sourceRoot":"","sources":["../../src/core/ken-model.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ken-prompt.test.d.ts","sourceRoot":"","sources":["../../src/core/ken-prompt.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeAll } from "vitest";
|
|
2
|
-
import os from "node:os";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import fs from "node:fs/promises";
|
|
5
|
-
import { buildKenSystemPrompt, buildKenAutopilotSystemPrompt } from "./ken-prompt.js";
|
|
6
|
-
import { INJECTED_PROMPT_LABEL } from "./ken-context.js";
|
|
7
|
-
// No CLAUDE.md/AGENTS.md up the tree from tmpdir, so the appended project-
|
|
8
|
-
// context section is empty and these assertions stay focused on the persona.
|
|
9
|
-
const TEST_CWD = os.tmpdir();
|
|
10
|
-
describe("buildKenAutopilotSystemPrompt — verdict contract", () => {
|
|
11
|
-
let prompt;
|
|
12
|
-
beforeAll(async () => {
|
|
13
|
-
prompt = await buildKenAutopilotSystemPrompt(TEST_CWD);
|
|
14
|
-
});
|
|
15
|
-
it("teaches all four verdict keywords", () => {
|
|
16
|
-
for (const keyword of ["PROMPT", "ALL_CLEAR", "IGNORE", "HUMAN"]) {
|
|
17
|
-
expect(prompt).toContain(keyword);
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
it("routes only real user-level questions/options to HUMAN", () => {
|
|
21
|
-
// Leak regression: without this rule, GG Coder ending with "want me to…?"
|
|
22
|
-
// or an A/B/C menu reads as "unfinished" and Ken answers for the user.
|
|
23
|
-
// But the inverse matters too: permission to continue obvious safe work is
|
|
24
|
-
// NOT a user decision and should be a PROMPT, not a blocker. This is a
|
|
25
|
-
// principle, not a list of special-case examples.
|
|
26
|
-
expect(prompt).toContain("asking the ");
|
|
27
|
-
expect(prompt).toContain("presenting options");
|
|
28
|
-
expect(prompt).toContain("HUMAN only when answering it requires");
|
|
29
|
-
expect(prompt).toContain("user-level decisions");
|
|
30
|
-
expect(prompt).toContain("mechanically implied by the user's original ask");
|
|
31
|
-
expect(prompt).toContain("safe to do without new information");
|
|
32
|
-
expect(prompt).toContain("Use PROMPT with the concrete next step");
|
|
33
|
-
});
|
|
34
|
-
it("trusts only harness-classified passed verification evidence", () => {
|
|
35
|
-
expect(prompt).toContain("trust only PASSED rows");
|
|
36
|
-
expect(prompt).toContain("FAILED or REJECTED rows");
|
|
37
|
-
expect(prompt).toContain("model-authored claims are not proof");
|
|
38
|
-
});
|
|
39
|
-
it("makes Ken the plan reviewer (no automatic HUMAN on plan submissions)", () => {
|
|
40
|
-
// In autopilot, a submitted plan is reviewed by Ken himself — approve,
|
|
41
|
-
// revise, or (rarely) hand a genuine product decision to the user.
|
|
42
|
-
expect(prompt).toContain("Plans are YOURS to review");
|
|
43
|
-
expect(prompt).toContain("'Plan under review' section");
|
|
44
|
-
expect(prompt).toContain("implementation starts immediately");
|
|
45
|
-
expect(prompt).toContain("Default to approving a sound plan");
|
|
46
|
-
expect(prompt).toContain("Never IGNORE a plan");
|
|
47
|
-
// The old auto-HUMAN clause must be gone.
|
|
48
|
-
expect(prompt).not.toContain("submitting a plan for approval");
|
|
49
|
-
});
|
|
50
|
-
it("gives plan review a design bar: steps, boundaries, order, uncovered paths", () => {
|
|
51
|
-
// Post-turn review deliberately cannot ask "is this shape right?" — it
|
|
52
|
-
// judges a finished diff against the ask, and relitigating structure every
|
|
53
|
-
// turn is how the autopilot loop stops terminating. Plan review is the one
|
|
54
|
-
// branch where the question is both answerable and cheap, because no code
|
|
55
|
-
// exists yet. Each of the four tests below is load-bearing; a plan can be
|
|
56
|
-
// internally sound and still fail any one of them.
|
|
57
|
-
expect(prompt).toContain("judge the shape");
|
|
58
|
-
expect(prompt).toContain("does every step earn its existence");
|
|
59
|
-
expect(prompt).toContain("boundary between steps sit where the work actually splits");
|
|
60
|
-
expect(prompt).toContain("is the order forced by real dependencies");
|
|
61
|
-
expect(prompt).toContain("what happens on the paths the plan never names");
|
|
62
|
-
// A structural flaw has to be actionable and separable from taste, or the
|
|
63
|
-
// bar collapses back into the nitpicking the contract already forbids.
|
|
64
|
-
expect(prompt).toContain("is a structural flaw");
|
|
65
|
-
expect(prompt).toContain("PROMPT it, naming the step");
|
|
66
|
-
expect(prompt).toContain("taste nitpicks are still not blockers");
|
|
67
|
-
expect(prompt).toContain("is taste unless you can name what it breaks");
|
|
68
|
-
});
|
|
69
|
-
it("keeps the design bar out of post-turn verdicts", async () => {
|
|
70
|
-
// Scope guard: the bar lives in the plan-review bullet only. If it ever
|
|
71
|
-
// leaks into the turn-review rules, Ken starts re-opening architecture on
|
|
72
|
-
// finished work and ALL_CLEAR stops being reachable.
|
|
73
|
-
const planBullet = prompt.slice(prompt.indexOf("- Plans are YOURS to review"), prompt.indexOf("- Transcript lines labeled"));
|
|
74
|
-
expect(planBullet).toContain("judge the shape");
|
|
75
|
-
expect(prompt.match(/judge the shape/g) ?? []).toHaveLength(1);
|
|
76
|
-
expect(prompt.match(/earn its existence/g) ?? []).toHaveLength(1);
|
|
77
|
-
// The turn-review default survives untouched.
|
|
78
|
-
const chat = await buildKenSystemPrompt(TEST_CWD);
|
|
79
|
-
expect(chat).not.toContain("ALL_CLEAR");
|
|
80
|
-
});
|
|
81
|
-
it("tells Ken injected transcript lines are his own, not user asks", () => {
|
|
82
|
-
expect(prompt).toContain("Ken autopilot (injected)");
|
|
83
|
-
expect(prompt).toContain("Judge only against the original user request");
|
|
84
|
-
});
|
|
85
|
-
it("anchors ALL_CLEAR judgment to the pinned Original user request section", () => {
|
|
86
|
-
expect(prompt).toContain("Original ");
|
|
87
|
-
expect(prompt).toContain("user request' section");
|
|
88
|
-
expect(prompt).toContain("never a later injected prompt");
|
|
89
|
-
});
|
|
90
|
-
it("keeps the injected label byte-identical to the digest renderer's", () => {
|
|
91
|
-
// The system prompt names the label in prose; the digest emits it. If the
|
|
92
|
-
// label constant drifts, the prompt's rule points at nothing.
|
|
93
|
-
expect(INJECTED_PROMPT_LABEL).toContain("Ken autopilot (injected)");
|
|
94
|
-
expect(prompt).toContain("Ken autopilot (injected)");
|
|
95
|
-
});
|
|
96
|
-
it("kills the standalone why — reasons live only inside a PROMPT body", () => {
|
|
97
|
-
// Drift regression: chat Ken is trained to drop a one-line reason before a
|
|
98
|
-
// prompt; autopilot Ken carried that habit over and front-loaded reasoning
|
|
99
|
-
// prose before the keyword, which parsed as a HUMAN stop and stalled the
|
|
100
|
-
// cycle. The contract must name the habit and give the why exactly one
|
|
101
|
-
// legal home: inside the PROMPT body, only when GG Coder needs it.
|
|
102
|
-
expect(prompt).toContain("NOT ");
|
|
103
|
-
expect(prompt).toContain("no audience for a why");
|
|
104
|
-
expect(prompt).toContain("Never justify your verdict");
|
|
105
|
-
expect(prompt).toContain("INSIDE a PROMPT body");
|
|
106
|
-
expect(prompt).toContain("when GG Coder itself needs it");
|
|
107
|
-
});
|
|
108
|
-
it("shows a contrastive WRONG/RIGHT example of the drift", () => {
|
|
109
|
-
// Models obey a wrong→right pair better than prohibitions alone.
|
|
110
|
-
expect(prompt).toContain("WRONG — reasoning before the keyword");
|
|
111
|
-
expect(prompt).toContain("RIGHT — keyword first");
|
|
112
|
-
});
|
|
113
|
-
it("forbids commentary before or after the keyword line", () => {
|
|
114
|
-
// Leak regression: Ken once prefaced ALL_CLEAR with a recap/opinion ("The
|
|
115
|
-
// label is now a plain non-clickable span... Typecheck passed.\nALL_CLEAR"),
|
|
116
|
-
// which the parser couldn't read as a bare verdict and surfaced as a raw
|
|
117
|
-
// HUMAN bubble. The prompt must explicitly ban prose around the keyword.
|
|
118
|
-
expect(prompt).toContain("nothing before it");
|
|
119
|
-
expect(prompt).toContain("never add commentary");
|
|
120
|
-
expect(prompt).toContain("no recap of what you found");
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
describe("buildKenSystemPrompt — chat mode unaffected", () => {
|
|
124
|
-
it("keeps the chat output contract (prompt fence) and no verdict keywords", async () => {
|
|
125
|
-
const prompt = await buildKenSystemPrompt(TEST_CWD);
|
|
126
|
-
expect(prompt).toContain("Send to GG Coder");
|
|
127
|
-
// The verdict contract is autopilot-only.
|
|
128
|
-
expect(prompt).not.toContain("ALL_CLEAR");
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
describe("UI guidance alignment", () => {
|
|
132
|
-
it("reviews UI through the matching skill and evidence without wholesale copying", async () => {
|
|
133
|
-
for (const prompt of [
|
|
134
|
-
await buildKenSystemPrompt(TEST_CWD),
|
|
135
|
-
await buildKenAutopilotSystemPrompt(TEST_CWD),
|
|
136
|
-
]) {
|
|
137
|
-
expect(prompt).toContain("UI: evidence over imitation");
|
|
138
|
-
expect(prompt).toContain("use an invoked matching UI skill as specialized guidance");
|
|
139
|
-
expect(prompt).toContain("explicitly shows that the skill was available and applicable");
|
|
140
|
-
expect(prompt).toContain("existing components and tokens");
|
|
141
|
-
expect(prompt).toContain("rendered desktop and mobile output");
|
|
142
|
-
expect(prompt).toContain("References are evidence, not templates to clone");
|
|
143
|
-
expect(prompt).not.toContain("copy proven winners");
|
|
144
|
-
expect(prompt).not.toContain("pull the actual markup and computed styles");
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
describe("GG Coder capabilities — both modes know what the executor can do", () => {
|
|
149
|
-
it("teaches Ken GG Coder's real toolset in chat AND autopilot", async () => {
|
|
150
|
-
// Ken directs GG Coder, so both prompts must ground his instructions in the
|
|
151
|
-
// executor's actual capabilities (plan mode, subagents, bash, screenshots),
|
|
152
|
-
// not leave him guessing from the transcript.
|
|
153
|
-
for (const prompt of [
|
|
154
|
-
await buildKenSystemPrompt(TEST_CWD),
|
|
155
|
-
await buildKenAutopilotSystemPrompt(TEST_CWD),
|
|
156
|
-
]) {
|
|
157
|
-
expect(prompt).toContain("What GG Coder can do");
|
|
158
|
-
expect(prompt).toContain("enter_plan");
|
|
159
|
-
expect(prompt).toContain("subagents");
|
|
160
|
-
expect(prompt).toContain("bash");
|
|
161
|
-
expect(prompt).toContain("screenshot");
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
it("draws the boundary: Ken's own tools check, GG Coder's tools build", async () => {
|
|
165
|
-
// Ken should verify facts with his own read-only tools before delegating,
|
|
166
|
-
// not send GG Coder to find out something he could confirm faster himself.
|
|
167
|
-
for (const prompt of [
|
|
168
|
-
await buildKenSystemPrompt(TEST_CWD),
|
|
169
|
-
await buildKenAutopilotSystemPrompt(TEST_CWD),
|
|
170
|
-
]) {
|
|
171
|
-
expect(prompt).toContain("Check with your own eyes first");
|
|
172
|
-
expect(prompt).toContain("then delegate the real work");
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
describe("buildKenSystemPrompt / buildKenAutopilotSystemPrompt — project context", () => {
|
|
177
|
-
it("folds project context into the cached system prompt, not the per-turn digest", async () => {
|
|
178
|
-
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "ken-prompt-test-"));
|
|
179
|
-
await fs.writeFile(path.join(dir, "CLAUDE.md"), "Build a todo app.");
|
|
180
|
-
try {
|
|
181
|
-
const chat = await buildKenSystemPrompt(dir);
|
|
182
|
-
const autopilot = await buildKenAutopilotSystemPrompt(dir);
|
|
183
|
-
expect(chat).toContain("Build a todo app.");
|
|
184
|
-
expect(autopilot).toContain("Build a todo app.");
|
|
185
|
-
}
|
|
186
|
-
finally {
|
|
187
|
-
await fs.rm(dir, { recursive: true, force: true });
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
//# sourceMappingURL=ken-prompt.test.js.map
|