@jinn-network/client 0.1.7-canary.d4e4e183 → 0.1.7-canary.e68c8f43

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.
Files changed (297) hide show
  1. package/README.md +67 -1
  2. package/dist/adapters/mech/adapter.d.ts +19 -1
  3. package/dist/adapters/mech/adapter.js +130 -14
  4. package/dist/adapters/mech/adapter.js.map +1 -1
  5. package/dist/adapters/mech/contracts.js +11 -2
  6. package/dist/adapters/mech/contracts.js.map +1 -1
  7. package/dist/adapters/mech/safe.d.ts +1 -1
  8. package/dist/adapters/mech/safe.js +5 -3
  9. package/dist/adapters/mech/safe.js.map +1 -1
  10. package/dist/adapters/mech/types.d.ts +6 -1
  11. package/dist/adapters/mech/types.js.map +1 -1
  12. package/dist/agent/operator-claude.js +8 -0
  13. package/dist/agent/operator-claude.js.map +1 -1
  14. package/dist/api/activity-events-endpoint.d.ts +14 -0
  15. package/dist/api/activity-events-endpoint.js +59 -0
  16. package/dist/api/activity-events-endpoint.js.map +1 -0
  17. package/dist/api/bootstrap-endpoint.d.ts +1 -2
  18. package/dist/api/bootstrap-endpoint.js +42 -24
  19. package/dist/api/bootstrap-endpoint.js.map +1 -1
  20. package/dist/api/codex-doctor-endpoint.d.ts +22 -5
  21. package/dist/api/codex-doctor-endpoint.js +136 -17
  22. package/dist/api/codex-doctor-endpoint.js.map +1 -1
  23. package/dist/api/debug-report-endpoint.d.ts +27 -0
  24. package/dist/api/debug-report-endpoint.js +157 -0
  25. package/dist/api/debug-report-endpoint.js.map +1 -0
  26. package/dist/api/gather-status.d.ts +33 -0
  27. package/dist/api/gather-status.js +210 -26
  28. package/dist/api/gather-status.js.map +1 -1
  29. package/dist/api/hermes-doctor-endpoint.d.ts +15 -7
  30. package/dist/api/hermes-doctor-endpoint.js +56 -19
  31. package/dist/api/hermes-doctor-endpoint.js.map +1 -1
  32. package/dist/api/launcher-status.d.ts +4 -2
  33. package/dist/api/launcher-status.js +11 -10
  34. package/dist/api/launcher-status.js.map +1 -1
  35. package/dist/api/launcher-tasks.d.ts +1 -1
  36. package/dist/api/launcher-tasks.js +12 -8
  37. package/dist/api/launcher-tasks.js.map +1 -1
  38. package/dist/api/operator-artifacts-endpoint.js +73 -6
  39. package/dist/api/operator-artifacts-endpoint.js.map +1 -1
  40. package/dist/api/server.d.ts +17 -0
  41. package/dist/api/server.js +40 -1
  42. package/dist/api/server.js.map +1 -1
  43. package/dist/api/setup-endpoints.d.ts +0 -9
  44. package/dist/api/setup-endpoints.js +11 -153
  45. package/dist/api/setup-endpoints.js.map +1 -1
  46. package/dist/api/solvernets-endpoints.js +30 -63
  47. package/dist/api/solvernets-endpoints.js.map +1 -1
  48. package/dist/api/status-build.d.ts +115 -2
  49. package/dist/api/status-build.js +47 -11
  50. package/dist/api/status-build.js.map +1 -1
  51. package/dist/api/status-harness-rollup.d.ts +35 -0
  52. package/dist/api/status-harness-rollup.js +45 -0
  53. package/dist/api/status-harness-rollup.js.map +1 -0
  54. package/dist/build-info.json +4 -4
  55. package/dist/build-meta.json +1 -1
  56. package/dist/captures/live-publisher.js +24 -4
  57. package/dist/captures/live-publisher.js.map +1 -1
  58. package/dist/captures/publish.d.ts +1 -1
  59. package/dist/chain-read-errors.d.ts +12 -0
  60. package/dist/chain-read-errors.js +26 -1
  61. package/dist/chain-read-errors.js.map +1 -1
  62. package/dist/cli/commands/codedigest-revert-check.d.ts +33 -0
  63. package/dist/cli/commands/codedigest-revert-check.js +249 -0
  64. package/dist/cli/commands/codedigest-revert-check.js.map +1 -0
  65. package/dist/cli/commands/solver-nets.d.ts +1 -0
  66. package/dist/cli/commands/solver-nets.js +170 -22
  67. package/dist/cli/commands/solver-nets.js.map +1 -1
  68. package/dist/cli/commands/solver-plugins-block.d.ts +33 -0
  69. package/dist/cli/commands/solver-plugins-block.js +118 -0
  70. package/dist/cli/commands/solver-plugins-block.js.map +1 -0
  71. package/dist/cli/commands/solver-plugins-feedback.d.ts +72 -0
  72. package/dist/cli/commands/solver-plugins-feedback.js +262 -0
  73. package/dist/cli/commands/solver-plugins-feedback.js.map +1 -0
  74. package/dist/cli/commands/solver-plugins-read.d.ts +54 -0
  75. package/dist/cli/commands/solver-plugins-read.js +259 -0
  76. package/dist/cli/commands/solver-plugins-read.js.map +1 -0
  77. package/dist/cli/commands/solver-plugins.d.ts +35 -0
  78. package/dist/cli/commands/solver-plugins.js +399 -2
  79. package/dist/cli/commands/solver-plugins.js.map +1 -1
  80. package/dist/cli/commands/tasks.js +15 -2
  81. package/dist/cli/commands/tasks.js.map +1 -1
  82. package/dist/cli/index.js +2 -0
  83. package/dist/cli/index.js.map +1 -1
  84. package/dist/cli/task-native-readiness.d.ts +7 -0
  85. package/dist/cli/task-native-readiness.js +7 -5
  86. package/dist/cli/task-native-readiness.js.map +1 -1
  87. package/dist/config.d.ts +183 -232
  88. package/dist/config.js +232 -107
  89. package/dist/config.js.map +1 -1
  90. package/dist/daemon/ai-units-gate.d.ts +54 -0
  91. package/dist/daemon/ai-units-gate.js +82 -0
  92. package/dist/daemon/ai-units-gate.js.map +1 -0
  93. package/dist/daemon/creator.js +13 -0
  94. package/dist/daemon/creator.js.map +1 -1
  95. package/dist/daemon/daemon.d.ts +10 -0
  96. package/dist/daemon/daemon.js +203 -30
  97. package/dist/daemon/daemon.js.map +1 -1
  98. package/dist/daemon/gate-logger.d.ts +9 -0
  99. package/dist/daemon/gate-logger.js +2 -0
  100. package/dist/daemon/gate-logger.js.map +1 -0
  101. package/dist/daemon/readiness-gate.d.ts +1 -4
  102. package/dist/daemon/readiness-gate.js.map +1 -1
  103. package/dist/daemon/spend-cap-gate.d.ts +40 -0
  104. package/dist/daemon/spend-cap-gate.js +46 -0
  105. package/dist/daemon/spend-cap-gate.js.map +1 -0
  106. package/dist/dashboard/assets/index-CvQbxjxy.js +351 -0
  107. package/dist/dashboard/assets/index-CzKxvMcU.css +32 -0
  108. package/dist/dashboard/index.html +2 -2
  109. package/dist/discovery/http.js +328 -1
  110. package/dist/discovery/http.js.map +1 -1
  111. package/dist/discovery/onchain.js +42 -4
  112. package/dist/discovery/onchain.js.map +1 -1
  113. package/dist/discovery/types.d.ts +129 -0
  114. package/dist/discovery/types.js.map +1 -1
  115. package/dist/discovery/with-fallback.js +27 -0
  116. package/dist/discovery/with-fallback.js.map +1 -1
  117. package/dist/earning/bootstrap.d.ts +8 -3
  118. package/dist/earning/bootstrap.js +36 -13
  119. package/dist/earning/bootstrap.js.map +1 -1
  120. package/dist/earning/safe-adapter.js +23 -11
  121. package/dist/earning/safe-adapter.js.map +1 -1
  122. package/dist/earning/types.d.ts +6 -6
  123. package/dist/earning/viem-clients.d.ts +11 -4
  124. package/dist/earning/viem-clients.js +14 -5
  125. package/dist/earning/viem-clients.js.map +1 -1
  126. package/dist/erc8004/identity.d.ts +19 -3
  127. package/dist/erc8004/identity.js +21 -6
  128. package/dist/erc8004/identity.js.map +1 -1
  129. package/dist/erc8004/index.d.ts +1 -1
  130. package/dist/erc8004/index.js.map +1 -1
  131. package/dist/events/types.d.ts +2 -2
  132. package/dist/harnesses/cost-estimates.d.ts +10 -31
  133. package/dist/harnesses/cost-estimates.js +11 -43
  134. package/dist/harnesses/cost-estimates.js.map +1 -1
  135. package/dist/harnesses/engine/engine.d.ts +9 -3
  136. package/dist/harnesses/engine/engine.js +51 -6
  137. package/dist/harnesses/engine/engine.js.map +1 -1
  138. package/dist/harnesses/impls/hermes-agent/bootstrap.js +4 -2
  139. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  140. package/dist/harnesses/impls/hermes-agent/config-builder.d.ts +1 -1
  141. package/dist/harnesses/impls/hermes-agent/config-builder.js +4 -2
  142. package/dist/harnesses/impls/hermes-agent/config-builder.js.map +1 -1
  143. package/dist/harnesses/impls/hermes-agent/harness.js +2 -2
  144. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  145. package/dist/harnesses/impls/hermes-agent/prompt.d.ts +6 -6
  146. package/dist/harnesses/impls/hermes-agent/prompt.js +6 -6
  147. package/dist/harnesses/impls/learner/adapters/claude-code.d.ts +17 -0
  148. package/dist/harnesses/impls/learner/adapters/claude-code.js +113 -14
  149. package/dist/harnesses/impls/learner/adapters/claude-code.js.map +1 -1
  150. package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +9 -0
  151. package/dist/harnesses/impls/learner/adapters/codex-code.js +30 -8
  152. package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
  153. package/dist/harnesses/impls/learner/harness.d.ts +9 -0
  154. package/dist/harnesses/impls/learner/harness.js +12 -3
  155. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  156. package/dist/harnesses/impls/learner/harvest.d.ts +1 -1
  157. package/dist/harnesses/impls/learner/harvest.js +23 -5
  158. package/dist/harnesses/impls/learner/harvest.js.map +1 -1
  159. package/dist/harnesses/impls/learner/restoration-patch.d.ts +2 -2
  160. package/dist/harnesses/impls/learner/restoration-patch.js +25 -6
  161. package/dist/harnesses/impls/learner/restoration-patch.js.map +1 -1
  162. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +21 -1
  163. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
  164. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +74 -5
  165. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +103 -32
  166. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -1
  167. package/dist/harnesses/readiness-registry.d.ts +7 -0
  168. package/dist/harnesses/readiness-registry.js +9 -0
  169. package/dist/harnesses/readiness-registry.js.map +1 -1
  170. package/dist/learner/revert-decision.d.ts +59 -0
  171. package/dist/learner/revert-decision.js +53 -0
  172. package/dist/learner/revert-decision.js.map +1 -0
  173. package/dist/learner/revert-stats.d.ts +24 -0
  174. package/dist/learner/revert-stats.js +44 -0
  175. package/dist/learner/revert-stats.js.map +1 -0
  176. package/dist/main.js +177 -104
  177. package/dist/main.js.map +1 -1
  178. package/dist/mcp/get-codedigest-reward.d.ts +13 -0
  179. package/dist/mcp/get-codedigest-reward.js +23 -0
  180. package/dist/mcp/get-codedigest-reward.js.map +1 -0
  181. package/dist/mcp/server.js +23 -0
  182. package/dist/mcp/server.js.map +1 -1
  183. package/dist/observability/debug-report-assemble.d.ts +43 -0
  184. package/dist/observability/debug-report-assemble.js +80 -0
  185. package/dist/observability/debug-report-assemble.js.map +1 -0
  186. package/dist/observability/emit-event.d.ts +9 -2
  187. package/dist/observability/emit-event.js +36 -2
  188. package/dist/observability/emit-event.js.map +1 -1
  189. package/dist/observability/file-logger.d.ts +69 -0
  190. package/dist/observability/file-logger.js +177 -0
  191. package/dist/observability/file-logger.js.map +1 -0
  192. package/dist/observability/redact-secrets.d.ts +65 -0
  193. package/dist/observability/redact-secrets.js +300 -0
  194. package/dist/observability/redact-secrets.js.map +1 -0
  195. package/dist/observability/tar.d.ts +30 -0
  196. package/dist/observability/tar.js +102 -0
  197. package/dist/observability/tar.js.map +1 -0
  198. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +18 -1
  199. package/dist/plugins/learner/skills/learn/promoter-prompt.md +72 -1
  200. package/dist/preflight/pidfile-liveness.d.ts +44 -0
  201. package/dist/preflight/pidfile-liveness.js +103 -0
  202. package/dist/preflight/pidfile-liveness.js.map +1 -0
  203. package/dist/preflight/rpc-network.d.ts +40 -0
  204. package/dist/preflight/rpc-network.js +67 -1
  205. package/dist/preflight/rpc-network.js.map +1 -1
  206. package/dist/rpc/transport.d.ts +109 -0
  207. package/dist/rpc/transport.js +220 -0
  208. package/dist/rpc/transport.js.map +1 -0
  209. package/dist/scripts/donation-consumption-acceptance.js +7 -28
  210. package/dist/scripts/donation-consumption-acceptance.js.map +1 -1
  211. package/dist/scripts/swe-rebench-v2-pytest-missing.json +16 -0
  212. package/dist/solver-nets/prediction-operator-ux.d.ts +1 -2
  213. package/dist/solver-nets/prediction-operator-ux.js +56 -53
  214. package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
  215. package/dist/solver-nets/registry.d.ts +19 -1
  216. package/dist/solver-nets/registry.js +37 -24
  217. package/dist/solver-nets/registry.js.map +1 -1
  218. package/dist/solver-types/_swe-rebench-v2-pool.d.ts +9 -2
  219. package/dist/solver-types/_swe-rebench-v2-pool.js +15 -20
  220. package/dist/solver-types/_swe-rebench-v2-pool.js.map +1 -1
  221. package/dist/solver-types/_swe-rebench-v2-state.d.ts +15 -0
  222. package/dist/solver-types/_swe-rebench-v2-state.js +19 -0
  223. package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
  224. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +80 -2
  225. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +242 -21
  226. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  227. package/dist/solver-types/swe-rebench-v2-auto.d.ts +20 -11
  228. package/dist/solver-types/swe-rebench-v2-auto.js +64 -19
  229. package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
  230. package/dist/solver-types/swe-rebench-v2.d.ts +8 -2
  231. package/dist/solver-types/swe-rebench-v2.js +127 -11
  232. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  233. package/dist/solvernets/launched-record-dispatcher.d.ts +4 -0
  234. package/dist/solvernets/launched-record-dispatcher.js +10 -4
  235. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  236. package/dist/solvernets/registry-client-erc8004.js +11 -0
  237. package/dist/solvernets/registry-client-erc8004.js.map +1 -1
  238. package/dist/solvernets/store.d.ts +2 -2
  239. package/dist/spend/ai-units-config.d.ts +37 -0
  240. package/dist/spend/ai-units-config.js +26 -0
  241. package/dist/spend/ai-units-config.js.map +1 -0
  242. package/dist/spend/ai-units.d.ts +86 -0
  243. package/dist/spend/ai-units.js +163 -0
  244. package/dist/spend/ai-units.js.map +1 -0
  245. package/dist/spend/cost-surface-status.d.ts +10 -0
  246. package/dist/spend/cost-surface-status.js +22 -0
  247. package/dist/spend/cost-surface-status.js.map +1 -0
  248. package/dist/spend/credential.d.ts +8 -0
  249. package/dist/spend/credential.js +30 -0
  250. package/dist/spend/credential.js.map +1 -0
  251. package/dist/spend/daemon-config.d.ts +13 -0
  252. package/dist/spend/daemon-config.js +24 -0
  253. package/dist/spend/daemon-config.js.map +1 -0
  254. package/dist/spend/pricing.d.ts +16 -0
  255. package/dist/spend/pricing.js +26 -0
  256. package/dist/spend/pricing.js.map +1 -0
  257. package/dist/spend/record.d.ts +13 -0
  258. package/dist/spend/record.js +36 -0
  259. package/dist/spend/record.js.map +1 -0
  260. package/dist/spend/usage.d.ts +27 -0
  261. package/dist/spend/usage.js +113 -0
  262. package/dist/spend/usage.js.map +1 -0
  263. package/dist/store/store.d.ts +101 -0
  264. package/dist/store/store.js +304 -4
  265. package/dist/store/store.js.map +1 -1
  266. package/dist/trajectory/transcript-parsers/codex-session.d.ts +12 -6
  267. package/dist/trajectory/transcript-parsers/codex-session.js +114 -13
  268. package/dist/trajectory/transcript-parsers/codex-session.js.map +1 -1
  269. package/dist/trajectory/transcript-parsers/types.d.ts +8 -8
  270. package/dist/trajectory/transcript-session-dirs.d.ts +18 -0
  271. package/dist/trajectory/transcript-session-dirs.js +85 -0
  272. package/dist/trajectory/transcript-session-dirs.js.map +1 -0
  273. package/dist/trajectory/transcript-watcher.d.ts +20 -1
  274. package/dist/trajectory/transcript-watcher.js +98 -32
  275. package/dist/trajectory/transcript-watcher.js.map +1 -1
  276. package/dist/tx-retry.d.ts +15 -0
  277. package/dist/tx-retry.js +37 -7
  278. package/dist/tx-retry.js.map +1 -1
  279. package/dist/types/payloads/portfolio-v0.d.ts +3 -3
  280. package/dist/types/payloads/prediction-apy-v0.d.ts +3 -3
  281. package/dist/types/payloads/prediction-v0.d.ts +12 -12
  282. package/package.json +10 -3
  283. package/plugins/learner/skills/learn/consolidator-prompt.md +18 -1
  284. package/plugins/learner/skills/learn/promoter-prompt.md +72 -1
  285. package/plugins/swe-rebench-v2-diffmin/README.md +10 -9
  286. package/plugins/swe-rebench-v2-diffmin/jinn.plugin.json +1 -1
  287. package/plugins/swe-rebench-v2-diffmin/skills/diffmin/SKILL.md +15 -10
  288. package/plugins/swe-rebench-v2-diffmin/skills/test-map/SKILL.md +10 -12
  289. package/plugins/swe-rebench-v2-runtime/.claude-plugin/plugin.json +1 -1
  290. package/plugins/swe-rebench-v2-runtime/.codex-plugin/plugin.json +3 -3
  291. package/plugins/swe-rebench-v2-runtime/README.md +6 -6
  292. package/plugins/swe-rebench-v2-runtime/jinn.plugin.json +2 -3
  293. package/plugins/swe-rebench-v2-runtime/skills/task/SKILL.md +81 -0
  294. package/dist/dashboard/assets/index-BUlE8F3Y.js +0 -330
  295. package/dist/dashboard/assets/index-blqc7eqq.css +0 -32
  296. package/plugins/swe-rebench-v2-runtime/skills/orient/SKILL.md +0 -29
  297. package/plugins/swe-rebench-v2-runtime/skills/plan/SKILL.md +0 -53
