@kici-dev/sdk 0.1.19 → 0.1.21
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/api-types.d.ts +18 -0
- package/dist/api-types.js +4 -0
- package/dist/index.d.ts +2 -2
- package/dist/step.d.ts +21 -1
- package/dist/step.js +5 -0
- package/dist/types.d.ts +53 -4
- package/package.json +3 -3
- package/sbom.spdx.json +24 -24
package/dist/api-types.d.ts
CHANGED
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
* 2. Register the handler in the orchestrator's AgentApiRegistry
|
|
10
10
|
*/
|
|
11
11
|
import { type OidcTokenResult } from '@kici-dev/engine/protocol/messages/oidc-token-relay';
|
|
12
|
+
import type { HostInventoryEntry, InventorySelector } from '@kici-dev/engine';
|
|
12
13
|
export type { OidcTokenResult };
|
|
14
|
+
export type { HostInventoryEntry, InventorySelector };
|
|
13
15
|
export interface InfrastructureListResult {
|
|
14
16
|
scalers: Array<{
|
|
15
17
|
name: string;
|
|
@@ -42,9 +44,25 @@ export interface OidcApi {
|
|
|
42
44
|
audience: string;
|
|
43
45
|
}): Promise<OidcTokenResult>;
|
|
44
46
|
}
|
|
47
|
+
export interface InventoryApi {
|
|
48
|
+
/**
|
|
49
|
+
* Query the host roster of the caller's orchestrator cluster. Omit the
|
|
50
|
+
* selector ⇒ all hosts. Server-side filtering is label-based (reuses the
|
|
51
|
+
* runsOnAll glob/regex matchers); filter on `properties` client-side in the
|
|
52
|
+
* workflow. Available to steps and dynamic-job generators — a generator can
|
|
53
|
+
* fan out one job per matching host. The roster is live, so a dynamic-job
|
|
54
|
+
* generator inherits the same non-determinism contract as
|
|
55
|
+
* `infrastructure.list()`.
|
|
56
|
+
*/
|
|
57
|
+
query(selector?: InventorySelector): Promise<HostInventoryEntry[]>;
|
|
58
|
+
/** Look up one host by agent id; null when the host is not in the roster. */
|
|
59
|
+
get(agentId: string): Promise<HostInventoryEntry | null>;
|
|
60
|
+
}
|
|
45
61
|
export interface KiciApi {
|
|
46
62
|
/** Query orchestrator infrastructure (scalers, agents). */
|
|
47
63
|
infrastructure: InfrastructureApi;
|
|
64
|
+
/** Query the host roster / inventory (labels + typed properties). */
|
|
65
|
+
inventory: InventoryApi;
|
|
48
66
|
/** Request short-lived OIDC ID tokens for the current job (build provenance). */
|
|
49
67
|
oidc: OidcApi;
|
|
50
68
|
}
|
package/dist/api-types.js
CHANGED
|
@@ -26,6 +26,10 @@ import { OIDC_TOKEN_REQUEST_METHOD } from "@kici-dev/engine/protocol/messages/oi
|
|
|
26
26
|
function buildKiciApi(transport, jobCtx) {
|
|
27
27
|
return {
|
|
28
28
|
infrastructure: { list: () => transport("infrastructure.list", {}) },
|
|
29
|
+
inventory: {
|
|
30
|
+
query: (selector) => transport("inventory.query", { ...selector ?? {} }),
|
|
31
|
+
get: (agentId) => transport("inventory.get", { agentId })
|
|
32
|
+
},
|
|
29
33
|
oidc: { token: (opts) => {
|
|
30
34
|
if (!jobCtx) return Promise.reject(/* @__PURE__ */ new Error("ctx.kici.oidc.token() is only available inside a running job step"));
|
|
31
35
|
return transport(OIDC_TOKEN_REQUEST_METHOD, {
|
package/dist/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export { isEventType } from './rules/index.js';
|
|
|
13
13
|
export type { Rule, RuleContext, RuleCheckFn, RuleResult, EventPayload, RuleEvaluationResult, EventBase, PullRequestEventPayload, PushEventPayload, TagEventPayload, CommentEventPayload, ReviewEventPayload, ReviewCommentEventPayload, ReleaseEventPayload, DispatchEventPayload, CreateEventPayload, DeleteEventPayload, StatusEventPayload, WorkflowRunEventPayload, ForkEventPayload, StarEventPayload, WatchEventPayload, WebhookEventPayload, KiciEventPayload, WorkflowCompleteEventPayload, JobCompleteEventPayload, GenericWebhookEventPayload, ScheduleEventPayload, LifecycleEventPayload, GitHubRepository, GitHubUser, GitHubPullRequest, GitHubCommit, GitHubComment, GitHubReview, GitHubRelease, } from './rules/index.js';
|
|
14
14
|
export { validateDag } from './validation/index.js';
|
|
15
15
|
export type { DagNode, DagValidationResult } from './validation/index.js';
|
|
16
|
-
export type { SourceLocation, OutputProxy, Step, StepOptions, StepRunFn, BareStepFn, StepInput, OutputSchema, InferOutputs, Job, JobOptions, GenericInitConfig, MiseInitConfig, InitPreset, InitItem, InitConfig, ContainerConfig, RunsOnSelector, RunsOn, Workflow, WorkflowOptions, Registry, Trigger, DynamicJobFn, DynamicJobContext, JobOrFactory, } from './types.js';
|
|
16
|
+
export type { SourceLocation, OutputProxy, Step, StepOptions, StepOptionsBase, StepOptionsPlain, StepOptionsWithCheck, StepRunFn, BareStepFn, StepInput, OutputSchema, InferOutputs, Job, JobOptions, GenericInitConfig, MiseInitConfig, InitPreset, InitItem, InitConfig, ContainerConfig, RunsOnSelector, RunsOn, Workflow, WorkflowOptions, Registry, Trigger, DynamicJobFn, DynamicJobContext, JobOrFactory, } from './types.js';
|
|
17
17
|
export { isDynamicJobFn, dynamicJob, getDynamicJobGroup, getDynamicJobNeeds, DYNAMIC_JOB_GROUP_TAG, DYNAMIC_JOB_NEEDS_TAG, } from './types.js';
|
|
18
18
|
export type { TaggedDynamicJobFn, ResultAwareDynamicJobConfig, ResultAwareDynamicJobFn, DynamicJobNeed, } from './types.js';
|
|
19
19
|
export { buildNeedsContext } from './needs-context.js';
|
|
@@ -28,7 +28,7 @@ export type { DynamicGroupRef } from './dynamic-group.js';
|
|
|
28
28
|
export type { StepContext, Logger, WorkflowInfo, JobInfo, AgentInfo, MatrixJobOutputs, HostJobOutputs, RepoInfo, StepSecretsTyped, KnownSecretKeys, } from './context.js';
|
|
29
29
|
export { isMatrixJobOutputs, isHostJobOutputs } from './context.js';
|
|
30
30
|
export { buildKiciApi } from './api-types.js';
|
|
31
|
-
export type { KiciApi, KiciApiTransport, InfrastructureApi, InfrastructureListResult, } from './api-types.js';
|
|
31
|
+
export type { KiciApi, KiciApiTransport, InfrastructureApi, InfrastructureListResult, InventoryApi, HostInventoryEntry, InventorySelector, } from './api-types.js';
|
|
32
32
|
export { SecretNotFoundError } from './errors.js';
|
|
33
33
|
export { createStepSecrets } from './secrets.js';
|
|
34
34
|
export type { StepSecrets, TrackedStepSecrets, SecretMeta, SecretFileOptions, MountedFile, StepSecretsFileHost, StepSecretsFileWiring, StepSecretsHandle, StepSecretMountKind, StepSecretMountRecord, } from './secrets.js';
|
package/dist/step.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Step, StepOptions, StepRunFn } from './types.js';
|
|
1
|
+
import type { Step, StepOptions, StepOptionsWithCheck, StepRunFn } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Create an id-less step with just a run function.
|
|
4
4
|
* The compiler assigns a counter-based ID (step-1, step-2, etc.) at lock file generation.
|
|
@@ -47,4 +47,24 @@ export declare function step(name: string, run: StepRunFn): Step<void>;
|
|
|
47
47
|
* });
|
|
48
48
|
*/
|
|
49
49
|
export declare function step<TResult = void>(name: string, options: StepOptions<TResult>): Step<TResult>;
|
|
50
|
+
/**
|
|
51
|
+
* Create a named idempotent step with a check facet.
|
|
52
|
+
*
|
|
53
|
+
* `check` returns a drift value (or null when in sync); `run` becomes the apply
|
|
54
|
+
* function and receives that drift; `summarize` renders the drift for logs and
|
|
55
|
+
* the dashboard. `whenInSync` optionally produces the outputs when already in sync.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* const nginx = step('configure-nginx', {
|
|
59
|
+
* check: async (ctx) => (await inSync(ctx)) ? null : { want: DESIRED },
|
|
60
|
+
* summarize: (drift) => `would rewrite nginx.conf (${drift.want.length} bytes)`,
|
|
61
|
+
* run: async (ctx, drift) => { await writeConfig(drift.want); return { reloaded: true }; },
|
|
62
|
+
* whenInSync: async () => ({ reloaded: false }),
|
|
63
|
+
* });
|
|
64
|
+
*/
|
|
65
|
+
export declare function step<TResult = void, TDrift = unknown>(name: string, options: StepOptionsWithCheck<TResult, TDrift>): Step<TResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Create an id-less idempotent step with a check facet.
|
|
68
|
+
*/
|
|
69
|
+
export declare function step<TResult = void, TDrift = unknown>(options: StepOptionsWithCheck<TResult, TDrift>): Step<TResult>;
|
|
50
70
|
//# sourceMappingURL=step.d.ts.map
|
package/dist/step.js
CHANGED
|
@@ -58,11 +58,16 @@ function step(nameOrRunOrOptions, runOrOptions) {
|
|
|
58
58
|
name = "";
|
|
59
59
|
options = nameOrRunOrOptions;
|
|
60
60
|
}
|
|
61
|
+
if (options.check && !options.summarize) throw new Error("summarize is required when check is set");
|
|
61
62
|
return {
|
|
62
63
|
_tag: "Step",
|
|
63
64
|
name,
|
|
64
65
|
outputs: options.outputs,
|
|
65
66
|
run: options.run,
|
|
67
|
+
...options.check !== void 0 && { check: options.check },
|
|
68
|
+
...options.summarize !== void 0 && { summarize: options.summarize },
|
|
69
|
+
...options.drift !== void 0 && { drift: options.drift },
|
|
70
|
+
...options.whenInSync !== void 0 && { whenInSync: options.whenInSync },
|
|
66
71
|
continueOnError: options.continueOnError,
|
|
67
72
|
timeout: options.timeout,
|
|
68
73
|
...options.cache !== void 0 && { cache: options.cache },
|
package/dist/types.d.ts
CHANGED
|
@@ -41,7 +41,18 @@ export interface Step<TResult = void> {
|
|
|
41
41
|
readonly name: string;
|
|
42
42
|
/** Optional Zod schema for runtime output validation. */
|
|
43
43
|
readonly outputs?: OutputSchema;
|
|
44
|
-
readonly run: (ctx: StepContext) => Promise<TResult>;
|
|
44
|
+
readonly run: (ctx: StepContext, drift?: any) => Promise<TResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Read-only inspection for an idempotent step. Returns a drift value when run()
|
|
47
|
+
* would change state, or null when the system is already in the desired state.
|
|
48
|
+
*/
|
|
49
|
+
readonly check?: (ctx: StepContext) => Promise<unknown | null>;
|
|
50
|
+
/** Required when check is set: human-readable, serializable summary of the drift. */
|
|
51
|
+
readonly summarize?: (drift: any) => string;
|
|
52
|
+
/** Optional Zod schema validating the drift value. */
|
|
53
|
+
readonly drift?: z.ZodTypeAny;
|
|
54
|
+
/** Optional: produces the step's outputs when check() returns null (already in sync). */
|
|
55
|
+
readonly whenInSync?: (ctx: StepContext) => Promise<TResult>;
|
|
45
56
|
/** When true, job proceeds even if this step fails (recorded as failed but not fatal). */
|
|
46
57
|
readonly continueOnError?: boolean;
|
|
47
58
|
/** Step-level timeout in milliseconds. Overrides the agent's default (30 minutes). */
|
|
@@ -77,11 +88,13 @@ export type BareStepFn<TResult = void> = (ctx: StepContext) => Promise<TResult>;
|
|
|
77
88
|
export type StepInput = Step<any> | BareStepFn<any>;
|
|
78
89
|
/** Options for step() factory - simple form (just async function) */
|
|
79
90
|
export type StepRunFn = (ctx: StepContext) => Promise<void>;
|
|
80
|
-
/**
|
|
81
|
-
|
|
91
|
+
/**
|
|
92
|
+
* Facets shared by both the plain and the check variant of {@link StepOptions}.
|
|
93
|
+
* These compose unchanged whether or not a step declares a `check` facet.
|
|
94
|
+
*/
|
|
95
|
+
export interface StepOptionsBase {
|
|
82
96
|
/** Optional Zod schema for runtime output validation. */
|
|
83
97
|
outputs?: OutputSchema;
|
|
84
|
-
run: (ctx: StepContext) => Promise<TResult>;
|
|
85
98
|
/** When true, job proceeds even if this step fails (recorded as failed but not fatal). */
|
|
86
99
|
continueOnError?: boolean;
|
|
87
100
|
/** Step-level timeout in milliseconds. Overrides the agent's default (30 minutes). */
|
|
@@ -97,6 +110,42 @@ export interface StepOptions<TResult = void> {
|
|
|
97
110
|
/** Pause for a manual human approval before this step runs. */
|
|
98
111
|
requireApproval?: RequireApproval;
|
|
99
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Plain step options: `run` takes only the context — the existing, fully
|
|
115
|
+
* backward-compatible shape. No `check` facet.
|
|
116
|
+
*/
|
|
117
|
+
export interface StepOptionsPlain<TResult = void> extends StepOptionsBase {
|
|
118
|
+
run: (ctx: StepContext) => Promise<TResult>;
|
|
119
|
+
check?: undefined;
|
|
120
|
+
summarize?: undefined;
|
|
121
|
+
drift?: undefined;
|
|
122
|
+
whenInSync?: undefined;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Idempotent-step options: `check` declares read-only inspection, `run` becomes
|
|
126
|
+
* the *apply* function and receives the drift value `check` returned. `summarize`
|
|
127
|
+
* is required. `whenInSync` optionally produces the outputs when already in sync.
|
|
128
|
+
*
|
|
129
|
+
* `TDrift` is independent of `TResult` — one output shape per step (whichever of
|
|
130
|
+
* `run` / `whenInSync` executes), and a separate drift shape that `check` returns.
|
|
131
|
+
*/
|
|
132
|
+
export interface StepOptionsWithCheck<TResult = void, TDrift = unknown> extends StepOptionsBase {
|
|
133
|
+
/** Read-only inspection. Returns drift when run() would change state, or null when in sync. */
|
|
134
|
+
check: (ctx: StepContext) => Promise<TDrift | null>;
|
|
135
|
+
/** Required when check is set: human-readable, serializable summary of the drift. */
|
|
136
|
+
summarize: (drift: TDrift) => string;
|
|
137
|
+
/** Optional Zod schema validating the drift value. */
|
|
138
|
+
drift?: z.ZodTypeAny;
|
|
139
|
+
/** Apply: runs only when check returned drift (apply mode); receives that drift. */
|
|
140
|
+
run: (ctx: StepContext, drift: TDrift) => Promise<TResult>;
|
|
141
|
+
/** Optional: produces the step's outputs when check returned null (already in sync). */
|
|
142
|
+
whenInSync?: (ctx: StepContext) => Promise<TResult>;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Options for step() factory - full form with outputs and generic return type.
|
|
146
|
+
* Either the plain shape (`run(ctx)`) or the idempotent shape (`check` + `run(ctx, drift)`).
|
|
147
|
+
*/
|
|
148
|
+
export type StepOptions<TResult = void, TDrift = unknown> = StepOptionsPlain<TResult> | StepOptionsWithCheck<TResult, TDrift>;
|
|
100
149
|
/** Trigger type (config objects returned by pr()/push() factory functions) */
|
|
101
150
|
export type Trigger = TriggerConfig;
|
|
102
151
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kici-dev/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.21",
|
|
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/core": "0.1.
|
|
53
|
-
"@kici-dev/engine": "0.1.
|
|
52
|
+
"@kici-dev/core": "0.1.21",
|
|
53
|
+
"@kici-dev/engine": "0.1.21"
|
|
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.21",
|
|
6
|
+
"documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Fsdk/0.1.21/1834e1a9-6047-4754-a53b-056d1a5e091c",
|
|
7
7
|
"creationInfo": {
|
|
8
|
-
"created": "2026-06-
|
|
8
|
+
"created": "2026-06-23T05:10:13Z",
|
|
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.21",
|
|
150
150
|
"name": "@kici-dev/core",
|
|
151
|
-
"versionInfo": "0.1.
|
|
151
|
+
"versionInfo": "0.1.21",
|
|
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.21"
|
|
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.21",
|
|
170
170
|
"name": "@kici-dev/engine",
|
|
171
|
-
"versionInfo": "0.1.
|
|
171
|
+
"versionInfo": "0.1.21",
|
|
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.21"
|
|
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.21",
|
|
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.21"
|
|
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.21",
|
|
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.21",
|
|
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.21",
|
|
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.21",
|
|
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.21",
|
|
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.21",
|
|
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.21",
|
|
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.21",
|
|
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.21",
|
|
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.21",
|
|
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.21",
|
|
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.21",
|
|
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.21",
|
|
1649
1649
|
"relationshipType": "DEPENDS_ON"
|
|
1650
1650
|
},
|
|
1651
1651
|
{
|