@kici-dev/orchestrator 0.1.2 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/agent/dispatcher.d.ts +26 -0
  2. package/dist/agent/ownership-tracker.d.ts +45 -3
  3. package/dist/audit/access-log.d.ts +7 -0
  4. package/dist/cli/api-client.d.ts +14 -0
  5. package/dist/cli/commands/cluster-name.d.ts +18 -0
  6. package/dist/cli/commands/db.d.ts +9 -6
  7. package/dist/cli/commands/org-settings.d.ts +2 -1
  8. package/dist/cli/commands/shared/secret-input.d.ts +46 -0
  9. package/dist/cli/commands/variable.d.ts +18 -0
  10. package/dist/cli/service/index.d.ts +1 -0
  11. package/dist/cli/service/launchd.d.ts +19 -0
  12. package/dist/cli/service/privilege.d.ts +21 -0
  13. package/dist/cli/wizard/orchestrator-wizard.d.ts +4 -2
  14. package/dist/cli.js +1056 -236
  15. package/dist/cluster/join-token.d.ts +21 -13
  16. package/dist/cluster/peer-client.d.ts +9 -0
  17. package/dist/config/cluster-id.d.ts +23 -0
  18. package/dist/config/cluster-name.d.ts +39 -0
  19. package/dist/config.d.ts +6 -0
  20. package/dist/dashboard/handler.d.ts +54 -2
  21. package/dist/db/migrations/019_generic_sources_change_notify.d.ts +25 -0
  22. package/dist/db/migrations/020_org_settings_dashboard_write_policy.d.ts +17 -0
  23. package/dist/db/migrations/021_check_run_tracking.d.ts +26 -0
  24. package/dist/db/migrations/022_scaler_manager_state.d.ts +29 -0
  25. package/dist/db/migrations/023_dispatch_queue_recovery_deadline.d.ts +26 -0
  26. package/dist/db/types.d.ts +137 -0
  27. package/dist/events/event-store.d.ts +9 -2
  28. package/dist/events/trust-store.d.ts +7 -0
  29. package/dist/events/types.d.ts +33 -0
  30. package/dist/metrics/scheduled-jobs.d.ts +26 -5
  31. package/dist/orchestrator-core.d.ts +7 -0
  32. package/dist/policy/dashboard-write-policy.d.ts +115 -0
  33. package/dist/queue/job-queue.d.ts +54 -1
  34. package/dist/reporting/check-run-tracking-store.d.ts +133 -0
  35. package/dist/reporting/commit-status.d.ts +87 -9
  36. package/dist/routes/admin-access-log.d.ts +1 -0
  37. package/dist/routes/admin-backends.d.ts +9 -1
  38. package/dist/routes/admin-cluster-name.d.ts +50 -0
  39. package/dist/routes/admin-db.d.ts +9 -1
  40. package/dist/routes/admin-environments.d.ts +10 -6
  41. package/dist/routes/admin-event-dlq.d.ts +1 -0
  42. package/dist/routes/admin-event-log.d.ts +1 -0
  43. package/dist/routes/admin-events.d.ts +19 -0
  44. package/dist/routes/admin-maintenance.d.ts +9 -1
  45. package/dist/routes/admin-org-settings.d.ts +10 -1
  46. package/dist/routes/admin-queue-execution.d.ts +1 -0
  47. package/dist/routes/admin-registrations.d.ts +1 -0
  48. package/dist/routes/admin-runs.d.ts +1 -0
  49. package/dist/routes/admin-scheduled-jobs.d.ts +1 -0
  50. package/dist/routes/admin-sources.d.ts +9 -1
  51. package/dist/routes/admin.d.ts +8 -0
  52. package/dist/scaler/manager.d.ts +38 -0
  53. package/dist/scaler/scaler-state-store.d.ts +102 -0
  54. package/dist/secrets/routing-key-scope.d.ts +43 -0
  55. package/dist/server.js +9846 -6884
  56. package/dist/stale-detector/stale-run-detector.d.ts +14 -2
  57. package/dist/standalone.js +6120 -3838
  58. package/dist/webhook/generic-sources-listener.d.ts +74 -0
  59. package/dist/webhook/register-source-bundle.d.ts +57 -0
  60. package/dist/ws/dashboard-backends-handler.d.ts +14 -0
  61. package/dist/ws/dashboard-env-handler.d.ts +7 -0
  62. package/dist/ws/dashboard-global-workflows-handler.d.ts +6 -0
  63. package/dist/ws/dashboard-registrations-handler.d.ts +7 -0
  64. package/dist/ws/platform-client.d.ts +30 -1
  65. package/package.json +3 -3
  66. package/sbom.spdx.json +40 -35
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Cross-peer propagation of generic-webhook-source registration changes.
3
+ *
4
+ * Sister to the GitHub-app `SourceManager`
5
+ * (`packages/orchestrator/src/sources/source-manager.ts`), which owns the
6
+ * `sources_change` channel. This listener owns `generic_sources_change`
7
+ * — the channel the migration-019 trigger emits on every INSERT, UPDATE,
8
+ * or DELETE of a `generic_webhook_sources` row.
9
+ *
10
+ * On NOTIFY:
11
+ * 1. Queue the affected `routing_key` (the channel payload).
12
+ * 2. Debounce 200 ms so rapid edits coalesce into one drain pass.
13
+ * 3. For each queued routing_key:
14
+ * - Re-query `GenericSourceManager.getByRoutingKey()`. The query
15
+ * already filters out soft-deleted (`deleted_at IS NOT NULL`)
16
+ * and disabled (`enabled = false`) rows.
17
+ * - If the row is gone (DELETE, soft-delete, or disable):
18
+ * `providerRegistry.unregister(routingKey)`.
19
+ * - Otherwise: `registerProviderBundleForSource(row, deps)`
20
+ * (idempotent — a second call replaces the prior bundle).
21
+ *
22
+ * The listener does NOT own the `ProviderRegistry` — it mutates the
23
+ * shared instance the rest of the orchestrator dispatches against. This
24
+ * differs from `SourceManager`, which rebuilds a fresh registry on
25
+ * every reload and asks the caller to swap the reference. The reason is
26
+ * shared ownership: the GitHub-app and generic-webhook sources both
27
+ * populate the same `ProviderRegistry` instance, so a wholesale rebuild
28
+ * by one of them would clobber the other's bundles.
29
+ *
30
+ * The admin POST/PATCH/DELETE handlers in `routes/admin-events.ts` ALSO
31
+ * mutate the registry inline so the API response is self-consistent on
32
+ * the issuing peer (a webhook fired immediately after a 200 OK sees the
33
+ * change without waiting for the NOTIFY round-trip). The local NOTIFY
34
+ * fires too — `registerByRoutingKey` is idempotent, so the redundant
35
+ * apply is harmless.
36
+ */
37
+ import type pg from 'pg';
38
+ import type { GenericSourceManager } from './generic-sources.js';
39
+ import type { ProviderRegistry } from '../provider-registry.js';
40
+ import type { AppConfig } from '../config.js';
41
+ import type { SecretResolver } from '../secrets/secret-resolver.js';
42
+ export interface GenericSourcesChangeListenerOptions {
43
+ /** Raw pg pool — a dedicated PoolClient is checked out for LISTEN. */
44
+ pool: pg.Pool;
45
+ /** Used to re-query the affected row by routing_key on each NOTIFY. */
46
+ sourceManager: GenericSourceManager;
47
+ /** Mutated in place — registerByRoutingKey / unregister. */
48
+ providerRegistry: ProviderRegistry;
49
+ /** Gates internal-provider bundle registration in the helper. */
50
+ config: AppConfig;
51
+ /** Required for universal-git source rows; null is acceptable on
52
+ * peers that cannot serve them. */
53
+ secretResolver: SecretResolver | null;
54
+ /** Coalesce window for rapid NOTIFYs against the same row. Default 200 ms. */
55
+ debounceMs?: number;
56
+ }
57
+ export declare class GenericSourcesChangeListener {
58
+ private readonly opts;
59
+ private client;
60
+ private readonly pending;
61
+ private debounceTimer;
62
+ private readonly debounceMs;
63
+ constructor(opts: GenericSourcesChangeListenerOptions);
64
+ /** Open the dedicated client and subscribe. Cold-boot bundle
65
+ * registration is handled by the orchestrator-core startup loop
66
+ * via the same helper; this listener only services warm-path
67
+ * NOTIFYs. */
68
+ start(): Promise<void>;
69
+ stop(): Promise<void>;
70
+ private scheduleDrain;
71
+ /** Visible for tests — drain the queued routing_keys synchronously. */
72
+ drain(): Promise<void>;
73
+ }
74
+ //# sourceMappingURL=generic-sources-listener.d.ts.map
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Per-source provider-bundle registration.
3
+ *
4
+ * Three call sites need this logic; the helper exists so they don't
5
+ * each carry a copy of the `provider_type` / `git_config` dispatch:
6
+ *
7
+ * 1. `orchestrator-core.ts` startup, where it loops over every source
8
+ * already in `generic_webhook_sources` and registers the matching
9
+ * provider bundle into `ProviderRegistry`. Cold-boot path.
10
+ * 2. The admin HTTP handlers in `admin-events.ts` —
11
+ * `POST /api/v1/admin/generic-sources` and the matching PATCH /
12
+ * DELETE / enable / disable endpoints. Calling the helper inline
13
+ * makes the API response self-consistent on the issuing peer (a
14
+ * webhook fired immediately after the 200 reaches the right
15
+ * normalizer without waiting for the `pg_notify` round-trip).
16
+ * 3. `GenericSourcesChangeListener` (`webhook/generic-sources-listener.ts`),
17
+ * which listens for the migration-019 `pg_notify('generic_sources_change',
18
+ * routing_key)` and applies the change on every other peer in the
19
+ * HA cluster.
20
+ *
21
+ * `registerProviderBundleForSource` is the single source of truth. It
22
+ * dispatches on `row.provider_type` and `row.git_config` so callers
23
+ * don't have to know which bundle to build — they hand over the row +
24
+ * the orchestrator's already-instantiated registry / config /
25
+ * secret-resolver and we do the right thing.
26
+ *
27
+ * Failure semantics match the startup behaviour: internal-only-but-
28
+ * unservable peers log + skip (no throw); universal-git config errors
29
+ * bump the per-row metric + log but never propagate. The caller can
30
+ * assume "returns normally" means "the right thing happened or we
31
+ * recorded why it didn't".
32
+ */
33
+ import type { AppConfig } from '../config.js';
34
+ import type { ProviderRegistry } from '../provider-registry.js';
35
+ import type { SecretResolver } from '../secrets/secret-resolver.js';
36
+ import type { GenericWebhookSource } from '../db/types.js';
37
+ export interface RegisterSourceBundleDeps {
38
+ providerRegistry: ProviderRegistry;
39
+ config: AppConfig;
40
+ /** Required for universal-git source rows. Null is allowed; rows that
41
+ * carry `git_config` will be skipped with a metric bump. */
42
+ secretResolver: SecretResolver | null;
43
+ }
44
+ /**
45
+ * Register the per-routing-key provider bundle a source row needs.
46
+ *
47
+ * - `provider_type='internal'`: registers an `InternalWebhookNormalizer`
48
+ * bundle when the peer can serve it (gated on
49
+ * `internalProviderRepoPath` per `canServeGenericProviderType`).
50
+ * - `git_config IS NOT NULL`: registers a universal-git bundle.
51
+ * - everything else: no-op — the default `'generic'` bundle handles it.
52
+ *
53
+ * Idempotent under `ProviderRegistry.registerByRoutingKey` semantics: a
54
+ * second call with the same routing key replaces the prior bundle.
55
+ */
56
+ export declare function registerProviderBundleForSource(row: GenericWebhookSource, deps: RegisterSourceBundleDeps): void;
57
+ //# sourceMappingURL=register-source-bundle.d.ts.map
@@ -2,12 +2,16 @@ import type { BackendSyncManager, DashboardPlatformToOrchMessage } from '@kici-d
2
2
  import type { BackendRegistry } from '../secrets/backend-registry.js';
