target-supabase-sdk 0.2.11 → 0.2.13

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 (154) hide show
  1. package/dist/browser.d.ts +2 -3
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/browser.js +2 -2
  4. package/dist/chunks/enable-DqnfLPsQ.js +874 -0
  5. package/dist/chunks/enable-DqnfLPsQ.js.map +1 -0
  6. package/dist/chunks/{list.api-DSTOHzOC.js → list.api-BzbTJBsM.js} +35 -2
  7. package/dist/chunks/list.api-BzbTJBsM.js.map +1 -0
  8. package/dist/chunks/{task-queue-BHvNgb-X.js → task-queue-6X3aglJh.js} +110 -17
  9. package/dist/chunks/task-queue-6X3aglJh.js.map +1 -0
  10. package/dist/node/preload/run-service-preload.d.ts +1 -0
  11. package/dist/node/preload/run-service-preload.d.ts.map +1 -1
  12. package/dist/node/preload/service-preload.interface.d.ts +7 -0
  13. package/dist/node/preload/service-preload.interface.d.ts.map +1 -1
  14. package/dist/node/process/managed-child-processes.d.ts.map +1 -1
  15. package/dist/node/service-guard/service-guard-node.d.ts.map +1 -1
  16. package/dist/node/service-host/index.d.ts +1 -0
  17. package/dist/node/service-host/index.d.ts.map +1 -1
  18. package/dist/node/service-host/service-host.d.ts +5 -1
  19. package/dist/node/service-host/service-host.d.ts.map +1 -1
  20. package/dist/node.d.ts +10 -5
  21. package/dist/node.d.ts.map +1 -1
  22. package/dist/node.js +494 -49
  23. package/dist/node.js.map +1 -1
  24. package/dist/preload.js +20 -7
  25. package/dist/preload.js.map +1 -1
  26. package/dist/resource/resource.interface.d.ts +20 -0
  27. package/dist/resource/resource.interface.d.ts.map +1 -0
  28. package/dist/service/config.api.d.ts.map +1 -1
  29. package/dist/service/index.d.ts +2 -2
  30. package/dist/service/index.d.ts.map +1 -1
  31. package/dist/service/registry.service.d.ts +19 -0
  32. package/dist/service/registry.service.d.ts.map +1 -1
  33. package/dist/shared/log/core/create-logger.d.ts.map +1 -0
  34. package/dist/shared/log/{log-batch.d.ts → core/log-batch.d.ts} +4 -4
  35. package/dist/shared/log/core/log-batch.d.ts.map +1 -0
  36. package/dist/shared/log/core/log-manager.d.ts.map +1 -0
  37. package/dist/shared/log/core/log-min-level.d.ts +15 -0
  38. package/dist/shared/log/core/log-min-level.d.ts.map +1 -0
  39. package/dist/shared/log/core/log-scope.d.ts.map +1 -0
  40. package/dist/shared/log/index.d.ts +13 -11
  41. package/dist/shared/log/index.d.ts.map +1 -1
  42. package/dist/shared/log/spool/collector.d.ts +21 -0
  43. package/dist/shared/log/spool/collector.d.ts.map +1 -0
  44. package/dist/shared/log/spool/config.d.ts +7 -0
  45. package/dist/shared/log/spool/config.d.ts.map +1 -0
  46. package/dist/shared/log/spool/coordinator.d.ts +18 -0
  47. package/dist/shared/log/spool/coordinator.d.ts.map +1 -0
  48. package/dist/shared/log/spool/enable.d.ts +23 -0
  49. package/dist/shared/log/spool/enable.d.ts.map +1 -0
  50. package/dist/shared/log/spool/file.d.ts +21 -0
  51. package/dist/shared/log/spool/file.d.ts.map +1 -0
  52. package/dist/shared/log/spool/interface.d.ts +55 -0
  53. package/dist/shared/log/spool/interface.d.ts.map +1 -0
  54. package/dist/shared/log/spool/paths.d.ts +6 -0
  55. package/dist/shared/log/spool/paths.d.ts.map +1 -0
  56. package/dist/shared/log/spool/process-roles.d.ts +17 -0
  57. package/dist/shared/log/spool/process-roles.d.ts.map +1 -0
  58. package/dist/shared/log/spool/register-collect-log-runner.d.ts +15 -0
  59. package/dist/shared/log/spool/register-collect-log-runner.d.ts.map +1 -0
  60. package/dist/shared/log/spool/service-lifecycle.d.ts +13 -0
  61. package/dist/shared/log/spool/service-lifecycle.d.ts.map +1 -0
  62. package/dist/shared/log/spool/writer.d.ts +32 -0
  63. package/dist/shared/log/spool/writer.d.ts.map +1 -0
  64. package/dist/shared/log/{log-persist-batch-id.d.ts → upload/batch-id.d.ts} +3 -3
  65. package/dist/shared/log/upload/batch-id.d.ts.map +1 -0
  66. package/dist/shared/log/upload/env.d.ts +7 -0
  67. package/dist/shared/log/upload/env.d.ts.map +1 -0
  68. package/dist/shared/log/{log-persist-flush.d.ts → upload/flush.d.ts} +3 -3
  69. package/dist/shared/log/upload/flush.d.ts.map +1 -0
  70. package/dist/shared/log/{log-persist-hook.d.ts → upload/hook.d.ts} +2 -2
  71. package/dist/shared/log/upload/hook.d.ts.map +1 -0
  72. package/dist/shared/log/upload/interface.d.ts +33 -0
  73. package/dist/shared/log/upload/interface.d.ts.map +1 -0
  74. package/dist/shared/log/upload/logger.d.ts +22 -0
  75. package/dist/shared/log/upload/logger.d.ts.map +1 -0
  76. package/package.json +1 -1
  77. package/src/browser.ts +4 -1
  78. package/src/node/preload/run-service-preload.ts +23 -4
  79. package/src/node/preload/service-preload.interface.ts +8 -0
  80. package/src/node/process/create-managed-child-processes.ts +1 -1
  81. package/src/node/process/managed-child-processes.ts +8 -1
  82. package/src/node/service-guard/service-guard-node.ts +5 -0
  83. package/src/node/service-host/index.ts +4 -0
  84. package/src/node/service-host/service-host.ts +22 -3
  85. package/src/node.ts +26 -19
  86. package/src/resource/resource.interface.ts +37 -0
  87. package/src/service/config.api.ts +1 -0
  88. package/src/service/index.ts +3 -0
  89. package/src/service/registry.service.ts +142 -0
  90. package/src/shared/log/README.md +206 -0
  91. package/src/shared/log/{log-batch.ts → core/log-batch.ts} +4 -4
  92. package/src/shared/log/{log-manager.ts → core/log-manager.ts} +3 -3
  93. package/src/shared/log/core/log-min-level.ts +46 -0
  94. package/src/shared/log/{log-scope.ts → core/log-scope.ts} +1 -1
  95. package/src/shared/log/index.ts +17 -15
  96. package/src/shared/log/spool/collector.ts +330 -0
  97. package/src/shared/log/spool/config.ts +56 -0
  98. package/src/shared/log/spool/coordinator.ts +55 -0
  99. package/src/shared/log/spool/enable.ts +136 -0
  100. package/src/shared/log/spool/file.ts +75 -0
  101. package/src/shared/log/spool/interface.ts +62 -0
  102. package/src/shared/log/spool/paths.ts +30 -0
  103. package/src/shared/log/spool/process-roles.ts +75 -0
  104. package/src/shared/log/spool/register-collect-log-runner.ts +63 -0
  105. package/src/shared/log/spool/service-lifecycle.ts +35 -0
  106. package/src/shared/log/spool/writer.ts +273 -0
  107. package/src/shared/log/{log-persist-batch-id.ts → upload/batch-id.ts} +2 -2
  108. package/src/shared/log/upload/env.ts +26 -0
  109. package/src/shared/log/{log-persist-flush.ts → upload/flush.ts} +8 -7
  110. package/src/shared/log/{log-persist-hook.ts → upload/hook.ts} +1 -1
  111. package/src/shared/log/upload/interface.ts +38 -0
  112. package/src/shared/log/upload/logger.ts +37 -0
  113. package/dist/chunks/enable-log-persist-Cu3SGxK7.js +0 -1674
  114. package/dist/chunks/enable-log-persist-Cu3SGxK7.js.map +0 -1
  115. package/dist/chunks/list.api-DSTOHzOC.js.map +0 -1
  116. package/dist/chunks/task-queue-BHvNgb-X.js.map +0 -1
  117. package/dist/idea/idea.interface.d.ts +0 -25
  118. package/dist/idea/idea.interface.d.ts.map +0 -1
  119. package/dist/shared/log/create-logger.d.ts.map +0 -1
  120. package/dist/shared/log/enable-log-persist.d.ts +0 -28
  121. package/dist/shared/log/enable-log-persist.d.ts.map +0 -1
  122. package/dist/shared/log/log-batch.d.ts.map +0 -1
  123. package/dist/shared/log/log-manager.d.ts.map +0 -1
  124. package/dist/shared/log/log-persist-batch-id.d.ts.map +0 -1
  125. package/dist/shared/log/log-persist-coordinator.d.ts +0 -37
  126. package/dist/shared/log/log-persist-coordinator.d.ts.map +0 -1
  127. package/dist/shared/log/log-persist-errors.d.ts +0 -4
  128. package/dist/shared/log/log-persist-errors.d.ts.map +0 -1
  129. package/dist/shared/log/log-persist-flush.d.ts.map +0 -1
  130. package/dist/shared/log/log-persist-hook.d.ts.map +0 -1
  131. package/dist/shared/log/log-persist-logger.d.ts +0 -16
  132. package/dist/shared/log/log-persist-logger.d.ts.map +0 -1
  133. package/dist/shared/log/log-persist-registry.d.ts +0 -18
  134. package/dist/shared/log/log-persist-registry.d.ts.map +0 -1
  135. package/dist/shared/log/log-persist.config.d.ts +0 -9
  136. package/dist/shared/log/log-persist.config.d.ts.map +0 -1
  137. package/dist/shared/log/log-persist.d.ts +0 -62
  138. package/dist/shared/log/log-persist.d.ts.map +0 -1
  139. package/dist/shared/log/log-persist.interface.d.ts +0 -132
  140. package/dist/shared/log/log-persist.interface.d.ts.map +0 -1
  141. package/dist/shared/log/log-scope.d.ts.map +0 -1
  142. package/src/idea/idea.interface.ts +0 -28
  143. package/src/shared/log/enable-log-persist.ts +0 -225
  144. package/src/shared/log/log-persist-coordinator.ts +0 -107
  145. package/src/shared/log/log-persist-errors.ts +0 -16
  146. package/src/shared/log/log-persist-logger.ts +0 -61
  147. package/src/shared/log/log-persist-registry.ts +0 -252
  148. package/src/shared/log/log-persist.config.ts +0 -115
  149. package/src/shared/log/log-persist.interface.ts +0 -150
  150. package/src/shared/log/log-persist.ts +0 -822
  151. /package/dist/shared/log/{create-logger.d.ts → core/create-logger.d.ts} +0 -0
  152. /package/dist/shared/log/{log-manager.d.ts → core/log-manager.d.ts} +0 -0
  153. /package/dist/shared/log/{log-scope.d.ts → core/log-scope.d.ts} +0 -0
  154. /package/src/shared/log/{create-logger.ts → core/create-logger.ts} +0 -0
