@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 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 deployment environment name for this job.
193
- * Set when the job declares an `environment` property.
194
- * Undefined for jobs without an environment.
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
- environment?: string;
196
+ context?: string;
197
197
  /**
198
- * Secrets resolved for this job's environment.
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
@@ -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 and local-executor check-mode drive for free — no engine, agent,
99
- * orchestrator, or lockfile change.
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
@@ -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 and local-executor check-mode drive for free — no engine, agent,
83
- * orchestrator, or lockfile change.
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 firstEnv = options.environments?.[0];
36
- const concurrencyGroup = options.concurrencyGroup ?? (typeof firstEnv === "string" ? firstEnv : void 0);
37
- if (options.environment !== void 0 && options.environments !== void 0) throw new Error(`job('${name}'): environment and environments are mutually exclusive — use one`);
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
- environment: options.environment,
61
- environments: options.environments,
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
- /** Deployment environment for this job. String for static, or a function of the normalized event envelope for dynamic (resolved at orchestrator two-phase eval). */
475
- readonly environment?: string | ((event: EventPayload) => string | Promise<string>);
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
- * Deployment environments for this job, in merge order (later entries override
478
- * earlier on name collisions). Mutually exclusive with `environment`. Each entry
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 environments?: readonly (string | ((event: EventPayload) => string | Promise<string>))[];
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 environment's name if not set. String or a function of the normalized event envelope. */
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
- /** Deployment environment for this job. String for static, or a function of the normalized event envelope for dynamic (resolved at orchestrator two-phase eval). */
623
- environment?: string | ((event: EventPayload) => string | Promise<string>);
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
- * Deployment environments for this job, in merge order (later entries override
626
- * earlier on name collisions). Mutually exclusive with `environment`. Each entry
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
- environments?: (string | ((event: EventPayload) => string | Promise<string>))[];
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 environment's name if not set. String or a function of the normalized event envelope. */
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 `<environment>:<secret-name>` syntax — the
683
- * orchestrator resolves the secret from the named environment's scoped secret
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 `<environment>:<secret-name>`.
696
- * The orchestrator resolves it at dispatch via `secretResolver.resolveForJob(orgId, environment)`.
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 `<environment>:<secret-name>` syntax.
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 `<environment>:<secret-name>` syntax; the resolved value is
731
- * exposed to the install subprocess under the `<secret-name>` key (the environment
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 `<environment>:<secret-name>` syntax.
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 `<environment>:<secret-name>` syntax; the resolved value is
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 `<environment>:<secret-name>` qualified secret reference.
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 <environment>:<secret-name> syntax (got: ${reg.tokenSecret})`);
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 <environment>:<secret-name> syntax (got: ${ref})`);
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.25",
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/core": "0.1.25",
53
- "@kici-dev/engine": "0.1.25"
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.25",
6
- "documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Fsdk/0.1.25/28cc15a9-6a0e-47f1-956b-685f5211df15",
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-05T08:32:31Z",
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.25",
149
+ "SPDXID": "SPDXRef-Package--kici-dev-core-0.1.27",
150
150
  "name": "@kici-dev/core",
151
- "versionInfo": "0.1.25",
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.25"
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.25",
169
+ "SPDXID": "SPDXRef-Package--kici-dev-engine-0.1.27",
170
170
  "name": "@kici-dev/engine",
171
- "versionInfo": "0.1.25",
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.25"
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.25",
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.25"
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.25",
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.25",
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.25",
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.25",
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.25",
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.25",
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.25",
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.25",
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.25",
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.25",
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.25",
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.25",
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.25",
1648
+ "relatedSpdxElement": "SPDXRef-Package--kici-dev-engine-0.1.27",
1649
1649
  "relationshipType": "DEPENDS_ON"
1650
1650
  },
1651
1651
  {