@kici-dev/engine 0.1.16 → 0.1.18
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/approval/types.js +1 -1
- package/dist/audit/access-log-policy.js +3 -1
- package/dist/audit/activity.js +1 -1
- package/dist/audit/retention-policy.js +5 -1
- package/dist/bundler/index.js +1 -1
- package/dist/bundler/rolldown-config.js +1 -1
- package/dist/env/environment-allowlist.d.ts +1 -1
- package/dist/env/environment-allowlist.js +13 -2
- package/dist/environment/index.js +1 -1
- package/dist/environment/scope-resolver.js +1 -1
- package/dist/environment/types.js +1 -1
- package/dist/fanout/materialize.d.ts +123 -0
- package/dist/fanout/materialize.js +176 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +9 -7
- package/dist/labels/compile.d.ts +40 -0
- package/dist/labels/compile.js +91 -0
- package/dist/labels-match.d.ts +32 -0
- package/dist/labels-match.js +55 -0
- package/dist/labels.js +1 -1
- package/dist/matrix/expand.d.ts +48 -0
- package/dist/matrix/expand.js +72 -0
- package/dist/matrix/format.d.ts +10 -0
- package/dist/matrix/format.js +20 -0
- package/dist/metrics/catalog-policy.js +8 -3
- package/dist/metrics/metric-catalog.generated.d.ts +11 -1
- package/dist/metrics/metric-catalog.generated.js +14 -2
- package/dist/protocol/analytics-events.js +1 -1
- package/dist/protocol/cluster-name.js +1 -1
- package/dist/protocol/dashboard-global-workflows.js +1 -1
- package/dist/protocol/dashboard-write-operations.js +1 -1
- package/dist/protocol/event-log-payload.js +1 -1
- package/dist/protocol/messages/access-log.d.ts +15 -5
- package/dist/protocol/messages/access-log.js +3 -1
- package/dist/protocol/messages/actor.js +1 -1
- package/dist/protocol/messages/auth.d.ts +1 -0
- package/dist/protocol/messages/auth.js +11 -2
- package/dist/protocol/messages/browser.js +1 -1
- package/dist/protocol/messages/capabilities.js +1 -1
- package/dist/protocol/messages/common.js +1 -1
- package/dist/protocol/messages/dashboard-global-workflows.js +1 -1
- package/dist/protocol/messages/dashboard.d.ts +985 -57
- package/dist/protocol/messages/dashboard.js +368 -13
- package/dist/protocol/messages/event-log.js +1 -1
- package/dist/protocol/messages/execution-status.d.ts +13 -1
- package/dist/protocol/messages/execution-status.js +13 -3
- package/dist/protocol/messages/join.js +1 -1
- package/dist/protocol/messages/log-pull.js +1 -1
- package/dist/protocol/messages/observe.d.ts +1 -0
- package/dist/protocol/messages/oidc-token-relay.d.ts +31 -0
- package/dist/protocol/messages/oidc-token-relay.js +34 -0
- package/dist/protocol/messages/orchestrator-agent.d.ts +56 -0
- package/dist/protocol/messages/orchestrator-agent.js +47 -2
- package/dist/protocol/messages/peer.d.ts +48 -0
- package/dist/protocol/messages/peer.js +12 -1
- package/dist/protocol/messages/platform-orchestrator.d.ts +171 -4
- package/dist/protocol/messages/platform-orchestrator.js +1 -1
- package/dist/protocol/messages/run-events.js +1 -1
- package/dist/protocol/messages/scaler-event.js +1 -1
- package/dist/protocol/messages/source-registration.d.ts +7 -6
- package/dist/protocol/messages/source-registration.js +7 -6
- package/dist/protocol/version.js +1 -1
- package/dist/provenance/bundle.d.ts +54 -0
- package/dist/provenance/bundle.js +53 -0
- package/dist/provenance/dsse.d.ts +39 -0
- package/dist/provenance/dsse.js +53 -0
- package/dist/provenance/schema.js +1 -1
- package/dist/provenance/verify.d.ts +71 -0
- package/dist/provenance/verify.js +135 -0
- package/dist/provider/changed-files-fetcher.js +1 -1
- package/dist/provider/check-run-conclusion.js +1 -1
- package/dist/provider/check-status-poster.js +1 -1
- package/dist/provider/clone-token-provider.js +1 -1
- package/dist/provider/contributor-resolver.js +1 -1
- package/dist/provider/index.js +1 -1
- package/dist/provider/lock-file-fetcher.js +1 -1
- package/dist/provider/lock-file-parse-error.js +3 -1
- package/dist/provider/repo-url-builder.js +1 -1
- package/dist/provider/types.d.ts +2 -2
- package/dist/provider/types.js +1 -1
- package/dist/provider/webhook-normalizer.js +1 -1
- package/dist/registration/registerable-trigger-type.js +1 -1
- package/dist/scaler/resource-types.js +1 -1
- package/dist/scaler/scaler-backend-type.js +1 -1
- package/dist/secrets/index.js +1 -1
- package/dist/secrets/types.js +1 -1
- package/dist/state-machine/index.js +1 -1
- package/dist/state-machine/machine.js +1 -1
- package/dist/state-machine/types.js +1 -1
- package/dist/trigger/decision-trace.js +1 -1
- package/dist/trigger/jsonpath-matcher.js +1 -1
- package/dist/trigger/matcher.js +1 -1
- package/dist/trigger/trigger-event-type.js +1 -1
- package/dist/trigger/types.d.ts +76 -3
- package/dist/trigger/types.js +33 -5
- package/dist/webhook/signature.js +1 -1
- package/dist/ws/close-codes.js +1 -1
- package/dist/ws/rate-limiter.js +3 -1
- package/dist/ws/ws-like.js +1 -1
- package/package.json +26 -3
- package/sbom.spdx.json +85 -10
- package/dist/protocol/messages/observe.js +0 -70
- package/dist/protocol/messages/test-run.js +0 -52
- /package/dist/{chunk-gOLHoazu.js → chunk-BTugEXQM.js} +0 -0
package/dist/trigger/types.d.ts
CHANGED
|
@@ -11,12 +11,17 @@
|
|
|
11
11
|
* Schema version 14: adds declarative cache specs to LockJob and LockStep.
|
|
12
12
|
* Schema version 15: adds per-job init config(s) to LockJob.
|
|
13
13
|
* Schema version 16: adds normalized approval config to LockWorkflow/LockJob/LockStep.
|
|
14
|
+
* Schema version 17: widens LockJob.init to typed presets ('mise' / { mise }) and 'auto' detection.
|
|
15
|
+
* Schema version 18: adds LockJob.runsOnAll host fan-out predicate + onUnreachable policy.
|
|
16
|
+
* Schema version 19: adds LockJob.maxParallel/failFast fan-out concurrency (rolling waves).
|
|
17
|
+
* Schema version 20: runsOn/runsOnAll/excludeLabels carry LabelMatcher (exact|regex) for glob+regex selectors.
|
|
14
18
|
*/
|
|
15
19
|
import { z } from 'zod';
|
|
16
20
|
import type { ProviderType } from '../provider/types.js';
|
|
17
21
|
import type { ApproverClause } from '../approval/types.js';
|
|
22
|
+
import { LabelMatcher } from '../labels-match.js';
|
|
18
23
|
/** Schema version - increment on breaking changes */
|
|
19
|
-
export declare const SCHEMA_VERSION:
|
|
24
|
+
export declare const SCHEMA_VERSION: 20;
|
|
20
25
|
/**
|
|
21
26
|
* Normalized approval config carried in the lock file. Produced by the compiler
|
|
22
27
|
* from an SDK `requireApproval` at any of the three levels; consumed by the
|
|
@@ -346,6 +351,17 @@ export interface LockInlineValue {
|
|
|
346
351
|
}
|
|
347
352
|
/** Type guard for inline expression values */
|
|
348
353
|
export declare function isLockInlineValue(value: unknown): value is LockInlineValue;
|
|
354
|
+
/**
|
|
355
|
+
* Per-edge failure policy for a `needs` dependency: `skip` propagates an
|
|
356
|
+
* upstream failure to the downstream job (default), `run` runs the downstream
|
|
357
|
+
* job regardless of the upstream outcome. Single source of truth for this
|
|
358
|
+
* value across lock-file schemas and protocol messages.
|
|
359
|
+
*/
|
|
360
|
+
export declare const IfFailedPolicy: z.ZodEnum<{
|
|
361
|
+
run: "run";
|
|
362
|
+
skip: "skip";
|
|
363
|
+
}>;
|
|
364
|
+
export type IfFailedPolicy = z.infer<typeof IfFailedPolicy>;
|
|
349
365
|
/**
|
|
350
366
|
* Needs entry with per-edge failure policy.
|
|
351
367
|
* Used in lock file needs arrays for explicit ifFailed override.
|
|
@@ -374,11 +390,59 @@ export type NeedsGroupEntry = z.infer<typeof NeedsGroupEntrySchema>;
|
|
|
374
390
|
* Static job in lock file.
|
|
375
391
|
* Contains all orchestrator-readable information for scheduling.
|
|
376
392
|
*/
|
|
393
|
+
/** Normalized runsOnAll predicate: OR of AND-groups (include), minus exclude matchers. */
|
|
394
|
+
export interface RunsOnAllPredicate {
|
|
395
|
+
/** OR across groups; AND within a group. */
|
|
396
|
+
readonly include: readonly (readonly LabelMatcher[])[];
|
|
397
|
+
/** Matchers that disqualify a host (AND-NOT, applied to the union). */
|
|
398
|
+
readonly exclude: readonly LabelMatcher[];
|
|
399
|
+
}
|
|
400
|
+
/** Author-facing input forms for runsOnAll (string | RegExp | array-with-! | structured). */
|
|
401
|
+
export type RunsOnAllInput = string | RegExp | readonly (string | RegExp)[] | {
|
|
402
|
+
readonly include: readonly {
|
|
403
|
+
readonly all: readonly (string | RegExp)[];
|
|
404
|
+
}[];
|
|
405
|
+
readonly exclude?: readonly (string | RegExp)[];
|
|
406
|
+
};
|
|
407
|
+
/**
|
|
408
|
+
* Failure policy for a host fan-out (`runsOnAll`) when an expected durable host
|
|
409
|
+
* is in the declared roster but not currently reachable.
|
|
410
|
+
*
|
|
411
|
+
* - `skip`: omit the unreachable durable host (fan out to reachable hosts only).
|
|
412
|
+
* - `fail`: fail the run init if any expected durable host is unreachable.
|
|
413
|
+
* - `hold`: queue a pinned child for each unreachable durable host and wait for
|
|
414
|
+
* it to (re)connect (the durable default).
|
|
415
|
+
*
|
|
416
|
+
* Ephemeral hosts that are not live are always skipped (a scaled-down node may
|
|
417
|
+
* never return), independent of this policy.
|
|
418
|
+
*/
|
|
419
|
+
export declare const OnUnreachableMode: z.ZodEnum<{
|
|
420
|
+
skip: "skip";
|
|
421
|
+
fail: "fail";
|
|
422
|
+
hold: "hold";
|
|
423
|
+
}>;
|
|
424
|
+
export type OnUnreachableMode = z.infer<typeof OnUnreachableMode>;
|
|
377
425
|
export interface LockJob {
|
|
378
426
|
readonly _type: 'static';
|
|
379
427
|
readonly name: string;
|
|
380
|
-
|
|
381
|
-
readonly
|
|
428
|
+
/** Single-agent targeting matchers. Absent when the job uses `runsOnAll` instead. */
|
|
429
|
+
readonly runsOn?: readonly LabelMatcher[];
|
|
430
|
+
readonly excludeLabels?: readonly LabelMatcher[];
|
|
431
|
+
/**
|
|
432
|
+
* Host fan-out predicate (mutually exclusive with `runsOn`). When set, the job
|
|
433
|
+
* fans out to every roster host matching the predicate, one pinned child per host.
|
|
434
|
+
*/
|
|
435
|
+
readonly runsOnAll?: RunsOnAllPredicate;
|
|
436
|
+
/** Failure policy for unreachable durable hosts in a `runsOnAll` fan-out. */
|
|
437
|
+
readonly onUnreachable?: OnUnreachableMode;
|
|
438
|
+
/**
|
|
439
|
+
* Fan-out concurrency width (sliding window; `1` = serial). When set on a
|
|
440
|
+
* fan-out job (matrix or `runsOnAll`), only the first `maxParallel` children
|
|
441
|
+
* dispatch; the rest are held `wave_gated` and released one-per-terminal.
|
|
442
|
+
*/
|
|
443
|
+
readonly maxParallel?: number;
|
|
444
|
+
/** Halt the fan-out on first child failure, skipping the held remainder. Default `false`. */
|
|
445
|
+
readonly failFast?: boolean;
|
|
382
446
|
readonly needs: readonly (string | NeedsEntry | NeedsGroupEntry)[];
|
|
383
447
|
/** Group names this job depends on (populated by compiler from dynamicGroup refs). */
|
|
384
448
|
readonly dependsOnGroups?: readonly string[];
|
|
@@ -423,6 +487,15 @@ export interface LockDynamicJobFn {
|
|
|
423
487
|
};
|
|
424
488
|
/** Group name for cross-domain needs (set when dynamicJob('name', fn) is used). */
|
|
425
489
|
readonly group?: string;
|
|
490
|
+
/**
|
|
491
|
+
* Declared upstream needs for a result-aware generator. When present the
|
|
492
|
+
* generator's eval job is deferred until these upstreams complete, then run
|
|
493
|
+
* with their frozen outputs available as ctx.needs. Same normalized shape as
|
|
494
|
+
* a static job's `needs`.
|
|
495
|
+
*/
|
|
496
|
+
readonly needs?: readonly (string | NeedsEntry | NeedsGroupEntry)[];
|
|
497
|
+
/** True when this dynamic entry was authored as dynamicJob(group, { needs, generate }). */
|
|
498
|
+
readonly resultAware?: boolean;
|
|
426
499
|
}
|
|
427
500
|
/** Job or dynamic job generator */
|
|
428
501
|
export type LockJobOrFactory = LockJob | LockDynamicJobFn;
|
package/dist/trigger/types.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-BTugEXQM.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
//#region src/trigger/types.ts
|
|
4
4
|
/**
|
|
@@ -14,20 +14,31 @@ import { z } from "zod";
|
|
|
14
14
|
* Schema version 14: adds declarative cache specs to LockJob and LockStep.
|
|
15
15
|
* Schema version 15: adds per-job init config(s) to LockJob.
|
|
16
16
|
* Schema version 16: adds normalized approval config to LockWorkflow/LockJob/LockStep.
|
|
17
|
+
* Schema version 17: widens LockJob.init to typed presets ('mise' / { mise }) and 'auto' detection.
|
|
18
|
+
* Schema version 18: adds LockJob.runsOnAll host fan-out predicate + onUnreachable policy.
|
|
19
|
+
* Schema version 19: adds LockJob.maxParallel/failFast fan-out concurrency (rolling waves).
|
|
20
|
+
* Schema version 20: runsOn/runsOnAll/excludeLabels carry LabelMatcher (exact|regex) for glob+regex selectors.
|
|
17
21
|
*/
|
|
18
22
|
/** Schema version - increment on breaking changes */
|
|
19
|
-
const SCHEMA_VERSION =
|
|
23
|
+
const SCHEMA_VERSION = 20;
|
|
20
24
|
/** Type guard for inline expression values */
|
|
21
25
|
function isLockInlineValue(value) {
|
|
22
26
|
return typeof value === "object" && value !== null && value._type === "inline";
|
|
23
27
|
}
|
|
24
28
|
/**
|
|
29
|
+
* Per-edge failure policy for a `needs` dependency: `skip` propagates an
|
|
30
|
+
* upstream failure to the downstream job (default), `run` runs the downstream
|
|
31
|
+
* job regardless of the upstream outcome. Single source of truth for this
|
|
32
|
+
* value across lock-file schemas and protocol messages.
|
|
33
|
+
*/
|
|
34
|
+
const IfFailedPolicy = z.enum(["skip", "run"]);
|
|
35
|
+
/**
|
|
25
36
|
* Needs entry with per-edge failure policy.
|
|
26
37
|
* Used in lock file needs arrays for explicit ifFailed override.
|
|
27
38
|
*/
|
|
28
39
|
const NeedsEntrySchema = z.object({
|
|
29
40
|
name: z.string(),
|
|
30
|
-
ifFailed:
|
|
41
|
+
ifFailed: IfFailedPolicy.default(IfFailedPolicy.enum.skip)
|
|
31
42
|
});
|
|
32
43
|
/**
|
|
33
44
|
* Needs group entry with per-edge failure policy.
|
|
@@ -35,8 +46,25 @@ const NeedsEntrySchema = z.object({
|
|
|
35
46
|
*/
|
|
36
47
|
const NeedsGroupEntrySchema = z.object({
|
|
37
48
|
group: z.string(),
|
|
38
|
-
ifFailed:
|
|
49
|
+
ifFailed: IfFailedPolicy.default(IfFailedPolicy.enum.skip)
|
|
39
50
|
});
|
|
51
|
+
/**
|
|
52
|
+
* Failure policy for a host fan-out (`runsOnAll`) when an expected durable host
|
|
53
|
+
* is in the declared roster but not currently reachable.
|
|
54
|
+
*
|
|
55
|
+
* - `skip`: omit the unreachable durable host (fan out to reachable hosts only).
|
|
56
|
+
* - `fail`: fail the run init if any expected durable host is unreachable.
|
|
57
|
+
* - `hold`: queue a pinned child for each unreachable durable host and wait for
|
|
58
|
+
* it to (re)connect (the durable default).
|
|
59
|
+
*
|
|
60
|
+
* Ephemeral hosts that are not live are always skipped (a scaled-down node may
|
|
61
|
+
* never return), independent of this policy.
|
|
62
|
+
*/
|
|
63
|
+
const OnUnreachableMode = z.enum([
|
|
64
|
+
"skip",
|
|
65
|
+
"fail",
|
|
66
|
+
"hold"
|
|
67
|
+
]);
|
|
40
68
|
/** Type guard for static jobs */
|
|
41
69
|
function isLockStaticJob(job) {
|
|
42
70
|
return job._type === "static";
|
|
@@ -46,6 +74,6 @@ function isLockDynamicJobFn(job) {
|
|
|
46
74
|
return job._type === "dynamic";
|
|
47
75
|
}
|
|
48
76
|
//#endregion
|
|
49
|
-
export { NeedsEntrySchema, NeedsGroupEntrySchema, SCHEMA_VERSION, isLockDynamicJobFn, isLockInlineValue, isLockStaticJob };
|
|
77
|
+
export { IfFailedPolicy, NeedsEntrySchema, NeedsGroupEntrySchema, OnUnreachableMode, SCHEMA_VERSION, isLockDynamicJobFn, isLockInlineValue, isLockStaticJob };
|
|
50
78
|
|
|
51
79
|
//# sourceMappingURL=types.js.map
|
package/dist/ws/close-codes.js
CHANGED
package/dist/ws/rate-limiter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-BTugEXQM.js";
|
|
2
2
|
//#region src/ws/rate-limiter.ts
|
|
3
3
|
/**
|
|
4
4
|
* WebSocket rate limiter with two-tier token bucket (messages + bytes).
|
|
@@ -18,6 +18,8 @@ import "../chunk-gOLHoazu.js";
|
|
|
18
18
|
* When tokens are exhausted, returns a retryAfterMs estimate.
|
|
19
19
|
*/
|
|
20
20
|
var TokenBucket = class {
|
|
21
|
+
capacity;
|
|
22
|
+
refillRate;
|
|
21
23
|
tokens;
|
|
22
24
|
lastRefill;
|
|
23
25
|
constructor(capacity, refillRate) {
|
package/dist/ws/ws-like.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-BTugEXQM.js";
|
|
2
2
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kici-dev/engine",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.18",
|
|
4
4
|
"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.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ci",
|
|
@@ -49,6 +49,10 @@
|
|
|
49
49
|
"import": "./dist/webhook/signature.js",
|
|
50
50
|
"types": "./dist/webhook/signature.d.ts"
|
|
51
51
|
},
|
|
52
|
+
"./labels/compile": {
|
|
53
|
+
"import": "./dist/labels/compile.js",
|
|
54
|
+
"types": "./dist/labels/compile.d.ts"
|
|
55
|
+
},
|
|
52
56
|
"./protocol/dashboard-global-workflows": {
|
|
53
57
|
"import": "./dist/protocol/dashboard-global-workflows.js",
|
|
54
58
|
"types": "./dist/protocol/dashboard-global-workflows.d.ts"
|
|
@@ -65,10 +69,26 @@
|
|
|
65
69
|
"import": "./dist/protocol/cluster-name.js",
|
|
66
70
|
"types": "./dist/protocol/cluster-name.d.ts"
|
|
67
71
|
},
|
|
72
|
+
"./protocol/messages/oidc-token-relay": {
|
|
73
|
+
"import": "./dist/protocol/messages/oidc-token-relay.js",
|
|
74
|
+
"types": "./dist/protocol/messages/oidc-token-relay.d.ts"
|
|
75
|
+
},
|
|
68
76
|
"./provenance/schema": {
|
|
69
77
|
"import": "./dist/provenance/schema.js",
|
|
70
78
|
"types": "./dist/provenance/schema.d.ts"
|
|
71
79
|
},
|
|
80
|
+
"./provenance/dsse": {
|
|
81
|
+
"import": "./dist/provenance/dsse.js",
|
|
82
|
+
"types": "./dist/provenance/dsse.d.ts"
|
|
83
|
+
},
|
|
84
|
+
"./provenance/bundle": {
|
|
85
|
+
"import": "./dist/provenance/bundle.js",
|
|
86
|
+
"types": "./dist/provenance/bundle.d.ts"
|
|
87
|
+
},
|
|
88
|
+
"./provenance/verify": {
|
|
89
|
+
"import": "./dist/provenance/verify.js",
|
|
90
|
+
"types": "./dist/provenance/verify.d.ts"
|
|
91
|
+
},
|
|
72
92
|
"./metrics/catalog": {
|
|
73
93
|
"import": "./dist/metrics/metric-catalog.generated.js",
|
|
74
94
|
"types": "./dist/metrics/metric-catalog.generated.d.ts"
|
|
@@ -79,12 +99,15 @@
|
|
|
79
99
|
}
|
|
80
100
|
},
|
|
81
101
|
"dependencies": {
|
|
102
|
+
"jose": "^6.1.0",
|
|
82
103
|
"jsonpath-plus": "^10.4.0",
|
|
83
104
|
"picomatch": "^4.0.4",
|
|
84
|
-
"
|
|
105
|
+
"safe-regex": "^2.1.1",
|
|
106
|
+
"zod": "^4.4.3"
|
|
85
107
|
},
|
|
86
108
|
"devDependencies": {
|
|
87
|
-
"@types/node": "^24.12.0"
|
|
109
|
+
"@types/node": "^24.12.0",
|
|
110
|
+
"@types/safe-regex": "^1.1.6"
|
|
88
111
|
},
|
|
89
112
|
"scripts": {
|
|
90
113
|
"build": "node ../../scripts/build-ts.mjs && tsc --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/engine@0.1.
|
|
6
|
-
"documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Fengine/0.1.
|
|
5
|
+
"name": "@kici-dev/engine@0.1.18",
|
|
6
|
+
"documentNamespace": "https://kici.dev/sbom/%40kici-dev%2Fengine/0.1.18/fe01b1af-8e27-4bc2-a638-9b00ac77e671",
|
|
7
7
|
"creationInfo": {
|
|
8
|
-
"created": "2026-06-
|
|
8
|
+
"created": "2026-06-17T10:55:42Z",
|
|
9
9
|
"creators": [
|
|
10
10
|
"Tool: kici-sbom-generator"
|
|
11
11
|
]
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
{
|
|
55
55
|
"SPDXID": "SPDXRef-RootPackage",
|
|
56
56
|
"name": "@kici-dev/engine",
|
|
57
|
-
"versionInfo": "0.1.
|
|
57
|
+
"versionInfo": "0.1.18",
|
|
58
58
|
"downloadLocation": "NOASSERTION",
|
|
59
59
|
"filesAnalyzed": false,
|
|
60
60
|
"licenseConcluded": "NOASSERTION",
|
|
@@ -65,12 +65,32 @@
|
|
|
65
65
|
{
|
|
66
66
|
"referenceCategory": "PACKAGE-MANAGER",
|
|
67
67
|
"referenceType": "purl",
|
|
68
|
-
"referenceLocator": "pkg:npm/%40kici-dev/engine@0.1.
|
|
68
|
+
"referenceLocator": "pkg:npm/%40kici-dev/engine@0.1.18"
|
|
69
69
|
}
|
|
70
70
|
],
|
|
71
71
|
"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.",
|
|
72
72
|
"homepage": "https://kici.dev"
|
|
73
73
|
},
|
|
74
|
+
{
|
|
75
|
+
"SPDXID": "SPDXRef-Package-jose-6.2.3",
|
|
76
|
+
"name": "jose",
|
|
77
|
+
"versionInfo": "6.2.3",
|
|
78
|
+
"downloadLocation": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz",
|
|
79
|
+
"filesAnalyzed": false,
|
|
80
|
+
"licenseConcluded": "NOASSERTION",
|
|
81
|
+
"licenseDeclared": "MIT",
|
|
82
|
+
"copyrightText": "NOASSERTION",
|
|
83
|
+
"supplier": "NOASSERTION",
|
|
84
|
+
"externalRefs": [
|
|
85
|
+
{
|
|
86
|
+
"referenceCategory": "PACKAGE-MANAGER",
|
|
87
|
+
"referenceType": "purl",
|
|
88
|
+
"referenceLocator": "pkg:npm/jose@6.2.3"
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"description": "JWA, JWS, JWE, JWT, JWK, JWKS for Node.js, Browser, Cloudflare Workers, Deno, Bun, and other Web-interoperable runtimes",
|
|
92
|
+
"homepage": "https://github.com/panva/jose"
|
|
93
|
+
},
|
|
74
94
|
{
|
|
75
95
|
"SPDXID": "SPDXRef-Package-jsep-1.4.0",
|
|
76
96
|
"name": "jsep",
|
|
@@ -132,10 +152,50 @@
|
|
|
132
152
|
"homepage": "https://github.com/micromatch/picomatch"
|
|
133
153
|
},
|
|
134
154
|
{
|
|
135
|
-
"SPDXID": "SPDXRef-Package-
|
|
155
|
+
"SPDXID": "SPDXRef-Package-regexp-tree-0.1.27",
|
|
156
|
+
"name": "regexp-tree",
|
|
157
|
+
"versionInfo": "0.1.27",
|
|
158
|
+
"downloadLocation": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz",
|
|
159
|
+
"filesAnalyzed": false,
|
|
160
|
+
"licenseConcluded": "NOASSERTION",
|
|
161
|
+
"licenseDeclared": "MIT",
|
|
162
|
+
"copyrightText": "NOASSERTION",
|
|
163
|
+
"supplier": "NOASSERTION",
|
|
164
|
+
"externalRefs": [
|
|
165
|
+
{
|
|
166
|
+
"referenceCategory": "PACKAGE-MANAGER",
|
|
167
|
+
"referenceType": "purl",
|
|
168
|
+
"referenceLocator": "pkg:npm/regexp-tree@0.1.27"
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
"description": "Regular Expressions parser in JavaScript",
|
|
172
|
+
"homepage": "https://github.com/DmitrySoshnikov/regexp-tree"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"SPDXID": "SPDXRef-Package-safe-regex-2.1.1",
|
|
176
|
+
"name": "safe-regex",
|
|
177
|
+
"versionInfo": "2.1.1",
|
|
178
|
+
"downloadLocation": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz",
|
|
179
|
+
"filesAnalyzed": false,
|
|
180
|
+
"licenseConcluded": "NOASSERTION",
|
|
181
|
+
"licenseDeclared": "MIT",
|
|
182
|
+
"copyrightText": "NOASSERTION",
|
|
183
|
+
"supplier": "NOASSERTION",
|
|
184
|
+
"externalRefs": [
|
|
185
|
+
{
|
|
186
|
+
"referenceCategory": "PACKAGE-MANAGER",
|
|
187
|
+
"referenceType": "purl",
|
|
188
|
+
"referenceLocator": "pkg:npm/safe-regex@2.1.1"
|
|
189
|
+
}
|
|
190
|
+
],
|
|
191
|
+
"description": "detect possibly catastrophic, exponential-time regular expressions",
|
|
192
|
+
"homepage": "https://github.com/davisjam/safe-regex"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"SPDXID": "SPDXRef-Package-zod-4.4.3",
|
|
136
196
|
"name": "zod",
|
|
137
|
-
"versionInfo": "4.3
|
|
138
|
-
"downloadLocation": "https://registry.npmjs.org/zod/-/zod-4.3.
|
|
197
|
+
"versionInfo": "4.4.3",
|
|
198
|
+
"downloadLocation": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
|
|
139
199
|
"filesAnalyzed": false,
|
|
140
200
|
"licenseConcluded": "NOASSERTION",
|
|
141
201
|
"licenseDeclared": "MIT",
|
|
@@ -145,7 +205,7 @@
|
|
|
145
205
|
{
|
|
146
206
|
"referenceCategory": "PACKAGE-MANAGER",
|
|
147
207
|
"referenceType": "purl",
|
|
148
|
-
"referenceLocator": "pkg:npm/zod@4.3
|
|
208
|
+
"referenceLocator": "pkg:npm/zod@4.4.3"
|
|
149
209
|
}
|
|
150
210
|
],
|
|
151
211
|
"description": "TypeScript-first schema declaration and validation library with static type inference",
|
|
@@ -168,6 +228,11 @@
|
|
|
168
228
|
"relatedSpdxElement": "SPDXRef-Package-jsep-1.4.0",
|
|
169
229
|
"relationshipType": "DEPENDS_ON"
|
|
170
230
|
},
|
|
231
|
+
{
|
|
232
|
+
"spdxElementId": "SPDXRef-RootPackage",
|
|
233
|
+
"relatedSpdxElement": "SPDXRef-Package-jose-6.2.3",
|
|
234
|
+
"relationshipType": "DEPENDS_ON"
|
|
235
|
+
},
|
|
171
236
|
{
|
|
172
237
|
"spdxElementId": "SPDXRef-RootPackage",
|
|
173
238
|
"relatedSpdxElement": "SPDXRef-Package-jsonpath-plus-10.4.0",
|
|
@@ -180,7 +245,12 @@
|
|
|
180
245
|
},
|
|
181
246
|
{
|
|
182
247
|
"spdxElementId": "SPDXRef-RootPackage",
|
|
183
|
-
"relatedSpdxElement": "SPDXRef-Package-
|
|
248
|
+
"relatedSpdxElement": "SPDXRef-Package-safe-regex-2.1.1",
|
|
249
|
+
"relationshipType": "DEPENDS_ON"
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"spdxElementId": "SPDXRef-RootPackage",
|
|
253
|
+
"relatedSpdxElement": "SPDXRef-Package-zod-4.4.3",
|
|
184
254
|
"relationshipType": "DEPENDS_ON"
|
|
185
255
|
},
|
|
186
256
|
{
|
|
@@ -197,6 +267,11 @@
|
|
|
197
267
|
"spdxElementId": "SPDXRef-Package-jsonpath-plus-10.4.0",
|
|
198
268
|
"relatedSpdxElement": "SPDXRef-Package-jsep-1.4.0",
|
|
199
269
|
"relationshipType": "DEPENDS_ON"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"spdxElementId": "SPDXRef-Package-safe-regex-2.1.1",
|
|
273
|
+
"relatedSpdxElement": "SPDXRef-Package-regexp-tree-0.1.27",
|
|
274
|
+
"relationshipType": "DEPENDS_ON"
|
|
200
275
|
}
|
|
201
276
|
]
|
|
202
277
|
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import "../../chunk-gOLHoazu.js";
|
|
2
|
-
import { ExecutionRunStatus } from "./execution-status.js";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
//#region src/protocol/messages/observe.ts
|
|
5
|
-
/** Subscribe to observe a running test execution. */
|
|
6
|
-
const observeSubscribeSchema = z.object({
|
|
7
|
-
type: z.literal("observe.subscribe"),
|
|
8
|
-
runId: z.string(),
|
|
9
|
-
token: z.string(),
|
|
10
|
-
lastSeenSequence: z.number().optional()
|
|
11
|
-
});
|
|
12
|
-
/** Run status update sent to observer. */
|
|
13
|
-
const observeStatusSchema = z.object({
|
|
14
|
-
type: z.literal("observe.status"),
|
|
15
|
-
runId: z.string(),
|
|
16
|
-
status: ExecutionRunStatus,
|
|
17
|
-
jobName: z.string().optional(),
|
|
18
|
-
timestamp: z.number()
|
|
19
|
-
});
|
|
20
|
-
/** Log chunk sent to observer. */
|
|
21
|
-
const observeLogSchema = z.object({
|
|
22
|
-
type: z.literal("observe.log"),
|
|
23
|
-
runId: z.string(),
|
|
24
|
-
jobId: z.string(),
|
|
25
|
-
jobName: z.string(),
|
|
26
|
-
stepIndex: z.number(),
|
|
27
|
-
stepName: z.string(),
|
|
28
|
-
lines: z.array(z.string()),
|
|
29
|
-
sequence: z.number(),
|
|
30
|
-
timestamp: z.number()
|
|
31
|
-
});
|
|
32
|
-
/** Step lifecycle event sent to observer. */
|
|
33
|
-
const observeStepSchema = z.object({
|
|
34
|
-
type: z.literal("observe.step"),
|
|
35
|
-
runId: z.string(),
|
|
36
|
-
jobId: z.string(),
|
|
37
|
-
jobName: z.string(),
|
|
38
|
-
stepName: z.string(),
|
|
39
|
-
state: z.enum([
|
|
40
|
-
"pending",
|
|
41
|
-
"running",
|
|
42
|
-
"success",
|
|
43
|
-
"failed",
|
|
44
|
-
"skipped"
|
|
45
|
-
]),
|
|
46
|
-
durationMs: z.number().optional(),
|
|
47
|
-
timestamp: z.number()
|
|
48
|
-
});
|
|
49
|
-
/** Run completion summary sent to observer. */
|
|
50
|
-
const observeCompleteSchema = z.object({
|
|
51
|
-
type: z.literal("observe.complete"),
|
|
52
|
-
runId: z.string(),
|
|
53
|
-
status: z.enum([
|
|
54
|
-
"success",
|
|
55
|
-
"failed",
|
|
56
|
-
"cancelled"
|
|
57
|
-
]),
|
|
58
|
-
summary: z.object({
|
|
59
|
-
totalDurationMs: z.number(),
|
|
60
|
-
jobs: z.array(z.object({
|
|
61
|
-
name: z.string(),
|
|
62
|
-
status: z.string(),
|
|
63
|
-
durationMs: z.number().optional()
|
|
64
|
-
}))
|
|
65
|
-
})
|
|
66
|
-
});
|
|
67
|
-
//#endregion
|
|
68
|
-
export { observeCompleteSchema, observeLogSchema, observeStatusSchema, observeStepSchema, observeSubscribeSchema };
|
|
69
|
-
|
|
70
|
-
//# sourceMappingURL=observe.js.map
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import "../../chunk-gOLHoazu.js";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
//#region src/protocol/messages/test-run.ts
|
|
4
|
-
/** Simulated event shape embedded in test trigger messages. */
|
|
5
|
-
const testEventSchema = z.object({
|
|
6
|
-
type: z.string(),
|
|
7
|
-
action: z.string().optional(),
|
|
8
|
-
targetBranch: z.string(),
|
|
9
|
-
sourceBranch: z.string().optional(),
|
|
10
|
-
payload: z.record(z.string(), z.unknown()),
|
|
11
|
-
changedFiles: z.array(z.string()).optional()
|
|
12
|
-
});
|
|
13
|
-
/** Test trigger sent by CLI to orchestrator to initiate a test run. */
|
|
14
|
-
const testTriggerSchema = z.object({
|
|
15
|
-
type: z.literal("test.trigger"),
|
|
16
|
-
messageId: z.string(),
|
|
17
|
-
fixtureId: z.string(),
|
|
18
|
-
event: testEventSchema,
|
|
19
|
-
uploadId: z.string().optional(),
|
|
20
|
-
routingKey: z.string(),
|
|
21
|
-
secrets: z.record(z.string(), z.string()).optional(),
|
|
22
|
-
workflowName: z.string().optional()
|
|
23
|
-
});
|
|
24
|
-
/** Test trigger response from orchestrator to CLI. */
|
|
25
|
-
const testTriggerResponseSchema = z.object({
|
|
26
|
-
type: z.literal("test.trigger.response"),
|
|
27
|
-
messageId: z.string(),
|
|
28
|
-
runId: z.string(),
|
|
29
|
-
observeUrl: z.string(),
|
|
30
|
-
status: z.enum(["accepted", "rejected"]),
|
|
31
|
-
reason: z.string().optional()
|
|
32
|
-
});
|
|
33
|
-
/** Test cancel request sent by CLI to orchestrator. */
|
|
34
|
-
const testCancelSchema = z.object({
|
|
35
|
-
type: z.literal("test.cancel"),
|
|
36
|
-
messageId: z.string(),
|
|
37
|
-
runId: z.string()
|
|
38
|
-
});
|
|
39
|
-
/** Test cancel response from orchestrator to CLI. */
|
|
40
|
-
const testCancelResponseSchema = z.object({
|
|
41
|
-
type: z.literal("test.cancel.response"),
|
|
42
|
-
messageId: z.string(),
|
|
43
|
-
status: z.enum([
|
|
44
|
-
"cancelled",
|
|
45
|
-
"not_found",
|
|
46
|
-
"already_complete"
|
|
47
|
-
])
|
|
48
|
-
});
|
|
49
|
-
//#endregion
|
|
50
|
-
export { testCancelResponseSchema, testCancelSchema, testEventSchema, testTriggerResponseSchema, testTriggerSchema };
|
|
51
|
-
|
|
52
|
-
//# sourceMappingURL=test-run.js.map
|
|
File without changes
|