@jini-ai/server 0.6.3 → 0.6.10

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 (40) hide show
  1. package/CHANGELOG.md +62 -1
  2. package/dist/builtin-features.d.ts +7 -27
  3. package/dist/builtin-features.d.ts.map +1 -0
  4. package/dist/builtin-features.js +14 -52
  5. package/dist/builtin-features.js.map +1 -0
  6. package/dist/compose-jini-kernel.d.ts.map +1 -0
  7. package/dist/compose-jini-kernel.js +82 -70
  8. package/dist/compose-jini-kernel.js.map +1 -0
  9. package/dist/create-local-node-daemon.d.ts.map +1 -0
  10. package/dist/create-local-node-daemon.js +67 -52
  11. package/dist/create-local-node-daemon.js.map +1 -0
  12. package/dist/feature-activation.d.ts.map +1 -0
  13. package/dist/feature-activation.js +60 -51
  14. package/dist/feature-activation.js.map +1 -0
  15. package/dist/feature.d.ts.map +1 -0
  16. package/dist/feature.js.map +1 -0
  17. package/dist/host-bootstrap.d.ts.map +1 -0
  18. package/dist/host-bootstrap.js.map +1 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/kernel-base.d.ts.map +1 -0
  22. package/dist/kernel-base.js +18 -11
  23. package/dist/kernel-base.js.map +1 -0
  24. package/dist/lifecycle/boot-lifecycle.d.ts.map +1 -0
  25. package/dist/lifecycle/boot-lifecycle.js +36 -32
  26. package/dist/lifecycle/boot-lifecycle.js.map +1 -0
  27. package/dist/lifecycle/index.d.ts.map +1 -0
  28. package/dist/lifecycle/index.js.map +1 -0
  29. package/dist/lifecycle/readiness-state.d.ts.map +1 -0
  30. package/dist/lifecycle/readiness-state.js.map +1 -0
  31. package/dist/storage/backend-config.d.ts.map +1 -0
  32. package/dist/storage/backend-config.js +22 -20
  33. package/dist/storage/backend-config.js.map +1 -0
  34. package/dist/storage/index.d.ts.map +1 -0
  35. package/dist/storage/index.js.map +1 -0
  36. package/dist/storage/legacy/sqlite.d.ts.map +1 -0
  37. package/dist/storage/legacy/sqlite.js.map +1 -0
  38. package/dist/store/projects/sqlite.d.ts.map +1 -0
  39. package/dist/store/projects/sqlite.js.map +1 -0
  40. package/package.json +17 -17
@@ -87,6 +87,56 @@ export function resolveReportHost(bindHost) {
87
87
  return `[${bindHost}]`;
88
88
  return bindHost;
89
89
  }
