@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.
Files changed (104) hide show
  1. package/dist/approval/types.js +1 -1
  2. package/dist/audit/access-log-policy.js +3 -1
  3. package/dist/audit/activity.js +1 -1
  4. package/dist/audit/retention-policy.js +5 -1
  5. package/dist/bundler/index.js +1 -1
  6. package/dist/bundler/rolldown-config.js +1 -1
  7. package/dist/env/environment-allowlist.d.ts +1 -1
  8. package/dist/env/environment-allowlist.js +13 -2
  9. package/dist/environment/index.js +1 -1
  10. package/dist/environment/scope-resolver.js +1 -1
  11. package/dist/environment/types.js +1 -1
  12. package/dist/fanout/materialize.d.ts +123 -0
  13. package/dist/fanout/materialize.js +176 -0
  14. package/dist/index.d.ts +4 -2
  15. package/dist/index.js +9 -7
  16. package/dist/labels/compile.d.ts +40 -0
  17. package/dist/labels/compile.js +91 -0
  18. package/dist/labels-match.d.ts +32 -0
  19. package/dist/labels-match.js +55 -0
  20. package/dist/labels.js +1 -1
  21. package/dist/matrix/expand.d.ts +48 -0
  22. package/dist/matrix/expand.js +72 -0
  23. package/dist/matrix/format.d.ts +10 -0
  24. package/dist/matrix/format.js +20 -0
  25. package/dist/metrics/catalog-policy.js +8 -3
  26. package/dist/metrics/metric-catalog.generated.d.ts +11 -1
  27. package/dist/metrics/metric-catalog.generated.js +14 -2
  28. package/dist/protocol/analytics-events.js +1 -1
  29. package/dist/protocol/cluster-name.js +1 -1
  30. package/dist/protocol/dashboard-global-workflows.js +1 -1
  31. package/dist/protocol/dashboard-write-operations.js +1 -1
  32. package/dist/protocol/event-log-payload.js +1 -1
  33. package/dist/protocol/messages/access-log.d.ts +15 -5
  34. package/dist/protocol/messages/access-log.js +3 -1
  35. package/dist/protocol/messages/actor.js +1 -1
  36. package/dist/protocol/messages/auth.d.ts +1 -0
  37. package/dist/protocol/messages/auth.js +11 -2
  38. package/dist/protocol/messages/browser.js +1 -1
  39. package/dist/protocol/messages/capabilities.js +1 -1
  40. package/dist/protocol/messages/common.js +1 -1
  41. package/dist/protocol/messages/dashboard-global-workflows.js +1 -1
  42. package/dist/protocol/messages/dashboard.d.ts +985 -57
  43. package/dist/protocol/messages/dashboard.js +368 -13
  44. package/dist/protocol/messages/event-log.js +1 -1
  45. package/dist/protocol/messages/execution-status.d.ts +13 -1
  46. package/dist/protocol/messages/execution-status.js +13 -3
  47. package/dist/protocol/messages/join.js +1 -1
  48. package/dist/protocol/messages/log-pull.js +1 -1
  49. package/dist/protocol/messages/observe.d.ts +1 -0
  50. package/dist/protocol/messages/oidc-token-relay.d.ts +31 -0
  51. package/dist/protocol/messages/oidc-token-relay.js +34 -0
  52. package/dist/protocol/messages/orchestrator-agent.d.ts +56 -0
  53. package/dist/protocol/messages/orchestrator-agent.js +47 -2
  54. package/dist/protocol/messages/peer.d.ts +48 -0
  55. package/dist/protocol/messages/peer.js +12 -1
  56. package/dist/protocol/messages/platform-orchestrator.d.ts +171 -4
  57. package/dist/protocol/messages/platform-orchestrator.js +1 -1
  58. package/dist/protocol/messages/run-events.js +1 -1
  59. package/dist/protocol/messages/scaler-event.js +1 -1
  60. package/dist/protocol/messages/source-registration.d.ts +7 -6
  61. package/dist/protocol/messages/source-registration.js +7 -6
  62. package/dist/protocol/version.js +1 -1
  63. package/dist/provenance/bundle.d.ts +54 -0
  64. package/dist/provenance/bundle.js +53 -0
  65. package/dist/provenance/dsse.d.ts +39 -0
  66. package/dist/provenance/dsse.js +53 -0
  67. package/dist/provenance/schema.js +1 -1
  68. package/dist/provenance/verify.d.ts +71 -0
  69. package/dist/provenance/verify.js +135 -0
  70. package/dist/provider/changed-files-fetcher.js +1 -1
  71. package/dist/provider/check-run-conclusion.js +1 -1
  72. package/dist/provider/check-status-poster.js +1 -1
  73. package/dist/provider/clone-token-provider.js +1 -1
  74. package/dist/provider/contributor-resolver.js +1 -1
  75. package/dist/provider/index.js +1 -1
  76. package/dist/provider/lock-file-fetcher.js +1 -1
  77. package/dist/provider/lock-file-parse-error.js +3 -1
  78. package/dist/provider/repo-url-builder.js +1 -1
  79. package/dist/provider/types.d.ts +2 -2
  80. package/dist/provider/types.js +1 -1
  81. package/dist/provider/webhook-normalizer.js +1 -1
  82. package/dist/registration/registerable-trigger-type.js +1 -1
  83. package/dist/scaler/resource-types.js +1 -1
  84. package/dist/scaler/scaler-backend-type.js +1 -1
  85. package/dist/secrets/index.js +1 -1
  86. package/dist/secrets/types.js +1 -1
  87. package/dist/state-machine/index.js +1 -1
  88. package/dist/state-machine/machine.js +1 -1
  89. package/dist/state-machine/types.js +1 -1
  90. package/dist/trigger/decision-trace.js +1 -1
  91. package/dist/trigger/jsonpath-matcher.js +1 -1
  92. package/dist/trigger/matcher.js +1 -1
  93. package/dist/trigger/trigger-event-type.js +1 -1
  94. package/dist/trigger/types.d.ts +76 -3
  95. package/dist/trigger/types.js +33 -5
  96. package/dist/webhook/signature.js +1 -1
  97. package/dist/ws/close-codes.js +1 -1
  98. package/dist/ws/rate-limiter.js +3 -1
  99. package/dist/ws/ws-like.js +1 -1
  100. package/package.json +26 -3
  101. package/sbom.spdx.json +85 -10
  102. package/dist/protocol/messages/observe.js +0 -70
  103. package/dist/protocol/messages/test-run.js +0 -52
  104. /package/dist/{chunk-gOLHoazu.js → chunk-BTugEXQM.js} +0 -0
