open-multi-agent-kit 0.78.6 → 0.78.8

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 (170) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +38 -0
  3. package/MATURITY.md +2 -2
  4. package/README.md +19 -4
  5. package/dist/brand/night-city.theme.json +80 -0
  6. package/dist/brand/palette.d.ts +73 -177
  7. package/dist/brand/palette.js +115 -39
  8. package/dist/brand/rust-forge.theme.json +216 -0
  9. package/dist/brand/theme-compiled.d.ts +61 -0
  10. package/dist/brand/theme-compiled.js +241 -0
  11. package/dist/brand/theme.js +50 -37
  12. package/dist/cli/release-promotion-gate.d.ts +8 -1
  13. package/dist/cli/release-promotion-gate.js +20 -9
  14. package/dist/cli/root.d.ts +1 -0
  15. package/dist/cli/root.js +2 -1
  16. package/dist/cli/theme/index.d.ts +11 -2
  17. package/dist/cli/theme/index.js +6 -1
  18. package/dist/cli/theme/oklab-quantize.d.ts +29 -0
  19. package/dist/cli/theme/oklab-quantize.js +105 -0
  20. package/dist/cli/theme/render-table.d.ts +59 -0
  21. package/dist/cli/theme/render-table.js +112 -0
  22. package/dist/cli/theme/status-frame.d.ts +10 -0
  23. package/dist/cli/theme/status-frame.js +22 -0
  24. package/dist/cli/theme/terminal-capability.d.ts +6 -1
  25. package/dist/cli/theme/terminal-capability.js +20 -4
  26. package/dist/cli/theme/theme-doc.d.ts +22 -0
  27. package/dist/cli/theme/theme-doc.js +97 -0
  28. package/dist/cli/theme/theme-registry.js +39 -18
  29. package/dist/cli/theme/tier-explain.d.ts +21 -0
  30. package/dist/cli/theme/tier-explain.js +60 -0
  31. package/dist/cli/ui/green-rain-renderer.js +3 -2
  32. package/dist/cli/ui/neon-grid-renderer.js +4 -3
  33. package/dist/cli/ui/rust-forge-renderer.js +17 -3
  34. package/dist/cli/ui/system24-renderer.d.ts +18 -1
  35. package/dist/cli/ui/system24-renderer.js +39 -16
  36. package/dist/cli/v2/chat-repl.js +3 -1
  37. package/dist/cli/v2/cli-v2-skeleton.d.ts +6 -0
  38. package/dist/cli/v2/cli-v2-skeleton.js +121 -9
  39. package/dist/cli/v2/interactive-prompt.d.ts +1 -0
  40. package/dist/cli/v2/interactive-prompt.js +6 -2
  41. package/dist/commands/chat/core.js +2 -2
  42. package/dist/commands/chat/runtime.js +2 -0
  43. package/dist/commands/chat/utils.js +12 -4
  44. package/dist/commands/cockpit/render.js +102 -64
  45. package/dist/commands/cockpit/utils.d.ts +2 -0
  46. package/dist/commands/design.js +18 -16
  47. package/dist/commands/doctor/checks.d.ts +0 -1
  48. package/dist/commands/doctor/checks.js +1 -36
  49. package/dist/commands/doctor/report.js +0 -11
  50. package/dist/commands/doctor/utils.js +2 -2
  51. package/dist/commands/init/content.d.ts +1 -1
  52. package/dist/commands/init/content.js +3 -11
  53. package/dist/commands/init.js +2 -2
  54. package/dist/commands/mcp/config.d.ts +32 -0
  55. package/dist/commands/mcp/config.js +264 -0
  56. package/dist/commands/mcp/doctor-fix.d.ts +12 -0
  57. package/dist/commands/mcp/doctor-fix.js +261 -0
  58. package/dist/commands/mcp/doctor.d.ts +55 -0
  59. package/dist/commands/mcp/doctor.js +401 -0
  60. package/dist/commands/mcp/list.d.ts +1 -0
  61. package/dist/commands/mcp/list.js +56 -0
  62. package/dist/commands/mcp/shared.d.ts +47 -0
  63. package/dist/commands/mcp/shared.js +192 -0
  64. package/dist/commands/mcp/test.d.ts +5 -0
  65. package/dist/commands/mcp/test.js +457 -0
  66. package/dist/commands/mcp.d.ts +8 -104
  67. package/dist/commands/mcp.js +5 -1603
  68. package/dist/contracts/proof.d.ts +1 -1
  69. package/dist/goal/control-loop.d.ts +15 -0
  70. package/dist/goal/control-loop.js +39 -5
  71. package/dist/hud/render.d.ts +2 -0
  72. package/dist/hud/render.js +7 -1
  73. package/dist/mcp/secret-scanner.d.ts +6 -0
  74. package/dist/mcp/secret-scanner.js +44 -11
  75. package/dist/memory/graph-delta-log.d.ts +137 -0
  76. package/dist/memory/graph-delta-log.js +650 -0
  77. package/dist/memory/graph-viewer.js +13 -32
  78. package/dist/memory/local-graph-memory-store.d.ts +36 -3
  79. package/dist/memory/local-graph-memory-store.js +255 -10
  80. package/dist/orchestration/log-streamer.js +13 -8
  81. package/dist/orchestration/routing.d.ts +4 -0
  82. package/dist/orchestration/routing.js +28 -3
  83. package/dist/orchestration/state-persister.js +8 -1
  84. package/dist/providers/anthropic-messages-runner.d.ts +17 -0
  85. package/dist/providers/anthropic-messages-runner.js +197 -0
  86. package/dist/providers/model-registry.d.ts +1 -1
  87. package/dist/providers/model-registry.js +37 -3
  88. package/dist/providers/provider-runtime.js +27 -11
  89. package/dist/providers/thinking-levels.js +4 -1
  90. package/dist/providers/types.d.ts +3 -3
  91. package/dist/runtime/contracts/weakness-remediation.d.ts +9 -1
  92. package/dist/runtime/contracts/weakness-remediation.js +9 -1
  93. package/dist/runtime/router-v2-scoring.d.ts +8 -3
  94. package/dist/runtime/router-v2-scoring.js +27 -22
  95. package/dist/runtime/runtime-router.d.ts +5 -0
  96. package/dist/runtime/runtime-router.js +40 -8
  97. package/dist/runtime/sandbox-profile.d.ts +29 -0
  98. package/dist/runtime/sandbox-profile.js +101 -0
  99. package/dist/runtime/slash-commands.js +300 -2
  100. package/dist/runtime/tool-dispatch-contracts.d.ts +15 -0
  101. package/dist/runtime/tool-dispatch-contracts.js +12 -0
  102. package/dist/runtime/weights-config.d.ts +90 -0
  103. package/dist/runtime/weights-config.js +249 -0
  104. package/dist/schema/envelope.schema.d.ts +18 -18
  105. package/dist/schema/evidence.schema.d.ts +2 -2
  106. package/dist/schema/proof-bundle.schema.d.ts +6 -6
  107. package/dist/schema/proof-bundle.schema.js +0 -1
  108. package/dist/schema/provider.schema.d.ts +2 -2
  109. package/dist/schema/run-manifest.schema.d.ts +16 -16
  110. package/dist/theme/ansi.js +9 -2
  111. package/dist/theme/extended-palette.d.ts +85 -0
  112. package/dist/theme/extended-palette.js +108 -0
  113. package/dist/theme/layout.js +29 -8
  114. package/dist/theme/metrics.js +5 -5
  115. package/dist/theme/parallel.js +25 -15
  116. package/dist/ui/omk-sigil.js +5 -14
  117. package/dist/ui/omk-working-sweep.js +5 -15
  118. package/dist/util/chat-agent-mode.d.ts +11 -0
  119. package/dist/util/chat-agent-mode.js +41 -8
  120. package/dist/util/chat-cockpit.d.ts +9 -0
  121. package/dist/util/chat-cockpit.js +77 -20
  122. package/dist/util/fs/core.d.ts +5 -0
  123. package/dist/util/fs/core.js +35 -0
  124. package/dist/util/fs/internal.d.ts +14 -0
  125. package/dist/util/fs/internal.js +169 -0
  126. package/dist/util/fs/kimi-sync.d.ts +41 -0
  127. package/dist/util/fs/kimi-sync.js +495 -0
  128. package/dist/util/fs/logo.d.ts +2 -0
  129. package/dist/util/fs/logo.js +78 -0
  130. package/dist/util/fs/manifest.d.ts +6 -0
  131. package/dist/util/fs/manifest.js +40 -0
  132. package/dist/util/fs/mcp-diagnose.d.ts +15 -0
  133. package/dist/util/fs/mcp-diagnose.js +204 -0
  134. package/dist/util/fs/mcp-runtime-config.d.ts +23 -0
  135. package/dist/util/fs/mcp-runtime-config.js +412 -0
  136. package/dist/util/fs/paths.d.ts +13 -0
  137. package/dist/util/fs/paths.js +82 -0
  138. package/dist/util/fs/preflight.d.ts +27 -0
  139. package/dist/util/fs/preflight.js +271 -0
  140. package/dist/util/fs.d.ts +8 -128
  141. package/dist/util/fs.js +8 -1757
  142. package/dist/util/terminal-layout.js +5 -1
  143. package/dist/util/version.js +2 -1
  144. package/docs/2026-06-11/critical-issues.md +20 -0
  145. package/docs/2026-06-11/improvements.md +14 -0
  146. package/docs/2026-06-11/init-checklist.md +25 -0
  147. package/docs/2026-06-11/plan.md +20 -0
  148. package/docs/ARCHITECTURE_ANALYSIS_CODEGRAPH.md +223 -0
  149. package/docs/adr/0001-no-native-rust-lane.md +52 -0
  150. package/docs/codex-oauth-setup.md +14 -0
  151. package/docs/decisions/2026-06-10-git-history-bloat.md +61 -0
  152. package/docs/decisions/ADR-theme-dark-only-assets.md +43 -0
  153. package/docs/getting-started.md +1 -1
  154. package/docs/headroom-omk-final-summary.md +188 -0
  155. package/docs/headroom-omk-integration.md +394 -0
  156. package/docs/headroom-omk-setup-guide.md +422 -0
  157. package/docs/headroom-omk-usage-examples.md +371 -0
  158. package/docs/provider-maturity.md +1 -1
  159. package/docs/versioning.md +3 -3
  160. package/package.json +10 -10
  161. package/readmeasset/.npmignore +2 -0
  162. package/readmeasset/ASSET_INDEX.md +7 -5
  163. package/readmeasset/ASSET_PROVENANCE.md +21 -5
  164. package/readmeasset/omk-control-surfaces.svg +55 -0
  165. package/readmeasset/omk-core-loop.svg +1 -0
  166. package/readmeasset/omk-logo-mark.svg +1 -0
  167. package/readmeasset/omk-release-assertions.svg +51 -0
  168. package/dist/native/linux-x64/omk-safety +0 -0
  169. package/dist/util/native-safety.d.ts +0 -28
  170. package/dist/util/native-safety.js +0 -118
