@kici-dev/shared 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -140,6 +140,20 @@ export interface PurgeStaleExecutionResult {
140
140
  * service restarts).
141
141
  */
142
142
  export declare function clearDispatchQueueDirect(databaseUrl: string): Promise<void>;
143
+ /**
144
+ * TRUNCATE the three scaler-state tables on the orchestrator DB (direct SQL).
145
+ *
146
+ * These tables (`scaler_reservations`, `scaler_spawning_agents`,
147
+ * `scaler_agent_jobs`) hold in-flight scaler bookkeeping that a boot / Raft
148
+ * leader switch rehydrates via `ScalerManager.recoverState`. A row for an agent
149
+ * that spawned but never registered (or whose reservation leaked) is counted as
150
+ * used capacity forever, so a warm-reused orchestrator DB can accumulate stale
151
+ * reservations that push `used` past the resource cap and stop every future
152
+ * scale-up. E2E setups that reuse a warm orch DB call this before the
153
+ * orchestrator starts so it rehydrates a clean slate — the DB analog of
154
+ * allocating a fresh machine-ledger directory per run.
155
+ */
156
+ export declare function clearScalerStateDirect(databaseUrl: string): Promise<void>;
143
157
  /**
144
158
  * DELETE orphan execution_runs + execution_jobs for routing keys other than
145
159
  * `routingKey` (and rows with NULL routing_key). Returns row counts.
@@ -788,11 +802,25 @@ export declare function seedSyntheticGithubSourceDirect(databaseUrl: string, opt
788
802
  * encryptFn takes plaintext + AAD and returns ciphertext bytes. The
789
803
  * caller owns the crypto primitive so this helper stays decoupled from
790
804
  * the orchestrator's PgSecretStore crypto module.
805
+ *
806
+ * `customerId` is the org the source belongs to, and passing it is what makes
807
+ * this seed faithful to a deployed environment. `sources.customer_id` carries a
808
+ * column DEFAULT of `'__default__'`, so a row inserted without it lands on the
809
+ * no-tenant anchor — and `resolveOrgId` then reports `'__default__'` for every
810
+ * event on that routing key, which denies org-scoped features (global-workflow
811
+ * registration, the multi-provider lock fallback) for reasons that surface
812
+ * nowhere near the source row. Supplied on both paths so a row an earlier seed
813
+ * left on the default anchor is repaired rather than inherited; that is exactly
814
+ * what the staging deploy's own `updateSourcesCustomerId()` step does after the
815
+ * fact. Omit it only when the caller genuinely has no org (a single-tenant
816
+ * fixture), never because it is inconvenient to thread.
791
817
  */
792
818
  export declare function seedWebhookSecretDirect(databaseUrl: string, opts: {
793
819
  routingKey: string;
794
820
  webhookSecret: string;
795
821
  encryptFn: (plaintext: string, aad: string) => string | Buffer;
822
+ /** Org that owns the source. Written on insert and reasserted on an existing row. */
823
+ customerId?: string;
796
824
  }): Promise<{
797
825
  sourceId: string;
798
826
  }>;
