@kici-dev/orchestrator 0.9.0 → 0.9.1

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
@@ -1056,28 +1056,41 @@ async function loadAccessLogRange(args) {
1056
1056
  const coldToTs = toTs && toTs < warmCutoff ? toTs : warmCutoff;
1057
1057
  const coldRemaining = limit - hotItems.length;
1058
1058
  const tenantToScan = filter.orgId ?? "__orchestrator__";
1059
+ const matches = (row) => {
1060
+ if (filter.actorType && row.actor_type !== filter.actorType) return false;
1061
+ if (filter.actorId && row.actor_id !== filter.actorId) return false;
1062
+ if (filter.action && row.action !== filter.action) return false;
1063
+ if (filter.source && row.source !== filter.source) return false;
1064
+ if (filter.outcome && row.outcome !== filter.outcome) return false;
1065
+ if (filter.targetType && row.target_type !== filter.targetType) return false;
1066
+ if (filter.targetId && row.target_id !== filter.targetId) return false;
1067
+ if (filter.agentLabel && row.agent_label !== filter.agentLabel) return false;
1068
+ if (filter.agentOnly && row.agent_label == null) return false;
1069
+ if (filter.q && filter.q.length > 0) {
1070
+ if (!(row.error_message ?? "").toLowerCase().includes(filter.q.toLowerCase())) return false;
1071
+ }
1072
+ return true;
1073
+ };
1074
+ const beforeCursor = (it) => !cursor || cursor.source !== "cold" || it.createdAt < cursor.createdAt || it.createdAt === cursor.createdAt && it.id < cursor.id;
1059
1075
  const coldItems = [];
1076
+ let stoppedEarly = false;
1060
1077
  try {
1061
1078
  for await (const row of coldStore.fetchRange({
1062
1079
  db: "orchestrator",
1063
1080
  table: "access_log",
1064
1081
  tenantId: tenantToScan,
1065
1082
  fromTs: coldFromTs,
1066
- toTs: coldToTs
1083
+ toTs: coldToTs,
1084
+ order: "desc"
1067
1085
  })) {
1068
- if (filter.actorType && row.actor_type !== filter.actorType) continue;
1069
- if (filter.actorId && row.actor_id !== filter.actorId) continue;
1070
- if (filter.action && row.action !== filter.action) continue;
1071
- if (filter.source && row.source !== filter.source) continue;
1072
- if (filter.outcome && row.outcome !== filter.outcome) continue;
1073
- if (filter.targetType && row.target_type !== filter.targetType) continue;
1074
- if (filter.targetId && row.target_id !== filter.targetId) continue;
1075
- if (filter.agentLabel && row.agent_label !== filter.agentLabel) continue;
1076
- if (filter.agentOnly && row.agent_label == null) continue;
1077
- if (filter.q && filter.q.length > 0) {
1078
- if (!(row.error_message ?? "").toLowerCase().includes(filter.q.toLowerCase())) continue;
1079
- }
1080
- coldItems.push(toAccessLogItem(row));
1086
+ if (!matches(row)) continue;
1087
+ const item = toAccessLogItem(row);
1088
+ if (!beforeCursor(item)) continue;
1089
+ if (coldItems.length >= coldRemaining && item.createdAt < coldItems[coldRemaining - 1].createdAt) {
1090
+ stoppedEarly = true;
1091
+ break;
1092
+ }
1093
+ coldItems.push(item);
1081
1094
  }
1082
1095
  } catch (err) {
1083
1096
  if (cursor?.source === "cold") {
@@ -1096,14 +1109,9 @@ async function loadAccessLogRange(args) {
1096
1109
  nextCursor: hotHasMore && hotItems.length > 0 ? buildHotCursor(hotItems[hotItems.length - 1]) : null
1097
1110
  };
1098
1111
  }
1099
- coldItems.sort((a, b) => a.createdAt < b.createdAt ? 1 : a.createdAt > b.createdAt ? -1 : 0);
1100
- let coldStart = 0;
1101
- if (cursor && cursor.source === "cold") {
1102
- coldStart = coldItems.findIndex((it) => it.createdAt < cursor.createdAt || it.createdAt === cursor.createdAt && it.id < cursor.id);
1103
- if (coldStart < 0) coldStart = coldItems.length;
1104
- }
1105
- const coldPage = coldItems.slice(coldStart, coldStart + coldRemaining);
1106
- const coldHasMore = coldStart + coldRemaining < coldItems.length;
1112
+ coldItems.sort((a, b) => a.createdAt < b.createdAt ? 1 : a.createdAt > b.createdAt ? -1 : a.id < b.id ? 1 : a.id > b.id ? -1 : 0);
1113
+ const coldPage = coldItems.slice(0, coldRemaining);
1114
+ const coldHasMore = stoppedEarly || coldItems.length > coldRemaining;
1107
1115
  return {
1108
1116
  items: [...hotItems, ...coldPage],
1109
1117
  nextCursor: coldHasMore && coldPage.length > 0 ? buildColdCursor(coldPage[coldPage.length - 1]) : hotHasMore && hotItems.length > 0 && coldPage.length === 0 ? buildHotCursor(hotItems[hotItems.length - 1]) : null
@@ -1230,11 +1238,13 @@ async function loadSecretAuditLogRange(args) {
1230
1238
  table: "secret_audit_log",
1231
1239
  tenantId: tenant,
1232
1240
  fromTs: coldFromTs,
1233
- toTs: coldToTs
1241
+ toTs: coldToTs,
1242
+ order: "desc"
1234
1243
  })) {
1235
1244
  if (contextName && row.context_name !== contextName) continue;
1236
1245
  if (action && row.action !== action) continue;
1237
1246
  coldRows.push(row);
1247
+ if (coldRows.length >= coldOffset + remaining) break;
1238
1248
  }
1239
1249
  } catch (err) {
1240
1250
  if (hotRows.length === 0) {
@@ -1244,7 +1254,6 @@ async function loadSecretAuditLogRange(args) {
1244
1254
  logger$21.warn("cold-store fetchRange failed; returning hot rows only", { error: toErrorMessage(err) });
1245
1255
  return hotRows;
1246
1256
  }
1247
- coldRows.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
1248
1257
  const coldSlice = coldRows.slice(coldOffset, coldOffset + remaining);
1249
1258
  return [...hotRows, ...coldSlice];
1250
1259
  }
@@ -22268,7 +22277,7 @@ init_manifest();
22268
22277
  const ALL_PLATFORMS = AgentPlatform.options;
22269
22278
  /** The orchestrator's own version (single-version invariant) = the packaged agent version. */
22270
22279
  function resolveKiciVersion() {
22271
- return "0.9.0";
22280
+ return "0.9.1";
22272
22281
  }
22273
22282
  /** Parse the --platform value: default set | single | CSV | `all`. */
22274
22283
  function parsePlatforms(raw) {
@@ -33335,7 +33344,7 @@ Token vocabulary:
33335
33344
  * where no bundler substituted the constant — the same shape `server.ts` and
33336
33345
  * `standalone.ts` use for `ORCHESTRATOR_VERSION`.
33337
33346
  */
33338
- const CLI_VERSION = "0.9.0";
33347
+ const CLI_VERSION = "0.9.1";
33339
33348
  /**
33340
33349
  * Build the kici-admin Commander program with every command group registered.
33341
33350
  * Exported so the surface registry can walk the real command tree without
package/dist/server.js CHANGED
@@ -3,7 +3,7 @@ import { dirname as __cjs_dirname } from "node:path";
3
3
  const __filename = __cjs_fileURLToPath(import.meta.url);
4
4
  __cjs_dirname(__filename);
5
5
  import "node:module";
6
- import { AgentDeliveryMode, AgentPlatform, BaseColdStore, ChunkRequestWaiter, RingBuffer, addLogsToArchive, chunkBuffer, computeBackoffDelay, computeMigrationsHash, createDb, createHealthRoutes, createLogger, createMeter, createMetricsRoutes, createPool, createS3Client, decrypt, decryptJson, deriveKey, encodeKeySegment, encrypt, enrichRequestContext, formatDuration, getPrometheusExporter, getReconnectDelay, getRequestContext, guardStartup, initTelemetry, isPgUniqueViolation, logger, parseDatabaseUrl, redactConfig, requestContext, serializeError, setServiceName, setupGracefulShutdown, sha256, storeMigrationContentHash, toErrorMessage, validateRequiredTools } from "@kici-dev/shared";
6
+ import { AgentDeliveryMode, AgentPlatform, BaseColdStore, ChunkLru, ChunkRequestWaiter, RingBuffer, addLogsToArchive, applyProxyKeepAliveTimeouts, chunkBuffer, computeBackoffDelay, computeMigrationsHash, createDb, createHealthRoutes, createLogger, createMeter, createMetricsRoutes, createPool, createS3Client, decrypt, decryptJson, deriveKey, encodeKeySegment, encrypt, enrichRequestContext, formatDuration, getPrometheusExporter, getReconnectDelay, getRequestContext, guardStartup, initTelemetry, isPgUniqueViolation, logger, parseDatabaseUrl, redactConfig, requestContext, serializeError, setServiceName, setupGracefulShutdown, sha256, storeMigrationContentHash, toErrorMessage, validateRequiredTools } from "@kici-dev/shared";
7
7
  import { ACTOR_AGENT_SUFFIX, ALLOWED_SYSTEM_VARS, ARTIFACT_NAME_MAX_LENGTH, AccessLogAction, AccessLogOutcome, AccessLogSource, AccessLogTargetType, ActorType, AgentFailureCategory, ApprovalDecision, ArtifactCompleteAckOutcome, ArtifactDownloadOutcome, ArtifactUploadOutcome, AttestationOrigin, BREAKING_FLOOR, CANONICAL_STATUSES, CLUSTER_MEMBERSHIP_MAX_WORKERS, CONTAINER_BUILD_RUNTIME_LABEL, CacheRefScope, CheckMode, CheckRunConclusion, CheckStepOutcome, CiTrustLevel, ConcurrencyStrategy, ContextDeleteErrorCode, ContextGateRejectReason, DASHBOARD_REQUEST_TYPE_SET, DEFAULT_APPROVAL_EXPIRY_HOURS, DEFAULT_APPROVAL_EXPIRY_SECONDS, DEFAULT_CONCURRENCY_STRATEGY, DEFAULT_HOLD_EXPIRY_SECONDS, DashboardResponseErrorCode, DeploymentContainerRuntimeSchema, DeploymentModeSchema, EVENT_LOG_PAYLOAD_CHUNK_BYTES, EventLogPayloadStreamError, EventLogSource, EventLogStatus, ExecutionJobStatus, ExecutionRunStatus, ExecutionStepStatus, FanoutCause, FanoutError, ForkPolicy, HeldRunQueueType, HeldRunStatus, HoldScope, HoldType, ID_TOKEN_CLAIM_NAMES, INIT_LABEL, INIT_RUNNER_ROLE_LABEL, INSTALL_JOB_ID_PREFIX, InitFailureCategory, InventorySelectorSchema, KICI_AGENT_ENV_PREFIX, KNOWN_ROLES, LabelMatcher, LockFileParseError, LogStream, MIN_APPROVAL_EXPIRY_SECONDS, MIN_PROTOCOL_VERSION, MinimumTrustSchema, ORCH_AGENT_CAPABILITIES, ORCH_CAPABILITIES, OWN_INGRESS_MODES, OrchLogPhase, OrchRole, OrchestratorMode, PLATFORM_CONNECTED_MODES, PLATFORM_TAINT_LABELS, PLATFORM_TO_ORCH_RECOGNIZED_TYPES, PRIVILEGED_ROOT_LABEL, PROTOCOL_VERSION, PayloadOmittedReason, RELAY_INGRESS_MODES, RegisterableTriggerType, RunFailureClass, SCALER_EVENT_NAMES, SCHEMA_VERSION, SECURITY_HOLD_JOB_IDS, SSH_TRANSPORT_CAPABILITY, ScaleDownReason, ScalerBackendType, ScalerEventType, ScalerEventType as ScalerEventType$1, ScalerScaleDownPayload, ScalerScaleUpPayload, SetupStepType, SourceOrigin, SourceSubtype, TERMINAL_JOB_STATES, TERMINAL_RUN_STATES, TRIGGER_EVENT_TYPES, TimeoutReason, TraceCheck, TriggerSource, TrustTierSchema, VariantKind, WEBHOOK_RELAY_MAX_BODY_BYTES, WS_CLOSE_AGENT_AUTH_FAILED, WS_CLOSE_AUTH_TIMEOUT, WS_CLOSE_DISPATCH_ACK_TIMEOUT, WS_CLOSE_GOING_AWAY, WS_CLOSE_HEARTBEAT_TIMEOUT, WS_CLOSE_INTERNAL_ERROR, WS_CLOSE_INVALID_MESSAGE, WS_CLOSE_PLAN_LIMIT, WS_CLOSE_PROTOCOL_ERROR, WS_CLOSE_SUPERSEDED_BY_RECONNECT, WS_CLOSE_UNAUTHORIZED, WS_MAX_PAYLOAD_BYTES, WebhookRelayResult, WsRateLimiter, accessLogWarmSqlCase, agentAuthRequestSchema, agentLabelOf, agentToOrchestratorMessageSchema, agentTypeLabel, appendChecks, approvalExpiryHoursOf, approvalExpirySecondsOf, approvalTimeoutSecondsSchema, artifactInvalidNameError, assertValidScopeName, assertValidSecretKey, attestationVerifyStatusSchema, buildEventClaims, buildIdTokenSubject, buildTrustedPassthroughEnv, buildUnsupportedMessageNack, canonicalizeCapability, canonicalizeLabel, canonicalizeLabelSet, canonicalizeLabels, canonicalizeMatcher, checkArtifactName, coerceDispatchInputs, collectDiscriminatorTypes, createContentRequirementsTraceEntry, createDispatchFailureTraceEntry, createGlobalFilterTraceEntry, createWorkflowDecision, dashboardArtifactsListResponseSchema, dashboardAttestationGetResponseSchema, dashboardAttestationsListAllResponseSchema, dashboardAttestationsListResponseSchema, dashboardRunDetailApiResponseSchema, dashboardStepLogsApiResponseSchema, deriveOsArchLabels, derivePlatformTaints, fanoutEnvelopeFields, flattenActor, getAccessLogColdDays, getRepoGlobMatcher, getSecretAuditLogColdDays, githubIngressPath, githubWebhookPath, globalEvalRoundResultSchema, hasPlatformCapability, hostLabel, hostSatisfiesTarget, hostToScalerPlatform, installGateJobId, isFailureStatus, isKnownCapability, isLockDynamicJobFn, isLockParallelStep, isLockStaticJob, isPullRequestFamilyTriggerEvent, isSecurityHoldJobId, isSelfReportedLabel, joinRequestSchema, logPullPlatformToOrchSchema, matchAllWorkflows, matchScopePattern, matchWorkflowsForEvent, matcherSatisfiedBy, materializeFanout, materializeResolvedHosts, materializeResolvedMatrix, matrixEnvelopeFields, mergeOrderedMaps, minAccessLogWarmDays, minSecretAuditLogWarmDays, normalizePersistedHoldType, partitionMatchers, peerAuthRequestSchema, peerFromPeerMessageSchema, peerHelloResponseSchema, peerHelloSchema, persistedHoldTypeSpellings, platformToOrchestratorMessageSchema, platformToOsArchLabels, platformToTaints, reservedEventNamePrefix, resolveRoleLabels, resolveScheduleInputs, resolveSecretsWithProvenance, scalerAgentLabels, scalerLabel, scalerPlatformSchema, scheduleTriggerKey, secretAuditLogWarmSqlCase, shouldRecordAccess, shouldRecordSecretResolve, stateReplaySchema, stringifyActor, truncateDecisionsToByteBudget, trustPolicyUpdateSchema, trustedContributorHoldReason, validateScopeName, validateSecretKey, wrapUntrusted } from "@kici-dev/engine";
8
8
  import * as fs$1 from "node:fs";
9
9
  import { chmodSync, closeSync, createReadStream, createWriteStream, fsyncSync, mkdirSync, mkdtempSync, openSync, promises, readFileSync, renameSync, rmSync, statSync, unwatchFile, watchFile, writeFileSync, writeSync } from "node:fs";
@@ -10345,28 +10345,41 @@ async function loadAccessLogRange(args) {
10345
10345
  const coldToTs = toTs && toTs < warmCutoff ? toTs : warmCutoff;
10346
10346
  const coldRemaining = limit - hotItems.length;
10347
10347
  const tenantToScan = filter.orgId ?? "__orchestrator__";
10348
+ const matches = (row) => {
10349
+ if (filter.actorType && row.actor_type !== filter.actorType) return false;
10350
+ if (filter.actorId && row.actor_id !== filter.actorId) return false;
10351
+ if (filter.action && row.action !== filter.action) return false;
10352
+ if (filter.source && row.source !== filter.source) return false;
10353
+ if (filter.outcome && row.outcome !== filter.outcome) return false;
10354
+ if (filter.targetType && row.target_type !== filter.targetType) return false;
10355
+ if (filter.targetId && row.target_id !== filter.targetId) return false;
10356
+ if (filter.agentLabel && row.agent_label !== filter.agentLabel) return false;
10357
+ if (filter.agentOnly && row.agent_label == null) return false;
10358
+ if (filter.q && filter.q.length > 0) {
10359
+ if (!(row.error_message ?? "").toLowerCase().includes(filter.q.toLowerCase())) return false;
10360
+ }
10361
+ return true;
10362
+ };
10363
+ const beforeCursor = (it) => !cursor || cursor.source !== "cold" || it.createdAt < cursor.createdAt || it.createdAt === cursor.createdAt && it.id < cursor.id;
10348
10364
  const coldItems = [];
10365
+ let stoppedEarly = false;
10349
10366
  try {
10350
10367
  for await (const row of coldStore.fetchRange({
10351
10368
  db: "orchestrator",
10352
10369
  table: "access_log",
10353
10370
  tenantId: tenantToScan,
10354
10371
  fromTs: coldFromTs,
10355
- toTs: coldToTs
10372
+ toTs: coldToTs,
10373
+ order: "desc"
10356
10374
  })) {
10357
- if (filter.actorType && row.actor_type !== filter.actorType) continue;
10358
- if (filter.actorId && row.actor_id !== filter.actorId) continue;
10359
- if (filter.action && row.action !== filter.action) continue;
10360
- if (filter.source && row.source !== filter.source) continue;
10361
- if (filter.outcome && row.outcome !== filter.outcome) continue;
10362
- if (filter.targetType && row.target_type !== filter.targetType) continue;
10363
- if (filter.targetId && row.target_id !== filter.targetId) continue;
10364
- if (filter.agentLabel && row.agent_label !== filter.agentLabel) continue;
10365
- if (filter.agentOnly && row.agent_label == null) continue;
10366
- if (filter.q && filter.q.length > 0) {
10367
- if (!(row.error_message ?? "").toLowerCase().includes(filter.q.toLowerCase())) continue;
10368
- }
10369
- coldItems.push(toAccessLogItem(row));
10375
+ if (!matches(row)) continue;
10376
+ const item = toAccessLogItem(row);
10377
+ if (!beforeCursor(item)) continue;
10378
+ if (coldItems.length >= coldRemaining && item.createdAt < coldItems[coldRemaining - 1].createdAt) {
10379
+ stoppedEarly = true;
10380
+ break;
10381
+ }
10382
+ coldItems.push(item);
10370
10383
  }
10371
10384
  } catch (err) {
10372
10385
  if (cursor?.source === "cold") {
@@ -10385,14 +10398,9 @@ async function loadAccessLogRange(args) {
10385
10398
  nextCursor: hotHasMore && hotItems.length > 0 ? buildHotCursor(hotItems[hotItems.length - 1]) : null
10386
10399
  };
10387
10400
  }
10388
- coldItems.sort((a, b) => a.createdAt < b.createdAt ? 1 : a.createdAt > b.createdAt ? -1 : 0);
10389
- let coldStart = 0;
10390
- if (cursor && cursor.source === "cold") {
10391
- coldStart = coldItems.findIndex((it) => it.createdAt < cursor.createdAt || it.createdAt === cursor.createdAt && it.id < cursor.id);
10392
- if (coldStart < 0) coldStart = coldItems.length;
10393
- }
10394
- const coldPage = coldItems.slice(coldStart, coldStart + coldRemaining);
10395
- const coldHasMore = coldStart + coldRemaining < coldItems.length;
10401
+ coldItems.sort((a, b) => a.createdAt < b.createdAt ? 1 : a.createdAt > b.createdAt ? -1 : a.id < b.id ? 1 : a.id > b.id ? -1 : 0);
10402
+ const coldPage = coldItems.slice(0, coldRemaining);
10403
+ const coldHasMore = stoppedEarly || coldItems.length > coldRemaining;
10396
10404
  return {
10397
10405
  items: [...hotItems, ...coldPage],
10398
10406
  nextCursor: coldHasMore && coldPage.length > 0 ? buildColdCursor(coldPage[coldPage.length - 1]) : hotHasMore && hotItems.length > 0 && coldPage.length === 0 ? buildHotCursor(hotItems[hotItems.length - 1]) : null
@@ -45074,7 +45082,8 @@ async function loadEventLogRange(args) {
45074
45082
  table: "event_log",
45075
45083
  tenantId: routingKey,
45076
45084
  fromTs: coldFromTs,
45077
- toTs: coldToTs
45085
+ toTs: coldToTs,
45086
+ order: "desc"
45078
45087
  })) {
45079
45088
  if (orgId !== void 0 && row.org_id !== orgId) continue;
45080
45089
  if (event !== void 0 && row.event !== event) continue;
@@ -45082,6 +45091,7 @@ async function loadEventLogRange(args) {
45082
45091
  if (status !== void 0 && row.status !== status) continue;
45083
45092
  if (deliveryId !== void 0 && !row.delivery_id.includes(deliveryId)) continue;
45084
45093
  coldRows.push(row);
45094
+ if (coldRows.length >= coldOffset + remaining) break;
45085
45095
  }
45086
45096
  } catch (err) {
45087
45097
  if (hotRows.length === 0) {
@@ -45097,10 +45107,6 @@ async function loadEventLogRange(args) {
45097
45107
  });
45098
45108
  return hotRows;
45099
45109
  }
45100
- coldRows.sort((a, b) => {
45101
- const at = a.received_at instanceof Date ? a.received_at.getTime() : new Date(a.received_at).getTime();
45102
- return (b.received_at instanceof Date ? b.received_at.getTime() : new Date(b.received_at).getTime()) - at;
45103
- });
45104
45110
  return [...hotRows, ...coldRows.slice(coldOffset, coldOffset + remaining)];
45105
45111
  }
45106
45112
  /**
@@ -46273,14 +46279,14 @@ var init_admin_config = __esmMin((() => {
46273
46279
  function createHealthRoutes$1(deps = {}) {
46274
46280
  return createHealthRoutes({
46275
46281
  livenessInfo: () => ({
46276
- version: "0.9.0",
46277
- buildDate: "2026-09-21T08:00:42.105Z",
46278
- buildCommit: "69765a7ee",
46279
- sdkVersion: "0.9.0",
46282
+ version: "0.9.1",
46283
+ buildDate: "2026-09-22T01:37:00.466Z",
46284
+ buildCommit: "38c8c0e0b",
46285
+ sdkVersion: "0.9.1",
46280
46286
  sdkBundleHash: "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d",
46281
- sharedVersion: "0.9.0",
46282
- sharedBundleHash: "c1c70e41a1ec14fd7cf3a6047251e9aa11258a21e3694ea89a50e8bf14b99f9d",
46283
- engineVersion: "0.9.0",
46287
+ sharedVersion: "0.9.1",
46288
+ sharedBundleHash: "500b8ea553b9686ed8e5f6dda956dbcf2d429fed6153c46aefdc687643c2dfc5",
46289
+ engineVersion: "0.9.1",
46284
46290
  engineBundleHash: "c5e0e34d8d7f56f747bba71076a5fbccac4c932be855ef71c596b4211ca8698c"
46285
46291
  }),
46286
46292
  readinessCheck: deps.db ? async () => {
@@ -46316,7 +46322,7 @@ function createCapabilitiesRoutes() {
46316
46322
  const app = new Hono();
46317
46323
  app.get("/api/v1/capabilities", (c) => {
46318
46324
  const manifest = {
46319
- orchestratorVersion: "0.9.0",
46325
+ orchestratorVersion: "0.9.1",
46320
46326
  protocolVersion: PROTOCOL_VERSION,
46321
46327
  minProtocolVersion: MIN_PROTOCOL_VERSION
46322
46328
  };
@@ -49609,7 +49615,7 @@ var init_app = __esmMin((() => {
49609
49615
  init_log_chunk_sink();
49610
49616
  init_agent_metrics_aggregator();
49611
49617
  logger$63 = createLogger({ prefix: "app" });
49612
- ORCHESTRATOR_VERSION$2 = "0.9.0";
49618
+ ORCHESTRATOR_VERSION$2 = "0.9.1";
49613
49619
  SourceLocationStore = class {
49614
49620
  cache = /* @__PURE__ */ new Map();
49615
49621
  key(workflowName, jobName) {
@@ -63411,7 +63417,7 @@ var logger$45, SOFTWARE_VERSION$1, PeerClient$1;
63411
63417
  var init_peer_client = __esmMin((() => {
63412
63418
  init_peer_crypto();
63413
63419
  logger$45 = createLogger({ prefix: "peer-client" });
63414
- SOFTWARE_VERSION$1 = "0.9.0";
63420
+ SOFTWARE_VERSION$1 = "0.9.1";
63415
63421
  PeerClient$1 = class {
63416
63422
  ws = null;
63417
63423
  _state = "disconnected";
@@ -65425,7 +65431,7 @@ var init_peer_handler = __esmMin((() => {
65425
65431
  init_peer_crypto();
65426
65432
  init_join_token();
65427
65433
  logger$43 = createLogger({ prefix: "peer-handler" });
65428
- SOFTWARE_VERSION = "0.9.0";
65434
+ SOFTWARE_VERSION = "0.9.1";
65429
65435
  RATE_LIMIT_MAX = 5;
65430
65436
  RATE_LIMIT_WINDOW_MS = 6e4;
65431
65437
  }));
@@ -67788,11 +67794,13 @@ async function loadSecretAuditLogRange(args) {
67788
67794
  table: "secret_audit_log",
67789
67795
  tenantId: tenant,
67790
67796
  fromTs: coldFromTs,
67791
- toTs: coldToTs
67797
+ toTs: coldToTs,
67798
+ order: "desc"
67792
67799
  })) {
67793
67800
  if (contextName && row.context_name !== contextName) continue;
67794
67801
  if (action && row.action !== action) continue;
67795
67802
  coldRows.push(row);
67803
+ if (coldRows.length >= coldOffset + remaining) break;
67796
67804
  }
67797
67805
  } catch (err) {
67798
67806
  if (hotRows.length === 0) {
@@ -67802,7 +67810,6 @@ async function loadSecretAuditLogRange(args) {
67802
67810
  logger$37.warn("cold-store fetchRange failed; returning hot rows only", { error: toErrorMessage(err) });
67803
67811
  return hotRows;
67804
67812
  }
67805
- coldRows.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
67806
67813
  const coldSlice = coldRows.slice(coldOffset, coldOffset + remaining);
67807
67814
  return [...hotRows, ...coldSlice];
67808
67815
  }
@@ -73937,6 +73944,10 @@ async function bootstrapOrchestrator$1(config, hooks, options) {
73937
73944
  config: csConfig,
73938
73945
  instanceId: config.instanceId,
73939
73946
  kdb: db,
73947
+ chunkCache: new ChunkLru({
73948
+ maxBytes: COLD_STORE_CHUNK_CACHE_BYTES,
73949
+ sizeOf: (v) => v.byteLength
73950
+ }),
73940
73951
  log: (level, msg, extra) => {
73941
73952
  if (level === "info") logger$25.info(msg, extra);
73942
73953
  else if (level === "warn") logger$25.warn(msg, extra);
@@ -74805,7 +74816,7 @@ async function bootstrapOrchestrator$1(config, hooks, options) {
74805
74816
  markProcessingDepsReady();
74806
74817
  tryDispatchNextQueuedRef = tryDispatchNextQueued;
74807
74818
  ingestOverflowReplayer.setReinjectDirect(reinjectDirect);
74808
- const server = serve({
74819
+ const server = applyProxyKeepAliveTimeouts(serve({
74809
74820
  fetch: app.fetch,
74810
74821
  port: config.port,
74811
74822
  hostname: config.host,
@@ -74817,7 +74828,7 @@ async function bootstrapOrchestrator$1(config, hooks, options) {
74817
74828
  mode: config.mode,
74818
74829
  environment: config.nodeEnv
74819
74830
  });
74820
- });
74831
+ }));
74821
74832
  const heartbeatMonitor = new AgentHeartbeatMonitor({
74822
74833
  registry: agentRegistry,
74823
74834
  dispatcher
@@ -75146,7 +75157,7 @@ async function bootstrapOrchestrator$1(config, hooks, options) {
75146
75157
  ]
75147
75158
  });
75148
75159
  }
75149
- var logger$25;
75160
+ var logger$25, COLD_STORE_CHUNK_CACHE_BYTES;
75150
75161
  var init_orchestrator_core = __esmMin((() => {
75151
75162
  init_data_dir();
75152
75163
  init_reload();
@@ -75269,6 +75280,7 @@ var init_orchestrator_core = __esmMin((() => {
75269
75280
  init_disk_guard();
75270
75281
  init_types$1();
75271
75282
  logger$25 = createLogger({ prefix: "core" });
75283
+ COLD_STORE_CHUNK_CACHE_BYTES = 134217728;
75272
75284
  }));
75273
75285
  //#endregion
75274
75286
  //#region src/contexts/protection/aggregate.ts
@@ -95227,7 +95239,7 @@ async function bootstrapWorker(config, _opts) {
95227
95239
  onConcurrencyReport: void 0
95228
95240
  });
95229
95241
  app.get("/ws", upgradeWebSocket(() => agentWsHandler));
95230
- const server = serve({
95242
+ const server = applyProxyKeepAliveTimeouts(serve({
95231
95243
  fetch: app.fetch,
95232
95244
  port: config.port,
95233
95245
  hostname: config.host,
@@ -95240,7 +95252,7 @@ async function bootstrapWorker(config, _opts) {
95240
95252
  coordinatorUrls: coordUrls,
95241
95253
  instanceId: config.cluster.instanceId
95242
95254
  });
95243
- });
95255
+ }));
95244
95256
  const heartbeatMonitor = new AgentHeartbeatMonitor({
95245
95257
  registry: agentRegistry,
95246
95258
  dispatcher
@@ -95353,13 +95365,13 @@ var init_worker_core = __esmMin((() => {
95353
95365
  init_peer_outbox();
95354
95366
  init_worker_outbox_relay();
95355
95367
  init_app_on_error();
95356
- ORCHESTRATOR_VERSION$1 = "0.9.0";
95357
- WORKER_BUILD_COMMIT = "69765a7ee";
95358
- WORKER_SDK_VERSION = "0.9.0";
95368
+ ORCHESTRATOR_VERSION$1 = "0.9.1";
95369
+ WORKER_BUILD_COMMIT = "38c8c0e0b";
95370
+ WORKER_SDK_VERSION = "0.9.1";
95359
95371
  WORKER_SDK_BUNDLE_HASH = "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d";
95360
- WORKER_SHARED_VERSION = "0.9.0";
95361
- WORKER_SHARED_BUNDLE_HASH = "c1c70e41a1ec14fd7cf3a6047251e9aa11258a21e3694ea89a50e8bf14b99f9d";
95362
- WORKER_ENGINE_VERSION = "0.9.0";
95372
+ WORKER_SHARED_VERSION = "0.9.1";
95373
+ WORKER_SHARED_BUNDLE_HASH = "500b8ea553b9686ed8e5f6dda956dbcf2d429fed6153c46aefdc687643c2dfc5";
95374
+ WORKER_ENGINE_VERSION = "0.9.1";
95363
95375
  WORKER_ENGINE_BUNDLE_HASH = "c5e0e34d8d7f56f747bba71076a5fbccac4c932be855ef71c596b4211ca8698c";
95364
95376
  logger$2 = createLogger({ prefix: "worker" });
95365
95377
  DRAIN_TIMEOUT_MS = 3e5;
@@ -95387,13 +95399,13 @@ init_processor();
95387
95399
  init_verify_inbound();
95388
95400
  init_ingest_overflow_types();
95389
95401
  init_scope_routing();
95390
- const ORCHESTRATOR_VERSION = "0.9.0";
95391
- const BUILD_COMMIT = "69765a7ee";
95392
- const SDK_VERSION = "0.9.0";
95402
+ const ORCHESTRATOR_VERSION = "0.9.1";
95403
+ const BUILD_COMMIT = "38c8c0e0b";
95404
+ const SDK_VERSION = "0.9.1";
95393
95405
  const SDK_BUNDLE_HASH = "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d";
95394
- const SHARED_VERSION = "0.9.0";
95395
- const SHARED_BUNDLE_HASH = "c1c70e41a1ec14fd7cf3a6047251e9aa11258a21e3694ea89a50e8bf14b99f9d";
95396
- const ENGINE_VERSION = "0.9.0";
95406
+ const SHARED_VERSION = "0.9.1";
95407
+ const SHARED_BUNDLE_HASH = "500b8ea553b9686ed8e5f6dda956dbcf2d429fed6153c46aefdc687643c2dfc5";
95408
+ const ENGINE_VERSION = "0.9.1";
95397
95409
  const ENGINE_BUNDLE_HASH = "c5e0e34d8d7f56f747bba71076a5fbccac4c932be855ef71c596b4211ca8698c";
95398
95410
  const otelSdk = initTelemetry({
95399
95411
  serviceName: "kici-orchestrator",
@@ -3,7 +3,7 @@ import { dirname as __cjs_dirname } from "node:path";
3
3
  const __filename = __cjs_fileURLToPath(import.meta.url);
4
4
  __cjs_dirname(__filename);
5
5
  import "node:module";
6
- import { AgentDeliveryMode, AgentPlatform, BaseColdStore, ChunkRequestWaiter, addLogsToArchive, chunkBuffer, computeBackoffDelay, computeMigrationsHash, createDb, createHealthRoutes, createLogger, createMeter, createMetricsRoutes, createPool, createS3Client, decrypt, deriveKey, encodeKeySegment, encrypt, enrichRequestContext, formatDuration, getPrometheusExporter, getReconnectDelay, getRequestContext, guardStartup, initTelemetry, isPgUniqueViolation, logger, parseDatabaseUrl, redactConfig, requestContext, serializeError, setServiceName, setupGracefulShutdown, sha256, storeMigrationContentHash, toErrorMessage, validateRequiredTools } from "@kici-dev/shared";
6
+ import { AgentDeliveryMode, AgentPlatform, BaseColdStore, ChunkLru, ChunkRequestWaiter, addLogsToArchive, applyProxyKeepAliveTimeouts, chunkBuffer, computeBackoffDelay, computeMigrationsHash, createDb, createHealthRoutes, createLogger, createMeter, createMetricsRoutes, createPool, createS3Client, decrypt, deriveKey, encodeKeySegment, encrypt, enrichRequestContext, formatDuration, getPrometheusExporter, getReconnectDelay, getRequestContext, guardStartup, initTelemetry, isPgUniqueViolation, logger, parseDatabaseUrl, redactConfig, requestContext, serializeError, setServiceName, setupGracefulShutdown, sha256, storeMigrationContentHash, toErrorMessage, validateRequiredTools } from "@kici-dev/shared";
7
7
  import { ACTOR_AGENT_SUFFIX, ALLOWED_SYSTEM_VARS, ARTIFACT_NAME_MAX_LENGTH, AccessLogAction, AccessLogOutcome, AccessLogSource, AccessLogTargetType, ActorType, AgentFailureCategory, ApprovalDecision, ArtifactCompleteAckOutcome, ArtifactDownloadOutcome, ArtifactUploadOutcome, AttestationOrigin, BREAKING_FLOOR, CANONICAL_STATUSES, CONTAINER_BUILD_RUNTIME_LABEL, CacheRefScope, CheckMode, CheckRunConclusion, CheckStepOutcome, CiTrustLevel, ConcurrencyStrategy, ContextDeleteErrorCode, ContextGateRejectReason, DASHBOARD_REQUEST_TYPE_SET, DEFAULT_APPROVAL_EXPIRY_HOURS, DEFAULT_APPROVAL_EXPIRY_SECONDS, DEFAULT_CONCURRENCY_STRATEGY, DEFAULT_HOLD_EXPIRY_SECONDS, EventLogSource, EventLogStatus, ExecutionJobStatus, ExecutionRunStatus, ExecutionStepStatus, FanoutCause, FanoutError, ForkPolicy, HeldRunQueueType, HeldRunStatus, HoldScope, HoldType, ID_TOKEN_CLAIM_NAMES, INIT_LABEL, INIT_RUNNER_ROLE_LABEL, INSTALL_JOB_ID_PREFIX, InitFailureCategory, InventorySelectorSchema, KICI_AGENT_ENV_PREFIX, KNOWN_ROLES, LabelMatcher, LockFileParseError, LogStream, MIN_APPROVAL_EXPIRY_SECONDS, MIN_PROTOCOL_VERSION, MinimumTrustSchema, ORCH_AGENT_CAPABILITIES, OWN_INGRESS_MODES, OrchLogPhase, OrchestratorMode, PLATFORM_CONNECTED_MODES, PLATFORM_TAINT_LABELS, PLATFORM_TO_ORCH_RECOGNIZED_TYPES, PRIVILEGED_ROOT_LABEL, PROTOCOL_VERSION, PayloadOmittedReason, RegisterableTriggerType, RunFailureClass, SCALER_EVENT_NAMES, SCHEMA_VERSION, SECURITY_HOLD_JOB_IDS, SSH_TRANSPORT_CAPABILITY, ScaleDownReason, ScalerBackendType, ScalerEventType, ScalerEventType as ScalerEventType$1, ScalerScaleDownPayload, ScalerScaleUpPayload, SetupStepType, SourceOrigin, SourceSubtype, TERMINAL_JOB_STATES, TERMINAL_RUN_STATES, TRIGGER_EVENT_TYPES, TimeoutReason, TraceCheck, TriggerSource, TrustTierSchema, VariantKind, WS_CLOSE_AGENT_AUTH_FAILED, WS_CLOSE_AUTH_TIMEOUT, WS_CLOSE_DISPATCH_ACK_TIMEOUT, WS_CLOSE_GOING_AWAY, WS_CLOSE_HEARTBEAT_TIMEOUT, WS_CLOSE_INTERNAL_ERROR, WS_CLOSE_INVALID_MESSAGE, WS_CLOSE_PLAN_LIMIT, WS_CLOSE_PROTOCOL_ERROR, WS_CLOSE_SUPERSEDED_BY_RECONNECT, WS_CLOSE_UNAUTHORIZED, WS_MAX_PAYLOAD_BYTES, WebhookRelayResult, WsRateLimiter, accessLogWarmSqlCase, agentAuthRequestSchema, agentLabelOf, agentToOrchestratorMessageSchema, agentTypeLabel, appendChecks, approvalExpiryHoursOf, approvalExpirySecondsOf, approvalTimeoutSecondsSchema, artifactInvalidNameError, assertValidSecretKey, attestationVerifyStatusSchema, buildEventClaims, buildIdTokenSubject, buildTrustedPassthroughEnv, canonicalizeCapability, canonicalizeLabel, canonicalizeLabelSet, canonicalizeLabels, canonicalizeMatcher, checkArtifactName, collectDiscriminatorTypes, createContentRequirementsTraceEntry, createDispatchFailureTraceEntry, createGlobalFilterTraceEntry, deriveOsArchLabels, derivePlatformTaints, fanoutEnvelopeFields, flattenActor, getAccessLogColdDays, getSecretAuditLogColdDays, githubIngressPath, globalEvalRoundResultSchema, hostLabel, hostSatisfiesTarget, hostToScalerPlatform, installGateJobId, isFailureStatus, isKnownCapability, isLockDynamicJobFn, isLockParallelStep, isLockStaticJob, isPullRequestFamilyTriggerEvent, isSecurityHoldJobId, isSelfReportedLabel, joinRequestSchema, logPullPlatformToOrchSchema, matchAllWorkflows, matchScopePattern, matchWorkflowsForEvent, matcherSatisfiedBy, materializeFanout, materializeResolvedHosts, materializeResolvedMatrix, matrixEnvelopeFields, mergeOrderedMaps, minAccessLogWarmDays, minSecretAuditLogWarmDays, normalizePersistedHoldType, partitionMatchers, peerAuthRequestSchema, peerFromPeerMessageSchema, peerHelloResponseSchema, peerHelloSchema, persistedHoldTypeSpellings, platformToOsArchLabels, platformToTaints, reservedEventNamePrefix, resolveRoleLabels, resolveScheduleInputs, resolveSecretsWithProvenance, scalerAgentLabels, scalerLabel, scalerPlatformSchema, scheduleTriggerKey, secretAuditLogWarmSqlCase, shouldRecordAccess, shouldRecordSecretResolve, truncateDecisionsToByteBudget, trustPolicyUpdateSchema, trustedContributorHoldReason, validateScopeName, validateSecretKey, wrapUntrusted } from "@kici-dev/engine";
8
8
  import * as os$1 from "node:os";
9
9
  import os, { cpus, freemem, homedir, hostname, release, tmpdir, totalmem, uptime, userInfo } from "node:os";
@@ -1359,7 +1359,7 @@ var logger$135, SOFTWARE_VERSION$1, PeerClient$1;
1359
1359
  var init_peer_client = __esmMin((() => {
1360
1360
  init_peer_crypto();
1361
1361
  logger$135 = createLogger({ prefix: "peer-client" });
1362
- SOFTWARE_VERSION$1 = "0.9.0";
1362
+ SOFTWARE_VERSION$1 = "0.9.1";
1363
1363
  PeerClient$1 = class {
1364
1364
  ws = null;
1365
1365
  _state = "disconnected";
@@ -3373,7 +3373,7 @@ var init_peer_handler = __esmMin((() => {
3373
3373
  init_peer_crypto();
3374
3374
  init_join_token();
3375
3375
  logger$133 = createLogger({ prefix: "peer-handler" });
3376
- SOFTWARE_VERSION = "0.9.0";
3376
+ SOFTWARE_VERSION = "0.9.1";
3377
3377
  RATE_LIMIT_MAX = 5;
3378
3378
  RATE_LIMIT_WINDOW_MS = 6e4;
3379
3379
  }));
@@ -12938,28 +12938,41 @@ async function loadAccessLogRange(args) {
12938
12938
  const coldToTs = toTs && toTs < warmCutoff ? toTs : warmCutoff;
12939
12939
  const coldRemaining = limit - hotItems.length;
12940
12940
  const tenantToScan = filter.orgId ?? "__orchestrator__";
12941
+ const matches = (row) => {
12942
+ if (filter.actorType && row.actor_type !== filter.actorType) return false;
12943
+ if (filter.actorId && row.actor_id !== filter.actorId) return false;
12944
+ if (filter.action && row.action !== filter.action) return false;
12945
+ if (filter.source && row.source !== filter.source) return false;
12946
+ if (filter.outcome && row.outcome !== filter.outcome) return false;
12947
+ if (filter.targetType && row.target_type !== filter.targetType) return false;
12948
+ if (filter.targetId && row.target_id !== filter.targetId) return false;
12949
+ if (filter.agentLabel && row.agent_label !== filter.agentLabel) return false;
12950
+ if (filter.agentOnly && row.agent_label == null) return false;
12951
+ if (filter.q && filter.q.length > 0) {
12952
+ if (!(row.error_message ?? "").toLowerCase().includes(filter.q.toLowerCase())) return false;
12953
+ }
12954
+ return true;
12955
+ };
12956
+ const beforeCursor = (it) => !cursor || cursor.source !== "cold" || it.createdAt < cursor.createdAt || it.createdAt === cursor.createdAt && it.id < cursor.id;
12941
12957
  const coldItems = [];
12958
+ let stoppedEarly = false;
12942
12959
  try {
12943
12960
  for await (const row of coldStore.fetchRange({
12944
12961
  db: "orchestrator",
12945
12962
  table: "access_log",
12946
12963
  tenantId: tenantToScan,
12947
12964
  fromTs: coldFromTs,
12948
- toTs: coldToTs
12965
+ toTs: coldToTs,
12966
+ order: "desc"
12949
12967
  })) {
12950
- if (filter.actorType && row.actor_type !== filter.actorType) continue;
12951
- if (filter.actorId && row.actor_id !== filter.actorId) continue;
12952
- if (filter.action && row.action !== filter.action) continue;
12953
- if (filter.source && row.source !== filter.source) continue;
12954
- if (filter.outcome && row.outcome !== filter.outcome) continue;
12955
- if (filter.targetType && row.target_type !== filter.targetType) continue;
12956
- if (filter.targetId && row.target_id !== filter.targetId) continue;
12957
- if (filter.agentLabel && row.agent_label !== filter.agentLabel) continue;
12958
- if (filter.agentOnly && row.agent_label == null) continue;
12959
- if (filter.q && filter.q.length > 0) {
12960
- if (!(row.error_message ?? "").toLowerCase().includes(filter.q.toLowerCase())) continue;
12961
- }
12962
- coldItems.push(toAccessLogItem(row));
12968
+ if (!matches(row)) continue;
12969
+ const item = toAccessLogItem(row);
12970
+ if (!beforeCursor(item)) continue;
12971
+ if (coldItems.length >= coldRemaining && item.createdAt < coldItems[coldRemaining - 1].createdAt) {
12972
+ stoppedEarly = true;
12973
+ break;
12974
+ }
12975
+ coldItems.push(item);
12963
12976
  }
12964
12977
  } catch (err) {
12965
12978
  if (cursor?.source === "cold") {
@@ -12978,14 +12991,9 @@ async function loadAccessLogRange(args) {
12978
12991
  nextCursor: hotHasMore && hotItems.length > 0 ? buildHotCursor(hotItems[hotItems.length - 1]) : null
12979
12992
  };
12980
12993
  }
12981
- coldItems.sort((a, b) => a.createdAt < b.createdAt ? 1 : a.createdAt > b.createdAt ? -1 : 0);
12982
- let coldStart = 0;
12983
- if (cursor && cursor.source === "cold") {
12984
- coldStart = coldItems.findIndex((it) => it.createdAt < cursor.createdAt || it.createdAt === cursor.createdAt && it.id < cursor.id);
12985
- if (coldStart < 0) coldStart = coldItems.length;
12986
- }
12987
- const coldPage = coldItems.slice(coldStart, coldStart + coldRemaining);
12988
- const coldHasMore = coldStart + coldRemaining < coldItems.length;
12994
+ coldItems.sort((a, b) => a.createdAt < b.createdAt ? 1 : a.createdAt > b.createdAt ? -1 : a.id < b.id ? 1 : a.id > b.id ? -1 : 0);
12995
+ const coldPage = coldItems.slice(0, coldRemaining);
12996
+ const coldHasMore = stoppedEarly || coldItems.length > coldRemaining;
12989
12997
  return {
12990
12998
  items: [...hotItems, ...coldPage],
12991
12999
  nextCursor: coldHasMore && coldPage.length > 0 ? buildColdCursor(coldPage[coldPage.length - 1]) : hotHasMore && hotItems.length > 0 && coldPage.length === 0 ? buildHotCursor(hotItems[hotItems.length - 1]) : null
@@ -60206,7 +60214,8 @@ async function loadEventLogRange(args) {
60206
60214
  table: "event_log",
60207
60215
  tenantId: routingKey,
60208
60216
  fromTs: coldFromTs,
60209
- toTs: coldToTs
60217
+ toTs: coldToTs,
60218
+ order: "desc"
60210
60219
  })) {
60211
60220
  if (orgId !== void 0 && row.org_id !== orgId) continue;
60212
60221
  if (event !== void 0 && row.event !== event) continue;
@@ -60214,6 +60223,7 @@ async function loadEventLogRange(args) {
60214
60223
  if (status !== void 0 && row.status !== status) continue;
60215
60224
  if (deliveryId !== void 0 && !row.delivery_id.includes(deliveryId)) continue;
60216
60225
  coldRows.push(row);
60226
+ if (coldRows.length >= coldOffset + remaining) break;
60217
60227
  }
60218
60228
  } catch (err) {
60219
60229
  if (hotRows.length === 0) {
@@ -60229,10 +60239,6 @@ async function loadEventLogRange(args) {
60229
60239
  });
60230
60240
  return hotRows;
60231
60241
  }
60232
- coldRows.sort((a, b) => {
60233
- const at = a.received_at instanceof Date ? a.received_at.getTime() : new Date(a.received_at).getTime();
60234
- return (b.received_at instanceof Date ? b.received_at.getTime() : new Date(b.received_at).getTime()) - at;
60235
- });
60236
60242
  return [...hotRows, ...coldRows.slice(coldOffset, coldOffset + remaining)];
60237
60243
  }
60238
60244
  /**
@@ -61405,14 +61411,14 @@ var init_admin_config = __esmMin((() => {
61405
61411
  function createHealthRoutes$1(deps = {}) {
61406
61412
  return createHealthRoutes({
61407
61413
  livenessInfo: () => ({
61408
- version: "0.9.0",
61409
- buildDate: "2026-09-21T08:00:42.105Z",
61410
- buildCommit: "69765a7ee",
61411
- sdkVersion: "0.9.0",
61414
+ version: "0.9.1",
61415
+ buildDate: "2026-09-22T01:37:00.466Z",
61416
+ buildCommit: "38c8c0e0b",
61417
+ sdkVersion: "0.9.1",
61412
61418
  sdkBundleHash: "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d",
61413
- sharedVersion: "0.9.0",
61414
- sharedBundleHash: "c1c70e41a1ec14fd7cf3a6047251e9aa11258a21e3694ea89a50e8bf14b99f9d",
61415
- engineVersion: "0.9.0",
61419
+ sharedVersion: "0.9.1",
61420
+ sharedBundleHash: "500b8ea553b9686ed8e5f6dda956dbcf2d429fed6153c46aefdc687643c2dfc5",
61421
+ engineVersion: "0.9.1",
61416
61422
  engineBundleHash: "c5e0e34d8d7f56f747bba71076a5fbccac4c932be855ef71c596b4211ca8698c"
61417
61423
  }),
61418
61424
  readinessCheck: deps.db ? async () => {
@@ -61448,7 +61454,7 @@ function createCapabilitiesRoutes() {
61448
61454
  const app = new Hono();
61449
61455
  app.get("/api/v1/capabilities", (c) => {
61450
61456
  const manifest = {
61451
- orchestratorVersion: "0.9.0",
61457
+ orchestratorVersion: "0.9.1",
61452
61458
  protocolVersion: PROTOCOL_VERSION,
61453
61459
  minProtocolVersion: MIN_PROTOCOL_VERSION
61454
61460
  };
@@ -64390,7 +64396,7 @@ var init_app = __esmMin((() => {
64390
64396
  init_log_chunk_sink();
64391
64397
  init_agent_metrics_aggregator();
64392
64398
  logger$32 = createLogger({ prefix: "app" });
64393
- ORCHESTRATOR_VERSION$2 = "0.9.0";
64399
+ ORCHESTRATOR_VERSION$2 = "0.9.1";
64394
64400
  SourceLocationStore = class {
64395
64401
  cache = /* @__PURE__ */ new Map();
64396
64402
  key(workflowName, jobName) {
@@ -75470,11 +75476,13 @@ async function loadSecretAuditLogRange(args) {
75470
75476
  table: "secret_audit_log",
75471
75477
  tenantId: tenant,
75472
75478
  fromTs: coldFromTs,
75473
- toTs: coldToTs
75479
+ toTs: coldToTs,
75480
+ order: "desc"
75474
75481
  })) {
75475
75482
  if (contextName && row.context_name !== contextName) continue;
75476
75483
  if (action && row.action !== action) continue;
75477
75484
  coldRows.push(row);
75485
+ if (coldRows.length >= coldOffset + remaining) break;
75478
75486
  }
75479
75487
  } catch (err) {
75480
75488
  if (hotRows.length === 0) {
@@ -75484,7 +75492,6 @@ async function loadSecretAuditLogRange(args) {
75484
75492
  logger$16.warn("cold-store fetchRange failed; returning hot rows only", { error: toErrorMessage(err) });
75485
75493
  return hotRows;
75486
75494
  }
75487
- coldRows.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
75488
75495
  const coldSlice = coldRows.slice(coldOffset, coldOffset + remaining);
75489
75496
  return [...hotRows, ...coldSlice];
75490
75497
  }
@@ -81488,6 +81495,10 @@ async function bootstrapOrchestrator$1(config, hooks, options) {
81488
81495
  config: csConfig,
81489
81496
  instanceId: config.instanceId,
81490
81497
  kdb: db,
81498
+ chunkCache: new ChunkLru({
81499
+ maxBytes: COLD_STORE_CHUNK_CACHE_BYTES,
81500
+ sizeOf: (v) => v.byteLength
81501
+ }),
81491
81502
  log: (level, msg, extra) => {
81492
81503
  if (level === "info") logger$5.info(msg, extra);
81493
81504
  else if (level === "warn") logger$5.warn(msg, extra);
@@ -82356,7 +82367,7 @@ async function bootstrapOrchestrator$1(config, hooks, options) {
82356
82367
  markProcessingDepsReady();
82357
82368
  tryDispatchNextQueuedRef = tryDispatchNextQueued;
82358
82369
  ingestOverflowReplayer.setReinjectDirect(reinjectDirect);
82359
- const server = serve({
82370
+ const server = applyProxyKeepAliveTimeouts(serve({
82360
82371
  fetch: app.fetch,
82361
82372
  port: config.port,
82362
82373
  hostname: config.host,
@@ -82368,7 +82379,7 @@ async function bootstrapOrchestrator$1(config, hooks, options) {
82368
82379
  mode: config.mode,
82369
82380
  environment: config.nodeEnv
82370
82381
  });
82371
- });
82382
+ }));
82372
82383
  const heartbeatMonitor = new AgentHeartbeatMonitor({
82373
82384
  registry: agentRegistry,
82374
82385
  dispatcher
@@ -82697,7 +82708,7 @@ async function bootstrapOrchestrator$1(config, hooks, options) {
82697
82708
  ]
82698
82709
  });
82699
82710
  }
82700
- var logger$5;
82711
+ var logger$5, COLD_STORE_CHUNK_CACHE_BYTES;
82701
82712
  var init_orchestrator_core = __esmMin((() => {
82702
82713
  init_data_dir();
82703
82714
  init_reload();
@@ -82820,6 +82831,7 @@ var init_orchestrator_core = __esmMin((() => {
82820
82831
  init_disk_guard();
82821
82832
  init_types$1();
82822
82833
  logger$5 = createLogger({ prefix: "core" });
82834
+ COLD_STORE_CHUNK_CACHE_BYTES = 134217728;
82823
82835
  }));
82824
82836
  //#endregion
82825
82837
  //#region src/secrets/context-secret-resolver.ts
@@ -84329,7 +84341,7 @@ async function bootstrapWorker(config, _opts) {
84329
84341
  onConcurrencyReport: void 0
84330
84342
  });
84331
84343
  app.get("/ws", upgradeWebSocket(() => agentWsHandler));
84332
- const server = serve({
84344
+ const server = applyProxyKeepAliveTimeouts(serve({
84333
84345
  fetch: app.fetch,
84334
84346
  port: config.port,
84335
84347
  hostname: config.host,
@@ -84342,7 +84354,7 @@ async function bootstrapWorker(config, _opts) {
84342
84354
  coordinatorUrls: coordUrls,
84343
84355
  instanceId: config.cluster.instanceId
84344
84356
  });
84345
- });
84357
+ }));
84346
84358
  const heartbeatMonitor = new AgentHeartbeatMonitor({
84347
84359
  registry: agentRegistry,
84348
84360
  dispatcher
@@ -84455,13 +84467,13 @@ var init_worker_core = __esmMin((() => {
84455
84467
  init_peer_outbox();
84456
84468
  init_worker_outbox_relay();
84457
84469
  init_app_on_error();
84458
- ORCHESTRATOR_VERSION$1 = "0.9.0";
84459
- WORKER_BUILD_COMMIT = "69765a7ee";
84460
- WORKER_SDK_VERSION = "0.9.0";
84470
+ ORCHESTRATOR_VERSION$1 = "0.9.1";
84471
+ WORKER_BUILD_COMMIT = "38c8c0e0b";
84472
+ WORKER_SDK_VERSION = "0.9.1";
84461
84473
  WORKER_SDK_BUNDLE_HASH = "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d";
84462
- WORKER_SHARED_VERSION = "0.9.0";
84463
- WORKER_SHARED_BUNDLE_HASH = "c1c70e41a1ec14fd7cf3a6047251e9aa11258a21e3694ea89a50e8bf14b99f9d";
84464
- WORKER_ENGINE_VERSION = "0.9.0";
84474
+ WORKER_SHARED_VERSION = "0.9.1";
84475
+ WORKER_SHARED_BUNDLE_HASH = "500b8ea553b9686ed8e5f6dda956dbcf2d429fed6153c46aefdc687643c2dfc5";
84476
+ WORKER_ENGINE_VERSION = "0.9.1";
84465
84477
  WORKER_ENGINE_BUNDLE_HASH = "c5e0e34d8d7f56f747bba71076a5fbccac4c932be855ef71c596b4211ca8698c";
84466
84478
  logger$2 = createLogger({ prefix: "worker" });
84467
84479
  DRAIN_TIMEOUT_MS = 3e5;
@@ -84486,13 +84498,13 @@ var init_worker_core = __esmMin((() => {
84486
84498
  * Graceful shutdown:
84487
84499
  * agent WS -> heartbeat -> HTTP -> DB
84488
84500
  */
84489
- const ORCHESTRATOR_VERSION = "0.9.0";
84490
- const BUILD_COMMIT = "69765a7ee";
84491
- const SDK_VERSION = "0.9.0";
84501
+ const ORCHESTRATOR_VERSION = "0.9.1";
84502
+ const BUILD_COMMIT = "38c8c0e0b";
84503
+ const SDK_VERSION = "0.9.1";
84492
84504
  const SDK_BUNDLE_HASH = "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d";
84493
- const SHARED_VERSION = "0.9.0";
84494
- const SHARED_BUNDLE_HASH = "c1c70e41a1ec14fd7cf3a6047251e9aa11258a21e3694ea89a50e8bf14b99f9d";
84495
- const ENGINE_VERSION = "0.9.0";
84505
+ const SHARED_VERSION = "0.9.1";
84506
+ const SHARED_BUNDLE_HASH = "500b8ea553b9686ed8e5f6dda956dbcf2d429fed6153c46aefdc687643c2dfc5";
84507
+ const ENGINE_VERSION = "0.9.1";
84496
84508
  const ENGINE_BUNDLE_HASH = "c5e0e34d8d7f56f747bba71076a5fbccac4c932be855ef71c596b4211ca8698c";
84497
84509
  const otelSdk = initTelemetry({
84498
84510
  serviceName: "kici-orchestrator",
@@ -1,7 +1,7 @@
1
1
  {
2
- "version": "0.9.0",
2
+ "version": "0.9.1",
3
3
  "images": {
4
- "kici-agent": "sha256:371b518421c505041bc8b52eae3ce92e888f25b2cc2d4914f32420dbbf11df55",
5
- "kici-orchestrator": "sha256:58c36d0222832fcb82b0af33cdb46d474b97654b0051cb6c54fa96fca9a13af2"
4
+ "kici-agent": "sha256:e5d740180cf3aa12128355bc9ff9dd2594fc70b7362bf5884430f74cee6677ae",
5
+ "kici-orchestrator": "sha256:bfe2c58cd88e700f23e6e757ebdb92a97f840632bb1450643d46f5c4180dcb2c"
6
6
  }
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kici-dev/orchestrator",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
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",
@@ -90,8 +90,8 @@
90
90
  "ws": "^8.21.3",
91
91
  "yaml": "^2.9.1",
92
92
  "zod": "^4.6.5",
93
- "@kici-dev/engine": "0.9.0",
94
- "@kici-dev/shared": "0.9.0"
93
+ "@kici-dev/engine": "0.9.1",
94
+ "@kici-dev/shared": "0.9.1"
95
95
  },
96
96
  "kici": {
97
97
  "metrics": {
@@ -106,7 +106,7 @@
106
106
  "@types/dockerode": "^4.0.1",
107
107
  "@types/ws": "^8.18.1",
108
108
  "kysely-ctl": "^0.21.0",
109
- "@kici-dev/agent": "0.9.0"
109
+ "@kici-dev/agent": "0.9.1"
110
110
  },
111
111
  "scripts": {
112
112
  "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.9.0",
6
- "documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Forchestrator/0.9.0/f29c1468-46c2-4a20-8f58-978ec346613e",
5
+ "name": "@kici-dev/orchestrator@0.9.1",
6
+ "documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Forchestrator/0.9.1/2061fac6-aebc-4b57-9d8b-6142fd482a5b",
7
7
  "creationInfo": {
8
- "created": "2026-09-21T08:49:42Z",
8
+ "created": "2026-09-22T02:16:40Z",
9
9
  "creators": [
10
10
  "Tool: kici-sbom-generator"
11
11
  ]
@@ -964,9 +964,9 @@
964
964
  "homepage": "https://ericsmekens.github.io/jsep/tree/master/packages/regex#readme"
965
965
  },
966
966
  {
967
- "SPDXID": "SPDXRef-Package--kici-dev-core-0.9.0",
967
+ "SPDXID": "SPDXRef-Package--kici-dev-core-0.9.1",
968
968
  "name": "@kici-dev/core",
969
- "versionInfo": "0.9.0",
969
+ "versionInfo": "0.9.1",
970
970
  "downloadLocation": "NOASSERTION",
971
971
  "filesAnalyzed": false,
972
972
  "licenseConcluded": "NOASSERTION",
@@ -977,16 +977,16 @@
977
977
  {
978
978
  "referenceCategory": "PACKAGE-MANAGER",
979
979
  "referenceType": "purl",
980
- "referenceLocator": "pkg:npm/%40kici-dev/core@0.9.0"
980
+ "referenceLocator": "pkg:npm/%40kici-dev/core@0.9.1"
981
981
  }
982
982
  ],
983
983
  "description": "Light shared utilities for the KiCI stack (logging, errors, formatting, crypto, zx init, the TypeScript ESM loader hook). No server-side dependencies.",
984
984
  "homepage": "https://kici.dev"
985
985
  },
986
986
  {
987
- "SPDXID": "SPDXRef-Package--kici-dev-engine-0.9.0",
987
+ "SPDXID": "SPDXRef-Package--kici-dev-engine-0.9.1",
988
988
  "name": "@kici-dev/engine",
989
- "versionInfo": "0.9.0",
989
+ "versionInfo": "0.9.1",
990
990
  "downloadLocation": "NOASSERTION",
991
991
  "filesAnalyzed": false,
992
992
  "licenseConcluded": "NOASSERTION",
@@ -997,7 +997,7 @@
997
997
  {
998
998
  "referenceCategory": "PACKAGE-MANAGER",
999
999
  "referenceType": "purl",
1000
- "referenceLocator": "pkg:npm/%40kici-dev/engine@0.9.0"
1000
+ "referenceLocator": "pkg:npm/%40kici-dev/engine@0.9.1"
1001
1001
  }
1002
1002
  ],
1003
1003
  "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.",
@@ -1006,7 +1006,7 @@
1006
1006
  {
1007
1007
  "SPDXID": "SPDXRef-RootPackage",
1008
1008
  "name": "@kici-dev/orchestrator",
1009
- "versionInfo": "0.9.0",
1009
+ "versionInfo": "0.9.1",
1010
1010
  "downloadLocation": "NOASSERTION",
1011
1011
  "filesAnalyzed": false,
1012
1012
  "licenseConcluded": "NOASSERTION",
@@ -1017,16 +1017,16 @@
1017
1017
  {
1018
1018
  "referenceCategory": "PACKAGE-MANAGER",
1019
1019
  "referenceType": "purl",
1020
- "referenceLocator": "pkg:npm/%40kici-dev/orchestrator@0.9.0"
1020
+ "referenceLocator": "pkg:npm/%40kici-dev/orchestrator@0.9.1"
1021
1021
  }
1022
1022
  ],
1023
1023
  "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.",
1024
1024
  "homepage": "https://kici.dev"
1025
1025
  },
1026
1026
  {
1027
- "SPDXID": "SPDXRef-Package--kici-dev-shared-0.9.0",
1027
+ "SPDXID": "SPDXRef-Package--kici-dev-shared-0.9.1",
1028
1028
  "name": "@kici-dev/shared",
1029
- "versionInfo": "0.9.0",
1029
+ "versionInfo": "0.9.1",
1030
1030
  "downloadLocation": "NOASSERTION",
1031
1031
  "filesAnalyzed": false,
1032
1032
  "licenseConcluded": "NOASSERTION",
@@ -1037,7 +1037,7 @@
1037
1037
  {
1038
1038
  "referenceCategory": "PACKAGE-MANAGER",
1039
1039
  "referenceType": "purl",
1040
- "referenceLocator": "pkg:npm/%40kici-dev/shared@0.9.0"
1040
+ "referenceLocator": "pkg:npm/%40kici-dev/shared@0.9.1"
1041
1041
  }
1042
1042
  ],
1043
1043
  "description": "Shared utilities for the KiCI CI/CD stack — logging, zx setup, crypto, telemetry, health and metrics routes. No business logic.",
@@ -7676,62 +7676,62 @@
7676
7676
  "relationshipType": "DEPENDS_ON"
7677
7677
  },
7678
7678
  {
7679
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.0",
7679
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.1",
7680
7680
  "relatedSpdxElement": "SPDXRef-Package-oxc-transform-0.150.0",
7681
7681
  "relationshipType": "DEPENDS_ON"
7682
7682
  },
7683
7683
  {
7684
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.0",
7684
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.1",
7685
7685
  "relatedSpdxElement": "SPDXRef-Package-picocolors-1.1.1",
7686
7686
  "relationshipType": "DEPENDS_ON"
7687
7687
  },
7688
7688
  {
7689
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.0",
7689
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.1",
7690
7690
  "relatedSpdxElement": "SPDXRef-Package-winston-daily-rotate-file-5.0.0",
7691
7691
  "relationshipType": "DEPENDS_ON"
7692
7692
  },
7693
7693
  {
7694
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.0",
7694
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.1",
7695
7695
  "relatedSpdxElement": "SPDXRef-Package-winston-3.19.0",
7696
7696
  "relationshipType": "DEPENDS_ON"
7697
7697
  },
7698
7698
  {
7699
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.0",
7699
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.1",
7700
7700
  "relatedSpdxElement": "SPDXRef-Package-zod-4.6.5",
7701
7701
  "relationshipType": "DEPENDS_ON"
7702
7702
  },
7703
7703
  {
7704
- "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.0",
7704
+ "spdxElementId": "SPDXRef-Package--kici-dev-core-0.9.1",
7705
7705
  "relatedSpdxElement": "SPDXRef-Package-zx-8.8.5",
7706
7706
  "relationshipType": "DEPENDS_ON"
7707
7707
  },
7708
7708
  {
7709
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.0",
7709
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.1",
7710
7710
  "relatedSpdxElement": "SPDXRef-Package-jose-6.2.12",
7711
7711
  "relationshipType": "DEPENDS_ON"
7712
7712
  },
7713
7713
  {
7714
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.0",
7714
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.1",
7715
7715
  "relatedSpdxElement": "SPDXRef-Package-jsonpath-plus-10.4.0",
7716
7716
  "relationshipType": "DEPENDS_ON"
7717
7717
  },
7718
7718
  {
7719
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.0",
7719
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.1",
7720
7720
  "relatedSpdxElement": "SPDXRef-Package-picomatch-4.0.7",
7721
7721
  "relationshipType": "DEPENDS_ON"
7722
7722
  },
7723
7723
  {
7724
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.0",
7724
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.1",
7725
7725
  "relatedSpdxElement": "SPDXRef-Package-safe-regex-2.1.1",
7726
7726
  "relationshipType": "DEPENDS_ON"
7727
7727
  },
7728
7728
  {
7729
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.0",
7729
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.1",
7730
7730
  "relatedSpdxElement": "SPDXRef-Package-yaml-2.9.1",
7731
7731
  "relationshipType": "DEPENDS_ON"
7732
7732
  },
7733
7733
  {
7734
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.0",
7734
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.9.1",
7735
7735
  "relatedSpdxElement": "SPDXRef-Package-zod-4.6.5",
7736
7736
  "relationshipType": "DEPENDS_ON"
7737
7737
  },
@@ -7767,12 +7767,12 @@
7767
7767
  },
7768
7768
  {
7769
7769
  "spdxElementId": "SPDXRef-RootPackage",
7770
- "relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.9.0",
7770
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.9.1",
7771
7771
  "relationshipType": "DEPENDS_ON"
7772
7772
  },
7773
7773
  {
7774
7774
  "spdxElementId": "SPDXRef-RootPackage",
7775
- "relatedSpdxElement": "SPDXRef-Package--kici-dev-shared-0.9.0",
7775
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-shared-0.9.1",
7776
7776
  "relationshipType": "DEPENDS_ON"
7777
7777
  },
7778
7778
  {
@@ -7881,117 +7881,117 @@
7881
7881
  "relationshipType": "DEPENDS_ON"
7882
7882
  },
7883
7883
  {
7884
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7884
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7885
7885
  "relatedSpdxElement": "SPDXRef-Package--aws-sdk-client-s3-3.1135.0",
7886
7886
  "relationshipType": "DEPENDS_ON"
7887
7887
  },
7888
7888
  {
7889
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7890
- "relatedSpdxElement": "SPDXRef-Package--kici-dev-core-0.9.0",
7889
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7890
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-core-0.9.1",
7891
7891
  "relationshipType": "DEPENDS_ON"
7892
7892
  },
7893
7893
  {
7894
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7895
- "relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.9.0",
7894
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7895
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.9.1",
7896
7896
  "relationshipType": "DEPENDS_ON"
7897
7897
  },
7898
7898
  {
7899
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7899
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7900
7900
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-api-1.9.1",
7901
7901
  "relationshipType": "DEPENDS_ON"
7902
7902
  },
7903
7903
  {
7904
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7904
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7905
7905
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-exporter-metrics-otlp-http-0.222.0",
7906
7906
  "relationshipType": "DEPENDS_ON"
7907
7907
  },
7908
7908
  {
7909
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7909
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7910
7910
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-exporter-prometheus-0.222.0",
7911
7911
  "relationshipType": "DEPENDS_ON"
7912
7912
  },
7913
7913
  {
7914
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7914
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7915
7915
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-exporter-trace-otlp-http-0.222.0",
7916
7916
  "relationshipType": "DEPENDS_ON"
7917
7917
  },
7918
7918
  {
7919
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7919
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7920
7920
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-instrumentation-runtime-node-0.35.0",
7921
7921
  "relationshipType": "DEPENDS_ON"
7922
7922
  },
7923
7923
  {
7924
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7924
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7925
7925
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-resources-2.11.0",
7926
7926
  "relationshipType": "DEPENDS_ON"
7927
7927
  },
7928
7928
  {
7929
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7929
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7930
7930
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-sdk-node-0.222.0",
7931
7931
  "relationshipType": "DEPENDS_ON"
7932
7932
  },
7933
7933
  {
7934
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7934
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7935
7935
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-semantic-conventions-1.43.0",
7936
7936
  "relationshipType": "DEPENDS_ON"
7937
7937
  },
7938
7938
  {
7939
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7939
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7940
7940
  "relatedSpdxElement": "SPDXRef-Package-archiver-8.0.0",
7941
7941
  "relationshipType": "DEPENDS_ON"
7942
7942
  },
7943
7943
  {
7944
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7944
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7945
7945
  "relatedSpdxElement": "SPDXRef-Package-diff-9.0.0",
7946
7946
  "relationshipType": "DEPENDS_ON"
7947
7947
  },
7948
7948
  {
7949
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7949
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7950
7950
  "relatedSpdxElement": "SPDXRef-Package-hono-4.13.7",
7951
7951
  "relationshipType": "DEPENDS_ON"
7952
7952
  },
7953
7953
  {
7954
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7954
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7955
7955
  "relatedSpdxElement": "SPDXRef-Package-kysely-0.29.4",
7956
7956
  "relationshipType": "DEPENDS_ON"
7957
7957
  },
7958
7958
  {
7959
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7959
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7960
7960
  "relatedSpdxElement": "SPDXRef-Package-oxc-transform-0.150.0",
7961
7961
  "relationshipType": "DEPENDS_ON"
7962
7962
  },
7963
7963
  {
7964
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7964
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7965
7965
  "relatedSpdxElement": "SPDXRef-Package-pg-8.23.0",
7966
7966
  "relationshipType": "DEPENDS_ON"
7967
7967
  },
7968
7968
  {
7969
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7969
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7970
7970
  "relatedSpdxElement": "SPDXRef-Package-picocolors-1.1.1",
7971
7971
  "relationshipType": "DEPENDS_ON"
7972
7972
  },
7973
7973
  {
7974
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7974
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7975
7975
  "relatedSpdxElement": "SPDXRef-Package-winston-daily-rotate-file-5.0.0",
7976
7976
  "relationshipType": "DEPENDS_ON"
7977
7977
  },
7978
7978
  {
7979
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7979
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7980
7980
  "relatedSpdxElement": "SPDXRef-Package-winston-3.19.0",
7981
7981
  "relationshipType": "DEPENDS_ON"
7982
7982
  },
7983
7983
  {
7984
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7984
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7985
7985
  "relatedSpdxElement": "SPDXRef-Package-yaml-2.9.1",
7986
7986
  "relationshipType": "DEPENDS_ON"
7987
7987
  },
7988
7988
  {
7989
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7989
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7990
7990
  "relatedSpdxElement": "SPDXRef-Package-zod-4.6.5",
7991
7991
  "relationshipType": "DEPENDS_ON"
7992
7992
  },
7993
7993
  {
7994
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.0",
7994
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.9.1",
7995
7995
  "relatedSpdxElement": "SPDXRef-Package-zx-8.8.5",
7996
7996
  "relationshipType": "DEPENDS_ON"
7997
7997
  },