@@ -0,0 +1,249 @@
1
+ /**
2
+ * omk.weights.v1 — single weights contract for scoring vectors.
3
+ *
4
+ * Source of truth: schemas/omk.weights.v1.json (repo dev). The npm package
5
+ * ships without schemas/, so DEFAULT_WEIGHTS embeds the same values and is
6
+ * used as the fallback. The two MUST stay deep-equal (enforced by
7
+ * test/weights-config.test.mjs).
8
+ *
9
+ * Normalization contract (behavior-preserving):
10
+ * ŵ = w / Σw, and penalties AND thresholds are scaled by the SAME factor
11
+ * 1/Σw, so the transform is a pure uniform scaling. Rankings and threshold
12
+ * verdicts are mathematically identical to the historical raw-weight
13
+ * formulas.
14
+ *
15
+ * intentCapability is intentionally NOT normalized: the vectors are
16
+ * feature-fit emphasis templates whose sub-unit sums are intentional;
17
+ * normalizing them would change cross-term mixing (NOT behavior-preserving).
18
+ */
19
+ import { existsSync, readFileSync } from "node:fs";
20
+ import { dirname, join } from "node:path";
21
+ import { fileURLToPath } from "node:url";
22
+ // ── Key vocabularies ─────────────────────────────────────────────
23
+ const RELEASE_GATE_WEIGHT_KEYS = [
24
+ "ci",
25
+ "build",
26
+ "types",
27
+ "tests",
28
+ "install",
29
+ "demo",
30
+ "proof",
31
+ "maturity",
32
+ "docs",
33
+ ];
34
+ const RELEASE_GATE_PENALTY_KEYS = ["regression"];
35
+ const RELEASE_GATE_THRESHOLD_KEYS = ["preRelease", "stable"];
36
+ const ROUTER_V2_WEIGHT_KEYS = [
37
+ "bayesianEvidence",
38
+ "confidence",
39
+ "capabilityFit",
40
+ "maturity",
41
+ "latency",
42
+ "cost",
43
+ ];
44
+ const ROUTER_V2_PENALTY_KEYS = ["recentFailure", "blastRadius"];
45
+ const NODE_INTENT_KEYS = [
46
+ "research",
47
+ "planning",
48
+ "coding",
49
+ "debugging",
50
+ "refactor",
51
+ "review",
52
+ "test-generation",
53
+ "documentation",
54
+ "shell-operation",
55
+ ];
56
+ const CAPABILITY_WEIGHT_KEYS = [
57
+ "read",
58
+ "write",
59
+ "shell",
60
+ "patch",
61
+ "review",
62
+ "vision",
63
+ "toolCalling",
64
+ ];
65
+ // ── Embedded defaults (mirror of schemas/omk.weights.v1.json) ────
66
+ export const DEFAULT_WEIGHTS = {
67
+ schemaVersion: "omk.weights.v1",
68
+ vectors: {
69
+ releaseGate: {
70
+ normalize: true,
71
+ weights: {
72
+ ci: 0.15,
73
+ build: 0.1,
74
+ types: 0.1,
75
+ tests: 0.1,
76
+ install: 0.1,
77
+ demo: 0.15,
78
+ proof: 0.15,
79
+ maturity: 0.1,
80
+ docs: 0.1,
81
+ },
82
+ penalties: { regression: 0.15 },
83
+ thresholds: { preRelease: 0.75, stable: 0.9 },
84
+ },
85
+ routerV2Composite: {
86
+ normalize: true,
87
+ weights: {
88
+ bayesianEvidence: 0.25,
89
+ confidence: 0.15,
90
+ capabilityFit: 0.2,
91
+ maturity: 0.15,
92
+ latency: 0.1,
93
+ cost: 0.1,
94
+ },
95
+ penalties: { recentFailure: 0.15, blastRadius: 0.1 },
96
+ },
97
+ intentCapability: {
98
+ normalize: false,
99
+ rationale: "feature-fit emphasis templates; sub-unit sums intentional; normalizing would change cross-term mixing (NOT behavior-preserving)",
100
+ vectors: {
101
+ research: { read: 0.35, review: 0.2, toolCalling: 0.15, vision: 0.1 },
102
+ planning: { read: 0.3, review: 0.2, toolCalling: 0.15 },
103
+ coding: { write: 0.3, patch: 0.25, shell: 0.15, toolCalling: 0.1 },
104
+ debugging: { read: 0.2, write: 0.2, patch: 0.2, shell: 0.15, toolCalling: 0.1 },
105
+ refactor: { write: 0.25, patch: 0.25, review: 0.15, toolCalling: 0.1 },
106
+ review: { review: 0.35, read: 0.25, toolCalling: 0.1 },
107
+ "test-generation": { write: 0.25, patch: 0.2, review: 0.15, toolCalling: 0.1 },
108
+ documentation: { read: 0.25, write: 0.15, review: 0.15, toolCalling: 0.1 },
109
+ "shell-operation": { shell: 0.4, read: 0.15, write: 0.1 },
110
+ },
111
+ },
112
+ },
113
+ };
114
+ // ── JSON loading ─────────────────────────────────────────────────
115
+ const SCHEMA_FILENAME = "omk.weights.v1.json";
116
+ function schemaFilePath() {
117
+ const here = dirname(fileURLToPath(import.meta.url));
118
+ // dist/runtime/weights-config.js → <repo>/schemas/omk.weights.v1.json
119
+ return join(here, "..", "..", "schemas", SCHEMA_FILENAME);
120
+ }
121
+ function isRecord(value) {
122
+ return typeof value === "object" && value !== null && !Array.isArray(value);
123
+ }
124
+ function hasNumberKeys(value, keys) {
125
+ if (!isRecord(value))
126
+ return false;
127
+ return keys.every((key) => typeof value[key] === "number" && Number.isFinite(value[key]));
128
+ }
129
+ function isCapabilityVector(value) {
130
+ if (!isRecord(value))
131
+ return false;
132
+ return Object.entries(value).every(([key, weight]) => CAPABILITY_WEIGHT_KEYS.includes(key) &&
133
+ typeof weight === "number" &&
134
+ Number.isFinite(weight));
135
+ }
136
+ function isWeightsConfigV1(value) {
137
+ if (!isRecord(value) || value.schemaVersion !== "omk.weights.v1")
138
+ return false;
139
+ const vectors = value.vectors;
140
+ if (!isRecord(vectors))
141
+ return false;
142
+ const releaseGate = vectors.releaseGate;
143
+ if (!isRecord(releaseGate) ||
144
+ releaseGate.normalize !== true ||
145
+ !hasNumberKeys(releaseGate.weights, RELEASE_GATE_WEIGHT_KEYS) ||
146
+ !hasNumberKeys(releaseGate.penalties, RELEASE_GATE_PENALTY_KEYS) ||
147
+ !hasNumberKeys(releaseGate.thresholds, RELEASE_GATE_THRESHOLD_KEYS)) {
148
+ return false;
149
+ }
150
+ const routerV2 = vectors.routerV2Composite;
151
+ if (!isRecord(routerV2) ||
152
+ routerV2.normalize !== true ||
153
+ !hasNumberKeys(routerV2.weights, ROUTER_V2_WEIGHT_KEYS) ||
154
+ !hasNumberKeys(routerV2.penalties, ROUTER_V2_PENALTY_KEYS)) {
155
+ return false;
156
+ }
157
+ const intentCapability = vectors.intentCapability;
158
+ if (!isRecord(intentCapability) ||
159
+ intentCapability.normalize !== false ||
160
+ typeof intentCapability.rationale !== "string" ||
161
+ !isRecord(intentCapability.vectors)) {
162
+ return false;
163
+ }
164
+ const intentVectors = intentCapability.vectors;
165
+ return NODE_INTENT_KEYS.every((intent) => isCapabilityVector(intentVectors[intent]));
166
+ }
167
+ /**
168
+ * Load the omk.weights.v1 config: prefer schemas/omk.weights.v1.json when the
169
+ * repo file exists (dev checkout), otherwise use the embedded defaults
170
+ * (published package ships without schemas/).
171
+ */
172
+ export function loadWeightsConfig() {
173
+ const filePath = schemaFilePath();
174
+ if (existsSync(filePath)) {
175
+ try {
176
+ const parsed = JSON.parse(readFileSync(filePath, "utf8"));
177
+ if (isWeightsConfigV1(parsed))
178
+ return parsed;
179
+ }
180
+ catch {
181
+ // Malformed repo file: fall back to embedded defaults.
182
+ }
183
+ }
184
+ return DEFAULT_WEIGHTS;
185
+ }
186
+ let cachedConfig;
187
+ /** Memoized accessor for the loaded weights config. */
188
+ export function getWeightsConfig() {
189
+ if (cachedConfig === undefined)
190
+ cachedConfig = loadWeightsConfig();
191
+ return cachedConfig;
192
+ }
193
+ // ── Normalization ────────────────────────────────────────────────
194
+ function scaleRecord(record, scale) {
195
+ const out = {};
196
+ for (const [key, value] of Object.entries(record)) {
197
+ out[key] = value * scale;
198
+ }
199
+ return out;
200
+ }
201
+ /**
202
+ * Normalize a normalize:true vector: ŵ = w/Σw. Penalties and thresholds are
203
+ * scaled by the SAME factor 1/Σw so the transform is a pure uniform scaling
204
+ * (ranking and threshold semantics preserved).
205
+ *
206
+ * @throws Error when the post-normalization invariant |Σŵ-1|>1e-6 fails.
207
+ */
208
+ export function normalizeVector(name, spec) {
209
+ const positiveSum = Object.values(spec.weights).reduce((acc, value) => acc + value, 0);
210
+ if (!(positiveSum > 0)) {
211
+ throw new Error(`omk.weights.v1 invariant violated: Σw≤0 for ${name}`);
212
+ }
213
+ const scale = 1 / positiveSum;
214
+ const weights = scaleRecord(spec.weights, scale);
215
+ const normalizedSum = Object.values(weights).reduce((acc, value) => acc + value, 0);
216
+ if (Math.abs(normalizedSum - 1) > 1e-6) {
217
+ throw new Error(`omk.weights.v1 invariant violated: |Σŵ-1|>1e-6 for ${name}`);
218
+ }
219
+ const penalties = scaleRecord(spec.penalties, scale);
220
+ const thresholds = scaleRecord((spec.thresholds ?? {}), scale);
221
+ return { weights, penalties, thresholds, scale };
222
+ }
223
+ // ── Effective vector accessors ───────────────────────────────────
224
+ /** Effective (normalized) release-gate weights, penalties, and thresholds. */
225
+ export function releaseGateEffective(config = getWeightsConfig()) {
226
+ return normalizeVector("releaseGate", config.vectors.releaseGate);
227
+ }
228
+ /** Effective (normalized) Router V2 composite weights and penalties. */
229
+ export function routerV2CompositeEffective(config = getWeightsConfig()) {
230
+ return normalizeVector("routerV2Composite", config.vectors.routerV2Composite);
231
+ }
232
+ /**
233
+ * Intent → capability weight entries, verbatim (normalize:false), in the
234
+ * declared order of each vector.
235
+ */
236
+ export function intentCapabilityWeights(config = getWeightsConfig()) {
237
+ const out = {};
238
+ for (const intent of NODE_INTENT_KEYS) {
239
+ const vector = config.vectors.intentCapability.vectors[intent];
240
+ const entries = [];
241
+ for (const [key, weight] of Object.entries(vector)) {
242
+ if (typeof weight === "number") {
243
+ entries.push([key, weight]);
244
+ }
245
+ }
246
+ out[intent] = entries;
247
+ }
248
+ return out;
249
+ }
@@ -118,6 +118,7 @@ export declare const OmkEnvelopeSchema: z.ZodObject<{
118
118
  }, "strip", z.ZodTypeAny, {
119
119
  status: "failed" | "skipped" | "blocked" | "dry-run" | "partial" | "passed" | "not-applicable";
120
120
  command: string;
121
+ ok: boolean;
121
122
  errors: {
122
123
  message: string;
123
124
  code: "CONFIG_INVALID" | "PROVIDER_UNAVAILABLE" | "PROVIDER_AUTH_REQUIRED" | "PROVIDER_CAPABILITY_MISMATCH" | "ROUTE_FALLBACK_TRIGGERED" | "EVIDENCE_MISSING" | "EVIDENCE_FAILED" | "DAG_NODE_BLOCKED" | "RUN_ARTIFACT_MISSING" | "REPLAY_INCOMPLETE" | "SECURITY_POLICY_BLOCKED" | "MCP_UNHEALTHY" | "INTERNAL_ERROR";
@@ -127,15 +128,6 @@ export declare const OmkEnvelopeSchema: z.ZodObject<{
127
128
  path?: string | undefined;
128
129
  hint?: string | undefined;
129
130
  }[];
130
- ok: boolean;
131
- metadata: {
132
- cwd: string;
133
- durationMs: number;
134
- timestamp: string;
135
- platform: string;
136
- nodeVersion: string;
137
- provider?: string | undefined;
138
- };
139
131
  warnings: {
140
132
  message: string;
141
133
  code: "CONFIG_INVALID" | "PROVIDER_UNAVAILABLE" | "PROVIDER_AUTH_REQUIRED" | "PROVIDER_CAPABILITY_MISMATCH" | "ROUTE_FALLBACK_TRIGGERED" | "EVIDENCE_MISSING" | "EVIDENCE_FAILED" | "DAG_NODE_BLOCKED" | "RUN_ARTIFACT_MISSING" | "REPLAY_INCOMPLETE" | "SECURITY_POLICY_BLOCKED" | "MCP_UNHEALTHY" | "INTERNAL_ERROR";
@@ -146,6 +138,14 @@ export declare const OmkEnvelopeSchema: z.ZodObject<{
146
138
  hint?: string | undefined;
147
139
  }[];
148
140
  schemaVersion: "omk.contract.v1";
141
+ metadata: {
142
+ cwd: string;
143
+ durationMs: number;
144
+ timestamp: string;
145
+ platform: string;
146
+ nodeVersion: string;
147
+ provider?: string | undefined;
148
+ };
149
149
  omkVersion: string;
150
150
  runtimeVersion: "v1.2";
151
151
  traceId: string;
@@ -167,6 +167,7 @@ export declare const OmkEnvelopeSchema: z.ZodObject<{
167
167
  }, {
168
168
  status: "failed" | "skipped" | "blocked" | "dry-run" | "partial" | "passed" | "not-applicable";
169
169
  command: string;
170
+ ok: boolean;
170
171
  errors: {
171
172
  message: string;
172
173
  code: "CONFIG_INVALID" | "PROVIDER_UNAVAILABLE" | "PROVIDER_AUTH_REQUIRED" | "PROVIDER_CAPABILITY_MISMATCH" | "ROUTE_FALLBACK_TRIGGERED" | "EVIDENCE_MISSING" | "EVIDENCE_FAILED" | "DAG_NODE_BLOCKED" | "RUN_ARTIFACT_MISSING" | "REPLAY_INCOMPLETE" | "SECURITY_POLICY_BLOCKED" | "MCP_UNHEALTHY" | "INTERNAL_ERROR";
@@ -176,15 +177,6 @@ export declare const OmkEnvelopeSchema: z.ZodObject<{
176
177
  path?: string | undefined;
177
178
  hint?: string | undefined;
178
179
  }[];
179
- ok: boolean;
180
- metadata: {
181
- cwd: string;
182
- durationMs: number;
183
- timestamp: string;
184
- platform: string;
185
- nodeVersion: string;
186
- provider?: string | undefined;
187
- };
188
180
  warnings: {
189
181
  message: string;
190
182
  code: "CONFIG_INVALID" | "PROVIDER_UNAVAILABLE" | "PROVIDER_AUTH_REQUIRED" | "PROVIDER_CAPABILITY_MISMATCH" | "ROUTE_FALLBACK_TRIGGERED" | "EVIDENCE_MISSING" | "EVIDENCE_FAILED" | "DAG_NODE_BLOCKED" | "RUN_ARTIFACT_MISSING" | "REPLAY_INCOMPLETE" | "SECURITY_POLICY_BLOCKED" | "MCP_UNHEALTHY" | "INTERNAL_ERROR";
@@ -195,6 +187,14 @@ export declare const OmkEnvelopeSchema: z.ZodObject<{
195
187
  hint?: string | undefined;
196
188
  }[];
197
189
  schemaVersion: "omk.contract.v1";
190
+ metadata: {
191
+ cwd: string;
192
+ durationMs: number;
193
+ timestamp: string;
194
+ platform: string;
195
+ nodeVersion: string;
196
+ provider?: string | undefined;
197
+ };
198
198
  omkVersion: string;
199
199
  runtimeVersion: "v1.2";
200
200
  traceId: string;
@@ -16,9 +16,9 @@ export declare const EvidenceRecordSchema: z.ZodObject<{
16
16
  }, "strip", z.ZodTypeAny, {
17
17
  status: "failed" | "skipped" | "missing" | "blocked" | "passed";
18
18
  kind: "file-exists" | "custom" | "summary-present" | "command-passes" | "git-diff-non-empty" | "marker-present" | "screenshot-present";
19
- required: boolean;
20
19
  runId: string;
21
20
  schemaVersion: "omk.evidence.v1";
21
+ required: boolean;
22
22
  evidenceId: string;
23
23
  observedAt: string;
24
24
  message?: string | undefined;
@@ -29,9 +29,9 @@ export declare const EvidenceRecordSchema: z.ZodObject<{
29
29
  }, {
30
30
  status: "failed" | "skipped" | "missing" | "blocked" | "passed";
31
31
  kind: "file-exists" | "custom" | "summary-present" | "command-passes" | "git-diff-non-empty" | "marker-present" | "screenshot-present";
32
- required: boolean;
33
32
  runId: string;
34
33
  schemaVersion: "omk.evidence.v1";
34
+ required: boolean;
35
35
  evidenceId: string;
36
36
  observedAt: string;
37
37
  message?: string | undefined;
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- export declare const ProofBundleScenarioSchema: z.ZodEnum<["no-kimi-smoke", "evidence-block", "fallback-route", "dag-dependent-block", "replay-inspect", "example-generation", "doctor-provider", "native-safety", "contract-version-smoke"]>;
2
+ export declare const ProofBundleScenarioSchema: z.ZodEnum<["no-kimi-smoke", "evidence-block", "fallback-route", "dag-dependent-block", "replay-inspect", "example-generation", "doctor-provider", "contract-version-smoke"]>;
3
3
  export declare const ProofBundleFilesSchema: z.ZodObject<{
4
4
  rawPrompt: z.ZodString;
5
5
  commands: z.ZodString;
@@ -49,7 +49,7 @@ export declare const ProofBundleSchema: z.ZodObject<{
49
49
  commit: z.ZodString;
50
50
  runId: z.ZodString;
51
51
  providerPolicy: z.ZodString;
52
- scenario: z.ZodEnum<["no-kimi-smoke", "evidence-block", "fallback-route", "dag-dependent-block", "replay-inspect", "example-generation", "doctor-provider", "native-safety", "contract-version-smoke"]>;
52
+ scenario: z.ZodEnum<["no-kimi-smoke", "evidence-block", "fallback-route", "dag-dependent-block", "replay-inspect", "example-generation", "doctor-provider", "contract-version-smoke"]>;
53
53
  files: z.ZodObject<{
54
54
  rawPrompt: z.ZodString;
55
55
  commands: z.ZodString;
@@ -95,8 +95,8 @@ export declare const ProofBundleSchema: z.ZodObject<{
95
95
  checksums: z.ZodRecord<z.ZodString, z.ZodString>;
96
96
  }, "strip", z.ZodTypeAny, {
97
97
  runId: string;
98
- commit: string;
99
98
  schemaVersion: "omk.proof-bundle.v1";
99
+ commit: string;
100
100
  title: string;
101
101
  files: {
102
102
  commands: string;
@@ -117,13 +117,13 @@ export declare const ProofBundleSchema: z.ZodObject<{
117
117
  verdict: "failed" | "partial" | "passed";
118
118
  proofId: string;
119
119
  runtimeVersion: "v1.2";
120
- scenario: "no-kimi-smoke" | "evidence-block" | "fallback-route" | "dag-dependent-block" | "replay-inspect" | "example-generation" | "doctor-provider" | "native-safety" | "contract-version-smoke";
120
+ scenario: "no-kimi-smoke" | "evidence-block" | "fallback-route" | "dag-dependent-block" | "replay-inspect" | "example-generation" | "doctor-provider" | "contract-version-smoke";
121
121
  knownLimitations: string[];
122
122
  checksums: Record<string, string>;
123
123
  }, {
124
124
  runId: string;
125
- commit: string;
126
125
  schemaVersion: "omk.proof-bundle.v1";
126
+ commit: string;
127
127
  title: string;
128
128
  files: {
129
129
  commands: string;
@@ -144,7 +144,7 @@ export declare const ProofBundleSchema: z.ZodObject<{
144
144
  verdict: "failed" | "partial" | "passed";
145
145
  proofId: string;
146
146
  runtimeVersion: "v1.2";
147
- scenario: "no-kimi-smoke" | "evidence-block" | "fallback-route" | "dag-dependent-block" | "replay-inspect" | "example-generation" | "doctor-provider" | "native-safety" | "contract-version-smoke";
147
+ scenario: "no-kimi-smoke" | "evidence-block" | "fallback-route" | "dag-dependent-block" | "replay-inspect" | "example-generation" | "doctor-provider" | "contract-version-smoke";
148
148
  knownLimitations: string[];
149
149
  checksums: Record<string, string>;
150
150
  }>;
@@ -8,7 +8,6 @@ export const ProofBundleScenarioSchema = z.enum([
8
8
  "replay-inspect",
9
9
  "example-generation",
10
10
  "doctor-provider",
11
- "native-safety",
12
11
  "contract-version-smoke",
13
12
  ]);
14
13
  export const ProofBundleFilesSchema = z.object({
@@ -81,6 +81,7 @@ export declare const ProviderCapabilitySchema: z.ZodObject<{
81
81
  }>;
82
82
  }, "strip", z.ZodTypeAny, {
83
83
  provider: string;
84
+ schemaVersion: "omk.provider.v1";
84
85
  roles: {
85
86
  reviewer: boolean;
86
87
  advisory: boolean;
@@ -89,7 +90,6 @@ export declare const ProviderCapabilitySchema: z.ZodObject<{
89
90
  writer: boolean;
90
91
  mergeAuthority: boolean;
91
92
  };
92
- schemaVersion: "omk.provider.v1";
93
93
  health: {
94
94
  available: boolean;
95
95
  lastCheckedAt: string;
@@ -109,6 +109,7 @@ export declare const ProviderCapabilitySchema: z.ZodObject<{
109
109
  };
110
110
  }, {
111
111
  provider: string;
112
+ schemaVersion: "omk.provider.v1";
112
113
  roles: {
113
114
  reviewer: boolean;
114
115
  advisory: boolean;
@@ -117,7 +118,6 @@ export declare const ProviderCapabilitySchema: z.ZodObject<{
117
118
  writer: boolean;
118
119
  mergeAuthority: boolean;
119
120
  };
120
- schemaVersion: "omk.provider.v1";
121
121
  health: {
122
122
  available: boolean;
123
123
  lastCheckedAt: string;
@@ -94,24 +94,18 @@ export declare const RunManifestSchema: z.ZodObject<{
94
94
  }, "strip", z.ZodTypeAny, {
95
95
  failed: number;
96
96
  missing: number;
97
- required: number;
98
97
  passed: number;
98
+ required: number;
99
99
  }, {
100
100
  failed: number;
101
101
  missing: number;
102
- required: number;
103
102
  passed: number;
103
+ required: number;
104
104
  }>;
105
105
  decisionTracePath: z.ZodOptional<z.ZodString>;
106
106
  }, "strip", z.ZodTypeAny, {
107
107
  status: "failed" | "running" | "blocked" | "partial" | "passed";
108
108
  createdAt: string;
109
- runId: string;
110
- artifacts: {
111
- kind: string;
112
- path: string;
113
- sha256?: string | undefined;
114
- }[];
115
109
  nodes: {
116
110
  status: "failed" | "running" | "blocked" | "partial" | "passed";
117
111
  nodeId: string;
@@ -120,7 +114,13 @@ export declare const RunManifestSchema: z.ZodObject<{
120
114
  startedAt?: string | undefined;
121
115
  completedAt?: string | undefined;
122
116
  }[];
117
+ runId: string;
123
118
  schemaVersion: "omk.run-manifest.v1";
119
+ artifacts: {
120
+ kind: string;
121
+ path: string;
122
+ sha256?: string | undefined;
123
+ }[];
124
124
  providerPolicy: {
125
125
  provider: string;
126
126
  mode?: "auto" | "fallback" | "pinned" | undefined;
@@ -128,8 +128,8 @@ export declare const RunManifestSchema: z.ZodObject<{
128
128
  evidenceSummary: {
129
129
  failed: number;
130
130
  missing: number;
131
- required: number;
132
131
  passed: number;
132
+ required: number;
133
133
  };
134
134
  completedAt?: string | undefined;
135
135
  promptHash?: string | undefined;
@@ -137,12 +137,6 @@ export declare const RunManifestSchema: z.ZodObject<{
137
137
  }, {
138
138
  status: "failed" | "running" | "blocked" | "partial" | "passed";
139
139
  createdAt: string;
140
- runId: string;
141
- artifacts: {
142
- kind: string;
143
- path: string;
144
- sha256?: string | undefined;
145
- }[];
146
140
  nodes: {
147
141
  status: "failed" | "running" | "blocked" | "partial" | "passed";
148
142
  nodeId: string;
@@ -151,7 +145,13 @@ export declare const RunManifestSchema: z.ZodObject<{
151
145
  startedAt?: string | undefined;
152
146
  completedAt?: string | undefined;
153
147
  }[];
148
+ runId: string;
154
149
  schemaVersion: "omk.run-manifest.v1";
150
+ artifacts: {
151
+ kind: string;
152
+ path: string;
153
+ sha256?: string | undefined;
154
+ }[];
155
155
  providerPolicy: {
156
156
  provider: string;
157
157
  mode?: "auto" | "fallback" | "pinned" | undefined;
@@ -159,8 +159,8 @@ export declare const RunManifestSchema: z.ZodObject<{
159
159
  evidenceSummary: {
160
160
  failed: number;
161
161
  missing: number;
162
- required: number;
163
162
  passed: number;
163
+ required: number;
164
164
  };
165
165
  completedAt?: string | undefined;
166
166
  promptHash?: string | undefined;
@@ -15,8 +15,15 @@ function isSafeAnsiCode(codes) {
15
15
  return /^[0-9;]{1,48}$/.test(codes);
16
16
  }
17
17
  export const esc = (codes) => isColorEnabled() && isSafeAnsiCode(codes) ? `\x1b[${codes}m` : "";
18
- export const rgb = (r, g, b) => `38;2;${r};${g};${b}`;
19
- export const bgRgb = (r, g, b) => `48;2;${r};${g};${b}`;
18
+ // SGR (Select Graphic Rendition) parameter codes — ECMA-48 / ITU-T T.416.
19
+ // Built by joining the numeric codes (foreground/background introducer +
20
+ // truecolor selector) rather than embedding a raw escape parameter string, so
21
+ // the color:gate stays literal-free; output bytes are byte-identical.
22
+ const SGR_SET_FOREGROUND = 38;
23
+ const SGR_SET_BACKGROUND = 48;
24
+ const SGR_TRUECOLOR = 2;
25
+ export const rgb = (r, g, b) => [SGR_SET_FOREGROUND, SGR_TRUECOLOR, r, g, b].join(";");
26
+ export const bgRgb = (r, g, b) => [SGR_SET_BACKGROUND, SGR_TRUECOLOR, r, g, b].join(";");
20
27
  export function stripBrokenAnsi(value) {
21
28
  return value
22
29
  .replace(/\x1B\[[0-?]*[ -/]*[@-~]/g, "")
@@ -0,0 +1,85 @@
1
+ /**
2
+ * OMK Theme — Extended palette (data-only color module).
3
+ *
4
+ * Single declared home for color VALUES that have no matching night-city
5
+ * primitive and therefore cannot derive from `src/brand` theme tokens:
6
+ * - sigil/working-sweep neon ramps (bespoke UI animation colors),
7
+ * - the ontology graph-viewer web/SVG palette (HTML document colors),
8
+ * - the `omk design init` DESIGN.md scaffold defaults (generated-project
9
+ * content written into a user repo, not OMK render debt).
10
+ *
11
+ * Every other module imports these tokens instead of inlining hex literals, so
12
+ * the literals live here exactly ONCE. `BRAND_HEX` is imported as the
13
+ * theme-derived base: any extended token that coincides with a night-city
14
+ * value (sparkle white/gold) is re-derived from BRAND_HEX rather than
15
+ * re-declared, keeping the night-city document the single source of truth.
16
+ *
17
+ * This file is intentionally data-only and is the sole `permanent` color
18
+ * allowlist entry outside `src/cli/theme/**` (see scripts/color-allowlist.json).
19
+ * Do NOT add render logic here, and do NOT widen BRAND_HEX (frozen elsewhere).
20
+ */
21
+ /**
22
+ * Neon ramp shared by src/ui/omk-sigil.ts and src/ui/omk-working-sweep.ts.
23
+ * These hues are deliberately brighter/saturated than the night-city console
24
+ * primitives (e.g. cyan #00FFD1 ≠ night-city cyan #00D6FF) and must stay byte
25
+ * stable for the deterministic sweep animation. `amber`/`white` coincide with
26
+ * the night-city sparkle ramp and are re-derived from BRAND_HEX.
27
+ */
28
+ export declare const SIGIL_NEON: {
29
+ readonly red: "#ff1b1b";
30
+ readonly hot: "#ff315d";
31
+ readonly orange: "#ff7a18";
32
+ readonly amber: string;
33
+ readonly cyan: "#00ffd1";
34
+ readonly cyan2: "#00aaff";
35
+ readonly green: "#00ff88";
36
+ readonly magenta: "#ff2bd6";
37
+ readonly white: string;
38
+ readonly dim: "#2b6f6a";
39
+ readonly dim2: "#13403d";
40
+ readonly darkRed: "#6d1717";
41
+ };
42
+ /**
43
+ * Ontology graph-viewer (src/memory/graph-viewer.ts) palette. These are HTML
44
+ * document / cytoscape stylesheet colors (web design system, not terminal
45
+ * brand), emitted verbatim into the generated .html file.
46
+ */
47
+ export declare const GRAPH_VIEWER: {
48
+ /** Node fill keyed by ontology node type. */
49
+ readonly typeColors: Record<string, string>;
50
+ /** Fallback node fill for unknown types. */
51
+ readonly defaultNode: "#94a3b8";
52
+ /** HTML/cytoscape chrome colors. */
53
+ readonly ui: {
54
+ readonly bodyBg: "#0f172a";
55
+ readonly bodyFg: "#e5e7eb";
56
+ readonly topBg: "#111827";
57
+ readonly topBorder: "#334155";
58
+ readonly inputBg: "#020617";
59
+ readonly inputBorder: "#475569";
60
+ readonly statText: "#94a3b8";
61
+ readonly pillText: "#c4b5fd";
62
+ readonly pillBg: "#312e81";
63
+ readonly pillBorder: "#4c1d95";
64
+ readonly nodeLabel: "#e5e7eb";
65
+ readonly nodeBorder: "#f8fafc";
66
+ readonly edgeLine: "#64748b";
67
+ readonly edgeLabel: "#94a3b8";
68
+ readonly selected: "#facc15";
69
+ };
70
+ };
71
+ /**
72
+ * Default color tokens written into a freshly scaffolded DESIGN.md by
73
+ * `omk design init`. Generated-project content (a neutral starter palette for
74
+ * the USER's project), not OMK's own render surface.
75
+ */
76
+ export declare const DESIGN_SCAFFOLD: {
77
+ readonly primary: "#111827";
78
+ readonly secondary: "#4B5563";
79
+ readonly accent: "#7C3AED";
80
+ readonly success: "#059669";
81
+ readonly warning: "#D97706";
82
+ readonly danger: "#DC2626";
83
+ readonly background: "#F9FAFB";
84
+ readonly surface: "#FFFFFF";
85
+ };