@@ -0,0 +1,91 @@
1
+ import "../chunk-BTugEXQM.js";
2
+ import picomatch from "picomatch";
3
+ import safeRegex from "safe-regex";
4
+ //#region src/labels/compile.ts
5
+ /**
6
+ * Reject a ReDoS-prone regex. `safe-regex` is a star-height heuristic — the
7
+ * orchestrator is single-tenant, so a slipped-through pattern only stalls the
8
+ * author's own orchestrator. Globs are linear by construction but pass through
9
+ * here for uniformity.
10
+ */
11
+ function assertSafeRegex(source, flags, ctx) {
12
+ if (!safeRegex(new RegExp(source, flags))) throw new Error(`${ctx}: regex /${source}/${flags} is ReDoS-prone — rejected`);
13
+ }
14
+ /**
15
+ * Convert one author selector element into a `LabelMatcher`.
16
+ * - `RegExp` → regex matcher (source + flags captured verbatim).
17
+ * - string that picomatch detects as a glob → regex via `picomatch.makeRe`.
18
+ * - any other string → exact.
19
+ * `ctx` is a human label (e.g. "job 'web' runsOn") used in ReDoS errors.
20
+ */
21
+ function toLabelMatcher(el, ctx) {
22
+ if (el instanceof RegExp) {
23
+ assertSafeRegex(el.source, el.flags, ctx);
24
+ return {
25
+ kind: "regex",
26
+ source: el.source,
27
+ flags: el.flags
28
+ };
29
+ }
30
+ if (picomatch.scan(el).isGlob) {
31
+ const re = picomatch.makeRe(el);
32
+ if (!(re instanceof RegExp)) throw new Error(`${ctx}: glob '${el}' is not a valid pattern`);
33
+ assertSafeRegex(re.source, re.flags, ctx);
34
+ return {
35
+ kind: "regex",
36
+ source: re.source,
37
+ flags: re.flags
38
+ };
39
+ }
40
+ return {
41
+ kind: "exact",
42
+ value: el
43
+ };
44
+ }
45
+ const asArray = (v) => Array.isArray(v) ? v : [v];
46
+ /** Normalize a `runsOn` author value into include + exclude matchers. */
47
+ function normalizeRunsOnToMatchers(runsOn, ctx) {
48
+ if (typeof runsOn === "string" || runsOn instanceof RegExp) return {
49
+ include: [toLabelMatcher(runsOn, ctx)],
50
+ exclude: []
51
+ };
52
+ if (Array.isArray(runsOn)) return {
53
+ include: runsOn.map((e) => toLabelMatcher(e, ctx)),
54
+ exclude: []
55
+ };
56
+ const sel = runsOn;
57
+ return {
58
+ include: asArray(sel.labels).map((e) => toLabelMatcher(e, ctx)),
59
+ exclude: sel.exclude ? asArray(sel.exclude).map((e) => toLabelMatcher(e, ctx)) : []
60
+ };
61
+ }
62
+ /** Normalize a `runsOnAll` author value into include groups + exclude matchers. */
63
+ function normalizeRunsOnAllToMatchers(input, ctx) {
64
+ if (typeof input === "string" || input instanceof RegExp) return {
65
+ include: [[toLabelMatcher(input, ctx)]],
66
+ exclude: []
67
+ };
68
+ if (Array.isArray(input)) {
69
+ const include = [];
70
+ const exclude = [];
71
+ for (const entry of input) if (typeof entry === "string" && entry.startsWith("!")) exclude.push(toLabelMatcher(entry.slice(1), ctx));
72
+ else include.push(toLabelMatcher(entry, ctx));
73
+ return {
74
+ include: include.length ? [include] : [],
75
+ exclude
76
+ };
77
+ }
78
+ const obj = input;
79
+ return {
80
+ include: obj.include.map((g) => g.all.map((e) => toLabelMatcher(e, ctx))),
81
+ exclude: (obj.exclude ?? []).map((e) => toLabelMatcher(e, ctx))
82
+ };
83
+ }
84
+ /** Re-validate every regex matcher in a parsed lock selector (orchestrator lock-load). */
85
+ function assertMatchersSafe(matchers, ctx) {
86
+ for (const m of matchers) if (m.kind === "regex") assertSafeRegex(m.source, m.flags, ctx);
87
+ }
88
+ //#endregion
89
+ export { assertMatchersSafe, assertSafeRegex, normalizeRunsOnAllToMatchers, normalizeRunsOnToMatchers, toLabelMatcher };
90
+
91
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1,32 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * A single label selector element after compilation. Globs are converted to
4
+ * regex at compile time, so the lock file only ever carries `exact` or `regex`.
5
+ * This module is browser-safe (pure `RegExp`, zod only) and lives in the engine
6
+ * barrel; glob conversion and the ReDoS gate live in the Node-only
7
+ * `@kici-dev/engine/labels/compile` subpath.
8
+ */
9
+ export declare const LabelMatcher: z.ZodDiscriminatedUnion<[z.ZodObject<{
10
+ kind: z.ZodLiteral<"exact">;
11
+ value: z.ZodString;
12
+ }, z.core.$strip>, z.ZodObject<{
13
+ kind: z.ZodLiteral<"regex">;
14
+ source: z.ZodString;
15
+ flags: z.ZodString;
16
+ }, z.core.$strip>], "kind">;
17
+ export type LabelMatcher = z.infer<typeof LabelMatcher>;
18
+ /** Compile (and cache) the `RegExp` for a regex matcher. */
19
+ export declare function compileRegexMatcher(m: {
20
+ source: string;
21
+ flags: string;
22
+ }): RegExp;
23
+ /** Whether a single label string satisfies the matcher. */
24
+ export declare function matcherMatches(m: LabelMatcher, label: string): boolean;
25
+ /** Whether some label in the set satisfies the matcher. */
26
+ export declare function matcherSatisfiedBy(m: LabelMatcher, labels: ReadonlySet<string>): boolean;
27
+ /** Split a matcher list into exact label strings and the remaining regex matchers. */
28
+ export declare function partitionMatchers(ms: readonly LabelMatcher[]): {
29
+ exact: string[];
30
+ regex: LabelMatcher[];
31
+ };
32
+ //# sourceMappingURL=labels-match.d.ts.map
@@ -0,0 +1,55 @@
1
+ import "./chunk-BTugEXQM.js";
2
+ import { z } from "zod";
3
+ //#region src/labels-match.ts
4
+ /**
5
+ * A single label selector element after compilation. Globs are converted to
6
+ * regex at compile time, so the lock file only ever carries `exact` or `regex`.
7
+ * This module is browser-safe (pure `RegExp`, zod only) and lives in the engine
8
+ * barrel; glob conversion and the ReDoS gate live in the Node-only
9
+ * `@kici-dev/engine/labels/compile` subpath.
10
+ */
11
+ const LabelMatcher = z.discriminatedUnion("kind", [z.object({
12
+ kind: z.literal("exact"),
13
+ value: z.string()
14
+ }), z.object({
15
+ kind: z.literal("regex"),
16
+ source: z.string(),
17
+ flags: z.string()
18
+ })]);
19
+ const regexCache = /* @__PURE__ */ new Map();
20
+ /** Compile (and cache) the `RegExp` for a regex matcher. */
21
+ function compileRegexMatcher(m) {
22
+ const key = `${m.flags} ${m.source}`;
23
+ let re = regexCache.get(key);
24
+ if (!re) {
25
+ re = new RegExp(m.source, m.flags);
26
+ regexCache.set(key, re);
27
+ }
28
+ return re;
29
+ }
30
+ /** Whether a single label string satisfies the matcher. */
31
+ function matcherMatches(m, label) {
32
+ return m.kind === "exact" ? label === m.value : compileRegexMatcher(m).test(label);
33
+ }
34
+ /** Whether some label in the set satisfies the matcher. */
35
+ function matcherSatisfiedBy(m, labels) {
36
+ if (m.kind === "exact") return labels.has(m.value);
37
+ const re = compileRegexMatcher(m);
38
+ for (const label of labels) if (re.test(label)) return true;
39
+ return false;
40
+ }
41
+ /** Split a matcher list into exact label strings and the remaining regex matchers. */
42
+ function partitionMatchers(ms) {
43
+ const exact = [];
44
+ const regex = [];
45
+ for (const m of ms) if (m.kind === "exact") exact.push(m.value);
46
+ else regex.push(m);
47
+ return {
48
+ exact,
49
+ regex
50
+ };
51
+ }
52
+ //#endregion
53
+ export { LabelMatcher, compileRegexMatcher, matcherMatches, matcherSatisfiedBy, partitionMatchers };
54
+
55
+ //# sourceMappingURL=labels-match.js.map
package/dist/labels.js CHANGED
@@ -1,4 +1,4 @@
1
- import "./chunk-gOLHoazu.js";
1
+ import "./chunk-BTugEXQM.js";
2
2
  //#region src/labels.ts
