@jmanuelcorral/openteam 0.16.1 → 0.16.2
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/README.es.md +1 -1
- package/README.md +1 -1
- package/dist/certificates/graph-release-certificate.json +45 -0
- package/dist/certificates/graph-shadow-certificate.json +39 -0
- package/dist/cli/graphOperator.d.ts.map +1 -1
- package/dist/cli.js +45 -20
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/graph.d.ts +2 -0
- package/dist/commands/graph.d.ts.map +1 -1
- package/dist/config/graphFeatureGate.d.ts +28 -6
- package/dist/config/graphFeatureGate.d.ts.map +1 -1
- package/dist/index.d.ts +19 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -16
- package/package.json +3 -2
package/README.es.md
CHANGED
|
@@ -824,7 +824,7 @@ Consulta [docs/compatibility.md](docs/compatibility.md). Resumen verificado el `
|
|
|
824
824
|
|
|
825
825
|
| Superficie | Versión / contrato |
|
|
826
826
|
| --- | --- |
|
|
827
|
-
| openteam | `0.16.
|
|
827
|
+
| openteam | `0.16.2`; versión actual del paquete |
|
|
828
828
|
| `@opencode-ai/plugin` | `1.18.19` |
|
|
829
829
|
| `@opencode-ai/sdk` | `1.18.19` |
|
|
830
830
|
| Hook de routing | `chat.message`; no `chat.params` para cambiar modelo |
|
package/README.md
CHANGED
|
@@ -713,7 +713,7 @@ See [docs/compatibility.md](docs/compatibility.md). Verified summary as of `2026
|
|
|
713
713
|
|
|
714
714
|
| Surface | Version / contract |
|
|
715
715
|
| --- | --- |
|
|
716
|
-
| openteam | `0.16.
|
|
716
|
+
| openteam | `0.16.2`; current package version |
|
|
717
717
|
| `@opencode-ai/plugin` | `1.18.19` |
|
|
718
718
|
| `@opencode-ai/sdk` | `1.18.19` |
|
|
719
719
|
| Routing hook | `chat.message`; not `chat.params` for model changes |
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 2,
|
|
3
|
+
"certificate": "graph-release",
|
|
4
|
+
"platform": "linux",
|
|
5
|
+
"opencodeVersion": "1.18.19",
|
|
6
|
+
"shadowCertificateDigest": "10be736354e4b12f7433a6dd520df285cd152c0c038ec6a67133067a9a35c68e",
|
|
7
|
+
"evidence": {
|
|
8
|
+
"opencodeVersion": "1.18.19",
|
|
9
|
+
"platform": "linux",
|
|
10
|
+
"shadowCertificateDigest": "10be736354e4b12f7433a6dd520df285cd152c0c038ec6a67133067a9a35c68e",
|
|
11
|
+
"determinism": {
|
|
12
|
+
"runs": 13,
|
|
13
|
+
"allMatch": true
|
|
14
|
+
},
|
|
15
|
+
"crashRecovery": {
|
|
16
|
+
"scenarios": 18,
|
|
17
|
+
"allConverge": true
|
|
18
|
+
},
|
|
19
|
+
"replayEquivalence": {
|
|
20
|
+
"checks": 6,
|
|
21
|
+
"allEquivalent": true
|
|
22
|
+
},
|
|
23
|
+
"privacy": {
|
|
24
|
+
"surfacesScanned": 8,
|
|
25
|
+
"rawFindings": 0
|
|
26
|
+
},
|
|
27
|
+
"contract": {
|
|
28
|
+
"roundTrips": 4,
|
|
29
|
+
"allSettled": true
|
|
30
|
+
},
|
|
31
|
+
"health": {
|
|
32
|
+
"samples": 3,
|
|
33
|
+
"bounded": true,
|
|
34
|
+
"idempotent": true
|
|
35
|
+
},
|
|
36
|
+
"performance": {
|
|
37
|
+
"p95Millis": 0.5172979999999825,
|
|
38
|
+
"budgetMillis": 50,
|
|
39
|
+
"samples": 100
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"verdict": "pass",
|
|
43
|
+
"failedGates": [],
|
|
44
|
+
"digest": "e0d2edc0714843e52dd415bbe2267c0041e5f5417436d04495343746b08e9485"
|
|
45
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"certificate": "graph-shadow",
|
|
4
|
+
"opencodeVersion": "1.18.19",
|
|
5
|
+
"evidence": {
|
|
6
|
+
"opencodeVersion": "1.18.19",
|
|
7
|
+
"parity": {
|
|
8
|
+
"runs": 1000,
|
|
9
|
+
"match": 1000,
|
|
10
|
+
"divergent": 0,
|
|
11
|
+
"inconclusive": 0,
|
|
12
|
+
"divergences": []
|
|
13
|
+
},
|
|
14
|
+
"legacy": {
|
|
15
|
+
"observed": 1000,
|
|
16
|
+
"duplicated": 0
|
|
17
|
+
},
|
|
18
|
+
"privacy": {
|
|
19
|
+
"surfacesScanned": 5,
|
|
20
|
+
"rawFindings": 0
|
|
21
|
+
},
|
|
22
|
+
"overhead": {
|
|
23
|
+
"p95Millis": 0.359942999999987,
|
|
24
|
+
"budgetMillis": 25,
|
|
25
|
+
"samples": 1000
|
|
26
|
+
},
|
|
27
|
+
"provenance": {
|
|
28
|
+
"status": "validated",
|
|
29
|
+
"order": "recomputed",
|
|
30
|
+
"roles": "recomputed",
|
|
31
|
+
"models": "carried",
|
|
32
|
+
"fixes": "recomputed",
|
|
33
|
+
"outcome": "carried"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"verdict": "pass",
|
|
37
|
+
"failedGates": [],
|
|
38
|
+
"digest": "702378f5b1500f9d53cdc1207a564216225d2ee15c8d41e1ca5c22318d5efd88"
|
|
39
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphOperator.d.ts","sourceRoot":"","sources":["../../src/cli/graphOperator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAqBvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"graphOperator.d.ts","sourceRoot":"","sources":["../../src/cli/graphOperator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAqBvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAY3D,KAAK,2BAA2B,GAAG;IACjC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAC7B,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC,CAAC;AAwIF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,2BAA2B,GACnC,iBAAiB,CAyDnB"}
|
package/dist/cli.js
CHANGED
|
@@ -4,9 +4,9 @@ var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
|
4
4
|
|
|
5
5
|
// src/cli.ts
|
|
6
6
|
import { exec, execFile as execFile2 } from "node:child_process";
|
|
7
|
-
import { mkdir as mkdir2, readFile as
|
|
7
|
+
import { mkdir as mkdir2, readFile as readFile3, writeFile as writeFile2 } from "node:fs/promises";
|
|
8
8
|
import { createRequire as createRequire2 } from "node:module";
|
|
9
|
-
import { dirname as
|
|
9
|
+
import { dirname as dirname6, resolve as resolve6 } from "node:path";
|
|
10
10
|
import { promisify as promisify2 } from "node:util";
|
|
11
11
|
import {
|
|
12
12
|
confirm as clackConfirm,
|
|
@@ -8552,7 +8552,11 @@ function recoverJournal(spec, text) {
|
|
|
8552
8552
|
}
|
|
8553
8553
|
|
|
8554
8554
|
// src/cli/graphOperator.ts
|
|
8555
|
-
var ALLOWED_GATE = {
|
|
8555
|
+
var ALLOWED_GATE = {
|
|
8556
|
+
allowed: true,
|
|
8557
|
+
violations: [],
|
|
8558
|
+
advisories: []
|
|
8559
|
+
};
|
|
8556
8560
|
var ALLOWED_EVALUATION = {
|
|
8557
8561
|
kind: "evaluated",
|
|
8558
8562
|
gate: ALLOWED_GATE
|
|
@@ -10290,6 +10294,7 @@ function checkCertificate(status, name) {
|
|
|
10290
10294
|
}
|
|
10291
10295
|
function evaluateGraphGate(input) {
|
|
10292
10296
|
const violations = [];
|
|
10297
|
+
const advisories = [];
|
|
10293
10298
|
const shadowV = checkCertificate(input.shadow, "shadow");
|
|
10294
10299
|
if (shadowV !== undefined)
|
|
10295
10300
|
violations.push(shadowV);
|
|
@@ -10298,7 +10303,7 @@ function evaluateGraphGate(input) {
|
|
|
10298
10303
|
violations.push(releaseV);
|
|
10299
10304
|
const soakV = checkCertificate(input.soak, "soak");
|
|
10300
10305
|
if (soakV !== undefined)
|
|
10301
|
-
|
|
10306
|
+
advisories.push(soakV);
|
|
10302
10307
|
if (input.migration === "pending") {
|
|
10303
10308
|
violations.push({
|
|
10304
10309
|
code: "migration-pending",
|
|
@@ -10318,7 +10323,8 @@ function evaluateGraphGate(input) {
|
|
|
10318
10323
|
}
|
|
10319
10324
|
return {
|
|
10320
10325
|
allowed: violations.length === 0,
|
|
10321
|
-
violations
|
|
10326
|
+
violations,
|
|
10327
|
+
advisories
|
|
10322
10328
|
};
|
|
10323
10329
|
}
|
|
10324
10330
|
function isGateApplicable(mode) {
|
|
@@ -11338,12 +11344,18 @@ function leaseLine(lease) {
|
|
|
11338
11344
|
const state = lease.released ? "released" : "active";
|
|
11339
11345
|
return ` lease: ${lease.holder} → ${lease.runID} (${state})`;
|
|
11340
11346
|
}
|
|
11347
|
+
function appendAdvisoryLines(lines, advisories) {
|
|
11348
|
+
for (const advisory of advisories ?? []) {
|
|
11349
|
+
lines.push(` ⚠ advisory (non-blocking) ${advisory.code}: ${advisory.detail}`);
|
|
11350
|
+
}
|
|
11351
|
+
}
|
|
11341
11352
|
function appendEffectiveLines(lines, gate) {
|
|
11342
11353
|
switch (gate.kind) {
|
|
11343
11354
|
case "not-applicable":
|
|
11344
11355
|
return;
|
|
11345
11356
|
case "passed":
|
|
11346
11357
|
lines.push(" effective: active");
|
|
11358
|
+
appendAdvisoryLines(lines, gate.advisories);
|
|
11347
11359
|
return;
|
|
11348
11360
|
case "unevaluable":
|
|
11349
11361
|
lines.push(" effective: unknown — could not evaluate the cutover gate");
|
|
@@ -11354,6 +11366,7 @@ function appendEffectiveLines(lines, gate) {
|
|
|
11354
11366
|
for (const violation of gate.violations) {
|
|
11355
11367
|
lines.push(` • ${violation.code}: ${violation.detail}`);
|
|
11356
11368
|
}
|
|
11369
|
+
appendAdvisoryLines(lines, gate.advisories);
|
|
11357
11370
|
}
|
|
11358
11371
|
}
|
|
11359
11372
|
function renderGraphStatus(snapshot, gate = { kind: "not-applicable" }) {
|
|
@@ -13587,7 +13600,7 @@ async function resolveOperatorGraphPolicy(config, operator) {
|
|
|
13587
13600
|
let graph = resolveGraphConfig(config, "file");
|
|
13588
13601
|
if (isGateApplicable(graph.effectiveMode)) {
|
|
13589
13602
|
const evaluation = await operator.evaluateCutoverGate(config);
|
|
13590
|
-
const gate = evaluation.kind === "evaluated" ? evaluation.gate : { allowed: false, violations: [] };
|
|
13603
|
+
const gate = evaluation.kind === "evaluated" ? evaluation.gate : { allowed: false, violations: [], advisories: [] };
|
|
13591
13604
|
graph = applyGraphGate(graph, gate);
|
|
13592
13605
|
}
|
|
13593
13606
|
return {
|
|
@@ -13629,7 +13642,11 @@ async function runGraphStatus(deps, configPath, configResolution) {
|
|
|
13629
13642
|
return { exitCode: 0, stdout: renderGraphStatus(snapshot, gate2) };
|
|
13630
13643
|
}
|
|
13631
13644
|
const resolved = applyGraphGate(resolveGraphConfig(config, "file"), evaluation.gate);
|
|
13632
|
-
const gate = resolved.gateDenied === true ? {
|
|
13645
|
+
const gate = resolved.gateDenied === true ? {
|
|
13646
|
+
kind: "denied",
|
|
13647
|
+
violations: resolved.gateViolations ?? [],
|
|
13648
|
+
advisories: evaluation.gate.advisories
|
|
13649
|
+
} : { kind: "passed", advisories: evaluation.gate.advisories };
|
|
13633
13650
|
return { exitCode: 0, stdout: renderGraphStatus(snapshot, gate) };
|
|
13634
13651
|
}
|
|
13635
13652
|
async function runGraphCancel(positionals, deps, configPath, configResolution) {
|
|
@@ -14550,6 +14567,8 @@ function planStartupHygieneMigration(exists) {
|
|
|
14550
14567
|
}
|
|
14551
14568
|
|
|
14552
14569
|
// src/index.ts
|
|
14570
|
+
import { readFile as readFile2 } from "node:fs/promises";
|
|
14571
|
+
import { basename as basename2, dirname as dirname5 } from "node:path";
|
|
14553
14572
|
import {
|
|
14554
14573
|
tool as tool2
|
|
14555
14574
|
} from "@opencode-ai/plugin";
|
|
@@ -16142,7 +16161,7 @@ async function buildMemoryRuntimeFromConfig(config, deps, options = {}) {
|
|
|
16142
16161
|
// package.json
|
|
16143
16162
|
var package_default = {
|
|
16144
16163
|
name: "@jmanuelcorral/openteam",
|
|
16145
|
-
version: "0.16.
|
|
16164
|
+
version: "0.16.2",
|
|
16146
16165
|
packageManager: "bun@1.3.14",
|
|
16147
16166
|
description: "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
|
|
16148
16167
|
license: "MIT",
|
|
@@ -16201,7 +16220,7 @@ var package_default = {
|
|
|
16201
16220
|
sideEffects: false,
|
|
16202
16221
|
scripts: {
|
|
16203
16222
|
prebuild: "bun run clean",
|
|
16204
|
-
build: "bun run build:js && bun run build:cli && bun run build:types",
|
|
16223
|
+
build: "bun run build:js && bun run build:cli && bun run build:types && bun run build:certificates",
|
|
16205
16224
|
"build:js": "bun build ./src/index.ts --target=node --format=esm --outfile=dist/index.js --external @opencode-ai/plugin --external @opencode-ai/sdk --external zod --external @opentelemetry/api --external @opentelemetry/sdk-trace-base --external @opentelemetry/exporter-trace-otlp-http --external @opentelemetry/resources --external @langchain/langgraph",
|
|
16206
16225
|
"build:cli": 'bun build ./src/cli.ts --target=node --format=esm --outfile=dist/cli.js --banner "#!/usr/bin/env node" --external @opencode-ai/plugin --external @opencode-ai/sdk --external zod --external @clack/prompts --external @opentelemetry/api --external @opentelemetry/sdk-trace-base --external @opentelemetry/exporter-trace-otlp-http --external @opentelemetry/resources --external @langchain/langgraph',
|
|
16207
16226
|
"build:types": "tsc -p tsconfig.build.json",
|
|
@@ -16210,6 +16229,7 @@ var package_default = {
|
|
|
16210
16229
|
"test:cov": "bun test --coverage",
|
|
16211
16230
|
"certify:shadow": "bun run scripts/certify-artifact.ts shadow",
|
|
16212
16231
|
"certify:release": "bun run scripts/certify-artifact.ts release",
|
|
16232
|
+
"build:certificates": "bun run certify:shadow && bun run certify:release && bun run scripts/bundle-certificates.ts",
|
|
16213
16233
|
"coverage:check": "node scripts/check-coverage.mjs",
|
|
16214
16234
|
typecheck: "tsc --noEmit",
|
|
16215
16235
|
lint: "biome check .",
|
|
@@ -16257,9 +16277,16 @@ function warnSoakEvidenceRejections(result, warn) {
|
|
|
16257
16277
|
var SHADOW_CERT_PATH = "artifacts/graph-shadow-certificate.json";
|
|
16258
16278
|
var RELEASE_CERT_PATH = "artifacts/graph-release-certificate.json";
|
|
16259
16279
|
var SOAK_CERT_PATH = "artifacts/graph-soak-certificate.json";
|
|
16260
|
-
async function
|
|
16280
|
+
async function readPackagedCertificate(path4) {
|
|
16261
16281
|
try {
|
|
16262
|
-
|
|
16282
|
+
return await readFile2(new URL(`./certificates/${basename2(path4)}`, import.meta.url), "utf8");
|
|
16283
|
+
} catch {
|
|
16284
|
+
return;
|
|
16285
|
+
}
|
|
16286
|
+
}
|
|
16287
|
+
async function readAndParseCertificate(storage, path4, parse2, digestExtractor, fallbackRead) {
|
|
16288
|
+
try {
|
|
16289
|
+
const content = await storage.read(path4) ?? (fallbackRead === undefined ? undefined : await fallbackRead(path4));
|
|
16263
16290
|
if (content === undefined) {
|
|
16264
16291
|
return { status: "absent" };
|
|
16265
16292
|
}
|
|
@@ -16277,18 +16304,16 @@ async function readAndParseCertificate(storage, path4, parse2, digestExtractor)
|
|
|
16277
16304
|
return { status: "invalid", code: "read-error", detail: msg };
|
|
16278
16305
|
}
|
|
16279
16306
|
}
|
|
16280
|
-
async function buildGateInput(config, storage, opencodeVersion, warn) {
|
|
16281
|
-
const shadow = await readAndParseCertificate(storage, SHADOW_CERT_PATH, (raw) => parseShadowCertificate(raw, opencodeVersion), (cert) => shadowCertificateBindingDigest(cert.evidence));
|
|
16307
|
+
async function buildGateInput(config, storage, opencodeVersion, warn, packagedRead = readPackagedCertificate) {
|
|
16308
|
+
const shadow = await readAndParseCertificate(storage, SHADOW_CERT_PATH, (raw) => parseShadowCertificate(raw, opencodeVersion), (cert) => shadowCertificateBindingDigest(cert.evidence), packagedRead);
|
|
16282
16309
|
const shadowDigest = shadow.status === "valid" ? shadow.digest : "0".repeat(64);
|
|
16283
|
-
const release = await readAndParseCertificate(storage, RELEASE_CERT_PATH, (raw) => parseReleaseCertificate(raw, opencodeVersion, shadowDigest), (cert) => cert.digest);
|
|
16310
|
+
const release = await readAndParseCertificate(storage, RELEASE_CERT_PATH, (raw) => parseReleaseCertificate(raw, opencodeVersion, shadowDigest), (cert) => cert.digest, packagedRead);
|
|
16284
16311
|
let soakLedgerDigest = "0".repeat(64);
|
|
16285
16312
|
try {
|
|
16286
16313
|
const recorderPorts = recorderPortsFromStorage(storage);
|
|
16287
16314
|
const chainRead = await readAllChains(recorderPorts, SOAK_EVIDENCE_DIR);
|
|
16288
16315
|
warnSoakEvidenceRejections(chainRead, warn);
|
|
16289
|
-
|
|
16290
|
-
soakLedgerDigest = canonicalLedger(chainRead.chains);
|
|
16291
|
-
}
|
|
16316
|
+
soakLedgerDigest = canonicalLedger(chainRead.chains);
|
|
16292
16317
|
} catch {}
|
|
16293
16318
|
const soak = await readAndParseCertificate(storage, SOAK_CERT_PATH, (raw) => parseSoakCertificate(raw, DEFAULT_SOAK_POLICY, soakLedgerDigest), (cert) => cert.digest);
|
|
16294
16319
|
const migration = "complete";
|
|
@@ -16940,7 +16965,7 @@ function createGitLastCommit(exec) {
|
|
|
16940
16965
|
// src/cli.ts
|
|
16941
16966
|
var execFileAsync2 = promisify2(execFile2);
|
|
16942
16967
|
var execAsync = promisify2(exec);
|
|
16943
|
-
var AGENT_DIR2 =
|
|
16968
|
+
var AGENT_DIR2 = dirname6(ORCHESTRATOR_AGENT_PATH);
|
|
16944
16969
|
var storage = createFsStorageProvider(process.cwd());
|
|
16945
16970
|
async function readStoredRosterForDoctor() {
|
|
16946
16971
|
const content = await storage.read(OPENTEAM_ROSTER_PATH);
|
|
@@ -16999,7 +17024,7 @@ async function readConfigFile(path4, resolution) {
|
|
|
16999
17024
|
return storage.read(path4);
|
|
17000
17025
|
}
|
|
17001
17026
|
try {
|
|
17002
|
-
return await
|
|
17027
|
+
return await readFile3(resolve6(path4), "utf8");
|
|
17003
17028
|
} catch (error) {
|
|
17004
17029
|
throw new Error(`[openteam] config file named by --config could not be read: ${path4} (${describeFileReadError(error)})`);
|
|
17005
17030
|
}
|
|
@@ -17018,7 +17043,7 @@ async function saveConfig(config, path4, resolution = { explicit: false }) {
|
|
|
17018
17043
|
return;
|
|
17019
17044
|
}
|
|
17020
17045
|
const diskPath = resolve6(path4);
|
|
17021
|
-
await mkdir2(
|
|
17046
|
+
await mkdir2(dirname6(diskPath), { recursive: true });
|
|
17022
17047
|
await writeFile2(diskPath, `${JSON.stringify(config, null, 2)}
|
|
17023
17048
|
`, "utf8");
|
|
17024
17049
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/commands/dispatch.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/commands/dispatch.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/graph.d.ts
CHANGED
|
@@ -78,9 +78,11 @@ export type GraphStatusGate = {
|
|
|
78
78
|
readonly kind: "not-applicable";
|
|
79
79
|
} | {
|
|
80
80
|
readonly kind: "passed";
|
|
81
|
+
readonly advisories?: readonly GateViolation[];
|
|
81
82
|
} | {
|
|
82
83
|
readonly kind: "denied";
|
|
83
84
|
readonly violations: readonly GateViolation[];
|
|
85
|
+
readonly advisories?: readonly GateViolation[];
|
|
84
86
|
} | {
|
|
85
87
|
readonly kind: "unevaluable";
|
|
86
88
|
readonly reason: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE;;;;;;;;;;;;;;GAcG;AAEH,4EAA4E;AAC5E,MAAM,MAAM,mBAAmB,GAAG;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC;IAClC,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IACxC,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,kDAAkD;IAClD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,mEAAmE;IACnE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExE,8CAA8C;AAC9C,MAAM,MAAM,eAAe,GAAG;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,uDAAuD;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,mBAAmB,GAAG;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAUF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE;;;;;;;;;;;;;;GAcG;AAEH,4EAA4E;AAC5E,MAAM,MAAM,mBAAmB,GAAG;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC;IAClC,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IACxC,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,kDAAkD;IAClD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,mEAAmE;IACnE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExE,8CAA8C;AAC9C,MAAM,MAAM,eAAe,GAAG;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,uDAAuD;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,mBAAmB,GAAG;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAUF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,GAC3E;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAChD,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAoC9D;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,GAAE,eAA4C,GACjD,MAAM,CAyBR;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,GAAE,mBAAwB,GAChC,eAAe,CAejB;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,kBAAkB,GAC1B,eAAe,CAejB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,uBAAuB,GAC9B,MAAM,CAoBR"}
|
|
@@ -37,6 +37,22 @@
|
|
|
37
37
|
* 4. **Absence is not zero — it's a distinct failure.** Missing, unreadable,
|
|
38
38
|
* expired, and invalid certificates are all distinguished so the operator
|
|
39
39
|
* gets the right remediation advice.
|
|
40
|
+
*
|
|
41
|
+
* 5. **The soak certificate is advisory, not blocking.** Unlike shadow and
|
|
42
|
+
* release — which certify properties of the *shipped engine* and are
|
|
43
|
+
* therefore stable for a given release — the soak certificate binds its
|
|
44
|
+
* digest to the ledger of soak evidence held *locally* by the installation.
|
|
45
|
+
* That evidence grows every session (`plugin/soakObserver.ts` appends
|
|
46
|
+
* observations at runtime), so any soak certificate is invalidated with
|
|
47
|
+
* `ledger-mismatch` as soon as the operator uses the plugin. Enforcing it
|
|
48
|
+
* would mean `active` mode survives at most until the next observation is
|
|
49
|
+
* recorded, and no passing soak certificate has ever been produced (CI
|
|
50
|
+
* asserts `SOAK_EXPECTED_VERDICT=fail`). Blocking on a condition that no
|
|
51
|
+
* installation can hold stably is not a safety guarantee — it is an
|
|
52
|
+
* unreachable mode dressed as one. We report it loudly and let shadow,
|
|
53
|
+
* release, migration, and operator approval carry the gate. Restore it to
|
|
54
|
+
* blocking once the soak pipeline can be satisfied and re-certified by a
|
|
55
|
+
* real installation.
|
|
40
56
|
*/
|
|
41
57
|
/** Status of a certificate after the wiring layer attempted to parse it. */
|
|
42
58
|
export type CertificateStatus = {
|
|
@@ -78,19 +94,25 @@ export type GateViolation = {
|
|
|
78
94
|
};
|
|
79
95
|
/** Result of evaluating the cutover gate. */
|
|
80
96
|
export type GraphGateResult = {
|
|
81
|
-
/** `true` only when every condition is satisfied. */
|
|
97
|
+
/** `true` only when every *blocking* condition is satisfied. */
|
|
82
98
|
readonly allowed: boolean;
|
|
83
|
-
/** All violations found, even when `allowed` is already `false`. */
|
|
99
|
+
/** All blocking violations found, even when `allowed` is already `false`. */
|
|
84
100
|
readonly violations: readonly GateViolation[];
|
|
101
|
+
/**
|
|
102
|
+
* Non-blocking findings. Reported to the operator with the same detail as a
|
|
103
|
+
* violation, but they do not close the gate. See design decision 5.
|
|
104
|
+
*/
|
|
105
|
+
readonly advisories: readonly GateViolation[];
|
|
85
106
|
};
|
|
86
107
|
/**
|
|
87
108
|
* Evaluates the cutover gate. Pure and deterministic: same inputs always
|
|
88
109
|
* produce the same result.
|
|
89
110
|
*
|
|
90
|
-
*
|
|
91
|
-
* migration, and operator approval. A single missing condition closes
|
|
92
|
-
*
|
|
93
|
-
*
|
|
111
|
+
* Four conditions are **independently necessary** and block the gate: shadow,
|
|
112
|
+
* release, migration, and operator approval. A single missing condition closes
|
|
113
|
+
* the gate. The soak certificate is evaluated but reported as a *non-blocking
|
|
114
|
+
* advisory* — see design decision 5. All findings are collected (not
|
|
115
|
+
* short-circuited) so the operator sees everything that needs fixing.
|
|
94
116
|
*/
|
|
95
117
|
export declare function evaluateGraphGate(input: GraphGateInput): GraphGateResult;
|
|
96
118
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphFeatureGate.d.ts","sourceRoot":"","sources":["../../src/config/graphFeatureGate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"graphFeatureGate.d.ts","sourceRoot":"","sources":["../../src/config/graphFeatureGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAIH,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,GAC7B;IACE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAIN;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAIjE,mEAAmE;AACnE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC,CAAC;AAIF;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GACzB,2BAA2B,GAC3B,4BAA4B,GAC5B,4BAA4B,GAC5B,6BAA6B,GAC7B,yBAAyB,GACzB,0BAA0B,GAC1B,mBAAmB,GACnB,mBAAmB,GACnB,2BAA2B,CAAC;AAEhC,mEAAmE;AACnE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAIF,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;CAC/C,CAAC;AAuBF;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CA4CxE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAE3E"}
|
package/dist/index.d.ts
CHANGED
|
@@ -27,6 +27,24 @@ export declare function warnNoRuntimeConfigFound(paths: readonly string[], optio
|
|
|
27
27
|
*/
|
|
28
28
|
export declare function warnInertPrivacySetting(paths: readonly string[], warn?: (message?: unknown) => void): void;
|
|
29
29
|
export declare function warnSoakEvidenceRejections(result: ReadAllChainsResult, warn?: (message?: unknown) => void): void;
|
|
30
|
+
/**
|
|
31
|
+
* Reads a certificate that ships inside the installed package.
|
|
32
|
+
*
|
|
33
|
+
* Shadow and release certificates certify properties of the *shipped engine*
|
|
34
|
+
* (determinism, replay equivalence, crash recovery, privacy, performance) —
|
|
35
|
+
* they are facts about the code, not about the operator's project. Before this
|
|
36
|
+
* existed they were only ever read from `artifacts/` relative to the operator's
|
|
37
|
+
* working directory, where they never exist outside this repository, so
|
|
38
|
+
* `active` mode was unreachable for every installed user.
|
|
39
|
+
*
|
|
40
|
+
* The soak certificate is deliberately NOT resolved here: its digest binds to
|
|
41
|
+
* the operator's local evidence ledger, so a packaged copy would be invalid the
|
|
42
|
+
* moment the plugin records an observation.
|
|
43
|
+
*
|
|
44
|
+
* Returns `undefined` when the package carries no certificate — for example in
|
|
45
|
+
* a source checkout, where `import.meta.url` points at `src/`. Never throws.
|
|
46
|
+
*/
|
|
47
|
+
export declare function readPackagedCertificate(path: string): Promise<string | undefined>;
|
|
30
48
|
/**
|
|
31
49
|
* Reads the opencode server version from the `/global/health` endpoint.
|
|
32
50
|
*
|
|
@@ -85,7 +103,7 @@ export declare function createLazyOpencodeVersionReader(serverUrl: URL, options?
|
|
|
85
103
|
* (could not be determined), no certificate can match, so the gate fails
|
|
86
104
|
* closed.
|
|
87
105
|
*/
|
|
88
|
-
export declare function buildGateInput(config: OpenTeamConfig, storage: StorageProvider, opencodeVersion: LiveOpencodeVersion, warn?: (message?: unknown) => void): Promise<GraphGateInput>;
|
|
106
|
+
export declare function buildGateInput(config: OpenTeamConfig, storage: StorageProvider, opencodeVersion: LiveOpencodeVersion, warn?: (message?: unknown) => void, packagedRead?: (path: string) => Promise<string | undefined>): Promise<GraphGateInput>;
|
|
89
107
|
/**
|
|
90
108
|
* Human-readable reason attached to an `unevaluable` cutover-gate result when
|
|
91
109
|
* the opencode version could not be resolved for a DIAGNOSTIC (`graph status`).
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,8 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
3
|
|
|
4
4
|
// src/index.ts
|
|
5
|
-
import {
|
|
5
|
+
import { readFile as readFile2 } from "node:fs/promises";
|
|
6
|
+
import { basename as basename2, dirname as dirname4 } from "node:path";
|
|
6
7
|
import {
|
|
7
8
|
tool as tool6
|
|
8
9
|
} from "@opencode-ai/plugin";
|
|
@@ -2449,7 +2450,11 @@ function splitVirtualPath(path) {
|
|
|
2449
2450
|
}
|
|
2450
2451
|
|
|
2451
2452
|
// src/cli/graphOperator.ts
|
|
2452
|
-
var ALLOWED_GATE = {
|
|
2453
|
+
var ALLOWED_GATE = {
|
|
2454
|
+
allowed: true,
|
|
2455
|
+
violations: [],
|
|
2456
|
+
advisories: []
|
|
2457
|
+
};
|
|
2453
2458
|
var ALLOWED_EVALUATION = {
|
|
2454
2459
|
kind: "evaluated",
|
|
2455
2460
|
gate: ALLOWED_GATE
|
|
@@ -4185,6 +4190,7 @@ function checkCertificate(status, name) {
|
|
|
4185
4190
|
}
|
|
4186
4191
|
function evaluateGraphGate(input) {
|
|
4187
4192
|
const violations = [];
|
|
4193
|
+
const advisories = [];
|
|
4188
4194
|
const shadowV = checkCertificate(input.shadow, "shadow");
|
|
4189
4195
|
if (shadowV !== undefined)
|
|
4190
4196
|
violations.push(shadowV);
|
|
@@ -4193,7 +4199,7 @@ function evaluateGraphGate(input) {
|
|
|
4193
4199
|
violations.push(releaseV);
|
|
4194
4200
|
const soakV = checkCertificate(input.soak, "soak");
|
|
4195
4201
|
if (soakV !== undefined)
|
|
4196
|
-
|
|
4202
|
+
advisories.push(soakV);
|
|
4197
4203
|
if (input.migration === "pending") {
|
|
4198
4204
|
violations.push({
|
|
4199
4205
|
code: "migration-pending",
|
|
@@ -4213,7 +4219,8 @@ function evaluateGraphGate(input) {
|
|
|
4213
4219
|
}
|
|
4214
4220
|
return {
|
|
4215
4221
|
allowed: violations.length === 0,
|
|
4216
|
-
violations
|
|
4222
|
+
violations,
|
|
4223
|
+
advisories
|
|
4217
4224
|
};
|
|
4218
4225
|
}
|
|
4219
4226
|
function isGateApplicable(mode) {
|
|
@@ -8592,12 +8599,18 @@ function leaseLine(lease) {
|
|
|
8592
8599
|
const state = lease.released ? "released" : "active";
|
|
8593
8600
|
return ` lease: ${lease.holder} → ${lease.runID} (${state})`;
|
|
8594
8601
|
}
|
|
8602
|
+
function appendAdvisoryLines(lines, advisories) {
|
|
8603
|
+
for (const advisory of advisories ?? []) {
|
|
8604
|
+
lines.push(` ⚠ advisory (non-blocking) ${advisory.code}: ${advisory.detail}`);
|
|
8605
|
+
}
|
|
8606
|
+
}
|
|
8595
8607
|
function appendEffectiveLines(lines, gate) {
|
|
8596
8608
|
switch (gate.kind) {
|
|
8597
8609
|
case "not-applicable":
|
|
8598
8610
|
return;
|
|
8599
8611
|
case "passed":
|
|
8600
8612
|
lines.push(" effective: active");
|
|
8613
|
+
appendAdvisoryLines(lines, gate.advisories);
|
|
8601
8614
|
return;
|
|
8602
8615
|
case "unevaluable":
|
|
8603
8616
|
lines.push(" effective: unknown — could not evaluate the cutover gate");
|
|
@@ -8608,6 +8621,7 @@ function appendEffectiveLines(lines, gate) {
|
|
|
8608
8621
|
for (const violation of gate.violations) {
|
|
8609
8622
|
lines.push(` • ${violation.code}: ${violation.detail}`);
|
|
8610
8623
|
}
|
|
8624
|
+
appendAdvisoryLines(lines, gate.advisories);
|
|
8611
8625
|
}
|
|
8612
8626
|
}
|
|
8613
8627
|
function renderGraphStatus(snapshot, gate = { kind: "not-applicable" }) {
|
|
@@ -10116,7 +10130,7 @@ async function resolveOperatorGraphPolicy(config, operator) {
|
|
|
10116
10130
|
let graph = resolveGraphConfig(config, "file");
|
|
10117
10131
|
if (isGateApplicable(graph.effectiveMode)) {
|
|
10118
10132
|
const evaluation = await operator.evaluateCutoverGate(config);
|
|
10119
|
-
const gate = evaluation.kind === "evaluated" ? evaluation.gate : { allowed: false, violations: [] };
|
|
10133
|
+
const gate = evaluation.kind === "evaluated" ? evaluation.gate : { allowed: false, violations: [], advisories: [] };
|
|
10120
10134
|
graph = applyGraphGate(graph, gate);
|
|
10121
10135
|
}
|
|
10122
10136
|
return {
|
|
@@ -10158,7 +10172,11 @@ async function runGraphStatus(deps, configPath, configResolution) {
|
|
|
10158
10172
|
return { exitCode: 0, stdout: renderGraphStatus(snapshot, gate2) };
|
|
10159
10173
|
}
|
|
10160
10174
|
const resolved = applyGraphGate(resolveGraphConfig(config, "file"), evaluation.gate);
|
|
10161
|
-
const gate = resolved.gateDenied === true ? {
|
|
10175
|
+
const gate = resolved.gateDenied === true ? {
|
|
10176
|
+
kind: "denied",
|
|
10177
|
+
violations: resolved.gateViolations ?? [],
|
|
10178
|
+
advisories: evaluation.gate.advisories
|
|
10179
|
+
} : { kind: "passed", advisories: evaluation.gate.advisories };
|
|
10162
10180
|
return { exitCode: 0, stdout: renderGraphStatus(snapshot, gate) };
|
|
10163
10181
|
}
|
|
10164
10182
|
async function runGraphCancel(positionals, deps, configPath, configResolution) {
|
|
@@ -13489,7 +13507,7 @@ var createOtlpSpanExporter = (connection, config) => {
|
|
|
13489
13507
|
// package.json
|
|
13490
13508
|
var package_default = {
|
|
13491
13509
|
name: "@jmanuelcorral/openteam",
|
|
13492
|
-
version: "0.16.
|
|
13510
|
+
version: "0.16.2",
|
|
13493
13511
|
packageManager: "bun@1.3.14",
|
|
13494
13512
|
description: "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
|
|
13495
13513
|
license: "MIT",
|
|
@@ -13548,7 +13566,7 @@ var package_default = {
|
|
|
13548
13566
|
sideEffects: false,
|
|
13549
13567
|
scripts: {
|
|
13550
13568
|
prebuild: "bun run clean",
|
|
13551
|
-
build: "bun run build:js && bun run build:cli && bun run build:types",
|
|
13569
|
+
build: "bun run build:js && bun run build:cli && bun run build:types && bun run build:certificates",
|
|
13552
13570
|
"build:js": "bun build ./src/index.ts --target=node --format=esm --outfile=dist/index.js --external @opencode-ai/plugin --external @opencode-ai/sdk --external zod --external @opentelemetry/api --external @opentelemetry/sdk-trace-base --external @opentelemetry/exporter-trace-otlp-http --external @opentelemetry/resources --external @langchain/langgraph",
|
|
13553
13571
|
"build:cli": 'bun build ./src/cli.ts --target=node --format=esm --outfile=dist/cli.js --banner "#!/usr/bin/env node" --external @opencode-ai/plugin --external @opencode-ai/sdk --external zod --external @clack/prompts --external @opentelemetry/api --external @opentelemetry/sdk-trace-base --external @opentelemetry/exporter-trace-otlp-http --external @opentelemetry/resources --external @langchain/langgraph',
|
|
13554
13572
|
"build:types": "tsc -p tsconfig.build.json",
|
|
@@ -13557,6 +13575,7 @@ var package_default = {
|
|
|
13557
13575
|
"test:cov": "bun test --coverage",
|
|
13558
13576
|
"certify:shadow": "bun run scripts/certify-artifact.ts shadow",
|
|
13559
13577
|
"certify:release": "bun run scripts/certify-artifact.ts release",
|
|
13578
|
+
"build:certificates": "bun run certify:shadow && bun run certify:release && bun run scripts/bundle-certificates.ts",
|
|
13560
13579
|
"coverage:check": "node scripts/check-coverage.mjs",
|
|
13561
13580
|
typecheck: "tsc --noEmit",
|
|
13562
13581
|
lint: "biome check .",
|
|
@@ -13665,9 +13684,16 @@ function warnSoakEvidenceRejections(result, warn) {
|
|
|
13665
13684
|
var SHADOW_CERT_PATH = "artifacts/graph-shadow-certificate.json";
|
|
13666
13685
|
var RELEASE_CERT_PATH = "artifacts/graph-release-certificate.json";
|
|
13667
13686
|
var SOAK_CERT_PATH = "artifacts/graph-soak-certificate.json";
|
|
13668
|
-
async function
|
|
13687
|
+
async function readPackagedCertificate(path4) {
|
|
13669
13688
|
try {
|
|
13670
|
-
|
|
13689
|
+
return await readFile2(new URL(`./certificates/${basename2(path4)}`, import.meta.url), "utf8");
|
|
13690
|
+
} catch {
|
|
13691
|
+
return;
|
|
13692
|
+
}
|
|
13693
|
+
}
|
|
13694
|
+
async function readAndParseCertificate(storage, path4, parse2, digestExtractor, fallbackRead) {
|
|
13695
|
+
try {
|
|
13696
|
+
const content = await storage.read(path4) ?? (fallbackRead === undefined ? undefined : await fallbackRead(path4));
|
|
13671
13697
|
if (content === undefined) {
|
|
13672
13698
|
return { status: "absent" };
|
|
13673
13699
|
}
|
|
@@ -13835,18 +13861,16 @@ function createLazyOpencodeVersionReader(serverUrl, options = {}) {
|
|
|
13835
13861
|
}
|
|
13836
13862
|
};
|
|
13837
13863
|
}
|
|
13838
|
-
async function buildGateInput(config, storage, opencodeVersion, warn) {
|
|
13839
|
-
const shadow = await readAndParseCertificate(storage, SHADOW_CERT_PATH, (raw) => parseShadowCertificate(raw, opencodeVersion), (cert) => shadowCertificateBindingDigest(cert.evidence));
|
|
13864
|
+
async function buildGateInput(config, storage, opencodeVersion, warn, packagedRead = readPackagedCertificate) {
|
|
13865
|
+
const shadow = await readAndParseCertificate(storage, SHADOW_CERT_PATH, (raw) => parseShadowCertificate(raw, opencodeVersion), (cert) => shadowCertificateBindingDigest(cert.evidence), packagedRead);
|
|
13840
13866
|
const shadowDigest = shadow.status === "valid" ? shadow.digest : "0".repeat(64);
|
|
13841
|
-
const release = await readAndParseCertificate(storage, RELEASE_CERT_PATH, (raw) => parseReleaseCertificate(raw, opencodeVersion, shadowDigest), (cert) => cert.digest);
|
|
13867
|
+
const release = await readAndParseCertificate(storage, RELEASE_CERT_PATH, (raw) => parseReleaseCertificate(raw, opencodeVersion, shadowDigest), (cert) => cert.digest, packagedRead);
|
|
13842
13868
|
let soakLedgerDigest = "0".repeat(64);
|
|
13843
13869
|
try {
|
|
13844
13870
|
const recorderPorts = recorderPortsFromStorage(storage);
|
|
13845
13871
|
const chainRead = await readAllChains(recorderPorts, SOAK_EVIDENCE_DIR);
|
|
13846
13872
|
warnSoakEvidenceRejections(chainRead, warn);
|
|
13847
|
-
|
|
13848
|
-
soakLedgerDigest = canonicalLedger(chainRead.chains);
|
|
13849
|
-
}
|
|
13873
|
+
soakLedgerDigest = canonicalLedger(chainRead.chains);
|
|
13850
13874
|
} catch {}
|
|
13851
13875
|
const soak = await readAndParseCertificate(storage, SOAK_CERT_PATH, (raw) => parseSoakCertificate(raw, DEFAULT_SOAK_POLICY, soakLedgerDigest), (cert) => cert.digest);
|
|
13852
13876
|
const migration = "complete";
|
|
@@ -14341,6 +14365,7 @@ export {
|
|
|
14341
14365
|
warnInertPrivacySetting,
|
|
14342
14366
|
server,
|
|
14343
14367
|
recorderPortsFromStorage,
|
|
14368
|
+
readPackagedCertificate,
|
|
14344
14369
|
readOpencodeVersion,
|
|
14345
14370
|
logTelemetryWarning,
|
|
14346
14371
|
logTelemetryError,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jmanuelcorral/openteam",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.2",
|
|
4
4
|
"packageManager": "bun@1.3.14",
|
|
5
5
|
"description": "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"sideEffects": false,
|
|
60
60
|
"scripts": {
|
|
61
61
|
"prebuild": "bun run clean",
|
|
62
|
-
"build": "bun run build:js && bun run build:cli && bun run build:types",
|
|
62
|
+
"build": "bun run build:js && bun run build:cli && bun run build:types && bun run build:certificates",
|
|
63
63
|
"build:js": "bun build ./src/index.ts --target=node --format=esm --outfile=dist/index.js --external @opencode-ai/plugin --external @opencode-ai/sdk --external zod --external @opentelemetry/api --external @opentelemetry/sdk-trace-base --external @opentelemetry/exporter-trace-otlp-http --external @opentelemetry/resources --external @langchain/langgraph",
|
|
64
64
|
"build:cli": "bun build ./src/cli.ts --target=node --format=esm --outfile=dist/cli.js --banner \"#!/usr/bin/env node\" --external @opencode-ai/plugin --external @opencode-ai/sdk --external zod --external @clack/prompts --external @opentelemetry/api --external @opentelemetry/sdk-trace-base --external @opentelemetry/exporter-trace-otlp-http --external @opentelemetry/resources --external @langchain/langgraph",
|
|
65
65
|
"build:types": "tsc -p tsconfig.build.json",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"test:cov": "bun test --coverage",
|
|
69
69
|
"certify:shadow": "bun run scripts/certify-artifact.ts shadow",
|
|
70
70
|
"certify:release": "bun run scripts/certify-artifact.ts release",
|
|
71
|
+
"build:certificates": "bun run certify:shadow && bun run certify:release && bun run scripts/bundle-certificates.ts",
|
|
71
72
|
"coverage:check": "node scripts/check-coverage.mjs",
|
|
72
73
|
"typecheck": "tsc --noEmit",
|
|
73
74
|
"lint": "biome check .",
|