90
+ function localKernelOptions({ config }, _optional = {}) {
91
+ return {
92
+ profile: config.profile ?? 'local-daemon-v1',
93
+ ...(config.capabilities === undefined ? {} : { capabilities: config.capabilities }),
94
+ ...(config.features === undefined ? {} : { features: config.features }),
95
+ packs: config.packs,
96
+ ...(config.bindings === undefined ? {} : { bindings: config.bindings }),
97
+ ...(config.toolRegistrations === undefined ? {} : { toolRegistrations: config.toolRegistrations }),
98
+ };
99
+ }
100
+ function localSecurity({ config, host }, _optional = {}) {
101
+ return config.security
102
+ ? { ...config.security, host }
103
+ : {
104
+ mode: 'jini-local',
105
+ host,
106
+ apiToken: {
107
+ tokenEnvVar: config.apiToken?.tokenEnvVar ?? DEFAULT_TOKEN_ENV_VAR,
108
+ disableEnvVar: config.apiToken?.disableEnvVar ?? DEFAULT_DISABLE_ENV_VAR,
109
+ },
110
+ };
111
+ }
112
+ function localFeatureOptions({ config, host, resolvedPortRef, xaiListenerRef, isShuttingDown, requestShutdown }, _optional = {}) {
113
+ return {
114
+ health: { getVersion: () => packageVersion, isShuttingDown },
115
+ runs: {
116
+ ...(config.onRunStarted === undefined ? {} : { onRunStarted: config.onRunStarted }),
117
+ ...(config.resolveRunInput === undefined ? {} : { resolveRunInput: config.resolveRunInput }),
118
+ },
119
+ ...(config.agentDetector === undefined ? {} : { agents: { detector: config.agentDetector } }),
120
+ hostTools: {
121
+ ...(config.resolveWorkspaceRoot === undefined ? {} : { resolveWorkspaceRoot: config.resolveWorkspaceRoot }),
122
+ },
123
+ terminal: {
124
+ ...(config.resolveWorkspaceRoot === undefined ? {} : { resolveWorkspaceRoot: config.resolveWorkspaceRoot }),
125
+ },
126
+ ...(config.resolveDelegatedPrincipal === undefined
127
+ ? {}
128
+ : { delegatedToolCalls: { resolvePrincipal: config.resolveDelegatedPrincipal } }),
129
+ xai: { listenerRef: xaiListenerRef },
130
+ daemonStatus: {
131
+ getVersion: () => packageVersion,
132
+ host,
133
+ getPort: () => resolvedPortRef.current,
134
+ dataDir: config.dataDir,
135
+ isShuttingDown,
136
+ requestShutdown,
137
+ },
138
+ };
139
+ }
90
140
  export async function createLocalNodeDaemon(config) {
91
141
  const env = config.env ?? process.env;
92
142
  const host = normalizeDaemonBindHost(config.host ?? DEFAULT_HOST);
@@ -108,65 +158,30 @@ export async function createLocalNodeDaemon(config) {
108
158
  // Owned here rather than by the xai feature so `stop()` observes the same ref the routes wrote to.
109
159
  const xaiListenerRef = { current: null };
110
160
  const app = express();
161
+ app.disable('x-powered-by');
111
162
  installRouteRegistrationGuard({ app });
112
163
  const kernel = await composeJiniKernel({
113
164
  app,
114
165
  adapter,
115
166
  storage: { kind: 'sqlite', dataDir: config.dataDir, open: config.open },
116
- profile: config.profile ?? 'local-daemon-v1',
117
- ...(config.capabilities === undefined ? {} : { capabilities: config.capabilities }),
118
- ...(config.features === undefined ? {} : { features: config.features }),
119
- packs: config.packs,
120
- ...(config.bindings === undefined ? {} : { bindings: config.bindings }),
121
- ...(config.toolRegistrations === undefined ? {} : { toolRegistrations: config.toolRegistrations }),
122
- security: config.security
123
- ? { ...config.security, host }
124
- : {
125
- mode: 'jini-local',
126
- host,
127
- apiToken: {
128
- tokenEnvVar: config.apiToken?.tokenEnvVar ?? DEFAULT_TOKEN_ENV_VAR,
129
- disableEnvVar: config.apiToken?.disableEnvVar ?? DEFAULT_DISABLE_ENV_VAR,
130
- },
131
- },
167
+ ...localKernelOptions({ config }),
168
+ security: localSecurity({ config, host }),
132
169
  env,
133
170
  ...(config.agentExecutor ? { agentExecutor: config.agentExecutor } : {}),
134
- featureOptions: {
135
- health: { getVersion: () => packageVersion, isShuttingDown: () => shuttingDown },
136
- runs: {
137
- ...(config.onRunStarted === undefined ? {} : { onRunStarted: config.onRunStarted }),
138
- ...(config.resolveRunInput === undefined ? {} : { resolveRunInput: config.resolveRunInput }),
139
- },
140
- ...(config.agentDetector === undefined ? {} : { agents: { detector: config.agentDetector } }),
141
- hostTools: {
142
- ...(config.resolveWorkspaceRoot === undefined ? {} : { resolveWorkspaceRoot: config.resolveWorkspaceRoot }),
171
+ featureOptions: localFeatureOptions({ config, host, resolvedPortRef, xaiListenerRef,
172
+ isShuttingDown: () => shuttingDown,
173
+ requestShutdown: () => {
174
+ // `POST /api/daemon/shutdown` answers before shutdown begins, so nothing downstream can
175
+ // ever await this promise. Dropping it with a bare `void` turned any shutdown failure
176
+ // into a process-level unhandled rejection — which on Node's default policy terminates
177
+ // the very process this was trying to shut down gracefully. Reported here instead; the
178
+ // rejection stays on `stopPromise`, so an explicit `stop()` caller still observes it.
179
+ void stop().catch((error) => {
180
+ // eslint-disable-next-line no-console
181
+ console.error('[@jini-ai/server] shutdown requested through POST /api/daemon/shutdown failed', error);
182
+ });
143
183
  },
144
- terminal: {
145
- ...(config.resolveWorkspaceRoot === undefined ? {} : { resolveWorkspaceRoot: config.resolveWorkspaceRoot }),
146
- },
147
- ...(config.resolveDelegatedPrincipal === undefined
148
- ? {}
149
- : { delegatedToolCalls: { resolvePrincipal: config.resolveDelegatedPrincipal } }),
150
- xai: { listenerRef: xaiListenerRef },
151
- daemonStatus: {
152
- getVersion: () => packageVersion,
153
- host,
154
- getPort: () => resolvedPortRef.current,
155
- dataDir: config.dataDir,
156
- isShuttingDown: () => shuttingDown,
157
- requestShutdown: () => {
158
- // `POST /api/daemon/shutdown` answers before shutdown begins, so nothing downstream can
159
- // ever await this promise. Dropping it with a bare `void` turned any shutdown failure
160
- // into a process-level unhandled rejection — which on Node's default policy terminates
161
- // the very process this was trying to shut down gracefully. Reported here instead; the
162
- // rejection stays on `stopPromise`, so an explicit `stop()` caller still observes it.
163
- void stop().catch((error) => {
164
- // eslint-disable-next-line no-console
165
- console.error('[@jini-ai/server] shutdown requested through POST /api/daemon/shutdown failed', error);
166
- });
167
- },
168
- },
169
- },
184
+ }),
170
185
  // Product extensions, then caller-pack routes — the historical position, between the locked
171
186
  // route families and the daemon-status routes.
172
187
  onAfterApiRoutes: (mountedApp, daemon, base) => {
@@ -239,7 +254,7 @@ export async function createLocalNodeDaemon(config) {
239
254
  return await new Promise((resolve, reject) => {
240
255
  const failToBind = (error) => {
241
256
  // Best-effort: a failed boot must not leave any resource this call already opened dangling.
242
- void kernel.close().finally(() => reject(error));
257
+ void kernel.close().then(() => reject(error), () => reject(error));
243
258
  };
244
259
  listen()
245
260
  .then((listeningServer) => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-local-node-daemon.js","sourceRoot":"","sources":["../src/create-local-node-daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-activation.d.ts","sourceRoot":"","sources":["../src/feature-activation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3E,qCAAqC;AACrC,MAAM,MAAM,gBAAgB;AAC1B,4EAA4E;AAC1E,SAAS;AACX,2EAA2E;GACzE,QAAQ,CAAC;AAEb,uCAAuC;AACvC,MAAM,MAAM,kBAAkB;AAC5B,0DAA0D;AACxD,mBAAmB;AACrB,6EAA6E;GAC3E,aAAa;AACf,2CAA2C;GACzC,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,+FAA+F;IAC/F,QAAQ,CAAC,kBAAkB,EAAE,SAAS,YAAY,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACrF,iIAAiI;IACjI,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,mBAAmB,EAAE,SAAS,YAAY,EAAE,CAAC;IACtD,2FAA2F;IAC3F,QAAQ,CAAC,kBAAkB,EAAE,SAAS,YAAY,EAAE,CAAC;CACtD;AAmHD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,GAAG,qBAAqB,CA2B7F"}
@@ -11,16 +11,7 @@ function resolveGrants(input) {
11
11
  }
12
12
  return granted;
13
13
  }
14
- /**
15
- * Resolves the composition's feature plan.
16
- *
17
- * @throws If an override names an unknown feature id, if an explicitly-enabled feature needs a
18
- * denied capability, if two catalogued features share an id, or if an active feature's `requires`
19
- * are not satisfied. Every one of these is a composition-time programming/config error that would
20
- * otherwise surface as a mysteriously missing (or mysteriously present) route at runtime.
21
- * @complexity O(f · c) in features and their declared capabilities.
22
- */
23
- export function resolveFeatureActivation(input) {
14
+ function validateActivationConfig({ input }, _optional = {}) {
24
15
  const byId = new Map();
25
16
  for (const feature of input.features) {
26
17
  if (byId.has(feature.id)) {
@@ -46,48 +37,38 @@ export function resolveFeatureActivation(input) {
46
37
  throw new Error(`jini: unknown capability "${capability}" in capabilities config — known capabilities are: ${known}`);
47
38
  }
48
39
  }
49
- const granted = resolveGrants(input);
50
- const coreCapabilities = new Set(CORE_CAPABILITIES);
51
- const active = [];
52
- const inactive = [];
53
- const denied = new Set();
54
- for (const feature of input.features) {
55
- const missing = feature.provides.filter((capability) => !granted.has(capability));
56
- for (const capability of missing)
57
- denied.add(capability);
58
- const permitted = missing.length === 0;
59
- const explicit = overrides[feature.id];
60
- // Rule 2 — an explicit enable never overrides a denied capability, in either direction.
61
- if (explicit === true && !permitted) {
62
- throw new Error(`jini: feature "${feature.id}" was explicitly enabled but requires denied ` +
63
- `capabilit${missing.length > 1 ? 'ies' : 'y'} [${missing.join(', ')}] under profile ` +
64
- `"${input.profile.id}". Grant them via config.capabilities, or remove "${feature.id}" from config.features.`);
65
- }
66
- if (explicit === false) {
67
- inactive.push({ id: feature.id, provides: feature.provides, reason: 'opt-out', deniedCapabilities: [] });
68
- continue;
69
- }
70
- if (explicit === true) {
71
- active.push({ id: feature.id, provides: feature.provides, reason: 'opt-in' });
72
- continue;
73
- }
74
- if (!permitted) {
75
- inactive.push({
76
- id: feature.id,
77
- provides: feature.provides,
78
- reason: 'capability-denied',
79
- deniedCapabilities: missing,
80
- });
81
- continue;
82
- }
83
- // Rule 3 — permitted is not active. `core-only` still requires the caller to name it.
84
- const defaultOn = input.profile.activation === 'all-permitted' ||
85
- feature.provides.every((capability) => coreCapabilities.has(capability));
86
- if (defaultOn)
87
- active.push({ id: feature.id, provides: feature.provides, reason: 'default' });
88
- else
89
- inactive.push({ id: feature.id, provides: feature.provides, reason: 'not-default', deniedCapabilities: [] });
40
+ return byId;
41
+ }
42
+ function selectFeature({ feature, missing, explicit, profile }, _optional = {}) {
43
+ const permitted = missing.length === 0;
44
+ // Rule 2 — an explicit enable never overrides a denied capability, in either direction.
45
+ if (explicit === true && !permitted) {
46
+ throw new Error(`jini: feature "${feature.id}" was explicitly enabled but requires denied ` +
47
+ `capabilit${missing.length > 1 ? 'ies' : 'y'} [${missing.join(', ')}] under profile ` +
48
+ `"${profile.id}". Grant them via config.capabilities, or remove "${feature.id}" from config.features.`);
90
49
  }
50
+ if (explicit === false) {
51
+ return { id: feature.id, provides: feature.provides, reason: 'opt-out', deniedCapabilities: [] };
52
+ }
53
+ if (explicit === true) {
54
+ return { id: feature.id, provides: feature.provides, reason: 'opt-in' };
55
+ }
56
+ if (!permitted) {
57
+ return {
58
+ id: feature.id,
59
+ provides: feature.provides,
60
+ reason: 'capability-denied',
61
+ deniedCapabilities: missing,
62
+ };
63
+ }
64
+ // Rule 3 — permitted is not active. `core-only` still requires the caller to name it.
65
+ const defaultOn = profile.activation === 'all-permitted' ||
66
+ feature.provides.every((capability) => CORE_CAPABILITIES.includes(capability));
67
+ if (defaultOn)
68
+ return { id: feature.id, provides: feature.provides, reason: 'default' };
69
+ return { id: feature.id, provides: feature.provides, reason: 'not-default', deniedCapabilities: [] };
70
+ }
71
+ function validateFeatureDependencies({ active, byId }, _optional = {}) {
91
72
  // Rule 4 — dependencies validated after the full active set is known, so declaration order in the
92
73
  // catalog never decides whether a legitimate configuration is accepted.
93
74
  const activeIds = new Set(active.map((record) => record.id));
@@ -102,6 +83,34 @@ export function resolveFeatureActivation(input) {
102
83
  }
103
84
  }
104
85
  }
86
+ }
87
+ /**
88
+ * Resolves the composition's feature plan.
89
+ *
90
+ * @throws If an override names an unknown feature id, if an explicitly-enabled feature needs a
91
+ * denied capability, if two catalogued features share an id, or if an active feature's `requires`
92
+ * are not satisfied. Every one of these is a composition-time programming/config error that would
93
+ * otherwise surface as a mysteriously missing (or mysteriously present) route at runtime.
94
+ * @complexity O(f · c) in features and their declared capabilities.
95
+ */
96
+ export function resolveFeatureActivation(input) {
97
+ const byId = validateActivationConfig({ input });
98
+ const overrides = input.featureOverrides ?? {};
99
+ const granted = resolveGrants(input);
100
+ const active = [];
101
+ const inactive = [];
102
+ const denied = new Set();
103
+ for (const feature of input.features) {
104
+ const missing = feature.provides.filter((capability) => !granted.has(capability));
105
+ for (const capability of missing)
106
+ denied.add(capability);
107
+ const selection = selectFeature({ feature, missing, explicit: overrides[feature.id], profile: input.profile });
108
+ if ('deniedCapabilities' in selection)
109
+ inactive.push(selection);
110
+ else
111
+ active.push(selection);
112
+ }
113
+ validateFeatureDependencies({ active, byId });
105
114
  return {
106
115
  active,
107
116
  inactive,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-activation.js","sourceRoot":"","sources":["../src/feature-activation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../src/feature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature.js","sourceRoot":"","sources":["../src/feature.ts"],"names":[],"mappings":"AAkEA;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAyC,MAAM,CAAC,MAAM,CAAC;IAC5E,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,IAAI;IAClB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,mBAAmB,EAAE,IAAI;IACzB,gBAAgB,EAAE,IAAI;IACtB,YAAY,EAAE,IAAI;CACnB,CAAC,CAAC;AAEH,kGAAkG;AAClG,MAAM,CAAC,MAAM,cAAc,GAA4B,MAAM,CAAC,MAAM,CAClE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAmB,CACjD,CAAC;AAEF,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,QAA2B;IACxD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA4B,MAAM,CAAC,MAAM,CAAC;IACtE,eAAe;IACf,iBAAiB;IACjB,gBAAgB;CACjB,CAAC,CAAC;AAkDH,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IACpD,OAAO,OAAO,CAAC;AACjB,CAAC;AAqBD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAiD,MAAM,CAAC,MAAM,CAAC;IACvF;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC;QAC7B,EAAE,EAAE,eAAe;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,CAAU,CAA4B;QACjH,UAAU,EAAE,WAAW;KACxB,CAAC;IACF;;;;;;OAMG;IACH,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC;QAC/B,EAAE,EAAE,iBAAiB;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YACpB,eAAe;YACf,iBAAiB;YACjB,gBAAgB;YAChB,cAAc;YACd,WAAW;YACX,WAAW;YACX,UAAU;YACV,YAAY;YACZ,gBAAgB;SACR,CAA4B;QACtC,UAAU,EAAE,eAAe;KAC5B,CAAC;CACH,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-bootstrap.d.ts","sourceRoot":"","sources":["../src/host-bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,eAAO,MAAM,wBAAwB,cAAc,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG9D;AAED,MAAM,WAAW,sBAAsB;IACrC,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0GAA0G;IAC1G,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCzG;AAED,MAAM,WAAW,uBAAuB;IACtC,6FAA6F;IAC7F,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,yEAAyE;IACzE,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,UAAU,EAAE,YAAY,GAAG,cAAc,CAAC,CAAC;IAChE,wFAAwF;IACxF,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC;sGACkG;IAClG,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,CAAC;IACpC;;iEAE6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;iGAE6F;IAC7F,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,wGAAwG;AACxG,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IAChF,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IACjF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC;mFAC+E;IAC/E,SAAS,IAAI,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,EACvC,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CA6DxB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-bootstrap.js","sourceRoot":"","sources":["../src/host-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,YAAY,EACV,2BAA2B,EAC3B,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AAIvC,YAAY,EAAE,uBAAuB,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACxG,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEpF,YAAY,EACV,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEnH,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,2BAA2B,EAC3B,cAAc,EACd,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAIxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE3I,YAAY,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuCA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAapF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAUnH,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,8FAA8F;AAC9F,gGAAgG;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel-base.d.ts","sourceRoot":"","sources":["../src/kernel-base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAwB,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEhG,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EACL,mBAAmB,EAMnB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAGzB,iDAAiD;AACjD,MAAM,MAAM,iBAAiB;AAC3B;;wEAEwE;AACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE;AAC7B,wFAAwF;GACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE3F,yFAAyF;AACzF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG;IAAE,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAE7G,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,wEAAwE;IACxE,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1C,uGAAuG;IACvG,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC3C,gGAAgG;IAChG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,+HAA+H;IAC/H,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,iBAAiB,CAAC,CAAC;CACtH;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,uBAAuB,GAAG,cAAc,CAAC,CAAC;CACvF,GAAG,OAAO,CAGV;AAuBD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,cAAc,CAAC,CA8FxG"}
@@ -26,6 +26,22 @@ import { openSqliteEventLog } from '@jini-ai/daemon/store/event-log/sqlite';
26
26
  export function classifyRunFailureForRetry(context) {
27
27
  return resumableFromProcessExit({ code: context.code, signal: context.signal }, context.sideEffects === undefined ? {} : { sideEffects: context.sideEffects });
28
28
  }
29
+ async function closeFailedAcquisition({ featureConnection, opened }, _optional = {}) {
30
+ // Every acquired handle is attempted even if another closer fails. Preserve the boot error.
31
+ try {
32
+ featureConnection?.close();
33
+ }
34
+ catch { /* Keep the boot failure. */ }
35
+ await Promise.allSettled(opened.map((log) => log.close?.({})));
36
+ }
37
+ function createKernelAgentRuntime({ options }, _optional = {}) {
38
+ const agentRuntime = createNativeAgentRuntime({ env: options.agentExecutor?.hostEnv ?? process.env }, {
39
+ ...(options.agentExecutor?.runtimeState ? { state: options.agentExecutor.runtimeState } : {}),
40
+ ...(options.agentExecutor?.codexDisablePlugins !== undefined ? { codexDisablePlugins: options.agentExecutor.codexDisablePlugins } : {}),
41
+ ...(options.agentExecutor?.piGracefulShutdownMs !== undefined ? { piGracefulShutdownMs: options.agentExecutor.piGracefulShutdownMs } : {}),
42
+ });
43
+ return agentRuntime;
44
+ }
29
45
  /**
30
46
  * Opens every kernel-owned resource and rehydrates durable run history.
31
47
  *
@@ -82,19 +98,10 @@ export async function createJiniKernelBase(options) {
82
98
  await lifecycle.rehydrate({});
83
99
  }
84
100
  catch (error) {
85
- // Every acquired handle is attempted even if another closer fails. Preserve the boot error.
86
- try {
87
- featureConnection?.close();
88
- }
89
- catch { /* Keep the boot failure. */ }
90
- await Promise.allSettled(opened.map((log) => log.close?.({})));
101
+ await closeFailedAcquisition({ featureConnection, opened });
91
102
  throw error;
92
103
  }
93
- const agentRuntime = createNativeAgentRuntime({ env: options.agentExecutor?.hostEnv ?? process.env }, {
94
- ...(options.agentExecutor?.runtimeState ? { state: options.agentExecutor.runtimeState } : {}),
95
- ...(options.agentExecutor?.codexDisablePlugins !== undefined ? { codexDisablePlugins: options.agentExecutor.codexDisablePlugins } : {}),
96
- ...(options.agentExecutor?.piGracefulShutdownMs !== undefined ? { piGracefulShutdownMs: options.agentExecutor.piGracefulShutdownMs } : {}),
97
- });
104
+ const agentRuntime = createKernelAgentRuntime({ options });
98
105
  const agentExecutor = createAgentExecutor({ lifecycle }, {
99
106
  ...options.agentExecutor,
100
107
  runtimeState: agentRuntime.state,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel-base.js","sourceRoot":"","sources":["../src/kernel-base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot-lifecycle.d.ts","sourceRoot":"","sources":["../../src/lifecycle/boot-lifecycle.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,MAAM,qBAAqB,GAC7B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,UAAU,CAAC;AACtD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,eAAe,CAAC;IAC7B,oEAAoE;IACpE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,yEAAyE;IACzE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AACD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,eAAe,CAAC;IAC7B,SAAS,EAAE,qBAAqB,CAAC;CAClC;AACD,MAAM,WAAW,UAAU;IAAG,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAAE;AACxE,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,QAAQ,EAAE;QAAE,QAAQ,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,GAAG,IAAI,UAAU,CAAC;CACnB;AACD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;CAChD;AAmDD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE;IAAE,OAAO,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,EAC5C,QAAQ,GAAE;IAAE,SAAS,CAAC,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAAO,GAC1E,OAAO,CAAC,UAAU,CAAC,CAsBrB"}
@@ -6,6 +6,39 @@ async function stopInReverse(modules) {
6
6
  catch { /* Preserve the original failure and continue cleanup. */ }
7
7
  }
8
8
  }
9
+ function bootModuleFailure(required, _optional = {}) {
10
+ const { module, error } = required;
11
+ return {
12
+ name: module.name, owner: module.owner, criticality: module.criticality,
13
+ lifecycle: {
14
+ status: 'failed', reasonCode: error instanceof Error ? error.message : String(error),
15
+ remediationHint: 'check the boot log for the underlying error and retry after fixing it',
16
+ },
17
+ };
18
+ }
19
+ async function runBootStage(required, _optional = {}) {
20
+ const { stage, modules, results } = required;
21
+ const completed = [];
22
+ for (const module of modules) {
23
+ try {
24
+ await module[stage]();
25
+ completed.push(module);
26
+ if (stage === 'start')
27
+ results.set(module.name, {
28
+ name: module.name, owner: module.owner, criticality: module.criticality,
29
+ lifecycle: { status: 'ready' },
30
+ });
31
+ }
32
+ catch (error) {
33
+ results.set(module.name, bootModuleFailure({ module, error }));
34
+ if (module.criticality === 'critical') {
35
+ await stopInReverse(completed);
36
+ return { completed, aborted: true };
37
+ }
38
+ }
39
+ }
40
+ return { completed, aborted: false };
41
+ }
9
42
  /**
10
43
  * Preserve source rollback semantics: prepare failure unwinds completed preparations;
11
44
  * start failure unwinds completed starts only. Failing modules own their partial cleanup.
@@ -22,38 +55,9 @@ export async function runBootLifecycle(required, optional = {}) {
22
55
  throw new Error('boot module names must be unique');
23
56
  }
24
57
  const results = new Map();
25
- const prepared = [];
26
- const ready = [];
27
- let aborted = false;
28
- for (const stage of ['prepare', 'start']) {
29
- const completed = stage === 'prepare' ? prepared : ready;
30
- for (const module of stage === 'prepare' ? modules : prepared) {
31
- try {
32
- await module[stage]();
33
- completed.push(module);
34
- if (stage === 'start')
35
- results.set(module.name, {
36
- name: module.name, owner: module.owner, criticality: module.criticality,
37
- lifecycle: { status: 'ready' },
38
- });
39
- }
40
- catch (error) {
41
- results.set(module.name, {
42
- name: module.name, owner: module.owner, criticality: module.criticality,
43
- lifecycle: {
44
- status: 'failed', reasonCode: error instanceof Error ? error.message : String(error),
45
- remediationHint: 'check the boot log for the underlying error and retry after fixing it',
46
- },
47
- });
48
- if (module.criticality === 'critical') {
49
- await stopInReverse(completed);
50
- aborted = true;
51
- break;
52
- }
53
- }
54
- }
55
- if (aborted)
56
- break;
58
+ const prepared = await runBootStage({ stage: 'prepare', modules, results });
59
+ if (!prepared.aborted) {
60
+ await runBootStage({ stage: 'start', modules: prepared.completed, results });
57
61
  }
58
62
  const ordered = modules.flatMap(module => {
59
63
  const result = results.get(module.name);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot-lifecycle.js","sourceRoot":"","sources":["../../src/lifecycle/boot-lifecycle.ts"],"names":[],"mappings":"AA+BA,KAAK,UAAU,aAAa,CAAC,OAA8B;IACzD,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,yDAAyD,CAAC,CAAC;IAClG,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAgD,EAChD,YAAmC,EAAE;IAErC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;IACnC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW;QACvE,SAAS,EAAE;YACT,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACpF,eAAe,EAAE,uEAAuE;SACzF;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,QAIC,EACD,YAAmC,EAAE;IAErC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC7C,MAAM,SAAS,GAAiB,EAAE,CAAC;IACnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,IAAI,KAAK,KAAK,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;oBAC9C,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW;oBACvE,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;iBAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC/D,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBACtC,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC/B,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAA4C,EAC5C,WAAyE,EAAE;IAE3E,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5E,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG;QACb,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC;QACrG,OAAO,EAAE,OAAO;KACjB,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,wEAAwE;IACxE,IAAI,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness-state.d.ts","sourceRoot":"","sources":["../../src/lifecycle/readiness-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQtE,yFAAyF;AACzF,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC/B,QAAQ,GAAE;IAAE,OAAO,CAAC,EAAE,UAAU,CAAA;CAAO,GACtC,cAAc,CAOhB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness-state.js","sourceRoot":"","sources":["../../src/lifecycle/readiness-state.ts"],"names":[],"mappings":"AAEA,SAAS,IAAI,CAAC,QAAoB;IAChC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjE,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE;SAC9C,CAAC,CAAC,EAAE,CAAC;AACR,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,oBAAoB,CAClC,QAA+B,EAC/B,WAAqC,EAAE;IAEvC,KAAK,QAAQ,CAAC;IACd,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,OAAO;QACL,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,GAAG,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACjC,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-config.d.ts","sourceRoot":"","sources":["../../src/storage/backend-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb;;;WAGG;QACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;KACjD,CAAC;CACH;AAED,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;CAI7C;AAgCD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC/B,QAAQ,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAAO,GAC1D,mBAAmB,CAWrB"}
@@ -16,6 +16,27 @@ export class SqliteBackendConfigError extends Error {
16
16
  this.name = 'SqliteBackendConfigError';
17
17
  }
18
18
  }
19
+ function resolvePostgresSslMode(required, _optional = {}) {
20
+ const e = required.env;
21
+ return e.JINI_PG_SSL_MODE === 'disable' || e.JINI_PG_SSL_MODE === 'verify-full' ? e.JINI_PG_SSL_MODE : 'require';
22
+ }
23
+ function resolvePostgresConfig(required, _optional = {}) {
24
+ const e = required.env;
25
+ const host = e.JINI_PG_HOST ?? '';
26
+ const portStr = e.JINI_PG_PORT ?? '5432';
27
+ const database = e.JINI_PG_DATABASE ?? '';
28
+ const user = e.JINI_PG_USER ?? '';
29
+ const sslMode = resolvePostgresSslMode({ env: e });
30
+ if (!host || !database || !user) {
31
+ throw new SqliteBackendConfigError({ message: 'JINI_SQLITE_BACKEND=postgres requires JINI_PG_HOST, JINI_PG_DATABASE, JINI_PG_USER. ' +
32
+ 'JINI_PG_PORT defaults to 5432; JINI_PG_SSL_MODE defaults to "require".',
33
+ });
34
+ }
35
+ return {
36
+ kind: 'postgres',
37
+ postgres: { host, port: Number.parseInt(portStr, 10) || 5432, database, user, sslMode },
38
+ };
39
+ }
19
40
  /**
20
41
  * Reads `JINI_SQLITE_BACKEND` (`'sqlite'` default, or `'postgres'`) and, for
21
42
  * `postgres`, `JINI_PG_HOST`/`JINI_PG_PORT`/`JINI_PG_DATABASE`/`JINI_PG_USER`/
@@ -32,26 +53,7 @@ export function resolveSqliteBackendConfig(required, optional = {}) {
32
53
  const e = optional.env ?? process.env;
33
54
  const kind = (e.JINI_SQLITE_BACKEND ?? 'sqlite').trim().toLowerCase();
34
55
  if (kind === 'postgres') {
35
- const host = e.JINI_PG_HOST ?? '';
36
- const portStr = e.JINI_PG_PORT ?? '5432';
37
- const database = e.JINI_PG_DATABASE ?? '';
38
- const user = e.JINI_PG_USER ?? '';
39
- const sslMode = e.JINI_PG_SSL_MODE === 'disable' || e.JINI_PG_SSL_MODE === 'verify-full' ? e.JINI_PG_SSL_MODE : 'require';
40
- if (!host || !database || !user) {
41
- throw new SqliteBackendConfigError({ message: 'JINI_SQLITE_BACKEND=postgres requires JINI_PG_HOST, JINI_PG_DATABASE, JINI_PG_USER. ' +
42
- 'JINI_PG_PORT defaults to 5432; JINI_PG_SSL_MODE defaults to "require".',
43
- });
44
- }
45
- return {
46
- kind: 'postgres',
47
- postgres: {
48
- host,
49
- port: Number.parseInt(portStr, 10) || 5432,
50
- database,
51
- user,
52
- sslMode,
53
- },
54
- };
56
+ return resolvePostgresConfig({ env: e });
55
57
  }
56
58
  if (kind !== 'sqlite' && kind !== '') {
57
59
  throw new SqliteBackendConfigError({ message: `unknown JINI_SQLITE_BACKEND value '${kind}'. Accepted: 'sqlite' (default), 'postgres'.` });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-config.js","sourceRoot":"","sources":["../../src/storage/backend-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAoBH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,YAAY,EAAE,OAAO,EAAuB;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,SAAS,sBAAsB,CAC7B,QAAqD,EACrD,YAAmC,EAAE;IAErC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;IACvB,OAAO,CAAC,CAAC,gBAAgB,KAAK,SAAS,IAAI,CAAC,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;AACnH,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAAqD,EACrD,YAAmC,EAAE;IAErC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;IACvB,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,sBAAsB,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,wBAAwB,CAAC,EAAE,OAAO,EAC1C,sFAAsF;gBACpF,wEAAwE;SAC3E,CAAC,CAAC;IACL,CAAC;IACD,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;KACxF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAA+B,EAC/B,WAAyD,EAAE;IAE3D,KAAK,QAAQ,CAAC;IACd,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACtC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,mBAAmB,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtE,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO,qBAAqB,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,wBAAwB,CAAC,EAAE,OAAO,EAAE,sCAAsC,IAAI,8CAA8C,EAAE,CAAC,CAAC;IAC5I,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/storage/legacy/sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAwB,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAKhG;;;;GAIG;AAOH,wBAAgB,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE;IAAE,EAAE,EAAE,QAAQ,CAAA;CAAE,GAAG,IAAI,CAEtD;AAED;gFACgF;AAChF,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM;0CAUzF;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,gBAAgB,CAAA;KAAE,YAC7D;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAA;KAAE,KACtE,QAAQ;yBAkBc,IAAI;EAI5B;AAID,eAAO,MAAM,YAAY,0BA5BD;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,YAC7D;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAA;CAAE,KACtE,QA0BoD,CAAC;AACxD,eAAO,MAAM,aAAa,QATD,IASgC,CAAC"}