@jinn-network/client 0.1.6 → 0.1.7

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 (288) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +23 -4
  3. package/deployments/deployment-jinn-mvi-l1-sepolia.json +23 -4
  4. package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +5 -4
  5. package/dist/adapters/mech/adapter.d.ts +38 -1
  6. package/dist/adapters/mech/adapter.js +241 -54
  7. package/dist/adapters/mech/adapter.js.map +1 -1
  8. package/dist/adapters/mech/contracts.d.ts +17 -4
  9. package/dist/adapters/mech/contracts.js +8 -2
  10. package/dist/adapters/mech/contracts.js.map +1 -1
  11. package/dist/adapters/mech/safe-revert.d.ts +20 -0
  12. package/dist/adapters/mech/safe-revert.js +12 -4
  13. package/dist/adapters/mech/safe-revert.js.map +1 -1
  14. package/dist/adapters/mech/safe.d.ts +5 -1
  15. package/dist/adapters/mech/safe.js +27 -8
  16. package/dist/adapters/mech/safe.js.map +1 -1
  17. package/dist/adapters/mech/verdict-code.d.ts +1 -0
  18. package/dist/adapters/mech/verdict-code.js +18 -0
  19. package/dist/adapters/mech/verdict-code.js.map +1 -1
  20. package/dist/api/admin-endpoint.d.ts +15 -3
  21. package/dist/api/admin-endpoint.js +24 -2
  22. package/dist/api/admin-endpoint.js.map +1 -1
  23. package/dist/api/bootstrap-endpoint.js +49 -0
  24. package/dist/api/bootstrap-endpoint.js.map +1 -1
  25. package/dist/api/codex-doctor-endpoint.d.ts +73 -0
  26. package/dist/api/codex-doctor-endpoint.js +177 -0
  27. package/dist/api/codex-doctor-endpoint.js.map +1 -0
  28. package/dist/api/discovery-endpoint.d.ts +1 -0
  29. package/dist/api/discovery-endpoint.js +26 -0
  30. package/dist/api/discovery-endpoint.js.map +1 -1
  31. package/dist/api/fleet-build.d.ts +1 -0
  32. package/dist/api/fleet-build.js +2 -1
  33. package/dist/api/fleet-build.js.map +1 -1
  34. package/dist/api/gather-status.d.ts +11 -0
  35. package/dist/api/gather-status.js +400 -4
  36. package/dist/api/gather-status.js.map +1 -1
  37. package/dist/api/hermes-doctor-endpoint.d.ts +117 -0
  38. package/dist/api/hermes-doctor-endpoint.js +229 -23
  39. package/dist/api/hermes-doctor-endpoint.js.map +1 -1
  40. package/dist/api/launcher-status.d.ts +21 -16
  41. package/dist/api/launcher-status.js +2 -1
  42. package/dist/api/launcher-status.js.map +1 -1
  43. package/dist/api/portfolio-v0-build.d.ts +10 -0
  44. package/dist/api/portfolio-v0-build.js +24 -5
  45. package/dist/api/portfolio-v0-build.js.map +1 -1
  46. package/dist/api/prediction-v1-build.d.ts +10 -0
  47. package/dist/api/prediction-v1-build.js +7 -1
  48. package/dist/api/prediction-v1-build.js.map +1 -1
  49. package/dist/api/server.d.ts +31 -1
  50. package/dist/api/server.js +68 -1
  51. package/dist/api/server.js.map +1 -1
  52. package/dist/api/setup-endpoints.d.ts +16 -0
  53. package/dist/api/setup-endpoints.js +78 -4
  54. package/dist/api/setup-endpoints.js.map +1 -1
  55. package/dist/api/setup-retry-endpoint.d.ts +19 -0
  56. package/dist/api/setup-retry-endpoint.js +32 -0
  57. package/dist/api/setup-retry-endpoint.js.map +1 -0
  58. package/dist/api/solvernets-endpoints.d.ts +8 -0
  59. package/dist/api/solvernets-endpoints.js +71 -43
  60. package/dist/api/solvernets-endpoints.js.map +1 -1
  61. package/dist/api/status-build.d.ts +72 -0
  62. package/dist/api/status-build.js +73 -18
  63. package/dist/api/status-build.js.map +1 -1
  64. package/dist/api/task-run-routing.d.ts +7 -0
  65. package/dist/api/task-run-routing.js +12 -0
  66. package/dist/api/task-run-routing.js.map +1 -0
  67. package/dist/api/task-runs-build.d.ts +21 -0
  68. package/dist/api/task-runs-build.js +14 -1
  69. package/dist/api/task-runs-build.js.map +1 -1
  70. package/dist/build-info.json +4 -4
  71. package/dist/build-meta.json +1 -1
  72. package/dist/chain-read-errors.d.ts +10 -0
  73. package/dist/chain-read-errors.js +15 -0
  74. package/dist/chain-read-errors.js.map +1 -1
  75. package/dist/cli/commands/auth.js +1 -1
  76. package/dist/cli/commands/auth.js.map +1 -1
  77. package/dist/cli/commands/create.js +3 -2
  78. package/dist/cli/commands/create.js.map +1 -1
  79. package/dist/cli/commands/doctor.d.ts +2 -0
  80. package/dist/cli/commands/doctor.js +2 -0
  81. package/dist/cli/commands/doctor.js.map +1 -1
  82. package/dist/cli/commands/rewards.js +11 -7
  83. package/dist/cli/commands/rewards.js.map +1 -1
  84. package/dist/cli/commands/solver-nets.js +24 -9
  85. package/dist/cli/commands/solver-nets.js.map +1 -1
  86. package/dist/cli/commands/status.js +1 -1
  87. package/dist/cli/commands/status.js.map +1 -1
  88. package/dist/cli/commands/tasks.js +86 -9
  89. package/dist/cli/commands/tasks.js.map +1 -1
  90. package/dist/cli/commands/update.d.ts +10 -0
  91. package/dist/cli/commands/update.js +36 -0
  92. package/dist/cli/commands/update.js.map +1 -1
  93. package/dist/cli/introspection-context.js +5 -0
  94. package/dist/cli/introspection-context.js.map +1 -1
  95. package/dist/cli/task-native-readiness.d.ts +3 -1
  96. package/dist/cli/task-native-readiness.js +28 -6
  97. package/dist/cli/task-native-readiness.js.map +1 -1
  98. package/dist/config.d.ts +106 -5
  99. package/dist/config.js +97 -18
  100. package/dist/config.js.map +1 -1
  101. package/dist/daemon/checkpoint-loop.d.ts +48 -0
  102. package/dist/daemon/checkpoint-loop.js +76 -0
  103. package/dist/daemon/checkpoint-loop.js.map +1 -0
  104. package/dist/daemon/creator.d.ts +1 -1
  105. package/dist/daemon/creator.js +7 -3
  106. package/dist/daemon/creator.js.map +1 -1
  107. package/dist/daemon/daemon.d.ts +19 -0
  108. package/dist/daemon/daemon.js +68 -1
  109. package/dist/daemon/daemon.js.map +1 -1
  110. package/dist/daemon/eviction-loop.d.ts +40 -0
  111. package/dist/daemon/eviction-loop.js +67 -0
  112. package/dist/daemon/eviction-loop.js.map +1 -0
  113. package/dist/daemon/jinn-claim-loop-wiring.d.ts +33 -0
  114. package/dist/daemon/jinn-claim-loop-wiring.js +40 -0
  115. package/dist/daemon/jinn-claim-loop-wiring.js.map +1 -0
  116. package/dist/daemon/jinn-claim-loop.d.ts +24 -17
  117. package/dist/daemon/jinn-claim-loop.js +77 -23
  118. package/dist/daemon/jinn-claim-loop.js.map +1 -1
  119. package/dist/daemon/skip-log-dedup.d.ts +69 -0
  120. package/dist/daemon/skip-log-dedup.js +106 -0
  121. package/dist/daemon/skip-log-dedup.js.map +1 -0
  122. package/dist/dashboard/assets/index-BUlE8F3Y.js +330 -0
  123. package/dist/dashboard/assets/index-blqc7eqq.css +32 -0
  124. package/dist/dashboard/index.html +2 -2
  125. package/dist/discovery/factory.d.ts +17 -5
  126. package/dist/discovery/factory.js +46 -18
  127. package/dist/discovery/factory.js.map +1 -1
  128. package/dist/discovery/http.js +142 -3
  129. package/dist/discovery/http.js.map +1 -1
  130. package/dist/discovery/onchain.d.ts +5 -0
  131. package/dist/discovery/onchain.js +407 -15
  132. package/dist/discovery/onchain.js.map +1 -1
  133. package/dist/discovery/types.d.ts +45 -1
  134. package/dist/discovery/types.js +8 -10
  135. package/dist/discovery/types.js.map +1 -1
  136. package/dist/discovery/with-fallback.d.ts +7 -0
  137. package/dist/discovery/with-fallback.js +10 -0
  138. package/dist/discovery/with-fallback.js.map +1 -1
  139. package/dist/earning/bootstrap.d.ts +92 -1
  140. package/dist/earning/bootstrap.js +203 -63
  141. package/dist/earning/bootstrap.js.map +1 -1
  142. package/dist/earning/contracts.d.ts +14 -0
  143. package/dist/earning/contracts.js +17 -5
  144. package/dist/earning/contracts.js.map +1 -1
  145. package/dist/earning/funding-plan.js +27 -18
  146. package/dist/earning/funding-plan.js.map +1 -1
  147. package/dist/earning/jinn-rewards.d.ts +46 -0
  148. package/dist/earning/jinn-rewards.js +32 -0
  149. package/dist/earning/jinn-rewards.js.map +1 -1
  150. package/dist/earning/safe-adapter.d.ts +2 -0
  151. package/dist/earning/safe-adapter.js +26 -12
  152. package/dist/earning/safe-adapter.js.map +1 -1
  153. package/dist/earning/store.d.ts +8 -0
  154. package/dist/earning/store.js.map +1 -1
  155. package/dist/earning/testnet-setup-migration.d.ts +12 -0
  156. package/dist/earning/testnet-setup-migration.js +27 -1
  157. package/dist/earning/testnet-setup-migration.js.map +1 -1
  158. package/dist/earning/types.d.ts +15 -0
  159. package/dist/erc8004/reputation.d.ts +8 -0
  160. package/dist/erc8004/reputation.js +22 -3
  161. package/dist/erc8004/reputation.js.map +1 -1
  162. package/dist/harnesses/cost-estimates.d.ts +145 -0
  163. package/dist/harnesses/cost-estimates.js +297 -0
  164. package/dist/harnesses/cost-estimates.js.map +1 -0
  165. package/dist/harnesses/engine/engine.d.ts +72 -0
  166. package/dist/harnesses/engine/engine.js +105 -8
  167. package/dist/harnesses/engine/engine.js.map +1 -1
  168. package/dist/harnesses/engine/persistence.d.ts +51 -1
  169. package/dist/harnesses/engine/persistence.js +118 -5
  170. package/dist/harnesses/engine/persistence.js.map +1 -1
  171. package/dist/harnesses/engine/work-dir-reaper.d.ts +65 -0
  172. package/dist/harnesses/engine/work-dir-reaper.js +100 -0
  173. package/dist/harnesses/engine/work-dir-reaper.js.map +1 -0
  174. package/dist/harnesses/impls/hermes-agent/adapter.js +40 -0
  175. package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
  176. package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +20 -0
  177. package/dist/harnesses/impls/hermes-agent/bootstrap.js +40 -6
  178. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  179. package/dist/harnesses/impls/hermes-agent/harness.d.ts +59 -1
  180. package/dist/harnesses/impls/hermes-agent/harness.js +104 -0
  181. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  182. package/dist/harnesses/impls/index.d.ts +7 -0
  183. package/dist/harnesses/impls/index.js +16 -1
  184. package/dist/harnesses/impls/index.js.map +1 -1
  185. package/dist/harnesses/impls/learner/harness.d.ts +38 -4
  186. package/dist/harnesses/impls/learner/harness.js +96 -2
  187. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  188. package/dist/harnesses/impls/learner/plugin-path.d.ts +0 -13
  189. package/dist/harnesses/impls/learner/plugin-path.js +35 -15
  190. package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
  191. package/dist/harnesses/impls/learner/types.d.ts +11 -0
  192. package/dist/harnesses/impls/stub.d.ts +58 -0
  193. package/dist/harnesses/impls/stub.js +89 -0
  194. package/dist/harnesses/impls/stub.js.map +1 -0
  195. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.d.ts +69 -50
  196. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +178 -93
  197. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
  198. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.d.ts +12 -1
  199. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +121 -7
  200. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
  201. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +15 -0
  202. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +54 -4
  203. package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -1
  204. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +6 -0
  205. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +1 -1
  206. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
  207. package/dist/harnesses/readiness-registry.js +9 -1
  208. package/dist/harnesses/readiness-registry.js.map +1 -1
  209. package/dist/main.js +371 -82
  210. package/dist/main.js.map +1 -1
  211. package/dist/observability/emit-event.d.ts +1 -1
  212. package/dist/observability/emit-event.js.map +1 -1
  213. package/dist/operator-errors.d.ts +7 -0
  214. package/dist/operator-errors.js +13 -1
  215. package/dist/operator-errors.js.map +1 -1
  216. package/dist/plugins/learner/.claude-plugin/plugin.json +9 -0
  217. package/dist/plugins/learner/.codex-plugin/plugin.json +39 -0
  218. package/dist/plugins/learner/AGENTS.md +40 -0
  219. package/dist/plugins/learner/CLAUDE.md +33 -0
  220. package/dist/plugins/learner/README.md +59 -0
  221. package/dist/plugins/learner/hooks/hooks.json +16 -0
  222. package/dist/plugins/learner/hooks/session-start +38 -0
  223. package/dist/plugins/learner/skills/learn/SKILL.md +412 -0
  224. package/dist/plugins/learner/skills/learn/analyst-prompt.md +68 -0
  225. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +94 -0
  226. package/dist/plugins/learner/skills/learn/explorer-prompt.md +53 -0
  227. package/dist/plugins/learner/skills/learn/planner-prompt.md +87 -0
  228. package/dist/plugins/learner/skills/learn/promoter-prompt.md +113 -0
  229. package/dist/plugins/learner/skills/learn/step-worker-prompt.md +47 -0
  230. package/dist/plugins/learner/skills/learn/strategist-prompt.md +85 -0
  231. package/dist/restart-daemon.d.ts +90 -0
  232. package/dist/restart-daemon.js +95 -0
  233. package/dist/restart-daemon.js.map +1 -0
  234. package/dist/setup/halt-mode.d.ts +14 -0
  235. package/dist/setup/halt-mode.js +17 -0
  236. package/dist/setup/halt-mode.js.map +1 -0
  237. package/dist/solver-nets/prediction-operator-ux.js +43 -3
  238. package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
  239. package/dist/solver-nets/registry.d.ts +1 -0
  240. package/dist/solver-nets/registry.js +1 -1
  241. package/dist/solver-nets/registry.js.map +1 -1
  242. package/dist/solver-types/_swe-rebench-v2-pool-cache.d.ts +58 -0
  243. package/dist/solver-types/_swe-rebench-v2-pool-cache.js +87 -0
  244. package/dist/solver-types/_swe-rebench-v2-pool-cache.js.map +1 -0
  245. package/dist/solver-types/_swe-rebench-v2-substrate.d.ts +1 -0
  246. package/dist/solver-types/_swe-rebench-v2-substrate.js +10 -0
  247. package/dist/solver-types/_swe-rebench-v2-substrate.js.map +1 -1
  248. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +65 -0
  249. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +243 -26
  250. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  251. package/dist/solver-types/swe-rebench-v2-auto.d.ts +22 -7
  252. package/dist/solver-types/swe-rebench-v2-auto.js +45 -20
  253. package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
  254. package/dist/solver-types/swe-rebench-v2.d.ts +13 -2
  255. package/dist/solver-types/swe-rebench-v2.js +233 -94
  256. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  257. package/dist/solvernets/daemon-init.d.ts +10 -2
  258. package/dist/solvernets/daemon-init.js +22 -2
  259. package/dist/solvernets/daemon-init.js.map +1 -1
  260. package/dist/solvernets/launched-record-dispatcher.js +35 -7
  261. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  262. package/dist/solvernets/store.d.ts +5 -0
  263. package/dist/solvernets/store.js +1 -0
  264. package/dist/solvernets/store.js.map +1 -1
  265. package/dist/store/store.d.ts +15 -0
  266. package/dist/store/store.js +118 -3
  267. package/dist/store/store.js.map +1 -1
  268. package/dist/tasks/sources.d.ts +18 -1
  269. package/dist/tasks/sources.js +33 -5
  270. package/dist/tasks/sources.js.map +1 -1
  271. package/dist/tx-retry.d.ts +151 -19
  272. package/dist/tx-retry.js +286 -32
  273. package/dist/tx-retry.js.map +1 -1
  274. package/dist/types/payloads/prediction-apy-v0.d.ts +5 -5
  275. package/dist/types/payloads/prediction-v0.d.ts +5 -5
  276. package/dist/types/task-document.d.ts +392 -0
  277. package/dist/types/task-document.js +10 -0
  278. package/dist/types/task-document.js.map +1 -1
  279. package/dist/types/task.d.ts +28 -0
  280. package/dist/util/extract-tx-hash.d.ts +14 -0
  281. package/dist/util/extract-tx-hash.js +19 -0
  282. package/dist/util/extract-tx-hash.js.map +1 -0
  283. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +1 -1
  284. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +3 -0
  285. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -0
  286. package/package.json +29 -12
  287. package/dist/dashboard/assets/index-DOlzFN8a.css +0 -32
  288. package/dist/dashboard/assets/index-NkZ7CTAT.js +0 -140
