@qjp88995/agent-runtime 0.0.0-stage → 0.1.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-extensions.d.ts +30 -0
- package/dist/agent-extensions.d.ts.map +1 -0
- package/dist/agent-extensions.js +4 -0
- package/dist/agent-extensions.js.map +1 -0
- package/dist/builtins/ask-outcome.d.ts +49 -0
- package/dist/builtins/ask-outcome.d.ts.map +1 -0
- package/dist/builtins/ask-outcome.js +128 -0
- package/dist/builtins/ask-outcome.js.map +1 -0
- package/dist/builtins/ask-schema.d.ts +110 -0
- package/dist/builtins/ask-schema.d.ts.map +1 -0
- package/dist/builtins/ask-schema.js +124 -0
- package/dist/builtins/ask-schema.js.map +1 -0
- package/dist/builtins/ask.service.d.ts +210 -0
- package/dist/builtins/ask.service.d.ts.map +1 -0
- package/dist/builtins/ask.service.js +373 -0
- package/dist/builtins/ask.service.js.map +1 -0
- package/dist/builtins/ask.tool.d.ts +49 -0
- package/dist/builtins/ask.tool.d.ts.map +1 -0
- package/dist/builtins/ask.tool.js +109 -0
- package/dist/builtins/ask.tool.js.map +1 -0
- package/dist/builtins/index.d.ts +8 -0
- package/dist/builtins/index.d.ts.map +1 -0
- package/dist/builtins/index.js +8 -0
- package/dist/builtins/index.js.map +1 -0
- package/dist/builtins/todo-schema.d.ts +90 -0
- package/dist/builtins/todo-schema.d.ts.map +1 -0
- package/dist/builtins/todo-schema.js +97 -0
- package/dist/builtins/todo-schema.js.map +1 -0
- package/dist/builtins/todo-settle.hook.d.ts +110 -0
- package/dist/builtins/todo-settle.hook.d.ts.map +1 -0
- package/dist/builtins/todo-settle.hook.js +174 -0
- package/dist/builtins/todo-settle.hook.js.map +1 -0
- package/dist/builtins/todo.tool.d.ts +59 -0
- package/dist/builtins/todo.tool.d.ts.map +1 -0
- package/dist/builtins/todo.tool.js +107 -0
- package/dist/builtins/todo.tool.js.map +1 -0
- package/dist/context/context-budget-tracker.d.ts +185 -0
- package/dist/context/context-budget-tracker.d.ts.map +1 -0
- package/dist/context/context-budget-tracker.js +400 -0
- package/dist/context/context-budget-tracker.js.map +1 -0
- package/dist/context/context-budget.d.ts +48 -0
- package/dist/context/context-budget.d.ts.map +1 -0
- package/dist/context/context-budget.js +89 -0
- package/dist/context/context-budget.js.map +1 -0
- package/dist/context/index.d.ts +3 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +3 -0
- package/dist/context/index.js.map +1 -0
- package/dist/extensions/repeat-call.hook.d.ts +32 -0
- package/dist/extensions/repeat-call.hook.d.ts.map +1 -0
- package/dist/extensions/repeat-call.hook.js +54 -0
- package/dist/extensions/repeat-call.hook.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/turn-hook.registry.d.ts +51 -0
- package/dist/hooks/turn-hook.registry.d.ts.map +1 -0
- package/dist/hooks/turn-hook.registry.js +233 -0
- package/dist/hooks/turn-hook.registry.js.map +1 -0
- package/dist/hooks/turn-hook.types.d.ts +179 -0
- package/dist/hooks/turn-hook.types.d.ts.map +1 -0
- package/dist/hooks/turn-hook.types.js +48 -0
- package/dist/hooks/turn-hook.types.js.map +1 -0
- package/dist/images/byte-cache.d.ts +24 -0
- package/dist/images/byte-cache.d.ts.map +1 -0
- package/dist/images/byte-cache.js +51 -0
- package/dist/images/byte-cache.js.map +1 -0
- package/dist/images/delivery.d.ts +115 -0
- package/dist/images/delivery.d.ts.map +1 -0
- package/dist/images/delivery.js +321 -0
- package/dist/images/delivery.js.map +1 -0
- package/dist/images/index.d.ts +5 -0
- package/dist/images/index.d.ts.map +1 -0
- package/dist/images/index.js +5 -0
- package/dist/images/index.js.map +1 -0
- package/dist/images/prompt.d.ts +151 -0
- package/dist/images/prompt.d.ts.map +1 -0
- package/dist/images/prompt.js +172 -0
- package/dist/images/prompt.js.map +1 -0
- package/dist/images/vendor-files.d.ts +93 -0
- package/dist/images/vendor-files.d.ts.map +1 -0
- package/dist/images/vendor-files.js +156 -0
- package/dist/images/vendor-files.js.map +1 -0
- package/dist/in-process/conversation-store.d.ts +64 -0
- package/dist/in-process/conversation-store.d.ts.map +1 -0
- package/dist/in-process/conversation-store.js +222 -0
- package/dist/in-process/conversation-store.js.map +1 -0
- package/dist/in-process/coordination.d.ts +54 -0
- package/dist/in-process/coordination.d.ts.map +1 -0
- package/dist/in-process/coordination.js +137 -0
- package/dist/in-process/coordination.js.map +1 -0
- package/dist/in-process/image-source.d.ts +15 -0
- package/dist/in-process/image-source.d.ts.map +1 -0
- package/dist/in-process/image-source.js +27 -0
- package/dist/in-process/image-source.js.map +1 -0
- package/dist/in-process/index.d.ts +36 -0
- package/dist/in-process/index.d.ts.map +1 -0
- package/dist/in-process/index.js +37 -0
- package/dist/in-process/index.js.map +1 -0
- package/dist/in-process/question-store.d.ts +28 -0
- package/dist/in-process/question-store.d.ts.map +1 -0
- package/dist/in-process/question-store.js +122 -0
- package/dist/in-process/question-store.js.map +1 -0
- package/dist/in-process/run-store.d.ts +36 -0
- package/dist/in-process/run-store.d.ts.map +1 -0
- package/dist/in-process/run-store.js +81 -0
- package/dist/in-process/run-store.js.map +1 -0
- package/dist/in-process/session-store.d.ts +33 -0
- package/dist/in-process/session-store.d.ts.map +1 -0
- package/dist/in-process/session-store.js +93 -0
- package/dist/in-process/session-store.js.map +1 -0
- package/dist/in-process/stream-bus.d.ts +52 -0
- package/dist/in-process/stream-bus.d.ts.map +1 -0
- package/dist/in-process/stream-bus.js +200 -0
- package/dist/in-process/stream-bus.js.map +1 -0
- package/dist/in-process/vendor-file-cache.d.ts +11 -0
- package/dist/in-process/vendor-file-cache.d.ts.map +1 -0
- package/dist/in-process/vendor-file-cache.js +47 -0
- package/dist/in-process/vendor-file-cache.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/loop/active-tick.registry.d.ts +31 -0
- package/dist/loop/active-tick.registry.d.ts.map +1 -0
- package/dist/loop/active-tick.registry.js +45 -0
- package/dist/loop/active-tick.registry.js.map +1 -0
- package/dist/loop/index.d.ts +6 -0
- package/dist/loop/index.d.ts.map +1 -0
- package/dist/loop/index.js +6 -0
- package/dist/loop/index.js.map +1 -0
- package/dist/loop/loop-driver.d.ts +127 -0
- package/dist/loop/loop-driver.d.ts.map +1 -0
- package/dist/loop/loop-driver.js +199 -0
- package/dist/loop/loop-driver.js.map +1 -0
- package/dist/loop/message-hub.d.ts +236 -0
- package/dist/loop/message-hub.d.ts.map +1 -0
- package/dist/loop/message-hub.js +439 -0
- package/dist/loop/message-hub.js.map +1 -0
- package/dist/loop/orphan-run.sweeper.d.ts +79 -0
- package/dist/loop/orphan-run.sweeper.d.ts.map +1 -0
- package/dist/loop/orphan-run.sweeper.js +145 -0
- package/dist/loop/orphan-run.sweeper.js.map +1 -0
- package/dist/loop/root-host.d.ts +51 -0
- package/dist/loop/root-host.d.ts.map +1 -0
- package/dist/loop/root-host.js +65 -0
- package/dist/loop/root-host.js.map +1 -0
- package/dist/ports/context-store.d.ts +69 -0
- package/dist/ports/context-store.d.ts.map +1 -0
- package/dist/ports/context-store.js +2 -0
- package/dist/ports/context-store.js.map +1 -0
- package/dist/ports/conversation-store.d.ts +144 -0
- package/dist/ports/conversation-store.d.ts.map +1 -0
- package/dist/ports/conversation-store.js +2 -0
- package/dist/ports/conversation-store.js.map +1 -0
- package/dist/ports/coordination.d.ts +76 -0
- package/dist/ports/coordination.d.ts.map +1 -0
- package/dist/ports/coordination.js +12 -0
- package/dist/ports/coordination.js.map +1 -0
- package/dist/ports/image-source.d.ts +26 -0
- package/dist/ports/image-source.d.ts.map +1 -0
- package/dist/ports/image-source.js +2 -0
- package/dist/ports/image-source.js.map +1 -0
- package/dist/ports/index.d.ts +11 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +4 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/logger.d.ts +14 -0
- package/dist/ports/logger.d.ts.map +1 -0
- package/dist/ports/logger.js +23 -0
- package/dist/ports/logger.js.map +1 -0
- package/dist/ports/question-store.d.ts +91 -0
- package/dist/ports/question-store.d.ts.map +1 -0
- package/dist/ports/question-store.js +8 -0
- package/dist/ports/question-store.js.map +1 -0
- package/dist/ports/run-store.d.ts +66 -0
- package/dist/ports/run-store.d.ts.map +1 -0
- package/dist/ports/run-store.js +2 -0
- package/dist/ports/run-store.js.map +1 -0
- package/dist/ports/session-store.d.ts +72 -0
- package/dist/ports/session-store.d.ts.map +1 -0
- package/dist/ports/session-store.js +9 -0
- package/dist/ports/session-store.js.map +1 -0
- package/dist/ports/stream-bus.d.ts +52 -0
- package/dist/ports/stream-bus.d.ts.map +1 -0
- package/dist/ports/stream-bus.js +2 -0
- package/dist/ports/stream-bus.js.map +1 -0
- package/dist/ports/vendor-file-cache.d.ts +46 -0
- package/dist/ports/vendor-file-cache.d.ts.map +1 -0
- package/dist/ports/vendor-file-cache.js +2 -0
- package/dist/ports/vendor-file-cache.js.map +1 -0
- package/dist/schema/agent-event.d.ts +35 -0
- package/dist/schema/agent-event.d.ts.map +1 -0
- package/dist/schema/agent-event.js +46 -0
- package/dist/schema/agent-event.js.map +1 -0
- package/dist/schema/agent-run.d.ts +23 -0
- package/dist/schema/agent-run.d.ts.map +1 -0
- package/dist/schema/agent-run.js +37 -0
- package/dist/schema/agent-run.js.map +1 -0
- package/dist/schema/index.d.ts +4 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +4 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/message-part.d.ts +73 -0
- package/dist/schema/message-part.d.ts.map +1 -0
- package/dist/schema/message-part.js +90 -0
- package/dist/schema/message-part.js.map +1 -0
- package/dist/subagent/delegate.tool.d.ts +145 -0
- package/dist/subagent/delegate.tool.d.ts.map +1 -0
- package/dist/subagent/delegate.tool.js +329 -0
- package/dist/subagent/delegate.tool.js.map +1 -0
- package/dist/subagent/index.d.ts +10 -0
- package/dist/subagent/index.d.ts.map +1 -0
- package/dist/subagent/index.js +10 -0
- package/dist/subagent/index.js.map +1 -0
- package/dist/subagent/milestone-body.d.ts +82 -0
- package/dist/subagent/milestone-body.d.ts.map +1 -0
- package/dist/subagent/milestone-body.js +112 -0
- package/dist/subagent/milestone-body.js.map +1 -0
- package/dist/subagent/output-scan.d.ts +14 -0
- package/dist/subagent/output-scan.d.ts.map +1 -0
- package/dist/subagent/output-scan.js +41 -0
- package/dist/subagent/output-scan.js.map +1 -0
- package/dist/subagent/registry-spawn-policy.d.ts +32 -0
- package/dist/subagent/registry-spawn-policy.d.ts.map +1 -0
- package/dist/subagent/registry-spawn-policy.js +48 -0
- package/dist/subagent/registry-spawn-policy.js.map +1 -0
- package/dist/subagent/roster-block.d.ts +45 -0
- package/dist/subagent/roster-block.d.ts.map +1 -0
- package/dist/subagent/roster-block.js +69 -0
- package/dist/subagent/roster-block.js.map +1 -0
- package/dist/subagent/situation-block.d.ts +16 -0
- package/dist/subagent/situation-block.d.ts.map +1 -0
- package/dist/subagent/situation-block.js +71 -0
- package/dist/subagent/situation-block.js.map +1 -0
- package/dist/subagent/spawn-guards.d.ts +32 -0
- package/dist/subagent/spawn-guards.d.ts.map +1 -0
- package/dist/subagent/spawn-guards.js +39 -0
- package/dist/subagent/spawn-guards.js.map +1 -0
- package/dist/subagent/subagent-registry.d.ts +150 -0
- package/dist/subagent/subagent-registry.d.ts.map +1 -0
- package/dist/subagent/subagent-registry.js +167 -0
- package/dist/subagent/subagent-registry.js.map +1 -0
- package/dist/subagent/subagent-sessions.d.ts +213 -0
- package/dist/subagent/subagent-sessions.d.ts.map +1 -0
- package/dist/subagent/subagent-sessions.js +295 -0
- package/dist/subagent/subagent-sessions.js.map +1 -0
- package/dist/testing/contracts.d.ts +37 -0
- package/dist/testing/contracts.d.ts.map +1 -0
- package/dist/testing/contracts.js +607 -0
- package/dist/testing/contracts.js.map +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/stub.d.ts +28 -0
- package/dist/testing/stub.d.ts.map +1 -0
- package/dist/testing/stub.js +3 -0
- package/dist/testing/stub.js.map +1 -0
- package/dist/tools/agent-tool.base.d.ts +186 -0
- package/dist/tools/agent-tool.base.d.ts.map +1 -0
- package/dist/tools/agent-tool.base.js +243 -0
- package/dist/tools/agent-tool.base.js.map +1 -0
- package/dist/tools/agent-tool.interface.d.ts +95 -0
- package/dist/tools/agent-tool.interface.d.ts.map +1 -0
- package/dist/tools/agent-tool.interface.js +2 -0
- package/dist/tools/agent-tool.interface.js.map +1 -0
- package/dist/tools/builtin-names.d.ts +18 -0
- package/dist/tools/builtin-names.d.ts.map +1 -0
- package/dist/tools/builtin-names.js +20 -0
- package/dist/tools/builtin-names.js.map +1 -0
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/tool-definition.d.ts +18 -0
- package/dist/tools/tool-definition.d.ts.map +1 -0
- package/dist/tools/tool-definition.js +77 -0
- package/dist/tools/tool-definition.js.map +1 -0
- package/dist/tools/tool-meta.d.ts +55 -0
- package/dist/tools/tool-meta.d.ts.map +1 -0
- package/dist/tools/tool-meta.js +2 -0
- package/dist/tools/tool-meta.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +190 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +379 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/tools/tool-result.d.ts +41 -0
- package/dist/tools/tool-result.d.ts.map +1 -0
- package/dist/tools/tool-result.js +19 -0
- package/dist/tools/tool-result.js.map +1 -0
- package/dist/tools/tool-wire.d.ts +24 -0
- package/dist/tools/tool-wire.d.ts.map +1 -0
- package/dist/tools/tool-wire.js +2 -0
- package/dist/tools/tool-wire.js.map +1 -0
- package/dist/turn/agent-runtime.d.ts +31 -0
- package/dist/turn/agent-runtime.d.ts.map +1 -0
- package/dist/turn/agent-runtime.js +30 -0
- package/dist/turn/agent-runtime.js.map +1 -0
- package/dist/turn/chunk-projection.d.ts +32 -0
- package/dist/turn/chunk-projection.d.ts.map +1 -0
- package/dist/turn/chunk-projection.js +62 -0
- package/dist/turn/chunk-projection.js.map +1 -0
- package/dist/turn/compaction.d.ts +48 -0
- package/dist/turn/compaction.d.ts.map +1 -0
- package/dist/turn/compaction.js +89 -0
- package/dist/turn/compaction.js.map +1 -0
- package/dist/turn/context-overflow.d.ts +11 -0
- package/dist/turn/context-overflow.d.ts.map +1 -0
- package/dist/turn/context-overflow.js +53 -0
- package/dist/turn/context-overflow.js.map +1 -0
- package/dist/turn/context-pressure.d.ts +100 -0
- package/dist/turn/context-pressure.d.ts.map +1 -0
- package/dist/turn/context-pressure.js +21 -0
- package/dist/turn/context-pressure.js.map +1 -0
- package/dist/turn/events-to-steps.d.ts +8 -0
- package/dist/turn/events-to-steps.d.ts.map +1 -0
- package/dist/turn/events-to-steps.js +64 -0
- package/dist/turn/events-to-steps.js.map +1 -0
- package/dist/turn/index.d.ts +17 -0
- package/dist/turn/index.d.ts.map +1 -0
- package/dist/turn/index.js +16 -0
- package/dist/turn/index.js.map +1 -0
- package/dist/turn/json-preview.d.ts +22 -0
- package/dist/turn/json-preview.d.ts.map +1 -0
- package/dist/turn/json-preview.js +34 -0
- package/dist/turn/json-preview.js.map +1 -0
- package/dist/turn/json-string-field.d.ts +30 -0
- package/dist/turn/json-string-field.d.ts.map +1 -0
- package/dist/turn/json-string-field.js +125 -0
- package/dist/turn/json-string-field.js.map +1 -0
- package/dist/turn/loop-reminder.d.ts +79 -0
- package/dist/turn/loop-reminder.d.ts.map +1 -0
- package/dist/turn/loop-reminder.js +0 -0
- package/dist/turn/loop-reminder.js.map +1 -0
- package/dist/turn/nul-safe.d.ts +21 -0
- package/dist/turn/nul-safe.d.ts.map +1 -0
- package/dist/turn/nul-safe.js +23 -0
- package/dist/turn/nul-safe.js.map +1 -0
- package/dist/turn/parts-from-events.d.ts +71 -0
- package/dist/turn/parts-from-events.d.ts.map +1 -0
- package/dist/turn/parts-from-events.js +217 -0
- package/dist/turn/parts-from-events.js.map +1 -0
- package/dist/turn/parts-to-model-messages.d.ts +158 -0
- package/dist/turn/parts-to-model-messages.d.ts.map +1 -0
- package/dist/turn/parts-to-model-messages.js +334 -0
- package/dist/turn/parts-to-model-messages.js.map +1 -0
- package/dist/turn/pending-work.d.ts +10 -0
- package/dist/turn/pending-work.d.ts.map +1 -0
- package/dist/turn/pending-work.js +14 -0
- package/dist/turn/pending-work.js.map +1 -0
- package/dist/turn/provider-error.d.ts +45 -0
- package/dist/turn/provider-error.d.ts.map +1 -0
- package/dist/turn/provider-error.js +154 -0
- package/dist/turn/provider-error.js.map +1 -0
- package/dist/turn/tool-input-preview.d.ts +94 -0
- package/dist/turn/tool-input-preview.d.ts.map +1 -0
- package/dist/turn/tool-input-preview.js +143 -0
- package/dist/turn/tool-input-preview.js.map +1 -0
- package/dist/turn/tool-input-progress.d.ts +47 -0
- package/dist/turn/tool-input-progress.d.ts.map +1 -0
- package/dist/turn/tool-input-progress.js +50 -0
- package/dist/turn/tool-input-progress.js.map +1 -0
- package/dist/turn/turn-envelope.d.ts +184 -0
- package/dist/turn/turn-envelope.d.ts.map +1 -0
- package/dist/turn/turn-envelope.js +2 -0
- package/dist/turn/turn-envelope.js.map +1 -0
- package/dist/turn/turn-journal.d.ts +49 -0
- package/dist/turn/turn-journal.d.ts.map +1 -0
- package/dist/turn/turn-journal.js +51 -0
- package/dist/turn/turn-journal.js.map +1 -0
- package/dist/turn/turn-run.d.ts +487 -0
- package/dist/turn/turn-run.d.ts.map +1 -0
- package/dist/turn/turn-run.js +1167 -0
- package/dist/turn/turn-run.js.map +1 -0
- package/dist/turn/usage.d.ts +27 -0
- package/dist/turn/usage.d.ts.map +1 -0
- package/dist/turn/usage.js +51 -0
- package/dist/turn/usage.js.map +1 -0
- package/package.json +55 -3
- package/src/agent-extensions.ts +33 -0
- package/src/builtins/ask-outcome.ts +168 -0
- package/src/builtins/ask-schema.ts +186 -0
- package/src/builtins/ask.service.ts +482 -0
- package/src/builtins/ask.tool.ts +138 -0
- package/src/builtins/index.ts +25 -0
- package/src/builtins/todo-schema.ts +108 -0
- package/src/builtins/todo-settle.hook.ts +221 -0
- package/src/builtins/todo.tool.ts +134 -0
- package/src/context/context-budget-tracker.ts +519 -0
- package/src/context/context-budget.ts +124 -0
- package/src/context/index.ts +17 -0
- package/src/extensions/repeat-call.hook.ts +77 -0
- package/src/hooks/index.ts +19 -0
- package/src/hooks/turn-hook.registry.ts +307 -0
- package/src/hooks/turn-hook.types.ts +210 -0
- package/src/images/byte-cache.ts +61 -0
- package/src/images/delivery.ts +508 -0
- package/src/images/index.ts +35 -0
- package/src/images/prompt.ts +289 -0
- package/src/images/vendor-files.ts +235 -0
- package/src/in-process/conversation-store.ts +304 -0
- package/src/in-process/coordination.ts +177 -0
- package/src/in-process/image-source.ts +29 -0
- package/src/in-process/index.ts +52 -0
- package/src/in-process/question-store.ts +155 -0
- package/src/in-process/run-store.ts +115 -0
- package/src/in-process/session-store.ts +118 -0
- package/src/in-process/stream-bus.ts +244 -0
- package/src/in-process/vendor-file-cache.ts +67 -0
- package/src/index.ts +28 -0
- package/src/loop/active-tick.registry.ts +49 -0
- package/src/loop/index.ts +25 -0
- package/src/loop/loop-driver.ts +275 -0
- package/src/loop/message-hub.ts +532 -0
- package/src/loop/orphan-run.sweeper.ts +204 -0
- package/src/loop/root-host.ts +119 -0
- package/src/ports/context-store.ts +71 -0
- package/src/ports/conversation-store.ts +165 -0
- package/src/ports/coordination.ts +81 -0
- package/src/ports/image-source.ts +26 -0
- package/src/ports/index.ts +56 -0
- package/src/ports/logger.ts +34 -0
- package/src/ports/question-store.ts +117 -0
- package/src/ports/run-store.ts +69 -0
- package/src/ports/session-store.ts +80 -0
- package/src/ports/stream-bus.ts +59 -0
- package/src/ports/vendor-file-cache.ts +54 -0
- package/src/schema/agent-event.ts +69 -0
- package/src/schema/agent-run.ts +44 -0
- package/src/schema/index.ts +25 -0
- package/src/schema/message-part.ts +100 -0
- package/src/subagent/delegate.tool.ts +476 -0
- package/src/subagent/index.ts +63 -0
- package/src/subagent/milestone-body.ts +144 -0
- package/src/subagent/output-scan.ts +56 -0
- package/src/subagent/registry-spawn-policy.ts +85 -0
- package/src/subagent/roster-block.ts +103 -0
- package/src/subagent/situation-block.ts +83 -0
- package/src/subagent/spawn-guards.ts +54 -0
- package/src/subagent/subagent-registry.ts +283 -0
- package/src/subagent/subagent-sessions.ts +496 -0
- package/src/testing/contracts.ts +882 -0
- package/src/testing/index.ts +14 -0
- package/src/testing/stub.ts +28 -0
- package/src/tools/agent-tool.base.ts +361 -0
- package/src/tools/agent-tool.interface.ts +101 -0
- package/src/tools/builtin-names.ts +26 -0
- package/src/tools/index.ts +39 -0
- package/src/tools/tool-definition.ts +93 -0
- package/src/tools/tool-meta.ts +60 -0
- package/src/tools/tool-registry.ts +513 -0
- package/src/tools/tool-result.ts +45 -0
- package/src/tools/tool-wire.ts +24 -0
- package/src/turn/agent-runtime.ts +43 -0
- package/src/turn/chunk-projection.ts +81 -0
- package/src/turn/compaction.ts +103 -0
- package/src/turn/context-overflow.ts +54 -0
- package/src/turn/context-pressure.ts +114 -0
- package/src/turn/events-to-steps.ts +73 -0
- package/src/turn/index.ts +71 -0
- package/src/turn/json-preview.ts +36 -0
- package/src/turn/json-string-field.ts +134 -0
- package/src/turn/loop-reminder.ts +0 -0
- package/src/turn/nul-safe.ts +22 -0
- package/src/turn/parts-from-events.ts +248 -0
- package/src/turn/parts-to-model-messages.ts +428 -0
- package/src/turn/pending-work.ts +14 -0
- package/src/turn/provider-error.ts +160 -0
- package/src/turn/tool-input-preview.ts +223 -0
- package/src/turn/tool-input-progress.ts +76 -0
- package/src/turn/turn-envelope.ts +185 -0
- package/src/turn/turn-journal.ts +102 -0
- package/src/turn/turn-run.ts +1479 -0
- package/src/turn/usage.ts +56 -0
- package/README.md +0 -3
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import type { ModelMessage } from 'ai';
|
|
2
|
+
import type { MessagePart } from '../schema/index.js';
|
|
3
|
+
export interface TurnEnvelope {
|
|
4
|
+
/** agent 的 id(同 `AgentDefinition.id`)。 */
|
|
5
|
+
agentId: string;
|
|
6
|
+
/**
|
|
7
|
+
* 本轮实际用的模型与推理等级,记进跑次(`RunStore.open` 的 `model`)。取自模型句柄,内核不解释。
|
|
8
|
+
*/
|
|
9
|
+
modelUsed: {
|
|
10
|
+
modelId: string;
|
|
11
|
+
label: string;
|
|
12
|
+
reasoningEffort: string;
|
|
13
|
+
};
|
|
14
|
+
/** 用户输入。 */
|
|
15
|
+
parts: MessagePart[];
|
|
16
|
+
/** 根 turn 的 id;同时是 StreamBus 的 streamId。 */
|
|
17
|
+
streamId: string;
|
|
18
|
+
/** 根会话 id(观测/产物树级作用域键;pre-1b 根 tick = sessionId)。 */
|
|
19
|
+
rootSessionId: string;
|
|
20
|
+
/** 当前 loop 的会话 id。 */
|
|
21
|
+
sessionId: string;
|
|
22
|
+
/** 本次执行的 run id(根 turn 与 streamId 可相同,子 agent 各自不同)。 */
|
|
23
|
+
runId: string;
|
|
24
|
+
parentRunId?: string | null;
|
|
25
|
+
depth?: number;
|
|
26
|
+
/**
|
|
27
|
+
* 宿主给这个跑次的不透明附加列(跑的是哪个 agent、发布版号、账本序号……),原样交给
|
|
28
|
+
* `RunStore.open` 的 `attrs`。内核不解释。
|
|
29
|
+
*/
|
|
30
|
+
runAttrs?: Readonly<Record<string, unknown>>;
|
|
31
|
+
/**
|
|
32
|
+
* 会话上的不透明附加信息,原样进 `ToolContext.sessionMetadata`(派子 Agent 时子会话继承)。
|
|
33
|
+
* 省略 = 空对象。
|
|
34
|
+
*/
|
|
35
|
+
sessionMetadata?: Readonly<Record<string, unknown>>;
|
|
36
|
+
userId?: string | null;
|
|
37
|
+
/**
|
|
38
|
+
* 本轮模型标了哪些能力(模型句柄的 `capabilities`)。内核只透传进
|
|
39
|
+
* `ToolContext.agent.modelCapabilities`。省略 = 空数组。
|
|
40
|
+
*/
|
|
41
|
+
modelCapabilities?: readonly string[];
|
|
42
|
+
/**
|
|
43
|
+
* 子 run 的宿主 agent 名(Plan 3 子 agent 用)。供前端画子轨道标题
|
|
44
|
+
* (Task 9);内核本身不消费。根 run 不传。
|
|
45
|
+
*/
|
|
46
|
+
agentName?: string;
|
|
47
|
+
/**
|
|
48
|
+
* 父写给子的 task prompt(Plan 3 子 agent 用)。供 run-start 事件
|
|
49
|
+
* 携带、UI 展示;内核本身不消费。根 run 不传。
|
|
50
|
+
*/
|
|
51
|
+
prompt?: string;
|
|
52
|
+
/**
|
|
53
|
+
* 子 run 的一句话任务标题(spawn 时模型显式提供,落在子会话 `title`)。
|
|
54
|
+
* 供 run-start 事件携带、前端子 Agent 卡做标题;内核本身不消费。根 run 不传。
|
|
55
|
+
*/
|
|
56
|
+
title?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* loop 从 inbox 领到的一条消息——内核只认 parts,不认 inbox 行结构。
|
|
60
|
+
* `metadata` 是可选的宿主级附加信息(当前唯一用途:tool_result 里程碑回投时
|
|
61
|
+
* 携带 `{ source }`,供 `onUserMessages` 落进 `chat_message.metadata`,供前端
|
|
62
|
+
* 未来渲染来源角标;内核本身不消费)。
|
|
63
|
+
*/
|
|
64
|
+
export interface DrainedTurnMessage {
|
|
65
|
+
/** 预生成的落库 id(root 的用户消息经 start() 预生成、inbox 透传);无则落库自生 uuid。 */
|
|
66
|
+
id?: string;
|
|
67
|
+
/** **落库的那份**——数据本身。`onUserMessages` 写的就是它。 */
|
|
68
|
+
parts: MessagePart[];
|
|
69
|
+
/**
|
|
70
|
+
* **注入模型的那份**——同一条消息的呈现形态,缺省即 `parts`。
|
|
71
|
+
*
|
|
72
|
+
* 当前唯一用途:子 Agent 回执要包进 `<subagent-result …>` 围栏(不可信外部
|
|
73
|
+
* 输入需要一条字节层面可判定的边界,见 `milestone-body.ts#wrapSubagentResult`),
|
|
74
|
+
* 而围栏是给模型看的、不该落进 `chat_message`——否则前端渲染回执气泡时还得
|
|
75
|
+
* 把标签剥回去,等于把一个自己刚拼上的格式再解析一遍。
|
|
76
|
+
*
|
|
77
|
+
* 内核对这层区分一无所知,只负责「push 进 messages 时优先用它」。
|
|
78
|
+
*/
|
|
79
|
+
modelParts?: MessagePart[];
|
|
80
|
+
metadata?: Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
/** 壳提供的宿主能力。内核对"消息存哪、怎么投递"一无所知。 */
|
|
83
|
+
export interface TurnHost {
|
|
84
|
+
/** 历史从哪来。必须返回 ModelMessage[],不许退化成 {role,content:string}[]。 */
|
|
85
|
+
loadContext(): Promise<ModelMessage[]>;
|
|
86
|
+
/** system prompt 拼装(可在 agent.systemPrompt 之上追加时间块等)。 */
|
|
87
|
+
assembleSystem(agentPrompt: string): Promise<string>;
|
|
88
|
+
/**
|
|
89
|
+
* 取出本会话 inbox 里排队的消息。**实现方必须在取出的同一个事务里落库**
|
|
90
|
+
* —— 取出是 DELETE,拆成「先取后写」两步的话,中间失败就两边都没有了。
|
|
91
|
+
* 内核因此不再有 `onUserMessages` 钩子(那正是被忘掉的第二步)。
|
|
92
|
+
*
|
|
93
|
+
* **一轮只调一次**(本轮第一次迭代),之后改用 `hasPendingInbox` 探测并
|
|
94
|
+
* 换轮,见那个方法。缺省(裸 host)视为恒空。
|
|
95
|
+
*/
|
|
96
|
+
drainInbox?(): Promise<DrainedTurnMessage[]>;
|
|
97
|
+
/**
|
|
98
|
+
* 探一眼 inbox 还有没有排队的消息 —— **只探不取**。
|
|
99
|
+
*
|
|
100
|
+
* 内核用它决定「换轮」:本轮第一次迭代照常 `drainInbox` 真取,之后每次调
|
|
101
|
+
* 模型前只探这一下,见货就收尾这一轮,把消息留给**下一个 tick** 的首次
|
|
102
|
+
* drain。新 runId / 新 `agent_run` / 新 assistant 行 / 新流全由既有的
|
|
103
|
+
* re-wake 白拿(`LoopDriverService.onWake` 释放锁后本来就查一次 inbox)。
|
|
104
|
+
*
|
|
105
|
+
* 这样插话在 `created_at` 上天然落在它引发的那段文字**之前**,不必再在
|
|
106
|
+
* 宿主里封口当前段落、把后续输出切到新的一行 —— 那套分段连同它散在六处
|
|
107
|
+
* 的判据(`persist` 盖哪一行、前端按 runId 聚合/收段…)由此整块消失。
|
|
108
|
+
*
|
|
109
|
+
* **第一次为什么不能也只探不取**:那样会话空闲时用户发一条消息就会
|
|
110
|
+
* 收尾 → re-wake → 又探到有货 → 收尾 …… 永远没人取走它。判据是 `TurnRun`
|
|
111
|
+
* 内部的一个局部标志(`drainedOnce`),投递方什么都不用知道。
|
|
112
|
+
*
|
|
113
|
+
* 缺省(不实现)= 恒 false = 永不换轮,裸 host 的行为因此不变。
|
|
114
|
+
*/
|
|
115
|
+
hasPendingInbox?(): Promise<boolean>;
|
|
116
|
+
/**
|
|
117
|
+
* 本轮又产出了这一截 parts(从事件账本重建,见 `TurnRun.flushStep`)——增量
|
|
118
|
+
* 落库。**只交增量**:调用方带着游标,同一条 part 不会交第二次。
|
|
119
|
+
*
|
|
120
|
+
* **不带 usage**:本轮的 usage 累加到终态一次性交给 `persist`,而这里曾经那个
|
|
121
|
+
* 参数从来没有实现方读过(宿主写的一直是 `usageAcc`)。一个没人读的参数迟早
|
|
122
|
+
* 会有人以为它写进了库。
|
|
123
|
+
*
|
|
124
|
+
* `uptoSeq`:这批 parts 覆盖到的最后一个事件的 seq(见
|
|
125
|
+
* `partsFromEventBufferWithBoundary`)。宿主把它与 parts 一起落库
|
|
126
|
+
* (`metadata.flushedSeq`),再据此让会话流退役 seq ≤ 它的事件。
|
|
127
|
+
*/
|
|
128
|
+
onAssistantStep?(parts: MessagePart[], uptoSeq: number | null): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* 收尾:盖终态。**不再交 parts** —— 这一轮产出过什么,`onAssistantStep` 已经
|
|
131
|
+
* 逐段交过了(终态路径也一样:内核在 `finish()` 里先把账本里剩下的那一截交
|
|
132
|
+
* 出去,再调这里)。宿主因此不必再判「这一轮到底落过库没有」,那套
|
|
133
|
+
* `wroteAnyStep` 分流随之消失。
|
|
134
|
+
*/
|
|
135
|
+
persist(result: TurnResult): Promise<void>;
|
|
136
|
+
/**
|
|
137
|
+
* 宿主为本轮**预置**的插件状态(键 = 插件的 `name`,取用见 `turnStateOf`)。
|
|
138
|
+
* 不给就是一张空表,插件各自懒建自己那一份。
|
|
139
|
+
*
|
|
140
|
+
* **这是个数据字段,不是能力方法**,存在的理由只有一条:有些 per-turn 对象
|
|
141
|
+
* 天生同时服务骨架与插件,而它必须是**同一个实例**。上下文预算的
|
|
142
|
+
* `ContextBudgetTracker` 就是——`loadContext()` 用它投影历史并留下轮初那批行
|
|
143
|
+
* 的快照,`beforeModelCall` 插件用同一份快照算切点、只替换 `messages` 的头部,
|
|
144
|
+
* 终态又用它落 `contextThreshold`。三方各建一个的话,`ContextRelief.replaces`
|
|
145
|
+
* 与内存里真实的头部长度就不是一回事,`splice` 会把尾部整体错位一格——**而那
|
|
146
|
+
* 是静默的**(历史与围栏消息一起被吃掉,没有任何报错)。
|
|
147
|
+
*
|
|
148
|
+
* 所以由**建它的那一方**(宿主,`loadContext` 的实现者)顺手挂在这里,而不是
|
|
149
|
+
* 让插件在切点上懒建:切点跑在第一次 `drainInbox` **之后**,那时本轮的用户
|
|
150
|
+
* 消息已经进库,懒建出来的快照会把它们算进可裁剪的阴影区。
|
|
151
|
+
*/
|
|
152
|
+
turnState?: Map<string, unknown>;
|
|
153
|
+
}
|
|
154
|
+
export type TurnStatus = 'completed' | 'aborted' | 'rejected' | 'failed';
|
|
155
|
+
/**
|
|
156
|
+
* 一轮的终态。**没有 `parts` 字段是有意的**(阶段 3):本轮产出过什么由
|
|
157
|
+
* `onAssistantStep` 逐段交出去,终态只回答「怎么结束的、花了多少」。
|
|
158
|
+
*
|
|
159
|
+
* 曾经它带着整轮重建出来的 parts,宿主再按「这一轮落过库没有」分流:落过就只
|
|
160
|
+
* 盖终态、没落过就拿这份补落一条。那套分流有两个已知漏洞(多步中途 abort、
|
|
161
|
+
* reviewOutput 改写:两者的 parts 都会在首步已落库之后才出现,于是被丢掉),
|
|
162
|
+
* 而漏洞的根在「同一批内容有两条落库路径」。现在只剩一条。
|
|
163
|
+
*/
|
|
164
|
+
export interface TurnResult {
|
|
165
|
+
streamId: string;
|
|
166
|
+
runId: string;
|
|
167
|
+
status: TurnStatus;
|
|
168
|
+
/** 最终文本(reviewOutput 改写后的)。 */
|
|
169
|
+
text: string;
|
|
170
|
+
usage?: Record<string, number>;
|
|
171
|
+
stopReason?: string;
|
|
172
|
+
error?: string;
|
|
173
|
+
/**
|
|
174
|
+
* **这一轮结束时上下文有多大** = 末步 provider 报的 `inputTokens` + 那一步的
|
|
175
|
+
* `outputTokens`(那条回复此刻已经在历史里,下一轮就是输入的一部分)。宿主
|
|
176
|
+
* 落进 `chat_message.metadata`,供下一轮开头当压力基线 —— 那一刻还没调过模型,
|
|
177
|
+
* 没有别的办法知道这个会话的上下文有多大。
|
|
178
|
+
*
|
|
179
|
+
* **与 `usage.inputTokens` 不是一回事**:后者是整轮各 step 的累加和(账单
|
|
180
|
+
* 口径,单步轮相等、多步轮按步数放大)。这个是一次快照。
|
|
181
|
+
*/
|
|
182
|
+
contextTokens?: number;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=turn-envelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-envelope.d.ts","sourceRoot":"","sources":["../../src/turn/turn-envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-envelope.js","sourceRoot":"","sources":["../../src/turn/turn-envelope.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Logger } from '../ports/logger.js';
|
|
2
|
+
import type { AgentEvent, AgentEventType } from '../schema/agent-event.js';
|
|
3
|
+
import type { TurnEnvelope } from './turn-envelope.js';
|
|
4
|
+
/**
|
|
5
|
+
* 一轮的事件账本。**同步 append、可回读**——事件流不只是对外广播,它同时是
|
|
6
|
+
* 内核自己的兜底状态源:`eventsToSteps` 靠它落 `agent_run.steps`,abort 与
|
|
7
|
+
* 失败路径靠 `partsFromEventBuffer(entries())` 重建这一轮已经产出的 parts。
|
|
8
|
+
*
|
|
9
|
+
* **绝不要把它改成异步或 fire-and-forget**:那两条路径会就此失去唯一的依据,
|
|
10
|
+
* 症状是「被中断的那一轮,已经打出来的字没了」。
|
|
11
|
+
*/
|
|
12
|
+
export interface TurnJournal {
|
|
13
|
+
/** 记一条并投递出去。**同步**,且在调用点的原位置调用。 */
|
|
14
|
+
append(type: AgentEventType, payload: unknown): void;
|
|
15
|
+
/** 回读:`eventsToSteps` / `partsFromEventBuffer` 的输入。 */
|
|
16
|
+
entries(): readonly AgentEvent[];
|
|
17
|
+
/**
|
|
18
|
+
* 把 `mark`(= 某一刻的 `entries().length`)之后的条目**物理删掉**,返回
|
|
19
|
+
* 被删的那些。
|
|
20
|
+
*
|
|
21
|
+
* 账本原则上只增不改——这是它唯一的例外,且只有一个合法调用方:一步的
|
|
22
|
+
* 模型调用在响应中途断连、内核要作废这一步的半截产出重发时
|
|
23
|
+
* (`turn-run.ts#settleStep`)。合法的前提是**被删的条目没有一条交给过宿主**:
|
|
24
|
+
* 从 `startInference` 到 `settleStep` 之间不会有任何 `flushStep`,所以这一
|
|
25
|
+
* 段账本还没有投影成任何落库 part,删掉它不会让库里出现「已经写进去又消失」
|
|
26
|
+
* 的东西。反过来说,删掉已经 flush 过的条目会让 `flushedParts` 游标指向一个
|
|
27
|
+
* 不再存在的前缀——那种错误不会报,只会让下一次 flush 把同一批 part 再落
|
|
28
|
+
* 一次。**别在别处调它。**
|
|
29
|
+
*
|
|
30
|
+
* 已投递出去的事件收不回来,这是刻意的:由调用方紧接着 append 一条
|
|
31
|
+
* `step-retract` 告诉订阅者「这一段作废」,seq 单调不复用,作废段与重发段
|
|
32
|
+
* 在流里天然可分。
|
|
33
|
+
*/
|
|
34
|
+
discardAfter(mark: number): AgentEvent[];
|
|
35
|
+
}
|
|
36
|
+
export interface TurnJournalDeps {
|
|
37
|
+
envelope: TurnEnvelope;
|
|
38
|
+
/** 该 stream 的 seq 分配器(由壳 open 时取得)。 */
|
|
39
|
+
nextSeq: () => number;
|
|
40
|
+
/**
|
|
41
|
+
* 事件往哪去。**内核对此一无所知**:壳传本轮 recorder 的 `emit`(消息中心,
|
|
42
|
+
* 见 `TurnRecorder.emit`),单测传一个数组的 push。
|
|
43
|
+
*/
|
|
44
|
+
sink: (event: AgentEvent) => void;
|
|
45
|
+
/** sink 抛错时记一条 warn。缺省不记。 */
|
|
46
|
+
logger?: Logger;
|
|
47
|
+
}
|
|
48
|
+
export declare function createTurnJournal(deps: TurnJournalDeps): TurnJournal;
|
|
49
|
+
//# sourceMappingURL=turn-journal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-journal.d.ts","sourceRoot":"","sources":["../../src/turn/turn-journal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACrD,uDAAuD;IACvD,OAAO,IAAI,SAAS,UAAU,EAAE,CAAC;IACjC;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,uCAAuC;IACvC,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB;;;OAGG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,CAmDpE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export function createTurnJournal(deps) {
|
|
2
|
+
const { envelope, nextSeq, sink, logger } = deps;
|
|
3
|
+
const entries = [];
|
|
4
|
+
return {
|
|
5
|
+
append(type, payload) {
|
|
6
|
+
const event = {
|
|
7
|
+
seq: nextSeq(),
|
|
8
|
+
streamId: envelope.streamId,
|
|
9
|
+
rootSessionId: envelope.rootSessionId,
|
|
10
|
+
sessionId: envelope.sessionId,
|
|
11
|
+
runId: envelope.runId,
|
|
12
|
+
// **恒等于 runId**:一轮一行,本轮 assistant 输出全部归属那一条。
|
|
13
|
+
//
|
|
14
|
+
// 曾经这里每次 append 都重新问一次宿主的 `assistantMessageId()`——软
|
|
15
|
+
// 插话会在轮中途封口当前段、把后续输出切到新的一行,缓存一次就等于把
|
|
16
|
+
// 插话之后的全部增量继续投递到已经封口的那条气泡上。那套分段随「换轮」
|
|
17
|
+
// 一起拆掉了(见 `TurnHost.hasPendingInbox`),宿主不再需要被问。
|
|
18
|
+
//
|
|
19
|
+
// **字段本身保留**:它是前端把流式增量路由到气泡的键(`chunk.id`),
|
|
20
|
+
// wire 形状因此逐字不变。
|
|
21
|
+
messageId: envelope.runId,
|
|
22
|
+
parentRunId: envelope.parentRunId ?? null,
|
|
23
|
+
depth: envelope.depth ?? 0,
|
|
24
|
+
ts: Date.now(),
|
|
25
|
+
type,
|
|
26
|
+
payload,
|
|
27
|
+
};
|
|
28
|
+
// **先记账后投递**:账本是承重的(abort 路径靠它重建 parts),sink 不是。
|
|
29
|
+
entries.push(event);
|
|
30
|
+
try {
|
|
31
|
+
sink(event);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
// 观测非承重:投递抛错绝不能把一轮成功的生成变成 failed。
|
|
35
|
+
// `RedisStreamBus.publish` 已经自己吞了序列化异常(那里有判据),但
|
|
36
|
+
// 账本不该假设每个 sink 都这么守规矩——这是最后一道。
|
|
37
|
+
//
|
|
38
|
+
// **不去重、不静默计数**:sink 抛错是 bug 不是常态,压掉只会让它更难
|
|
39
|
+
// 被发现。
|
|
40
|
+
logger?.warn(`event sink threw for run ${envelope.runId} (${type}), event still recorded: ${String(err)}`);
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
entries() {
|
|
44
|
+
return entries;
|
|
45
|
+
},
|
|
46
|
+
discardAfter(mark) {
|
|
47
|
+
return entries.splice(mark);
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=turn-journal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-journal.js","sourceRoot":"","sources":["../../src/turn/turn-journal.ts"],"names":[],"mappings":"AAkDA,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjD,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,OAAO;QACL,MAAM,CAAC,IAAI,EAAE,OAAO;YAClB,MAAM,KAAK,GAAe;gBACxB,GAAG,EAAE,OAAO,EAAE;gBACd,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,6CAA6C;gBAC7C,EAAE;gBACF,oDAAoD;gBACpD,oCAAoC;gBACpC,qCAAqC;gBACrC,gDAAgD;gBAChD,EAAE;gBACF,2CAA2C;gBAC3C,iBAAiB;gBACjB,SAAS,EAAE,QAAQ,CAAC,KAAK;gBACzB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,IAAI;gBACzC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC;gBAC1B,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;gBACd,IAAI;gBACJ,OAAO;aACR,CAAC;YACF,iDAAiD;YACjD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,CAAC;YACd,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,kCAAkC;gBAClC,gDAAgD;gBAChD,gCAAgC;gBAChC,EAAE;gBACF,2CAA2C;gBAC3C,OAAO;gBACP,MAAM,EAAE,IAAI,CACV,4BAA4B,QAAQ,CAAC,KAAK,KAAK,IAAI,4BAA4B,MAAM,CAAC,GAAG,CAAC,EAAE,CAC7F,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO;YACL,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,YAAY,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC"}
|