@jinn-network/client 0.1.7-canary.d4e4e183 → 0.1.7-canary.eb5ac0de
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 +0 -1
- package/dist/api/bootstrap-endpoint.js.map +1 -1
- package/dist/api/gather-status.d.ts +3 -0
- package/dist/api/gather-status.js +105 -26
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/launcher-status.d.ts +1 -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/server.js +4 -0
- 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/status-build.d.ts +40 -0
- package/dist/api/status-build.js +25 -0
- package/dist/api/status-build.js.map +1 -1
- package/dist/build-info.json +4 -4
- package/dist/build-meta.json +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-CKTc0D37.css +32 -0
- package/dist/dashboard/assets/index-h2ATCtSA.js +345 -0
- package/dist/dashboard/index.html +2 -2
- 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/events/types.d.ts +2 -2
- package/dist/harnesses/engine/engine.js +13 -0
- package/dist/harnesses/engine/engine.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/main.js +44 -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.js +4 -1
- package/dist/solver-types/swe-rebench-v2.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 +28 -0
- package/dist/store/store.js +118 -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 +2 -1
- package/dist/dashboard/assets/index-BUlE8F3Y.js +0 -330
- package/dist/dashboard/assets/index-blqc7eqq.css +0 -32
package/dist/config.d.ts
CHANGED
|
@@ -15,45 +15,6 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { z } from 'zod';
|
|
17
17
|
import type { Task } from './types/task.js';
|
|
18
|
-
export interface DefaultSolverNetConfig extends Record<string, unknown> {
|
|
19
|
-
enabled?: boolean;
|
|
20
|
-
solverType: string;
|
|
21
|
-
/**
|
|
22
|
-
* Operator-selected roles for this SolverNet. A non-empty subset of
|
|
23
|
-
* `['solving', 'evaluating']`. Multiple roles can run concurrently — the
|
|
24
|
-
* daemon enforces `disallowSolverSelfEvaluation` on-chain so the operator
|
|
25
|
-
* never evaluates its own Solutions, and the on-chain
|
|
26
|
-
* TaskActivityCheckerV3 keeps `solutionDeliveryWeight` and
|
|
27
|
-
* `verdictDeliveryWeight` as independent additive counters.
|
|
28
|
-
*
|
|
29
|
-
* Launcher-side flagging is no longer expressed as an operator role —
|
|
30
|
-
* launcher ownership is determined by the launched-record subsystem
|
|
31
|
-
* (spec/2026-05-05-solvernet-creation-and-launch.md §11). Operator config
|
|
32
|
-
* carries only the participation roles.
|
|
33
|
-
*
|
|
34
|
-
* Legacy `role: 'solving' | 'evaluating'` configs are auto-migrated to
|
|
35
|
-
* `roles: [<role>]` by the loader (zod preprocessor on solverNets[*]).
|
|
36
|
-
*/
|
|
37
|
-
roles?: Array<'solving' | 'evaluating'>;
|
|
38
|
-
harness?: string;
|
|
39
|
-
model?: string;
|
|
40
|
-
plugins?: Array<string | {
|
|
41
|
-
name?: string;
|
|
42
|
-
source: string;
|
|
43
|
-
version?: string;
|
|
44
|
-
}>;
|
|
45
|
-
taskGenerator?: {
|
|
46
|
-
enabled?: boolean;
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Default `solverNets` is empty per Decision 5 of
|
|
51
|
-
* spec/2026-05-05-solvernet-creation-and-launch.md — pre-release, no
|
|
52
|
-
* migration burden. Fresh installs no longer seed the `prediction` entry;
|
|
53
|
-
* the operator joins SolverNets through the registry (Task 21's
|
|
54
|
-
* `joinedSolverNets` block).
|
|
55
|
-
*/
|
|
56
|
-
export declare const DEFAULT_SOLVER_NETS: Record<string, DefaultSolverNetConfig>;
|
|
57
18
|
export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
58
19
|
/**
|
|
59
20
|
* Network to connect to.
|
|
@@ -64,19 +25,24 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
64
25
|
*/
|
|
65
26
|
network: z.ZodDefault<z.ZodEnum<["mainnet", "testnet"]>>;
|
|
66
27
|
/**
|
|
67
|
-
* Base RPC endpoint.
|
|
68
|
-
*
|
|
69
|
-
*
|
|
28
|
+
* Base RPC endpoint(s). Accepts either a single URL string or an array of
|
|
29
|
+
* URLs. When an array (or a comma-separated env var) is supplied, the
|
|
30
|
+
* daemon builds a viem `fallback()` chain in slot order (primary first).
|
|
31
|
+
* See `client/src/rpc/transport.ts` for the wrapper. Defaults to the
|
|
32
|
+
* publicnode+sepolia.base.org two-provider chain on testnet and the public
|
|
33
|
+
* `mainnet.base.org` on mainnet. Set explicitly to override.
|
|
34
|
+
*
|
|
35
|
+
* Env: JINN_RPC_URL / BASE_SEPOLIA_RPC_URL / BASE_RPC_URL (comma-separated).
|
|
70
36
|
*/
|
|
71
|
-
rpcUrl: z.ZodOptional<z.ZodString
|
|
72
|
-
archiveRpcUrl: z.ZodOptional<z.ZodString
|
|
37
|
+
rpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
38
|
+
archiveRpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
73
39
|
/**
|
|
74
|
-
* Optional L2 proof/archive RPC endpoint for canonical cross-chain canaries.
|
|
40
|
+
* Optional L2 proof/archive RPC endpoint(s) for canonical cross-chain canaries.
|
|
75
41
|
* The daemon can use its normal rpcUrl for writes while proof construction
|
|
76
42
|
* uses this endpoint for historical eth_getProof at OP dispute-game blocks.
|
|
77
|
-
* Env: JINN_L2_PROOF_RPC_URL.
|
|
43
|
+
* Accepts string or array form (see rpcUrl). Env: JINN_L2_PROOF_RPC_URL.
|
|
78
44
|
*/
|
|
79
|
-
l2ProofRpcUrl: z.ZodOptional<z.ZodString
|
|
45
|
+
l2ProofRpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
80
46
|
/** Earning state directory */
|
|
81
47
|
earningDir: z.ZodDefault<z.ZodString>;
|
|
82
48
|
/** SQLite database path */
|
|
@@ -970,18 +936,19 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
970
936
|
*/
|
|
971
937
|
jinnMviL2DeploymentPath: z.ZodOptional<z.ZodString>;
|
|
972
938
|
/**
|
|
973
|
-
* RPC endpoint for the L1 governance chain (Ethereum / Sepolia) where
|
|
974
|
-
* JinnDistributor lives.
|
|
975
|
-
*
|
|
976
|
-
*
|
|
939
|
+
* RPC endpoint(s) for the L1 governance chain (Ethereum / Sepolia) where
|
|
940
|
+
* the JinnDistributor lives. Accepts string or array form (see rpcUrl) and
|
|
941
|
+
* supports comma-separated env values. Testnet defaults to a public Sepolia
|
|
942
|
+
* RPC; mainnet requires an operator override when L1 submit mode is
|
|
943
|
+
* configured. Env: JINN_ETHEREUM_RPC_URL.
|
|
977
944
|
*/
|
|
978
|
-
ethereumRpcUrl: z.ZodOptional<z.ZodString
|
|
945
|
+
ethereumRpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
979
946
|
/**
|
|
980
|
-
* Optional archive RPC endpoint for the L1 governance chain. Used for
|
|
981
|
-
* historical block lookups when constructing canonical-mode proofs.
|
|
982
|
-
* Env: JINN_ETHEREUM_ARCHIVE_RPC_URL.
|
|
947
|
+
* Optional archive RPC endpoint(s) for the L1 governance chain. Used for
|
|
948
|
+
* historical block lookups when constructing canonical-mode proofs. Accepts
|
|
949
|
+
* string or array form. Env: JINN_ETHEREUM_ARCHIVE_RPC_URL.
|
|
983
950
|
*/
|
|
984
|
-
ethereumArchiveRpcUrl: z.ZodOptional<z.ZodString
|
|
951
|
+
ethereumArchiveRpcUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
985
952
|
/**
|
|
986
953
|
* L1 network used by the cross-chain claim loop. 'sepolia' tracks Base
|
|
987
954
|
* Sepolia testnet; 'ethereum' tracks Base mainnet. Defaults to 'sepolia'
|
|
@@ -1137,97 +1104,7 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1137
1104
|
mode?: "train" | "frozen" | undefined;
|
|
1138
1105
|
}>>;
|
|
1139
1106
|
/**
|
|
1140
|
-
*
|
|
1141
|
-
*
|
|
1142
|
-
* Each entry's `roles` is a non-empty subset of `['solving', 'evaluating']`.
|
|
1143
|
-
* Multiple roles can run concurrently for the same SolverNet; the
|
|
1144
|
-
* protocol-level `disallowSolverSelfEvaluation` flag prevents the operator
|
|
1145
|
-
* from evaluating its own Solutions and the on-chain
|
|
1146
|
-
* TaskActivityCheckerV3 tracks Solution and Verdict counters independently
|
|
1147
|
-
* (additive into `eligibleActivityWeight`).
|
|
1148
|
-
*
|
|
1149
|
-
* Launcher ownership lives in the launched-record subsystem
|
|
1150
|
-
* (spec/2026-05-05-solvernet-creation-and-launch.md §11), not in operator
|
|
1151
|
-
* config — there is no `'launching'` operator role. Legacy entries that
|
|
1152
|
-
* include `'launching'` in `roles` have it stripped by the preprocessor so
|
|
1153
|
-
* older config files keep loading.
|
|
1154
|
-
*
|
|
1155
|
-
* Backwards-compat: a legacy `role: 'solving' | 'evaluating'` field is
|
|
1156
|
-
* auto-promoted to `roles: [<role>]` by the zod preprocessor below so
|
|
1157
|
-
* existing `~/.jinn-client/config.json` files keep loading without an
|
|
1158
|
-
* operator migration step.
|
|
1159
|
-
*/
|
|
1160
|
-
solverNets: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodObject<{
|
|
1161
|
-
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1162
|
-
solverType: z.ZodString;
|
|
1163
|
-
roles: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodEnum<["solving", "evaluating"]>, "many">>, ("solving" | "evaluating")[], ("solving" | "evaluating")[] | undefined>;
|
|
1164
|
-
harness: z.ZodDefault<z.ZodEffects<z.ZodString, string, string>>;
|
|
1165
|
-
model: z.ZodOptional<z.ZodString>;
|
|
1166
|
-
plugins: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
1167
|
-
name: z.ZodOptional<z.ZodString>;
|
|
1168
|
-
source: z.ZodString;
|
|
1169
|
-
version: z.ZodOptional<z.ZodString>;
|
|
1170
|
-
}, "strip", z.ZodTypeAny, {
|
|
1171
|
-
source: string;
|
|
1172
|
-
name?: string | undefined;
|
|
1173
|
-
version?: string | undefined;
|
|
1174
|
-
}, {
|
|
1175
|
-
source: string;
|
|
1176
|
-
name?: string | undefined;
|
|
1177
|
-
version?: string | undefined;
|
|
1178
|
-
}>]>, "many">>;
|
|
1179
|
-
taskGenerator: z.ZodDefault<z.ZodObject<{
|
|
1180
|
-
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1181
|
-
}, "strip", z.ZodTypeAny, {
|
|
1182
|
-
enabled: boolean;
|
|
1183
|
-
}, {
|
|
1184
|
-
enabled?: boolean | undefined;
|
|
1185
|
-
}>>;
|
|
1186
|
-
}, "strip", z.ZodTypeAny, {
|
|
1187
|
-
solverType: string;
|
|
1188
|
-
enabled: boolean;
|
|
1189
|
-
roles: ("solving" | "evaluating")[];
|
|
1190
|
-
harness: string;
|
|
1191
|
-
plugins: (string | {
|
|
1192
|
-
source: string;
|
|
1193
|
-
name?: string | undefined;
|
|
1194
|
-
version?: string | undefined;
|
|
1195
|
-
})[];
|
|
1196
|
-
taskGenerator: {
|
|
1197
|
-
enabled: boolean;
|
|
1198
|
-
};
|
|
1199
|
-
model?: string | undefined;
|
|
1200
|
-
}, {
|
|
1201
|
-
solverType: string;
|
|
1202
|
-
enabled?: boolean | undefined;
|
|
1203
|
-
roles?: ("solving" | "evaluating")[] | undefined;
|
|
1204
|
-
harness?: string | undefined;
|
|
1205
|
-
model?: string | undefined;
|
|
1206
|
-
plugins?: (string | {
|
|
1207
|
-
source: string;
|
|
1208
|
-
name?: string | undefined;
|
|
1209
|
-
version?: string | undefined;
|
|
1210
|
-
})[] | undefined;
|
|
1211
|
-
taskGenerator?: {
|
|
1212
|
-
enabled?: boolean | undefined;
|
|
1213
|
-
} | undefined;
|
|
1214
|
-
}>, {
|
|
1215
|
-
solverType: string;
|
|
1216
|
-
enabled: boolean;
|
|
1217
|
-
roles: ("solving" | "evaluating")[];
|
|
1218
|
-
harness: string;
|
|
1219
|
-
plugins: (string | {
|
|
1220
|
-
source: string;
|
|
1221
|
-
name?: string | undefined;
|
|
1222
|
-
version?: string | undefined;
|
|
1223
|
-
})[];
|
|
1224
|
-
taskGenerator: {
|
|
1225
|
-
enabled: boolean;
|
|
1226
|
-
};
|
|
1227
|
-
model?: string | undefined;
|
|
1228
|
-
}, unknown>>>;
|
|
1229
|
-
/**
|
|
1230
|
-
* Manifest-keyed joined SolverNets (Task 21).
|
|
1107
|
+
* Manifest-keyed joined SolverNets.
|
|
1231
1108
|
*
|
|
1232
1109
|
* Spec: spec/2026-05-05-solvernet-creation-and-launch.md §12.
|
|
1233
1110
|
*
|
|
@@ -1236,10 +1113,10 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1236
1113
|
* (CIDv0 / CIDv1) — the only stable identifier that maps back to a
|
|
1237
1114
|
* launched-instance authority across launchers.
|
|
1238
1115
|
*
|
|
1239
|
-
*
|
|
1240
|
-
*
|
|
1241
|
-
*
|
|
1242
|
-
*
|
|
1116
|
+
* The daemon narrows this block into runtime SolverNet registry entries on
|
|
1117
|
+
* restart. Legacy short-name-keyed `solverNets` blocks on operator config
|
|
1118
|
+
* files are auto-migrated into synthetic `legacy:<short-name>`-keyed
|
|
1119
|
+
* entries at load time (see `migrateLegacySolverNets`).
|
|
1243
1120
|
*/
|
|
1244
1121
|
joinedSolverNets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
1245
1122
|
manifestCid: z.ZodString;
|
|
@@ -1260,28 +1137,28 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1260
1137
|
plugins: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1261
1138
|
disabledDefaultPlugins: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1262
1139
|
}, "strip", z.ZodTypeAny, {
|
|
1140
|
+
manifestCid: string;
|
|
1263
1141
|
roles: ("solver" | "evaluator")[];
|
|
1264
1142
|
plugins: string[];
|
|
1265
|
-
manifestCid: string;
|
|
1266
1143
|
disabledDefaultPlugins: string[];
|
|
1267
1144
|
name?: string | undefined;
|
|
1268
1145
|
harness?: string | undefined;
|
|
1269
|
-
model?: string | undefined;
|
|
1270
1146
|
contract?: {
|
|
1271
1147
|
id: string;
|
|
1272
1148
|
version: string;
|
|
1273
1149
|
} | undefined;
|
|
1150
|
+
model?: string | undefined;
|
|
1274
1151
|
}, {
|
|
1275
|
-
roles: ("solver" | "evaluator")[];
|
|
1276
1152
|
manifestCid: string;
|
|
1153
|
+
roles: ("solver" | "evaluator")[];
|
|
1277
1154
|
name?: string | undefined;
|
|
1278
1155
|
harness?: string | undefined;
|
|
1279
|
-
model?: string | undefined;
|
|
1280
|
-
plugins?: string[] | undefined;
|
|
1281
1156
|
contract?: {
|
|
1282
1157
|
id: string;
|
|
1283
1158
|
version: string;
|
|
1284
1159
|
} | undefined;
|
|
1160
|
+
model?: string | undefined;
|
|
1161
|
+
plugins?: string[] | undefined;
|
|
1285
1162
|
disabledDefaultPlugins?: string[] | undefined;
|
|
1286
1163
|
}>>>;
|
|
1287
1164
|
/**
|
|
@@ -1438,10 +1315,36 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1438
1315
|
* Env: JINN_REPUTATION_ENABLED
|
|
1439
1316
|
*/
|
|
1440
1317
|
reputationEnabled: z.ZodDefault<z.ZodBoolean>;
|
|
1318
|
+
/**
|
|
1319
|
+
* Per-credential daily spend caps (USD). Keys are credential identifiers
|
|
1320
|
+
* (e.g. `'anthropic:api-key'`); values are positive numbers representing
|
|
1321
|
+
* the maximum USD spend per day for that credential.
|
|
1322
|
+
*
|
|
1323
|
+
* `JINN_SPEND_CAP_USD` (env-only, consumed directly by the spend-budget
|
|
1324
|
+
* subsystem in Task 9) is tracked for provenance in TRACKED_ENV_VARS below
|
|
1325
|
+
* but is NOT a config-file field and has no entry in this schema.
|
|
1326
|
+
*/
|
|
1327
|
+
spendCaps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
1328
|
+
/**
|
|
1329
|
+
* Operator-local SolverPlugin trust state.
|
|
1330
|
+
*
|
|
1331
|
+
* `blockedCids` is the list of plug-in CIDs the operator has chosen to
|
|
1332
|
+
* refuse to load — populated by `jinn solver-plugins block <cid>` and read
|
|
1333
|
+
* at daemon startup. The block list complements the on-chain
|
|
1334
|
+
* `giveFeedback(score=0)` write (which is the public-trust signal); the
|
|
1335
|
+
* local list is the operator's own refusal to execute, applied even when
|
|
1336
|
+
* the network write fails. File-managed only — no env override.
|
|
1337
|
+
*
|
|
1338
|
+
* See spec/2026-05-26-117-design.md "Failure modes" and "Local-only effects".
|
|
1339
|
+
*/
|
|
1340
|
+
solverPlugins: z.ZodDefault<z.ZodObject<{
|
|
1341
|
+
blockedCids: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1342
|
+
}, "strip", z.ZodTypeAny, {
|
|
1343
|
+
blockedCids: string[];
|
|
1344
|
+
}, {
|
|
1345
|
+
blockedCids?: string[] | undefined;
|
|
1346
|
+
}>>;
|
|
1441
1347
|
}, "strip", z.ZodTypeAny, {
|
|
1442
|
-
harness: {
|
|
1443
|
-
mode: "train" | "frozen";
|
|
1444
|
-
};
|
|
1445
1348
|
network: "testnet" | "mainnet";
|
|
1446
1349
|
earningDir: string;
|
|
1447
1350
|
dbPath: string;
|
|
@@ -1536,21 +1439,9 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1536
1439
|
stakingMode: "standard" | "self-bond";
|
|
1537
1440
|
targetServices: number;
|
|
1538
1441
|
debug: boolean;
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
roles: ("solving" | "evaluating")[];
|
|
1543
|
-
harness: string;
|
|
1544
|
-
plugins: (string | {
|
|
1545
|
-
source: string;
|
|
1546
|
-
name?: string | undefined;
|
|
1547
|
-
version?: string | undefined;
|
|
1548
|
-
})[];
|
|
1549
|
-
taskGenerator: {
|
|
1550
|
-
enabled: boolean;
|
|
1551
|
-
};
|
|
1552
|
-
model?: string | undefined;
|
|
1553
|
-
}>;
|
|
1442
|
+
harness: {
|
|
1443
|
+
mode: "train" | "frozen";
|
|
1444
|
+
};
|
|
1554
1445
|
captures: {
|
|
1555
1446
|
llmProxy: {
|
|
1556
1447
|
enabled: boolean;
|
|
@@ -1559,9 +1450,12 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1559
1450
|
};
|
|
1560
1451
|
runLegacyMigrations: boolean;
|
|
1561
1452
|
reputationEnabled: boolean;
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1453
|
+
solverPlugins: {
|
|
1454
|
+
blockedCids: string[];
|
|
1455
|
+
};
|
|
1456
|
+
rpcUrl?: string | string[] | undefined;
|
|
1457
|
+
archiveRpcUrl?: string | string[] | undefined;
|
|
1458
|
+
l2ProofRpcUrl?: string | string[] | undefined;
|
|
1565
1459
|
apiBindHost?: string | undefined;
|
|
1566
1460
|
hermesPath?: string | undefined;
|
|
1567
1461
|
hermesModel?: string | undefined;
|
|
@@ -1581,8 +1475,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1581
1475
|
testnetStolasDeploymentPath?: string | undefined;
|
|
1582
1476
|
jinnMviL1DeploymentPath?: string | undefined;
|
|
1583
1477
|
jinnMviL2DeploymentPath?: string | undefined;
|
|
1584
|
-
ethereumRpcUrl?: string | undefined;
|
|
1585
|
-
ethereumArchiveRpcUrl?: string | undefined;
|
|
1478
|
+
ethereumRpcUrl?: string | string[] | undefined;
|
|
1479
|
+
ethereumArchiveRpcUrl?: string | string[] | undefined;
|
|
1586
1480
|
jinnDistributorAddress?: string | undefined;
|
|
1587
1481
|
jinnClaimEmitterAddress?: string | undefined;
|
|
1588
1482
|
jinnMessengerAddress?: string | undefined;
|
|
@@ -1600,17 +1494,17 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1600
1494
|
}[] | undefined;
|
|
1601
1495
|
} | undefined;
|
|
1602
1496
|
joinedSolverNets?: Record<string, {
|
|
1497
|
+
manifestCid: string;
|
|
1603
1498
|
roles: ("solver" | "evaluator")[];
|
|
1604
1499
|
plugins: string[];
|
|
1605
|
-
manifestCid: string;
|
|
1606
1500
|
disabledDefaultPlugins: string[];
|
|
1607
1501
|
name?: string | undefined;
|
|
1608
1502
|
harness?: string | undefined;
|
|
1609
|
-
model?: string | undefined;
|
|
1610
1503
|
contract?: {
|
|
1611
1504
|
id: string;
|
|
1612
1505
|
version: string;
|
|
1613
1506
|
} | undefined;
|
|
1507
|
+
model?: string | undefined;
|
|
1614
1508
|
}> | undefined;
|
|
1615
1509
|
trustedImplSigners?: {
|
|
1616
1510
|
publicKey: string;
|
|
@@ -1631,14 +1525,12 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1631
1525
|
} | undefined;
|
|
1632
1526
|
identityRegistryAddress?: string | undefined;
|
|
1633
1527
|
validationRegistryAddress?: string | undefined;
|
|
1528
|
+
spendCaps?: Record<string, number> | undefined;
|
|
1634
1529
|
}, {
|
|
1635
|
-
harness?: {
|
|
1636
|
-
mode?: "train" | "frozen" | undefined;
|
|
1637
|
-
} | undefined;
|
|
1638
1530
|
network?: "testnet" | "mainnet" | undefined;
|
|
1639
|
-
rpcUrl?: string | undefined;
|
|
1640
|
-
archiveRpcUrl?: string | undefined;
|
|
1641
|
-
l2ProofRpcUrl?: string | undefined;
|
|
1531
|
+
rpcUrl?: string | string[] | undefined;
|
|
1532
|
+
archiveRpcUrl?: string | string[] | undefined;
|
|
1533
|
+
l2ProofRpcUrl?: string | string[] | undefined;
|
|
1642
1534
|
earningDir?: string | undefined;
|
|
1643
1535
|
dbPath?: string | undefined;
|
|
1644
1536
|
pollIntervalMs?: number | undefined;
|
|
@@ -1783,8 +1675,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1783
1675
|
testnetStolasDeploymentPath?: string | undefined;
|
|
1784
1676
|
jinnMviL1DeploymentPath?: string | undefined;
|
|
1785
1677
|
jinnMviL2DeploymentPath?: string | undefined;
|
|
1786
|
-
ethereumRpcUrl?: string | undefined;
|
|
1787
|
-
ethereumArchiveRpcUrl?: string | undefined;
|
|
1678
|
+
ethereumRpcUrl?: string | string[] | undefined;
|
|
1679
|
+
ethereumArchiveRpcUrl?: string | string[] | undefined;
|
|
1788
1680
|
jinnL1Network?: "sepolia" | "ethereum" | undefined;
|
|
1789
1681
|
jinnDistributorAddress?: string | undefined;
|
|
1790
1682
|
jinnClaimEmitterAddress?: string | undefined;
|
|
@@ -1809,18 +1701,20 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1809
1701
|
version?: string | undefined;
|
|
1810
1702
|
}[] | undefined;
|
|
1811
1703
|
} | undefined;
|
|
1812
|
-
|
|
1704
|
+
harness?: {
|
|
1705
|
+
mode?: "train" | "frozen" | undefined;
|
|
1706
|
+
} | undefined;
|
|
1813
1707
|
joinedSolverNets?: Record<string, {
|
|
1814
|
-
roles: ("solver" | "evaluator")[];
|
|
1815
1708
|
manifestCid: string;
|
|
1709
|
+
roles: ("solver" | "evaluator")[];
|
|
1816
1710
|
name?: string | undefined;
|
|
1817
1711
|
harness?: string | undefined;
|
|
1818
|
-
model?: string | undefined;
|
|
1819
|
-
plugins?: string[] | undefined;
|
|
1820
1712
|
contract?: {
|
|
1821
1713
|
id: string;
|
|
1822
1714
|
version: string;
|
|
1823
1715
|
} | undefined;
|
|
1716
|
+
model?: string | undefined;
|
|
1717
|
+
plugins?: string[] | undefined;
|
|
1824
1718
|
disabledDefaultPlugins?: string[] | undefined;
|
|
1825
1719
|
}> | undefined;
|
|
1826
1720
|
trustedImplSigners?: {
|
|
@@ -1850,10 +1744,11 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1850
1744
|
identityRegistryAddress?: string | undefined;
|
|
1851
1745
|
validationRegistryAddress?: string | undefined;
|
|
1852
1746
|
reputationEnabled?: boolean | undefined;
|
|
1747
|
+
spendCaps?: Record<string, number> | undefined;
|
|
1748
|
+
solverPlugins?: {
|
|
1749
|
+
blockedCids?: string[] | undefined;
|
|
1750
|
+
} | undefined;
|
|
1853
1751
|
}>, {
|
|
1854
|
-
harness: {
|
|
1855
|
-
mode: "train" | "frozen";
|
|
1856
|
-
};
|
|
1857
1752
|
network: "testnet" | "mainnet";
|
|
1858
1753
|
earningDir: string;
|
|
1859
1754
|
dbPath: string;
|
|
@@ -1948,21 +1843,9 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1948
1843
|
stakingMode: "standard" | "self-bond";
|
|
1949
1844
|
targetServices: number;
|
|
1950
1845
|
debug: boolean;
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
roles: ("solving" | "evaluating")[];
|
|
1955
|
-
harness: string;
|
|
1956
|
-
plugins: (string | {
|
|
1957
|
-
source: string;
|
|
1958
|
-
name?: string | undefined;
|
|
1959
|
-
version?: string | undefined;
|
|
1960
|
-
})[];
|
|
1961
|
-
taskGenerator: {
|
|
1962
|
-
enabled: boolean;
|
|
1963
|
-
};
|
|
1964
|
-
model?: string | undefined;
|
|
1965
|
-
}>;
|
|
1846
|
+
harness: {
|
|
1847
|
+
mode: "train" | "frozen";
|
|
1848
|
+
};
|
|
1966
1849
|
captures: {
|
|
1967
1850
|
llmProxy: {
|
|
1968
1851
|
enabled: boolean;
|
|
@@ -1971,9 +1854,12 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1971
1854
|
};
|
|
1972
1855
|
runLegacyMigrations: boolean;
|
|
1973
1856
|
reputationEnabled: boolean;
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1857
|
+
solverPlugins: {
|
|
1858
|
+
blockedCids: string[];
|
|
1859
|
+
};
|
|
1860
|
+
rpcUrl?: string | string[] | undefined;
|
|
1861
|
+
archiveRpcUrl?: string | string[] | undefined;
|
|
1862
|
+
l2ProofRpcUrl?: string | string[] | undefined;
|
|
1977
1863
|
apiBindHost?: string | undefined;
|
|
1978
1864
|
hermesPath?: string | undefined;
|
|
1979
1865
|
hermesModel?: string | undefined;
|
|
@@ -1993,8 +1879,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1993
1879
|
testnetStolasDeploymentPath?: string | undefined;
|
|
1994
1880
|
jinnMviL1DeploymentPath?: string | undefined;
|
|
1995
1881
|
jinnMviL2DeploymentPath?: string | undefined;
|
|
1996
|
-
ethereumRpcUrl?: string | undefined;
|
|
1997
|
-
ethereumArchiveRpcUrl?: string | undefined;
|
|
1882
|
+
ethereumRpcUrl?: string | string[] | undefined;
|
|
1883
|
+
ethereumArchiveRpcUrl?: string | string[] | undefined;
|
|
1998
1884
|
jinnDistributorAddress?: string | undefined;
|
|
1999
1885
|
jinnClaimEmitterAddress?: string | undefined;
|
|
2000
1886
|
jinnMessengerAddress?: string | undefined;
|
|
@@ -2012,17 +1898,17 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2012
1898
|
}[] | undefined;
|
|
2013
1899
|
} | undefined;
|
|
2014
1900
|
joinedSolverNets?: Record<string, {
|
|
1901
|
+
manifestCid: string;
|
|
2015
1902
|
roles: ("solver" | "evaluator")[];
|
|
2016
1903
|
plugins: string[];
|
|
2017
|
-
manifestCid: string;
|
|
2018
1904
|
disabledDefaultPlugins: string[];
|
|
2019
1905
|
name?: string | undefined;
|
|
2020
1906
|
harness?: string | undefined;
|
|
2021
|
-
model?: string | undefined;
|
|
2022
1907
|
contract?: {
|
|
2023
1908
|
id: string;
|
|
2024
1909
|
version: string;
|
|
2025
1910
|
} | undefined;
|
|
1911
|
+
model?: string | undefined;
|
|
2026
1912
|
}> | undefined;
|
|
2027
1913
|
trustedImplSigners?: {
|
|
2028
1914
|
publicKey: string;
|
|
@@ -2043,14 +1929,12 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2043
1929
|
} | undefined;
|
|
2044
1930
|
identityRegistryAddress?: string | undefined;
|
|
2045
1931
|
validationRegistryAddress?: string | undefined;
|
|
1932
|
+
spendCaps?: Record<string, number> | undefined;
|
|
2046
1933
|
}, {
|
|
2047
|
-
harness?: {
|
|
2048
|
-
mode?: "train" | "frozen" | undefined;
|
|
2049
|
-
} | undefined;
|
|
2050
1934
|
network?: "testnet" | "mainnet" | undefined;
|
|
2051
|
-
rpcUrl?: string | undefined;
|
|
2052
|
-
archiveRpcUrl?: string | undefined;
|
|
2053
|
-
l2ProofRpcUrl?: string | undefined;
|
|
1935
|
+
rpcUrl?: string | string[] | undefined;
|
|
1936
|
+
archiveRpcUrl?: string | string[] | undefined;
|
|
1937
|
+
l2ProofRpcUrl?: string | string[] | undefined;
|
|
2054
1938
|
earningDir?: string | undefined;
|
|
2055
1939
|
dbPath?: string | undefined;
|
|
2056
1940
|
pollIntervalMs?: number | undefined;
|
|
@@ -2195,8 +2079,8 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2195
2079
|
testnetStolasDeploymentPath?: string | undefined;
|
|
2196
2080
|
jinnMviL1DeploymentPath?: string | undefined;
|
|
2197
2081
|
jinnMviL2DeploymentPath?: string | undefined;
|
|
2198
|
-
ethereumRpcUrl?: string | undefined;
|
|
2199
|
-
ethereumArchiveRpcUrl?: string | undefined;
|
|
2082
|
+
ethereumRpcUrl?: string | string[] | undefined;
|
|
2083
|
+
ethereumArchiveRpcUrl?: string | string[] | undefined;
|
|
2200
2084
|
jinnL1Network?: "sepolia" | "ethereum" | undefined;
|
|
2201
2085
|
jinnDistributorAddress?: string | undefined;
|
|
2202
2086
|
jinnClaimEmitterAddress?: string | undefined;
|
|
@@ -2221,18 +2105,20 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2221
2105
|
version?: string | undefined;
|
|
2222
2106
|
}[] | undefined;
|
|
2223
2107
|
} | undefined;
|
|
2224
|
-
|
|
2108
|
+
harness?: {
|
|
2109
|
+
mode?: "train" | "frozen" | undefined;
|
|
2110
|
+
} | undefined;
|
|
2225
2111
|
joinedSolverNets?: Record<string, {
|
|
2226
|
-
roles: ("solver" | "evaluator")[];
|
|
2227
2112
|
manifestCid: string;
|
|
2113
|
+
roles: ("solver" | "evaluator")[];
|
|
2228
2114
|
name?: string | undefined;
|
|
2229
2115
|
harness?: string | undefined;
|
|
2230
|
-
model?: string | undefined;
|
|
2231
|
-
plugins?: string[] | undefined;
|
|
2232
2116
|
contract?: {
|
|
2233
2117
|
id: string;
|
|
2234
2118
|
version: string;
|
|
2235
2119
|
} | undefined;
|
|
2120
|
+
model?: string | undefined;
|
|
2121
|
+
plugins?: string[] | undefined;
|
|
2236
2122
|
disabledDefaultPlugins?: string[] | undefined;
|
|
2237
2123
|
}> | undefined;
|
|
2238
2124
|
trustedImplSigners?: {
|
|
@@ -2262,10 +2148,33 @@ export declare const JinnConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2262
2148
|
identityRegistryAddress?: string | undefined;
|
|
2263
2149
|
validationRegistryAddress?: string | undefined;
|
|
2264
2150
|
reputationEnabled?: boolean | undefined;
|
|
2151
|
+
spendCaps?: Record<string, number> | undefined;
|
|
2152
|
+
solverPlugins?: {
|
|
2153
|
+
blockedCids?: string[] | undefined;
|
|
2154
|
+
} | undefined;
|
|
2265
2155
|
}>;
|
|
2266
|
-
/**
|
|
2267
|
-
|
|
2156
|
+
/**
|
|
2157
|
+
* JinnConfig with rpcUrl guaranteed to be resolved (never undefined) and tasks
|
|
2158
|
+
* with id always assigned.
|
|
2159
|
+
*
|
|
2160
|
+
* `rpcUrl` is the head of the fallback chain (the slot-0 URL) and is kept as
|
|
2161
|
+
* a `string` for display continuity — the ~30 places that log/display
|
|
2162
|
+
* `config.rpcUrl` (provenance, error formatting, `[main] daemon starting on …`)
|
|
2163
|
+
* keep working unchanged. The full chain lives in `rpcUrls: readonly string[]`,
|
|
2164
|
+
* which is what `buildFallbackTransport()` consumes. Same shape for the L1
|
|
2165
|
+
* (ethereum) and optional archive/proof variants.
|
|
2166
|
+
*/
|
|
2167
|
+
export type JinnConfig = Omit<z.infer<typeof JinnConfigSchema>, 'rpcUrl' | 'archiveRpcUrl' | 'l2ProofRpcUrl' | 'ethereumRpcUrl' | 'ethereumArchiveRpcUrl' | 'tasks' | 'engine'> & {
|
|
2268
2168
|
rpcUrl: string;
|
|
2169
|
+
rpcUrls: readonly string[];
|
|
2170
|
+
archiveRpcUrl?: string;
|
|
2171
|
+
archiveRpcUrls?: readonly string[];
|
|
2172
|
+
l2ProofRpcUrl?: string;
|
|
2173
|
+
l2ProofRpcUrls?: readonly string[];
|
|
2174
|
+
ethereumRpcUrl?: string;
|
|
2175
|
+
ethereumRpcUrls?: readonly string[];
|
|
2176
|
+
ethereumArchiveRpcUrl?: string;
|
|
2177
|
+
ethereumArchiveRpcUrls?: readonly string[];
|
|
2269
2178
|
tasks: Task[];
|
|
2270
2179
|
engine: {
|
|
2271
2180
|
workingDirRoot: string;
|
|
@@ -2282,12 +2191,40 @@ export declare const DEFAULT_CONFIG_PATH: string;
|
|
|
2282
2191
|
*/
|
|
2283
2192
|
export declare const DEFAULT_TESTNET_DISCOVERY_URL = "https://jinn-indexer-production.up.railway.app";
|
|
2284
2193
|
export declare const DEFAULT_TESTNET_ETHEREUM_RPC_URL = "https://ethereum-sepolia-rpc.publicnode.com";
|
|
2194
|
+
/**
|
|
2195
|
+
* Default fallback chain for the L2 measurement chain (Base Sepolia) on
|
|
2196
|
+
* testnet. Per AC2 of issue #592:
|
|
2197
|
+
* slot 0 — `https://base-sepolia.publicnode.com` (no-auth, 50k-block
|
|
2198
|
+
* getLogs cap, no shared-quota cliff).
|
|
2199
|
+
* slot 1 — `https://sepolia.base.org` (free public Coinbase endpoint,
|
|
2200
|
+
* 2k-block cap; last-resort backup).
|
|
2201
|
+
* Operators are encouraged to prepend a paid primary key (Alchemy, Tenderly,
|
|
2202
|
+
* etc.) via `rpcUrl` config or `JINN_RPC_URL` / `BASE_SEPOLIA_RPC_URL` env.
|
|
2203
|
+
*/
|
|
2204
|
+
export declare const DEFAULT_TESTNET_RPC_URLS: readonly string[];
|
|
2285
2205
|
export type ConfigLoadErrorCode = 'config_file_not_found' | 'config_json_invalid' | 'tasks_file_not_found' | 'tasks_json_invalid' | 'config_invalid';
|
|
2286
2206
|
export declare class ConfigLoadError extends Error {
|
|
2287
2207
|
readonly code: ConfigLoadErrorCode;
|
|
2288
2208
|
readonly details?: Record<string, unknown>;
|
|
2289
2209
|
constructor(code: ConfigLoadErrorCode, message: string, details?: Record<string, unknown>);
|
|
2290
2210
|
}
|
|
2211
|
+
/**
|
|
2212
|
+
* Translate any legacy short-name-keyed `solverNets` block on the raw parsed
|
|
2213
|
+
* config into manifest-keyed `joinedSolverNets` entries with synthetic
|
|
2214
|
+
* `legacy:<short-name>` keys.
|
|
2215
|
+
*
|
|
2216
|
+
* This is the auto-migration path for operators upgrading past issue #421.
|
|
2217
|
+
* The runtime claim filter remains manifest-digest gated, so synthetic-keyed
|
|
2218
|
+
* entries don't change task eligibility — they exist purely so the diagnostic
|
|
2219
|
+
* surfaces (Overview SOLVING-ON eyebrow, prediction-operator-status) keep
|
|
2220
|
+
* showing the operator's previous SolverNets until they re-join via the SPA.
|
|
2221
|
+
*
|
|
2222
|
+
* Returns the number of legacy entries migrated. Idempotent — calling on an
|
|
2223
|
+
* already-migrated raw config is a no-op.
|
|
2224
|
+
*
|
|
2225
|
+
* @param raw — the JSON-parsed config file contents (mutated in place).
|
|
2226
|
+
*/
|
|
2227
|
+
export declare function migrateLegacySolverNets(raw: Record<string, unknown>): number;
|
|
2291
2228
|
/**
|
|
2292
2229
|
* Load config with resolution: env > config file > defaults.
|
|
2293
2230
|
*
|