@pellux/goodvibes-sdk 0.21.30 → 0.21.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_internal/contracts/zod-schemas/accounts.d.ts +9 -9
- package/dist/_internal/contracts/zod-schemas/auth.d.ts +1 -1
- package/dist/_internal/daemon/context.d.ts +1 -0
- package/dist/_internal/daemon/context.d.ts.map +1 -1
- package/dist/_internal/daemon/error-response.js +22 -22
- package/dist/_internal/daemon/integration-route-types.d.ts +2 -1
- package/dist/_internal/daemon/integration-route-types.d.ts.map +1 -1
- package/dist/_internal/daemon/knowledge-routes.js +5 -5
- package/dist/_internal/daemon/media-routes.d.ts.map +1 -1
- package/dist/_internal/daemon/media-routes.js +4 -3
- package/dist/_internal/daemon/operator.d.ts +1 -1
- package/dist/_internal/daemon/operator.d.ts.map +1 -1
- package/dist/_internal/daemon/operator.js +2 -0
- package/dist/_internal/daemon/runtime-route-types.d.ts +2 -1
- package/dist/_internal/daemon/runtime-route-types.d.ts.map +1 -1
- package/dist/_internal/daemon/runtime-routes.d.ts +1 -1
- package/dist/_internal/daemon/runtime-routes.d.ts.map +1 -1
- package/dist/_internal/daemon/runtime-routes.js +1 -0
- package/dist/_internal/daemon/telemetry-routes.d.ts.map +1 -1
- package/dist/_internal/daemon/telemetry-routes.js +13 -12
- package/dist/_internal/errors/daemon-error-contract.d.ts +17 -0
- package/dist/_internal/errors/daemon-error-contract.d.ts.map +1 -1
- package/dist/_internal/errors/daemon-error-contract.js +17 -1
- package/dist/_internal/errors/index.d.ts +2 -1
- package/dist/_internal/errors/index.d.ts.map +1 -1
- package/dist/_internal/errors/index.js +1 -0
- package/dist/_internal/platform/artifacts/store.d.ts.map +1 -1
- package/dist/_internal/platform/artifacts/store.js +2 -1
- package/dist/_internal/platform/automation/scheduler-capacity.d.ts +29 -0
- package/dist/_internal/platform/automation/scheduler-capacity.d.ts.map +1 -0
- package/dist/_internal/platform/automation/scheduler-capacity.js +31 -0
- package/dist/_internal/platform/channels/delivery/shared.d.ts.map +1 -1
- package/dist/_internal/platform/channels/delivery/shared.js +3 -2
- package/dist/_internal/platform/channels/delivery/strategies-bridge.d.ts.map +1 -1
- package/dist/_internal/platform/channels/delivery/strategies-bridge.js +3 -2
- package/dist/_internal/platform/channels/delivery/strategies-core.d.ts.map +1 -1
- package/dist/_internal/platform/channels/delivery/strategies-core.js +5 -4
- package/dist/_internal/platform/channels/delivery/strategies-enterprise.d.ts.map +1 -1
- package/dist/_internal/platform/channels/delivery/strategies-enterprise.js +4 -3
- package/dist/_internal/platform/config/manager.d.ts.map +1 -1
- package/dist/_internal/platform/config/manager.js +2 -1
- package/dist/_internal/platform/config/schema-domain-runtime.d.ts +6 -0
- package/dist/_internal/platform/config/schema-domain-runtime.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema-domain-runtime.js +22 -0
- package/dist/_internal/platform/config/schema-types.d.ts +16 -2
- package/dist/_internal/platform/config/schema-types.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema.js +1 -0
- package/dist/_internal/platform/config/service-registry.d.ts.map +1 -1
- package/dist/_internal/platform/config/service-registry.js +2 -1
- package/dist/_internal/platform/control-plane/gateway-web-ui.d.ts +0 -1
- package/dist/_internal/platform/control-plane/gateway-web-ui.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/gateway-web-ui.js +7 -6
- package/dist/_internal/platform/control-plane/session-broker.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/session-broker.js +12 -4
- package/dist/_internal/platform/core/orchestrator-tool-runtime.d.ts.map +1 -1
- package/dist/_internal/platform/core/orchestrator-tool-runtime.js +6 -6
- package/dist/_internal/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
- package/dist/_internal/platform/core/orchestrator-turn-loop.js +10 -2
- package/dist/_internal/platform/daemon/facade-composition.d.ts +4 -131
- package/dist/_internal/platform/daemon/facade-composition.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/facade-composition.js +9 -10
- package/dist/_internal/platform/daemon/facade-types.d.ts +141 -0
- package/dist/_internal/platform/daemon/facade-types.d.ts.map +1 -0
- package/dist/_internal/platform/daemon/facade-types.js +1 -0
- package/dist/_internal/platform/daemon/http/rate-limiter.d.ts +23 -0
- package/dist/_internal/platform/daemon/http/rate-limiter.d.ts.map +1 -0
- package/dist/_internal/platform/daemon/http/rate-limiter.js +71 -0
- package/dist/_internal/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router-route-contexts.js +2 -1
- package/dist/_internal/platform/daemon/http/router.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router.js +70 -65
- package/dist/_internal/platform/daemon/http/runtime-route-types.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http-listener.d.ts +1 -0
- package/dist/_internal/platform/daemon/http-listener.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http-listener.js +53 -73
- package/dist/_internal/platform/daemon/surface-delivery.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/surface-delivery.js +6 -5
- package/dist/_internal/platform/discovery/mcp-scanner.d.ts.map +1 -1
- package/dist/_internal/platform/discovery/mcp-scanner.js +28 -22
- package/dist/_internal/platform/discovery/scanner.d.ts.map +1 -1
- package/dist/_internal/platform/discovery/scanner.js +38 -22
- package/dist/_internal/platform/export/session-export.d.ts +0 -1
- package/dist/_internal/platform/export/session-export.d.ts.map +1 -1
- package/dist/_internal/platform/export/session-export.js +1 -33
- package/dist/_internal/platform/hooks/runners/http.d.ts.map +1 -1
- package/dist/_internal/platform/hooks/runners/http.js +2 -1
- package/dist/_internal/platform/integrations/delivery.d.ts +3 -1
- package/dist/_internal/platform/integrations/delivery.d.ts.map +1 -1
- package/dist/_internal/platform/integrations/delivery.js +3 -2
- package/dist/_internal/platform/integrations/discord.d.ts.map +1 -1
- package/dist/_internal/platform/integrations/discord.js +6 -5
- package/dist/_internal/platform/integrations/ntfy.d.ts.map +1 -1
- package/dist/_internal/platform/integrations/ntfy.js +3 -2
- package/dist/_internal/platform/integrations/webhooks.d.ts.map +1 -1
- package/dist/_internal/platform/integrations/webhooks.js +2 -1
- package/dist/_internal/platform/intelligence/lsp/binary-downloader.d.ts.map +1 -1
- package/dist/_internal/platform/intelligence/lsp/binary-downloader.js +4 -3
- package/dist/_internal/platform/knowledge/store.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/store.js +50 -25
- package/dist/_internal/platform/mcp/client.d.ts.map +1 -1
- package/dist/_internal/platform/mcp/client.js +3 -2
- package/dist/_internal/platform/media/builtin-generation-providers.d.ts.map +1 -1
- package/dist/_internal/platform/media/builtin-generation-providers.js +4 -3
- package/dist/_internal/platform/media/builtin-image-understanding.d.ts.map +1 -1
- package/dist/_internal/platform/media/builtin-image-understanding.js +5 -4
- package/dist/_internal/platform/providers/anthropic-compat.d.ts.map +1 -1
- package/dist/_internal/platform/providers/anthropic-compat.js +5 -3
- package/dist/_internal/platform/providers/anthropic.d.ts.map +1 -1
- package/dist/_internal/platform/providers/anthropic.js +10 -7
- package/dist/_internal/platform/providers/builtin-catalog.d.ts.map +1 -1
- package/dist/_internal/platform/providers/builtin-catalog.js +3 -2
- package/dist/_internal/platform/providers/catalogue.d.ts +56 -0
- package/dist/_internal/platform/providers/catalogue.d.ts.map +1 -0
- package/dist/_internal/platform/providers/catalogue.js +111 -0
- package/dist/_internal/platform/providers/context-discovery.d.ts.map +1 -1
- package/dist/_internal/platform/providers/context-discovery.js +2 -1
- package/dist/_internal/platform/providers/credentials.d.ts +12 -0
- package/dist/_internal/platform/providers/credentials.d.ts.map +1 -0
- package/dist/_internal/platform/providers/credentials.js +54 -0
- package/dist/_internal/platform/providers/gemini.d.ts.map +1 -1
- package/dist/_internal/platform/providers/gemini.js +6 -5
- package/dist/_internal/platform/providers/github-copilot.d.ts.map +1 -1
- package/dist/_internal/platform/providers/github-copilot.js +2 -1
- package/dist/_internal/platform/providers/health.d.ts +15 -0
- package/dist/_internal/platform/providers/health.d.ts.map +1 -0
- package/dist/_internal/platform/providers/health.js +32 -0
- package/dist/_internal/platform/providers/llama-cpp.d.ts.map +1 -1
- package/dist/_internal/platform/providers/llama-cpp.js +5 -3
- package/dist/_internal/platform/providers/lm-studio.d.ts.map +1 -1
- package/dist/_internal/platform/providers/lm-studio.js +5 -3
- package/dist/_internal/platform/providers/model-benchmarks.d.ts.map +1 -1
- package/dist/_internal/platform/providers/model-benchmarks.js +2 -1
- package/dist/_internal/platform/providers/model-catalog-cache.d.ts.map +1 -1
- package/dist/_internal/platform/providers/model-catalog-cache.js +2 -1
- package/dist/_internal/platform/providers/model-limits.d.ts.map +1 -1
- package/dist/_internal/platform/providers/model-limits.js +2 -1
- package/dist/_internal/platform/providers/ollama.d.ts.map +1 -1
- package/dist/_internal/platform/providers/ollama.js +5 -3
- package/dist/_internal/platform/providers/openai-codex.d.ts.map +1 -1
- package/dist/_internal/platform/providers/openai-codex.js +4 -2
- package/dist/_internal/platform/providers/openai-compat.d.ts.map +1 -1
- package/dist/_internal/platform/providers/openai-compat.js +3 -2
- package/dist/_internal/platform/providers/provider-not-found-error.d.ts +3 -1
- package/dist/_internal/platform/providers/provider-not-found-error.d.ts.map +1 -1
- package/dist/_internal/platform/providers/provider-not-found-error.js +3 -4
- package/dist/_internal/platform/providers/well-known-endpoints.d.ts +53 -0
- package/dist/_internal/platform/providers/well-known-endpoints.d.ts.map +1 -0
- package/dist/_internal/platform/providers/well-known-endpoints.js +52 -0
- package/dist/_internal/platform/runtime/auth/oauth-core.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/auth/oauth-core.js +2 -1
- package/dist/_internal/platform/runtime/contracts/index.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/contracts/index.js +1 -5
- package/dist/_internal/platform/runtime/contracts/migrations/schemas.d.ts +57 -0
- package/dist/_internal/platform/runtime/contracts/migrations/schemas.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/contracts/migrations/schemas.js +157 -0
- package/dist/_internal/platform/runtime/correlation.d.ts +44 -0
- package/dist/_internal/platform/runtime/correlation.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/correlation.js +40 -0
- package/dist/_internal/platform/runtime/emitters/security.d.ts +32 -0
- package/dist/_internal/platform/runtime/emitters/security.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/emitters/security.js +26 -0
- package/dist/_internal/platform/runtime/emitters/tools.d.ts +11 -2
- package/dist/_internal/platform/runtime/emitters/tools.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/emitters/tools.js +27 -0
- package/dist/_internal/platform/runtime/emitters/transport.d.ts +27 -0
- package/dist/_internal/platform/runtime/emitters/transport.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/emitters/transport.js +19 -0
- package/dist/_internal/platform/runtime/emitters/turn.d.ts +22 -1
- package/dist/_internal/platform/runtime/emitters/turn.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/emitters/turn.js +9 -0
- package/dist/_internal/platform/runtime/events/index.d.ts +45 -0
- package/dist/_internal/platform/runtime/events/index.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/index.js +108 -14
- package/dist/_internal/platform/runtime/events/ops.d.ts +8 -0
- package/dist/_internal/platform/runtime/events/ops.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/security.d.ts +47 -0
- package/dist/_internal/platform/runtime/events/security.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/tools.d.ts +14 -2
- package/dist/_internal/platform/runtime/events/tools.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/transport.d.ts +31 -0
- package/dist/_internal/platform/runtime/events/transport.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/turn.d.ts +25 -1
- package/dist/_internal/platform/runtime/events/turn.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/workspace.d.ts +16 -0
- package/dist/_internal/platform/runtime/events/workspace.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/llm-observability.d.ts +43 -0
- package/dist/_internal/platform/runtime/llm-observability.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/llm-observability.js +107 -0
- package/dist/_internal/platform/runtime/metrics.d.ts +49 -0
- package/dist/_internal/platform/runtime/metrics.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/metrics.js +114 -0
- package/dist/_internal/platform/runtime/ops/control-plane.d.ts +5 -2
- package/dist/_internal/platform/runtime/ops/control-plane.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/ops/control-plane.js +5 -4
- package/dist/_internal/platform/runtime/permissions/divergence-dashboard.d.ts +3 -1
- package/dist/_internal/platform/runtime/permissions/divergence-dashboard.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/permissions/divergence-dashboard.js +3 -2
- package/dist/_internal/platform/runtime/permissions/policy-loader.d.ts +3 -1
- package/dist/_internal/platform/runtime/permissions/policy-loader.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/permissions/policy-loader.js +3 -2
- package/dist/_internal/platform/runtime/permissions/policy-signer.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/permissions/policy-signer.js +7 -2
- package/dist/_internal/platform/runtime/permissions/simulation.d.ts +3 -1
- package/dist/_internal/platform/runtime/permissions/simulation.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/permissions/simulation.js +3 -2
- package/dist/_internal/platform/runtime/remote/transport-contract.d.ts +14 -2
- package/dist/_internal/platform/runtime/remote/transport-contract.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/remote/transport-contract.js +7 -5
- package/dist/_internal/platform/runtime/store/helpers/reducers/sync.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/store/helpers/reducers/sync.js +12 -1
- package/dist/_internal/platform/runtime/tasks/manager.d.ts +7 -3
- package/dist/_internal/platform/runtime/tasks/manager.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/tasks/manager.js +7 -6
- package/dist/_internal/platform/runtime/telemetry/api-helpers.d.ts +14 -0
- package/dist/_internal/platform/runtime/telemetry/api-helpers.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/telemetry/api-helpers.js +59 -0
- package/dist/_internal/platform/runtime/telemetry/api.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/telemetry/api.js +9 -2
- package/dist/_internal/platform/runtime/telemetry/exporters/otlp.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/telemetry/exporters/otlp.js +19 -6
- package/dist/_internal/platform/runtime/telemetry/exporters/queue.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/telemetry/exporters/queue.js +11 -4
- package/dist/_internal/platform/runtime/telemetry/meter.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/telemetry/meter.js +7 -3
- package/dist/_internal/platform/runtime/telemetry/redaction-config.d.ts +9 -0
- package/dist/_internal/platform/runtime/telemetry/redaction-config.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/telemetry/redaction-config.js +52 -0
- package/dist/_internal/platform/runtime/tools/phases/budget.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/tools/phases/budget.js +3 -2
- package/dist/_internal/platform/runtime/transports/daemon-http-client.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/transports/daemon-http-client.js +138 -17
- package/dist/_internal/platform/scheduler/scheduler.d.ts.map +1 -1
- package/dist/_internal/platform/scheduler/scheduler.js +6 -2
- package/dist/_internal/platform/sessions/manager.d.ts.map +1 -1
- package/dist/_internal/platform/sessions/manager.js +6 -2
- package/dist/_internal/platform/state/memory-embedding-http.d.ts.map +1 -1
- package/dist/_internal/platform/state/memory-embedding-http.js +3 -2
- package/dist/_internal/platform/state/project-index.d.ts.map +1 -1
- package/dist/_internal/platform/state/project-index.js +6 -4
- package/dist/_internal/platform/tools/agent/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/agent/index.js +2 -1
- package/dist/_internal/platform/tools/analyze/git-modes.d.ts.map +1 -1
- package/dist/_internal/platform/tools/analyze/git-modes.js +2 -1
- package/dist/_internal/platform/tools/edit/core.d.ts.map +1 -1
- package/dist/_internal/platform/tools/edit/core.js +2 -1
- package/dist/_internal/platform/tools/exec/runtime.d.ts.map +1 -1
- package/dist/_internal/platform/tools/exec/runtime.js +3 -2
- package/dist/_internal/platform/tools/fetch/runtime.d.ts.map +1 -1
- package/dist/_internal/platform/tools/fetch/runtime.js +4 -2
- package/dist/_internal/platform/tools/read/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/read/index.js +2 -1
- package/dist/_internal/platform/tools/registry-tool/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/registry-tool/index.js +2 -1
- package/dist/_internal/platform/tools/state/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/state/index.js +2 -1
- package/dist/_internal/platform/tools/task/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/task/index.js +2 -1
- package/dist/_internal/platform/tools/team/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/team/index.js +2 -1
- package/dist/_internal/platform/tools/web-search/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/web-search/index.js +2 -1
- package/dist/_internal/platform/tools/worklist/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/worklist/index.js +2 -1
- package/dist/_internal/platform/types/errors.d.ts +12 -10
- package/dist/_internal/platform/types/errors.d.ts.map +1 -1
- package/dist/_internal/platform/types/errors.js +21 -20
- package/dist/_internal/platform/utils/error-display.d.ts.map +1 -1
- package/dist/_internal/platform/utils/error-display.js +6 -4
- package/dist/_internal/platform/utils/fetch-with-timeout.d.ts +17 -0
- package/dist/_internal/platform/utils/fetch-with-timeout.d.ts.map +1 -1
- package/dist/_internal/platform/utils/fetch-with-timeout.js +59 -0
- package/dist/_internal/platform/utils/record-coerce.d.ts +11 -0
- package/dist/_internal/platform/utils/record-coerce.d.ts.map +1 -0
- package/dist/_internal/platform/utils/record-coerce.js +12 -0
- package/dist/_internal/platform/utils/redaction.js +1 -1
- package/dist/_internal/platform/utils/ring-buffer.d.ts +54 -0
- package/dist/_internal/platform/utils/ring-buffer.d.ts.map +1 -0
- package/dist/_internal/platform/utils/ring-buffer.js +96 -0
- package/dist/_internal/platform/utils/shell-split.d.ts +11 -0
- package/dist/_internal/platform/utils/shell-split.d.ts.map +1 -0
- package/dist/_internal/platform/utils/shell-split.js +83 -0
- package/dist/_internal/platform/version.js +1 -1
- package/dist/_internal/platform/voice/providers/deepgram.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/deepgram.js +2 -1
- package/dist/_internal/platform/voice/providers/elevenlabs.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/elevenlabs.js +5 -4
- package/dist/_internal/platform/voice/providers/google.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/google.js +5 -4
- package/dist/_internal/platform/voice/providers/microsoft.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/microsoft.js +2 -1
- package/dist/_internal/platform/voice/providers/openai.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/openai.js +4 -3
- package/dist/_internal/platform/voice/providers/shared.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/shared.js +2 -1
- package/dist/_internal/platform/voice/providers/vydra.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/vydra.js +3 -2
- package/dist/_internal/platform/watchers/registry.d.ts.map +1 -1
- package/dist/_internal/platform/watchers/registry.js +3 -2
- package/dist/_internal/platform/workflow/trigger-executor.d.ts.map +1 -1
- package/dist/_internal/platform/workflow/trigger-executor.js +5 -3
- package/dist/_internal/platform/workspace/daemon-home.d.ts.map +1 -1
- package/dist/_internal/platform/workspace/daemon-home.js +6 -2
- package/dist/_internal/platform/workspace/workspace-swap-manager.d.ts +1 -0
- package/dist/_internal/platform/workspace/workspace-swap-manager.d.ts.map +1 -1
- package/dist/_internal/platform/workspace/workspace-swap-manager.js +14 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/tasks/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/tasks/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* - Track per-kind concurrency
|
|
12
12
|
* - Support retry policies
|
|
13
13
|
*/
|
|
14
|
+
import { GoodVibesSdkError } from '../../../errors/index.js';
|
|
14
15
|
import { createDomainDispatch } from '../store/index.js';
|
|
15
16
|
import { TaskRegistry } from './registry.js';
|
|
16
17
|
import { canTransition } from './lifecycle.js';
|
|
@@ -19,12 +20,12 @@ import { emitTaskCreated, emitTaskStarted, emitTaskBlocked, emitTaskCompleted, e
|
|
|
19
20
|
// Error types
|
|
20
21
|
// ---------------------------------------------------------------------------
|
|
21
22
|
/** Thrown when a requested task lifecycle transition is not permitted. */
|
|
22
|
-
export class TaskTransitionError extends
|
|
23
|
+
export class TaskTransitionError extends GoodVibesSdkError {
|
|
23
24
|
taskId;
|
|
24
25
|
from;
|
|
25
26
|
to;
|
|
26
27
|
constructor(taskId, from, to) {
|
|
27
|
-
super(`[TaskManager] Invalid transition ${from} → ${to} for task ${taskId}
|
|
28
|
+
super(`[TaskManager] Invalid transition ${from} → ${to} for task ${taskId}`, { code: 'TASK_TRANSITION_ERROR', category: 'internal', source: 'runtime', recoverable: false });
|
|
28
29
|
this.name = 'TaskTransitionError';
|
|
29
30
|
this.taskId = taskId;
|
|
30
31
|
this.from = from;
|
|
@@ -32,19 +33,19 @@ export class TaskTransitionError extends Error {
|
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
/** Thrown when a task ID cannot be found in the registry. */
|
|
35
|
-
export class TaskNotFoundError extends
|
|
36
|
+
export class TaskNotFoundError extends GoodVibesSdkError {
|
|
36
37
|
taskId;
|
|
37
38
|
constructor(taskId) {
|
|
38
|
-
super(`[TaskManager] Task not found: ${taskId}
|
|
39
|
+
super(`[TaskManager] Task not found: ${taskId}`, { code: 'TASK_NOT_FOUND', category: 'not_found', source: 'runtime', recoverable: false });
|
|
39
40
|
this.name = 'TaskNotFoundError';
|
|
40
41
|
this.taskId = taskId;
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
/** Thrown when cancellation is attempted on a non-cancellable task. */
|
|
44
|
-
export class TaskNotCancellableError extends
|
|
45
|
+
export class TaskNotCancellableError extends GoodVibesSdkError {
|
|
45
46
|
taskId;
|
|
46
47
|
constructor(taskId) {
|
|
47
|
-
super(`[TaskManager] Task ${taskId} is not cancellable
|
|
48
|
+
super(`[TaskManager] Task ${taskId} is not cancellable`, { code: 'TASK_NOT_CANCELLABLE', category: 'internal', source: 'runtime', recoverable: false });
|
|
48
49
|
this.name = 'TaskNotCancellableError';
|
|
49
50
|
this.taskId = taskId;
|
|
50
51
|
}
|
|
@@ -6,6 +6,12 @@ import type { AttributeValue, ReadableSpan } from './types.js';
|
|
|
6
6
|
import type { TelemetryAggregates, TelemetryListResponse, TelemetryPageInfo, TelemetryRecord, TelemetrySeverity, TelemetryViewMode } from './api.js';
|
|
7
7
|
export declare const SERVICE_NAME = "goodvibes-sdk";
|
|
8
8
|
export declare const DEFAULT_EVENT_LIMIT = 500;
|
|
9
|
+
/**
|
|
10
|
+
* OBS-22: Allowlist of metric label keys permitted in telemetry attributes.
|
|
11
|
+
* Keys outside this set are stripped before storage to prevent high-cardinality
|
|
12
|
+
* label explosion in metrics backends (Prometheus, OTLP, etc.).
|
|
13
|
+
*/
|
|
14
|
+
export declare const METRIC_LABEL_ALLOWLIST: Set<string>;
|
|
9
15
|
export declare const DEFAULT_ERROR_LIMIT = 250;
|
|
10
16
|
export declare const DEFAULT_SPAN_LIMIT = 250;
|
|
11
17
|
export declare const ALL_DOMAINS: readonly RuntimeEventDomain[];
|
|
@@ -24,6 +30,14 @@ export declare function normalizePayload(payload: unknown): Record<string, unkno
|
|
|
24
30
|
export declare function extractProvider(payload: Record<string, unknown>): string | undefined;
|
|
25
31
|
export declare function extractErrorCandidate(payload: Record<string, unknown>): string | undefined;
|
|
26
32
|
export declare function isErrorEventType(type: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* OBS-22: Filter metric labels against the allowlist to prevent high-cardinality
|
|
35
|
+
* label injection into metrics backends. Non-allowlisted keys are dropped.
|
|
36
|
+
*
|
|
37
|
+
* Note: full event attribute payloads (for telemetry records) are NOT filtered —
|
|
38
|
+
* this is only applied when building metric instrument labels.
|
|
39
|
+
*/
|
|
40
|
+
export declare function filterMetricLabels(labels: Record<string, unknown>): Record<string, unknown>;
|
|
27
41
|
export declare function buildAttributes(domain: RuntimeEventDomain, envelope: RuntimeEventEnvelope<AnyRuntimeEvent['type'], AnyRuntimeEvent>, payload: Record<string, unknown>): Record<string, unknown>;
|
|
28
42
|
export declare function buildRecordId(domain: RuntimeEventDomain, envelope: RuntimeEventEnvelope<AnyRuntimeEvent['type'], AnyRuntimeEvent>, seq: number): string;
|
|
29
43
|
export declare function extractRecordSequence(record: TelemetryRecord): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/telemetry/api-helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/telemetry/api-helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAEb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,mBAAmB,EAEnB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,aA+BjC,CAAC;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAQtC,eAAO,MAAM,WAAW,EAAE,SAAS,kBAAkB,EA2B3C,CAAC;AAMX,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAOpE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAK3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAoB3E;AAgBD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAQ5H;AAWD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,eAAe,GAAG,iBAAiB,CAKtF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,WAAW,CAcxE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAgBvE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE1E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAEpF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAK1F;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ3F;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,oBAAoB,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,EACxE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBzB;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,oBAAoB,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,EACxE,GAAG,EAAE,MAAM,GACV,MAAM,CAER;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAKrE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,GAAG,eAAe,CAOhG;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,GAAG,YAAY,CAUtF;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,IAAI,EAAE,iBAAiB,EACvB,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,iBAAiB,GAC1B,qBAAqB,CAAC,CAAC,CAAC,CAQ1B;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE5E;AAgBD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwCvG;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsC5G;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAC3C,UAAU,EAAE,mBAAmB,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmIzB"}
|
|
@@ -1,8 +1,46 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
2
|
import { VERSION } from '../../version.js';
|
|
3
|
+
import { getCorrelationContext } from '../correlation.js';
|
|
3
4
|
import { redactStructuredData } from '../../utils/redaction.js';
|
|
4
5
|
export const SERVICE_NAME = 'goodvibes-sdk';
|
|
5
6
|
export const DEFAULT_EVENT_LIMIT = 500;
|
|
7
|
+
/**
|
|
8
|
+
* OBS-22: Allowlist of metric label keys permitted in telemetry attributes.
|
|
9
|
+
* Keys outside this set are stripped before storage to prevent high-cardinality
|
|
10
|
+
* label explosion in metrics backends (Prometheus, OTLP, etc.).
|
|
11
|
+
*/
|
|
12
|
+
export const METRIC_LABEL_ALLOWLIST = new Set([
|
|
13
|
+
// Core identifiers (bounded cardinality)
|
|
14
|
+
'domain',
|
|
15
|
+
'eventType',
|
|
16
|
+
'source',
|
|
17
|
+
'severity',
|
|
18
|
+
// HTTP labels
|
|
19
|
+
'method',
|
|
20
|
+
'status_class',
|
|
21
|
+
'path_pattern',
|
|
22
|
+
// LLM labels
|
|
23
|
+
'provider',
|
|
24
|
+
'model',
|
|
25
|
+
'status',
|
|
26
|
+
'finish_reason',
|
|
27
|
+
// Auth labels
|
|
28
|
+
'auth_method',
|
|
29
|
+
'auth_result',
|
|
30
|
+
// Transport labels
|
|
31
|
+
'transport_type',
|
|
32
|
+
'reason',
|
|
33
|
+
'protocol',
|
|
34
|
+
// Session labels
|
|
35
|
+
'session_type',
|
|
36
|
+
// Error labels
|
|
37
|
+
'category',
|
|
38
|
+
'error_source',
|
|
39
|
+
// Stream labels
|
|
40
|
+
'stream_type',
|
|
41
|
+
// Listener/event labels (OBS-13)
|
|
42
|
+
'event_type',
|
|
43
|
+
]);
|
|
6
44
|
export const DEFAULT_ERROR_LIMIT = 250;
|
|
7
45
|
export const DEFAULT_SPAN_LIMIT = 250;
|
|
8
46
|
const NANOSECONDS_PER_MILLISECOND = 1_000_000;
|
|
@@ -194,7 +232,26 @@ export function extractErrorCandidate(payload) {
|
|
|
194
232
|
export function isErrorEventType(type) {
|
|
195
233
|
return /(^|_)(ERROR|FAILED|FAIL|TERMINAL_FAILURE)(_|$)/.test(type);
|
|
196
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* OBS-22: Filter metric labels against the allowlist to prevent high-cardinality
|
|
237
|
+
* label injection into metrics backends. Non-allowlisted keys are dropped.
|
|
238
|
+
*
|
|
239
|
+
* Note: full event attribute payloads (for telemetry records) are NOT filtered —
|
|
240
|
+
* this is only applied when building metric instrument labels.
|
|
241
|
+
*/
|
|
242
|
+
export function filterMetricLabels(labels) {
|
|
243
|
+
const out = {};
|
|
244
|
+
for (const key of Object.keys(labels)) {
|
|
245
|
+
if (METRIC_LABEL_ALLOWLIST.has(key)) {
|
|
246
|
+
out[key] = labels[key];
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return out;
|
|
250
|
+
}
|
|
197
251
|
export function buildAttributes(domain, envelope, payload) {
|
|
252
|
+
// C-2: merge correlation context so every event emitted from within a
|
|
253
|
+
// correlationCtx.run() scope automatically carries the ambient IDs.
|
|
254
|
+
const ctx = getCorrelationContext();
|
|
198
255
|
return {
|
|
199
256
|
domain,
|
|
200
257
|
eventType: envelope.type,
|
|
@@ -204,6 +261,8 @@ export function buildAttributes(domain, envelope, payload) {
|
|
|
204
261
|
...(envelope.turnId ? { turnId: envelope.turnId } : {}),
|
|
205
262
|
...(envelope.agentId ? { agentId: envelope.agentId } : {}),
|
|
206
263
|
...(envelope.taskId ? { taskId: envelope.taskId } : {}),
|
|
264
|
+
...(ctx.requestId ? { requestId: ctx.requestId } : {}),
|
|
265
|
+
...(ctx.runId ? { runId: ctx.runId } : {}),
|
|
207
266
|
...payload,
|
|
208
267
|
};
|
|
209
268
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/telemetry/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/telemetry/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { VERSION } from '../../version.js';
|
|
2
|
+
import { sseSubscribers, telemetryBufferFill } from '../metrics.js';
|
|
2
3
|
import { normalizeError } from '../../utils/error-display.js';
|
|
3
4
|
import { SpanKind as SpanKinds, SpanStatusCode } from './types.js';
|
|
4
5
|
import { ALL_DOMAINS, appendBounded, buildAttributes, buildListResponse, buildOtlpLogDocumentFromRecords, buildOtlpMetricDocumentFromState, buildOtlpTraceDocumentFromSpans, buildRecordId, buildSpanCursor, buildSpanId, clampLimit, DEFAULT_ERROR_LIMIT, DEFAULT_EVENT_LIMIT, DEFAULT_SPAN_LIMIT, extractErrorCandidate, extractProvider, extractRecordSequence, inferErrorSource, inferSeverity, isErrorEventType, normalizePayload, normalizeTraceId, sanitizeRecord, sanitizeSpan, SERVICE_NAME, summarizePayload, toAttributeValue, toObjectMap, } from './api-helpers.js';
|
|
@@ -173,6 +174,8 @@ export class TelemetryApiService {
|
|
|
173
174
|
const projected = sanitizeRecord(record, view);
|
|
174
175
|
controller.enqueue(encoder.encode(`id: ${projected.id}\nevent: telemetry\ndata: ${JSON.stringify(projected)}\n\n`));
|
|
175
176
|
});
|
|
177
|
+
// C-1: update SSE subscriber gauge on open
|
|
178
|
+
sseSubscribers.set(this.subscribers.size, { stream_type: 'telemetry' });
|
|
176
179
|
const heartbeat = setInterval(() => {
|
|
177
180
|
controller.enqueue(encoder.encode(': heartbeat\n\n'));
|
|
178
181
|
}, 15_000);
|
|
@@ -181,6 +184,8 @@ export class TelemetryApiService {
|
|
|
181
184
|
teardown = () => {
|
|
182
185
|
clearInterval(heartbeat);
|
|
183
186
|
unsub();
|
|
187
|
+
// C-1: update SSE subscriber gauge on close
|
|
188
|
+
sseSubscribers.set(this.subscribers.size, { stream_type: 'telemetry' });
|
|
184
189
|
};
|
|
185
190
|
request.signal.addEventListener('abort', () => {
|
|
186
191
|
teardown();
|
|
@@ -257,6 +262,8 @@ export class TelemetryApiService {
|
|
|
257
262
|
appendBounded(this.errors, record, this.errorLimit);
|
|
258
263
|
this.errorCountsByCategory.set(normalizedError.category, (this.errorCountsByCategory.get(normalizedError.category) ?? 0) + 1);
|
|
259
264
|
}
|
|
265
|
+
// C-1: update telemetry buffer fill gauge
|
|
266
|
+
telemetryBufferFill.set(this.records.length / this.eventLimit);
|
|
260
267
|
this.captureSyntheticSpan(record);
|
|
261
268
|
this.notify(record);
|
|
262
269
|
}
|
|
@@ -436,7 +443,7 @@ export class TelemetryApiService {
|
|
|
436
443
|
return attributes;
|
|
437
444
|
}
|
|
438
445
|
applyRecordFilter(records, filter, view) {
|
|
439
|
-
const filtered =
|
|
446
|
+
const filtered = records.filter((record) => this.recordMatches(record, filter));
|
|
440
447
|
filtered.sort((left, right) => {
|
|
441
448
|
const timestampDelta = right.timestamp - left.timestamp;
|
|
442
449
|
if (timestampDelta !== 0)
|
|
@@ -460,7 +467,7 @@ export class TelemetryApiService {
|
|
|
460
467
|
}
|
|
461
468
|
applySpanFilter(filter, view) {
|
|
462
469
|
const normalizedTraceId = filter.traceId ? normalizeTraceId(filter.traceId) : undefined;
|
|
463
|
-
const filtered =
|
|
470
|
+
const filtered = this.spans.filter((span) => {
|
|
464
471
|
if (filter.since !== undefined && span.startTimeMs < filter.since)
|
|
465
472
|
return false;
|
|
466
473
|
if (filter.until !== undefined && span.endTimeMs > filter.until)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otlp.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/telemetry/exporters/otlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"otlp.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/telemetry/exporters/otlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAoF3D;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,YAAa,YAAW,YAAY;IAC/C,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAEtB;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;gBAEnC,MAAM,EAAE,UAAU;IAyB9B;;;;;;;;OAQG;IACG,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAalD;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAe/B;;;OAGG;YACW,WAAW;IA6BzB;;OAEG;IACH,OAAO,CAAC,eAAe;CAexB"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { DEFAULT_OTLP_CONFIG, DEFAULT_QUEUE_CONFIG } from './types.js';
|
|
2
2
|
import { ExportQueue } from './queue.js';
|
|
3
|
+
import { logger } from '../../../utils/logger.js';
|
|
4
|
+
import { instrumentedFetch } from '../../../utils/fetch-with-timeout.js';
|
|
3
5
|
/**
|
|
4
6
|
* Serialises a ReadableSpan[] into OTLP/HTTP JSON format (simplified).
|
|
5
7
|
*
|
|
@@ -137,7 +139,8 @@ export class OtlpExporter {
|
|
|
137
139
|
}
|
|
138
140
|
}
|
|
139
141
|
catch (err) {
|
|
140
|
-
|
|
142
|
+
// OBS-07: use structured logger, not console
|
|
143
|
+
logger.error('[OtlpExporter] export() error (non-fatal)', { error: err instanceof Error ? err.message : String(err) });
|
|
141
144
|
}
|
|
142
145
|
}
|
|
143
146
|
/**
|
|
@@ -153,7 +156,8 @@ export class OtlpExporter {
|
|
|
153
156
|
await this._queue.drain();
|
|
154
157
|
}
|
|
155
158
|
catch (err) {
|
|
156
|
-
|
|
159
|
+
// OBS-07: use structured logger, not console
|
|
160
|
+
logger.error('[OtlpExporter] flush() error (non-fatal)', { error: err instanceof Error ? err.message : String(err) });
|
|
157
161
|
}
|
|
158
162
|
}
|
|
159
163
|
/**
|
|
@@ -170,7 +174,8 @@ export class OtlpExporter {
|
|
|
170
174
|
await this._queue.shutdown();
|
|
171
175
|
}
|
|
172
176
|
catch (err) {
|
|
173
|
-
|
|
177
|
+
// OBS-07: use structured logger, not console
|
|
178
|
+
logger.error('[OtlpExporter] shutdown() error (non-fatal)', { error: err instanceof Error ? err.message : String(err) });
|
|
174
179
|
}
|
|
175
180
|
}
|
|
176
181
|
// ── Private HTTP transport ────────────────────────────────────────────────
|
|
@@ -183,7 +188,7 @@ export class OtlpExporter {
|
|
|
183
188
|
const timer = setTimeout(() => controller.abort(), this._config.timeoutMs);
|
|
184
189
|
try {
|
|
185
190
|
const body = serialiseSpans(batch);
|
|
186
|
-
const response = await
|
|
191
|
+
const response = await instrumentedFetch(this._config.endpoint, {
|
|
187
192
|
method: 'POST',
|
|
188
193
|
headers: {
|
|
189
194
|
'Content-Type': 'application/json',
|
|
@@ -205,10 +210,18 @@ export class OtlpExporter {
|
|
|
205
210
|
*/
|
|
206
211
|
_onExportResult(result) {
|
|
207
212
|
if (result.code === 'failure') {
|
|
208
|
-
|
|
213
|
+
// OBS-07: use structured logger so OTLP exporter failures appear in activity log
|
|
214
|
+
logger.error('[OtlpExporter] Export failed permanently — spans lost', {
|
|
215
|
+
spanCount: result.spanCount,
|
|
216
|
+
attempts: result.attempts,
|
|
217
|
+
error: result.error,
|
|
218
|
+
});
|
|
209
219
|
}
|
|
210
220
|
else if (result.code === 'dropped') {
|
|
211
|
-
|
|
221
|
+
// OBS-07: use structured logger
|
|
222
|
+
logger.warn('[OtlpExporter] Dropped spans due to queue overflow', {
|
|
223
|
+
spanCount: result.spanCount,
|
|
224
|
+
});
|
|
212
225
|
}
|
|
213
226
|
}
|
|
214
227
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/telemetry/exporters/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EACV,iBAAiB,EAEjB,oBAAoB,EACpB,QAAQ,EAET,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/telemetry/exporters/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EACV,iBAAiB,EAEjB,oBAAoB,EACpB,QAAQ,EAET,MAAM,YAAY,CAAC;AA4BpB;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAuB;IAElD,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,KAAK,CAAK;IAElB,0CAA0C;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,kEAAkE;IAClE,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;OAIG;gBAED,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACnC,QAAQ,CAAC,EAAE,oBAAoB;IAYjC,gDAAgD;IAChD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,+CAA+C;IAC/C,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IA4BpC;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,0DAA0D;IAC1D,OAAO,CAAC,eAAe;IAOvB,4DAA4D;YAC9C,UAAU;IAgBxB,oEAAoE;IACpE,OAAO,CAAC,QAAQ;IAShB;;;OAGG;YACW,aAAa;IA0C3B,2DAA2D;IAC3D,OAAO,CAAC,WAAW;CAQpB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DEFAULT_QUEUE_CONFIG } from './types.js';
|
|
2
2
|
import { summarizeError } from '../../../utils/error-display.js';
|
|
3
|
+
import { logger } from '../../../utils/logger.js';
|
|
3
4
|
/**
|
|
4
5
|
* Computes the delay in milliseconds for a given retry attempt using
|
|
5
6
|
* exponential backoff with jitter (±10%).
|
|
@@ -95,7 +96,8 @@ export class ExportQueue {
|
|
|
95
96
|
completedAt: Date.now(),
|
|
96
97
|
});
|
|
97
98
|
}
|
|
98
|
-
|
|
99
|
+
// OBS-07: structured logger, not console
|
|
100
|
+
logger.warn('[ExportQueue] Queue overflow — dropped oldest batch', { maxSize: this._config.maxSize });
|
|
99
101
|
}
|
|
100
102
|
this._ring[this._tail] = { batch, enqueuedAt: Date.now() };
|
|
101
103
|
this._tail = (this._tail + 1) % this._config.maxSize;
|
|
@@ -183,13 +185,18 @@ export class ExportQueue {
|
|
|
183
185
|
lastError = summarizeError(err);
|
|
184
186
|
if (attempt < maxRetries) {
|
|
185
187
|
const delay = computeDelay(attempt, this._config.retry);
|
|
186
|
-
|
|
188
|
+
// OBS-07: structured logger, not console
|
|
189
|
+
logger.warn('[ExportQueue] Export attempt failed — retrying', { attempt: attempt + 1, delayMs: delay, error: lastError });
|
|
187
190
|
await sleep(delay);
|
|
188
191
|
}
|
|
189
192
|
}
|
|
190
193
|
}
|
|
191
|
-
// All retries exhausted
|
|
192
|
-
|
|
194
|
+
// All retries exhausted — OBS-07: structured logger
|
|
195
|
+
logger.error('[ExportQueue] Export failed after all retries — batch dropped', {
|
|
196
|
+
attempts,
|
|
197
|
+
spanCount: entry.batch.length,
|
|
198
|
+
error: lastError,
|
|
199
|
+
});
|
|
193
200
|
this._emitResult({
|
|
194
201
|
code: 'failure',
|
|
195
202
|
spanCount: entry.batch.length,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meter.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/telemetry/meter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,SAAS,EAET,WAAW,EAEZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"meter.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/telemetry/meter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,SAAS,EAET,WAAW,EAEZ,MAAM,YAAY,CAAC;AA4FpB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;gBAExC,MAAM,EAAE,WAAW;IAI/B,qDAAqD;IACrD,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAS9B;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IASlC;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;CAQ3B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { filterMetricLabels } from './api-helpers.js';
|
|
1
2
|
// ── Label key serialisation ─────────────────────────────────────────────────────
|
|
2
3
|
/**
|
|
3
4
|
* Serialise a label set to a stable, deterministic string key.
|
|
@@ -17,7 +18,8 @@ class CounterImpl {
|
|
|
17
18
|
add(delta = 1, labels) {
|
|
18
19
|
if (delta < 0)
|
|
19
20
|
return; // Counters are monotonically increasing
|
|
20
|
-
const
|
|
21
|
+
const filtered = labels ? filterMetricLabels(labels) : labels;
|
|
22
|
+
const key = labelKey(filtered);
|
|
21
23
|
this._values.set(key, (this._values.get(key) ?? 0) + delta);
|
|
22
24
|
}
|
|
23
25
|
value(labels) {
|
|
@@ -27,7 +29,8 @@ class CounterImpl {
|
|
|
27
29
|
class HistogramImpl {
|
|
28
30
|
_accumulators = new Map();
|
|
29
31
|
record(value, labels) {
|
|
30
|
-
const
|
|
32
|
+
const filtered = labels ? filterMetricLabels(labels) : labels;
|
|
33
|
+
const key = labelKey(filtered);
|
|
31
34
|
const acc = this._accumulators.get(key);
|
|
32
35
|
if (acc === undefined) {
|
|
33
36
|
this._accumulators.set(key, { count: 1, sum: value, min: value, max: value });
|
|
@@ -59,7 +62,8 @@ class HistogramImpl {
|
|
|
59
62
|
class GaugeImpl {
|
|
60
63
|
_values = new Map();
|
|
61
64
|
set(value, labels) {
|
|
62
|
-
|
|
65
|
+
const filtered = labels ? filterMetricLabels(labels) : labels;
|
|
66
|
+
this._values.set(labelKey(filtered), value);
|
|
63
67
|
}
|
|
64
68
|
value(labels) {
|
|
65
69
|
return this._values.get(labelKey(labels)) ?? 0;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configure telemetry redaction behavior. Called once at daemon bootstrap from
|
|
3
|
+
* config.telemetry.includeRawPrompts. When true, a WARN log is emitted so ops
|
|
4
|
+
* can see the opt-in is active.
|
|
5
|
+
*/
|
|
6
|
+
export declare function setTelemetryIncludeRawPrompts(value: boolean): void;
|
|
7
|
+
/** Read the current flag. Reserved for future view='raw' gating. */
|
|
8
|
+
export declare function getTelemetryIncludeRawPrompts(): boolean;
|
|
9
|
+
//# sourceMappingURL=redaction-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction-config.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/telemetry/redaction-config.ts"],"names":[],"mappings":"AAsCA;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAQlE;AAED,oEAAoE;AACpE,wBAAgB,6BAA6B,IAAI,OAAO,CAEvD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OBS-06: Telemetry prompt/response redaction configuration.
|
|
3
|
+
*
|
|
4
|
+
* Privacy model (what actually ships):
|
|
5
|
+
*
|
|
6
|
+
* - Internal RuntimeEventBus carries RAW prompt/response strings. Internal
|
|
7
|
+
* consumers (conversation reducer, channel reply pipeline, stream UI)
|
|
8
|
+
* require raw content to render and advance state.
|
|
9
|
+
*
|
|
10
|
+
* - TelemetryApiService ring buffer stores raw payloads.
|
|
11
|
+
*
|
|
12
|
+
* - Egress boundary: `listEvents({view: 'safe'})` (the default) runs records
|
|
13
|
+
* through `sanitizeRecord` → `redactStructuredData` (see
|
|
14
|
+
* `utils/redaction.ts`). Any string value whose key matches
|
|
15
|
+
* `CONTENT_KEY_PATTERN` (prompt, response, content, accumulated, reasoning,
|
|
16
|
+
* body, text, stdout, stderr, output, input, transcript, command,
|
|
17
|
+
* arguments, query, detail, summary, message) is replaced with
|
|
18
|
+
* `[REDACTED_TEXT length=N]`. Values carrying specific secret shapes
|
|
19
|
+
* (API keys, tokens) are pattern-redacted regardless of key.
|
|
20
|
+
*
|
|
21
|
+
* - `listEvents({view: 'raw'})` skips redaction and is gated at the HTTP
|
|
22
|
+
* boundary on the `admin` or `read:telemetry-sensitive` scope (see
|
|
23
|
+
* daemon/telemetry-routes.ts).
|
|
24
|
+
*
|
|
25
|
+
* This module owns the `telemetry.includeRawPrompts` config flag. The flag
|
|
26
|
+
* is wired at daemon bootstrap by `facade-composition.ts` via
|
|
27
|
+
* `setTelemetryIncludeRawPrompts(configManager.get('telemetry.includeRawPrompts'))`.
|
|
28
|
+
* Opt-in (true) emits a startup WARN so operators can see the configuration.
|
|
29
|
+
*
|
|
30
|
+
* Known gap: `listEvents({view: 'raw'})` does not yet consult the flag — raw
|
|
31
|
+
* view access is gated by scope only. The flag is available for future
|
|
32
|
+
* hardening (e.g. refuse raw view regardless of scope when the flag is off).
|
|
33
|
+
*/
|
|
34
|
+
import { logger } from '../../utils/logger.js';
|
|
35
|
+
/** Module-scoped flag. Wired once at daemon bootstrap. */
|
|
36
|
+
let _includeRawPrompts = false;
|
|
37
|
+
/**
|
|
38
|
+
* Configure telemetry redaction behavior. Called once at daemon bootstrap from
|
|
39
|
+
* config.telemetry.includeRawPrompts. When true, a WARN log is emitted so ops
|
|
40
|
+
* can see the opt-in is active.
|
|
41
|
+
*/
|
|
42
|
+
export function setTelemetryIncludeRawPrompts(value) {
|
|
43
|
+
_includeRawPrompts = value;
|
|
44
|
+
if (value) {
|
|
45
|
+
logger.warn('telemetry.includeRawPrompts is ENABLED — raw prompt/response content will appear in telemetry events. '
|
|
46
|
+
+ 'This setting is for debugging only. Disable in production to avoid PII/secret exfiltration.');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Read the current flag. Reserved for future view='raw' gating. */
|
|
50
|
+
export function getTelemetryIncludeRawPrompts() {
|
|
51
|
+
return _includeRawPrompts;
|
|
52
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/tools/phases/budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/tools/phases/budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAsB,WAAW,EAAsB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE5G;;;;;;;;;;;;;GAaG;AAEH,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,WAAW,CAAC,CA8CtB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { toRecord } from '../../../utils/record-coerce.js';
|
|
1
2
|
export async function budgetPhase(_call, _tool, context, record, checkpoint) {
|
|
2
3
|
const start = performance.now();
|
|
3
4
|
const phaseName = checkpoint === 'entry' ? 'budget-entry' : 'budget-exit';
|
|
@@ -71,7 +72,7 @@ function getTokenCount(record) {
|
|
|
71
72
|
return undefined;
|
|
72
73
|
// Double cast needed: ToolResult has no index signature, but tool implementations
|
|
73
74
|
// may annotate results with extra numeric fields like `tokenCount`.
|
|
74
|
-
const raw = record.result['tokenCount'];
|
|
75
|
+
const raw = toRecord(record.result)['tokenCount'];
|
|
75
76
|
return typeof raw === 'number' ? raw : undefined;
|
|
76
77
|
}
|
|
77
78
|
/**
|
|
@@ -82,6 +83,6 @@ function getCostUsd(record) {
|
|
|
82
83
|
if (!record.result)
|
|
83
84
|
return undefined;
|
|
84
85
|
// Double cast needed: same reason as getTokenCount above.
|
|
85
|
-
const raw = record.result['costUsd'];
|
|
86
|
+
const raw = toRecord(record.result)['costUsd'];
|
|
86
87
|
return typeof raw === 'number' ? raw : undefined;
|
|
87
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-http-client.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/transports/daemon-http-client.ts"],"names":[],"mappings":"AAiDA,OAAO,KAAK,EAoBV,aAAa,EAEb,oBAAoB,EAKrB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"daemon-http-client.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/transports/daemon-http-client.ts"],"names":[],"mappings":"AAiDA,OAAO,KAAK,EAoBV,aAAa,EAEb,oBAAoB,EAKrB,MAAM,iBAAiB,CAAC;AAupBzB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA8ChF"}
|