open-multi-agent-kit 0.78.3 → 0.78.5
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/MATURITY.md +2 -2
- package/README.md +4 -4
- package/dist/benchmark/fixtures.js +5 -2
- package/dist/benchmark/shadow-mode.js +0 -1
- package/dist/cli/release-promotion-gate.js +14 -4
- package/dist/native/linux-x64/omk-safety +0 -0
- package/dist/providers/router.js +0 -7
- package/dist/runtime/contracts/weakness-remediation.d.ts +6 -0
- package/dist/runtime/provider-maturity-gate.js +0 -2
- package/docs/getting-started.md +1 -1
- package/docs/provider-maturity.md +1 -1
- package/docs/versioning.md +3 -3
- package/package.json +3 -2
package/MATURITY.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# OMK Command Maturity Matrix
|
|
2
2
|
|
|
3
3
|
Last updated: 2026-06-07
|
|
4
|
-
Current source version: v0.78.
|
|
4
|
+
Current source version: v0.78.5 (`v1.2` runtime contract family)
|
|
5
5
|
|
|
6
6
|
| Level | Meaning |
|
|
7
7
|
|-------|---------|
|
|
@@ -76,6 +76,6 @@ Regression Proof Matrix is a release-defense gate, not a stable-release claim. S
|
|
|
76
76
|
| Native runtime safety | OMK owns the root-orchestrator direction, but native chat must still lock turn-risk inference, approval/sandbox propagation, authority resolution, provider health probes, and DeepSeek read-only enforcement before stable provider-neutral claims. | Treat `docs/native-root-runtime-hardening.md` and `.omk/specs/native-orchestrator-phase1/` as the active hardening contract. |
|
|
77
77
|
| MCP diagnostics | `mcp list/doctor/test` exist; invalid project/global MCP JSON now fails visibly through diagnostics without exposing config contents. | Add machine-readable MCP JSON and structured failure categories for command resolution, timeout, permission, and server health. |
|
|
78
78
|
| Skills and harness templates | `omk skill` exposes current core/TypeScript/review packs, while init templates document project MCP scope, runtime skills, portable `.agents/skills`, and run-scoped harness manifests. | Keep external-inspired skills compact, source-linked, and non-vendored; verify install/sync through `skill-command` tests and package audit. |
|
|
79
|
-
| Release docs and site | README, CHANGELOG, MATURITY, ROADMAP, versioning docs, provider-maturity docs, package audit, and release-gate commands distinguish the `0.78.x` public package line from the `v1.2` runtime contract family while documenting alpha/experimental surfaces, current harness templates, provider limits, and the public project repository at `https://github.com/dmae97/open-multi-agent-kit`. | Treat `npm run release:check`, native safety packaging, tarball install smoke, and CI evidence on the exact commit as the publish/deploy gate before claiming `0.78.
|
|
79
|
+
| Release docs and site | README, CHANGELOG, MATURITY, ROADMAP, versioning docs, provider-maturity docs, package audit, and release-gate commands distinguish the `0.78.x` public package line from the `v1.2` runtime contract family while documenting alpha/experimental surfaces, current harness templates, provider limits, and the public project repository at `https://github.com/dmae97/open-multi-agent-kit`. | Treat `npm run release:check`, native safety packaging, tarball install smoke, and CI evidence on the exact commit as the publish/deploy gate before claiming `0.78.5` published or release-ready. |
|
|
80
80
|
| Public proof bundles | `omk.proof-bundle.v1`, `npm run proof:check`, `npm run proof:index`, and ten scoped RC hardening bundles now cover no-Kimi, provider/doctor, fallback routing, native safety, contract/version, evidence-block, replay/inspect, and graph-audit axes. Proof integrity includes runId/commit/evidence/decision linkage and per-bundle `sha256sums.txt` artifact hashes. | Keep strengthening proof authenticity with sanitized repo-relative artifacts, non-empty known limitations, and broader provider fallback variants. |
|
|
81
81
|
| Goal planner | Goal lifecycle exists, including continue, generated plan/evidence criteria, and verification. | Expand planner quality scoring and release evidence. |
|
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ Use OMK when one coding agent is not enough: route Codex, OpenCode, Kimi, DeepSe
|
|
|
39
39
|
- Teams that need MCP-scoped agent execution instead of unrestricted tool access.
|
|
40
40
|
- Agent builders who want routing, fallback, evidence gates, telemetry, and replay.
|
|
41
41
|
|
|
42
|
-
> Current package source target: `open-multi-agent-kit@0.78.
|
|
42
|
+
> Current package source target: `open-multi-agent-kit@0.78.5`.
|
|
43
43
|
> Public package name: `open-multi-agent-kit` (`@omk/cli` is not the active npm package).
|
|
44
44
|
> Runtime contract family: `v1.2` (contract family, not a stable npm `1.x` release).
|
|
45
45
|
> Release channel: `pre-1.0`.
|
|
@@ -63,8 +63,8 @@ omk chat
|
|
|
63
63
|
|
|
64
64
|
## Current release reality
|
|
65
65
|
|
|
66
|
-
- The public npm line is `open-multi-agent-kit@0.78.x`. Published npm `latest` is `0.78.
|
|
67
|
-
source/target is `0.78.
|
|
66
|
+
- The public npm line is `open-multi-agent-kit@0.78.x`. Published npm `latest` is `0.78.5`;
|
|
67
|
+
source/target is `0.78.5` and is published only after the release workflow passes on the tagged commit.
|
|
68
68
|
- The `v1.2` label in docs is a runtime contract family for the source tree, not a claim that
|
|
69
69
|
an npm `1.2.x` stable release exists.
|
|
70
70
|
- Provider support is intentionally uneven: Kimi remains the most mature authority path;
|
|
@@ -305,7 +305,7 @@ The npm package is intentionally package-safe:
|
|
|
305
305
|
| Contract | Value |
|
|
306
306
|
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
307
307
|
| Package | [`open-multi-agent-kit`](https://www.npmjs.com/package/open-multi-agent-kit) |
|
|
308
|
-
| Version | `0.78.
|
|
308
|
+
| Version | `0.78.5` |
|
|
309
309
|
| Runtime contract family | `v1.2` |
|
|
310
310
|
| Bins | `omk`, `omk-project-mcp`, `omk-acp`, `omk-mcp-host` |
|
|
311
311
|
| Packaged docs | `README.md`, `docs/`, `SECURITY.md`, `ROADMAP.md`, `MATURITY.md`, `DESIGN.md` |
|
|
@@ -67,11 +67,14 @@ function makeAttemptStub(taskId, category, attemptNumber, rng, outcomeOverride)
|
|
|
67
67
|
function makeTask(index, category, seed, omkVersion, treeHash, providerConfigHash) {
|
|
68
68
|
const rng = seededRandom(seed + index * 7919);
|
|
69
69
|
const taskId = `bench-${category}-${String(index).padStart(3, "0")}`;
|
|
70
|
-
const expectedOutcome =
|
|
70
|
+
const expectedOutcome = category === "provider-failure-fallback" || category === "quota-auth-failure-fallback"
|
|
71
|
+
? "fallback"
|
|
72
|
+
: "success";
|
|
71
73
|
const attempts = [];
|
|
72
74
|
const attemptCount = expectedOutcome === "fallback" ? 2 : 1;
|
|
73
75
|
for (let i = 1; i <= attemptCount; i++) {
|
|
74
|
-
|
|
76
|
+
const outcome = expectedOutcome === "fallback" && i === 1 ? "fallback" : "success";
|
|
77
|
+
attempts.push(makeAttemptStub(taskId, category, i, rng, outcome));
|
|
75
78
|
}
|
|
76
79
|
return {
|
|
77
80
|
taskId,
|
|
@@ -86,7 +86,6 @@ export function createShadowModeEngine(options) {
|
|
|
86
86
|
return { evaluate, toBenchmarkDecision };
|
|
87
87
|
}
|
|
88
88
|
export function computeRouterRegret(candidates, intent, history, selectedId) {
|
|
89
|
-
const engine = createRouterV2ScoringEngine();
|
|
90
89
|
const scores = scoreRuntimes(candidates, intent, history);
|
|
91
90
|
if (scores.length === 0)
|
|
92
91
|
return 0;
|
|
@@ -12,6 +12,9 @@ export function createReleasePromotionGate() {
|
|
|
12
12
|
const w = RELEASE_GATE_WEIGHTS;
|
|
13
13
|
const demoRun = inputs.demoRun ?? false;
|
|
14
14
|
const maturity = inputs.maturity ?? inputs.providerMinimum ?? 0;
|
|
15
|
+
const versionConsistency = inputs.versionConsistency ?? inputs.semver ?? 1;
|
|
16
|
+
const liveBenchmarkPass = inputs.liveBenchmarkPass ?? false;
|
|
17
|
+
const sandboxViolationCount = inputs.sandboxViolationCount ?? Number.POSITIVE_INFINITY;
|
|
15
18
|
const rawScore = w.ci * inputs.ci +
|
|
16
19
|
w.build * (inputs.build ?? 0) +
|
|
17
20
|
w.types * (inputs.types ?? 0) +
|
|
@@ -20,11 +23,11 @@ export function createReleasePromotionGate() {
|
|
|
20
23
|
w.demo * (demoRun ? 1 : 0) +
|
|
21
24
|
w.proof * inputs.proofMedian +
|
|
22
25
|
w.maturity * maturity +
|
|
23
|
-
w.docs * inputs.docs -
|
|
26
|
+
w.docs * inputs.docs * versionConsistency -
|
|
24
27
|
w.regression * inputs.regressionSeverity;
|
|
25
28
|
const score = clamp01(rawScore);
|
|
26
29
|
const reasons = [];
|
|
27
|
-
const blocked = inputs.ci === 0 || inputs.freshInstallSmoke === 0 || !demoRun;
|
|
30
|
+
const blocked = inputs.ci === 0 || inputs.freshInstallSmoke === 0 || versionConsistency === 0 || !demoRun;
|
|
28
31
|
if (blocked) {
|
|
29
32
|
if (inputs.ci === 0) {
|
|
30
33
|
reasons.push("CI score is 0 (blocking)");
|
|
@@ -32,21 +35,28 @@ export function createReleasePromotionGate() {
|
|
|
32
35
|
if (inputs.freshInstallSmoke === 0) {
|
|
33
36
|
reasons.push("Fresh install smoke is 0 (blocking)");
|
|
34
37
|
}
|
|
38
|
+
if (versionConsistency === 0) {
|
|
39
|
+
reasons.push("Version/package/proof consistency is 0 (blocking)");
|
|
40
|
+
}
|
|
35
41
|
if (!demoRun) {
|
|
36
42
|
reasons.push("Minimal verified demo run failed or missing (blocking)");
|
|
37
43
|
}
|
|
38
44
|
}
|
|
45
|
+
const stableEligible = liveBenchmarkPass && sandboxViolationCount === 0;
|
|
39
46
|
let verdict;
|
|
40
47
|
if (blocked) {
|
|
41
48
|
verdict = "block";
|
|
42
49
|
}
|
|
43
|
-
else if (score >= 0.90 && inputs.proofMedian >= 0.85 && maturity >= 0.80) {
|
|
50
|
+
else if (score >= 0.90 && inputs.proofMedian >= 0.85 && maturity >= 0.80 && stableEligible) {
|
|
44
51
|
verdict = "stable";
|
|
45
|
-
reasons.push(`Score ${formatScore(score)} meets stable threshold (≥0.90) with proof≥0.85
|
|
52
|
+
reasons.push(`Score ${formatScore(score)} meets stable threshold (≥0.90) with proof≥0.85, maturity≥0.80, live benchmark pass, and sandbox violations=0`);
|
|
46
53
|
}
|
|
47
54
|
else if (score >= 0.75 && inputs.proofMedian >= 0.75) {
|
|
48
55
|
verdict = "pre-release";
|
|
49
56
|
reasons.push(`Score ${formatScore(score)} meets pre-release threshold (≥0.75) with proof≥0.75`);
|
|
57
|
+
if (score >= 0.90 && inputs.proofMedian >= 0.85 && maturity >= 0.80 && !stableEligible) {
|
|
58
|
+
reasons.push("Stable verdict withheld until live benchmark passes and sandboxViolationCount is 0");
|
|
59
|
+
}
|
|
50
60
|
}
|
|
51
61
|
else {
|
|
52
62
|
verdict = "block";
|
|
Binary file
|
package/dist/providers/router.js
CHANGED
|
@@ -200,13 +200,6 @@ function requestedExternalProvider(input) {
|
|
|
200
200
|
function isGenericExternalProvider(value) {
|
|
201
201
|
return typeof value === "string" && value !== "auto" && value !== "kimi" && value !== "deepseek";
|
|
202
202
|
}
|
|
203
|
-
function providerVectorMeets(vector, minState) {
|
|
204
|
-
if (!vector)
|
|
205
|
-
return true;
|
|
206
|
-
const current = PROVIDER_CAPABILITY_ORDINAL[vector.auth];
|
|
207
|
-
const required = PROVIDER_CAPABILITY_ORDINAL[minState];
|
|
208
|
-
return current >= required;
|
|
209
|
-
}
|
|
210
203
|
function providerVectorQuotaOk(vector) {
|
|
211
204
|
if (!vector)
|
|
212
205
|
return true;
|
|
@@ -55,6 +55,12 @@ export interface ReleasePromotionInputs {
|
|
|
55
55
|
readonly maturity?: number;
|
|
56
56
|
/** Algorithm 8 — minimal verified demo run gate. Hard block when false/undefined. */
|
|
57
57
|
readonly demoRun?: boolean;
|
|
58
|
+
/** Stable claim gate — live/recorded benchmark must pass before stable verdict. */
|
|
59
|
+
readonly liveBenchmarkPass?: boolean;
|
|
60
|
+
/** Stable claim gate — must be exactly 0 before stable verdict. */
|
|
61
|
+
readonly sandboxViolationCount?: number;
|
|
62
|
+
/** Stable claim gate — package/lock/docs/proof/bin invariant. */
|
|
63
|
+
readonly versionConsistency?: number;
|
|
58
64
|
}
|
|
59
65
|
export interface ReleasePromotionResult {
|
|
60
66
|
readonly score: number;
|
|
@@ -76,8 +76,6 @@ export function createProviderMaturityTable() {
|
|
|
76
76
|
function vectorToAdapterResults(vector) {
|
|
77
77
|
const authOrdinal = PROVIDER_CAPABILITY_ORDINAL[vector.auth];
|
|
78
78
|
const binaryOrdinal = PROVIDER_CAPABILITY_ORDINAL[vector.binary];
|
|
79
|
-
const modelOrdinal = PROVIDER_CAPABILITY_ORDINAL[vector.model];
|
|
80
|
-
const quotaOrdinal = PROVIDER_CAPABILITY_ORDINAL[vector.quota];
|
|
81
79
|
const authScore = authOrdinal >= PROVIDER_CAPABILITY_ORDINAL["auth_valid"] ? 1.0 : authOrdinal / PROVIDER_CAPABILITY_ORDINAL["auth_valid"];
|
|
82
80
|
const readScore = vector.supportsRead ? 1.0 : 0.0;
|
|
83
81
|
const writeScore = vector.supportsWrite ? 1.0 : 0.0;
|
package/docs/getting-started.md
CHANGED
package/docs/versioning.md
CHANGED
|
@@ -4,11 +4,11 @@ OMK uses two version fields in release artifacts:
|
|
|
4
4
|
|
|
5
5
|
| Field | Current value | Source | Meaning |
|
|
6
6
|
| --- | --- | --- | --- |
|
|
7
|
-
| Package version | `0.78.
|
|
7
|
+
| Package version | `0.78.5` | `package.json`, `package-lock.json` | npm/package source version. |
|
|
8
8
|
| Runtime version | `v1.2` | `src/version.ts`, JSON schemas | Contract/runtime family used by OMK envelopes. |
|
|
9
9
|
| Release channel | `pre-1.0` | `src/version.ts` | Pre-1.0 package channel. |
|
|
10
10
|
|
|
11
|
-
`0.78.
|
|
11
|
+
`0.78.5` is the package source version for the `v1.2` runtime contract family.
|
|
12
12
|
Use `v1.2` only for runtime contracts; do not substitute it for the package version.
|
|
13
13
|
|
|
14
14
|
## Contract versions
|
|
@@ -44,6 +44,6 @@ The `version --json` command emits one `omk.contract.v1` envelope whose data pay
|
|
|
44
44
|
|
|
45
45
|
## Documentation rules
|
|
46
46
|
|
|
47
|
-
- Use `0.78.
|
|
47
|
+
- Use `0.78.5` when referring to the current package source version.
|
|
48
48
|
- Use `v1.2` only for the runtime contract family.
|
|
49
49
|
- Keep historical changelog entries unchanged unless the text is not clearly historical.
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "open-multi-agent-kit",
|
|
3
|
-
"version": "0.78.
|
|
3
|
+
"version": "0.78.5",
|
|
4
4
|
"description": "Provider-neutral multi-agent control plane for coding workflows: route agents, verify evidence, orchestrate MCP-aware DAGs, and control the loop from the omk CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
+
"omk": "dist/cli.js",
|
|
7
8
|
"omk-project-mcp": "dist/mcp/omk-project-server.js",
|
|
8
9
|
"omk-acp": "dist/mcp/acp-server.js",
|
|
9
10
|
"omk-mcp-host": "dist/mcp/host.js"
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
"version:check": "node scripts/check-version-consistency.mjs",
|
|
33
34
|
"contract:check": "npm run build:clean && npm run schema:check && node scripts/check-json-stdout.mjs",
|
|
34
35
|
"verify:contracts": "npm run contract:check",
|
|
35
|
-
"release:check": "node scripts/release-gate.mjs",
|
|
36
|
+
"release:check": "npm run verify:no-kimi && npm run contract:check && npm run schema:check && npm run version:check && npm run proof:check && npm run smoke:execution && npm run native:build && npm run pack:dry && npm run audit:package && npm run smoke:pack && OMK_RELEASE_DEMO=1 node scripts/release-gate.mjs",
|
|
36
37
|
"release:full": "npm run verify && npm run verify:no-kimi && npm run contract:check && npm run schema:check && npm run version:check && npm run proof:check && npm run smoke:execution && npm run native:build && npm run pack:dry && npm run audit:package && npm run smoke:pack",
|
|
37
38
|
"regression:matrix": "node scripts/regression-proof-matrix.mjs",
|
|
38
39
|
"release:rc": "npm run verify && npm run verify:no-kimi && npm run contract:check && npm run schema:check && npm run version:check && npm run proof:check && npm run smoke:execution && npm run native:build && npm run pack:dry && npm run audit:package && npm run smoke:pack",
|