@kici-dev/orchestrator 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/shared/container-agent-image-check.d.ts +67 -0
- package/dist/cli.js +159 -16
- package/dist/server.js +21 -18
- package/dist/standalone.js +21 -18
- package/installer-image-digests.json +3 -3
- package/package.json +5 -5
- package/sbom.spdx.json +53 -53
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The container-scaler agent image check `kici-admin orchestrator upgrade`
|
|
3
|
+
* runs before it restarts the service.
|
|
4
|
+
*
|
|
5
|
+
* A container scaler spawns each agent from the image its label set names, not
|
|
6
|
+
* from the upgraded orchestrator. So an upgrade leaves container agents on the
|
|
7
|
+
* old release when a label set pins an older `kici-agent:<version>`, or names
|
|
8
|
+
* the moving `:latest` tag with the default `imagePullPolicy: IfNotPresent`: a
|
|
9
|
+
* host that already pulled `:latest` keeps that image. The check only warns:
|
|
10
|
+
* it never rewrites the operator's scaler config and never stops the upgrade.
|
|
11
|
+
*/
|
|
12
|
+
import { type ScalerConfig } from '../../../scaler/types.js';
|
|
13
|
+
/** Why a container label set keeps spawning an old agent after the upgrade. */
|
|
14
|
+
export declare enum AgentImageIssue {
|
|
15
|
+
/** `:latest` (or no tag) with `IfNotPresent`: the host keeps the image it pulled. */
|
|
16
|
+
MovingTag = "moving-tag",
|
|
17
|
+
/** A `kici-agent:<version>` older than the release the upgrade installs. */
|
|
18
|
+
OlderPin = "older-pin"
|
|
19
|
+
}
|
|
20
|
+
export interface AgentImageFinding {
|
|
21
|
+
issue: AgentImageIssue;
|
|
22
|
+
scaler: string;
|
|
23
|
+
labels: string[];
|
|
24
|
+
image: string;
|
|
25
|
+
message: string;
|
|
26
|
+
}
|
|
27
|
+
/** An image reference split into its repository, tag and digest. */
|
|
28
|
+
export interface ImageRefParts {
|
|
29
|
+
repository: string;
|
|
30
|
+
tag: string | null;
|
|
31
|
+
digest: string | null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Split `[registry/]path/name[:tag][@digest]`. A `:` before the last `/` is a
|
|
35
|
+
* registry port, not a tag.
|
|
36
|
+
*/
|
|
37
|
+
export declare function parseImageRef(image: string): ImageRefParts;
|
|
38
|
+
export interface CheckAgentImagesArgs {
|
|
39
|
+
config: ScalerConfig;
|
|
40
|
+
/** The release the upgrade installs, or null when the caller does not know it. */
|
|
41
|
+
targetVersion: string | null;
|
|
42
|
+
/** The main scaler config file, for the remedy text. */
|
|
43
|
+
scalerConfigPath: string;
|
|
44
|
+
/** The `KICI_SCALER_CONFIG_DIR` directory, when one is set. */
|
|
45
|
+
scalerConfigDir?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Every container-scaler label set whose agent image an upgrade to
|
|
49
|
+
* `targetVersion` leaves unchanged. An empty result means each agent image is
|
|
50
|
+
* pinned to the target (or newer), pulled on every spawn, or not a KiCI agent.
|
|
51
|
+
*/
|
|
52
|
+
export declare function checkContainerAgentImages(args: CheckAgentImagesArgs): AgentImageFinding[];
|
|
53
|
+
export interface WarnAgentImagesArgs {
|
|
54
|
+
envFilePath: string;
|
|
55
|
+
workingDirectory: string;
|
|
56
|
+
/** The release the upgrade installs, or null when the caller does not know it. */
|
|
57
|
+
targetVersion: string | null;
|
|
58
|
+
warn: (line: string) => void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Print one warning per container label set whose agent image the upgrade
|
|
62
|
+
* leaves unchanged. Never throws, and stays silent when the env file or the
|
|
63
|
+
* scaler config cannot be read: the bare-metal `binaryPath` check, which runs
|
|
64
|
+
* first on the same files, already reports that.
|
|
65
|
+
*/
|
|
66
|
+
export declare function warnAboutContainerAgentImages(args: WarnAgentImagesArgs): Promise<void>;
|
|
67
|
+
//# sourceMappingURL=container-agent-image-check.d.ts.map
|
package/dist/cli.js
CHANGED
|
@@ -22341,6 +22341,25 @@ function encryptPrivateKey(privateKey, secretKey) {
|
|
|
22341
22341
|
return encrypt(privateKey.toString("base64"), key, 1, PRIVATE_KEY_AAD).data;
|
|
22342
22342
|
}
|
|
22343
22343
|
createLogger({ prefix: "job-secret-seal" });
|
|
22344
|
+
//#endregion
|
|
22345
|
+
//#region src/agent/agent-version.ts
|
|
22346
|
+
/**
|
|
22347
|
+
* Parse `MAJOR.MINOR.PATCH`, or `null` for a non-version. The `-prerelease`
|
|
22348
|
+
* suffix is dropped rather than ordered: it is a build counter (`0.5.0-9159`),
|
|
22349
|
+
* and strict semver would order it BELOW `0.5.0`, reading every prerelease
|
|
22350
|
+
* agent as too old for a feature it carries.
|
|
22351
|
+
*/
|
|
22352
|
+
function parseVersionBase(version) {
|
|
22353
|
+
const parts = version.trim().split("-")[0].split(".");
|
|
22354
|
+
if (parts.length !== 3) return null;
|
|
22355
|
+
const nums = parts.map((part) => /^\d+$/.test(part) ? Number(part) : NaN);
|
|
22356
|
+
if (nums.some((n) => Number.isNaN(n))) return null;
|
|
22357
|
+
return [
|
|
22358
|
+
nums[0],
|
|
22359
|
+
nums[1],
|
|
22360
|
+
nums[2]
|
|
22361
|
+
];
|
|
22362
|
+
}
|
|
22344
22363
|
runtimeLabel(RuntimeFact.enum.docker), runtimeLabel(RuntimeFact.enum.podman);
|
|
22345
22364
|
//#endregion
|
|
22346
22365
|
//#region src/helpers/run-detached.ts
|
|
@@ -24132,6 +24151,117 @@ async function preflightBareMetalBinaryPaths(args) {
|
|
|
24132
24151
|
Nothing was installed and the service was not restarted. Fix binaryPath and run the upgrade again, or pass ${SKIP_BINARY_PATH_CHECK_FLAG} to upgrade anyway.`);
|
|
24133
24152
|
}
|
|
24134
24153
|
//#endregion
|
|
24154
|
+
//#region src/cli/commands/shared/container-agent-image-check.ts
|
|
24155
|
+
/**
|
|
24156
|
+
* The container-scaler agent image check `kici-admin orchestrator upgrade`
|
|
24157
|
+
* runs before it restarts the service.
|
|
24158
|
+
*
|
|
24159
|
+
* A container scaler spawns each agent from the image its label set names, not
|
|
24160
|
+
* from the upgraded orchestrator. So an upgrade leaves container agents on the
|
|
24161
|
+
* old release when a label set pins an older `kici-agent:<version>`, or names
|
|
24162
|
+
* the moving `:latest` tag with the default `imagePullPolicy: IfNotPresent`: a
|
|
24163
|
+
* host that already pulled `:latest` keeps that image. The check only warns:
|
|
24164
|
+
* it never rewrites the operator's scaler config and never stops the upgrade.
|
|
24165
|
+
*/
|
|
24166
|
+
/** The repository name of the published agent image, under any registry or mirror. */
|
|
24167
|
+
const AGENT_IMAGE_NAME = "kici-agent";
|
|
24168
|
+
/** The moving tag an untagged image reference resolves to. */
|
|
24169
|
+
const LATEST_TAG = "latest";
|
|
24170
|
+
/**
|
|
24171
|
+
* Split `[registry/]path/name[:tag][@digest]`. A `:` before the last `/` is a
|
|
24172
|
+
* registry port, not a tag.
|
|
24173
|
+
*/
|
|
24174
|
+
function parseImageRef(image) {
|
|
24175
|
+
const at = image.indexOf("@");
|
|
24176
|
+
const named = at === -1 ? image : image.slice(0, at);
|
|
24177
|
+
const digest = at === -1 ? null : image.slice(at + 1);
|
|
24178
|
+
const colon = named.lastIndexOf(":");
|
|
24179
|
+
if (colon > named.lastIndexOf("/")) return {
|
|
24180
|
+
repository: named.slice(0, colon),
|
|
24181
|
+
tag: named.slice(colon + 1),
|
|
24182
|
+
digest
|
|
24183
|
+
};
|
|
24184
|
+
return {
|
|
24185
|
+
repository: named,
|
|
24186
|
+
tag: null,
|
|
24187
|
+
digest
|
|
24188
|
+
};
|
|
24189
|
+
}
|
|
24190
|
+
/** True when the repository is the KiCI agent image, from quay.io or a mirror. */
|
|
24191
|
+
function isAgentImage(repository) {
|
|
24192
|
+
return repository.slice(repository.lastIndexOf("/") + 1) === AGENT_IMAGE_NAME;
|
|
24193
|
+
}
|
|
24194
|
+
/** -1, 0 or 1 as `a` is an older, the same or a newer release than `b`; null for a non-version. */
|
|
24195
|
+
function compareReleases(a, b) {
|
|
24196
|
+
const left = parseVersionBase(a.replace(/^v/, ""));
|
|
24197
|
+
const right = parseVersionBase(b.replace(/^v/, ""));
|
|
24198
|
+
if (!left || !right) return null;
|
|
24199
|
+
for (let i = 0; i < 3; i++) if (left[i] !== right[i]) return left[i] < right[i] ? -1 : 1;
|
|
24200
|
+
return 0;
|
|
24201
|
+
}
|
|
24202
|
+
/**
|
|
24203
|
+
* Every container-scaler label set whose agent image an upgrade to
|
|
24204
|
+
* `targetVersion` leaves unchanged. An empty result means each agent image is
|
|
24205
|
+
* pinned to the target (or newer), pulled on every spawn, or not a KiCI agent.
|
|
24206
|
+
*/
|
|
24207
|
+
function checkContainerAgentImages(args) {
|
|
24208
|
+
const { config } = args;
|
|
24209
|
+
const bare = args.targetVersion?.trim().replace(/^v/, "") ?? null;
|
|
24210
|
+
const targetVersion = bare && parseVersionBase(bare) ? bare : null;
|
|
24211
|
+
const where = args.scalerConfigDir ? `${args.scalerConfigPath} (or the file under ${args.scalerConfigDir} that declares it)` : args.scalerConfigPath;
|
|
24212
|
+
const findings = [];
|
|
24213
|
+
for (const entry of config.scalers) {
|
|
24214
|
+
if (entry.type !== ScalerBackendType.enum.container) continue;
|
|
24215
|
+
for (const ls of entry.labelSets) {
|
|
24216
|
+
if (!ls.image) continue;
|
|
24217
|
+
const ref = parseImageRef(ls.image);
|
|
24218
|
+
if (!isAgentImage(ref.repository)) continue;
|
|
24219
|
+
const pinned = targetVersion ? `${ref.repository}:${targetVersion}` : null;
|
|
24220
|
+
const prefix = `container scaler "${entry.name}", label set [${ls.labels.join(", ")}]: image ${ls.image}`;
|
|
24221
|
+
const finding = (issue, message) => ({
|
|
24222
|
+
issue,
|
|
24223
|
+
scaler: entry.name,
|
|
24224
|
+
labels: ls.labels,
|
|
24225
|
+
image: ls.image,
|
|
24226
|
+
message: `${prefix} ${message}`
|
|
24227
|
+
});
|
|
24228
|
+
const policy = ls.imagePullPolicy ?? ImagePullPolicy.enum.IfNotPresent;
|
|
24229
|
+
if ((ref.tag === null || ref.tag === LATEST_TAG) && ref.digest === null && policy === ImagePullPolicy.enum.IfNotPresent) {
|
|
24230
|
+
const pin = pinned ? `set "image: ${pinned}"` : `set image to the kici-agent release you upgrade to (${ref.repository}:<version>)`;
|
|
24231
|
+
findings.push(finding("moving-tag", `with imagePullPolicy IfNotPresent keeps the agent image this host already pulled, so the upgrade does not change the container agents. In ${where}, ${pin} on this label set, or set "imagePullPolicy: Always" to pull ${LATEST_TAG} on every spawn.`));
|
|
24232
|
+
continue;
|
|
24233
|
+
}
|
|
24234
|
+
if (!targetVersion || ref.tag === null) continue;
|
|
24235
|
+
if (compareReleases(ref.tag, targetVersion) === -1) findings.push(finding("older-pin", `is older than the upgrade target ${targetVersion}, so the container agents keep running ${ref.tag}. In ${where}, set "image: ${pinned}" on this label set.`));
|
|
24236
|
+
}
|
|
24237
|
+
}
|
|
24238
|
+
return findings;
|
|
24239
|
+
}
|
|
24240
|
+
/**
|
|
24241
|
+
* Print one warning per container label set whose agent image the upgrade
|
|
24242
|
+
* leaves unchanged. Never throws, and stays silent when the env file or the
|
|
24243
|
+
* scaler config cannot be read: the bare-metal `binaryPath` check, which runs
|
|
24244
|
+
* first on the same files, already reports that.
|
|
24245
|
+
*/
|
|
24246
|
+
async function warnAboutContainerAgentImages(args) {
|
|
24247
|
+
let location;
|
|
24248
|
+
let config;
|
|
24249
|
+
try {
|
|
24250
|
+
location = scalerConfigLocation(fs.readFileSync(args.envFilePath, "utf-8"), args.workingDirectory);
|
|
24251
|
+
if (!location) return;
|
|
24252
|
+
config = await loadScalerConfig(location.configPath, location.configDir);
|
|
24253
|
+
} catch {
|
|
24254
|
+
return;
|
|
24255
|
+
}
|
|
24256
|
+
const findings = checkContainerAgentImages({
|
|
24257
|
+
config,
|
|
24258
|
+
targetVersion: args.targetVersion,
|
|
24259
|
+
scalerConfigPath: location.configPath,
|
|
24260
|
+
...location.configDir ? { scalerConfigDir: location.configDir } : {}
|
|
24261
|
+
});
|
|
24262
|
+
for (const f of findings) args.warn(`Warning: ${f.message}`);
|
|
24263
|
+
}
|
|
24264
|
+
//#endregion
|
|
24135
24265
|
//#region src/cli/commands/shared/versioned-upgrade.ts
|
|
24136
24266
|
/**
|
|
24137
24267
|
* Versioned-directory upgrade shared by the kici-admin upgrade commands: each
|
|
@@ -24141,14 +24271,16 @@ Nothing was installed and the service was not restarted. Fix binaryPath and run
|
|
|
24141
24271
|
*/
|
|
24142
24272
|
init_service();
|
|
24143
24273
|
/**
|
|
24144
|
-
* Check
|
|
24145
|
-
*
|
|
24146
|
-
*
|
|
24274
|
+
* Check an orchestrator's scaler config before the upgrade installs or
|
|
24275
|
+
* restarts anything. `spec` is the unit's launch command: the `kici-agent`
|
|
24276
|
+
* installed with its runtime is the one each bare-metal `binaryPath` should
|
|
24147
24277
|
* name. `expectedVersion` is what that agent runs after the upgrade, when the
|
|
24148
24278
|
* caller knows it. Throws when a `binaryPath` would stop the restarted service,
|
|
24149
|
-
* unless `skip` is set: then every finding is a warning.
|
|
24279
|
+
* unless `skip` is set: then every finding is a warning. Then warns about each
|
|
24280
|
+
* container label set whose agent image stays behind `targetVersion`, the
|
|
24281
|
+
* release the service runs after the upgrade.
|
|
24150
24282
|
*/
|
|
24151
|
-
async function
|
|
24283
|
+
async function checkScalersBeforeUpgrade(args) {
|
|
24152
24284
|
if (args.component !== "orchestrator" || args.platform === "compose") return;
|
|
24153
24285
|
const expectedAgent = args.spec ? agentBinaryFromLaunch(args.spec, isWindows(args.platform)) : null;
|
|
24154
24286
|
await preflightBareMetalBinaryPaths({
|
|
@@ -24161,6 +24293,12 @@ async function checkBareMetalBinaryPathsBeforeUpgrade(args) {
|
|
|
24161
24293
|
skip: args.skip,
|
|
24162
24294
|
warn: (line) => console.warn(line)
|
|
24163
24295
|
});
|
|
24296
|
+
await warnAboutContainerAgentImages({
|
|
24297
|
+
envFilePath: args.config.envFilePath,
|
|
24298
|
+
workingDirectory: args.config.workingDirectory,
|
|
24299
|
+
targetVersion: args.targetVersion,
|
|
24300
|
+
warn: (line) => console.warn(line)
|
|
24301
|
+
});
|
|
24164
24302
|
}
|
|
24165
24303
|
/**
|
|
24166
24304
|
* Resolve the upgrade target through {@link resolveInstanceTarget}: `instanceDir`,
|
|
@@ -24748,12 +24886,13 @@ async function performVersionedUpgrade(component, opts, hooks = {}) {
|
|
|
24748
24886
|
console.error(`Error: service "${config.name}" is not installed`);
|
|
24749
24887
|
process.exit(1);
|
|
24750
24888
|
}
|
|
24751
|
-
await
|
|
24889
|
+
await checkScalersBeforeUpgrade({
|
|
24752
24890
|
component,
|
|
24753
24891
|
config,
|
|
24754
24892
|
platform,
|
|
24755
24893
|
spec: await manager.readLaunchSpec(config),
|
|
24756
24894
|
expectedVersion: null,
|
|
24895
|
+
targetVersion: version,
|
|
24757
24896
|
willInstall: false,
|
|
24758
24897
|
skip: opts.skipBinaryPathCheck ?? false
|
|
24759
24898
|
});
|
|
@@ -24909,12 +25048,13 @@ async function restartOnlyUpgrade(args) {
|
|
|
24909
25048
|
console.error(`Error: ${verdict.reason}`);
|
|
24910
25049
|
process.exit(1);
|
|
24911
25050
|
}
|
|
24912
|
-
await
|
|
25051
|
+
await checkScalersBeforeUpgrade({
|
|
24913
25052
|
component: args.component,
|
|
24914
25053
|
config,
|
|
24915
25054
|
platform,
|
|
24916
25055
|
spec,
|
|
24917
25056
|
expectedVersion: null,
|
|
25057
|
+
targetVersion: verdict.version,
|
|
24918
25058
|
willInstall: false,
|
|
24919
25059
|
skip: opts.skipBinaryPathCheck ?? false
|
|
24920
25060
|
});
|
|
@@ -24945,12 +25085,13 @@ async function restartOnlyUpgrade(args) {
|
|
|
24945
25085
|
async function performSelfDrivingInstall(args) {
|
|
24946
25086
|
const { component, config, resolvedInstance, manager, action, opts, platform, spec } = args;
|
|
24947
25087
|
const { target, version } = action;
|
|
24948
|
-
await
|
|
25088
|
+
await checkScalersBeforeUpgrade({
|
|
24949
25089
|
component,
|
|
24950
25090
|
config,
|
|
24951
25091
|
platform,
|
|
24952
25092
|
spec,
|
|
24953
25093
|
expectedVersion: `${target.owningPackage}@${version}`,
|
|
25094
|
+
targetVersion: version,
|
|
24954
25095
|
willInstall: true,
|
|
24955
25096
|
skip: opts.skipBinaryPathCheck ?? false
|
|
24956
25097
|
});
|
|
@@ -25108,7 +25249,7 @@ async function switchToInstalledVersion(args) {
|
|
|
25108
25249
|
action: `switch "${config.name}" to ${targetVersion}`,
|
|
25109
25250
|
config
|
|
25110
25251
|
});
|
|
25111
|
-
await
|
|
25252
|
+
await warnAboutScalers(args);
|
|
25112
25253
|
if (!await assertSchemaAllowsSwitch({
|
|
25113
25254
|
component,
|
|
25114
25255
|
targetVersion,
|
|
@@ -25142,18 +25283,20 @@ async function switchToInstalledVersion(args) {
|
|
|
25142
25283
|
});
|
|
25143
25284
|
}
|
|
25144
25285
|
/**
|
|
25145
|
-
* Print the bare-metal `binaryPath`
|
|
25146
|
-
* restarts the service. Never refuses and never
|
|
25147
|
-
* paths, and a check that cannot run must not block
|
|
25286
|
+
* Print the bare-metal `binaryPath` and container agent image diagnoses before
|
|
25287
|
+
* `--rollback` or `--pick` restarts the service. Never refuses and never
|
|
25288
|
+
* throws: both are recovery paths, and a check that cannot run must not block
|
|
25289
|
+
* a recovery.
|
|
25148
25290
|
*/
|
|
25149
|
-
async function
|
|
25291
|
+
async function warnAboutScalers(args) {
|
|
25150
25292
|
try {
|
|
25151
|
-
await
|
|
25293
|
+
await checkScalersBeforeUpgrade({
|
|
25152
25294
|
component: args.component,
|
|
25153
25295
|
config: args.config,
|
|
25154
25296
|
platform: args.platform,
|
|
25155
25297
|
spec: await args.manager.readLaunchSpec(args.config).catch(() => null),
|
|
25156
25298
|
expectedVersion: null,
|
|
25299
|
+
targetVersion: args.targetVersion,
|
|
25157
25300
|
willInstall: false,
|
|
25158
25301
|
skip: true
|
|
25159
25302
|
});
|
|
@@ -26677,7 +26820,7 @@ init_manifest();
|
|
|
26677
26820
|
const ALL_PLATFORMS = AgentPlatform.options;
|
|
26678
26821
|
/** The orchestrator's own version (single-version invariant) = the packaged agent version. */
|
|
26679
26822
|
function resolveKiciVersion() {
|
|
26680
|
-
return "0.
|
|
26823
|
+
return "0.20.0";
|
|
26681
26824
|
}
|
|
26682
26825
|
/** Parse the --platform value: default set | single | CSV | `all`. */
|
|
26683
26826
|
function parsePlatforms(raw) {
|
|
@@ -36926,7 +37069,7 @@ function routeRootArgs(root, args) {
|
|
|
36926
37069
|
* build entry; the fallback covers a source run (tests, `tsx`), the same shape
|
|
36927
37070
|
* `server.ts` and `standalone.ts` use for `ORCHESTRATOR_VERSION`.
|
|
36928
37071
|
*/
|
|
36929
|
-
const CLI_VERSION = "0.
|
|
37072
|
+
const CLI_VERSION = "0.20.0";
|
|
36930
37073
|
/**
|
|
36931
37074
|
* Root command whose option parsing first routes argv through
|
|
36932
37075
|
* {@link routeRootArgs}: a leading `--version` prints the CLI version, and an
|
package/dist/server.js
CHANGED
|
@@ -44036,7 +44036,10 @@ async function resolveLockFileForTest(input, deps, runId) {
|
|
|
44036
44036
|
function selectMatchedDecisions(input, fullLockFile, simulatedEvent) {
|
|
44037
44037
|
let decisions;
|
|
44038
44038
|
if (input.workflowName) {
|
|
44039
|
-
if (!fullLockFile.workflows.find((w) => w.name === input.workflowName))
|
|
44039
|
+
if (!fullLockFile.workflows.find((w) => w.name === input.workflowName)) {
|
|
44040
|
+
const available = fullLockFile.workflows.map((w) => w.name).join(", ");
|
|
44041
|
+
return { rejected: `Workflow '${input.workflowName}' not found in lock file. Available workflows: ${available || "(none)"}` };
|
|
44042
|
+
}
|
|
44040
44043
|
decisions = [createWorkflowDecision(input.workflowName, true, [], void 0, "Direct test run")];
|
|
44041
44044
|
} else decisions = matchAllWorkflows(fullLockFile.workflows, simulatedEvent);
|
|
44042
44045
|
const matched = decisions.filter((d) => d.matched);
|
|
@@ -48960,13 +48963,13 @@ function createHealthRoutes$1(deps = {}) {
|
|
|
48960
48963
|
return createHealthRoutes({
|
|
48961
48964
|
livenessInfo: () => {
|
|
48962
48965
|
return {
|
|
48963
|
-
version: "0.
|
|
48964
|
-
buildDate: "2026-10-
|
|
48965
|
-
sdkVersion: "0.
|
|
48966
|
+
version: "0.20.0",
|
|
48967
|
+
buildDate: "2026-10-17T08:12:16.425Z",
|
|
48968
|
+
sdkVersion: "0.20.0",
|
|
48966
48969
|
sdkBundleHash: "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d",
|
|
48967
|
-
sharedVersion: "0.
|
|
48970
|
+
sharedVersion: "0.20.0",
|
|
48968
48971
|
sharedBundleHash: "23378ace59973f47203be3ff171bb7d5e66702eaa335927b390f94b9771a1f8b",
|
|
48969
|
-
engineVersion: "0.
|
|
48972
|
+
engineVersion: "0.20.0",
|
|
48970
48973
|
engineBundleHash: "406208ee50766cd0d4ce3ab1fd5dec4501d5117a74acd294b25736d9bd6e89bd"
|
|
48971
48974
|
};
|
|
48972
48975
|
},
|
|
@@ -48999,7 +49002,7 @@ function createCapabilitiesRoutes() {
|
|
|
48999
49002
|
const app = new Hono();
|
|
49000
49003
|
app.get("/api/v1/capabilities", (c) => {
|
|
49001
49004
|
const manifest = {
|
|
49002
|
-
orchestratorVersion: "0.
|
|
49005
|
+
orchestratorVersion: "0.20.0",
|
|
49003
49006
|
protocolVersion: PROTOCOL_VERSION,
|
|
49004
49007
|
minProtocolVersion: MIN_PROTOCOL_VERSION
|
|
49005
49008
|
};
|
|
@@ -59636,7 +59639,7 @@ var init_app = __esmMin((() => {
|
|
|
59636
59639
|
init_agent_metrics_aggregator();
|
|
59637
59640
|
init_run_detached();
|
|
59638
59641
|
logger$66 = createLogger({ prefix: "app" });
|
|
59639
|
-
ORCHESTRATOR_VERSION$2 = "0.
|
|
59642
|
+
ORCHESTRATOR_VERSION$2 = "0.20.0";
|
|
59640
59643
|
SourceLocationStore = class {
|
|
59641
59644
|
cache = /* @__PURE__ */ new Map();
|
|
59642
59645
|
key(workflowName, jobName) {
|
|
@@ -68727,7 +68730,7 @@ var init_peer_client = __esmMin((() => {
|
|
|
68727
68730
|
PeerDialOrigin["Discovered"] = "discovered";
|
|
68728
68731
|
return PeerDialOrigin;
|
|
68729
68732
|
}({});
|
|
68730
|
-
SOFTWARE_VERSION$1 = "0.
|
|
68733
|
+
SOFTWARE_VERSION$1 = "0.20.0";
|
|
68731
68734
|
PeerClient$1 = class {
|
|
68732
68735
|
ws = null;
|
|
68733
68736
|
_state = "disconnected";
|
|
@@ -71198,7 +71201,7 @@ var init_peer_handler = __esmMin((() => {
|
|
|
71198
71201
|
init_join_token();
|
|
71199
71202
|
init_run_detached();
|
|
71200
71203
|
logger$46 = createLogger({ prefix: "peer-handler" });
|
|
71201
|
-
SOFTWARE_VERSION = "0.
|
|
71204
|
+
SOFTWARE_VERSION = "0.20.0";
|
|
71202
71205
|
ADVERTISED_PEER_AUTH_SCHEMES = [PeerAuthScheme.enum["mutual-v2"]];
|
|
71203
71206
|
MAX_TOKEN_CANDIDATES = 8;
|
|
71204
71207
|
RATE_LIMIT_MAX = 5;
|
|
@@ -100380,12 +100383,12 @@ var init_worker_core = __esmMin((() => {
|
|
|
100380
100383
|
init_app_on_error();
|
|
100381
100384
|
init_run_detached();
|
|
100382
100385
|
init_peer_job_cancel();
|
|
100383
|
-
ORCHESTRATOR_VERSION$1 = "0.
|
|
100384
|
-
WORKER_SDK_VERSION = "0.
|
|
100386
|
+
ORCHESTRATOR_VERSION$1 = "0.20.0";
|
|
100387
|
+
WORKER_SDK_VERSION = "0.20.0";
|
|
100385
100388
|
WORKER_SDK_BUNDLE_HASH = "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d";
|
|
100386
|
-
WORKER_SHARED_VERSION = "0.
|
|
100389
|
+
WORKER_SHARED_VERSION = "0.20.0";
|
|
100387
100390
|
WORKER_SHARED_BUNDLE_HASH = "23378ace59973f47203be3ff171bb7d5e66702eaa335927b390f94b9771a1f8b";
|
|
100388
|
-
WORKER_ENGINE_VERSION = "0.
|
|
100391
|
+
WORKER_ENGINE_VERSION = "0.20.0";
|
|
100389
100392
|
WORKER_ENGINE_BUNDLE_HASH = "406208ee50766cd0d4ce3ab1fd5dec4501d5117a74acd294b25736d9bd6e89bd";
|
|
100390
100393
|
logger$2 = createLogger({ prefix: "worker" });
|
|
100391
100394
|
DRAIN_TIMEOUT_MS = 3e5;
|
|
@@ -100413,12 +100416,12 @@ init_run_detached();
|
|
|
100413
100416
|
init_dashboard_access();
|
|
100414
100417
|
init_peer_job_cancel();
|
|
100415
100418
|
init_orphan_requests();
|
|
100416
|
-
const ORCHESTRATOR_VERSION = "0.
|
|
100417
|
-
const SDK_VERSION = "0.
|
|
100419
|
+
const ORCHESTRATOR_VERSION = "0.20.0";
|
|
100420
|
+
const SDK_VERSION = "0.20.0";
|
|
100418
100421
|
const SDK_BUNDLE_HASH = "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d";
|
|
100419
|
-
const SHARED_VERSION = "0.
|
|
100422
|
+
const SHARED_VERSION = "0.20.0";
|
|
100420
100423
|
const SHARED_BUNDLE_HASH = "23378ace59973f47203be3ff171bb7d5e66702eaa335927b390f94b9771a1f8b";
|
|
100421
|
-
const ENGINE_VERSION = "0.
|
|
100424
|
+
const ENGINE_VERSION = "0.20.0";
|
|
100422
100425
|
const ENGINE_BUNDLE_HASH = "406208ee50766cd0d4ce3ab1fd5dec4501d5117a74acd294b25736d9bd6e89bd";
|
|
100423
100426
|
const otelSdk = initTelemetry({
|
|
100424
100427
|
serviceName: "kici-orchestrator",
|
package/dist/standalone.js
CHANGED
|
@@ -5979,7 +5979,7 @@ var init_peer_client = __esmMin((() => {
|
|
|
5979
5979
|
PeerDialOrigin["Discovered"] = "discovered";
|
|
5980
5980
|
return PeerDialOrigin;
|
|
5981
5981
|
}({});
|
|
5982
|
-
SOFTWARE_VERSION$1 = "0.
|
|
5982
|
+
SOFTWARE_VERSION$1 = "0.20.0";
|
|
5983
5983
|
PeerClient$1 = class {
|
|
5984
5984
|
ws = null;
|
|
5985
5985
|
_state = "disconnected";
|
|
@@ -8450,7 +8450,7 @@ var init_peer_handler = __esmMin((() => {
|
|
|
8450
8450
|
init_join_token();
|
|
8451
8451
|
init_run_detached();
|
|
8452
8452
|
logger$154 = createLogger({ prefix: "peer-handler" });
|
|
8453
|
-
SOFTWARE_VERSION = "0.
|
|
8453
|
+
SOFTWARE_VERSION = "0.20.0";
|
|
8454
8454
|
ADVERTISED_PEER_AUTH_SCHEMES = [PeerAuthScheme.enum["mutual-v2"]];
|
|
8455
8455
|
MAX_TOKEN_CANDIDATES = 8;
|
|
8456
8456
|
RATE_LIMIT_MAX = 5;
|
|
@@ -63630,7 +63630,10 @@ async function resolveLockFileForTest(input, deps, runId) {
|
|
|
63630
63630
|
function selectMatchedDecisions(input, fullLockFile, simulatedEvent) {
|
|
63631
63631
|
let decisions;
|
|
63632
63632
|
if (input.workflowName) {
|
|
63633
|
-
if (!fullLockFile.workflows.find((w) => w.name === input.workflowName))
|
|
63633
|
+
if (!fullLockFile.workflows.find((w) => w.name === input.workflowName)) {
|
|
63634
|
+
const available = fullLockFile.workflows.map((w) => w.name).join(", ");
|
|
63635
|
+
return { rejected: `Workflow '${input.workflowName}' not found in lock file. Available workflows: ${available || "(none)"}` };
|
|
63636
|
+
}
|
|
63634
63637
|
decisions = [createWorkflowDecision(input.workflowName, true, [], void 0, "Direct test run")];
|
|
63635
63638
|
} else decisions = matchAllWorkflows(fullLockFile.workflows, simulatedEvent);
|
|
63636
63639
|
const matched = decisions.filter((d) => d.matched);
|
|
@@ -68523,13 +68526,13 @@ function createHealthRoutes$1(deps = {}) {
|
|
|
68523
68526
|
return createHealthRoutes({
|
|
68524
68527
|
livenessInfo: () => {
|
|
68525
68528
|
return {
|
|
68526
|
-
version: "0.
|
|
68527
|
-
buildDate: "2026-10-
|
|
68528
|
-
sdkVersion: "0.
|
|
68529
|
+
version: "0.20.0",
|
|
68530
|
+
buildDate: "2026-10-17T08:12:16.425Z",
|
|
68531
|
+
sdkVersion: "0.20.0",
|
|
68529
68532
|
sdkBundleHash: "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d",
|
|
68530
|
-
sharedVersion: "0.
|
|
68533
|
+
sharedVersion: "0.20.0",
|
|
68531
68534
|
sharedBundleHash: "23378ace59973f47203be3ff171bb7d5e66702eaa335927b390f94b9771a1f8b",
|
|
68532
|
-
engineVersion: "0.
|
|
68535
|
+
engineVersion: "0.20.0",
|
|
68533
68536
|
engineBundleHash: "406208ee50766cd0d4ce3ab1fd5dec4501d5117a74acd294b25736d9bd6e89bd"
|
|
68534
68537
|
};
|
|
68535
68538
|
},
|
|
@@ -68562,7 +68565,7 @@ function createCapabilitiesRoutes() {
|
|
|
68562
68565
|
const app = new Hono();
|
|
68563
68566
|
app.get("/api/v1/capabilities", (c) => {
|
|
68564
68567
|
const manifest = {
|
|
68565
|
-
orchestratorVersion: "0.
|
|
68568
|
+
orchestratorVersion: "0.20.0",
|
|
68566
68569
|
protocolVersion: PROTOCOL_VERSION,
|
|
68567
68570
|
minProtocolVersion: MIN_PROTOCOL_VERSION
|
|
68568
68571
|
};
|
|
@@ -71796,7 +71799,7 @@ var init_app = __esmMin((() => {
|
|
|
71796
71799
|
init_agent_metrics_aggregator();
|
|
71797
71800
|
init_run_detached();
|
|
71798
71801
|
logger$38 = createLogger({ prefix: "app" });
|
|
71799
|
-
ORCHESTRATOR_VERSION$2 = "0.
|
|
71802
|
+
ORCHESTRATOR_VERSION$2 = "0.20.0";
|
|
71800
71803
|
SourceLocationStore = class {
|
|
71801
71804
|
cache = /* @__PURE__ */ new Map();
|
|
71802
71805
|
key(workflowName, jobName) {
|
|
@@ -91411,12 +91414,12 @@ var init_worker_core = __esmMin((() => {
|
|
|
91411
91414
|
init_app_on_error();
|
|
91412
91415
|
init_run_detached();
|
|
91413
91416
|
init_peer_job_cancel();
|
|
91414
|
-
ORCHESTRATOR_VERSION$1 = "0.
|
|
91415
|
-
WORKER_SDK_VERSION = "0.
|
|
91417
|
+
ORCHESTRATOR_VERSION$1 = "0.20.0";
|
|
91418
|
+
WORKER_SDK_VERSION = "0.20.0";
|
|
91416
91419
|
WORKER_SDK_BUNDLE_HASH = "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d";
|
|
91417
|
-
WORKER_SHARED_VERSION = "0.
|
|
91420
|
+
WORKER_SHARED_VERSION = "0.20.0";
|
|
91418
91421
|
WORKER_SHARED_BUNDLE_HASH = "23378ace59973f47203be3ff171bb7d5e66702eaa335927b390f94b9771a1f8b";
|
|
91419
|
-
WORKER_ENGINE_VERSION = "0.
|
|
91422
|
+
WORKER_ENGINE_VERSION = "0.20.0";
|
|
91420
91423
|
WORKER_ENGINE_BUNDLE_HASH = "406208ee50766cd0d4ce3ab1fd5dec4501d5117a74acd294b25736d9bd6e89bd";
|
|
91421
91424
|
logger$2 = createLogger({ prefix: "worker" });
|
|
91422
91425
|
DRAIN_TIMEOUT_MS = 3e5;
|
|
@@ -91446,12 +91449,12 @@ init_webhook_url_resolvers();
|
|
|
91446
91449
|
init_run_detached();
|
|
91447
91450
|
init_peer_job_cancel();
|
|
91448
91451
|
init_orphan_requests();
|
|
91449
|
-
const ORCHESTRATOR_VERSION = "0.
|
|
91450
|
-
const SDK_VERSION = "0.
|
|
91452
|
+
const ORCHESTRATOR_VERSION = "0.20.0";
|
|
91453
|
+
const SDK_VERSION = "0.20.0";
|
|
91451
91454
|
const SDK_BUNDLE_HASH = "b012bd8bace3df9e574252bf290c652bc39766da617acf51729a08586756266d";
|
|
91452
|
-
const SHARED_VERSION = "0.
|
|
91455
|
+
const SHARED_VERSION = "0.20.0";
|
|
91453
91456
|
const SHARED_BUNDLE_HASH = "23378ace59973f47203be3ff171bb7d5e66702eaa335927b390f94b9771a1f8b";
|
|
91454
|
-
const ENGINE_VERSION = "0.
|
|
91457
|
+
const ENGINE_VERSION = "0.20.0";
|
|
91455
91458
|
const ENGINE_BUNDLE_HASH = "406208ee50766cd0d4ce3ab1fd5dec4501d5117a74acd294b25736d9bd6e89bd";
|
|
91456
91459
|
const otelSdk = initTelemetry({
|
|
91457
91460
|
serviceName: "kici-orchestrator",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.20.0",
|
|
3
3
|
"images": {
|
|
4
|
-
"kici-agent": "sha256:
|
|
5
|
-
"kici-orchestrator": "sha256:
|
|
4
|
+
"kici-agent": "sha256:860c84bf420d76ce0900b0e41fe9fde0a7dfe47862d933028ff48da7efb7d1a4",
|
|
5
|
+
"kici-orchestrator": "sha256:b2bd35ee87b94f2612622d47d2e7c0bf6fdb8487e9631366e91bf48920f698fb"
|
|
6
6
|
}
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kici-dev/orchestrator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
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/
|
|
94
|
-
"@kici-dev/
|
|
93
|
+
"@kici-dev/engine": "0.20.0",
|
|
94
|
+
"@kici-dev/shared": "0.20.0"
|
|
95
95
|
},
|
|
96
96
|
"kici": {
|
|
97
97
|
"metrics": {
|
|
@@ -106,8 +106,8 @@
|
|
|
106
106
|
"@types/dockerode": "^4.0.1",
|
|
107
107
|
"@types/ws": "^8.18.1",
|
|
108
108
|
"kysely-ctl": "^0.21.0",
|
|
109
|
-
"@kici-dev/
|
|
110
|
-
"@kici-dev/
|
|
109
|
+
"@kici-dev/agent": "0.20.0",
|
|
110
|
+
"@kici-dev/test-support": "0.0.0"
|
|
111
111
|
},
|
|
112
112
|
"scripts": {
|
|
113
113
|
"build": "node ../../scripts/build-service.mjs && tsc -p tsconfig.build.json --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.
|
|
6
|
-
"documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Forchestrator/0.
|
|
5
|
+
"name": "@kici-dev/orchestrator@0.20.0",
|
|
6
|
+
"documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Forchestrator/0.20.0/5a49c6d3-45cd-4b94-8d53-78bd4bffd04d",
|
|
7
7
|
"creationInfo": {
|
|
8
|
-
"created": "2026-10-
|
|
8
|
+
"created": "2026-10-17T10:01:06Z",
|
|
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.
|
|
967
|
+
"SPDXID": "SPDXRef-Package--kici-dev-core-0.20.0",
|
|
968
968
|
"name": "@kici-dev/core",
|
|
969
|
-
"versionInfo": "0.
|
|
969
|
+
"versionInfo": "0.20.0",
|
|
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.
|
|
980
|
+
"referenceLocator": "pkg:npm/%40kici-dev/core@0.20.0"
|
|
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.
|
|
987
|
+
"SPDXID": "SPDXRef-Package--kici-dev-engine-0.20.0",
|
|
988
988
|
"name": "@kici-dev/engine",
|
|
989
|
-
"versionInfo": "0.
|
|
989
|
+
"versionInfo": "0.20.0",
|
|
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.
|
|
1000
|
+
"referenceLocator": "pkg:npm/%40kici-dev/engine@0.20.0"
|
|
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.
|
|
1009
|
+
"versionInfo": "0.20.0",
|
|
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.
|
|
1020
|
+
"referenceLocator": "pkg:npm/%40kici-dev/orchestrator@0.20.0"
|
|
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.
|
|
1027
|
+
"SPDXID": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
1028
1028
|
"name": "@kici-dev/shared",
|
|
1029
|
-
"versionInfo": "0.
|
|
1029
|
+
"versionInfo": "0.20.0",
|
|
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.
|
|
1040
|
+
"referenceLocator": "pkg:npm/%40kici-dev/shared@0.20.0"
|
|
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.
|
|
7679
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.20.0",
|
|
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.
|
|
7684
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.20.0",
|
|
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.
|
|
7689
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.20.0",
|
|
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.
|
|
7694
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.20.0",
|
|
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.
|
|
7699
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.20.0",
|
|
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.
|
|
7704
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.20.0",
|
|
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.
|
|
7709
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.20.0",
|
|
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.
|
|
7714
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.20.0",
|
|
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.
|
|
7719
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.20.0",
|
|
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.
|
|
7724
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.20.0",
|
|
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.
|
|
7729
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.20.0",
|
|
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.
|
|
7734
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.20.0",
|
|
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.
|
|
7770
|
+
"relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.20.0",
|
|
7771
7771
|
"relationshipType": "DEPENDS_ON"
|
|
7772
7772
|
},
|
|
7773
7773
|
{
|
|
7774
7774
|
"spdxElementId": "SPDXRef-RootPackage",
|
|
7775
|
-
"relatedSpdxElement": "SPDXRef-Package--kici-dev-shared-0.
|
|
7775
|
+
"relatedSpdxElement": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7884
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7890
|
-
"relatedSpdxElement": "SPDXRef-Package--kici-dev-core-0.
|
|
7889
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
7890
|
+
"relatedSpdxElement": "SPDXRef-Package--kici-dev-core-0.20.0",
|
|
7891
7891
|
"relationshipType": "DEPENDS_ON"
|
|
7892
7892
|
},
|
|
7893
7893
|
{
|
|
7894
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.
|
|
7895
|
-
"relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.
|
|
7894
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
7895
|
+
"relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.20.0",
|
|
7896
7896
|
"relationshipType": "DEPENDS_ON"
|
|
7897
7897
|
},
|
|
7898
7898
|
{
|
|
7899
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.
|
|
7899
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7904
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7909
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7914
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7919
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7924
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7929
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7934
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7939
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7944
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7949
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7954
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7959
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7964
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7969
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7974
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7979
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7984
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7989
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
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.
|
|
7994
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-shared-0.20.0",
|
|
7995
7995
|
"relatedSpdxElement": "SPDXRef-Package-zx-8.8.5",
|
|
7996
7996
|
"relationshipType": "DEPENDS_ON"
|
|
7997
7997
|
},
|