@@ -1,7 +1,7 @@
1
1
  import { Buffer } from 'node:buffer';
2
2
  import { uploadToIpfs } from '../adapters/mech/ipfs.js';
3
3
  import { canonicalJson } from '../harnesses/engine/canonical-json.js';
4
- import { codeDigestSha256ToBytes32, modeStringToFlag, } from '../erc8004/index.js';
4
+ import { codeDigestSha256ToBytes32, encodeExecutionPayloadV2, modeStringToFlag, } from '../erc8004/index.js';
5
5
  import { publishCaptureEnvelope, sha256Hex, } from './publish.js';
6
6
  import { CaptureRateLimiter, } from './rate-limit.js';
7
7
  import { CapturePublishRateLimitError, CapturePublishUnavailableError } from '../api/captures.js';
@@ -71,7 +71,7 @@ export function createLiveCapturePublisher(options) {
71
71
  priceUsdc: '0',
72
72
  };
73
73
  },
74
- anchorEnvelope: async ({ envelopeCid, envelopeHash, envelope }) => {
74
+ anchorEnvelope: async ({ metadataKey, envelopeCid, envelopeHash, envelope }) => {
75
75
  const payload = {
76
76
  version: 2,
77
77
  tier: 0,
@@ -82,12 +82,32 @@ export function createLiveCapturePublisher(options) {
82
82
  implName: envelope.executor.implName,
83
83
  modeFlag: modeStringToFlag(envelope.executor.mode ?? 'train'),
84
84
  };
85
- const txHash = await options.identityPublisher.publishContentV2({
85
+ const payloadHex = encodeExecutionPayloadV2(payload);
86
+ const publisher = options.identityPublisher;
87
+ const { txHash, blockNumber } = await publisher.publishContentV2({
86
88
  kind: 'capture',
87
89
  cid: envelopeCid,
88
90
  payload,
89
91
  });
90
- return { txHash };
92
+ try {
93
+ options.store.saveErc8004Anchor({
94
+ envelopeId: envelopeHash,
95
+ envelopeCid,
96
+ contentKind: 'capture',
97
+ metadataKey,
98
+ agentId: publisher.agent.toString(),
99
+ chainId: publisher.chainId,
100
+ identityRegistryAddress: publisher.registry,
101
+ txHash,
102
+ blockNumber,
103
+ payloadHex,
104
+ anchoredAt: Math.floor(Date.now() / 1000),
105
+ });
106
+ }
107
+ catch (err) {
108
+ console.warn(`[captures] failed to record erc8004 anchor for ${envelopeCid} (non-fatal): ${err instanceof Error ? err.message : err}`);
109
+ }
110
+ return { txHash, blockNumber };
91
111
  },
92
112
  };
93
113
  const result = await publishCaptureEnvelope(sessionId, publishDeps);
@@ -1 +1 @@
1
- {"version":3,"file":"live-publisher.js","sourceRoot":"","sources":["../../src/captures/live-publisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"live-publisher.js","sourceRoot":"","sources":["../../src/captures/live-publisher.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ export interface CaptureEnvelopeAnchorInput {
49
49
  }
50
50
  export interface CaptureEnvelopeAnchorResult {
51
51
  txHash?: `0x${string}`;
52
- blockNumber?: number;
52
+ blockNumber?: number | null;
53
53
  }
54
54
  export interface PublishCaptureResult {
55
55
  capture: PendingCaptureRow;
@@ -2,6 +2,9 @@
2
2
  * Classify ethers/json-rpc read failures so bootstrap reconciliation does not
3
3
  * treat flaky RPC as "service missing on-chain".
4
4
  */
5
+ /** Backoff delays between transient eth_read retries (issue #546). */
6
+ export declare const TRANSIENT_ETH_READ_RETRY_DELAYS_MS: readonly [250, 500, 1000];
7
+ export declare const TRANSIENT_ETH_READ_MAX_ATTEMPTS = 3;
5
8
  /**
6
9
  * True when a static call / eth_call likely failed due to transport/RPC, not an
7
10
  * authoritative on-chain revert. In this case fleet reconcile must not clear state.
@@ -17,3 +20,12 @@ export declare function isTransientEthReadError(error: unknown): boolean;
17
20
  * See jinn-mono #325.
18
21
  */
19
22
  export declare function isRateLimitedEthReadError(error: unknown): boolean;
23
+ /**
24
+ * Retry a single eth_read RPC (getBlockNumber, getLogs, eth_call) on transient
25
+ * transport failures. Used by the on-chain discovery floor for MetadataSet
26
+ * scans so a single rate-limit does not degrade manifest hash verification.
27
+ * See jinn-mono #546.
28
+ */
29
+ export declare function withTransientEthReadRetry<T>(fn: () => Promise<T>, options?: {
30
+ sleepFn?: (ms: number) => Promise<void>;
31
+ }): Promise<T>;
@@ -2,7 +2,10 @@
2
2
  * Classify ethers/json-rpc read failures so bootstrap reconciliation does not
3
3
  * treat flaky RPC as "service missing on-chain".
4
4
  */
5
- import { flattenErrorMessage } from './tx-retry.js';
5
+ import { flattenErrorMessage, sleep } from './tx-retry.js';
6
+ /** Backoff delays between transient eth_read retries (issue #546). */
7
+ export const TRANSIENT_ETH_READ_RETRY_DELAYS_MS = [250, 500, 1000];
8
+ export const TRANSIENT_ETH_READ_MAX_ATTEMPTS = 3;
6
9
  /**
7
10
  * True when a static call / eth_call likely failed due to transport/RPC, not an
8
11
  * authoritative on-chain revert. In this case fleet reconcile must not clear state.
@@ -55,4 +58,26 @@ export function isRateLimitedEthReadError(error) {
55
58
  msg.includes('rate limit') ||
56
59
  msg.includes('too many requests'));
57
60
  }
61
+ /**
62
+ * Retry a single eth_read RPC (getBlockNumber, getLogs, eth_call) on transient
63
+ * transport failures. Used by the on-chain discovery floor for MetadataSet
64
+ * scans so a single rate-limit does not degrade manifest hash verification.
65
+ * See jinn-mono #546.
66
+ */
67
+ export async function withTransientEthReadRetry(fn, options) {
68
+ const sleepFn = options?.sleepFn ?? sleep;
69
+ for (let attempt = 0; attempt < TRANSIENT_ETH_READ_MAX_ATTEMPTS; attempt++) {
70
+ try {
71
+ return await fn();
72
+ }
73
+ catch (err) {
74
+ const isLastAttempt = attempt === TRANSIENT_ETH_READ_MAX_ATTEMPTS - 1;
75
+ if (!isTransientEthReadError(err) || isLastAttempt) {
76
+ throw err;
77
+ }
78
+ await sleepFn(TRANSIENT_ETH_READ_RETRY_DELAYS_MS[attempt]);
79
+ }
80
+ }
81
+ throw new Error('withTransientEthReadRetry: exhausted attempts without throwing');
82
+ }
58
83
  //# sourceMappingURL=chain-read-errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chain-read-errors.js","sourceRoot":"","sources":["../src/chain-read-errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,MAAM,GAAG,GAAG,KAA0B,CAAC;IACvC,IAAI,GAAG,EAAE,IAAI,KAAK,cAAc,IAAI,GAAG,EAAE,IAAI,KAAK,SAAS,IAAI,GAAG,EAAE,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAErD,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC3F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IACE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACtB,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACvC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACtB,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACjC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IACE,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;QACzB,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC9B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC5B,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC7B,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAClC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IACE,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC3B,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACnC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EACnB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACrD,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAClC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"chain-read-errors.js","sourceRoot":"","sources":["../src/chain-read-errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { CommandModule } from '../command.js';
2
+ import type { DiscoveryAPI } from '../../discovery/types.js';
3
+ export interface CodedigestRevertCheckDeps {
4
+ buildDiscovery: (configPath?: string) => DiscoveryAPI;
5
+ }
6
+ export declare function isValidCommitSha(sha: string): boolean;
7
+ /**
8
+ * Hash a commit's tree the way production stamps codeDigest: export the tree
9
+ * with `git archive` (no `.git`) and re-hash with the same deterministic hasher
10
+ * `hashImplStateDir` uses, ignoring `.git`. Returns the `sha256:`-prefixed
11
+ * digest the indexer stores. Keeping this in TS means the Consolidator prompt
12
+ * never reimplements the hasher (the single largest correctness risk, #764).
13
+ */
14
+ export declare function codeDigestForCommit(implStateDir: string, sha: string): Promise<string>;
15
+ /**
16
+ * Validate the optional numeric CLI flags (#764 M1). Each is only checked when
17
+ * the operator actually provided it (omitted → policy default applies). Returns
18
+ * the first failure, or `undefined` when all provided flags are in range.
19
+ * - min-samples: finite integer >= 1
20
+ * - window: finite integer >= 1
21
+ * - alpha: finite number in the open interval (0, 1)
22
+ */
23
+ export declare function validateNumericFlags(flags: {
24
+ minSamples?: string;
25
+ window?: string;
26
+ alpha?: string;
27
+ }): {
28
+ field: string;
29
+ message: string;
30
+ } | undefined;
31
+ export declare function createCodedigestRevertCheckCommand(deps?: CodedigestRevertCheckDeps): CommandModule;
32
+ declare const command: CommandModule;
33
+ export default command;
@@ -0,0 +1,249 @@
1
+ import { parseArgs } from 'node:util';
2
+ import { execFileSync } from 'node:child_process';
3
+ import { mkdtempSync, rmSync } from 'node:fs';
4
+ import { tmpdir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import { emitEnvelope } from '../../errors/envelope.js';
7
+ import { loadConfig } from '../../config.js';
8
+ import { createDiscoveryAPI } from '../../discovery/factory.js';
9
+ import { DiscoveryUnavailableError } from '../../discovery/types.js';
10
+ import { hashImplStateDir } from '../../harnesses/freeze.js';
11
+ import { decideRevert, resolveRevertPolicy, } from '../../learner/revert-decision.js';
12
+ const PRODUCTION_DEPS = {
13
+ buildDiscovery: (configPath) => {
14
+ const config = loadConfig(configPath);
15
+ const chainId = config.network === 'testnet' ? 84532 : 8453;
16
+ // Mirror the daemon's floor wiring (solver-plugins.ts discoveryApiFactory):
17
+ // only rpcUrl + chainId are needed for the http primary; the floor is never
18
+ // routed for getCodeDigestRewards (withFallback propagates the error).
19
+ return createDiscoveryAPI(config.discovery ?? { mode: 'onchain' }, {
20
+ rpcUrl: config.rpcUrl,
21
+ chainId,
22
+ });
23
+ },
24
+ };
25
+ /**
26
+ * A commit sha as it appears in the operator's local `improvePromotionsDir`
27
+ * records: 7-64 hex chars (abbreviated through full git object ids). Rejecting
28
+ * anything else BEFORE handing the value to `git archive` closes the
29
+ * argument-injection class where a leading-dash value (`--output=...`,
30
+ * `--remote=...`) is parsed as a git option instead of a tree-ish (#764 M1).
31
+ */
32
+ const COMMIT_SHA_RE = /^[0-9a-fA-F]{7,64}$/;
33
+ export function isValidCommitSha(sha) {
34
+ return COMMIT_SHA_RE.test(sha);
35
+ }
36
+ /**
37
+ * Hash a commit's tree the way production stamps codeDigest: export the tree
38
+ * with `git archive` (no `.git`) and re-hash with the same deterministic hasher
39
+ * `hashImplStateDir` uses, ignoring `.git`. Returns the `sha256:`-prefixed
40
+ * digest the indexer stores. Keeping this in TS means the Consolidator prompt
41
+ * never reimplements the hasher (the single largest correctness risk, #764).
42
+ */
43
+ export async function codeDigestForCommit(implStateDir, sha) {
44
+ if (!isValidCommitSha(sha)) {
45
+ throw new Error(`commit sha must be 7-64 hex chars (got "${sha}")`);
46
+ }
47
+ const exportDir = mkdtempSync(join(tmpdir(), 'cd-export-'));
48
+ try {
49
+ // `--` is an end-of-options separator: even though `sha` is shape-validated
50
+ // above, this is defense-in-depth so `git archive` can never parse a
51
+ // leading-dash value as an option (#764 M1, git argument-injection class).
52
+ const tar = execFileSync('git', ['archive', '--', sha], { cwd: implStateDir, maxBuffer: 1 << 28 });
53
+ execFileSync('tar', ['-x', '-C', exportDir], { input: tar });
54
+ const hex = await hashImplStateDir(exportDir, { ignoreRelPaths: ['.git'] });
55
+ return `sha256:${hex}`;
56
+ }
57
+ finally {
58
+ rmSync(exportDir, { recursive: true, force: true });
59
+ }
60
+ }
61
+ /**
62
+ * Validate the optional numeric CLI flags (#764 M1). Each is only checked when
63
+ * the operator actually provided it (omitted → policy default applies). Returns
64
+ * the first failure, or `undefined` when all provided flags are in range.
65
+ * - min-samples: finite integer >= 1
66
+ * - window: finite integer >= 1
67
+ * - alpha: finite number in the open interval (0, 1)
68
+ */
69
+ export function validateNumericFlags(flags) {
70
+ const isPositiveInt = (n) => Number.isFinite(n) && Number.isInteger(n) && n >= 1;
71
+ if (flags.minSamples !== undefined) {
72
+ const n = Number(flags.minSamples);
73
+ if (!isPositiveInt(n)) {
74
+ return { field: 'min-samples', message: `--min-samples must be a finite integer >= 1 (got "${flags.minSamples}")` };
75
+ }
76
+ }
77
+ if (flags.window !== undefined) {
78
+ const n = Number(flags.window);
79
+ if (!isPositiveInt(n)) {
80
+ return { field: 'window', message: `--window must be a finite integer >= 1 (got "${flags.window}")` };
81
+ }
82
+ }
83
+ if (flags.alpha !== undefined) {
84
+ const n = Number(flags.alpha);
85
+ if (!Number.isFinite(n) || n <= 0 || n >= 1) {
86
+ return { field: 'alpha', message: `--alpha must be a finite number in (0, 1) (got "${flags.alpha}")` };
87
+ }
88
+ }
89
+ return undefined;
90
+ }
91
+ function toAggregate(codeDigest, rows) {
92
+ const found = rows.find((r) => r.codeDigest === codeDigest);
93
+ if (!found)
94
+ return { codeDigest, attempts: 0, passes: 0, passRate: 0 };
95
+ return { codeDigest, attempts: found.attempts, passes: found.passes, passRate: found.passRate };
96
+ }
97
+ export function createCodedigestRevertCheckCommand(deps = PRODUCTION_DEPS) {
98
+ return {
99
+ name: 'codedigest-revert-check',
100
+ summary: 'Decide whether an Improve commit regressed the pass rate (per-codeDigest, #764)',
101
+ helpText: `Usage:
102
+ jinn codedigest-revert-check --code-digest <sha256:...> --parent-code-digest <sha256:...> [options]
103
+ jinn codedigest-revert-check --impl-state-dir <path> --commit <sha> --parent <sha> [options]
104
+
105
+ Options:
106
+ --operator 0x.. Restrict aggregates to attempts this operator Safe claimed
107
+ --solvernet <cid> Restrict to a SolverNet manifest CID
108
+ --min-samples N Minimum indexed attempts per arm (default 30)
109
+ --alpha A Two-sided significance threshold (default 0.05)
110
+ --window N Recent-attempts window per codeDigest (default 200)
111
+ --json Emit JSON (default)
112
+
113
+ Either pass two codeDigests directly, OR pass --impl-state-dir + --commit + --parent
114
+ to have the command export each commit's tree (git archive, no .git) and hash it
115
+ the way production stamps codeDigest — so the caller never reimplements the hasher.
116
+
117
+ Emits a JSON decision: { withCommit, atParent, delta, pValue, significant, recommendRevert, reason }.
118
+ On indexer outage emits recommendRevert=false reason=discovery_unavailable (the Consolidator then skips reverts).`,
119
+ async run(ctx) {
120
+ let parsed;
121
+ try {
122
+ parsed = parseArgs({
123
+ args: ctx.argv,
124
+ options: {
125
+ 'code-digest': { type: 'string' },
126
+ 'parent-code-digest': { type: 'string' },
127
+ 'impl-state-dir': { type: 'string' },
128
+ commit: { type: 'string' },
129
+ parent: { type: 'string' },
130
+ operator: { type: 'string' },
131
+ solvernet: { type: 'string' },
132
+ 'min-samples': { type: 'string' },
133
+ alpha: { type: 'string' },
134
+ window: { type: 'string' },
135
+ config: { type: 'string' },
136
+ json: { type: 'boolean', default: true },
137
+ },
138
+ allowPositionals: false,
139
+ });
140
+ }
141
+ catch (err) {
142
+ emitEnvelope({
143
+ code: 'invalid_invocation',
144
+ message: err instanceof Error ? err.message : String(err),
145
+ exampleCli: 'jinn codedigest-revert-check --code-digest sha256:.. --parent-code-digest sha256:..',
146
+ details: { field: 'flags' },
147
+ }, { writer: ctx.writer, exit: ctx.exit });
148
+ return;
149
+ }
150
+ // Resolve the two codeDigests — either supplied directly or hashed from
151
+ // an impl-state-dir git history.
152
+ let child = parsed.values['code-digest'];
153
+ let parent = parsed.values['parent-code-digest'];
154
+ const implStateDir = parsed.values['impl-state-dir'];
155
+ const commitSha = parsed.values.commit;
156
+ const parentSha = parsed.values.parent;
157
+ if ((!child || !parent) && implStateDir && commitSha && parentSha) {
158
+ // Validate sha shape before any git invocation. A leading-dash value
159
+ // would be parsed by `git archive` as an option, not a tree-ish
160
+ // (#764 M1 argument-injection). Reject with the command's existing
161
+ // invalid_invocation envelope (exit 11) rather than letting it flow
162
+ // into git.
163
+ const badSha = !isValidCommitSha(commitSha)
164
+ ? { field: 'commit', value: commitSha }
165
+ : !isValidCommitSha(parentSha)
166
+ ? { field: 'parent', value: parentSha }
167
+ : undefined;
168
+ if (badSha) {
169
+ emitEnvelope({
170
+ code: 'invalid_invocation',
171
+ message: `--${badSha.field} sha must be 7-64 hex chars (got "${badSha.value}")`,
172
+ exampleCli: 'jinn codedigest-revert-check --impl-state-dir <path> --commit <sha> --parent <sha>',
173
+ details: { field: badSha.field },
174
+ }, { writer: ctx.writer, exit: ctx.exit });
175
+ return;
176
+ }
177
+ try {
178
+ [child, parent] = await Promise.all([
179
+ codeDigestForCommit(implStateDir, commitSha),
180
+ codeDigestForCommit(implStateDir, parentSha),
181
+ ]);
182
+ }
183
+ catch (err) {
184
+ emitEnvelope({
185
+ code: 'invalid_invocation',
186
+ message: `failed to hash commit trees: ${err instanceof Error ? err.message : String(err)}`,
187
+ exampleCli: 'jinn codedigest-revert-check --impl-state-dir <path> --commit <sha> --parent <sha>',
188
+ details: { field: 'impl-state-dir' },
189
+ }, { writer: ctx.writer, exit: ctx.exit });
190
+ return;
191
+ }
192
+ }
193
+ if (!child || !parent) {
194
+ emitEnvelope({
195
+ code: 'invalid_invocation',
196
+ message: 'provide either --code-digest + --parent-code-digest, or --impl-state-dir + --commit + --parent',
197
+ exampleCli: 'jinn codedigest-revert-check --code-digest sha256:.. --parent-code-digest sha256:..',
198
+ details: { field: 'flags' },
199
+ }, { writer: ctx.writer, exit: ctx.exit });
200
+ return;
201
+ }
202
+ // Validate provided numeric flags. `Number('abc')` is NaN, `--alpha 0`
203
+ // silently disables every revert, `--window 0` is nonsensical — reject
204
+ // out-of-range input with the command's existing invalid_invocation
205
+ // envelope (exit 11) rather than letting a bad value flow into the policy.
206
+ const numErr = validateNumericFlags({
207
+ minSamples: parsed.values['min-samples'],
208
+ window: parsed.values.window,
209
+ alpha: parsed.values.alpha,
210
+ });
211
+ if (numErr) {
212
+ emitEnvelope({
213
+ code: 'invalid_invocation',
214
+ message: numErr.message,
215
+ exampleCli: 'jinn codedigest-revert-check --code-digest sha256:.. --parent-code-digest sha256:.. --alpha 0.05 --window 200 --min-samples 30',
216
+ details: { field: numErr.field },
217
+ }, { writer: ctx.writer, exit: ctx.exit });
218
+ return;
219
+ }
220
+ const policy = resolveRevertPolicy({
221
+ ...(parsed.values['min-samples'] ? { minSamplesPerArm: Number(parsed.values['min-samples']) } : {}),
222
+ ...(parsed.values.alpha ? { alpha: Number(parsed.values.alpha) } : {}),
223
+ ...(parsed.values.window ? { recentAttemptsWindow: Number(parsed.values.window) } : {}),
224
+ });
225
+ const discovery = deps.buildDiscovery(parsed.values.config);
226
+ let rows;
227
+ try {
228
+ rows = await discovery.getCodeDigestRewards({
229
+ codeDigests: [child, parent],
230
+ window: policy.recentAttemptsWindow,
231
+ ...(parsed.values.operator ? { operator: parsed.values.operator } : {}),
232
+ ...(parsed.values.solvernet ? { solverNetManifestCid: parsed.values.solvernet } : {}),
233
+ });
234
+ }
235
+ catch (err) {
236
+ if (err instanceof DiscoveryUnavailableError) {
237
+ ctx.writer.write(JSON.stringify({ recommendRevert: false, reason: 'discovery_unavailable', message: err.message }) + '\n');
238
+ return;
239
+ }
240
+ throw err;
241
+ }
242
+ const decision = decideRevert({ withCommit: toAggregate(child, rows), atParent: toAggregate(parent, rows) }, policy);
243
+ ctx.writer.write(JSON.stringify(decision) + '\n');
244
+ },
245
+ };
246
+ }
247
+ const command = createCodedigestRevertCheckCommand();
248
+ export default command;
249
+ //# sourceMappingURL=codedigest-revert-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codedigest-revert-check.js","sourceRoot":"","sources":["../../../src/cli/commands/codedigest-revert-check.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export declare function resolveValidatePoolInstanceIds(flags: {
4
4
  instancesFile?: string;
5
5
  seedPositive?: boolean;
6
6
  knownBad?: boolean;
7
+ knownPytestMissing?: boolean;
7
8
  }): string[];
8
9
  export declare function describeSweRebenchV2PoolFreshness(opts: {
9
10
  stateDir: string;