3
3
  /**
4
4
  * Structured auto-labels with category prefixes.
@@ -0,0 +1,48 @@
1
+ /** Single-dimension static matrix: array of values */
2
+ export type StaticMatrixArray = string[];
3
+ /** Multi-dimensional static matrix: named dimensions with values */
4
+ export type StaticMatrixObject = Record<string, string[]>;
5
+ /** Include entries for adding specific matrix combinations */
6
+ export type MatrixInclude = Record<string, string>;
7
+ /** Exclude entries for removing specific matrix combinations */
8
+ export type MatrixExclude = Record<string, string>;
9
+ /**
10
+ * Matrix values as exposed to steps.
11
+ * Single-dimension: {value: 'linux'}
12
+ * Multi-dimensional: {os: 'linux', node: '18'}
13
+ */
14
+ export interface MatrixValues {
15
+ /** Single-dimension: the value */
16
+ value?: string;
17
+ /** Multi-dimensional: named properties */
18
+ [dimension: string]: string | undefined;
19
+ }
20
+ /**
21
+ * Compute the cartesian product of the given value sets in row-major order.
22
+ * An empty set list yields a single empty tuple; any empty set yields no tuples.
23
+ */
24
+ export declare function cartesianProduct<T>(sets: T[][]): T[][];
25
+ /**
26
+ * Expand single-dimension matrix (array form) to MatrixValues array.
27
+ * Each value becomes {value: string}.
28
+ */
29
+ export declare function expandSingleDimension(matrix: StaticMatrixArray): MatrixValues[];
30
+ /**
31
+ * Expand multi-dimensional matrix (object form) to MatrixValues array.
32
+ * Computes the cartesian product of all dimensions.
33
+ * Dimension names are sorted for deterministic output.
34
+ */
35
+ export declare function expandMultiDimension(matrix: StaticMatrixObject): MatrixValues[];
36
+ /**
37
+ * Unified expand function that dispatches to single or multi-dimensional expansion.
38
+ */
39
+ export declare function expandMatrix(matrix: StaticMatrixArray | StaticMatrixObject): MatrixValues[];
40
+ /**
41
+ * Apply include/exclude modifications to expanded matrix combinations.
42
+ * Exclude first (remove matching), then include (add new).
43
+ *
44
+ * Exclude matches if ALL specified dimensions match.
45
+ * Include adds new combinations if they don't already exist.
46
+ */
47
+ export declare function applyIncludeExclude(expanded: MatrixValues[], include?: MatrixInclude[], exclude?: MatrixExclude[]): MatrixValues[];
48
+ //# sourceMappingURL=expand.d.ts.map
@@ -0,0 +1,72 @@
1
+ import "../chunk-BTugEXQM.js";
2
+ //#region src/matrix/expand.ts
3
+ /**
4
+ * Compute the cartesian product of the given value sets in row-major order.
5
+ * An empty set list yields a single empty tuple; any empty set yields no tuples.
6
+ */
7
+ function cartesianProduct(sets) {
8
+ return sets.reduce((acc, set) => acc.flatMap((tuple) => set.map((value) => [...tuple, value])), [[]]);
9
+ }
10
+ /**
11
+ * Expand single-dimension matrix (array form) to MatrixValues array.
12
+ * Each value becomes {value: string}.
13
+ */
14
+ function expandSingleDimension(matrix) {
15
+ return matrix.map((value) => ({ value }));
16
+ }
17
+ /**
18
+ * Expand multi-dimensional matrix (object form) to MatrixValues array.
19
+ * Computes the cartesian product of all dimensions.
20
+ * Dimension names are sorted for deterministic output.
21
+ */
22
+ function expandMultiDimension(matrix) {
23
+ const dimensions = Object.entries(matrix);
24
+ if (dimensions.length === 0) return [];
25
+ dimensions.sort((a, b) => a[0].localeCompare(b[0]));
26
+ const names = dimensions.map(([name]) => name);
27
+ return cartesianProduct(dimensions.map(([, values]) => values)).map((combo) => {
28
+ const result = {};
29
+ names.forEach((name, idx) => {
30
+ result[name] = combo[idx];
31
+ });
32
+ return result;
33
+ });
34
+ }
35
+ /**
36
+ * Unified expand function that dispatches to single or multi-dimensional expansion.
37
+ */
38
+ function expandMatrix(matrix) {
39
+ if (Array.isArray(matrix)) return expandSingleDimension(matrix);
40
+ return expandMultiDimension(matrix);
41
+ }
42
+ /**
43
+ * Apply include/exclude modifications to expanded matrix combinations.
44
+ * Exclude first (remove matching), then include (add new).
45
+ *
46
+ * Exclude matches if ALL specified dimensions match.
47
+ * Include adds new combinations if they don't already exist.
48
+ */
49
+ function applyIncludeExclude(expanded, include, exclude) {
50
+ let result = [...expanded];
51
+ if (exclude && exclude.length > 0) result = result.filter((combo) => {
52
+ return !exclude.some((excl) => {
53
+ const exclEntries = Object.entries(excl);
54
+ if (exclEntries.length === 0) return false;
55
+ return exclEntries.every(([key, value]) => combo[key] === value);
56
+ });
57
+ });
58
+ if (include && include.length > 0) for (const incl of include) {
59
+ const inclKeys = Object.keys(incl);
60
+ if (inclKeys.length === 0) continue;
61
+ if (!result.some((combo) => {
62
+ const comboKeys = Object.keys(combo);
63
+ if (inclKeys.length !== comboKeys.length) return false;
64
+ return inclKeys.every((key) => combo[key] === incl[key]);
65
+ })) result.push(incl);
66
+ }
67
+ return result;
68
+ }
69
+ //#endregion
70
+ export { applyIncludeExclude, cartesianProduct, expandMatrix, expandMultiDimension, expandSingleDimension };
71
+
72
+ //# sourceMappingURL=expand.js.map
@@ -0,0 +1,10 @@
1
+ import type { MatrixValues } from './expand.js';
2
+ /**
3
+ * Format matrix values into a display string for the job name.
4
+ * Single-dimension: "node-18"
5
+ * Multi-dimensional: "linux, 18"
6
+ */
7
+ export declare function formatMatrixSuffix(matrixValues: MatrixValues): string;
8
+ /** Expanded child job name: `${baseName} (${suffix})`. MUST match the local executor. */
9
+ export declare function formatExpandedJobName(baseName: string, matrixValues: MatrixValues): string;
10
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1,20 @@
1
+ import "../chunk-BTugEXQM.js";
2
+ //#region src/matrix/format.ts
3
+ /**
4
+ * Format matrix values into a display string for the job name.
5
+ * Single-dimension: "node-18"
6
+ * Multi-dimensional: "linux, 18"
7
+ */
8
+ function formatMatrixSuffix(matrixValues) {
9
+ const defined = Object.entries(matrixValues).filter(([, v]) => v !== void 0);
10
+ if (defined.length === 1 && defined[0][0] === "value") return defined[0][1];
11
+ return defined.map(([, v]) => v).join(", ");
12
+ }
13
+ /** Expanded child job name: `${baseName} (${suffix})`. MUST match the local executor. */
14
+ function formatExpandedJobName(baseName, matrixValues) {
15
+ return `${baseName} (${formatMatrixSuffix(matrixValues)})`;
16
+ }
17
+ //#endregion
18
+ export { formatExpandedJobName, formatMatrixSuffix };
19
+
20
+ //# sourceMappingURL=format.js.map
@@ -1,4 +1,4 @@
1
- import "../chunk-gOLHoazu.js";
1
+ import "../chunk-BTugEXQM.js";
2
2
  import { MetricNames, MetricService } from "./metric-catalog.generated.js";
