target-supabase-sdk 0.2.3 → 0.2.4

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 (155) hide show
  1. package/README.md +24 -18
  2. package/dist/browser.d.ts +11 -4
  3. package/dist/browser.d.ts.map +1 -1
  4. package/dist/browser.js +3 -3
  5. package/dist/chunks/{enable-log-persist-C7GJo_Nc.js → enable-log-persist-B8rg_wXG.js} +5 -6
  6. package/dist/chunks/enable-log-persist-B8rg_wXG.js.map +1 -0
  7. package/dist/chunks/{create-logger-DyH3mZ8p.js → list.api-Ab9v8yOg.js} +66 -57
  8. package/dist/chunks/list.api-Ab9v8yOg.js.map +1 -0
  9. package/dist/chunks/{word.interface-DLgRobKV.js → word.interface-B_fbVFOW.js} +1078 -97
  10. package/dist/chunks/word.interface-B_fbVFOW.js.map +1 -0
  11. package/dist/extraction/extraction.api.d.ts +117 -0
  12. package/dist/extraction/extraction.api.d.ts.map +1 -0
  13. package/dist/extraction/extraction.interface.d.ts +43 -0
  14. package/dist/extraction/extraction.interface.d.ts.map +1 -0
  15. package/dist/list/list.interface.d.ts +2 -2
  16. package/dist/list/list.interface.d.ts.map +1 -1
  17. package/dist/node/node-runtime.base.d.ts +13 -1
  18. package/dist/node/node-runtime.base.d.ts.map +1 -1
  19. package/dist/node/process/create-managed-child-processes.d.ts +12 -0
  20. package/dist/node/process/create-managed-child-processes.d.ts.map +1 -0
  21. package/dist/node/process/index.d.ts +3 -1
  22. package/dist/node/process/index.d.ts.map +1 -1
  23. package/dist/node/process/managed-child-processes.d.ts +15 -2
  24. package/dist/node/process/managed-child-processes.d.ts.map +1 -1
  25. package/dist/node/runtime-state/create-service-runtime-state-store.d.ts +23 -0
  26. package/dist/node/runtime-state/create-service-runtime-state-store.d.ts.map +1 -0
  27. package/dist/node/runtime-state/index.d.ts +4 -0
  28. package/dist/node/runtime-state/index.d.ts.map +1 -0
  29. package/dist/node/runtime-state/service-runtime-state.types.d.ts +57 -0
  30. package/dist/node/runtime-state/service-runtime-state.types.d.ts.map +1 -0
  31. package/dist/node/service-guard/index.d.ts +9 -0
  32. package/dist/node/service-guard/index.d.ts.map +1 -0
  33. package/dist/node/service-guard/register-service-guard-runner.d.ts +9 -0
  34. package/dist/node/service-guard/register-service-guard-runner.d.ts.map +1 -0
  35. package/dist/node/service-guard/run-readiness-gate.d.ts +11 -0
  36. package/dist/node/service-guard/run-readiness-gate.d.ts.map +1 -0
  37. package/dist/node/service-guard/run-service-guard-tick.d.ts +7 -0
  38. package/dist/node/service-guard/run-service-guard-tick.d.ts.map +1 -0
  39. package/dist/node/service-guard/service-guard-node.d.ts +18 -0
  40. package/dist/node/service-guard/service-guard-node.d.ts.map +1 -0
  41. package/dist/node/service-guard/service-guard.interface.d.ts +58 -0
  42. package/dist/node/service-guard/service-guard.interface.d.ts.map +1 -0
  43. package/dist/node/service-guard/worker-spawn-cooldown.d.ts +4 -0
  44. package/dist/node/service-guard/worker-spawn-cooldown.d.ts.map +1 -0
  45. package/dist/node/service-host/index.d.ts +9 -0
  46. package/dist/node/service-host/index.d.ts.map +1 -0
  47. package/dist/node/service-host/registry-slot-guard-step.d.ts +21 -0
  48. package/dist/node/service-host/registry-slot-guard-step.d.ts.map +1 -0
  49. package/dist/node/service-host/service-host.d.ts +36 -0
  50. package/dist/node/service-host/service-host.d.ts.map +1 -0
  51. package/dist/node/service-host/single-process-service.d.ts +21 -0
  52. package/dist/node/service-host/single-process-service.d.ts.map +1 -0
  53. package/dist/node.d.ts +15 -2
  54. package/dist/node.d.ts.map +1 -1
  55. package/dist/node.js +2088 -1495
  56. package/dist/node.js.map +1 -1
  57. package/dist/preload.js +3 -3
  58. package/dist/service/config.api.d.ts +143 -0
  59. package/dist/service/config.api.d.ts.map +1 -0
  60. package/dist/service/config.interface.d.ts +22 -0
  61. package/dist/service/config.interface.d.ts.map +1 -0
  62. package/dist/service/index.d.ts +16 -17
  63. package/dist/service/index.d.ts.map +1 -1
  64. package/dist/service/registry-lifecycle.d.ts +43 -0
  65. package/dist/service/registry-lifecycle.d.ts.map +1 -0
  66. package/dist/service/registry.service.d.ts +94 -0
  67. package/dist/service/registry.service.d.ts.map +1 -0
  68. package/dist/service/service-bootstrap.d.ts +28 -0
  69. package/dist/service/service-bootstrap.d.ts.map +1 -0
  70. package/dist/service/service.api.d.ts +160 -0
  71. package/dist/service/service.api.d.ts.map +1 -1
  72. package/dist/service/service.interface.d.ts +32 -1
  73. package/dist/service/service.interface.d.ts.map +1 -1
  74. package/dist/shared/log/index.d.ts +4 -0
  75. package/dist/shared/log/index.d.ts.map +1 -1
  76. package/dist/shared/log/log-batch.d.ts +44 -0
  77. package/dist/shared/log/log-batch.d.ts.map +1 -0
  78. package/dist/shared/log/log-persist-coordinator.d.ts +37 -0
  79. package/dist/shared/log/log-persist-coordinator.d.ts.map +1 -0
  80. package/dist/shared/log/log-persist-flush.d.ts.map +1 -1
  81. package/dist/shared/log/log-persist.config.d.ts +0 -1
  82. package/dist/shared/log/log-persist.config.d.ts.map +1 -1
  83. package/dist/shared/log/log-persist.interface.d.ts +8 -0
  84. package/dist/shared/log/log-persist.interface.d.ts.map +1 -1
  85. package/dist/shared/utils/config-path.utils.d.ts +21 -0
  86. package/dist/shared/utils/config-path.utils.d.ts.map +1 -1
  87. package/dist/shared/utils/get-value-at-path.d.ts +3 -0
  88. package/dist/shared/utils/get-value-at-path.d.ts.map +1 -0
  89. package/dist/task/index.d.ts +2 -0
  90. package/dist/task/index.d.ts.map +1 -1
  91. package/dist/task/task-manager.d.ts +1 -1
  92. package/dist/task/task-manager.d.ts.map +1 -1
  93. package/dist/task/task-post-retry.api.d.ts +24 -0
  94. package/dist/task/task-post-retry.api.d.ts.map +1 -0
  95. package/dist/task/task-repo-context.d.ts +7 -1
  96. package/dist/task/task-repo-context.d.ts.map +1 -1
  97. package/dist/trigger/trigger-manager.d.ts +1 -1
  98. package/dist/trigger/trigger-manager.d.ts.map +1 -1
  99. package/dist/trigger/trigger-node.d.ts +1 -0
  100. package/dist/trigger/trigger-node.d.ts.map +1 -1
  101. package/dist/trigger/trigger.constant.d.ts +1 -1
  102. package/dist/trigger/trigger.constant.d.ts.map +1 -1
  103. package/dist/trigger/trigger.interface.d.ts +10 -0
  104. package/dist/trigger/trigger.interface.d.ts.map +1 -1
  105. package/package.json +4 -2
  106. package/src/browser.ts +98 -4
  107. package/src/extraction/extraction.api.ts +232 -0
  108. package/src/extraction/extraction.interface.ts +45 -0
  109. package/src/list/list.interface.ts +2 -2
  110. package/src/node/node-runtime.base.ts +37 -6
  111. package/src/node/process/create-managed-child-processes.ts +27 -0
  112. package/src/node/process/index.ts +4 -0
  113. package/src/node/process/managed-child-processes.ts +48 -15
  114. package/src/node/runtime-state/create-service-runtime-state-store.ts +125 -0
  115. package/src/node/runtime-state/index.ts +17 -0
  116. package/src/node/runtime-state/service-runtime-state.types.ts +64 -0
  117. package/src/node/service-guard/index.ts +17 -0
  118. package/src/node/service-guard/register-service-guard-runner.ts +64 -0
  119. package/src/node/service-guard/run-readiness-gate.ts +34 -0
  120. package/src/node/service-guard/run-service-guard-tick.ts +106 -0
  121. package/src/node/service-guard/service-guard-node.ts +52 -0
  122. package/src/node/service-guard/service-guard.interface.ts +64 -0
  123. package/src/node/service-guard/worker-spawn-cooldown.ts +13 -0
  124. package/src/node/service-host/index.ts +30 -0
  125. package/src/node/service-host/registry-slot-guard-step.ts +57 -0
  126. package/src/node/service-host/service-host.ts +168 -0
  127. package/src/node/service-host/single-process-service.ts +58 -0
  128. package/src/node.ts +69 -0
  129. package/src/service/config.api.ts +224 -0
  130. package/src/service/config.interface.ts +25 -0
  131. package/src/service/index.ts +74 -149
  132. package/src/service/registry-lifecycle.ts +144 -0
  133. package/src/service/registry.service.ts +564 -0
  134. package/src/service/service-bootstrap.ts +74 -0
  135. package/src/service/service.api.ts +13 -0
  136. package/src/service/service.interface.ts +36 -1
  137. package/src/shared/log/index.ts +13 -0
  138. package/src/shared/log/log-batch.ts +156 -0
  139. package/src/shared/log/log-persist-coordinator.ts +107 -0
  140. package/src/shared/log/log-persist-flush.ts +3 -3
  141. package/src/shared/log/log-persist.config.ts +0 -2
  142. package/src/shared/log/log-persist.interface.ts +10 -0
  143. package/src/shared/utils/config-path.utils.ts +35 -0
  144. package/src/shared/utils/get-value-at-path.ts +17 -0
  145. package/src/task/index.ts +2 -0
  146. package/src/task/task-manager.ts +10 -4
  147. package/src/task/task-post-retry.api.ts +61 -0
  148. package/src/task/task-repo-context.ts +8 -1
  149. package/src/trigger/trigger-manager.ts +4 -2
  150. package/src/trigger/trigger-node.ts +10 -4
  151. package/src/trigger/trigger.constant.ts +1 -1
  152. package/src/trigger/trigger.interface.ts +10 -0
  153. package/dist/chunks/create-logger-DyH3mZ8p.js.map +0 -1
  154. package/dist/chunks/enable-log-persist-C7GJo_Nc.js.map +0 -1
  155. package/dist/chunks/word.interface-DLgRobKV.js.map +0 -1
