@qduc/term2 0.18.0 → 0.20.0
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/agent.d.ts +9 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +7 -1
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +3 -2
- package/dist/app.js.map +1 -1
- package/dist/cli.js +9 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/retry-failed-turn-command.d.ts +6 -0
- package/dist/commands/retry-failed-turn-command.d.ts.map +1 -0
- package/dist/commands/retry-failed-turn-command.js +12 -0
- package/dist/commands/retry-failed-turn-command.js.map +1 -0
- package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.js +4 -0
- package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.js +11 -1
- package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
- package/dist/components/layout/BottomArea.d.ts +6 -0
- package/dist/components/layout/BottomArea.d.ts.map +1 -1
- package/dist/components/layout/BottomArea.js +15 -5
- package/dist/components/layout/BottomArea.js.map +1 -1
- package/dist/components/layout/StatusBar.d.ts +6 -0
- package/dist/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/components/layout/StatusBar.js +17 -4
- package/dist/components/layout/StatusBar.js.map +1 -1
- package/dist/components/message/CommandGroupSummary.js +4 -5
- package/dist/components/message/CommandGroupSummary.js.map +1 -1
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +33 -10
- package/dist/components/message/MessageList.js.map +1 -1
- package/dist/components/message/command-grouping.d.ts +7 -6
- package/dist/components/message/command-grouping.d.ts.map +1 -1
- package/dist/components/message/command-grouping.js +35 -15
- package/dist/components/message/command-grouping.js.map +1 -1
- package/dist/components/message/command-message-helpers.d.ts +5 -5
- package/dist/contracts/conversation.d.ts +2 -0
- package/dist/contracts/conversation.d.ts.map +1 -1
- package/dist/contracts/conversation.js.map +1 -1
- package/dist/contracts/run-termination.d.ts +7 -0
- package/dist/contracts/run-termination.d.ts.map +1 -0
- package/dist/contracts/run-termination.js +2 -0
- package/dist/contracts/run-termination.js.map +1 -0
- package/dist/contracts/streamed-model-turn.d.ts +4 -0
- package/dist/contracts/streamed-model-turn.d.ts.map +1 -1
- package/dist/hooks/conversation-ui-reducer.d.ts +7 -0
- package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
- package/dist/hooks/conversation-ui-reducer.js +6 -0
- package/dist/hooks/conversation-ui-reducer.js.map +1 -1
- package/dist/hooks/settings-completion-config.d.ts.map +1 -1
- package/dist/hooks/settings-completion-config.js +0 -2
- package/dist/hooks/settings-completion-config.js.map +1 -1
- package/dist/hooks/use-app-commands.d.ts +2 -1
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-app-commands.js +4 -1
- package/dist/hooks/use-app-commands.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +5 -0
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +29 -4
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-model-selection.d.ts +2 -0
- package/dist/hooks/use-model-selection.d.ts.map +1 -1
- package/dist/hooks/use-model-selection.js +3 -3
- package/dist/hooks/use-model-selection.js.map +1 -1
- package/dist/lib/agent-client.d.ts +18 -0
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +68 -23
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-configuration.d.ts +8 -0
- package/dist/lib/agent-configuration.d.ts.map +1 -1
- package/dist/lib/agent-configuration.js +6 -0
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +8 -0
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +2 -0
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/providers/aborted-stream-recorder.d.ts +26 -1
- package/dist/providers/aborted-stream-recorder.d.ts.map +1 -1
- package/dist/providers/aborted-stream-recorder.js +133 -0
- package/dist/providers/aborted-stream-recorder.js.map +1 -1
- package/dist/providers/ai-sdk-streamed-model.d.ts +5 -0
- package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
- package/dist/providers/ai-sdk-streamed-model.js +90 -1
- package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
- package/dist/providers/codex-compact.d.ts +5 -4
- package/dist/providers/codex-compact.d.ts.map +1 -1
- package/dist/providers/codex-compact.js +5 -4
- package/dist/providers/codex-compact.js.map +1 -1
- package/dist/providers/codex-responses-model.d.ts.map +1 -1
- package/dist/providers/codex-responses-model.js +103 -20
- package/dist/providers/codex-responses-model.js.map +1 -1
- package/dist/providers/codex.provider.d.ts +1 -0
- package/dist/providers/codex.provider.d.ts.map +1 -1
- package/dist/providers/codex.provider.js +59 -3
- package/dist/providers/codex.provider.js.map +1 -1
- package/dist/providers/fetch/logging-middleware.d.ts +1 -0
- package/dist/providers/fetch/logging-middleware.d.ts.map +1 -1
- package/dist/providers/fetch/logging-middleware.js +24 -1
- package/dist/providers/fetch/logging-middleware.js.map +1 -1
- package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
- package/dist/providers/openai-chat-completions-model.js +99 -2
- package/dist/providers/openai-chat-completions-model.js.map +1 -1
- package/dist/providers/openai-responses-model.d.ts.map +1 -1
- package/dist/providers/openai-responses-model.js +21 -13
- package/dist/providers/openai-responses-model.js.map +1 -1
- package/dist/providers/retrying-model.d.ts +5 -1
- package/dist/providers/retrying-model.d.ts.map +1 -1
- package/dist/providers/retrying-model.js +29 -6
- package/dist/providers/retrying-model.js.map +1 -1
- package/dist/providers/websocket-abort-race.d.ts +13 -0
- package/dist/providers/websocket-abort-race.d.ts.map +1 -0
- package/dist/providers/websocket-abort-race.js +34 -0
- package/dist/providers/websocket-abort-race.js.map +1 -0
- package/dist/services/agent-runtime/application-run-loop.d.ts +7 -2
- package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.js +48 -8
- package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
- package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.js +3 -3
- package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.js.map +1 -1
- package/dist/services/agent-runtime/executor.d.ts.map +1 -1
- package/dist/services/agent-runtime/executor.js +2 -0
- package/dist/services/agent-runtime/executor.js.map +1 -1
- package/dist/services/agent-runtime/types.d.ts +2 -2
- package/dist/services/agent-runtime/types.d.ts.map +1 -1
- package/dist/services/agent-stream.d.ts +13 -0
- package/dist/services/agent-stream.d.ts.map +1 -1
- package/dist/services/agent-stream.js +56 -0
- package/dist/services/agent-stream.js.map +1 -1
- package/dist/services/background-task-activity.d.ts +7 -0
- package/dist/services/background-task-activity.d.ts.map +1 -1
- package/dist/services/background-task-activity.js +17 -0
- package/dist/services/background-task-activity.js.map +1 -1
- package/dist/services/conversation/conversation-events.d.ts +36 -3
- package/dist/services/conversation/conversation-events.d.ts.map +1 -1
- package/dist/services/conversation/conversation-events.js +30 -1
- package/dist/services/conversation/conversation-events.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.d.ts +2 -0
- package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.js +39 -1
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.types.d.ts +4 -0
- package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
- package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
- package/dist/services/conversation/conversation-result-builder.js +9 -5
- package/dist/services/conversation/conversation-result-builder.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +2 -0
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +14 -2
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/session-browser.d.ts +3 -0
- package/dist/services/conversation/session-browser.d.ts.map +1 -1
- package/dist/services/conversation/session-browser.js +42 -40
- package/dist/services/conversation/session-browser.js.map +1 -1
- package/dist/services/conversation-agent-client.d.ts +3 -0
- package/dist/services/conversation-agent-client.d.ts.map +1 -1
- package/dist/services/logging/provider-traffic.d.ts +6 -1
- package/dist/services/logging/provider-traffic.d.ts.map +1 -1
- package/dist/services/logging/provider-traffic.js +29 -4
- package/dist/services/logging/provider-traffic.js.map +1 -1
- package/dist/services/memory/memory-store.d.ts.map +1 -1
- package/dist/services/memory/memory-store.js +3 -1
- package/dist/services/memory/memory-store.js.map +1 -1
- package/dist/services/models/model-catalog-session.d.ts +1 -2
- package/dist/services/models/model-catalog-session.d.ts.map +1 -1
- package/dist/services/retry/committed-tool-continuation.d.ts +4 -0
- package/dist/services/retry/committed-tool-continuation.d.ts.map +1 -0
- package/dist/services/retry/committed-tool-continuation.js +12 -0
- package/dist/services/retry/committed-tool-continuation.js.map +1 -0
- package/dist/services/retry/in-loop-model-retry.d.ts.map +1 -1
- package/dist/services/retry/in-loop-model-retry.js +9 -0
- package/dist/services/retry/in-loop-model-retry.js.map +1 -1
- package/dist/services/retry/provider-failure-classification.d.ts +12 -0
- package/dist/services/retry/provider-failure-classification.d.ts.map +1 -0
- package/dist/services/retry/provider-failure-classification.js +55 -0
- package/dist/services/retry/provider-failure-classification.js.map +1 -0
- package/dist/services/retry/retry-classifier.d.ts.map +1 -1
- package/dist/services/retry/retry-classifier.js +68 -0
- package/dist/services/retry/retry-classifier.js.map +1 -1
- package/dist/services/retry/retry-contracts.d.ts +24 -3
- package/dist/services/retry/retry-contracts.d.ts.map +1 -1
- package/dist/services/retry/retry-event-presenter.d.ts.map +1 -1
- package/dist/services/retry/retry-event-presenter.js +14 -4
- package/dist/services/retry/retry-event-presenter.js.map +1 -1
- package/dist/services/retry/retry-recovery-budget.d.ts +51 -0
- package/dist/services/retry/retry-recovery-budget.d.ts.map +1 -0
- package/dist/services/retry/retry-recovery-budget.js +84 -0
- package/dist/services/retry/retry-recovery-budget.js.map +1 -0
- package/dist/services/service-interfaces.d.ts +67 -3
- package/dist/services/service-interfaces.d.ts.map +1 -1
- package/dist/services/session/background-check-in-scheduler.d.ts +20 -4
- package/dist/services/session/background-check-in-scheduler.d.ts.map +1 -1
- package/dist/services/session/background-check-in-scheduler.js +108 -8
- package/dist/services/session/background-check-in-scheduler.js.map +1 -1
- package/dist/services/session/continuation-recovery-handler.d.ts +1 -0
- package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/continuation-recovery-handler.js +42 -0
- package/dist/services/session/continuation-recovery-handler.js.map +1 -1
- package/dist/services/session/continuation-state.d.ts +4 -1
- package/dist/services/session/continuation-state.d.ts.map +1 -1
- package/dist/services/session/continuation-state.js +5 -1
- package/dist/services/session/continuation-state.js.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.d.ts +3 -0
- package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.js +70 -0
- package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +5 -1
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/session/session-tool-tracker.d.ts +6 -0
- package/dist/services/session/session-tool-tracker.d.ts.map +1 -1
- package/dist/services/session/session-tool-tracker.js +17 -0
- package/dist/services/session/session-tool-tracker.js.map +1 -1
- package/dist/services/session/terminal-result-collector.d.ts.map +1 -1
- package/dist/services/session/terminal-result-collector.js +3 -0
- package/dist/services/session/terminal-result-collector.js.map +1 -1
- package/dist/services/session/turn-attempt-factory.d.ts +2 -0
- package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
- package/dist/services/session/turn-attempt-factory.js +1 -0
- package/dist/services/session/turn-attempt-factory.js.map +1 -1
- package/dist/services/session/turn-attempt.d.ts +6 -0
- package/dist/services/session/turn-attempt.d.ts.map +1 -1
- package/dist/services/session/turn-attempt.js +16 -0
- package/dist/services/session/turn-attempt.js.map +1 -1
- package/dist/services/session/turn-workflow.d.ts +1 -1
- package/dist/services/session/turn-workflow.d.ts.map +1 -1
- package/dist/services/session/turn-workflow.js +83 -19
- package/dist/services/session/turn-workflow.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +0 -4
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +1 -5
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +0 -1
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +0 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
- package/dist/services/subagents/execution-runner.d.ts.map +1 -1
- package/dist/services/subagents/execution-runner.js +39 -4
- package/dist/services/subagents/execution-runner.js.map +1 -1
- package/dist/services/subagents/nested-runner.d.ts.map +1 -1
- package/dist/services/subagents/nested-runner.js +23 -7
- package/dist/services/subagents/nested-runner.js.map +1 -1
- package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -1
- package/dist/services/subagents/subagent-async-registry.js +28 -2
- package/dist/services/subagents/subagent-async-registry.js.map +1 -1
- package/dist/services/subagents/subagent-notification-store.d.ts +2 -2
- package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
- package/dist/services/subagents/subagent-notification-store.js +3 -2
- package/dist/services/subagents/subagent-notification-store.js.map +1 -1
- package/dist/services/subagents/types.d.ts +31 -8
- package/dist/services/subagents/types.d.ts.map +1 -1
- package/dist/services/subagents/types.js +11 -0
- package/dist/services/subagents/types.js.map +1 -1
- package/dist/services/subagents/utils.d.ts.map +1 -1
- package/dist/services/subagents/utils.js +3 -0
- package/dist/services/subagents/utils.js.map +1 -1
- package/dist/test-helpers/terminal-e2e.d.ts +2 -0
- package/dist/test-helpers/terminal-e2e.d.ts.map +1 -1
- package/dist/test-helpers/terminal-e2e.js +13 -6
- package/dist/test-helpers/terminal-e2e.js.map +1 -1
- package/dist/test-helpers/vitest-network-guard.d.ts +2 -0
- package/dist/test-helpers/vitest-network-guard.d.ts.map +1 -0
- package/dist/test-helpers/vitest-network-guard.js +24 -0
- package/dist/test-helpers/vitest-network-guard.js.map +1 -0
- package/dist/tools/agent/configure-task-check-in.d.ts +17 -0
- package/dist/tools/agent/configure-task-check-in.d.ts.map +1 -0
- package/dist/tools/agent/configure-task-check-in.js +74 -0
- package/dist/tools/agent/configure-task-check-in.js.map +1 -0
- package/dist/tools/agent/run-subagent-async.d.ts +12 -2
- package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent-async.js +47 -5
- package/dist/tools/agent/run-subagent-async.js.map +1 -1
- package/dist/tools/agent/run-subagent.d.ts +15 -0
- package/dist/tools/agent/run-subagent.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent.js +24 -2
- package/dist/tools/agent/run-subagent.js.map +1 -1
- package/dist/tools/file/read-file.d.ts.map +1 -1
- package/dist/tools/file/read-file.js +48 -0
- package/dist/tools/file/read-file.js.map +1 -1
- package/dist/tools/format-helpers.d.ts.map +1 -1
- package/dist/tools/format-helpers.js +7 -0
- package/dist/tools/format-helpers.js.map +1 -1
- package/dist/tools/memory/memory-tools.js +1 -1
- package/dist/tools/memory/memory-tools.js.map +1 -1
- package/dist/tools/session-rollover/session-rollover-tool.d.ts.map +1 -1
- package/dist/tools/session-rollover/session-rollover-tool.js +1 -0
- package/dist/tools/session-rollover/session-rollover-tool.js.map +1 -1
- package/dist/tools/system/shell.d.ts +12 -0
- package/dist/tools/system/shell.d.ts.map +1 -1
- package/dist/tools/system/shell.js +22 -2
- package/dist/tools/system/shell.js.map +1 -1
- package/dist/tools/types.d.ts +4 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/utils/ai/token-usage.d.ts +5 -0
- package/dist/utils/ai/token-usage.d.ts.map +1 -1
- package/dist/utils/ai/token-usage.js +37 -0
- package/dist/utils/ai/token-usage.js.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.js +23 -1
- package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +0 -5
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/streaming/streaming-session-factory.d.ts +7 -0
- package/dist/utils/streaming/streaming-session-factory.d.ts.map +1 -1
- package/dist/utils/streaming/streaming-session-factory.js +65 -9
- package/dist/utils/streaming/streaming-session-factory.js.map +1 -1
- package/dist/utils/streaming/streaming-speed-tracker.d.ts +125 -0
- package/dist/utils/streaming/streaming-speed-tracker.d.ts.map +1 -0
- package/dist/utils/streaming/streaming-speed-tracker.js +265 -0
- package/dist/utils/streaming/streaming-speed-tracker.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-command.js","sourceRoot":"","sources":["../../source/utils/settings-command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"settings-command.js","sourceRoot":"","sources":["../../source/utils/settings-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,13 @@ export interface StreamingSessionFactoryDeps {
|
|
|
18
18
|
loggingService: ILoggingService;
|
|
19
19
|
setLastUsage: (usage: NormalizedUsage) => void;
|
|
20
20
|
setCodexRateLimit?: (rateLimit: CodexRateLimitInfo) => void;
|
|
21
|
+
setStreamingSpeed?: (speed: {
|
|
22
|
+
tps: number;
|
|
23
|
+
ttftMs?: number;
|
|
24
|
+
} | null) => void;
|
|
25
|
+
/** Seed for live char/token estimates; typically the last calibrated ratio for this conversation. */
|
|
26
|
+
charsPerToken?: number;
|
|
27
|
+
onCharsPerTokenCalibrated?: (charsPerToken: number) => void;
|
|
21
28
|
/**
|
|
22
29
|
* Budget evidence that did not stop the run.
|
|
23
30
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-session-factory.d.ts","sourceRoot":"","sources":["../../../source/utils/streaming/streaming-session-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,8BAA8B,EAC9B,KAAK,4BAA4B,EAClC,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"streaming-session-factory.d.ts","sourceRoot":"","sources":["../../../source/utils/streaming/streaming-session-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,8BAA8B,EAC9B,KAAK,4BAA4B,EAClC,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAsB7F,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;IAC/D,WAAW,EAAE,4BAA4B,CAAC,aAAa,CAAC,CAAC;IACzD,YAAY,EAAE,4BAA4B,CAAC,cAAc,CAAC,CAAC;IAC3D,sBAAsB,EAAE,4BAA4B,CAAC,wBAAwB,CAAC,CAAC;IAC/E,cAAc,EAAE,eAAe,CAAC;IAChC,YAAY,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC5D,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7E,qGAAqG;IACrG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACrD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,cAAc,CAAC;IAC5C,gCAAgC,CAAC,EAAE,OAAO,gCAAgC,CAAC;IAC3E,8BAA8B,CAAC,EAAE,OAAO,8BAA8B,CAAC;CACxE;AAED,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,EAAE,4BAA4B,CAAC,oBAAoB,CAAC,CAAC;IACvE,gBAAgB,EAAE,4BAA4B,CAAC,kBAAkB,CAAC,CAAC;IACnE,cAAc,EAAE,cAAc,CAAC;IAC/B,sBAAsB,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC5D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAqJzG"}
|
|
@@ -6,6 +6,26 @@ import { createConversationEventHandler, } from '../conversation/conversation-ev
|
|
|
6
6
|
import { createStreamingState } from '../conversation/conversation-utils.js';
|
|
7
7
|
import { createStreamingUpdateCoordinator } from './streaming-updater.js';
|
|
8
8
|
import { createMessageIdFactory } from '../message-id-factory.js';
|
|
9
|
+
import { StreamingSpeedTracker } from './streaming-speed-tracker.js';
|
|
10
|
+
function attachSettledSpeed(usage, tracker, now) {
|
|
11
|
+
const settled = tracker.getSettledTps({
|
|
12
|
+
completionTokens: usage.completion_tokens,
|
|
13
|
+
reasoningTokens: usage.reasoning_tokens,
|
|
14
|
+
completionMs: usage.completion_ms,
|
|
15
|
+
endTime: now,
|
|
16
|
+
});
|
|
17
|
+
if (settled) {
|
|
18
|
+
usage.tokens_per_second = settled.tps;
|
|
19
|
+
if (settled.approximate)
|
|
20
|
+
usage.tokens_per_second_estimated = true;
|
|
21
|
+
else
|
|
22
|
+
delete usage.tokens_per_second_estimated;
|
|
23
|
+
}
|
|
24
|
+
const ttftMs = tracker.getTtftMs();
|
|
25
|
+
if (ttftMs != null) {
|
|
26
|
+
usage.ttft_ms = ttftMs;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
9
29
|
export function createStreamingSession(deps, label) {
|
|
10
30
|
const now = deps.now ?? Date.now;
|
|
11
31
|
const createState = deps.createStreamingState ?? createStreamingState;
|
|
@@ -72,27 +92,63 @@ export function createStreamingSession(deps, label) {
|
|
|
72
92
|
trimMessages: deps.trimMessages,
|
|
73
93
|
annotateCommandMessage: deps.annotateCommandMessage,
|
|
74
94
|
}, streamingState);
|
|
95
|
+
const speedTracker = new StreamingSpeedTracker({ startTime: now(), charsPerToken: deps.charsPerToken });
|
|
96
|
+
const notifySpeed = () => {
|
|
97
|
+
if (!deps.setStreamingSpeed)
|
|
98
|
+
return;
|
|
99
|
+
const liveTps = speedTracker.getLiveTps(now());
|
|
100
|
+
if (liveTps !== null) {
|
|
101
|
+
deps.setStreamingSpeed({
|
|
102
|
+
tps: liveTps,
|
|
103
|
+
ttftMs: speedTracker.getTtftMs() ?? undefined,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
};
|
|
75
107
|
const applyConversationEvent = (event) => {
|
|
76
|
-
if (event.type === '
|
|
77
|
-
|
|
108
|
+
if (event.type === 'text_delta') {
|
|
109
|
+
speedTracker.recordDelta(event.delta, now());
|
|
110
|
+
notifySpeed();
|
|
111
|
+
}
|
|
112
|
+
else if (event.type === 'reasoning_delta') {
|
|
113
|
+
speedTracker.recordDelta(event.delta, now());
|
|
114
|
+
notifySpeed();
|
|
115
|
+
}
|
|
116
|
+
else if (event.type === 'tool_call_streaming_delta') {
|
|
117
|
+
speedTracker.recordCumulativeChars(event.argumentCharCount, now());
|
|
118
|
+
notifySpeed();
|
|
119
|
+
}
|
|
120
|
+
else if (event.type === 'tool_dispatched') {
|
|
121
|
+
// Tool execution isn't token generation and belongs to a separate model request than
|
|
122
|
+
// whatever comes next; reset so the next request's speed is measured from zero instead of
|
|
123
|
+
// being diluted by tool latency or averaged together with this request.
|
|
124
|
+
speedTracker.reset(now());
|
|
125
|
+
}
|
|
126
|
+
else if (event.type === 'usage_update') {
|
|
127
|
+
if (event.usage.completion_tokens) {
|
|
128
|
+
speedTracker.recordUsageTokens(event.usage.completion_tokens, now());
|
|
129
|
+
deps.onCharsPerTokenCalibrated?.(speedTracker.getCharsPerToken());
|
|
130
|
+
}
|
|
131
|
+
notifySpeed();
|
|
132
|
+
attachSettledSpeed(event.usage, speedTracker, now());
|
|
78
133
|
deps.loggingService.debug(`UI received streaming usage (${label})`, { usage: event.usage });
|
|
79
134
|
streamingState.latestUsage = event.usage;
|
|
80
135
|
deps.setLastUsage(event.usage);
|
|
81
136
|
}
|
|
82
137
|
else if (event.type === 'final') {
|
|
138
|
+
deps.setStreamingSpeed?.(null);
|
|
83
139
|
if (event.usage && !streamingState.latestUsage) {
|
|
84
|
-
// No
|
|
85
|
-
//
|
|
140
|
+
// No usage_update happened during this turn (e.g. a single non-tool-call request), so
|
|
141
|
+
// this is the only chance to compute settled TPS for it.
|
|
142
|
+
attachSettledSpeed(event.usage, speedTracker, now());
|
|
86
143
|
deps.loggingService.debug(`UI received final usage (${label})`, { usage: event.usage });
|
|
87
144
|
streamingState.latestUsage = event.usage;
|
|
88
145
|
deps.setLastUsage(event.usage);
|
|
89
146
|
}
|
|
90
147
|
else if (event.usage) {
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
// the
|
|
94
|
-
//
|
|
95
|
-
// via result.usage in applyServiceResult.
|
|
148
|
+
// A usage_update already computed the correct per-request TPS for the last request in
|
|
149
|
+
// this turn (before the tracker was reset for tool execution / subsequent requests).
|
|
150
|
+
// final's usage is the run-cumulative total, not a fresh generation to measure — leave
|
|
151
|
+
// the already-settled per-request value on streamingState.latestUsage untouched.
|
|
96
152
|
deps.loggingService.debug(`UI keeping last streamed turn usage; final carries run total (${label})`, {
|
|
97
153
|
finalUsage: event.usage,
|
|
98
154
|
shownUsage: streamingState.latestUsage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-session-factory.js","sourceRoot":"","sources":["../../../source/utils/streaming/streaming-session-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACL,8BAA8B,GAE/B,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAG1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"streaming-session-factory.js","sourceRoot":"","sources":["../../../source/utils/streaming/streaming-session-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility for tracking token streaming speed (tokens per second / TPS).
|
|
3
|
+
*
|
|
4
|
+
* Handles both:
|
|
5
|
+
* 1. Live generation speed during streaming (using exact token updates or character heuristics).
|
|
6
|
+
* 2. Settled decoding speed calculated at the end of a generation turn.
|
|
7
|
+
*
|
|
8
|
+
* A single agent turn can involve multiple separate model requests interleaved with tool
|
|
9
|
+
* execution (model generates, calls a tool, tool runs, model resumes with a fresh request).
|
|
10
|
+
* Tool-execution latency is not generation, so the tracker is reset at each such boundary
|
|
11
|
+
* (see `reset()`) rather than averaged across the whole turn — each request's speed is measured
|
|
12
|
+
* independently, starting from zero.
|
|
13
|
+
*/
|
|
14
|
+
export interface StreamingSpeedSnapshot {
|
|
15
|
+
tps: number;
|
|
16
|
+
ttftMs?: number;
|
|
17
|
+
elapsedMs: number;
|
|
18
|
+
estimatedTokens: number;
|
|
19
|
+
}
|
|
20
|
+
export interface SettledStreamingSpeed {
|
|
21
|
+
tps: number;
|
|
22
|
+
approximate: boolean;
|
|
23
|
+
}
|
|
24
|
+
/** Average characters per token heuristic for English/code text when provider does not stream token counts. */
|
|
25
|
+
export declare const DEFAULT_CHARS_PER_TOKEN = 3.8;
|
|
26
|
+
export declare function formatTokensPerSecond(tps: number, approximate?: boolean): string;
|
|
27
|
+
export declare class StreamingSpeedTracker {
|
|
28
|
+
private startTime;
|
|
29
|
+
private firstTokenTime;
|
|
30
|
+
private lastUpdateTime;
|
|
31
|
+
private streamedTextChars;
|
|
32
|
+
private toolArgChars;
|
|
33
|
+
private committedToolArgChars;
|
|
34
|
+
private accumulatedChars;
|
|
35
|
+
private exactTokens;
|
|
36
|
+
/** Character count at the last `recordUsageTokens` sample, so later deltas can be added on top. */
|
|
37
|
+
private charsAtExactTokens;
|
|
38
|
+
/**
|
|
39
|
+
* Chars-per-token used for live estimates before exact usage arrives. Starts at
|
|
40
|
+
* `DEFAULT_CHARS_PER_TOKEN` and is recalibrated from each request's real usage in
|
|
41
|
+
* `recordUsageTokens`, so it survives `reset()` and carries forward to seed the next request's
|
|
42
|
+
* estimate within the same turn.
|
|
43
|
+
*/
|
|
44
|
+
private charsPerToken;
|
|
45
|
+
/** Rolling history of (time, cumulative token count) samples, oldest first, used for windowed live TPS. */
|
|
46
|
+
private samples;
|
|
47
|
+
constructor(options?: {
|
|
48
|
+
startTime?: number;
|
|
49
|
+
charsPerToken?: number;
|
|
50
|
+
});
|
|
51
|
+
/**
|
|
52
|
+
* Reset all accumulated state so the next recorded token starts a brand-new measurement,
|
|
53
|
+
* unrelated to anything recorded before this call. Call this at request boundaries within a
|
|
54
|
+
* turn — e.g. when a tool starts executing — so tool latency never mixes into decode speed and
|
|
55
|
+
* the next model request's speed isn't diluted by a previous request's average.
|
|
56
|
+
*
|
|
57
|
+
* `charsPerToken` is deliberately NOT reset — it carries the last request's calibrated ratio
|
|
58
|
+
* forward to seed the next request's live estimate.
|
|
59
|
+
*/
|
|
60
|
+
reset(now?: number): void;
|
|
61
|
+
getCharsPerToken(): number;
|
|
62
|
+
private refreshAccumulatedChars;
|
|
63
|
+
private recordSample;
|
|
64
|
+
/**
|
|
65
|
+
* Record arrival of a text or reasoning delta string.
|
|
66
|
+
*/
|
|
67
|
+
recordDelta(text?: string | null, now?: number): void;
|
|
68
|
+
/**
|
|
69
|
+
* Record cumulative characters streamed (e.g. from tool call argument streaming).
|
|
70
|
+
* Argument counts are cumulative per tool call, so a drop commits the previous
|
|
71
|
+
* tool's chars and starts a new one. Text and tool-arg chars are summed: both
|
|
72
|
+
* count toward completion tokens.
|
|
73
|
+
*/
|
|
74
|
+
recordCumulativeChars(cumulativeChars: number, now?: number): void;
|
|
75
|
+
/**
|
|
76
|
+
* Record exact token counts if the provider streams usage updates.
|
|
77
|
+
* Calibrates the live chars-per-token ratio for this request's remaining
|
|
78
|
+
* deltas, not only the next request.
|
|
79
|
+
*/
|
|
80
|
+
recordUsageTokens(completionTokens: number, now?: number): void;
|
|
81
|
+
/**
|
|
82
|
+
* Recalibrate the chars-per-token ratio from this request's real accumulated chars vs. its
|
|
83
|
+
* exact token count, so later deltas of this request and the next request after `reset()`
|
|
84
|
+
* start from an observed ratio instead of the generic default. Ignored if there isn't enough
|
|
85
|
+
* accumulated text to trust the sample (e.g. a tool-only request with no generated text).
|
|
86
|
+
*/
|
|
87
|
+
private calibrateCharsPerToken;
|
|
88
|
+
/**
|
|
89
|
+
* Time to first token in milliseconds, or null if no tokens received yet.
|
|
90
|
+
*/
|
|
91
|
+
getTtftMs(): number | null;
|
|
92
|
+
/**
|
|
93
|
+
* Current estimated or exact token count generated so far.
|
|
94
|
+
*/
|
|
95
|
+
getEstimatedTokens(): number;
|
|
96
|
+
/**
|
|
97
|
+
* Get live tokens per second during an in-flight stream.
|
|
98
|
+
*
|
|
99
|
+
* Computed over a trailing window (LIVE_WINDOW_MS) of recent samples rather than the
|
|
100
|
+
* whole-request average, so the displayed number tracks current throughput instead of trailing
|
|
101
|
+
* behind a slow start. Falls back to the full-history average until enough time has elapsed
|
|
102
|
+
* since the first token to fill a window. `reset()` clears history at request boundaries, so
|
|
103
|
+
* this never spans across a tool-execution gap or a prior request.
|
|
104
|
+
*/
|
|
105
|
+
getLiveTps(now?: number): number | null;
|
|
106
|
+
/**
|
|
107
|
+
* Calculate settled tokens per second when generation finishes.
|
|
108
|
+
*
|
|
109
|
+
* Prefers the provider's `completion_ms` when present. Otherwise measures
|
|
110
|
+
* wall-clock from the first visible token. Returns null rather than silently
|
|
111
|
+
* falling back to request start (which would mix TTFT into decode speed).
|
|
112
|
+
*/
|
|
113
|
+
getSettledTps(options?: {
|
|
114
|
+
completionTokens?: number;
|
|
115
|
+
reasoningTokens?: number;
|
|
116
|
+
completionMs?: number;
|
|
117
|
+
endTime?: number;
|
|
118
|
+
}): SettledStreamingSpeed | null;
|
|
119
|
+
private isHiddenReasoningInflated;
|
|
120
|
+
/**
|
|
121
|
+
* Returns a complete snapshot of current speed metrics.
|
|
122
|
+
*/
|
|
123
|
+
getSnapshot(now?: number): StreamingSpeedSnapshot | null;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=streaming-speed-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming-speed-tracker.d.ts","sourceRoot":"","sources":["../../../source/utils/streaming/streaming-speed-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,+GAA+G;AAC/G,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAa3C,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,MAAM,CAG9E;AAOD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,WAAW,CAAuB;IAC1C,mGAAmG;IACnG,OAAO,CAAC,kBAAkB,CAAK;IAC/B;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAAS;IAC9B,2GAA2G;IAC3G,OAAO,CAAC,OAAO,CAAqB;IAEpC,YAAY,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EAGnE;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,GAAG,GAAE,MAAmB,GAAG,IAAI,CAW3C;IAEM,gBAAgB,IAAI,MAAM,CAEhC;IAED,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,YAAY;IASpB;;OAEG;IACI,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAUvE;IAED;;;;;OAKG;IACI,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAYpF;IAED;;;;OAIG;IACI,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAMjF;IAED;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACI,SAAS,IAAI,MAAM,GAAG,IAAI,CAGhC;IAED;;OAEG;IACI,kBAAkB,IAAI,MAAM,CAMlC;IAED;;;;;;;;OAQG;IACI,UAAU,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM,GAAG,IAAI,CAkCzD;IAED;;;;;;OAMG;IACI,aAAa,CAAC,OAAO,CAAC,EAAE;QAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,qBAAqB,GAAG,IAAI,CA0B/B;IAED,OAAO,CAAC,yBAAyB;IAOjC;;OAEG;IACI,WAAW,CAAC,GAAG,GAAE,MAAmB,GAAG,sBAAsB,GAAG,IAAI,CAU1E;CACF"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility for tracking token streaming speed (tokens per second / TPS).
|
|
3
|
+
*
|
|
4
|
+
* Handles both:
|
|
5
|
+
* 1. Live generation speed during streaming (using exact token updates or character heuristics).
|
|
6
|
+
* 2. Settled decoding speed calculated at the end of a generation turn.
|
|
7
|
+
*
|
|
8
|
+
* A single agent turn can involve multiple separate model requests interleaved with tool
|
|
9
|
+
* execution (model generates, calls a tool, tool runs, model resumes with a fresh request).
|
|
10
|
+
* Tool-execution latency is not generation, so the tracker is reset at each such boundary
|
|
11
|
+
* (see `reset()`) rather than averaged across the whole turn — each request's speed is measured
|
|
12
|
+
* independently, starting from zero.
|
|
13
|
+
*/
|
|
14
|
+
/** Average characters per token heuristic for English/code text when provider does not stream token counts. */
|
|
15
|
+
export const DEFAULT_CHARS_PER_TOKEN = 3.8;
|
|
16
|
+
/** Live speed is computed over a trailing window so it tracks current throughput, not the whole-request average. */
|
|
17
|
+
const LIVE_WINDOW_MS = 3000;
|
|
18
|
+
/** Bounds for a request's observed chars-per-token ratio, so one noisy request can't skew future estimates wildly. */
|
|
19
|
+
const MIN_CALIBRATED_CHARS_PER_TOKEN = 1;
|
|
20
|
+
const MAX_CALIBRATED_CHARS_PER_TOKEN = 10;
|
|
21
|
+
/** Minimum accumulated characters required before trusting a request's ratio for calibration. */
|
|
22
|
+
const MIN_CHARS_FOR_CALIBRATION = 20;
|
|
23
|
+
/** Completion tokens this far above the visible char estimate imply hidden tokens in the numerator. */
|
|
24
|
+
const HIDDEN_TOKEN_RATIO = 2;
|
|
25
|
+
export function formatTokensPerSecond(tps, approximate = false) {
|
|
26
|
+
const value = tps.toFixed(1);
|
|
27
|
+
return approximate ? `~${value} tok/s` : `${value} tok/s`;
|
|
28
|
+
}
|
|
29
|
+
export class StreamingSpeedTracker {
|
|
30
|
+
startTime;
|
|
31
|
+
firstTokenTime = null;
|
|
32
|
+
lastUpdateTime = null;
|
|
33
|
+
streamedTextChars = 0;
|
|
34
|
+
toolArgChars = 0;
|
|
35
|
+
committedToolArgChars = 0;
|
|
36
|
+
accumulatedChars = 0;
|
|
37
|
+
exactTokens = null;
|
|
38
|
+
/** Character count at the last `recordUsageTokens` sample, so later deltas can be added on top. */
|
|
39
|
+
charsAtExactTokens = 0;
|
|
40
|
+
/**
|
|
41
|
+
* Chars-per-token used for live estimates before exact usage arrives. Starts at
|
|
42
|
+
* `DEFAULT_CHARS_PER_TOKEN` and is recalibrated from each request's real usage in
|
|
43
|
+
* `recordUsageTokens`, so it survives `reset()` and carries forward to seed the next request's
|
|
44
|
+
* estimate within the same turn.
|
|
45
|
+
*/
|
|
46
|
+
charsPerToken;
|
|
47
|
+
/** Rolling history of (time, cumulative token count) samples, oldest first, used for windowed live TPS. */
|
|
48
|
+
samples = [];
|
|
49
|
+
constructor(options) {
|
|
50
|
+
this.startTime = options?.startTime ?? Date.now();
|
|
51
|
+
this.charsPerToken = options?.charsPerToken ?? DEFAULT_CHARS_PER_TOKEN;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Reset all accumulated state so the next recorded token starts a brand-new measurement,
|
|
55
|
+
* unrelated to anything recorded before this call. Call this at request boundaries within a
|
|
56
|
+
* turn — e.g. when a tool starts executing — so tool latency never mixes into decode speed and
|
|
57
|
+
* the next model request's speed isn't diluted by a previous request's average.
|
|
58
|
+
*
|
|
59
|
+
* `charsPerToken` is deliberately NOT reset — it carries the last request's calibrated ratio
|
|
60
|
+
* forward to seed the next request's live estimate.
|
|
61
|
+
*/
|
|
62
|
+
reset(now = Date.now()) {
|
|
63
|
+
this.startTime = now;
|
|
64
|
+
this.firstTokenTime = null;
|
|
65
|
+
this.lastUpdateTime = null;
|
|
66
|
+
this.streamedTextChars = 0;
|
|
67
|
+
this.toolArgChars = 0;
|
|
68
|
+
this.committedToolArgChars = 0;
|
|
69
|
+
this.accumulatedChars = 0;
|
|
70
|
+
this.exactTokens = null;
|
|
71
|
+
this.charsAtExactTokens = 0;
|
|
72
|
+
this.samples = [];
|
|
73
|
+
}
|
|
74
|
+
getCharsPerToken() {
|
|
75
|
+
return this.charsPerToken;
|
|
76
|
+
}
|
|
77
|
+
refreshAccumulatedChars() {
|
|
78
|
+
this.accumulatedChars = this.streamedTextChars + this.committedToolArgChars + this.toolArgChars;
|
|
79
|
+
}
|
|
80
|
+
recordSample(now) {
|
|
81
|
+
this.samples.push({ time: now, tokens: this.getEstimatedTokens() });
|
|
82
|
+
// Drop samples older than the window plus one extra so we always have a boundary sample to interpolate from.
|
|
83
|
+
const cutoff = now - LIVE_WINDOW_MS * 2;
|
|
84
|
+
while (this.samples.length > 1 && this.samples[0].time < cutoff) {
|
|
85
|
+
this.samples.shift();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Record arrival of a text or reasoning delta string.
|
|
90
|
+
*/
|
|
91
|
+
recordDelta(text, now = Date.now()) {
|
|
92
|
+
const length = text?.length ?? 0;
|
|
93
|
+
if (length <= 0)
|
|
94
|
+
return;
|
|
95
|
+
if (this.firstTokenTime === null) {
|
|
96
|
+
this.firstTokenTime = now;
|
|
97
|
+
}
|
|
98
|
+
this.streamedTextChars += length;
|
|
99
|
+
this.refreshAccumulatedChars();
|
|
100
|
+
this.lastUpdateTime = now;
|
|
101
|
+
this.recordSample(now);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Record cumulative characters streamed (e.g. from tool call argument streaming).
|
|
105
|
+
* Argument counts are cumulative per tool call, so a drop commits the previous
|
|
106
|
+
* tool's chars and starts a new one. Text and tool-arg chars are summed: both
|
|
107
|
+
* count toward completion tokens.
|
|
108
|
+
*/
|
|
109
|
+
recordCumulativeChars(cumulativeChars, now = Date.now()) {
|
|
110
|
+
if (cumulativeChars <= 0)
|
|
111
|
+
return;
|
|
112
|
+
if (this.firstTokenTime === null) {
|
|
113
|
+
this.firstTokenTime = now;
|
|
114
|
+
}
|
|
115
|
+
if (cumulativeChars < this.toolArgChars) {
|
|
116
|
+
this.committedToolArgChars += this.toolArgChars;
|
|
117
|
+
}
|
|
118
|
+
this.toolArgChars = cumulativeChars;
|
|
119
|
+
this.refreshAccumulatedChars();
|
|
120
|
+
this.lastUpdateTime = now;
|
|
121
|
+
this.recordSample(now);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Record exact token counts if the provider streams usage updates.
|
|
125
|
+
* Calibrates the live chars-per-token ratio for this request's remaining
|
|
126
|
+
* deltas, not only the next request.
|
|
127
|
+
*/
|
|
128
|
+
recordUsageTokens(completionTokens, now = Date.now()) {
|
|
129
|
+
this.exactTokens = completionTokens;
|
|
130
|
+
this.lastUpdateTime = now;
|
|
131
|
+
this.calibrateCharsPerToken(completionTokens);
|
|
132
|
+
this.charsAtExactTokens = this.accumulatedChars;
|
|
133
|
+
this.recordSample(now);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Recalibrate the chars-per-token ratio from this request's real accumulated chars vs. its
|
|
137
|
+
* exact token count, so later deltas of this request and the next request after `reset()`
|
|
138
|
+
* start from an observed ratio instead of the generic default. Ignored if there isn't enough
|
|
139
|
+
* accumulated text to trust the sample (e.g. a tool-only request with no generated text).
|
|
140
|
+
*/
|
|
141
|
+
calibrateCharsPerToken(exactTokens) {
|
|
142
|
+
if (exactTokens <= 0 || this.accumulatedChars < MIN_CHARS_FOR_CALIBRATION)
|
|
143
|
+
return;
|
|
144
|
+
const ratio = this.accumulatedChars / exactTokens;
|
|
145
|
+
if (!Number.isFinite(ratio) || ratio <= 0)
|
|
146
|
+
return;
|
|
147
|
+
this.charsPerToken = Math.min(MAX_CALIBRATED_CHARS_PER_TOKEN, Math.max(MIN_CALIBRATED_CHARS_PER_TOKEN, ratio));
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Time to first token in milliseconds, or null if no tokens received yet.
|
|
151
|
+
*/
|
|
152
|
+
getTtftMs() {
|
|
153
|
+
if (this.firstTokenTime === null)
|
|
154
|
+
return null;
|
|
155
|
+
return Math.max(0, this.firstTokenTime - this.startTime);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Current estimated or exact token count generated so far.
|
|
159
|
+
*/
|
|
160
|
+
getEstimatedTokens() {
|
|
161
|
+
if (this.exactTokens !== null) {
|
|
162
|
+
const extraChars = Math.max(0, this.accumulatedChars - this.charsAtExactTokens);
|
|
163
|
+
return this.exactTokens + Math.round(extraChars / this.charsPerToken);
|
|
164
|
+
}
|
|
165
|
+
return Math.round(this.accumulatedChars / this.charsPerToken);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get live tokens per second during an in-flight stream.
|
|
169
|
+
*
|
|
170
|
+
* Computed over a trailing window (LIVE_WINDOW_MS) of recent samples rather than the
|
|
171
|
+
* whole-request average, so the displayed number tracks current throughput instead of trailing
|
|
172
|
+
* behind a slow start. Falls back to the full-history average until enough time has elapsed
|
|
173
|
+
* since the first token to fill a window. `reset()` clears history at request boundaries, so
|
|
174
|
+
* this never spans across a tool-execution gap or a prior request.
|
|
175
|
+
*/
|
|
176
|
+
getLiveTps(now = Date.now()) {
|
|
177
|
+
if (this.firstTokenTime === null)
|
|
178
|
+
return null;
|
|
179
|
+
const generationDurationMs = now - this.firstTokenTime;
|
|
180
|
+
// Require at least 200ms of generation to avoid huge spikes on the first chunk
|
|
181
|
+
if (generationDurationMs < 200) {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
const tokensNow = this.getEstimatedTokens();
|
|
185
|
+
if (tokensNow <= 0)
|
|
186
|
+
return null;
|
|
187
|
+
const windowStart = now - LIVE_WINDOW_MS;
|
|
188
|
+
// Find the newest sample at or before windowStart to anchor the window; if none exists
|
|
189
|
+
// (turn is younger than the window), anchor at the first token instead.
|
|
190
|
+
let anchor = null;
|
|
191
|
+
for (const sample of this.samples) {
|
|
192
|
+
if (sample.time <= windowStart) {
|
|
193
|
+
anchor = sample;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const anchorTime = anchor ? anchor.time : this.firstTokenTime;
|
|
200
|
+
const anchorTokens = anchor ? anchor.tokens : 0;
|
|
201
|
+
const durationMs = now - anchorTime;
|
|
202
|
+
const tokens = tokensNow - anchorTokens;
|
|
203
|
+
if (durationMs < 200 || tokens <= 0)
|
|
204
|
+
return null;
|
|
205
|
+
const durationSec = durationMs / 1000;
|
|
206
|
+
const tps = tokens / durationSec;
|
|
207
|
+
return Number.isFinite(tps) && tps > 0 ? Math.round(tps * 10) / 10 : null;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Calculate settled tokens per second when generation finishes.
|
|
211
|
+
*
|
|
212
|
+
* Prefers the provider's `completion_ms` when present. Otherwise measures
|
|
213
|
+
* wall-clock from the first visible token. Returns null rather than silently
|
|
214
|
+
* falling back to request start (which would mix TTFT into decode speed).
|
|
215
|
+
*/
|
|
216
|
+
getSettledTps(options) {
|
|
217
|
+
const rawTokens = options?.completionTokens ?? this.getEstimatedTokens();
|
|
218
|
+
if (rawTokens <= 0)
|
|
219
|
+
return null;
|
|
220
|
+
const completionMs = options?.completionMs;
|
|
221
|
+
const hasProviderDuration = completionMs != null && completionMs > 0;
|
|
222
|
+
const endTime = options?.endTime ?? Date.now();
|
|
223
|
+
const durationMs = hasProviderDuration
|
|
224
|
+
? completionMs
|
|
225
|
+
: this.firstTokenTime !== null
|
|
226
|
+
? endTime - this.firstTokenTime
|
|
227
|
+
: null;
|
|
228
|
+
if (durationMs == null || durationMs <= 0)
|
|
229
|
+
return null;
|
|
230
|
+
// Provider duration already covers hidden reasoning. Only strip those tokens
|
|
231
|
+
// from the wall-clock path, where the clock started at the first visible delta.
|
|
232
|
+
const reasoningTokens = options?.reasoningTokens ?? 0;
|
|
233
|
+
const visibleTokens = rawTokens - reasoningTokens;
|
|
234
|
+
const subtractedReasoning = !hasProviderDuration && reasoningTokens > 0 && visibleTokens > 0;
|
|
235
|
+
const tokens = subtractedReasoning ? visibleTokens : rawTokens;
|
|
236
|
+
const tps = tokens / (durationMs / 1000);
|
|
237
|
+
if (!Number.isFinite(tps) || tps <= 0)
|
|
238
|
+
return null;
|
|
239
|
+
const approximate = !hasProviderDuration && !subtractedReasoning && this.isHiddenReasoningInflated(rawTokens);
|
|
240
|
+
return { tps: Math.round(tps * 10) / 10, approximate };
|
|
241
|
+
}
|
|
242
|
+
isHiddenReasoningInflated(completionTokens) {
|
|
243
|
+
if (this.accumulatedChars < MIN_CHARS_FOR_CALIBRATION)
|
|
244
|
+
return false;
|
|
245
|
+
const visibleEstimate = this.accumulatedChars / this.charsPerToken;
|
|
246
|
+
if (!Number.isFinite(visibleEstimate) || visibleEstimate <= 0)
|
|
247
|
+
return false;
|
|
248
|
+
return completionTokens >= visibleEstimate * HIDDEN_TOKEN_RATIO;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Returns a complete snapshot of current speed metrics.
|
|
252
|
+
*/
|
|
253
|
+
getSnapshot(now = Date.now()) {
|
|
254
|
+
const tps = this.getLiveTps(now);
|
|
255
|
+
if (tps === null)
|
|
256
|
+
return null;
|
|
257
|
+
return {
|
|
258
|
+
tps,
|
|
259
|
+
ttftMs: this.getTtftMs() ?? undefined,
|
|
260
|
+
elapsedMs: Math.max(0, now - this.startTime),
|
|
261
|
+
estimatedTokens: this.getEstimatedTokens(),
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=streaming-speed-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming-speed-tracker.js","sourceRoot":"","sources":["../../../source/utils/streaming/streaming-speed-tracker.ts"],"names":[],"mappings":"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"}
|