@@ -1,5 +1,5 @@
1
- import type { LogEntry } from "./log-manager";
2
- import type { LogPersistLane } from "./log-persist.interface";
1
+ import type { LogEntry } from "../core/log-manager";
2
+ import type { LogPersistLane } from "./interface";
3
3
  /**
4
4
  * Deterministic List.value for a log batch — retries after timeout map to the same row key.
5
5
  * SHA-256 over canonical JSON (service + process + lane + entries in order).
@@ -10,4 +10,4 @@ export declare function computeLogBatchIdempotencyKey(input: {
10
10
  lane: LogPersistLane;
11
11
  entries: LogEntry[];
12
12
  }): string;
13
- //# sourceMappingURL=log-persist-batch-id.d.ts.map
13
+ //# sourceMappingURL=batch-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-id.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/upload/batch-id.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAoBlD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB,GAAG,MAAM,CAWT"}
@@ -0,0 +1,7 @@
1
+ /** Master switch — env name kept for compatibility (`LOG_PERSIST_ENABLED`). */
2
+ export declare function logSpoolEnabledFromEnv(env?: NodeJS.ProcessEnv): boolean;
3
+ export declare function logPersistServiceFromEnv(env?: NodeJS.ProcessEnv): string | undefined;
4
+ export declare function logPersistProcessFromEnv(env?: NodeJS.ProcessEnv): string | undefined;
5
+ /** `LOG_PERSIST_REGISTRY_DIR` or `RUNTIME_DATA_DIR`. */
6
+ export declare function runtimeDataDirFromEnv(env?: NodeJS.ProcessEnv): string | undefined;
7
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/upload/env.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEpF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAGjG;AAED,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAGjG;AAED,wDAAwD;AACxD,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAO9F"}
@@ -1,8 +1,8 @@
1
- import type { LogEntry } from "./log-manager";
2
- import type { BuildLogListDraftInput, LogListDraft } from "./log-persist.interface";
1
+ import type { LogEntry } from "../core/log-manager";
2
+ import type { BuildLogListDraftInput, LogListDraft } from "./interface";
3
3
  export declare function estimateEntriesBytes(entries: LogEntry[]): number;
