@jinn-network/client 0.1.8 → 0.1.9-canary.023faefb

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 (733) hide show
  1. package/CONTRIBUTING.md +2 -2
  2. package/README.md +6 -0
  3. package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +3 -3
  4. package/deployments/deployment-stolas-l2-baseSepolia-fast.json +23 -3
  5. package/deployments/deployment-task-coordinator-router-v3-baseSepolia-fast.json +34 -6
  6. package/dist/adapters/mech/adapter.d.ts +31 -1
  7. package/dist/adapters/mech/adapter.js +126 -53
  8. package/dist/adapters/mech/adapter.js.map +1 -1
  9. package/dist/adapters/mech/contracts.d.ts +174 -13
  10. package/dist/adapters/mech/contracts.js +99 -49
  11. package/dist/adapters/mech/contracts.js.map +1 -1
  12. package/dist/adapters/mech/safe-revert.d.ts +4 -0
  13. package/dist/adapters/mech/safe-revert.js +5 -1
  14. package/dist/adapters/mech/safe-revert.js.map +1 -1
  15. package/dist/adapters/mech/safe.js +77 -1
  16. package/dist/adapters/mech/safe.js.map +1 -1
  17. package/dist/adapters/mech/types.d.ts +5 -130
  18. package/dist/adapters/mech/types.js +9 -65
  19. package/dist/adapters/mech/types.js.map +1 -1
  20. package/dist/adapters/mech/verdict-code.js +1 -1
  21. package/dist/adapters/mech/verdict-code.js.map +1 -1
  22. package/dist/api/bootstrap-endpoint.d.ts +19 -3
  23. package/dist/api/bootstrap-endpoint.js +4 -0
  24. package/dist/api/bootstrap-endpoint.js.map +1 -1
  25. package/dist/api/discovery-endpoint.d.ts +1 -0
  26. package/dist/api/discovery-endpoint.js +24 -0
  27. package/dist/api/discovery-endpoint.js.map +1 -1
  28. package/dist/api/fleet-build.d.ts +1 -7
  29. package/dist/api/fleet-build.js +0 -7
  30. package/dist/api/fleet-build.js.map +1 -1
  31. package/dist/api/gather-status.d.ts +26 -17
  32. package/dist/api/gather-status.js +62 -520
  33. package/dist/api/gather-status.js.map +1 -1
  34. package/dist/api/harness-auth-status-endpoint.d.ts +21 -0
  35. package/dist/api/harness-auth-status-endpoint.js +17 -0
  36. package/dist/api/harness-auth-status-endpoint.js.map +1 -0
  37. package/dist/api/launcher-endpoints.js +6 -1
  38. package/dist/api/launcher-endpoints.js.map +1 -1
  39. package/dist/api/launcher-status.d.ts +2 -0
  40. package/dist/api/launcher-status.js.map +1 -1
  41. package/dist/api/launcher-tasks.d.ts +47 -0
  42. package/dist/api/launcher-tasks.js +88 -3
  43. package/dist/api/launcher-tasks.js.map +1 -1
  44. package/dist/api/loop-completion-build.d.ts +79 -0
  45. package/dist/api/loop-completion-build.js +154 -0
  46. package/dist/api/loop-completion-build.js.map +1 -0
  47. package/dist/api/operator-artifacts-endpoint.js +1 -1
  48. package/dist/api/operator-artifacts-endpoint.js.map +1 -1
  49. package/dist/api/portfolio-v0-build.d.ts +2 -1
  50. package/dist/api/portfolio-v0-build.js +5 -7
  51. package/dist/api/portfolio-v0-build.js.map +1 -1
  52. package/dist/api/prediction-v1-build.d.ts +2 -2
  53. package/dist/api/prediction-v1-build.js +5 -7
  54. package/dist/api/prediction-v1-build.js.map +1 -1
  55. package/dist/api/rewards-build.d.ts +8 -1
  56. package/dist/api/rewards-build.js +32 -4
  57. package/dist/api/rewards-build.js.map +1 -1
  58. package/dist/api/rewards-endpoint.d.ts +12 -0
  59. package/dist/api/rewards-endpoint.js +46 -0
  60. package/dist/api/rewards-endpoint.js.map +1 -0
  61. package/dist/api/server.d.ts +6 -16
  62. package/dist/api/server.js +29 -26
  63. package/dist/api/server.js.map +1 -1
  64. package/dist/api/setup-endpoints.d.ts +45 -0
  65. package/dist/api/setup-endpoints.js +271 -52
  66. package/dist/api/setup-endpoints.js.map +1 -1
  67. package/dist/api/solvernets-endpoints.js +4 -1
  68. package/dist/api/solvernets-endpoints.js.map +1 -1
  69. package/dist/api/status-build.d.ts +71 -94
  70. package/dist/api/status-build.js +11 -77
  71. package/dist/api/status-build.js.map +1 -1
  72. package/dist/api/status-rollup-build.d.ts +0 -4
  73. package/dist/api/status-rollup-build.js +0 -4
  74. package/dist/api/status-rollup-build.js.map +1 -1
  75. package/dist/api/stop-hook.d.ts +1 -1
  76. package/dist/api/stop-hook.js +1 -1
  77. package/dist/api/stop-hook.js.map +1 -1
  78. package/dist/api/task-run-routing.d.ts +1 -1
  79. package/dist/api/task-runs-build.d.ts +2 -2
  80. package/dist/api/task-runs-build.js +5 -7
  81. package/dist/api/task-runs-build.js.map +1 -1
  82. package/dist/bin/jinn-distil-mcp.js +813 -0
  83. package/dist/bin/jinn-layer.js +12568 -0
  84. package/dist/build-info.json +4 -4
  85. package/dist/build-meta.json +1 -1
  86. package/dist/captures/distil-export.d.ts +54 -0
  87. package/dist/captures/distil-export.js +135 -0
  88. package/dist/captures/distil-export.js.map +1 -0
  89. package/dist/captures/ingest.d.ts +21 -0
  90. package/dist/captures/ingest.js +144 -0
  91. package/dist/captures/ingest.js.map +1 -0
  92. package/dist/captures/live-publisher.d.ts +9 -0
  93. package/dist/captures/live-publisher.js +5 -3
  94. package/dist/captures/live-publisher.js.map +1 -1
  95. package/dist/captures/publish.d.ts +15 -0
  96. package/dist/captures/publish.js +17 -7
  97. package/dist/captures/publish.js.map +1 -1
  98. package/dist/cli/commands/codedigest-revert-check.js +6 -2
  99. package/dist/cli/commands/codedigest-revert-check.js.map +1 -1
  100. package/dist/cli/commands/doctor.d.ts +3 -0
  101. package/dist/cli/commands/doctor.js +36 -4
  102. package/dist/cli/commands/doctor.js.map +1 -1
  103. package/dist/cli/commands/eval.d.ts +87 -0
  104. package/dist/cli/commands/eval.js +481 -0
  105. package/dist/cli/commands/eval.js.map +1 -0
  106. package/dist/cli/commands/rewards.d.ts +2 -0
  107. package/dist/cli/commands/rewards.js +39 -10
  108. package/dist/cli/commands/rewards.js.map +1 -1
  109. package/dist/cli/commands/solver-nets.js +68 -0
  110. package/dist/cli/commands/solver-nets.js.map +1 -1
  111. package/dist/cli/commands/status.js +0 -1
  112. package/dist/cli/commands/status.js.map +1 -1
  113. package/dist/cli/commands/update.js +8 -0
  114. package/dist/cli/commands/update.js.map +1 -1
  115. package/dist/cli/commands/version.js +4 -0
  116. package/dist/cli/commands/version.js.map +1 -1
  117. package/dist/cli/execution-context.js +2 -1
  118. package/dist/cli/execution-context.js.map +1 -1
  119. package/dist/cli/index.js +2 -0
  120. package/dist/cli/index.js.map +1 -1
  121. package/dist/cli/introspection-context.js +0 -3
  122. package/dist/cli/introspection-context.js.map +1 -1
  123. package/dist/config.d.ts +158 -541
  124. package/dist/config.js +190 -197
  125. package/dist/config.js.map +1 -1
  126. package/dist/contracts/abis.d.ts +100 -0
  127. package/dist/contracts/abis.js +58 -0
  128. package/dist/contracts/abis.js.map +1 -0
  129. package/dist/contracts/addresses.d.ts +36 -0
  130. package/dist/contracts/addresses.js +60 -0
  131. package/dist/contracts/addresses.js.map +1 -0
  132. package/dist/corpus/acquire.d.ts +7 -6
  133. package/dist/corpus/acquire.js +10 -10
  134. package/dist/corpus/acquire.js.map +1 -1
  135. package/dist/corpus/fetch-artifact.d.ts +21 -0
  136. package/dist/corpus/fetch-artifact.js +33 -0
  137. package/dist/corpus/fetch-artifact.js.map +1 -0
  138. package/dist/corpus/index.d.ts +2 -2
  139. package/dist/corpus/onchain-query.d.ts +0 -1
  140. package/dist/corpus/onchain-query.js +2 -5
  141. package/dist/corpus/onchain-query.js.map +1 -1
  142. package/dist/corpus/route-resolver.d.ts +3 -3
  143. package/dist/corpus/route-resolver.js +3 -3
  144. package/dist/daemon/ai-units-gate.d.ts +6 -6
  145. package/dist/daemon/ai-units-gate.js +11 -10
  146. package/dist/daemon/ai-units-gate.js.map +1 -1
  147. package/dist/daemon/balance-topup-loop.js +27 -9
  148. package/dist/daemon/balance-topup-loop.js.map +1 -1
  149. package/dist/daemon/checkpoint-loop.js +2 -2
  150. package/dist/daemon/creator.d.ts +1 -0
  151. package/dist/daemon/creator.js +39 -25
  152. package/dist/daemon/creator.js.map +1 -1
  153. package/dist/daemon/daemon.d.ts +15 -10
  154. package/dist/daemon/daemon.js +95 -41
  155. package/dist/daemon/daemon.js.map +1 -1
  156. package/dist/daemon/delivery-watcher.d.ts +9 -0
  157. package/dist/daemon/delivery-watcher.js +24 -1
  158. package/dist/daemon/delivery-watcher.js.map +1 -1
  159. package/dist/daemon/eviction-loop.d.ts +7 -0
  160. package/dist/daemon/eviction-loop.js +19 -3
  161. package/dist/daemon/eviction-loop.js.map +1 -1
  162. package/dist/daemon/join-applier.d.ts +35 -0
  163. package/dist/daemon/join-applier.js +49 -0
  164. package/dist/daemon/join-applier.js.map +1 -0
  165. package/dist/daemon/loop-heartbeat.d.ts +89 -0
  166. package/dist/daemon/loop-heartbeat.js +75 -0
  167. package/dist/daemon/loop-heartbeat.js.map +1 -0
  168. package/dist/{api/peers.js → daemon/peer-sync.js} +3 -1
  169. package/dist/daemon/peer-sync.js.map +1 -0
  170. package/dist/daemon/reward-claim-loop.js +28 -10
  171. package/dist/daemon/reward-claim-loop.js.map +1 -1
  172. package/dist/daemon/skip-log-dedup.d.ts +1 -1
  173. package/dist/daemon/skip-log-dedup.js +3 -0
  174. package/dist/daemon/skip-log-dedup.js.map +1 -1
  175. package/dist/daemon/spend-cap-gate.d.ts +0 -6
  176. package/dist/daemon/spend-cap-gate.js +1 -8
  177. package/dist/daemon/spend-cap-gate.js.map +1 -1
  178. package/dist/daemon/watchdog-loop.d.ts +84 -0
  179. package/dist/daemon/watchdog-loop.js +91 -0
  180. package/dist/daemon/watchdog-loop.js.map +1 -0
  181. package/dist/dashboard/assets/index-B_5Cb-ZH.js +161 -0
  182. package/dist/dashboard/assets/index-D7rvJRNa.css +1 -0
  183. package/dist/dashboard/index.html +2 -2
  184. package/dist/discovery/http.d.ts +17 -0
  185. package/dist/discovery/http.js +378 -26
  186. package/dist/discovery/http.js.map +1 -1
  187. package/dist/discovery/onchain.js +174 -10
  188. package/dist/discovery/onchain.js.map +1 -1
  189. package/dist/discovery/types.d.ts +149 -0
  190. package/dist/discovery/types.js +40 -0
  191. package/dist/discovery/types.js.map +1 -1
  192. package/dist/discovery/with-fallback.js +24 -0
  193. package/dist/discovery/with-fallback.js.map +1 -1
  194. package/dist/earning/bootstrap-run.d.ts +25 -0
  195. package/dist/earning/bootstrap-run.js +315 -0
  196. package/dist/earning/bootstrap-run.js.map +1 -0
  197. package/dist/earning/bootstrap.d.ts +31 -11
  198. package/dist/earning/bootstrap.js +123 -212
  199. package/dist/earning/bootstrap.js.map +1 -1
  200. package/dist/earning/contracts.d.ts +2 -232
  201. package/dist/earning/contracts.js +16 -205
  202. package/dist/earning/contracts.js.map +1 -1
  203. package/dist/earning/faucet-topup-store.d.ts +41 -0
  204. package/dist/earning/faucet-topup-store.js +89 -0
  205. package/dist/earning/faucet-topup-store.js.map +1 -0
  206. package/dist/earning/faucet.d.ts +1 -1
  207. package/dist/earning/faucet.js +2 -2
  208. package/dist/earning/faucet.js.map +1 -1
  209. package/dist/earning/safe-adapter.js +12 -45
  210. package/dist/earning/safe-adapter.js.map +1 -1
  211. package/dist/earning/steps/context.d.ts +42 -0
  212. package/dist/earning/steps/context.js +4 -0
  213. package/dist/earning/steps/context.js.map +1 -0
  214. package/dist/earning/steps/fleet-identity-register.d.ts +4 -0
  215. package/dist/earning/steps/fleet-identity-register.js +65 -0
  216. package/dist/earning/steps/fleet-identity-register.js.map +1 -0
  217. package/dist/earning/steps/fleet-safe-deploy.d.ts +4 -0
  218. package/dist/earning/steps/fleet-safe-deploy.js +62 -0
  219. package/dist/earning/steps/fleet-safe-deploy.js.map +1 -0
  220. package/dist/earning/steps/fleet-safe-predict.d.ts +4 -0
  221. package/dist/earning/steps/fleet-safe-predict.js +18 -0
  222. package/dist/earning/steps/fleet-safe-predict.js.map +1 -0
  223. package/dist/earning/steps/receipt-parsing.d.ts +12 -0
  224. package/dist/earning/steps/receipt-parsing.js +71 -0
  225. package/dist/earning/steps/receipt-parsing.js.map +1 -0
  226. package/dist/earning/stolas-claim.js +8 -8
  227. package/dist/earning/stolas-claim.js.map +1 -1
  228. package/dist/earning/{jinn-rewards.d.ts → stolas-staking.d.ts} +4 -8
  229. package/dist/earning/{jinn-rewards.js → stolas-staking.js} +6 -10
  230. package/dist/earning/stolas-staking.js.map +1 -0
  231. package/dist/earning/testnet-setup-migration.d.ts +1 -0
  232. package/dist/earning/testnet-setup-migration.js +7 -2
  233. package/dist/earning/testnet-setup-migration.js.map +1 -1
  234. package/dist/earning/types.d.ts +1 -1
  235. package/dist/earning/types.js +1 -1
  236. package/dist/earning/types.js.map +1 -1
  237. package/dist/earning/viem-clients.d.ts +3 -19
  238. package/dist/earning/viem-clients.js +4 -31
  239. package/dist/earning/viem-clients.js.map +1 -1
  240. package/dist/erc8004/addresses.d.ts +6 -5
  241. package/dist/erc8004/addresses.js +7 -5
  242. package/dist/erc8004/addresses.js.map +1 -1
  243. package/dist/erc8004/identity.d.ts +12 -1
  244. package/dist/erc8004/identity.js +31 -0
  245. package/dist/erc8004/identity.js.map +1 -1
  246. package/dist/erc8004/index.d.ts +1 -1
  247. package/dist/erc8004/index.js +1 -1
  248. package/dist/erc8004/index.js.map +1 -1
  249. package/dist/eval/capability-slate.d.ts +54 -0
  250. package/dist/eval/capability-slate.js +116 -0
  251. package/dist/eval/capability-slate.js.map +1 -0
  252. package/dist/eval/capability-stats.d.ts +39 -0
  253. package/dist/eval/capability-stats.js +123 -0
  254. package/dist/eval/capability-stats.js.map +1 -0
  255. package/dist/eval/contested-band.d.ts +18 -0
  256. package/dist/eval/contested-band.js +19 -0
  257. package/dist/eval/contested-band.js.map +1 -0
  258. package/dist/eval/corpus-index.d.ts +21 -0
  259. package/dist/eval/corpus-index.js +55 -0
  260. package/dist/eval/corpus-index.js.map +1 -0
  261. package/dist/eval/disjointness.d.ts +26 -0
  262. package/dist/eval/disjointness.js +67 -0
  263. package/dist/eval/disjointness.js.map +1 -0
  264. package/dist/eval/eval-harness-run.d.ts +63 -0
  265. package/dist/eval/eval-harness-run.js +123 -0
  266. package/dist/eval/eval-harness-run.js.map +1 -0
  267. package/dist/eval/mcnemar-power.d.ts +14 -0
  268. package/dist/eval/mcnemar-power.js +40 -0
  269. package/dist/eval/mcnemar-power.js.map +1 -0
  270. package/dist/eval/orchestrator.d.ts +224 -0
  271. package/dist/eval/orchestrator.js +250 -0
  272. package/dist/eval/orchestrator.js.map +1 -0
  273. package/dist/eval/paired.d.ts +68 -0
  274. package/dist/eval/paired.js +93 -0
  275. package/dist/eval/paired.js.map +1 -0
  276. package/dist/eval/resolve-slate-tasks.d.ts +35 -0
  277. package/dist/eval/resolve-slate-tasks.js +56 -0
  278. package/dist/eval/resolve-slate-tasks.js.map +1 -0
  279. package/dist/eval/screen-discovery.d.ts +22 -0
  280. package/dist/eval/screen-discovery.js +71 -0
  281. package/dist/eval/screen-discovery.js.map +1 -0
  282. package/dist/eval/screen-progress.d.ts +41 -0
  283. package/dist/eval/screen-progress.js +60 -0
  284. package/dist/eval/screen-progress.js.map +1 -0
  285. package/dist/eval/screen-runner.d.ts +30 -0
  286. package/dist/eval/screen-runner.js +289 -0
  287. package/dist/eval/screen-runner.js.map +1 -0
  288. package/dist/eval/screen.d.ts +107 -0
  289. package/dist/eval/screen.js +159 -0
  290. package/dist/eval/screen.js.map +1 -0
  291. package/dist/eval/slope.d.ts +29 -0
  292. package/dist/eval/slope.js +46 -0
  293. package/dist/eval/slope.js.map +1 -0
  294. package/dist/eval/train-sequence.d.ts +35 -0
  295. package/dist/eval/train-sequence.js +59 -0
  296. package/dist/eval/train-sequence.js.map +1 -0
  297. package/dist/eval/wilson.d.ts +45 -0
  298. package/dist/eval/wilson.js +48 -0
  299. package/dist/eval/wilson.js.map +1 -0
  300. package/dist/events/types.d.ts +1 -1
  301. package/dist/events/types.js +1 -1
  302. package/dist/events/types.js.map +1 -1
  303. package/dist/harnesses/auth-source.d.ts +51 -0
  304. package/dist/harnesses/auth-source.js +155 -0
  305. package/dist/harnesses/auth-source.js.map +1 -0
  306. package/dist/harnesses/engine/canonical-json.js +5 -3
  307. package/dist/harnesses/engine/canonical-json.js.map +1 -1
  308. package/dist/harnesses/engine/engine.d.ts +34 -1
  309. package/dist/harnesses/engine/engine.js +91 -11
  310. package/dist/harnesses/engine/engine.js.map +1 -1
  311. package/dist/harnesses/engine/packaging.js +5 -5
  312. package/dist/harnesses/engine/packaging.js.map +1 -1
  313. package/dist/harnesses/engine/persistence.d.ts +19 -61
  314. package/dist/harnesses/engine/persistence.js +28 -0
  315. package/dist/harnesses/engine/persistence.js.map +1 -1
  316. package/dist/harnesses/impls/_evaluator-base.d.ts +48 -0
  317. package/dist/harnesses/impls/_evaluator-base.js +35 -0
  318. package/dist/harnesses/impls/_evaluator-base.js.map +1 -0
  319. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +1 -1
  320. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js +1 -1
  321. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -1
  322. package/dist/harnesses/impls/claude-mcp-prediction/index.d.ts +2 -3
  323. package/dist/harnesses/impls/claude-mcp-prediction/index.js +29 -99
  324. package/dist/harnesses/impls/claude-mcp-prediction/index.js.map +1 -1
  325. package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js +4 -21
  326. package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js.map +1 -1
  327. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.d.ts +2 -0
  328. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js +1 -1
  329. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -1
  330. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js +30 -79
  331. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js.map +1 -1
  332. package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js +4 -19
  333. package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -1
  334. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +2 -0
  335. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js +1 -1
  336. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -1
  337. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.d.ts +39 -0
  338. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js +62 -0
  339. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js.map +1 -0
  340. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.d.ts +40 -0
  341. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js +44 -0
  342. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js.map +1 -0
  343. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.d.ts +56 -0
  344. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js +79 -0
  345. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js.map +1 -0
  346. package/dist/harnesses/impls/hermes-agent/adapter.d.ts +2 -0
  347. package/dist/harnesses/impls/hermes-agent/adapter.js +8 -5
  348. package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
  349. package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +1 -0
  350. package/dist/harnesses/impls/hermes-agent/bootstrap.js +6 -1
  351. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  352. package/dist/harnesses/impls/hermes-agent/harness.d.ts +25 -3
  353. package/dist/harnesses/impls/hermes-agent/harness.js +89 -5
  354. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  355. package/dist/harnesses/impls/index.d.ts +2 -0
  356. package/dist/harnesses/impls/index.js +10 -1
  357. package/dist/harnesses/impls/index.js.map +1 -1
  358. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.d.ts +34 -0
  359. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js +111 -0
  360. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js.map +1 -0
  361. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.d.ts +24 -0
  362. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js +19 -0
  363. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js.map +1 -0
  364. package/dist/harnesses/impls/jinn-repo-evaluator/harness.d.ts +64 -0
  365. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js +125 -0
  366. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js.map +1 -0
  367. package/dist/harnesses/impls/jinn-repo-evaluator/repro.d.ts +32 -0
  368. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js +73 -0
  369. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js.map +1 -0
  370. package/dist/harnesses/impls/learner/adapters/claude-code.js +5 -0
  371. package/dist/harnesses/impls/learner/adapters/claude-code.js.map +1 -1
  372. package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +11 -1
  373. package/dist/harnesses/impls/learner/adapters/codex-code.js +130 -15
  374. package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
  375. package/dist/harnesses/impls/learner/harness.d.ts +29 -1
  376. package/dist/harnesses/impls/learner/harness.js +85 -1
  377. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  378. package/dist/harnesses/impls/learner/harvest.d.ts +2 -0
  379. package/dist/harnesses/impls/learner/harvest.js +51 -1
  380. package/dist/harnesses/impls/learner/harvest.js.map +1 -1
  381. package/dist/harnesses/impls/learner/plugin-path.js +1 -0
  382. package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
  383. package/dist/harnesses/impls/portfolio-v0-evaluator/index.d.ts +5 -15
  384. package/dist/harnesses/impls/portfolio-v0-evaluator/index.js +10 -29
  385. package/dist/harnesses/impls/portfolio-v0-evaluator/index.js.map +1 -1
  386. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.d.ts +5 -15
  387. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js +10 -23
  388. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js.map +1 -1
  389. package/dist/harnesses/impls/prediction-v0-evaluator/index.d.ts +5 -15
  390. package/dist/harnesses/impls/prediction-v0-evaluator/index.js +10 -25
  391. package/dist/harnesses/impls/prediction-v0-evaluator/index.js.map +1 -1
  392. package/dist/harnesses/impls/stub.d.ts +2 -2
  393. package/dist/harnesses/impls/stub.js +2 -2
  394. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +8 -0
  395. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
  396. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +3 -1
  397. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
  398. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +2 -2
  399. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +3 -1
  400. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
  401. package/dist/harnesses/readiness-registry.d.ts +16 -0
  402. package/dist/harnesses/readiness-registry.js +28 -6
  403. package/dist/harnesses/readiness-registry.js.map +1 -1
  404. package/dist/harnesses/types.d.ts +26 -0
  405. package/dist/learner/revert-decision.d.ts +16 -1
  406. package/dist/learner/revert-decision.js +38 -18
  407. package/dist/learner/revert-decision.js.map +1 -1
  408. package/dist/learner/revert-stats.d.ts +14 -0
  409. package/dist/learner/revert-stats.js +42 -0
  410. package/dist/learner/revert-stats.js.map +1 -1
  411. package/dist/learner/verification-gate.d.ts +53 -0
  412. package/dist/learner/verification-gate.js +80 -0
  413. package/dist/learner/verification-gate.js.map +1 -0
  414. package/dist/local-provider-url.d.ts +3 -0
  415. package/dist/local-provider-url.js +28 -0
  416. package/dist/local-provider-url.js.map +1 -0
  417. package/dist/main.js +188 -566
  418. package/dist/main.js.map +1 -1
  419. package/dist/mcp/acquire-artifact.d.ts +3 -3
  420. package/dist/mcp/acquire-artifact.js +3 -3
  421. package/dist/mcp/operator-server.js +1 -1
  422. package/dist/mcp/operator-server.js.map +1 -1
  423. package/dist/mcp/server.js +5 -6
  424. package/dist/mcp/server.js.map +1 -1
  425. package/dist/monitoring/net-liveness.d.ts +143 -0
  426. package/dist/monitoring/net-liveness.js +301 -0
  427. package/dist/monitoring/net-liveness.js.map +1 -0
  428. package/dist/observability/emit-event.d.ts +1 -1
  429. package/dist/observability/emit-event.js +0 -4
  430. package/dist/observability/emit-event.js.map +1 -1
  431. package/dist/observability/progress.d.ts +11 -0
  432. package/dist/observability/progress.js +16 -0
  433. package/dist/observability/progress.js.map +1 -0
  434. package/dist/pilot/cost.d.ts +19 -0
  435. package/dist/pilot/cost.js +31 -0
  436. package/dist/pilot/cost.js.map +1 -0
  437. package/dist/pilot/instance.d.ts +20 -0
  438. package/dist/pilot/instance.js +19 -0
  439. package/dist/pilot/instance.js.map +1 -0
  440. package/dist/pilot/repo.d.ts +31 -0
  441. package/dist/pilot/repo.js +42 -0
  442. package/dist/pilot/repo.js.map +1 -0
  443. package/dist/pilot/solve.d.ts +22 -0
  444. package/dist/pilot/solve.js +37 -0
  445. package/dist/pilot/solve.js.map +1 -0
  446. package/dist/pilot/tally.d.ts +35 -0
  447. package/dist/pilot/tally.js +61 -0
  448. package/dist/pilot/tally.js.map +1 -0
  449. package/dist/plugins/learner/.claude-plugin/plugin.json +1 -1
  450. package/dist/plugins/learner/.codex-plugin/plugin.json +1 -1
  451. package/dist/plugins/learner/hooks/session-start +30 -1
  452. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  453. package/dist/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
  454. package/dist/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
  455. package/dist/plugins/local-trace-distiller/.mcp.json +8 -0
  456. package/dist/plugins/local-trace-distiller/README.md +27 -0
  457. package/dist/plugins/local-trace-distiller/jinn.plugin.json +36 -0
  458. package/dist/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
  459. package/dist/preflight/deployment-readiness.d.ts +127 -0
  460. package/dist/preflight/deployment-readiness.js +308 -0
  461. package/dist/preflight/deployment-readiness.js.map +1 -0
  462. package/dist/preflight/pidfile-liveness.d.ts +7 -1
  463. package/dist/preflight/pidfile-liveness.js +14 -0
  464. package/dist/preflight/pidfile-liveness.js.map +1 -1
  465. package/dist/preflight/rpc-network.d.ts +10 -3
  466. package/dist/preflight/rpc-network.js +46 -13
  467. package/dist/preflight/rpc-network.js.map +1 -1
  468. package/dist/preflight/stable-cwd.d.ts +29 -0
  469. package/dist/preflight/stable-cwd.js +98 -0
  470. package/dist/preflight/stable-cwd.js.map +1 -0
  471. package/dist/rpc/transport.d.ts +43 -5
  472. package/dist/rpc/transport.js +131 -30
  473. package/dist/rpc/transport.js.map +1 -1
  474. package/dist/scripts/swe-rebench-v2-seed-pool.json +2 -1
  475. package/dist/solver-nets/registry.d.ts +19 -0
  476. package/dist/solver-nets/registry.js +95 -66
  477. package/dist/solver-nets/registry.js.map +1 -1
  478. package/dist/solver-types/_jinn-repo-pool.d.ts +27 -0
  479. package/dist/solver-types/_jinn-repo-pool.js +27 -0
  480. package/dist/solver-types/_jinn-repo-pool.js.map +1 -0
  481. package/dist/solver-types/_swe-rebench-v2-held-out-slate.d.ts +76 -0
  482. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js +156 -0
  483. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js.map +1 -0
  484. package/dist/solver-types/_swe-rebench-v2-pool-recovery.d.ts +81 -0
  485. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js +116 -0
  486. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js.map +1 -0
  487. package/dist/solver-types/_swe-rebench-v2-state.d.ts +9 -0
  488. package/dist/solver-types/_swe-rebench-v2-state.js +14 -0
  489. package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
  490. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +30 -0
  491. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +40 -0
  492. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  493. package/dist/solver-types/index.js +2 -0
  494. package/dist/solver-types/index.js.map +1 -1
  495. package/dist/solver-types/jinn-repo-admit.d.ts +17 -0
  496. package/dist/solver-types/jinn-repo-admit.js +16 -0
  497. package/dist/solver-types/jinn-repo-admit.js.map +1 -0
  498. package/dist/solver-types/jinn-repo-auto.d.ts +60 -0
  499. package/dist/solver-types/jinn-repo-auto.js +163 -0
  500. package/dist/solver-types/jinn-repo-auto.js.map +1 -0
  501. package/dist/solver-types/jinn-repo-definition.d.ts +15 -0
  502. package/dist/solver-types/jinn-repo-definition.js +34 -0
  503. package/dist/solver-types/jinn-repo-definition.js.map +1 -0
  504. package/dist/solver-types/jinn-repo-extract.d.ts +16 -0
  505. package/dist/solver-types/jinn-repo-extract.js +32 -0
  506. package/dist/solver-types/jinn-repo-extract.js.map +1 -0
  507. package/dist/solver-types/jinn-repo.d.ts +21 -0
  508. package/dist/solver-types/jinn-repo.js +23 -0
  509. package/dist/solver-types/jinn-repo.js.map +1 -0
  510. package/dist/solver-types/learner-loop-test.js +1 -1
  511. package/dist/solver-types/learner-loop-test.js.map +1 -1
  512. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json +20 -0
  513. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.json +19 -0
  514. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.screening-report.json +628 -0
  515. package/dist/solver-types/solver-type.d.ts +8 -0
  516. package/dist/solver-types/swe-rebench-v2.d.ts +2 -0
  517. package/dist/solver-types/swe-rebench-v2.js +115 -10
  518. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  519. package/dist/solvernets/launched-record-dispatcher.d.ts +5 -0
  520. package/dist/solvernets/launched-record-dispatcher.js +14 -1
  521. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  522. package/dist/solvernets/registry-client-erc8004.js +29 -37
  523. package/dist/solvernets/registry-client-erc8004.js.map +1 -1
  524. package/dist/solvernets/registry-client.d.ts +6 -0
  525. package/dist/solvernets/store.d.ts +1 -1
  526. package/dist/solvernets/store.js +8 -3
  527. package/dist/solvernets/store.js.map +1 -1
  528. package/dist/spend/ai-units-config.d.ts +10 -0
  529. package/dist/spend/ai-units-config.js +7 -1
  530. package/dist/spend/ai-units-config.js.map +1 -1
  531. package/dist/spend/ai-units.d.ts +51 -0
  532. package/dist/spend/ai-units.js +73 -0
  533. package/dist/spend/ai-units.js.map +1 -1
  534. package/dist/spend/credential.d.ts +2 -2
  535. package/dist/spend/credential.js +9 -3
  536. package/dist/spend/credential.js.map +1 -1
  537. package/dist/spend/record.js +12 -5
  538. package/dist/spend/record.js.map +1 -1
  539. package/dist/spend/spend-cap.d.ts +10 -0
  540. package/dist/spend/spend-cap.js +13 -0
  541. package/dist/spend/spend-cap.js.map +1 -0
  542. package/dist/spend/usage.js +39 -3
  543. package/dist/spend/usage.js.map +1 -1
  544. package/dist/store/store.d.ts +106 -5
  545. package/dist/store/store.js +194 -8
  546. package/dist/store/store.js.map +1 -1
  547. package/dist/trajectory/emit.d.ts +6 -0
  548. package/dist/trajectory/emit.js +9 -1
  549. package/dist/trajectory/emit.js.map +1 -1
  550. package/dist/trajectory/harness-bundle-schema.d.ts +1 -1
  551. package/dist/trajectory/harness-bundle-schema.js +1 -1
  552. package/dist/trajectory/harness-bundle-schema.js.map +1 -1
  553. package/dist/trajectory/processors/identity-scrub.js +22 -3
  554. package/dist/trajectory/processors/identity-scrub.js.map +1 -1
  555. package/dist/trajectory/schema.d.ts +1 -1
  556. package/dist/trajectory/schema.js +1 -1
  557. package/dist/trajectory/schema.js.map +1 -1
  558. package/dist/trajectory/scrub/build.d.ts +46 -0
  559. package/dist/trajectory/scrub/build.js +76 -0
  560. package/dist/trajectory/scrub/build.js.map +1 -0
  561. package/dist/trajectory/scrub/emit-scrub.d.ts +41 -0
  562. package/dist/trajectory/scrub/emit-scrub.js +88 -0
  563. package/dist/trajectory/scrub/emit-scrub.js.map +1 -0
  564. package/dist/trajectory/scrub/key-policy.d.ts +20 -0
  565. package/dist/trajectory/scrub/key-policy.js +43 -0
  566. package/dist/trajectory/scrub/key-policy.js.map +1 -0
  567. package/dist/trajectory/scrub/layer2.d.ts +23 -0
  568. package/dist/trajectory/scrub/layer2.js +33 -0
  569. package/dist/trajectory/scrub/layer2.js.map +1 -0
  570. package/dist/trajectory/scrub/ml-pii-stage.d.ts +24 -0
  571. package/dist/trajectory/scrub/ml-pii-stage.js +43 -0
  572. package/dist/trajectory/scrub/ml-pii-stage.js.map +1 -0
  573. package/dist/trajectory/scrub/openredaction-stage.d.ts +178 -0
  574. package/dist/trajectory/scrub/openredaction-stage.js +269 -0
  575. package/dist/trajectory/scrub/openredaction-stage.js.map +1 -0
  576. package/dist/trajectory/scrub/pii-build.d.ts +31 -0
  577. package/dist/trajectory/scrub/pii-build.js +64 -0
  578. package/dist/trajectory/scrub/pii-build.js.map +1 -0
  579. package/dist/trajectory/scrub/pipeline.d.ts +37 -0
  580. package/dist/trajectory/scrub/pipeline.js +83 -0
  581. package/dist/trajectory/scrub/pipeline.js.map +1 -0
  582. package/dist/trajectory/scrub/plain-patterns-stage.d.ts +31 -0
  583. package/dist/trajectory/scrub/plain-patterns-stage.js +85 -0
  584. package/dist/trajectory/scrub/plain-patterns-stage.js.map +1 -0
  585. package/dist/trajectory/scrub/secretlint-stage.d.ts +35 -0
  586. package/dist/trajectory/scrub/secretlint-stage.js +250 -0
  587. package/dist/trajectory/scrub/secretlint-stage.js.map +1 -0
  588. package/dist/trajectory/scrub/transformers-detector.d.ts +35 -0
  589. package/dist/trajectory/scrub/transformers-detector.js +68 -0
  590. package/dist/trajectory/scrub/transformers-detector.js.map +1 -0
  591. package/dist/trajectory/scrub/types.d.ts +25 -0
  592. package/dist/trajectory/scrub/types.js +2 -0
  593. package/dist/trajectory/scrub/types.js.map +1 -0
  594. package/dist/trajectory/transcript-parsers/types.d.ts +1 -1
  595. package/dist/trajectory/transcript-parsers/types.js +1 -1
  596. package/dist/trajectory/transcript-parsers/types.js.map +1 -1
  597. package/dist/trajectory/transcript-watcher.d.ts +26 -0
  598. package/dist/trajectory/transcript-watcher.js +33 -0
  599. package/dist/trajectory/transcript-watcher.js.map +1 -1
  600. package/dist/tx-retry.d.ts +12 -0
  601. package/dist/tx-retry.js +41 -12
  602. package/dist/tx-retry.js.map +1 -1
  603. package/dist/types/envelope.d.ts +1 -1
  604. package/dist/types/envelope.js +1 -1
  605. package/dist/types/envelope.js.map +1 -1
  606. package/dist/types/payloads/index.d.ts +1 -1
  607. package/dist/types/payloads/index.js +7 -1
  608. package/dist/types/payloads/index.js.map +1 -1
  609. package/dist/types/payloads/portfolio-v0.d.ts +1 -1
  610. package/dist/types/payloads/portfolio-v0.js +1 -1
  611. package/dist/types/payloads/portfolio-v0.js.map +1 -1
  612. package/dist/types/payloads/prediction-apy-v0.d.ts +1 -1
  613. package/dist/types/payloads/prediction-apy-v0.js +1 -1
  614. package/dist/types/payloads/prediction-apy-v0.js.map +1 -1
  615. package/dist/types/payloads/prediction-v0.d.ts +1 -1
  616. package/dist/types/payloads/prediction-v0.js +1 -1
  617. package/dist/types/payloads/prediction-v0.js.map +1 -1
  618. package/dist/types/portfolio.d.ts +1 -1
  619. package/dist/types/portfolio.js +1 -1
  620. package/dist/types/portfolio.js.map +1 -1
  621. package/dist/types/prediction-apy.d.ts +1 -1
  622. package/dist/types/prediction-apy.js +1 -1
  623. package/dist/types/prediction-apy.js.map +1 -1
  624. package/dist/types/prediction.d.ts +1 -1
  625. package/dist/types/prediction.js +1 -1
  626. package/dist/types/prediction.js.map +1 -1
  627. package/dist/types/session-provenance.d.ts +1 -1
  628. package/dist/types/session-provenance.js +1 -1
  629. package/dist/types/session-provenance.js.map +1 -1
  630. package/dist/types/skill-artifact.d.ts +442 -0
  631. package/dist/types/skill-artifact.js +137 -0
  632. package/dist/types/skill-artifact.js.map +1 -0
  633. package/dist/types/task-document.d.ts +315 -1
  634. package/dist/types/task-document.js +9 -1
  635. package/dist/types/task-document.js.map +1 -1
  636. package/dist/types/task-run-read-model.d.ts +21 -0
  637. package/dist/types/task-run-read-model.js +2 -0
  638. package/dist/types/task-run-read-model.js.map +1 -0
  639. package/dist/types/task-run.d.ts +75 -0
  640. package/dist/types/task-run.js +2 -0
  641. package/dist/types/task-run.js.map +1 -0
  642. package/dist/types/task.d.ts +29 -1
  643. package/dist/types/task.js +1 -1
  644. package/dist/types/task.js.map +1 -1
  645. package/dist/types/window.d.ts +1 -1
  646. package/dist/types/window.js +1 -1
  647. package/dist/types/window.js.map +1 -1
  648. package/dist/util/redact-rpc-urls.d.ts +1 -1
  649. package/dist/util/redact-rpc-urls.js +57 -2
  650. package/dist/util/redact-rpc-urls.js.map +1 -1
  651. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.d.ts +1 -1
  652. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.js +1 -1
  653. package/dist/vendor/@jinn-network/sdk/dist/contracts.d.ts +3 -2
  654. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +49 -0
  655. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.d.ts +44 -0
  656. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.js +25 -0
  657. package/dist/vendor/@jinn-network/sdk/dist/json-schema.d.ts +1 -1
  658. package/dist/vendor/@jinn-network/sdk/dist/json-schema.js +1 -1
  659. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.d.ts +38 -0
  660. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.js +22 -0
  661. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.d.ts +1 -1
  662. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.js +1 -1
  663. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.d.ts +1 -1
  664. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.js +1 -1
  665. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.d.ts +109 -2
  666. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.js +26 -2
  667. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.d.ts +1 -1
  668. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.js +1 -1
  669. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.d.ts +4 -0
  670. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.js +2 -0
  671. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +1 -1
  672. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -1
  673. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.d.ts +65 -0
  674. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.js +123 -0
  675. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.d.ts +2 -2
  676. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js +1 -1
  677. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.d.ts +1 -1
  678. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.js +1 -1
  679. package/dist/vendor/@jinn-network/sdk/package.json +9 -1
  680. package/docker-compose.yml +3 -2
  681. package/package.json +43 -28
  682. package/plugins/jinn-repo-runtime/.claude-plugin/plugin.json +5 -0
  683. package/plugins/jinn-repo-runtime/.codex-plugin/plugin.json +39 -0
  684. package/plugins/jinn-repo-runtime/README.md +27 -0
  685. package/plugins/jinn-repo-runtime/hooks/hooks.json +16 -0
  686. package/plugins/jinn-repo-runtime/hooks/session-start +73 -0
  687. package/plugins/jinn-repo-runtime/jinn.plugin.json +11 -0
  688. package/plugins/jinn-repo-runtime/skills/task/SKILL.md +92 -0
  689. package/plugins/learner/.claude-plugin/plugin.json +1 -1
  690. package/plugins/learner/.codex-plugin/plugin.json +1 -1
  691. package/plugins/learner/hooks/session-start +30 -1
  692. package/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  693. package/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
  694. package/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
  695. package/plugins/local-trace-distiller/.mcp.json +8 -0
  696. package/plugins/local-trace-distiller/README.md +27 -0
  697. package/plugins/local-trace-distiller/jinn.plugin.json +36 -0
  698. package/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
  699. package/plugins/swe-rebench-v2-runtime/hooks/hooks.json +16 -0
  700. package/plugins/swe-rebench-v2-runtime/hooks/session-start +74 -0
  701. package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +0 -55
  702. package/deployments/deployment-jinn-mvi-l1-sepolia.json +0 -55
  703. package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +0 -13
  704. package/deployments/deployment-jinn-testnet-faucet-baseSepolia-fast.json +0 -15
  705. package/dist/api/peers.js.map +0 -1
  706. package/dist/daemon/jinn-claim-loop-canonical.d.ts +0 -207
  707. package/dist/daemon/jinn-claim-loop-canonical.js +0 -296
  708. package/dist/daemon/jinn-claim-loop-canonical.js.map +0 -1
  709. package/dist/daemon/jinn-claim-loop-mock.d.ts +0 -61
  710. package/dist/daemon/jinn-claim-loop-mock.js +0 -122
  711. package/dist/daemon/jinn-claim-loop-mock.js.map +0 -1
  712. package/dist/daemon/jinn-claim-loop-wiring.d.ts +0 -33
  713. package/dist/daemon/jinn-claim-loop-wiring.js +0 -40
  714. package/dist/daemon/jinn-claim-loop-wiring.js.map +0 -1
  715. package/dist/daemon/jinn-claim-loop.d.ts +0 -130
  716. package/dist/daemon/jinn-claim-loop.js +0 -328
  717. package/dist/daemon/jinn-claim-loop.js.map +0 -1
  718. package/dist/dashboard/assets/index-CzKxvMcU.css +0 -32
  719. package/dist/dashboard/assets/index-yVemxHot.js +0 -351
  720. package/dist/earning/jinn-rewards.js.map +0 -1
  721. package/dist/scripts/donation-consumption-acceptance.d.ts +0 -85
  722. package/dist/scripts/donation-consumption-acceptance.js +0 -1382
  723. package/dist/scripts/donation-consumption-acceptance.js.map +0 -1
  724. package/dist/x402/acquire.d.ts +0 -17
  725. package/dist/x402/acquire.js +0 -49
  726. package/dist/x402/acquire.js.map +0 -1
  727. package/dist/x402/facilitator.d.ts +0 -11
  728. package/dist/x402/facilitator.js +0 -52
  729. package/dist/x402/facilitator.js.map +0 -1
  730. package/dist/x402/handler.d.ts +0 -27
  731. package/dist/x402/handler.js +0 -236
  732. package/dist/x402/handler.js.map +0 -1
  733. /package/dist/{api/peers.d.ts → daemon/peer-sync.d.ts} +0 -0