3
3
  //#region src/metrics/catalog-policy.ts
4
4
  /**
@@ -138,7 +138,11 @@ const METRIC_LABEL_POLICY = {
138
138
  machinePool: { maxUniqueValues: 50 }
139
139
  },
140
140
  kici_orch_install_secrets_decisions_total: {
141
- decision: { values: ["pass", "reject"] },
141
+ decision: { values: [
142
+ "pass",
143
+ "reject",
144
+ "hold"
145
+ ] },
142
146
  reason: { values: [
143
147
  "ok",
144
148
  "malformed_ref",
@@ -148,7 +152,8 @@ const METRIC_LABEL_POLICY = {
148
152
  "env_not_found",
149
153
  "protection_rule_block",
150
154
  "missing_token",
151
- "missing_install_env"
155
+ "missing_install_env",
156
+ "held"
152
157
  ] }
153
158
  },
154
159
  kici_orch_install_secrets_npm_registry_used_total: {
@@ -19,6 +19,7 @@ export declare const MetricNames: {
19
19
  readonly KICI_ORCH_BUILD_DURATION_SECONDS: "kici_orch_build_duration_seconds";
20
20
  readonly KICI_ORCH_CONFIG_RELOAD_TOTAL: "kici_orch_config_reload_total";
21
21
  readonly KICI_ORCH_CONFIG_VERSION: "kici_orch_config_version";
22
+ readonly KICI_ORCH_DECLARED_HOSTS_UNREACHABLE: "kici_orch_declared_hosts_unreachable";
22
23
  readonly KICI_ORCH_DEDUP_HITS_TOTAL: "kici_orch_dedup_hits_total";
23
24
  readonly KICI_ORCH_DEP_CACHE_HITS_TOTAL: "kici_orch_dep_cache_hits_total";
24
25
  readonly KICI_ORCH_DEP_CACHE_MISSES_TOTAL: "kici_orch_dep_cache_misses_total";
@@ -128,6 +129,7 @@ export declare const MetricNames: {
128
129
  readonly V8JS_MEMORY_HEAP_LIMIT: "v8js.memory.heap.limit";
129
130
  readonly V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: "v8js.memory.heap.space.available_size";
130
131
  readonly V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: "v8js.memory.heap.space.physical_size";
132
+ readonly V8JS_MEMORY_HEAP_SPACE_SIZE: "v8js.memory.heap.space.size";
131
133
  readonly V8JS_MEMORY_HEAP_USED: "v8js.memory.heap.used";
132
134
  };
133
135
  export type MetricName = (typeof MetricNames)[keyof typeof MetricNames];
@@ -152,6 +154,7 @@ export declare const MetricLabels: {
152
154
  readonly KICI_ORCH_BUILD_DURATION_SECONDS: readonly [];
153
155
  readonly KICI_ORCH_CONFIG_RELOAD_TOTAL: readonly ["result", "source"];
154
156
  readonly KICI_ORCH_CONFIG_VERSION: readonly [];
157
+ readonly KICI_ORCH_DECLARED_HOSTS_UNREACHABLE: readonly [];
155
158
  readonly KICI_ORCH_DEDUP_HITS_TOTAL: readonly [];
156
159
  readonly KICI_ORCH_DEP_CACHE_HITS_TOTAL: readonly [];
157
160
  readonly KICI_ORCH_DEP_CACHE_MISSES_TOTAL: readonly [];
@@ -261,6 +264,7 @@ export declare const MetricLabels: {
261
264
  readonly V8JS_MEMORY_HEAP_LIMIT: readonly ["v8js.heap.space.name", "scaler"];
262
265
  readonly V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: readonly ["v8js.heap.space.name", "scaler"];
263
266
  readonly V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: readonly ["v8js.heap.space.name", "scaler"];
267
+ readonly V8JS_MEMORY_HEAP_SPACE_SIZE: readonly ["v8js.heap.space.name", "scaler"];
264
268
  readonly V8JS_MEMORY_HEAP_USED: readonly ["v8js.heap.space.name", "scaler"];
265
269
  };
266
270
  export declare const MetricKind: {
@@ -284,6 +288,7 @@ export declare const MetricKind: {
284
288
  readonly KICI_ORCH_BUILD_DURATION_SECONDS: "histogram";
285
289
  readonly KICI_ORCH_CONFIG_RELOAD_TOTAL: "counter";
286
290
  readonly KICI_ORCH_CONFIG_VERSION: "observableGauge";
291
+ readonly KICI_ORCH_DECLARED_HOSTS_UNREACHABLE: "observableGauge";
287
292
  readonly KICI_ORCH_DEDUP_HITS_TOTAL: "counter";
288
293
  readonly KICI_ORCH_DEP_CACHE_HITS_TOTAL: "counter";
289
294
  readonly KICI_ORCH_DEP_CACHE_MISSES_TOTAL: "counter";
@@ -393,6 +398,7 @@ export declare const MetricKind: {
393
398
  readonly V8JS_MEMORY_HEAP_LIMIT: "gauge";
394
399
  readonly V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: "gauge";
395
400
  readonly V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: "gauge";
401
+ readonly V8JS_MEMORY_HEAP_SPACE_SIZE: "gauge";
396
402
  readonly V8JS_MEMORY_HEAP_USED: "gauge";
397
403
  };
398
404
  export declare const MetricDescription: {
@@ -416,6 +422,7 @@ export declare const MetricDescription: {
416
422
  readonly KICI_ORCH_BUILD_DURATION_SECONDS: "Duration of build agent operations in seconds";
417
423
  readonly KICI_ORCH_CONFIG_RELOAD_TOTAL: "Total number of config reload operations";
418
424
  readonly KICI_ORCH_CONFIG_VERSION: "Current shared config version number";
425
+ readonly KICI_ORCH_DECLARED_HOSTS_UNREACHABLE: "Number of declared (static) roster hosts currently unreachable";
419
426
  readonly KICI_ORCH_DEDUP_HITS_TOTAL: "Total number of deduplication cache hits";
420
427
  readonly KICI_ORCH_DEP_CACHE_HITS_TOTAL: "Total number of dep cache hits";
421
428
  readonly KICI_ORCH_DEP_CACHE_MISSES_TOTAL: "Total number of dep cache misses";
@@ -431,7 +438,7 @@ export declare const MetricDescription: {
431
438
  readonly KICI_ORCH_EXECUTIONS_TOTAL: "Total number of execution runs";
432
439
  readonly KICI_ORCH_GITHUB_CHECK_RUN_TOTAL: "Total number of GitHub check run API calls";
433
440
  readonly KICI_ORCH_INSTALL_SECRETS_CONTRIBUTOR_STRIPPED_TOTAL: "Dispatches where registry tokens were stripped because the contributor tier was not `trusted`";
434
- readonly KICI_ORCH_INSTALL_SECRETS_DECISIONS_TOTAL: "Total install-secrets resolution decisions (pass / reject + reason)";
441
+ readonly KICI_ORCH_INSTALL_SECRETS_DECISIONS_TOTAL: "Total install-secrets resolution decisions (pass / reject / hold + reason)";
435
442
  readonly KICI_ORCH_INSTALL_SECRETS_NPM_REGISTRY_USED_TOTAL: "Total registry / installEnv entries successfully resolved per channel / provider / scope";
436
443
  readonly KICI_ORCH_INSTALL_SECRETS_TOKEN_RESOLUTION_DURATION_SECONDS: "Duration of per-environment secret resolution during install-secrets evaluation";
437
444
  readonly KICI_ORCH_JOB_CONSECUTIVE_FAILURES: "Consecutive failures for each scheduled job since its last success";
@@ -525,6 +532,7 @@ export declare const MetricDescription: {
525
532
  readonly V8JS_MEMORY_HEAP_LIMIT: "V8 heap size limit by heap space";
526
533
  readonly V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: "V8 available heap size by heap space";
527
534
  readonly V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: "V8 physical heap size by heap space";
535
+ readonly V8JS_MEMORY_HEAP_SPACE_SIZE: "V8 total heap size by heap space";
528
536
  readonly V8JS_MEMORY_HEAP_USED: "V8 used heap size by heap space";
529
537
  };
530
538
  /**
@@ -555,6 +563,7 @@ export declare const MetricService: {
555
563
  readonly KICI_ORCH_BUILD_DURATION_SECONDS: "orchestrator";
556
564
  readonly KICI_ORCH_CONFIG_RELOAD_TOTAL: "orchestrator";
557
565
  readonly KICI_ORCH_CONFIG_VERSION: "orchestrator";
566
+ readonly KICI_ORCH_DECLARED_HOSTS_UNREACHABLE: "orchestrator";
558
567
  readonly KICI_ORCH_DEDUP_HITS_TOTAL: "orchestrator";
559
568
  readonly KICI_ORCH_DEP_CACHE_HITS_TOTAL: "orchestrator";
560
569
  readonly KICI_ORCH_DEP_CACHE_MISSES_TOTAL: "orchestrator";
@@ -664,6 +673,7 @@ export declare const MetricService: {
664
673
  readonly V8JS_MEMORY_HEAP_LIMIT: "runtime";
665
674
  readonly V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: "runtime";
666
675
  readonly V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: "runtime";
676
+ readonly V8JS_MEMORY_HEAP_SPACE_SIZE: "runtime";
667
677
  readonly V8JS_MEMORY_HEAP_USED: "runtime";
668
678
  };
669
679
  export type MetricService = (typeof MetricService)[keyof typeof MetricService];
@@ -1,4 +1,4 @@
1
- import "../chunk-gOLHoazu.js";
1
+ import "../chunk-BTugEXQM.js";
2
2
  //#region src/metrics/metric-catalog.generated.ts
3
3
  const MetricNames = {
4
4
  KICI_AGENT_CLONE_DURATION_SECONDS: "kici_agent_clone_duration_seconds",
@@ -21,6 +21,7 @@ const MetricNames = {
21
21
  KICI_ORCH_BUILD_DURATION_SECONDS: "kici_orch_build_duration_seconds",
22
22
  KICI_ORCH_CONFIG_RELOAD_TOTAL: "kici_orch_config_reload_total",
23
23
  KICI_ORCH_CONFIG_VERSION: "kici_orch_config_version",
24
+ KICI_ORCH_DECLARED_HOSTS_UNREACHABLE: "kici_orch_declared_hosts_unreachable",
24
25
  KICI_ORCH_DEDUP_HITS_TOTAL: "kici_orch_dedup_hits_total",
25
26
  KICI_ORCH_DEP_CACHE_HITS_TOTAL: "kici_orch_dep_cache_hits_total",
26
27
  KICI_ORCH_DEP_CACHE_MISSES_TOTAL: "kici_orch_dep_cache_misses_total",
@@ -130,6 +131,7 @@ const MetricNames = {
130
131
  V8JS_MEMORY_HEAP_LIMIT: "v8js.memory.heap.limit",
131
132
  V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: "v8js.memory.heap.space.available_size",
132
133
  V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: "v8js.memory.heap.space.physical_size",
134
+ V8JS_MEMORY_HEAP_SPACE_SIZE: "v8js.memory.heap.space.size",
133
135
  V8JS_MEMORY_HEAP_USED: "v8js.memory.heap.used"
134
136
  };
135
137
  const MetricLabels = {
@@ -153,6 +155,7 @@ const MetricLabels = {
153
155
  KICI_ORCH_BUILD_DURATION_SECONDS: [],
154
156
  KICI_ORCH_CONFIG_RELOAD_TOTAL: ["result", "source"],
155
157
  KICI_ORCH_CONFIG_VERSION: [],
158
+ KICI_ORCH_DECLARED_HOSTS_UNREACHABLE: [],
156
159
  KICI_ORCH_DEDUP_HITS_TOTAL: [],
157
160
  KICI_ORCH_DEP_CACHE_HITS_TOTAL: [],
158
161
  KICI_ORCH_DEP_CACHE_MISSES_TOTAL: [],
@@ -270,6 +273,7 @@ const MetricLabels = {
270
273
  V8JS_MEMORY_HEAP_LIMIT: ["v8js.heap.space.name", "scaler"],
271
274
  V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: ["v8js.heap.space.name", "scaler"],
272
275
  V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: ["v8js.heap.space.name", "scaler"],
276
+ V8JS_MEMORY_HEAP_SPACE_SIZE: ["v8js.heap.space.name", "scaler"],
273
277
  V8JS_MEMORY_HEAP_USED: ["v8js.heap.space.name", "scaler"]
274
278
  };
275
279
  const MetricKind = {
@@ -293,6 +297,7 @@ const MetricKind = {
293
297
  KICI_ORCH_BUILD_DURATION_SECONDS: "histogram",
294
298
  KICI_ORCH_CONFIG_RELOAD_TOTAL: "counter",
295
299
  KICI_ORCH_CONFIG_VERSION: "observableGauge",
300
+ KICI_ORCH_DECLARED_HOSTS_UNREACHABLE: "observableGauge",
296
301
  KICI_ORCH_DEDUP_HITS_TOTAL: "counter",
297
302
  KICI_ORCH_DEP_CACHE_HITS_TOTAL: "counter",
298
303
  KICI_ORCH_DEP_CACHE_MISSES_TOTAL: "counter",
@@ -402,6 +407,7 @@ const MetricKind = {
402
407
  V8JS_MEMORY_HEAP_LIMIT: "gauge",
403
408
  V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: "gauge",
404
409
  V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: "gauge",
410
+ V8JS_MEMORY_HEAP_SPACE_SIZE: "gauge",
405
411
  V8JS_MEMORY_HEAP_USED: "gauge"
406
412
  };
407
413
  const MetricDescription = {
@@ -425,6 +431,7 @@ const MetricDescription = {
425
431
  KICI_ORCH_BUILD_DURATION_SECONDS: "Duration of build agent operations in seconds",
426
432
  KICI_ORCH_CONFIG_RELOAD_TOTAL: "Total number of config reload operations",
427
433
  KICI_ORCH_CONFIG_VERSION: "Current shared config version number",
434
+ KICI_ORCH_DECLARED_HOSTS_UNREACHABLE: "Number of declared (static) roster hosts currently unreachable",
428
435
  KICI_ORCH_DEDUP_HITS_TOTAL: "Total number of deduplication cache hits",
429
436
  KICI_ORCH_DEP_CACHE_HITS_TOTAL: "Total number of dep cache hits",
430
437
  KICI_ORCH_DEP_CACHE_MISSES_TOTAL: "Total number of dep cache misses",
@@ -440,7 +447,7 @@ const MetricDescription = {
440
447
  KICI_ORCH_EXECUTIONS_TOTAL: "Total number of execution runs",
441
448
  KICI_ORCH_GITHUB_CHECK_RUN_TOTAL: "Total number of GitHub check run API calls",
442
449
  KICI_ORCH_INSTALL_SECRETS_CONTRIBUTOR_STRIPPED_TOTAL: "Dispatches where registry tokens were stripped because the contributor tier was not `trusted`",
443
- KICI_ORCH_INSTALL_SECRETS_DECISIONS_TOTAL: "Total install-secrets resolution decisions (pass / reject + reason)",
450
+ KICI_ORCH_INSTALL_SECRETS_DECISIONS_TOTAL: "Total install-secrets resolution decisions (pass / reject / hold + reason)",
444
451
  KICI_ORCH_INSTALL_SECRETS_NPM_REGISTRY_USED_TOTAL: "Total registry / installEnv entries successfully resolved per channel / provider / scope",
445
452
  KICI_ORCH_INSTALL_SECRETS_TOKEN_RESOLUTION_DURATION_SECONDS: "Duration of per-environment secret resolution during install-secrets evaluation",
446
453
  KICI_ORCH_JOB_CONSECUTIVE_FAILURES: "Consecutive failures for each scheduled job since its last success",
@@ -534,6 +541,7 @@ const MetricDescription = {
534
541
  V8JS_MEMORY_HEAP_LIMIT: "V8 heap size limit by heap space",
535
542
  V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: "V8 available heap size by heap space",
536
543
  V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: "V8 physical heap size by heap space",
544
+ V8JS_MEMORY_HEAP_SPACE_SIZE: "V8 total heap size by heap space",
537
545
  V8JS_MEMORY_HEAP_USED: "V8 used heap size by heap space"
538
546
  };
539
547
  /**
@@ -564,6 +572,7 @@ const MetricService = {
564
572
  KICI_ORCH_BUILD_DURATION_SECONDS: "orchestrator",
565
573
  KICI_ORCH_CONFIG_RELOAD_TOTAL: "orchestrator",
566
574
  KICI_ORCH_CONFIG_VERSION: "orchestrator",
575
+ KICI_ORCH_DECLARED_HOSTS_UNREACHABLE: "orchestrator",
567
576
  KICI_ORCH_DEDUP_HITS_TOTAL: "orchestrator",
568
577
  KICI_ORCH_DEP_CACHE_HITS_TOTAL: "orchestrator",
569
578
  KICI_ORCH_DEP_CACHE_MISSES_TOTAL: "orchestrator",
@@ -673,6 +682,7 @@ const MetricService = {
673
682
  V8JS_MEMORY_HEAP_LIMIT: "runtime",
674
683
  V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE: "runtime",
675
684
  V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE: "runtime",
685
+ V8JS_MEMORY_HEAP_SPACE_SIZE: "runtime",
676
686
  V8JS_MEMORY_HEAP_USED: "runtime"
677
687
  };
678
688
  /** Set of every catalog metric name — O(1) membership for lint / filter UI. */