4
4
  export declare function buildLogListDraft(input: BuildLogListDraftInput): LogListDraft;
5
5
  export declare function postLogBatch(draft: LogListDraft, postTimeoutMs: number): Promise<void>;
6
6
  /** Take a prefix of entries that fits within maxBytes. */
7
7
  export declare function takeEntriesWithinBytes(entries: LogEntry[], maxBytes: number): LogEntry[];
8
- //# sourceMappingURL=log-persist-flush.d.ts.map
8
+ //# sourceMappingURL=flush.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flush.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/upload/flush.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIxE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAShE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CA6B7E;AAoBD,wBAAsB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC5F;AAED,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAyBxF"}
@@ -1,6 +1,6 @@
1
- import type { LogEntry } from "./log-manager";
1
+ import type { LogEntry } from "../core/log-manager";
2
2
  type LogPersistOfferFn = (entry: LogEntry) => void;
3
3
  export declare function registerLogPersistOffer(fn: LogPersistOfferFn | null): void;
4
4
  export declare function offerToLogPersist(entry: LogEntry): void;
5
5
  export {};
6
- //# sourceMappingURL=log-persist-hook.d.ts.map
6
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/upload/hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,KAAK,iBAAiB,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAInD,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAE1E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEvD"}
@@ -0,0 +1,33 @@
1
+ import type { TargetDraft } from "../../../core.interface";
2
+ import type { List } from "../../../list/list.interface";
3
+ import type { LogEntry } from "../core/log-manager";
4
+ /**
5
+ * `ListDetails.loaderKey` stamped on every persisted log batch (write + read side).
6
+ * Business type: **LogBatch** (transport flush). Pairs with log-service **LogTrace**
7
+ * (`LogTrace.0`) after rekeying by `traceId`.
8
+ */
9
+ export declare const LOG_PERSIST_LOADER_KEY = "LogBatch.0";
10
+ /** Alias for {@link LOG_PERSIST_LOADER_KEY} — preferred when contrasting with LogTrace. */
11
+ export declare const LOG_BATCH_LOADER_KEY = "LogBatch.0";
12
+ /** Legacy transport metadata — fixed `"slow"` for spool uploads; required for downstream decode today. */
13
+ export type LogPersistLane = "fast" | "medium" | "slow";
14
+ export interface LogBatchMeta {
15
+ service: string;
16
+ process: string;
17
+ pid: number;
18
+ lane: LogPersistLane;
19
+ count: number;
20
+ from: number | null;
21
+ to: number | null;
22
+ flushedAt: number;
23
+ idempotencyKey: string;
24
+ }
25
+ export interface BuildLogListDraftInput {
26
+ service: string;
27
+ process: string;
28
+ lane: LogPersistLane;
29
+ idempotencyKey: string;
30
+ entries: LogEntry[];
31
+ }
32
+ export type LogListDraft = TargetDraft<List>;
33
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/upload/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,eAAyB,CAAC;AAE3D,0GAA0G;AAC1G,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** User-facing / lifecycle logs — may be persisted like normal app logs. */
2
+ export declare const LOG_PERSIST_TOPIC = "log-persist";
3
+ /** Operational logs from the persist pipeline — never re-offered to avoid feedback loops. */
4
+ export declare const LOG_PERSIST_INTERNAL_TOPIC = "log-persist-internal";
5
+ type PipelineLogData = Record<string, unknown>;
6
+ /** Supabase upload path (`postLogBatch`). */
7
+ export declare const persistLogger: {
8
+ debug: (message: string, data?: PipelineLogData) => void;
9
+ info: (message: string, data?: PipelineLogData) => void;
10
+ warn: (message: string, data?: PipelineLogData) => void;
11
+ error: (message: string, data?: PipelineLogData) => void;
12
+ };
13
+ /** File spool writer + collector. */
14
+ export declare const spoolLogger: {
15
+ debug: (message: string, data?: PipelineLogData) => void;
16
+ info: (message: string, data?: PipelineLogData) => void;
17
+ warn: (message: string, data?: PipelineLogData) => void;
18
+ error: (message: string, data?: PipelineLogData) => void;
19
+ };
20
+ export declare function isLogPersistInternalTopic(topic: string | undefined): boolean;
21
+ export {};
22
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/upload/logger.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,6FAA6F;AAC7F,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AAEjE,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAoB/C,6CAA6C;AAC7C,eAAO,MAAM,aAAa;qBARD,MAAM,SAAS,eAAe;oBAC/B,MAAM,SAAS,eAAe;oBAC9B,MAAM,SAAS,eAAe;qBAC7B,MAAM,SAAS,eAAe;CAKQ,CAAC;AAEhE,qCAAqC;AACrC,eAAO,MAAM,WAAW;qBAXC,MAAM,SAAS,eAAe;oBAC/B,MAAM,SAAS,eAAe;oBAC9B,MAAM,SAAS,eAAe;qBAC7B,MAAM,SAAS,eAAe;CAQK,CAAC;AAE7D,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE5E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "target-supabase-sdk",
3
- "version": "0.2.11",
3
+ "version": "0.2.13",
4
4
  "description": "Supabase client initializer and data access APIs",
