@kici-dev/orchestrator 0.1.18 → 0.1.19

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.
package/dist/cli.js CHANGED
@@ -15096,7 +15096,9 @@ function renderBootScript(cfg) {
15096
15096
  "#!/usr/bin/env bash",
15097
15097
  `# Generated by kici-admin firecracker --persist for bridge ${cfg.bridgeName}. Do not hand-edit.`,
15098
15098
  "set -euo pipefail",
15099
- `printf '%s\\n' "${NM_CONF_CONTENT.replace(/\n/g, "\\n").replace(/"/g, "\\\"")}" > ${NM_CONF_PATH} || true`,
15099
+ `cat > ${NM_CONF_PATH} <<'KICI_NM_EOF' || true`,
15100
+ NM_CONF_CONTENT.replace(/\n$/, ""),
15101
+ "KICI_NM_EOF",
15100
15102
  "HOST_IFACE=$(ip -j route show default | sed -n 's/.*\"dev\":\"\\([^\"]*\\)\".*/\\1/p' | head -1)",
15101
15103
  "if [ -z \"$HOST_IFACE\" ]; then echo \"no default-route iface\" >&2; exit 1; fi",
15102
15104
  ...lines,
package/dist/server.js CHANGED
@@ -8937,16 +8937,25 @@ async function cancelRunWithReason(deps, runId, reason, options = {}) {
8937
8937
  const agentId = dispatcher.getAgentIdForJob(jobId);
8938
8938
  if (!agentId) continue;
8939
8939
  const entry = registry.get(agentId);
8940
- if (!entry?.ws) continue;
8941
- entry.ws.send(JSON.stringify({
8942
- type: "job.cancel",
8943
- messageId: randomUUID(),
8944
- runId,
8945
- jobId,
8946
- reason,
8947
- ...force && { force: true }
8948
- }));
8949
- agentsNotified++;
8940
+ if (entry?.ws?.readyState !== 1) continue;
8941
+ try {
8942
+ entry.ws.send(JSON.stringify({
8943
+ type: "job.cancel",
8944
+ messageId: randomUUID(),
8945
+ runId,
8946
+ jobId,
8947
+ reason,
8948
+ ...force && { force: true }
8949
+ }));
8950
+ agentsNotified++;
8951
+ } catch (err) {
8952
+ logger$88.warn("Failed to send job.cancel to agent; treating job as orphaned", {
8953
+ runId,
8954
+ jobId,
8955
+ agentId,
8956
+ error: err instanceof Error ? err.message : String(err)
8957
+ });
8958
+ }
8950
8959
  }
8951
8960
  const pendingResult = await db.updateTable("execution_jobs").set({
8952
8961
  status: ExecutionJobStatus.enum.cancelled,
@@ -19383,6 +19392,21 @@ var init_admin_runs = __esmMin((() => {
19383
19392
  }));
19384
19393
  //#endregion
19385
19394
  //#region src/cold-store/load-event-log-range.ts
19395
+ /**
19396
+ * Read-through helper for `event_log` (Orchestrator) — Phase E.
19397
+ *
19398
+ * Mirrors the Platform-side `load-event-log-range.ts`. Tenant column is
19399
+ * `routing_key` (NOT NULL on this side) so cold-store partitioning
19400
+ * doesn't need a synthetic-tenant fallback. Partition column is
19401
+ * `received_at`.
19402
+ *
19403
+ * The orchestrator's `event_log` row carries the `payload_key` reference
19404
+ * (an S3 object that holds the gzipped webhook body). Cold-store
19405
+ * archives the row metadata and preserves `payload_key` verbatim — the
19406
+ * payload blob itself stays in object storage indefinitely so the
19407
+ * dashboard's payload-detail view continues to resolve archived
19408
+ * deliveries identically to hot ones.
19409
+ */
19386
19410
  async function loadEventLogRange(args) {
19387
19411
  const { db, coldStore, routingKey, orgId, event, action, status, deliveryId, fromTs, toTs, limit, offset, includeArchived } = args;
19388
19412
  const warmCutoff = /* @__PURE__ */ new Date(Date.now() - EVENT_LOG_WARM_TTL_DAYS * 864e5);
@@ -19400,6 +19424,16 @@ async function loadEventLogRange(args) {
19400
19424
  if (coldFromTs >= warmCutoff) return hotRows;
19401
19425
  const remaining = limit - hotRows.length;
19402
19426
  if (remaining <= 0) return hotRows;
19427
+ let hotCountQuery = db.selectFrom("event_log").select(sql`count(*)::text`.as("n")).where("routing_key", "=", routingKey);
19428
+ if (orgId) hotCountQuery = hotCountQuery.where("org_id", "=", orgId);
19429
+ if (event) hotCountQuery = hotCountQuery.where("event", "=", event);
19430
+ if (action) hotCountQuery = hotCountQuery.where("action", "=", action);
19431
+ if (status) hotCountQuery = hotCountQuery.where("status", "=", status);
19432
+ if (deliveryId) hotCountQuery = hotCountQuery.where("delivery_id", "like", `%${deliveryId}%`);
19433
+ if (fromTs) hotCountQuery = hotCountQuery.where("received_at", ">=", fromTs);
19434
+ if (toTs) hotCountQuery = hotCountQuery.where("received_at", "<", toTs);
19435
+ const hotCount = Number((await hotCountQuery.executeTakeFirst())?.n ?? "0");
19436
+ const coldOffset = Math.max(0, offset - hotCount);
19403
19437
  const coldToTs = toTs && toTs < warmCutoff ? toTs : warmCutoff;
19404
19438
  const coldRows = [];
19405
19439
  try {
@@ -19416,7 +19450,6 @@ async function loadEventLogRange(args) {
19416
19450
  if (status !== void 0 && row.status !== status) continue;
19417
19451
  if (deliveryId !== void 0 && !row.delivery_id.includes(deliveryId)) continue;
19418
19452
  coldRows.push(row);
19419
- if (coldRows.length >= remaining) break;
19420
19453
  }
19421
19454
  } catch (err) {
19422
19455
  if (hotRows.length === 0) {
@@ -19436,7 +19469,7 @@ async function loadEventLogRange(args) {
19436
19469
  const at = a.received_at instanceof Date ? a.received_at.getTime() : new Date(a.received_at).getTime();
19437
19470
  return (b.received_at instanceof Date ? b.received_at.getTime() : new Date(b.received_at).getTime()) - at;
19438
19471
  });
19439
- return [...hotRows, ...coldRows.slice(0, remaining)];
19472
+ return [...hotRows, ...coldRows.slice(coldOffset, coldOffset + remaining)];
19440
19473
  }
19441
19474
  /**
19442
19475
  * Detail lookup by `(orgId, deliveryId)`. The dashboard handler joins
@@ -20597,14 +20630,14 @@ var init_admin_config = __esmMin((() => {
20597
20630
  function createHealthRoutes$1(deps = {}) {
20598
20631
  return createHealthRoutes({
20599
20632
  livenessInfo: () => ({
20600
- version: "0.1.18",
20601
- buildDate: "2026-06-17T09:57:52.557Z",
20602
- buildCommit: "d8cff38bb",
20603
- sdkVersion: "0.1.18",
20633
+ version: "0.1.19",
20634
+ buildDate: "2026-06-19T04:32:44.899Z",
20635
+ buildCommit: "1590f5e99",
20636
+ sdkVersion: "0.1.19",
20604
20637
  sdkBundleHash: "8308089347c304e41b457d3867b17bbff11d6b5cd9706b6823e7abdbd849f33f",
20605
- sharedVersion: "0.1.18",
20638
+ sharedVersion: "0.1.19",
20606
20639
  sharedBundleHash: "5f2c220f24d166b0f13d0620a2e80d19689ac8b683a12154daef44e938fd46a7",
20607
- engineVersion: "0.1.18",
20640
+ engineVersion: "0.1.19",
20608
20641
  engineBundleHash: "79ce14640d1798eaaa7cb3aa6c4bc325da3bff1e9f4716936e19614eabb1d858"
20609
20642
  }),
20610
20643
  readinessCheck: deps.db ? async () => {
@@ -20639,7 +20672,7 @@ function createCapabilitiesRoutes() {
20639
20672
  const app = new Hono();
20640
20673
  app.get("/api/v1/capabilities", (c) => {
20641
20674
  const manifest = {
20642
- orchestratorVersion: "0.1.18",
20675
+ orchestratorVersion: "0.1.19",
20643
20676
  protocolVersion: PROTOCOL_VERSION,
20644
20677
  minProtocolVersion: MIN_PROTOCOL_VERSION
20645
20678
  };
@@ -32495,7 +32528,7 @@ var init_peer_client = __esmMin((() => {
32495
32528
  init_peer_crypto();
32496
32529
  init_peer_credentials();
32497
32530
  logger$42 = createLogger({ prefix: "peer-client" });
32498
- SOFTWARE_VERSION$1 = "0.1.18";
32531
+ SOFTWARE_VERSION$1 = "0.1.19";
32499
32532
  PeerClient$1 = class {
32500
32533
  ws = null;
32501
32534
  _state = "disconnected";
@@ -34021,7 +34054,7 @@ var init_peer_handler = __esmMin((() => {
34021
34054
  init_peer_crypto();
34022
34055
  init_join_token();
34023
34056
  logger$41 = createLogger({ prefix: "peer-handler" });
34024
- SOFTWARE_VERSION = "0.1.18";
34057
+ SOFTWARE_VERSION = "0.1.19";
34025
34058
  RATE_LIMIT_MAX = 5;
34026
34059
  RATE_LIMIT_WINDOW_MS = 6e4;
34027
34060
  }));
@@ -49069,12 +49102,16 @@ async function resolveTestRunSecrets(input, deps, orgId, jobEnvironment) {
49069
49102
  }
49070
49103
  function buildJobInput(workflow, mat, ctx, input, secretBundle, fields, environmentVars) {
49071
49104
  const staticJob = mat.lockJob;
49072
- const runsOnLabels = Array.isArray(staticJob.runsOn) ? staticJob.runsOn : [staticJob.runsOn];
49105
+ const runsOnSel = partitionMatchers(staticJob.runsOn ?? []);
49106
+ const excludeSel = partitionMatchers(staticJob.excludeLabels ?? []);
49073
49107
  return {
49074
49108
  runId: ctx.runId,
49075
49109
  workflowName: workflow.name,
49076
49110
  jobName: mat.expandedName,
49077
- runsOnLabels,
49111
+ runsOnLabels: runsOnSel.exact,
49112
+ runsOnPatterns: runsOnSel.regex,
49113
+ excludeLabels: excludeSel.exact,
49114
+ excludePatterns: excludeSel.regex,
49078
49115
  jobConfig: {
49079
49116
  source: workflow.source ?? ctx.fullLockFile.source,
49080
49117
  workflowName: workflow.name,
@@ -56132,9 +56169,14 @@ async function dispatchRerunJobs(opts) {
56132
56169
  if (deps.coordinator && materializedJobs.length > 0) {
56133
56170
  const jobsToRoute = materializedJobs.map((mat) => {
56134
56171
  const job = mat.lockJob;
56172
+ const runsOnSel = partitionMatchers(job.runsOn ?? []);
56173
+ const excludeSel = partitionMatchers(job.excludeLabels ?? []);
56135
56174
  return {
56136
56175
  jobName: mat.expandedName,
56137
- runsOnLabels: [Array.isArray(job.runsOn) ? job.runsOn : [job.runsOn]],
56176
+ runsOnLabels: [runsOnSel.exact],
56177
+ runsOnPatterns: runsOnSel.regex,
56178
+ excludeLabels: excludeSel.exact,
56179
+ excludePatterns: excludeSel.regex,
56138
56180
  jobConfig: buildRerunJobConfig(mat),
56139
56181
  repoUrl,
56140
56182
  ref: originalRun.ref,
@@ -56169,7 +56211,7 @@ async function dispatchRerunJobs(opts) {
56169
56211
  for (const local of routeResult.localJobs) {
56170
56212
  const runsOnLabels = (() => {
56171
56213
  const job = materializedJobs.find((m) => m.expandedName === local.jobName)?.lockJob;
56172
- return job ? Array.isArray(job.runsOn) ? job.runsOn : [job.runsOn] : void 0;
56214
+ return job ? partitionMatchers(job.runsOn ?? []).exact : void 0;
56173
56215
  })();
56174
56216
  const matrixValues = matrixByName.get(local.jobName);
56175
56217
  dispatchedJobs.push({
@@ -56196,12 +56238,17 @@ async function dispatchRerunJobs(opts) {
56196
56238
  if (!routedViaCoordinator) for (const mat of materializedJobs) {
56197
56239
  const job = mat.lockJob;
56198
56240
  const matrixValues = mat.variantValues;
56199
- const runsOnLabels = Array.isArray(job.runsOn) ? job.runsOn : [job.runsOn];
56241
+ const runsOnSel = partitionMatchers(job.runsOn ?? []);
56242
+ const excludeSel = partitionMatchers(job.excludeLabels ?? []);
56243
+ const runsOnLabels = runsOnSel.exact;
56200
56244
  const jobInput = {
56201
56245
  runId: newRunId,
56202
56246
  workflowName: workflow.name,
56203
56247
  jobName: mat.expandedName,
56204
56248
  runsOnLabels,
56249
+ runsOnPatterns: runsOnSel.regex,
56250
+ excludeLabels: excludeSel.exact,
56251
+ excludePatterns: excludeSel.regex,
56205
56252
  jobConfig: buildRerunJobConfig(mat),
56206
56253
  repoUrl,
56207
56254
  ref: originalRun.ref,
@@ -56415,9 +56462,14 @@ async function tryRouteViaCoordinator(args) {
56415
56462
  const installationId = typeof registration.providerContext.installationId === "number" ? registration.providerContext.installationId : void 0;
56416
56463
  const jobsToRoute = materializedJobs.map((mat) => {
56417
56464
  const job = mat.lockJob;
56465
+ const runsOnSel = partitionMatchers(job.runsOn ?? []);
56466
+ const excludeSel = partitionMatchers(job.excludeLabels ?? []);
56418
56467
  return {
56419
56468
  jobName: mat.expandedName,
56420
- runsOnLabels: [Array.isArray(job.runsOn) ? [...job.runsOn] : [job.runsOn]],
56469
+ runsOnLabels: [runsOnSel.exact],
56470
+ runsOnPatterns: runsOnSel.regex,
56471
+ excludeLabels: excludeSel.exact,
56472
+ excludePatterns: excludeSel.regex,
56421
56473
  jobConfig: buildManualJobConfig(workflow, mat),
56422
56474
  repoUrl,
56423
56475
  ref: "",
@@ -56450,7 +56502,7 @@ async function tryRouteViaCoordinator(args) {
56450
56502
  if (!routeResult) return null;
56451
56503
  const dispatchedJobs = routeResult.localJobs.map((local) => {
56452
56504
  const job = materializedJobs.find((m) => m.expandedName === local.jobName)?.lockJob;
56453
- const runsOnLabels = job ? Array.isArray(job.runsOn) ? [...job.runsOn] : [job.runsOn] : void 0;
56505
+ const runsOnLabels = job ? partitionMatchers(job.runsOn ?? []).exact : void 0;
56454
56506
  const matrixValues = matrixByName.get(local.jobName);
56455
56507
  return {
56456
56508
  jobId: local.jobId,
@@ -56483,12 +56535,17 @@ async function dispatchDirectly(args) {
56483
56535
  for (const mat of materializedJobs) {
56484
56536
  const job = mat.lockJob;
56485
56537
  const matrixValues = mat.variantValues;
56486
- const runsOnLabels = Array.isArray(job.runsOn) ? [...job.runsOn] : [job.runsOn];
56538
+ const runsOnSel = partitionMatchers(job.runsOn ?? []);
56539
+ const excludeSel = partitionMatchers(job.excludeLabels ?? []);
56540
+ const runsOnLabels = runsOnSel.exact;
56487
56541
  const jobInput = {
56488
56542
  runId: newRunId,
56489
56543
  workflowName: workflow.name,
56490
56544
  jobName: mat.expandedName,
56491
56545
  runsOnLabels,
56546
+ runsOnPatterns: runsOnSel.regex,
56547
+ excludeLabels: excludeSel.exact,
56548
+ excludePatterns: excludeSel.regex,
56492
56549
  jobConfig: buildManualJobConfig(workflow, mat),
56493
56550
  repoUrl,
56494
56551
  ref: "",
@@ -58212,13 +58269,13 @@ var init_worker_core = __esmMin((() => {
58212
58269
  init_fleet_wiring();
58213
58270
  init_worker_status();
58214
58271
  init_agent_heartbeat();
58215
- ORCHESTRATOR_VERSION$1 = "0.1.18";
58216
- WORKER_BUILD_COMMIT = "d8cff38bb";
58217
- WORKER_SDK_VERSION = "0.1.18";
58272
+ ORCHESTRATOR_VERSION$1 = "0.1.19";
58273
+ WORKER_BUILD_COMMIT = "1590f5e99";
58274
+ WORKER_SDK_VERSION = "0.1.19";
58218
58275
  WORKER_SDK_BUNDLE_HASH = "8308089347c304e41b457d3867b17bbff11d6b5cd9706b6823e7abdbd849f33f";
58219
- WORKER_SHARED_VERSION = "0.1.18";
58276
+ WORKER_SHARED_VERSION = "0.1.19";
58220
58277
  WORKER_SHARED_BUNDLE_HASH = "5f2c220f24d166b0f13d0620a2e80d19689ac8b683a12154daef44e938fd46a7";
58221
- WORKER_ENGINE_VERSION = "0.1.18";
58278
+ WORKER_ENGINE_VERSION = "0.1.19";
58222
58279
  WORKER_ENGINE_BUNDLE_HASH = "79ce14640d1798eaaa7cb3aa6c4bc325da3bff1e9f4716936e19614eabb1d858";
58223
58280
  logger$2 = createLogger({ prefix: "worker" });
58224
58281
  DRAIN_TIMEOUT_MS = 3e5;
@@ -58240,13 +58297,13 @@ var init_worker_core = __esmMin((() => {
58240
58297
  * Graceful shutdown in reverse order:
58241
58298
  * Platform client -> agent WS -> heartbeat -> HTTP -> DB
58242
58299
  */
58243
- const ORCHESTRATOR_VERSION = "0.1.18";
58244
- const BUILD_COMMIT = "d8cff38bb";
58245
- const SDK_VERSION = "0.1.18";
58300
+ const ORCHESTRATOR_VERSION = "0.1.19";
58301
+ const BUILD_COMMIT = "1590f5e99";
58302
+ const SDK_VERSION = "0.1.19";
58246
58303
  const SDK_BUNDLE_HASH = "8308089347c304e41b457d3867b17bbff11d6b5cd9706b6823e7abdbd849f33f";
58247
- const SHARED_VERSION = "0.1.18";
58304
+ const SHARED_VERSION = "0.1.19";
58248
58305
  const SHARED_BUNDLE_HASH = "5f2c220f24d166b0f13d0620a2e80d19689ac8b683a12154daef44e938fd46a7";
58249
- const ENGINE_VERSION = "0.1.18";
58306
+ const ENGINE_VERSION = "0.1.19";
58250
58307
  const ENGINE_BUNDLE_HASH = "79ce14640d1798eaaa7cb3aa6c4bc325da3bff1e9f4716936e19614eabb1d858";
58251
58308
  const otelSdk = initTelemetry({
58252
58309
  serviceName: "kici-orchestrator",
@@ -1065,7 +1065,7 @@ var init_peer_client = __esmMin((() => {
1065
1065
  init_peer_crypto();
1066
1066
  init_peer_credentials();
1067
1067
  logger$89 = createLogger({ prefix: "peer-client" });
1068
- SOFTWARE_VERSION$1 = "0.1.18";
1068
+ SOFTWARE_VERSION$1 = "0.1.19";
1069
1069
  PeerClient$1 = class {
1070
1070
  ws = null;
1071
1071
  _state = "disconnected";
@@ -2591,7 +2591,7 @@ var init_peer_handler = __esmMin((() => {
2591
2591
  init_peer_crypto();
2592
2592
  init_join_token();
2593
2593
  logger$88 = createLogger({ prefix: "peer-handler" });
2594
- SOFTWARE_VERSION = "0.1.18";
2594
+ SOFTWARE_VERSION = "0.1.19";
2595
2595
  RATE_LIMIT_MAX = 5;
2596
2596
  RATE_LIMIT_WINDOW_MS = 6e4;
2597
2597
  }));
@@ -12225,16 +12225,25 @@ async function cancelRunWithReason(deps, runId, reason, options = {}) {
12225
12225
  const agentId = dispatcher.getAgentIdForJob(jobId);
12226
12226
  if (!agentId) continue;
12227
12227
  const entry = registry.get(agentId);
12228
- if (!entry?.ws) continue;
12229
- entry.ws.send(JSON.stringify({
12230
- type: "job.cancel",
12231
- messageId: randomUUID(),
12232
- runId,
12233
- jobId,
12234
- reason,
12235
- ...force && { force: true }
12236
- }));
12237
- agentsNotified++;
12228
+ if (entry?.ws?.readyState !== 1) continue;
12229
+ try {
12230
+ entry.ws.send(JSON.stringify({
12231
+ type: "job.cancel",
12232
+ messageId: randomUUID(),
12233
+ runId,
12234
+ jobId,
12235
+ reason,
12236
+ ...force && { force: true }
12237
+ }));
12238
+ agentsNotified++;
12239
+ } catch (err) {
12240
+ logger$71.warn("Failed to send job.cancel to agent; treating job as orphaned", {
12241
+ runId,
12242
+ jobId,
12243
+ agentId,
12244
+ error: err instanceof Error ? err.message : String(err)
12245
+ });
12246
+ }
12238
12247
  }
12239
12248
  const pendingResult = await db.updateTable("execution_jobs").set({
12240
12249
  status: ExecutionJobStatus.enum.cancelled,
@@ -22331,6 +22340,21 @@ var init_admin_runs = __esmMin((() => {
22331
22340
  }));
22332
22341
  //#endregion
22333
22342
  //#region src/cold-store/load-event-log-range.ts
22343
+ /**
22344
+ * Read-through helper for `event_log` (Orchestrator) — Phase E.
22345
+ *
22346
+ * Mirrors the Platform-side `load-event-log-range.ts`. Tenant column is
22347
+ * `routing_key` (NOT NULL on this side) so cold-store partitioning
22348
+ * doesn't need a synthetic-tenant fallback. Partition column is
22349
+ * `received_at`.
22350
+ *
22351
+ * The orchestrator's `event_log` row carries the `payload_key` reference
22352
+ * (an S3 object that holds the gzipped webhook body). Cold-store
22353
+ * archives the row metadata and preserves `payload_key` verbatim — the
22354
+ * payload blob itself stays in object storage indefinitely so the
22355
+ * dashboard's payload-detail view continues to resolve archived
22356
+ * deliveries identically to hot ones.
22357
+ */
22334
22358
  async function loadEventLogRange(args) {
22335
22359
  const { db, coldStore, routingKey, orgId, event, action, status, deliveryId, fromTs, toTs, limit, offset, includeArchived } = args;
22336
22360
  const warmCutoff = /* @__PURE__ */ new Date(Date.now() - EVENT_LOG_WARM_TTL_DAYS * 864e5);
@@ -22348,6 +22372,16 @@ async function loadEventLogRange(args) {
22348
22372
  if (coldFromTs >= warmCutoff) return hotRows;
22349
22373
  const remaining = limit - hotRows.length;
22350
22374
  if (remaining <= 0) return hotRows;
22375
+ let hotCountQuery = db.selectFrom("event_log").select(sql`count(*)::text`.as("n")).where("routing_key", "=", routingKey);
22376
+ if (orgId) hotCountQuery = hotCountQuery.where("org_id", "=", orgId);
22377
+ if (event) hotCountQuery = hotCountQuery.where("event", "=", event);
22378
+ if (action) hotCountQuery = hotCountQuery.where("action", "=", action);
22379
+ if (status) hotCountQuery = hotCountQuery.where("status", "=", status);
22380
+ if (deliveryId) hotCountQuery = hotCountQuery.where("delivery_id", "like", `%${deliveryId}%`);
22381
+ if (fromTs) hotCountQuery = hotCountQuery.where("received_at", ">=", fromTs);
22382
+ if (toTs) hotCountQuery = hotCountQuery.where("received_at", "<", toTs);
22383
+ const hotCount = Number((await hotCountQuery.executeTakeFirst())?.n ?? "0");
22384
+ const coldOffset = Math.max(0, offset - hotCount);
22351
22385
  const coldToTs = toTs && toTs < warmCutoff ? toTs : warmCutoff;
22352
22386
  const coldRows = [];
22353
22387
  try {
@@ -22364,7 +22398,6 @@ async function loadEventLogRange(args) {
22364
22398
  if (status !== void 0 && row.status !== status) continue;
22365
22399
  if (deliveryId !== void 0 && !row.delivery_id.includes(deliveryId)) continue;
22366
22400
  coldRows.push(row);
22367
- if (coldRows.length >= remaining) break;
22368
22401
  }
22369
22402
  } catch (err) {
22370
22403
  if (hotRows.length === 0) {
@@ -22384,7 +22417,7 @@ async function loadEventLogRange(args) {
22384
22417
  const at = a.received_at instanceof Date ? a.received_at.getTime() : new Date(a.received_at).getTime();
22385
22418
  return (b.received_at instanceof Date ? b.received_at.getTime() : new Date(b.received_at).getTime()) - at;
22386
22419
  });
22387
- return [...hotRows, ...coldRows.slice(0, remaining)];
22420
+ return [...hotRows, ...coldRows.slice(coldOffset, coldOffset + remaining)];
22388
22421
  }
22389
22422
  /**
22390
22423
  * Detail lookup by `(orgId, deliveryId)`. The dashboard handler joins
@@ -23545,14 +23578,14 @@ var init_admin_config = __esmMin((() => {
23545
23578
  function createHealthRoutes$1(deps = {}) {
23546
23579
  return createHealthRoutes({
23547
23580
  livenessInfo: () => ({
23548
- version: "0.1.18",
23549
- buildDate: "2026-06-17T09:57:52.557Z",
23550
- buildCommit: "d8cff38bb",
23551
- sdkVersion: "0.1.18",
23581
+ version: "0.1.19",
23582
+ buildDate: "2026-06-19T04:32:44.899Z",
23583
+ buildCommit: "1590f5e99",
23584
+ sdkVersion: "0.1.19",
23552
23585
  sdkBundleHash: "8308089347c304e41b457d3867b17bbff11d6b5cd9706b6823e7abdbd849f33f",
23553
- sharedVersion: "0.1.18",
23586
+ sharedVersion: "0.1.19",
23554
23587
  sharedBundleHash: "5f2c220f24d166b0f13d0620a2e80d19689ac8b683a12154daef44e938fd46a7",
23555
- engineVersion: "0.1.18",
23588
+ engineVersion: "0.1.19",
23556
23589
  engineBundleHash: "79ce14640d1798eaaa7cb3aa6c4bc325da3bff1e9f4716936e19614eabb1d858"
23557
23590
  }),
23558
23591
  readinessCheck: deps.db ? async () => {
@@ -23587,7 +23620,7 @@ function createCapabilitiesRoutes() {
23587
23620
  const app = new Hono();
23588
23621
  app.get("/api/v1/capabilities", (c) => {
23589
23622
  const manifest = {
23590
- orchestratorVersion: "0.1.18",
23623
+ orchestratorVersion: "0.1.19",
23591
23624
  protocolVersion: PROTOCOL_VERSION,
23592
23625
  minProtocolVersion: MIN_PROTOCOL_VERSION
23593
23626
  };
@@ -49499,13 +49532,13 @@ var init_worker_core = __esmMin((() => {
49499
49532
  init_fleet_wiring();
49500
49533
  init_worker_status();
49501
49534
  init_agent_heartbeat();
49502
- ORCHESTRATOR_VERSION$1 = "0.1.18";
49503
- WORKER_BUILD_COMMIT = "d8cff38bb";
49504
- WORKER_SDK_VERSION = "0.1.18";
49535
+ ORCHESTRATOR_VERSION$1 = "0.1.19";
49536
+ WORKER_BUILD_COMMIT = "1590f5e99";
49537
+ WORKER_SDK_VERSION = "0.1.19";
49505
49538
  WORKER_SDK_BUNDLE_HASH = "8308089347c304e41b457d3867b17bbff11d6b5cd9706b6823e7abdbd849f33f";
49506
- WORKER_SHARED_VERSION = "0.1.18";
49539
+ WORKER_SHARED_VERSION = "0.1.19";
49507
49540
  WORKER_SHARED_BUNDLE_HASH = "5f2c220f24d166b0f13d0620a2e80d19689ac8b683a12154daef44e938fd46a7";
49508
- WORKER_ENGINE_VERSION = "0.1.18";
49541
+ WORKER_ENGINE_VERSION = "0.1.19";
49509
49542
  WORKER_ENGINE_BUNDLE_HASH = "79ce14640d1798eaaa7cb3aa6c4bc325da3bff1e9f4716936e19614eabb1d858";
49510
49543
  logger$2 = createLogger({ prefix: "worker" });
49511
49544
  DRAIN_TIMEOUT_MS = 3e5;
@@ -49530,13 +49563,13 @@ var init_worker_core = __esmMin((() => {
49530
49563
  * Graceful shutdown:
49531
49564
  * agent WS -> heartbeat -> HTTP -> DB
49532
49565
  */
49533
- const ORCHESTRATOR_VERSION = "0.1.18";
49534
- const BUILD_COMMIT = "d8cff38bb";
49535
- const SDK_VERSION = "0.1.18";
49566
+ const ORCHESTRATOR_VERSION = "0.1.19";
49567
+ const BUILD_COMMIT = "1590f5e99";
49568
+ const SDK_VERSION = "0.1.19";
49536
49569
  const SDK_BUNDLE_HASH = "8308089347c304e41b457d3867b17bbff11d6b5cd9706b6823e7abdbd849f33f";
49537
- const SHARED_VERSION = "0.1.18";
49570
+ const SHARED_VERSION = "0.1.19";
49538
49571
  const SHARED_BUNDLE_HASH = "5f2c220f24d166b0f13d0620a2e80d19689ac8b683a12154daef44e938fd46a7";
49539
- const ENGINE_VERSION = "0.1.18";
49572
+ const ENGINE_VERSION = "0.1.19";
49540
49573
  const ENGINE_BUNDLE_HASH = "79ce14640d1798eaaa7cb3aa6c4bc325da3bff1e9f4716936e19614eabb1d858";
49541
49574
  const otelSdk = initTelemetry({
49542
49575
  serviceName: "kici-orchestrator",
@@ -1,7 +1,7 @@
1
1
  {
2
- "version": "0.1.18",
2
+ "version": "0.1.19",
3
3
  "images": {
4
- "kici-agent": "sha256:18c4867e472bc4031f4ffea86fee50ae8402fb9abcae0eabe1e2ba88714b010b",
5
- "kici-orchestrator": "sha256:cddbfc3aef84ac1bbbd4a80cd1e56deb63fce8381711c982c4b267f00a8010d8"
4
+ "kici-agent": "sha256:7e54dde6c087b0a8117b8a45a255dd4f0f749db3a5da798e350a266fba396570",
5
+ "kici-orchestrator": "sha256:47f2caf0c8effca17e13d80457f4dd517784ac3eabda270f6da78a49e529f7af"
6
6
  }
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kici-dev/orchestrator",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
4
4
  "description": "Customer-deployable orchestrator for the KiCI CI/CD stack. Receives webhook events (direct or via Platform relay), matches triggers against the lock file, and dispatches jobs to connected agents.",
5
5
  "keywords": [
6
6
  "ci",
@@ -86,8 +86,8 @@
86
86
  "ws": "^8.21.0",
87
87
  "yaml": "^2.9.0",
88
88
  "zod": "^4.4.3",
89
- "@kici-dev/shared": "0.1.18",
90
- "@kici-dev/engine": "0.1.18"
89
+ "@kici-dev/shared": "0.1.19",
90
+ "@kici-dev/engine": "0.1.19"
91
91
  },
92
92
  "kici": {
93
93
  "metrics": {
@@ -101,7 +101,7 @@
101
101
  "@types/archiver": "^8.0.0",
102
102
  "@types/dockerode": "^4.0.1",
103
103
  "kysely-ctl": "^0.21.0",
104
- "@kici-dev/agent": "0.1.18"
104
+ "@kici-dev/agent": "0.1.19"
105
105
  },
106
106
  "scripts": {
107
107
  "build": "node ../../scripts/build-service.mjs && tsc --emitDeclarationOnly",
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/orchestrator@0.1.18",
6
- "documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Forchestrator/0.1.18/07e0df5d-5748-4ffa-bbc2-faa4ad230ec0",
5
+ "name": "@kici-dev/orchestrator@0.1.19",
6
+ "documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Forchestrator/0.1.19/e51708f7-e161-4759-b280-198c788c29b4",
7
7
  "creationInfo": {
8
- "created": "2026-06-17T10:56:02Z",
8
+ "created": "2026-06-19T05:11:21Z",
9
9
  "creators": [
10
10
  "Tool: kici-sbom-generator"
11
11
  ]
@@ -1190,9 +1190,9 @@
1190
1190
  "homepage": "https://ericsmekens.github.io/jsep/tree/master/packages/regex#readme"
1191
1191
  },
1192
1192
  {
1193
- "SPDXID": "SPDXRef-Package--kici-dev-core-0.1.18",
1193
+ "SPDXID": "SPDXRef-Package--kici-dev-core-0.1.19",
1194
1194
  "name": "@kici-dev/core",
1195
- "versionInfo": "0.1.18",
1195
+ "versionInfo": "0.1.19",
1196
1196
  "downloadLocation": "NOASSERTION",
1197
1197
  "filesAnalyzed": false,
1198
1198
  "licenseConcluded": "NOASSERTION",
@@ -1203,16 +1203,16 @@
1203
1203
  {
1204
1204
  "referenceCategory": "PACKAGE-MANAGER",
1205
1205
  "referenceType": "purl",
1206
- "referenceLocator": "pkg:npm/%40kici-dev/core@0.1.18"
1206
+ "referenceLocator": "pkg:npm/%40kici-dev/core@0.1.19"
1207
1207
  }
1208
1208
  ],
1209
1209
  "description": "Light shared utilities for the KiCI stack (logging, errors, formatting, crypto, zx init, the TypeScript ESM loader hook). No server-side dependencies.",
1210
1210
  "homepage": "https://kici.dev"
1211
1211
  },
1212
1212
  {
1213
- "SPDXID": "SPDXRef-Package--kici-dev-engine-0.1.18",
1213
+ "SPDXID": "SPDXRef-Package--kici-dev-engine-0.1.19",
1214
1214
  "name": "@kici-dev/engine",
1215
- "versionInfo": "0.1.18",
1215
+ "versionInfo": "0.1.19",
1216
1216
  "downloadLocation": "NOASSERTION",
1217
1217
  "filesAnalyzed": false,
1218
1218
  "licenseConcluded": "NOASSERTION",
@@ -1223,7 +1223,7 @@
1223
1223
  {
1224
1224
  "referenceCategory": "PACKAGE-MANAGER",
1225
1225
  "referenceType": "purl",
1226
- "referenceLocator": "pkg:npm/%40kici-dev/engine@0.1.18"
1226
+ "referenceLocator": "pkg:npm/%40kici-dev/engine@0.1.19"
1227
1227
  }
1228
1228
  ],
1229
1229
  "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.",
@@ -1232,7 +1232,7 @@
1232
1232
  {
1233
1233
  "SPDXID": "SPDXRef-RootPackage",
1234
1234
  "name": "@kici-dev/orchestrator",
1235
- "versionInfo": "0.1.18",
1235
+ "versionInfo": "0.1.19",
1236
1236
  "downloadLocation": "NOASSERTION",
1237
1237
  "filesAnalyzed": false,
1238
1238
  "licenseConcluded": "NOASSERTION",
@@ -1243,16 +1243,16 @@
1243
1243
  {
1244
1244
  "referenceCategory": "PACKAGE-MANAGER",
1245
1245
  "referenceType": "purl",
1246
- "referenceLocator": "pkg:npm/%40kici-dev/orchestrator@0.1.18"
1246
+ "referenceLocator": "pkg:npm/%40kici-dev/orchestrator@0.1.19"
1247
1247
  }
1248
1248
  ],
1249
1249
  "description": "Customer-deployable orchestrator for the KiCI CI/CD stack. Receives webhook events (direct or via Platform relay), matches triggers against the lock file, and dispatches jobs to connected agents.",
1250
1250
  "homepage": "https://kici.dev"
1251
1251
  },
1252
1252
  {
1253
- "SPDXID": "SPDXRef-Package--kici-dev-shared-0.1.18",
1253
+ "SPDXID": "SPDXRef-Package--kici-dev-shared-0.1.19",
1254
1254
  "name": "@kici-dev/shared",
1255
- "versionInfo": "0.1.18",
1255
+ "versionInfo": "0.1.19",
1256
1256
  "downloadLocation": "NOASSERTION",
1257
1257
  "filesAnalyzed": false,
1258
1258
  "licenseConcluded": "NOASSERTION",
@@ -1263,7 +1263,7 @@
1263
1263
  {
1264
1264
  "referenceCategory": "PACKAGE-MANAGER",
1265
1265
  "referenceType": "purl",
1266
- "referenceLocator": "pkg:npm/%40kici-dev/shared@0.1.18"
1266
+ "referenceLocator": "pkg:npm/%40kici-dev/shared@0.1.19"
1267
1267
  }
1268
1268
  ],
1269
1269
  "description": "Shared utilities for the KiCI CI/CD stack — logging, zx setup, crypto, telemetry, health and metrics routes. No business logic.",
@@ -8242,57 +8242,57 @@
8242
8242
  "relationshipType": "DEPENDS_ON"
8243
8243
  },
8244
8244
  {
8245
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.18",
8245
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.19",
8246
8246
  "relatedSpdxElement": "SPDXRef-Package-oxc-transform-0.135.0",
8247
8247
  "relationshipType": "DEPENDS_ON"
8248
8248
  },
8249
8249
  {
8250
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.18",
8250
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.19",
8251
8251
  "relatedSpdxElement": "SPDXRef-Package-picocolors-1.1.1",
8252
8252
  "relationshipType": "DEPENDS_ON"
8253
8253
  },
8254
8254
  {
8255
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.18",
8255
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.19",
8256
8256
  "relatedSpdxElement": "SPDXRef-Package-winston-daily-rotate-file-5.0.0",
8257
8257
  "relationshipType": "DEPENDS_ON"
8258
8258
  },
8259
8259
  {
8260
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.18",
8260
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.19",
8261
8261
  "relatedSpdxElement": "SPDXRef-Package-winston-3.19.0",
8262
8262
  "relationshipType": "DEPENDS_ON"
8263
8263
  },
8264
8264
  {
8265
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.18",
8265
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.19",
8266
8266
  "relatedSpdxElement": "SPDXRef-Package-zod-4.4.3",
8267
8267
  "relationshipType": "DEPENDS_ON"
8268
8268
  },
8269
8269
  {
8270
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.18",
8270
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.19",
8271
8271
  "relatedSpdxElement": "SPDXRef-Package-zx-8.8.5",
8272
8272
  "relationshipType": "DEPENDS_ON"
8273
8273
  },
8274
8274
  {
8275
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.18",
8275
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.19",
8276
8276
  "relatedSpdxElement": "SPDXRef-Package-jose-6.2.3",
8277
8277
  "relationshipType": "DEPENDS_ON"
8278
8278
  },
8279
8279
  {
8280
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.18",
8280
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.19",
8281
8281
  "relatedSpdxElement": "SPDXRef-Package-jsonpath-plus-10.4.0",
8282
8282
  "relationshipType": "DEPENDS_ON"
8283
8283
  },
8284
8284
  {
8285
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.18",
8285
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.19",
8286
8286
  "relatedSpdxElement": "SPDXRef-Package-picomatch-4.0.4",
8287
8287
  "relationshipType": "DEPENDS_ON"
8288
8288
  },
8289
8289
  {
8290
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.18",
8290
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.19",
8291
8291
  "relatedSpdxElement": "SPDXRef-Package-safe-regex-2.1.1",
8292
8292
  "relationshipType": "DEPENDS_ON"
8293
8293
  },
8294
8294
  {
8295
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.18",
8295
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.19",
8296
8296
  "relatedSpdxElement": "SPDXRef-Package-zod-4.4.3",
8297
8297
  "relationshipType": "DEPENDS_ON"
8298
8298
  },
@@ -8328,12 +8328,12 @@
8328
8328
  },
8329
8329
  {
8330
8330
  "spdxElementId": "SPDXRef-RootPackage",
8331
- "relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.1.18",
8331
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.1.19",
8332
8332
  "relationshipType": "DEPENDS_ON"
8333
8333
  },
8334
8334
  {
8335
8335
  "spdxElementId": "SPDXRef-RootPackage",
8336
- "relatedSpdxElement": "SPDXRef-Package--kici-dev-shared-0.1.18",
8336
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-shared-0.1.19",
8337
8337
  "relationshipType": "DEPENDS_ON"
8338
8338
  },
8339
8339
  {
@@ -8437,112 +8437,112 @@
8437
8437
  "relationshipType": "DEPENDS_ON"
8438
8438
  },
8439
8439
  {
8440
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8440
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8441
8441
  "relatedSpdxElement": "SPDXRef-Package--aws-sdk-client-s3-3.1064.0",
8442
8442
  "relationshipType": "DEPENDS_ON"
8443
8443
  },
8444
8444
  {
8445
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8446
- "relatedSpdxElement": "SPDXRef-Package--kici-dev-core-0.1.18",
8445
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8446
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-core-0.1.19",
8447
8447
  "relationshipType": "DEPENDS_ON"
8448
8448
  },
8449
8449
  {
8450
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8450
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8451
8451
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-api-1.9.1",
8452
8452
  "relationshipType": "DEPENDS_ON"
8453
8453
  },
8454
8454
  {
8455
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8455
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8456
8456
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-exporter-metrics-otlp-http-0.218.0",
8457
8457
  "relationshipType": "DEPENDS_ON"
8458
8458
  },
8459
8459
  {
8460
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8460
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8461
8461
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-exporter-prometheus-0.218.0",
8462
8462
  "relationshipType": "DEPENDS_ON"
8463
8463
  },
8464
8464
  {
8465
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8465
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8466
8466
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-exporter-trace-otlp-http-0.218.0",
8467
8467
  "relationshipType": "DEPENDS_ON"
8468
8468
  },
8469
8469
  {
8470
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8470
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8471
8471
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-instrumentation-runtime-node-0.31.0",
8472
8472
  "relationshipType": "DEPENDS_ON"
8473
8473
  },
8474
8474
  {
8475
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8475
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8476
8476
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-resources-2.7.1",
8477
8477
  "relationshipType": "DEPENDS_ON"
8478
8478
  },
8479
8479
  {
8480
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8480
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8481
8481
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-sdk-node-0.218.0",
8482
8482
  "relationshipType": "DEPENDS_ON"
8483
8483
  },
8484
8484
  {
8485
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8485
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8486
8486
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-semantic-conventions-1.41.1",
8487
8487
  "relationshipType": "DEPENDS_ON"
8488
8488
  },
8489
8489
  {
8490
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8490
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8491
8491
  "relatedSpdxElement": "SPDXRef-Package-archiver-8.0.0",
8492
8492
  "relationshipType": "DEPENDS_ON"
8493
8493
  },
8494
8494
  {
8495
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8495
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8496
8496
  "relatedSpdxElement": "SPDXRef-Package-diff-9.0.0",
8497
8497
  "relationshipType": "DEPENDS_ON"
8498
8498
  },
8499
8499
  {
8500
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8500
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8501
8501
  "relatedSpdxElement": "SPDXRef-Package-hono-4.12.25",
8502
8502
  "relationshipType": "DEPENDS_ON"
8503
8503
  },
8504
8504
  {
8505
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8505
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8506
8506
  "relatedSpdxElement": "SPDXRef-Package-kysely-0.29.2",
8507
8507
  "relationshipType": "DEPENDS_ON"
8508
8508
  },
8509
8509
  {
8510
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8510
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8511
8511
  "relatedSpdxElement": "SPDXRef-Package-oxc-transform-0.135.0",
8512
8512
  "relationshipType": "DEPENDS_ON"
8513
8513
  },
8514
8514
  {
8515
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8515
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8516
8516
  "relatedSpdxElement": "SPDXRef-Package-pg-8.21.0",
8517
8517
  "relationshipType": "DEPENDS_ON"
8518
8518
  },
8519
8519
  {
8520
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8520
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8521
8521
  "relatedSpdxElement": "SPDXRef-Package-picocolors-1.1.1",
8522
8522
  "relationshipType": "DEPENDS_ON"
8523
8523
  },
8524
8524
  {
8525
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8525
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8526
8526
  "relatedSpdxElement": "SPDXRef-Package-winston-daily-rotate-file-5.0.0",
8527
8527
  "relationshipType": "DEPENDS_ON"
8528
8528
  },
8529
8529
  {
8530
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8530
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8531
8531
  "relatedSpdxElement": "SPDXRef-Package-winston-3.19.0",
8532
8532
  "relationshipType": "DEPENDS_ON"
8533
8533
  },
8534
8534
  {
8535
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8535
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8536
8536
  "relatedSpdxElement": "SPDXRef-Package-yaml-2.9.0",
8537
8537
  "relationshipType": "DEPENDS_ON"
8538
8538
  },
8539
8539
  {
8540
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8540
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8541
8541
  "relatedSpdxElement": "SPDXRef-Package-zod-4.4.3",
8542
8542
  "relationshipType": "DEPENDS_ON"
8543
8543
  },
8544
8544
  {
8545
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.18",
8545
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.19",
8546
8546
  "relatedSpdxElement": "SPDXRef-Package-zx-8.8.5",
8547
8547
  "relationshipType": "DEPENDS_ON"
8548
8548
  },