@artinet/sdk 0.5.17 → 0.6.0-preview.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/README.md +51 -557
- package/dist/browser/browser.d.ts +9 -0
- package/dist/browser/browser.js +10 -0
- package/dist/browser/client/a2a-client.d.ts +127 -0
- package/dist/browser/client/a2a-client.js +233 -0
- package/dist/browser/client/index.d.ts +1 -0
- package/dist/browser/client/index.js +1 -0
- package/dist/browser/config/index.d.ts +158 -0
- package/dist/browser/config/index.js +155 -0
- package/dist/browser/config/observability.d.ts +119 -0
- package/dist/browser/config/observability.js +35 -0
- package/dist/browser/services/a2a/helpers/message-builder.d.ts +17 -0
- package/dist/browser/services/a2a/helpers/message-builder.js +66 -0
- package/dist/browser/transport/rpc/parser.d.ts +15 -0
- package/dist/browser/transport/rpc/parser.js +48 -0
- package/dist/browser/transport/rpc/rpc-client.d.ts +80 -0
- package/dist/browser/transport/rpc/rpc-client.js +189 -0
- package/dist/browser/transport/streaming/event-stream.d.ts +25 -0
- package/dist/browser/transport/streaming/event-stream.js +100 -0
- package/dist/browser/types/a2a/a2a.d.ts +378 -0
- package/dist/browser/types/a2a/a2a.js +14 -0
- package/dist/browser/types/a2a/builder.d.ts +43 -0
- package/dist/browser/types/a2a/index.d.ts +3 -0
- package/dist/browser/types/a2a/index.js +2 -0
- package/dist/{types/interfaces → browser/types}/client.d.ts +25 -27
- package/dist/browser/types/core/core.d.ts +31 -0
- package/dist/browser/types/core/index.d.ts +1 -0
- package/dist/browser/types/core/index.js +1 -0
- package/dist/{types/interfaces/services → browser/types}/index.d.ts +3 -0
- package/dist/{types/interfaces/services → browser/types}/index.js +3 -0
- package/dist/browser/types/mcp/index.d.ts +1 -0
- package/dist/browser/types/mcp/index.js +1 -0
- package/dist/{types/interfaces/services/mcp/service.d.ts → browser/types/mcp/mcp.d.ts} +4 -3
- package/dist/browser/types/mcp/mcp.js +5 -0
- package/dist/browser/types/storage.d.ts +21 -0
- package/dist/browser/types/utils/index.d.ts +1 -0
- package/dist/browser/types/utils/index.js +1 -0
- package/dist/browser/types/utils/transform.d.ts +64 -0
- package/dist/browser/types/utils/transform.js +35 -0
- package/dist/browser/utils/common/constants.d.ts +11 -0
- package/dist/browser/utils/common/constants.js +38 -0
- package/dist/browser/utils/common/errors.d.ts +24 -0
- package/dist/browser/utils/common/errors.js +42 -0
- package/dist/browser/utils/common/utils.d.ts +32 -0
- package/dist/browser/utils/common/utils.js +43 -0
- package/dist/client/a2a-client.d.ts +21 -19
- package/dist/client/a2a-client.js +30 -9
- package/dist/config/default.d.ts +50 -0
- package/dist/config/default.js +62 -0
- package/dist/config/index.d.ts +158 -0
- package/dist/config/index.js +155 -0
- package/dist/config/observability.d.ts +119 -0
- package/dist/config/observability.js +35 -0
- package/dist/extensions/otel.d.ts +98 -0
- package/dist/extensions/otel.js +190 -0
- package/dist/extensions/pino.d.ts +44 -0
- package/dist/extensions/pino.js +107 -0
- package/dist/extensions/winston.d.ts +47 -0
- package/dist/extensions/winston.js +114 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/server/express/errors.js +3 -3
- package/dist/server/express/middeware.d.ts +2 -2
- package/dist/server/express/middeware.js +36 -9
- package/dist/server/express/server.d.ts +9 -55
- package/dist/server/express/server.js +51 -32
- package/dist/services/a2a/execute.d.ts +6 -0
- package/dist/services/a2a/execute.js +25 -0
- package/dist/services/a2a/factory/builder.d.ts +21 -80
- package/dist/services/a2a/factory/builder.js +23 -13
- package/dist/services/a2a/factory/context.d.ts +15 -128
- package/dist/services/a2a/factory/context.js +31 -136
- package/dist/services/a2a/factory/handler.d.ts +6 -0
- package/dist/services/a2a/factory/{method.js → handler.js} +2 -2
- package/dist/services/a2a/factory/index.d.ts +1 -2
- package/dist/services/a2a/factory/index.js +1 -2
- package/dist/services/a2a/factory/service.d.ts +20 -7
- package/dist/services/a2a/factory/service.js +4 -4
- package/dist/services/a2a/factory/state-machine.d.ts +11 -0
- package/dist/services/a2a/factory/state-machine.js +66 -0
- package/dist/services/a2a/{state/update → handlers}/artifact.d.ts +4 -4
- package/dist/services/a2a/handlers/cancel-task.d.ts +11 -0
- package/dist/services/a2a/handlers/cancel-task.js +33 -0
- package/dist/services/a2a/handlers/get-task.d.ts +11 -0
- package/dist/services/a2a/handlers/get-task.js +13 -0
- package/dist/services/a2a/handlers/resubscribe-task.d.ts +11 -0
- package/dist/services/a2a/handlers/resubscribe-task.js +56 -0
- package/dist/services/a2a/handlers/send-message.d.ts +11 -0
- package/dist/services/a2a/handlers/send-message.js +35 -0
- package/dist/services/a2a/handlers/stream-message.d.ts +11 -0
- package/dist/services/a2a/handlers/stream-message.js +19 -0
- package/dist/services/a2a/handlers/update.d.ts +17 -0
- package/dist/services/a2a/handlers/update.js +114 -0
- package/dist/services/a2a/helpers/agentcard-builder.d.ts +9 -5
- package/dist/services/a2a/helpers/agentcard-builder.js +5 -0
- package/dist/services/a2a/helpers/content.d.ts +2 -2
- package/dist/services/a2a/helpers/content.js +4 -0
- package/dist/services/a2a/helpers/history.d.ts +6 -0
- package/dist/services/a2a/helpers/history.js +7 -0
- package/dist/services/a2a/helpers/index.d.ts +3 -1
- package/dist/services/a2a/helpers/index.js +3 -1
- package/dist/services/a2a/helpers/message-builder.d.ts +13 -8
- package/dist/services/a2a/helpers/message-builder.js +5 -0
- package/dist/services/a2a/helpers/part.d.ts +9 -9
- package/dist/services/a2a/helpers/references.d.ts +6 -0
- package/dist/services/a2a/helpers/references.js +22 -0
- package/dist/services/a2a/index.d.ts +9 -5
- package/dist/services/a2a/index.js +8 -5
- package/dist/services/a2a/managers.d.ts +23 -0
- package/dist/services/a2a/managers.js +95 -0
- package/dist/services/a2a/messenger.d.ts +35 -0
- package/dist/services/{core/managers/command.js → a2a/messenger.js} +27 -31
- package/dist/services/a2a/service.d.ts +41 -371
- package/dist/services/a2a/service.js +239 -70
- package/dist/services/a2a/state-machine.d.ts +18 -0
- package/dist/services/a2a/state-machine.js +76 -0
- package/dist/services/a2a/streams.d.ts +22 -0
- package/dist/services/a2a/streams.js +98 -0
- package/dist/services/core/index.d.ts +1 -2
- package/dist/services/core/index.js +1 -2
- package/dist/services/core/manager.d.ts +15 -0
- package/dist/services/core/manager.js +42 -0
- package/dist/services/mcp/service.d.ts +11 -15
- package/dist/services/mcp/service.js +16 -16
- package/dist/transport/index.d.ts +0 -1
- package/dist/transport/index.js +1 -1
- package/dist/transport/rpc/parser.d.ts +2 -2
- package/dist/transport/rpc/parser.js +7 -7
- package/dist/transport/rpc/rpc-client.d.ts +5 -5
- package/dist/transport/rpc/rpc-client.js +7 -7
- package/dist/transport/streaming/event-stream.d.ts +3 -3
- package/dist/transport/streaming/event-stream.js +11 -10
- package/dist/transport/trpc/a2a/factory/router.d.ts +479 -871
- package/dist/transport/trpc/a2a/factory/router.js +2 -2
- package/dist/transport/trpc/a2a/routes/info.d.ts +108 -8
- package/dist/transport/trpc/a2a/routes/info.js +6 -2
- package/dist/transport/trpc/a2a/routes/message/route.d.ts +113 -162
- package/dist/transport/trpc/a2a/routes/message/route.js +7 -13
- package/dist/transport/trpc/a2a/routes/tasks/route.d.ts +114 -212
- package/dist/transport/trpc/a2a/routes/tasks/route.js +16 -19
- package/dist/transport/trpc/a2a/trpc.d.ts +9 -253
- package/dist/types/a2a/a2a.d.ts +378 -0
- package/dist/types/a2a/a2a.js +14 -0
- package/dist/types/a2a/builder.d.ts +43 -0
- package/dist/types/a2a/index.d.ts +3 -0
- package/dist/types/a2a/index.js +2 -0
- package/dist/types/client.d.ts +133 -0
- package/dist/types/core/core.d.ts +31 -0
- package/dist/types/core/core.js +1 -0
- package/dist/types/core/index.d.ts +1 -0
- package/dist/types/core/index.js +1 -0
- package/dist/types/index.d.ts +6 -3
- package/dist/types/index.js +6 -3
- package/dist/types/mcp/index.d.ts +1 -0
- package/dist/types/mcp/index.js +1 -0
- package/dist/types/mcp/mcp.d.ts +50 -0
- package/dist/types/mcp/mcp.js +5 -0
- package/dist/types/protocol.d.ts +33 -0
- package/dist/types/protocol.js +34 -0
- package/dist/types/storage.d.ts +21 -0
- package/dist/utils/common/constants.d.ts +7 -7
- package/dist/utils/common/constants.js +10 -10
- package/dist/utils/common/errors.d.ts +18 -17
- package/dist/utils/common/errors.js +14 -13
- package/dist/utils/common/parse.d.ts +7 -0
- package/dist/utils/common/parse.js +14 -0
- package/dist/utils/common/schema-validation.d.ts +2 -0
- package/dist/utils/common/schema-validation.js +12 -0
- package/dist/utils/common/utils.d.ts +23 -0
- package/dist/utils/common/utils.js +32 -0
- package/dist/utils/common/zAsyncIterable-v3.d.ts +1 -1
- package/dist/utils/common/zAsyncIterable-v3.js +2 -1
- package/dist/utils/index.d.ts +3 -3
- package/dist/utils/index.js +3 -3
- package/dist/utils/storage/file.d.ts +8 -17
- package/dist/utils/storage/file.js +44 -73
- package/package.json +86 -23
- package/dist/services/a2a/factory/event.d.ts +0 -58
- package/dist/services/a2a/factory/event.js +0 -177
- package/dist/services/a2a/factory/method.d.ts +0 -6
- package/dist/services/a2a/managers/cancellation.d.ts +0 -11
- package/dist/services/a2a/managers/cancellation.js +0 -16
- package/dist/services/a2a/managers/connection.d.ts +0 -11
- package/dist/services/a2a/managers/connection.js +0 -16
- package/dist/services/a2a/managers/context.d.ts +0 -11
- package/dist/services/a2a/managers/context.js +0 -16
- package/dist/services/a2a/managers/index.d.ts +0 -5
- package/dist/services/a2a/managers/index.js +0 -5
- package/dist/services/a2a/managers/task.d.ts +0 -11
- package/dist/services/a2a/managers/task.js +0 -16
- package/dist/services/a2a/methods/cancel-task.d.ts +0 -7
- package/dist/services/a2a/methods/cancel-task.js +0 -43
- package/dist/services/a2a/methods/get-task.d.ts +0 -112
- package/dist/services/a2a/methods/get-task.js +0 -14
- package/dist/services/a2a/methods/resubscribe-task.d.ts +0 -7
- package/dist/services/a2a/methods/resubscribe-task.js +0 -80
- package/dist/services/a2a/methods/send-message.d.ts +0 -7
- package/dist/services/a2a/methods/send-message.js +0 -19
- package/dist/services/a2a/methods/stream-message.d.ts +0 -8
- package/dist/services/a2a/methods/stream-message.js +0 -21
- package/dist/services/a2a/state/index.d.ts +0 -3
- package/dist/services/a2a/state/index.js +0 -3
- package/dist/services/a2a/state/load.d.ts +0 -14
- package/dist/services/a2a/state/load.js +0 -71
- package/dist/services/a2a/state/process.d.ts +0 -7
- package/dist/services/a2a/state/process.js +0 -13
- package/dist/services/a2a/state/update/index.d.ts +0 -2
- package/dist/services/a2a/state/update/index.js +0 -2
- package/dist/services/a2a/state/update/update.d.ts +0 -23
- package/dist/services/a2a/state/update/update.js +0 -123
- package/dist/services/core/execution/execute.d.ts +0 -6
- package/dist/services/core/execution/execute.js +0 -25
- package/dist/services/core/execution/index.d.ts +0 -1
- package/dist/services/core/execution/index.js +0 -1
- package/dist/services/core/managers/command.d.ts +0 -39
- package/dist/services/core/managers/event.d.ts +0 -18
- package/dist/services/core/managers/event.js +0 -56
- package/dist/services/core/managers/index.d.ts +0 -3
- package/dist/services/core/managers/index.js +0 -3
- package/dist/services/core/managers/stream.d.ts +0 -20
- package/dist/services/core/managers/stream.js +0 -77
- package/dist/types/ext.d.ts +0 -13
- package/dist/types/ext.js +0 -10
- package/dist/types/interfaces/index.d.ts +0 -3
- package/dist/types/interfaces/index.js +0 -3
- package/dist/types/interfaces/services/a2a/builder.d.ts +0 -37
- package/dist/types/interfaces/services/a2a/context.d.ts +0 -162
- package/dist/types/interfaces/services/a2a/engine.d.ts +0 -7
- package/dist/types/interfaces/services/a2a/index.d.ts +0 -5
- package/dist/types/interfaces/services/a2a/index.js +0 -5
- package/dist/types/interfaces/services/a2a/legacy.d.ts +0 -93
- package/dist/types/interfaces/services/a2a/service.d.ts +0 -409
- package/dist/types/interfaces/services/a2a/service.js +0 -5
- package/dist/types/interfaces/services/core/context/command.d.ts +0 -25
- package/dist/types/interfaces/services/core/context/command.js +0 -5
- package/dist/types/interfaces/services/core/context/context.d.ts +0 -207
- package/dist/types/interfaces/services/core/context/context.js +0 -5
- package/dist/types/interfaces/services/core/context/index.d.ts +0 -3
- package/dist/types/interfaces/services/core/context/index.js +0 -3
- package/dist/types/interfaces/services/core/context/types.d.ts +0 -11
- package/dist/types/interfaces/services/core/context/types.js +0 -5
- package/dist/types/interfaces/services/core/execution/engine.d.ts +0 -106
- package/dist/types/interfaces/services/core/execution/engine.js +0 -5
- package/dist/types/interfaces/services/core/execution/environment.d.ts +0 -11
- package/dist/types/interfaces/services/core/execution/environment.js +0 -5
- package/dist/types/interfaces/services/core/execution/execute.d.ts +0 -7
- package/dist/types/interfaces/services/core/execution/execute.js +0 -5
- package/dist/types/interfaces/services/core/execution/index.d.ts +0 -3
- package/dist/types/interfaces/services/core/execution/index.js +0 -3
- package/dist/types/interfaces/services/core/index.d.ts +0 -4
- package/dist/types/interfaces/services/core/index.js +0 -4
- package/dist/types/interfaces/services/core/managers/cancellation.d.ts +0 -9
- package/dist/types/interfaces/services/core/managers/cancellation.js +0 -5
- package/dist/types/interfaces/services/core/managers/connection.d.ts +0 -9
- package/dist/types/interfaces/services/core/managers/connection.js +0 -5
- package/dist/types/interfaces/services/core/managers/context.d.ts +0 -17
- package/dist/types/interfaces/services/core/managers/context.js +0 -5
- package/dist/types/interfaces/services/core/managers/event.d.ts +0 -328
- package/dist/types/interfaces/services/core/managers/event.js +0 -5
- package/dist/types/interfaces/services/core/managers/index.d.ts +0 -6
- package/dist/types/interfaces/services/core/managers/index.js +0 -6
- package/dist/types/interfaces/services/core/managers/stream.d.ts +0 -217
- package/dist/types/interfaces/services/core/managers/stream.js +0 -5
- package/dist/types/interfaces/services/core/managers/task.d.ts +0 -9
- package/dist/types/interfaces/services/core/service.d.ts +0 -115
- package/dist/types/interfaces/services/core/service.js +0 -5
- package/dist/types/interfaces/services/mcp/index.d.ts +0 -1
- package/dist/types/interfaces/services/mcp/index.js +0 -1
- package/dist/types/interfaces/services/mcp/service.js +0 -5
- package/dist/types/interfaces/storage.d.ts +0 -8
- package/dist/types/schemas/a2a/agent.d.ts +0 -2583
- package/dist/types/schemas/a2a/agent.js +0 -323
- package/dist/types/schemas/a2a/auth.d.ts +0 -908
- package/dist/types/schemas/a2a/auth.js +0 -283
- package/dist/types/schemas/a2a/error.d.ts +0 -396
- package/dist/types/schemas/a2a/error.js +0 -163
- package/dist/types/schemas/a2a/index.d.ts +0 -11
- package/dist/types/schemas/a2a/index.js +0 -11
- package/dist/types/schemas/a2a/kind.d.ts +0 -11
- package/dist/types/schemas/a2a/kind.js +0 -20
- package/dist/types/schemas/a2a/message.d.ts +0 -10343
- package/dist/types/schemas/a2a/message.js +0 -130
- package/dist/types/schemas/a2a/notification.d.ts +0 -1517
- package/dist/types/schemas/a2a/notification.js +0 -203
- package/dist/types/schemas/a2a/parameters.d.ts +0 -956
- package/dist/types/schemas/a2a/parameters.js +0 -241
- package/dist/types/schemas/a2a/protocol.d.ts +0 -14363
- package/dist/types/schemas/a2a/protocol.js +0 -59
- package/dist/types/schemas/a2a/rpc.d.ts +0 -182
- package/dist/types/schemas/a2a/rpc.js +0 -126
- package/dist/types/schemas/a2a/task.d.ts +0 -5886
- package/dist/types/schemas/a2a/task.js +0 -134
- package/dist/types/schemas/a2a/transport.d.ts +0 -31
- package/dist/types/schemas/a2a/transport.js +0 -28
- package/dist/types/schemas/index.d.ts +0 -1
- package/dist/types/schemas/index.js +0 -1
- package/dist/utils/logging/index.d.ts +0 -2
- package/dist/utils/logging/index.js +0 -2
- package/dist/utils/logging/log.d.ts +0 -33
- package/dist/utils/logging/log.js +0 -75
- package/dist/utils/logging/logger.d.ts +0 -18
- package/dist/utils/logging/logger.js +0 -18
- package/dist/utils/storage/memory.d.ts +0 -25
- package/dist/utils/storage/memory.js +0 -47
- /package/dist/{types/interfaces/services → browser/types}/a2a/builder.js +0 -0
- /package/dist/{types/interfaces → browser/types}/client.js +0 -0
- /package/dist/{types/interfaces/services/core/managers/task.js → browser/types/core/core.js} +0 -0
- /package/dist/{types/interfaces/services → browser/types}/protocol.d.ts +0 -0
- /package/dist/{types/interfaces/services → browser/types}/protocol.js +0 -0
- /package/dist/{types/interfaces → browser/types}/storage.js +0 -0
- /package/dist/services/a2a/{state/update → handlers}/artifact.js +0 -0
- /package/dist/services/a2a/{methods → handlers}/index.d.ts +0 -0
- /package/dist/services/a2a/{methods → handlers}/index.js +0 -0
- /package/dist/types/{interfaces/services/a2a/context.js → a2a/builder.js} +0 -0
- /package/dist/types/{interfaces/services/a2a/engine.js → client.js} +0 -0
- /package/dist/types/{interfaces/services/a2a/legacy.js → storage.js} +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Default configuration for the Artinet runtime.
|
|
3
|
+
*
|
|
4
|
+
* Provides sensible defaults using built-in console for logging.
|
|
5
|
+
* Import and call `applyDefaults()` at application startup if you
|
|
6
|
+
* want logging enabled without custom configuration.
|
|
7
|
+
*
|
|
8
|
+
* @module config/default
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { applyDefaults } from '@artinet/core';
|
|
13
|
+
*
|
|
14
|
+
* // Enable console logging with defaults
|
|
15
|
+
* applyDefaults();
|
|
16
|
+
*
|
|
17
|
+
* // Or override specific options
|
|
18
|
+
* applyDefaults({ logger: myCustomLogger });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { ArtinetConfig } from "./index.js";
|
|
22
|
+
import { ILogger } from "./observability.js";
|
|
23
|
+
/**
|
|
24
|
+
* Default logger implementation using console.
|
|
25
|
+
*
|
|
26
|
+
* Maps directly to console methods for zero-config logging.
|
|
27
|
+
*/
|
|
28
|
+
export declare const consoleLogger: ILogger;
|
|
29
|
+
/**
|
|
30
|
+
* Default configuration with console logging enabled.
|
|
31
|
+
*/
|
|
32
|
+
export declare const defaultConfig: ArtinetConfig;
|
|
33
|
+
/**
|
|
34
|
+
* Apply default configuration.
|
|
35
|
+
*
|
|
36
|
+
* Call this at application startup to enable console logging.
|
|
37
|
+
* Optionally pass overrides to customize specific options.
|
|
38
|
+
*
|
|
39
|
+
* @param overrides - Optional configuration to merge with defaults
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // Use all defaults
|
|
44
|
+
* applyDefaults();
|
|
45
|
+
*
|
|
46
|
+
* // Use defaults but with custom tracer
|
|
47
|
+
* applyDefaults({ tracer: myTracer });
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function applyDefaults(overrides?: Partial<ArtinetConfig>): void;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Default configuration for the Artinet runtime.
|
|
3
|
+
*
|
|
4
|
+
* Provides sensible defaults using built-in console for logging.
|
|
5
|
+
* Import and call `applyDefaults()` at application startup if you
|
|
6
|
+
* want logging enabled without custom configuration.
|
|
7
|
+
*
|
|
8
|
+
* @module config/default
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { applyDefaults } from '@artinet/core';
|
|
13
|
+
*
|
|
14
|
+
* // Enable console logging with defaults
|
|
15
|
+
* applyDefaults();
|
|
16
|
+
*
|
|
17
|
+
* // Or override specific options
|
|
18
|
+
* applyDefaults({ logger: myCustomLogger });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { configure } from "./index.js";
|
|
22
|
+
/**
|
|
23
|
+
* Default logger implementation using console.
|
|
24
|
+
*
|
|
25
|
+
* Maps directly to console methods for zero-config logging.
|
|
26
|
+
*/
|
|
27
|
+
export const consoleLogger = {
|
|
28
|
+
debug: (msg, ...args) => console.debug(`[DEBUG] ${msg}`, ...args),
|
|
29
|
+
info: (msg, ...args) => console.info(`[INFO] ${msg}`, ...args),
|
|
30
|
+
warn: (msg, ...args) => console.warn(`[WARN] ${msg}`, ...args),
|
|
31
|
+
error: (msg, err) => console.error(`[ERROR] ${msg}`, err),
|
|
32
|
+
child: (_) => consoleLogger,
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Default configuration with console logging enabled.
|
|
36
|
+
*/
|
|
37
|
+
export const defaultConfig = {
|
|
38
|
+
logger: consoleLogger,
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Apply default configuration.
|
|
42
|
+
*
|
|
43
|
+
* Call this at application startup to enable console logging.
|
|
44
|
+
* Optionally pass overrides to customize specific options.
|
|
45
|
+
*
|
|
46
|
+
* @param overrides - Optional configuration to merge with defaults
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* // Use all defaults
|
|
51
|
+
* applyDefaults();
|
|
52
|
+
*
|
|
53
|
+
* // Use defaults but with custom tracer
|
|
54
|
+
* applyDefaults({ tracer: myTracer });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export function applyDefaults(overrides) {
|
|
58
|
+
configure({
|
|
59
|
+
...defaultConfig,
|
|
60
|
+
...overrides,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Global configuration for the Artinet runtime.
|
|
3
|
+
*
|
|
4
|
+
* Provides a centralized configuration interface that consumers use to
|
|
5
|
+
* inject their implementations of observability, storage, and other
|
|
6
|
+
* platform-specific dependencies.
|
|
7
|
+
*
|
|
8
|
+
* Design principles:
|
|
9
|
+
* - Single configuration point for the entire SDK
|
|
10
|
+
* - No-op defaults for all optional dependencies
|
|
11
|
+
* - Type-safe configuration interface
|
|
12
|
+
* - Configure once at application startup
|
|
13
|
+
*
|
|
14
|
+
* @module config
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { configure, getLogger, getTracer } from '@artinet/core';
|
|
19
|
+
* import pino from 'pino';
|
|
20
|
+
*
|
|
21
|
+
* // Configure at app startup
|
|
22
|
+
* configure({
|
|
23
|
+
* logger: {
|
|
24
|
+
* debug: (msg, ctx) => pino().debug(ctx, msg),
|
|
25
|
+
* info: (msg, ctx) => pino().info(ctx, msg),
|
|
26
|
+
* warn: (msg, ctx) => pino().warn(ctx, msg),
|
|
27
|
+
* error: (msg, ctx) => pino().error(ctx, msg),
|
|
28
|
+
* },
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // Later in your code
|
|
32
|
+
* const logger = getLogger();
|
|
33
|
+
* logger.info('Application started');
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
import { ILogger } from "./observability.js";
|
|
37
|
+
import { Tracer } from "@opentelemetry/api";
|
|
38
|
+
/**
|
|
39
|
+
* Artinet SDK configuration interface.
|
|
40
|
+
*
|
|
41
|
+
* All properties are optional - the SDK provides sensible no-op defaults.
|
|
42
|
+
* Configure only what you need.
|
|
43
|
+
*/
|
|
44
|
+
export interface ArtinetConfig {
|
|
45
|
+
/**
|
|
46
|
+
* Logger implementation for structured logging.
|
|
47
|
+
* @default noopLogger (no logging)
|
|
48
|
+
*/
|
|
49
|
+
logger?: ILogger;
|
|
50
|
+
/**
|
|
51
|
+
* Tracer implementation for distributed tracing.
|
|
52
|
+
* @default trace.getTracer('artinet') (no tracing)
|
|
53
|
+
*/
|
|
54
|
+
tracer?: Tracer;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Configure the Artinet SDK.
|
|
58
|
+
*
|
|
59
|
+
* Call this once at application startup to inject your implementations.
|
|
60
|
+
* Subsequent calls will merge with existing configuration.
|
|
61
|
+
*
|
|
62
|
+
* @param config - Configuration options
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* // Basic configuration with console
|
|
67
|
+
* configure({ logger: console });
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* // Production configuration with Pino and OpenTelemetry
|
|
73
|
+
* import pino from 'pino';
|
|
74
|
+
* import { trace } from '@opentelemetry/api';
|
|
75
|
+
*
|
|
76
|
+
* const pinoLogger = pino();
|
|
77
|
+
*
|
|
78
|
+
* configure({
|
|
79
|
+
* logger: {
|
|
80
|
+
* debug: (msg, ...args) => pinoLogger.debug(Object.assign({}, ...args), msg),
|
|
81
|
+
* info: (msg, ...args) => pinoLogger.info(Object.assign({}, ...args), msg),
|
|
82
|
+
* warn: (msg, ...args) => pinoLogger.warn(Object.assign({}, ...args), msg),
|
|
83
|
+
* error: (msg, ...args) => pinoLogger.error(Object.assign({}, ...args), msg),
|
|
84
|
+
* },
|
|
85
|
+
* tracer: {
|
|
86
|
+
* startSpan: (name, attrs) => {
|
|
87
|
+
* const span = trace.getTracer('my-app').startSpan(name);
|
|
88
|
+
* // ... wrap span
|
|
89
|
+
* return wrappedSpan;
|
|
90
|
+
* },
|
|
91
|
+
* },
|
|
92
|
+
* });
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export declare function configure(config: ArtinetConfig): void;
|
|
96
|
+
/**
|
|
97
|
+
* Reset configuration to defaults.
|
|
98
|
+
*
|
|
99
|
+
* Primarily useful for testing to ensure clean state between tests.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* beforeEach(() => {
|
|
104
|
+
* resetConfig();
|
|
105
|
+
* });
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
export declare function resetConfig(): void;
|
|
109
|
+
/**
|
|
110
|
+
* Get the current configuration.
|
|
111
|
+
*
|
|
112
|
+
* Returns a copy to prevent external mutation.
|
|
113
|
+
*
|
|
114
|
+
* @returns Current configuration (readonly copy)
|
|
115
|
+
*/
|
|
116
|
+
export declare function getConfig(): Readonly<ArtinetConfig>;
|
|
117
|
+
/**
|
|
118
|
+
* Get the configured logger or no-op default.
|
|
119
|
+
*
|
|
120
|
+
* @returns Logger implementation
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* const logger = getLogger();
|
|
125
|
+
* logger.info('Processing request', { requestId: '123' }, 'extra data');
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
export declare function getLogger(): ILogger;
|
|
129
|
+
/**
|
|
130
|
+
* Get the configured tracer or no-op default.
|
|
131
|
+
*
|
|
132
|
+
* @returns Tracer implementation
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* const tracer = getTracer();
|
|
137
|
+
* const span = tracer.startSpan('processRequest', { requestId: '123' });
|
|
138
|
+
* try {
|
|
139
|
+
* // ... do work
|
|
140
|
+
* span.setStatus('ok');
|
|
141
|
+
* } catch (error) {
|
|
142
|
+
* span.setStatus('error', error.message);
|
|
143
|
+
* throw error;
|
|
144
|
+
* } finally {
|
|
145
|
+
* span.end();
|
|
146
|
+
* }
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
export declare function getTracer(): Tracer;
|
|
150
|
+
export declare const logger: {
|
|
151
|
+
debug: (msg: string, ...args: unknown[]) => void;
|
|
152
|
+
info: (msg: string, ...args: unknown[]) => void;
|
|
153
|
+
warn: (msg: string, ...args: unknown[]) => void;
|
|
154
|
+
error: (msg: string, err: unknown) => void;
|
|
155
|
+
setLevel: (level: "debug" | "info" | "warn" | "error") => void | undefined;
|
|
156
|
+
getLevel: () => "silent" | "error" | "debug" | "info" | "trace" | "verbose" | "warn";
|
|
157
|
+
child: (context: Record<string, unknown>) => ILogger;
|
|
158
|
+
};
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Global configuration for the Artinet runtime.
|
|
3
|
+
*
|
|
4
|
+
* Provides a centralized configuration interface that consumers use to
|
|
5
|
+
* inject their implementations of observability, storage, and other
|
|
6
|
+
* platform-specific dependencies.
|
|
7
|
+
*
|
|
8
|
+
* Design principles:
|
|
9
|
+
* - Single configuration point for the entire SDK
|
|
10
|
+
* - No-op defaults for all optional dependencies
|
|
11
|
+
* - Type-safe configuration interface
|
|
12
|
+
* - Configure once at application startup
|
|
13
|
+
*
|
|
14
|
+
* @module config
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { configure, getLogger, getTracer } from '@artinet/core';
|
|
19
|
+
* import pino from 'pino';
|
|
20
|
+
*
|
|
21
|
+
* // Configure at app startup
|
|
22
|
+
* configure({
|
|
23
|
+
* logger: {
|
|
24
|
+
* debug: (msg, ctx) => pino().debug(ctx, msg),
|
|
25
|
+
* info: (msg, ctx) => pino().info(ctx, msg),
|
|
26
|
+
* warn: (msg, ctx) => pino().warn(ctx, msg),
|
|
27
|
+
* error: (msg, ctx) => pino().error(ctx, msg),
|
|
28
|
+
* },
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // Later in your code
|
|
32
|
+
* const logger = getLogger();
|
|
33
|
+
* logger.info('Application started');
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
import { noopLogger } from "./observability.js";
|
|
37
|
+
import { trace } from "@opentelemetry/api";
|
|
38
|
+
/**
|
|
39
|
+
* Internal configuration state.
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
let _config = {};
|
|
43
|
+
/**
|
|
44
|
+
* Configure the Artinet SDK.
|
|
45
|
+
*
|
|
46
|
+
* Call this once at application startup to inject your implementations.
|
|
47
|
+
* Subsequent calls will merge with existing configuration.
|
|
48
|
+
*
|
|
49
|
+
* @param config - Configuration options
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // Basic configuration with console
|
|
54
|
+
* configure({ logger: console });
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* // Production configuration with Pino and OpenTelemetry
|
|
60
|
+
* import pino from 'pino';
|
|
61
|
+
* import { trace } from '@opentelemetry/api';
|
|
62
|
+
*
|
|
63
|
+
* const pinoLogger = pino();
|
|
64
|
+
*
|
|
65
|
+
* configure({
|
|
66
|
+
* logger: {
|
|
67
|
+
* debug: (msg, ...args) => pinoLogger.debug(Object.assign({}, ...args), msg),
|
|
68
|
+
* info: (msg, ...args) => pinoLogger.info(Object.assign({}, ...args), msg),
|
|
69
|
+
* warn: (msg, ...args) => pinoLogger.warn(Object.assign({}, ...args), msg),
|
|
70
|
+
* error: (msg, ...args) => pinoLogger.error(Object.assign({}, ...args), msg),
|
|
71
|
+
* },
|
|
72
|
+
* tracer: {
|
|
73
|
+
* startSpan: (name, attrs) => {
|
|
74
|
+
* const span = trace.getTracer('my-app').startSpan(name);
|
|
75
|
+
* // ... wrap span
|
|
76
|
+
* return wrappedSpan;
|
|
77
|
+
* },
|
|
78
|
+
* },
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export function configure(config) {
|
|
83
|
+
_config = { ..._config, ...config };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Reset configuration to defaults.
|
|
87
|
+
*
|
|
88
|
+
* Primarily useful for testing to ensure clean state between tests.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* beforeEach(() => {
|
|
93
|
+
* resetConfig();
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export function resetConfig() {
|
|
98
|
+
_config = {};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get the current configuration.
|
|
102
|
+
*
|
|
103
|
+
* Returns a copy to prevent external mutation.
|
|
104
|
+
*
|
|
105
|
+
* @returns Current configuration (readonly copy)
|
|
106
|
+
*/
|
|
107
|
+
export function getConfig() {
|
|
108
|
+
return { ..._config };
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get the configured logger or no-op default.
|
|
112
|
+
*
|
|
113
|
+
* @returns Logger implementation
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const logger = getLogger();
|
|
118
|
+
* logger.info('Processing request', { requestId: '123' }, 'extra data');
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export function getLogger() {
|
|
122
|
+
return _config.logger ?? noopLogger;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get the configured tracer or no-op default.
|
|
126
|
+
*
|
|
127
|
+
* @returns Tracer implementation
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```typescript
|
|
131
|
+
* const tracer = getTracer();
|
|
132
|
+
* const span = tracer.startSpan('processRequest', { requestId: '123' });
|
|
133
|
+
* try {
|
|
134
|
+
* // ... do work
|
|
135
|
+
* span.setStatus('ok');
|
|
136
|
+
* } catch (error) {
|
|
137
|
+
* span.setStatus('error', error.message);
|
|
138
|
+
* throw error;
|
|
139
|
+
* } finally {
|
|
140
|
+
* span.end();
|
|
141
|
+
* }
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export function getTracer() {
|
|
145
|
+
return _config.tracer ?? trace.getTracer("artinet");
|
|
146
|
+
}
|
|
147
|
+
export const logger = {
|
|
148
|
+
debug: (msg, ...args) => getLogger()?.debug?.(msg, ...args),
|
|
149
|
+
info: (msg, ...args) => getLogger()?.info?.(msg, ...args),
|
|
150
|
+
warn: (msg, ...args) => getLogger()?.warn?.(msg, ...args),
|
|
151
|
+
error: (msg, err) => getLogger()?.error?.(msg, err),
|
|
152
|
+
setLevel: (level) => getLogger()?.setLevel?.(level),
|
|
153
|
+
getLevel: () => getLogger()?.getLevel?.() ?? "info",
|
|
154
|
+
child: (context) => getLogger()?.child?.(context) ?? noopLogger,
|
|
155
|
+
};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2025 The Artinet Project
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
/** //todo move to @artinet/sdk from core v0.1
|
|
6
|
+
* @fileoverview Zero-dependency observability interfaces for the Artinet ecosystem.
|
|
7
|
+
*
|
|
8
|
+
* Provides minimal interfaces for logging and tracing that consumers can implement
|
|
9
|
+
* with their preferred tools (Pino, Winston, OpenTelemetry, etc.).
|
|
10
|
+
*
|
|
11
|
+
* Design principles:
|
|
12
|
+
* - Zero runtime dependencies
|
|
13
|
+
* - No-op defaults for zero overhead when not configured
|
|
14
|
+
* - Environment agnostic (Node, Deno, Bun, edge, browser)
|
|
15
|
+
* - Consumer brings their own implementation
|
|
16
|
+
*
|
|
17
|
+
* @module utils/observability
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Minimal logger interface.
|
|
21
|
+
*
|
|
22
|
+
* Consumers provide their own implementation using their preferred
|
|
23
|
+
* logging library (Pino, Winston, console, etc.).
|
|
24
|
+
*
|
|
25
|
+
* Uses spread args for maximum compatibility - works naturally with
|
|
26
|
+
* console.log, Pino, Winston, and most logging libraries.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* // Console implementation (just works)
|
|
31
|
+
* const logger: ILogger = console;
|
|
32
|
+
*
|
|
33
|
+
* // Pino implementation
|
|
34
|
+
* import pino from 'pino';
|
|
35
|
+
* const pinoLogger = pino();
|
|
36
|
+
*
|
|
37
|
+
* const logger: ILogger = {
|
|
38
|
+
* debug: (msg, ...args) => pinoLogger.debug(Object.assign({}, ...args), msg),
|
|
39
|
+
* info: (msg, ...args) => pinoLogger.info(Object.assign({}, ...args), msg),
|
|
40
|
+
* warn: (msg, ...args) => pinoLogger.warn(Object.assign({}, ...args), msg),
|
|
41
|
+
* error: (msg, ...args) => pinoLogger.error(Object.assign({}, ...args), msg),
|
|
42
|
+
* };
|
|
43
|
+
*
|
|
44
|
+
* // Winston implementation
|
|
45
|
+
* import winston from 'winston';
|
|
46
|
+
* const winstonLogger = winston.createLogger({ ... });
|
|
47
|
+
*
|
|
48
|
+
* const logger: ILogger = {
|
|
49
|
+
* debug: (msg, ...args) => winstonLogger.debug(msg, ...args),
|
|
50
|
+
* info: (msg, ...args) => winstonLogger.info(msg, ...args),
|
|
51
|
+
* warn: (msg, ...args) => winstonLogger.warn(msg, ...args),
|
|
52
|
+
* error: (msg, ...args) => winstonLogger.error(msg, ...args),
|
|
53
|
+
* };
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export interface ILogger {
|
|
57
|
+
/**
|
|
58
|
+
* Log level.
|
|
59
|
+
* @default "info"
|
|
60
|
+
*/
|
|
61
|
+
level?: "trace" | "verbose" | "debug" | "info" | "warn" | "error" | "silent";
|
|
62
|
+
/**
|
|
63
|
+
* Log debug-level message.
|
|
64
|
+
* @param msg - Log message
|
|
65
|
+
* @param args - Optional additional arguments (context, data, etc.)
|
|
66
|
+
*/
|
|
67
|
+
debug(msg: string, ...args: unknown[]): void;
|
|
68
|
+
/**
|
|
69
|
+
* Log info-level message.
|
|
70
|
+
* @param msg - Log message
|
|
71
|
+
* @param args - Optional additional arguments (context, data, etc.)
|
|
72
|
+
*/
|
|
73
|
+
info(msg: string, ...args: unknown[]): void;
|
|
74
|
+
/**
|
|
75
|
+
* Log warn-level message.
|
|
76
|
+
* @param msg - Log message
|
|
77
|
+
* @param args - Optional additional arguments (context, data, etc.)
|
|
78
|
+
*/
|
|
79
|
+
warn(msg: string, ...args: unknown[]): void;
|
|
80
|
+
/**
|
|
81
|
+
* Log error-level message.
|
|
82
|
+
* @param msg - Log message
|
|
83
|
+
* @param err - Error to log
|
|
84
|
+
*/
|
|
85
|
+
error(msg: string, err: unknown): void;
|
|
86
|
+
/**
|
|
87
|
+
* Set log level.
|
|
88
|
+
* @param level - Log level
|
|
89
|
+
*/
|
|
90
|
+
setLevel?(level: "trace" | "verbose" | "debug" | "info" | "warn" | "error" | "silent"): void;
|
|
91
|
+
/**
|
|
92
|
+
* Get log level.
|
|
93
|
+
* @returns Current log level or undefined if not set
|
|
94
|
+
*/
|
|
95
|
+
getLevel?(): "trace" | "verbose" | "debug" | "info" | "warn" | "error" | "silent";
|
|
96
|
+
/**
|
|
97
|
+
* Create child logger with bound context.
|
|
98
|
+
* @param context - Context to bind to the child logger
|
|
99
|
+
* @returns Child logger or undefined if not implemented
|
|
100
|
+
*/
|
|
101
|
+
child?(context: Record<string, unknown>): ILogger;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Format error for logging.
|
|
105
|
+
* @param err - Error to format
|
|
106
|
+
* @returns Formatted error
|
|
107
|
+
*/
|
|
108
|
+
export declare function formatError(err: unknown): Record<string, unknown>;
|
|
109
|
+
/**
|
|
110
|
+
* No-op logger implementation.
|
|
111
|
+
* Used when no logger is configured - zero overhead.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* const logger = config.logger ?? noopLogger;
|
|
116
|
+
* logger.info('This does nothing if no logger configured');
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export declare const noopLogger: ILogger;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2025 The Artinet Project
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Format error for logging.
|
|
7
|
+
* @param err - Error to format
|
|
8
|
+
* @returns Formatted error
|
|
9
|
+
*/
|
|
10
|
+
export function formatError(err) {
|
|
11
|
+
if (err instanceof Error) {
|
|
12
|
+
return {
|
|
13
|
+
message: err.message,
|
|
14
|
+
stack: err.stack,
|
|
15
|
+
name: err.name,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
return { error: String(err) };
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* No-op logger implementation.
|
|
22
|
+
* Used when no logger is configured - zero overhead.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const logger = config.logger ?? noopLogger;
|
|
27
|
+
* logger.info('This does nothing if no logger configured');
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export const noopLogger = {
|
|
31
|
+
debug: () => { },
|
|
32
|
+
info: () => { },
|
|
33
|
+
warn: () => { },
|
|
34
|
+
error: () => { },
|
|
35
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview OpenTelemetry integration for Artinet SDK.
|
|
3
|
+
*
|
|
4
|
+
* Lightweight utilities for integrating user-configured OpenTelemetry
|
|
5
|
+
* with the SDK's tracing and logging interfaces.
|
|
6
|
+
*
|
|
7
|
+
* @module @artinet/sdk/otel
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { trace } from '@opentelemetry/api';
|
|
12
|
+
* import { configure } from '@artinet/sdk';
|
|
13
|
+
* import { configureOtel, withSpan } from '@artinet/sdk/otel';
|
|
14
|
+
*
|
|
15
|
+
* // User initializes their own OpenTelemetry setup
|
|
16
|
+
* // ... NodeSDK setup, exporters, etc. ...
|
|
17
|
+
*
|
|
18
|
+
* // Get tracer and configure SDK
|
|
19
|
+
* const tracer = trace.getTracer('my-agent');
|
|
20
|
+
* configure({
|
|
21
|
+
* tracer,
|
|
22
|
+
* logger: configureOtel({ level: 'debug' })
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import { trace, context, SpanKind, SpanStatusCode, Tracer, Span, Context } from "@opentelemetry/api";
|
|
27
|
+
import type { ILogger } from "../config/observability.js";
|
|
28
|
+
/**
|
|
29
|
+
* Options for configuring the OTel-aware logger.
|
|
30
|
+
*/
|
|
31
|
+
export interface OtelLoggerOptions {
|
|
32
|
+
/**
|
|
33
|
+
* Base logger to wrap (logs go here AND to spans).
|
|
34
|
+
* If not provided, logs only go to spans.
|
|
35
|
+
*/
|
|
36
|
+
baseLogger?: ILogger;
|
|
37
|
+
/**
|
|
38
|
+
* Log level.
|
|
39
|
+
* @default 'info'
|
|
40
|
+
*/
|
|
41
|
+
level?: "trace" | "verbose" | "debug" | "info" | "warn" | "error" | "silent";
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create a logger that adds log events to the current span.
|
|
45
|
+
*
|
|
46
|
+
* This logger optionally wraps a base logger and adds all log messages
|
|
47
|
+
* as span events in the current trace context.
|
|
48
|
+
*
|
|
49
|
+
* @param options - Logger options
|
|
50
|
+
* @returns ILogger implementation
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* import { configure } from '@artinet/sdk';
|
|
55
|
+
* import { configureOtel } from '@artinet/sdk/otel';
|
|
56
|
+
* import { configurePino } from '@artinet/sdk/pino';
|
|
57
|
+
* import pino from 'pino';
|
|
58
|
+
*
|
|
59
|
+
* // Logs go to both Pino AND span events
|
|
60
|
+
* configure({
|
|
61
|
+
* logger: configureOtel({
|
|
62
|
+
* baseLogger: configurePino(pino()),
|
|
63
|
+
* level: 'debug'
|
|
64
|
+
* })
|
|
65
|
+
* });
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function configureOtel(options?: OtelLoggerOptions): ILogger;
|
|
69
|
+
/**
|
|
70
|
+
* Execute a function within a new span.
|
|
71
|
+
*
|
|
72
|
+
* @param tracer - User's tracer instance
|
|
73
|
+
* @param name - Span name
|
|
74
|
+
* @param fn - Function to execute
|
|
75
|
+
* @param options - Optional span options
|
|
76
|
+
* @returns Result of the function
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* import { trace } from '@opentelemetry/api';
|
|
81
|
+
* import { withSpan } from '@artinet/sdk/otel';
|
|
82
|
+
*
|
|
83
|
+
* const tracer = trace.getTracer('my-agent');
|
|
84
|
+
* const result = await withSpan(tracer, 'processTask', async (span) => {
|
|
85
|
+
* span.setAttribute('taskId', '123');
|
|
86
|
+
* return await doWork();
|
|
87
|
+
* });
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export declare function withSpan<T>(tracer: Tracer, name: string, fn: (span: Span) => Promise<T>, options?: {
|
|
91
|
+
kind?: SpanKind;
|
|
92
|
+
attributes?: Record<string, string | number | boolean>;
|
|
93
|
+
}): Promise<T>;
|
|
94
|
+
/**
|
|
95
|
+
* Re-export OpenTelemetry API types for convenience.
|
|
96
|
+
*/
|
|
97
|
+
export { trace, context, SpanKind, SpanStatusCode, type Tracer, type Span, type Context, };
|
|
98
|
+
export default configureOtel;
|