5
5
  "license": "MIT",
6
6
  "author": "KyLoc20",
package/src/browser.ts CHANGED
@@ -28,7 +28,6 @@ export {
28
28
  } from "./extraction/extraction.api";
29
29
  export type { Extraction, ExtractionDetails } from "./extraction/extraction.interface";
30
30
  export { CategoryExtraction } from "./extraction/extraction.interface";
31
- export * from "./idea/idea.interface";
32
31
  export * from "./link/index";
33
32
  export * from "./list/index";
34
33
  export * from "./node/node.api";
@@ -172,6 +171,7 @@ export {
172
171
  registerServiceAtStartup,
173
172
  registrySlotRuntimePatchFromGuardResult,
174
173
  releaseSystemRegistrySlots,
174
+ releaseSystemRegistrySlotsByServiceId,
175
175
  resetSystemRegistryConfig,
176
176
  resetSystemRegistryConfigSchema,
177
177
  resolveActiveRegistryServiceId,
@@ -214,10 +214,13 @@ export {
214
214
  isLogBatchList,
215
215
  isLogEntry,
216
216
  LOG_BATCH_LOADER_KEY,
217
+ LOG_MIN_LEVEL_ENV_KEY,
217
218
  LOG_PERSIST_LOADER_KEY,
218
219
  LogLevel,
219
220
  logManager,
221
+ logMinLevelFromEnv,
220
222
  parseLogBatchMeta,
223
+ resolveLogMinLevel,
221
224
  } from "./shared/log";
222
225
  export { isHttpUrl, resolveFetchUrl } from "./shared/utils/fetch-url";
223
226
  export { getValueAtPath } from "./shared/utils/get-value-at-path";
@@ -1,12 +1,15 @@
1
1
  import { resolve } from "node:path";
2
- import { validateLogPersistPreloadEnv } from "../../shared/log/enable-log-persist";
3
- import { logPersistEnabledFromEnv } from "../../shared/log/log-persist.config";
2
+ import { logManager } from "../../shared/log/core/log-manager";
3
+ import { resolveLogMinLevel } from "../../shared/log/core/log-min-level";
4
+ import { validateLogSpoolPreloadEnv } from "../../shared/log/spool/enable";
5
+ import { mergeLogSpoolExtraProcessRolesEnv } from "../../shared/log/spool/process-roles";
6
+ import { logSpoolEnabledFromEnv } from "../../shared/log/upload/env";
4
7
  import { loadEnvFiles, pinEnvProfileFromArgv } from "../env/load-env";
5
8
  import { resolveProjectRootByPackageName } from "../env/project-root";
6
9
  import type { ServicePreloadOptions } from "./service-preload.interface";
7
10
 
8
11
  function applyServiceEnvDefaults(projectRoot: string, options: ServicePreloadOptions): void {
9
- if (!logPersistEnabledFromEnv()) {
12
+ if (!logSpoolEnabledFromEnv()) {
10
13
  return;
11
14
  }
12
15
 
@@ -20,6 +23,19 @@ function applyServiceEnvDefaults(projectRoot: string, options: ServicePreloadOpt
20
23
  const relative = options.runtimeDataDirRelative ?? "data/runtime";
21
24
  process.env.RUNTIME_DATA_DIR = resolve(projectRoot, relative);
22
25
  }
26
+
27
+ if (options.logSpoolExtraProcessRoles != null && options.logSpoolExtraProcessRoles.length > 0) {
28
+ mergeLogSpoolExtraProcessRolesEnv(process.env, options.logSpoolExtraProcessRoles);
29
+ }
30
+ }
31
+
32
+ function applyLogMinLevelFromEnv(options: ServicePreloadOptions): void {
33
+ if (options.applyLogMinLevel === false) {
34
+ return;
35
+ }
36
+ logManager.setOptions({
37
+ minLevel: resolveLogMinLevel({ defaultLevel: options.defaultLogMinLevel }),
38
+ });
23
39
  }
24
40
 
25
41
  /**
@@ -28,6 +44,7 @@ function applyServiceEnvDefaults(projectRoot: string, options: ServicePreloadOpt
28
44
  * Phase 1 — Resolve project root from service package name
29
45
  * Phase 2 — Load env files (`.env.local` / `.env`, or `.env.prod` when `--prod`)
30
46
  * Phase 3 — Apply SDK service env defaults + optional L3 hook
47
+ * Phase 3½ — Apply LOG_MIN_LEVEL → logManager.minLevel (after env load)
31
48
  * Phase 4 — Validate log-persist env when enabled
32
49
  * Phase 5 — Process diagnostics (TODO)
33
50
  *
@@ -42,7 +59,9 @@ export function runServicePreload(options: ServicePreloadOptions): void {
42
59
  applyServiceEnvDefaults(projectRoot, options);
43
60
  options.applyEnvDefaults?.(projectRoot);
44
61
 
45
- validateLogPersistPreloadEnv();
62
+ applyLogMinLevelFromEnv(options);
63
+
64
+ validateLogSpoolPreloadEnv();
46
65
 
47
66
  // TODO: Phase 5 — optional unhandledRejection / uncaughtException formatters
48
67
  // (formerly watch-service preload-diagnostics.mjs)
@@ -1,3 +1,5 @@
1
+ import type { LogLevel } from "../../shared/log/core/log-manager";
2
+
1
3
  export interface ServicePreloadOptions {
2
4
  /** `import.meta.url` from the service `scripts/preload.mjs`. */
3
5
  callerImportMetaUrl: string;
@@ -11,4 +13,10 @@ export interface ServicePreloadOptions {
11
13
  afterLoadEnv?: () => void;
12
14
  /** L3 hook after SDK defaults (legacy aliases, etc.). */
13
15
  applyEnvDefaults?: (projectRoot: string) => void;
16
+ /** Default when `LOG_MIN_LEVEL` unset; SDK default is DEBUG in dev, INFO in prod. */
17
+ defaultLogMinLevel?: LogLevel;
18
+ /** Apply `logManager.setOptions({ minLevel })` from env (default true). */
19
+ applyLogMinLevel?: boolean;
20
+ /** Extra spool roles beyond main|guard|scheduler|worker (e.g. `chrome-sidecar`). Merged into `LOG_SPOOL_EXTRA_PROCESS_ROLES`. */
21
+ logSpoolExtraProcessRoles?: readonly string[];
14
22
  }
@@ -1,4 +1,4 @@
1
- import { createLogger } from "../../shared/log/create-logger";
1
+ import { createLogger } from "../../shared/log/core/create-logger";
2
2
  import type { ManagedChildProcessesOptions } from "./managed-child-processes";
3
3
  import { ManagedChildProcesses } from "./managed-child-processes";
4
4
 
@@ -1,6 +1,7 @@
1
1
  import type { ChildProcess } from "node:child_process";
2
2
  import { resolve } from "node:path";
3
3
  import type { LoggerWithScope } from "../../shared/log";
4
+ import { resolveLogSpoolSpawnEnvForLabel } from "../../shared/log/spool/enable";
4
5
  import { isChildProcessRunning, spawnTsxChild } from "./process-spawn";
5
6
 
6
7
  export interface ManagedChildProcessesOptions {
@@ -80,12 +81,18 @@ export class ManagedChildProcesses {
80
81
  return { child: existing, created: false };
81
82
  }
82
83
 
84
+ const logSpoolEnv = resolveLogSpoolSpawnEnvForLabel(label);
85
+ const childEnv =
86
+ spawnOptions?.env != null
87
+ ? { ...process.env, ...logSpoolEnv, ...spawnOptions.env }
88
+ : { ...process.env, ...logSpoolEnv };
89
+
83
90
  const child = spawnTsxChild({
84
91
  projectRoot: this.projectRoot,
85
92
  entryScript,
86
93
  preloadModules: this.preloadModules,
87
94
  useTsx: spawnOptions?.useTsx ?? this.defaultUseTsx,
88
- env: spawnOptions?.env != null ? { ...process.env, ...spawnOptions.env } : process.env,
95
+ env: childEnv,
89
96
  });
90
97
 
91
98
  child.on("exit", (code: number | null, signal: NodeJS.Signals | null) => {
@@ -1,4 +1,5 @@
1
1
  import type { LoggerWithScope } from "../../shared/log";
2
+ import { registerCollectLogRunner } from "../../shared/log/spool/register-collect-log-runner";
2
3
  import { TriggerNode } from "../../trigger/trigger-node";
3
4
  import { registerServiceGuardRunner } from "./register-service-guard-runner";
4
5
  import { runReadinessGate } from "./run-readiness-gate";
@@ -28,6 +29,10 @@ class ServiceGuardNode extends TriggerNode {
28
29
  logTopic: options.logTopic,
29
30
  ...options.guardRunner,
30
31
  });
32
+ registerCollectLogRunner({
33
+ serviceValue: options.serviceValue,
34
+ getServiceId: options.guardRunner.getServiceId,
35
+ });
31
36
  return new ServiceGuardNode(options);
32
37
  }
33
38
 
@@ -1,3 +1,7 @@
1
+ export {
2
+ COLLECT_LOG_RUNNER_KEY,
3
+ registerCollectLogRunner,
4
+ } from "../../shared/log/spool/register-collect-log-runner";
1
5
  export type {
2
6
  RegisterServiceGuardRunnerOptions,
3
7
  RunReadinessGateInput,
@@ -1,6 +1,9 @@
1
1
  import { createLogger, type Service, ServiceRegistryError } from "../../browser";
2
2
  import { claimServiceRegistrySlot, type ServiceRegistrySession } from "../../service/registry-lifecycle";
3
3
  import type { LoggerWithScope } from "../../shared/log";
4
+ import { LOG_SPOOL_SERVICE_ID_ENV } from "../../shared/log/spool/config";
5
+ import { ensureLogSpoolFromEnv } from "../../shared/log/spool/enable";
6
+ import { logSpoolEnabledFromEnv } from "../../shared/log/upload/env";
4
7
  import type { ManagedChildProcesses } from "../process/managed-child-processes";
5
8
 
6
9
  export interface ServiceHostClosable {
@@ -10,6 +13,8 @@ export interface ServiceHostClosable {
10
13
  export interface ServiceHostContext {
11
14
  service: Service;
12
15
  session: ServiceRegistrySession;
16
+ /** Registry instance id — same as `service.id`; children inherit via spawn env injection. */
17
+ serviceId: string;
13
18
  }
14
19
 
15
20
  export interface ServiceHostOptions {
@@ -23,9 +28,11 @@ export interface ServiceHostOptions {
23
28
  prepare?: () => Promise<void>;
24
29
  createInstance: () => Promise<Service | { service: Service; baseUrl?: string }>;
25
30
  onRegistryClaimed?: (ctx: ServiceHostContext) => Promise<void>;
26
- startSupervisors?: () => void | Promise<void>;
31
+ startSupervisors?: (ctx: ServiceHostContext) => void | Promise<void>;
27
32
  waitUntilReady?: () => Promise<void>;
28
33
  startServer?: () => Promise<ServiceHostClosable>;
34
+ /** When true (default), enable file log spool for main after registry claim. */
35
+ enableLogSpoolAfterClaim?: boolean;
29
36
  /** Stop child processes and other local resources (not registry release). */
30
37
  onShutdown?: (signal: string) => Promise<void>;
31
38
  }
@@ -121,12 +128,24 @@ export function createServiceHost(options: ServiceHostOptions): ServiceHost {
121
128
  throw error;
122
129
  }
123
130
 
131
+ const hostCtx: ServiceHostContext = { service: session.service, session, serviceId: session.service.id };
132
+
124
133
  if (options.onRegistryClaimed != null) {
125
- await options.onRegistryClaimed({ service: session.service, session });
134
+ await options.onRegistryClaimed(hostCtx);
135
+ }
136
+
137
+ const enableSpool = options.enableLogSpoolAfterClaim ?? true;
138
+ if (enableSpool && logSpoolEnabledFromEnv()) {
139
+ process.env[LOG_SPOOL_SERVICE_ID_ENV] = session.service.id;
140
+ await ensureLogSpoolFromEnv({
141
+ serviceId: session.service.id,
142
+ serviceValue: options.serviceValue,
143
+ processRole: "main",
144
+ });
126
145
  }
127
146
 
128
147
  if (options.startSupervisors != null) {
129
- await options.startSupervisors();
148
+ await options.startSupervisors(hostCtx);
130
149
  }
131
150
 
132
151
  if (options.waitUntilReady != null) {
package/src/node.ts CHANGED
@@ -122,9 +122,11 @@ export type {
122
122
  } from "./node/service-host";
123
123
  export {
124
124
  applyRegistrySlotGuardStep,
125
+ COLLECT_LOG_RUNNER_KEY,
125
126
  createServiceHost,
126
127
  getWorkerSpawnCooldownLastAt,
127
128
  markWorkerSpawned,
129
+ registerCollectLogRunner,
128
130
  registerServiceGuardRunner,
129
131
  runReadinessGate,
130
132
  runServiceGuardTick,
@@ -133,27 +135,32 @@ export {
133
135
  ServiceGuardNode,
134
136
  } from "./node/service-host";
135
137
  export { RepoManager } from "./repo/repo-manager";
138
+ export { runCollectLogTick } from "./shared/log/spool/collector";
139
+ export { LOG_SPOOL_SERVICE_ID_ENV } from "./shared/log/spool/config";
140
+ export type { LogSpoolCoordinator, LogSpoolCoordinatorOptions } from "./shared/log/spool/coordinator";
141
+ export { createLogSpoolCoordinator } from "./shared/log/spool/coordinator";
136
142
  export {
137
- disableLogPersist,
138
- enableLogPersist,
139
- ensureLogPersistFromEnv,
140
- getLogPersistStats,
141
- logPersistEnabledFromEnv,
142
- resolveLogPersistRegistryPath,
143
- snapshotLogPersistReady,
144
- validateLogPersistPreloadEnv,
145
- waitForLogPersistReady,
146
- } from "./shared/log/enable-log-persist";
143
+ buildLogSpoolSpawnEnv,
144
+ ensureLogSpoolFromEnv,
145
+ getLogSpoolStats,
146
+ logSpoolEnabledFromEnv,
147
+ shutdownLogSpoolFromEnv,
148
+ validateLogSpoolPreloadEnv,
149
+ } from "./shared/log/spool/enable";
147
150
  export type {
148
- EnableLogPersistOptions,
149
- EnsureLogPersistFromEnvOptions,
150
- LogPersistLane,
151
- LogPersistReadySnapshot,
152
- LogPersistStats,
153
- WaitForLogPersistReadyOptions,
154
- } from "./shared/log/log-persist.interface";
155
- export type { LogPersistCoordinator, LogPersistCoordinatorOptions } from "./shared/log/log-persist-coordinator";
156
- export { createLogPersistCoordinator } from "./shared/log/log-persist-coordinator";
151
+ EnableLogSpoolOptions,
152
+ LogSpoolCoreProcessRole,
153
+ LogSpoolProcessRole,
154
+ LogSpoolWriterStats,
155
+ } from "./shared/log/spool/interface";
156
+ export { resolveLogSpoolRoot } from "./shared/log/spool/paths";
157
+ export {
158
+ enableLogSpoolFromEnvInChild,
159
+ getMainLogSpoolWriterStats,
160
+ isLogSpoolEnabled,
161
+ shutdownLogSpool,
162
+ } from "./shared/log/spool/service-lifecycle";
163
+ export type { LogBatchMeta, LogPersistLane } from "./shared/log/upload/interface";
157
164
  export type {
158
165
  ConfigSchema,
159
166
  LoadCachedJsConfigOptions,
@@ -0,0 +1,37 @@
1
+ import type { Target } from "../core.interface";
2
+
3
+ export enum CategoryResource {
4
+ RESOURCE = "resource",
5
+ }
6
+
7
+ export interface Resource extends Target {
8
+ /** For now same to value */
9
+ name: string;
10
+ /** Unique id, "vultr:149.28.16.125" */
11
+ value: string;
12
+ category: CategoryResource;
13
+ details: ResourceDetails;
14
+ }
15
+
16
+ export interface ResourceDetails {
17
+ manifestVersion: 0;
18
+ /** "vultr-vps" | "supabase-project" | "telegram-storage" */
19
+ loaderKey: string;
20
+ meta: unknown;
21
+ runtime: unknown;
22
+ }
23
+
24
+ // {
25
+ // name: "windows-storage:DESKTOP-K32MS2Q",
26
+ // value: "windows-storage:DESKTOP-K32MS2Q",
27
+ // category: CategoryResource.RESOURCE,
28
+ // tagList: [],
29
+ // details: {
30
+ // manifestVersion: 0,
31
+ // loaderKey: "windows-storage",
32
+ // meta: {
33
+ // hostname: "DESKTOP-K32MS2Q",
34
+ // },
35
+ // runtime: {},
36
+ // },
37
+ // }
@@ -61,6 +61,7 @@ export const DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS: readonly SystemRegistrySeedSlot
61
61
  { serviceValue: "storage-service" },
62
62
  { serviceValue: "gc-service" },
63
63
  { serviceValue: "upload-service" },
64
+ { serviceValue: "cv-service" },
64
65
  ] as const;
65
66
 
66
67
  const configCategoryFilter: QueryFilter = {
@@ -35,6 +35,8 @@ export type {
35
35
  PatchServiceRuntimeInput,
36
36
  RegisterServiceInput,
37
37
  ReleasedRegistrySlot,
38
+ ReleaseSystemRegistrySlotsByServiceIdInput,
39
+ ReleaseSystemRegistrySlotsByServiceIdOutcome,
38
40
  ReleaseSystemRegistrySlotsInput,
39
41
  ReleaseSystemRegistrySlotsOutcome,
40
42
  TargetSystemRegistrySlotView,
@@ -51,6 +53,7 @@ export {
51
53
  registerService,
52
54
  registerServiceAtStartup,
53
55
  releaseSystemRegistrySlots,
56
+ releaseSystemRegistrySlotsByServiceId,
54
57
  resolveActiveRegistryServiceId,
55
58
  ServiceRegistryError,
56
59
  unregisterService,