@jinn-network/client 0.1.7-canary.d4e4e183 → 0.1.7-canary.e87c1a0d
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.md +67 -1
- package/dist/adapters/mech/adapter.js +27 -3
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/safe.d.ts +1 -1
- package/dist/adapters/mech/safe.js +5 -3
- package/dist/adapters/mech/safe.js.map +1 -1
- package/dist/adapters/mech/types.d.ts +6 -1
- package/dist/adapters/mech/types.js.map +1 -1
- package/dist/api/activity-events-endpoint.d.ts +14 -0
- package/dist/api/activity-events-endpoint.js +59 -0
- package/dist/api/activity-events-endpoint.js.map +1 -0
- package/dist/api/bootstrap-endpoint.d.ts +1 -2
- package/dist/api/bootstrap-endpoint.js +42 -24
- package/dist/api/bootstrap-endpoint.js.map +1 -1
- package/dist/api/codex-doctor-endpoint.d.ts +6 -0
- package/dist/api/codex-doctor-endpoint.js +92 -0
- package/dist/api/codex-doctor-endpoint.js.map +1 -1
- package/dist/api/gather-status.d.ts +26 -0
- package/dist/api/gather-status.js +183 -26
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/launcher-status.d.ts +4 -1
- package/dist/api/launcher-status.js +11 -10
- package/dist/api/launcher-status.js.map +1 -1
- package/dist/api/launcher-tasks.d.ts +1 -1
- package/dist/api/launcher-tasks.js +12 -8
- package/dist/api/launcher-tasks.js.map +1 -1
- package/dist/api/operator-artifacts-endpoint.js +73 -6
- package/dist/api/operator-artifacts-endpoint.js.map +1 -1
- package/dist/api/server.js +27 -1
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.js +11 -131
- package/dist/api/setup-endpoints.js.map +1 -1
- package/dist/api/solvernets-endpoints.js +28 -17
- package/dist/api/solvernets-endpoints.js.map +1 -1
- package/dist/api/status-build.d.ts +96 -2
- package/dist/api/status-build.js +45 -11
- package/dist/api/status-build.js.map +1 -1
- package/dist/api/status-harness-rollup.d.ts +35 -0
- package/dist/api/status-harness-rollup.js +45 -0
- package/dist/api/status-harness-rollup.js.map +1 -0
- package/dist/build-info.json +4 -4
- package/dist/build-meta.json +1 -1
- package/dist/captures/live-publisher.js +24 -4
- package/dist/captures/live-publisher.js.map +1 -1
- package/dist/captures/publish.d.ts +1 -1
- package/dist/cli/commands/solver-nets.js +92 -21
- package/dist/cli/commands/solver-nets.js.map +1 -1
- package/dist/cli/commands/solver-plugins-block.d.ts +33 -0
- package/dist/cli/commands/solver-plugins-block.js +118 -0
- package/dist/cli/commands/solver-plugins-block.js.map +1 -0
- package/dist/cli/commands/solver-plugins-feedback.d.ts +72 -0
- package/dist/cli/commands/solver-plugins-feedback.js +262 -0
- package/dist/cli/commands/solver-plugins-feedback.js.map +1 -0
- package/dist/cli/commands/solver-plugins-read.d.ts +54 -0
- package/dist/cli/commands/solver-plugins-read.js +259 -0
- package/dist/cli/commands/solver-plugins-read.js.map +1 -0
- package/dist/cli/commands/solver-plugins.d.ts +35 -0
- package/dist/cli/commands/solver-plugins.js +399 -2
- package/dist/cli/commands/solver-plugins.js.map +1 -1
- package/dist/cli/commands/tasks.js +15 -2
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/task-native-readiness.d.ts +7 -0
- package/dist/cli/task-native-readiness.js +7 -5
- package/dist/cli/task-native-readiness.js.map +1 -1
- package/dist/config.d.ts +169 -232
- package/dist/config.js +219 -107
- package/dist/config.js.map +1 -1
- package/dist/daemon/daemon.d.ts +3 -0
- package/dist/daemon/daemon.js +88 -22
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/gate-logger.d.ts +9 -0
- package/dist/daemon/gate-logger.js +2 -0
- package/dist/daemon/gate-logger.js.map +1 -0
- package/dist/daemon/readiness-gate.d.ts +1 -4
- package/dist/daemon/readiness-gate.js.map +1 -1
- package/dist/daemon/spend-cap-gate.d.ts +40 -0
- package/dist/daemon/spend-cap-gate.js +46 -0
- package/dist/daemon/spend-cap-gate.js.map +1 -0
- package/dist/dashboard/assets/index-C4huIsUW.css +32 -0
- package/dist/dashboard/assets/index-DkTglWXU.js +345 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/earning/bootstrap.d.ts +8 -3
- package/dist/earning/bootstrap.js +18 -11
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/safe-adapter.js +23 -11
- package/dist/earning/safe-adapter.js.map +1 -1
- package/dist/earning/types.d.ts +6 -6
- package/dist/earning/viem-clients.d.ts +11 -4
- package/dist/earning/viem-clients.js +14 -5
- package/dist/earning/viem-clients.js.map +1 -1
- package/dist/erc8004/identity.d.ts +19 -3
- package/dist/erc8004/identity.js +21 -6
- package/dist/erc8004/identity.js.map +1 -1
- package/dist/erc8004/index.d.ts +1 -1
- package/dist/erc8004/index.js.map +1 -1
- package/dist/events/types.d.ts +2 -2
- package/dist/harnesses/engine/engine.js +42 -3
- package/dist/harnesses/engine/engine.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/prompt.d.ts +6 -6
- package/dist/harnesses/impls/hermes-agent/prompt.js +6 -6
- package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +9 -0
- package/dist/harnesses/impls/learner/adapters/codex-code.js +22 -8
- package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +74 -5
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +103 -32
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -1
- package/dist/harnesses/readiness-registry.d.ts +7 -0
- package/dist/harnesses/readiness-registry.js +9 -0
- package/dist/harnesses/readiness-registry.js.map +1 -1
- package/dist/main.js +49 -31
- package/dist/main.js.map +1 -1
- package/dist/observability/emit-event.d.ts +3 -2
- package/dist/observability/emit-event.js +22 -1
- package/dist/observability/emit-event.js.map +1 -1
- package/dist/preflight/rpc-network.d.ts +40 -0
- package/dist/preflight/rpc-network.js +67 -1
- package/dist/preflight/rpc-network.js.map +1 -1
- package/dist/rpc/transport.d.ts +109 -0
- package/dist/rpc/transport.js +220 -0
- package/dist/rpc/transport.js.map +1 -0
- package/dist/scripts/donation-consumption-acceptance.js +7 -28
- package/dist/scripts/donation-consumption-acceptance.js.map +1 -1
- package/dist/solver-nets/prediction-operator-ux.d.ts +1 -2
- package/dist/solver-nets/prediction-operator-ux.js +56 -53
- package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
- package/dist/solver-nets/registry.d.ts +19 -1
- package/dist/solver-nets/registry.js +37 -24
- package/dist/solver-nets/registry.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-pool.d.ts +9 -2
- package/dist/solver-types/_swe-rebench-v2-pool.js +15 -20
- package/dist/solver-types/_swe-rebench-v2-pool.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +29 -1
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js +62 -13
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2-auto.js +13 -1
- package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2.d.ts +3 -0
- package/dist/solver-types/swe-rebench-v2.js +44 -6
- package/dist/solver-types/swe-rebench-v2.js.map +1 -1
- package/dist/solvernets/launched-record-dispatcher.js +9 -0
- package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
- package/dist/spend/credential.d.ts +8 -0
- package/dist/spend/credential.js +30 -0
- package/dist/spend/credential.js.map +1 -0
- package/dist/spend/daemon-config.d.ts +13 -0
- package/dist/spend/daemon-config.js +24 -0
- package/dist/spend/daemon-config.js.map +1 -0
- package/dist/spend/pricing.d.ts +16 -0
- package/dist/spend/pricing.js +26 -0
- package/dist/spend/pricing.js.map +1 -0
- package/dist/spend/record.d.ts +13 -0
- package/dist/spend/record.js +30 -0
- package/dist/spend/record.js.map +1 -0
- package/dist/spend/usage.d.ts +27 -0
- package/dist/spend/usage.js +113 -0
- package/dist/spend/usage.js.map +1 -0
- package/dist/store/store.d.ts +46 -0
- package/dist/store/store.js +184 -4
- package/dist/store/store.js.map +1 -1
- package/dist/trajectory/transcript-parsers/types.d.ts +8 -8
- package/dist/tx-retry.d.ts +15 -0
- package/dist/tx-retry.js +30 -6
- package/dist/tx-retry.js.map +1 -1
- package/package.json +7 -1
- package/plugins/swe-rebench-v2-diffmin/README.md +10 -9
- package/plugins/swe-rebench-v2-diffmin/jinn.plugin.json +1 -1
- package/plugins/swe-rebench-v2-diffmin/skills/diffmin/SKILL.md +15 -10
- package/plugins/swe-rebench-v2-diffmin/skills/test-map/SKILL.md +10 -12
- package/plugins/swe-rebench-v2-runtime/.claude-plugin/plugin.json +1 -1
- package/plugins/swe-rebench-v2-runtime/.codex-plugin/plugin.json +3 -3
- package/plugins/swe-rebench-v2-runtime/README.md +6 -6
- package/plugins/swe-rebench-v2-runtime/jinn.plugin.json +2 -3
- package/plugins/swe-rebench-v2-runtime/skills/task/SKILL.md +69 -0
- package/dist/dashboard/assets/index-BUlE8F3Y.js +0 -330
- package/dist/dashboard/assets/index-blqc7eqq.css +0 -32
- package/plugins/swe-rebench-v2-runtime/skills/orient/SKILL.md +0 -29
- package/plugins/swe-rebench-v2-runtime/skills/plan/SKILL.md +0 -53
|
@@ -61,16 +61,56 @@ function fundingTargetWei(fundingGate) {
|
|
|
61
61
|
return undefined;
|
|
62
62
|
return (BigInt(required) + BigInt(balance)).toString();
|
|
63
63
|
}
|
|
64
|
+
function readFundingGate(earningDir) {
|
|
65
|
+
const path = join(earningDir, 'bootstrap-funding.json');
|
|
66
|
+
if (!existsSync(path))
|
|
67
|
+
return null;
|
|
68
|
+
try {
|
|
69
|
+
return JSON.parse(readFileSync(path, 'utf-8'));
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// targetMet is always false in responses where we surface the funding block:
|
|
76
|
+
// - uninitialized branch surfaces it pre-bootstrap, before any balance check
|
|
77
|
+
// - setup branch only surfaces it when fundingGateActive (master balance < target)
|
|
78
|
+
// Once the gate clears, callers omit the funding block entirely.
|
|
79
|
+
function fundingResponse(gate) {
|
|
80
|
+
return {
|
|
81
|
+
master_address: gate.master_address,
|
|
82
|
+
eth_required: gate.eth_required,
|
|
83
|
+
eth_balance: gate.eth_balance,
|
|
84
|
+
targetWei: fundingTargetWei(gate),
|
|
85
|
+
targetMet: false,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
64
88
|
export function addBootstrapRoutes(app, config) {
|
|
65
89
|
app.get('/v1/bootstrap', (c) => {
|
|
66
90
|
const path = join(config.earningDir, 'earning_state.json');
|
|
67
91
|
if (!existsSync(path)) {
|
|
92
|
+
// No earning_state.json yet — but the daemon may have exited before
|
|
93
|
+
// writing it (e.g. funding_required before first full run). Surface any
|
|
94
|
+
// persisted bootstrap-error.json and bootstrap-funding.json so the SPA
|
|
95
|
+
// can render actionable states rather than a blank "uninitialized" screen.
|
|
96
|
+
const uninitError = readBootstrapError(config.earningDir);
|
|
97
|
+
const uninitFunding = readFundingGate(config.earningDir);
|
|
98
|
+
// The `funding` block is supplementary. The SPA's Onboarding region
|
|
99
|
+
// surfaces funding details only via the BootstrapErrorCard path (which
|
|
100
|
+
// requires `error` to be present), because the phase-row +
|
|
101
|
+
// AwaitingFundingCard path requires `mode === 'setup'` and a non-empty
|
|
102
|
+
// `master_address`. The error envelope is the canonical display mechanism
|
|
103
|
+
// for the uninitialized window. The funding block is kept in the response
|
|
104
|
+
// because downstream clients may want it; surfacing it directly in
|
|
105
|
+
// Onboarding for the uninitialized case is in-scope for a later PR.
|
|
68
106
|
return c.json({
|
|
69
107
|
schemaVersion: 1,
|
|
70
108
|
mode: 'uninitialized',
|
|
71
109
|
steps: STEPS,
|
|
72
110
|
currentStep: STEPS[0],
|
|
73
111
|
services: [],
|
|
112
|
+
...(uninitError ? { error: uninitError } : {}),
|
|
113
|
+
...(uninitFunding ? { funding: fundingResponse(uninitFunding) } : {}),
|
|
74
114
|
});
|
|
75
115
|
}
|
|
76
116
|
let parsed;
|
|
@@ -81,16 +121,7 @@ export function addBootstrapRoutes(app, config) {
|
|
|
81
121
|
return c.json({ error: 'unreadable_state_file' }, 500);
|
|
82
122
|
}
|
|
83
123
|
const services = parsed.services ?? [];
|
|
84
|
-
|
|
85
|
-
const fundingGatePath = join(config.earningDir, 'bootstrap-funding.json');
|
|
86
|
-
if (existsSync(fundingGatePath)) {
|
|
87
|
-
try {
|
|
88
|
-
fundingGate = JSON.parse(readFileSync(fundingGatePath, 'utf-8'));
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
fundingGate = null;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
124
|
+
const fundingGate = readFundingGate(config.earningDir);
|
|
94
125
|
// `[].every(...)` returns true vacuously, so a fresh fleet (no services
|
|
95
126
|
// yet) was previously treated as "all services running" and the funding
|
|
96
127
|
// gate was suppressed even when bootstrap-funding.json existed. Compute
|
|
@@ -137,21 +168,8 @@ export function addBootstrapRoutes(app, config) {
|
|
|
137
168
|
...(parsed.fleet_safe_address ? { fleet_safe_address: parsed.fleet_safe_address } : {}),
|
|
138
169
|
...(cfg.rpcUrl !== undefined ? { rpcUrl: cfg.rpcUrl } : {}),
|
|
139
170
|
...(cfg.defaultRpcUrl !== undefined ? { defaultRpcUrl: cfg.defaultRpcUrl } : {}),
|
|
140
|
-
...(cfg.solverNets !== undefined ? { solverNets: cfg.solverNets } : {}),
|
|
141
171
|
...(cfg.joinedSolverNets !== undefined ? { joinedSolverNets: cfg.joinedSolverNets } : {}),
|
|
142
|
-
...(fundingGateActive && fundingGate ? {
|
|
143
|
-
funding: {
|
|
144
|
-
master_address: fundingGate.master_address,
|
|
145
|
-
eth_required: fundingGate.eth_required,
|
|
146
|
-
eth_balance: fundingGate.eth_balance,
|
|
147
|
-
targetWei: fundingTargetWei(fundingGate),
|
|
148
|
-
// targetMet is false whenever the funding gate is active: the gate
|
|
149
|
-
// fires only when master balance < target. Once the gate clears the
|
|
150
|
-
// daemon advances past awaiting_funding and the funding block is
|
|
151
|
-
// omitted entirely (allRunning path or currentStep > awaiting_funding).
|
|
152
|
-
targetMet: false,
|
|
153
|
-
},
|
|
154
|
-
} : {}),
|
|
172
|
+
...(fundingGateActive && fundingGate ? { funding: fundingResponse(fundingGate) } : {}),
|
|
155
173
|
...(error ? { error } : {}),
|
|
156
174
|
...(retireFailed ? {
|
|
157
175
|
retire_failed: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap-endpoint.js","sourceRoot":"","sources":["../../src/api/bootstrap-endpoint.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap-endpoint.js","sourceRoot":"","sources":["../../src/api/bootstrap-endpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,12 +40,18 @@
|
|
|
40
40
|
import type { Hono } from 'hono';
|
|
41
41
|
/** Classification of Codex credentials. */
|
|
42
42
|
export type CodexAuthStatus = 'ok' | 'expired' | 'not_configured';
|
|
43
|
+
/** Classification of the installed codex CLI version against the tested range. */
|
|
44
|
+
export type CodexVersionStatus = 'ok' | 'unknown' | 'untested';
|
|
43
45
|
export interface CodexDoctorResponse {
|
|
44
46
|
installed: boolean;
|
|
45
47
|
/** Convenience alias — true iff `authStatus === 'ok'`. */
|
|
46
48
|
authenticated: boolean;
|
|
47
49
|
/** Live/expired/absent classification of Codex credentials. */
|
|
48
50
|
authStatus: CodexAuthStatus;
|
|
51
|
+
/** Parsed semver string from `codex --version`, or null when unparseable. */
|
|
52
|
+
cliVersion: string | null;
|
|
53
|
+
/** ok = within tested range; untested = outside it; unknown = unparseable (#675). */
|
|
54
|
+
versionStatus: CodexVersionStatus;
|
|
49
55
|
exitCode: number | null;
|
|
50
56
|
stdout: string;
|
|
51
57
|
stderr: string;
|
|
@@ -2,6 +2,22 @@ import { spawnSync } from 'node:child_process';
|
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
+
/**
|
|
6
|
+
* Tested @openai/codex CLI version window (#675). Below MIN or above MAX, the
|
|
7
|
+
* harness may break — codex 0.133.0 introduced a stdin contract change that
|
|
8
|
+
* silently broke the previous positional-prompt invocation. Bumping these
|
|
9
|
+
* bounds is a deliberate compatibility statement, made with a green run of
|
|
10
|
+
* `yarn test test/harnesses/impls/learner/codex-code-adapter.test.ts` against
|
|
11
|
+
* the new CLI version.
|
|
12
|
+
*
|
|
13
|
+
* The upper bound is compared on major+minor only: patch releases within the
|
|
14
|
+
* same minor as `MAX_TESTED_CODEX_VERSION` are treated as `'ok'`, since codex
|
|
15
|
+
* patch bumps almost never break the CLI contract and warning on every patch
|
|
16
|
+
* would produce alarm fatigue. Bump `MAX_TESTED_CODEX_VERSION` when codex
|
|
17
|
+
* bumps its minor or major; patch bumps stay `'ok'` automatically.
|
|
18
|
+
*/
|
|
19
|
+
const MIN_TESTED_CODEX_VERSION = '0.50.0';
|
|
20
|
+
const MAX_TESTED_CODEX_VERSION = '0.133.0';
|
|
5
21
|
/**
|
|
6
22
|
* Decodes a JWT's payload and returns its `exp` claim (epoch seconds), or
|
|
7
23
|
* `undefined` when the token is absent, malformed, or carries no `exp`.
|
|
@@ -133,6 +149,67 @@ function hasApiKey(config) {
|
|
|
133
149
|
const env = config.env ?? process.env;
|
|
134
150
|
return Boolean(env['OPENAI_API_KEY']?.trim());
|
|
135
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* Extracts the first `MAJOR.MINOR.PATCH` semver-looking triple from `codex
|
|
154
|
+
* --version` output. Returns null when no such triple is present.
|
|
155
|
+
*/
|
|
156
|
+
function parseCodexVersion(stdout) {
|
|
157
|
+
const match = stdout.match(/\d+\.\d+\.\d+/);
|
|
158
|
+
return match ? match[0] : null;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Compares two `MAJOR.MINOR.PATCH` strings segment-by-segment as integers.
|
|
162
|
+
* Returns -1 if `a < b`, 0 if equal, 1 if `a > b`. Non-numeric / missing
|
|
163
|
+
* segments fall back to 0 so a partial input never throws.
|
|
164
|
+
*/
|
|
165
|
+
function compareSemver(a, b) {
|
|
166
|
+
const av = a.split('.').map((s) => Number.parseInt(s, 10) || 0);
|
|
167
|
+
const bv = b.split('.').map((s) => Number.parseInt(s, 10) || 0);
|
|
168
|
+
for (let i = 0; i < 3; i++) {
|
|
169
|
+
const ai = av[i] ?? 0;
|
|
170
|
+
const bi = bv[i] ?? 0;
|
|
171
|
+
if (ai < bi)
|
|
172
|
+
return -1;
|
|
173
|
+
if (ai > bi)
|
|
174
|
+
return 1;
|
|
175
|
+
}
|
|
176
|
+
return 0;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Returns true when `a`'s `MAJOR.MINOR` is strictly greater than `b`'s. Patch
|
|
180
|
+
* differences within the same minor are ignored, so 0.133.5 is NOT above
|
|
181
|
+
* 0.133.0, but 0.134.0 and 1.0.0 are. Used for the upper-bound check (#675)
|
|
182
|
+
* so codex patch releases don't trip the untested-version warning.
|
|
183
|
+
*/
|
|
184
|
+
function isAboveMinor(a, b) {
|
|
185
|
+
const av = a.split('.').map((s) => Number.parseInt(s, 10) || 0);
|
|
186
|
+
const bv = b.split('.').map((s) => Number.parseInt(s, 10) || 0);
|
|
187
|
+
const [aMajor, aMinor] = [av[0] ?? 0, av[1] ?? 0];
|
|
188
|
+
const [bMajor, bMinor] = [bv[0] ?? 0, bv[1] ?? 0];
|
|
189
|
+
if (aMajor !== bMajor)
|
|
190
|
+
return aMajor > bMajor;
|
|
191
|
+
return aMinor > bMinor;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Classifies a parsed semver against the tested range.
|
|
195
|
+
* - null → 'unknown'
|
|
196
|
+
* - below MIN (full semver compare) → 'untested'
|
|
197
|
+
* - above MAX on major+minor → 'untested' (patch bumps within the tested
|
|
198
|
+
* minor stay 'ok'; bump MAX_TESTED_CODEX_VERSION on minor/major bumps)
|
|
199
|
+
* - otherwise → 'ok'
|
|
200
|
+
*/
|
|
201
|
+
function classifyVersion(cliVersion) {
|
|
202
|
+
if (cliVersion === null)
|
|
203
|
+
return 'unknown';
|
|
204
|
+
if (compareSemver(cliVersion, MIN_TESTED_CODEX_VERSION) < 0
|
|
205
|
+
|| isAboveMinor(cliVersion, MAX_TESTED_CODEX_VERSION)) {
|
|
206
|
+
return 'untested';
|
|
207
|
+
}
|
|
208
|
+
return 'ok';
|
|
209
|
+
}
|
|
210
|
+
// Module-scoped so the warning fires once per process even though
|
|
211
|
+
// `probeCodexDoctor` is called every readiness tick.
|
|
212
|
+
let untestedVersionWarningEmitted = false;
|
|
136
213
|
/**
|
|
137
214
|
* Synchronously runs `codex --version` and classifies install + auth state.
|
|
138
215
|
* Pure (no Hono dependency) so the harness layer can call it without pulling
|
|
@@ -160,10 +237,25 @@ export function probeCodexDoctor(config = {}) {
|
|
|
160
237
|
const authStatus = runnable
|
|
161
238
|
? detectCodexAuthStatus(config)
|
|
162
239
|
: 'not_configured';
|
|
240
|
+
// Version surfacing (#675). Parse only when we have a runnable binary;
|
|
241
|
+
// otherwise the stdout is meaningless.
|
|
242
|
+
const cliVersion = runnable ? parseCodexVersion(result.stdout ?? '') : null;
|
|
243
|
+
const versionStatus = runnable
|
|
244
|
+
? classifyVersion(cliVersion)
|
|
245
|
+
: 'unknown';
|
|
246
|
+
if (versionStatus === 'untested' && !untestedVersionWarningEmitted) {
|
|
247
|
+
untestedVersionWarningEmitted = true;
|
|
248
|
+
// eslint-disable-next-line no-console
|
|
249
|
+
console.warn(`codex CLI version ${cliVersion} is outside the tested range `
|
|
250
|
+
+ `${MIN_TESTED_CODEX_VERSION}–${MAX_TESTED_CODEX_VERSION}; the harness `
|
|
251
|
+
+ `may break — see issue #675`);
|
|
252
|
+
}
|
|
163
253
|
return {
|
|
164
254
|
installed,
|
|
165
255
|
authenticated: authStatus === 'ok',
|
|
166
256
|
authStatus,
|
|
257
|
+
cliVersion,
|
|
258
|
+
versionStatus,
|
|
167
259
|
exitCode: result.status,
|
|
168
260
|
stdout: (result.stdout ?? '').slice(0, 4000),
|
|
169
261
|
stderr: (result.stderr ?? '').slice(0, 4000),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-doctor-endpoint.js","sourceRoot":"","sources":["../../src/api/codex-doctor-endpoint.ts"],"names":[],"mappings":"AAwCA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-doctor-endpoint.js","sourceRoot":"","sources":["../../src/api/codex-doctor-endpoint.ts"],"names":[],"mappings":"AAwCA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC;;;;;;;;;;;;;GAaG;AACH,MAAM,wBAAwB,GAAG,QAAQ,CAAC;AAC1C,MAAM,wBAAwB,GAAG,SAAS,CAAC;AA8C3C;;;;;;;;GAQG;AACH,SAAS,SAAS,CAAC,KAAgC;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAsB,CAAC;QAC7D,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,gBAAgB,CAAC,IAAmB,EAAE,KAAa;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;IACvC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,uEAAuE;QACvE,gDAAgD;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,oEAAoE;IACpE,gEAAgE;IAChE,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;IAC1C,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,yEAAyE;IACzE,0CAA0C;IAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,mEAAmE;QACnE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,MAAyB;IAClD,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACtC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,SAAS;QACxB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAAyC,EAAE,IAAI,CAAC;QAC9D,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACxC,0EAA0E;QAC1E,sDAAsD;QACtD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,qBAAqB,CAAC,MAAyB;IACtD,IAAI,SAAS,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,gBAAgB,CAAC;IAE/C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,yDAAyD;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAE5D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACvC,OAAO,gBAAgB,CAAC,MAAuB,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,SAAS,CAAC,MAAyB;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,CAAS,EAAE,CAAS;IACzC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC,CAAC;QACvB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,CAAS,EAAE,CAAS;IACxC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,GAAG,MAAM,CAAC;IAC9C,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,UAAyB;IAChD,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC1C,IACE,aAAa,CAAC,UAAU,EAAE,wBAAwB,CAAC,GAAG,CAAC;WACpD,YAAY,CAAC,UAAU,EAAE,wBAAwB,CAAC,EACrD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kEAAkE;AAClE,qDAAqD;AACrD,IAAI,6BAA6B,GAAG,KAAK,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAA4B,EAAE;IAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,oBAAoB,IAAI,MAAM,CAAC;IAExD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;QAChD,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAI,MAAM,CAAC,KAA2C,EAAE,IAAI,CAAC;IAC5E,uEAAuE;IACvE,gEAAgE;IAChE,uEAAuE;IACvE,qEAAqE;IACrE,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,SAAS,KAAK,QAAQ,CAAC;IACxC,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,CAC7B,MAAM,CAAC,MAAM,KAAK,IAAI;WACnB,MAAM,CAAC,MAAM,KAAK,IAAI;WACtB,CAAC,SAAS,IAAI,IAAI,IAAI,SAAS,KAAK,QAAQ,CAAC,CACjD,CAAC;IAEF,mEAAmE;IACnE,MAAM,QAAQ,GAAG,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAClD,MAAM,UAAU,GAAoB,QAAQ;QAC1C,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAC/B,CAAC,CAAC,gBAAgB,CAAC;IAErB,uEAAuE;IACvE,uCAAuC;IACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,MAAM,aAAa,GAAuB,QAAQ;QAChD,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC;QAC7B,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,aAAa,KAAK,UAAU,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACnE,6BAA6B,GAAG,IAAI,CAAC;QACrC,sCAAsC;QACtC,OAAO,CAAC,IAAI,CACV,qBAAqB,UAAU,+BAA+B;cAC5D,GAAG,wBAAwB,IAAI,wBAAwB,gBAAgB;cACvE,4BAA4B,CAC/B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS;QACT,aAAa,EAAE,UAAU,KAAK,IAAI;QAClC,UAAU;QACV,UAAU;QACV,aAAa;QACb,QAAQ,EAAE,MAAM,CAAC,MAAM;QACvB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;QAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAS,EAAE,SAA4B,EAAE;IAC5E,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE;QACjC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { Store } from '../store/store.js';
|
|
5
5
|
import type { JinnConfig } from '../config.js';
|
|
6
|
+
import type { CredentialId } from '../spend/credential.js';
|
|
6
7
|
import { type GatheredStatusRaw, type StatusV1Response } from './status-build.js';
|
|
8
|
+
import type { HarnessReadinessSnapshot, JoinedHarnessSpec } from '../harnesses/readiness-registry.js';
|
|
9
|
+
/** Test-only: clear the first-seen-evicted tracker. Do not call from production code. */
|
|
10
|
+
export declare function __resetEvictionFirstSeenForTests(): void;
|
|
7
11
|
/**
|
|
8
12
|
* Drop any cached prediction operator status for `config`.
|
|
9
13
|
*
|
|
@@ -30,6 +34,14 @@ export interface StatusGatherConfig {
|
|
|
30
34
|
tjinnChainId?: number;
|
|
31
35
|
/** JinnDistributor address used for real operator lifetime claimed totals. */
|
|
32
36
|
tjinnDistributorAddress?: string;
|
|
37
|
+
/**
|
|
38
|
+
* stOLAS L2 distributor address (`CHAIN_CONFIG.distributorAddress`). Used
|
|
39
|
+
* solely to mirror `main.ts`'s `evictionCheck` predicate (issue #651). The
|
|
40
|
+
* tJINN distributor on L1 is a different contract — do not substitute one
|
|
41
|
+
* for the other even though they happen to bundle together in our current
|
|
42
|
+
* testnet deployment.
|
|
43
|
+
*/
|
|
44
|
+
stOlasDistributorAddress?: string;
|
|
33
45
|
network: 'mainnet' | 'testnet';
|
|
34
46
|
pollIntervalMs: number;
|
|
35
47
|
masterEthDailyEstimateWei?: string;
|
|
@@ -46,6 +58,20 @@ export interface StatusGatherConfig {
|
|
|
46
58
|
/** Full config enables SolverNet/plugin/Harness diagnostics in /v1/status. */
|
|
47
59
|
config?: JinnConfig;
|
|
48
60
|
configPath?: string;
|
|
61
|
+
/** Per-credential daily caps; when present, /v1/status carries a `spend` block. */
|
|
62
|
+
spendCaps?: Record<CredentialId, number>;
|
|
63
|
+
/**
|
|
64
|
+
* Optional getter that returns the live HarnessReadinessRegistry snapshot
|
|
65
|
+
* + joinedHarnessesByCid map. Threaded by `server.ts` for the `/v1/status`
|
|
66
|
+
* handler so the response carries a `harness` rollup. Returning `null`
|
|
67
|
+
* means "registry not ready yet" — gather-status leaves `raw.harnessRollup`
|
|
68
|
+
* unset and the assembler defaults to ready. Mirrors the holder pattern
|
|
69
|
+
* already used for `harnessReadinessRegistry` in main.ts.
|
|
70
|
+
*/
|
|
71
|
+
harnessReadiness?: () => {
|
|
72
|
+
snapshot: HarnessReadinessSnapshot;
|
|
73
|
+
joinedHarnessesByCid: Record<string, JoinedHarnessSpec>;
|
|
74
|
+
} | null;
|
|
49
75
|
}
|
|
50
76
|
/** Collect status inputs without assembling the legacy mega-response. */
|
|
51
77
|
export declare function gatherGatheredStatusRaw(store: Store, status: StatusGatherConfig | undefined): Promise<GatheredStatusRaw>;
|