@@ -0,0 +1,117 @@
1
+ import { z } from "zod";
2
+ import type { SupabaseResponse } from "../core.interface";
3
+ import { type Extraction } from "./extraction.interface";
4
+ export declare const postExtractionSchema: z.ZodObject<{
5
+ name: z.ZodString;
6
+ /** Source Target id — for log analysis this is the producing Task id. */
7
+ sourceId: z.ZodString;
8
+ loaderKey: z.ZodString;
9
+ meta: z.ZodOptional<z.ZodUnknown>;
10
+ objects: z.ZodArray<z.ZodUnknown, "many">;
11
+ tagList: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
12
+ extra: z.ZodOptional<z.ZodString>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ name: string;
15
+ tagList: string[];
16
+ sourceId: string;
17
+ loaderKey: string;
18
+ objects: unknown[];
19
+ extra?: string | undefined;
20
+ meta?: unknown;
21
+ }, {
22
+ name: string;
23
+ sourceId: string;
24
+ loaderKey: string;
25
+ objects: unknown[];
26
+ tagList?: string[] | undefined;
27
+ extra?: string | undefined;
28
+ meta?: unknown;
29
+ }>;
30
+ export type PostExtractionPayload = z.infer<typeof postExtractionSchema>;
31
+ export declare const getExtractionSchema: z.ZodEffects<z.ZodObject<{
32
+ id: z.ZodOptional<z.ZodString>;
33
+ sourceId: z.ZodOptional<z.ZodString>;
34
+ loaderKey: z.ZodOptional<z.ZodString>;
35
+ }, "strip", z.ZodTypeAny, {
36
+ id?: string | undefined;
37
+ sourceId?: string | undefined;
38
+ loaderKey?: string | undefined;
39
+ }, {
40
+ id?: string | undefined;
41
+ sourceId?: string | undefined;
42
+ loaderKey?: string | undefined;
43
+ }>, {
44
+ id?: string | undefined;
45
+ sourceId?: string | undefined;
46
+ loaderKey?: string | undefined;
47
+ }, {
48
+ id?: string | undefined;
49
+ sourceId?: string | undefined;
50
+ loaderKey?: string | undefined;
51
+ }>;
52
+ export type GetExtractionPayload = z.infer<typeof getExtractionSchema>;
53
+ export declare const scanExtractionListSchema: z.ZodObject<{
54
+ loaderKey: z.ZodOptional<z.ZodString>;
55
+ sourceId: z.ZodOptional<z.ZodString>;
56
+ maxRows: z.ZodOptional<z.ZodNumber>;
57
+ ascending: z.ZodOptional<z.ZodBoolean>;
58
+ }, "strip", z.ZodTypeAny, {
59
+ ascending?: boolean | undefined;
60
+ maxRows?: number | undefined;
61
+ sourceId?: string | undefined;
62
+ loaderKey?: string | undefined;
63
+ }, {
64
+ ascending?: boolean | undefined;
65
+ maxRows?: number | undefined;
66
+ sourceId?: string | undefined;
67
+ loaderKey?: string | undefined;
68
+ }>;
69
+ export type ScanExtractionListPayload = z.infer<typeof scanExtractionListSchema>;
70
+ export declare const patchExtractionObjectsSchema: z.ZodObject<{
71
+ id: z.ZodString;
72
+ objects: z.ZodArray<z.ZodUnknown, "many">;
73
+ meta: z.ZodOptional<z.ZodUnknown>;
74
+ expectedRevision: z.ZodOptional<z.ZodNumber>;
75
+ }, "strip", z.ZodTypeAny, {
76
+ id: string;
77
+ objects: unknown[];
78
+ meta?: unknown;
79
+ expectedRevision?: number | undefined;
80
+ }, {
81
+ id: string;
82
+ objects: unknown[];
83
+ meta?: unknown;
84
+ expectedRevision?: number | undefined;
85
+ }>;
86
+ export type PatchExtractionObjectsPayload = z.infer<typeof patchExtractionObjectsSchema>;
87
+ /** Create an Extraction row for `(sourceId, loaderKey)`. Idempotent on redundancy key. */
88
+ export declare const postExtraction: (payload: {
89
+ name: string;
90
+ tagList: string[];
91
+ sourceId: string;
92
+ loaderKey: string;
93
+ objects: unknown[];
94
+ extra?: string | undefined;
95
+ meta?: unknown;
96
+ }) => SupabaseResponse<Extraction> | Promise<SupabaseResponse<Extraction>>;
97
+ /** Fetch one Extraction by row id, or by `(sourceId, loaderKey)`. */
98
+ export declare const getExtraction: (payload: {
99
+ id?: string | undefined;
100
+ sourceId?: string | undefined;
101
+ loaderKey?: string | undefined;
102
+ }) => SupabaseResponse<Extraction> | Promise<SupabaseResponse<Extraction>>;
103
+ /** Scan Extraction rows (newest first by default). */
104
+ export declare const scanExtractionList: (payload: {
105
+ ascending?: boolean | undefined;
106
+ maxRows?: number | undefined;
107
+ sourceId?: string | undefined;
108
+ loaderKey?: string | undefined;
109
+ }) => SupabaseResponse<Extraction[]> | Promise<SupabaseResponse<Extraction[]>>;
110
+ /** Replace {@link ExtractionDetails.objects} and bump `meta.revision`. */
111
+ export declare const patchExtractionObjects: (payload: {
112
+ id: string;
113
+ objects: unknown[];
114
+ meta?: unknown;
115
+ expectedRevision?: number | undefined;
116
+ }) => SupabaseResponse<Extraction> | Promise<SupabaseResponse<Extraction>>;
117
+ //# sourceMappingURL=extraction.api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.api.d.ts","sourceRoot":"","sources":["../../src/extraction/extraction.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAAsB,KAAK,UAAU,EAA0B,MAAM,wBAAwB,CAAC;AAKrG,eAAO,MAAM,oBAAoB;;IAE7B,yEAAyE;;;;;;;;;;;;;;;;;;;;;;;EAO3E,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEzE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;EAgB3B,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEvE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAKnC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEjF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;EAKvC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AA8BzF,0FAA0F;AAC1F,eAAO,MAAM,cAAc;;;;;;;;0EAmCzB,CAAC;AAEH,qEAAqE;AACrE,eAAO,MAAM,aAAa;;;;0EA2BxB,CAAC;AAEH,sDAAsD;AACtD,eAAO,MAAM,kBAAkB;;;;;8EAkB7B,CAAC;AAEH,0EAA0E;AAC1E,eAAO,MAAM,sBAAsB;;;;;0EA2CjC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { Target } from "../core.interface";
2
+ /**
3
+ * Interpretation layer for a source Target: pipeline output (systems, models, algorithms)
4
+ * materialized as structured data. Not a process (see Task) or raw bytes (see Parcel).
5
+ *
6
+ * @see `.cursor/skills/extraction/SKILL.md`
7
+ */
8
+ export interface Extraction extends Target {
9
+ /** Human-readable label. */
10
+ name: string;
11
+ /**
12
+ * Source Target id — the single input this row interprets (any category).
13
+ * Immutable after create. Indexed for lookup: all Extractions where `value = sourceId`.
14
+ * Not a dedup hash or pipeline run id.
15
+ */
16
+ value: string;
17
+ category: CategoryExtraction;
18
+ details: ExtractionDetails;
19
+ }
20
+ export declare enum CategoryExtraction {
21
+ EXTRACTION = "extraction"
22
+ }
23
+ export interface ExtractionDetails {
24
+ manifestVersion: 0;
25
+ /**
26
+ * Extractor identifier. Together with {@link Extraction.value} (source id) forms the
27
+ * logical unique key: one Extraction row per `(sourceTargetId, loaderKey)`.
28
+ * Determines how to parse and render {@link objects} (Extractor-owned schema).
29
+ */
30
+ loaderKey: string;
31
+ /**
32
+ * Extractor-owned metadata for this interpretation (e.g. revision, updatedAt, pipeline).
33
+ * Updated alongside {@link objects}; kept `unknown` at SDK boundary — see Extractor module.
34
+ */
35
+ meta: unknown;
36
+ /**
37
+ * Latest mutable analysis results for this source + Extractor — not an immutable snapshot.
38
+ * Shape is defined by the Extractor for {@link loaderKey}; SDK keeps `unknown[]` at core.
39
+ * Large payloads should reference Parcel (or similar) rather than inline in this array.
40
+ */
41
+ objects: Array<unknown>;
42
+ }
43
+ //# sourceMappingURL=extraction.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.interface.d.ts","sourceRoot":"","sources":["../../src/extraction/extraction.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM;IACtC,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,iBAAiB,CAAC;CAC9B;AAED,oBAAY,kBAAkB;IAC1B,UAAU,eAAe;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAC9B,eAAe,EAAE,CAAC,CAAC;IACnB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CAC3B"}
@@ -10,8 +10,8 @@ export interface List extends Target {
10
10
  }
