@kici-dev/sdk 0.1.25 → 0.1.27
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/context.d.ts +8 -8
- package/dist/idempotent.d.ts +2 -2
- package/dist/idempotent.js +2 -2
- package/dist/job.js +5 -5
- package/dist/secrets.d.ts +1 -1
- package/dist/types.d.ts +21 -21
- package/dist/workflow.js +3 -3
- package/package.json +3 -3
- package/sbom.spdx.json +24 -24
package/dist/context.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export interface AgentInfo {
|
|
|
37
37
|
/**
|
|
38
38
|
* Outputs of a matrix job as seen by a downstream `needs:` consumer.
|
|
39
39
|
* A downstream that consumes a matrix upstream receives this envelope instead of
|
|
40
|
-
* a flat outputs object, identically under `kici run local` and the remote path.
|
|
40
|
+
* a flat outputs object, identically under `kici run --local` and the remote path.
|
|
41
41
|
*/
|
|
42
42
|
export interface MatrixJobOutputs<T = Record<string, unknown>> {
|
|
43
43
|
/** Keyed by the combination suffix (the text inside `(...)` of the child name). */
|
|
@@ -160,7 +160,7 @@ export interface StepContext<TInputs = Record<string, unknown>> {
|
|
|
160
160
|
/**
|
|
161
161
|
* Raw webhook payload from the git provider.
|
|
162
162
|
* Contains the full, unmodified payload as received from the webhook.
|
|
163
|
-
* In local preview/run mode (`kici preview` / `kici run local`), contains the simulated payload.
|
|
163
|
+
* In local preview/run mode (`kici preview` / `kici run --local`), contains the simulated payload.
|
|
164
164
|
* Use this for provider-specific data not covered by normalized fields.
|
|
165
165
|
*/
|
|
166
166
|
rawPayload?: Record<string, unknown>;
|
|
@@ -189,13 +189,13 @@ export interface StepContext<TInputs = Record<string, unknown>> {
|
|
|
189
189
|
*/
|
|
190
190
|
sourceRepo?: RepoInfo;
|
|
191
191
|
/**
|
|
192
|
-
* The resolved
|
|
193
|
-
* Set when the job declares
|
|
194
|
-
* Undefined for jobs without
|
|
192
|
+
* The resolved context name for this job.
|
|
193
|
+
* Set when the job declares a `context` property.
|
|
194
|
+
* Undefined for jobs without a context.
|
|
195
195
|
*/
|
|
196
|
-
|
|
196
|
+
context?: string;
|
|
197
197
|
/**
|
|
198
|
-
* Secrets resolved for this job's
|
|
198
|
+
* Secrets resolved for this job's context.
|
|
199
199
|
* Use ctx.secrets.get('KEY') to retrieve a value asynchronously.
|
|
200
200
|
* Use ctx.secrets.expose('KEY') to inject into process.env explicitly.
|
|
201
201
|
* Use ctx.secrets.has('KEY') to check existence synchronously.
|
|
@@ -239,7 +239,7 @@ export interface StepContext<TInputs = Record<string, unknown>> {
|
|
|
239
239
|
* For a plain upstream this returns the job's collected outputs (step-keyed
|
|
240
240
|
* for multi-step, flat for run shorthand). For a **matrix** upstream it returns
|
|
241
241
|
* a {@link MatrixJobOutputs} envelope `{ byMatrix, merged }` keyed by the
|
|
242
|
-
* combination suffix — identical under `kici run local` and the remote path.
|
|
242
|
+
* combination suffix — identical under `kici run --local` and the remote path.
|
|
243
243
|
* Use {@link isMatrixJobOutputs} (or `'byMatrix' in result`) to discriminate.
|
|
244
244
|
*
|
|
245
245
|
* @example
|
package/dist/idempotent.d.ts
CHANGED
|
@@ -95,8 +95,8 @@ export interface CheckStepOptions<TDrift, TInSync = void, TApplied = void> exten
|
|
|
95
95
|
*
|
|
96
96
|
* It desugars to the `step()` check facet
|
|
97
97
|
* (`run: (ctx, drift) => apply(ctx, drift)`), so it inherits the agent
|
|
98
|
-
* step-loop
|
|
99
|
-
*
|
|
98
|
+
* step-loop check-mode drive for free — no engine, agent, orchestrator, or
|
|
99
|
+
* lockfile change.
|
|
100
100
|
*/
|
|
101
101
|
export declare function checkStep<TDrift, TInSync = void, TApplied = void>(name: string, options: CheckStepOptions<TDrift, TInSync, TApplied>): Step<TApplied | TInSync>;
|
|
102
102
|
//# sourceMappingURL=idempotent.d.ts.map
|
package/dist/idempotent.js
CHANGED
|
@@ -79,8 +79,8 @@ function idempotentStep(name, opts) {
|
|
|
79
79
|
*
|
|
80
80
|
* It desugars to the `step()` check facet
|
|
81
81
|
* (`run: (ctx, drift) => apply(ctx, drift)`), so it inherits the agent
|
|
82
|
-
* step-loop
|
|
83
|
-
*
|
|
82
|
+
* step-loop check-mode drive for free — no engine, agent, orchestrator, or
|
|
83
|
+
* lockfile change.
|
|
84
84
|
*/
|
|
85
85
|
function checkStep(name, options) {
|
|
86
86
|
return step(name, {
|
package/dist/job.js
CHANGED
|
@@ -32,9 +32,9 @@ function job(nameOrOptions, maybeOptions) {
|
|
|
32
32
|
steps = [options.run];
|
|
33
33
|
}
|
|
34
34
|
validateInit(options.init, name);
|
|
35
|
-
const
|
|
36
|
-
const concurrencyGroup = options.concurrencyGroup ?? (typeof
|
|
37
|
-
if (options.
|
|
35
|
+
const firstContext = options.contexts?.[0];
|
|
36
|
+
const concurrencyGroup = options.concurrencyGroup ?? (typeof firstContext === "string" ? firstContext : void 0);
|
|
37
|
+
if (options.context !== void 0 && options.contexts !== void 0) throw new Error(`job('${name}'): context and contexts are mutually exclusive — use one`);
|
|
38
38
|
if (options.runsOn !== void 0 && options.runsOnAll !== void 0) throw new Error(`job('${name}'): runsOn and runsOnAll are mutually exclusive`);
|
|
39
39
|
if (options.runsOn === void 0 && options.runsOnAll === void 0) throw new Error(`job('${name}'): one of runsOn or runsOnAll is required`);
|
|
40
40
|
if (options.onUnreachable !== void 0 && options.runsOnAll === void 0) console.warn(`[kici] job('${name}'): onUnreachable is ignored without runsOnAll`);
|
|
@@ -57,8 +57,8 @@ function job(nameOrOptions, maybeOptions) {
|
|
|
57
57
|
exclude: options.exclude,
|
|
58
58
|
checkout: options.checkout,
|
|
59
59
|
container: options.container,
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
context: options.context,
|
|
61
|
+
contexts: options.contexts,
|
|
62
62
|
env: options.env,
|
|
63
63
|
concurrencyGroup,
|
|
64
64
|
onCancel: options.onCancel,
|
package/dist/secrets.d.ts
CHANGED
|
@@ -48,7 +48,7 @@ export interface MountedFile {
|
|
|
48
48
|
*
|
|
49
49
|
* The SDK owns the public surface (`mountFile` / `exposeFile`) but defers
|
|
50
50
|
* disk and `process.env` operations to the agent so the SDK stays free of
|
|
51
|
-
* any `node:fs` / `node:os` imports. Local preview/run mode (`kici preview` / `kici run local`) plugs
|
|
51
|
+
* any `node:fs` / `node:os` imports. Local preview/run mode (`kici preview` / `kici run --local`) plugs
|
|
52
52
|
* in the same adapter shape against `os.tmpdir()`.
|
|
53
53
|
*/
|
|
54
54
|
export interface StepSecretsFileHost {
|
package/dist/types.d.ts
CHANGED
|
@@ -471,18 +471,18 @@ export interface Job {
|
|
|
471
471
|
readonly checkout?: boolean;
|
|
472
472
|
/** Docker image for job execution. All steps run inside the container. */
|
|
473
473
|
readonly container?: string | ContainerConfig;
|
|
474
|
-
/**
|
|
475
|
-
readonly
|
|
474
|
+
/** Bound context for this job. String for static, or a function of the normalized event envelope for dynamic (resolved at orchestrator two-phase eval). */
|
|
475
|
+
readonly context?: string | ((event: EventPayload) => string | Promise<string>);
|
|
476
476
|
/**
|
|
477
|
-
*
|
|
478
|
-
* earlier on name collisions). Mutually exclusive with `
|
|
477
|
+
* Bound contexts for this job, in merge order (later entries override
|
|
478
|
+
* earlier on name collisions). Mutually exclusive with `context`. Each entry
|
|
479
479
|
* is a static name or a function of the event (dynamic, resolved per element at
|
|
480
480
|
* two-phase eval).
|
|
481
481
|
*/
|
|
482
|
-
readonly
|
|
482
|
+
readonly contexts?: readonly (string | ((event: EventPayload) => string | Promise<string>))[];
|
|
483
483
|
/** Environment variables. Static object or a function of the normalized event envelope (resolved at orchestrator two-phase eval). */
|
|
484
484
|
readonly env?: Record<string, string> | ((event: EventPayload) => Record<string, string> | Promise<Record<string, string>>);
|
|
485
|
-
/** Concurrency group name. Defaults to the first bound
|
|
485
|
+
/** Concurrency group name. Defaults to the first bound context's name if not set. String or a function of the normalized event envelope. */
|
|
486
486
|
readonly concurrencyGroup?: string | ((event: EventPayload) => string | Promise<string>);
|
|
487
487
|
/** Runs on cancellation. */
|
|
488
488
|
readonly onCancel?: HookInput;
|
|
@@ -619,18 +619,18 @@ export interface JobOptions {
|
|
|
619
619
|
* When set, all steps run inside the container.
|
|
620
620
|
*/
|
|
621
621
|
container?: string | ContainerConfig;
|
|
622
|
-
/**
|
|
623
|
-
|
|
622
|
+
/** Bound context for this job. String for static, or a function of the normalized event envelope for dynamic (resolved at orchestrator two-phase eval). */
|
|
623
|
+
context?: string | ((event: EventPayload) => string | Promise<string>);
|
|
624
624
|
/**
|
|
625
|
-
*
|
|
626
|
-
* earlier on name collisions). Mutually exclusive with `
|
|
625
|
+
* Bound contexts for this job, in merge order (later entries override
|
|
626
|
+
* earlier on name collisions). Mutually exclusive with `context`. Each entry
|
|
627
627
|
* is a static name or a function of the event (dynamic, resolved per element at
|
|
628
628
|
* two-phase eval).
|
|
629
629
|
*/
|
|
630
|
-
|
|
630
|
+
contexts?: (string | ((event: EventPayload) => string | Promise<string>))[];
|
|
631
631
|
/** Environment variables. Static object or a function of the normalized event envelope (resolved at orchestrator two-phase eval). */
|
|
632
632
|
env?: Record<string, string> | ((event: EventPayload) => Record<string, string> | Promise<Record<string, string>>);
|
|
633
|
-
/** Concurrency group name. Defaults to the first bound
|
|
633
|
+
/** Concurrency group name. Defaults to the first bound context's name if not set. String or a function of the normalized event envelope. */
|
|
634
634
|
concurrencyGroup?: string | ((event: EventPayload) => string | Promise<string>);
|
|
635
635
|
/** Runs on cancellation. */
|
|
636
636
|
onCancel?: HookInput;
|
|
@@ -679,8 +679,8 @@ export interface JobOptions {
|
|
|
679
679
|
* Private npm registry declaration. Tells the agent to authenticate against
|
|
680
680
|
* a private package registry before running `npm install`.
|
|
681
681
|
*
|
|
682
|
-
* `tokenSecret` uses qualified `<
|
|
683
|
-
* orchestrator resolves the secret from the named
|
|
682
|
+
* `tokenSecret` uses qualified `<context>:<secret-name>` syntax — the
|
|
683
|
+
* orchestrator resolves the secret from the named context's scoped secret
|
|
684
684
|
* store at dispatch time. Example: `tokenSecret: 'production:NPM_TOKEN'`.
|
|
685
685
|
*/
|
|
686
686
|
export interface Registry {
|
|
@@ -692,8 +692,8 @@ export interface Registry {
|
|
|
692
692
|
*/
|
|
693
693
|
readonly scope?: string;
|
|
694
694
|
/**
|
|
695
|
-
* Qualified secret reference of the form `<
|
|
696
|
-
* The orchestrator resolves it at dispatch via `secretResolver.resolveForJob(orgId,
|
|
695
|
+
* Qualified secret reference of the form `<context>:<secret-name>`.
|
|
696
|
+
* The orchestrator resolves it at dispatch via `secretResolver.resolveForJob(orgId, context)`.
|
|
697
697
|
*/
|
|
698
698
|
readonly tokenSecret: string;
|
|
699
699
|
/** Whether to require auth on every request (rendered as `always-auth=true` in `.npmrc`). Defaults to `true`. */
|
|
@@ -721,14 +721,14 @@ export interface Workflow {
|
|
|
721
721
|
readonly hashFiles?: string[];
|
|
722
722
|
/**
|
|
723
723
|
* Private npm registries the agent should authenticate against before `npm install`.
|
|
724
|
-
* Each registry's `tokenSecret` uses qualified `<
|
|
724
|
+
* Each registry's `tokenSecret` uses qualified `<context>:<secret-name>` syntax.
|
|
725
725
|
*/
|
|
726
726
|
readonly registries?: readonly Registry[];
|
|
727
727
|
/**
|
|
728
728
|
* Extra secrets to project as environment variables on the install subprocess.
|
|
729
729
|
* Used together with a customer-committed `.kici/.npmrc` containing `${VAR}` placeholders.
|
|
730
|
-
* Each entry uses qualified `<
|
|
731
|
-
* exposed to the install subprocess under the `<secret-name>` key (the
|
|
730
|
+
* Each entry uses qualified `<context>:<secret-name>` syntax; the resolved value is
|
|
731
|
+
* exposed to the install subprocess under the `<secret-name>` key (the context
|
|
732
732
|
* prefix is stripped for the env-var name).
|
|
733
733
|
*/
|
|
734
734
|
readonly installEnv?: readonly string[];
|
|
@@ -775,13 +775,13 @@ export interface WorkflowOptions {
|
|
|
775
775
|
hashFiles?: string[];
|
|
776
776
|
/**
|
|
777
777
|
* Private npm registries the agent should authenticate against before `npm install`.
|
|
778
|
-
* Each registry's `tokenSecret` uses qualified `<
|
|
778
|
+
* Each registry's `tokenSecret` uses qualified `<context>:<secret-name>` syntax.
|
|
779
779
|
*/
|
|
780
780
|
registries?: Registry[];
|
|
781
781
|
/**
|
|
782
782
|
* Extra secrets to project as environment variables on the install subprocess.
|
|
783
783
|
* Used together with a customer-committed `.kici/.npmrc` containing `${VAR}` placeholders.
|
|
784
|
-
* Each entry uses qualified `<
|
|
784
|
+
* Each entry uses qualified `<context>:<secret-name>` syntax; the resolved value is
|
|
785
785
|
* exposed to the install subprocess under the `<secret-name>` key.
|
|
786
786
|
*/
|
|
787
787
|
installEnv?: string[];
|
package/dist/workflow.js
CHANGED
|
@@ -27,7 +27,7 @@ function normalizeTriggers(on) {
|
|
|
27
27
|
* });
|
|
28
28
|
*/
|
|
29
29
|
/**
|
|
30
|
-
* Validates a `<
|
|
30
|
+
* Validates a `<context>:<secret-name>` qualified secret reference.
|
|
31
31
|
* Both halves must be non-empty and free of additional colons.
|
|
32
32
|
*/
|
|
33
33
|
function isQualifiedSecretRef(value) {
|
|
@@ -47,7 +47,7 @@ function workflow(name, options) {
|
|
|
47
47
|
} catch {
|
|
48
48
|
throw new Error(`workflow('${name}'): registries[${i}].url is not a valid URL: ${reg.url}`);
|
|
49
49
|
}
|
|
50
|
-
if (!isQualifiedSecretRef(reg.tokenSecret)) throw new Error(`workflow('${name}'): registries[${i}].tokenSecret must use qualified <
|
|
50
|
+
if (!isQualifiedSecretRef(reg.tokenSecret)) throw new Error(`workflow('${name}'): registries[${i}].tokenSecret must use qualified <context>:<secret-name> syntax (got: ${reg.tokenSecret})`);
|
|
51
51
|
if (reg.scope === void 0) defaultCount += 1;
|
|
52
52
|
else {
|
|
53
53
|
if (!/^@[a-z0-9][a-z0-9-]*$/i.test(reg.scope)) throw new Error(`workflow('${name}'): registries[${i}].scope must match @<package-scope> (got: ${reg.scope})`);
|
|
@@ -58,7 +58,7 @@ function workflow(name, options) {
|
|
|
58
58
|
if (defaultCount > 1) throw new Error(`workflow('${name}'): at most one registries entry may omit \`scope\` (default registry); got ${defaultCount}`);
|
|
59
59
|
}
|
|
60
60
|
if (options.installEnv) {
|
|
61
|
-
for (const [i, ref] of options.installEnv.entries()) if (!isQualifiedSecretRef(ref)) throw new Error(`workflow('${name}'): installEnv[${i}] must use qualified <
|
|
61
|
+
for (const [i, ref] of options.installEnv.entries()) if (!isQualifiedSecretRef(ref)) throw new Error(`workflow('${name}'): installEnv[${i}] must use qualified <context>:<secret-name> syntax (got: ${ref})`);
|
|
62
62
|
}
|
|
63
63
|
return {
|
|
64
64
|
_tag: "Workflow",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kici-dev/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.27",
|
|
4
4
|
"description": "TypeScript SDK for defining KiCI workflows. Import into `.kici/workflows/*.ts` to declare workflows, jobs, steps, triggers, rules, and matrix configurations.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ci",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
"micromatch": "^4.0.8",
|
|
50
50
|
"zod": "^4.4.3",
|
|
51
51
|
"zx": "^8.8.5",
|
|
52
|
-
"@kici-dev/
|
|
53
|
-
"@kici-dev/
|
|
52
|
+
"@kici-dev/engine": "0.1.27",
|
|
53
|
+
"@kici-dev/core": "0.1.27"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/micromatch": "^4.0.10"
|
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/sdk@0.1.
|
|
6
|
-
"documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Fsdk/0.1.
|
|
5
|
+
"name": "@kici-dev/sdk@0.1.27",
|
|
6
|
+
"documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Fsdk/0.1.27/8f9f4abb-dbda-4186-914a-0f3730db25a2",
|
|
7
7
|
"creationInfo": {
|
|
8
|
-
"created": "2026-07-
|
|
8
|
+
"created": "2026-07-10T06:04:01Z",
|
|
9
9
|
"creators": [
|
|
10
10
|
"Tool: kici-sbom-generator"
|
|
11
11
|
]
|
|
@@ -146,9 +146,9 @@
|
|
|
146
146
|
"homepage": "https://ericsmekens.github.io/jsep/tree/master/packages/regex#readme"
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
|
-
"SPDXID": "SPDXRef-Package--kici-dev-core-0.1.
|
|
149
|
+
"SPDXID": "SPDXRef-Package--kici-dev-core-0.1.27",
|
|
150
150
|
"name": "@kici-dev/core",
|
|
151
|
-
"versionInfo": "0.1.
|
|
151
|
+
"versionInfo": "0.1.27",
|
|
152
152
|
"downloadLocation": "NOASSERTION",
|
|
153
153
|
"filesAnalyzed": false,
|
|
154
154
|
"licenseConcluded": "NOASSERTION",
|
|
@@ -159,16 +159,16 @@
|
|
|
159
159
|
{
|
|
160
160
|
"referenceCategory": "PACKAGE-MANAGER",
|
|
161
161
|
"referenceType": "purl",
|
|
162
|
-
"referenceLocator": "pkg:npm/%40kici-dev/core@0.1.
|
|
162
|
+
"referenceLocator": "pkg:npm/%40kici-dev/core@0.1.27"
|
|
163
163
|
}
|
|
164
164
|
],
|
|
165
165
|
"description": "Light shared utilities for the KiCI stack (logging, errors, formatting, crypto, zx init, the TypeScript ESM loader hook). No server-side dependencies.",
|
|
166
166
|
"homepage": "https://kici.dev"
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
|
-
"SPDXID": "SPDXRef-Package--kici-dev-engine-0.1.
|
|
169
|
+
"SPDXID": "SPDXRef-Package--kici-dev-engine-0.1.27",
|
|
170
170
|
"name": "@kici-dev/engine",
|
|
171
|
-
"versionInfo": "0.1.
|
|
171
|
+
"versionInfo": "0.1.27",
|
|
172
172
|
"downloadLocation": "NOASSERTION",
|
|
173
173
|
"filesAnalyzed": false,
|
|
174
174
|
"licenseConcluded": "NOASSERTION",
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
{
|
|
180
180
|
"referenceCategory": "PACKAGE-MANAGER",
|
|
181
181
|
"referenceType": "purl",
|
|
182
|
-
"referenceLocator": "pkg:npm/%40kici-dev/engine@0.1.
|
|
182
|
+
"referenceLocator": "pkg:npm/%40kici-dev/engine@0.1.27"
|
|
183
183
|
}
|
|
184
184
|
],
|
|
185
185
|
"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.",
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
{
|
|
189
189
|
"SPDXID": "SPDXRef-RootPackage",
|
|
190
190
|
"name": "@kici-dev/sdk",
|
|
191
|
-
"versionInfo": "0.1.
|
|
191
|
+
"versionInfo": "0.1.27",
|
|
192
192
|
"downloadLocation": "NOASSERTION",
|
|
193
193
|
"filesAnalyzed": false,
|
|
194
194
|
"licenseConcluded": "NOASSERTION",
|
|
@@ -199,7 +199,7 @@
|
|
|
199
199
|
{
|
|
200
200
|
"referenceCategory": "PACKAGE-MANAGER",
|
|
201
201
|
"referenceType": "purl",
|
|
202
|
-
"referenceLocator": "pkg:npm/%40kici-dev/sdk@0.1.
|
|
202
|
+
"referenceLocator": "pkg:npm/%40kici-dev/sdk@0.1.27"
|
|
203
203
|
}
|
|
204
204
|
],
|
|
205
205
|
"description": "TypeScript SDK for defining KiCI workflows. Import into `.kici/workflows/*.ts` to declare workflows, jobs, steps, triggers, rules, and matrix configurations.",
|
|
@@ -1584,68 +1584,68 @@
|
|
|
1584
1584
|
"relationshipType": "DEPENDS_ON"
|
|
1585
1585
|
},
|
|
1586
1586
|
{
|
|
1587
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.
|
|
1587
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.27",
|
|
1588
1588
|
"relatedSpdxElement": "SPDXRef-Package-oxc-transform-0.135.0",
|
|
1589
1589
|
"relationshipType": "DEPENDS_ON"
|
|
1590
1590
|
},
|
|
1591
1591
|
{
|
|
1592
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.
|
|
1592
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.27",
|
|
1593
1593
|
"relatedSpdxElement": "SPDXRef-Package-picocolors-1.1.1",
|
|
1594
1594
|
"relationshipType": "DEPENDS_ON"
|
|
1595
1595
|
},
|
|
1596
1596
|
{
|
|
1597
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.
|
|
1597
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.27",
|
|
1598
1598
|
"relatedSpdxElement": "SPDXRef-Package-winston-daily-rotate-file-5.0.0",
|
|
1599
1599
|
"relationshipType": "DEPENDS_ON"
|
|
1600
1600
|
},
|
|
1601
1601
|
{
|
|
1602
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.
|
|
1602
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.27",
|
|
1603
1603
|
"relatedSpdxElement": "SPDXRef-Package-winston-3.19.0",
|
|
1604
1604
|
"relationshipType": "DEPENDS_ON"
|
|
1605
1605
|
},
|
|
1606
1606
|
{
|
|
1607
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.
|
|
1607
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.27",
|
|
1608
1608
|
"relatedSpdxElement": "SPDXRef-Package-zod-4.4.3",
|
|
1609
1609
|
"relationshipType": "DEPENDS_ON"
|
|
1610
1610
|
},
|
|
1611
1611
|
{
|
|
1612
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.
|
|
1612
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-core-0.1.27",
|
|
1613
1613
|
"relatedSpdxElement": "SPDXRef-Package-zx-8.8.5",
|
|
1614
1614
|
"relationshipType": "DEPENDS_ON"
|
|
1615
1615
|
},
|
|
1616
1616
|
{
|
|
1617
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.
|
|
1617
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.27",
|
|
1618
1618
|
"relatedSpdxElement": "SPDXRef-Package-jose-6.2.3",
|
|
1619
1619
|
"relationshipType": "DEPENDS_ON"
|
|
1620
1620
|
},
|
|
1621
1621
|
{
|
|
1622
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.
|
|
1622
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.27",
|
|
1623
1623
|
"relatedSpdxElement": "SPDXRef-Package-jsonpath-plus-10.4.0",
|
|
1624
1624
|
"relationshipType": "DEPENDS_ON"
|
|
1625
1625
|
},
|
|
1626
1626
|
{
|
|
1627
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.
|
|
1627
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.27",
|
|
1628
1628
|
"relatedSpdxElement": "SPDXRef-Package-picomatch-4.0.4",
|
|
1629
1629
|
"relationshipType": "DEPENDS_ON"
|
|
1630
1630
|
},
|
|
1631
1631
|
{
|
|
1632
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.
|
|
1632
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.27",
|
|
1633
1633
|
"relatedSpdxElement": "SPDXRef-Package-safe-regex-2.1.1",
|
|
1634
1634
|
"relationshipType": "DEPENDS_ON"
|
|
1635
1635
|
},
|
|
1636
1636
|
{
|
|
1637
|
-
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.
|
|
1637
|
+
"spdxElementId": "SPDXRef-Package--kici-dev-engine-0.1.27",
|
|
1638
1638
|
"relatedSpdxElement": "SPDXRef-Package-zod-4.4.3",
|
|
1639
1639
|
"relationshipType": "DEPENDS_ON"
|
|
1640
1640
|
},
|
|
1641
1641
|
{
|
|
1642
1642
|
"spdxElementId": "SPDXRef-RootPackage",
|
|
1643
|
-
"relatedSpdxElement": "SPDXRef-Package--kici-dev-core-0.1.
|
|
1643
|
+
"relatedSpdxElement": "SPDXRef-Package--kici-dev-core-0.1.27",
|
|
1644
1644
|
"relationshipType": "DEPENDS_ON"
|
|
1645
1645
|
},
|
|
1646
1646
|
{
|
|
1647
1647
|
"spdxElementId": "SPDXRef-RootPackage",
|
|
1648
|
-
"relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.1.
|
|
1648
|
+
"relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.1.27",
|
|
1649
1649
|
"relationshipType": "DEPENDS_ON"
|
|
1650
1650
|
},
|
|
1651
1651
|
{
|