@@ -1036,10 +1064,20 @@ export declare function seedCiSecurityFixturesDirect(databaseUrl: string, opts:
1036
1064
  * the landed status — a terminal failure is reported immediately rather than
1037
1065
  * indistinguishable from a timeout. Used by the cluster reroute tests to gate
1038
1066
  * on a workflow reaching a terminal state after a webhook trigger.
1067
+ *
1068
+ * Pass `deliveryId` to scope the poll to the caller's own delivery. A `since`
1069
+ * window alone does NOT identify a run: any workflow reaching a terminal state
1070
+ * inside the same window matches, so a neighbouring run — including one whose
1071
+ * failure is the point of some other test — is reported as if it were the
1072
+ * caller's. The stored `delivery_id` is the source-prefixed form
1073
+ * (`generic:<org>:<source>:<caller-id>`), so the caller's id is matched as a
1074
+ * suffix.
1039
1075
  */
1040
1076
  export declare function waitForExecutionRunReachesStatusSinceDirect(databaseUrl: string, opts: {
1041
1077
  since: Date;
1042
1078
  statuses: readonly string[];
1079
+ /** Scope to one delivery. Omit only when the caller genuinely wants "any run". */
1080
+ deliveryId?: string;
1043
1081
  timeoutMs?: number;
1044
1082
  intervalMs?: number;
1045
1083
  }): Promise<{
@@ -1049,6 +1087,10 @@ export declare function waitForExecutionRunReachesStatusSinceDirect(databaseUrl:
1049
1087
  * Fetch the most recent `execution_runs` row matching `status`, plus its
1050
1088
  * `execution_jobs`. Used by cluster reroute tests to confirm the run +
1051
1089
  * its jobs completed successfully.
1090
+ *
1091
+ * Pass `deliveryId` to scope to the caller's own delivery — "the newest run
1092
+ * with this status" is otherwise satisfied by any concurrent workflow, so the
1093
+ * returned `run_id` can belong to a different test.
1052
1094
  */
1053
1095
  export interface LatestExecutionRunResult {
1054
1096
  run: {
@@ -1064,6 +1106,8 @@ export interface LatestExecutionRunResult {
1064
1106
  }
1065
1107
  export declare function latestExecutionRunByStatusDirect(databaseUrl: string, opts: {
1066
1108
  status: string;
1109
+ /** Scope to one delivery. Omit only when the caller genuinely wants "any run". */
1110
+ deliveryId?: string;
1067
1111
  }): Promise<LatestExecutionRunResult | null>;
1068
1112
  /**
1069
1113
  * Wait for a `execution_jobs` row joined against the most recent
@@ -1479,18 +1523,38 @@ export interface OrgSettingsRepoPatternEntry {
1479
1523
  pattern: string;
1480
1524
  }
1481
1525
  /**
1482
- * UPSERT org_settings for a customer/org id. `globalWorkflowsEnabled` is
1483
- * required; the three list fields are each optional. Each list is a jsonb
1484
- * array of `{routingKey?, pattern}` entries. Pass `null` to clear a list.
1526
+ * UPSERT the per-org global-workflow repo lists for a customer/org id. The
1527
+ * three list fields are each optional; each list is a jsonb array of
1528
+ * `{routingKey?, pattern}` entries. Pass `null` to clear a list.
1529
+ *
1530
+ * The master enable switch is NOT set here: it is fleet-wide
1531
+ * (`cluster_settings.global_workflows_enabled`) — use
1532
+ * {@link setClusterGlobalWorkflowsEnabledDirect}.
1485
1533
  */
1486
1534
  export interface UpsertOrgSettingsOpts {
1487
1535
  customerId: string;
1488
- globalWorkflowsEnabled: boolean;
1489
1536
  allowedRepos?: OrgSettingsRepoPatternEntry[] | null;
1490
1537
  deniedRepos?: OrgSettingsRepoPatternEntry[] | null;
1491
1538
  elevatedRepos?: OrgSettingsRepoPatternEntry[] | null;
1492
1539
  }
1493
1540
  export declare function upsertOrgSettingsGlobalWorkflowsDirect(databaseUrl: string, opts: UpsertOrgSettingsOpts): Promise<void>;
1541
+ /**
1542
+ * Set (or clear) the fleet-wide global-workflows master switch directly.
1543
+ *
1544
+ * Direct-DB by design, matching every other `*Direct` helper here: these exist
1545
+ * for E2E seeding, which must set the switch BEFORE an orchestrator is up and
1546
+ * therefore cannot go through the admin HTTP API. Operators use
1547
+ * `kici-admin cluster-settings set --global-workflows-enabled <bool>`.
1548
+ *
1549
+ * Passing `null` clears the override, so the orchestrator's configured default
1550
+ * applies. Upserts the singleton `id='default'` row, so it works against a
1551
+ * fresh database with no cluster_settings row at all.
1552
+ *
1553
+ * `cluster_settings.version` is left untouched: seeding happens before any
1554
+ * worker reads the row, so there is nothing to invalidate yet — the operator
1555
+ * PATCH path (admin-cluster-settings.ts) owns the version bump for live changes.
1556
+ */
1557
+ export declare function setClusterGlobalWorkflowsEnabledDirect(databaseUrl: string, enabled: boolean | null): Promise<void>;
1494
1558
  /**
1495
1559
  * UPDATE org_settings.global_workflow_denied_repos for a customer/org id.
1496
1560
  * Assumes the row exists (upsertOrgSettingsGlobalWorkflowsDirect was
package/dist/db-admin.js CHANGED
@@ -243,6 +243,27 @@ async function clearDispatchQueueDirect(databaseUrl) {
243
243
  }
244
244
  }
245
245
  /**
246
+ * TRUNCATE the three scaler-state tables on the orchestrator DB (direct SQL).
247
+ *
248
+ * These tables (`scaler_reservations`, `scaler_spawning_agents`,
249
+ * `scaler_agent_jobs`) hold in-flight scaler bookkeeping that a boot / Raft
250
+ * leader switch rehydrates via `ScalerManager.recoverState`. A row for an agent
251
+ * that spawned but never registered (or whose reservation leaked) is counted as
252
+ * used capacity forever, so a warm-reused orchestrator DB can accumulate stale
253
+ * reservations that push `used` past the resource cap and stop every future
254
+ * scale-up. E2E setups that reuse a warm orch DB call this before the
255
+ * orchestrator starts so it rehydrates a clean slate — the DB analog of
256
+ * allocating a fresh machine-ledger directory per run.
257
+ */
258
+ async function clearScalerStateDirect(databaseUrl) {
259
+ const pool = createPool(databaseUrl);
260
+ try {
261
+ await pool.query("TRUNCATE scaler_reservations, scaler_spawning_agents, scaler_agent_jobs");
262
+ } finally {
263
+ await pool.end();
264
+ }
265
+ }
266
+ /**
246
267
  * DELETE orphan execution_runs + execution_jobs for routing keys other than
247
268
  * `routingKey` (and rows with NULL routing_key). Returns row counts.
248
269
  */
@@ -1337,6 +1358,18 @@ async function seedSyntheticGithubSourceDirect(databaseUrl, opts) {
1337
1358
  * encryptFn takes plaintext + AAD and returns ciphertext bytes. The
1338
1359
  * caller owns the crypto primitive so this helper stays decoupled from
1339
1360
  * the orchestrator's PgSecretStore crypto module.
1361
+ *
1362
+ * `customerId` is the org the source belongs to, and passing it is what makes
1363
+ * this seed faithful to a deployed environment. `sources.customer_id` carries a
1364
+ * column DEFAULT of `'__default__'`, so a row inserted without it lands on the
1365
+ * no-tenant anchor — and `resolveOrgId` then reports `'__default__'` for every
1366
+ * event on that routing key, which denies org-scoped features (global-workflow
1367
+ * registration, the multi-provider lock fallback) for reasons that surface
1368
+ * nowhere near the source row. Supplied on both paths so a row an earlier seed
1369
+ * left on the default anchor is repaired rather than inherited; that is exactly
1370
+ * what the staging deploy's own `updateSourcesCustomerId()` step does after the
1371
+ * fact. Omit it only when the caller genuinely has no org (a single-tenant
1372
+ * fixture), never because it is inconvenient to thread.
1340
1373
  */
1341
1374
  async function seedWebhookSecretDirect(databaseUrl, opts) {
1342
1375
  const { randomBytes } = await import("node:crypto");
@@ -1344,18 +1377,21 @@ async function seedWebhookSecretDirect(databaseUrl, opts) {
1344
1377
  try {
1345
1378
  let sourceId;
1346
1379
  const sourceResult = await pool.query("SELECT id FROM sources WHERE routing_key = $1", [opts.routingKey]);
1347
- if (sourceResult.rows.length > 0) sourceId = sourceResult.rows[0].id;
1348
- else {
1380
+ if (sourceResult.rows.length > 0) {
1381
+ sourceId = sourceResult.rows[0].id;
1382
+ if (opts.customerId) await pool.query("UPDATE sources SET customer_id = $1, updated_at = now() WHERE routing_key = $2", [opts.customerId, opts.routingKey]);
1383
+ } else {
1349
1384
  sourceId = randomBytes(16).toString("hex");
1350
1385
  const [provider, appId] = opts.routingKey.split(":");
1351
- await pool.query(`INSERT INTO sources (id, provider, name, routing_key, config)
1352
- VALUES ($1, $2, $3, $4, $5)
1353
- ON CONFLICT (routing_key) DO NOTHING`, [
1386
+ await pool.query(`INSERT INTO sources (id, provider, name, routing_key, config${opts.customerId ? ", customer_id" : ""})
1387
+ VALUES ($1, $2, $3, $4, $5${opts.customerId ? ", $6" : ""})
1388
+ ${opts.customerId ? "ON CONFLICT (routing_key) DO UPDATE SET customer_id = EXCLUDED.customer_id, updated_at = now()" : "ON CONFLICT (routing_key) DO NOTHING"}`, [
1354
1389
  sourceId,
1355
1390
  provider || "github",
1356
1391
  `e2e-${appId}`,
1357
1392
  opts.routingKey,
1358
- JSON.stringify({ appId: appId || "" })
1393
+ JSON.stringify({ appId: appId || "" }),
1394
+ ...opts.customerId ? [opts.customerId] : []
1359
1395
  ]);
1360
1396
  sourceId = (await pool.query("SELECT id FROM sources WHERE routing_key = $1", [opts.routingKey])).rows[0].id;
1361
1397
  }
@@ -1818,6 +1854,14 @@ async function seedCiSecurityFixturesDirect(databaseUrl, opts) {
1818
1854
  * the landed status — a terminal failure is reported immediately rather than
1819
1855
  * indistinguishable from a timeout. Used by the cluster reroute tests to gate
1820
1856
  * on a workflow reaching a terminal state after a webhook trigger.
1857
+ *
1858
+ * Pass `deliveryId` to scope the poll to the caller's own delivery. A `since`
1859
+ * window alone does NOT identify a run: any workflow reaching a terminal state
1860
+ * inside the same window matches, so a neighbouring run — including one whose
1861
+ * failure is the point of some other test — is reported as if it were the
1862
+ * caller's. The stored `delivery_id` is the source-prefixed form
1863
+ * (`generic:<org>:<source>:<caller-id>`), so the caller's id is matched as a
1864
+ * suffix.
1821
1865
  */
1822
1866
  async function waitForExecutionRunReachesStatusSinceDirect(databaseUrl, opts) {
1823
1867
  const timeoutMs = opts.timeoutMs ?? 24e4;
@@ -1827,9 +1871,13 @@ async function waitForExecutionRunReachesStatusSinceDirect(databaseUrl, opts) {
1827
1871
  try {
1828
1872
  while (Date.now() < deadline) {
1829
1873
  const result = await pool.query(`SELECT status FROM execution_runs
1830
- WHERE started_at > $1 AND status = ANY($2)
1874
+ WHERE started_at > $1 AND status = ANY($2)${opts.deliveryId ? " AND delivery_id LIKE $3" : ""}
1831
1875
  ORDER BY started_at DESC
1832
- LIMIT 1`, [opts.since, [...opts.statuses]]);
1876
+ LIMIT 1`, opts.deliveryId ? [
1877
+ opts.since,
1878
+ [...opts.statuses],
1879
+ `%${opts.deliveryId}`
1880
+ ] : [opts.since, [...opts.statuses]]);
1833
1881
  if (result.rows.length > 0) return { status: result.rows[0].status };
1834
1882
  await new Promise((r) => setTimeout(r, intervalMs));
1835
1883
  }
@@ -1842,8 +1890,8 @@ async function latestExecutionRunByStatusDirect(databaseUrl, opts) {
1842
1890
  const pool = createPool(databaseUrl);
1843
1891
  try {
1844
1892
  const runResult = await pool.query(`SELECT run_id, workflow_name, status FROM execution_runs
1845
- WHERE status = $1
1846
- ORDER BY started_at DESC LIMIT 1`, [opts.status]);
1893
+ WHERE status = $1${opts.deliveryId ? " AND delivery_id LIKE $2" : ""}
1894
+ ORDER BY started_at DESC LIMIT 1`, opts.deliveryId ? [opts.status, `%${opts.deliveryId}`] : [opts.status]);
1847
1895
  if (runResult.rows.length === 0) return null;
1848
1896
  const run = runResult.rows[0];
1849
1897
  return {
@@ -2176,7 +2224,9 @@ async function deleteWorkflowRegistrationsDirect(databaseUrl, opts) {
2176
2224
  if (opts.id) result = await pool.query(`DELETE FROM workflow_registrations WHERE id = $1`, [opts.id]);
2177
2225
  else if (opts.routingKey) result = await pool.query(`DELETE FROM workflow_registrations WHERE routing_key = $1`, [opts.routingKey]);
2178
2226
  else result = await pool.query(`DELETE FROM workflow_registrations WHERE repo_identifier = $1`, [opts.repoIdentifier]);
2179
- return { deleted: result.rowCount ?? 0 };
2227
+ const deleted = result.rowCount ?? 0;
2228
+ if (deleted > 0) await pool.query(`UPDATE registry_versions SET version = version + 1, updated_at = NOW() WHERE id = 'default'`);
2229
+ return { deleted };
2180
2230
  } finally {
2181
2231
  await pool.end();
2182
2232
  }
@@ -2512,19 +2562,17 @@ async function upsertOrgSettingsGlobalWorkflowsDirect(databaseUrl, opts) {
2512
2562
  const pool = createPool(databaseUrl);
2513
2563
  try {
2514
2564
  await pool.query(`INSERT INTO org_settings (
2515
- customer_id, global_workflows_enabled,
2565
+ customer_id,
2516
2566
  global_workflow_allowed_repos,
2517
2567
  global_workflow_denied_repos,
2518
2568
  global_workflow_elevated_repos
2519
- ) VALUES ($1, $2, $3::jsonb, $4::jsonb, $5::jsonb)
2569
+ ) VALUES ($1, $2::jsonb, $3::jsonb, $4::jsonb)
2520
2570
  ON CONFLICT (customer_id) DO UPDATE SET
2521
- global_workflows_enabled = EXCLUDED.global_workflows_enabled,
2522
2571
  global_workflow_allowed_repos = EXCLUDED.global_workflow_allowed_repos,
2523
2572
  global_workflow_denied_repos = EXCLUDED.global_workflow_denied_repos,
2524
2573
  global_workflow_elevated_repos = EXCLUDED.global_workflow_elevated_repos,
2525
2574
  updated_at = NOW()`, [
2526
2575
  opts.customerId,
2527
- opts.globalWorkflowsEnabled,
2528
2576
  opts.allowedRepos == null ? null : JSON.stringify(opts.allowedRepos),
2529
2577
  opts.deniedRepos == null ? null : JSON.stringify(opts.deniedRepos),
2530
2578
  opts.elevatedRepos == null ? null : JSON.stringify(opts.elevatedRepos)
@@ -2534,6 +2582,33 @@ async function upsertOrgSettingsGlobalWorkflowsDirect(databaseUrl, opts) {
2534
2582
  }
2535
2583
  }
2536
2584
  /**
2585
+ * Set (or clear) the fleet-wide global-workflows master switch directly.
2586
+ *
2587
+ * Direct-DB by design, matching every other `*Direct` helper here: these exist
2588
+ * for E2E seeding, which must set the switch BEFORE an orchestrator is up and
2589
+ * therefore cannot go through the admin HTTP API. Operators use
2590
+ * `kici-admin cluster-settings set --global-workflows-enabled <bool>`.
2591
+ *
2592
+ * Passing `null` clears the override, so the orchestrator's configured default
2593
+ * applies. Upserts the singleton `id='default'` row, so it works against a
2594
+ * fresh database with no cluster_settings row at all.
2595
+ *
2596
+ * `cluster_settings.version` is left untouched: seeding happens before any
2597
+ * worker reads the row, so there is nothing to invalidate yet — the operator
2598
+ * PATCH path (admin-cluster-settings.ts) owns the version bump for live changes.
2599
+ */
2600
+ async function setClusterGlobalWorkflowsEnabledDirect(databaseUrl, enabled) {
2601
+ const pool = createPool(databaseUrl);
2602
+ try {
2603
+ await pool.query(`INSERT INTO cluster_settings (id, global_workflows_enabled)
2604
+ VALUES ('default', $1)
2605
+ ON CONFLICT (id) DO UPDATE SET
2606
+ global_workflows_enabled = EXCLUDED.global_workflows_enabled`, [enabled]);
2607
+ } finally {
2608
+ await pool.end();
2609
+ }
2610
+ }
2611
+ /**
2537
2612
  * UPDATE org_settings.global_workflow_denied_repos for a customer/org id.
2538
2613
  * Assumes the row exists (upsertOrgSettingsGlobalWorkflowsDirect was
2539
2614
  * called earlier in the test).
@@ -2868,6 +2943,6 @@ async function terminateIdleDbBackendsDirect(databaseUrl) {
2868
2943
  }
2869
2944
  }
2870
2945
  //#endregion
2871
- export { CI_SECURITY_OTHER_REPO, MIGRATION_HASH_TABLE, PROVIDER_HASH_KEY, REGISTERABLE_TRIGGER_TYPES, apiKeyExistsDirect, bumpRegistryVersionDirect, bumpRegistryVersionSimpleDirect, cleanupExecutionRowsDirect, clearDispatchQueueDirect, clearPeerCredentialsRevokedAtByIdsDirect, computeMigrationsHash, countActivePeerCredentialsByInstanceDirect, countCronLastFiredDirect, countHeldRunsByRunIdDirect, countWebhookSourcesByConnectionIdDirect, createContextTemplateDirect, createDbRole, createJoinTokenDirect, createReadOnlyDbUser, deleteContextDirect, deleteCronLastFiredDirect, deleteCrossRepoTrustDirect, deleteExecutionRunsByWorkflowNameDirect, deleteGenericWebhookSourcesByNameDirect, deleteJoinTokensByCreatedByDirect, deleteKiciEventsDirect, deleteOrgSettingsByCustomerIdDirect, deletePeerCredentialsByInstanceIdLikeDirect, deleteWorkflowRegistrationsDirect, describeTableColumnsDirect, dropAndCreateDatabase, dropDatabaseDirect, emitKiciEventDirect, ensureDatabase, ensureOrgOwnerMemberDirect, findAnyUserApiKeyIdDirect, getExecutionRunSecurityDirect, getGenericWebhookSourceByRoutingKeyDirect, getHeldRunByIdDirect, getPeerCredentialRevokedAtDirect, getRegistryVersionDirect, getWebhookSourceByRoutingKeyDirect, getWorkflowRegistrationByIdDirect, insertCronLastFiredNowDirect, insertCrossRepoTrustStrictDirect, insertKiciEventAtDirect, insertKiciEventRawDirect, insertPeerCredentialExpiredDirect, insertWorkflowRegistrationRawDirect, insertWorkflowRegistrationStrictDirect, isSchemaCurrent, isSchemaCurrentFromFilesDirect, latestExecutionRunByStatusDirect, listActiveGenericWebhookSourcesDirect, listActivePeerCredentialsExcludingDirect, listCheckRunTrackingDirect, listContextsDirect, listCrossRepoTrustBySourceRoutingKeyDirect, listExecutionJobsDirect, listExecutionRunsDirect, listHeldRunApprovalsDirect, listKiciEventsDirect, listQueueDirect, listRegistrationsByRoutingKeyDirect, listRegistrationsDirect, maskDatabaseUrl, paginateUnprocessedEventsKeysetDirect, parseDatabaseUrl, platformConnectionExistsDirect, pollKiciEventsDirect, prunePeerCredentialsDirect, purgeContextsDirect, purgeScopedSecretsDirect, purgeSecretBackendsDirect, purgeStaleExecutionDirect, purgeStaleSourcesDirect, readStoredMigrationContentHash, registerWorkflowManualDirect, resetRaftStateDirect, resolvePlatformWebhookSourceRoutingKeyDirect, restoreSoftDeletedGenericWebhookSourceDirect, seedApiKeyInlineDirect, seedCiSecurityFixturesDirect, seedContextBindingDirect, seedContextDirect, seedCrossRepoTrustDirect, seedGenericWebhookSourceDirect, seedSourcePrivateKeyDirect, seedSyntheticGithubSourceDirect, seedUniversalGitSourceDirect, seedWebhookSecretDirect, setContextPolicyDirect, setContextSecretDirect, showContextDirect, showExecutionRunDirect, showKiciEventDirect, showQueueEntryDirect, showRegistrationDirect, storeMigrationContentHash, storeMigrationContentHashInTableDirect, tableExistsDirect, terminateIdleDbBackendsDirect, updateGenericWebhookVerificationConfigDirect, updateOrgSettingsDeniedReposDirect, updateSourceRoutingKeyDirect, updateWorkflowRegistrationCommitShaDirect, upsertCronLastFiredDirect, upsertOrgSettingsGlobalWorkflowsDirect, verifyKiciEventNotifyDirect, waitForEventLogRowByDeliveryIdDirect, waitForExecutionRunReachesStatusSinceDirect, waitForLatestExecutionJobStatusDirect, waitForPlatformEventLogDistinctRoutedDirect, waitForPlatformExecutionRunStatusDirect, waitForPlatformRegistrationsDirect, waitForPostgresDirect, waitForRegistrationsByRoutingKeyDirect, waitForRegistrationsUpdatedAtAdvanceDirect, waitForRunCompletionDirect };
2946
+ export { CI_SECURITY_OTHER_REPO, MIGRATION_HASH_TABLE, PROVIDER_HASH_KEY, REGISTERABLE_TRIGGER_TYPES, apiKeyExistsDirect, bumpRegistryVersionDirect, bumpRegistryVersionSimpleDirect, cleanupExecutionRowsDirect, clearDispatchQueueDirect, clearPeerCredentialsRevokedAtByIdsDirect, clearScalerStateDirect, computeMigrationsHash, countActivePeerCredentialsByInstanceDirect, countCronLastFiredDirect, countHeldRunsByRunIdDirect, countWebhookSourcesByConnectionIdDirect, createContextTemplateDirect, createDbRole, createJoinTokenDirect, createReadOnlyDbUser, deleteContextDirect, deleteCronLastFiredDirect, deleteCrossRepoTrustDirect, deleteExecutionRunsByWorkflowNameDirect, deleteGenericWebhookSourcesByNameDirect, deleteJoinTokensByCreatedByDirect, deleteKiciEventsDirect, deleteOrgSettingsByCustomerIdDirect, deletePeerCredentialsByInstanceIdLikeDirect, deleteWorkflowRegistrationsDirect, describeTableColumnsDirect, dropAndCreateDatabase, dropDatabaseDirect, emitKiciEventDirect, ensureDatabase, ensureOrgOwnerMemberDirect, findAnyUserApiKeyIdDirect, getExecutionRunSecurityDirect, getGenericWebhookSourceByRoutingKeyDirect, getHeldRunByIdDirect, getPeerCredentialRevokedAtDirect, getRegistryVersionDirect, getWebhookSourceByRoutingKeyDirect, getWorkflowRegistrationByIdDirect, insertCronLastFiredNowDirect, insertCrossRepoTrustStrictDirect, insertKiciEventAtDirect, insertKiciEventRawDirect, insertPeerCredentialExpiredDirect, insertWorkflowRegistrationRawDirect, insertWorkflowRegistrationStrictDirect, isSchemaCurrent, isSchemaCurrentFromFilesDirect, latestExecutionRunByStatusDirect, listActiveGenericWebhookSourcesDirect, listActivePeerCredentialsExcludingDirect, listCheckRunTrackingDirect, listContextsDirect, listCrossRepoTrustBySourceRoutingKeyDirect, listExecutionJobsDirect, listExecutionRunsDirect, listHeldRunApprovalsDirect, listKiciEventsDirect, listQueueDirect, listRegistrationsByRoutingKeyDirect, listRegistrationsDirect, maskDatabaseUrl, paginateUnprocessedEventsKeysetDirect, parseDatabaseUrl, platformConnectionExistsDirect, pollKiciEventsDirect, prunePeerCredentialsDirect, purgeContextsDirect, purgeScopedSecretsDirect, purgeSecretBackendsDirect, purgeStaleExecutionDirect, purgeStaleSourcesDirect, readStoredMigrationContentHash, registerWorkflowManualDirect, resetRaftStateDirect, resolvePlatformWebhookSourceRoutingKeyDirect, restoreSoftDeletedGenericWebhookSourceDirect, seedApiKeyInlineDirect, seedCiSecurityFixturesDirect, seedContextBindingDirect, seedContextDirect, seedCrossRepoTrustDirect, seedGenericWebhookSourceDirect, seedSourcePrivateKeyDirect, seedSyntheticGithubSourceDirect, seedUniversalGitSourceDirect, seedWebhookSecretDirect, setClusterGlobalWorkflowsEnabledDirect, setContextPolicyDirect, setContextSecretDirect, showContextDirect, showExecutionRunDirect, showKiciEventDirect, showQueueEntryDirect, showRegistrationDirect, storeMigrationContentHash, storeMigrationContentHashInTableDirect, tableExistsDirect, terminateIdleDbBackendsDirect, updateGenericWebhookVerificationConfigDirect, updateOrgSettingsDeniedReposDirect, updateSourceRoutingKeyDirect, updateWorkflowRegistrationCommitShaDirect, upsertCronLastFiredDirect, upsertOrgSettingsGlobalWorkflowsDirect, verifyKiciEventNotifyDirect, waitForEventLogRowByDeliveryIdDirect, waitForExecutionRunReachesStatusSinceDirect, waitForLatestExecutionJobStatusDirect, waitForPlatformEventLogDistinctRoutedDirect, waitForPlatformExecutionRunStatusDirect, waitForPlatformRegistrationsDirect, waitForPostgresDirect, waitForRegistrationsByRoutingKeyDirect, waitForRegistrationsUpdatedAtAdvanceDirect, waitForRunCompletionDirect };
2872
2947
 
2873
2948
  //# sourceMappingURL=db-admin.js.map
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export { redactConfig, addLogsToArchive, MAX_LOG_BYTES } from './diagnostics/bun
6
6
  export { chunkBuffer, BundleChunkAssembler, ChunkRequestWaiter, FLEET_CHUNK_BYTES, type BundleChunkFrame, } from './diagnostics/bundle-chunks.js';
7
7
  export { createPool, createDb, isPoolAcquireTimeout, type CreatePoolOptions, type PgPoolErrorSource, type PoolAcquireOutcome, } from './db.js';
8
8
  export { isPgUniqueViolation } from './pg-errors.js';
9
- export { parseDatabaseUrl, maskDatabaseUrl, dropAndCreateDatabase, dropDatabaseDirect, ensureDatabase, type EnsureDatabaseOpts, createDbRole, createReadOnlyDbUser, computeMigrationsHash, storeMigrationContentHash, readStoredMigrationContentHash, isSchemaCurrent, clearDispatchQueueDirect, purgeStaleExecutionDirect, purgeStaleSourcesDirect, purgeScopedSecretsDirect, purgeContextsDirect, seedContextDirect, deleteContextDirect, seedContextBindingDirect, setContextPolicyDirect, listContextsDirect, showContextDirect, createContextTemplateDirect, setContextSecretDirect, listQueueDirect, showQueueEntryDirect, listExecutionRunsDirect, showExecutionRunDirect, listCheckRunTrackingDirect, listExecutionJobsDirect, listRegistrationsDirect, showRegistrationDirect, registerWorkflowManualDirect, resetRaftStateDirect, emitKiciEventDirect, seedGenericWebhookSourceDirect, purgeSecretBackendsDirect, apiKeyExistsDirect, seedApiKeyInlineDirect, platformConnectionExistsDirect, countWebhookSourcesByConnectionIdDirect, getWebhookSourceByRoutingKeyDirect, findAnyUserApiKeyIdDirect, seedSyntheticGithubSourceDirect, seedWebhookSecretDirect, seedSourcePrivateKeyDirect, bumpRegistryVersionDirect, pollKiciEventsDirect, waitForPostgresDirect, waitForRunCompletionDirect, cleanupExecutionRowsDirect, isSchemaCurrentFromFilesDirect, storeMigrationContentHashInTableDirect, createJoinTokenDirect, deleteJoinTokensByCreatedByDirect, updateSourceRoutingKeyDirect, prunePeerCredentialsDirect, waitForPlatformRegistrationsDirect, seedUniversalGitSourceDirect, seedCiSecurityFixturesDirect, CI_SECURITY_OTHER_REPO, waitForExecutionRunReachesStatusSinceDirect, latestExecutionRunByStatusDirect, waitForLatestExecutionJobStatusDirect, describeTableColumnsDirect, tableExistsDirect, insertKiciEventRawDirect, showKiciEventDirect, listKiciEventsDirect, deleteKiciEventsDirect, insertKiciEventAtDirect, paginateUnprocessedEventsKeysetDirect, verifyKiciEventNotifyDirect, seedCrossRepoTrustDirect, listCrossRepoTrustBySourceRoutingKeyDirect, deleteCrossRepoTrustDirect, insertCrossRepoTrustStrictDirect, deleteWorkflowRegistrationsDirect, getWorkflowRegistrationByIdDirect, listRegistrationsByRoutingKeyDirect, waitForRegistrationsByRoutingKeyDirect, waitForRegistrationsUpdatedAtAdvanceDirect, updateWorkflowRegistrationCommitShaDirect, insertWorkflowRegistrationRawDirect, insertWorkflowRegistrationStrictDirect, getRegistryVersionDirect, bumpRegistryVersionSimpleDirect, upsertCronLastFiredDirect, countCronLastFiredDirect, insertCronLastFiredNowDirect, deleteCronLastFiredDirect, deleteExecutionRunsByWorkflowNameDirect, getGenericWebhookSourceByRoutingKeyDirect, listActiveGenericWebhookSourcesDirect, updateGenericWebhookVerificationConfigDirect, deleteGenericWebhookSourcesByNameDirect, restoreSoftDeletedGenericWebhookSourceDirect, upsertOrgSettingsGlobalWorkflowsDirect, updateOrgSettingsDeniedReposDirect, deleteOrgSettingsByCustomerIdDirect, getExecutionRunSecurityDirect, getHeldRunByIdDirect, listHeldRunApprovalsDirect, countHeldRunsByRunIdDirect, waitForPlatformExecutionRunStatusDirect, waitForPlatformEventLogDistinctRoutedDirect, waitForEventLogRowByDeliveryIdDirect, resolvePlatformWebhookSourceRoutingKeyDirect, ensureOrgOwnerMemberDirect, deletePeerCredentialsByInstanceIdLikeDirect, insertPeerCredentialExpiredDirect, getPeerCredentialRevokedAtDirect, listActivePeerCredentialsExcludingDirect, clearPeerCredentialsRevokedAtByIdsDirect, countActivePeerCredentialsByInstanceDirect, terminateIdleDbBackendsDirect, type ColumnInfo, type KiciEventRow, type CrossRepoTrustRow, type WorkflowRegistrationFullRow, type RegistrationsScopedResult, type LatestExecutionRunResult, type WaitForLatestJobResult, type ExecutionRunSecurityRow, type HeldRunSecurityRow, type EventLogRow as PlatformEventLogRow, type UpsertOrgSettingsOpts, type OrgSettingsRepoPatternEntry, type InsertKiciEventRawOpts, type EmitKiciEventOpts, type SeedGenericWebhookSourceOpts, REGISTERABLE_TRIGGER_TYPES, MIGRATION_HASH_TABLE, type PurgeStaleExecutionResult, type PurgeStaleSourcesResult, type SeedContextOpts, type SeedContextResult, type SeedContextBindingOpts, type SetContextPolicyOpts, type ContextRow, type ContextVariableRow, type ContextBindingRow, type ShowContextResult, type CreateContextTemplateOpts, type SetContextSecretOpts, type DispatchQueueRow, type ListQueueOpts, type ExecutionRunRow, type ExecutionJobRow, type ListExecutionRunsOpts, type CheckRunTrackingDirectRow, type ListCheckRunTrackingOpts, type WorkflowRegistrationRow, type ListRegistrationsOpts, type ListRegistrationsResult, type ShowRegistrationResult, type RegisterWorkflowManualOpts, type RegisterWorkflowManualResult, } from './db-admin.js';
9
+ export { parseDatabaseUrl, maskDatabaseUrl, dropAndCreateDatabase, dropDatabaseDirect, ensureDatabase, type EnsureDatabaseOpts, createDbRole, createReadOnlyDbUser, computeMigrationsHash, storeMigrationContentHash, readStoredMigrationContentHash, isSchemaCurrent, clearDispatchQueueDirect, clearScalerStateDirect, purgeStaleExecutionDirect, purgeStaleSourcesDirect, purgeScopedSecretsDirect, purgeContextsDirect, seedContextDirect, deleteContextDirect, seedContextBindingDirect, setContextPolicyDirect, listContextsDirect, showContextDirect, createContextTemplateDirect, setContextSecretDirect, listQueueDirect, showQueueEntryDirect, listExecutionRunsDirect, showExecutionRunDirect, listCheckRunTrackingDirect, listExecutionJobsDirect, listRegistrationsDirect, showRegistrationDirect, registerWorkflowManualDirect, resetRaftStateDirect, emitKiciEventDirect, seedGenericWebhookSourceDirect, purgeSecretBackendsDirect, apiKeyExistsDirect, seedApiKeyInlineDirect, platformConnectionExistsDirect, countWebhookSourcesByConnectionIdDirect, getWebhookSourceByRoutingKeyDirect, findAnyUserApiKeyIdDirect, seedSyntheticGithubSourceDirect, seedWebhookSecretDirect, seedSourcePrivateKeyDirect, bumpRegistryVersionDirect, pollKiciEventsDirect, waitForPostgresDirect, waitForRunCompletionDirect, cleanupExecutionRowsDirect, isSchemaCurrentFromFilesDirect, storeMigrationContentHashInTableDirect, createJoinTokenDirect, deleteJoinTokensByCreatedByDirect, updateSourceRoutingKeyDirect, prunePeerCredentialsDirect, waitForPlatformRegistrationsDirect, seedUniversalGitSourceDirect, seedCiSecurityFixturesDirect, CI_SECURITY_OTHER_REPO, waitForExecutionRunReachesStatusSinceDirect, latestExecutionRunByStatusDirect, waitForLatestExecutionJobStatusDirect, describeTableColumnsDirect, tableExistsDirect, insertKiciEventRawDirect, showKiciEventDirect, listKiciEventsDirect, deleteKiciEventsDirect, insertKiciEventAtDirect, paginateUnprocessedEventsKeysetDirect, verifyKiciEventNotifyDirect, seedCrossRepoTrustDirect, listCrossRepoTrustBySourceRoutingKeyDirect, deleteCrossRepoTrustDirect, insertCrossRepoTrustStrictDirect, deleteWorkflowRegistrationsDirect, getWorkflowRegistrationByIdDirect, listRegistrationsByRoutingKeyDirect, waitForRegistrationsByRoutingKeyDirect, waitForRegistrationsUpdatedAtAdvanceDirect, updateWorkflowRegistrationCommitShaDirect, insertWorkflowRegistrationRawDirect, insertWorkflowRegistrationStrictDirect, getRegistryVersionDirect, bumpRegistryVersionSimpleDirect, upsertCronLastFiredDirect, countCronLastFiredDirect, insertCronLastFiredNowDirect, deleteCronLastFiredDirect, deleteExecutionRunsByWorkflowNameDirect, getGenericWebhookSourceByRoutingKeyDirect, listActiveGenericWebhookSourcesDirect, updateGenericWebhookVerificationConfigDirect, deleteGenericWebhookSourcesByNameDirect, restoreSoftDeletedGenericWebhookSourceDirect, upsertOrgSettingsGlobalWorkflowsDirect, setClusterGlobalWorkflowsEnabledDirect, updateOrgSettingsDeniedReposDirect, deleteOrgSettingsByCustomerIdDirect, getExecutionRunSecurityDirect, getHeldRunByIdDirect, listHeldRunApprovalsDirect, countHeldRunsByRunIdDirect, waitForPlatformExecutionRunStatusDirect, waitForPlatformEventLogDistinctRoutedDirect, waitForEventLogRowByDeliveryIdDirect, resolvePlatformWebhookSourceRoutingKeyDirect, ensureOrgOwnerMemberDirect, deletePeerCredentialsByInstanceIdLikeDirect, insertPeerCredentialExpiredDirect, getPeerCredentialRevokedAtDirect, listActivePeerCredentialsExcludingDirect, clearPeerCredentialsRevokedAtByIdsDirect, countActivePeerCredentialsByInstanceDirect, terminateIdleDbBackendsDirect, type ColumnInfo, type KiciEventRow, type CrossRepoTrustRow, type WorkflowRegistrationFullRow, type RegistrationsScopedResult, type LatestExecutionRunResult, type WaitForLatestJobResult, type ExecutionRunSecurityRow, type HeldRunSecurityRow, type EventLogRow as PlatformEventLogRow, type UpsertOrgSettingsOpts, type OrgSettingsRepoPatternEntry, type InsertKiciEventRawOpts, type EmitKiciEventOpts, type SeedGenericWebhookSourceOpts, REGISTERABLE_TRIGGER_TYPES, MIGRATION_HASH_TABLE, type PurgeStaleExecutionResult, type PurgeStaleSourcesResult, type SeedContextOpts, type SeedContextResult, type SeedContextBindingOpts, type SetContextPolicyOpts, type ContextRow, type ContextVariableRow, type ContextBindingRow, type ShowContextResult, type CreateContextTemplateOpts, type SetContextSecretOpts, type DispatchQueueRow, type ListQueueOpts, type ExecutionRunRow, type ExecutionJobRow, type ListExecutionRunsOpts, type CheckRunTrackingDirectRow, type ListCheckRunTrackingOpts, type WorkflowRegistrationRow, type ListRegistrationsOpts, type ListRegistrationsResult, type ShowRegistrationResult, type RegisterWorkflowManualOpts, type RegisterWorkflowManualResult, } from './db-admin.js';
10
10
  export { createMetricsRoutes, type MetricsRoutesDeps } from './routes/metrics.js';
11
11
  export { createHealthRoutes, type HealthRoutesDeps } from './routes/health.js';
12
12
  export { getReconnectDelay } from './reconnect-delay.js';
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import "./rolldown-runtime-ClRpJifh.js";
2
2
  import { AgentDeliveryMode, AgentPlatform, splitAgentPlatform } from "./agent-platform.js";
3
3
  import { createDb, createPool, isPoolAcquireTimeout } from "./db.js";
4
- import { CI_SECURITY_OTHER_REPO, MIGRATION_HASH_TABLE, REGISTERABLE_TRIGGER_TYPES, apiKeyExistsDirect, bumpRegistryVersionDirect, bumpRegistryVersionSimpleDirect, cleanupExecutionRowsDirect, clearDispatchQueueDirect, clearPeerCredentialsRevokedAtByIdsDirect, computeMigrationsHash, countActivePeerCredentialsByInstanceDirect, countCronLastFiredDirect, countHeldRunsByRunIdDirect, countWebhookSourcesByConnectionIdDirect, createContextTemplateDirect, createDbRole, createJoinTokenDirect, createReadOnlyDbUser, deleteContextDirect, deleteCronLastFiredDirect, deleteCrossRepoTrustDirect, deleteExecutionRunsByWorkflowNameDirect, deleteGenericWebhookSourcesByNameDirect, deleteJoinTokensByCreatedByDirect, deleteKiciEventsDirect, deleteOrgSettingsByCustomerIdDirect, deletePeerCredentialsByInstanceIdLikeDirect, deleteWorkflowRegistrationsDirect, describeTableColumnsDirect, dropAndCreateDatabase, dropDatabaseDirect, emitKiciEventDirect, ensureDatabase, ensureOrgOwnerMemberDirect, findAnyUserApiKeyIdDirect, getExecutionRunSecurityDirect, getGenericWebhookSourceByRoutingKeyDirect, getHeldRunByIdDirect, getPeerCredentialRevokedAtDirect, getRegistryVersionDirect, getWebhookSourceByRoutingKeyDirect, getWorkflowRegistrationByIdDirect, insertCronLastFiredNowDirect, insertCrossRepoTrustStrictDirect, insertKiciEventAtDirect, insertKiciEventRawDirect, insertPeerCredentialExpiredDirect, insertWorkflowRegistrationRawDirect, insertWorkflowRegistrationStrictDirect, isSchemaCurrent, isSchemaCurrentFromFilesDirect, latestExecutionRunByStatusDirect, listActiveGenericWebhookSourcesDirect, listActivePeerCredentialsExcludingDirect, listCheckRunTrackingDirect, listContextsDirect, listCrossRepoTrustBySourceRoutingKeyDirect, listExecutionJobsDirect, listExecutionRunsDirect, listHeldRunApprovalsDirect, listKiciEventsDirect, listQueueDirect, listRegistrationsByRoutingKeyDirect, listRegistrationsDirect, maskDatabaseUrl, paginateUnprocessedEventsKeysetDirect, parseDatabaseUrl, platformConnectionExistsDirect, pollKiciEventsDirect, prunePeerCredentialsDirect, purgeContextsDirect, purgeScopedSecretsDirect, purgeSecretBackendsDirect, purgeStaleExecutionDirect, purgeStaleSourcesDirect, readStoredMigrationContentHash, registerWorkflowManualDirect, resetRaftStateDirect, resolvePlatformWebhookSourceRoutingKeyDirect, restoreSoftDeletedGenericWebhookSourceDirect, seedApiKeyInlineDirect, seedCiSecurityFixturesDirect, seedContextBindingDirect, seedContextDirect, seedCrossRepoTrustDirect, seedGenericWebhookSourceDirect, seedSourcePrivateKeyDirect, seedSyntheticGithubSourceDirect, seedUniversalGitSourceDirect, seedWebhookSecretDirect, setContextPolicyDirect, setContextSecretDirect, showContextDirect, showExecutionRunDirect, showKiciEventDirect, showQueueEntryDirect, showRegistrationDirect, storeMigrationContentHash, storeMigrationContentHashInTableDirect, tableExistsDirect, terminateIdleDbBackendsDirect, updateGenericWebhookVerificationConfigDirect, updateOrgSettingsDeniedReposDirect, updateSourceRoutingKeyDirect, updateWorkflowRegistrationCommitShaDirect, upsertCronLastFiredDirect, upsertOrgSettingsGlobalWorkflowsDirect, verifyKiciEventNotifyDirect, waitForEventLogRowByDeliveryIdDirect, waitForExecutionRunReachesStatusSinceDirect, waitForLatestExecutionJobStatusDirect, waitForPlatformEventLogDistinctRoutedDirect, waitForPlatformExecutionRunStatusDirect, waitForPlatformRegistrationsDirect, waitForPostgresDirect, waitForRegistrationsByRoutingKeyDirect, waitForRegistrationsUpdatedAtAdvanceDirect, waitForRunCompletionDirect } from "./db-admin.js";
4
+ import { CI_SECURITY_OTHER_REPO, MIGRATION_HASH_TABLE, REGISTERABLE_TRIGGER_TYPES, apiKeyExistsDirect, bumpRegistryVersionDirect, bumpRegistryVersionSimpleDirect, cleanupExecutionRowsDirect, clearDispatchQueueDirect, clearPeerCredentialsRevokedAtByIdsDirect, clearScalerStateDirect, computeMigrationsHash, countActivePeerCredentialsByInstanceDirect, countCronLastFiredDirect, countHeldRunsByRunIdDirect, countWebhookSourcesByConnectionIdDirect, createContextTemplateDirect, createDbRole, createJoinTokenDirect, createReadOnlyDbUser, deleteContextDirect, deleteCronLastFiredDirect, deleteCrossRepoTrustDirect, deleteExecutionRunsByWorkflowNameDirect, deleteGenericWebhookSourcesByNameDirect, deleteJoinTokensByCreatedByDirect, deleteKiciEventsDirect, deleteOrgSettingsByCustomerIdDirect, deletePeerCredentialsByInstanceIdLikeDirect, deleteWorkflowRegistrationsDirect, describeTableColumnsDirect, dropAndCreateDatabase, dropDatabaseDirect, emitKiciEventDirect, ensureDatabase, ensureOrgOwnerMemberDirect, findAnyUserApiKeyIdDirect, getExecutionRunSecurityDirect, getGenericWebhookSourceByRoutingKeyDirect, getHeldRunByIdDirect, getPeerCredentialRevokedAtDirect, getRegistryVersionDirect, getWebhookSourceByRoutingKeyDirect, getWorkflowRegistrationByIdDirect, insertCronLastFiredNowDirect, insertCrossRepoTrustStrictDirect, insertKiciEventAtDirect, insertKiciEventRawDirect, insertPeerCredentialExpiredDirect, insertWorkflowRegistrationRawDirect, insertWorkflowRegistrationStrictDirect, isSchemaCurrent, isSchemaCurrentFromFilesDirect, latestExecutionRunByStatusDirect, listActiveGenericWebhookSourcesDirect, listActivePeerCredentialsExcludingDirect, listCheckRunTrackingDirect, listContextsDirect, listCrossRepoTrustBySourceRoutingKeyDirect, listExecutionJobsDirect, listExecutionRunsDirect, listHeldRunApprovalsDirect, listKiciEventsDirect, listQueueDirect, listRegistrationsByRoutingKeyDirect, listRegistrationsDirect, maskDatabaseUrl, paginateUnprocessedEventsKeysetDirect, parseDatabaseUrl, platformConnectionExistsDirect, pollKiciEventsDirect, prunePeerCredentialsDirect, purgeContextsDirect, purgeScopedSecretsDirect, purgeSecretBackendsDirect, purgeStaleExecutionDirect, purgeStaleSourcesDirect, readStoredMigrationContentHash, registerWorkflowManualDirect, resetRaftStateDirect, resolvePlatformWebhookSourceRoutingKeyDirect, restoreSoftDeletedGenericWebhookSourceDirect, seedApiKeyInlineDirect, seedCiSecurityFixturesDirect, seedContextBindingDirect, seedContextDirect, seedCrossRepoTrustDirect, seedGenericWebhookSourceDirect, seedSourcePrivateKeyDirect, seedSyntheticGithubSourceDirect, seedUniversalGitSourceDirect, seedWebhookSecretDirect, setClusterGlobalWorkflowsEnabledDirect, setContextPolicyDirect, setContextSecretDirect, showContextDirect, showExecutionRunDirect, showKiciEventDirect, showQueueEntryDirect, showRegistrationDirect, storeMigrationContentHash, storeMigrationContentHashInTableDirect, tableExistsDirect, terminateIdleDbBackendsDirect, updateGenericWebhookVerificationConfigDirect, updateOrgSettingsDeniedReposDirect, updateSourceRoutingKeyDirect, updateWorkflowRegistrationCommitShaDirect, upsertCronLastFiredDirect, upsertOrgSettingsGlobalWorkflowsDirect, verifyKiciEventNotifyDirect, waitForEventLogRowByDeliveryIdDirect, waitForExecutionRunReachesStatusSinceDirect, waitForLatestExecutionJobStatusDirect, waitForPlatformEventLogDistinctRoutedDirect, waitForPlatformExecutionRunStatusDirect, waitForPlatformRegistrationsDirect, waitForPostgresDirect, waitForRegistrationsByRoutingKeyDirect, waitForRegistrationsUpdatedAtAdvanceDirect, waitForRunCompletionDirect } from "./db-admin.js";
5
5
  import { setupGracefulShutdown } from "./graceful-shutdown.js";
6
6
  import { decrypt, deriveKey, encrypt, generateMasterKey } from "./secret-crypto.js";
7
7
  import { RingBuffer } from "./ring-buffer.js";
@@ -28,4 +28,4 @@ import { BaseColdStore } from "./cold-store/cold-store.js";
28
28
  import { ChunkLru } from "./cold-store/lru.js";
29
29
  import "./cold-store/index.js";
30
30
  export * from "@kici-dev/core";
31
- export { AgentDeliveryMode, AgentPlatform, BaseColdStore, BundleChunkAssembler, CI_SECURITY_OTHER_REPO, COLD_BUCKET_NAMES, ChunkLru, ChunkRequestWaiter, DEFAULT_TABLE_CONFIG, FLEET_CHUNK_BYTES, MAX_LOG_BYTES, MIGRATION_HASH_TABLE, REGISTERABLE_TRIGGER_TYPES, RingBuffer, addLogsToArchive, apiKeyExistsDirect, bumpRegistryVersionDirect, bumpRegistryVersionSimpleDirect, chunkBuffer, chunkObjectKey, cleanupExecutionRowsDirect, clearDispatchQueueDirect, clearPeerCredentialsRevokedAtByIdsDirect, coldDaysToBucket, coldStoreArchiveBytesTotal, coldStoreArchiveCyclesTotal, coldStoreArchiveDurationSeconds, coldStoreArchiveRowsTotal, coldStorePurgeBytesTotal, coldStorePurgeChunksTotal, coldStorePurgeDurationSeconds, coldStoreRehydrateBytesTotal, coldStoreRehydrateDurationSeconds, coldStoreRehydrateRequestsTotal, coldStoreReplayDurationSeconds, coldStoreReplayRowsTotal, coldStoreVerifyFailuresTotal, collectRuntimeMetricNames, computeChunkId, computeMigrationsHash, countActivePeerCredentialsByInstanceDirect, countCronLastFiredDirect, countHeldRunsByRunIdDirect, countWebhookSourcesByConnectionIdDirect, createContextTemplateDirect, createDb, createDbRole, createHealthRoutes, createJoinTokenDirect, createMeter, createMetricsRoutes, createPool, createReadOnlyDbUser, createS3Client, decodeChunk, decrypt, deleteContextDirect, deleteCronLastFiredDirect, deleteCrossRepoTrustDirect, deleteExecutionRunsByWorkflowNameDirect, deleteGenericWebhookSourcesByNameDirect, deleteJoinTokensByCreatedByDirect, deleteKiciEventsDirect, deleteOrgSettingsByCustomerIdDirect, deletePeerCredentialsByInstanceIdLikeDirect, deleteWorkflowRegistrationsDirect, deriveKey, describeTableColumnsDirect, dropAndCreateDatabase, dropDatabaseDirect, emitKiciEventDirect, encodeChunk, encodeKeySegment, encrypt, ensureDatabase, ensureOrgOwnerMemberDirect, findAnyUserApiKeyIdDirect, generateMasterKey, getExecutionRunSecurityDirect, getGenericWebhookSourceByRoutingKeyDirect, getHeldRunByIdDirect, getPeerCredentialRevokedAtDirect, getPrometheusExporter, getReconnectDelay, getRegistryVersionDirect, getWebhookSourceByRoutingKeyDirect, getWorkflowRegistrationByIdDirect, initTelemetry, insertCronLastFiredNowDirect, insertCrossRepoTrustStrictDirect, insertKiciEventAtDirect, insertKiciEventRawDirect, insertPeerCredentialExpiredDirect, insertWorkflowRegistrationRawDirect, insertWorkflowRegistrationStrictDirect, isLongerColdRetention, isPgUniqueViolation, isPoolAcquireTimeout, isSchemaCurrent, isSchemaCurrentFromFilesDirect, kiciMkdtemp, kiciTmpBase, latestExecutionRunByStatusDirect, listActiveGenericWebhookSourcesDirect, listActivePeerCredentialsExcludingDirect, listCheckRunTrackingDirect, listContextsDirect, listCrossRepoTrustBySourceRoutingKeyDirect, listExecutionJobsDirect, listExecutionRunsDirect, listHeldRunApprovalsDirect, listKiciEventsDirect, listQueueDirect, listRegistrationsByRoutingKeyDirect, listRegistrationsDirect, maskDatabaseUrl, paginateUnprocessedEventsKeysetDirect, parseDatabaseUrl, parseManifest, platformConnectionExistsDirect, pollKiciEventsDirect, prunePeerCredentialsDirect, purgeContextsDirect, purgeScopedSecretsDirect, purgeSecretBackendsDirect, purgeStaleExecutionDirect, purgeStaleSourcesDirect, readStoredMigrationContentHash, redactConfig, registerWorkflowManualDirect, resetRaftStateDirect, resolvePlatformWebhookSourceRoutingKeyDirect, resolveTableConfig, restoreSoftDeletedGenericWebhookSourceDirect, seedApiKeyInlineDirect, seedCiSecurityFixturesDirect, seedContextBindingDirect, seedContextDirect, seedCrossRepoTrustDirect, seedGenericWebhookSourceDirect, seedSourcePrivateKeyDirect, seedSyntheticGithubSourceDirect, seedUniversalGitSourceDirect, seedWebhookSecretDirect, serializeManifest, setContextPolicyDirect, setContextSecretDirect, setupGracefulShutdown, showContextDirect, showExecutionRunDirect, showKiciEventDirect, showQueueEntryDirect, showRegistrationDirect, splitAgentPlatform, storeMigrationContentHash, storeMigrationContentHashInTableDirect, tableExistsDirect, tablePrefix, tenantDayBucketPrefix, tenantDayPrefix, terminateIdleDbBackendsDirect, updateGenericWebhookVerificationConfigDirect, updateOrgSettingsDeniedReposDirect, updateSourceRoutingKeyDirect, updateWorkflowRegistrationCommitShaDirect, upsertCronLastFiredDirect, upsertOrgSettingsGlobalWorkflowsDirect, validateRequiredTools, verifyKiciEventNotifyDirect, waitForEventLogRowByDeliveryIdDirect, waitForExecutionRunReachesStatusSinceDirect, waitForLatestExecutionJobStatusDirect, waitForPlatformEventLogDistinctRoutedDirect, waitForPlatformExecutionRunStatusDirect, waitForPlatformRegistrationsDirect, waitForPostgresDirect, waitForRegistrationsByRoutingKeyDirect, waitForRegistrationsUpdatedAtAdvanceDirect, waitForRunCompletionDirect };
31
+ export { AgentDeliveryMode, AgentPlatform, BaseColdStore, BundleChunkAssembler, CI_SECURITY_OTHER_REPO, COLD_BUCKET_NAMES, ChunkLru, ChunkRequestWaiter, DEFAULT_TABLE_CONFIG, FLEET_CHUNK_BYTES, MAX_LOG_BYTES, MIGRATION_HASH_TABLE, REGISTERABLE_TRIGGER_TYPES, RingBuffer, addLogsToArchive, apiKeyExistsDirect, bumpRegistryVersionDirect, bumpRegistryVersionSimpleDirect, chunkBuffer, chunkObjectKey, cleanupExecutionRowsDirect, clearDispatchQueueDirect, clearPeerCredentialsRevokedAtByIdsDirect, clearScalerStateDirect, coldDaysToBucket, coldStoreArchiveBytesTotal, coldStoreArchiveCyclesTotal, coldStoreArchiveDurationSeconds, coldStoreArchiveRowsTotal, coldStorePurgeBytesTotal, coldStorePurgeChunksTotal, coldStorePurgeDurationSeconds, coldStoreRehydrateBytesTotal, coldStoreRehydrateDurationSeconds, coldStoreRehydrateRequestsTotal, coldStoreReplayDurationSeconds, coldStoreReplayRowsTotal, coldStoreVerifyFailuresTotal, collectRuntimeMetricNames, computeChunkId, computeMigrationsHash, countActivePeerCredentialsByInstanceDirect, countCronLastFiredDirect, countHeldRunsByRunIdDirect, countWebhookSourcesByConnectionIdDirect, createContextTemplateDirect, createDb, createDbRole, createHealthRoutes, createJoinTokenDirect, createMeter, createMetricsRoutes, createPool, createReadOnlyDbUser, createS3Client, decodeChunk, decrypt, deleteContextDirect, deleteCronLastFiredDirect, deleteCrossRepoTrustDirect, deleteExecutionRunsByWorkflowNameDirect, deleteGenericWebhookSourcesByNameDirect, deleteJoinTokensByCreatedByDirect, deleteKiciEventsDirect, deleteOrgSettingsByCustomerIdDirect, deletePeerCredentialsByInstanceIdLikeDirect, deleteWorkflowRegistrationsDirect, deriveKey, describeTableColumnsDirect, dropAndCreateDatabase, dropDatabaseDirect, emitKiciEventDirect, encodeChunk, encodeKeySegment, encrypt, ensureDatabase, ensureOrgOwnerMemberDirect, findAnyUserApiKeyIdDirect, generateMasterKey, getExecutionRunSecurityDirect, getGenericWebhookSourceByRoutingKeyDirect, getHeldRunByIdDirect, getPeerCredentialRevokedAtDirect, getPrometheusExporter, getReconnectDelay, getRegistryVersionDirect, getWebhookSourceByRoutingKeyDirect, getWorkflowRegistrationByIdDirect, initTelemetry, insertCronLastFiredNowDirect, insertCrossRepoTrustStrictDirect, insertKiciEventAtDirect, insertKiciEventRawDirect, insertPeerCredentialExpiredDirect, insertWorkflowRegistrationRawDirect, insertWorkflowRegistrationStrictDirect, isLongerColdRetention, isPgUniqueViolation, isPoolAcquireTimeout, isSchemaCurrent, isSchemaCurrentFromFilesDirect, kiciMkdtemp, kiciTmpBase, latestExecutionRunByStatusDirect, listActiveGenericWebhookSourcesDirect, listActivePeerCredentialsExcludingDirect, listCheckRunTrackingDirect, listContextsDirect, listCrossRepoTrustBySourceRoutingKeyDirect, listExecutionJobsDirect, listExecutionRunsDirect, listHeldRunApprovalsDirect, listKiciEventsDirect, listQueueDirect, listRegistrationsByRoutingKeyDirect, listRegistrationsDirect, maskDatabaseUrl, paginateUnprocessedEventsKeysetDirect, parseDatabaseUrl, parseManifest, platformConnectionExistsDirect, pollKiciEventsDirect, prunePeerCredentialsDirect, purgeContextsDirect, purgeScopedSecretsDirect, purgeSecretBackendsDirect, purgeStaleExecutionDirect, purgeStaleSourcesDirect, readStoredMigrationContentHash, redactConfig, registerWorkflowManualDirect, resetRaftStateDirect, resolvePlatformWebhookSourceRoutingKeyDirect, resolveTableConfig, restoreSoftDeletedGenericWebhookSourceDirect, seedApiKeyInlineDirect, seedCiSecurityFixturesDirect, seedContextBindingDirect, seedContextDirect, seedCrossRepoTrustDirect, seedGenericWebhookSourceDirect, seedSourcePrivateKeyDirect, seedSyntheticGithubSourceDirect, seedUniversalGitSourceDirect, seedWebhookSecretDirect, serializeManifest, setClusterGlobalWorkflowsEnabledDirect, setContextPolicyDirect, setContextSecretDirect, setupGracefulShutdown, showContextDirect, showExecutionRunDirect, showKiciEventDirect, showQueueEntryDirect, showRegistrationDirect, splitAgentPlatform, storeMigrationContentHash, storeMigrationContentHashInTableDirect, tableExistsDirect, tablePrefix, tenantDayBucketPrefix, tenantDayPrefix, terminateIdleDbBackendsDirect, updateGenericWebhookVerificationConfigDirect, updateOrgSettingsDeniedReposDirect, updateSourceRoutingKeyDirect, updateWorkflowRegistrationCommitShaDirect, upsertCronLastFiredDirect, upsertOrgSettingsGlobalWorkflowsDirect, validateRequiredTools, verifyKiciEventNotifyDirect, waitForEventLogRowByDeliveryIdDirect, waitForExecutionRunReachesStatusSinceDirect, waitForLatestExecutionJobStatusDirect, waitForPlatformEventLogDistinctRoutedDirect, waitForPlatformExecutionRunStatusDirect, waitForPlatformRegistrationsDirect, waitForPostgresDirect, waitForRegistrationsByRoutingKeyDirect, waitForRegistrationsUpdatedAtAdvanceDirect, waitForRunCompletionDirect };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kici-dev/shared",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Shared utilities for the KiCI CI/CD stack — logging, zx setup, crypto, telemetry, health and metrics routes. No business logic.",
5
5
  "keywords": [
6
6
  "ci",
@@ -113,8 +113,8 @@
113
113
  "yaml": "^2.9.0",
114
114
  "zod": "^4.4.3",
115
115
  "zx": "^8.8.5",
116
- "@kici-dev/core": "0.4.0",
117
- "@kici-dev/engine": "0.4.0"
116
+ "@kici-dev/core": "0.5.0",
117
+ "@kici-dev/engine": "0.5.0"
118
118
  },
119
119
  "devDependencies": {
120
120
  "@opentelemetry/sdk-trace-base": "^2.10.0",
package/sbom.spdx.json CHANGED
@@ -2,10 +2,10 @@
2
2
  "spdxVersion": "SPDX-2.3",
3
3
  "dataLicense": "CC0-1.0",
4
4
  "SPDXID": "SPDXRef-DOCUMENT",
5
- "name": "@kici-dev/shared@0.4.0",
6
- "documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Fshared/0.4.0/b813759a-3662-428c-bff8-940dfd6f0035",
5
+ "name": "@kici-dev/shared@0.5.0",
6
+ "documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Fshared/0.5.0/1f964606-bca6-4c8b-be5f-6106283dd9a5",
7
7
  "creationInfo": {
8
- "created": "2026-08-09T16:02:36Z",
8
+ "created": "2026-08-15T19:15:28Z",
9
9
  "creators": [
10
10
  "Tool: kici-sbom-generator"
11
11
  ]
@@ -564,9 +564,9 @@
564
564
  "homepage": "https://ericsmekens.github.io/jsep/tree/master/packages/regex#readme"
565
565
  },
566
566
  {
567
- "SPDXID": "SPDXRef-Package--kici-dev-core-0.4.0",
567
+ "SPDXID": "SPDXRef-Package--kici-dev-core-0.5.0",
568
568
  "name": "@kici-dev/core",
569
- "versionInfo": "0.4.0",
569
+ "versionInfo": "0.5.0",
570
570
  "downloadLocation": "NOASSERTION",
571
571
  "filesAnalyzed": false,
572
572
  "licenseConcluded": "NOASSERTION",
@@ -577,16 +577,16 @@
577
577
  {
578
578
  "referenceCategory": "PACKAGE-MANAGER",
579
579
  "referenceType": "purl",
580
- "referenceLocator": "pkg:npm/%40kici-dev/core@0.4.0"
580
+ "referenceLocator": "pkg:npm/%40kici-dev/core@0.5.0"
581
581
  }
582
582
  ],
583
583
  "description": "Light shared utilities for the KiCI stack (logging, errors, formatting, crypto, zx init, the TypeScript ESM loader hook). No server-side dependencies.",
584
584
  "homepage": "https://kici.dev"
585
585
  },
586
586
  {
587
- "SPDXID": "SPDXRef-Package--kici-dev-engine-0.4.0",
587
+ "SPDXID": "SPDXRef-Package--kici-dev-engine-0.5.0",
588
588
  "name": "@kici-dev/engine",
589
- "versionInfo": "0.4.0",
589
+ "versionInfo": "0.5.0",
590
590
  "downloadLocation": "NOASSERTION",
591
591
  "filesAnalyzed": false,
592
592
  "licenseConcluded": "NOASSERTION",
@@ -597,7 +597,7 @@
597
597
  {
598
598
  "referenceCategory": "PACKAGE-MANAGER",
599
599
  "referenceType": "purl",
600
- "referenceLocator": "pkg:npm/%40kici-dev/engine@0.4.0"
600
+ "referenceLocator": "pkg:npm/%40kici-dev/engine@0.5.0"
601
601
  }
602
602
  ],
603
603
  "description": "Shared business logic for the KiCI CI/CD stack: protocol, triggers, state machine, and provider interfaces used by the Platform relay, orchestrator, and compiler.",
@@ -606,7 +606,7 @@
606
606
  {
607
607
  "SPDXID": "SPDXRef-RootPackage",
608
608
  "name": "@kici-dev/shared",
609
- "versionInfo": "0.4.0",
609
+ "versionInfo": "0.5.0",
610
610
  "downloadLocation": "NOASSERTION",
611
611
  "filesAnalyzed": false,
612
612
  "licenseConcluded": "NOASSERTION",
@@ -617,7 +617,7 @@
617
617
  {
618
618
  "referenceCategory": "PACKAGE-MANAGER",
619
619
  "referenceType": "purl",
620
- "referenceLocator": "pkg:npm/%40kici-dev/shared@0.4.0"
620
+ "referenceLocator": "pkg:npm/%40kici-dev/shared@0.5.0"
621
621
  }
622
622
  ],
623
623
  "description": "Shared utilities for the KiCI CI/CD stack — logging, zx setup, crypto, telemetry, health and metrics routes. No business logic.",
@@ -4896,57 +4896,62 @@
4896
4896
  "relationshipType": "DEPENDS_ON"
4897
4897
  },
4898
4898
  {
4899
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.4.0",
4899
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.5.0",
4900
4900
  "relatedSpdxElement": "SPDXRef-Package-oxc-transform-0.140.0",
4901
4901
  "relationshipType": "DEPENDS_ON"
4902
4902
  },
4903
4903
  {
4904
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.4.0",
4904
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.5.0",
4905
4905
  "relatedSpdxElement": "SPDXRef-Package-picocolors-1.1.1",
4906
4906
  "relationshipType": "DEPENDS_ON"
4907
4907
  },
4908
4908
  {
4909
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.4.0",
4909
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.5.0",
4910
4910
  "relatedSpdxElement": "SPDXRef-Package-winston-daily-rotate-file-5.0.0",
4911
4911
  "relationshipType": "DEPENDS_ON"
4912
4912
  },
4913
4913
  {
4914
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.4.0",
4914
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.5.0",
4915
4915
  "relatedSpdxElement": "SPDXRef-Package-winston-3.19.0",
4916
4916
  "relationshipType": "DEPENDS_ON"
4917
4917
  },
4918
4918
  {
4919
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.4.0",
4919
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.5.0",
4920
4920
  "relatedSpdxElement": "SPDXRef-Package-zod-4.4.3",
4921
4921
  "relationshipType": "DEPENDS_ON"
4922
4922
  },
4923
4923
  {
4924
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.4.0",
4924
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.5.0",
4925
4925
  "relatedSpdxElement": "SPDXRef-Package-zx-8.8.5",
4926
4926
  "relationshipType": "DEPENDS_ON"
4927
4927
  },
4928
4928
  {
4929
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.4.0",
4929
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.5.0",
4930
4930
  "relatedSpdxElement": "SPDXRef-Package-jose-6.2.3",
4931
4931
  "relationshipType": "DEPENDS_ON"
4932
4932
  },
4933
4933
  {
4934
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.4.0",
4934
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.5.0",
4935
4935
  "relatedSpdxElement": "SPDXRef-Package-jsonpath-plus-10.4.0",
4936
4936
  "relationshipType": "DEPENDS_ON"
4937
4937
  },
4938
4938
  {
4939
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.4.0",
4939
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.5.0",
4940
4940
  "relatedSpdxElement": "SPDXRef-Package-picomatch-4.0.5",
4941
4941
  "relationshipType": "DEPENDS_ON"
4942
4942
  },
4943
4943
  {
4944
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.4.0",
4944
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.5.0",
4945
4945
  "relatedSpdxElement": "SPDXRef-Package-safe-regex-2.1.1",
4946
4946
  "relationshipType": "DEPENDS_ON"
4947
4947
  },
4948
4948
  {
4949
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.4.0",
4949
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.5.0",
4950
+ "relatedSpdxElement": "SPDXRef-Package-yaml-2.9.0",
4951
+ "relationshipType": "DEPENDS_ON"
4952
+ },
4953
+ {
4954
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.5.0",
4950
4955
  "relatedSpdxElement": "SPDXRef-Package-zod-4.4.3",
4951
4956
  "relationshipType": "DEPENDS_ON"
4952
4957
  },
@@ -4957,12 +4962,12 @@
4957
4962
  },
4958
4963
  {
4959
4964
  "spdxElementId": "SPDXRef-RootPackage",
4960
- "relatedSpdxElement": "SPDXRef-Package--kici-dev-core-0.4.0",
4965
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-core-0.5.0",
4961
4966
  "relationshipType": "DEPENDS_ON"
4962
4967
  },
4963
4968
  {
4964
4969
  "spdxElementId": "SPDXRef-RootPackage",
4965
- "relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.4.0",
4970
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.5.0",
4966
4971
  "relationshipType": "DEPENDS_ON"
4967
4972
  },
4968
4973
  {