@theoremjs/agents 0.0.0-stage → 0.3.1
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/LICENSE +21 -0
- package/README.md +545 -2
- package/esm/_dnt.polyfills.d.ts +66 -0
- package/esm/_dnt.polyfills.js +51 -0
- package/esm/mod.d.ts +79 -0
- package/esm/mod.js +49 -0
- package/esm/package.json +3 -0
- package/esm/src/cli/bin.d.ts +7 -0
- package/esm/src/cli/bin.js +9 -0
- package/esm/src/cli/commands/bench.d.ts +6 -0
- package/esm/src/cli/commands/bench.js +480 -0
- package/esm/src/cli/commands/detect-compile.d.ts +17 -0
- package/esm/src/cli/commands/detect-compile.js +22 -0
- package/esm/src/cli/commands/eval.d.ts +37 -0
- package/esm/src/cli/commands/eval.js +190 -0
- package/esm/src/cli/commands/fuzz-canary.d.ts +15 -0
- package/esm/src/cli/commands/fuzz-canary.js +241 -0
- package/esm/src/cli/commands/fuzz-guardrails.d.ts +2 -0
- package/esm/src/cli/commands/fuzz-guardrails.js +5 -0
- package/esm/src/cli/commands/profile.d.ts +2 -0
- package/esm/src/cli/commands/profile.js +80 -0
- package/esm/src/cli/commands/run.d.ts +13 -0
- package/esm/src/cli/commands/run.js +45 -0
- package/esm/src/cli/commands/test.d.ts +26 -0
- package/esm/src/cli/commands/test.js +143 -0
- package/esm/src/cli/event-log.d.ts +15 -0
- package/esm/src/cli/event-log.js +136 -0
- package/esm/src/cli/index.d.ts +10 -0
- package/esm/src/cli/index.js +267 -0
- package/esm/src/cli/matrix/fixtures.d.ts +10 -0
- package/esm/src/cli/matrix/fixtures.js +67 -0
- package/esm/src/cli/matrix/synthesizer.d.ts +18 -0
- package/esm/src/cli/matrix/synthesizer.js +103 -0
- package/esm/src/evals/attachments.d.ts +5 -0
- package/esm/src/evals/attachments.js +55 -0
- package/esm/src/evals/breakdown.d.ts +30 -0
- package/esm/src/evals/breakdown.js +69 -0
- package/esm/src/evals/graders/answer.d.ts +16 -0
- package/esm/src/evals/graders/answer.js +134 -0
- package/esm/src/evals/graders/code.d.ts +40 -0
- package/esm/src/evals/graders/code.js +184 -0
- package/esm/src/evals/graders/judge.d.ts +24 -0
- package/esm/src/evals/graders/judge.js +367 -0
- package/esm/src/evals/graders/latency.d.ts +6 -0
- package/esm/src/evals/graders/latency.js +82 -0
- package/esm/src/evals/graders/live.d.ts +14 -0
- package/esm/src/evals/graders/live.js +42 -0
- package/esm/src/evals/graders/media.d.ts +18 -0
- package/esm/src/evals/graders/media.js +91 -0
- package/esm/src/evals/graders/shared.d.ts +11 -0
- package/esm/src/evals/graders/shared.js +62 -0
- package/esm/src/evals/graders/transcript.d.ts +19 -0
- package/esm/src/evals/graders/transcript.js +202 -0
- package/esm/src/evals/mod.d.ts +34 -0
- package/esm/src/evals/mod.js +22 -0
- package/esm/src/evals/record.d.ts +41 -0
- package/esm/src/evals/record.js +107 -0
- package/esm/src/evals/rubrics/catalog.d.ts +148 -0
- package/esm/src/evals/rubrics/catalog.js +846 -0
- package/esm/src/evals/rubrics/mod.d.ts +24 -0
- package/esm/src/evals/rubrics/mod.js +55 -0
- package/esm/src/evals/rubrics/mustache.d.ts +23 -0
- package/esm/src/evals/rubrics/mustache.js +154 -0
- package/esm/src/evals/rubrics/types.d.ts +54 -0
- package/esm/src/evals/rubrics/types.js +74 -0
- package/esm/src/evals/run.d.ts +75 -0
- package/esm/src/evals/run.js +418 -0
- package/esm/src/evals/suite.d.ts +28 -0
- package/esm/src/evals/suite.js +97 -0
- package/esm/src/evals/summary.d.ts +35 -0
- package/esm/src/evals/summary.js +31 -0
- package/esm/src/evals/trial.d.ts +14 -0
- package/esm/src/evals/trial.js +135 -0
- package/esm/src/evals/types.d.ts +169 -0
- package/esm/src/evals/types.js +113 -0
- package/esm/src/evals/verdict.d.ts +23 -0
- package/esm/src/evals/verdict.js +48 -0
- package/esm/src/guardrails/boundaries.d.ts +41 -0
- package/esm/src/guardrails/boundaries.js +103 -0
- package/esm/src/guardrails/canary-gate.d.ts +22 -0
- package/esm/src/guardrails/canary-gate.js +40 -0
- package/esm/src/guardrails/canary.d.ts +146 -0
- package/esm/src/guardrails/canary.js +974 -0
- package/esm/src/guardrails/compile-egress.d.ts +12 -0
- package/esm/src/guardrails/compile-egress.js +12 -0
- package/esm/src/guardrails/corpus/canary-egress-attacks.d.ts +24 -0
- package/esm/src/guardrails/corpus/canary-egress-attacks.js +305 -0
- package/esm/src/guardrails/corpus/fuzz-inbound.d.ts +5 -0
- package/esm/src/guardrails/corpus/fuzz-inbound.js +199 -0
- package/esm/src/guardrails/corpus/inbound-payloads.d.ts +5 -0
- package/esm/src/guardrails/corpus/inbound-payloads.js +120 -0
- package/esm/src/guardrails/corpus/live-attacks.d.ts +15 -0
- package/esm/src/guardrails/corpus/live-attacks.js +229 -0
- package/esm/src/guardrails/corpus/mod.d.ts +7 -0
- package/esm/src/guardrails/corpus/mod.js +4 -0
- package/esm/src/guardrails/corpus/secrets.d.ts +12 -0
- package/esm/src/guardrails/corpus/secrets.js +16 -0
- package/esm/src/guardrails/corpus/strings.d.ts +23 -0
- package/esm/src/guardrails/corpus/strings.js +29 -0
- package/esm/src/guardrails/corpus/types.d.ts +36 -0
- package/esm/src/guardrails/corpus/types.js +1 -0
- package/esm/src/guardrails/credential-rules.d.ts +36 -0
- package/esm/src/guardrails/credential-rules.js +3001 -0
- package/esm/src/guardrails/credential-scan.d.ts +45 -0
- package/esm/src/guardrails/credential-scan.js +172 -0
- package/esm/src/guardrails/destinations.d.ts +45 -0
- package/esm/src/guardrails/destinations.js +234 -0
- package/esm/src/guardrails/detect-at.d.ts +107 -0
- package/esm/src/guardrails/detect-at.js +434 -0
- package/esm/src/guardrails/detect-reply.d.ts +61 -0
- package/esm/src/guardrails/detect-reply.js +95 -0
- package/esm/src/guardrails/detect-stream.d.ts +33 -0
- package/esm/src/guardrails/detect-stream.js +77 -0
- package/esm/src/guardrails/detectors.d.ts +216 -0
- package/esm/src/guardrails/detectors.js +503 -0
- package/esm/src/guardrails/egress-automata.d.ts +12 -0
- package/esm/src/guardrails/egress-automata.js +25582 -0
- package/esm/src/guardrails/egress-compiler.d.ts +55 -0
- package/esm/src/guardrails/egress-compiler.js +431 -0
- package/esm/src/guardrails/egress-patterns.d.ts +26 -0
- package/esm/src/guardrails/egress-patterns.js +36 -0
- package/esm/src/guardrails/egress-stream.d.ts +123 -0
- package/esm/src/guardrails/egress-stream.js +774 -0
- package/esm/src/guardrails/egress-urls.d.ts +86 -0
- package/esm/src/guardrails/egress-urls.js +909 -0
- package/esm/src/guardrails/egress.d.ts +46 -0
- package/esm/src/guardrails/egress.js +124 -0
- package/esm/src/guardrails/error.d.ts +31 -0
- package/esm/src/guardrails/error.js +96 -0
- package/esm/src/guardrails/event-schemas.d.ts +100 -0
- package/esm/src/guardrails/event-schemas.js +48 -0
- package/esm/src/guardrails/events.d.ts +13 -0
- package/esm/src/guardrails/events.js +45 -0
- package/esm/src/guardrails/hints.d.ts +14 -0
- package/esm/src/guardrails/hints.js +57 -0
- package/esm/src/guardrails/hits.d.ts +14 -0
- package/esm/src/guardrails/hits.js +30 -0
- package/esm/src/guardrails/host-patterns.d.ts +85 -0
- package/esm/src/guardrails/host-patterns.js +173 -0
- package/esm/src/guardrails/injection-patterns.d.ts +20 -0
- package/esm/src/guardrails/injection-patterns.js +126 -0
- package/esm/src/guardrails/injection-reversed.d.ts +9 -0
- package/esm/src/guardrails/injection-reversed.js +49 -0
- package/esm/src/guardrails/injection.d.ts +30 -0
- package/esm/src/guardrails/injection.js +460 -0
- package/esm/src/guardrails/labels.d.ts +40 -0
- package/esm/src/guardrails/labels.js +874 -0
- package/esm/src/guardrails/live-outbound-gate.d.ts +55 -0
- package/esm/src/guardrails/live-outbound-gate.js +298 -0
- package/esm/src/guardrails/mod.d.ts +54 -0
- package/esm/src/guardrails/mod.js +34 -0
- package/esm/src/guardrails/network.d.ts +46 -0
- package/esm/src/guardrails/network.js +330 -0
- package/esm/src/guardrails/normalize.d.ts +20 -0
- package/esm/src/guardrails/normalize.js +165 -0
- package/esm/src/guardrails/policy.d.ts +4 -0
- package/esm/src/guardrails/policy.js +21 -0
- package/esm/src/guardrails/progressive-yield.d.ts +110 -0
- package/esm/src/guardrails/progressive-yield.js +281 -0
- package/esm/src/guardrails/prompt-echo.d.ts +40 -0
- package/esm/src/guardrails/prompt-echo.js +306 -0
- package/esm/src/guardrails/quota.d.ts +21 -0
- package/esm/src/guardrails/quota.js +80 -0
- package/esm/src/guardrails/rules.d.ts +47 -0
- package/esm/src/guardrails/rules.js +47 -0
- package/esm/src/guardrails/sanitize.d.ts +40 -0
- package/esm/src/guardrails/sanitize.js +160 -0
- package/esm/src/guardrails/sensitive-groups.d.ts +21 -0
- package/esm/src/guardrails/sensitive-groups.js +12 -0
- package/esm/src/guardrails/sensitive.d.ts +22 -0
- package/esm/src/guardrails/sensitive.js +234 -0
- package/esm/src/guardrails/serialize.d.ts +15 -0
- package/esm/src/guardrails/serialize.js +37 -0
- package/esm/src/guardrails/testing.d.ts +11 -0
- package/esm/src/guardrails/testing.js +10 -0
- package/esm/src/guardrails/theorem-error.d.ts +21 -0
- package/esm/src/guardrails/theorem-error.js +54 -0
- package/esm/src/guardrails/thought-guard.d.ts +76 -0
- package/esm/src/guardrails/thought-guard.js +664 -0
- package/esm/src/guardrails/tool-directives.d.ts +38 -0
- package/esm/src/guardrails/tool-directives.js +195 -0
- package/esm/src/guardrails/tool-leak.d.ts +26 -0
- package/esm/src/guardrails/tool-leak.js +45 -0
- package/esm/src/guardrails/tool-result.d.ts +92 -0
- package/esm/src/guardrails/tool-result.js +272 -0
- package/esm/src/guardrails/types.d.ts +250 -0
- package/esm/src/guardrails/types.js +58 -0
- package/esm/src/host/client-turn.d.ts +36 -0
- package/esm/src/host/client-turn.js +80 -0
- package/esm/src/host/mint-trace.d.ts +29 -0
- package/esm/src/host/mint-trace.js +60 -0
- package/esm/src/host/mod.d.ts +13 -0
- package/esm/src/host/mod.js +11 -0
- package/esm/src/host/readStreamingJsonStringField.d.ts +2 -0
- package/esm/src/host/readStreamingJsonStringField.js +27 -0
- package/esm/src/host/reply.d.ts +13 -0
- package/esm/src/host/reply.js +41 -0
- package/esm/src/interface/blocks.d.ts +11 -0
- package/esm/src/interface/blocks.js +283 -0
- package/esm/src/interface/composer-actions.d.ts +24 -0
- package/esm/src/interface/composer-actions.js +33 -0
- package/esm/src/interface/draft.d.ts +20 -0
- package/esm/src/interface/draft.js +39 -0
- package/esm/src/interface/from-profile.d.ts +24 -0
- package/esm/src/interface/from-profile.js +179 -0
- package/esm/src/interface/history.d.ts +46 -0
- package/esm/src/interface/history.js +278 -0
- package/esm/src/interface/inputs.d.ts +11 -0
- package/esm/src/interface/inputs.js +67 -0
- package/esm/src/interface/mod.d.ts +33 -0
- package/esm/src/interface/mod.js +22 -0
- package/esm/src/interface/models.d.ts +26 -0
- package/esm/src/interface/models.js +50 -0
- package/esm/src/interface/pending.d.ts +57 -0
- package/esm/src/interface/pending.js +152 -0
- package/esm/src/interface/profile-interface.d.ts +4 -0
- package/esm/src/interface/profile-interface.js +237 -0
- package/esm/src/interface/session.d.ts +71 -0
- package/esm/src/interface/session.js +128 -0
- package/esm/src/interface/stop.d.ts +13 -0
- package/esm/src/interface/stop.js +28 -0
- package/esm/src/interface/tool-calls.d.ts +32 -0
- package/esm/src/interface/tool-calls.js +127 -0
- package/esm/src/interface/tool-invoke.d.ts +6 -0
- package/esm/src/interface/tool-invoke.js +22 -0
- package/esm/src/interface/tool-media.d.ts +11 -0
- package/esm/src/interface/tool-media.js +113 -0
- package/esm/src/interface/types.d.ts +278 -0
- package/esm/src/interface/types.js +5 -0
- package/esm/src/kernel/api-catalog.d.ts +85 -0
- package/esm/src/kernel/api-catalog.js +229 -0
- package/esm/src/kernel/auth/credential-source.d.ts +23 -0
- package/esm/src/kernel/auth/credential-source.js +11 -0
- package/esm/src/kernel/auth/crypto.d.ts +56 -0
- package/esm/src/kernel/auth/crypto.js +163 -0
- package/esm/src/kernel/auth/mod.d.ts +5 -0
- package/esm/src/kernel/auth/mod.js +5 -0
- package/esm/src/kernel/auth/oauth.d.ts +18 -0
- package/esm/src/kernel/auth/oauth.js +439 -0
- package/esm/src/kernel/auth/scope-refusal.d.ts +9 -0
- package/esm/src/kernel/auth/scope-refusal.js +8 -0
- package/esm/src/kernel/auth/typed-secret.d.ts +13 -0
- package/esm/src/kernel/auth/typed-secret.js +23 -0
- package/esm/src/kernel/auth/types.d.ts +152 -0
- package/esm/src/kernel/auth/types.js +1 -0
- package/esm/src/kernel/checkpoint.d.ts +43 -0
- package/esm/src/kernel/checkpoint.js +58 -0
- package/esm/src/kernel/default-scope.d.ts +72 -0
- package/esm/src/kernel/default-scope.js +121 -0
- package/esm/src/kernel/engine/call-trace.d.ts +19 -0
- package/esm/src/kernel/engine/call-trace.js +29 -0
- package/esm/src/kernel/engine/compaction.d.ts +71 -0
- package/esm/src/kernel/engine/compaction.js +203 -0
- package/esm/src/kernel/engine/decision.d.ts +43 -0
- package/esm/src/kernel/engine/decision.js +439 -0
- package/esm/src/kernel/engine/embedding.d.ts +8 -0
- package/esm/src/kernel/engine/embedding.js +118 -0
- package/esm/src/kernel/engine/hash.d.ts +6 -0
- package/esm/src/kernel/engine/hash.js +22 -0
- package/esm/src/kernel/engine/live-inbound.d.ts +19 -0
- package/esm/src/kernel/engine/live-inbound.js +44 -0
- package/esm/src/kernel/engine/live-ingress.d.ts +15 -0
- package/esm/src/kernel/engine/live-ingress.js +42 -0
- package/esm/src/kernel/engine/record.d.ts +3 -0
- package/esm/src/kernel/engine/record.js +11 -0
- package/esm/src/kernel/engine/repair.d.ts +7 -0
- package/esm/src/kernel/engine/repair.js +36 -0
- package/esm/src/kernel/engine/runner/gates.d.ts +5 -0
- package/esm/src/kernel/engine/runner/gates.js +508 -0
- package/esm/src/kernel/engine/runner/mod.d.ts +29 -0
- package/esm/src/kernel/engine/runner/mod.js +625 -0
- package/esm/src/kernel/engine/runner/nested.d.ts +32 -0
- package/esm/src/kernel/engine/runner/nested.js +134 -0
- package/esm/src/kernel/engine/runner/schema-validation.d.ts +35 -0
- package/esm/src/kernel/engine/runner/schema-validation.js +179 -0
- package/esm/src/kernel/engine/runner/stages.d.ts +28 -0
- package/esm/src/kernel/engine/runner/stages.js +41 -0
- package/esm/src/kernel/engine/runner/state.d.ts +97 -0
- package/esm/src/kernel/engine/runner/state.js +50 -0
- package/esm/src/kernel/engine/runner/step-order.d.ts +27 -0
- package/esm/src/kernel/engine/runner/step-order.js +165 -0
- package/esm/src/kernel/engine/runner/steps.d.ts +14 -0
- package/esm/src/kernel/engine/runner/steps.js +519 -0
- package/esm/src/kernel/engine/runner/stream.d.ts +71 -0
- package/esm/src/kernel/engine/runner/stream.js +376 -0
- package/esm/src/kernel/engine/runner/usage.d.ts +45 -0
- package/esm/src/kernel/engine/runner/usage.js +148 -0
- package/esm/src/kernel/engine/session/mod.d.ts +33 -0
- package/esm/src/kernel/engine/session/mod.js +1182 -0
- package/esm/src/kernel/engine/session/session-trace.d.ts +115 -0
- package/esm/src/kernel/engine/session/session-trace.js +500 -0
- package/esm/src/kernel/engine/token-estimate.d.ts +23 -0
- package/esm/src/kernel/engine/token-estimate.js +38 -0
- package/esm/src/kernel/engine/tool-trace.d.ts +58 -0
- package/esm/src/kernel/engine/tool-trace.js +132 -0
- package/esm/src/kernel/engine/tree.d.ts +2 -0
- package/esm/src/kernel/engine/tree.js +17 -0
- package/esm/src/kernel/engine/turn-trace.d.ts +119 -0
- package/esm/src/kernel/engine/turn-trace.js +855 -0
- package/esm/src/kernel/engine/usage.d.ts +36 -0
- package/esm/src/kernel/engine/usage.js +151 -0
- package/esm/src/kernel/interaction-parts.d.ts +13 -0
- package/esm/src/kernel/interaction-parts.js +40 -0
- package/esm/src/kernel/json.d.ts +10 -0
- package/esm/src/kernel/json.js +3 -0
- package/esm/src/kernel/mod.d.ts +74 -0
- package/esm/src/kernel/mod.js +45 -0
- package/esm/src/kernel/profile-graph.d.ts +145 -0
- package/esm/src/kernel/profile-graph.js +158 -0
- package/esm/src/kernel/profile-presence.d.ts +18 -0
- package/esm/src/kernel/profile-presence.js +158 -0
- package/esm/src/kernel/profile-scope.d.ts +40 -0
- package/esm/src/kernel/profile-scope.js +274 -0
- package/esm/src/kernel/protocols/binding.d.ts +65 -0
- package/esm/src/kernel/protocols/binding.js +125 -0
- package/esm/src/kernel/protocols/limits.d.ts +15 -0
- package/esm/src/kernel/protocols/limits.js +28 -0
- package/esm/src/kernel/protocols/mod.d.ts +5 -0
- package/esm/src/kernel/protocols/mod.js +5 -0
- package/esm/src/kernel/protocols/prices.d.ts +36 -0
- package/esm/src/kernel/protocols/prices.js +37 -0
- package/esm/src/kernel/protocols/protocol.d.ts +253 -0
- package/esm/src/kernel/protocols/protocol.js +253 -0
- package/esm/src/kernel/protocols/provider.d.ts +108 -0
- package/esm/src/kernel/protocols/provider.js +143 -0
- package/esm/src/kernel/protocols/runtime.d.ts +55 -0
- package/esm/src/kernel/protocols/runtime.js +534 -0
- package/esm/src/kernel/provider-budget.d.ts +32 -0
- package/esm/src/kernel/provider-budget.js +262 -0
- package/esm/src/kernel/provider-dispatch.d.ts +13 -0
- package/esm/src/kernel/provider-dispatch.js +36 -0
- package/esm/src/kernel/provider-live.d.ts +7 -0
- package/esm/src/kernel/provider-live.js +189 -0
- package/esm/src/kernel/provider-runtime.d.ts +57 -0
- package/esm/src/kernel/provider-runtime.js +524 -0
- package/esm/src/kernel/registry/attachments.d.ts +46 -0
- package/esm/src/kernel/registry/attachments.js +220 -0
- package/esm/src/kernel/registry/catalog.d.ts +25 -0
- package/esm/src/kernel/registry/catalog.js +85 -0
- package/esm/src/kernel/registry/embedding-rules.d.ts +28 -0
- package/esm/src/kernel/registry/embedding-rules.js +66 -0
- package/esm/src/kernel/registry/ingress.d.ts +12 -0
- package/esm/src/kernel/registry/ingress.js +179 -0
- package/esm/src/kernel/registry/kernel-registry.d.ts +15 -0
- package/esm/src/kernel/registry/kernel-registry.js +15 -0
- package/esm/src/kernel/registry/profile-outputs.d.ts +3 -0
- package/esm/src/kernel/registry/profile-outputs.js +10 -0
- package/esm/src/kernel/registry/profiles.d.ts +116 -0
- package/esm/src/kernel/registry/profiles.js +773 -0
- package/esm/src/kernel/registry/provider-request.d.ts +6 -0
- package/esm/src/kernel/registry/provider-request.js +34 -0
- package/esm/src/kernel/registry/resolve.d.ts +17 -0
- package/esm/src/kernel/registry/resolve.js +238 -0
- package/esm/src/kernel/registry/schemas.d.ts +12 -0
- package/esm/src/kernel/registry/schemas.js +27 -0
- package/esm/src/kernel/registry/slot-fill.d.ts +7 -0
- package/esm/src/kernel/registry/slot-fill.js +22 -0
- package/esm/src/kernel/registry/sole-model.d.ts +2 -0
- package/esm/src/kernel/registry/sole-model.js +4 -0
- package/esm/src/kernel/registry/system-prompt.d.ts +8 -0
- package/esm/src/kernel/registry/system-prompt.js +32 -0
- package/esm/src/kernel/registry/system-role.d.ts +3 -0
- package/esm/src/kernel/registry/system-role.js +9 -0
- package/esm/src/kernel/registry/vault.d.ts +14 -0
- package/esm/src/kernel/registry/vault.js +1 -0
- package/esm/src/kernel/schema.d.ts +226 -0
- package/esm/src/kernel/schema.js +895 -0
- package/esm/src/kernel/scope.d.ts +29 -0
- package/esm/src/kernel/scope.js +45 -0
- package/esm/src/kernel/stages.d.ts +176 -0
- package/esm/src/kernel/stages.js +431 -0
- package/esm/src/kernel/stop.d.ts +116 -0
- package/esm/src/kernel/stop.js +137 -0
- package/esm/src/kernel/system-parts.d.ts +26 -0
- package/esm/src/kernel/system-parts.js +98 -0
- package/esm/src/kernel/tools/activity-label.d.ts +22 -0
- package/esm/src/kernel/tools/activity-label.js +435 -0
- package/esm/src/kernel/tools/agent.d.ts +66 -0
- package/esm/src/kernel/tools/agent.js +212 -0
- package/esm/src/kernel/tools/coordinate.d.ts +4 -0
- package/esm/src/kernel/tools/coordinate.js +165 -0
- package/esm/src/kernel/tools/events.d.ts +66 -0
- package/esm/src/kernel/tools/events.js +184 -0
- package/esm/src/kernel/tools/execute.d.ts +100 -0
- package/esm/src/kernel/tools/execute.js +1173 -0
- package/esm/src/kernel/tools/gate-answer.d.ts +60 -0
- package/esm/src/kernel/tools/gate-answer.js +65 -0
- package/esm/src/kernel/tools/handler-events.d.ts +45 -0
- package/esm/src/kernel/tools/handler-events.js +106 -0
- package/esm/src/kernel/tools/harness.d.ts +17 -0
- package/esm/src/kernel/tools/harness.js +43 -0
- package/esm/src/kernel/tools/http-limit.d.ts +27 -0
- package/esm/src/kernel/tools/http-limit.js +85 -0
- package/esm/src/kernel/tools/invoke.d.ts +32 -0
- package/esm/src/kernel/tools/invoke.js +282 -0
- package/esm/src/kernel/tools/mcp-sessions.d.ts +23 -0
- package/esm/src/kernel/tools/mcp-sessions.js +69 -0
- package/esm/src/kernel/tools/mod.d.ts +10 -0
- package/esm/src/kernel/tools/mod.js +7 -0
- package/esm/src/kernel/tools/model-text.d.ts +16 -0
- package/esm/src/kernel/tools/model-text.js +31 -0
- package/esm/src/kernel/tools/operation.d.ts +76 -0
- package/esm/src/kernel/tools/operation.js +100 -0
- package/esm/src/kernel/tools/page-answer.d.ts +8 -0
- package/esm/src/kernel/tools/page-answer.js +19 -0
- package/esm/src/kernel/tools/permission.d.ts +15 -0
- package/esm/src/kernel/tools/permission.js +38 -0
- package/esm/src/kernel/tools/project.d.ts +11 -0
- package/esm/src/kernel/tools/project.js +55 -0
- package/esm/src/kernel/tools/registry.d.ts +27 -0
- package/esm/src/kernel/tools/registry.js +143 -0
- package/esm/src/kernel/tools/remote.d.ts +144 -0
- package/esm/src/kernel/tools/remote.js +1125 -0
- package/esm/src/kernel/tools/resolve.d.ts +31 -0
- package/esm/src/kernel/tools/resolve.js +267 -0
- package/esm/src/kernel/tools/run.d.ts +28 -0
- package/esm/src/kernel/tools/run.js +86 -0
- package/esm/src/kernel/tools/schema.d.ts +10 -0
- package/esm/src/kernel/tools/schema.js +95 -0
- package/esm/src/kernel/tools/signed-in-fetch.d.ts +19 -0
- package/esm/src/kernel/tools/signed-in-fetch.js +45 -0
- package/esm/src/kernel/tools/stage-run.d.ts +116 -0
- package/esm/src/kernel/tools/stage-run.js +198 -0
- package/esm/src/kernel/tools/types.d.ts +497 -0
- package/esm/src/kernel/tools/types.js +1 -0
- package/esm/src/kernel/tools/unchecked-output.d.ts +14 -0
- package/esm/src/kernel/tools/unchecked-output.js +18 -0
- package/esm/src/kernel/turn-events.d.ts +776 -0
- package/esm/src/kernel/turn-events.js +543 -0
- package/esm/src/kernel/types.d.ts +1025 -0
- package/esm/src/kernel/types.js +1 -0
- package/esm/src/kernel/util/base64.d.ts +4 -0
- package/esm/src/kernel/util/base64.js +15 -0
- package/esm/src/kernel/util/exact-type.d.ts +31 -0
- package/esm/src/kernel/util/exact-type.js +1 -0
- package/esm/src/kernel/util/find-last.d.ts +3 -0
- package/esm/src/kernel/util/find-last.js +9 -0
- package/esm/src/kernel/util/mime.d.ts +2 -0
- package/esm/src/kernel/util/mime.js +4 -0
- package/esm/src/kernel/util/partial-json.d.ts +23 -0
- package/esm/src/kernel/util/partial-json.js +128 -0
- package/esm/src/kernel/util/record.d.ts +2 -0
- package/esm/src/kernel/util/record.js +4 -0
- package/esm/src/observability/destinations.d.ts +14 -0
- package/esm/src/observability/destinations.js +43 -0
- package/esm/src/observability/jsonl.d.ts +18 -0
- package/esm/src/observability/jsonl.js +110 -0
- package/esm/src/observability/mod.d.ts +22 -0
- package/esm/src/observability/mod.js +16 -0
- package/esm/src/observability/openinference.d.ts +11 -0
- package/esm/src/observability/openinference.js +205 -0
- package/esm/src/observability/otlp.d.ts +71 -0
- package/esm/src/observability/otlp.js +98 -0
- package/esm/src/observability/phoenix.d.ts +30 -0
- package/esm/src/observability/phoenix.js +71 -0
- package/esm/src/observability/policy.d.ts +17 -0
- package/esm/src/observability/policy.js +73 -0
- package/esm/src/observability/resolve-policy.d.ts +8 -0
- package/esm/src/observability/resolve-policy.js +64 -0
- package/esm/src/observability/spans.d.ts +22 -0
- package/esm/src/observability/spans.js +72 -0
- package/esm/src/observability/trace-catalog.d.ts +128 -0
- package/esm/src/observability/trace-catalog.js +906 -0
- package/esm/src/observability/trace-record.d.ts +23 -0
- package/esm/src/observability/trace-record.js +228 -0
- package/esm/src/observability/trace-schema.d.ts +57 -0
- package/esm/src/observability/trace-schema.js +59 -0
- package/esm/src/observability/trace-sink.d.ts +14 -0
- package/esm/src/observability/trace-sink.js +3 -0
- package/esm/src/observability/trace-span.d.ts +98 -0
- package/esm/src/observability/trace-span.js +201 -0
- package/esm/src/observability/trace.d.ts +13 -0
- package/esm/src/observability/trace.js +37 -0
- package/esm/src/observability/types.d.ts +109 -0
- package/esm/src/observability/types.js +3 -0
- package/esm/src/presets/google/speech-voices.d.ts +9 -0
- package/esm/src/presets/google/speech-voices.js +38 -0
- package/esm/src/presets/google-limits.d.ts +13 -0
- package/esm/src/presets/google-limits.js +18 -0
- package/esm/src/presets/google.d.ts +119 -0
- package/esm/src/presets/google.js +197 -0
- package/esm/src/presets/local.d.ts +26 -0
- package/esm/src/presets/local.js +30 -0
- package/esm/src/presets/mod.d.ts +11 -0
- package/esm/src/presets/mod.js +9 -0
- package/esm/src/presets/openrouter.d.ts +26 -0
- package/esm/src/presets/openrouter.js +31 -0
- package/esm/src/providers/embedding-limits.d.ts +7 -0
- package/esm/src/providers/embedding-limits.js +12 -0
- package/esm/src/providers/gemini/embedding-protocol.d.ts +8 -0
- package/esm/src/providers/gemini/embedding-protocol.js +125 -0
- package/esm/src/providers/gemini/interactions-protocol.d.ts +8 -0
- package/esm/src/providers/gemini/interactions-protocol.js +105 -0
- package/esm/src/providers/gemini/live-protocol.d.ts +3 -0
- package/esm/src/providers/gemini/live-protocol.js +191 -0
- package/esm/src/providers/gemini/prices.d.ts +3 -0
- package/esm/src/providers/gemini/prices.js +63 -0
- package/esm/src/providers/gemini/provider.d.ts +7 -0
- package/esm/src/providers/gemini/provider.js +39 -0
- package/esm/src/providers/google/api-error.d.ts +8 -0
- package/esm/src/providers/google/api-error.js +123 -0
- package/esm/src/providers/google/builtins.d.ts +14 -0
- package/esm/src/providers/google/builtins.js +57 -0
- package/esm/src/providers/google/grounding.d.ts +5 -0
- package/esm/src/providers/google/grounding.js +226 -0
- package/esm/src/providers/google/interactions/framing.d.ts +27 -0
- package/esm/src/providers/google/interactions/framing.js +304 -0
- package/esm/src/providers/google/interactions/steps.d.ts +12 -0
- package/esm/src/providers/google/interactions/steps.js +200 -0
- package/esm/src/providers/google/interactions/stream.d.ts +23 -0
- package/esm/src/providers/google/interactions/stream.js +230 -0
- package/esm/src/providers/google/live/framing.d.ts +61 -0
- package/esm/src/providers/google/live/framing.js +597 -0
- package/esm/src/providers/google/live/stream.d.ts +13 -0
- package/esm/src/providers/google/live/stream.js +57 -0
- package/esm/src/providers/google/thinking.d.ts +3 -0
- package/esm/src/providers/google/thinking.js +8 -0
- package/esm/src/providers/google/urls.d.ts +4 -0
- package/esm/src/providers/google/urls.js +4 -0
- package/esm/src/providers/google/usage.d.ts +7 -0
- package/esm/src/providers/google/usage.js +49 -0
- package/esm/src/providers/live.d.ts +6 -0
- package/esm/src/providers/live.js +6 -0
- package/esm/src/providers/local/embedding-protocol.d.ts +7 -0
- package/esm/src/providers/local/embedding-protocol.js +60 -0
- package/esm/src/providers/local/provider.d.ts +7 -0
- package/esm/src/providers/local/provider.js +28 -0
- package/esm/src/providers/mod.d.ts +32 -0
- package/esm/src/providers/mod.js +23 -0
- package/esm/src/providers/open-ai/protocol.d.ts +3 -0
- package/esm/src/providers/open-ai/protocol.js +189 -0
- package/esm/src/providers/openrouter/embedding-protocol.d.ts +6 -0
- package/esm/src/providers/openrouter/embedding-protocol.js +86 -0
- package/esm/src/providers/openrouter/image.d.ts +15 -0
- package/esm/src/providers/openrouter/image.js +34 -0
- package/esm/src/providers/openrouter/images-protocol.d.ts +3 -0
- package/esm/src/providers/openrouter/images-protocol.js +82 -0
- package/esm/src/providers/openrouter/openai/compat.d.ts +19 -0
- package/esm/src/providers/openrouter/openai/compat.js +162 -0
- package/esm/src/providers/openrouter/openai/image-payload.d.ts +9 -0
- package/esm/src/providers/openrouter/openai/image-payload.js +115 -0
- package/esm/src/providers/openrouter/openai/reasoning-state.d.ts +2 -0
- package/esm/src/providers/openrouter/openai/reasoning-state.js +31 -0
- package/esm/src/providers/openrouter/openai/usage.d.ts +8 -0
- package/esm/src/providers/openrouter/openai/usage.js +56 -0
- package/esm/src/providers/openrouter/protocol.d.ts +8 -0
- package/esm/src/providers/openrouter/protocol.js +171 -0
- package/esm/src/providers/openrouter/provider.d.ts +10 -0
- package/esm/src/providers/openrouter/provider.js +50 -0
- package/esm/src/providers/shared/carried-tool-files.d.ts +7 -0
- package/esm/src/providers/shared/carried-tool-files.js +43 -0
- package/esm/src/providers/shared/pcm.d.ts +14 -0
- package/esm/src/providers/shared/pcm.js +78 -0
- package/esm/src/providers/shared/protocol-events.d.ts +8 -0
- package/esm/src/providers/shared/protocol-events.js +20 -0
- package/esm/src/providers/shared/response-identity.d.ts +11 -0
- package/esm/src/providers/shared/response-identity.js +12 -0
- package/esm/src/providers/shared/retry.d.ts +17 -0
- package/esm/src/providers/shared/retry.js +90 -0
- package/esm/src/providers/shared/sse.d.ts +6 -0
- package/esm/src/providers/shared/sse.js +93 -0
- package/esm/src/providers/shared/structured-output.d.ts +4 -0
- package/esm/src/providers/shared/structured-output.js +11 -0
- package/esm/src/providers/shared/tool-args.d.ts +24 -0
- package/esm/src/providers/shared/tool-args.js +88 -0
- package/esm/src/providers/shared/tool-draft.d.ts +16 -0
- package/esm/src/providers/shared/tool-draft.js +14 -0
- package/esm/src/providers/shared/upstream-tap.d.ts +8 -0
- package/esm/src/providers/shared/upstream-tap.js +85 -0
- package/esm/src/providers/shared/upstream-tape.d.ts +6 -0
- package/esm/src/providers/shared/upstream-tape.js +88 -0
- package/esm/src/providers/system-one/protocol.d.ts +8 -0
- package/esm/src/providers/system-one/protocol.js +93 -0
- package/esm/src/providers/types.d.ts +51 -0
- package/esm/src/providers/types.js +2 -0
- package/esm/src/providers/typesafe/provider.d.ts +7 -0
- package/esm/src/providers/typesafe/provider.js +24 -0
- package/esm/src/surface/formats.d.ts +46 -0
- package/esm/src/surface/formats.js +178 -0
- package/esm/src/surface/mod.d.ts +16 -0
- package/esm/src/surface/mod.js +12 -0
- package/esm/src/surface/runtime.d.ts +44 -0
- package/esm/src/surface/runtime.js +441 -0
- package/esm/src/surface/tools.d.ts +9 -0
- package/esm/src/surface/tools.js +62 -0
- package/esm/src/surface/types.d.ts +110 -0
- package/esm/src/surface/types.js +4 -0
- package/package.json +100 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Decodes a base64 string to bytes. */
|
|
2
|
+
export function base64ToBytes(data) {
|
|
3
|
+
const bin = atob(data);
|
|
4
|
+
const out = new Uint8Array(bin.length);
|
|
5
|
+
for (let i = 0; i < bin.length; i++)
|
|
6
|
+
out[i] = bin.charCodeAt(i);
|
|
7
|
+
return out;
|
|
8
|
+
}
|
|
9
|
+
/** Encodes bytes as a base64 string. */
|
|
10
|
+
export function bytesToBase64(bytes) {
|
|
11
|
+
let bin = '';
|
|
12
|
+
for (let i = 0; i < bytes.length; i++)
|
|
13
|
+
bin += String.fromCharCode(bytes[i]);
|
|
14
|
+
return btoa(bin);
|
|
15
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type Probe<X> = <T>() => T extends X ? 1 : 2;
|
|
2
|
+
export type OptionalKeys<T> = {
|
|
3
|
+
[K in keyof T]-?: Record<never, never> extends Pick<T, K> ? K : never;
|
|
4
|
+
}[keyof T];
|
|
5
|
+
export type MarkedOnce<T> = T extends object ? {
|
|
6
|
+
[K in keyof T]-?: K extends OptionalKeys<T> ? {
|
|
7
|
+
optional: T[K];
|
|
8
|
+
} : T[K];
|
|
9
|
+
} : T;
|
|
10
|
+
/**
|
|
11
|
+
* Boxed in `Seen` so a union stays one entry. `T`'s own optional fields are marked first,
|
|
12
|
+
* or a type would pass for one it merely nests in.
|
|
13
|
+
*/
|
|
14
|
+
export type IsSeen<T, Seen> = true extends (Seen extends [infer S] ? Probe<MarkedOnce<S>> extends Probe<MarkedOnce<T>> ? true : false : never) ? true : false;
|
|
15
|
+
/**
|
|
16
|
+
* The identity check behind `Probe` ignores optionality, so a field only one side leaves out
|
|
17
|
+
* would pass unmarked. A recursive type is compared as it is where it recurs.
|
|
18
|
+
*/
|
|
19
|
+
export type Marked<T, Seen = never> = IsSeen<T, Seen> extends true ? T : MarkedEach<T, Seen | [T]>;
|
|
20
|
+
export type MarkedEach<T, Seen> = T extends (...args: never[]) => unknown ? T : T extends readonly unknown[] ? {
|
|
21
|
+
[I in keyof T]: Marked<T[I], Seen>;
|
|
22
|
+
} : T extends object ? {
|
|
23
|
+
[K in keyof T]-?: K extends OptionalKeys<T> ? {
|
|
24
|
+
optional: Marked<T[K], Seen>;
|
|
25
|
+
} : Marked<T[K], Seen>;
|
|
26
|
+
} : T;
|
|
27
|
+
/**
|
|
28
|
+
* JSR's `no-slow-types` forbids publishing inferred types, so a hand-written type is checked
|
|
29
|
+
* against its schema: `true satisfies Equals<z.infer<typeof turnStop>, TurnStop>;`.
|
|
30
|
+
*/
|
|
31
|
+
export type Equals<A, B> = Probe<Marked<A>> extends Probe<Marked<B>> ? true : false;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** `Array.prototype.findLast` is ES2023; this stays ES2022-safe. */
|
|
2
|
+
export declare function findLast<T, S extends T>(items: readonly T[], predicate: (item: T) => item is S): S | undefined;
|
|
3
|
+
export declare function findLast<T>(items: readonly T[], predicate: (item: T) => boolean): T | undefined;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads JSON text the model is still writing: what is whole so far, and the string it is in the
|
|
3
|
+
* middle of. For previews only; the text once whole is parsed as JSON.
|
|
4
|
+
*/
|
|
5
|
+
/** A JSON string read from its opening quote: its text so far, and where it closed, if it has. */
|
|
6
|
+
interface StringRead {
|
|
7
|
+
text: string;
|
|
8
|
+
/** The index just past the closing quote; none while the string is still open. */
|
|
9
|
+
end?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The string whose opening quote is at `at`, unescaped as far as `text` goes. An escape cut off at
|
|
13
|
+
* the end is left out rather than shown wrong; an escape JSON does not have reads as its letter.
|
|
14
|
+
*/
|
|
15
|
+
declare function readJsonString(text: string, at: number): StringRead;
|
|
16
|
+
/**
|
|
17
|
+
* The top-level fields of a JSON object the model is still writing: each field whose value is
|
|
18
|
+
* whole, and the string being written, as far as it goes. A number, object, or array still being
|
|
19
|
+
* written is left out: it is not its value yet.
|
|
20
|
+
*/
|
|
21
|
+
declare function partialJsonObject(text: string): Record<string, unknown>;
|
|
22
|
+
export type { StringRead };
|
|
23
|
+
export { partialJsonObject, readJsonString };
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads JSON text the model is still writing: what is whole so far, and the string it is in the
|
|
3
|
+
* middle of. For previews only; the text once whole is parsed as JSON.
|
|
4
|
+
*/
|
|
5
|
+
const ESCAPES = {
|
|
6
|
+
'"': '"',
|
|
7
|
+
'\\': '\\',
|
|
8
|
+
'/': '/',
|
|
9
|
+
b: '\b',
|
|
10
|
+
f: '\f',
|
|
11
|
+
n: '\n',
|
|
12
|
+
r: '\r',
|
|
13
|
+
t: '\t',
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* The string whose opening quote is at `at`, unescaped as far as `text` goes. An escape cut off at
|
|
17
|
+
* the end is left out rather than shown wrong; an escape JSON does not have reads as its letter.
|
|
18
|
+
*/
|
|
19
|
+
function readJsonString(text, at) {
|
|
20
|
+
let out = '';
|
|
21
|
+
let i = at + 1;
|
|
22
|
+
while (i < text.length) {
|
|
23
|
+
const ch = text.charAt(i);
|
|
24
|
+
if (ch === '"')
|
|
25
|
+
return { text: out, end: i + 1 };
|
|
26
|
+
if (ch !== '\\') {
|
|
27
|
+
out += ch;
|
|
28
|
+
i++;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (i + 1 >= text.length)
|
|
32
|
+
break;
|
|
33
|
+
const code = text.charAt(i + 1);
|
|
34
|
+
if (code === 'u') {
|
|
35
|
+
const hex = text.slice(i + 2, i + 6);
|
|
36
|
+
if (hex.length < 4)
|
|
37
|
+
break;
|
|
38
|
+
if (/^[0-9a-fA-F]{4}$/.test(hex)) {
|
|
39
|
+
out += String.fromCharCode(Number.parseInt(hex, 16));
|
|
40
|
+
i += 6;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
out += ESCAPES[code] ?? code;
|
|
45
|
+
i += 2;
|
|
46
|
+
}
|
|
47
|
+
return { text: out };
|
|
48
|
+
}
|
|
49
|
+
function skipSpace(text, i) {
|
|
50
|
+
let at = i;
|
|
51
|
+
while (/\s/.test(text.charAt(at)))
|
|
52
|
+
at++;
|
|
53
|
+
return at;
|
|
54
|
+
}
|
|
55
|
+
/** The JSON value at `at` in `text` and the index past it, or none while `text` ends before it does. */
|
|
56
|
+
function wholeJsonValueAt(text, at) {
|
|
57
|
+
if (text.charAt(at) === '"') {
|
|
58
|
+
const read = readJsonString(text, at);
|
|
59
|
+
return read.end === undefined ? undefined : parsedSlice(text, at, read.end);
|
|
60
|
+
}
|
|
61
|
+
let depth = 0;
|
|
62
|
+
for (let i = at; i < text.length; i++) {
|
|
63
|
+
const ch = text.charAt(i);
|
|
64
|
+
if (ch === '"') {
|
|
65
|
+
const end = readJsonString(text, i).end;
|
|
66
|
+
if (end === undefined)
|
|
67
|
+
return undefined;
|
|
68
|
+
i = end - 1;
|
|
69
|
+
}
|
|
70
|
+
else if (ch === '{' || ch === '[')
|
|
71
|
+
depth++;
|
|
72
|
+
else if (ch === '}' || ch === ']') {
|
|
73
|
+
if (depth === 0)
|
|
74
|
+
return parsedSlice(text, at, i);
|
|
75
|
+
depth--;
|
|
76
|
+
if (depth === 0)
|
|
77
|
+
return parsedSlice(text, at, i + 1);
|
|
78
|
+
}
|
|
79
|
+
else if (ch === ',' && depth === 0)
|
|
80
|
+
return parsedSlice(text, at, i);
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
function parsedSlice(text, from, to) {
|
|
85
|
+
try {
|
|
86
|
+
return { value: JSON.parse(text.slice(from, to)), end: to };
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The top-level fields of a JSON object the model is still writing: each field whose value is
|
|
94
|
+
* whole, and the string being written, as far as it goes. A number, object, or array still being
|
|
95
|
+
* written is left out: it is not its value yet.
|
|
96
|
+
*/
|
|
97
|
+
function partialJsonObject(text) {
|
|
98
|
+
const fields = {};
|
|
99
|
+
let i = skipSpace(text, 0);
|
|
100
|
+
if (text.charAt(i) !== '{')
|
|
101
|
+
return fields;
|
|
102
|
+
i++;
|
|
103
|
+
for (;;) {
|
|
104
|
+
i = skipSpace(text, i);
|
|
105
|
+
if (text.charAt(i) === ',')
|
|
106
|
+
i = skipSpace(text, i + 1);
|
|
107
|
+
if (text.charAt(i) !== '"')
|
|
108
|
+
return fields;
|
|
109
|
+
const key = readJsonString(text, i);
|
|
110
|
+
if (key.end === undefined)
|
|
111
|
+
return fields;
|
|
112
|
+
i = skipSpace(text, key.end);
|
|
113
|
+
if (text.charAt(i) !== ':')
|
|
114
|
+
return fields;
|
|
115
|
+
i = skipSpace(text, i + 1);
|
|
116
|
+
if (i >= text.length)
|
|
117
|
+
return fields;
|
|
118
|
+
const value = wholeJsonValueAt(text, i);
|
|
119
|
+
if (!value) {
|
|
120
|
+
if (text.charAt(i) === '"')
|
|
121
|
+
fields[key.text] = readJsonString(text, i).text;
|
|
122
|
+
return fields;
|
|
123
|
+
}
|
|
124
|
+
fields[key.text] = value.value;
|
|
125
|
+
i = value.end;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export { partialJsonObject, readJsonString };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TraceSink } from './trace-sink.js';
|
|
2
|
+
/** True when the value is a trace sink. */
|
|
3
|
+
declare function isTraceSink(value: unknown): value is TraceSink;
|
|
4
|
+
/** Register a trace sink under an id; throws when the id is empty. */
|
|
5
|
+
declare function registerTraceDestination(id: string, destination: TraceSink): void;
|
|
6
|
+
/** The sink registered under the id, or `undefined`. */
|
|
7
|
+
declare function getTraceDestination(id: string): TraceSink | undefined;
|
|
8
|
+
/** The sink registered under the id; throws when there is none. */
|
|
9
|
+
declare function requireTraceDestination(id: string): TraceSink;
|
|
10
|
+
/** The registered destination ids, sorted. */
|
|
11
|
+
declare function listTraceDestinationIds(): string[];
|
|
12
|
+
/** For tests. */
|
|
13
|
+
declare function clearTraceDestinations(): void;
|
|
14
|
+
export { clearTraceDestinations, getTraceDestination, isTraceSink, listTraceDestinationIds, registerTraceDestination, requireTraceDestination, };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// invariant: THEOREM does not invent filesystem roots: hosts register a named destination once per process.
|
|
2
|
+
import { TheoremError } from '../guardrails/error.js';
|
|
3
|
+
const destinations = new Map();
|
|
4
|
+
/** True when the value is a trace sink. */
|
|
5
|
+
function isTraceSink(value) {
|
|
6
|
+
return (typeof value === 'object' &&
|
|
7
|
+
value !== null &&
|
|
8
|
+
'write' in value &&
|
|
9
|
+
typeof value.write === 'function');
|
|
10
|
+
}
|
|
11
|
+
/** Register a trace sink under an id; throws when the id is empty. */
|
|
12
|
+
function registerTraceDestination(id, destination) {
|
|
13
|
+
const key = id.trim();
|
|
14
|
+
if (!key) {
|
|
15
|
+
throw new TheoremError('config', 'registerTraceDestination requires a non-empty id');
|
|
16
|
+
}
|
|
17
|
+
// why: Hosts may call from plain JS: the registry holds only writers.
|
|
18
|
+
if (!isTraceSink(destination)) {
|
|
19
|
+
throw new TheoremError('config', `Trace destination '${key}' must be a TraceSink`);
|
|
20
|
+
}
|
|
21
|
+
destinations.set(key, destination);
|
|
22
|
+
}
|
|
23
|
+
/** The sink registered under the id, or `undefined`. */
|
|
24
|
+
function getTraceDestination(id) {
|
|
25
|
+
return destinations.get(id);
|
|
26
|
+
}
|
|
27
|
+
/** The sink registered under the id; throws when there is none. */
|
|
28
|
+
function requireTraceDestination(id) {
|
|
29
|
+
const found = getTraceDestination(id);
|
|
30
|
+
if (!found) {
|
|
31
|
+
throw new TheoremError('config', `Trace destination '${id}' is not registered`);
|
|
32
|
+
}
|
|
33
|
+
return found;
|
|
34
|
+
}
|
|
35
|
+
/** The registered destination ids, sorted. */
|
|
36
|
+
function listTraceDestinationIds() {
|
|
37
|
+
return [...destinations.keys()].sort();
|
|
38
|
+
}
|
|
39
|
+
/** For tests. */
|
|
40
|
+
function clearTraceDestinations() {
|
|
41
|
+
destinations.clear();
|
|
42
|
+
}
|
|
43
|
+
export { clearTraceDestinations, getTraceDestination, isTraceSink, listTraceDestinationIds, registerTraceDestination, requireTraceDestination, };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The file trace sink: daily rotating JSONL under a host-chosen directory. Its own entry point, so
|
|
3
|
+
* browser bundles and Workers never pull the filesystem into their module graph.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import "../../_dnt.polyfills.js";
|
|
8
|
+
import type { TraceSink } from './trace-sink.js';
|
|
9
|
+
/** Retention and rotation are not here: they arrive with each write (`TraceWriteContext`) from the profile. */
|
|
10
|
+
export interface JsonlSinkOptions {
|
|
11
|
+
now?: () => number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Daily rotating JSONL files under an absolute, host-chosen `dir`. Each write removes day files
|
|
15
|
+
* older than the record's retention (`<= 0` keeps every file) and appends to the day's newest file
|
|
16
|
+
* until it reaches the profile's `rotateAfterMiB`, then starts another.
|
|
17
|
+
*/
|
|
18
|
+
export declare function jsonlSink(dir: string, options?: JsonlSinkOptions): TraceSink;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The file trace sink: daily rotating JSONL under a host-chosen directory. Its own entry point, so
|
|
3
|
+
* browser bundles and Workers never pull the filesystem into their module graph.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import "../../_dnt.polyfills.js";
|
|
8
|
+
import { appendFile, mkdir, readdir, rm, stat } from 'node:fs/promises';
|
|
9
|
+
import { cwd } from 'node:process';
|
|
10
|
+
import { TheoremError } from '../guardrails/error.js';
|
|
11
|
+
const HOURS_PER_DAY = 24;
|
|
12
|
+
const MIN_PER_HOUR = 60;
|
|
13
|
+
const SEC_PER_MIN = 60;
|
|
14
|
+
const MS_PER_SEC = 1000;
|
|
15
|
+
const KIB = 1024;
|
|
16
|
+
const OWNER_ONLY_DIR = 0o700;
|
|
17
|
+
const OWNER_ONLY_FILE = 0o600;
|
|
18
|
+
const MIB = KIB * KIB;
|
|
19
|
+
const FILE_PART = /^turns-(\d{4}-\d{2}-\d{2})(?:-(\d+))?\.jsonl$/;
|
|
20
|
+
function dayStamp(ms) {
|
|
21
|
+
return new Date(ms).toISOString().slice(0, 10);
|
|
22
|
+
}
|
|
23
|
+
function fileDay(name) {
|
|
24
|
+
return FILE_PART.exec(name)?.[1];
|
|
25
|
+
}
|
|
26
|
+
/** Remove day files older than `retainForDays`; `<= 0` keeps every file. */
|
|
27
|
+
async function pruneTraces(dir, now, retainForDays) {
|
|
28
|
+
if (retainForDays <= 0) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const retainMs = retainForDays * HOURS_PER_DAY * MIN_PER_HOUR * SEC_PER_MIN * MS_PER_SEC;
|
|
32
|
+
const cutoff = now - retainMs;
|
|
33
|
+
for (const name of await readdir(dir)) {
|
|
34
|
+
const day = fileDay(name);
|
|
35
|
+
if (day && Date.parse(`${day}T00:00:00.000Z`) < cutoff) {
|
|
36
|
+
await rm(`${dir}/${name}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** The day's newest file while it has room, else a new one stamped `now`. */
|
|
41
|
+
async function pickFile(dir, now, rotateBytes) {
|
|
42
|
+
const day = dayStamp(now);
|
|
43
|
+
const newest = (await readdir(dir))
|
|
44
|
+
.map((name) => ({ name, part: FILE_PART.exec(name) }))
|
|
45
|
+
.filter(({ part }) => part?.[1] === day)
|
|
46
|
+
.map(({ name, part }) => ({ name, stamp: Number(part?.[2] ?? 0) }))
|
|
47
|
+
.reduce((latest, file) => (latest && latest.stamp >= file.stamp ? latest : file), undefined);
|
|
48
|
+
if (!newest)
|
|
49
|
+
return `${dir}/turns-${day}.jsonl`;
|
|
50
|
+
const path = `${dir}/${newest.name}`;
|
|
51
|
+
return (await stat(path)).size < rotateBytes ? path : `${dir}/turns-${day}-${now}.jsonl`;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Daily rotating JSONL files under an absolute, host-chosen `dir`. Each write removes day files
|
|
55
|
+
* older than the record's retention (`<= 0` keeps every file) and appends to the day's newest file
|
|
56
|
+
* until it reaches the profile's `rotateAfterMiB`, then starts another.
|
|
57
|
+
*/
|
|
58
|
+
export function jsonlSink(dir, options = {}) {
|
|
59
|
+
const safeDir = validateTraceDir(dir);
|
|
60
|
+
const now = options.now ?? Date.now;
|
|
61
|
+
return {
|
|
62
|
+
write: async (record, context) => {
|
|
63
|
+
const at = now();
|
|
64
|
+
// why: Records hold conversation content: readable by the host's user only.
|
|
65
|
+
await mkdir(safeDir, { recursive: true, mode: OWNER_ONLY_DIR });
|
|
66
|
+
await pruneTraces(safeDir, at, context.retainForDays);
|
|
67
|
+
const path = await pickFile(safeDir, at, context.rotateAfterMiB * MIB);
|
|
68
|
+
await appendFile(path, `${JSON.stringify(record)}\n`, { mode: OWNER_ONLY_FILE });
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function insideDir(path, root) {
|
|
73
|
+
let base = root;
|
|
74
|
+
if (root.endsWith('/')) {
|
|
75
|
+
base = root.slice(0, -1);
|
|
76
|
+
}
|
|
77
|
+
if (path === base) {
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
return path.startsWith(`${base}/`);
|
|
81
|
+
}
|
|
82
|
+
function normalizeAbsolutePath(path) {
|
|
83
|
+
const trimmed = path.trim();
|
|
84
|
+
if (!trimmed) {
|
|
85
|
+
throw new TheoremError('config', 'trace directory must be non-empty');
|
|
86
|
+
}
|
|
87
|
+
if (!trimmed.startsWith('/')) {
|
|
88
|
+
throw new TheoremError('config', 'trace directory must be absolute');
|
|
89
|
+
}
|
|
90
|
+
const parts = [];
|
|
91
|
+
for (const part of trimmed.split('/')) {
|
|
92
|
+
if (!part || part === '.') {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (part === '..') {
|
|
96
|
+
parts.pop();
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
parts.push(part);
|
|
100
|
+
}
|
|
101
|
+
return `/${parts.join('/')}`;
|
|
102
|
+
}
|
|
103
|
+
/** An absolute directory outside the working directory, normalized; throws `config` otherwise. */
|
|
104
|
+
function validateTraceDir(dir) {
|
|
105
|
+
const normalized = normalizeAbsolutePath(dir);
|
|
106
|
+
if (insideDir(normalized, normalizeAbsolutePath(cwd()))) {
|
|
107
|
+
throw new TheoremError('config', 'trace directory must be outside the project checkout');
|
|
108
|
+
}
|
|
109
|
+
return normalized;
|
|
110
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trace sinks, the destination registry, observability policy, the span builder, and the trace
|
|
3
|
+
* catalog. THEOREM owns no database: hosts register destinations or pass a sink into `runTurn`.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import "../../_dnt.polyfills.js";
|
|
8
|
+
export { clearTraceDestinations, getTraceDestination, isTraceSink, listTraceDestinationIds, registerTraceDestination, requireTraceDestination, } from './destinations.js';
|
|
9
|
+
export type { OtlpAnyValue, OtlpKeyValue, OtlpSpan, OtlpTraceRequest } from './otlp.js';
|
|
10
|
+
export { toOtlpJson } from './otlp.js';
|
|
11
|
+
export { resolveTraceWriter } from './policy.js';
|
|
12
|
+
export { resolveObservabilityPolicy } from './resolve-policy.js';
|
|
13
|
+
export { memorySink, noopSink, writeTrace, } from './trace.js';
|
|
14
|
+
export type { TraceAttributeGroup, TraceAttributeMeta, TraceEventMeta, TraceOptionMeta, TraceSpanMeta, TraceSpanType, TraceValueFormat, } from './trace-catalog.js';
|
|
15
|
+
export { TRACE_ATTRIBUTE_GROUPS, TRACE_FIELDS, TRACE_SPAN_TYPES, TRACE_STATUS, traceAttributeMeta, traceCatalogRows, traceEventAttributeMeta, traceEventMeta, traceSpanMeta, } from './trace-catalog.js';
|
|
16
|
+
export type { TraceRecord } from './trace-record.js';
|
|
17
|
+
export { buildRecord, contentOf, inlineContent } from './trace-record.js';
|
|
18
|
+
export { traceRecordSchema } from './trace-schema.js';
|
|
19
|
+
export type { TraceSink, TraceWriteContext } from './trace-sink.js';
|
|
20
|
+
export type { SpanHandle, SpanLinkInput, SpanOptions, TraceAttributes, TraceAttributeValue, TraceBytes, TraceClock, TraceContent, TraceJson, TraceSpan, TraceSpanEvent, TraceSpanKind, TraceSpanLink, TraceSpanStatus, TraceTree, } from './trace-span.js';
|
|
21
|
+
export { readTraceparent, startTrace, traceBytes, traceContent, traceJson, } from './trace-span.js';
|
|
22
|
+
export type { ProfileObservabilitySpec, ResolvedObservabilityPolicy, ResolvedScrubSwitch, ResolvedTraceInclude, ResolvedTraceScrub, ScrubSwitch, TraceIncludeSpec, TraceScrubSpec, } from './types.js';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trace sinks, the destination registry, observability policy, the span builder, and the trace
|
|
3
|
+
* catalog. THEOREM owns no database: hosts register destinations or pass a sink into `runTurn`.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import "../../_dnt.polyfills.js";
|
|
8
|
+
export { clearTraceDestinations, getTraceDestination, isTraceSink, listTraceDestinationIds, registerTraceDestination, requireTraceDestination, } from './destinations.js';
|
|
9
|
+
export { toOtlpJson } from './otlp.js';
|
|
10
|
+
export { resolveTraceWriter } from './policy.js';
|
|
11
|
+
export { resolveObservabilityPolicy } from './resolve-policy.js';
|
|
12
|
+
export { memorySink, noopSink, writeTrace, } from './trace.js';
|
|
13
|
+
export { TRACE_ATTRIBUTE_GROUPS, TRACE_FIELDS, TRACE_SPAN_TYPES, TRACE_STATUS, traceAttributeMeta, traceCatalogRows, traceEventAttributeMeta, traceEventMeta, traceSpanMeta, } from './trace-catalog.js';
|
|
14
|
+
export { buildRecord, contentOf, inlineContent } from './trace-record.js';
|
|
15
|
+
export { traceRecordSchema } from './trace-schema.js';
|
|
16
|
+
export { readTraceparent, startTrace, traceBytes, traceContent, traceJson, } from './trace-span.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenInference attributes for Phoenix, whose message views, reasoning tokens, and cost read only
|
|
3
|
+
* OpenInference names; they are copied beside the semconv names so `toOtlpJson` stays neutral.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import "../../_dnt.polyfills.js";
|
|
8
|
+
import { type TraceRecord } from './trace-record.js';
|
|
9
|
+
/** Pure: input records are not changed. Export with `toOtlpJson(withOpenInference(records))`. */
|
|
10
|
+
declare function withOpenInference(records: readonly TraceRecord[]): TraceRecord[];
|
|
11
|
+
export { withOpenInference };
|