11
11
  export interface ListDetails {
12
12
  manifestVersion: number;
13
- /** If string, it is the meta brief of the list, TODO */
14
- meta: string;
13
+ /** Optional list metadata (shape depends on `loaderKey`). */
14
+ meta: unknown;
15
15
  /** If string, it is the url of the preview TODO */
16
16
  preview: string;
17
17
  /** How to render the List */
@@ -1 +1 @@
1
- {"version":3,"file":"list.interface.d.ts","sourceRoot":"","sources":["../../src/list/list.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,oBAAY,YAAY;IACpB,IAAI,SAAS;CAChB;AAED,MAAM,WAAW,IAAK,SAAQ,MAAM;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CACzB"}
1
+ {"version":3,"file":"list.interface.d.ts","sourceRoot":"","sources":["../../src/list/list.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,oBAAY,YAAY;IACpB,IAAI,SAAS;CAChB;AAED,MAAM,WAAW,IAAK,SAAQ,MAAM;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,IAAI,EAAE,OAAO,CAAC;IACd,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CACzB"}
@@ -5,6 +5,15 @@ export interface NodeLoopContext {
5
5
  loopTraceId: string;
6
6
  nodeId: string;
7
7
  }
8
+ /** Shared options for {@link BaseNodeRuntime} and subclasses (e.g. TriggerNode). */
9
+ export interface BaseNodeRuntimeOptions {
10
+ /**
11
+ * Called after node logout (or when the node was never registered),
12
+ * immediately before `process.exit`. Use for best-effort cleanup such as
13
+ * {@link unregisterServiceAtShutdown}. Errors are logged and ignored.
14
+ */
15
+ beforeProcessExit?: () => void | Promise<void>;
16
+ }
8
17
  export declare const LOG_TOPIC_NODE = "node";
9
18
  /**
10
19
  * Shared node process runtime: bootstrap, main-loop frame, heartbeat, commands, shutdown.
@@ -15,6 +24,7 @@ declare abstract class BaseNodeRuntime {
15
24
  /** Log `nodeId` label while startup has not yet received an assigned id from Supabase. */
16
25
  private static readonly NODE_ID_PENDING_ASSIGNMENT;
17
26
  protected readonly runtimeModule: string;
27
+ private readonly beforeProcessExitHook;
18
28
  private _localNodeId;
19
29
  private _isNodeIdLocked;
20
30
  private isRunning;
@@ -26,7 +36,9 @@ declare abstract class BaseNodeRuntime {
26
36
  private startPromise;
27
37
  get localNodeId(): string | null;
28
38
  protected set localNodeId(value: string);
29
- protected constructor(runtimeModule: string);
39
+ protected constructor(runtimeModule: string, options?: BaseNodeRuntimeOptions);
40
+ private runBeforeProcessExit;
41
+ private exitProcess;
30
42
  /** Hook: task registration, trigger config load, etc. Throw to abort bootstrap. */
31
43
  protected abstract onBeforeRegisterNode(logger: LoggerWithScope): Promise<void>;
32
44
  /** Hook: one iteration body after commands + heartbeat gate. */
@@ -1 +1 @@
1
- {"version":3,"file":"node-runtime.base.d.ts","sourceRoot":"","sources":["../../src/node/node-runtime.base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,EAGH,KAAK,eAAe,EACpB,QAAQ,EAIX,MAAM,eAAe,CAAC;AAMvB,sCAAsC;AACtC,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,cAAc,SAAS,CAAC;AAIrC;;;GAGG;AACH,uBAAe,eAAe;IAC1B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,KAAK;IAC1D,0FAA0F;IAC1F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAqB;IAEvE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAEzC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAS;IAEhC,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,4BAA4B,CAAK;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAW;IACxC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,YAAY,CAA8B;IAElD,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED,SAAS,KAAK,WAAW,CAAC,KAAK,EAAE,MAAM,EAUtC;IAED,SAAS,aAAa,aAAa,EAAE,MAAM;IAQ3C,mFAAmF;IACnF,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/E,gEAAgE;IAChE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1F,iGAAiG;IACjG,SAAS,CAAC,kBAAkB,IAAI,QAAQ;IAIxC,wEAAwE;IACxE,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC,OAAO,CAAC,YAAY;IAIpB,SAAS,CAAC,cAAc,IAAI,OAAO;IAInC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIhD,OAAO,CAAC,wBAAwB;IAsD1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,QAAQ;YAsER,OAAO;IAoDf,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YA6B/C,WAAW;IAoCnB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAkDjD,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DvD,uFAAuF;cACvE,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrF;;;OAGG;cACa,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAG7F;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"node-runtime.base.d.ts","sourceRoot":"","sources":["../../src/node/node-runtime.base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,EAGH,KAAK,eAAe,EACpB,QAAQ,EAIX,MAAM,eAAe,CAAC;AAMvB,sCAAsC;AACtC,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,oFAAoF;AACpF,MAAM,WAAW,sBAAsB;IACnC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,eAAO,MAAM,cAAc,SAAS,CAAC;AAIrC;;;GAGG;AACH,uBAAe,eAAe;IAC1B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,KAAK;IAC1D,0FAA0F;IAC1F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAqB;IAEvE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsC;IAE5E,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAS;IAEhC,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,4BAA4B,CAAK;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAW;IACxC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,YAAY,CAA8B;IAElD,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED,SAAS,KAAK,WAAW,CAAC,KAAK,EAAE,MAAM,EAUtC;IAED,SAAS,aAAa,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB;YAS/D,oBAAoB;YAcpB,WAAW;IAKzB,mFAAmF;IACnF,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/E,gEAAgE;IAChE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1F,iGAAiG;IACjG,SAAS,CAAC,kBAAkB,IAAI,QAAQ;IAIxC,wEAAwE;IACxE,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC,OAAO,CAAC,YAAY;IAIpB,SAAS,CAAC,cAAc,IAAI,OAAO;IAInC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIhD,OAAO,CAAC,wBAAwB;IAsD1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,QAAQ;YAsER,OAAO;IAoDf,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YA6B/C,WAAW;IAoCnB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAkDjD,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DvD,uFAAuF;cACvE,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrF;;;OAGG;cACa,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAG7F;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ManagedChildProcessesOptions } from "./managed-child-processes";
2
+ import { ManagedChildProcesses } from "./managed-child-processes";
3
+ export type CreateManagedChildProcessesOptions = Pick<ManagedChildProcessesOptions, "projectRoot" | "preloadModules" | "useTsx" | "graceMs"> & {
4
+ /** Defaults to `createLogger({ module: "launcher" })`. */
5
+ logger?: ManagedChildProcessesOptions["logger"];
6
+ };
7
+ /**
8
+ * Standard L3 service child-process registry: node (not tsx), service preload, launcher logger.
9
+ * Each service keeps a singleton in `src/startup/child-processes.ts`.
10
+ */
11
+ export declare function createManagedChildProcesses(options: CreateManagedChildProcessesOptions): ManagedChildProcesses;
12
+ //# sourceMappingURL=create-managed-child-processes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-managed-child-processes.d.ts","sourceRoot":"","sources":["../../../src/node/process/create-managed-child-processes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,MAAM,kCAAkC,GAAG,IAAI,CACjD,4BAA4B,EAC5B,aAAa,GAAG,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAC1D,GAAG;IACA,0DAA0D;IAC1D,MAAM,CAAC,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAC;CACnD,CAAC;AAIF;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,kCAAkC,GAAG,qBAAqB,CAQ9G"}
@@ -1,4 +1,6 @@
1
- export type { ManagedChildProcessesOptions, SpawnChildResult, StopAllChildrenOptions, } from "./managed-child-processes";
1
+ export type { CreateManagedChildProcessesOptions } from "./create-managed-child-processes";
2
+ export { createManagedChildProcesses } from "./create-managed-child-processes";
3
+ export type { CriticalExitHandler, ManagedChildProcessesOptions, SpawnChildOptions, SpawnChildResult, StopAllChildrenOptions, } from "./managed-child-processes";
2
4
  export { ManagedChildProcesses } from "./managed-child-processes";
3
5
  export type { BuildNodeImportArgsInput, SpawnTsxChildOptions } from "./process-spawn";
4
6
  export { buildNodeImportArgs, isChildProcessRunning, spawnTsxChild } from "./process-spawn";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/process/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/process/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,YAAY,EACR,mBAAmB,EACnB,4BAA4B,EAC5B,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -5,7 +5,12 @@ export interface ManagedChildProcessesOptions {
5
5
  preloadModules?: readonly string[];
6
6
  /** SIGTERM -> wait -> SIGKILL delay (default 5000 ms). */
7
7
  graceMs?: number;
8
- logger?: Pick<LoggerWithScope, "info" | "warn" | "error">;
8
+ logger?: Pick<LoggerWithScope, "info" | "warn" | "error" | "critical">;
9
+ useTsx?: boolean;
10
+ }
11
+ export interface SpawnChildOptions {
12
+ env?: Record<string, string>;
13
+ useTsx?: boolean;
9
14
  }
10
15
  export interface SpawnChildResult {
11
16
  child: ChildProcess;
@@ -16,6 +21,10 @@ export interface StopAllChildrenOptions {
16
21
  /** PIDs to SIGTERM when not tracked by this registry (cross-process cleanup). */
17
22
  extraPids?: readonly number[];
18
23
  }
24
+ export interface CriticalExitHandler {
25
+ labels: readonly string[];
26
+ onCriticalExit: (label: string, code: number | null, signal: NodeJS.Signals | null) => void;
27
+ }
19
28
  /**
20
29
  * Process-local registry for tsx child processes (supervisor, worker, etc.).
21
30
  * Each OS process has its own instance - do not expect cross-process PID tracking.
@@ -24,13 +33,17 @@ export declare class ManagedChildProcesses {
24
33
  private readonly projectRoot;
25
34
  private readonly preloadModules;
26
35
  private readonly graceMs;
36
+ private readonly defaultUseTsx;
27
37
  private readonly logger?;
28
38
  private readonly byLabel;
39
+ private criticalExitHandler;
40
+ private suppressCriticalExit;
29
41
  constructor(options: ManagedChildProcessesOptions);
42
+ setCriticalExitHandler(handler: CriticalExitHandler): void;
30
43
  get(label: string): ChildProcess | null;
31
44
  getRunning(label: string): ChildProcess | null;
32
45
  runningLabels(): string[];
33
- spawn(label: string, entryScript: string): SpawnChildResult;
46
+ spawn(label: string, entryScript: string, spawnOptions?: SpawnChildOptions): SpawnChildResult;
34
47
  stopAll(options?: StopAllChildrenOptions): Promise<void>;
35
48
  private stopChild;
36
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"managed-child-processes.d.ts","sourceRoot":"","sources":["../../../src/node/process/managed-child-processes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,MAAM,WAAW,4BAA4B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACnC,iFAAiF;IACjF,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAmD;IAC3E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;gBAE/C,OAAO,EAAE,4BAA4B;IAOjD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAIvC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAK9C,aAAa,IAAI,MAAM,EAAE;IAMzB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB;IAkCrD,OAAO,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9D,OAAO,CAAC,SAAS;CAWpB"}
1
+ {"version":3,"file":"managed-child-processes.d.ts","sourceRoot":"","sources":["../../../src/node/process/managed-child-processes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,MAAM,WAAW,4BAA4B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC,CAAC;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACnC,iFAAiF;IACjF,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;CAC/F;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAgE;IACxF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,OAAO,EAAE,4BAA4B;IAQjD,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI1D,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAIvC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAK9C,aAAa,IAAI,MAAM,EAAE;IAMzB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,iBAAiB,GAAG,gBAAgB;IA2CvF,OAAO,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9D,OAAO,CAAC,SAAS;CAWpB"}
@@ -0,0 +1,23 @@
1
+ import { type JsonStatePatch } from "../fs/json-state-store";
2
+ import type { DefaultExtraRuntimeSlices, ServiceRuntimeExtraSlicePatch, ServiceRuntimeNestedKeys, ServiceRuntimeState } from "./service-runtime-state.types";
3
+ export interface CreateServiceRuntimeStateStoreOptions<TExtraSlices extends Record<string, object> = DefaultExtraRuntimeSlices> {
4
+ filePath: string;
5
+ /** Default values for service-specific top-level nested slices. */
6
+ extraDefaults?: TExtraSlices;
7
+ }
8
+ export interface FinishRunnerTickOptions<TExtraSlices extends Record<string, object> = DefaultExtraRuntimeSlices> {
9
+ nowMs: number;
10
+ lastFired: Record<string, string>;
11
+ postedCount?: number;
12
+ /** Patch extra slices in the same atomic write as the scheduler tick. */
13
+ extra?: ServiceRuntimeExtraSlicePatch<TExtraSlices>;
14
+ }
15
+ export interface ServiceRuntimeStateStore<TExtraSlices extends Record<string, object> = DefaultExtraRuntimeSlices> {
16
+ readRuntimeState(): Promise<ServiceRuntimeState<TExtraSlices>>;
17
+ writeRuntimeState(patch: JsonStatePatch<ServiceRuntimeState<TExtraSlices>, ServiceRuntimeNestedKeys<TExtraSlices>>): Promise<ServiceRuntimeState<TExtraSlices>>;
18
+ resetRuntimeStateForStartup(): Promise<ServiceRuntimeState<TExtraSlices>>;
19
+ finishRunnerTick(options: FinishRunnerTickOptions<TExtraSlices>): Promise<void>;
20
+ }
21
+ /** JSON file-backed service runtime state (L3 blueprint) with typed core slices and extensions. */
22
+ export declare function createServiceRuntimeStateStore<TExtraSlices extends Record<string, object> = DefaultExtraRuntimeSlices>(options: CreateServiceRuntimeStateStoreOptions<TExtraSlices>): ServiceRuntimeStateStore<TExtraSlices>;
23
+ //# sourceMappingURL=create-service-runtime-state-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-service-runtime-state-store.d.ts","sourceRoot":"","sources":["../../../src/node/runtime-state/create-service-runtime-state-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAqD,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAChH,OAAO,KAAK,EACR,yBAAyB,EAIzB,6BAA6B,EAC7B,wBAAwB,EACxB,mBAAmB,EAEtB,MAAM,+BAA+B,CAAC;AAIvC,MAAM,WAAW,qCAAqC,CAClD,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,yBAAyB;IAEvE,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,aAAa,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB,CAAC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,yBAAyB;IAC5G,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,KAAK,CAAC,EAAE,6BAA6B,CAAC,YAAY,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,wBAAwB,CAAC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,yBAAyB;IAC7G,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,iBAAiB,CACb,KAAK,EAAE,cAAc,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,wBAAwB,CAAC,YAAY,CAAC,CAAC,GACjG,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9C,2BAA2B,IAAI,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1E,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF;AA0CD,mGAAmG;AACnG,wBAAgB,8BAA8B,CAAC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,yBAAyB,EAClH,OAAO,EAAE,qCAAqC,CAAC,YAAY,CAAC,GAC7D,wBAAwB,CAAC,YAAY,CAAC,CAyCxC"}
@@ -0,0 +1,4 @@
1
+ export type { CreateServiceRuntimeStateStoreOptions, FinishRunnerTickOptions, ServiceRuntimeStateStore, } from "./create-service-runtime-state-store";
2
+ export { createServiceRuntimeStateStore } from "./create-service-runtime-state-store";
3
+ export type { GuardRuntimeSlice, ReadinessRuntimeSlice, ReadinessStatus, SchedulerRuntimeSlice, ServiceRuntimeCoreNestedKey, ServiceRuntimeExtraSlicePatch, ServiceRuntimeNestedKeys, ServiceRuntimeState, WorkerRuntimeSlice, } from "./service-runtime-state.types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/runtime-state/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,qCAAqC,EACrC,uBAAuB,EACvB,wBAAwB,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,YAAY,EACR,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,GACrB,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,57 @@
1
+ import type { RegistrySlotRuntimeState } from "../../service/registry-lifecycle";
2
+ export type ReadinessStatus = "pending" | "passed" | "failed";
3
+ export interface ReadinessRuntimeSlice {
4
+ status: ReadinessStatus;
5
+ checkedAt: string | null;
6
+ message: string | null;
7
+ checks: {
8
+ name: string;
9
+ ok: boolean;
10
+ detail?: string;
11
+ }[];
12
+ }
13
+ export interface GuardRuntimeSlice {
14
+ nodeId: string | null;
15
+ lastCheckAt: string | null;
16
+ lastDecision: string | null;
17
+ lastSpawnAt: string | null;
18
+ spawnCount: number;
19
+ }
20
+ export interface SchedulerRuntimeSlice {
21
+ lastTickAt: string | null;
22
+ lastPostedCount: number;
23
+ lastFired: Record<string, string>;
24
+ }
25
+ export interface WorkerRuntimeSlice {
26
+ pid: number | null;
27
+ spawnedAt: string | null;
28
+ ready: boolean;
29
+ registeredTasks: string[];
30
+ readyAt: string | null;
31
+ }
32
+ /**
33
+ * Default when an L3 service has no service-specific runtime state slices.
34
+ * Use an empty object type (not `Record<string, never>`) so intersecting with core
35
+ * slices does not add a string index signature that collapses property types to `never`.
36
+ */
37
+ export type DefaultExtraRuntimeSlices = Record<never, never>;
38
+ /**
39
+ * Cross-process service runtime state persisted to `state.json`.
40
+ * L3 blueprint: readiness + guard + scheduler + worker + registry.
41
+ * Extend via extra top-level slices only.
42
+ */
43
+ export type ServiceRuntimeState<TExtraSlices extends Record<string, object> = DefaultExtraRuntimeSlices> = {
44
+ updatedAt: string;
45
+ readiness: ReadinessRuntimeSlice;
46
+ guard: GuardRuntimeSlice;
47
+ scheduler: SchedulerRuntimeSlice;
48
+ worker: WorkerRuntimeSlice;
49
+ registry: RegistrySlotRuntimeState;
50
+ } & TExtraSlices;
51
+ export type ServiceRuntimeCoreNestedKey = "readiness" | "guard" | "scheduler" | "worker" | "registry";
52
+ export type ServiceRuntimeNestedKeys<TExtraSlices extends Record<string, object>> = ServiceRuntimeCoreNestedKey | (keyof TExtraSlices & string);
53
+ /** Patch shape for extra top-level slices (one level deep). */
54
+ export type ServiceRuntimeExtraSlicePatch<TExtraSlices extends Record<string, object>> = {
55
+ [K in keyof TExtraSlices]?: TExtraSlices[K] extends object ? Partial<TExtraSlices[K]> : TExtraSlices[K];
56
+ };
57
+ //# sourceMappingURL=service-runtime-state.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-runtime-state.types.d.ts","sourceRoot":"","sources":["../../../src/node/runtime-state/service-runtime-state.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAEjF,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5D;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE7D;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,CAAC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,yBAAyB,IAAI;IACvG,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,qBAAqB,CAAC;IACjC,KAAK,EAAE,iBAAiB,CAAC;IACzB,SAAS,EAAE,qBAAqB,CAAC;IACjC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,wBAAwB,CAAC;CACtC,GAAG,YAAY,CAAC;AAEjB,MAAM,MAAM,2BAA2B,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtG,MAAM,MAAM,wBAAwB,CAAC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAC1E,2BAA2B,GAC3B,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC;AAEpC,+DAA+D;AAC/D,MAAM,MAAM,6BAA6B,CAAC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI;KACpF,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;CAC1G,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { registerServiceGuardRunner } from "./register-service-guard-runner";
2
+ export type { RunReadinessGateInput } from "./run-readiness-gate";
3
+ export { runReadinessGate } from "./run-readiness-gate";
4
+ export { runServiceGuardTick } from "./run-service-guard-tick";
5
+ export type { RegisterServiceGuardRunnerOptions, ServiceGuardNodeOptions, ServiceGuardTickInput, ServiceGuardTickResult, } from "./service-guard.interface";
6
+ export { SERVICE_GUARD_RUNNER_KEY } from "./service-guard.interface";
7
+ export { ServiceGuardNode } from "./service-guard-node";
8
+ export { getWorkerSpawnCooldownLastAt, markWorkerSpawned, resetWorkerSpawnCooldownForTests, } from "./worker-spawn-cooldown";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/service-guard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACR,iCAAiC,EACjC,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACH,4BAA4B,EAC5B,iBAAiB,EACjB,gCAAgC,GACnC,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type RegisterServiceGuardRunnerOptions, SERVICE_GUARD_RUNNER_KEY } from "./service-guard.interface";
2
+ export interface RegisterServiceGuardRunnerOptionsWithClock extends RegisterServiceGuardRunnerOptions {
3
+ /** Test hook — defaults to Date.now(). */
4
+ now?: () => number;
5
+ }
6
+ /** Register the standard L3 guard runner (registry slot + TaskNode + Service runtime). */
7
+ export declare function registerServiceGuardRunner(options: RegisterServiceGuardRunnerOptionsWithClock): void;
8
+ export { SERVICE_GUARD_RUNNER_KEY };
9
+ //# sourceMappingURL=register-service-guard-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-service-guard-runner.d.ts","sourceRoot":"","sources":["../../../src/node/service-guard/register-service-guard-runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iCAAiC,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AA6C7G,MAAM,WAAW,0CAA2C,SAAQ,iCAAiC;IACjG,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED,0FAA0F;AAC1F,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,0CAA0C,GAAG,IAAI,CAOpG;AAED,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { LoggerWithScope } from "../../shared/log";
2
+ import type { ReadinessCheck, ReadinessReport } from "../readiness/readiness.types";
3
+ export interface RunReadinessGateInput {
4
+ checks: ReadinessCheck[];
5
+ onReport: (report: ReadinessReport) => Promise<void>;
6
+ logger: LoggerWithScope;
7
+ logTopic?: string;
8
+ }
9
+ /** Run readiness checks, persist report via callback, fail-fast when not ok. */
10
+ export declare function runReadinessGate(input: RunReadinessGateInput): Promise<ReadinessReport>;
11
+ //# sourceMappingURL=run-readiness-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-readiness-gate.d.ts","sourceRoot":"","sources":["../../../src/node/service-guard/run-readiness-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpF,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,gFAAgF;AAChF,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAqB7F"}
@@ -0,0 +1,7 @@
1
+ import type { ServiceGuardTickInput, ServiceGuardTickResult } from "./service-guard.interface";
2
+ /**
3
+ * One guard-runner tick: registry slot check, TaskNode liveness, optional worker
4
+ * respawn, Service runtime heartbeat rollup.
5
+ */
6
+ export declare function runServiceGuardTick(input: ServiceGuardTickInput): Promise<ServiceGuardTickResult>;
7
+ //# sourceMappingURL=run-service-guard-tick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-service-guard-tick.d.ts","sourceRoot":"","sources":["../../../src/node/service-guard/run-service-guard-tick.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAG/F;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAgGvG"}
@@ -0,0 +1,18 @@
1
+ import type { LoggerWithScope } from "../../shared/log";
2
+ import { TriggerNode } from "../../trigger/trigger-node";
3
+ import type { ServiceGuardNodeOptions } from "./service-guard.interface";
4
+ /**
5
+ * L3 guard process TriggerNode: readiness gate, TaskNode worker spawn owner,
6
+ * and {@link registerServiceGuardRunner} tick (registry slot + liveness + runtime).
7
+ *
8
+ * Use {@link ServiceGuardNode.create} so the guard runner is registered before `start()`.
9
+ */
10
+ declare class ServiceGuardNode extends TriggerNode {
11
+ private readonly options;
12
+ private constructor();
13
+ /** Register the guard runner and return a ready-to-start node. */
14
+ static create(options: ServiceGuardNodeOptions): ServiceGuardNode;
15
+ protected onBeforeRegisterNode(nodeLogger: LoggerWithScope): Promise<void>;
16
+ }
17
+ export { ServiceGuardNode };
18
+ //# sourceMappingURL=service-guard-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-guard-node.d.ts","sourceRoot":"","sources":["../../../src/node/service-guard/service-guard-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE;;;;;GAKG;AACH,cAAM,gBAAiB,SAAQ,WAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAElD,OAAO;IAQP,kEAAkE;IAClE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,gBAAgB;cASjD,oBAAoB,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBnF;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,58 @@
1
+ import type { Node } from "../../node/node.interface";
2
+ import type { RegistrySlotRuntimeState } from "../../service/registry-lifecycle";
3
+ import type { LoggerWithScope } from "../../shared/log";
4
+ import type { TriggerNodeOptions } from "../../trigger/trigger.interface";
5
+ import type { ReadinessCheck, ReadinessReport } from "../readiness/readiness.types";
6
+ /** Default TriggerManager runner key for {@link registerServiceGuardRunner}. */
7
+ export declare const SERVICE_GUARD_RUNNER_KEY = "service-guard";
8
+ export interface ServiceGuardTickInput {
9
+ serviceValue: string;
10
+ serviceId: string | null;
11
+ nodeId: string;
12
+ loopTraceId: string;
13
+ logger: LoggerWithScope;
14
+ logTopic?: string;
15
+ checkedAt: string;
16
+ nowMs: number;
17
+ taskNodeStaleMs: number;
18
+ workerSpawnCooldownMs: number;
19
+ maxNodes?: number;
20
+ spawnWorker: (reason: string) => Promise<void>;
21
+ getLastWorkerSpawnAt?: () => number;
22
+ markWorkerSpawned?: (at: number) => void;
23
+ }
24
+ export interface ServiceGuardTickResult {
25
+ continueTick: boolean;
26
+ decision: string;
27
+ nodes: Node[];
28
+ registryPatch?: Pick<RegistrySlotRuntimeState, "slotOwned" | "lastSlotCheckAt" | "lastSlotCheckError">;
29
+ }
30
+ export interface RegisterServiceGuardRunnerOptions {
31
+ serviceValue: string;
32
+ getServiceId: () => Promise<string | null>;
33
+ logTopic?: string;
34
+ runnerKey?: string;
35
+ intervalMs: number;
36
+ initialDelayMs?: number;
37
+ taskNodeStaleMs: number;
38
+ workerSpawnCooldownMs: number;
39
+ maxNodes?: number;
40
+ spawnWorker: (reason: string) => Promise<void>;
41
+ onRegistryPatch: (patch: Pick<RegistrySlotRuntimeState, "slotOwned" | "lastSlotCheckAt" | "lastSlotCheckError">) => Promise<void>;
42
+ onGuardPatch: (patch: {
43
+ nodeId: string;
44
+ lastCheckAt: string;
45
+ lastDecision?: string;
46
+ }) => Promise<void>;
47
+ onDecision?: (decision: string) => Promise<void>;
48
+ }
49
+ export interface ServiceGuardNodeOptions extends TriggerNodeOptions {
50
+ serviceValue: string;
51
+ logTopic?: string;
52
+ readinessChecks: ReadinessCheck[];
53
+ onReadinessReport: (report: ReadinessReport) => Promise<void>;
54
+ guardRunner: Omit<RegisterServiceGuardRunnerOptions, "serviceValue" | "logTopic" | "runnerKey" | "intervalMs" | "initialDelayMs"> & Pick<RegisterServiceGuardRunnerOptions, "intervalMs" | "initialDelayMs">;
55
+ spawnWorker: (reason: string) => Promise<void>;
56
+ onWorkerSpawned?: () => void;
57
+ }
58
+ //# sourceMappingURL=service-guard.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-guard.interface.d.ts","sourceRoot":"","sources":["../../../src/node/service-guard/service-guard.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpF,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,kBAAkB,CAAC;AAExD,MAAM,WAAW,qBAAqB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,oBAAoB,CAAC,EAAE,MAAM,MAAM,CAAC;IACpC,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAsB;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,CAAC,EAAE,IAAI,CAAC,wBAAwB,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC,CAAC;CAC1G;AAED,MAAM,WAAW,iCAAiC;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,eAAe,EAAE,CACb,KAAK,EAAE,IAAI,CAAC,wBAAwB,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC,KAC5F,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvG,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,iBAAiB,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,WAAW,EAAE,IAAI,CACb,iCAAiC,EACjC,cAAc,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,gBAAgB,CAC9E,GACG,IAAI,CAAC,iCAAiC,EAAE,YAAY,GAAG,gBAAgB,CAAC,CAAC;IAC7E,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC"}
@@ -0,0 +1,4 @@
1
+ export declare function getWorkerSpawnCooldownLastAt(): number;
2
+ export declare function markWorkerSpawned(at?: number): void;
3
+ export declare function resetWorkerSpawnCooldownForTests(): void;
4
+ //# sourceMappingURL=worker-spawn-cooldown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-spawn-cooldown.d.ts","sourceRoot":"","sources":["../../../src/node/service-guard/worker-spawn-cooldown.ts"],"names":[],"mappings":"AAEA,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAa,GAAG,IAAI,CAEvD;AAED,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD"}
@@ -0,0 +1,9 @@
1
+ export type { RegisterServiceGuardRunnerOptions, RunReadinessGateInput, ServiceGuardNodeOptions, ServiceGuardTickInput, ServiceGuardTickResult, } from "../service-guard";
2
+ export { getWorkerSpawnCooldownLastAt, markWorkerSpawned, registerServiceGuardRunner, runReadinessGate, runServiceGuardTick, SERVICE_GUARD_RUNNER_KEY, ServiceGuardNode, } from "../service-guard";
3
+ export type { ApplyRegistrySlotGuardInput, ApplyRegistrySlotGuardResult, } from "./registry-slot-guard-step";
4
+ export { applyRegistrySlotGuardStep } from "./registry-slot-guard-step";
5
+ export type { ServiceHost, ServiceHostClosable, ServiceHostContext, ServiceHostOptions, } from "./service-host";
6
+ export { createServiceHost } from "./service-host";
7
+ export type { SingleProcessServiceContext, SingleProcessServiceOptions } from "./single-process-service";
8
+ export { runSingleProcessService } from "./single-process-service";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/service-host/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,iCAAiC,EACjC,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,4BAA4B,EAC5B,iBAAiB,EACjB,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,2BAA2B,EAC3B,4BAA4B,GAC/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,YAAY,EACR,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { registrySlotRuntimePatchFromGuardResult } from "../../service/registry-lifecycle";
2
+ import type { LoggerWithScope } from "../../shared/log";
3
+ export interface ApplyRegistrySlotGuardInput {
4
+ serviceValue: string;
5
+ serviceId: string;
6
+ checkedAt: string;
7
+ logger: Pick<LoggerWithScope, "critical" | "warn">;
8
+ logTopic?: string;
9
+ traceId?: string;
10
+ }
11
+ export interface ApplyRegistrySlotGuardResult {
12
+ /** When false, caller should abort the supervisor tick (slot lost shutdown initiated). */
13
+ continueTick: boolean;
14
+ registryPatch: ReturnType<typeof registrySlotRuntimePatchFromGuardResult>;
15
+ }
16
+ /**
17
+ * Run registry slot ownership check and optionally SIGTERM the parent main process.
18
+ * Used by guard / supervisor TriggerNode runners across L3 services.
19
+ */
20
+ export declare function applyRegistrySlotGuardStep(input: ApplyRegistrySlotGuardInput): Promise<ApplyRegistrySlotGuardResult>;
21
+ //# sourceMappingURL=registry-slot-guard-step.d.ts.map