@@ -697,6 +707,7 @@ const ALL_METRIC_NAMES = [
697
707
  "kici_orch_build_duration_seconds",
698
708
  "kici_orch_config_reload_total",
699
709
  "kici_orch_config_version",
710
+ "kici_orch_declared_hosts_unreachable",
700
711
  "kici_orch_dedup_hits_total",
701
712
  "kici_orch_dep_cache_hits_total",
702
713
  "kici_orch_dep_cache_misses_total",
@@ -806,6 +817,7 @@ const ALL_METRIC_NAMES = [
806
817
  "v8js.memory.heap.limit",
807
818
  "v8js.memory.heap.space.available_size",
808
819
  "v8js.memory.heap.space.physical_size",
820
+ "v8js.memory.heap.space.size",
809
821
  "v8js.memory.heap.used"
810
822
  ];
811
823
  //#endregion
@@ -1,4 +1,4 @@
1
- import "../chunk-gOLHoazu.js";
1
+ import "../chunk-BTugEXQM.js";
2
2
  import { z } from "zod";
3
3
  //#region src/protocol/analytics-events.ts
4
4
  const AnalyticsEvent = z.enum([
@@ -1,4 +1,4 @@
1
- import "../chunk-gOLHoazu.js";
1
+ import "../chunk-BTugEXQM.js";
2
2
  import { z } from "zod";
3
3
  //#region src/protocol/cluster-name.ts
4
4
  /**
@@ -1,3 +1,3 @@
1
- import "../chunk-gOLHoazu.js";
1
+ import "../chunk-BTugEXQM.js";
2
2
  import { globalWorkflowSettingsSchema, globalWorkflowsGetRequestSchema, globalWorkflowsGetResponseSchema, globalWorkflowsUpdateRequestSchema, globalWorkflowsUpdateResponseSchema, repoPatternEntrySchema } from "./messages/dashboard-global-workflows.js";
3
3
  export { globalWorkflowSettingsSchema, globalWorkflowsGetRequestSchema, globalWorkflowsGetResponseSchema, globalWorkflowsUpdateRequestSchema, globalWorkflowsUpdateResponseSchema, repoPatternEntrySchema };
@@ -1,4 +1,4 @@
1
- import "../chunk-gOLHoazu.js";
1
+ import "../chunk-BTugEXQM.js";
2
2
  import { z } from "zod";
3
3
  //#region src/protocol/dashboard-write-operations.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import "../chunk-gOLHoazu.js";
1
+ import "../chunk-BTugEXQM.js";
2
2
  //#region src/protocol/event-log-payload.ts
3
3
  /**
4
4
  * Constants for the chunked event-log payload streaming transport.