@jangts/agent-core 0.1.0 → 0.2.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/CHANGELOG.md +18 -0
- package/README.md +59 -0
- package/development/docs/api/reference.md +1907 -1874
- package/development/docs/api/support.md +27 -0
- package/development/docs/assets/agent-core-icon.png +0 -0
- package/development/docs/assets/agent-core-logo.png +0 -0
- package/development/docs/assets/character-agent-core.png +0 -0
- package/development/skills/agent-core-app/scripts/create-app.mjs +267 -70
- package/development/skills/agent-core-app/scripts/lib/knowledge.mjs +40 -15
- package/development/skills/agent-core-app/scripts/lib/source.mjs +30 -2
- package/development/skills/agent-core-app/scripts/plan.mjs +37 -12
- package/development/skills/agent-core-app/scripts/prepare-source.mjs +61 -10
- package/development/skills/agent-core-app/scripts/resources.mjs +45 -17
- package/development/skills/agent-core-app/scripts/validate-knowledge.mjs +18 -1
- package/development/skills/agent-core-app/templates/catalog.json +36 -22
- package/dist/cjs/capabilities/index.js +13 -0
- package/dist/cjs/capabilities/invocation.js +80 -10
- package/dist/cjs/capabilities/model.js +126 -13
- package/dist/cjs/capabilities/tool-runtime.js +64 -12
- package/dist/cjs/capabilities/tools.js +266 -31
- package/dist/cjs/context/assembly.js +46 -5
- package/dist/cjs/context/audit.js +31 -6
- package/dist/cjs/context/fragments.js +54 -11
- package/dist/cjs/context/index.js +12 -0
- package/dist/cjs/context/journal.js +84 -7
- package/dist/cjs/context/plan.js +30 -2
- package/dist/cjs/diagnostics/catalog.js +11 -3
- package/dist/cjs/diagnostics/index.js +149 -29
- package/dist/cjs/diagnostics/sub-flow.js +240 -40
- package/dist/cjs/errors.js +99 -17
- package/dist/cjs/execution/branch.js +20 -4
- package/dist/cjs/execution/engine.js +470 -56
- package/dist/cjs/execution/events.js +136 -18
- package/dist/cjs/execution/index.js +7 -0
- package/dist/cjs/execution/reporting.js +75 -6
- package/dist/cjs/execution/state.js +161 -22
- package/dist/cjs/execution/workflow.js +224 -32
- package/dist/cjs/index.js +18 -0
- package/dist/cjs/kits/aggregation.js +45 -3
- package/dist/cjs/kits/answering/batch.js +23 -4
- package/dist/cjs/kits/answering/check-result.js +31 -8
- package/dist/cjs/kits/answering/checks.js +24 -3
- package/dist/cjs/kits/answering/flow.js +192 -36
- package/dist/cjs/kits/answering/index.js +19 -1
- package/dist/cjs/kits/answering/tasks.js +88 -13
- package/dist/cjs/kits/artifacts.js +36 -4
- package/dist/cjs/kits/candidates.js +47 -5
- package/dist/cjs/kits/delivery.js +40 -5
- package/dist/cjs/kits/durable.js +155 -31
- package/dist/cjs/kits/evidence.js +66 -15
- package/dist/cjs/kits/family.js +152 -22
- package/dist/cjs/kits/index.js +12 -1
- package/dist/cjs/kits/inference.js +104 -16
- package/dist/cjs/kits/intents/catalog.js +67 -16
- package/dist/cjs/kits/intents/index.js +11 -0
- package/dist/cjs/kits/intents/registry.js +188 -43
- package/dist/cjs/kits/intents/scopes.js +215 -46
- package/dist/cjs/kits/interaction/command.js +140 -36
- package/dist/cjs/kits/interaction/commands.js +86 -11
- package/dist/cjs/kits/interaction/handlers.js +27 -10
- package/dist/cjs/kits/interaction/index.js +10 -0
- package/dist/cjs/kits/interaction/transfer.js +80 -14
- package/dist/cjs/kits/knowledge/catalog.js +62 -11
- package/dist/cjs/kits/knowledge/index.js +16 -1
- package/dist/cjs/kits/knowledge/publication.js +99 -23
- package/dist/cjs/kits/knowledge/sections.js +33 -4
- package/dist/cjs/kits/normalization.js +51 -7
- package/dist/cjs/kits/policies.js +79 -15
- package/dist/cjs/kits/presentation/events.js +54 -10
- package/dist/cjs/kits/presentation/index.js +24 -1
- package/dist/cjs/kits/presentation/outputs.js +176 -38
- package/dist/cjs/kits/presentation/templates.js +33 -5
- package/dist/cjs/kits/presentation/variants.js +31 -2
- package/dist/cjs/kits/projection.js +63 -8
- package/dist/cjs/kits/rank-fusion.js +27 -4
- package/dist/cjs/kits/reflection-log-source.js +89 -16
- package/dist/cjs/kits/reflection.js +234 -60
- package/dist/cjs/kits/retrieval.js +98 -18
- package/dist/cjs/kits/search.js +180 -27
- package/dist/cjs/kits/text-skills.js +104 -19
- package/dist/cjs/kits/tools.js +415 -74
- package/dist/cjs/kits/vector-search.js +50 -16
- package/dist/cjs/mock/node.js +7 -1
- package/dist/cjs/mock/web.js +7 -1
- package/dist/cjs/mock.js +7 -1
- package/dist/cjs/model/binding.js +68 -17
- package/dist/cjs/model/call-budget.js +45 -4
- package/dist/cjs/model/decision-retry.js +19 -1
- package/dist/cjs/model/defaults.js +27 -4
- package/dist/cjs/model/index.js +7 -0
- package/dist/cjs/model/interactions/arguments.js +36 -1
- package/dist/cjs/model/interactions/json-object.js +48 -12
- package/dist/cjs/model/interactions/native-functions.js +52 -10
- package/dist/cjs/model/message-diagnostics.js +17 -4
- package/dist/cjs/model/options.js +9 -1
- package/dist/cjs/model/preparation.js +86 -12
- package/dist/cjs/model/runner.js +413 -79
- package/dist/cjs/model/selection-transport.js +48 -8
- package/dist/cjs/model/settings.js +67 -13
- package/dist/cjs/model/token-budget.js +69 -11
- package/dist/cjs/model/transports.js +59 -6
- package/dist/cjs/structs/common.js +11 -0
- package/dist/cjs/structs/debug.js +34 -5
- package/dist/cjs/structs/errors.js +26 -1
- package/dist/cjs/structs/index.js +11 -1
- package/dist/cjs/structs/kits/durable.js +7 -0
- package/dist/cjs/structs/kits/family.js +1 -0
- package/dist/cjs/structs/kits/interaction.js +8 -1
- package/dist/cjs/structs/kits/knowledge-publication.js +1 -0
- package/dist/cjs/structs/kits/reflection.js +18 -3
- package/dist/cjs/structs/model/chat-provider.js +6 -0
- package/dist/cjs/structs/support/model/completion.js +2 -0
- package/dist/cjs/structs/support/model/messages.js +2 -0
- package/dist/cjs/support/capabilities.js +43 -6
- package/dist/cjs/support/context/assembly.js +88 -16
- package/dist/cjs/support/context/compression.js +48 -6
- package/dist/cjs/support/context/fragments.js +6 -0
- package/dist/cjs/support/context/history.js +36 -1
- package/dist/cjs/support/context/index.js +11 -0
- package/dist/cjs/support/context/nodes.js +164 -35
- package/dist/cjs/support/context/processing.js +319 -61
- package/dist/cjs/support/context/selection-policy.js +98 -21
- package/dist/cjs/support/context/selection.js +61 -10
- package/dist/cjs/support/context/snapshot.js +29 -7
- package/dist/cjs/support/context/strategies.js +120 -28
- package/dist/cjs/support/index.js +9 -1
- package/dist/cjs/support/model/capabilities.js +20 -1
- package/dist/cjs/support/model/chat-completions.js +92 -20
- package/dist/cjs/support/model/children.js +34 -6
- package/dist/cjs/support/model/compatible-provider.js +189 -59
- package/dist/cjs/support/model/completion/calls.js +61 -0
- package/dist/cjs/support/model/completion/default.js +32 -0
- package/dist/cjs/support/model/completion/index.js +28 -0
- package/dist/cjs/support/model/completion/session.js +102 -0
- package/dist/cjs/support/model/index.js +12 -0
- package/dist/cjs/support/model/interactions/index.js +12 -1
- package/dist/cjs/support/model/interactions/json-object.js +6 -0
- package/dist/cjs/support/model/interactions/native-functions.js +6 -0
- package/dist/cjs/support/model/observer.js +32 -6
- package/dist/cjs/support/model/preview-rules.js +66 -16
- package/dist/cjs/support/model/reply-preview.js +77 -17
- package/dist/cjs/support/model/stage-transport.js +33 -7
- package/dist/cjs/support/model/strategies.js +75 -14
- package/dist/cjs/support/model/transports.js +53 -11
- package/dist/cjs/support/registration.js +49 -7
- package/dist/cjs/support/schema.js +46 -4
- package/dist/cjs/support/stream-events.js +60 -8
- package/dist/cjs/support/tool-runtime.js +6 -0
- package/dist/cjs/support/tools.js +79 -10
- package/dist/cjs/support/transport/index.js +7 -0
- package/dist/cjs/support/transport/json.js +28 -4
- package/dist/cjs/support/transport/sse.js +25 -2
- package/dist/cjs/utils/break-observer.js +20 -2
- package/dist/cjs/utils/cancellation.js +77 -9
- package/dist/cjs/utils/catalog.js +19 -4
- package/dist/cjs/utils/debug.js +14 -2
- package/dist/cjs/utils/index.js +8 -0
- package/dist/cjs/utils/interaction-definition.js +26 -6
- package/dist/cjs/utils/invocation.js +42 -4
- package/dist/cjs/utils/model-protocol.js +20 -1
- package/dist/cjs/utils/object.js +16 -0
- package/dist/cjs/utils/observer.js +22 -2
- package/dist/cjs/utils/protocol-registry.js +47 -4
- package/dist/cjs/utils/query-key.js +21 -2
- package/dist/cjs/utils/registration.js +18 -2
- package/dist/cjs/utils/rules.js +39 -11
- package/dist/cjs/utils/schema-adapter.js +25 -2
- package/dist/cjs/utils/synchronous.js +64 -7
- package/dist/cjs/utils/text.js +15 -1
- package/dist/esm/capabilities/index.d.ts +13 -0
- package/dist/esm/capabilities/index.js +13 -0
- package/dist/esm/capabilities/invocation.d.ts +16 -2
- package/dist/esm/capabilities/invocation.js +80 -10
- package/dist/esm/capabilities/model.d.ts +68 -1
- package/dist/esm/capabilities/model.js +126 -13
- package/dist/esm/capabilities/tool-runtime.d.ts +11 -0
- package/dist/esm/capabilities/tool-runtime.js +64 -12
- package/dist/esm/capabilities/tools.d.ts +96 -3
- package/dist/esm/capabilities/tools.js +267 -32
- package/dist/esm/context/assembly.d.ts +13 -2
- package/dist/esm/context/assembly.js +46 -5
- package/dist/esm/context/audit.d.ts +23 -1
- package/dist/esm/context/audit.js +31 -6
- package/dist/esm/context/fragments.d.ts +37 -3
- package/dist/esm/context/fragments.js +54 -11
- package/dist/esm/context/index.d.ts +12 -0
- package/dist/esm/context/index.js +12 -0
- package/dist/esm/context/journal.d.ts +32 -1
- package/dist/esm/context/journal.js +84 -7
- package/dist/esm/context/plan.d.ts +11 -1
- package/dist/esm/context/plan.js +30 -2
- package/dist/esm/diagnostics/catalog.js +11 -3
- package/dist/esm/diagnostics/index.d.ts +30 -2
- package/dist/esm/diagnostics/index.js +149 -29
- package/dist/esm/diagnostics/sub-flow.d.ts +41 -3
- package/dist/esm/diagnostics/sub-flow.js +240 -40
- package/dist/esm/errors.d.ts +22 -2
- package/dist/esm/errors.js +99 -17
- package/dist/esm/execution/branch.d.ts +19 -1
- package/dist/esm/execution/branch.js +20 -4
- package/dist/esm/execution/engine.d.ts +291 -5
- package/dist/esm/execution/engine.js +471 -57
- package/dist/esm/execution/events.d.ts +16 -2
- package/dist/esm/execution/events.js +136 -18
- package/dist/esm/execution/index.d.ts +7 -0
- package/dist/esm/execution/index.js +7 -0
- package/dist/esm/execution/reporting.d.ts +49 -1
- package/dist/esm/execution/reporting.js +75 -6
- package/dist/esm/execution/state.d.ts +126 -10
- package/dist/esm/execution/state.js +161 -22
- package/dist/esm/execution/workflow.d.ts +121 -3
- package/dist/esm/execution/workflow.js +224 -32
- package/dist/esm/index.d.ts +17 -1
- package/dist/esm/index.js +18 -0
- package/dist/esm/kits/aggregation.d.ts +34 -2
- package/dist/esm/kits/aggregation.js +45 -3
- package/dist/esm/kits/answering/batch.d.ts +17 -0
- package/dist/esm/kits/answering/batch.js +23 -4
- package/dist/esm/kits/answering/check-result.d.ts +18 -1
- package/dist/esm/kits/answering/check-result.js +31 -8
- package/dist/esm/kits/answering/checks.d.ts +11 -0
- package/dist/esm/kits/answering/checks.js +24 -3
- package/dist/esm/kits/answering/flow.d.ts +25 -2
- package/dist/esm/kits/answering/flow.js +192 -36
- package/dist/esm/kits/answering/index.d.ts +12 -0
- package/dist/esm/kits/answering/index.js +19 -1
- package/dist/esm/kits/answering/tasks.d.ts +32 -1
- package/dist/esm/kits/answering/tasks.js +88 -13
- package/dist/esm/kits/artifacts.d.ts +11 -0
- package/dist/esm/kits/artifacts.js +36 -4
- package/dist/esm/kits/candidates.d.ts +23 -1
- package/dist/esm/kits/candidates.js +47 -5
- package/dist/esm/kits/delivery.d.ts +34 -0
- package/dist/esm/kits/delivery.js +40 -5
- package/dist/esm/kits/durable.d.ts +19 -0
- package/dist/esm/kits/durable.js +155 -31
- package/dist/esm/kits/evidence.d.ts +28 -5
- package/dist/esm/kits/evidence.js +66 -15
- package/dist/esm/kits/family.d.ts +17 -1
- package/dist/esm/kits/family.js +152 -22
- package/dist/esm/kits/index.d.ts +12 -1
- package/dist/esm/kits/index.js +12 -1
- package/dist/esm/kits/inference.d.ts +64 -0
- package/dist/esm/kits/inference.js +104 -16
- package/dist/esm/kits/intents/catalog.d.ts +13 -1
- package/dist/esm/kits/intents/catalog.js +67 -16
- package/dist/esm/kits/intents/index.d.ts +11 -0
- package/dist/esm/kits/intents/index.js +11 -0
- package/dist/esm/kits/intents/registry.d.ts +61 -3
- package/dist/esm/kits/intents/registry.js +188 -43
- package/dist/esm/kits/intents/scopes.d.ts +73 -3
- package/dist/esm/kits/intents/scopes.js +215 -46
- package/dist/esm/kits/interaction/command.d.ts +38 -4
- package/dist/esm/kits/interaction/command.js +140 -36
- package/dist/esm/kits/interaction/commands.d.ts +66 -2
- package/dist/esm/kits/interaction/commands.js +86 -11
- package/dist/esm/kits/interaction/handlers.d.ts +19 -2
- package/dist/esm/kits/interaction/handlers.js +27 -10
- package/dist/esm/kits/interaction/index.d.ts +10 -0
- package/dist/esm/kits/interaction/index.js +10 -0
- package/dist/esm/kits/interaction/transfer.d.ts +39 -2
- package/dist/esm/kits/interaction/transfer.js +80 -14
- package/dist/esm/kits/knowledge/catalog.d.ts +13 -0
- package/dist/esm/kits/knowledge/catalog.js +62 -11
- package/dist/esm/kits/knowledge/index.d.ts +11 -0
- package/dist/esm/kits/knowledge/index.js +16 -1
- package/dist/esm/kits/knowledge/publication.d.ts +15 -1
- package/dist/esm/kits/knowledge/publication.js +99 -23
- package/dist/esm/kits/knowledge/sections.d.ts +31 -1
- package/dist/esm/kits/knowledge/sections.js +33 -4
- package/dist/esm/kits/normalization.d.ts +25 -2
- package/dist/esm/kits/normalization.js +51 -7
- package/dist/esm/kits/policies.d.ts +26 -3
- package/dist/esm/kits/policies.js +79 -15
- package/dist/esm/kits/presentation/events.d.ts +51 -4
- package/dist/esm/kits/presentation/events.js +54 -10
- package/dist/esm/kits/presentation/index.d.ts +12 -0
- package/dist/esm/kits/presentation/index.js +25 -2
- package/dist/esm/kits/presentation/outputs.d.ts +30 -1
- package/dist/esm/kits/presentation/outputs.js +176 -38
- package/dist/esm/kits/presentation/templates.d.ts +32 -3
- package/dist/esm/kits/presentation/templates.js +33 -5
- package/dist/esm/kits/presentation/variants.d.ts +29 -0
- package/dist/esm/kits/presentation/variants.js +31 -2
- package/dist/esm/kits/projection.d.ts +42 -5
- package/dist/esm/kits/projection.js +63 -8
- package/dist/esm/kits/rank-fusion.d.ts +21 -1
- package/dist/esm/kits/rank-fusion.js +28 -5
- package/dist/esm/kits/reflection-log-source.d.ts +28 -1
- package/dist/esm/kits/reflection-log-source.js +89 -16
- package/dist/esm/kits/reflection.d.ts +17 -1
- package/dist/esm/kits/reflection.js +235 -61
- package/dist/esm/kits/retrieval.d.ts +18 -2
- package/dist/esm/kits/retrieval.js +98 -18
- package/dist/esm/kits/search.d.ts +56 -3
- package/dist/esm/kits/search.js +180 -27
- package/dist/esm/kits/text-skills.d.ts +16 -2
- package/dist/esm/kits/text-skills.js +104 -19
- package/dist/esm/kits/tools.d.ts +122 -2
- package/dist/esm/kits/tools.js +416 -74
- package/dist/esm/kits/vector-search.d.ts +47 -1
- package/dist/esm/kits/vector-search.js +51 -17
- package/dist/esm/mock/node.d.ts +7 -0
- package/dist/esm/mock/node.js +7 -1
- package/dist/esm/mock/web.d.ts +7 -0
- package/dist/esm/mock/web.js +7 -1
- package/dist/esm/mock.d.ts +7 -0
- package/dist/esm/mock.js +7 -1
- package/dist/esm/model/binding.d.ts +32 -3
- package/dist/esm/model/binding.js +68 -17
- package/dist/esm/model/call-budget.d.ts +30 -2
- package/dist/esm/model/call-budget.js +45 -4
- package/dist/esm/model/decision-retry.d.ts +10 -1
- package/dist/esm/model/decision-retry.js +19 -1
- package/dist/esm/model/defaults.d.ts +13 -2
- package/dist/esm/model/defaults.js +27 -4
- package/dist/esm/model/index.d.ts +7 -0
- package/dist/esm/model/index.js +7 -0
- package/dist/esm/model/interactions/arguments.d.ts +27 -0
- package/dist/esm/model/interactions/arguments.js +36 -1
- package/dist/esm/model/interactions/json-object.d.ts +7 -1
- package/dist/esm/model/interactions/json-object.js +48 -12
- package/dist/esm/model/interactions/native-functions.d.ts +6 -0
- package/dist/esm/model/interactions/native-functions.js +52 -10
- package/dist/esm/model/message-diagnostics.d.ts +17 -1
- package/dist/esm/model/message-diagnostics.js +17 -4
- package/dist/esm/model/options.d.ts +18 -1
- package/dist/esm/model/options.js +9 -1
- package/dist/esm/model/preparation.d.ts +30 -2
- package/dist/esm/model/preparation.js +86 -12
- package/dist/esm/model/runner.d.ts +129 -5
- package/dist/esm/model/runner.js +414 -80
- package/dist/esm/model/selection-transport.d.ts +14 -1
- package/dist/esm/model/selection-transport.js +48 -8
- package/dist/esm/model/settings.d.ts +11 -0
- package/dist/esm/model/settings.js +67 -13
- package/dist/esm/model/token-budget.d.ts +59 -1
- package/dist/esm/model/token-budget.js +69 -11
- package/dist/esm/model/transports.d.ts +20 -2
- package/dist/esm/model/transports.js +59 -6
- package/dist/esm/structs/capabilities/invocation.d.ts +36 -0
- package/dist/esm/structs/capabilities/model.d.ts +27 -0
- package/dist/esm/structs/capabilities/tools.d.ts +38 -0
- package/dist/esm/structs/common.d.ts +62 -2
- package/dist/esm/structs/common.js +11 -0
- package/dist/esm/structs/context/fragments.d.ts +28 -0
- package/dist/esm/structs/context/journal.d.ts +28 -3
- package/dist/esm/structs/context/processing.d.ts +11 -0
- package/dist/esm/structs/debug.d.ts +58 -1
- package/dist/esm/structs/debug.js +34 -5
- package/dist/esm/structs/diagnostics.d.ts +119 -1
- package/dist/esm/structs/errors.d.ts +42 -1
- package/dist/esm/structs/errors.js +26 -1
- package/dist/esm/structs/execution/engine.d.ts +24 -1
- package/dist/esm/structs/execution/events.d.ts +12 -0
- package/dist/esm/structs/execution/workflow.d.ts +71 -0
- package/dist/esm/structs/index.d.ts +11 -1
- package/dist/esm/structs/index.js +11 -1
- package/dist/esm/structs/invocation.d.ts +30 -0
- package/dist/esm/structs/kits/aggregation.d.ts +12 -0
- package/dist/esm/structs/kits/answering/checks.d.ts +11 -0
- package/dist/esm/structs/kits/answering/flow.d.ts +35 -1
- package/dist/esm/structs/kits/answering/state.d.ts +21 -0
- package/dist/esm/structs/kits/answering/tasks.d.ts +21 -0
- package/dist/esm/structs/kits/artifacts.d.ts +14 -0
- package/dist/esm/structs/kits/candidates.d.ts +19 -0
- package/dist/esm/structs/kits/delivery.d.ts +22 -0
- package/dist/esm/structs/kits/durable.d.ts +56 -3
- package/dist/esm/structs/kits/durable.js +7 -0
- package/dist/esm/structs/kits/evidence.d.ts +23 -0
- package/dist/esm/structs/kits/family.d.ts +49 -1
- package/dist/esm/structs/kits/family.js +1 -0
- package/dist/esm/structs/kits/intents/catalog.d.ts +26 -0
- package/dist/esm/structs/kits/intents/registry.d.ts +34 -0
- package/dist/esm/structs/kits/intents/scopes.d.ts +36 -1
- package/dist/esm/structs/kits/interaction.d.ts +64 -0
- package/dist/esm/structs/kits/interaction.js +8 -1
- package/dist/esm/structs/kits/knowledge-publication.d.ts +43 -1
- package/dist/esm/structs/kits/knowledge-publication.js +1 -0
- package/dist/esm/structs/kits/knowledge.d.ts +39 -2
- package/dist/esm/structs/kits/normalization.d.ts +15 -0
- package/dist/esm/structs/kits/policies.d.ts +25 -1
- package/dist/esm/structs/kits/presentation/events.d.ts +28 -4
- package/dist/esm/structs/kits/presentation/outputs.d.ts +38 -1
- package/dist/esm/structs/kits/presentation/templates.d.ts +15 -0
- package/dist/esm/structs/kits/projection.d.ts +21 -0
- package/dist/esm/structs/kits/reflection.d.ts +61 -2
- package/dist/esm/structs/kits/reflection.js +18 -3
- package/dist/esm/structs/kits/retrieval.d.ts +38 -0
- package/dist/esm/structs/kits/search.d.ts +22 -0
- package/dist/esm/structs/kits/text-skills.d.ts +36 -0
- package/dist/esm/structs/kits/tools.d.ts +87 -0
- package/dist/esm/structs/model/chat-provider.d.ts +24 -1
- package/dist/esm/structs/model/chat-provider.js +6 -0
- package/dist/esm/structs/model/interactions.d.ts +38 -0
- package/dist/esm/structs/model/messages.d.ts +30 -0
- package/dist/esm/structs/model/runtime.d.ts +104 -6
- package/dist/esm/structs/support/capabilities.d.ts +19 -2
- package/dist/esm/structs/support/context-processing.d.ts +88 -9
- package/dist/esm/structs/support/context.d.ts +29 -1
- package/dist/esm/structs/support/model/completion.d.ts +50 -0
- package/dist/esm/structs/support/model/completion.js +1 -0
- package/dist/esm/structs/support/model/interactions.d.ts +13 -1
- package/dist/esm/structs/support/model/messages.d.ts +52 -0
- package/dist/esm/structs/support/model/messages.js +1 -0
- package/dist/esm/structs/support/model/provider-observer.d.ts +22 -1
- package/dist/esm/structs/support/model/provider.d.ts +71 -6
- package/dist/esm/structs/support/registration.d.ts +13 -0
- package/dist/esm/structs/support/schema.d.ts +14 -0
- package/dist/esm/structs/support/tools.d.ts +28 -0
- package/dist/esm/structs/support/transport/json.d.ts +16 -0
- package/dist/esm/structs/support/transport/sse.d.ts +15 -0
- package/dist/esm/structs/utils/rules.d.ts +19 -0
- package/dist/esm/support/capabilities.d.ts +25 -2
- package/dist/esm/support/capabilities.js +43 -6
- package/dist/esm/support/context/assembly.d.ts +35 -4
- package/dist/esm/support/context/assembly.js +88 -16
- package/dist/esm/support/context/compression.d.ts +17 -1
- package/dist/esm/support/context/compression.js +48 -6
- package/dist/esm/support/context/fragments.d.ts +6 -0
- package/dist/esm/support/context/fragments.js +6 -0
- package/dist/esm/support/context/history.d.ts +43 -0
- package/dist/esm/support/context/history.js +36 -1
- package/dist/esm/support/context/index.d.ts +13 -2
- package/dist/esm/support/context/index.js +12 -1
- package/dist/esm/support/context/nodes.d.ts +49 -3
- package/dist/esm/support/context/nodes.js +165 -36
- package/dist/esm/support/context/processing.d.ts +145 -1
- package/dist/esm/support/context/processing.js +320 -62
- package/dist/esm/support/context/selection-policy.d.ts +42 -2
- package/dist/esm/support/context/selection-policy.js +98 -21
- package/dist/esm/support/context/selection.d.ts +14 -1
- package/dist/esm/support/context/selection.js +61 -10
- package/dist/esm/support/context/snapshot.d.ts +23 -1
- package/dist/esm/support/context/snapshot.js +29 -7
- package/dist/esm/support/context/strategies.d.ts +35 -2
- package/dist/esm/support/context/strategies.js +120 -28
- package/dist/esm/support/index.d.ts +9 -1
- package/dist/esm/support/index.js +9 -1
- package/dist/esm/support/model/capabilities.d.ts +10 -0
- package/dist/esm/support/model/capabilities.js +20 -1
- package/dist/esm/support/model/chat-completions.d.ts +44 -15
- package/dist/esm/support/model/chat-completions.js +92 -20
- package/dist/esm/support/model/children.d.ts +32 -2
- package/dist/esm/support/model/children.js +34 -6
- package/dist/esm/support/model/compatible-provider.d.ts +29 -3
- package/dist/esm/support/model/compatible-provider.js +190 -60
- package/dist/esm/support/model/completion/calls.d.ts +40 -0
- package/dist/esm/support/model/completion/calls.js +58 -0
- package/dist/esm/support/model/completion/default.d.ts +10 -0
- package/dist/esm/support/model/completion/default.js +29 -0
- package/dist/esm/support/model/completion/index.d.ts +10 -0
- package/dist/esm/support/model/completion/index.js +22 -0
- package/dist/esm/support/model/completion/session.d.ts +11 -0
- package/dist/esm/support/model/completion/session.js +99 -0
- package/dist/esm/support/model/index.d.ts +14 -0
- package/dist/esm/support/model/index.js +12 -0
- package/dist/esm/support/model/interactions/index.d.ts +1 -1
- package/dist/esm/support/model/interactions/index.js +12 -1
- package/dist/esm/support/model/interactions/json-object.d.ts +6 -0
- package/dist/esm/support/model/interactions/json-object.js +6 -0
- package/dist/esm/support/model/interactions/native-functions.d.ts +6 -0
- package/dist/esm/support/model/interactions/native-functions.js +6 -0
- package/dist/esm/support/model/observer.d.ts +25 -2
- package/dist/esm/support/model/observer.js +32 -6
- package/dist/esm/support/model/preview-rules.d.ts +20 -2
- package/dist/esm/support/model/preview-rules.js +66 -16
- package/dist/esm/support/model/reply-preview.d.ts +15 -1
- package/dist/esm/support/model/reply-preview.js +77 -17
- package/dist/esm/support/model/stage-transport.d.ts +9 -1
- package/dist/esm/support/model/stage-transport.js +33 -7
- package/dist/esm/support/model/strategies.d.ts +24 -2
- package/dist/esm/support/model/strategies.js +75 -14
- package/dist/esm/support/model/transports.d.ts +17 -1
- package/dist/esm/support/model/transports.js +53 -11
- package/dist/esm/support/registration.d.ts +20 -1
- package/dist/esm/support/registration.js +49 -7
- package/dist/esm/support/schema.d.ts +31 -1
- package/dist/esm/support/schema.js +46 -4
- package/dist/esm/support/stream-events.d.ts +22 -1
- package/dist/esm/support/stream-events.js +60 -8
- package/dist/esm/support/tool-runtime.d.ts +6 -0
- package/dist/esm/support/tool-runtime.js +6 -0
- package/dist/esm/support/tools.d.ts +22 -0
- package/dist/esm/support/tools.js +79 -10
- package/dist/esm/support/transport/index.d.ts +7 -0
- package/dist/esm/support/transport/index.js +7 -0
- package/dist/esm/support/transport/json.d.ts +29 -2
- package/dist/esm/support/transport/json.js +28 -4
- package/dist/esm/support/transport/sse.d.ts +31 -1
- package/dist/esm/support/transport/sse.js +25 -2
- package/dist/esm/types.d.ts +9 -1
- package/dist/esm/utils/break-observer.d.ts +27 -2
- package/dist/esm/utils/break-observer.js +20 -2
- package/dist/esm/utils/cancellation.d.ts +56 -5
- package/dist/esm/utils/cancellation.js +77 -9
- package/dist/esm/utils/catalog.d.ts +20 -1
- package/dist/esm/utils/catalog.js +19 -4
- package/dist/esm/utils/debug.d.ts +20 -1
- package/dist/esm/utils/debug.js +14 -2
- package/dist/esm/utils/index.d.ts +8 -0
- package/dist/esm/utils/index.js +8 -0
- package/dist/esm/utils/interaction-definition.d.ts +18 -1
- package/dist/esm/utils/interaction-definition.js +26 -6
- package/dist/esm/utils/invocation.d.ts +36 -1
- package/dist/esm/utils/invocation.js +42 -4
- package/dist/esm/utils/model-protocol.d.ts +8 -0
- package/dist/esm/utils/model-protocol.js +20 -1
- package/dist/esm/utils/object.d.ts +16 -0
- package/dist/esm/utils/object.js +16 -0
- package/dist/esm/utils/observer.d.ts +19 -1
- package/dist/esm/utils/observer.js +22 -2
- package/dist/esm/utils/protocol-registry.d.ts +38 -1
- package/dist/esm/utils/protocol-registry.js +47 -4
- package/dist/esm/utils/query-key.d.ts +11 -1
- package/dist/esm/utils/query-key.js +21 -2
- package/dist/esm/utils/registration.d.ts +34 -2
- package/dist/esm/utils/registration.js +18 -2
- package/dist/esm/utils/rules.d.ts +81 -4
- package/dist/esm/utils/rules.js +39 -11
- package/dist/esm/utils/schema-adapter.d.ts +12 -1
- package/dist/esm/utils/schema-adapter.js +25 -2
- package/dist/esm/utils/synchronous.d.ts +60 -4
- package/dist/esm/utils/synchronous.js +64 -7
- package/dist/esm/utils/text.d.ts +15 -1
- package/dist/esm/utils/text.js +15 -1
- package/package.json +23 -3
|
@@ -1,39 +1,116 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ContextJournal = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Request-local journal of context-relevant execution receipts.
|
|
6
|
+
*
|
|
7
|
+
* It records what was produced (model values, tool inputs) and what came back (tool results),
|
|
8
|
+
* each stamped with a monotonic producer sequence so a snapshot replays in order. Values are
|
|
9
|
+
* deep-cloned on write and on read: a caller mutating its own object cannot retroactively
|
|
10
|
+
* change recorded history, and a snapshot is not a live window into the journal.
|
|
11
|
+
*
|
|
12
|
+
* This is a projection, not a persistent log store; storage and retention belong to the App.
|
|
13
|
+
*
|
|
14
|
+
* Exports: `ContextJournal` and the `ContextRecord` type.
|
|
15
|
+
*/
|
|
4
16
|
const invocation_js_1 = require("../utils/invocation.js");
|
|
5
17
|
/** Request-local context projection of execution receipts; not a separate persistent log store. */
|
|
6
18
|
class ContextJournal {
|
|
19
|
+
/** Append-only: `producerSequence` is derived from this length, so order is never rewritten. */
|
|
7
20
|
records = [];
|
|
21
|
+
/** Duplicate invocation ids are rejected instead of overwriting earlier history. */
|
|
8
22
|
invocationIds = new Set();
|
|
23
|
+
/** Open tool calls, so a result can only close a call that actually started. */
|
|
9
24
|
toolCalls = new Map();
|
|
10
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Record one model-produced value.
|
|
27
|
+
*
|
|
28
|
+
* @param options.stageId Stage that produced the value.
|
|
29
|
+
* @param options.value Value to record; deep-cloned on write.
|
|
30
|
+
* @param options.invocation Execution identity whose `invocationId` must not be in the journal.
|
|
31
|
+
* @returns Nothing.
|
|
32
|
+
* @throws Error when the invocation id was already recorded.
|
|
33
|
+
*/
|
|
34
|
+
model({ stageId, value, invocation, }) {
|
|
11
35
|
if (this.invocationIds.has(invocation.invocationId))
|
|
12
36
|
throw new Error('Duplicate journal invocation');
|
|
13
|
-
this.records.push({
|
|
37
|
+
this.records.push({
|
|
38
|
+
...invocation,
|
|
39
|
+
// Derived from the append position, so the sequence stays gap-free without a counter.
|
|
40
|
+
producerSequence: this.records.length + 1,
|
|
41
|
+
occurredAtMs: Date.now(),
|
|
42
|
+
type: 'model',
|
|
43
|
+
stageId,
|
|
44
|
+
value: structuredClone(value),
|
|
45
|
+
});
|
|
14
46
|
this.invocationIds.add(invocation.invocationId);
|
|
15
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Open a tool call.
|
|
50
|
+
*
|
|
51
|
+
* @param request Tool id, input and optional invocation metadata. A supplied invocation id is
|
|
52
|
+
* kept so Core records and the journal share one identity; otherwise a new id is generated.
|
|
53
|
+
* @returns The invocation id that must be used to finish the call.
|
|
54
|
+
* @throws Error when a call with that id is already recorded.
|
|
55
|
+
*/
|
|
16
56
|
beginTool({ toolId, input, invocation }) {
|
|
17
57
|
const invocationId = invocation?.invocationId ?? (0, invocation_js_1.invocationId)();
|
|
18
58
|
if (this.invocationIds.has(invocationId))
|
|
19
59
|
throw new Error('Duplicate journal invocation');
|
|
20
|
-
const record = {
|
|
60
|
+
const record = {
|
|
61
|
+
...invocation,
|
|
62
|
+
invocationId,
|
|
63
|
+
startedAtMs: invocation?.startedAtMs ?? Date.now(),
|
|
64
|
+
durationMs: 0,
|
|
65
|
+
producerSequence: this.records.length + 1,
|
|
66
|
+
occurredAtMs: Date.now(),
|
|
67
|
+
type: 'tool',
|
|
68
|
+
toolId,
|
|
69
|
+
input: structuredClone(input),
|
|
70
|
+
};
|
|
21
71
|
this.records.push(record);
|
|
22
72
|
this.invocationIds.add(invocationId);
|
|
23
73
|
this.toolCalls.set(invocationId, { record, finished: false });
|
|
24
74
|
return invocationId;
|
|
25
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Close an open tool call with its outcome.
|
|
78
|
+
*
|
|
79
|
+
* @param request Invocation id, terminal status and result value; the value is cloned into
|
|
80
|
+
* the record.
|
|
81
|
+
* @returns Nothing.
|
|
82
|
+
* @throws Error when the call is unknown or was already finished.
|
|
83
|
+
*/
|
|
26
84
|
finishTool({ invocationId, status, value }) {
|
|
27
85
|
const entry = this.toolCalls.get(invocationId);
|
|
28
86
|
if (!entry || entry.finished)
|
|
29
87
|
throw new Error('Invalid tool receipt');
|
|
30
88
|
const call = entry.record;
|
|
31
89
|
const occurredAtMs = Date.now();
|
|
32
|
-
this.records.push({
|
|
33
|
-
|
|
34
|
-
|
|
90
|
+
this.records.push({
|
|
91
|
+
invocationId,
|
|
92
|
+
runId: call.runId,
|
|
93
|
+
spanId: call.spanId,
|
|
94
|
+
parentSpanId: call.parentSpanId,
|
|
95
|
+
parentInvocationId: call.parentInvocationId,
|
|
96
|
+
startedAtMs: call.startedAtMs,
|
|
97
|
+
durationMs: occurredAtMs - call.startedAtMs,
|
|
98
|
+
producerSequence: this.records.length + 1,
|
|
99
|
+
occurredAtMs,
|
|
100
|
+
type: 'tool-result',
|
|
101
|
+
toolId: call.toolId,
|
|
102
|
+
status,
|
|
103
|
+
value: structuredClone(value),
|
|
104
|
+
});
|
|
105
|
+
// Kept after finishing, so a repeated finish is rejected instead of appending a second
|
|
106
|
+
// result for the same call.
|
|
35
107
|
entry.finished = true;
|
|
36
108
|
}
|
|
37
|
-
|
|
109
|
+
/**
|
|
110
|
+
* @returns A detached copy of every record, safe for the caller to mutate.
|
|
111
|
+
*/
|
|
112
|
+
snapshot() {
|
|
113
|
+
return structuredClone(this.records);
|
|
114
|
+
}
|
|
38
115
|
}
|
|
39
116
|
exports.ContextJournal = ContextJournal;
|
package/dist/cjs/context/plan.js
CHANGED
|
@@ -1,18 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.assembleContextPlan = assembleContextPlan;
|
|
4
|
+
/**
|
|
5
|
+
* Assembly of a `ContextPlan`: the Core-side step between App context processing and the
|
|
6
|
+
* model input budget.
|
|
7
|
+
*
|
|
8
|
+
* A plan may carry trusted originals and an explicit mutation allow-list; when it does, the
|
|
9
|
+
* current fragments are audited before assembly. Assembly itself only validates, merges and
|
|
10
|
+
* measures. Reduction, grouping and model selection happen in App-side nodes before this
|
|
11
|
+
* point.
|
|
12
|
+
*
|
|
13
|
+
* Exports: `assembleContextPlan`.
|
|
14
|
+
*/
|
|
4
15
|
const audit_js_1 = require("./audit.js");
|
|
5
16
|
const rules_js_1 = require("../utils/rules.js");
|
|
6
17
|
const assembly_js_1 = require("./assembly.js");
|
|
7
18
|
const fragments_js_1 = require("./fragments.js");
|
|
8
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Build the model input for a context plan.
|
|
21
|
+
*
|
|
22
|
+
* @param plan Fragments, their budget, optional protected user messages, and the optional
|
|
23
|
+
* originals/allow-list used for the structural audit.
|
|
24
|
+
* @returns The assembled context, including appended user messages and the final character
|
|
25
|
+
* count that was checked against the budget.
|
|
26
|
+
* @throws ValidationError when the audit fails, a fragment is invalid or over its budget, or
|
|
27
|
+
* the combined input exceeds the budget.
|
|
28
|
+
* @throws Error when an additional message is not a user message.
|
|
29
|
+
*/
|
|
9
30
|
function assembleContextPlan(plan) {
|
|
31
|
+
// Audit first: a structural violation must surface as a policy error rather than be masked
|
|
32
|
+
// by a later budget or field-merge failure on fragments the plan did not allow to change.
|
|
10
33
|
if (plan.originalFragments)
|
|
11
34
|
(0, audit_js_1.auditContextChange)(plan.originalFragments, plan.fragments, new Set(plan.mutableFragmentIds ?? []));
|
|
12
35
|
const context = (0, assembly_js_1.assembleFragments)([...plan.fragments], plan.maxInputChars);
|
|
36
|
+
// Detach caller-owned messages: the built context must not change if the plan object is
|
|
37
|
+
// reused or mutated after assembly.
|
|
13
38
|
const additional = structuredClone([...(plan.additionalMessages ?? [])]);
|
|
14
|
-
|
|
39
|
+
// Only user messages may be appended: the system instruction is fixed by the fragments above.
|
|
40
|
+
(0, rules_js_1.breakWhile)(additional.some((message) => message.role !== 'user' || typeof message.content !== 'string'), 'Additional context must be user messages');
|
|
15
41
|
context.messages.push(...additional);
|
|
42
|
+
// The per-fragment budget already passed; this re-check covers the appended messages, which
|
|
43
|
+
// are outside every fragment's limit.
|
|
16
44
|
context.inputChars += additional.reduce((sum, message) => sum + message.content.length, 0);
|
|
17
45
|
(0, fragments_js_1.validateContextBudget)(context.inputChars, context.maxInputChars);
|
|
18
46
|
return context;
|
|
@@ -2,9 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.coreEventCatalog = void 0;
|
|
4
4
|
exports.coreEventCatalog = {
|
|
5
|
-
'node.progress': 'metadata',
|
|
6
|
-
'model.
|
|
5
|
+
'node.progress': 'metadata',
|
|
6
|
+
'model.start': 'metadata',
|
|
7
|
+
'model.binding': 'metadata',
|
|
8
|
+
'model.prepare': 'content',
|
|
9
|
+
'model.output': 'content',
|
|
10
|
+
'model.parsed': 'content',
|
|
11
|
+
'model.end': 'metadata',
|
|
7
12
|
'runtime.rejected': 'metadata',
|
|
8
|
-
'loop.event': 'metadata',
|
|
13
|
+
'loop.event': 'metadata',
|
|
14
|
+
'workflow.event': 'metadata',
|
|
15
|
+
'tool.call': 'metadata',
|
|
16
|
+
'tool.result': 'metadata',
|
|
9
17
|
'rule.result': 'metadata',
|
|
10
18
|
};
|
|
@@ -18,6 +18,17 @@ exports.reportedStepStatuses = exports.reportedStepStatusCatalog = void 0;
|
|
|
18
18
|
exports.createDiagnostics = createDiagnostics;
|
|
19
19
|
exports.diagnosticError = diagnosticError;
|
|
20
20
|
exports.normalizeDiagnosticEvent = normalizeDiagnosticEvent;
|
|
21
|
+
/**
|
|
22
|
+
* Core diagnostics surface: one execution fact source shared by live observers and an optional
|
|
23
|
+
* log consumer.
|
|
24
|
+
*
|
|
25
|
+
* `createDiagnostics` configures the consumer, `diagnosticError` turns an arbitrary thrown value
|
|
26
|
+
* into a loggable record, and `normalizeDiagnosticEvent` re-validates a persisted record before
|
|
27
|
+
* it is trusted. Payload visibility comes from the event catalog, and a failing consumer never
|
|
28
|
+
* changes execution.
|
|
29
|
+
*
|
|
30
|
+
* Exports: the factory and helpers above, the event catalog, and the diagnostic types.
|
|
31
|
+
*/
|
|
21
32
|
const events_js_1 = require("../execution/events.js");
|
|
22
33
|
const debug_js_1 = require("../structs/debug.js");
|
|
23
34
|
const errors_js_1 = require("../errors.js");
|
|
@@ -29,10 +40,26 @@ __exportStar(require("./catalog.js"), exports);
|
|
|
29
40
|
var debug_js_2 = require("../structs/debug.js");
|
|
30
41
|
Object.defineProperty(exports, "reportedStepStatusCatalog", { enumerable: true, get: function () { return debug_js_2.reportedStepStatusCatalog; } });
|
|
31
42
|
Object.defineProperty(exports, "reportedStepStatuses", { enumerable: true, get: function () { return debug_js_2.reportedStepStatuses; } });
|
|
32
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Configure the optional log consumer of the shared execution fact source.
|
|
45
|
+
*
|
|
46
|
+
* @param options.output Log consumer. Without it, events are still observable but not persisted.
|
|
47
|
+
* @param options.observe Live observer applied to this scope and every child scope.
|
|
48
|
+
* @param options.runId Run identity; a random id is generated when omitted.
|
|
49
|
+
* @param options.spanId Root span id; defaults to `run`.
|
|
50
|
+
* @returns A diagnostic context whose children share the run, sequence and consumers.
|
|
51
|
+
*/
|
|
33
52
|
function createDiagnostics(options = {}) {
|
|
34
53
|
return (0, events_js_1.createEventScope)(options);
|
|
35
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Convert a thrown value into a plain record suitable as a log payload.
|
|
57
|
+
*
|
|
58
|
+
* @param error Any thrown value. Non-Errors are reported as `NonError` with their string form
|
|
59
|
+
* and no issue details.
|
|
60
|
+
* @returns A record with name, message, stack, code, issues and whatever boundary metadata was
|
|
61
|
+
* recorded. It never throws: an uninspectable value becomes `UninspectableError`.
|
|
62
|
+
*/
|
|
36
63
|
function diagnosticError(error) {
|
|
37
64
|
const info = (0, errors_js_1.getErrorInfo)(error);
|
|
38
65
|
let detail;
|
|
@@ -40,43 +67,96 @@ function diagnosticError(error) {
|
|
|
40
67
|
if (!(error instanceof Error))
|
|
41
68
|
return { name: 'NonError', message: String(error) };
|
|
42
69
|
const { name, message, stack, code } = error;
|
|
43
|
-
detail = {
|
|
70
|
+
detail = {
|
|
71
|
+
name,
|
|
72
|
+
message,
|
|
73
|
+
stack,
|
|
74
|
+
code: code ?? (info.code === 'UNKNOWN_ERROR' ? undefined : info.code),
|
|
75
|
+
};
|
|
44
76
|
}
|
|
45
77
|
catch {
|
|
46
|
-
detail = {
|
|
78
|
+
detail = {
|
|
79
|
+
name: 'UninspectableError',
|
|
80
|
+
message: 'Error details unavailable',
|
|
81
|
+
code: info.code === 'UNKNOWN_ERROR' ? undefined : info.code,
|
|
82
|
+
};
|
|
47
83
|
}
|
|
48
|
-
return {
|
|
84
|
+
return {
|
|
85
|
+
...detail,
|
|
86
|
+
issues: info.issues,
|
|
49
87
|
...(info.stageId === undefined ? {} : { stageId: info.stageId }),
|
|
50
|
-
...(info.isRetryable === undefined ? {} : { isRetryable: info.isRetryable })
|
|
88
|
+
...(info.isRetryable === undefined ? {} : { isRetryable: info.isRetryable }),
|
|
89
|
+
};
|
|
51
90
|
}
|
|
52
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* Validate a persisted diagnostic record and return a detached copy.
|
|
93
|
+
*
|
|
94
|
+
* Persisted data is untrusted, so the envelope version, event type, identity, ordering and the
|
|
95
|
+
* bounded sub-step shape are checked; the payload itself is not interpreted. The copy is deep
|
|
96
|
+
* cloned, so a store cannot hand back a record that later shares structure with the caller.
|
|
97
|
+
*
|
|
98
|
+
* @param input Candidate record, typically parsed JSON from a log store.
|
|
99
|
+
* @returns A normalized record with `subSteps`, `subStepsDropped` and `subStepsTruncated`
|
|
100
|
+
* defaulted.
|
|
101
|
+
* @throws TypeError when the envelope, identity, node role or reported steps are invalid.
|
|
102
|
+
* @throws RangeError when a reported payload is too large or too deeply nested.
|
|
103
|
+
*/
|
|
53
104
|
function normalizeDiagnosticEvent(input) {
|
|
54
105
|
if (!input || typeof input !== 'object')
|
|
55
106
|
throw new TypeError('Invalid diagnostic record');
|
|
56
107
|
const raw = input;
|
|
108
|
+
// The version gates the whole layout: an older record may use different fields, so it is
|
|
109
|
+
// rejected instead of best-effort coerced.
|
|
57
110
|
if (raw.version !== 2)
|
|
58
111
|
throw new TypeError('Unsupported diagnostic version');
|
|
59
112
|
const { type, producerSequence, occurredAtMs } = raw;
|
|
60
|
-
if (typeof type !== 'string' ||
|
|
61
|
-
|
|
62
|
-
|
|
113
|
+
if (typeof type !== 'string' ||
|
|
114
|
+
!Object.hasOwn(catalog_js_1.coreEventCatalog, type) ||
|
|
115
|
+
typeof raw.runId !== 'string' ||
|
|
116
|
+
!raw.runId ||
|
|
117
|
+
typeof raw.spanId !== 'string' ||
|
|
118
|
+
!raw.spanId ||
|
|
119
|
+
!Number.isSafeInteger(producerSequence) ||
|
|
120
|
+
Number(producerSequence) < 1 ||
|
|
121
|
+
typeof occurredAtMs !== 'number' ||
|
|
122
|
+
!Number.isFinite(occurredAtMs) ||
|
|
123
|
+
!Object.hasOwn(raw, 'payload'))
|
|
63
124
|
throw new TypeError('Invalid diagnostic envelope');
|
|
64
125
|
const { eventId } = raw;
|
|
65
126
|
if (typeof eventId !== 'string' || !eventId)
|
|
66
127
|
throw new TypeError('Invalid diagnostic event identity');
|
|
67
128
|
const steps = raw.subSteps ?? [];
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
129
|
+
// The count and size bounds match what the sub-flow logger enforces, so a record produced by
|
|
130
|
+
// Core can never be rejected here; only hand-edited or foreign records can.
|
|
131
|
+
if (!Array.isArray(steps) ||
|
|
132
|
+
steps.length > 256 ||
|
|
133
|
+
new Set(steps.map((step) => step?.stepId)).size !== steps.length ||
|
|
134
|
+
steps.some((step) => !step ||
|
|
135
|
+
step.origin !== 'reported' ||
|
|
136
|
+
typeof step.stepId !== 'string' ||
|
|
137
|
+
!step.stepId.trim() ||
|
|
138
|
+
typeof step.name !== 'string' ||
|
|
139
|
+
typeof step.kind !== 'string' ||
|
|
140
|
+
!Number.isSafeInteger(step.sequence) ||
|
|
141
|
+
step.sequence < 1 ||
|
|
142
|
+
(step.status !== undefined && !debug_js_1.reportedStepStatuses.includes(step.status)) ||
|
|
143
|
+
['parentStepId', 'relatedDefinitionId', 'caseId', 'summary'].some((key) => step[key] !== undefined && typeof step[key] !== 'string') ||
|
|
144
|
+
(step.usedModel !== undefined && typeof step.usedModel !== 'boolean') ||
|
|
145
|
+
(step.revision !== undefined &&
|
|
146
|
+
(!Number.isSafeInteger(step.revision) ||
|
|
147
|
+
step.revision < 1 ||
|
|
148
|
+
!Number.isFinite(step.createdAtMs))) ||
|
|
149
|
+
['createdAtMs', 'startedAtMs', 'endedAtMs'].some((key) => step[key] !== undefined &&
|
|
150
|
+
(typeof step[key] !== 'number' || !Number.isFinite(step[key]) || step[key] < 0)) ||
|
|
151
|
+
(step.nextStepIds !== undefined &&
|
|
152
|
+
(!Array.isArray(step.nextStepIds) ||
|
|
153
|
+
step.nextStepIds.some((id) => typeof id !== 'string')))) ||
|
|
154
|
+
(raw.subStepsDropped !== undefined &&
|
|
155
|
+
(!Number.isSafeInteger(raw.subStepsDropped) || Number(raw.subStepsDropped) < 0)) ||
|
|
156
|
+
(raw.subStepsTruncated !== undefined && typeof raw.subStepsTruncated !== 'boolean'))
|
|
79
157
|
throw new TypeError('Invalid reported diagnostic steps');
|
|
158
|
+
// Structural check only: the returned snapshot is discarded because the clone below already
|
|
159
|
+
// produces the detached copy kept by the normalized record.
|
|
80
160
|
for (const step of steps)
|
|
81
161
|
if (step.payload !== undefined)
|
|
82
162
|
(0, sub_flow_js_1.payloadSnapshot)(step.payload);
|
|
@@ -84,19 +164,59 @@ function normalizeDiagnosticEvent(input) {
|
|
|
84
164
|
(0, rules_js_1.breakWhile)(raw.usedModel !== undefined && typeof raw.usedModel !== 'boolean', () => new TypeError('Invalid reported model use'));
|
|
85
165
|
if (type === 'node.progress') {
|
|
86
166
|
const progress = raw.payload?.subStep;
|
|
87
|
-
(0, rules_js_1.breakWhile)(progress !== undefined &&
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
167
|
+
(0, rules_js_1.breakWhile)(progress !== undefined &&
|
|
168
|
+
(!progress ||
|
|
169
|
+
!['write', 'fix'].includes(progress.operation) ||
|
|
170
|
+
typeof progress.stepId !== 'string' ||
|
|
171
|
+
!progress.stepId ||
|
|
172
|
+
!Number.isSafeInteger(progress.sequence) ||
|
|
173
|
+
progress.sequence < 1 ||
|
|
174
|
+
!Number.isSafeInteger(progress.revision) ||
|
|
175
|
+
progress.revision < 1 ||
|
|
176
|
+
!Number.isFinite(progress.createdAtMs) ||
|
|
177
|
+
progress.createdAtMs < 0 ||
|
|
178
|
+
!debug_js_1.reportedStepStatuses.includes(progress.status) ||
|
|
179
|
+
(progress.usedModel !== undefined && typeof progress.usedModel !== 'boolean')), () => new TypeError('Invalid reported sub-step progress'));
|
|
91
180
|
}
|
|
92
|
-
for (const key of [
|
|
181
|
+
for (const key of [
|
|
182
|
+
'parentSpanId',
|
|
183
|
+
'invocationId',
|
|
184
|
+
'parentInvocationId',
|
|
185
|
+
'workflowInvocationId',
|
|
186
|
+
'workflowNodeId',
|
|
187
|
+
'agentId',
|
|
188
|
+
'branchId',
|
|
189
|
+
'agentVersionId',
|
|
190
|
+
'parentBranchId',
|
|
191
|
+
'parentAgentVersionId',
|
|
192
|
+
'forkPointId',
|
|
193
|
+
'definitionId',
|
|
194
|
+
'definitionKind',
|
|
195
|
+
'definitionRevision',
|
|
196
|
+
'nodeId',
|
|
197
|
+
'nodeName',
|
|
198
|
+
'nodeKind',
|
|
199
|
+
'nodeDescription',
|
|
200
|
+
'stageId',
|
|
201
|
+
'modelId',
|
|
202
|
+
]) {
|
|
93
203
|
if (raw[key] !== undefined && typeof raw[key] !== 'string')
|
|
94
204
|
throw new TypeError('Invalid diagnostic identity');
|
|
95
205
|
}
|
|
96
|
-
if (raw.nodeRole !== undefined &&
|
|
206
|
+
if (raw.nodeRole !== undefined &&
|
|
207
|
+
!['workflow-node', 'workflow-boundary', 'invocation', 'loop-step'].includes(String(raw.nodeRole)))
|
|
97
208
|
throw new TypeError('Invalid diagnostic node role');
|
|
209
|
+
// Detached copy: the caller's object may be reused, frozen or backed by a store buffer.
|
|
98
210
|
const copy = structuredClone(raw);
|
|
99
|
-
return {
|
|
100
|
-
|
|
101
|
-
|
|
211
|
+
return {
|
|
212
|
+
...copy,
|
|
213
|
+
version: 2,
|
|
214
|
+
eventId,
|
|
215
|
+
type,
|
|
216
|
+
producerSequence,
|
|
217
|
+
occurredAtMs,
|
|
218
|
+
subSteps: copy.subSteps ?? [],
|
|
219
|
+
subStepsDropped: copy.subStepsDropped ?? 0,
|
|
220
|
+
subStepsTruncated: copy.subStepsTruncated ?? false,
|
|
221
|
+
};
|
|
102
222
|
}
|