@jinn-network/client 0.1.6 → 0.1.7-canary.0a586ca9
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/CHANGELOG.md +33 -0
- package/README.md +67 -1
- package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +23 -4
- package/deployments/deployment-jinn-mvi-l1-sepolia.json +23 -4
- package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +5 -4
- package/dist/adapters/mech/adapter.d.ts +57 -2
- package/dist/adapters/mech/adapter.js +366 -63
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +17 -4
- package/dist/adapters/mech/contracts.js +19 -4
- package/dist/adapters/mech/contracts.js.map +1 -1
- package/dist/adapters/mech/safe-revert.d.ts +20 -0
- package/dist/adapters/mech/safe-revert.js +12 -4
- package/dist/adapters/mech/safe-revert.js.map +1 -1
- package/dist/adapters/mech/safe.d.ts +6 -2
- package/dist/adapters/mech/safe.js +32 -11
- 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/adapters/mech/verdict-code.d.ts +1 -0
- package/dist/adapters/mech/verdict-code.js +18 -0
- package/dist/adapters/mech/verdict-code.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/admin-endpoint.d.ts +15 -3
- package/dist/api/admin-endpoint.js +24 -2
- package/dist/api/admin-endpoint.js.map +1 -1
- package/dist/api/bootstrap-endpoint.d.ts +1 -2
- package/dist/api/bootstrap-endpoint.js +85 -18
- package/dist/api/bootstrap-endpoint.js.map +1 -1
- package/dist/api/codex-doctor-endpoint.d.ts +90 -0
- package/dist/api/codex-doctor-endpoint.js +296 -0
- package/dist/api/codex-doctor-endpoint.js.map +1 -0
- package/dist/api/discovery-endpoint.d.ts +1 -0
- package/dist/api/discovery-endpoint.js +26 -0
- package/dist/api/discovery-endpoint.js.map +1 -1
- package/dist/api/fleet-build.d.ts +1 -0
- package/dist/api/fleet-build.js +2 -1
- package/dist/api/fleet-build.js.map +1 -1
- package/dist/api/gather-status.d.ts +37 -0
- package/dist/api/gather-status.js +572 -19
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/hermes-doctor-endpoint.d.ts +128 -3
- package/dist/api/hermes-doctor-endpoint.js +265 -22
- package/dist/api/hermes-doctor-endpoint.js.map +1 -1
- package/dist/api/launcher-status.d.ts +24 -17
- package/dist/api/launcher-status.js +13 -11
- 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 +10 -0
- package/dist/api/portfolio-v0-build.js +24 -5
- package/dist/api/portfolio-v0-build.js.map +1 -1
- package/dist/api/prediction-v1-build.d.ts +10 -0
- package/dist/api/prediction-v1-build.js +7 -1
- package/dist/api/prediction-v1-build.js.map +1 -1
- package/dist/api/server.d.ts +31 -1
- package/dist/api/server.js +95 -2
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +7 -0
- package/dist/api/setup-endpoints.js +67 -135
- package/dist/api/setup-endpoints.js.map +1 -1
- package/dist/api/setup-retry-endpoint.d.ts +19 -0
- package/dist/api/setup-retry-endpoint.js +32 -0
- package/dist/api/setup-retry-endpoint.js.map +1 -0
- package/dist/api/solvernets-endpoints.d.ts +8 -0
- package/dist/api/solvernets-endpoints.js +100 -105
- package/dist/api/solvernets-endpoints.js.map +1 -1
- package/dist/api/status-build.d.ts +167 -2
- package/dist/api/status-build.js +118 -27
- 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-run-routing.d.ts +7 -0
- package/dist/api/task-run-routing.js +12 -0
- package/dist/api/task-run-routing.js.map +1 -0
- package/dist/api/task-runs-build.d.ts +21 -0
- package/dist/api/task-runs-build.js +14 -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 +22 -0
- package/dist/chain-read-errors.js +41 -1
- package/dist/chain-read-errors.js.map +1 -1
- package/dist/cli/commands/auth.js +1 -1
- package/dist/cli/commands/auth.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/create.js +3 -2
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.js +2 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/rewards.js +11 -7
- package/dist/cli/commands/rewards.js.map +1 -1
- package/dist/cli/commands/solver-nets.d.ts +1 -0
- package/dist/cli/commands/solver-nets.js +179 -16
- 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/status.js +1 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/tasks.js +101 -11
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/commands/update.d.ts +10 -0
- package/dist/cli/commands/update.js +36 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/introspection-context.js +5 -0
- package/dist/cli/introspection-context.js.map +1 -1
- package/dist/cli/task-native-readiness.d.ts +10 -1
- package/dist/cli/task-native-readiness.js +30 -6
- package/dist/cli/task-native-readiness.js.map +1 -1
- package/dist/config.d.ts +287 -235
- package/dist/config.js +318 -114
- package/dist/config.js.map +1 -1
- package/dist/daemon/checkpoint-loop.d.ts +48 -0
- package/dist/daemon/checkpoint-loop.js +76 -0
- package/dist/daemon/checkpoint-loop.js.map +1 -0
- package/dist/daemon/creator.d.ts +1 -1
- package/dist/daemon/creator.js +20 -3
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +22 -0
- package/dist/daemon/daemon.js +174 -31
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/eviction-loop.d.ts +40 -0
- package/dist/daemon/eviction-loop.js +67 -0
- package/dist/daemon/eviction-loop.js.map +1 -0
- 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-wiring.d.ts +33 -0
- package/dist/daemon/jinn-claim-loop-wiring.js +40 -0
- package/dist/daemon/jinn-claim-loop-wiring.js.map +1 -0
- package/dist/daemon/jinn-claim-loop.d.ts +24 -17
- package/dist/daemon/jinn-claim-loop.js +77 -23
- 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/skip-log-dedup.d.ts +69 -0
- package/dist/daemon/skip-log-dedup.js +106 -0
- package/dist/daemon/skip-log-dedup.js.map +1 -0
- 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-BNs_ewI6.js +345 -0
- package/dist/dashboard/assets/index-C4huIsUW.css +32 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/discovery/factory.d.ts +17 -5
- package/dist/discovery/factory.js +46 -18
- package/dist/discovery/factory.js.map +1 -1
- package/dist/discovery/http.js +469 -3
- package/dist/discovery/http.js.map +1 -1
- package/dist/discovery/onchain.d.ts +5 -0
- package/dist/discovery/onchain.js +448 -18
- package/dist/discovery/onchain.js.map +1 -1
- package/dist/discovery/types.d.ts +174 -1
- package/dist/discovery/types.js +8 -10
- package/dist/discovery/types.js.map +1 -1
- package/dist/discovery/with-fallback.d.ts +7 -0
- package/dist/discovery/with-fallback.js +37 -0
- package/dist/discovery/with-fallback.js.map +1 -1
- package/dist/earning/bootstrap.d.ts +100 -4
- package/dist/earning/bootstrap.js +239 -76
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/contracts.d.ts +14 -0
- package/dist/earning/contracts.js +17 -5
- package/dist/earning/contracts.js.map +1 -1
- package/dist/earning/funding-plan.js +27 -18
- package/dist/earning/funding-plan.js.map +1 -1
- package/dist/earning/jinn-rewards.d.ts +46 -0
- package/dist/earning/jinn-rewards.js +32 -0
- package/dist/earning/jinn-rewards.js.map +1 -1
- package/dist/earning/safe-adapter.d.ts +2 -0
- package/dist/earning/safe-adapter.js +37 -11
- package/dist/earning/safe-adapter.js.map +1 -1
- package/dist/earning/store.d.ts +8 -0
- package/dist/earning/store.js.map +1 -1
- package/dist/earning/testnet-setup-migration.d.ts +12 -0
- package/dist/earning/testnet-setup-migration.js +27 -1
- package/dist/earning/testnet-setup-migration.js.map +1 -1
- package/dist/earning/types.d.ts +21 -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/erc8004/reputation.d.ts +8 -0
- package/dist/erc8004/reputation.js +22 -3
- package/dist/erc8004/reputation.js.map +1 -1
- package/dist/events/types.d.ts +2 -2
- package/dist/harnesses/cost-estimates.d.ts +124 -0
- package/dist/harnesses/cost-estimates.js +265 -0
- package/dist/harnesses/cost-estimates.js.map +1 -0
- package/dist/harnesses/engine/engine.d.ts +78 -0
- package/dist/harnesses/engine/engine.js +153 -11
- package/dist/harnesses/engine/engine.js.map +1 -1
- package/dist/harnesses/engine/persistence.d.ts +51 -1
- package/dist/harnesses/engine/persistence.js +118 -5
- package/dist/harnesses/engine/persistence.js.map +1 -1
- package/dist/harnesses/engine/work-dir-reaper.d.ts +65 -0
- package/dist/harnesses/engine/work-dir-reaper.js +100 -0
- package/dist/harnesses/engine/work-dir-reaper.js.map +1 -0
- package/dist/harnesses/impls/hermes-agent/adapter.js +40 -0
- package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +20 -0
- package/dist/harnesses/impls/hermes-agent/bootstrap.js +44 -8
- 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 +59 -1
- package/dist/harnesses/impls/hermes-agent/harness.js +104 -0
- 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/index.d.ts +7 -0
- package/dist/harnesses/impls/index.js +16 -1
- package/dist/harnesses/impls/index.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 +47 -4
- package/dist/harnesses/impls/learner/harness.js +105 -2
- 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/plugin-path.d.ts +0 -13
- package/dist/harnesses/impls/learner/plugin-path.js +35 -15
- package/dist/harnesses/impls/learner/plugin-path.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/learner/types.d.ts +11 -0
- package/dist/harnesses/impls/stub.d.ts +58 -0
- package/dist/harnesses/impls/stub.js +89 -0
- package/dist/harnesses/impls/stub.js.map +1 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.d.ts +69 -50
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +199 -94
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.d.ts +12 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +121 -7
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +88 -4
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +143 -22
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +6 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
- package/dist/harnesses/readiness-registry.d.ts +7 -0
- package/dist/harnesses/readiness-registry.js +18 -1
- 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 +470 -142
- 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/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/operator-errors.d.ts +7 -0
- package/dist/operator-errors.js +13 -1
- package/dist/operator-errors.js.map +1 -1
- package/dist/plugins/learner/.claude-plugin/plugin.json +9 -0
- package/dist/plugins/learner/.codex-plugin/plugin.json +39 -0
- package/dist/plugins/learner/AGENTS.md +40 -0
- package/dist/plugins/learner/CLAUDE.md +33 -0
- package/dist/plugins/learner/README.md +59 -0
- package/dist/plugins/learner/hooks/hooks.json +16 -0
- package/dist/plugins/learner/hooks/session-start +38 -0
- package/dist/plugins/learner/skills/learn/SKILL.md +412 -0
- package/dist/plugins/learner/skills/learn/analyst-prompt.md +68 -0
- package/dist/plugins/learner/skills/learn/consolidator-prompt.md +111 -0
- package/dist/plugins/learner/skills/learn/explorer-prompt.md +53 -0
- package/dist/plugins/learner/skills/learn/planner-prompt.md +87 -0
- package/dist/plugins/learner/skills/learn/promoter-prompt.md +184 -0
- package/dist/plugins/learner/skills/learn/step-worker-prompt.md +47 -0
- package/dist/plugins/learner/skills/learn/strategist-prompt.md +85 -0
- 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/restart-daemon.d.ts +90 -0
- package/dist/restart-daemon.js +95 -0
- package/dist/restart-daemon.js.map +1 -0
- 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/setup/halt-mode.d.ts +14 -0
- package/dist/setup/halt-mode.js +17 -0
- package/dist/setup/halt-mode.js.map +1 -0
- package/dist/solver-nets/prediction-operator-ux.d.ts +1 -2
- package/dist/solver-nets/prediction-operator-ux.js +90 -47
- package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
- package/dist/solver-nets/registry.d.ts +20 -1
- package/dist/solver-nets/registry.js +38 -25
- package/dist/solver-nets/registry.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-pool-cache.d.ts +58 -0
- package/dist/solver-types/_swe-rebench-v2-pool-cache.js +87 -0
- package/dist/solver-types/_swe-rebench-v2-pool-cache.js.map +1 -0
- 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-substrate.d.ts +1 -0
- package/dist/solver-types/_swe-rebench-v2-substrate.js +10 -0
- package/dist/solver-types/_swe-rebench-v2-substrate.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +145 -2
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js +482 -44
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2-auto.d.ts +38 -14
- package/dist/solver-types/swe-rebench-v2-auto.js +87 -28
- package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2.d.ts +19 -2
- package/dist/solver-types/swe-rebench-v2.js +351 -96
- package/dist/solver-types/swe-rebench-v2.js.map +1 -1
- package/dist/solvernets/daemon-init.d.ts +10 -2
- package/dist/solvernets/daemon-init.js +22 -2
- 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 +41 -7
- 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 +7 -2
- package/dist/solvernets/store.js +1 -0
- package/dist/solvernets/store.js.map +1 -1
- package/dist/spend/cost-surface-status.d.ts +10 -0
- package/dist/spend/cost-surface-status.js +22 -0
- package/dist/spend/cost-surface-status.js.map +1 -0
- 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 +61 -0
- package/dist/store/store.js +302 -7
- package/dist/store/store.js.map +1 -1
- package/dist/tasks/sources.d.ts +18 -1
- package/dist/tasks/sources.js +33 -5
- package/dist/tasks/sources.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 +98 -32
- package/dist/trajectory/transcript-watcher.js.map +1 -1
- package/dist/tx-retry.d.ts +166 -19
- package/dist/tx-retry.js +310 -32
- 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 +8 -8
- package/dist/types/payloads/prediction-v0.d.ts +17 -17
- package/dist/types/task-document.d.ts +392 -0
- package/dist/types/task-document.js +10 -0
- package/dist/types/task-document.js.map +1 -1
- package/dist/types/task.d.ts +28 -0
- package/dist/util/extract-tx-hash.d.ts +14 -0
- package/dist/util/extract-tx-hash.js +19 -0
- package/dist/util/extract-tx-hash.js.map +1 -0
- package/dist/vendor/@jinn-network/sdk/dist/contracts.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +3 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -0
- package/package.json +37 -13
- 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 +69 -0
- package/dist/dashboard/assets/index-DOlzFN8a.css +0 -32
- package/dist/dashboard/assets/index-NkZ7CTAT.js +0 -140
- package/plugins/swe-rebench-v2-runtime/skills/orient/SKILL.md +0 -29
- package/plugins/swe-rebench-v2-runtime/skills/plan/SKILL.md +0 -53
|
@@ -23,6 +23,13 @@
|
|
|
23
23
|
* every previously-seen transcript record. (The `jinn capture import` CLI
|
|
24
24
|
* uses `parser.parseFull` for one-shot history ingest.)
|
|
25
25
|
*
|
|
26
|
+
* ## Directory watching
|
|
27
|
+
*
|
|
28
|
+
* `directories` watches a session folder for new or growing `*.jsonl` files
|
|
29
|
+
* (e.g. `~/.codex/sessions`, `~/.claude/projects/**`). Existing files are
|
|
30
|
+
* registered at startup with the same tail-from-end baseline; `add` events
|
|
31
|
+
* register files created after startup.
|
|
32
|
+
*
|
|
26
33
|
* ## Cursor SQLite quirk — fail loudly
|
|
27
34
|
*
|
|
28
35
|
* The Cursor parser's `parseChunk` is a no-op: SQLite isn't streaming, and
|
|
@@ -35,12 +42,14 @@
|
|
|
35
42
|
* Spec: spec/2026-05-07-telemetry-collector-and-task-generator.md §4.2 path B.
|
|
36
43
|
*/
|
|
37
44
|
import * as fs from 'node:fs/promises';
|
|
45
|
+
import { resolve as resolvePath } from 'node:path';
|
|
38
46
|
import chokidar from 'chokidar';
|
|
39
47
|
import { ClaudeCodeJsonlParser } from './transcript-parsers/claude-code-jsonl.js';
|
|
40
48
|
import { CodexSessionParser } from './transcript-parsers/codex-session.js';
|
|
41
49
|
import { GeminiSessionParser } from './transcript-parsers/gemini-session.js';
|
|
42
50
|
import { AiderHistoryParser } from './transcript-parsers/aider-history.js';
|
|
43
51
|
import { ContinueDevDataParser } from './transcript-parsers/continue-devdata.js';
|
|
52
|
+
import { listSessionJsonlFiles } from './transcript-session-dirs.js';
|
|
44
53
|
function makeParser(tool) {
|
|
45
54
|
switch (tool) {
|
|
46
55
|
case 'claude-code':
|
|
@@ -54,10 +63,6 @@ function makeParser(tool) {
|
|
|
54
63
|
case 'continue':
|
|
55
64
|
return new ContinueDevDataParser();
|
|
56
65
|
case 'cursor':
|
|
57
|
-
// See file header. Cursor streaming via chokidar would silently miss
|
|
58
|
-
// WAL deltas; the parser's parseChunk is a deliberate no-op. Polling-
|
|
59
|
-
// based Cursor support is a Phase 3.5+ follow-up; until then operators
|
|
60
|
-
// should use `jinn capture import` for Cursor sessions.
|
|
61
66
|
throw new Error("Cursor SQLite watching not yet supported in v0 — use 'jinn capture import' " +
|
|
62
67
|
'for Cursor sessions or wait for polling support (Phase 3.5+).');
|
|
63
68
|
default: {
|
|
@@ -66,41 +71,107 @@ function makeParser(tool) {
|
|
|
66
71
|
}
|
|
67
72
|
}
|
|
68
73
|
}
|
|
74
|
+
async function tailOffsetForPath(filePath) {
|
|
75
|
+
try {
|
|
76
|
+
const stats = await fs.stat(filePath);
|
|
77
|
+
return stats.size;
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return 0;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function isJsonlSessionFile(filePath) {
|
|
84
|
+
return filePath.endsWith('.jsonl');
|
|
85
|
+
}
|
|
69
86
|
export async function startTranscriptWatcher(cfg) {
|
|
87
|
+
const sources = cfg.sources ?? [];
|
|
88
|
+
const directories = cfg.directories ?? [];
|
|
89
|
+
if (sources.length === 0 && directories.length === 0) {
|
|
90
|
+
throw new Error('startTranscriptWatcher requires at least one source or directory');
|
|
91
|
+
}
|
|
70
92
|
const states = new Map();
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
93
|
+
const directoryParsers = new Map();
|
|
94
|
+
const registerSource = async (source, opts) => {
|
|
95
|
+
const normalizedPath = resolvePath(source.path);
|
|
96
|
+
const nextOffset = opts.tailFromEnd ? await tailOffsetForPath(normalizedPath) : 0;
|
|
97
|
+
const parser = opts.parser ?? makeParser(source.tool);
|
|
98
|
+
states.set(normalizedPath, {
|
|
99
|
+
source: { ...source, path: normalizedPath },
|
|
100
|
+
parser,
|
|
101
|
+
nextOffset,
|
|
102
|
+
inFlight: Promise.resolve(),
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
for (const source of sources) {
|
|
106
|
+
await registerSource(source, { tailFromEnd: true });
|
|
107
|
+
}
|
|
108
|
+
for (const dir of directories) {
|
|
109
|
+
const parser = makeParser(dir.tool);
|
|
110
|
+
directoryParsers.set(dir.tool, parser);
|
|
111
|
+
const files = await listSessionJsonlFiles(dir.directory, dir.recursive === true);
|
|
112
|
+
for (const filePath of files) {
|
|
113
|
+
await registerSource({
|
|
114
|
+
tool: dir.tool,
|
|
115
|
+
path: filePath,
|
|
116
|
+
sessionId: dir.sessionIdFromPath(filePath),
|
|
117
|
+
}, { tailFromEnd: true, parser });
|
|
84
118
|
}
|
|
85
|
-
states.set(source.path, { source, parser, nextOffset, inFlight: Promise.resolve() });
|
|
86
119
|
}
|
|
87
120
|
let shuttingDown = false;
|
|
88
|
-
const
|
|
121
|
+
const watchPaths = [
|
|
122
|
+
...sources.map((s) => s.path),
|
|
123
|
+
...directories.map((d) => d.directory),
|
|
124
|
+
];
|
|
125
|
+
const watcher = chokidar.watch(watchPaths, {
|
|
89
126
|
persistent: true,
|
|
90
|
-
// Wait for writers to settle before reading; cheap insurance against
|
|
91
|
-
// half-written JSONL lines.
|
|
92
127
|
awaitWriteFinish: { stabilityThreshold: 50, pollInterval: 25 },
|
|
93
|
-
// Tail-from-end: on startup, current contents are the baseline. Only
|
|
94
|
-
// mutations *after* startup should dispatch.
|
|
95
128
|
ignoreInitial: true,
|
|
96
129
|
});
|
|
130
|
+
const resolveDirectoryForPath = (filepath) => {
|
|
131
|
+
const normalized = resolvePath(filepath);
|
|
132
|
+
for (const dir of directories) {
|
|
133
|
+
const root = resolvePath(dir.directory);
|
|
134
|
+
const prefix = root.endsWith('/') ? root : `${root}/`;
|
|
135
|
+
if (normalized === root || normalized.startsWith(prefix)) {
|
|
136
|
+
return dir;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return undefined;
|
|
140
|
+
};
|
|
141
|
+
const ensureStateForPath = async (filepath) => {
|
|
142
|
+
const normalized = resolvePath(filepath);
|
|
143
|
+
const existing = states.get(normalized);
|
|
144
|
+
if (existing)
|
|
145
|
+
return existing;
|
|
146
|
+
const dir = resolveDirectoryForPath(normalized);
|
|
147
|
+
if (!dir || !isJsonlSessionFile(normalized))
|
|
148
|
+
return undefined;
|
|
149
|
+
const parser = directoryParsers.get(dir.tool) ?? makeParser(dir.tool);
|
|
150
|
+
directoryParsers.set(dir.tool, parser);
|
|
151
|
+
const source = {
|
|
152
|
+
tool: dir.tool,
|
|
153
|
+
path: normalized,
|
|
154
|
+
sessionId: dir.sessionIdFromPath(normalized),
|
|
155
|
+
};
|
|
156
|
+
const state = {
|
|
157
|
+
source,
|
|
158
|
+
parser,
|
|
159
|
+
nextOffset: 0,
|
|
160
|
+
inFlight: Promise.resolve(),
|
|
161
|
+
};
|
|
162
|
+
states.set(normalized, state);
|
|
163
|
+
return state;
|
|
164
|
+
};
|
|
97
165
|
const enqueue = (filepath) => {
|
|
98
166
|
if (shuttingDown)
|
|
99
167
|
return;
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
168
|
+
const normalized = resolvePath(filepath);
|
|
169
|
+
void (async () => {
|
|
170
|
+
const state = states.get(normalized) ?? await ensureStateForPath(normalized);
|
|
171
|
+
if (!state)
|
|
172
|
+
return;
|
|
173
|
+
state.inFlight = state.inFlight.then(() => handleChange(state));
|
|
174
|
+
})();
|
|
104
175
|
};
|
|
105
176
|
watcher.on('add', enqueue);
|
|
106
177
|
watcher.on('change', enqueue);
|
|
@@ -115,9 +186,6 @@ export async function startTranscriptWatcher(cfg) {
|
|
|
115
186
|
catch {
|
|
116
187
|
return;
|
|
117
188
|
}
|
|
118
|
-
// Truncation or stale event — skip. (We deliberately do not reset
|
|
119
|
-
// nextOffset on truncation; if the file is rotated we'd need explicit
|
|
120
|
-
// operator intervention. Phase 3.5+ may add inode-change detection.)
|
|
121
189
|
if (size <= state.nextOffset)
|
|
122
190
|
return;
|
|
123
191
|
const handle = await fs.open(state.source.path, 'r');
|
|
@@ -148,8 +216,6 @@ export async function startTranscriptWatcher(cfg) {
|
|
|
148
216
|
async shutdown() {
|
|
149
217
|
shuttingDown = true;
|
|
150
218
|
await watcher.close();
|
|
151
|
-
// Drain any in-flight per-source handlers so post-shutdown the map is
|
|
152
|
-
// settled. Errors here are intentionally swallowed — we're tearing down.
|
|
153
219
|
await Promise.allSettled(Array.from(states.values(), (state) => state.inFlight));
|
|
154
220
|
},
|
|
155
221
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript-watcher.js","sourceRoot":"","sources":["../../src/trajectory/transcript-watcher.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"transcript-watcher.js","sourceRoot":"","sources":["../../src/trajectory/transcript-watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/tx-retry.d.ts
CHANGED
|
@@ -8,6 +8,9 @@ export declare const TX_RETRY_DEFAULTS: {
|
|
|
8
8
|
readonly maxDelayMs: 12000;
|
|
9
9
|
/** Extra fee bump per retry attempt after the first (basis points, 1500 = +15%) */
|
|
10
10
|
readonly feeBumpBpsPerAttempt: 1500;
|
|
11
|
+
/** Minimum bump over the previously submitted fee for same-sender nonce replacement. */
|
|
12
|
+
readonly replacementBumpBps: 1500;
|
|
13
|
+
readonly stuckNonceAfterMs: 120000;
|
|
11
14
|
};
|
|
12
15
|
export declare function flattenErrorMessage(error: unknown): string;
|
|
13
16
|
/**
|
|
@@ -15,12 +18,24 @@ export declare function flattenErrorMessage(error: unknown): string;
|
|
|
15
18
|
* Intentionally conservative: do not treat insufficient balance or user rejections as recoverable.
|
|
16
19
|
*/
|
|
17
20
|
export declare function isRecoverableTransactionError(error: unknown): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* True when the error message contains the RPC's "nonce too low" signal.
|
|
23
|
+
*
|
|
24
|
+
* Issue #562: a daemon respawn can leave the locally-pinned ledger nonce
|
|
25
|
+
* behind the RPC's pending nonce, and every retry that re-submits with the
|
|
26
|
+
* stale value triggers this error. Callers use this helper to decide whether
|
|
27
|
+
* to refresh the pinned nonce before the next retry attempt.
|
|
28
|
+
*/
|
|
29
|
+
export declare function isNonceTooLowError(error: unknown): boolean;
|
|
18
30
|
export declare function sleep(ms: number): Promise<void>;
|
|
19
31
|
export declare function backoffDelay(attemptIndex: number, baseMs: number, maxMs: number): Promise<void>;
|
|
20
32
|
export interface TxRetryOptions {
|
|
21
33
|
maxAttempts?: number;
|
|
22
34
|
baseDelayMs?: number;
|
|
23
35
|
maxDelayMs?: number;
|
|
36
|
+
ledger?: TxSubmissionLedger;
|
|
37
|
+
logicalTx?: string;
|
|
38
|
+
stuckNonceAfterMs?: number;
|
|
24
39
|
/** If set, invoked before each retry (attempt >= 1) for logging/metrics */
|
|
25
40
|
onRetry?: (info: {
|
|
26
41
|
attempt: number;
|
|
@@ -28,6 +43,125 @@ export interface TxRetryOptions {
|
|
|
28
43
|
message: string;
|
|
29
44
|
}) => void;
|
|
30
45
|
}
|
|
46
|
+
export interface TxFeeSnapshot {
|
|
47
|
+
maxFeePerGas?: bigint;
|
|
48
|
+
maxPriorityFeePerGas?: bigint;
|
|
49
|
+
gasPrice?: bigint;
|
|
50
|
+
}
|
|
51
|
+
export type Eip1559FeeOverrides = {
|
|
52
|
+
maxFeePerGas: bigint;
|
|
53
|
+
maxPriorityFeePerGas: bigint;
|
|
54
|
+
gasPrice?: undefined;
|
|
55
|
+
};
|
|
56
|
+
export type LegacyFeeOverrides = {
|
|
57
|
+
gasPrice: bigint;
|
|
58
|
+
maxFeePerGas?: undefined;
|
|
59
|
+
maxPriorityFeePerGas?: undefined;
|
|
60
|
+
};
|
|
61
|
+
export type EmptyFeeOverrides = {
|
|
62
|
+
maxFeePerGas?: undefined;
|
|
63
|
+
maxPriorityFeePerGas?: undefined;
|
|
64
|
+
gasPrice?: undefined;
|
|
65
|
+
};
|
|
66
|
+
export type TxFeeOverrides = Eip1559FeeOverrides | LegacyFeeOverrides | EmptyFeeOverrides;
|
|
67
|
+
export type TxFeeOverrideResult = {
|
|
68
|
+
kind: 'eip1559';
|
|
69
|
+
overrides: Eip1559FeeOverrides;
|
|
70
|
+
snapshot: TxFeeSnapshot;
|
|
71
|
+
} | {
|
|
72
|
+
kind: 'legacy';
|
|
73
|
+
overrides: LegacyFeeOverrides;
|
|
74
|
+
snapshot: TxFeeSnapshot;
|
|
75
|
+
} | {
|
|
76
|
+
kind: 'none';
|
|
77
|
+
overrides: EmptyFeeOverrides;
|
|
78
|
+
snapshot: TxFeeSnapshot;
|
|
79
|
+
};
|
|
80
|
+
export type TxRecoveryTransactionRequest = TxFeeOverrides & {
|
|
81
|
+
account?: unknown;
|
|
82
|
+
to: Address;
|
|
83
|
+
value: bigint;
|
|
84
|
+
nonce: number;
|
|
85
|
+
};
|
|
86
|
+
export interface TxRecoveryWalletClient {
|
|
87
|
+
account?: unknown;
|
|
88
|
+
sendTransaction(tx: TxRecoveryTransactionRequest): Promise<Hex>;
|
|
89
|
+
}
|
|
90
|
+
export type TxRetryTransactionRequest = TxFeeOverrides & {
|
|
91
|
+
account?: unknown;
|
|
92
|
+
to?: Address;
|
|
93
|
+
data?: Hex;
|
|
94
|
+
value?: bigint;
|
|
95
|
+
gas?: bigint;
|
|
96
|
+
nonce?: number;
|
|
97
|
+
[key: string]: unknown;
|
|
98
|
+
};
|
|
99
|
+
export interface TxRetryWalletClient {
|
|
100
|
+
account?: unknown;
|
|
101
|
+
sendTransaction(tx: TxRetryTransactionRequest): Promise<Hex>;
|
|
102
|
+
}
|
|
103
|
+
export interface TxSubmissionKey {
|
|
104
|
+
chainId: number;
|
|
105
|
+
from: Address;
|
|
106
|
+
nonce: number;
|
|
107
|
+
}
|
|
108
|
+
export interface TxSubmissionLedgerEntry extends TxSubmissionKey {
|
|
109
|
+
hash?: Hex;
|
|
110
|
+
logicalTx?: string;
|
|
111
|
+
submittedAtMs: number;
|
|
112
|
+
fees: TxFeeSnapshot;
|
|
113
|
+
to?: Address;
|
|
114
|
+
value?: bigint;
|
|
115
|
+
data?: Hex;
|
|
116
|
+
resolvedAtMs?: number | null;
|
|
117
|
+
}
|
|
118
|
+
type MaybePromise<T> = T | Promise<T>;
|
|
119
|
+
export interface TxSubmissionLedger {
|
|
120
|
+
getTxSubmission(key: TxSubmissionKey): MaybePromise<TxSubmissionLedgerEntry | null>;
|
|
121
|
+
recordTxSubmission(entry: TxSubmissionLedgerEntry): MaybePromise<void>;
|
|
122
|
+
markTxSubmissionResolved(key: TxSubmissionKey & {
|
|
123
|
+
resolvedAtMs: number;
|
|
124
|
+
}): MaybePromise<void>;
|
|
125
|
+
}
|
|
126
|
+
export interface NonceLedgerSubmission {
|
|
127
|
+
hash?: Hex;
|
|
128
|
+
logicalTx?: string;
|
|
129
|
+
submittedAtMs?: number;
|
|
130
|
+
fees: TxFeeSnapshot;
|
|
131
|
+
to?: Address;
|
|
132
|
+
value?: bigint;
|
|
133
|
+
data?: Hex;
|
|
134
|
+
}
|
|
135
|
+
export interface NonceLedgerContext {
|
|
136
|
+
ledger: TxSubmissionLedger;
|
|
137
|
+
chainId: number;
|
|
138
|
+
from: Address;
|
|
139
|
+
nonce: number;
|
|
140
|
+
feeResultForAttempt(attemptIndex: number, options?: {
|
|
141
|
+
forceEstimate?: boolean;
|
|
142
|
+
}): Promise<TxFeeOverrideResult>;
|
|
143
|
+
recordSubmitted(entry: NonceLedgerSubmission): Promise<void>;
|
|
144
|
+
markResolved(resolvedAtMs?: number): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Re-read the pending nonce from the RPC, update `nonce` in place, and
|
|
147
|
+
* return the new value. Callers use this after a `nonce too low` revert
|
|
148
|
+
* (issue #562) so the next retry attempt picks up the fresh value.
|
|
149
|
+
*/
|
|
150
|
+
refreshNonce(): Promise<number>;
|
|
151
|
+
}
|
|
152
|
+
export interface WithNonceLedgerArgs {
|
|
153
|
+
publicClient: PublicClient;
|
|
154
|
+
walletClient?: TxRecoveryWalletClient;
|
|
155
|
+
ledger?: TxSubmissionLedger;
|
|
156
|
+
from: Address;
|
|
157
|
+
nonce?: number;
|
|
158
|
+
chainId?: number;
|
|
159
|
+
recoverStuckNonce?: boolean;
|
|
160
|
+
staleAfterMs?: number;
|
|
161
|
+
}
|
|
162
|
+
export declare function createMemoryTxSubmissionLedger(): TxSubmissionLedger;
|
|
163
|
+
export declare function setDefaultTxSubmissionLedger(ledger: TxSubmissionLedger): void;
|
|
164
|
+
export declare function getDefaultTxSubmissionLedger(): TxSubmissionLedger;
|
|
31
165
|
export declare function withRecoverableRetry<T>(fn: (attemptIndex: number) => Promise<T>, options?: TxRetryOptions): Promise<T>;
|
|
32
166
|
/**
|
|
33
167
|
* Poll publicClient.getCode until bytecode is present at `address`, or give up.
|
|
@@ -42,27 +176,40 @@ export declare function waitForContractCode(publicClient: PublicClient, address:
|
|
|
42
176
|
baseDelayMs?: number;
|
|
43
177
|
maxDelayMs?: number;
|
|
44
178
|
}): Promise<Hex>;
|
|
179
|
+
export declare function mergeFeeEstimateWithPrevious(current: TxFeeSnapshot, previous?: TxFeeSnapshot | null, attemptIndex?: number): TxFeeSnapshot;
|
|
180
|
+
/**
|
|
181
|
+
* EIP-1559 or legacy gas overrides for viem, increasingly aggressive on later attempts.
|
|
182
|
+
*
|
|
183
|
+
* The result carries both the spreadable viem transaction overrides and the
|
|
184
|
+
* ledger snapshot, keeping call sites from recasting the override object.
|
|
185
|
+
*/
|
|
186
|
+
export declare function viemFeeOverrideResultForAttempt(publicClient: PublicClient, attemptIndex: number, options?: {
|
|
187
|
+
previousFees?: TxFeeSnapshot | null;
|
|
188
|
+
forceEstimate?: boolean;
|
|
189
|
+
}): Promise<TxFeeOverrideResult>;
|
|
45
190
|
/** EIP-1559 or legacy gas overrides for viem, increasingly aggressive on later attempts. */
|
|
46
|
-
export declare function viemFeeOverridesForAttempt(publicClient: PublicClient, attemptIndex: number
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
gasPrice: bigint;
|
|
51
|
-
} | Record<string, never>>;
|
|
191
|
+
export declare function viemFeeOverridesForAttempt(publicClient: PublicClient, attemptIndex: number, options?: {
|
|
192
|
+
previousFees?: TxFeeSnapshot | null;
|
|
193
|
+
forceEstimate?: boolean;
|
|
194
|
+
}): Promise<TxFeeOverrides>;
|
|
52
195
|
export declare function waitForTransactionReceiptWithRetry(publicClient: PublicClient, hash: Hex, options?: TxRetryOptions & {
|
|
53
196
|
pollingInterval?: number;
|
|
54
197
|
confirmations?: number;
|
|
55
198
|
}): Promise<TransactionReceipt>;
|
|
56
|
-
export declare function
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
199
|
+
export declare function removeConflictingLegacyGasPrice<T extends TxFeeSnapshot>(tx: T): void;
|
|
200
|
+
export declare function withNonceLedger<T>(args: WithNonceLedgerArgs, fn: (context: NonceLedgerContext) => Promise<T>): Promise<T>;
|
|
201
|
+
export declare function recoverStuckNonceIfNeeded(args: {
|
|
202
|
+
publicClient: PublicClient;
|
|
203
|
+
walletClient: TxRecoveryWalletClient;
|
|
204
|
+
ledger?: TxSubmissionLedger;
|
|
205
|
+
from: Address;
|
|
206
|
+
chainId?: number;
|
|
207
|
+
staleAfterMs?: number;
|
|
208
|
+
nowMs?: number;
|
|
209
|
+
}): Promise<{
|
|
210
|
+
nonce: number;
|
|
211
|
+
previousHash?: Hex;
|
|
212
|
+
recoveryHash: Hex;
|
|
213
|
+
} | null>;
|
|
214
|
+
export declare function viemSendTransactionWithRetry(walletClient: TxRetryWalletClient, publicClient: PublicClient, txRequest: TxRetryTransactionRequest, options?: TxRetryOptions): Promise<Hex>;
|
|
215
|
+
export {};
|