@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.
Files changed (316) hide show
  1. package/README.md +51 -557
  2. package/dist/browser/browser.d.ts +9 -0
  3. package/dist/browser/browser.js +10 -0
  4. package/dist/browser/client/a2a-client.d.ts +127 -0
  5. package/dist/browser/client/a2a-client.js +233 -0
  6. package/dist/browser/client/index.d.ts +1 -0
  7. package/dist/browser/client/index.js +1 -0
  8. package/dist/browser/config/index.d.ts +158 -0
  9. package/dist/browser/config/index.js +155 -0
  10. package/dist/browser/config/observability.d.ts +119 -0
  11. package/dist/browser/config/observability.js +35 -0
  12. package/dist/browser/services/a2a/helpers/message-builder.d.ts +17 -0
  13. package/dist/browser/services/a2a/helpers/message-builder.js +66 -0
  14. package/dist/browser/transport/rpc/parser.d.ts +15 -0
  15. package/dist/browser/transport/rpc/parser.js +48 -0
  16. package/dist/browser/transport/rpc/rpc-client.d.ts +80 -0
  17. package/dist/browser/transport/rpc/rpc-client.js +189 -0
  18. package/dist/browser/transport/streaming/event-stream.d.ts +25 -0
  19. package/dist/browser/transport/streaming/event-stream.js +100 -0
  20. package/dist/browser/types/a2a/a2a.d.ts +378 -0
  21. package/dist/browser/types/a2a/a2a.js +14 -0
  22. package/dist/browser/types/a2a/builder.d.ts +43 -0
  23. package/dist/browser/types/a2a/index.d.ts +3 -0
  24. package/dist/browser/types/a2a/index.js +2 -0
  25. package/dist/{types/interfaces → browser/types}/client.d.ts +25 -27
  26. package/dist/browser/types/core/core.d.ts +31 -0
  27. package/dist/browser/types/core/index.d.ts +1 -0
  28. package/dist/browser/types/core/index.js +1 -0
  29. package/dist/{types/interfaces/services → browser/types}/index.d.ts +3 -0
  30. package/dist/{types/interfaces/services → browser/types}/index.js +3 -0
  31. package/dist/browser/types/mcp/index.d.ts +1 -0
  32. package/dist/browser/types/mcp/index.js +1 -0
  33. package/dist/{types/interfaces/services/mcp/service.d.ts → browser/types/mcp/mcp.d.ts} +4 -3
  34. package/dist/browser/types/mcp/mcp.js +5 -0
  35. package/dist/browser/types/storage.d.ts +21 -0
  36. package/dist/browser/types/utils/index.d.ts +1 -0
  37. package/dist/browser/types/utils/index.js +1 -0
  38. package/dist/browser/types/utils/transform.d.ts +64 -0
  39. package/dist/browser/types/utils/transform.js +35 -0
  40. package/dist/browser/utils/common/constants.d.ts +11 -0
  41. package/dist/browser/utils/common/constants.js +38 -0
  42. package/dist/browser/utils/common/errors.d.ts +24 -0
  43. package/dist/browser/utils/common/errors.js +42 -0
  44. package/dist/browser/utils/common/utils.d.ts +32 -0
  45. package/dist/browser/utils/common/utils.js +43 -0
  46. package/dist/client/a2a-client.d.ts +21 -19
  47. package/dist/client/a2a-client.js +30 -9
  48. package/dist/config/default.d.ts +50 -0
  49. package/dist/config/default.js +62 -0
  50. package/dist/config/index.d.ts +158 -0
  51. package/dist/config/index.js +155 -0
  52. package/dist/config/observability.d.ts +119 -0
  53. package/dist/config/observability.js +35 -0
  54. package/dist/extensions/otel.d.ts +98 -0
  55. package/dist/extensions/otel.js +190 -0
  56. package/dist/extensions/pino.d.ts +44 -0
  57. package/dist/extensions/pino.js +107 -0
  58. package/dist/extensions/winston.d.ts +47 -0
  59. package/dist/extensions/winston.js +114 -0
  60. package/dist/index.d.ts +2 -0
  61. package/dist/index.js +2 -0
  62. package/dist/server/express/errors.js +3 -3
  63. package/dist/server/express/middeware.d.ts +2 -2
  64. package/dist/server/express/middeware.js +36 -9
  65. package/dist/server/express/server.d.ts +9 -55
  66. package/dist/server/express/server.js +51 -32
  67. package/dist/services/a2a/execute.d.ts +6 -0
  68. package/dist/services/a2a/execute.js +25 -0
  69. package/dist/services/a2a/factory/builder.d.ts +21 -80
  70. package/dist/services/a2a/factory/builder.js +23 -13
  71. package/dist/services/a2a/factory/context.d.ts +15 -128
  72. package/dist/services/a2a/factory/context.js +31 -136
  73. package/dist/services/a2a/factory/handler.d.ts +6 -0
  74. package/dist/services/a2a/factory/{method.js → handler.js} +2 -2
  75. package/dist/services/a2a/factory/index.d.ts +1 -2
  76. package/dist/services/a2a/factory/index.js +1 -2
  77. package/dist/services/a2a/factory/service.d.ts +20 -7
  78. package/dist/services/a2a/factory/service.js +4 -4
  79. package/dist/services/a2a/factory/state-machine.d.ts +11 -0
  80. package/dist/services/a2a/factory/state-machine.js +66 -0
  81. package/dist/services/a2a/{state/update → handlers}/artifact.d.ts +4 -4
  82. package/dist/services/a2a/handlers/cancel-task.d.ts +11 -0
  83. package/dist/services/a2a/handlers/cancel-task.js +33 -0
  84. package/dist/services/a2a/handlers/get-task.d.ts +11 -0
  85. package/dist/services/a2a/handlers/get-task.js +13 -0
  86. package/dist/services/a2a/handlers/resubscribe-task.d.ts +11 -0
  87. package/dist/services/a2a/handlers/resubscribe-task.js +56 -0
  88. package/dist/services/a2a/handlers/send-message.d.ts +11 -0
  89. package/dist/services/a2a/handlers/send-message.js +35 -0
  90. package/dist/services/a2a/handlers/stream-message.d.ts +11 -0
  91. package/dist/services/a2a/handlers/stream-message.js +19 -0
  92. package/dist/services/a2a/handlers/update.d.ts +17 -0
  93. package/dist/services/a2a/handlers/update.js +114 -0
  94. package/dist/services/a2a/helpers/agentcard-builder.d.ts +9 -5
  95. package/dist/services/a2a/helpers/agentcard-builder.js +5 -0
  96. package/dist/services/a2a/helpers/content.d.ts +2 -2
  97. package/dist/services/a2a/helpers/content.js +4 -0
  98. package/dist/services/a2a/helpers/history.d.ts +6 -0
  99. package/dist/services/a2a/helpers/history.js +7 -0
  100. package/dist/services/a2a/helpers/index.d.ts +3 -1
  101. package/dist/services/a2a/helpers/index.js +3 -1
  102. package/dist/services/a2a/helpers/message-builder.d.ts +13 -8
  103. package/dist/services/a2a/helpers/message-builder.js +5 -0
  104. package/dist/services/a2a/helpers/part.d.ts +9 -9
  105. package/dist/services/a2a/helpers/references.d.ts +6 -0
  106. package/dist/services/a2a/helpers/references.js +22 -0
  107. package/dist/services/a2a/index.d.ts +9 -5
  108. package/dist/services/a2a/index.js +8 -5
  109. package/dist/services/a2a/managers.d.ts +23 -0
  110. package/dist/services/a2a/managers.js +95 -0
  111. package/dist/services/a2a/messenger.d.ts +35 -0
  112. package/dist/services/{core/managers/command.js → a2a/messenger.js} +27 -31
  113. package/dist/services/a2a/service.d.ts +41 -371
  114. package/dist/services/a2a/service.js +239 -70
  115. package/dist/services/a2a/state-machine.d.ts +18 -0
  116. package/dist/services/a2a/state-machine.js +76 -0
  117. package/dist/services/a2a/streams.d.ts +22 -0
  118. package/dist/services/a2a/streams.js +98 -0
  119. package/dist/services/core/index.d.ts +1 -2
  120. package/dist/services/core/index.js +1 -2
  121. package/dist/services/core/manager.d.ts +15 -0
  122. package/dist/services/core/manager.js +42 -0
  123. package/dist/services/mcp/service.d.ts +11 -15
  124. package/dist/services/mcp/service.js +16 -16
  125. package/dist/transport/index.d.ts +0 -1
  126. package/dist/transport/index.js +1 -1
  127. package/dist/transport/rpc/parser.d.ts +2 -2
  128. package/dist/transport/rpc/parser.js +7 -7
  129. package/dist/transport/rpc/rpc-client.d.ts +5 -5
  130. package/dist/transport/rpc/rpc-client.js +7 -7
  131. package/dist/transport/streaming/event-stream.d.ts +3 -3
  132. package/dist/transport/streaming/event-stream.js +11 -10
  133. package/dist/transport/trpc/a2a/factory/router.d.ts +479 -871
  134. package/dist/transport/trpc/a2a/factory/router.js +2 -2
  135. package/dist/transport/trpc/a2a/routes/info.d.ts +108 -8
  136. package/dist/transport/trpc/a2a/routes/info.js +6 -2
  137. package/dist/transport/trpc/a2a/routes/message/route.d.ts +113 -162
  138. package/dist/transport/trpc/a2a/routes/message/route.js +7 -13
  139. package/dist/transport/trpc/a2a/routes/tasks/route.d.ts +114 -212
  140. package/dist/transport/trpc/a2a/routes/tasks/route.js +16 -19
  141. package/dist/transport/trpc/a2a/trpc.d.ts +9 -253
  142. package/dist/types/a2a/a2a.d.ts +378 -0
  143. package/dist/types/a2a/a2a.js +14 -0
  144. package/dist/types/a2a/builder.d.ts +43 -0
  145. package/dist/types/a2a/index.d.ts +3 -0
  146. package/dist/types/a2a/index.js +2 -0
  147. package/dist/types/client.d.ts +133 -0
  148. package/dist/types/core/core.d.ts +31 -0
  149. package/dist/types/core/core.js +1 -0
  150. package/dist/types/core/index.d.ts +1 -0
  151. package/dist/types/core/index.js +1 -0
  152. package/dist/types/index.d.ts +6 -3
  153. package/dist/types/index.js +6 -3
  154. package/dist/types/mcp/index.d.ts +1 -0
  155. package/dist/types/mcp/index.js +1 -0
  156. package/dist/types/mcp/mcp.d.ts +50 -0
  157. package/dist/types/mcp/mcp.js +5 -0
  158. package/dist/types/protocol.d.ts +33 -0
  159. package/dist/types/protocol.js +34 -0
  160. package/dist/types/storage.d.ts +21 -0
  161. package/dist/utils/common/constants.d.ts +7 -7
  162. package/dist/utils/common/constants.js +10 -10
  163. package/dist/utils/common/errors.d.ts +18 -17
  164. package/dist/utils/common/errors.js +14 -13
  165. package/dist/utils/common/parse.d.ts +7 -0
  166. package/dist/utils/common/parse.js +14 -0
  167. package/dist/utils/common/schema-validation.d.ts +2 -0
  168. package/dist/utils/common/schema-validation.js +12 -0
  169. package/dist/utils/common/utils.d.ts +23 -0
  170. package/dist/utils/common/utils.js +32 -0
  171. package/dist/utils/common/zAsyncIterable-v3.d.ts +1 -1
  172. package/dist/utils/common/zAsyncIterable-v3.js +2 -1
  173. package/dist/utils/index.d.ts +3 -3
  174. package/dist/utils/index.js +3 -3
  175. package/dist/utils/storage/file.d.ts +8 -17
  176. package/dist/utils/storage/file.js +44 -73
  177. package/package.json +86 -23
  178. package/dist/services/a2a/factory/event.d.ts +0 -58
  179. package/dist/services/a2a/factory/event.js +0 -177
  180. package/dist/services/a2a/factory/method.d.ts +0 -6
  181. package/dist/services/a2a/managers/cancellation.d.ts +0 -11
  182. package/dist/services/a2a/managers/cancellation.js +0 -16
  183. package/dist/services/a2a/managers/connection.d.ts +0 -11
  184. package/dist/services/a2a/managers/connection.js +0 -16
  185. package/dist/services/a2a/managers/context.d.ts +0 -11
  186. package/dist/services/a2a/managers/context.js +0 -16
  187. package/dist/services/a2a/managers/index.d.ts +0 -5
  188. package/dist/services/a2a/managers/index.js +0 -5
  189. package/dist/services/a2a/managers/task.d.ts +0 -11
  190. package/dist/services/a2a/managers/task.js +0 -16
  191. package/dist/services/a2a/methods/cancel-task.d.ts +0 -7
  192. package/dist/services/a2a/methods/cancel-task.js +0 -43
  193. package/dist/services/a2a/methods/get-task.d.ts +0 -112
  194. package/dist/services/a2a/methods/get-task.js +0 -14
  195. package/dist/services/a2a/methods/resubscribe-task.d.ts +0 -7
  196. package/dist/services/a2a/methods/resubscribe-task.js +0 -80
  197. package/dist/services/a2a/methods/send-message.d.ts +0 -7
  198. package/dist/services/a2a/methods/send-message.js +0 -19
  199. package/dist/services/a2a/methods/stream-message.d.ts +0 -8
  200. package/dist/services/a2a/methods/stream-message.js +0 -21
  201. package/dist/services/a2a/state/index.d.ts +0 -3
  202. package/dist/services/a2a/state/index.js +0 -3
  203. package/dist/services/a2a/state/load.d.ts +0 -14
  204. package/dist/services/a2a/state/load.js +0 -71
  205. package/dist/services/a2a/state/process.d.ts +0 -7
  206. package/dist/services/a2a/state/process.js +0 -13
  207. package/dist/services/a2a/state/update/index.d.ts +0 -2
  208. package/dist/services/a2a/state/update/index.js +0 -2
  209. package/dist/services/a2a/state/update/update.d.ts +0 -23
  210. package/dist/services/a2a/state/update/update.js +0 -123
  211. package/dist/services/core/execution/execute.d.ts +0 -6
  212. package/dist/services/core/execution/execute.js +0 -25
  213. package/dist/services/core/execution/index.d.ts +0 -1
  214. package/dist/services/core/execution/index.js +0 -1
  215. package/dist/services/core/managers/command.d.ts +0 -39
  216. package/dist/services/core/managers/event.d.ts +0 -18
  217. package/dist/services/core/managers/event.js +0 -56
  218. package/dist/services/core/managers/index.d.ts +0 -3
  219. package/dist/services/core/managers/index.js +0 -3
  220. package/dist/services/core/managers/stream.d.ts +0 -20
  221. package/dist/services/core/managers/stream.js +0 -77
  222. package/dist/types/ext.d.ts +0 -13
  223. package/dist/types/ext.js +0 -10
  224. package/dist/types/interfaces/index.d.ts +0 -3
  225. package/dist/types/interfaces/index.js +0 -3
  226. package/dist/types/interfaces/services/a2a/builder.d.ts +0 -37
  227. package/dist/types/interfaces/services/a2a/context.d.ts +0 -162
  228. package/dist/types/interfaces/services/a2a/engine.d.ts +0 -7
  229. package/dist/types/interfaces/services/a2a/index.d.ts +0 -5
  230. package/dist/types/interfaces/services/a2a/index.js +0 -5
  231. package/dist/types/interfaces/services/a2a/legacy.d.ts +0 -93
  232. package/dist/types/interfaces/services/a2a/service.d.ts +0 -409
  233. package/dist/types/interfaces/services/a2a/service.js +0 -5
  234. package/dist/types/interfaces/services/core/context/command.d.ts +0 -25
  235. package/dist/types/interfaces/services/core/context/command.js +0 -5
  236. package/dist/types/interfaces/services/core/context/context.d.ts +0 -207
  237. package/dist/types/interfaces/services/core/context/context.js +0 -5
  238. package/dist/types/interfaces/services/core/context/index.d.ts +0 -3
  239. package/dist/types/interfaces/services/core/context/index.js +0 -3
  240. package/dist/types/interfaces/services/core/context/types.d.ts +0 -11
  241. package/dist/types/interfaces/services/core/context/types.js +0 -5
  242. package/dist/types/interfaces/services/core/execution/engine.d.ts +0 -106
  243. package/dist/types/interfaces/services/core/execution/engine.js +0 -5
  244. package/dist/types/interfaces/services/core/execution/environment.d.ts +0 -11
  245. package/dist/types/interfaces/services/core/execution/environment.js +0 -5
  246. package/dist/types/interfaces/services/core/execution/execute.d.ts +0 -7
  247. package/dist/types/interfaces/services/core/execution/execute.js +0 -5
  248. package/dist/types/interfaces/services/core/execution/index.d.ts +0 -3
  249. package/dist/types/interfaces/services/core/execution/index.js +0 -3
  250. package/dist/types/interfaces/services/core/index.d.ts +0 -4
  251. package/dist/types/interfaces/services/core/index.js +0 -4
  252. package/dist/types/interfaces/services/core/managers/cancellation.d.ts +0 -9
  253. package/dist/types/interfaces/services/core/managers/cancellation.js +0 -5
  254. package/dist/types/interfaces/services/core/managers/connection.d.ts +0 -9
  255. package/dist/types/interfaces/services/core/managers/connection.js +0 -5
  256. package/dist/types/interfaces/services/core/managers/context.d.ts +0 -17
  257. package/dist/types/interfaces/services/core/managers/context.js +0 -5
  258. package/dist/types/interfaces/services/core/managers/event.d.ts +0 -328
  259. package/dist/types/interfaces/services/core/managers/event.js +0 -5
  260. package/dist/types/interfaces/services/core/managers/index.d.ts +0 -6
  261. package/dist/types/interfaces/services/core/managers/index.js +0 -6
  262. package/dist/types/interfaces/services/core/managers/stream.d.ts +0 -217
  263. package/dist/types/interfaces/services/core/managers/stream.js +0 -5
  264. package/dist/types/interfaces/services/core/managers/task.d.ts +0 -9
  265. package/dist/types/interfaces/services/core/service.d.ts +0 -115
  266. package/dist/types/interfaces/services/core/service.js +0 -5
  267. package/dist/types/interfaces/services/mcp/index.d.ts +0 -1
  268. package/dist/types/interfaces/services/mcp/index.js +0 -1
  269. package/dist/types/interfaces/services/mcp/service.js +0 -5
  270. package/dist/types/interfaces/storage.d.ts +0 -8
  271. package/dist/types/schemas/a2a/agent.d.ts +0 -2583
  272. package/dist/types/schemas/a2a/agent.js +0 -323
  273. package/dist/types/schemas/a2a/auth.d.ts +0 -908
  274. package/dist/types/schemas/a2a/auth.js +0 -283
  275. package/dist/types/schemas/a2a/error.d.ts +0 -396
  276. package/dist/types/schemas/a2a/error.js +0 -163
  277. package/dist/types/schemas/a2a/index.d.ts +0 -11
  278. package/dist/types/schemas/a2a/index.js +0 -11
  279. package/dist/types/schemas/a2a/kind.d.ts +0 -11
  280. package/dist/types/schemas/a2a/kind.js +0 -20
  281. package/dist/types/schemas/a2a/message.d.ts +0 -10343
  282. package/dist/types/schemas/a2a/message.js +0 -130
  283. package/dist/types/schemas/a2a/notification.d.ts +0 -1517
  284. package/dist/types/schemas/a2a/notification.js +0 -203
  285. package/dist/types/schemas/a2a/parameters.d.ts +0 -956
  286. package/dist/types/schemas/a2a/parameters.js +0 -241
  287. package/dist/types/schemas/a2a/protocol.d.ts +0 -14363
  288. package/dist/types/schemas/a2a/protocol.js +0 -59
  289. package/dist/types/schemas/a2a/rpc.d.ts +0 -182
  290. package/dist/types/schemas/a2a/rpc.js +0 -126
  291. package/dist/types/schemas/a2a/task.d.ts +0 -5886
  292. package/dist/types/schemas/a2a/task.js +0 -134
  293. package/dist/types/schemas/a2a/transport.d.ts +0 -31
  294. package/dist/types/schemas/a2a/transport.js +0 -28
  295. package/dist/types/schemas/index.d.ts +0 -1
  296. package/dist/types/schemas/index.js +0 -1
  297. package/dist/utils/logging/index.d.ts +0 -2
  298. package/dist/utils/logging/index.js +0 -2
  299. package/dist/utils/logging/log.d.ts +0 -33
  300. package/dist/utils/logging/log.js +0 -75
  301. package/dist/utils/logging/logger.d.ts +0 -18
  302. package/dist/utils/logging/logger.js +0 -18
  303. package/dist/utils/storage/memory.d.ts +0 -25
  304. package/dist/utils/storage/memory.js +0 -47
  305. /package/dist/{types/interfaces/services → browser/types}/a2a/builder.js +0 -0
  306. /package/dist/{types/interfaces → browser/types}/client.js +0 -0
  307. /package/dist/{types/interfaces/services/core/managers/task.js → browser/types/core/core.js} +0 -0
  308. /package/dist/{types/interfaces/services → browser/types}/protocol.d.ts +0 -0
  309. /package/dist/{types/interfaces/services → browser/types}/protocol.js +0 -0
  310. /package/dist/{types/interfaces → browser/types}/storage.js +0 -0
  311. /package/dist/services/a2a/{state/update → handlers}/artifact.js +0 -0
  312. /package/dist/services/a2a/{methods → handlers}/index.d.ts +0 -0
  313. /package/dist/services/a2a/{methods → handlers}/index.js +0 -0
  314. /package/dist/types/{interfaces/services/a2a/context.js → a2a/builder.js} +0 -0
  315. /package/dist/types/{interfaces/services/a2a/engine.js → client.js} +0 -0
  316. /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;