@relkit/observability-local 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +4 -2
  3. package/dist/index.d.ts +9 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +8 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/local/duckdb-batch-cursors.d.ts +10 -0
  8. package/dist/local/duckdb-batch-cursors.d.ts.map +1 -0
  9. package/dist/local/duckdb-batch-cursors.js +30 -0
  10. package/dist/local/duckdb-batch-cursors.js.map +1 -0
  11. package/dist/local/duckdb-batch-insert.d.ts +8 -0
  12. package/dist/local/duckdb-batch-insert.d.ts.map +1 -0
  13. package/dist/local/duckdb-batch-insert.js +29 -0
  14. package/dist/local/duckdb-batch-insert.js.map +1 -0
  15. package/dist/local/duckdb-batch-prepare.d.ts +7 -0
  16. package/dist/local/duckdb-batch-prepare.d.ts.map +1 -0
  17. package/dist/local/duckdb-batch-prepare.js +29 -0
  18. package/dist/local/duckdb-batch-prepare.js.map +1 -0
  19. package/dist/local/duckdb-batch-receipts.d.ts +7 -0
  20. package/dist/local/duckdb-batch-receipts.d.ts.map +1 -0
  21. package/dist/local/duckdb-batch-receipts.js +24 -0
  22. package/dist/local/duckdb-batch-receipts.js.map +1 -0
  23. package/dist/local/duckdb-batch.d.ts +8 -0
  24. package/dist/local/duckdb-batch.d.ts.map +1 -0
  25. package/dist/local/duckdb-batch.js +19 -0
  26. package/dist/local/duckdb-batch.js.map +1 -0
  27. package/dist/local/duckdb-batch.types.d.ts +19 -0
  28. package/dist/local/duckdb-batch.types.d.ts.map +1 -0
  29. package/dist/local/duckdb-batch.types.js +2 -0
  30. package/dist/local/duckdb-batch.types.js.map +1 -0
  31. package/dist/local/duckdb-database-effect.d.ts +88 -0
  32. package/dist/local/duckdb-database-effect.d.ts.map +1 -0
  33. package/dist/local/duckdb-database-effect.js +81 -0
  34. package/dist/local/duckdb-database-effect.js.map +1 -0
  35. package/dist/local/duckdb-database.d.ts +101 -0
  36. package/dist/local/duckdb-database.d.ts.map +1 -0
  37. package/dist/local/duckdb-database.js +61 -0
  38. package/dist/local/duckdb-database.js.map +1 -0
  39. package/dist/local/duckdb-database.types.d.ts +19 -0
  40. package/dist/local/duckdb-database.types.d.ts.map +1 -0
  41. package/dist/local/duckdb-database.types.js +2 -0
  42. package/dist/local/duckdb-database.types.js.map +1 -0
  43. package/dist/local/duckdb-driver.d.ts +25 -0
  44. package/dist/local/duckdb-driver.d.ts.map +1 -0
  45. package/dist/local/duckdb-driver.js +34 -0
  46. package/dist/local/duckdb-driver.js.map +1 -0
  47. package/dist/local/duckdb-driver.types.d.ts +96 -0
  48. package/dist/local/duckdb-driver.types.d.ts.map +1 -0
  49. package/dist/local/duckdb-driver.types.js +2 -0
  50. package/dist/local/duckdb-driver.types.js.map +1 -0
  51. package/dist/local/duckdb-error.d.ts +32 -0
  52. package/dist/local/duckdb-error.d.ts.map +1 -0
  53. package/dist/local/duckdb-error.js +36 -0
  54. package/dist/local/duckdb-error.js.map +1 -0
  55. package/dist/local/duckdb-metrics.d.ts +17 -0
  56. package/dist/local/duckdb-metrics.d.ts.map +1 -0
  57. package/dist/local/duckdb-metrics.js +30 -0
  58. package/dist/local/duckdb-metrics.js.map +1 -0
  59. package/dist/local/duckdb-query-detail.d.ts +40 -0
  60. package/dist/local/duckdb-query-detail.d.ts.map +1 -0
  61. package/dist/local/duckdb-query-detail.js +43 -0
  62. package/dist/local/duckdb-query-detail.js.map +1 -0
  63. package/dist/local/duckdb-query-effect.d.ts +42 -0
  64. package/dist/local/duckdb-query-effect.d.ts.map +1 -0
  65. package/dist/local/duckdb-query-effect.js +10 -0
  66. package/dist/local/duckdb-query-effect.js.map +1 -0
  67. package/dist/local/duckdb-query-error.d.ts +32 -0
  68. package/dist/local/duckdb-query-error.d.ts.map +1 -0
  69. package/dist/local/duckdb-query-error.js +35 -0
  70. package/dist/local/duckdb-query-error.js.map +1 -0
  71. package/dist/local/duckdb-query-filters.d.ts +9 -0
  72. package/dist/local/duckdb-query-filters.d.ts.map +1 -0
  73. package/dist/local/duckdb-query-filters.js +51 -0
  74. package/dist/local/duckdb-query-filters.js.map +1 -0
  75. package/dist/local/duckdb-query-list.d.ts +7 -0
  76. package/dist/local/duckdb-query-list.d.ts.map +1 -0
  77. package/dist/local/duckdb-query-list.js +26 -0
  78. package/dist/local/duckdb-query-list.js.map +1 -0
  79. package/dist/local/duckdb-query-plan.d.ts +8 -0
  80. package/dist/local/duckdb-query-plan.d.ts.map +1 -0
  81. package/dist/local/duckdb-query-plan.js +49 -0
  82. package/dist/local/duckdb-query-plan.js.map +1 -0
  83. package/dist/local/duckdb-query-rows.d.ts +8 -0
  84. package/dist/local/duckdb-query-rows.d.ts.map +1 -0
  85. package/dist/local/duckdb-query-rows.js +23 -0
  86. package/dist/local/duckdb-query-rows.js.map +1 -0
  87. package/dist/local/duckdb-query-rows.types.d.ts +8 -0
  88. package/dist/local/duckdb-query-rows.types.d.ts.map +1 -0
  89. package/dist/local/duckdb-query-rows.types.js +2 -0
  90. package/dist/local/duckdb-query-rows.types.js.map +1 -0
  91. package/dist/local/duckdb-query.d.ts +49 -0
  92. package/dist/local/duckdb-query.d.ts.map +1 -0
  93. package/dist/local/duckdb-query.js +29 -0
  94. package/dist/local/duckdb-query.js.map +1 -0
  95. package/dist/local/duckdb-retention.d.ts +6 -0
  96. package/dist/local/duckdb-retention.d.ts.map +1 -0
  97. package/dist/local/duckdb-retention.js +22 -0
  98. package/dist/local/duckdb-retention.js.map +1 -0
  99. package/dist/local/duckdb-schema.d.ts +17 -0
  100. package/dist/local/duckdb-schema.d.ts.map +1 -0
  101. package/dist/local/duckdb-schema.js +39 -0
  102. package/dist/local/duckdb-schema.js.map +1 -0
  103. package/dist/local/duckdb-sql.d.ts +35 -0
  104. package/dist/local/duckdb-sql.d.ts.map +1 -0
  105. package/dist/local/duckdb-sql.js +35 -0
  106. package/dist/local/duckdb-sql.js.map +1 -0
  107. package/dist/local/duckdb-storage-state.types.d.ts +12 -0
  108. package/dist/local/duckdb-storage-state.types.d.ts.map +1 -0
  109. package/dist/local/duckdb-storage-state.types.js +2 -0
  110. package/dist/local/duckdb-storage-state.types.js.map +1 -0
  111. package/dist/local/duckdb-storage.d.ts +8 -0
  112. package/dist/local/duckdb-storage.d.ts.map +1 -0
  113. package/dist/local/duckdb-storage.js +33 -0
  114. package/dist/local/duckdb-storage.js.map +1 -0
  115. package/dist/local/duckdb-storage.types.d.ts +44 -0
  116. package/dist/local/duckdb-storage.types.d.ts.map +1 -0
  117. package/dist/local/duckdb-storage.types.js +2 -0
  118. package/dist/local/duckdb-storage.types.js.map +1 -0
  119. package/dist/local/duckdb-transaction.d.ts +7 -0
  120. package/dist/local/duckdb-transaction.d.ts.map +1 -0
  121. package/dist/local/duckdb-transaction.js +25 -0
  122. package/dist/local/duckdb-transaction.js.map +1 -0
  123. package/dist/local/duckdb-worker-database.d.ts +25 -0
  124. package/dist/local/duckdb-worker-database.d.ts.map +1 -0
  125. package/dist/local/duckdb-worker-database.js +53 -0
  126. package/dist/local/duckdb-worker-database.js.map +1 -0
  127. package/dist/local/duckdb-worker-effect.d.ts +26 -0
  128. package/dist/local/duckdb-worker-effect.d.ts.map +1 -0
  129. package/dist/local/duckdb-worker-effect.js +29 -0
  130. package/dist/local/duckdb-worker-effect.js.map +1 -0
  131. package/dist/local/duckdb-worker-ipc.d.ts +7 -0
  132. package/dist/local/duckdb-worker-ipc.d.ts.map +1 -0
  133. package/dist/local/duckdb-worker-ipc.js +40 -0
  134. package/dist/local/duckdb-worker-ipc.js.map +1 -0
  135. package/dist/local/duckdb-worker-maintenance.d.ts +7 -0
  136. package/dist/local/duckdb-worker-maintenance.d.ts.map +1 -0
  137. package/dist/local/duckdb-worker-maintenance.js +25 -0
  138. package/dist/local/duckdb-worker-maintenance.js.map +1 -0
  139. package/dist/local/duckdb-worker-process.d.ts +5 -0
  140. package/dist/local/duckdb-worker-process.d.ts.map +1 -0
  141. package/dist/local/duckdb-worker-process.js +19 -0
  142. package/dist/local/duckdb-worker-process.js.map +1 -0
  143. package/dist/local/duckdb-worker-process.types.d.ts +21 -0
  144. package/dist/local/duckdb-worker-process.types.d.ts.map +1 -0
  145. package/dist/local/duckdb-worker-process.types.js +2 -0
  146. package/dist/local/duckdb-worker-process.types.js.map +1 -0
  147. package/dist/local/duckdb-worker-signals.d.ts +5 -0
  148. package/dist/local/duckdb-worker-signals.d.ts.map +1 -0
  149. package/dist/local/duckdb-worker-signals.js +22 -0
  150. package/dist/local/duckdb-worker-signals.js.map +1 -0
  151. package/dist/local/duckdb-worker-state.types.d.ts +12 -0
  152. package/dist/local/duckdb-worker-state.types.d.ts.map +1 -0
  153. package/dist/local/duckdb-worker-state.types.js +2 -0
  154. package/dist/local/duckdb-worker-state.types.js.map +1 -0
  155. package/dist/local/duckdb-worker.d.ts +2 -0
  156. package/dist/local/duckdb-worker.d.ts.map +1 -0
  157. package/dist/local/duckdb-worker.js +18 -0
  158. package/dist/local/duckdb-worker.js.map +1 -0
  159. package/dist/local/duckdb-worker.types.d.ts +38 -0
  160. package/dist/local/duckdb-worker.types.d.ts.map +1 -0
  161. package/dist/local/duckdb-worker.types.js +2 -0
  162. package/dist/local/duckdb-worker.types.js.map +1 -0
  163. package/dist/local/import-history-effect.d.ts +9 -0
  164. package/dist/local/import-history-effect.d.ts.map +1 -0
  165. package/dist/local/import-history-effect.js +32 -0
  166. package/dist/local/import-history-effect.js.map +1 -0
  167. package/dist/local/import-history-files.d.ts +5 -0
  168. package/dist/local/import-history-files.d.ts.map +1 -0
  169. package/dist/local/import-history-files.js +37 -0
  170. package/dist/local/import-history-files.js.map +1 -0
  171. package/dist/local/import-history-line.d.ts +6 -0
  172. package/dist/local/import-history-line.d.ts.map +1 -0
  173. package/dist/local/import-history-line.js +51 -0
  174. package/dist/local/import-history-line.js.map +1 -0
  175. package/dist/local/import-history-lines.d.ts +8 -0
  176. package/dist/local/import-history-lines.d.ts.map +1 -0
  177. package/dist/local/import-history-lines.js +27 -0
  178. package/dist/local/import-history-lines.js.map +1 -0
  179. package/dist/local/import-history-lines.types.d.ts +11 -0
  180. package/dist/local/import-history-lines.types.d.ts.map +1 -0
  181. package/dist/local/import-history-lines.types.js +2 -0
  182. package/dist/local/import-history-lines.types.js.map +1 -0
  183. package/dist/local/import-history.d.ts +18 -0
  184. package/dist/local/import-history.d.ts.map +1 -0
  185. package/dist/local/import-history.js +26 -0
  186. package/dist/local/import-history.js.map +1 -0
  187. package/dist/local/import-history.types.d.ts +28 -0
  188. package/dist/local/import-history.types.d.ts.map +1 -0
  189. package/dist/local/import-history.types.js +2 -0
  190. package/dist/local/import-history.types.js.map +1 -0
  191. package/dist/local/worker-client-effect.d.ts +9 -0
  192. package/dist/local/worker-client-effect.d.ts.map +1 -0
  193. package/dist/local/worker-client-effect.js +54 -0
  194. package/dist/local/worker-client-effect.js.map +1 -0
  195. package/dist/local/worker-client-send.d.ts +13 -0
  196. package/dist/local/worker-client-send.d.ts.map +1 -0
  197. package/dist/local/worker-client-send.js +82 -0
  198. package/dist/local/worker-client-send.js.map +1 -0
  199. package/dist/local/worker-client-service.d.ts +33 -0
  200. package/dist/local/worker-client-service.d.ts.map +1 -0
  201. package/dist/local/worker-client-service.js +31 -0
  202. package/dist/local/worker-client-service.js.map +1 -0
  203. package/dist/local/worker-client-state.d.ts +9 -0
  204. package/dist/local/worker-client-state.d.ts.map +1 -0
  205. package/dist/local/worker-client-state.js +96 -0
  206. package/dist/local/worker-client-state.js.map +1 -0
  207. package/dist/local/worker-client-state.types.d.ts +24 -0
  208. package/dist/local/worker-client-state.types.d.ts.map +1 -0
  209. package/dist/local/worker-client-state.types.js +2 -0
  210. package/dist/local/worker-client-state.types.js.map +1 -0
  211. package/dist/local/worker-client.d.ts +21 -0
  212. package/dist/local/worker-client.d.ts.map +1 -0
  213. package/dist/local/worker-client.js +35 -0
  214. package/dist/local/worker-client.js.map +1 -0
  215. package/dist/local/worker.d.ts +15 -0
  216. package/dist/local/worker.d.ts.map +1 -0
  217. package/dist/local/worker.js +12 -0
  218. package/dist/local/worker.js.map +1 -0
  219. package/package.json +54 -4
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Owns worker client service for the optional local history store.
3
+ * Shared records and query contracts come from lightweight observability; native
4
+ * handles and worker lifetimes remain owned by this storage package.
5
+ */
6
+ import { Context, Effect, Layer } from "effect";
7
+ import type { LocalWorkerEffects } from "@relkit/observability/local/worker-contract";
8
+ declare const LocalWorkerService_base: Context.ServiceClass<LocalWorkerService, "@relkit/observability/LocalWorkerService", LocalWorkerEffects> & {
9
+ readonly make: (onFailure?: ((error: Error) => void) | undefined) => Effect.Effect<LocalWorkerEffects, import("@relkit/observability/local/worker-contract").LocalWorkerError, import("effect/Scope").Scope>;
10
+ };
11
+ /**
12
+ * Injectable local worker operations. A Layer owns the worker process until
13
+ * its scope closes, so callers can substitute a deterministic service in tests.
14
+ *
15
+ * @example
16
+ * const program = Effect.gen(function* () {
17
+ * const worker = yield* LocalWorkerService;
18
+ * return worker.pid;
19
+ * });
20
+ */
21
+ export declare class LocalWorkerService extends LocalWorkerService_base {
22
+ }
23
+ /**
24
+ * Acquires a worker for the Layer scope and releases it on every exit.
25
+ *
26
+ * @param onFailure - Receives the first unexpected worker failure.
27
+ * @returns A Layer providing `LocalWorkerService`.
28
+ * @example
29
+ * const result = await Effect.runPromise(program.pipe(Effect.provide(localWorkerLayer())));
30
+ */
31
+ export declare const localWorkerLayer: (onFailure?: (error: Error) => void) => Layer.Layer<LocalWorkerService, import("@relkit/observability/local/worker-contract").LocalWorkerError, never>;
32
+ export {};
33
+ //# sourceMappingURL=worker-client-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-client-service.d.ts","sourceRoot":"","sources":["../../src/local/worker-client-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;;yCAevD,KAAK,KAAK,IAAI;;AAb7C;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,SAAQ,uBAQvC;CAAG;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,YAAY,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,mHACG,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Owns worker client service for the optional local history store.
3
+ * Shared records and query contracts come from lightweight observability; native
4
+ * handles and worker lifetimes remain owned by this storage package.
5
+ */
6
+ import { Context, Effect, Layer } from "effect";
7
+ import { startLocalWorkerEffect } from "./worker-client-effect.js";
8
+ /**
9
+ * Injectable local worker operations. A Layer owns the worker process until
10
+ * its scope closes, so callers can substitute a deterministic service in tests.
11
+ *
12
+ * @example
13
+ * const program = Effect.gen(function* () {
14
+ * const worker = yield* LocalWorkerService;
15
+ * return worker.pid;
16
+ * });
17
+ */
18
+ export class LocalWorkerService extends Context.Service()("@relkit/observability/LocalWorkerService", {
19
+ make: (onFailure) => Effect.acquireRelease(startLocalWorkerEffect(onFailure), (worker) => Effect.ignore(worker.close())),
20
+ }) {
21
+ }
22
+ /**
23
+ * Acquires a worker for the Layer scope and releases it on every exit.
24
+ *
25
+ * @param onFailure - Receives the first unexpected worker failure.
26
+ * @returns A Layer providing `LocalWorkerService`.
27
+ * @example
28
+ * const result = await Effect.runPromise(program.pipe(Effect.provide(localWorkerLayer())));
29
+ */
30
+ export const localWorkerLayer = (onFailure) => Layer.effect(LocalWorkerService, LocalWorkerService.make(onFailure));
31
+ //# sourceMappingURL=worker-client-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-client-service.js","sourceRoot":"","sources":["../../src/local/worker-client-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAmB,SAAQ,OAAO,CAAC,OAAO,EAA0C,CAC/F,0CAA0C,EAC1C;IACE,IAAI,EAAE,CAAC,SAAkC,EAAE,EAAE,CAC3C,MAAM,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAClE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAC9B;CACJ,CACF;CAAG;AAEJ;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAkC,EAAE,EAAE,CACrE,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ChildProcess } from "node:child_process";
2
+ import type { WorkerClientState } from "./worker-client-state.types.js";
3
+ /** @param child - Owned IPC child. @param onFailure - First terminal failure observer. @returns Registered process state. */
4
+ export declare function createWorkerClientState(child: ChildProcess, onFailure: (error: Error) => void): WorkerClientState;
5
+ /** @param state - Owned child state. @returns Nothing after idempotent child termination. */
6
+ export declare function stopWorkerClient(state: WorkerClientState): void;
7
+ /** @param state - Owned IPC state. @param error - Terminal diagnostic. @returns Nothing after settling pending calls and stopping the child. */
8
+ export declare function failWorkerClient(state: WorkerClientState, error: Error): void;
9
+ //# sourceMappingURL=worker-client-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-client-state.d.ts","sourceRoot":"","sources":["../../src/local/worker-client-state.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAexE,6HAA6H;AAC7H,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAChC,iBAAiB,CA8BnB;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAI/D;AAED,gJAAgJ;AAChJ,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAa7E"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Registers IPC reply/exit handlers for one isolated storage worker.
3
+ * Invalid replies fail pending callers; stopping affects only the owned child.
4
+ */
5
+ import { Schema } from "effect";
6
+ import { ObservabilityQueryError } from "@relkit/observability";
7
+ import { WorkerTransportError } from "@relkit/observability/local/worker-contract";
8
+ const responseSchema = Schema.Struct({
9
+ id: Schema.Number,
10
+ fatal: Schema.optionalKey(Schema.Boolean),
11
+ value: Schema.optionalKey(Schema.Json),
12
+ error: Schema.optionalKey(Schema.String),
13
+ code: Schema.optionalKey(Schema.Literals([
14
+ "RELKIT_OBSERVABILITY_QUERY_INVALID",
15
+ "RELKIT_OBSERVABILITY_QUERY_PROTOCOL_MISMATCH",
16
+ ])),
17
+ });
18
+ /** @param child - Owned IPC child. @param onFailure - First terminal failure observer. @returns Registered process state. */
19
+ export function createWorkerClientState(child, onFailure) {
20
+ const state = {
21
+ child,
22
+ onFailure,
23
+ exited: new Promise((resolve) => child.once("close", () => resolve())),
24
+ pending: new Map(),
25
+ nextId: 0,
26
+ closed: false,
27
+ closing: false,
28
+ opened: false,
29
+ failure: undefined,
30
+ diagnostic: "",
31
+ closePromise: undefined,
32
+ };
33
+ child.stderr?.on("data", (value) => {
34
+ state.diagnostic = `${state.diagnostic}${value.toString()}`.slice(-8192);
35
+ });
36
+ child.on("error", (error) => failWorkerClient(state, error));
37
+ child.on("exit", (code) => {
38
+ if (!state.closed && (!state.closing || state.pending.size > 0))
39
+ failWorkerClient(state, new Error(`Telemetry worker exited (${code}): ${state.diagnostic}`));
40
+ });
41
+ child.on("message", (input) => {
42
+ try {
43
+ receiveWorkerReply(state, Schema.decodeUnknownSync(responseSchema)(input));
44
+ }
45
+ catch (cause) {
46
+ failWorkerClient(state, new Error("Invalid telemetry worker response", { cause }));
47
+ }
48
+ });
49
+ return state;
50
+ }
51
+ /** @param state - Owned child state. @returns Nothing after idempotent child termination. */
52
+ export function stopWorkerClient(state) {
53
+ if (state.closed)
54
+ return;
55
+ state.closed = true;
56
+ state.child.kill();
57
+ }
58
+ /** @param state - Owned IPC state. @param error - Terminal diagnostic. @returns Nothing after settling pending calls and stopping the child. */
59
+ export function failWorkerClient(state, error) {
60
+ if (state.failure)
61
+ return;
62
+ state.failure = error;
63
+ for (const item of state.pending.values()) {
64
+ clearTimeout(item.timer);
65
+ item.reject(error);
66
+ }
67
+ state.pending.clear();
68
+ try {
69
+ if (!state.closed)
70
+ state.onFailure(error);
71
+ }
72
+ finally {
73
+ stopWorkerClient(state);
74
+ }
75
+ }
76
+ /** @param state - Pending owner. @param message - Decoded IPC reply. @returns Nothing after settling its exact pending identity. */
77
+ function receiveWorkerReply(state, message) {
78
+ if (message.fatal) {
79
+ failWorkerClient(state, new Error(message.error ?? "Telemetry worker failed; restart dev to recover"));
80
+ return;
81
+ }
82
+ const item = state.pending.get(message.id);
83
+ if (!item)
84
+ return;
85
+ clearTimeout(item.timer);
86
+ state.pending.delete(message.id);
87
+ if (!message.error) {
88
+ item.resolve(message.value);
89
+ return;
90
+ }
91
+ if (message.code)
92
+ item.reject(new ObservabilityQueryError(message.code, message.error));
93
+ else
94
+ item.reject(new WorkerTransportError("response", message.error));
95
+ }
96
+ //# sourceMappingURL=worker-client-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-client-state.js","sourceRoot":"","sources":["../../src/local/worker-client-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /** Private IPC ownership state; every pending reply belongs to one child process. */
2
+ import type { ChildProcess } from "node:child_process";
3
+ import type { Schema } from "effect";
4
+ /** One timer-bound IPC reply, settled or rejected when the worker retires. */
5
+ export interface PendingWorkerCall {
6
+ readonly resolve: (value: Schema.Json | undefined) => void;
7
+ readonly reject: (error: Error) => void;
8
+ readonly timer: ReturnType<typeof setTimeout>;
9
+ }
10
+ /** Physical process, pending replies, and exactly-once close state. */
11
+ export interface WorkerClientState {
12
+ readonly child: ChildProcess;
13
+ readonly pending: Map<number, PendingWorkerCall>;
14
+ readonly onFailure: (error: Error) => void;
15
+ readonly exited: Promise<void>;
16
+ nextId: number;
17
+ closed: boolean;
18
+ closing: boolean;
19
+ opened: boolean;
20
+ failure: Error | undefined;
21
+ diagnostic: string;
22
+ closePromise: Promise<void> | undefined;
23
+ }
24
+ //# sourceMappingURL=worker-client-state.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-client-state.types.d.ts","sourceRoot":"","sources":["../../src/local/worker-client-state.types.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;CAC/C;AAED,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;CACzC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worker-client-state.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-client-state.types.js","sourceRoot":"","sources":["../../src/local/worker-client-state.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import type { LocalWorkerCommand } from "@relkit/observability/local/record";
2
+ export { LocalWorkerError } from "@relkit/observability/local/worker-contract";
3
+ export { startLocalWorkerEffect } from "./worker-client-effect.js";
4
+ export { LocalWorkerService, localWorkerLayer } from "./worker-client-service.js";
5
+ export type { LocalWorkerEffects } from "@relkit/observability/local/worker-contract";
6
+ /**
7
+ * Starts a local worker with the existing Promise API.
8
+ *
9
+ * @param onFailure - Receives the first unexpected worker failure.
10
+ * @returns A live worker with Promise based `call` and `close` methods.
11
+ * @throws {Error} If process creation fails.
12
+ * @example
13
+ * const worker = startLocalWorker();
14
+ * try { await worker.call({ type: "flush" }); } finally { await worker.close(); }
15
+ */
16
+ export declare function startLocalWorker(onFailure?: (error: Error) => void): {
17
+ pid: number | undefined;
18
+ call: <T>(command: LocalWorkerCommand) => Promise<T>;
19
+ close: () => Promise<void>;
20
+ };
21
+ //# sourceMappingURL=worker-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../../src/local/worker-client.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAClF,YAAY,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAKtF;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,GAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAsB;;WAkBzE,CAAC,WAAW,kBAAkB,KAAG,OAAO,CAAC,CAAC,CAAC;iBAEvC,OAAO,CAAC,IAAI,CAAC;EAE3B"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Owns worker client for the optional local history store.
3
+ * Shared records and query contracts come from lightweight observability; native
4
+ * handles and worker lifetimes remain owned by this storage package.
5
+ */
6
+ import { Effect } from "effect";
7
+ import { ObservabilityQueryError } from "@relkit/observability";
8
+ import { LocalWorkerError } from "@relkit/observability/local/worker-contract";
9
+ import { startLocalWorkerEffect } from "./worker-client-effect.js";
10
+ export { LocalWorkerError } from "@relkit/observability/local/worker-contract";
11
+ export { startLocalWorkerEffect } from "./worker-client-effect.js";
12
+ export { LocalWorkerService, localWorkerLayer } from "./worker-client-service.js";
13
+ const compatibilityError = (error) => error.code ? new ObservabilityQueryError(error.code, error.message) : new Error(error.message);
14
+ /**
15
+ * Starts a local worker with the existing Promise API.
16
+ *
17
+ * @param onFailure - Receives the first unexpected worker failure.
18
+ * @returns A live worker with Promise based `call` and `close` methods.
19
+ * @throws {Error} If process creation fails.
20
+ * @example
21
+ * const worker = startLocalWorker();
22
+ * try { await worker.call({ type: "flush" }); } finally { await worker.close(); }
23
+ */
24
+ export function startLocalWorker(onFailure = () => undefined) {
25
+ const worker = Effect.runSync(startLocalWorkerEffect(onFailure).pipe(Effect.catchTag("LocalWorkerError", (error) => Effect.sync(() => {
26
+ throw compatibilityError(error);
27
+ }))));
28
+ const legacy = (effect) => Effect.runPromise(effect.pipe(Effect.catchTag("LocalWorkerError", (error) => Effect.fail(compatibilityError(error)))));
29
+ return {
30
+ pid: worker.pid,
31
+ call: (command) => legacy(worker.call(command)),
32
+ close: () => legacy(worker.close()),
33
+ };
34
+ }
35
+ //# sourceMappingURL=worker-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-client.js","sourceRoot":"","sources":["../../src/local/worker-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGlF,MAAM,kBAAkB,GAAG,CAAC,KAAuB,EAAS,EAAE,CAC5D,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,uBAAuB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAEjG;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAoC,GAAG,EAAE,CAAC,SAAS;IAClF,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAC3B,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,CACpC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CACH,CACF,CACF,CAAC;IACF,MAAM,MAAM,GAAG,CAAI,MAA0C,EAAc,EAAE,CAC3E,MAAM,CAAC,UAAU,CACf,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CACvF,CACF,CAAC;IACJ,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,IAAI,EAAE,CAAI,OAA2B,EAAc,EAAE,CACnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAe;QAC5C,KAAK,EAAE,GAAkB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;KACnD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Owns worker for the optional local history store.
3
+ * Shared records and query contracts come from lightweight observability; native
4
+ * handles and worker lifetimes remain owned by this storage package.
5
+ */
6
+ /**
7
+ * Exposes IPC transport without evaluating the native DuckDB driver in its caller.
8
+ * The isolated Node worker imports that driver in its own process. Its caller
9
+ * retains the transport's explicit close operation and physical child identity.
10
+ */
11
+ export { startLocalWorkerEffect } from "./worker-client-effect.js";
12
+ export type { LocalWorkerEffects } from "@relkit/observability/local/worker-contract";
13
+ export type { LocalWorkerError } from "@relkit/observability/local/worker-contract";
14
+ export type { LocalWorkerCommand } from "@relkit/observability/local/record";
15
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/local/worker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACtF,YAAY,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AACpF,YAAY,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Owns worker for the optional local history store.
3
+ * Shared records and query contracts come from lightweight observability; native
4
+ * handles and worker lifetimes remain owned by this storage package.
5
+ */
6
+ /**
7
+ * Exposes IPC transport without evaluating the native DuckDB driver in its caller.
8
+ * The isolated Node worker imports that driver in its own process. Its caller
9
+ * retains the transport's explicit close operation and physical child identity.
10
+ */
11
+ export { startLocalWorkerEffect } from "./worker-client-effect.js";
12
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/local/worker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,56 @@
1
1
  {
2
2
  "name": "@relkit/observability-local",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "Explicit local diagnostic history and worker storage for RELKIT inspection.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/rel-kit/relkit.git",
9
+ "directory": "packages/observability-local"
10
+ },
11
+ "homepage": "https://github.com/rel-kit/relkit#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/rel-kit/relkit/issues"
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "engines": {
22
+ "bun": ">=1.3.10"
23
+ },
24
+ "type": "module",
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "import": "./dist/index.js"
29
+ },
30
+ "./worker": {
31
+ "types": "./dist/local/worker.d.ts",
32
+ "import": "./dist/local/worker.js"
33
+ },
34
+ "./internal/local-worker": {
35
+ "types": "./dist/local/duckdb-worker.d.ts",
36
+ "import": "./dist/local/duckdb-worker.js"
37
+ }
38
+ },
39
+ "dependencies": {
40
+ "@duckdb/node-api": "1.5.5-r.4",
41
+ "@relkit/contracts": "0.7.10",
42
+ "@relkit/observability": "0.7.10",
43
+ "effect": "4.0.1"
44
+ },
45
+ "devDependencies": {
46
+ "@effect/vitest": "4.0.1",
47
+ "@vitest/coverage-v8": "5.0.1",
48
+ "vitest": "5.0.1"
49
+ },
50
+ "scripts": {
51
+ "build": "tsc -b",
52
+ "check": "tsc -b --pretty false",
53
+ "typecheck": "tsc -b --pretty false",
54
+ "test": "vitest run --config vitest.config.ts"
55
+ }
56
+ }