@jinn-network/client 0.1.7 → 0.1.8-canary.0c159d7e
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.d.ts +19 -1
- package/dist/adapters/mech/adapter.js +130 -14
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +22 -1
- package/dist/adapters/mech/contracts.js +34 -24
- package/dist/adapters/mech/contracts.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/agent/operator-claude.js +8 -0
- package/dist/agent/operator-claude.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 +22 -5
- package/dist/api/codex-doctor-endpoint.js +136 -17
- package/dist/api/codex-doctor-endpoint.js.map +1 -1
- package/dist/api/debug-report-endpoint.d.ts +27 -0
- package/dist/api/debug-report-endpoint.js +157 -0
- package/dist/api/debug-report-endpoint.js.map +1 -0
- package/dist/api/discovery-endpoint.d.ts +1 -0
- package/dist/api/discovery-endpoint.js +24 -0
- package/dist/api/discovery-endpoint.js.map +1 -1
- package/dist/api/gather-status.d.ts +33 -0
- package/dist/api/gather-status.js +211 -26
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/hermes-doctor-endpoint.d.ts +15 -7
- package/dist/api/hermes-doctor-endpoint.js +56 -19
- package/dist/api/hermes-doctor-endpoint.js.map +1 -1
- package/dist/api/launcher-status.d.ts +4 -2
- 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/portfolio-v0-build.d.ts +7 -1
- package/dist/api/portfolio-v0-build.js +6 -2
- package/dist/api/portfolio-v0-build.js.map +1 -1
- package/dist/api/prediction-v1-build.d.ts +6 -0
- package/dist/api/prediction-v1-build.js +3 -1
- package/dist/api/prediction-v1-build.js.map +1 -1
- package/dist/api/server.d.ts +17 -0
- package/dist/api/server.js +40 -1
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +0 -9
- package/dist/api/setup-endpoints.js +11 -153
- package/dist/api/setup-endpoints.js.map +1 -1
- package/dist/api/solvernets-endpoints.js +30 -63
- package/dist/api/solvernets-endpoints.js.map +1 -1
- package/dist/api/status-build.d.ts +115 -2
- package/dist/api/status-build.js +47 -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/api/task-runs-build.d.ts +8 -0
- package/dist/api/task-runs-build.js +5 -1
- package/dist/api/task-runs-build.js.map +1 -1
- 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/chain-read-errors.d.ts +12 -0
- package/dist/chain-read-errors.js +26 -1
- package/dist/chain-read-errors.js.map +1 -1
- package/dist/cli/commands/codedigest-revert-check.d.ts +33 -0
- package/dist/cli/commands/codedigest-revert-check.js +249 -0
- package/dist/cli/commands/codedigest-revert-check.js.map +1 -0
- package/dist/cli/commands/solver-nets.d.ts +1 -0
- package/dist/cli/commands/solver-nets.js +177 -22
- 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/index.js +2 -0
- package/dist/cli/index.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 +183 -232
- package/dist/config.js +232 -107
- package/dist/config.js.map +1 -1
- package/dist/daemon/ai-units-gate.d.ts +54 -0
- package/dist/daemon/ai-units-gate.js +82 -0
- package/dist/daemon/ai-units-gate.js.map +1 -0
- package/dist/daemon/creator.js +13 -0
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +10 -0
- package/dist/daemon/daemon.js +203 -30
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/eviction-loop.d.ts +7 -0
- package/dist/daemon/eviction-loop.js +16 -0
- package/dist/daemon/eviction-loop.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/jinn-claim-loop.js +22 -4
- package/dist/daemon/jinn-claim-loop.js.map +1 -1
- 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-Bwn1qan1.js +351 -0
- package/dist/dashboard/assets/index-CzKxvMcU.css +32 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/discovery/http.js +411 -2
- package/dist/discovery/http.js.map +1 -1
- package/dist/discovery/onchain.js +123 -5
- package/dist/discovery/onchain.js.map +1 -1
- package/dist/discovery/types.d.ts +202 -0
- package/dist/discovery/types.js +40 -0
- package/dist/discovery/types.js.map +1 -1
- package/dist/discovery/with-fallback.js +34 -0
- package/dist/discovery/with-fallback.js.map +1 -1
- package/dist/earning/bootstrap.d.ts +25 -3
- package/dist/earning/bootstrap.js +69 -15
- 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 +38 -11
- 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/cost-estimates.d.ts +10 -31
- package/dist/harnesses/cost-estimates.js +11 -43
- package/dist/harnesses/cost-estimates.js.map +1 -1
- package/dist/harnesses/engine/engine.d.ts +37 -4
- package/dist/harnesses/engine/engine.js +138 -17
- package/dist/harnesses/engine/engine.js.map +1 -1
- package/dist/harnesses/engine/persistence.d.ts +21 -4
- package/dist/harnesses/engine/persistence.js +43 -6
- package/dist/harnesses/engine/persistence.js.map +1 -1
- package/dist/harnesses/engine/state.d.ts +9 -0
- package/dist/harnesses/engine/state.js +23 -10
- package/dist/harnesses/engine/state.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/bootstrap.js +4 -2
- package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/config-builder.d.ts +1 -1
- package/dist/harnesses/impls/hermes-agent/config-builder.js +4 -2
- package/dist/harnesses/impls/hermes-agent/config-builder.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/harness.d.ts +14 -0
- package/dist/harnesses/impls/hermes-agent/harness.js +16 -2
- package/dist/harnesses/impls/hermes-agent/harness.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/claude-code.d.ts +17 -0
- package/dist/harnesses/impls/learner/adapters/claude-code.js +113 -14
- package/dist/harnesses/impls/learner/adapters/claude-code.js.map +1 -1
- package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +9 -0
- package/dist/harnesses/impls/learner/adapters/codex-code.js +30 -8
- package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
- package/dist/harnesses/impls/learner/harness.d.ts +24 -0
- package/dist/harnesses/impls/learner/harness.js +27 -3
- package/dist/harnesses/impls/learner/harness.js.map +1 -1
- package/dist/harnesses/impls/learner/harvest.d.ts +1 -1
- package/dist/harnesses/impls/learner/harvest.js +23 -5
- package/dist/harnesses/impls/learner/harvest.js.map +1 -1
- package/dist/harnesses/impls/learner/restoration-patch.d.ts +2 -2
- package/dist/harnesses/impls/learner/restoration-patch.js +25 -6
- package/dist/harnesses/impls/learner/restoration-patch.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +21 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.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/learner/revert-decision.d.ts +59 -0
- package/dist/learner/revert-decision.js +53 -0
- package/dist/learner/revert-decision.js.map +1 -0
- package/dist/learner/revert-stats.d.ts +24 -0
- package/dist/learner/revert-stats.js +44 -0
- package/dist/learner/revert-stats.js.map +1 -0
- package/dist/main.js +178 -104
- package/dist/main.js.map +1 -1
- package/dist/mcp/get-codedigest-reward.d.ts +13 -0
- package/dist/mcp/get-codedigest-reward.js +23 -0
- package/dist/mcp/get-codedigest-reward.js.map +1 -0
- package/dist/mcp/server.js +23 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/observability/debug-report-assemble.d.ts +43 -0
- package/dist/observability/debug-report-assemble.js +80 -0
- package/dist/observability/debug-report-assemble.js.map +1 -0
- package/dist/observability/emit-event.d.ts +9 -2
- package/dist/observability/emit-event.js +36 -2
- package/dist/observability/emit-event.js.map +1 -1
- package/dist/observability/file-logger.d.ts +69 -0
- package/dist/observability/file-logger.js +177 -0
- package/dist/observability/file-logger.js.map +1 -0
- package/dist/observability/redact-secrets.d.ts +65 -0
- package/dist/observability/redact-secrets.js +300 -0
- package/dist/observability/redact-secrets.js.map +1 -0
- package/dist/observability/tar.d.ts +30 -0
- package/dist/observability/tar.js +102 -0
- package/dist/observability/tar.js.map +1 -0
- package/dist/plugins/learner/skills/learn/consolidator-prompt.md +18 -1
- package/dist/plugins/learner/skills/learn/promoter-prompt.md +72 -1
- package/dist/preflight/pidfile-liveness.d.ts +44 -0
- package/dist/preflight/pidfile-liveness.js +103 -0
- package/dist/preflight/pidfile-liveness.js.map +1 -0
- 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/scripts/swe-rebench-v2-pytest-missing.json +16 -0
- 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-state.d.ts +15 -0
- package/dist/solver-types/_swe-rebench-v2-state.js +19 -0
- package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +116 -2
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js +296 -21
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2-auto.d.ts +20 -11
- package/dist/solver-types/swe-rebench-v2-auto.js +64 -19
- package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2.d.ts +8 -2
- package/dist/solver-types/swe-rebench-v2.js +127 -11
- package/dist/solver-types/swe-rebench-v2.js.map +1 -1
- package/dist/solvernets/daemon-init.d.ts +1 -1
- package/dist/solvernets/daemon-init.js +19 -4
- package/dist/solvernets/daemon-init.js.map +1 -1
- package/dist/solvernets/launched-record-dispatcher.d.ts +4 -0
- package/dist/solvernets/launched-record-dispatcher.js +10 -4
- package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
- package/dist/solvernets/registry-client-erc8004.js +11 -0
- package/dist/solvernets/registry-client-erc8004.js.map +1 -1
- package/dist/solvernets/store.d.ts +2 -2
- package/dist/spend/ai-units-config.d.ts +39 -0
- package/dist/spend/ai-units-config.js +28 -0
- package/dist/spend/ai-units-config.js.map +1 -0
- package/dist/spend/ai-units.d.ts +89 -0
- package/dist/spend/ai-units.js +156 -0
- package/dist/spend/ai-units.js.map +1 -0
- package/dist/spend/cost-surface-status.d.ts +12 -0
- package/dist/spend/cost-surface-status.js +24 -0
- package/dist/spend/cost-surface-status.js.map +1 -0
- package/dist/spend/credential.d.ts +39 -0
- package/dist/spend/credential.js +71 -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 +36 -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 +101 -0
- package/dist/store/store.js +304 -4
- package/dist/store/store.js.map +1 -1
- package/dist/trajectory/transcript-parsers/codex-session.d.ts +12 -6
- package/dist/trajectory/transcript-parsers/codex-session.js +114 -13
- package/dist/trajectory/transcript-parsers/codex-session.js.map +1 -1
- package/dist/trajectory/transcript-parsers/types.d.ts +8 -8
- package/dist/trajectory/transcript-session-dirs.d.ts +18 -0
- package/dist/trajectory/transcript-session-dirs.js +85 -0
- package/dist/trajectory/transcript-session-dirs.js.map +1 -0
- package/dist/trajectory/transcript-watcher.d.ts +20 -1
- package/dist/trajectory/transcript-watcher.js +108 -32
- package/dist/trajectory/transcript-watcher.js.map +1 -1
- package/dist/tx-retry.d.ts +25 -0
- package/dist/tx-retry.js +95 -7
- package/dist/tx-retry.js.map +1 -1
- package/dist/types/payloads/portfolio-v0.d.ts +3 -3
- package/dist/types/payloads/prediction-apy-v0.d.ts +3 -3
- package/dist/types/payloads/prediction-v0.d.ts +12 -12
- package/package.json +11 -3
- package/plugins/learner/skills/learn/consolidator-prompt.md +18 -1
- package/plugins/learner/skills/learn/promoter-prompt.md +72 -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 +81 -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
package/dist/discovery/types.js
CHANGED
|
@@ -9,6 +9,46 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Spec: spec/2026-05-11-discovery-api-and-shared-indexer.md §5.
|
|
11
11
|
*/
|
|
12
|
+
/**
|
|
13
|
+
* Block-window thresholds for `getTaskPostCounts`, from Base's ~2s blocktime:
|
|
14
|
+
* 1h≈1800, 6h≈10800, 24h≈43200 blocks back from the window head. Shared by the
|
|
15
|
+
* HTTP and on-chain backings so they bucket identically. The windows nest
|
|
16
|
+
* (h1 ⊆ h6 ⊆ h24); the 24h figure also bounds the on-chain scan range.
|
|
17
|
+
*/
|
|
18
|
+
export const TASK_POST_WINDOW_BLOCKS = { h1: 1_800, h6: 10_800, h24: 43_200 };
|
|
19
|
+
/**
|
|
20
|
+
* Bucket a stream of TaskCreated events into chain-wide + per-cid
|
|
21
|
+
* `TaskPostCounts`, shared by both DiscoveryAPI backings. `events` carry a
|
|
22
|
+
* `block` (number) and lowercased manifest `digest`; `cidByDigest` maps each
|
|
23
|
+
* requested digest to its cid. Counts nest (h1 ⊆ h6 ⊆ h24); events older than
|
|
24
|
+
* the 24h cut are ignored.
|
|
25
|
+
*/
|
|
26
|
+
export function bucketTaskPostCounts(windowEndBlock, windowEndTs, events, cidByDigest) {
|
|
27
|
+
const h1Cut = windowEndBlock - TASK_POST_WINDOW_BLOCKS.h1;
|
|
28
|
+
const h6Cut = windowEndBlock - TASK_POST_WINDOW_BLOCKS.h6;
|
|
29
|
+
const h24Cut = windowEndBlock - TASK_POST_WINDOW_BLOCKS.h24;
|
|
30
|
+
const blank = () => ({ h1: 0, h6: 0, h24: 0, windowEndBlock, windowEndTs });
|
|
31
|
+
const chain = blank();
|
|
32
|
+
const byCid = {};
|
|
33
|
+
for (const cid of cidByDigest.values())
|
|
34
|
+
byCid[cid] = blank();
|
|
35
|
+
const bucket = (target, block) => {
|
|
36
|
+
if (block < h24Cut)
|
|
37
|
+
return;
|
|
38
|
+
target.h24 += 1;
|
|
39
|
+
if (block >= h6Cut)
|
|
40
|
+
target.h6 += 1;
|
|
41
|
+
if (block >= h1Cut)
|
|
42
|
+
target.h1 += 1;
|
|
43
|
+
};
|
|
44
|
+
for (const e of events) {
|
|
45
|
+
bucket(chain, e.block);
|
|
46
|
+
const cid = cidByDigest.get(e.digest);
|
|
47
|
+
if (cid)
|
|
48
|
+
bucket(byCid[cid], e.block);
|
|
49
|
+
}
|
|
50
|
+
return { chain, byCid };
|
|
51
|
+
}
|
|
12
52
|
export class DiscoveryUnavailableError extends Error {
|
|
13
53
|
cause;
|
|
14
54
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/discovery/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/discovery/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA0LH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAW,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,cAAsB,EACtB,WAAmB,EACnB,MAAgD,EAChD,WAAgC;IAEhC,MAAM,KAAK,GAAG,cAAc,GAAG,uBAAuB,CAAC,EAAE,CAAC;IAC1D,MAAM,KAAK,GAAG,cAAc,GAAG,uBAAuB,CAAC,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAG,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC;IAE5D,MAAM,KAAK,GAAG,GAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC;IACtB,MAAM,KAAK,GAAmC,EAAE,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC;IAE7D,MAAM,MAAM,GAAG,CAAC,MAAsB,EAAE,KAAa,EAAQ,EAAE;QAC7D,IAAI,KAAK,GAAG,MAAM;YAAE,OAAO;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QAChB,IAAI,KAAK,IAAI,KAAK;YAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,IAAI,KAAK;YAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,GAAG;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAiRD,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAChC,KAAK,CAAW;IAClC;;;;OAIG;IACM,IAAI,CAA4B;IAEzC,YAAY,OAAe,EAAE,KAAe,EAAE,IAA+B;QAC3E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -167,6 +167,40 @@ export function withFallback(primary, floor, opts = {}) {
|
|
|
167
167
|
listBuilderArtifacts(args) {
|
|
168
168
|
return dispatch(() => primary.listBuilderArtifacts(args), () => floor.listBuilderArtifacts(args));
|
|
169
169
|
},
|
|
170
|
+
getInstanceSuccessCounts(args) {
|
|
171
|
+
// Never fall through to the floor for this method — an empty Map from
|
|
172
|
+
// the floor is indistinguishable from "all instances have 0 successes",
|
|
173
|
+
// which is the under-count bug this method was introduced to fix (#669).
|
|
174
|
+
// If the primary is degraded, propagate the error so the launcher aborts
|
|
175
|
+
// its tick rather than silently posting against local-only counters.
|
|
176
|
+
// The DiscoveryAPI.getInstanceSuccessCounts JSDoc encodes this contract
|
|
177
|
+
// ("callers MUST NOT silently fall through to local-only counts").
|
|
178
|
+
return primary.getInstanceSuccessCounts(args);
|
|
179
|
+
},
|
|
180
|
+
getCodeDigestRewards(args) {
|
|
181
|
+
// Never fall through to the floor — an empty array from the floor is
|
|
182
|
+
// indistinguishable from "no successes", the exact failure mode #764's
|
|
183
|
+
// revert logic must avoid. Propagate the error so the Consolidator skips
|
|
184
|
+
// reverts on degraded data (substrate-incident policy; mirrors #669).
|
|
185
|
+
return primary.getCodeDigestRewards(args);
|
|
186
|
+
},
|
|
187
|
+
getInstanceClaimCounts(args) {
|
|
188
|
+
// Never fall through to the floor for this method — a *successful* empty
|
|
189
|
+
// Map from the floor is indistinguishable from "every task has 0 consumed
|
|
190
|
+
// slots", so on a real outage it would mask exhaustion: exhausted
|
|
191
|
+
// postings would classify `live`, their reposts would be suppressed, and
|
|
192
|
+
// the SolverNet would under-serve N (#802, mirroring the #669 contract on
|
|
193
|
+
// getInstanceSuccessCounts). Propagate the error so the launcher aborts
|
|
194
|
+
// its tick rather than treating absent data as truth.
|
|
195
|
+
return primary.getInstanceClaimCounts(args);
|
|
196
|
+
},
|
|
197
|
+
getTaskPostCounts(args) {
|
|
198
|
+
// Supply signal (not a correctness gate): fall through to the floor on an
|
|
199
|
+
// indexer outage like getSolverNetOperatorCount. The on-chain floor
|
|
200
|
+
// reconstructs the windowed counts directly from TaskCreated logs, so a
|
|
201
|
+
// floor result is meaningful (unlike the abort-on-outage methods above).
|
|
202
|
+
return dispatch(() => primary.getTaskPostCounts(args), () => floor.getTaskPostCounts(args));
|
|
203
|
+
},
|
|
170
204
|
};
|
|
171
205
|
}
|
|
172
206
|
//# sourceMappingURL=with-fallback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with-fallback.js","sourceRoot":"","sources":["../../src/discovery/with-fallback.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"with-fallback.js","sourceRoot":"","sources":["../../src/discovery/with-fallback.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Phase 1 (master): generate mnemonic → fund master EOA
|
|
5
5
|
* Phase 2 (per-service): derive agent → stake → deploy mech
|
|
6
6
|
*/
|
|
7
|
+
import { type Hex } from 'viem';
|
|
7
8
|
import type { FleetState, FleetBootstrapResult, StakingMode } from './types.js';
|
|
8
9
|
import { requestTestnetFunding } from './faucet.js';
|
|
9
10
|
import { type JinnOnchainNetwork } from './viem-clients.js';
|
|
@@ -132,8 +133,9 @@ export interface FleetBootstrapperOptions {
|
|
|
132
133
|
/** Optional Safe ETH target override (wei). */
|
|
133
134
|
minSafeEthWei?: string;
|
|
134
135
|
/**
|
|
135
|
-
*
|
|
136
|
-
*
|
|
136
|
+
* Daemon poll interval. Currently unused by the master-daily-estimate path
|
|
137
|
+
* (the poll-based blend was removed in #288); kept on the options bag so
|
|
138
|
+
* existing callers compile unchanged.
|
|
137
139
|
*/
|
|
138
140
|
pollIntervalMs?: number;
|
|
139
141
|
/**
|
|
@@ -209,7 +211,11 @@ export declare class FleetBootstrapper {
|
|
|
209
211
|
*/
|
|
210
212
|
private bindAgentWalletWithRetry;
|
|
211
213
|
/**
|
|
212
|
-
* Conservative daily master gas (wei)
|
|
214
|
+
* Conservative daily master gas (wei). Returns the floor; operators who
|
|
215
|
+
* want a more aggressive estimate can still set `JINN_MASTER_ETH_DAILY_WEI`.
|
|
216
|
+
* See DEFAULT_MASTER_ETH_DAILY_WEI for rationale (#288). The
|
|
217
|
+
* `pollIntervalMs` parameter is vestigial since the poll-based blend was
|
|
218
|
+
* removed; kept so the constructor call site stays unchanged.
|
|
213
219
|
*/
|
|
214
220
|
private estimateMasterDailyGasWei;
|
|
215
221
|
/**
|
|
@@ -366,6 +372,22 @@ export interface RecoverEvictedServiceOptions {
|
|
|
366
372
|
chain: JinnOnchainNetwork;
|
|
367
373
|
mnemonic: string;
|
|
368
374
|
}
|
|
375
|
+
/**
|
|
376
|
+
* Inspect a mined reStake receipt and log the correct outcome (#916).
|
|
377
|
+
*
|
|
378
|
+
* Pure + I/O-free so it can be unit-tested without a chain client. On a
|
|
379
|
+
* `success` receipt it logs `reStake confirmed`. On a `reverted` receipt it
|
|
380
|
+
* logs `reStake reverted` at error level (with the decoded reason if the
|
|
381
|
+
* caller could obtain one) and throws so the recovery attempt re-queues.
|
|
382
|
+
*/
|
|
383
|
+
export declare function handleReStakeReceipt(args: {
|
|
384
|
+
receipt: {
|
|
385
|
+
status: 'success' | 'reverted';
|
|
386
|
+
};
|
|
387
|
+
serviceDisplayIndex: number;
|
|
388
|
+
reStakeHash: Hex;
|
|
389
|
+
revertReason?: string;
|
|
390
|
+
}): void;
|
|
369
391
|
/**
|
|
370
392
|
* Re-stake an evicted service by calling `distributor.reStake(stakingProxy, serviceId)`.
|
|
371
393
|
*
|
|
@@ -17,6 +17,7 @@ import { previousSafeBeingAbandoned, sweepOrphanedServiceFunds, } from './orphan
|
|
|
17
17
|
import { DEFAULT_FAUCET_LOOP_TIMEOUT_MS, computeFaucetDripCap, requestTestnetFunding, } from './faucet.js';
|
|
18
18
|
import { flattenErrorMessage, sleep, viemSendTransactionWithRetry, waitForContractCode, waitForTransactionReceiptWithRetry, } from '../tx-retry.js';
|
|
19
19
|
import { isUnauthorizedAccountError } from '../errors/unauthorized-account.js';
|
|
20
|
+
import { formatKnownRevert } from '../adapters/mech/safe-revert.js';
|
|
20
21
|
import { createJinnPublicClient, createJinnWalletClient } from './viem-clients.js';
|
|
21
22
|
import { isTransientEthReadError } from '../chain-read-errors.js';
|
|
22
23
|
import { nextFleetServiceIndex } from './next-service-index.js';
|
|
@@ -148,8 +149,17 @@ export function stage1MinMasterEth(config, targetServices = 1) {
|
|
|
148
149
|
config.minEoaGasEth * STANDARD_MASTER_BOOTSTRAP_MULTIPLIER +
|
|
149
150
|
extraServiceTransfers);
|
|
150
151
|
}
|
|
151
|
-
/**
|
|
152
|
-
|
|
152
|
+
/**
|
|
153
|
+
* Conservative default: ~0.0005 ETH/day master gas if not configured.
|
|
154
|
+
*
|
|
155
|
+
* Post-bootstrap master burn is dominated by rare BalanceTopupLoop top-ups,
|
|
156
|
+
* not every-poll activity — the previous 0.001 ETH/day floor (alongside a
|
|
157
|
+
* poll-based blend, since removed) over-estimated steady-state burn and
|
|
158
|
+
* surfaced a misleading "1 days runway" dashboard reading at ~0.008 ETH
|
|
159
|
+
* balances (#288). Mirrored at client/src/api/status-build.ts; collapsing
|
|
160
|
+
* the two copies is a deferred follow-up per the #288 design note.
|
|
161
|
+
*/
|
|
162
|
+
const DEFAULT_MASTER_ETH_DAILY_WEI = 500000000000000n;
|
|
153
163
|
/** Warn when ETH above the minimum would last fewer than this many days at the daily estimate. */
|
|
154
164
|
const MASTER_ETH_RUNWAY_WARN_DAYS = 7n;
|
|
155
165
|
/**
|
|
@@ -294,16 +304,14 @@ export class FleetBootstrapper {
|
|
|
294
304
|
: new Error(String(lastThrowError));
|
|
295
305
|
}
|
|
296
306
|
/**
|
|
297
|
-
* Conservative daily master gas (wei)
|
|
307
|
+
* Conservative daily master gas (wei). Returns the floor; operators who
|
|
308
|
+
* want a more aggressive estimate can still set `JINN_MASTER_ETH_DAILY_WEI`.
|
|
309
|
+
* See DEFAULT_MASTER_ETH_DAILY_WEI for rationale (#288). The
|
|
310
|
+
* `pollIntervalMs` parameter is vestigial since the poll-based blend was
|
|
311
|
+
* removed; kept so the constructor call site stays unchanged.
|
|
298
312
|
*/
|
|
299
|
-
estimateMasterDailyGasWei(
|
|
300
|
-
|
|
301
|
-
const pollsPerDay = 86400000 / interval;
|
|
302
|
-
// Assume at most one funding-sized tx per ~600 polls (~50 min at 5s), capped at 12/day
|
|
303
|
-
const txsPerDay = Math.min(Math.ceil(pollsPerDay / 600), 12);
|
|
304
|
-
const txCostWei = 150000n * 2000000000n; // ~150k gas @ 2 gwei
|
|
305
|
-
const fromPoll = BigInt(txsPerDay) * txCostWei;
|
|
306
|
-
return fromPoll > DEFAULT_MASTER_ETH_DAILY_WEI ? fromPoll : DEFAULT_MASTER_ETH_DAILY_WEI;
|
|
313
|
+
estimateMasterDailyGasWei(_pollIntervalMs) {
|
|
314
|
+
return DEFAULT_MASTER_ETH_DAILY_WEI;
|
|
307
315
|
}
|
|
308
316
|
/**
|
|
309
317
|
* Snapshot of the current persisted fleet state. Reads only — no chain
|
|
@@ -1041,8 +1049,24 @@ export class FleetBootstrapper {
|
|
|
1041
1049
|
}
|
|
1042
1050
|
if (onChainState === 2) {
|
|
1043
1051
|
console.error(`[jinn-earning] Noticed service ${svc.service_id} (fleet index ${index}) evicted on-chain; running distributor reStake to restake.`);
|
|
1044
|
-
|
|
1045
|
-
|
|
1052
|
+
// #789: a startup reStake can revert (e.g. NotEnoughTimeStaked when the
|
|
1053
|
+
// service was re-staked < minStakingDuration ago) or fail transiently.
|
|
1054
|
+
// Treat it as non-fatal so the daemon still launches — work delivery and
|
|
1055
|
+
// JINN claims are decoupled from OLAS staking (JinnDistributor mints on
|
|
1056
|
+
// delivered-work counts, not stake state), so a failed startup reStake
|
|
1057
|
+
// must not block the operator from earning. The standalone EvictionLoop
|
|
1058
|
+
// retries on its own cadence when enabled; when staking is intentionally
|
|
1059
|
+
// dropped (evictionCheckIntervalMs=0) this simply leaves the service
|
|
1060
|
+
// evicted, which does not affect JINN earning.
|
|
1061
|
+
try {
|
|
1062
|
+
state = await this.recoverEvictedService(state, mnemonic, index);
|
|
1063
|
+
svc = state.services.find(s => s.index === index);
|
|
1064
|
+
}
|
|
1065
|
+
catch (err) {
|
|
1066
|
+
console.error(`[jinn-earning] Service ${svc.service_id} (fleet index ${index}) startup reStake failed (non-fatal); ` +
|
|
1067
|
+
`continuing launch and deferring to EvictionLoop if enabled: ` +
|
|
1068
|
+
`${err instanceof Error ? err.message : String(err)}`);
|
|
1069
|
+
}
|
|
1046
1070
|
}
|
|
1047
1071
|
}
|
|
1048
1072
|
if (isOperationalServiceStep(svc.step)) {
|
|
@@ -1991,6 +2015,24 @@ export class FleetBootstrapper {
|
|
|
1991
2015
|
}
|
|
1992
2016
|
/** @deprecated Use FleetBootstrapper */
|
|
1993
2017
|
export const EarningBootstrapper = FleetBootstrapper;
|
|
2018
|
+
/**
|
|
2019
|
+
* Inspect a mined reStake receipt and log the correct outcome (#916).
|
|
2020
|
+
*
|
|
2021
|
+
* Pure + I/O-free so it can be unit-tested without a chain client. On a
|
|
2022
|
+
* `success` receipt it logs `reStake confirmed`. On a `reverted` receipt it
|
|
2023
|
+
* logs `reStake reverted` at error level (with the decoded reason if the
|
|
2024
|
+
* caller could obtain one) and throws so the recovery attempt re-queues.
|
|
2025
|
+
*/
|
|
2026
|
+
export function handleReStakeReceipt(args) {
|
|
2027
|
+
const { receipt, serviceDisplayIndex, reStakeHash, revertReason } = args;
|
|
2028
|
+
if (receipt.status === 'success') {
|
|
2029
|
+
console.error(`[eviction-recovery] Service ${serviceDisplayIndex}: reStake confirmed (tx: ${reStakeHash})`);
|
|
2030
|
+
return;
|
|
2031
|
+
}
|
|
2032
|
+
const msg = `[eviction-recovery] Service ${serviceDisplayIndex}: reStake reverted (tx: ${reStakeHash}, reason: ${revertReason ?? 'unavailable'})`;
|
|
2033
|
+
console.error(msg);
|
|
2034
|
+
throw new Error(msg);
|
|
2035
|
+
}
|
|
1994
2036
|
/**
|
|
1995
2037
|
* Re-stake an evicted service by calling `distributor.reStake(stakingProxy, serviceId)`.
|
|
1996
2038
|
*
|
|
@@ -2032,9 +2074,21 @@ export async function recoverEvictedService(opts) {
|
|
|
2032
2074
|
throw err;
|
|
2033
2075
|
}
|
|
2034
2076
|
const receipt = await waitForTransactionReceiptWithRetry(publicClient, reStakeHash);
|
|
2077
|
+
let revertReason;
|
|
2035
2078
|
if (receipt.status !== 'success') {
|
|
2036
|
-
|
|
2079
|
+
// Best-effort: replay the call at the mined block to decode the revert.
|
|
2080
|
+
try {
|
|
2081
|
+
await publicClient.call({
|
|
2082
|
+
account: masterAccount,
|
|
2083
|
+
to: addr(distributorAddress),
|
|
2084
|
+
data: reStakeData,
|
|
2085
|
+
blockNumber: receipt.blockNumber,
|
|
2086
|
+
});
|
|
2087
|
+
}
|
|
2088
|
+
catch (err) {
|
|
2089
|
+
revertReason = formatKnownRevert(err) ?? flattenErrorMessage(err);
|
|
2090
|
+
}
|
|
2037
2091
|
}
|
|
2038
|
-
|
|
2092
|
+
handleReStakeReceipt({ receipt, serviceDisplayIndex, reStakeHash, revertReason });
|
|
2039
2093
|
}
|
|
2040
2094
|
//# sourceMappingURL=bootstrap.js.map
|