@@ -29,6 +29,16 @@ export const TaskClaimPolicySchema = z.object({
29
29
  submissionDeadlineTs: z.number().int().optional(),
30
30
  claimLeaseTtlSeconds: z.number().int().positive().default(30 * 60),
31
31
  policyHook: HexStringSchema.optional(),
32
+ /**
33
+ * On-chain `evaluationPolicy.requiredVerdicts` — the number of verdict
34
+ * claim slots per attempt. Optional; the adapter defaults it to 1. A value
35
+ * > 1 lets an honest evaluator still claim and deliver a verdict slot when
36
+ * other (e.g. non-delivering) evaluators have already taken some slots —
37
+ * the per-evaluator cap (`maxVerdictsPerEvaluator: 1`) means no single
38
+ * evaluator can monopolise all of them. Useful on a shared/adversarial
39
+ * network where verdict slots may be squatted.
40
+ */
41
+ requiredVerdicts: z.number().int().positive().optional(),
32
42
  }).passthrough();
33
43
  const NoLegacyKindSchema = z.record(z.unknown()).superRefine((spec, ctx) => {
34
44
  if (Object.prototype.hasOwnProperty.call(spec, 'kind')) {
@@ -1 +1 @@
1
- {"version":3,"file":"task-document.js","sourceRoot":"","sources":["../../src/types/task-document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-document.js","sourceRoot":"","sources":["../../src/types/task-document.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,7 @@ export declare const TaskSchema: z.ZodObject<{
52
52
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
53
53
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
54
54
  policyHook: z.ZodOptional<z.ZodString>;
55
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
55
56
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
56
57
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
57
58
  maxClaims: z.ZodNumber;
@@ -61,6 +62,7 @@ export declare const TaskSchema: z.ZodObject<{
61
62
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
62
63
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
63
64
  policyHook: z.ZodOptional<z.ZodString>;
65
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
64
66
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
65
67
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
66
68
  maxClaims: z.ZodNumber;
@@ -70,6 +72,7 @@ export declare const TaskSchema: z.ZodObject<{
70
72
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
71
73
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
72
74
  policyHook: z.ZodOptional<z.ZodString>;
75
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
73
76
  }, z.ZodTypeAny, "passthrough">>>;
74
77
  signedTask: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodObject<{
75
78
  signature: z.ZodObject<{
@@ -117,6 +120,7 @@ export declare const TaskSchema: z.ZodObject<{
117
120
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
118
121
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
119
122
  policyHook: z.ZodOptional<z.ZodString>;
123
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
120
124
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
121
125
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
122
126
  maxClaims: z.ZodNumber;
@@ -126,6 +130,7 @@ export declare const TaskSchema: z.ZodObject<{
126
130
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
127
131
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
128
132
  policyHook: z.ZodOptional<z.ZodString>;
133
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
129
134
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
130
135
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
131
136
  maxClaims: z.ZodNumber;
@@ -135,6 +140,7 @@ export declare const TaskSchema: z.ZodObject<{
135
140
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
136
141
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
137
142
  policyHook: z.ZodOptional<z.ZodString>;
143
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
138
144
  }, z.ZodTypeAny, "passthrough">>;
139
145
  creator: z.ZodObject<{
140
146
  safeAddress: z.ZodString;
@@ -193,6 +199,7 @@ export declare const TaskSchema: z.ZodObject<{
193
199
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
194
200
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
195
201
  policyHook: z.ZodOptional<z.ZodString>;
202
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
196
203
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
197
204
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
198
205
  maxClaims: z.ZodNumber;
@@ -202,6 +209,7 @@ export declare const TaskSchema: z.ZodObject<{
202
209
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
203
210
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
204
211
  policyHook: z.ZodOptional<z.ZodString>;
212
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
205
213
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
206
214
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
207
215
  maxClaims: z.ZodNumber;
@@ -211,6 +219,7 @@ export declare const TaskSchema: z.ZodObject<{
211
219
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
212
220
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
213
221
  policyHook: z.ZodOptional<z.ZodString>;
222
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
214
223
  }, z.ZodTypeAny, "passthrough">>;
215
224
  creator: z.ZodObject<{
216
225
  safeAddress: z.ZodString;
@@ -269,6 +278,7 @@ export declare const TaskSchema: z.ZodObject<{
269
278
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
270
279
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
271
280
  policyHook: z.ZodOptional<z.ZodString>;
281
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
272
282
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
273
283
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
274
284
  maxClaims: z.ZodNumber;
@@ -278,6 +288,7 @@ export declare const TaskSchema: z.ZodObject<{
278
288
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
279
289
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
280
290
  policyHook: z.ZodOptional<z.ZodString>;
291
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
281
292
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
282
293
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
283
294
  maxClaims: z.ZodNumber;
@@ -287,6 +298,7 @@ export declare const TaskSchema: z.ZodObject<{
287
298
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
288
299
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
289
300
  policyHook: z.ZodOptional<z.ZodString>;
301
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
290
302
  }, z.ZodTypeAny, "passthrough">>;
291
303
  creator: z.ZodObject<{
292
304
  safeAddress: z.ZodString;
@@ -345,6 +357,7 @@ export declare const TaskSchema: z.ZodObject<{
345
357
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
346
358
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
347
359
  policyHook: z.ZodOptional<z.ZodString>;
360
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
348
361
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
349
362
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
350
363
  maxClaims: z.ZodNumber;
@@ -354,6 +367,7 @@ export declare const TaskSchema: z.ZodObject<{
354
367
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
355
368
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
356
369
  policyHook: z.ZodOptional<z.ZodString>;
370
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
357
371
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
358
372
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
359
373
  maxClaims: z.ZodNumber;
@@ -363,6 +377,7 @@ export declare const TaskSchema: z.ZodObject<{
363
377
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
364
378
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
365
379
  policyHook: z.ZodOptional<z.ZodString>;
380
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
366
381
  }, z.ZodTypeAny, "passthrough">>;
367
382
  creator: z.ZodObject<{
368
383
  safeAddress: z.ZodString;
@@ -421,6 +436,7 @@ export declare const TaskSchema: z.ZodObject<{
421
436
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
422
437
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
423
438
  policyHook: z.ZodOptional<z.ZodString>;
439
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
424
440
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
425
441
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
426
442
  maxClaims: z.ZodNumber;
@@ -430,6 +446,7 @@ export declare const TaskSchema: z.ZodObject<{
430
446
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
431
447
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
432
448
  policyHook: z.ZodOptional<z.ZodString>;
449
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
433
450
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
434
451
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
435
452
  maxClaims: z.ZodNumber;
@@ -439,6 +456,7 @@ export declare const TaskSchema: z.ZodObject<{
439
456
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
440
457
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
441
458
  policyHook: z.ZodOptional<z.ZodString>;
459
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
442
460
  }, z.ZodTypeAny, "passthrough">>;
443
461
  creator: z.ZodObject<{
444
462
  safeAddress: z.ZodString;
@@ -481,6 +499,7 @@ export declare const TaskSchema: z.ZodObject<{
481
499
  claimWindowEndTs?: number | undefined;
482
500
  submissionDeadlineTs?: number | undefined;
483
501
  policyHook?: string | undefined;
502
+ requiredVerdicts?: number | undefined;
484
503
  } & {
485
504
  [k: string]: unknown;
486
505
  };
@@ -535,6 +554,7 @@ export declare const TaskSchema: z.ZodObject<{
535
554
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
536
555
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
537
556
  policyHook: z.ZodOptional<z.ZodString>;
557
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
538
558
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
539
559
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
540
560
  maxClaims: z.ZodNumber;
@@ -544,6 +564,7 @@ export declare const TaskSchema: z.ZodObject<{
544
564
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
545
565
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
546
566
  policyHook: z.ZodOptional<z.ZodString>;
567
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
547
568
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
548
569
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
549
570
  maxClaims: z.ZodNumber;
@@ -553,6 +574,7 @@ export declare const TaskSchema: z.ZodObject<{
553
574
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
554
575
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
555
576
  policyHook: z.ZodOptional<z.ZodString>;
577
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
556
578
  }, z.ZodTypeAny, "passthrough">>;
557
579
  creator: z.ZodObject<{
558
580
  safeAddress: z.ZodString;
@@ -589,6 +611,7 @@ export declare const TaskSchema: z.ZodObject<{
589
611
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
590
612
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
591
613
  policyHook: z.ZodOptional<z.ZodString>;
614
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
592
615
  }, z.ZodTypeAny, "passthrough"> | undefined;
593
616
  context?: Record<string, unknown> | undefined;
594
617
  attemptId?: string | undefined;
@@ -624,6 +647,7 @@ export declare const TaskSchema: z.ZodObject<{
624
647
  claimWindowEndTs?: number | undefined;
625
648
  submissionDeadlineTs?: number | undefined;
626
649
  policyHook?: string | undefined;
650
+ requiredVerdicts?: number | undefined;
627
651
  } & {
628
652
  [k: string]: unknown;
629
653
  };
@@ -656,6 +680,7 @@ export declare const TaskSchema: z.ZodObject<{
656
680
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
657
681
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
658
682
  policyHook: z.ZodOptional<z.ZodString>;
683
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
659
684
  }, z.ZodTypeAny, "passthrough"> | undefined;
660
685
  context?: Record<string, unknown> | undefined;
661
686
  attemptId?: string | undefined;
@@ -707,6 +732,7 @@ export declare const TaskSchema: z.ZodObject<{
707
732
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
708
733
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
709
734
  policyHook: z.ZodOptional<z.ZodString>;
735
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
710
736
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
711
737
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
712
738
  maxClaims: z.ZodNumber;
@@ -716,6 +742,7 @@ export declare const TaskSchema: z.ZodObject<{
716
742
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
717
743
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
718
744
  policyHook: z.ZodOptional<z.ZodString>;
745
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
719
746
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
720
747
  mode: z.ZodDefault<z.ZodEnum<["exclusive", "parallel"]>>;
721
748
  maxClaims: z.ZodNumber;
@@ -725,6 +752,7 @@ export declare const TaskSchema: z.ZodObject<{
725
752
  submissionDeadlineTs: z.ZodOptional<z.ZodNumber>;
726
753
  claimLeaseTtlSeconds: z.ZodDefault<z.ZodNumber>;
727
754
  policyHook: z.ZodOptional<z.ZodString>;
755
+ requiredVerdicts: z.ZodOptional<z.ZodNumber>;
728
756
  }, z.ZodTypeAny, "passthrough">>;
729
757
  creator: z.ZodObject<{
730
758
  safeAddress: z.ZodString;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared utility for extracting an Ethereum transaction hash from a string.
3
+ *
4
+ * The same regex is needed by the bootstrap state machine (to surface a
5
+ * block-explorer link in fatal error envelopes) and by the SPA Onboarding
6
+ * region (to render that link). The SPA cannot import from this file directly
7
+ * due to bundler boundaries, so a copy lives at:
8
+ * client/src/dashboard/spa/src/lib/extract-tx-hash.ts
9
+ * Keep the two in sync when changing the regex or signature.
10
+ */
11
+ /**
12
+ * Returns the first Ethereum transaction hash found in `s`, or `null` if none.
13
+ */
14
+ export declare function extractTxHashFromString(s: string): string | null;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared utility for extracting an Ethereum transaction hash from a string.
3
+ *
4
+ * The same regex is needed by the bootstrap state machine (to surface a
5
+ * block-explorer link in fatal error envelopes) and by the SPA Onboarding
6
+ * region (to render that link). The SPA cannot import from this file directly
7
+ * due to bundler boundaries, so a copy lives at:
8
+ * client/src/dashboard/spa/src/lib/extract-tx-hash.ts
9
+ * Keep the two in sync when changing the regex or signature.
10
+ */
11
+ const TX_HASH_RE = /(0x[a-fA-F0-9]{64})/;
12
+ /**
13
+ * Returns the first Ethereum transaction hash found in `s`, or `null` if none.
14
+ */
15
+ export function extractTxHashFromString(s) {
16
+ const m = TX_HASH_RE.exec(s);
17
+ return m ? m[1] ?? null : null;
18
+ }
19
+ //# sourceMappingURL=extract-tx-hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-tx-hash.js","sourceRoot":"","sources":["../../src/util/extract-tx-hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,CAAS;IAC/C,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC"}
@@ -82,7 +82,7 @@ export const SWE_REBENCH_V2_V1_SOLVER_NET_CONTRACT = {
82
82
  },
83
83
  claimPolicyDefaults: {
84
84
  mode: 'parallel',
85
- maxClaims: 50,
85
+ maxClaims: 5,
86
86
  maxClaimsPerOperator: 5,
87
87
  claimLeaseTtlSeconds: 60 * 60, // 1 hour per Task — coding tasks need more time than predictions
88
88
  },
@@ -348,6 +348,7 @@ export declare const SolverNetManifestV1Schema: z.ZodObject<{
348
348
  solutionPriceWei: z.ZodString;
349
349
  verdictPriceWei: z.ZodString;
350
350
  openRoles: z.ZodArray<z.ZodEnum<["solver", "evaluator"]>, "many">;
351
+ generatorConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
351
352
  registry: z.ZodOptional<z.ZodObject<{
352
353
  manifestCid: z.ZodOptional<z.ZodString>;
353
354
  registryUrl: z.ZodOptional<z.ZodString>;
@@ -447,6 +448,7 @@ export declare const SolverNetManifestV1Schema: z.ZodObject<{
447
448
  manifestCid?: string | undefined;
448
449
  registryUrl?: string | undefined;
449
450
  } | undefined;
451
+ generatorConfig?: Record<string, unknown> | undefined;
450
452
  }, {
451
453
  description: string;
452
454
  schemaVersion: "solvernet.manifest.v1";
@@ -521,6 +523,7 @@ export declare const SolverNetManifestV1Schema: z.ZodObject<{
521
523
  manifestCid?: string | undefined;
522
524
  registryUrl?: string | undefined;
523
525
  } | undefined;
526
+ generatorConfig?: Record<string, unknown> | undefined;
524
527
  }>;
525
528
  /**
526
529
  * The canonical TypeScript shape of a SolverNetManifestV1, derived from the
@@ -103,6 +103,7 @@ export const SolverNetManifestV1Schema = z.object({
103
103
  solutionPriceWei: NumericStringZ,
104
104
  verdictPriceWei: NumericStringZ,
105
105
  openRoles: z.array(z.enum(['solver', 'evaluator'])).min(1),
106
+ generatorConfig: z.record(z.string(), z.unknown()).optional(),
106
107
  registry: RegistryZ.optional(),
107
108
  createdAt: z.string().min(1),
108
109
  launchedAt: z.string().min(1),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jinn-network/client",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "Jinn protocol client — headless daemon for the restoration training loop",
5
5
  "type": "module",
6
6
  "packageManager": "yarn@4.13.0",
@@ -24,16 +24,16 @@
24
24
  "main": "./dist/index.js",
25
25
  "types": "./dist/index.d.ts",
26
26
  "files": [
27
- "dist/",
28
- "deployments/",
29
- "plugins/",
30
- "skills/",
31
- "templates/",
32
- "docker-compose.yml",
33
- "CONTRIBUTING.md",
34
- "CHANGELOG.md",
35
- "README.md",
36
- "LICENSE"
27
+ "/dist/",
28
+ "/deployments/",
29
+ "/plugins/",
30
+ "/skills/",
31
+ "/templates/",
32
+ "/docker-compose.yml",
33
+ "/CONTRIBUTING.md",
34
+ "/CHANGELOG.md",
35
+ "/README.md",
36
+ "/LICENSE"
37
37
  ],
38
38
  "publishConfig": {
39
39
  "access": "public"
@@ -45,7 +45,7 @@
45
45
  "jinn": "tsx src/bin/jinn.ts",
46
46
  "dev": "yarn build && node dist/bin/jinn.js",
47
47
  "build:sdk": "yarn --cwd ../packages/sdk install --immutable && yarn --cwd ../packages/sdk build",
48
- "build": "yarn build:sdk && yarn build:spa && tsc && chmod +x dist/bin/jinn.js && rm -rf dist/dashboard && mkdir -p dist/dashboard && cp -R src/dashboard/spa/dist/. dist/dashboard/ && rm -rf dist/templates && cp -R templates dist/templates && mkdir -p dist/scripts && cp scripts/fix-node-pty.mjs scripts/swe-rebench-v2-seed-pool.json scripts/swe-rebench-v2-known-bad.json dist/scripts/ && node scripts/vendor-sdk.mjs && node scripts/write-dist-build-meta.mjs",
48
+ "build": "yarn build:sdk && yarn build:spa && tsc && chmod +x dist/bin/jinn.js && rm -rf dist/dashboard && mkdir -p dist/dashboard && cp -R src/dashboard/spa/dist/. dist/dashboard/ && rm -rf dist/templates && cp -R templates dist/templates && rm -rf dist/plugins/learner && mkdir -p dist/plugins && cp -R plugins/learner dist/plugins/learner && mkdir -p dist/scripts && cp scripts/fix-node-pty.mjs scripts/swe-rebench-v2-seed-pool.json scripts/swe-rebench-v2-known-bad.json dist/scripts/ && node scripts/vendor-sdk.mjs && node scripts/write-dist-build-meta.mjs",
49
49
  "typecheck": "yarn build:sdk && tsc --noEmit",
50
50
  "test": "yarn build:sdk && vitest run",
51
51
  "lint:no-late-mount": "node scripts/check-no-late-route-mount.mjs",
@@ -58,6 +58,17 @@
58
58
  "pack:smoke": "node scripts/smoke-test-pack.mjs",
59
59
  "release:client": "node scripts/release-client.mjs",
60
60
  "release:operator-gate": "yarn staking && yarn e2e",
61
+ "release:tier-1": "tsx scripts/release/run-tier-1.ts",
62
+ "release:tier-1:T1.1": "vitest run --config vitest.release-tier-1.config.ts test/release/tier-1/T1.1-bootstrap-fresh-anvil.test.ts",
63
+ "release:tier-1:T1.2": "vitest run --config vitest.release-tier-1.config.ts test/release/tier-1/T1.2-harness-readiness-contract.test.ts",
64
+ "release:tier-1:T1.3": "vitest run test/release/tier-1/T1.3-indexer-round-trip.test.ts",
65
+ "release:tier-1:T1.4": "playwright test --config=playwright.config.ts test/dashboard/release-prep/spa-route-smoke.e2e.test.ts",
66
+ "release:tier-2": "tsx scripts/release/run-tier-2.ts",
67
+ "release:tier-2:T2.1": "vitest run test/release/tier-2/T2.1-cross-op-donation.test.ts",
68
+ "release:tier-2:T2.2": "vitest run test/release/tier-2/T2.2-producer-evaluator.test.ts",
69
+ "release:tier-2:T2.3": "playwright test --config=playwright.config.ts test/dashboard/multi-op/launcher-join-flow.e2e.test.ts",
70
+ "release:tier-3": "tsx scripts/release/run-tier-3.ts",
71
+ "release:tier-3:T3.1": "JINN_T31_REAL=1 vitest run test/release/tier-3/T3.1-producer-evaluator-real.test.ts",
61
72
  "release:donation-consumption": "node dist/scripts/donation-consumption-acceptance.js",
62
73
  "setup:testnet-acceptance-operator": "node scripts/setup-testnet-acceptance-operator-docker.mjs",
63
74
  "setup:testnet-acceptance-operator:docker": "node scripts/setup-testnet-acceptance-operator-docker.mjs",
@@ -66,6 +77,7 @@
66
77
  "release:testnet-acceptance:docker": "node scripts/testnet-acceptance-docker.mjs",
67
78
  "release:testnet-acceptance:host": "node scripts/testnet-acceptance.mjs",
68
79
  "status": "tsx scripts/status.ts",
80
+ "cleanup:engine-work": "tsx scripts/cleanup-engine-work.ts",
69
81
  "e2e": "tsx test/e2e/validate.ts",
70
82
  "e2e:task-first-local": "tsx test/e2e/task-first-local.ts",
71
83
  "e2e:claude-code-learner": "tsx test/e2e/claude-code-learner-portfolio-v0.ts",
@@ -79,6 +91,11 @@
79
91
  "e2e:capture": "tsx scripts/e2e-capture-validate.ts",
80
92
  "staking": "tsx test/e2e/staking.ts",
81
93
  "stolas": "tsx test/e2e/stolas.ts",
94
+ "substrate:adopt": "tsx scripts/release/substrate-adopt.ts",
95
+ "substrate:copy": "tsx scripts/release/substrate-copy.ts",
96
+ "substrate:reap": "tsx scripts/release/substrate-reap.ts",
97
+ "substrate:topup": "tsx scripts/release/substrate-topup.ts",
98
+ "substrate:verify": "tsx scripts/release/substrate-verify.ts",
82
99
  "withdraw": "tsx scripts/withdraw.ts",
83
100
  "build:spa": "yarn workspace @jinn-network/operator-spa build",
84
101
  "dev:spa": "yarn workspace @jinn-network/operator-spa dev",
@@ -1,32 +0,0 @@
1
- /**
2
- * Copyright (c) 2014 The xterm.js authors. All rights reserved.
3
- * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
4
- * https://github.com/chjj/term.js
5
- * @license MIT
6
- *
7
- * Permission is hereby granted, free of charge, to any person obtaining a copy
8
- * of this software and associated documentation files (the "Software"), to deal
9
- * in the Software without restriction, including without limitation the rights
10
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- * copies of the Software, and to permit persons to whom the Software is
12
- * furnished to do so, subject to the following conditions:
13
- *
14
- * The above copyright notice and this permission notice shall be included in
15
- * all copies or substantial portions of the Software.
16
- *
17
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
- * THE SOFTWARE.
24
- *
25
- * Originally forked from (with the author's permission):
26
- * Fabrice Bellard's javascript vt100 for jslinux:
27
- * http://bellard.org/jslinux/
28
- * Copyright (c) 2011 Fabrice Bellard
29
- * The original design remains. The terminal itself
30
- * has been extended to include xterm CSI codes, among
31
- * other features.
32
- */.xterm{cursor:text;position:relative;-moz-user-select:none;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility,.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:double underline;text-decoration:double underline}.xterm-underline-3{-webkit-text-decoration:wavy underline;text-decoration:wavy underline}.xterm-underline-4{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.xterm-underline-5{-webkit-text-decoration:dashed underline;text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-10{top:2.5rem}.col-span-12{grid-column:span 12 / span 12}.m-3{margin:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-12{margin-left:3rem}.ml-auto{margin-left:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-1\.5{height:.375rem}.h-full{height:100%}.max-h-64{max-height:16rem}.min-h-screen{min-height:100vh}.w-full{width:100%}.max-w-\[1280px\]{max-width:1280px}.max-w-\[34ch\]{max-width:34ch}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-\[3rem_1fr_auto\]{grid-template-columns:3rem 1fr auto}.grid-cols-\[68px_84px_1fr\]{grid-template-columns:68px 84px 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.border{border-width:1px}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.pb-5{padding-bottom:1.25rem}.pr-2{padding-right:.5rem}.text-center{text-align:center}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--bg: #0c1628;--bg-elevated: #142340;--bg-sunken: #070d18;--fg: #f2f7fc;--fg-muted: #a4b0c2;--fg-dim: #7d8ba3;--border: #1f3a66;--border-strong: #7aa7dc;--border-accent: #c9a048;--accent-sky: #7aa7dc;--accent-sky-hover: #a8c8ea;--accent-gold: #dcb866;--accent-gold-hover: #ead08e;--vow-green: #6a9b8f;--wane: #b8802f;--break-red: #a85a5a;--seer-violet: #7a6db0;--surface: var(--bg-elevated);--surface-sunken: var(--bg-sunken);--radius-1: 4px;--radius-2: 6px;--radius-3: 10px;--radius-pill: 999px;--serif: "Instrument Serif", "Times New Roman", serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}html,body{background:var(--bg);color:var(--fg);font-family:var(--mono);font-feature-settings:"ss01" on,"ss02" on,"cv01" on}#root{min-height:100vh}.j-label{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:500;color:var(--fg-dim)}.j-display{font-family:var(--serif);font-weight:400;letter-spacing:0;line-height:1.05}.j-mono{font-family:var(--mono)}.j-rule{height:1px;background:var(--border)}.j-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-2)}.j-card-bare{background:transparent;border:1px solid var(--border);border-radius:var(--radius-2)}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:1px solid var(--accent-sky);outline-offset:2px}.xterm,.xterm-viewport,.xterm-screen{width:100%!important}.agent-rail .xterm{min-width:0;overflow:hidden}.agent-rail .xterm-viewport{overflow-x:hidden}.agent-rail .xterm-accessibility-tree{display:none}.hfmf-intro-markdown h1{font-family:var(--serif);font-weight:400;font-size:40px;line-height:1.1;letter-spacing:0;color:var(--fg);margin:0 0 16px}.hfmf-intro-markdown h2{font-family:var(--serif);font-weight:400;font-size:22px;line-height:1.25;letter-spacing:0;color:var(--fg);margin:28px 0 8px;padding-top:20px;border-top:1px solid var(--border)}.hfmf-intro-markdown h2:first-child,.hfmf-intro-markdown h1+h2{padding-top:0;border-top:none}.hfmf-intro-markdown h3{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin:20px 0 8px}.hfmf-intro-markdown p{font-family:var(--mono);font-size:13px;line-height:1.7;letter-spacing:-.01em;color:var(--fg-muted);margin:0 0 12px;max-width:72ch}.hfmf-intro-markdown ul{font-family:var(--mono);font-size:13px;line-height:1.7;color:var(--fg-muted);list-style:none;padding:0;margin:0 0 12px}.hfmf-intro-markdown ul li{position:relative;padding-left:16px;margin:4px 0}.hfmf-intro-markdown ul li:before{content:"—";position:absolute;left:0;color:var(--fg-dim)}.hfmf-intro-markdown code{font-family:var(--mono);font-size:12px;color:var(--accent-sky);background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--radius-1);padding:1px 6px}.hfmf-intro-markdown pre{font-family:var(--mono);font-size:12px;line-height:1.6;color:var(--fg);background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--radius-2);padding:14px 16px;margin:0 0 14px;overflow-x:auto}.hfmf-intro-markdown pre code{background:transparent;border:0;padding:0;color:inherit}.hfmf-intro-markdown a{color:var(--accent-sky);text-decoration:none;border-bottom:1px solid var(--border)}.hfmf-intro-markdown a:hover{color:var(--accent-sky-hover);border-bottom-color:var(--accent-sky)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width: 768px){.md\:grid-cols-\[120px_1fr\]{grid-template-columns:120px 1fr}}@media (min-width: 1024px){.lg\:col-span-5{grid-column:span 5 / span 5}.lg\:col-span-7{grid-column:span 7 / span 7}}