@@ -0,0 +1,269 @@
1
+ import { OpenRedaction } from 'openredaction';
2
+ import { classifyKey } from './key-policy.js';
3
+ const VERSION = '0.4.0'; // 0.4.0: #1391 full-corpus denylist extensions (42-seed characterisation)
4
+ /**
5
+ * Patterns excluded from the default detector (#1331). All three ship with a
6
+ * bare-word regex (`\b[a-zA-Z0-9._]{3,30}\b` or equivalent) that matches
7
+ * nearly every token of ordinary technical prose — "Update the staging
8
+ * bucket config" came back as `[IG_USER_…] the staging [IG_USER_…]
9
+ * [IG_USER_…]`, destroying the readability and distillation value of every
10
+ * published trajectory. A social handle has no shape of its own outside its
11
+ * platform context, so dropping these loses no genuine coverage: emails,
12
+ * keys, cards, SSNs, phones etc. all keep their dedicated patterns (pinned
13
+ * by test/trajectory/scrub/openredaction-tuning.test.ts and the
14
+ * harness-layer seeded-secrets fixture).
15
+ *
16
+ * `NAME` is denylisted for the same reason with an acknowledged trade-off:
17
+ * its follower branch accepts lowercase words (`[A-Z][a-z…]+ (\s+[a-z…]+){1,3}`),
18
+ * so ANY sentence-initial capitalised word plus 1–3 words matches — "Fix the
19
+ * failing test" is a "name" to it, which mangles the first sentence of
20
+ * essentially every task summary. Person-name detection is the ML PII
21
+ * stage's job (GLiNER, `mlPiiStage`), which the daemon wires when the model
22
+ * is available; a bare unlabelled name in prose is not regex-detectable at
23
+ * acceptable precision.
24
+ *
25
+ * `LAB_TEST_ID` and `EXAM_ID` are denylisted for the same reason (#1348):
26
+ * both trigger on ubiquitous software words (`\b(?:LAB|TEST|SAMPLE)…` and
27
+ * `\b(?:EXAM|TEST|QUIZ|ASSESSMENT)…`, case-insensitive, same bare
28
+ * `[A-Z0-9]{6,12}` tail) — "test-driven-development" came back as
29
+ * `test-[LAB_8465]-development` — and lab-specimen / exam IDs are not
30
+ * plausible in agent-trajectory content. Nothing in the seeded-secrets
31
+ * fixture pins either pattern.
32
+ *
33
+ * #1391 additions (full 42-seed characterisation) — bare-SHAPE patterns
34
+ * whose regex matches ordinary technical tokens with no trigger word at all:
35
+ *
36
+ * - `ZIP_CODE_US` — `\b\d{5}(…)?\b`: ANY 5-digit number. Fired on GitHub
37
+ * issue numbers ("#26251", "#41417"), millisecond values ("60000"), quota
38
+ * figures ("25000"), Lark error codes ("41050"). A bare 5-digit number in
39
+ * trajectory content is overwhelmingly a count, id, or port, not a home
40
+ * address component; street-level address detection is the ML PII stage's
41
+ * job, where the surrounding words disambiguate.
42
+ * - `POSTCODE_UK` — matches hex colour literals ("#FF00FF" → `[POSTCODE]`).
43
+ * Same rationale: a bare alphanumeric cluster is not a location without
44
+ * context, which the ML PII stage has and this regex does not.
45
+ * - `SWIFT_BIC` — `\b[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?\b`: ANY 8- or 11-char
46
+ * uppercase word ("REQUIRED", from an HTTP header name). BIC codes are
47
+ * public bank identifiers, not secrets, and the shape is indistinguishable
48
+ * from an all-caps word.
49
+ * - `TIKTOK_USERNAME` / `SOCIAL_MEDIA_HANDLE` — the #1331 social-handle
50
+ * family: `@`-prefixed bare words. Fired on npm scoped packages
51
+ * ("@n8n/n8n-nodes-langchain…", "@github/copilot-sdk"), which are
52
+ * ubiquitous in technical prose.
53
+ */
54
+ export const BARE_WORD_PATTERN_DENYLIST = [
55
+ 'INSTAGRAM_USERNAME',
56
+ 'XBOX_GAMERTAG',
57
+ 'PSN_ID',
58
+ 'NAME',
59
+ 'LAB_TEST_ID',
60
+ 'EXAM_ID',
61
+ // #1391:
62
+ 'ZIP_CODE_US',
63
+ 'POSTCODE_UK',
64
+ 'SWIFT_BIC',
65
+ 'TIKTOK_USERNAME',
66
+ 'SOCIAL_MEDIA_HANDLE',
67
+ ];
68
+ /**
69
+ * Trigger-word patterns excluded for #1372 (kept as a separate block from the
70
+ * bare-word denylist above so parallel denylist additions merge cleanly).
71
+ *
72
+ * These share one pathology: an ordinary English trigger word (`TO`,
73
+ * `APPROVAL`, `PROJECT`, `ORDER`, `REVIEW`, `PASS`, `LOT`, `SO`, `REG`, `WO`,
74
+ * `MISSING`, `RETURN`, `user`, `prod`, `ice`…), case-insensitive, followed by
75
+ * a bare `[A-Z0-9]{n,m}` tail with no intrinsic shape. On the published seed
76
+ * skills' SKILL.md prose every one of them fired — all 42 seed bodies were
77
+ * defaced ("project context" → `project [PROJECT_3875]`, "get your approval
78
+ * before" → `approval [AUTH_5211]`), several mid-word ("something" →
79
+ * `so[SO_1826]`, "workflow" → `wo[WO_3602]`, "regressions" →
80
+ * `[REG]ressions`). Observed trigger words per pattern, from the #1372
81
+ * characterisation over five real seed bodies:
82
+ *
83
+ * - `USERNAME` — "user intent", "user has"; a bare word after "user"/"login"
84
+ * is not a credential. Credentials keep their shaped patterns; person
85
+ * names are the ML PII stage's job (see the `NAME` note above).
86
+ * - `PROJECT_CODE` — "project context", "project goes through".
87
+ * - `CARD_AUTH_CODE` — "approval before" (card auth codes travel with card
88
+ * numbers, which `CREDIT_CARD` still catches).
89
+ * - `IATA_AIRPORT_CODE` — "to use" ("TO" + any 3 capitalisable letters).
90
+ * - `JUDGMENT_NUMBER` — "order should".
91
+ * - `STANDING_ORDER_REF` — "SO" matches inside "something"/"solution".
92
+ * - `PRODUCTION_ID` — "production classes"; nested self-replacement
93
+ * corrupted "NO PRODUCTION CODE" into `PROD[PROD[PROD…`.
94
+ * - `WORK_ORDER_NUMBER` — "wo" matches inside "workflow"/"worktree".
95
+ * - `PERFORMANCE_REVIEW_ID` — "performance problems", "evaluation between".
96
+ * - `TNT_TRACKING` — every clause optional except the tail, so ANY 9- or
97
+ * 13-character word matches ("variation", "statement").
98
+ * - `THEME_PARK_TICKET` — "pass immediately".
99
+ * - `TOURNAMENT_REGISTRATION_ID` — "REG" matches inside "regressions".
100
+ * - `MISSING_PERSON_CASE` — "missing requirements".
101
+ * - `RMA_NUMBER` — "return expected".
102
+ * - `BATCH_LOT_NUMBER` — "a lot faster".
103
+ * - `EMERGENCY_CONTACT` — "ice" (unanchored, matches inside "practice")
104
+ * followed by any 2–4 words.
105
+ *
106
+ * Lab-grade coverage loss is acceptable: these label niche reference numbers
107
+ * (parcel tracking, theme-park tickets, tournament brackets, standing
108
+ * orders, RMAs…) that are implausible in agent-trajectory content and carry
109
+ * no shape of their own beyond the trigger word. Genuinely secret-shaped
110
+ * content keeps its dedicated patterns (emails, cards, SSNs, API keys —
111
+ * pinned below and by the harness-layer seeded-secrets fixture), and the
112
+ * secretlint + plain-patterns stages still run behind this one.
113
+ *
114
+ * #1391 additions — the #1372 characterisation ran 5 sample bodies; the
115
+ * full-42-seed sweep surfaced the longer tail below (same pathology, same
116
+ * fix, observed trigger words in parentheses). One aggravator worth naming:
117
+ * openredaction substitutes a detection's captured VALUE case-insensitively
118
+ * across the whole document, so a single trigger FP defaces every other
119
+ * occurrence of that value. Every seed's frontmatter contains
120
+ * `license: MIT` — LICENSE_PLATE captures `MIT`, and every "limit(s)" /
121
+ * "submit" in the body came back as `li[PLATE_2299]s` / `Sub[PLATE_2299]`.
122
+ *
123
+ * - `LICENSE_PLATE` — "license: MIT" (frontmatter, all 42 seeds); `REG`
124
+ * trigger mid-word ("registers" → `[PLATE]isters`).
125
+ * - `US_LICENSE_PLATE` / `INTERNATIONAL_LICENSE_PLATE` — same trigger family
126
+ * (`PLATE|LICENSE|TAG|REGISTRATION`): "tag-driven", "tagged as data".
127
+ * - `EDITORIAL_TICKET` — "edit existing", "edit endpoints" (`EDIT` trigger).
128
+ * - `TRANSACTION_ID` — `TRANS` trigger mid-word: "transformations" →
129
+ * `[TXN]formations`.
130
+ * - `AIRLINE_BOOKING_REFERENCE` — "reference images", "reference videos",
131
+ * "node reference syntax" (`REFERENCE` trigger).
132
+ * - `SOURCE_ID` — "source images", "source directory", "multi-source
133
+ * aggregation".
134
+ * - `SERVICE_REQUEST_NUMBER` — "service discovery", "app-service assessment".
135
+ * - `TERMINAL_ID` — "terminal status"; `POS` trigger mid-word: "false
136
+ * positives", "PostToolUse".
137
+ * - `EXIT_INTERVIEW_ID` — "termination criterion/oracle", "separation
138
+ * exists" (`EXIT|TERMINATION|SEPARATION` triggers).
139
+ * - `HOTEL_LOYALTY_NUMBER` — "member-remove" (wiki commands), "rewards
140
+ * padding" (`MEMBER|LOYALTY|REWARDS` triggers).
141
+ * - `SEARCH_RESCUE_MISSION_ID` — "search operations", "web/search results"
142
+ * (`SEARCH|RESCUE|MISSION` triggers).
143
+ * - `APPLICATION_ID` / `JOB_APPLICATION_ID` — "application gateway",
144
+ * "candidate contradicts", "candidate regions" (`APPLICATION|CANDIDATE|
145
+ * APPLICANT` triggers).
146
+ * - `ARTICLE_ID` — "user story should", "user-story-example" (`STORY`
147
+ * trigger).
148
+ * - `EMERGENCY_CALL_REF` — "incident investigation" (`INCIDENT` trigger).
149
+ * - `CAMPAIGN_CODE` — "brand campaigns", "brand campaign jingle".
150
+ * - `INSTALLATION_REF` — "brew install imagemagick", "apt-get install".
151
+ * - `PRODUCT_SKU` — "SKU changes", "SKU upgrades" (Azure sizing prose).
152
+ * - `BAR_NUMBER` — "raises the bar because" (`BAR` trigger).
153
+ * - `PREMIUM_PAYMENT_REF` — "premium commercial cuts", "premium brand".
154
+ * - `HOUSING_ASSIGNMENT` — "ambient room tone" (`ROOM` trigger).
155
+ * - `MANUSCRIPT_ID` — `MS` trigger: "0.8 ms overhead" → `[MANUSCRIPT]`.
156
+ * - `STATEMENT_REF` — "return statement exists".
157
+ * - `QUOTE_REFERENCE` — "quote shortest decisive line".
158
+ * - `RESUME_ID` — "Resume caveman after" (`RESUME|CV` triggers).
159
+ * - `PAYMENT_REFERENCE` — `PAY` trigger mid-word: "paymentGateway" →
160
+ * `pay[PAY_REF]`.
161
+ * - `ROUTING_NUMBER_MFG` — "routing convention".
162
+ * - `MICROSOFT_CERTIFICATION` — "Microsoft documentation" (`MICROSOFT|MS`
163
+ * triggers).
164
+ *
165
+ * Revealed at fixpoint (iteration 2 — patterns previously shadowed by a
166
+ * higher-priority pattern that the first pass denylisted):
167
+ * - `INCIDENT_REPORT_NUMBER` — "Incident Investigation" (`INCIDENT` trigger,
168
+ * surfaced once EMERGENCY_CALL_REF was gone).
169
+ * - `ENROLLMENT_NUMBER` — "registration succeeds" (`REGISTRATION` trigger).
170
+ * - `HOTEL_RESERVATION` — "Capacity Reservation Groups" (`RESERVATION`
171
+ * trigger, surfaced once AIRLINE_BOOKING_REFERENCE was gone).
172
+ */
173
+ export const PROSE_TRIGGER_PATTERN_DENYLIST = [
174
+ 'USERNAME',
175
+ 'PROJECT_CODE',
176
+ 'CARD_AUTH_CODE',
177
+ 'IATA_AIRPORT_CODE',
178
+ 'JUDGMENT_NUMBER',
179
+ 'STANDING_ORDER_REF',
180
+ 'PRODUCTION_ID',
181
+ 'WORK_ORDER_NUMBER',
182
+ 'PERFORMANCE_REVIEW_ID',
183
+ 'TNT_TRACKING',
184
+ 'THEME_PARK_TICKET',
185
+ 'TOURNAMENT_REGISTRATION_ID',
186
+ 'MISSING_PERSON_CASE',
187
+ 'RMA_NUMBER',
188
+ 'BATCH_LOT_NUMBER',
189
+ 'EMERGENCY_CONTACT',
190
+ // #1391:
191
+ 'LICENSE_PLATE',
192
+ 'US_LICENSE_PLATE',
193
+ 'INTERNATIONAL_LICENSE_PLATE',
194
+ 'EDITORIAL_TICKET',
195
+ 'TRANSACTION_ID',
196
+ 'AIRLINE_BOOKING_REFERENCE',
197
+ 'SOURCE_ID',
198
+ 'SERVICE_REQUEST_NUMBER',
199
+ 'TERMINAL_ID',
200
+ 'EXIT_INTERVIEW_ID',
201
+ 'HOTEL_LOYALTY_NUMBER',
202
+ 'SEARCH_RESCUE_MISSION_ID',
203
+ 'APPLICATION_ID',
204
+ 'JOB_APPLICATION_ID',
205
+ 'ARTICLE_ID',
206
+ 'EMERGENCY_CALL_REF',
207
+ 'CAMPAIGN_CODE',
208
+ 'INSTALLATION_REF',
209
+ 'PRODUCT_SKU',
210
+ 'BAR_NUMBER',
211
+ 'PREMIUM_PAYMENT_REF',
212
+ 'HOUSING_ASSIGNMENT',
213
+ 'MANUSCRIPT_ID',
214
+ 'STATEMENT_REF',
215
+ 'QUOTE_REFERENCE',
216
+ 'RESUME_ID',
217
+ 'PAYMENT_REFERENCE',
218
+ 'ROUTING_NUMBER_MFG',
219
+ 'MICROSOFT_CERTIFICATION',
220
+ // #1391 fixpoint iteration 2:
221
+ 'INCIDENT_REPORT_NUMBER',
222
+ 'ENROLLMENT_NUMBER',
223
+ 'HOTEL_RESERVATION',
224
+ ];
225
+ /**
226
+ * Default detector: openredaction's full pattern set minus the audited
227
+ * bare-word matchers. Built via the `patterns` whitelist option (the
228
+ * library has no exclude option), so a version bump that renames patterns
229
+ * fails loudly in the tuning tests rather than silently re-enabling junk.
230
+ */
231
+ export function buildDefaultDetector() {
232
+ const allTypes = [...new Set(new OpenRedaction().getPatterns().map((p) => p.type))];
233
+ return new OpenRedaction({
234
+ patterns: allTypes.filter((t) => !BARE_WORD_PATTERN_DENYLIST.includes(t) && !PROSE_TRIGGER_PATTERN_DENYLIST.includes(t)),
235
+ });
236
+ }
237
+ /**
238
+ * Structured-PII stage backed by `openredaction` (570+ curated regex patterns +
239
+ * checksum validation, e.g. Luhn for cards). Runs only on `content`-classified
240
+ * string attributes; `safe` and non-string values pass through untouched. Each
241
+ * detection is replaced inline (openredaction's placeholder substitution) and
242
+ * recorded as a `pii` redaction for the provenance manifest.
243
+ *
244
+ * The detector is constructed once at factory time and reused across spans
245
+ * (pattern compilation is not free).
246
+ */
247
+ export function openredactionStage(policy, detector = buildDefaultDetector()) {
248
+ return {
249
+ name: 'openredaction',
250
+ version: VERSION,
251
+ async scrub(attributes) {
252
+ const out = {};
253
+ const redactions = [];
254
+ for (const [key, value] of Object.entries(attributes)) {
255
+ if (typeof value !== 'string' || classifyKey(key, policy) !== 'content') {
256
+ out[key] = value;
257
+ continue;
258
+ }
259
+ const result = await detector.detect(value);
260
+ out[key] = result.redacted;
261
+ for (const det of result.detections) {
262
+ redactions.push({ key, stage: 'openredaction', kind: 'pii', detail: det.type });
263
+ }
264
+ }
265
+ return { attributes: out, redactions };
266
+ },
267
+ };
268
+ }
269
+ //# sourceMappingURL=openredaction-stage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openredaction-stage.js","sourceRoot":"","sources":["../../../src/trajectory/scrub/openredaction-stage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { PiiDetector } from './ml-pii-stage.js';
2
+ export interface PiiDetectionConfig {
3
+ enabled: boolean;
4
+ /** Optional Transformers.js NER model id (defaults to Xenova/bert-base-NER). */
5
+ model?: string;
6
+ }
7
+ /** Thrown by the fail-closed detector on every scrub call when ML PII was enabled but the model never loaded. */
8
+ export declare class MlPiiUnavailableError extends Error {
9
+ constructor(cause: string);
10
+ }
11
+ /**
12
+ * Builds the ML PII detector (Transformers.js NER, in-process) when enabled,
13
+ * warming up the model.
14
+ *
15
+ * Failure altitude is **publish-time, not boot-time** (per
16
+ * `spec/2026-06-15-ts-trajectory-scrub-stack.md`, §"Failure posture": "if any
17
+ * stage errors or the model fails to load, the trajectory is **not**
18
+ * published"). Three cases:
19
+ *
20
+ * - Disabled (the default): returns `undefined` — the scrub pipeline runs the
21
+ * structural key policy + openredaction + secretlint/entropy stages only, with
22
+ * no ML PII tier and no error. Exactly the legacy behaviour.
23
+ * - Enabled and the model loads: returns the real detector.
24
+ * - Enabled but the model fails to load: does NOT throw at construction. Returns
25
+ * a fail-closed detector that hard-throws on every scrub call, so each affected
26
+ * publish aborts (fails closed — never publishes under-redacted/raw) while the
27
+ * rest of the daemon keeps running. A loud one-time boot warning is emitted so
28
+ * the degraded posture is visible in logs; the per-publish throw carries its own
29
+ * clear error so aborted publishes are never silent.
30
+ */
31
+ export declare function maybeBuildPiiDetector(cfg: PiiDetectionConfig, log?: (msg: string) => void): Promise<PiiDetector | undefined>;
@@ -0,0 +1,64 @@
1
+ import { TransformersPiiDetector } from './transformers-detector.js';
2
+ /** Thrown by the fail-closed detector on every scrub call when ML PII was enabled but the model never loaded. */
3
+ export class MlPiiUnavailableError extends Error {
4
+ constructor(cause) {
5
+ super('ML PII detection was enabled but the model failed to load; failing closed — ' +
6
+ `this trajectory is NOT published (disable captures.piiDetection or fix the model to publish): ${cause}`);
7
+ this.name = 'MlPiiUnavailableError';
8
+ }
9
+ }
10
+ /**
11
+ * A detector that hard-throws on every `detect()` call. Used when ML PII is
12
+ * enabled but the model failed to load: the failure is narrowed to **publish
13
+ * altitude** — the throw propagates through the ML scrub stage and aborts the
14
+ * one publish in flight (capture publish aborts; task-trajectory ref drops to
15
+ * null), so no raw trajectory is ever published. The daemon's other loops
16
+ * (earning, claim, engine, balance-topup) are unaffected because the failure
17
+ * is no longer raised at construction/boot.
18
+ */
19
+ function failClosedDetector(cause) {
20
+ return {
21
+ detect() {
22
+ return Promise.reject(new MlPiiUnavailableError(cause));
23
+ },
24
+ };
25
+ }
26
+ /**
27
+ * Builds the ML PII detector (Transformers.js NER, in-process) when enabled,
28
+ * warming up the model.
29
+ *
30
+ * Failure altitude is **publish-time, not boot-time** (per
31
+ * `spec/2026-06-15-ts-trajectory-scrub-stack.md`, §"Failure posture": "if any
32
+ * stage errors or the model fails to load, the trajectory is **not**
33
+ * published"). Three cases:
34
+ *
35
+ * - Disabled (the default): returns `undefined` — the scrub pipeline runs the
36
+ * structural key policy + openredaction + secretlint/entropy stages only, with
37
+ * no ML PII tier and no error. Exactly the legacy behaviour.
38
+ * - Enabled and the model loads: returns the real detector.
39
+ * - Enabled but the model fails to load: does NOT throw at construction. Returns
40
+ * a fail-closed detector that hard-throws on every scrub call, so each affected
41
+ * publish aborts (fails closed — never publishes under-redacted/raw) while the
42
+ * rest of the daemon keeps running. A loud one-time boot warning is emitted so
43
+ * the degraded posture is visible in logs; the per-publish throw carries its own
44
+ * clear error so aborted publishes are never silent.
45
+ */
46
+ export async function maybeBuildPiiDetector(cfg, log = (m) => console.warn(m)) {
47
+ if (!cfg.enabled)
48
+ return undefined;
49
+ try {
50
+ const detector = new TransformersPiiDetector(cfg.model ? { model: cfg.model } : {});
51
+ await detector.init();
52
+ log('[scrub] ML PII detection (Transformers.js NER) enabled.');
53
+ return detector;
54
+ }
55
+ catch (err) {
56
+ const message = err instanceof Error ? err.message : String(err);
57
+ log('[scrub] WARNING: ML PII detection is enabled but the model failed to load. ' +
58
+ 'Failing closed at publish altitude: trajectory/capture publishing will ABORT ' +
59
+ '(no raw trajectories are published) until this is resolved or captures.piiDetection ' +
60
+ `is disabled. The daemon's other loops continue running. Cause: ${message}`);
61
+ return failClosedDetector(message);
62
+ }
63
+ }
64
+ //# sourceMappingURL=pii-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pii-build.js","sourceRoot":"","sources":["../../../src/trajectory/scrub/pii-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AASrE,iHAAiH;AACjH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,KAAa;QACvB,KAAK,CACH,8EAA8E;YAC5E,iGAAiG,KAAK,EAAE,CAC3G,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO;QACL,MAAM;YACJ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAuB,EACvB,MAA6B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnD,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpF,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,GAAG,CAAC,yDAAyD,CAAC,CAAC;QAC/D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,GAAG,CACD,6EAA6E;YAC3E,+EAA+E;YAC/E,sFAAsF;YACtF,kEAAkE,OAAO,EAAE,CAC9E,CAAC;QACF,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { Attributes, ScrubResult, ScrubStage } from './types.js';
2
+ /**
3
+ * Runs scrub stages in order over a span's attributes: each stage's output
4
+ * attributes feed the next, and redaction records accumulate across the whole
5
+ * chain. Stages may be async (e.g. the ML PII stage). The `components` list
6
+ * (stage name + pinned version) is what the signed provenance manifest records.
7
+ *
8
+ * Nested values (#1378): the stages themselves operate on flat string values —
9
+ * a non-string attribute value (e.g. `tool.args` captured as an object) used
10
+ * to pass through every stage untouched and publish verbatim, leaking the
11
+ * exact strings the same pipeline redacted out of `tool.result`. `run()` now
12
+ * walks surviving object/array values after the flat pass and scrubs every
13
+ * string leaf through the same stage chain, keyed by the TOP-LEVEL attribute
14
+ * key so the key policy classifies leaves exactly like the flat value
15
+ * (`jinn.*` structural attributes stay raw; `drop` keys are already gone
16
+ * before the walk). Redactions from leaf runs carry the top-level key, so the
17
+ * redaction manifest and capture redaction diff report `tool.args` as the
18
+ * touched field.
19
+ */
20
+ export declare class ScrubPipeline {
21
+ private readonly stages;
22
+ constructor(stages: ScrubStage[]);
23
+ get components(): Array<{
24
+ name: string;
25
+ version: string;
26
+ }>;
27
+ run(attributes: Attributes): Promise<ScrubResult>;
28
+ /** One pass of every stage over a flat attribute bag (the original `run`). */
29
+ private runStages;
30
+ /**
31
+ * Recursively scrub the string leaves of a nested attribute value through
32
+ * the full stage chain, using the top-level attribute key for policy
33
+ * classification. Non-container, non-string values (numbers, booleans,
34
+ * null) and non-plain objects pass through unchanged.
35
+ */
36
+ private scrubNested;
37
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Runs scrub stages in order over a span's attributes: each stage's output
3
+ * attributes feed the next, and redaction records accumulate across the whole
4
+ * chain. Stages may be async (e.g. the ML PII stage). The `components` list
5
+ * (stage name + pinned version) is what the signed provenance manifest records.
6
+ *
7
+ * Nested values (#1378): the stages themselves operate on flat string values —
8
+ * a non-string attribute value (e.g. `tool.args` captured as an object) used
9
+ * to pass through every stage untouched and publish verbatim, leaking the
10
+ * exact strings the same pipeline redacted out of `tool.result`. `run()` now
11
+ * walks surviving object/array values after the flat pass and scrubs every
12
+ * string leaf through the same stage chain, keyed by the TOP-LEVEL attribute
13
+ * key so the key policy classifies leaves exactly like the flat value
14
+ * (`jinn.*` structural attributes stay raw; `drop` keys are already gone
15
+ * before the walk). Redactions from leaf runs carry the top-level key, so the
16
+ * redaction manifest and capture redaction diff report `tool.args` as the
17
+ * touched field.
18
+ */
19
+ export class ScrubPipeline {
20
+ stages;
21
+ constructor(stages) {
22
+ this.stages = stages;
23
+ }
24
+ get components() {
25
+ return this.stages.map((s) => ({ name: s.name, version: s.version }));
26
+ }
27
+ async run(attributes) {
28
+ const flat = await this.runStages(attributes);
29
+ const out = {};
30
+ const redactions = [...flat.redactions];
31
+ for (const [key, value] of Object.entries(flat.attributes)) {
32
+ // Flat strings were scrubbed by the pass above; only container values
33
+ // (objects/arrays) still hold unscrubbed string leaves.
34
+ out[key] = typeof value === 'string' ? value : await this.scrubNested(key, value, redactions);
35
+ }
36
+ return { attributes: out, redactions };
37
+ }
38
+ /** One pass of every stage over a flat attribute bag (the original `run`). */
39
+ async runStages(attributes) {
40
+ let current = attributes;
41
+ const redactions = [];
42
+ for (const stage of this.stages) {
43
+ const result = await stage.scrub(current);
44
+ current = result.attributes;
45
+ redactions.push(...result.redactions);
46
+ }
47
+ return { attributes: current, redactions };
48
+ }
49
+ /**
50
+ * Recursively scrub the string leaves of a nested attribute value through
51
+ * the full stage chain, using the top-level attribute key for policy
52
+ * classification. Non-container, non-string values (numbers, booleans,
53
+ * null) and non-plain objects pass through unchanged.
54
+ */
55
+ async scrubNested(key, value, redactions) {
56
+ if (typeof value === 'string') {
57
+ const result = await this.runStages({ [key]: value });
58
+ redactions.push(...result.redactions);
59
+ const scrubbed = result.attributes[key];
60
+ // Stages only rewrite strings; a `drop`-classified key never reaches
61
+ // here (dropped in the flat pass), so non-string means untouched.
62
+ return typeof scrubbed === 'string' ? scrubbed : value;
63
+ }
64
+ if (Array.isArray(value)) {
65
+ const items = [];
66
+ for (const item of value)
67
+ items.push(await this.scrubNested(key, item, redactions));
68
+ return items;
69
+ }
70
+ if (value !== null && typeof value === 'object') {
71
+ const proto = Object.getPrototypeOf(value);
72
+ if (proto !== Object.prototype && proto !== null)
73
+ return value; // non-plain: pass through
74
+ const entries = {};
75
+ for (const [k, v] of Object.entries(value)) {
76
+ entries[k] = await this.scrubNested(key, v, redactions);
77
+ }
78
+ return entries;
79
+ }
80
+ return value;
81
+ }
82
+ }
83
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/trajectory/scrub/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * plain-patterns stage — deterministic regex redaction for two shapes the
3
+ * probabilistic stages demonstrably miss (issue #1330, found while building
4
+ * the harness-layer capture path in #1310):
5
+ *
6
+ * - plain email addresses: openredaction's EMAIL pattern is unreliable
7
+ * (misses e.g. `jane.doe@example-corp.com`);
8
+ * - POSIX home-directory paths carrying a username
9
+ * (`/Users/<name>/…`, `/home/<name>/…`) — nothing else touches paths.
10
+ *
11
+ * Graduated here from the harness-layer's capture-local stages so the daemon
12
+ * capture publish path and the harness layer share ONE implementation.
13
+ * Deliberately broad: over-redacting an email or a username is cheap; leaking
14
+ * one is not.
15
+ *
16
+ * An opt-in third set (`credentialIds`, #1415) adds deterministic cloud
17
+ * credential-ID prefixes for the seed profile, which runs without the entropy
18
+ * fallback that covers these shapes in the trace profile.
19
+ */
20
+ import { type KeyPolicy } from './key-policy.js';
21
+ import type { ScrubStage } from './types.js';
22
+ export interface PlainPatternsOptions {
23
+ /**
24
+ * Adds the deterministic credential-ID prefixes above (#1415). Default false:
25
+ * the trace profile already catches these via secretlint's entropy fallback
26
+ * and must stay byte-identical. The seed profile (which runs without the
27
+ * fallback) turns this on.
28
+ */
29
+ credentialIds?: boolean;
30
+ }
31
+ export declare function plainPatternsStage(policy: KeyPolicy, opts?: PlainPatternsOptions): ScrubStage;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * plain-patterns stage — deterministic regex redaction for two shapes the
3
+ * probabilistic stages demonstrably miss (issue #1330, found while building
4
+ * the harness-layer capture path in #1310):
5
+ *
6
+ * - plain email addresses: openredaction's EMAIL pattern is unreliable
7
+ * (misses e.g. `jane.doe@example-corp.com`);
8
+ * - POSIX home-directory paths carrying a username
9
+ * (`/Users/<name>/…`, `/home/<name>/…`) — nothing else touches paths.
10
+ *
11
+ * Graduated here from the harness-layer's capture-local stages so the daemon
12
+ * capture publish path and the harness layer share ONE implementation.
13
+ * Deliberately broad: over-redacting an email or a username is cheap; leaking
14
+ * one is not.
15
+ *
16
+ * An opt-in third set (`credentialIds`, #1415) adds deterministic cloud
17
+ * credential-ID prefixes for the seed profile, which runs without the entropy
18
+ * fallback that covers these shapes in the trace profile.
19
+ */
20
+ import { classifyKey } from './key-policy.js';
21
+ const VERSION = '0.1.0';
22
+ /** Plain email shape. */
23
+ const EMAIL_PATTERN = /[A-Za-z0-9._%+-]+@[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])+)+/g;
24
+ /** POSIX home-dir path segment carrying a username. */
25
+ const HOME_PATH_PATTERN = /\/(?:Users|home)\/[^/\s"'`]+/g;
26
+ const PATTERNS = [
27
+ { pattern: EMAIL_PATTERN, replacement: '[EMAIL]', detail: 'email', kind: 'pii' },
28
+ { pattern: HOME_PATH_PATTERN, replacement: '/users/anon', detail: 'home-path', kind: 'pii' },
29
+ ];
30
+ /**
31
+ * Bare AWS access-key ID — the fixed four-char prefixes + 16 key chars that
32
+ * secretlint's aws rule only scans for under `enableIDScanRule: true`, which
33
+ * preset-recommend leaves off (#1415).
34
+ */
35
+ const AWS_KEY_ID_PATTERN = /\b(?:A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}\b/g;
36
+ /**
37
+ * GCP API key: fixed `AIza` prefix + 35 key chars. No trailing `\b` — the key
38
+ * charset includes `-`, which breaks word-boundary semantics at the end.
39
+ */
40
+ const GCP_API_KEY_PATTERN = /\bAIza[0-9A-Za-z_-]{35}/g;
41
+ const CREDENTIAL_ID_PATTERNS = [
42
+ {
43
+ pattern: AWS_KEY_ID_PATTERN,
44
+ replacement: '[SECRET:aws-access-key-id]',
45
+ detail: 'aws-access-key-id',
46
+ kind: 'secret',
47
+ },
48
+ {
49
+ pattern: GCP_API_KEY_PATTERN,
50
+ replacement: '[SECRET:gcp-api-key]',
51
+ detail: 'gcp-api-key',
52
+ kind: 'secret',
53
+ },
54
+ ];
55
+ export function plainPatternsStage(policy, opts = {}) {
56
+ const patterns = opts.credentialIds ? [...PATTERNS, ...CREDENTIAL_ID_PATTERNS] : PATTERNS;
57
+ return {
58
+ name: 'plain-patterns',
59
+ version: VERSION,
60
+ scrub(attributes) {
61
+ const out = {};
62
+ const redactions = [];
63
+ for (const [key, value] of Object.entries(attributes)) {
64
+ if (typeof value !== 'string' || classifyKey(key, policy) !== 'content') {
65
+ out[key] = value;
66
+ continue;
67
+ }
68
+ let scrubbed = value;
69
+ for (const { pattern, replacement, detail, kind } of patterns) {
70
+ let hits = 0;
71
+ scrubbed = scrubbed.replace(pattern, () => {
72
+ hits += 1;
73
+ return replacement;
74
+ });
75
+ for (let i = 0; i < hits; i += 1) {
76
+ redactions.push({ key, stage: 'plain-patterns', kind, detail });
77
+ }
78
+ }
79
+ out[key] = scrubbed;
80
+ }
81
+ return { attributes: out, redactions };
82
+ },
83
+ };
84
+ }
85
+ //# sourceMappingURL=plain-patterns-stage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-patterns-stage.js","sourceRoot":"","sources":["../../../src/trajectory/scrub/plain-patterns-stage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,WAAW,EAAkB,MAAM,iBAAiB,CAAC;AAG9D,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,yBAAyB;AACzB,MAAM,aAAa,GACjB,4GAA4G,CAAC;AAE/G,uDAAuD;AACvD,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAI1D,MAAM,QAAQ,GAAkB;IAC9B,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;IAChF,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE;CAC7F,CAAC;AAEF;;;;GAIG;AACH,MAAM,kBAAkB,GACtB,0EAA0E,CAAC;AAE7E;;;GAGG;AACH,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAEvD,MAAM,sBAAsB,GAAkB;IAC5C;QACE,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,4BAA4B;QACzC,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE,QAAQ;KACf;IACD;QACE,OAAO,EAAE,mBAAmB;QAC5B,WAAW,EAAE,sBAAsB;QACnC,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,QAAQ;KACf;CACF,CAAC;AAYF,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,OAA6B,EAAE;IACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1F,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;QAChB,KAAK,CAAC,UAAsB;YAC1B,MAAM,GAAG,GAAe,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAsB,EAAE,CAAC;YACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;oBACxE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACjB,SAAS;gBACX,CAAC;gBACD,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,KAAK,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;oBAC9D,IAAI,IAAI,GAAG,CAAC,CAAC;oBACb,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE;wBACxC,IAAI,IAAI,CAAC,CAAC;wBACV,OAAO,WAAW,CAAC;oBACrB,CAAC,CAAC,CAAC;oBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;wBACjC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;gBACD,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YACtB,CAAC;YACD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC"}