3
3
  import type { BackendHealthChecker } from '../secrets/backend-health.js';
4
4
  import type { AccessLogWriter } from '../audit/access-log.js';
5
+ import type { Kysely } from 'kysely';
6
+ import type { Database } from '../db/types.js';
5
7
  interface DashboardBackendsHandlerDeps {
6
8
  /** Send a response message back to Platform over the WS connection. */
7
9
  send: (msg: unknown) => void;
8
10
  registry: BackendRegistry;
9
11
  healthChecker: BackendHealthChecker;
10
12
  syncManager?: BackendSyncManager;
13
+ /** Database — required for dashboard-write policy lookups. */
14
+ db: Kysely<Database>;
11
15
  /** Access log writer — records one row per read / mutation with actor attribution. */
12
16
  accessLog?: AccessLogWriter;
13
17
  /** Org ID for access_log rows (null when the orchestrator isn't org-scoped). */
@@ -31,6 +35,16 @@ export declare class DashboardBackendsHandler {
31
35
  * the single tenant org from the `sources` / `generic_webhook_sources` table.
32
36
  */
33
37
  setOrgContext(orgId: string | null, routingKey: string | null): void;
38
+ /**
39
+ * Defense-in-depth dashboard-write policy gate. Returns true when the
40
+ * operation is allowed and the caller should proceed. Returns false
41
+ * when the policy is disabled — also records a `denied` access_log row
42
+ * and emits a structured `operation_disabled` envelope on the WS.
43
+ *
44
+ * Fails open when no org is bound — the orch hasn't resolved a
45
+ * customer yet, so there's nothing to look up.
46
+ */
47
+ private enforcePolicy;
34
48
  /**
35
49
  * Write an access_log row for a handler invocation. Best-effort; the writer
36
50
  * swallows failures.
@@ -59,6 +59,13 @@ export declare class DashboardEnvHandler {
59
59
  setOrgId(orgId: string): void;
60
60
  /** Update the routing key bound to access_log rows. */
61
61
  setRoutingKey(routingKey: string | null): void;
62
+ /**
63
+ * Defense-in-depth dashboard-write policy gate. Returns true when the
64
+ * operation is allowed and the caller should proceed. Returns false when
65
+ * the policy is disabled — also records a `denied` access_log row and
66
+ * sends a structured `operation_disabled` envelope back to Platform.
67
+ */
68
+ private enforcePolicy;
62
69
  /**
63
70
  * Write an access_log row for a handler invocation. Uses the handler's
64
71
  * bound orgId + routingKey, the msg.actor principal, and the handler-
@@ -38,6 +38,12 @@ export declare class DashboardGlobalWorkflowsHandler {
38
38
  constructor(deps: DashboardGlobalWorkflowsHandlerDeps);
39
39
  /** Update the customer / org id this handler operates on. */
40
40
  setOrgId(customerId: string | null): void;
41
+ /**
42
+ * Defense-in-depth dashboard-write policy gate. Returns true when the
43
+ * operation is allowed; false (with a structured `operation_disabled`
44
+ * envelope and a `denied` access_log row) when policy says no.
45
+ */
46
+ private enforcePolicy;
41
47
  /**
42
48
  * Write an access_log row for a handler invocation. Best-effort; the writer
43
49
  * swallows failures.
@@ -57,6 +57,13 @@ export declare class DashboardRegistrationsHandler {
57
57
  setOrgId(orgId: string): void;
58
58
  /** Update the routing key bound to access_log rows. */
59
59
  setRoutingKey(routingKey: string | null): void;
60
+ /**
61
+ * Defense-in-depth dashboard-write policy gate. Returns true when the
62
+ * operation is allowed and the caller should proceed. Returns false
63
+ * when the policy is disabled — also records a `denied` access_log row
64
+ * and emits a structured `operation_disabled` envelope on the WS.
65
+ */
66
+ private enforcePolicy;
60
67
  /**
61
68
  * Write an access_log row for a handler invocation. Uses the handler's
62
69
  * bound orgId + routingKey, the msg.actor principal, and the handler-
@@ -36,6 +36,20 @@ export interface PlatformClientOptions {
36
36
  providerSources?: ProviderSource[];
37
37
  /** Orchestrator cluster instance ID (sent in source.register for peer correlation). */
38
38
  instanceId?: string;
39
+ /**
40
+ * Human-friendly cluster name resolved on orch boot
41
+ * (`cluster_meta.cluster_name`). Sent in source.register so Platform
42
+ * can route per-orch dashboard requests by this identifier.
43
+ */
44
+ clusterName?: string;
45
+ /**
46
+ * Orchestrator DB identifier (UUID, seeded by migration 001 in
47
+ * `cluster_meta` key `'cluster_id'`). Sent in source.register so
48
+ * Platform can warn when two unrelated clusters in the same org
49
+ * accidentally share a `clusterName`. HA siblings share the same orch
50
+ * DB and therefore the same `clusterId`.
51
+ */
52
+ clusterId?: string;
39
53
  /** Reachable address for peer-to-peer connections (from KICI_CLUSTER_ADDRESS env var). Null if not configured. */
40
54
  address?: string | null;
41
55
  /** Orchestrator version string (e.g. "0.0.1"). Sent in source.register for diagnostics. */
@@ -141,6 +155,8 @@ export declare class PlatformClient {
141
155
  private readonly onWebhookRelay;
142
156
  private providerSources;
143
157
  private readonly instanceId?;
158
+ private readonly clusterName?;
159
+ private readonly clusterId?;
144
160
  private readonly address?;
145
161
  private readonly version?;
146
162
  private readonly mode?;
@@ -166,7 +182,7 @@ export declare class PlatformClient {
166
182
  private readonly onTrustPolicyUpdate?;
167
183
  private readonly onStaleCheckrunCleanup?;
168
184
  private readonly onJoinRequest?;
169
- private readonly orchCapabilities;
185
+ private orchCapabilities;
170
186
  private readonly onVerifyInbound?;
171
187
  private readonly relayBuffer;
172
188
  /**
@@ -184,6 +200,19 @@ export declare class PlatformClient {
184
200
  */
185
201
  getOrgPublicAlias(): string | undefined;
186
202
  constructor(options: PlatformClientOptions);
203
+ /**
204
+ * Merge `updates` into the stored orch capabilities and broadcast the
205
+ * full set to Platform via `orch.capabilities.update`. Buffers via
206
+ * `send()` when not yet authenticated. The next `auth.request` will
207
+ * also carry the merged capabilities, so a reconnect-followed-by-
208
+ * runtime-broadcast still ends Platform in the correct cache state.
209
+ */
210
+ broadcastCapabilities(updates: Partial<OrchCapabilities>): void;
211
+ /**
212
+ * Current merged orchestrator capabilities. Read-only view used by
213
+ * tests and diagnostics; mutate via `broadcastCapabilities`.
214
+ */
215
+ getCapabilities(): OrchCapabilities;
187
216
  /** Current connection state. */
188
217
  get state(): ConnectionState;
189
218
  /** Number of messages currently buffered. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kici-dev/orchestrator",
3
- "version": "0.1.2",
3
+ "version": "0.1.5",
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
  "kici",
@@ -80,8 +80,8 @@
80
80
  "ws": "^8.20.0",
81
81
  "yaml": "^2.8.3",
82
82
  "zod": "^4.3.6",
83
- "@kici-dev/engine": "0.1.2",
84
- "@kici-dev/shared": "0.1.2"
83
+ "@kici-dev/engine": "0.1.5",
84
+ "@kici-dev/shared": "0.1.5"
85
85
  },
86
86
  "kici": {
87
87
  "metrics": {
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.2",
6
- "documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Forchestrator/0.1.2/1d9e1ce0-5863-4254-ad10-52256d934202",
5
+ "name": "@kici-dev/orchestrator@0.1.5",
6
+ "documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Forchestrator/0.1.5/f7580817-f3f2-47bc-964e-be4abe428a71",
7
7
  "creationInfo": {
8
- "created": "2026-05-15T11:44:11Z",
8
+ "created": "2026-05-25T13:20:51Z",
9
9
  "creators": [
10
10
  "Tool: kici-sbom-generator"
11
11
  ]
@@ -1477,9 +1477,9 @@
1477
1477
  "homepage": "https://ericsmekens.github.io/jsep/tree/master/packages/regex#readme"
1478
1478
  },
1479
1479
  {
1480
- "SPDXID": "SPDXRef-Package--kici-dev-engine-0.1.2",
1480
+ "SPDXID": "SPDXRef-Package--kici-dev-engine-0.1.5",
1481
1481
  "name": "@kici-dev/engine",
1482
- "versionInfo": "0.1.2",
1482
+ "versionInfo": "0.1.5",
1483
1483
  "downloadLocation": "NOASSERTION",
1484
1484
  "filesAnalyzed": false,
1485
1485
  "licenseConcluded": "NOASSERTION",
@@ -1490,7 +1490,7 @@
1490
1490
  {
1491
1491
  "referenceCategory": "PACKAGE-MANAGER",
1492
1492
  "referenceType": "purl",
1493
- "referenceLocator": "pkg:npm/%40kici-dev/engine@0.1.2"
1493
+ "referenceLocator": "pkg:npm/%40kici-dev/engine@0.1.5"
1494
1494
  }
1495
1495
  ],
1496
1496
  "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.",
@@ -1499,7 +1499,7 @@
1499
1499
  {
1500
1500
  "SPDXID": "SPDXRef-RootPackage",
1501
1501
  "name": "@kici-dev/orchestrator",
1502
- "versionInfo": "0.1.2",
1502
+ "versionInfo": "0.1.5",
1503
1503
  "downloadLocation": "NOASSERTION",
1504
1504
  "filesAnalyzed": false,
1505
1505
  "licenseConcluded": "NOASSERTION",
@@ -1510,16 +1510,16 @@
1510
1510
  {
1511
1511
  "referenceCategory": "PACKAGE-MANAGER",
1512
1512
  "referenceType": "purl",
1513
- "referenceLocator": "pkg:npm/%40kici-dev/orchestrator@0.1.2"
1513
+ "referenceLocator": "pkg:npm/%40kici-dev/orchestrator@0.1.5"
1514
1514
  }
1515
1515
  ],
1516
1516
  "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.",
1517
1517
  "homepage": "https://kici.dev"
1518
1518
  },
1519
1519
  {
1520
- "SPDXID": "SPDXRef-Package--kici-dev-shared-0.1.2",
1520
+ "SPDXID": "SPDXRef-Package--kici-dev-shared-0.1.5",
1521
1521
  "name": "@kici-dev/shared",
1522
- "versionInfo": "0.1.2",
1522
+ "versionInfo": "0.1.5",
1523
1523
  "downloadLocation": "NOASSERTION",
1524
1524
  "filesAnalyzed": false,
1525
1525
  "licenseConcluded": "NOASSERTION",
@@ -1530,7 +1530,7 @@
1530
1530
  {
1531
1531
  "referenceCategory": "PACKAGE-MANAGER",
1532
1532
  "referenceType": "purl",
1533
- "referenceLocator": "pkg:npm/%40kici-dev/shared@0.1.2"
1533
+ "referenceLocator": "pkg:npm/%40kici-dev/shared@0.1.5"
1534
1534
  }
1535
1535
  ],
1536
1536
  "description": "Shared utilities for the KiCI CI/CD stack — logging, zx setup, crypto, telemetry, health and metrics routes. No business logic.",
@@ -10682,17 +10682,17 @@
10682
10682
  "relationshipType": "DEPENDS_ON"
10683
10683
  },
10684
10684
  {
10685
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.2",
10685
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.5",
10686
10686
  "relatedSpdxElement": "SPDXRef-Package-jsonpath-plus-10.4.0",
10687
10687
  "relationshipType": "DEPENDS_ON"
10688
10688
  },
10689
10689
  {
10690
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.2",
10690
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.5",
10691
10691
  "relatedSpdxElement": "SPDXRef-Package-picomatch-4.0.4",
10692
10692
  "relationshipType": "DEPENDS_ON"
10693
10693
  },
10694
10694
  {
10695
- "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.2",
10695
+ "spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.5",
10696
10696
  "relatedSpdxElement": "SPDXRef-Package-zod-4.3.6",
10697
10697
  "relationshipType": "DEPENDS_ON"
10698
10698
  },
@@ -10728,12 +10728,12 @@
10728
10728
  },
10729
10729
  {
10730
10730
  "spdxElementId": "SPDXRef-RootPackage",
10731
- "relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.1.2",
10731
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.1.5",
10732
10732
  "relationshipType": "DEPENDS_ON"
10733
10733
  },
10734
10734
  {
10735
10735
  "spdxElementId": "SPDXRef-RootPackage",
10736
- "relatedSpdxElement": "SPDXRef-Package--kici-dev-shared-0.1.2",
10736
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-shared-0.1.5",
10737
10737
  "relationshipType": "DEPENDS_ON"
10738
10738
  },
10739
10739
  {
@@ -10837,97 +10837,102 @@
10837
10837
  "relationshipType": "DEPENDS_ON"
10838
10838
  },
10839
10839
  {
10840
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10840
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10841
10841
  "relatedSpdxElement": "SPDXRef-Package--aws-sdk-client-s3-3.1038.0",
10842
10842
  "relationshipType": "DEPENDS_ON"
10843
10843
  },
10844
10844
  {
10845
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10845
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10846
10846
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-api-1.9.1",
10847
10847
  "relationshipType": "DEPENDS_ON"
10848
10848
  },
10849
10849
  {
10850
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10850
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10851
10851
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-exporter-metrics-otlp-http-0.217.0",
10852
10852
  "relationshipType": "DEPENDS_ON"
10853
10853
  },
10854
10854
  {
10855
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10855
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10856
10856
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-exporter-prometheus-0.217.0",
10857
10857
  "relationshipType": "DEPENDS_ON"
10858
10858
  },
10859
10859
  {
10860
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10860
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10861
10861
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-exporter-trace-otlp-http-0.217.0",
10862
10862
  "relationshipType": "DEPENDS_ON"
10863
10863
  },
10864
10864
  {
10865
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10865
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10866
10866
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-instrumentation-runtime-node-0.28.0",
10867
10867
  "relationshipType": "DEPENDS_ON"
10868
10868
  },
10869
10869
  {
10870
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10870
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10871
10871
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-resources-2.7.0",
10872
10872
  "relationshipType": "DEPENDS_ON"
10873
10873
  },
10874
10874
  {
10875
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10875
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10876
10876
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-sdk-node-0.217.0",
10877
10877
  "relationshipType": "DEPENDS_ON"
10878
10878
  },
10879
10879
  {
10880
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10880
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10881
10881
  "relatedSpdxElement": "SPDXRef-Package--opentelemetry-semantic-conventions-1.40.0",
10882
10882
  "relationshipType": "DEPENDS_ON"
10883
10883
  },
10884
10884
  {
10885
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10885
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10886
10886
  "relatedSpdxElement": "SPDXRef-Package-diff-7.0.0",
10887
10887
  "relationshipType": "DEPENDS_ON"
10888
10888
  },
10889
10889
  {
10890
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10890
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10891
10891
  "relatedSpdxElement": "SPDXRef-Package-hono-4.12.18",
10892
10892
  "relationshipType": "DEPENDS_ON"
10893
10893
  },
10894
10894
  {
10895
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10895
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10896
10896
  "relatedSpdxElement": "SPDXRef-Package-kysely-0.29.0",
10897
10897
  "relationshipType": "DEPENDS_ON"
10898
10898
  },
10899
10899
  {
10900
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10900
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10901
10901
  "relatedSpdxElement": "SPDXRef-Package-oxc-transform-0.128.0",
10902
10902
  "relationshipType": "DEPENDS_ON"
10903
10903
  },
10904
10904
  {
10905
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10905
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10906
10906
  "relatedSpdxElement": "SPDXRef-Package-pg-8.20.0",
10907
10907
  "relationshipType": "DEPENDS_ON"
10908
10908
  },
10909
10909
  {
10910
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10910
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10911
10911
  "relatedSpdxElement": "SPDXRef-Package-picocolors-1.1.1",
10912
10912
  "relationshipType": "DEPENDS_ON"
10913
10913
  },
10914
10914
  {
10915
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10915
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10916
10916
  "relatedSpdxElement": "SPDXRef-Package-winston-daily-rotate-file-5.0.0",
10917
10917
  "relationshipType": "DEPENDS_ON"
10918
10918
  },
10919
10919
  {
10920
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10920
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10921
10921
  "relatedSpdxElement": "SPDXRef-Package-winston-3.19.0",
10922
10922
  "relationshipType": "DEPENDS_ON"
10923
10923
  },
10924
10924
  {
10925
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10925
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10926
+ "relatedSpdxElement": "SPDXRef-Package-yaml-2.8.3",
10927
+ "relationshipType": "DEPENDS_ON"
10928
+ },
10929
+ {
10930
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10926
10931
  "relatedSpdxElement": "SPDXRef-Package-zod-4.3.6",
10927
10932
  "relationshipType": "DEPENDS_ON"
10928
10933
  },
10929
10934
  {
10930
- "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.2",
10935
+ "spdxElementId": "SPDXRef-Package--kici-dev-shared-0.1.5",
10931
10936
  "relatedSpdxElement": "SPDXRef-Package-zx-8.8.5",
10932
10937
  "relationshipType": "DEPENDS_ON"
10933
10938
  },