@xgjktech/xg_cwork_im 1.19.42 → 1.19.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +492 -492
- package/dist/src/account-connection.d.ts +1 -1
- package/dist/src/account-connection.d.ts.map +1 -1
- package/dist/src/account-connection.js +25 -136
- package/dist/src/account-connection.js.map +1 -1
- package/dist/src/account-reconciler.d.ts +8 -17
- package/dist/src/account-reconciler.d.ts.map +1 -1
- package/dist/src/account-reconciler.js +11 -31
- package/dist/src/account-reconciler.js.map +1 -1
- package/dist/src/account-reconciler.test.js +1 -19
- package/dist/src/account-reconciler.test.js.map +1 -1
- package/dist/src/action-store-access.d.ts +0 -2
- package/dist/src/action-store-access.d.ts.map +1 -1
- package/dist/src/action-store-access.js +0 -7
- package/dist/src/action-store-access.js.map +1 -1
- package/dist/src/active-round-registry.d.ts +0 -6
- package/dist/src/active-round-registry.d.ts.map +1 -1
- package/dist/src/active-round-registry.js +2 -27
- package/dist/src/active-round-registry.js.map +1 -1
- package/dist/src/agent-stream-client-registry.d.ts +0 -2
- package/dist/src/agent-stream-client-registry.d.ts.map +1 -1
- package/dist/src/agent-stream-client-registry.js +1 -6
- package/dist/src/agent-stream-client-registry.js.map +1 -1
- package/dist/src/apply-sync-mapping.d.ts +1 -1
- package/dist/src/apply-sync-mapping.d.ts.map +1 -1
- package/dist/src/auth.d.ts +0 -2
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/auth.js +0 -4
- package/dist/src/auth.js.map +1 -1
- package/dist/src/block-streaming-config.test.js +1 -7
- package/dist/src/block-streaming-config.test.js.map +1 -1
- package/dist/src/build-project-prompt.test.js +18 -18
- package/dist/src/channel-config.d.ts +17 -83
- package/dist/src/channel-config.d.ts.map +1 -1
- package/dist/src/channel-config.js +13 -46
- package/dist/src/channel-config.js.map +1 -1
- package/dist/src/channel-config.test.js +1 -58
- package/dist/src/channel-config.test.js.map +1 -1
- package/dist/src/channel.d.ts +3 -4
- package/dist/src/channel.d.ts.map +1 -1
- package/dist/src/channel.js +4 -127
- package/dist/src/channel.js.map +1 -1
- package/dist/src/connection.d.ts +0 -28
- package/dist/src/connection.d.ts.map +1 -1
- package/dist/src/connection.js +78 -155
- package/dist/src/connection.js.map +1 -1
- package/dist/src/deliver-text.test.js +22 -22
- package/dist/src/delivery/deliver-text.test.js +22 -22
- package/dist/src/delivery/turn-deliver-buffer.test.js +25 -25
- package/dist/src/dispatch-mentioned-reply.d.ts +2 -7
- package/dist/src/dispatch-mentioned-reply.d.ts.map +1 -1
- package/dist/src/dispatch-mentioned-reply.js +68 -243
- package/dist/src/dispatch-mentioned-reply.js.map +1 -1
- package/dist/src/gateway-session-queue.d.ts +6 -2
- package/dist/src/gateway-session-queue.d.ts.map +1 -1
- package/dist/src/gateway-session-queue.js +21 -78
- package/dist/src/gateway-session-queue.js.map +1 -1
- package/dist/src/group-history-tool.d.ts +1 -1
- package/dist/src/group-history-tool.d.ts.map +1 -1
- package/dist/src/inbound-display.d.ts.map +1 -1
- package/dist/src/inbound-display.js +1 -2
- package/dist/src/inbound-display.js.map +1 -1
- package/dist/src/inbound-input-media.d.ts +1 -1
- package/dist/src/inbound-input-media.d.ts.map +1 -1
- package/dist/src/inbound-media-local.d.ts +1 -1
- package/dist/src/inbound-media-local.d.ts.map +1 -1
- package/dist/src/inbound-model.d.ts +0 -9
- package/dist/src/inbound-model.d.ts.map +1 -1
- package/dist/src/inbound-model.js +0 -26
- package/dist/src/inbound-model.js.map +1 -1
- package/dist/src/inbound-model.test.js +1 -23
- package/dist/src/inbound-model.test.js.map +1 -1
- package/dist/src/inbound-terminal-state.d.ts +0 -2
- package/dist/src/inbound-terminal-state.d.ts.map +1 -1
- package/dist/src/inbound-terminal-state.js +2 -7
- package/dist/src/inbound-terminal-state.js.map +1 -1
- package/dist/src/modified-file-push-tracker.d.ts +24 -0
- package/dist/src/modified-file-push-tracker.d.ts.map +1 -0
- package/dist/src/modified-file-push-tracker.js +125 -0
- package/dist/src/modified-file-push-tracker.js.map +1 -0
- package/dist/src/nas-volumes.d.ts +2 -12
- package/dist/src/nas-volumes.d.ts.map +1 -1
- package/dist/src/nas-volumes.js +37 -147
- package/dist/src/nas-volumes.js.map +1 -1
- package/dist/src/nas-volumes.test.js +7 -39
- package/dist/src/nas-volumes.test.js.map +1 -1
- package/dist/src/per-message-model-pending.d.ts +3 -38
- package/dist/src/per-message-model-pending.d.ts.map +1 -1
- package/dist/src/per-message-model-pending.js +7 -96
- package/dist/src/per-message-model-pending.js.map +1 -1
- package/dist/src/plan/action-dispatch-event-compat.test.d.ts +2 -0
- package/dist/src/plan/action-dispatch-event-compat.test.d.ts.map +1 -0
- package/dist/src/plan/action-dispatch-event-compat.test.js +81 -0
- package/dist/src/plan/action-dispatch-event-compat.test.js.map +1 -0
- package/dist/src/plan/action-store-lifecycle.test.js +5 -5
- package/dist/src/plan/plan-core-db.test.js +9 -9
- package/dist/src/plan/plan-core-snapshot.test.js +9 -9
- package/dist/src/plan-event-subscription.d.ts +1 -1
- package/dist/src/plan-event-subscription.d.ts.map +1 -1
- package/dist/src/plan-stat-event.d.ts +15 -4
- package/dist/src/plan-stat-event.d.ts.map +1 -1
- package/dist/src/plan-stat-event.js +37 -4
- package/dist/src/plan-stat-event.js.map +1 -1
- package/dist/src/plan-stat-event.test.js +118 -1
- package/dist/src/plan-stat-event.test.js.map +1 -1
- package/dist/src/plan-store-access.d.ts +23 -0
- package/dist/src/plan-store-access.d.ts.map +1 -0
- package/dist/src/plan-store-access.js +96 -0
- package/dist/src/plan-store-access.js.map +1 -0
- package/dist/src/plan-store-access.test.d.ts +2 -0
- package/dist/src/plan-store-access.test.d.ts.map +1 -0
- package/dist/src/plan-store-access.test.js +207 -0
- package/dist/src/plan-store-access.test.js.map +1 -0
- package/dist/src/plan-tool-middleware.d.ts +11 -3
- package/dist/src/plan-tool-middleware.d.ts.map +1 -1
- package/dist/src/plan-tool-middleware.js +60 -11
- package/dist/src/plan-tool-middleware.js.map +1 -1
- package/dist/src/plan-tool-middleware.test.js +603 -83
- package/dist/src/plan-tool-middleware.test.js.map +1 -1
- package/dist/src/plan-ws-registry.d.ts +0 -4
- package/dist/src/plan-ws-registry.d.ts.map +1 -1
- package/dist/src/plan-ws-registry.js +0 -12
- package/dist/src/plan-ws-registry.js.map +1 -1
- package/dist/src/plan-ws-registry.test.js +1 -19
- package/dist/src/plan-ws-registry.test.js.map +1 -1
- package/dist/src/progress-display.d.ts +77 -0
- package/dist/src/progress-display.d.ts.map +1 -0
- package/dist/src/progress-display.js +420 -0
- package/dist/src/progress-display.js.map +1 -0
- package/dist/src/register-per-message-model-hook.d.ts +2 -10
- package/dist/src/register-per-message-model-hook.d.ts.map +1 -1
- package/dist/src/register-per-message-model-hook.js +6 -32
- package/dist/src/register-per-message-model-hook.js.map +1 -1
- package/dist/src/resolve-inbound-group-prompt.d.ts +1 -17
- package/dist/src/resolve-inbound-group-prompt.d.ts.map +1 -1
- package/dist/src/resolve-inbound-group-prompt.js +2 -16
- package/dist/src/resolve-inbound-group-prompt.js.map +1 -1
- package/dist/src/run-usage-session.d.ts +1 -4
- package/dist/src/run-usage-session.d.ts.map +1 -1
- package/dist/src/run-usage-session.js +1 -13
- package/dist/src/run-usage-session.js.map +1 -1
- package/dist/src/run-usage.d.ts +0 -15
- package/dist/src/run-usage.d.ts.map +1 -1
- package/dist/src/run-usage.js +4 -30
- package/dist/src/run-usage.js.map +1 -1
- package/dist/src/run-usage.test.js +11 -99
- package/dist/src/run-usage.test.js.map +1 -1
- package/dist/src/send-file-tool.d.ts +1 -1
- package/dist/src/send-file-tool.d.ts.map +1 -1
- package/dist/src/send-group-message-tool.d.ts +1 -1
- package/dist/src/send-group-message-tool.d.ts.map +1 -1
- package/dist/src/session/build-project-prompt.test.js +18 -18
- package/dist/src/session-im-context.d.ts +0 -2
- package/dist/src/session-im-context.d.ts.map +1 -1
- package/dist/src/session-im-context.js +2 -11
- package/dist/src/session-im-context.js.map +1 -1
- package/dist/src/subagent-delivery-phase.d.ts +10 -0
- package/dist/src/subagent-delivery-phase.d.ts.map +1 -0
- package/dist/src/subagent-delivery-phase.js +4 -0
- package/dist/src/subagent-delivery-phase.js.map +1 -0
- package/dist/src/subagent-delivery-phase.test.d.ts +2 -0
- package/dist/src/subagent-delivery-phase.test.d.ts.map +1 -0
- package/dist/src/subagent-delivery-phase.test.js +12 -0
- package/dist/src/subagent-delivery-phase.test.js.map +1 -0
- package/dist/src/subagent-monitor.d.ts +1 -14
- package/dist/src/subagent-monitor.d.ts.map +1 -1
- package/dist/src/subagent-monitor.js +36 -164
- package/dist/src/subagent-monitor.js.map +1 -1
- package/dist/src/subagent-monitor.test.js +0 -121
- package/dist/src/subagent-monitor.test.js.map +1 -1
- package/dist/src/tool-json-result.d.ts +1 -1
- package/dist/src/tool-json-result.d.ts.map +1 -1
- package/dist/src/turn/turn-agent-event-subscription.d.ts.map +1 -1
- package/dist/src/turn/turn-agent-event-subscription.js +14 -0
- package/dist/src/turn/turn-agent-event-subscription.js.map +1 -1
- package/dist/src/turn-deliver-buffer.test.js +25 -25
- package/dist/src/types.d.ts +1 -48
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/workspace/nas-volumes.test.js +3 -2
- package/dist/src/workspace/nas-volumes.test.js.map +1 -1
- package/dist/src/ws-inbound-schema.d.ts.map +1 -1
- package/dist/src/ws-inbound-schema.js +0 -1
- package/dist/src/ws-inbound-schema.js.map +1 -1
- package/openclaw.plugin.json +30 -30
- package/package.json +83 -83
- package/dist/src/action-store-lifecycle.test.d.ts +0 -2
- package/dist/src/action-store-lifecycle.test.d.ts.map +0 -1
- package/dist/src/action-store-lifecycle.test.js +0 -195
- package/dist/src/action-store-lifecycle.test.js.map +0 -1
- package/dist/src/active-cron-context-store.d.ts +0 -20
- package/dist/src/active-cron-context-store.d.ts.map +0 -1
- package/dist/src/active-cron-context-store.js +0 -73
- package/dist/src/active-cron-context-store.js.map +0 -1
- package/dist/src/assistant-item-delivery.d.ts +0 -27
- package/dist/src/assistant-item-delivery.d.ts.map +0 -1
- package/dist/src/assistant-item-delivery.js +0 -134
- package/dist/src/assistant-item-delivery.js.map +0 -1
- package/dist/src/assistant-item-delivery.test.d.ts +0 -2
- package/dist/src/assistant-item-delivery.test.d.ts.map +0 -1
- package/dist/src/assistant-item-delivery.test.js +0 -116
- package/dist/src/assistant-item-delivery.test.js.map +0 -1
- package/dist/src/assistant-item-sink.d.ts +0 -17
- package/dist/src/assistant-item-sink.d.ts.map +0 -1
- package/dist/src/assistant-item-sink.js +0 -34
- package/dist/src/assistant-item-sink.js.map +0 -1
- package/dist/src/connection-workspace-event.test.d.ts +0 -2
- package/dist/src/connection-workspace-event.test.d.ts.map +0 -1
- package/dist/src/connection-workspace-event.test.js +0 -74
- package/dist/src/connection-workspace-event.test.js.map +0 -1
- package/dist/src/connection.test.d.ts +0 -2
- package/dist/src/connection.test.d.ts.map +0 -1
- package/dist/src/connection.test.js +0 -110
- package/dist/src/connection.test.js.map +0 -1
- package/dist/src/cron-appkey-binding-store.d.ts +0 -29
- package/dist/src/cron-appkey-binding-store.d.ts.map +0 -1
- package/dist/src/cron-appkey-binding-store.js +0 -239
- package/dist/src/cron-appkey-binding-store.js.map +0 -1
- package/dist/src/cron-appkey-binding-store.test.d.ts +0 -2
- package/dist/src/cron-appkey-binding-store.test.d.ts.map +0 -1
- package/dist/src/cron-appkey-binding-store.test.js +0 -387
- package/dist/src/cron-appkey-binding-store.test.js.map +0 -1
- package/dist/src/nas-site.d.ts +0 -16
- package/dist/src/nas-site.d.ts.map +0 -1
- package/dist/src/nas-site.js +0 -17
- package/dist/src/nas-site.js.map +0 -1
- package/dist/src/plan-core-adapter.d.ts +0 -54
- package/dist/src/plan-core-adapter.d.ts.map +0 -1
- package/dist/src/plan-core-adapter.js +0 -104
- package/dist/src/plan-core-adapter.js.map +0 -1
- package/dist/src/plan-core-adapter.test.d.ts +0 -2
- package/dist/src/plan-core-adapter.test.d.ts.map +0 -1
- package/dist/src/plan-core-adapter.test.js +0 -183
- package/dist/src/plan-core-adapter.test.js.map +0 -1
- package/dist/src/plan-core-db.d.ts +0 -22
- package/dist/src/plan-core-db.d.ts.map +0 -1
- package/dist/src/plan-core-db.js +0 -91
- package/dist/src/plan-core-db.js.map +0 -1
- package/dist/src/plan-core-db.test.d.ts +0 -2
- package/dist/src/plan-core-db.test.d.ts.map +0 -1
- package/dist/src/plan-core-db.test.js +0 -115
- package/dist/src/plan-core-db.test.js.map +0 -1
- package/dist/src/plan-core-snapshot.d.ts +0 -23
- package/dist/src/plan-core-snapshot.d.ts.map +0 -1
- package/dist/src/plan-core-snapshot.js +0 -66
- package/dist/src/plan-core-snapshot.js.map +0 -1
- package/dist/src/plan-core-snapshot.test.d.ts +0 -2
- package/dist/src/plan-core-snapshot.test.d.ts.map +0 -1
- package/dist/src/plan-core-snapshot.test.js +0 -157
- package/dist/src/plan-core-snapshot.test.js.map +0 -1
- package/dist/src/plugin-dispose.d.ts +0 -22
- package/dist/src/plugin-dispose.d.ts.map +0 -1
- package/dist/src/plugin-dispose.js +0 -66
- package/dist/src/plugin-dispose.js.map +0 -1
- package/dist/src/process-shared-store.d.ts +0 -48
- package/dist/src/process-shared-store.d.ts.map +0 -1
- package/dist/src/process-shared-store.js +0 -89
- package/dist/src/process-shared-store.js.map +0 -1
- package/dist/src/process-shared-store.test.d.ts +0 -2
- package/dist/src/process-shared-store.test.d.ts.map +0 -1
- package/dist/src/process-shared-store.test.js +0 -60
- package/dist/src/process-shared-store.test.js.map +0 -1
- package/dist/src/register-exec-env-hook.d.ts +0 -44
- package/dist/src/register-exec-env-hook.d.ts.map +0 -1
- package/dist/src/register-exec-env-hook.js +0 -473
- package/dist/src/register-exec-env-hook.js.map +0 -1
- package/dist/src/register-exec-env-hook.test.d.ts +0 -2
- package/dist/src/register-exec-env-hook.test.d.ts.map +0 -1
- package/dist/src/register-exec-env-hook.test.js +0 -189
- package/dist/src/register-exec-env-hook.test.js.map +0 -1
- package/dist/src/register-group-prompt-hook.d.ts +0 -17
- package/dist/src/register-group-prompt-hook.d.ts.map +0 -1
- package/dist/src/register-group-prompt-hook.js +0 -45
- package/dist/src/register-group-prompt-hook.js.map +0 -1
- package/dist/src/register-group-prompt-hook.test.d.ts +0 -2
- package/dist/src/register-group-prompt-hook.test.d.ts.map +0 -1
- package/dist/src/register-group-prompt-hook.test.js +0 -60
- package/dist/src/register-group-prompt-hook.test.js.map +0 -1
- package/dist/src/register-per-message-model-hook.test.d.ts +0 -2
- package/dist/src/register-per-message-model-hook.test.d.ts.map +0 -1
- package/dist/src/register-per-message-model-hook.test.js +0 -208
- package/dist/src/register-per-message-model-hook.test.js.map +0 -1
- package/dist/src/register-run-model-context-hook.d.ts +0 -11
- package/dist/src/register-run-model-context-hook.d.ts.map +0 -1
- package/dist/src/register-run-model-context-hook.js +0 -23
- package/dist/src/register-run-model-context-hook.js.map +0 -1
- package/dist/src/reply-dispatch-driver.d.ts +0 -89
- package/dist/src/reply-dispatch-driver.d.ts.map +0 -1
- package/dist/src/reply-dispatch-driver.js +0 -294
- package/dist/src/reply-dispatch-driver.js.map +0 -1
- package/dist/src/reply-dispatch-driver.test.d.ts +0 -2
- package/dist/src/reply-dispatch-driver.test.d.ts.map +0 -1
- package/dist/src/reply-dispatch-driver.test.js +0 -363
- package/dist/src/reply-dispatch-driver.test.js.map +0 -1
- package/dist/src/run-model-context.d.ts +0 -45
- package/dist/src/run-model-context.d.ts.map +0 -1
- package/dist/src/run-model-context.js +0 -108
- package/dist/src/run-model-context.js.map +0 -1
- package/dist/src/run-model-context.test.d.ts +0 -2
- package/dist/src/run-model-context.test.d.ts.map +0 -1
- package/dist/src/run-model-context.test.js +0 -68
- package/dist/src/run-model-context.test.js.map +0 -1
- package/dist/src/session-env-store.d.ts +0 -55
- package/dist/src/session-env-store.d.ts.map +0 -1
- package/dist/src/session-env-store.js +0 -328
- package/dist/src/session-env-store.js.map +0 -1
- package/dist/src/session-env-store.test.d.ts +0 -2
- package/dist/src/session-env-store.test.d.ts.map +0 -1
- package/dist/src/session-env-store.test.js +0 -151
- package/dist/src/session-env-store.test.js.map +0 -1
- package/dist/src/session-group-prompt.d.ts +0 -34
- package/dist/src/session-group-prompt.d.ts.map +0 -1
- package/dist/src/session-group-prompt.js +0 -101
- package/dist/src/session-group-prompt.js.map +0 -1
- package/dist/src/session-group-prompt.test.d.ts +0 -2
- package/dist/src/session-group-prompt.test.d.ts.map +0 -1
- package/dist/src/session-group-prompt.test.js +0 -72
- package/dist/src/session-group-prompt.test.js.map +0 -1
- package/dist/src/session-model-fallback.d.ts +0 -13
- package/dist/src/session-model-fallback.d.ts.map +0 -1
- package/dist/src/session-model-fallback.js +0 -24
- package/dist/src/session-model-fallback.js.map +0 -1
- package/dist/src/tool-event-adapter.d.ts +0 -31
- package/dist/src/tool-event-adapter.d.ts.map +0 -1
- package/dist/src/tool-event-adapter.js +0 -83
- package/dist/src/tool-event-adapter.js.map +0 -1
- package/dist/src/tool-event-adapter.test.d.ts +0 -2
- package/dist/src/tool-event-adapter.test.d.ts.map +0 -1
- package/dist/src/tool-event-adapter.test.js +0 -93
- package/dist/src/tool-event-adapter.test.js.map +0 -1
- package/dist/src/turn-agent-event-subscription.d.ts +0 -29
- package/dist/src/turn-agent-event-subscription.d.ts.map +0 -1
- package/dist/src/turn-agent-event-subscription.js +0 -289
- package/dist/src/turn-agent-event-subscription.js.map +0 -1
- package/dist/src/turn-agent-event-subscription.test.d.ts +0 -2
- package/dist/src/turn-agent-event-subscription.test.d.ts.map +0 -1
- package/dist/src/turn-agent-event-subscription.test.js +0 -165
- package/dist/src/turn-agent-event-subscription.test.js.map +0 -1
- package/dist/src/turn-end-controller.d.ts +0 -61
- package/dist/src/turn-end-controller.d.ts.map +0 -1
- package/dist/src/turn-end-controller.js +0 -239
- package/dist/src/turn-end-controller.js.map +0 -1
- package/dist/src/turn-end-controller.test.d.ts +0 -2
- package/dist/src/turn-end-controller.test.d.ts.map +0 -1
- package/dist/src/turn-end-controller.test.js +0 -97
- package/dist/src/turn-end-controller.test.js.map +0 -1
- package/dist/src/workspace-event-protocol.d.ts +0 -3
- package/dist/src/workspace-event-protocol.d.ts.map +0 -1
- package/dist/src/workspace-event-protocol.js +0 -3
- package/dist/src/workspace-event-protocol.js.map +0 -1
- package/dist/src/workspace-event-scheduler.d.ts +0 -54
- package/dist/src/workspace-event-scheduler.d.ts.map +0 -1
- package/dist/src/workspace-event-scheduler.js +0 -131
- package/dist/src/workspace-event-scheduler.js.map +0 -1
- package/dist/src/workspace-event-scheduler.test.d.ts +0 -2
- package/dist/src/workspace-event-scheduler.test.d.ts.map +0 -1
- package/dist/src/workspace-event-scheduler.test.js +0 -157
- package/dist/src/workspace-event-scheduler.test.js.map +0 -1
- package/dist/src/workspace-event.d.ts +0 -28
- package/dist/src/workspace-event.d.ts.map +0 -1
- package/dist/src/workspace-event.js +0 -674
- package/dist/src/workspace-event.js.map +0 -1
- package/dist/src/workspace-event.test.d.ts +0 -2
- package/dist/src/workspace-event.test.d.ts.map +0 -1
- package/dist/src/workspace-event.test.js +0 -265
- package/dist/src/workspace-event.test.js.map +0 -1
- package/dist/src/ws-inbound-schema.test.d.ts +0 -2
- package/dist/src/ws-inbound-schema.test.d.ts.map +0 -1
- package/dist/src/ws-inbound-schema.test.js +0 -58
- package/dist/src/ws-inbound-schema.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-usage-session.d.ts","sourceRoot":"","sources":["../../src/run-usage-session.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"run-usage-session.d.ts","sourceRoot":"","sources":["../../src/run-usage-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB,GAAG,kBAAkB,GAAG,SAAS,CASjC"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 从 OpenClaw session store 读取本轮结束后的用量 entry。
|
|
3
3
|
* 使用 `skipCache: true`,避免读到 dispatch 前的缓存快照。
|
|
4
|
-
*
|
|
5
|
-
* entry 缺 `model` / `contextTokens` 时(preserveRuntimeModel 场景),用 `llm_output`
|
|
6
|
-
* 缓存的「生效模型 + 有效上下文预算」兜底,保证前端用量圆环有分母。
|
|
7
4
|
*/
|
|
8
5
|
import { loadSessionStore, resolveSessionStoreEntry, } from "openclaw/plugin-sdk/session-store-runtime";
|
|
9
|
-
import { mergeRunModelContextFields } from "./run-usage.js";
|
|
10
|
-
import { readRunModelContext } from "./run-model-context.js";
|
|
11
6
|
export function readSessionUsageFields(args) {
|
|
12
7
|
const storePath = args.storePath?.trim();
|
|
13
8
|
const sessionKey = args.sessionKey?.trim();
|
|
@@ -17,9 +12,7 @@ export function readSessionUsageFields(args) {
|
|
|
17
12
|
const { existing } = resolveSessionStoreEntry({ store, sessionKey });
|
|
18
13
|
if (!existing)
|
|
19
14
|
return undefined;
|
|
20
|
-
|
|
21
|
-
const modelContext = readRunModelContext(sessionKey);
|
|
22
|
-
return modelContext ? mergeRunModelContextFields(fields, modelContext) : fields;
|
|
15
|
+
return pickUsageFields(existing);
|
|
23
16
|
}
|
|
24
17
|
function pickUsageFields(entry) {
|
|
25
18
|
return {
|
|
@@ -28,11 +21,6 @@ function pickUsageFields(entry) {
|
|
|
28
21
|
...(entry.inputTokens != null ? { inputTokens: entry.inputTokens } : {}),
|
|
29
22
|
...(entry.outputTokens != null ? { outputTokens: entry.outputTokens } : {}),
|
|
30
23
|
...(entry.totalTokens != null ? { totalTokens: entry.totalTokens } : {}),
|
|
31
|
-
...(entry.totalTokensFresh != null ? { totalTokensFresh: entry.totalTokensFresh } : {}),
|
|
32
|
-
...(entry.contextTokens != null ? { contextTokens: entry.contextTokens } : {}),
|
|
33
|
-
...(entry.contextBudgetStatus?.promptBudgetBeforeReserve != null
|
|
34
|
-
? { promptBudgetBeforeReserve: entry.contextBudgetStatus.promptBudgetBeforeReserve }
|
|
35
|
-
: {}),
|
|
36
24
|
...(entry.cacheRead != null ? { cacheRead: entry.cacheRead } : {}),
|
|
37
25
|
...(entry.cacheWrite != null ? { cacheWrite: entry.cacheWrite } : {}),
|
|
38
26
|
...(entry.estimatedCostUsd != null ? { estimatedCostUsd: entry.estimatedCostUsd } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-usage-session.js","sourceRoot":"","sources":["../../src/run-usage-session.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"run-usage-session.js","sourceRoot":"","sources":["../../src/run-usage-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,gBAAgB,EAChB,wBAAwB,GAE3B,MAAM,2CAA2C,CAAC;AAGnD,MAAM,UAAU,sBAAsB,CAAC,IAGtC;IACG,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAEhD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,wBAAwB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB;IACxC,OAAO;QACH,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1F,CAAC;AACN,CAAC"}
|
package/dist/src/run-usage.d.ts
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
* (agent-runner 在回合结束时写入 modelProvider / model / inputTokens / outputTokens 等)。
|
|
7
7
|
* 不解析 deliver 正文 usage footer / usage bar。
|
|
8
8
|
*/
|
|
9
|
-
import type { RunModelContext } from "./run-model-context.js";
|
|
10
9
|
/** session store 中与用量相关的字段(子集) */
|
|
11
10
|
export type SessionUsageFields = {
|
|
12
11
|
modelProvider?: string;
|
|
@@ -14,12 +13,6 @@ export type SessionUsageFields = {
|
|
|
14
13
|
inputTokens?: number;
|
|
15
14
|
outputTokens?: number;
|
|
16
15
|
totalTokens?: number;
|
|
17
|
-
/** totalTokens 是否为最新上下文快照;false 表示已过期,前端以「~」近似展示 */
|
|
18
|
-
totalTokensFresh?: boolean;
|
|
19
|
-
/** 模型上下文窗口上限(圆环分母兜底) */
|
|
20
|
-
contextTokens?: number;
|
|
21
|
-
/** 提示词预算(contextBudgetStatus.promptBudgetBeforeReserve,圆环优先分母) */
|
|
22
|
-
promptBudgetBeforeReserve?: number;
|
|
23
16
|
cacheRead?: number;
|
|
24
17
|
cacheWrite?: number;
|
|
25
18
|
estimatedCostUsd?: number;
|
|
@@ -31,9 +24,6 @@ export type RunUsageSnapshot = {
|
|
|
31
24
|
inputTokens?: number;
|
|
32
25
|
outputTokens?: number;
|
|
33
26
|
totalTokens?: number;
|
|
34
|
-
totalTokensFresh?: boolean;
|
|
35
|
-
contextTokens?: number;
|
|
36
|
-
promptBudgetBeforeReserve?: number;
|
|
37
27
|
cacheReadTokens?: number;
|
|
38
28
|
cacheWriteTokens?: number;
|
|
39
29
|
estimatedCostUsd?: number;
|
|
@@ -46,11 +36,6 @@ export type ImStreamRunUsageData = {
|
|
|
46
36
|
replyToMsgId: string;
|
|
47
37
|
usage: RunUsageSnapshot;
|
|
48
38
|
};
|
|
49
|
-
/**
|
|
50
|
-
* entry 优先、`llm_output` 缓存兜底:entry 缺 model / contextTokens 时(preserveRuntimeModel
|
|
51
|
-
* 场景)用缓存的有效上下文预算与生效模型补全,保证前端用量圆环有分母。
|
|
52
|
-
*/
|
|
53
|
-
export declare function mergeRunModelContextFields(fields: SessionUsageFields, modelContext: RunModelContext): SessionUsageFields;
|
|
54
39
|
/** 本轮是否值得发 RUN_USAGE(至少有模型或 token 之一)。 */
|
|
55
40
|
export declare function hasReportableUsage(usage: RunUsageSnapshot | undefined): boolean;
|
|
56
41
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-usage.d.ts","sourceRoot":"","sources":["../../src/run-usage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,
|
|
1
|
+
{"version":3,"file":"run-usage.d.ts","sourceRoot":"","sources":["../../src/run-usage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,kCAAkC;AAClC,MAAM,MAAM,kBAAkB,GAAG;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,MAAM,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAaF,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAa/E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CACzC,KAAK,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,EAC5C,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,gBAAgB,GAAG,SAAS,CAoC9B;AAkBD,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACnD,oBAAoB,CAMtB"}
|
package/dist/src/run-usage.js
CHANGED
|
@@ -17,22 +17,6 @@ function nonEmpty(s) {
|
|
|
17
17
|
const t = s.trim();
|
|
18
18
|
return t.length > 0 ? t : undefined;
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
21
|
-
* entry 优先、`llm_output` 缓存兜底:entry 缺 model / contextTokens 时(preserveRuntimeModel
|
|
22
|
-
* 场景)用缓存的有效上下文预算与生效模型补全,保证前端用量圆环有分母。
|
|
23
|
-
*/
|
|
24
|
-
export function mergeRunModelContextFields(fields, modelContext) {
|
|
25
|
-
return {
|
|
26
|
-
...fields,
|
|
27
|
-
...(fields.modelProvider == null && modelContext.provider
|
|
28
|
-
? { modelProvider: modelContext.provider }
|
|
29
|
-
: {}),
|
|
30
|
-
...(fields.model == null && modelContext.model ? { model: modelContext.model } : {}),
|
|
31
|
-
...(fields.contextTokens == null && modelContext.contextTokenBudget != null
|
|
32
|
-
? { contextTokens: modelContext.contextTokenBudget }
|
|
33
|
-
: {}),
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
20
|
/** 本轮是否值得发 RUN_USAGE(至少有模型或 token 之一)。 */
|
|
37
21
|
export function hasReportableUsage(usage) {
|
|
38
22
|
if (!usage)
|
|
@@ -65,12 +49,10 @@ export function buildRunUsageFromSessionEntry(entry, opts) {
|
|
|
65
49
|
const estimatedCostUsd = typeof entry.estimatedCostUsd === "number" && Number.isFinite(entry.estimatedCostUsd)
|
|
66
50
|
? entry.estimatedCostUsd
|
|
67
51
|
: undefined;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const contextTokens = positiveInt(entry.contextTokens);
|
|
73
|
-
const promptBudgetBeforeReserve = positiveInt(entry.promptBudgetBeforeReserve);
|
|
52
|
+
let totalTokens = positiveInt(entry.totalTokens);
|
|
53
|
+
if (totalTokens == null && inputTokens != null && outputTokens != null) {
|
|
54
|
+
totalTokens = inputTokens + outputTokens;
|
|
55
|
+
}
|
|
74
56
|
const snapshot = {
|
|
75
57
|
...(provider ? { provider } : {}),
|
|
76
58
|
...(model ? { model } : {}),
|
|
@@ -78,9 +60,6 @@ export function buildRunUsageFromSessionEntry(entry, opts) {
|
|
|
78
60
|
...(inputTokens != null ? { inputTokens } : {}),
|
|
79
61
|
...(outputTokens != null ? { outputTokens } : {}),
|
|
80
62
|
...(totalTokens != null ? { totalTokens } : {}),
|
|
81
|
-
...(totalTokensFresh != null ? { totalTokensFresh } : {}),
|
|
82
|
-
...(contextTokens != null ? { contextTokens } : {}),
|
|
83
|
-
...(promptBudgetBeforeReserve != null ? { promptBudgetBeforeReserve } : {}),
|
|
84
63
|
...(cacheReadTokens != null ? { cacheReadTokens } : {}),
|
|
85
64
|
...(cacheWriteTokens != null ? { cacheWriteTokens } : {}),
|
|
86
65
|
...(estimatedCostUsd != null ? { estimatedCostUsd } : {}),
|
|
@@ -98,11 +77,6 @@ function runUsageSnapshotToWire(usage) {
|
|
|
98
77
|
...(usage.inputTokens != null ? { inputTokens: usage.inputTokens } : {}),
|
|
99
78
|
...(usage.outputTokens != null ? { outputTokens: usage.outputTokens } : {}),
|
|
100
79
|
...(usage.totalTokens != null ? { totalTokens: usage.totalTokens } : {}),
|
|
101
|
-
...(usage.totalTokensFresh != null ? { totalTokensFresh: usage.totalTokensFresh } : {}),
|
|
102
|
-
...(usage.contextTokens != null ? { contextTokens: usage.contextTokens } : {}),
|
|
103
|
-
...(usage.promptBudgetBeforeReserve != null
|
|
104
|
-
? { promptBudgetBeforeReserve: usage.promptBudgetBeforeReserve }
|
|
105
|
-
: {}),
|
|
106
80
|
...(usage.cacheReadTokens != null ? { cacheReadTokens: usage.cacheReadTokens } : {}),
|
|
107
81
|
...(usage.cacheWriteTokens != null ? { cacheWriteTokens: usage.cacheWriteTokens } : {}),
|
|
108
82
|
...(usage.estimatedCostUsd != null ? { estimatedCostUsd: usage.estimatedCostUsd } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-usage.js","sourceRoot":"","sources":["../../src/run-usage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"run-usage.js","sourceRoot":"","sources":["../../src/run-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import { describe, it } from "node:test";
|
|
3
|
-
import { buildRunUsageFromSessionEntry, hasReportableUsage,
|
|
3
|
+
import { buildRunUsageFromSessionEntry, hasReportableUsage, toImStreamRunUsageData, } from "./run-usage.js";
|
|
4
4
|
describe("buildRunUsageFromSessionEntry", () => {
|
|
5
5
|
it("maps session store fields to RUN_USAGE snapshot", () => {
|
|
6
6
|
const u = buildRunUsageFromSessionEntry({
|
|
@@ -19,29 +19,12 @@ describe("buildRunUsageFromSessionEntry", () => {
|
|
|
19
19
|
assert.equal(u.modelRef, "openai/gpt-5.5");
|
|
20
20
|
assert.equal(u.inputTokens, 1_200);
|
|
21
21
|
assert.equal(u.outputTokens, 89);
|
|
22
|
-
assert.equal(u.totalTokens,
|
|
22
|
+
assert.equal(u.totalTokens, 1_289);
|
|
23
23
|
assert.equal(u.cacheReadTokens, 10_000);
|
|
24
24
|
assert.equal(u.cacheWriteTokens, 0);
|
|
25
25
|
assert.equal(u.estimatedCostUsd, 0.0123);
|
|
26
26
|
assert.equal(u.runId, "run-1");
|
|
27
27
|
});
|
|
28
|
-
it("maps context ring fields (contextTokens / promptBudget / freshness)", () => {
|
|
29
|
-
const u = buildRunUsageFromSessionEntry({
|
|
30
|
-
modelProvider: "openai",
|
|
31
|
-
model: "gpt-5.5",
|
|
32
|
-
inputTokens: 100,
|
|
33
|
-
outputTokens: 20,
|
|
34
|
-
totalTokens: 26_002,
|
|
35
|
-
totalTokensFresh: false,
|
|
36
|
-
contextTokens: 200_000,
|
|
37
|
-
promptBudgetBeforeReserve: 180_000,
|
|
38
|
-
});
|
|
39
|
-
assert.ok(u);
|
|
40
|
-
assert.equal(u.totalTokens, 26_002);
|
|
41
|
-
assert.equal(u.totalTokensFresh, false);
|
|
42
|
-
assert.equal(u.contextTokens, 200_000);
|
|
43
|
-
assert.equal(u.promptBudgetBeforeReserve, 180_000);
|
|
44
|
-
});
|
|
45
28
|
it("prefers explicit totalTokens from session", () => {
|
|
46
29
|
const u = buildRunUsageFromSessionEntry({
|
|
47
30
|
modelProvider: "xgjk-newapi",
|
|
@@ -53,15 +36,6 @@ describe("buildRunUsageFromSessionEntry", () => {
|
|
|
53
36
|
assert.ok(u);
|
|
54
37
|
assert.equal(u.totalTokens, 26_002);
|
|
55
38
|
});
|
|
56
|
-
it("does not fall back to input+output for totalTokens (context snapshot only)", () => {
|
|
57
|
-
const u = buildRunUsageFromSessionEntry({
|
|
58
|
-
inputTokens: 10,
|
|
59
|
-
outputTokens: 2,
|
|
60
|
-
});
|
|
61
|
-
assert.ok(u);
|
|
62
|
-
assert.equal(u.totalTokens, undefined);
|
|
63
|
-
assert.equal(u.modelRef, undefined);
|
|
64
|
-
});
|
|
65
39
|
it("accepts model-only entry", () => {
|
|
66
40
|
const u = buildRunUsageFromSessionEntry({
|
|
67
41
|
modelProvider: "openai",
|
|
@@ -72,6 +46,15 @@ describe("buildRunUsageFromSessionEntry", () => {
|
|
|
72
46
|
assert.equal(u.inputTokens, undefined);
|
|
73
47
|
assert.equal(hasReportableUsage(u), true);
|
|
74
48
|
});
|
|
49
|
+
it("accepts tokens-only entry", () => {
|
|
50
|
+
const u = buildRunUsageFromSessionEntry({
|
|
51
|
+
inputTokens: 10,
|
|
52
|
+
outputTokens: 2,
|
|
53
|
+
});
|
|
54
|
+
assert.ok(u);
|
|
55
|
+
assert.equal(u.totalTokens, 12);
|
|
56
|
+
assert.equal(u.modelRef, undefined);
|
|
57
|
+
});
|
|
75
58
|
it("returns undefined for empty entry", () => {
|
|
76
59
|
assert.equal(buildRunUsageFromSessionEntry({}), undefined);
|
|
77
60
|
assert.equal(buildRunUsageFromSessionEntry(null), undefined);
|
|
@@ -103,76 +86,5 @@ describe("toImStreamRunUsageData", () => {
|
|
|
103
86
|
},
|
|
104
87
|
});
|
|
105
88
|
});
|
|
106
|
-
it("passes context ring fields through to the wire payload", () => {
|
|
107
|
-
const data = toImStreamRunUsageData({
|
|
108
|
-
inputTokens: 100,
|
|
109
|
-
outputTokens: 5,
|
|
110
|
-
totalTokens: 26_002,
|
|
111
|
-
totalTokensFresh: true,
|
|
112
|
-
contextTokens: 200_000,
|
|
113
|
-
promptBudgetBeforeReserve: 180_000,
|
|
114
|
-
source: "session",
|
|
115
|
-
}, { groupId: "g1", replyToMsgId: "m1" });
|
|
116
|
-
assert.deepEqual(data.usage, {
|
|
117
|
-
inputTokens: 100,
|
|
118
|
-
outputTokens: 5,
|
|
119
|
-
totalTokens: 26_002,
|
|
120
|
-
totalTokensFresh: true,
|
|
121
|
-
contextTokens: 200_000,
|
|
122
|
-
promptBudgetBeforeReserve: 180_000,
|
|
123
|
-
source: "session",
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
describe("mergeRunModelContextFields", () => {
|
|
128
|
-
it("fills missing model and contextTokens from the captured llm_output context", () => {
|
|
129
|
-
const merged = mergeRunModelContextFields({ inputTokens: 2_084, outputTokens: 92, totalTokens: 40_052 }, {
|
|
130
|
-
provider: "xgjk-newapi",
|
|
131
|
-
model: "MiniMax-M2.7-Cloud",
|
|
132
|
-
contextTokenBudget: 200_000,
|
|
133
|
-
updatedAt: Date.now(),
|
|
134
|
-
});
|
|
135
|
-
assert.deepEqual(merged, {
|
|
136
|
-
inputTokens: 2_084,
|
|
137
|
-
outputTokens: 92,
|
|
138
|
-
totalTokens: 40_052,
|
|
139
|
-
modelProvider: "xgjk-newapi",
|
|
140
|
-
model: "MiniMax-M2.7-Cloud",
|
|
141
|
-
contextTokens: 200_000,
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
it("keeps entry values when already present", () => {
|
|
145
|
-
const merged = mergeRunModelContextFields({
|
|
146
|
-
modelProvider: "openai",
|
|
147
|
-
model: "gpt-5.5",
|
|
148
|
-
contextTokens: 128_000,
|
|
149
|
-
totalTokens: 1_000,
|
|
150
|
-
}, {
|
|
151
|
-
provider: "other",
|
|
152
|
-
model: "other-model",
|
|
153
|
-
contextTokenBudget: 200_000,
|
|
154
|
-
updatedAt: Date.now(),
|
|
155
|
-
});
|
|
156
|
-
assert.equal(merged.modelProvider, "openai");
|
|
157
|
-
assert.equal(merged.model, "gpt-5.5");
|
|
158
|
-
assert.equal(merged.contextTokens, 128_000);
|
|
159
|
-
});
|
|
160
|
-
it("does not fabricate fields when the captured context is empty", () => {
|
|
161
|
-
const merged = mergeRunModelContextFields({ inputTokens: 1, outputTokens: 1 }, { updatedAt: Date.now() });
|
|
162
|
-
assert.deepEqual(merged, { inputTokens: 1, outputTokens: 1 });
|
|
163
|
-
});
|
|
164
|
-
it("merged fields produce a reportable snapshot with modelRef", () => {
|
|
165
|
-
const merged = mergeRunModelContextFields({ totalTokens: 40_052 }, {
|
|
166
|
-
provider: "xgjk-newapi",
|
|
167
|
-
model: "MiniMax-M2.7-Cloud",
|
|
168
|
-
contextTokenBudget: 200_000,
|
|
169
|
-
updatedAt: Date.now(),
|
|
170
|
-
});
|
|
171
|
-
const usage = buildRunUsageFromSessionEntry(merged);
|
|
172
|
-
assert.ok(usage);
|
|
173
|
-
assert.equal(usage.modelRef, "xgjk-newapi/MiniMax-M2.7-Cloud");
|
|
174
|
-
assert.equal(usage.contextTokens, 200_000);
|
|
175
|
-
assert.equal(usage.totalTokens, 40_052);
|
|
176
|
-
});
|
|
177
89
|
});
|
|
178
90
|
//# sourceMappingURL=run-usage.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-usage.test.js","sourceRoot":"","sources":["../../src/run-usage.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EACH,6BAA6B,EAC7B,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"run-usage.test.js","sourceRoot":"","sources":["../../src/run-usage.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - groupId / accountId 从注入的会话上下文(deliveryContext)获取,模型不可指定;
|
|
9
9
|
* - 上传或发送失败一律返回 `ok:false`,绝不降级成文本后谎报成功。
|
|
10
10
|
*/
|
|
11
|
-
import type { AnyAgentTool } from "openclaw/plugin-sdk
|
|
11
|
+
import type { AnyAgentTool } from "openclaw/plugin-sdk";
|
|
12
12
|
import type { XgImConfig } from "./types.js";
|
|
13
13
|
/** 由 OpenClaw 工具工厂上下文(`ctx`)节选注入,模型不可见、不可篡改。 */
|
|
14
14
|
export type XgImSendFileToolHints = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-file-tool.d.ts","sourceRoot":"","sources":["../../src/send-file-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"send-file-tool.d.ts","sourceRoot":"","sources":["../../src/send-file-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAYxD,OAAO,KAAK,EAA0C,UAAU,EAAE,MAAM,YAAY,CAAC;AA2BrF,gDAAgD;AAChD,MAAM,MAAM,qBAAqB,GAAG;IAChC,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,eAAe,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;KACrC,GAAG,IAAI,CAAC;CACZ,CAAC;AAIF,MAAM,MAAM,iBAAiB,GACvB,kBAAkB,GAClB,oBAAoB,GACpB,cAAc,GACd,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,GAChB,mBAAmB,GACnB,wBAAwB,GACxB,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,uBAAuB,GACvB,aAAa,GACb,aAAa,GACb,eAAe,GACf,qBAAqB,CAAC;AAE5B,qBAAa,aAAc,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;gBACrB,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM;CAKvD;AAWD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACtC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAwFjE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBzF;AAID;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,EACjC,gBAAgB,CAAC,EAAE,MAAM,GAC1B;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAKjE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACtC,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,MAAM,GACnB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA8B9F;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,qBAAqB,GAAG,YAAY,CAkKjG"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* 通过 api.registerTool() 注入,工具内部自动获取机器人 token。
|
|
8
8
|
*/
|
|
9
|
-
import type { AnyAgentTool } from "openclaw/plugin-sdk
|
|
9
|
+
import type { AnyAgentTool } from "openclaw/plugin-sdk";
|
|
10
10
|
import type { XgImConfig } from "./types.js";
|
|
11
11
|
import { type XgImToolSessionHints } from "./group-history-tool.js";
|
|
12
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-group-message-tool.d.ts","sourceRoot":"","sources":["../../src/send-group-message-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"send-group-message-tool.d.ts","sourceRoot":"","sources":["../../src/send-group-message-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AA0B1F;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,oBAAoB,GAAG,YAAY,CAoDxG"}
|
|
@@ -76,24 +76,24 @@ describe("buildAgentContextPromptBlock nasVolumes", () => {
|
|
|
76
76
|
background,
|
|
77
77
|
},
|
|
78
78
|
});
|
|
79
|
-
assert.equal(result.block, `## 当前项目
|
|
80
|
-
|
|
81
|
-
### 本次会话文件目录
|
|
82
|
-
本次会话需要读取的文件位于以下已授权目录:
|
|
83
|
-
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/deliverables\`(只读挂载)
|
|
84
|
-
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0000\`(只读挂载)
|
|
85
|
-
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`(可读写挂载)
|
|
86
|
-
- 首选文件写入目录:\`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`
|
|
87
|
-
|
|
88
|
-
### 目录用途
|
|
89
|
-
- **项目产出**:项目相关文件优先保存到可写目录 \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\` 或其子目录。
|
|
90
|
-
|
|
91
|
-
### 操作约束
|
|
92
|
-
- 仅在上述已授权 NAS 目录下读取或处理项目文件;不要在 workspace 其他位置查找类似目录。
|
|
93
|
-
- 对用户统一称为「本项目」,不要提及 OpenClaw workspace 等实现细节。
|
|
94
|
-
|
|
95
|
-
## 项目背景
|
|
96
|
-
|
|
79
|
+
assert.equal(result.block, `## 当前项目
|
|
80
|
+
|
|
81
|
+
### 本次会话文件目录
|
|
82
|
+
本次会话需要读取的文件位于以下已授权目录:
|
|
83
|
+
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/deliverables\`(只读挂载)
|
|
84
|
+
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0000\`(只读挂载)
|
|
85
|
+
- \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`(可读写挂载)
|
|
86
|
+
- 首选文件写入目录:\`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`
|
|
87
|
+
|
|
88
|
+
### 目录用途
|
|
89
|
+
- **项目产出**:项目相关文件优先保存到可写目录 \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\` 或其子目录。
|
|
90
|
+
|
|
91
|
+
### 操作约束
|
|
92
|
+
- 仅在上述已授权 NAS 目录下读取或处理项目文件;不要在 workspace 其他位置查找类似目录。
|
|
93
|
+
- 对用户统一称为「本项目」,不要提及 OpenClaw workspace 等实现细节。
|
|
94
|
+
|
|
95
|
+
## 项目背景
|
|
96
|
+
|
|
97
97
|
${background}`);
|
|
98
98
|
});
|
|
99
99
|
});
|
|
@@ -10,6 +10,4 @@ export declare function getSessionImContext(sessionKey: string): {
|
|
|
10
10
|
} | undefined;
|
|
11
11
|
export declare function clearSessionImContext(sessionKey: string, expectedReplyToMsgId?: string): boolean;
|
|
12
12
|
export declare function touchSessionImContext(sessionKey: string): void;
|
|
13
|
-
/** 插件卸载/重载时清空会话 IM 上下文与全部清理定时器。 */
|
|
14
|
-
export declare function disposeSessionImContext(): void;
|
|
15
13
|
//# sourceMappingURL=session-im-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-im-context.d.ts","sourceRoot":"","sources":["../../src/session-im-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-im-context.d.ts","sourceRoot":"","sources":["../../src/session-im-context.ts"],"names":[],"mappings":"AA6BA,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC9D,IAAI,CAGN;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,GACjB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOxE;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,OAAO,CAQhG;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAK9D"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
const cleanupTimers = getSharedMap("session-im-context-timers");
|
|
1
|
+
const sessionCtxMap = new Map();
|
|
2
|
+
const cleanupTimers = new Map();
|
|
4
3
|
const CLEANUP_DELAY_MS = 60 * 60 * 1000;
|
|
5
4
|
function clearCleanupTimer(sessionKey) {
|
|
6
5
|
const t = cleanupTimers.get(sessionKey);
|
|
@@ -43,12 +42,4 @@ export function touchSessionImContext(sessionKey) {
|
|
|
43
42
|
scheduleCleanup(sessionKey);
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
|
-
/** 插件卸载/重载时清空会话 IM 上下文与全部清理定时器。 */
|
|
47
|
-
export function disposeSessionImContext() {
|
|
48
|
-
for (const timer of cleanupTimers.values()) {
|
|
49
|
-
clearTimeout(timer);
|
|
50
|
-
}
|
|
51
|
-
cleanupTimers.clear();
|
|
52
|
-
sessionCtxMap.clear();
|
|
53
|
-
}
|
|
54
45
|
//# sourceMappingURL=session-im-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-im-context.js","sourceRoot":"","sources":["../../src/session-im-context.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"session-im-context.js","sourceRoot":"","sources":["../../src/session-im-context.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAIzB,CAAA;AAEJ,MAAM,aAAa,GAAG,IAAI,GAAG,EAAyC,CAAA;AAEtE,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAEvC,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACvC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,YAAY,CAAC,CAAC,CAAC,CAAA;QACf,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB;IACzC,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAC7B,aAAa,CAAC,GAAG,CACf,UAAU,EACV,UAAU,CAAC,GAAG,EAAE;QACd,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAChC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC,EAAE,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,GAA+D;IAE/D,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAClC,eAAe,CAAC,UAAU,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAAkB;IAElB,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAC7B,eAAe,CAAC,UAAU,CAAC,CAAA;QAC3B,OAAO,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAkB,EAAE,oBAA6B;IACrF,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC7C,IAAI,CAAC,OAAO,IAAI,CAAC,oBAAoB,IAAI,OAAO,CAAC,YAAY,KAAK,oBAAoB,CAAC,EAAE,CAAC;QACxF,OAAO,KAAK,CAAA;IACd,CAAC;IACD,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAC7B,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAChC,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAC7B,eAAe,CAAC,UAAU,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 决定父 agent 本轮收尾文本的投递阶段。
|
|
3
|
+
*
|
|
4
|
+
* 父 agent 在派生子 agent 后结束自身 run 是 OpenClaw 的正常编排行为;此时它发出的
|
|
5
|
+
* 「正在等待子 agent」等文本只是进度,不是用户请求的最终交付。真正的完成仍由
|
|
6
|
+
* subagent-monitor 在全部子 agent 结束后以 WS FINISHED 表示。
|
|
7
|
+
*/
|
|
8
|
+
import type { DeliverKind } from "./types.js";
|
|
9
|
+
export declare function resolveParentReplyDeliverKind(hasActiveSubagents: boolean): DeliverKind;
|
|
10
|
+
//# sourceMappingURL=subagent-delivery-phase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-delivery-phase.d.ts","sourceRoot":"","sources":["../../src/subagent-delivery-phase.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,6BAA6B,CAAC,kBAAkB,EAAE,OAAO,GAAG,WAAW,CAEtF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-delivery-phase.js","sourceRoot":"","sources":["../../src/subagent-delivery-phase.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,6BAA6B,CAAC,kBAA2B;IACrE,OAAO,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-delivery-phase.test.d.ts","sourceRoot":"","sources":["../../src/subagent-delivery-phase.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { describe, it } from "node:test";
|
|
3
|
+
import { resolveParentReplyDeliverKind } from "./subagent-delivery-phase.js";
|
|
4
|
+
describe("resolveParentReplyDeliverKind", () => {
|
|
5
|
+
it("marks a parent reply as interim while child agents are still active", () => {
|
|
6
|
+
assert.equal(resolveParentReplyDeliverKind(true), "interim");
|
|
7
|
+
});
|
|
8
|
+
it("marks a normal completed parent reply as final", () => {
|
|
9
|
+
assert.equal(resolveParentReplyDeliverKind(false), "final");
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=subagent-delivery-phase.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-delivery-phase.test.js","sourceRoot":"","sources":["../../src/subagent-delivery-phase.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAE7E,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC3E,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { OpenClawPluginApi } from "openclaw/plugin-sdk
|
|
1
|
+
import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
|
|
2
2
|
import type { ImStreamClient } from "./connection.js";
|
|
3
3
|
interface SubagentSpawnInfo {
|
|
4
4
|
childSessionKey: string;
|
|
@@ -23,23 +23,10 @@ export declare function startMonitor(params: {
|
|
|
23
23
|
spawn: SubagentSpawnInfo;
|
|
24
24
|
}): boolean;
|
|
25
25
|
export declare function hasActiveSubagents(roundKey: string, generation: number): boolean;
|
|
26
|
-
/** 子任务结束事件定位其所属轮次(供 turn-end-controller 递减活跃子任务数)。 */
|
|
27
|
-
export declare function findChildRoundIndex(childSessionKey: string): {
|
|
28
|
-
roundKey: string;
|
|
29
|
-
generation: number;
|
|
30
|
-
runId: string;
|
|
31
|
-
} | undefined;
|
|
32
26
|
export declare function deferFinished(roundKey: string, generation: number, reason: string): void;
|
|
33
27
|
export declare function prepareSubagentInterrupt(roundKey: string, generation: number, now?: number): InterruptedSubagent[];
|
|
34
28
|
export declare function markSubagentCompleted(childSessionKey: string, runId?: string): void;
|
|
35
|
-
/**
|
|
36
|
-
* 整轮收尾时(dispatch wrapper 在 turn-end-controller 放行后)清理本轮监控。
|
|
37
|
-
* 与 removeMonitor 的 settle 路径不同:此处轮次真正结束,直接拆监控与子任务索引。
|
|
38
|
-
*/
|
|
39
|
-
export declare function finalizeRoundMonitoring(roundKey: string, generation: number): void;
|
|
40
29
|
export declare function __tickForTests(): Promise<void>;
|
|
41
30
|
export declare function __resetSubagentMonitorForTests(): void;
|
|
42
|
-
/** 插件卸载/重载时停掉 subagent-monitor 的全部轮询与状态,避免旧实例 ticker 泄漏。 */
|
|
43
|
-
export declare function disposeSubagentMonitor(): void;
|
|
44
31
|
export {};
|
|
45
32
|
//# sourceMappingURL=subagent-monitor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-monitor.d.ts","sourceRoot":"","sources":["../../src/subagent-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"subagent-monitor.d.ts","sourceRoot":"","sources":["../../src/subagent-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,iBAAiB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAqBD,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAwBD,wBAAgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAGzD;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAsCD,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,cAAc,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;CAC5B,GAAG,OAAO,CAsDV;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAOhF;AAED,wBAAgB,aAAa,CACzB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACf,IAAI,CAEN;AAED,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,GAAG,SAAa,GACjB,mBAAmB,EAAE,CAoBvB;AAED,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CA+CnF;AA0KD,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CASrD"}
|