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.
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +38 -0
- package/MATURITY.md +2 -2
- package/README.md +19 -4
- package/dist/brand/night-city.theme.json +80 -0
- package/dist/brand/palette.d.ts +73 -177
- package/dist/brand/palette.js +115 -39
- package/dist/brand/rust-forge.theme.json +216 -0
- package/dist/brand/theme-compiled.d.ts +61 -0
- package/dist/brand/theme-compiled.js +241 -0
- package/dist/brand/theme.js +50 -37
- package/dist/cli/release-promotion-gate.d.ts +8 -1
- package/dist/cli/release-promotion-gate.js +20 -9
- package/dist/cli/root.d.ts +1 -0
- package/dist/cli/root.js +2 -1
- package/dist/cli/theme/index.d.ts +11 -2
- package/dist/cli/theme/index.js +6 -1
- package/dist/cli/theme/oklab-quantize.d.ts +29 -0
- package/dist/cli/theme/oklab-quantize.js +105 -0
- package/dist/cli/theme/render-table.d.ts +59 -0
- package/dist/cli/theme/render-table.js +112 -0
- package/dist/cli/theme/status-frame.d.ts +10 -0
- package/dist/cli/theme/status-frame.js +22 -0
- package/dist/cli/theme/terminal-capability.d.ts +6 -1
- package/dist/cli/theme/terminal-capability.js +20 -4
- package/dist/cli/theme/theme-doc.d.ts +22 -0
- package/dist/cli/theme/theme-doc.js +97 -0
- package/dist/cli/theme/theme-registry.js +39 -18
- package/dist/cli/theme/tier-explain.d.ts +21 -0
- package/dist/cli/theme/tier-explain.js +60 -0
- package/dist/cli/ui/green-rain-renderer.js +3 -2
- package/dist/cli/ui/neon-grid-renderer.js +4 -3
- package/dist/cli/ui/rust-forge-renderer.js +17 -3
- package/dist/cli/ui/system24-renderer.d.ts +18 -1
- package/dist/cli/ui/system24-renderer.js +39 -16
- package/dist/cli/v2/chat-repl.js +3 -1
- package/dist/cli/v2/cli-v2-skeleton.d.ts +6 -0
- package/dist/cli/v2/cli-v2-skeleton.js +121 -9
- package/dist/cli/v2/interactive-prompt.d.ts +1 -0
- package/dist/cli/v2/interactive-prompt.js +6 -2
- package/dist/commands/chat/core.js +2 -2
- package/dist/commands/chat/runtime.js +2 -0
- package/dist/commands/chat/utils.js +12 -4
- package/dist/commands/cockpit/render.js +102 -64
- package/dist/commands/cockpit/utils.d.ts +2 -0
- package/dist/commands/design.js +18 -16
- package/dist/commands/doctor/checks.d.ts +0 -1
- package/dist/commands/doctor/checks.js +1 -36
- package/dist/commands/doctor/report.js +0 -11
- package/dist/commands/doctor/utils.js +2 -2
- package/dist/commands/init/content.d.ts +1 -1
- package/dist/commands/init/content.js +3 -11
- package/dist/commands/init.js +2 -2
- package/dist/commands/mcp/config.d.ts +32 -0
- package/dist/commands/mcp/config.js +264 -0
- package/dist/commands/mcp/doctor-fix.d.ts +12 -0
- package/dist/commands/mcp/doctor-fix.js +261 -0
- package/dist/commands/mcp/doctor.d.ts +55 -0
- package/dist/commands/mcp/doctor.js +401 -0
- package/dist/commands/mcp/list.d.ts +1 -0
- package/dist/commands/mcp/list.js +56 -0
- package/dist/commands/mcp/shared.d.ts +47 -0
- package/dist/commands/mcp/shared.js +192 -0
- package/dist/commands/mcp/test.d.ts +5 -0
- package/dist/commands/mcp/test.js +457 -0
- package/dist/commands/mcp.d.ts +8 -104
- package/dist/commands/mcp.js +5 -1603
- package/dist/contracts/proof.d.ts +1 -1
- package/dist/goal/control-loop.d.ts +15 -0
- package/dist/goal/control-loop.js +39 -5
- package/dist/hud/render.d.ts +2 -0
- package/dist/hud/render.js +7 -1
- package/dist/mcp/secret-scanner.d.ts +6 -0
- package/dist/mcp/secret-scanner.js +44 -11
- package/dist/memory/graph-delta-log.d.ts +137 -0
- package/dist/memory/graph-delta-log.js +650 -0
- package/dist/memory/graph-viewer.js +13 -32
- package/dist/memory/local-graph-memory-store.d.ts +36 -3
- package/dist/memory/local-graph-memory-store.js +255 -10
- package/dist/orchestration/log-streamer.js +13 -8
- package/dist/orchestration/routing.d.ts +4 -0
- package/dist/orchestration/routing.js +28 -3
- package/dist/orchestration/state-persister.js +8 -1
- package/dist/providers/anthropic-messages-runner.d.ts +17 -0
- package/dist/providers/anthropic-messages-runner.js +197 -0
- package/dist/providers/model-registry.d.ts +1 -1
- package/dist/providers/model-registry.js +37 -3
- package/dist/providers/provider-runtime.js +27 -11
- package/dist/providers/thinking-levels.js +4 -1
- package/dist/providers/types.d.ts +3 -3
- package/dist/runtime/contracts/weakness-remediation.d.ts +9 -1
- package/dist/runtime/contracts/weakness-remediation.js +9 -1
- package/dist/runtime/router-v2-scoring.d.ts +8 -3
- package/dist/runtime/router-v2-scoring.js +27 -22
- package/dist/runtime/runtime-router.d.ts +5 -0
- package/dist/runtime/runtime-router.js +40 -8
- package/dist/runtime/sandbox-profile.d.ts +29 -0
- package/dist/runtime/sandbox-profile.js +101 -0
- package/dist/runtime/slash-commands.js +300 -2
- package/dist/runtime/tool-dispatch-contracts.d.ts +15 -0
- package/dist/runtime/tool-dispatch-contracts.js +12 -0
- package/dist/runtime/weights-config.d.ts +90 -0
- package/dist/runtime/weights-config.js +249 -0
- package/dist/schema/envelope.schema.d.ts +18 -18
- package/dist/schema/evidence.schema.d.ts +2 -2
- package/dist/schema/proof-bundle.schema.d.ts +6 -6
- package/dist/schema/proof-bundle.schema.js +0 -1
- package/dist/schema/provider.schema.d.ts +2 -2
- package/dist/schema/run-manifest.schema.d.ts +16 -16
- package/dist/theme/ansi.js +9 -2
- package/dist/theme/extended-palette.d.ts +85 -0
- package/dist/theme/extended-palette.js +108 -0
- package/dist/theme/layout.js +29 -8
- package/dist/theme/metrics.js +5 -5
- package/dist/theme/parallel.js +25 -15
- package/dist/ui/omk-sigil.js +5 -14
- package/dist/ui/omk-working-sweep.js +5 -15
- package/dist/util/chat-agent-mode.d.ts +11 -0
- package/dist/util/chat-agent-mode.js +41 -8
- package/dist/util/chat-cockpit.d.ts +9 -0
- package/dist/util/chat-cockpit.js +77 -20
- package/dist/util/fs/core.d.ts +5 -0
- package/dist/util/fs/core.js +35 -0
- package/dist/util/fs/internal.d.ts +14 -0
- package/dist/util/fs/internal.js +169 -0
- package/dist/util/fs/kimi-sync.d.ts +41 -0
- package/dist/util/fs/kimi-sync.js +495 -0
- package/dist/util/fs/logo.d.ts +2 -0
- package/dist/util/fs/logo.js +78 -0
- package/dist/util/fs/manifest.d.ts +6 -0
- package/dist/util/fs/manifest.js +40 -0
- package/dist/util/fs/mcp-diagnose.d.ts +15 -0
- package/dist/util/fs/mcp-diagnose.js +204 -0
- package/dist/util/fs/mcp-runtime-config.d.ts +23 -0
- package/dist/util/fs/mcp-runtime-config.js +412 -0
- package/dist/util/fs/paths.d.ts +13 -0
- package/dist/util/fs/paths.js +82 -0
- package/dist/util/fs/preflight.d.ts +27 -0
- package/dist/util/fs/preflight.js +271 -0
- package/dist/util/fs.d.ts +8 -128
- package/dist/util/fs.js +8 -1757
- package/dist/util/terminal-layout.js +5 -1
- package/dist/util/version.js +2 -1
- package/docs/2026-06-11/critical-issues.md +20 -0
- package/docs/2026-06-11/improvements.md +14 -0
- package/docs/2026-06-11/init-checklist.md +25 -0
- package/docs/2026-06-11/plan.md +20 -0
- package/docs/ARCHITECTURE_ANALYSIS_CODEGRAPH.md +223 -0
- package/docs/adr/0001-no-native-rust-lane.md +52 -0
- package/docs/codex-oauth-setup.md +14 -0
- package/docs/decisions/2026-06-10-git-history-bloat.md +61 -0
- package/docs/decisions/ADR-theme-dark-only-assets.md +43 -0
- package/docs/getting-started.md +1 -1
- package/docs/headroom-omk-final-summary.md +188 -0
- package/docs/headroom-omk-integration.md +394 -0
- package/docs/headroom-omk-setup-guide.md +422 -0
- package/docs/headroom-omk-usage-examples.md +371 -0
- package/docs/provider-maturity.md +1 -1
- package/docs/versioning.md +3 -3
- package/package.json +10 -10
- package/readmeasset/.npmignore +2 -0
- package/readmeasset/ASSET_INDEX.md +7 -5
- package/readmeasset/ASSET_PROVENANCE.md +21 -5
- package/readmeasset/omk-control-surfaces.svg +55 -0
- package/readmeasset/omk-core-loop.svg +1 -0
- package/readmeasset/omk-logo-mark.svg +1 -0
- package/readmeasset/omk-release-assertions.svg +51 -0
- package/dist/native/linux-x64/omk-safety +0 -0
- package/dist/util/native-safety.d.ts +0 -28
- 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", "
|
|
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", "
|
|
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" | "
|
|
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" | "
|
|
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
|
}>;
|
|
@@ -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;
|
package/dist/theme/ansi.js
CHANGED
|
@@ -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
|
-
|
|
19
|
-
|
|
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
|
+
};
|