@code-yeongyu/senpi 2026.7.30-2 → 2026.7.31-2
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/CHANGELOG.md +104 -0
- package/dist/core/agent-session.d.ts +48 -12
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +110 -18
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/dynamic-prompt/build.d.ts.map +1 -1
- package/dist/core/dynamic-prompt/build.js +4 -0
- package/dist/core/dynamic-prompt/build.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.d.ts +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.js +25 -25
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.js +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.d.ts +9 -9
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.js +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.js +3 -3
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.d.ts +21 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.js +30 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/auth-lane.d.ts +8 -4
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/auth-lane.js +34 -25
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.js +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.js +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts +14 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/guidance.js +37 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts +4 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/index.js +12 -10
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.d.ts +3 -3
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.js +2 -2
- package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/options.d.ts +18 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/options.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/options.js +70 -10
- package/dist/core/extensions/builtin/claude-sdk-oauth/options.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.js +32 -19
- package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.d.ts +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts +30 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js +197 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts +18 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.js +33 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts +3 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js +134 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts +85 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js +270 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts +17 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js +217 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts +49 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js +204 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.d.ts +28 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js +107 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts +2 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js +10 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream.d.ts +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream.js +72 -53
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.d.ts +3 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.js +25 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.js +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts +18 -0
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js +69 -0
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.js +28 -2
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/openai-remote.d.ts +3 -0
- package/dist/core/extensions/builtin/compaction/openai-remote.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/openai-remote.js +15 -4
- package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.d.ts +4 -1
- package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.js +39 -20
- package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/task-intent.d.ts +2 -6
- package/dist/core/extensions/builtin/compaction/task-intent.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/task-intent.js +10 -9
- package/dist/core/extensions/builtin/compaction/task-intent.js.map +1 -1
- package/dist/core/extensions/builtin/goal/continuation-recovery.d.ts +6 -0
- package/dist/core/extensions/builtin/goal/continuation-recovery.d.ts.map +1 -0
- package/dist/core/extensions/builtin/goal/continuation-recovery.js +20 -0
- package/dist/core/extensions/builtin/goal/continuation-recovery.js.map +1 -0
- package/dist/core/extensions/builtin/goal/continuation.d.ts +2 -4
- package/dist/core/extensions/builtin/goal/continuation.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/continuation.js +2 -8
- package/dist/core/extensions/builtin/goal/continuation.js.map +1 -1
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.d.ts +19 -0
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.d.ts.map +1 -0
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.js +48 -0
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.js.map +1 -0
- package/dist/core/extensions/builtin/goal/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/index.js +17 -15
- package/dist/core/extensions/builtin/goal/index.js.map +1 -1
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.js +12 -10
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.js.map +1 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts +5 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.js +94 -52
- package/dist/core/extensions/builtin/goal/monitor-continuation.js.map +1 -1
- package/dist/core/extensions/builtin/goal/persistence.d.ts +1 -0
- package/dist/core/extensions/builtin/goal/persistence.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/persistence.js +49 -7
- package/dist/core/extensions/builtin/goal/persistence.js.map +1 -1
- package/dist/core/extensions/builtin/goal/ui.d.ts +1 -0
- package/dist/core/extensions/builtin/goal/ui.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/ui.js +11 -2
- package/dist/core/extensions/builtin/goal/ui.js.map +1 -1
- package/dist/core/extensions/builtin/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/index.js +5 -2
- package/dist/core/extensions/builtin/index.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/detectors.d.ts +31 -0
- package/dist/core/extensions/builtin/loop-guard/detectors.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/detectors.js +111 -0
- package/dist/core/extensions/builtin/loop-guard/detectors.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/index.d.ts +3 -0
- package/dist/core/extensions/builtin/loop-guard/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/index.js +31 -0
- package/dist/core/extensions/builtin/loop-guard/index.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/notice.d.ts +5 -0
- package/dist/core/extensions/builtin/loop-guard/notice.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/notice.js +42 -0
- package/dist/core/extensions/builtin/loop-guard/notice.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/policy.d.ts +30 -0
- package/dist/core/extensions/builtin/loop-guard/policy.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/policy.js +30 -0
- package/dist/core/extensions/builtin/loop-guard/policy.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.d.ts +4 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.js +50 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.d.ts +13 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.js +51 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.d.ts +13 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.js +39 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.js.map +1 -0
- package/dist/core/extensions/builtin/monitor-state-event.d.ts +10 -0
- package/dist/core/extensions/builtin/monitor-state-event.d.ts.map +1 -1
- package/dist/core/extensions/builtin/monitor-state-event.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/index.js +8 -4
- package/dist/core/extensions/builtin/prompt-preset/index.js.map +1 -1
- package/dist/core/extensions/builtin/rules/index.js +4 -3
- package/dist/core/extensions/builtin/rules/index.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/constants.d.ts +11 -0
- package/dist/core/extensions/builtin/rules/rules/constants.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/constants.js +11 -0
- package/dist/core/extensions/builtin/rules/rules/constants.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/formatter.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/formatter.js +15 -1
- package/dist/core/extensions/builtin/rules/rules/formatter.js.map +1 -1
- package/dist/core/extensions/builtin/service-tier.d.ts.map +1 -1
- package/dist/core/extensions/builtin/service-tier.js +23 -21
- package/dist/core/extensions/builtin/service-tier.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/extension.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/extension.js +21 -7
- package/dist/core/extensions/builtin/terminal/extension.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts +2 -0
- package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-registry.js +2 -0
- package/dist/core/extensions/builtin/terminal/monitor-registry.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.d.ts +37 -0
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.d.ts.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.js +61 -0
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.js.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-status.d.ts +9 -1
- package/dist/core/extensions/builtin/terminal/monitor-status.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-status.js +35 -2
- package/dist/core/extensions/builtin/terminal/monitor-status.js.map +1 -1
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts +1 -1
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts.map +1 -1
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js +88 -29
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/builtin-rules.d.ts +4 -0
- package/dist/core/extensions/builtin/ttsr/builtin-rules.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ttsr/builtin-rules.js +20 -0
- package/dist/core/extensions/builtin/ttsr/builtin-rules.js.map +1 -0
- package/dist/core/extensions/builtin/ttsr/commands.js +9 -1
- package/dist/core/extensions/builtin/ttsr/commands.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ttsr/index.js +4 -3
- package/dist/core/extensions/builtin/ttsr/index.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/manager.js +1 -1
- package/dist/core/extensions/builtin/ttsr/manager.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/renderers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/renderers.js +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/renderers.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/search.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/search.js +1 -3
- package/dist/core/extensions/builtin/websearch/websearch/search.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +5 -0
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +3 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +22 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/thinking-levels.d.ts.map +1 -1
- package/dist/core/thinking-levels.js +23 -3
- package/dist/core/thinking-levels.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/app-server/server/account.d.ts +1 -1
- package/dist/modes/app-server/server/account.js +1 -1
- package/dist/modes/app-server/server/account.js.map +1 -1
- package/dist/modes/app-server/server/server-core.js +1 -1
- package/dist/modes/app-server/server/server-core.js.map +1 -1
- package/dist/modes/interactive/compaction-queue-transfer.d.ts +2 -0
- package/dist/modes/interactive/compaction-queue-transfer.d.ts.map +1 -1
- package/dist/modes/interactive/compaction-queue-transfer.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +9 -5
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +37 -11
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/connection-handler.js +3 -3
- package/dist/modes/rpc/connection-handler.js.map +1 -1
- package/docs/extensions.md +10 -0
- package/docs/providers.md +21 -5
- package/docs/release-guide.md +2 -2
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +27 -0
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +3 -3
- package/node_modules/@code-yeongyu/senpi-codemode/src/extension/eval-status-ticker.ts +79 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/extension/eval-status.ts +36 -3
- package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +26 -12
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-manager.ts +9 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +10 -15
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.d.ts +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.js +69 -19
- package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/huggingface.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +5 -0
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.d.ts +3 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.js +36 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/package.json +1 -1
- package/node_modules/@earendil-works/pi-pty/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +6 -6
- package/dist/core/extensions/builtin/claude-agent-sdk/auth-lane.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/auth-lane.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/guidance.d.ts +0 -6
- package/dist/core/extensions/builtin/claude-agent-sdk/guidance.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/guidance.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/index.d.ts +0 -4
- package/dist/core/extensions/builtin/claude-agent-sdk/index.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/index.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/oauth-login.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/options.d.ts +0 -16
- package/dist/core/extensions/builtin/claude-agent-sdk/options.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/prompt-bridge.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.d.ts +0 -15
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.js +0 -41
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/stream.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/stream.js.map +0 -1
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.js +0 -0
|
@@ -195,10 +195,14 @@ export class AgentSession {
|
|
|
195
195
|
this._isAgentRunActive = false;
|
|
196
196
|
this._toolExecutionDepth = 0;
|
|
197
197
|
this._promptStartPending = false;
|
|
198
|
+
this._nextInputId = 0;
|
|
198
199
|
/** Tracks pending steering messages for UI display. Removed when delivered. */
|
|
199
200
|
this._steeringMessages = [];
|
|
200
201
|
/** Tracks pending follow-up messages for UI display. Removed when delivered. */
|
|
201
202
|
this._followUpMessages = [];
|
|
203
|
+
/** Recovery-only order across both native queue modes and TUI compaction ownership. */
|
|
204
|
+
this._queuedInputOrder = [];
|
|
205
|
+
this._nextQueuedInputOrder = 0;
|
|
202
206
|
/** Messages queued to be included with the next user prompt as context ("asides"). */
|
|
203
207
|
this._pendingNextTurnMessages = [];
|
|
204
208
|
// Queues held while the first post-compaction response is classified. Agent
|
|
@@ -234,7 +238,7 @@ export class AgentSession {
|
|
|
234
238
|
this._userAbortPromise = undefined;
|
|
235
239
|
this._agentAbortSource = undefined;
|
|
236
240
|
this._suppressQueuedContinuationAfterUserAbort = false;
|
|
237
|
-
/** Set when clearQueue() drains
|
|
241
|
+
/** Set when clearQueue({ abortWillFollow: true }) drains queues immediately before abort(). */
|
|
238
242
|
this._hadClearedQueuedMessages = false;
|
|
239
243
|
this._extensionEventSignal = undefined;
|
|
240
244
|
// Bash execution state
|
|
@@ -252,6 +256,7 @@ export class AgentSession {
|
|
|
252
256
|
// Base system prompt (without extension appends) - used to apply fresh appends each turn
|
|
253
257
|
this._baseSystemPrompt = "";
|
|
254
258
|
this._currentServiceTier = undefined;
|
|
259
|
+
this._sessionFastMode = false;
|
|
255
260
|
this._lastHighReasoningWarningKey = undefined;
|
|
256
261
|
// Track last assistant message for auto-compaction check
|
|
257
262
|
this._lastAssistantMessage = undefined;
|
|
@@ -733,7 +738,9 @@ export class AgentSession {
|
|
|
733
738
|
this.agent.steer(message);
|
|
734
739
|
const userMessage = queuedMessages.find((message) => message.role === "user");
|
|
735
740
|
if (userMessage?.role === "user") {
|
|
736
|
-
this.
|
|
741
|
+
const text = this._extractUserMessageText(userMessage.content);
|
|
742
|
+
this._steeringMessages.push(text);
|
|
743
|
+
this._recordQueuedInput(text, "steer");
|
|
737
744
|
this._emitQueueUpdate();
|
|
738
745
|
}
|
|
739
746
|
return;
|
|
@@ -941,6 +948,7 @@ export class AgentSession {
|
|
|
941
948
|
const steeringIndex = this._steeringMessages.indexOf(messageText);
|
|
942
949
|
if (steeringIndex !== -1) {
|
|
943
950
|
this._steeringMessages.splice(steeringIndex, 1);
|
|
951
|
+
this._removeQueuedInput(messageText, "steer");
|
|
944
952
|
this._emitQueueUpdate();
|
|
945
953
|
}
|
|
946
954
|
else {
|
|
@@ -948,6 +956,7 @@ export class AgentSession {
|
|
|
948
956
|
const followUpIndex = this._followUpMessages.indexOf(messageText);
|
|
949
957
|
if (followUpIndex !== -1) {
|
|
950
958
|
this._followUpMessages.splice(followUpIndex, 1);
|
|
959
|
+
this._removeQueuedInput(messageText, "followUp");
|
|
951
960
|
this._emitQueueUpdate();
|
|
952
961
|
}
|
|
953
962
|
}
|
|
@@ -1342,6 +1351,22 @@ export class AgentSession {
|
|
|
1342
1351
|
get serviceTier() {
|
|
1343
1352
|
return this._currentServiceTier;
|
|
1344
1353
|
}
|
|
1354
|
+
/**
|
|
1355
|
+
* True when the active model is served at the priority ("fast") tier: either the model
|
|
1356
|
+
* itself is configured for it (an `openai` `-fast` catalog variant, a scoped
|
|
1357
|
+
* `provider/id:priority`) or an extension turned fast mode on for this session.
|
|
1358
|
+
*
|
|
1359
|
+
* Display-only: it never feeds request composition, so an extension toggling fast mode
|
|
1360
|
+
* for one provider cannot leak `service_tier` into another provider's payload.
|
|
1361
|
+
* `serviceTier` stays the single request-side source.
|
|
1362
|
+
*/
|
|
1363
|
+
isFastModeActive() {
|
|
1364
|
+
return this._sessionFastMode || this._currentServiceTier === "priority";
|
|
1365
|
+
}
|
|
1366
|
+
/** Session-scoped fast-mode indicator; never persisted, reset on session start. */
|
|
1367
|
+
setSessionFastMode(enabled) {
|
|
1368
|
+
this._sessionFastMode = enabled;
|
|
1369
|
+
}
|
|
1345
1370
|
/**
|
|
1346
1371
|
* Explicit scoped/favorite tiers win; otherwise fall back to the model's
|
|
1347
1372
|
* configured serviceTier from models.json/extension compatibility config.
|
|
@@ -1683,6 +1708,12 @@ export class AgentSession {
|
|
|
1683
1708
|
let messages;
|
|
1684
1709
|
let titlePrompt;
|
|
1685
1710
|
let consumedNextTurnMessages;
|
|
1711
|
+
let inputId;
|
|
1712
|
+
const emitInputDisposition = async (disposition) => {
|
|
1713
|
+
if (inputId === undefined)
|
|
1714
|
+
return;
|
|
1715
|
+
await this._extensionRunner.emit({ type: "input_disposition", inputId, disposition });
|
|
1716
|
+
};
|
|
1686
1717
|
try {
|
|
1687
1718
|
// Handle extension commands first (execute immediately, even during streaming)
|
|
1688
1719
|
// Extension commands manage their own LLM interaction via pi.sendMessage()
|
|
@@ -1700,9 +1731,11 @@ export class AgentSession {
|
|
|
1700
1731
|
let currentText = text;
|
|
1701
1732
|
let currentImages = options?.images;
|
|
1702
1733
|
if (this._extensionRunner.hasHandlers("input")) {
|
|
1703
|
-
|
|
1734
|
+
inputId = `${this.sessionManager.getSessionId()}:${++this._nextInputId}`;
|
|
1735
|
+
const inputResult = await this._extensionRunner.emitInput(currentText, currentImages, options?.source ?? "interactive", this.isStreaming ? options?.streamingBehavior : undefined, inputId);
|
|
1704
1736
|
throwIfCancelled();
|
|
1705
1737
|
if (inputResult.action === "handled") {
|
|
1738
|
+
await emitInputDisposition("handled");
|
|
1706
1739
|
promptDisposition?.("handled");
|
|
1707
1740
|
preflightResult?.(true);
|
|
1708
1741
|
return;
|
|
@@ -1733,6 +1766,7 @@ export class AgentSession {
|
|
|
1733
1766
|
else {
|
|
1734
1767
|
await this._queueSteer(expandedText, currentImages);
|
|
1735
1768
|
}
|
|
1769
|
+
await emitInputDisposition("queued");
|
|
1736
1770
|
promptDisposition?.("queued");
|
|
1737
1771
|
preflightResult?.(true);
|
|
1738
1772
|
return;
|
|
@@ -1750,6 +1784,7 @@ export class AgentSession {
|
|
|
1750
1784
|
else {
|
|
1751
1785
|
await this._queueSteer(expandedText, currentImages);
|
|
1752
1786
|
}
|
|
1787
|
+
await emitInputDisposition("queued");
|
|
1753
1788
|
promptDisposition?.("queued");
|
|
1754
1789
|
preflightResult?.(true);
|
|
1755
1790
|
return;
|
|
@@ -1773,6 +1808,7 @@ export class AgentSession {
|
|
|
1773
1808
|
else {
|
|
1774
1809
|
await this._queueSteer(expandedText, currentImages);
|
|
1775
1810
|
}
|
|
1811
|
+
await emitInputDisposition("queued");
|
|
1776
1812
|
promptDisposition?.("queued");
|
|
1777
1813
|
preflightResult?.(true);
|
|
1778
1814
|
return;
|
|
@@ -1793,6 +1829,7 @@ export class AgentSession {
|
|
|
1793
1829
|
else {
|
|
1794
1830
|
await this._queueSteer(expandedText, currentImages);
|
|
1795
1831
|
}
|
|
1832
|
+
await emitInputDisposition("queued");
|
|
1796
1833
|
promptDisposition?.("queued");
|
|
1797
1834
|
preflightResult?.(true);
|
|
1798
1835
|
return;
|
|
@@ -1866,8 +1903,11 @@ export class AgentSession {
|
|
|
1866
1903
|
// next-turn, and before_agent_start additions are also provider-visible,
|
|
1867
1904
|
// so make one final admission decision against the complete request.
|
|
1868
1905
|
await this._enforceFinalProviderAdmission(messages);
|
|
1906
|
+
throwIfCancelled();
|
|
1907
|
+
await emitInputDisposition("started");
|
|
1869
1908
|
}
|
|
1870
1909
|
catch (error) {
|
|
1910
|
+
await emitInputDisposition("rejected");
|
|
1871
1911
|
if (consumedNextTurnMessages && consumedNextTurnMessages.length > 0) {
|
|
1872
1912
|
this._pendingNextTurnMessages = [...consumedNextTurnMessages, ...this._pendingNextTurnMessages];
|
|
1873
1913
|
}
|
|
@@ -1881,7 +1921,6 @@ export class AgentSession {
|
|
|
1881
1921
|
if (!messages) {
|
|
1882
1922
|
return;
|
|
1883
1923
|
}
|
|
1884
|
-
throwIfCancelled();
|
|
1885
1924
|
promptDisposition?.("started");
|
|
1886
1925
|
preflightResult?.(true);
|
|
1887
1926
|
if (options?.thinkingLevel !== undefined) {
|
|
@@ -2001,7 +2040,7 @@ export class AgentSession {
|
|
|
2001
2040
|
* @param images Optional image attachments to include with the message
|
|
2002
2041
|
* @throws Error if text is an extension command
|
|
2003
2042
|
*/
|
|
2004
|
-
async steer(text, images) {
|
|
2043
|
+
async steer(text, images, recovery) {
|
|
2005
2044
|
// Check for extension commands (cannot be queued)
|
|
2006
2045
|
if (text.startsWith("/")) {
|
|
2007
2046
|
this._throwIfExtensionCommand(text);
|
|
@@ -2009,7 +2048,7 @@ export class AgentSession {
|
|
|
2009
2048
|
// Expand skill commands and prompt templates
|
|
2010
2049
|
let expandedText = this._expandSkillCommand(text);
|
|
2011
2050
|
expandedText = expandPromptTemplate(expandedText, [...this.promptTemplates]);
|
|
2012
|
-
await this._queueSteer(expandedText, images);
|
|
2051
|
+
await this._queueSteer(expandedText, images, recovery?.enqueueOrder);
|
|
2013
2052
|
}
|
|
2014
2053
|
/**
|
|
2015
2054
|
* Queue a follow-up message to be processed after the agent finishes.
|
|
@@ -2018,7 +2057,7 @@ export class AgentSession {
|
|
|
2018
2057
|
* @param images Optional image attachments to include with the message
|
|
2019
2058
|
* @throws Error if text is an extension command
|
|
2020
2059
|
*/
|
|
2021
|
-
async followUp(text, images) {
|
|
2060
|
+
async followUp(text, images, recovery) {
|
|
2022
2061
|
// Check for extension commands (cannot be queued)
|
|
2023
2062
|
if (text.startsWith("/")) {
|
|
2024
2063
|
this._throwIfExtensionCommand(text);
|
|
@@ -2026,7 +2065,7 @@ export class AgentSession {
|
|
|
2026
2065
|
// Expand skill commands and prompt templates
|
|
2027
2066
|
let expandedText = this._expandSkillCommand(text);
|
|
2028
2067
|
expandedText = expandPromptTemplate(expandedText, [...this.promptTemplates]);
|
|
2029
|
-
await this._queueFollowUp(expandedText, images);
|
|
2068
|
+
await this._queueFollowUp(expandedText, images, recovery?.enqueueOrder);
|
|
2030
2069
|
}
|
|
2031
2070
|
_startSessionTitleGeneration(firstPrompt) {
|
|
2032
2071
|
if (!this._autoTitleSessions || this.sessionManager.getSessionName() || shouldSkipSessionTitle(firstPrompt)) {
|
|
@@ -2100,8 +2139,9 @@ export class AgentSession {
|
|
|
2100
2139
|
/**
|
|
2101
2140
|
* Internal: Queue a steering message (already expanded, no extension command check).
|
|
2102
2141
|
*/
|
|
2103
|
-
async _queueSteer(text, images) {
|
|
2142
|
+
async _queueSteer(text, images, enqueueOrder) {
|
|
2104
2143
|
this._steeringMessages.push(text);
|
|
2144
|
+
this._recordQueuedInput(text, "steer", enqueueOrder);
|
|
2105
2145
|
this._sessionLogger.debug("queue_enqueue", { mode: "steer", count: this._steeringMessages.length });
|
|
2106
2146
|
this._emitQueueUpdate();
|
|
2107
2147
|
const content = [{ type: "text", text }];
|
|
@@ -2118,8 +2158,9 @@ export class AgentSession {
|
|
|
2118
2158
|
/**
|
|
2119
2159
|
* Internal: Queue a follow-up message (already expanded, no extension command check).
|
|
2120
2160
|
*/
|
|
2121
|
-
async _queueFollowUp(text, images) {
|
|
2161
|
+
async _queueFollowUp(text, images, enqueueOrder) {
|
|
2122
2162
|
this._followUpMessages.push(text);
|
|
2163
|
+
this._recordQueuedInput(text, "followUp", enqueueOrder);
|
|
2123
2164
|
this._sessionLogger.debug("queue_enqueue", { mode: "followUp", count: this._followUpMessages.length });
|
|
2124
2165
|
this._emitQueueUpdate();
|
|
2125
2166
|
const content = [{ type: "text", text }];
|
|
@@ -2311,26 +2352,46 @@ export class AgentSession {
|
|
|
2311
2352
|
finishSessionWork?.();
|
|
2312
2353
|
}
|
|
2313
2354
|
}
|
|
2355
|
+
/** Reserve a global order for input temporarily owned outside the native queues. */
|
|
2356
|
+
reserveQueuedInputOrder() {
|
|
2357
|
+
this._nextQueuedInputOrder += 1;
|
|
2358
|
+
return this._nextQueuedInputOrder;
|
|
2359
|
+
}
|
|
2360
|
+
_recordQueuedInput(text, mode, enqueueOrder) {
|
|
2361
|
+
const order = enqueueOrder ?? this.reserveQueuedInputOrder();
|
|
2362
|
+
this._nextQueuedInputOrder = Math.max(this._nextQueuedInputOrder, order);
|
|
2363
|
+
this._queuedInputOrder.push({ text, mode, enqueueOrder: order });
|
|
2364
|
+
}
|
|
2365
|
+
_removeQueuedInput(text, mode) {
|
|
2366
|
+
const index = this._queuedInputOrder.findIndex((message) => message.mode === mode && message.text === text);
|
|
2367
|
+
if (index !== -1)
|
|
2368
|
+
this._queuedInputOrder.splice(index, 1);
|
|
2369
|
+
}
|
|
2314
2370
|
/**
|
|
2315
|
-
* Clear all queued messages and return them.
|
|
2316
|
-
*
|
|
2317
|
-
* @
|
|
2371
|
+
* Clear all queued messages and return them. The non-enumerable `ordered`
|
|
2372
|
+
* view preserves legacy object equality and native queue semantics.
|
|
2373
|
+
* @param options.abortWillFollow Mark a non-empty drain so an immediately following abort can emit session_abort.
|
|
2318
2374
|
*/
|
|
2319
|
-
clearQueue() {
|
|
2375
|
+
clearQueue(options = { abortWillFollow: false }) {
|
|
2320
2376
|
const steering = [...this._steeringMessages];
|
|
2321
2377
|
const followUp = [...this._followUpMessages];
|
|
2322
|
-
|
|
2378
|
+
const ordered = [...this._queuedInputOrder].sort((a, b) => a.enqueueOrder - b.enqueueOrder);
|
|
2379
|
+
if (options.abortWillFollow && (steering.length > 0 || followUp.length > 0)) {
|
|
2323
2380
|
this._hadClearedQueuedMessages = true;
|
|
2381
|
+
}
|
|
2324
2382
|
// Clear every queue synchronously. Deferred post-compaction messages are
|
|
2325
2383
|
// already represented in visible bookkeeping, so they must not be returned
|
|
2326
2384
|
// a second time or later resurrected into Agent's native queues.
|
|
2327
2385
|
this._steeringMessages = [];
|
|
2328
2386
|
this._followUpMessages = [];
|
|
2387
|
+
this._queuedInputOrder = [];
|
|
2329
2388
|
this._postCompactionDeferredSteeringMessages = [];
|
|
2330
2389
|
this._postCompactionDeferredFollowUpMessages = [];
|
|
2331
2390
|
this.agent.clearAllQueues();
|
|
2332
2391
|
this._emitQueueUpdate();
|
|
2333
|
-
|
|
2392
|
+
const cleared = { steering, followUp };
|
|
2393
|
+
Object.defineProperty(cleared, "ordered", { value: ordered, enumerable: false });
|
|
2394
|
+
return cleared;
|
|
2334
2395
|
}
|
|
2335
2396
|
/** Number of pending messages (includes both steering and follow-up) */
|
|
2336
2397
|
get pendingMessageCount() {
|
|
@@ -3287,6 +3348,8 @@ export class AgentSession {
|
|
|
3287
3348
|
if (compacted)
|
|
3288
3349
|
return true;
|
|
3289
3350
|
}
|
|
3351
|
+
if (this._isCompactionOnCooldown())
|
|
3352
|
+
return false;
|
|
3290
3353
|
throw new RequiredCompactionError();
|
|
3291
3354
|
}
|
|
3292
3355
|
/**
|
|
@@ -3325,6 +3388,8 @@ export class AgentSession {
|
|
|
3325
3388
|
throw new RequiredCompactionError();
|
|
3326
3389
|
}
|
|
3327
3390
|
const compacted = await this._runPrePromptCompaction(lastAssistantMessage, false, "pre_prompt");
|
|
3391
|
+
if (!compacted && !isOversized() && this._isCompactionOnCooldown())
|
|
3392
|
+
return;
|
|
3328
3393
|
if (!compacted || isOversized()) {
|
|
3329
3394
|
throw new RequiredCompactionError();
|
|
3330
3395
|
}
|
|
@@ -3470,6 +3535,10 @@ export class AgentSession {
|
|
|
3470
3535
|
}
|
|
3471
3536
|
return false;
|
|
3472
3537
|
}
|
|
3538
|
+
_isCompactionOnCooldown() {
|
|
3539
|
+
const state = this._compactionLifecycle.state;
|
|
3540
|
+
return state.status === "failed" && state.rejectionCause === "circuit-breaker";
|
|
3541
|
+
}
|
|
3473
3542
|
async _runPrePromptCompaction(lastAssistantMessage, skipAbortedCheck, reason = "pre_prompt", willRetry = false, allowSummaryOnly = false) {
|
|
3474
3543
|
const controller = new AbortController();
|
|
3475
3544
|
this._claimCompactionController(controller, "compaction");
|
|
@@ -3530,8 +3599,11 @@ export class AgentSession {
|
|
|
3530
3599
|
if (!shouldCompact(contextTokens, model.contextWindow, settings))
|
|
3531
3600
|
return;
|
|
3532
3601
|
const compacted = await this._runPrePromptCompaction(this._findLastAssistantMessage(), true, "pre_prompt");
|
|
3533
|
-
if (!compacted)
|
|
3602
|
+
if (!compacted) {
|
|
3603
|
+
if (this._isCompactionOnCooldown())
|
|
3604
|
+
return;
|
|
3534
3605
|
throw new RequiredCompactionError();
|
|
3606
|
+
}
|
|
3535
3607
|
this._scheduledContinuationRecompacted = true;
|
|
3536
3608
|
}
|
|
3537
3609
|
async _continueAgentAfterCurrentRun(options = {}) {
|
|
@@ -3909,6 +3981,7 @@ export class AgentSession {
|
|
|
3909
3981
|
return true;
|
|
3910
3982
|
},
|
|
3911
3983
|
setSessionThinkingLevel: (level) => this.setSessionThinkingLevel(level),
|
|
3984
|
+
setSessionFastMode: (enabled) => this.setSessionFastMode(enabled),
|
|
3912
3985
|
}, {
|
|
3913
3986
|
getModel: () => this.model,
|
|
3914
3987
|
getServiceTier: () => this.serviceTier,
|
|
@@ -4398,6 +4471,15 @@ export class AgentSession {
|
|
|
4398
4471
|
// Refusals are only retried through a new chain candidate. They never use
|
|
4399
4472
|
// same-model retries or the transient over-budget fallback escape hatch.
|
|
4400
4473
|
if (this._retryAttempt + 1 > settings.maxRetries) {
|
|
4474
|
+
if (this._retryAttempt > 0) {
|
|
4475
|
+
this._emit({
|
|
4476
|
+
type: "auto_retry_end",
|
|
4477
|
+
success: false,
|
|
4478
|
+
attempt: this._retryAttempt,
|
|
4479
|
+
finalError: message.errorMessage,
|
|
4480
|
+
});
|
|
4481
|
+
}
|
|
4482
|
+
this._retryAttempt = 0;
|
|
4401
4483
|
this._resolveRetry();
|
|
4402
4484
|
return "not-handled";
|
|
4403
4485
|
}
|
|
@@ -4407,6 +4489,15 @@ export class AgentSession {
|
|
|
4407
4489
|
if (exhaustedChainKey) {
|
|
4408
4490
|
this._emit({ type: "retry_fallback_exhausted", chainKey: exhaustedChainKey, lastError: errorMessage });
|
|
4409
4491
|
}
|
|
4492
|
+
if (this._retryAttempt > 0) {
|
|
4493
|
+
this._emit({
|
|
4494
|
+
type: "auto_retry_end",
|
|
4495
|
+
success: false,
|
|
4496
|
+
attempt: this._retryAttempt,
|
|
4497
|
+
finalError: message.errorMessage,
|
|
4498
|
+
});
|
|
4499
|
+
}
|
|
4500
|
+
this._retryAttempt = 0;
|
|
4410
4501
|
this._resolveRetry();
|
|
4411
4502
|
return "not-handled";
|
|
4412
4503
|
}
|
|
@@ -4541,7 +4632,8 @@ export class AgentSession {
|
|
|
4541
4632
|
if (compactionSettings.enabled &&
|
|
4542
4633
|
model &&
|
|
4543
4634
|
shouldCompact(contextTokens, model.contextWindow, compactionSettings)) {
|
|
4544
|
-
|
|
4635
|
+
const preRetryCompaction = await this._runPrePromptCompaction(message, true, "threshold", true, true);
|
|
4636
|
+
if (!preRetryCompaction && !this._isCompactionOnCooldown()) {
|
|
4545
4637
|
const attempt = this._retryAttempt;
|
|
4546
4638
|
this._retryAttempt = 0;
|
|
4547
4639
|
this._emit({
|