jfl 0.4.4 → 0.6.0

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 (533) hide show
  1. package/dist/commands/context-hub.d.ts +1 -0
  2. package/dist/commands/context-hub.d.ts.map +1 -1
  3. package/dist/commands/context-hub.js +1064 -41
  4. package/dist/commands/context-hub.js.map +1 -1
  5. package/dist/commands/eval.d.ts +1 -1
  6. package/dist/commands/eval.d.ts.map +1 -1
  7. package/dist/commands/eval.js +192 -1
  8. package/dist/commands/eval.js.map +1 -1
  9. package/dist/commands/findings.d.ts +6 -0
  10. package/dist/commands/findings.d.ts.map +1 -0
  11. package/dist/commands/findings.js +203 -0
  12. package/dist/commands/findings.js.map +1 -0
  13. package/dist/commands/hud.d.ts.map +1 -1
  14. package/dist/commands/hud.js +47 -9
  15. package/dist/commands/hud.js.map +1 -1
  16. package/dist/commands/ide.d.ts +27 -0
  17. package/dist/commands/ide.d.ts.map +1 -0
  18. package/dist/commands/ide.js +546 -0
  19. package/dist/commands/ide.js.map +1 -0
  20. package/dist/commands/onboard.d.ts.map +1 -1
  21. package/dist/commands/onboard.js +212 -2
  22. package/dist/commands/onboard.js.map +1 -1
  23. package/dist/commands/openclaw.d.ts +3 -0
  24. package/dist/commands/openclaw.d.ts.map +1 -1
  25. package/dist/commands/openclaw.js +76 -2
  26. package/dist/commands/openclaw.js.map +1 -1
  27. package/dist/commands/peter.d.ts +3 -0
  28. package/dist/commands/peter.d.ts.map +1 -1
  29. package/dist/commands/peter.js +1168 -58
  30. package/dist/commands/peter.js.map +1 -1
  31. package/dist/commands/pi-fleet.d.ts +18 -0
  32. package/dist/commands/pi-fleet.d.ts.map +1 -0
  33. package/dist/commands/pi-fleet.js +382 -0
  34. package/dist/commands/pi-fleet.js.map +1 -0
  35. package/dist/commands/pi.d.ts.map +1 -1
  36. package/dist/commands/pi.js +18 -3
  37. package/dist/commands/pi.js.map +1 -1
  38. package/dist/commands/scope.d.ts.map +1 -1
  39. package/dist/commands/scope.js +90 -1
  40. package/dist/commands/scope.js.map +1 -1
  41. package/dist/commands/services.d.ts.map +1 -1
  42. package/dist/commands/services.js +18 -0
  43. package/dist/commands/services.js.map +1 -1
  44. package/dist/commands/setup.d.ts +12 -0
  45. package/dist/commands/setup.d.ts.map +1 -0
  46. package/dist/commands/setup.js +322 -0
  47. package/dist/commands/setup.js.map +1 -0
  48. package/dist/commands/status.d.ts.map +1 -1
  49. package/dist/commands/status.js +22 -4
  50. package/dist/commands/status.js.map +1 -1
  51. package/dist/commands/train.d.ts +33 -0
  52. package/dist/commands/train.d.ts.map +1 -0
  53. package/dist/commands/train.js +510 -0
  54. package/dist/commands/train.js.map +1 -0
  55. package/dist/commands/verify.d.ts +14 -0
  56. package/dist/commands/verify.d.ts.map +1 -0
  57. package/dist/commands/verify.js +276 -0
  58. package/dist/commands/verify.js.map +1 -0
  59. package/dist/commands/viz.d.ts.map +1 -1
  60. package/dist/commands/viz.js +417 -0
  61. package/dist/commands/viz.js.map +1 -1
  62. package/dist/dashboard-static/assets/index-CW9ZxqX8.css +1 -0
  63. package/dist/dashboard-static/assets/index-DNN__p4K.js +121 -0
  64. package/dist/dashboard-static/index.html +2 -2
  65. package/dist/index.js +324 -64
  66. package/dist/index.js.map +1 -1
  67. package/dist/lib/agent-config.d.ts +52 -0
  68. package/dist/lib/agent-config.d.ts.map +1 -0
  69. package/dist/lib/agent-config.js +231 -0
  70. package/dist/lib/agent-config.js.map +1 -0
  71. package/dist/lib/agent-generator.d.ts +10 -0
  72. package/dist/lib/agent-generator.d.ts.map +1 -1
  73. package/dist/lib/agent-generator.js +64 -10
  74. package/dist/lib/agent-generator.js.map +1 -1
  75. package/dist/lib/agent-session.d.ts +104 -0
  76. package/dist/lib/agent-session.d.ts.map +1 -0
  77. package/dist/lib/agent-session.js +635 -0
  78. package/dist/lib/agent-session.js.map +1 -0
  79. package/dist/lib/eval-snapshot.d.ts +47 -0
  80. package/dist/lib/eval-snapshot.d.ts.map +1 -0
  81. package/dist/lib/eval-snapshot.js +315 -0
  82. package/dist/lib/eval-snapshot.js.map +1 -0
  83. package/dist/lib/eval-store.d.ts +5 -0
  84. package/dist/lib/eval-store.d.ts.map +1 -1
  85. package/dist/lib/eval-store.js +33 -3
  86. package/dist/lib/eval-store.js.map +1 -1
  87. package/dist/lib/findings-engine.d.ts +51 -0
  88. package/dist/lib/findings-engine.d.ts.map +1 -0
  89. package/dist/lib/findings-engine.js +338 -0
  90. package/dist/lib/findings-engine.js.map +1 -0
  91. package/dist/lib/flow-engine.d.ts +8 -0
  92. package/dist/lib/flow-engine.d.ts.map +1 -1
  93. package/dist/lib/flow-engine.js +84 -2
  94. package/dist/lib/flow-engine.js.map +1 -1
  95. package/dist/lib/hub-client.d.ts +1 -0
  96. package/dist/lib/hub-client.d.ts.map +1 -1
  97. package/dist/lib/hub-client.js +33 -6
  98. package/dist/lib/hub-client.js.map +1 -1
  99. package/dist/lib/ide-panes.d.ts +58 -0
  100. package/dist/lib/ide-panes.d.ts.map +1 -0
  101. package/dist/lib/ide-panes.js +508 -0
  102. package/dist/lib/ide-panes.js.map +1 -0
  103. package/dist/lib/memory-db.js +4 -4
  104. package/dist/lib/memory-db.js.map +1 -1
  105. package/dist/lib/memory-indexer.d.ts.map +1 -1
  106. package/dist/lib/memory-indexer.js +3 -0
  107. package/dist/lib/memory-indexer.js.map +1 -1
  108. package/dist/lib/memory-search.d.ts +148 -4
  109. package/dist/lib/memory-search.d.ts.map +1 -1
  110. package/dist/lib/memory-search.js +496 -58
  111. package/dist/lib/memory-search.js.map +1 -1
  112. package/dist/lib/meta-orchestrator.d.ts +104 -0
  113. package/dist/lib/meta-orchestrator.d.ts.map +1 -0
  114. package/dist/lib/meta-orchestrator.js +373 -0
  115. package/dist/lib/meta-orchestrator.js.map +1 -0
  116. package/dist/lib/peer-agent-generator.d.ts.map +1 -1
  117. package/dist/lib/peer-agent-generator.js +43 -19
  118. package/dist/lib/peer-agent-generator.js.map +1 -1
  119. package/dist/lib/pi-sky/bridge.d.ts +55 -0
  120. package/dist/lib/pi-sky/bridge.d.ts.map +1 -0
  121. package/dist/lib/pi-sky/bridge.js +264 -0
  122. package/dist/lib/pi-sky/bridge.js.map +1 -0
  123. package/dist/lib/pi-sky/cost-monitor.d.ts +21 -0
  124. package/dist/lib/pi-sky/cost-monitor.d.ts.map +1 -0
  125. package/dist/lib/pi-sky/cost-monitor.js +126 -0
  126. package/dist/lib/pi-sky/cost-monitor.js.map +1 -0
  127. package/dist/lib/pi-sky/eval-sweep.d.ts +27 -0
  128. package/dist/lib/pi-sky/eval-sweep.d.ts.map +1 -0
  129. package/dist/lib/pi-sky/eval-sweep.js +141 -0
  130. package/dist/lib/pi-sky/eval-sweep.js.map +1 -0
  131. package/dist/lib/pi-sky/event-router.d.ts +32 -0
  132. package/dist/lib/pi-sky/event-router.d.ts.map +1 -0
  133. package/dist/lib/pi-sky/event-router.js +176 -0
  134. package/dist/lib/pi-sky/event-router.js.map +1 -0
  135. package/dist/lib/pi-sky/experiment.d.ts +9 -0
  136. package/dist/lib/pi-sky/experiment.d.ts.map +1 -0
  137. package/dist/lib/pi-sky/experiment.js +83 -0
  138. package/dist/lib/pi-sky/experiment.js.map +1 -0
  139. package/dist/lib/pi-sky/index.d.ts +16 -0
  140. package/dist/lib/pi-sky/index.d.ts.map +1 -0
  141. package/dist/lib/pi-sky/index.js +16 -0
  142. package/dist/lib/pi-sky/index.js.map +1 -0
  143. package/dist/lib/pi-sky/stratus-gate.d.ts +28 -0
  144. package/dist/lib/pi-sky/stratus-gate.d.ts.map +1 -0
  145. package/dist/lib/pi-sky/stratus-gate.js +61 -0
  146. package/dist/lib/pi-sky/stratus-gate.js.map +1 -0
  147. package/dist/lib/pi-sky/swarm.d.ts +28 -0
  148. package/dist/lib/pi-sky/swarm.d.ts.map +1 -0
  149. package/dist/lib/pi-sky/swarm.js +208 -0
  150. package/dist/lib/pi-sky/swarm.js.map +1 -0
  151. package/dist/lib/pi-sky/types.d.ts +139 -0
  152. package/dist/lib/pi-sky/types.d.ts.map +1 -0
  153. package/dist/lib/pi-sky/types.js +2 -0
  154. package/dist/lib/pi-sky/types.js.map +1 -0
  155. package/dist/lib/pi-sky/voice-bridge.d.ts +20 -0
  156. package/dist/lib/pi-sky/voice-bridge.d.ts.map +1 -0
  157. package/dist/lib/pi-sky/voice-bridge.js +91 -0
  158. package/dist/lib/pi-sky/voice-bridge.js.map +1 -0
  159. package/dist/lib/policy-head.d.ts +40 -0
  160. package/dist/lib/policy-head.d.ts.map +1 -0
  161. package/dist/lib/policy-head.js +234 -0
  162. package/dist/lib/policy-head.js.map +1 -0
  163. package/dist/lib/predictor.d.ts +10 -0
  164. package/dist/lib/predictor.d.ts.map +1 -1
  165. package/dist/lib/predictor.js +46 -7
  166. package/dist/lib/predictor.js.map +1 -1
  167. package/dist/lib/replay-buffer.d.ts +93 -0
  168. package/dist/lib/replay-buffer.d.ts.map +1 -0
  169. package/dist/lib/replay-buffer.js +302 -0
  170. package/dist/lib/replay-buffer.js.map +1 -0
  171. package/dist/lib/sentinel-rl.d.ts +97 -0
  172. package/dist/lib/sentinel-rl.d.ts.map +1 -0
  173. package/dist/lib/sentinel-rl.js +430 -0
  174. package/dist/lib/sentinel-rl.js.map +1 -0
  175. package/dist/lib/session-lock.d.ts +61 -0
  176. package/dist/lib/session-lock.d.ts.map +1 -0
  177. package/dist/lib/session-lock.js +438 -0
  178. package/dist/lib/session-lock.js.map +1 -0
  179. package/dist/lib/setup/agent-generator.d.ts +18 -0
  180. package/dist/lib/setup/agent-generator.d.ts.map +1 -0
  181. package/dist/lib/setup/agent-generator.js +114 -0
  182. package/dist/lib/setup/agent-generator.js.map +1 -0
  183. package/dist/lib/setup/context-analyzer.d.ts +16 -0
  184. package/dist/lib/setup/context-analyzer.d.ts.map +1 -0
  185. package/dist/lib/setup/context-analyzer.js +112 -0
  186. package/dist/lib/setup/context-analyzer.js.map +1 -0
  187. package/dist/lib/setup/doc-auditor.d.ts +54 -0
  188. package/dist/lib/setup/doc-auditor.d.ts.map +1 -0
  189. package/dist/lib/setup/doc-auditor.js +629 -0
  190. package/dist/lib/setup/doc-auditor.js.map +1 -0
  191. package/dist/lib/setup/domain-generator.d.ts +7 -0
  192. package/dist/lib/setup/domain-generator.d.ts.map +1 -0
  193. package/dist/lib/setup/domain-generator.js +58 -0
  194. package/dist/lib/setup/domain-generator.js.map +1 -0
  195. package/dist/lib/setup/smart-eval-generator.d.ts +38 -0
  196. package/dist/lib/setup/smart-eval-generator.d.ts.map +1 -0
  197. package/dist/lib/setup/smart-eval-generator.js +378 -0
  198. package/dist/lib/setup/smart-eval-generator.js.map +1 -0
  199. package/dist/lib/setup/smart-recommender.d.ts +63 -0
  200. package/dist/lib/setup/smart-recommender.d.ts.map +1 -0
  201. package/dist/lib/setup/smart-recommender.js +329 -0
  202. package/dist/lib/setup/smart-recommender.js.map +1 -0
  203. package/dist/lib/setup/spec-generator.d.ts +63 -0
  204. package/dist/lib/setup/spec-generator.d.ts.map +1 -0
  205. package/dist/lib/setup/spec-generator.js +310 -0
  206. package/dist/lib/setup/spec-generator.js.map +1 -0
  207. package/dist/lib/setup/violation-agent-generator.d.ts +32 -0
  208. package/dist/lib/setup/violation-agent-generator.d.ts.map +1 -0
  209. package/dist/lib/setup/violation-agent-generator.js +255 -0
  210. package/dist/lib/setup/violation-agent-generator.js.map +1 -0
  211. package/dist/lib/stratus-client.d.ts +1 -0
  212. package/dist/lib/stratus-client.d.ts.map +1 -1
  213. package/dist/lib/stratus-client.js +24 -2
  214. package/dist/lib/stratus-client.js.map +1 -1
  215. package/dist/lib/telemetry-agent-v2.d.ts +128 -0
  216. package/dist/lib/telemetry-agent-v2.d.ts.map +1 -0
  217. package/dist/lib/telemetry-agent-v2.js +1042 -0
  218. package/dist/lib/telemetry-agent-v2.js.map +1 -0
  219. package/dist/lib/telemetry-agent.d.ts.map +1 -1
  220. package/dist/lib/telemetry-agent.js +27 -6
  221. package/dist/lib/telemetry-agent.js.map +1 -1
  222. package/dist/lib/telemetry-digest.d.ts.map +1 -1
  223. package/dist/lib/telemetry-digest.js +27 -5
  224. package/dist/lib/telemetry-digest.js.map +1 -1
  225. package/dist/lib/telemetry.d.ts.map +1 -1
  226. package/dist/lib/telemetry.js +29 -4
  227. package/dist/lib/telemetry.js.map +1 -1
  228. package/dist/lib/text-preprocessing.d.ts +83 -0
  229. package/dist/lib/text-preprocessing.d.ts.map +1 -0
  230. package/dist/lib/text-preprocessing.js +261 -0
  231. package/dist/lib/text-preprocessing.js.map +1 -0
  232. package/dist/lib/training-buffer.d.ts +86 -0
  233. package/dist/lib/training-buffer.d.ts.map +1 -0
  234. package/dist/lib/training-buffer.js +139 -0
  235. package/dist/lib/training-buffer.js.map +1 -0
  236. package/dist/lib/tuple-miner.d.ts +30 -0
  237. package/dist/lib/tuple-miner.d.ts.map +1 -0
  238. package/dist/lib/tuple-miner.js +427 -0
  239. package/dist/lib/tuple-miner.js.map +1 -0
  240. package/dist/lib/vm-backend.d.ts +72 -0
  241. package/dist/lib/vm-backend.d.ts.map +1 -0
  242. package/dist/lib/vm-backend.js +175 -0
  243. package/dist/lib/vm-backend.js.map +1 -0
  244. package/dist/lib/workspace/backend.d.ts +53 -0
  245. package/dist/lib/workspace/backend.d.ts.map +1 -0
  246. package/dist/lib/workspace/backend.js +37 -0
  247. package/dist/lib/workspace/backend.js.map +1 -0
  248. package/dist/lib/workspace/cmux-adapter.d.ts +46 -0
  249. package/dist/lib/workspace/cmux-adapter.d.ts.map +1 -0
  250. package/dist/lib/workspace/cmux-adapter.js +261 -0
  251. package/dist/lib/workspace/cmux-adapter.js.map +1 -0
  252. package/dist/lib/workspace/data-pipeline.d.ts +35 -0
  253. package/dist/lib/workspace/data-pipeline.d.ts.map +1 -0
  254. package/dist/lib/workspace/data-pipeline.js +463 -0
  255. package/dist/lib/workspace/data-pipeline.js.map +1 -0
  256. package/dist/lib/workspace/engine.d.ts +64 -0
  257. package/dist/lib/workspace/engine.d.ts.map +1 -0
  258. package/dist/lib/workspace/engine.js +397 -0
  259. package/dist/lib/workspace/engine.js.map +1 -0
  260. package/dist/lib/workspace/notifications.d.ts +14 -0
  261. package/dist/lib/workspace/notifications.d.ts.map +1 -0
  262. package/dist/lib/workspace/notifications.js +41 -0
  263. package/dist/lib/workspace/notifications.js.map +1 -0
  264. package/dist/lib/workspace/surface-registry.d.ts +49 -0
  265. package/dist/lib/workspace/surface-registry.d.ts.map +1 -0
  266. package/dist/lib/workspace/surface-registry.js +217 -0
  267. package/dist/lib/workspace/surface-registry.js.map +1 -0
  268. package/dist/lib/workspace/surface-type.d.ts +153 -0
  269. package/dist/lib/workspace/surface-type.d.ts.map +1 -0
  270. package/dist/lib/workspace/surface-type.js +9 -0
  271. package/dist/lib/workspace/surface-type.js.map +1 -0
  272. package/dist/lib/workspace/surfaces/agent-overview.d.ts +16 -0
  273. package/dist/lib/workspace/surfaces/agent-overview.d.ts.map +1 -0
  274. package/dist/lib/workspace/surfaces/agent-overview.js +116 -0
  275. package/dist/lib/workspace/surfaces/agent-overview.js.map +1 -0
  276. package/dist/lib/workspace/surfaces/agent.d.ts +16 -0
  277. package/dist/lib/workspace/surfaces/agent.d.ts.map +1 -0
  278. package/dist/lib/workspace/surfaces/agent.js +112 -0
  279. package/dist/lib/workspace/surfaces/agent.js.map +1 -0
  280. package/dist/lib/workspace/surfaces/claude.d.ts +15 -0
  281. package/dist/lib/workspace/surfaces/claude.d.ts.map +1 -0
  282. package/dist/lib/workspace/surfaces/claude.js +23 -0
  283. package/dist/lib/workspace/surfaces/claude.js.map +1 -0
  284. package/dist/lib/workspace/surfaces/dashboard.d.ts +21 -0
  285. package/dist/lib/workspace/surfaces/dashboard.d.ts.map +1 -0
  286. package/dist/lib/workspace/surfaces/dashboard.js +32 -0
  287. package/dist/lib/workspace/surfaces/dashboard.js.map +1 -0
  288. package/dist/lib/workspace/surfaces/eval.d.ts +15 -0
  289. package/dist/lib/workspace/surfaces/eval.d.ts.map +1 -0
  290. package/dist/lib/workspace/surfaces/eval.js +42 -0
  291. package/dist/lib/workspace/surfaces/eval.js.map +1 -0
  292. package/dist/lib/workspace/surfaces/event-stream.d.ts +16 -0
  293. package/dist/lib/workspace/surfaces/event-stream.d.ts.map +1 -0
  294. package/dist/lib/workspace/surfaces/event-stream.js +40 -0
  295. package/dist/lib/workspace/surfaces/event-stream.js.map +1 -0
  296. package/dist/lib/workspace/surfaces/flow.d.ts +16 -0
  297. package/dist/lib/workspace/surfaces/flow.d.ts.map +1 -0
  298. package/dist/lib/workspace/surfaces/flow.js +49 -0
  299. package/dist/lib/workspace/surfaces/flow.js.map +1 -0
  300. package/dist/lib/workspace/surfaces/index.d.ts +16 -0
  301. package/dist/lib/workspace/surfaces/index.d.ts.map +1 -0
  302. package/dist/lib/workspace/surfaces/index.js +16 -0
  303. package/dist/lib/workspace/surfaces/index.js.map +1 -0
  304. package/dist/lib/workspace/surfaces/portfolio.d.ts +16 -0
  305. package/dist/lib/workspace/surfaces/portfolio.d.ts.map +1 -0
  306. package/dist/lib/workspace/surfaces/portfolio.js +102 -0
  307. package/dist/lib/workspace/surfaces/portfolio.js.map +1 -0
  308. package/dist/lib/workspace/surfaces/service.d.ts +16 -0
  309. package/dist/lib/workspace/surfaces/service.d.ts.map +1 -0
  310. package/dist/lib/workspace/surfaces/service.js +45 -0
  311. package/dist/lib/workspace/surfaces/service.js.map +1 -0
  312. package/dist/lib/workspace/surfaces/shell.d.ts +15 -0
  313. package/dist/lib/workspace/surfaces/shell.d.ts.map +1 -0
  314. package/dist/lib/workspace/surfaces/shell.js +19 -0
  315. package/dist/lib/workspace/surfaces/shell.js.map +1 -0
  316. package/dist/lib/workspace/surfaces/telemetry.d.ts +16 -0
  317. package/dist/lib/workspace/surfaces/telemetry.d.ts.map +1 -0
  318. package/dist/lib/workspace/surfaces/telemetry.js +48 -0
  319. package/dist/lib/workspace/surfaces/telemetry.js.map +1 -0
  320. package/dist/lib/workspace/surfaces/topology.d.ts +15 -0
  321. package/dist/lib/workspace/surfaces/topology.d.ts.map +1 -0
  322. package/dist/lib/workspace/surfaces/topology.js +19 -0
  323. package/dist/lib/workspace/surfaces/topology.js.map +1 -0
  324. package/dist/lib/workspace/surfaces/training.d.ts +16 -0
  325. package/dist/lib/workspace/surfaces/training.d.ts.map +1 -0
  326. package/dist/lib/workspace/surfaces/training.js +22 -0
  327. package/dist/lib/workspace/surfaces/training.js.map +1 -0
  328. package/dist/lib/workspace/tmux-adapter.d.ts +27 -0
  329. package/dist/lib/workspace/tmux-adapter.d.ts.map +1 -0
  330. package/dist/lib/workspace/tmux-adapter.js +106 -0
  331. package/dist/lib/workspace/tmux-adapter.js.map +1 -0
  332. package/dist/mcp/context-hub-mcp.js +7 -24
  333. package/dist/mcp/context-hub-mcp.js.map +1 -1
  334. package/dist/types/flows.d.ts +2 -0
  335. package/dist/types/flows.d.ts.map +1 -1
  336. package/dist/types/ide.d.ts +49 -0
  337. package/dist/types/ide.d.ts.map +1 -0
  338. package/dist/types/ide.js +5 -0
  339. package/dist/types/ide.js.map +1 -0
  340. package/dist/types/platform-digest.d.ts +228 -0
  341. package/dist/types/platform-digest.d.ts.map +1 -0
  342. package/dist/types/platform-digest.js +5 -0
  343. package/dist/types/platform-digest.js.map +1 -0
  344. package/dist/types/telemetry-digest.d.ts +2 -0
  345. package/dist/types/telemetry-digest.d.ts.map +1 -1
  346. package/dist/utils/ensure-project.d.ts +1 -0
  347. package/dist/utils/ensure-project.d.ts.map +1 -1
  348. package/dist/utils/ensure-project.js +19 -7
  349. package/dist/utils/ensure-project.js.map +1 -1
  350. package/dist/utils/jfl-config.d.ts +1 -0
  351. package/dist/utils/jfl-config.d.ts.map +1 -1
  352. package/dist/utils/jfl-config.js +19 -1
  353. package/dist/utils/jfl-config.js.map +1 -1
  354. package/dist/utils/jfl-paths.d.ts +5 -0
  355. package/dist/utils/jfl-paths.d.ts.map +1 -1
  356. package/dist/utils/jfl-paths.js +25 -3
  357. package/dist/utils/jfl-paths.js.map +1 -1
  358. package/package.json +3 -2
  359. package/packages/pi/AGENTS.md +112 -0
  360. package/packages/pi/extensions/agent-grid.ts +191 -0
  361. package/packages/pi/extensions/agent-names.ts +178 -0
  362. package/packages/pi/extensions/autoresearch.ts +427 -0
  363. package/packages/pi/extensions/bookmarks.ts +85 -0
  364. package/packages/pi/extensions/context.ts +184 -0
  365. package/packages/pi/extensions/crm-tool.ts +61 -0
  366. package/packages/pi/extensions/eval-tool.ts +224 -0
  367. package/packages/pi/extensions/eval.ts +60 -0
  368. package/packages/pi/extensions/footer.ts +239 -0
  369. package/packages/pi/extensions/hub-resolver.ts +63 -0
  370. package/packages/pi/extensions/hud-tool.ts +145 -0
  371. package/packages/pi/extensions/index.ts +405 -0
  372. package/packages/pi/extensions/journal.ts +224 -0
  373. package/packages/pi/extensions/map-bridge.ts +178 -0
  374. package/packages/pi/extensions/memory-tool.ts +73 -0
  375. package/packages/pi/extensions/notifications.ts +73 -0
  376. package/packages/pi/extensions/peter-parker.ts +202 -0
  377. package/packages/pi/extensions/policy-head-tool.ts +276 -0
  378. package/packages/pi/extensions/portfolio-bridge.ts +90 -0
  379. package/packages/pi/extensions/session.ts +142 -0
  380. package/packages/pi/extensions/shortcuts.ts +259 -0
  381. package/packages/pi/extensions/stratus-bridge.ts +115 -0
  382. package/packages/pi/extensions/synopsis-tool.ts +83 -0
  383. package/packages/pi/extensions/tool-renderers.ts +353 -0
  384. package/packages/pi/extensions/training-buffer-tool.ts +368 -0
  385. package/packages/pi/extensions/types.ts +163 -0
  386. package/packages/pi/package-lock.json +346 -0
  387. package/packages/pi/package.json +44 -0
  388. package/packages/pi/skills/agent-browser/SKILL.md +116 -0
  389. package/packages/pi/skills/brand-architect/SKILL.md +240 -0
  390. package/packages/pi/skills/brand-architect/config.yaml +137 -0
  391. package/packages/pi/skills/campaign-hud/config.yaml +112 -0
  392. package/packages/pi/skills/content-creator/SKILL.md +294 -0
  393. package/packages/pi/skills/context/SKILL.md +65 -0
  394. package/packages/pi/skills/debug/MULTI_AGENT.md +360 -0
  395. package/packages/pi/skills/debug/SKILL.md +554 -0
  396. package/packages/pi/skills/end/SKILL.md +1782 -0
  397. package/packages/pi/skills/eval/SKILL.md +75 -0
  398. package/packages/pi/skills/fly-deploy/SKILL.md +676 -0
  399. package/packages/pi/skills/founder-video/SKILL.md +467 -0
  400. package/packages/pi/skills/hud/SKILL.md +160 -0
  401. package/packages/pi/skills/orchestrate/SKILL.md +74 -0
  402. package/packages/pi/skills/pi-agents/SKILL.md +78 -0
  403. package/packages/pi/skills/react-best-practices/AGENTS.md +2249 -0
  404. package/packages/pi/skills/react-best-practices/README.md +123 -0
  405. package/packages/pi/skills/react-best-practices/SKILL.md +125 -0
  406. package/packages/pi/skills/react-best-practices/metadata.json +15 -0
  407. package/packages/pi/skills/react-best-practices/rules/_sections.md +46 -0
  408. package/packages/pi/skills/react-best-practices/rules/_template.md +28 -0
  409. package/packages/pi/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  410. package/packages/pi/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  411. package/packages/pi/skills/react-best-practices/rules/async-api-routes.md +38 -0
  412. package/packages/pi/skills/react-best-practices/rules/async-defer-await.md +80 -0
  413. package/packages/pi/skills/react-best-practices/rules/async-dependencies.md +36 -0
  414. package/packages/pi/skills/react-best-practices/rules/async-parallel.md +28 -0
  415. package/packages/pi/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  416. package/packages/pi/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  417. package/packages/pi/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  418. package/packages/pi/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  419. package/packages/pi/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  420. package/packages/pi/skills/react-best-practices/rules/bundle-preload.md +50 -0
  421. package/packages/pi/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  422. package/packages/pi/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  423. package/packages/pi/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  424. package/packages/pi/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  425. package/packages/pi/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  426. package/packages/pi/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  427. package/packages/pi/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  428. package/packages/pi/skills/react-best-practices/rules/js-early-exit.md +50 -0
  429. package/packages/pi/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  430. package/packages/pi/skills/react-best-practices/rules/js-index-maps.md +37 -0
  431. package/packages/pi/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  432. package/packages/pi/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  433. package/packages/pi/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  434. package/packages/pi/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  435. package/packages/pi/skills/react-best-practices/rules/rendering-activity.md +26 -0
  436. package/packages/pi/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  437. package/packages/pi/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  438. package/packages/pi/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  439. package/packages/pi/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  440. package/packages/pi/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  441. package/packages/pi/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  442. package/packages/pi/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  443. package/packages/pi/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  444. package/packages/pi/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  445. package/packages/pi/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  446. package/packages/pi/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  447. package/packages/pi/skills/react-best-practices/rules/rerender-memo.md +44 -0
  448. package/packages/pi/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  449. package/packages/pi/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  450. package/packages/pi/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  451. package/packages/pi/skills/react-best-practices/rules/server-cache-react.md +26 -0
  452. package/packages/pi/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
  453. package/packages/pi/skills/react-best-practices/rules/server-serialization.md +38 -0
  454. package/packages/pi/skills/remotion-best-practices/SKILL.md +43 -0
  455. package/packages/pi/skills/remotion-best-practices/rules/3d.md +86 -0
  456. package/packages/pi/skills/remotion-best-practices/rules/animations.md +29 -0
  457. package/packages/pi/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  458. package/packages/pi/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  459. package/packages/pi/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
  460. package/packages/pi/skills/remotion-best-practices/rules/assets.md +78 -0
  461. package/packages/pi/skills/remotion-best-practices/rules/audio.md +172 -0
  462. package/packages/pi/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
  463. package/packages/pi/skills/remotion-best-practices/rules/can-decode.md +75 -0
  464. package/packages/pi/skills/remotion-best-practices/rules/charts.md +58 -0
  465. package/packages/pi/skills/remotion-best-practices/rules/compositions.md +146 -0
  466. package/packages/pi/skills/remotion-best-practices/rules/display-captions.md +126 -0
  467. package/packages/pi/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  468. package/packages/pi/skills/remotion-best-practices/rules/fonts.md +152 -0
  469. package/packages/pi/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  470. package/packages/pi/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  471. package/packages/pi/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
  472. package/packages/pi/skills/remotion-best-practices/rules/gifs.md +138 -0
  473. package/packages/pi/skills/remotion-best-practices/rules/images.md +130 -0
  474. package/packages/pi/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
  475. package/packages/pi/skills/remotion-best-practices/rules/lottie.md +68 -0
  476. package/packages/pi/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
  477. package/packages/pi/skills/remotion-best-practices/rules/measuring-text.md +143 -0
  478. package/packages/pi/skills/remotion-best-practices/rules/sequencing.md +106 -0
  479. package/packages/pi/skills/remotion-best-practices/rules/tailwind.md +11 -0
  480. package/packages/pi/skills/remotion-best-practices/rules/text-animations.md +20 -0
  481. package/packages/pi/skills/remotion-best-practices/rules/timing.md +179 -0
  482. package/packages/pi/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
  483. package/packages/pi/skills/remotion-best-practices/rules/transitions.md +122 -0
  484. package/packages/pi/skills/remotion-best-practices/rules/trimming.md +53 -0
  485. package/packages/pi/skills/remotion-best-practices/rules/videos.md +171 -0
  486. package/packages/pi/skills/search/SKILL.md +220 -0
  487. package/packages/pi/skills/spec/SKILL.md +377 -0
  488. package/packages/pi/skills/startup/SKILL.md +315 -0
  489. package/packages/pi/skills/web-architect/SKILL.md +309 -0
  490. package/packages/pi/skills/x-algorithm/SKILL.md +305 -0
  491. package/packages/pi/teams/dev-team.yaml +63 -0
  492. package/packages/pi/teams/gtm-team.yaml +79 -0
  493. package/packages/pi/themes/jfl.theme.json +76 -0
  494. package/packages/pi/tsconfig.json +21 -0
  495. package/scripts/collect-tuples.sh +124 -0
  496. package/scripts/destroy-fleet.sh +37 -0
  497. package/scripts/jfl-ide.sh +48 -0
  498. package/scripts/session/session-cleanup.sh +4 -11
  499. package/scripts/session/session-init.sh +6 -0
  500. package/scripts/session/session-sync.sh +25 -0
  501. package/scripts/setup-branch-protection.sh +106 -0
  502. package/scripts/spawn-fleet.sh +144 -0
  503. package/scripts/train/requirements.txt +5 -0
  504. package/scripts/train/train-policy-head.py +477 -0
  505. package/scripts/train/v2/dataset.py +81 -0
  506. package/scripts/train/v2/domain.json +18 -0
  507. package/scripts/train/v2/eval.py +196 -0
  508. package/scripts/train/v2/generate_data.py +219 -0
  509. package/scripts/train/v2/infer.py +188 -0
  510. package/scripts/train/v2/model.py +112 -0
  511. package/scripts/train/v2/precompute.py +132 -0
  512. package/scripts/train/v2/train.py +302 -0
  513. package/scripts/train/v2/transform_buffer.py +227 -0
  514. package/scripts/train/v2/validate_data.py +115 -0
  515. package/scripts/train-policy-head.py +434 -0
  516. package/scripts/vm-swarm/README.md +301 -0
  517. package/scripts/vm-swarm/collect-tuples.sh +331 -0
  518. package/scripts/vm-swarm/create-base-template.sh +339 -0
  519. package/scripts/vm-swarm/kill-fleet.sh +204 -0
  520. package/scripts/vm-swarm/monitor-fleet.sh +346 -0
  521. package/scripts/vm-swarm/spawn-fleet.sh +304 -0
  522. package/template/.claude/settings.json +2 -15
  523. package/template/.github/workflows/jfl-eval.yml +6 -1
  524. package/template/.github/workflows/jfl-review.yml +4 -0
  525. package/template/scripts/session/session-cleanup.sh +2 -11
  526. package/template/scripts/session/session-end-hub.sh +72 -0
  527. package/template/scripts/session/session-end.sh +69 -6
  528. package/template/scripts/session/session-init.sh +55 -30
  529. package/template/scripts/session/session-lock.sh +464 -0
  530. package/template/scripts/session/session-start-hub.sh +105 -0
  531. package/template/templates/service-agent/workflows/jfl-eval.yml +19 -0
  532. package/dist/dashboard-static/assets/index-B6kRK9Rq.js +0 -116
  533. package/dist/dashboard-static/assets/index-BpdKJPLu.css +0 -1
@@ -0,0 +1,635 @@
1
+ /**
2
+ * Agent Session
3
+ *
4
+ * Session lifecycle management following Karpathy's autoresearch loop:
5
+ * branch → change → eval → keep|revert → repeat
6
+ *
7
+ * Git as state machine: keep = advance branch, discard = git reset --hard HEAD~1
8
+ * results.tsv is NOT committed (append-only local log)
9
+ *
10
+ * @purpose Manage scoped agent session lifecycle with git-based state tracking
11
+ */
12
+ import { existsSync, mkdirSync, appendFileSync, readFileSync, writeFileSync } from "fs";
13
+ import { join } from "path";
14
+ import { spawnSync, spawn } from "child_process";
15
+ import { createHash } from "crypto";
16
+ import { createEvalSnapshot, freezeEvalSnapshot, runEvalSnapshot } from "./eval-snapshot.js";
17
+ /**
18
+ * Build experiment history markdown for the agent to read.
19
+ * This is the KEY missing piece — agents need memory of past experiments.
20
+ *
21
+ * Following Karpathy's autoresearch pattern: agent sees program.md with
22
+ * instructions + history of past experiments so it knows what to try next.
23
+ */
24
+ export function buildExperimentHistory(session, transitions, currentMetric) {
25
+ const config = session.config;
26
+ const direction = config.direction === "minimize" ? "lower is better" : "higher is better";
27
+ // Get scope_files from constraints if available
28
+ const scopeFiles = (() => {
29
+ try {
30
+ const raw = config.constraints?.scope_files || config.constraints?.files_in_scope || [];
31
+ return Array.isArray(raw) ? raw : typeof raw === 'string' ? [raw] : [];
32
+ }
33
+ catch {
34
+ return [];
35
+ }
36
+ })();
37
+ const lines = [
38
+ `# Experiment History — ${session.agentName}`,
39
+ "",
40
+ `## Goal`,
41
+ `Optimize metric: **${config.metric}** (${direction})`,
42
+ `Current value: **${currentMetric.toFixed(4)}**`,
43
+ `Baseline: ${session.baselineMetric.toFixed(4)}`,
44
+ "",
45
+ `## Files to Modify`,
46
+ `Focus your changes on these specific files:`,
47
+ ...scopeFiles.map((f) => `- ${f}`),
48
+ "",
49
+ `## Constraints`,
50
+ `- Max files per change: ${config.constraints.max_file_changes}`,
51
+ `- Read-only: ${config.constraints.files_readonly.join(", ")}`,
52
+ "",
53
+ `## Past Experiments`,
54
+ ""
55
+ ];
56
+ if (transitions.length === 0) {
57
+ lines.push("No experiments yet. This is round 1.");
58
+ lines.push("");
59
+ lines.push("Make ONE small, focused change to improve the metric.");
60
+ }
61
+ else {
62
+ // Group by kept/rejected
63
+ const kept = transitions.filter(t => t.reward > 0);
64
+ const rejected = transitions.filter(t => t.reward <= 0);
65
+ lines.push(`### Kept (${kept.length} experiments that improved the metric):`);
66
+ if (kept.length === 0) {
67
+ lines.push("None yet.");
68
+ }
69
+ else {
70
+ for (const t of kept.slice(-10)) { // Last 10 kept
71
+ const files = t.action.files_affected.join(", ") || "unknown";
72
+ lines.push(`- R${t.state.trajectory_length}: "${t.action.description.slice(0, 60)}" → +${t.reward.toFixed(4)} (files: ${files})`);
73
+ }
74
+ }
75
+ lines.push("");
76
+ lines.push(`### Rejected (${rejected.length} experiments that did NOT improve):`);
77
+ if (rejected.length === 0) {
78
+ lines.push("None yet.");
79
+ }
80
+ else {
81
+ for (const t of rejected.slice(-10)) { // Last 10 rejected
82
+ lines.push(`- R${t.state.trajectory_length}: "${t.action.description.slice(0, 60)}" → ${t.reward.toFixed(4)}`);
83
+ }
84
+ }
85
+ lines.push("");
86
+ lines.push(`## What to Do`);
87
+ lines.push(`1. DO NOT repeat rejected experiments`);
88
+ lines.push(`2. BUILD on kept experiments — they worked`);
89
+ lines.push(`3. Make ONE small, focused change`);
90
+ lines.push(`4. Prefer modifying existing code over adding new files`);
91
+ }
92
+ return lines.join("\n");
93
+ }
94
+ /**
95
+ * Write experiment history to the worktree as EXPERIMENTS.md.
96
+ * Claude Code will read this file to understand what has been tried.
97
+ */
98
+ export function writeExperimentHistory(session, transitions, currentMetric) {
99
+ const content = buildExperimentHistory(session, transitions, currentMetric);
100
+ const historyPath = join(session.worktreePath, "EXPERIMENTS.md");
101
+ try {
102
+ writeFileSync(historyPath, content);
103
+ }
104
+ catch (err) {
105
+ console.error(` Warning: Could not write experiment history: ${err}`);
106
+ }
107
+ }
108
+ /**
109
+ * Read experiment history from the worktree.
110
+ * Returns empty string if file doesn't exist.
111
+ */
112
+ export function readExperimentHistory(session) {
113
+ const historyPath = join(session.worktreePath, "EXPERIMENTS.md");
114
+ try {
115
+ if (existsSync(historyPath)) {
116
+ return readFileSync(historyPath, "utf-8");
117
+ }
118
+ }
119
+ catch { }
120
+ return "";
121
+ }
122
+ // ============================================================================
123
+ // Git Helpers
124
+ // ============================================================================
125
+ function gitExec(args, cwd) {
126
+ const result = spawnSync("git", args, { cwd, encoding: "utf-8", stdio: "pipe" });
127
+ return { ok: result.status === 0, output: (result.stdout || "").trim() };
128
+ }
129
+ function getCurrentBranch(cwd) {
130
+ const result = gitExec(["branch", "--show-current"], cwd);
131
+ return result.output;
132
+ }
133
+ function hasUncommittedChanges(cwd) {
134
+ const diff = gitExec(["diff", "--quiet", "HEAD"], cwd);
135
+ const untracked = spawnSync("git", ["ls-files", "--others", "--exclude-standard"], {
136
+ cwd, encoding: "utf-8", stdio: "pipe",
137
+ });
138
+ return !diff.ok || (untracked.stdout || "").trim().length > 0;
139
+ }
140
+ function getGitDiff(cwd) {
141
+ const result = gitExec(["diff", "HEAD"], cwd);
142
+ return result.output;
143
+ }
144
+ // ============================================================================
145
+ // Scope Impact Emission
146
+ // ============================================================================
147
+ function emitScopeImpact(session, pattern, delta, summary) {
148
+ // Write scope:impact event to service-events.jsonl for the hub to pick up
149
+ const eventsPath = join(session.projectRoot, ".jfl", "service-events.jsonl");
150
+ const event = {
151
+ type: "scope:impact",
152
+ source: `agent:${session.agentName}`,
153
+ data: {
154
+ agent: session.agentName,
155
+ pattern,
156
+ metric: session.config.metric,
157
+ delta,
158
+ direction: session.config.direction,
159
+ session_id: session.id,
160
+ baseline: summary.baseline,
161
+ final: summary.finalMetric,
162
+ rounds: summary.rounds,
163
+ improved_rounds: summary.improvedRounds,
164
+ pr_url: summary.prUrl,
165
+ branch_url: summary.branchUrl,
166
+ produces: session.config.context_scope.produces,
167
+ consumes: session.config.context_scope.consumes,
168
+ },
169
+ ts: new Date().toISOString(),
170
+ };
171
+ try {
172
+ appendFileSync(eventsPath, JSON.stringify(event) + "\n");
173
+ }
174
+ catch {
175
+ // Non-fatal — hub may not be running
176
+ }
177
+ // Also try to POST to hub if running
178
+ try {
179
+ const tokenPath = join(session.projectRoot, ".jfl", "context-hub.token");
180
+ if (existsSync(tokenPath)) {
181
+ const token = readFileSync(tokenPath, "utf-8").trim();
182
+ const http = require("http");
183
+ const postData = JSON.stringify(event);
184
+ const req = http.request({
185
+ hostname: "localhost",
186
+ port: 4242,
187
+ path: "/api/events",
188
+ method: "POST",
189
+ headers: {
190
+ "Content-Type": "application/json",
191
+ "Authorization": `Bearer ${token}`,
192
+ "Content-Length": Buffer.byteLength(postData),
193
+ },
194
+ });
195
+ req.write(postData);
196
+ req.end();
197
+ }
198
+ }
199
+ catch {
200
+ // Non-fatal
201
+ }
202
+ }
203
+ // ============================================================================
204
+ // Session Management
205
+ // ============================================================================
206
+ export function startSession(config, projectRoot, baseBranch = "main") {
207
+ // Generate unique session ID
208
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
209
+ const hashPart = createHash("sha256")
210
+ .update(`${config.name}-${timestamp}-${Math.random()}`)
211
+ .digest("hex")
212
+ .slice(0, 8);
213
+ const sessionId = `${config.name}-${hashPart}-${Date.now()}`;
214
+ // Create session branch
215
+ const branch = `session/${config.name}-${hashPart}-${timestamp.slice(0, 10)}`;
216
+ // Create isolated worktree in /tmp — never touch the main working directory
217
+ const worktreePath = join("/tmp", `jfl-agent-${config.name}-${hashPart}`);
218
+ // Resolve target repo — agents can target a different service repo than the GTM root
219
+ const repoRoot = config.target_repo
220
+ ? join(projectRoot, config.target_repo)
221
+ : projectRoot;
222
+ // Fetch latest base branch
223
+ gitExec(["fetch", "origin", baseBranch], repoRoot);
224
+ // Create worktree with new branch from origin/baseBranch (in the target repo, not GTM)
225
+ let wt = gitExec(["worktree", "add", worktreePath, "-b", branch, `origin/${baseBranch}`], repoRoot);
226
+ if (!wt.ok) {
227
+ // Fallback: try local baseBranch
228
+ wt = gitExec(["worktree", "add", worktreePath, "-b", branch, baseBranch], repoRoot);
229
+ }
230
+ if (!wt.ok) {
231
+ throw new Error(`Failed to create worktree for ${branch}: ${wt.output}`);
232
+ }
233
+ // Create eval snapshot — eval scripts live in GTM (projectRoot), not the service worktree
234
+ // Copy eval files into the worktree so they're available during agent runs
235
+ const evalSnapshot = createEvalSnapshot(projectRoot, config.eval.script, config.eval.data);
236
+ freezeEvalSnapshot(evalSnapshot);
237
+ // Results persist in main repo (survives worktree cleanup)
238
+ const resultsDir = join(projectRoot, ".jfl", "sessions", sessionId);
239
+ mkdirSync(resultsDir, { recursive: true });
240
+ const resultsPath = join(resultsDir, "results.tsv");
241
+ // Write TSV header
242
+ writeFileSync(resultsPath, "round\ttask\tbaseline\tmetric\tdelta\tkept\tduration_ms\terror\ttimestamp\n");
243
+ // Run baseline eval
244
+ const session = {
245
+ id: sessionId,
246
+ agentName: config.name,
247
+ config,
248
+ projectRoot,
249
+ evalRoot: projectRoot,
250
+ worktreePath,
251
+ branch,
252
+ baseBranch,
253
+ evalSnapshot,
254
+ baselineMetric: 0,
255
+ startedAt: new Date().toISOString(),
256
+ resultsPath,
257
+ round: 0,
258
+ status: "active",
259
+ };
260
+ return session;
261
+ }
262
+ export async function runBaseline(session) {
263
+ // Eval scripts live in GTM (evalRoot), not the service worktree
264
+ const result = await runEvalSnapshot(session.evalSnapshot, session.evalRoot, session.config.time_budget_seconds * 1000);
265
+ if (!result.success) {
266
+ throw new Error(`Baseline eval failed: ${result.error}`);
267
+ }
268
+ session.baselineMetric = result.metric;
269
+ return result.metric;
270
+ }
271
+ export async function runRound(session, round, task, hypothesis, previousTransitions = []) {
272
+ const startTime = Date.now();
273
+ session.round = round;
274
+ // Capture state before changes
275
+ const stateBefore = {
276
+ composite_score: session.baselineMetric,
277
+ dimension_scores: {},
278
+ tests_passing: 0,
279
+ tests_total: 1,
280
+ trajectory_length: round,
281
+ recent_deltas: previousTransitions.slice(-5).map(t => t.reward),
282
+ agent: session.agentName,
283
+ };
284
+ const stateHash = createHash("sha256")
285
+ .update(JSON.stringify(stateBefore))
286
+ .digest("hex")
287
+ .slice(0, 12);
288
+ // Write experiment history BEFORE running Claude Code
289
+ // This is the Karpathy pattern: agent sees history + instructions
290
+ writeExperimentHistory(session, previousTransitions, session.baselineMetric);
291
+ // Run Claude Code with fixed time budget
292
+ await runClaudeCode(session, task);
293
+ // Check if any changes were made (in the worktree)
294
+ const hasChanges = hasUncommittedChanges(session.worktreePath);
295
+ if (!hasChanges) {
296
+ const noChangeResult = {
297
+ round,
298
+ task,
299
+ hypothesis,
300
+ metricBefore: session.baselineMetric,
301
+ metricAfter: session.baselineMetric,
302
+ delta: 0,
303
+ kept: false,
304
+ duration_ms: Date.now() - startTime,
305
+ error: "No changes made",
306
+ };
307
+ const noChangeTransition = {
308
+ agent: session.agentName,
309
+ session_id: session.id,
310
+ state_hash: stateHash,
311
+ state: stateBefore,
312
+ action_diff: "",
313
+ action: {
314
+ type: "experiment",
315
+ description: task,
316
+ files_affected: [],
317
+ scope: "small",
318
+ branch: session.branch,
319
+ },
320
+ hypothesis,
321
+ reward: 0,
322
+ timestamp: new Date().toISOString(),
323
+ };
324
+ logResult(session, noChangeResult);
325
+ return { result: noChangeResult, transition: noChangeTransition };
326
+ }
327
+ // Capture the diff before committing
328
+ const diff = getGitDiff(session.worktreePath);
329
+ // Get changed files
330
+ const changedFilesResult = spawnSync("git", ["diff", "--name-only", "HEAD"], {
331
+ cwd: session.worktreePath,
332
+ encoding: "utf-8",
333
+ stdio: "pipe",
334
+ });
335
+ const changedFiles = (changedFilesResult.stdout || "")
336
+ .trim()
337
+ .split("\n")
338
+ .filter(Boolean);
339
+ // Commit changes in worktree
340
+ gitExec(["add", "-A"], session.worktreePath);
341
+ gitExec(["commit", "-m", `agent(${session.agentName}): round ${round} - ${task.slice(0, 50)}`], session.worktreePath);
342
+ // Run frozen eval — scripts verify against evalRoot (GTM), not the service worktree
343
+ const evalResult = await runEvalSnapshot(session.evalSnapshot, session.evalRoot, session.config.time_budget_seconds * 1000);
344
+ const metricAfter = evalResult.success ? evalResult.metric : 0;
345
+ const delta = metricAfter - session.baselineMetric;
346
+ // Decide: keep or discard
347
+ // For maximize: keep if delta > 0
348
+ // For minimize: keep if delta < 0
349
+ const improved = session.config.direction === "maximize"
350
+ ? delta > 0
351
+ : delta < 0;
352
+ if (improved) {
353
+ // Keep: advance baseline
354
+ session.baselineMetric = metricAfter;
355
+ }
356
+ else {
357
+ // Discard: git reset --hard HEAD~1 (in worktree only)
358
+ gitExec(["reset", "--hard", "HEAD~1"], session.worktreePath);
359
+ }
360
+ const result = {
361
+ round,
362
+ task,
363
+ hypothesis,
364
+ metricBefore: session.baselineMetric,
365
+ metricAfter,
366
+ delta,
367
+ kept: improved,
368
+ duration_ms: Date.now() - startTime,
369
+ error: evalResult.success ? undefined : evalResult.error,
370
+ };
371
+ const action = {
372
+ type: "experiment",
373
+ description: task,
374
+ files_affected: changedFiles,
375
+ scope: changedFiles.length <= 2 ? "small" : changedFiles.length <= 5 ? "medium" : "large",
376
+ branch: session.branch,
377
+ };
378
+ const transition = {
379
+ agent: session.agentName,
380
+ session_id: session.id,
381
+ state_hash: stateHash,
382
+ state: stateBefore,
383
+ action_diff: diff,
384
+ action,
385
+ hypothesis,
386
+ reward: improved ? Math.abs(delta) : -Math.abs(delta), // Positive reward = improvement, regardless of direction
387
+ timestamp: new Date().toISOString(),
388
+ };
389
+ logResult(session, result);
390
+ return { result, transition };
391
+ }
392
+ async function runClaudeCode(session, task) {
393
+ const timeout = session.config.time_budget_seconds * 1000;
394
+ // Build enhanced task with experiment history reference
395
+ // This is the Karpathy pattern: agent sees program.md (EXPERIMENTS.md) with history
396
+ const scopeFiles = (() => { const raw = session.config.constraints?.scope_files || session.config.constraints.files_in_scope || []; return Array.isArray(raw) ? raw : [String(raw)]; })();
397
+ const scopeFilesStr = scopeFiles.slice(0, 5).join(", ");
398
+ const enhancedTask = `${task}
399
+
400
+ IMPORTANT: Read EXPERIMENTS.md first — it contains the history of past experiments for this agent.
401
+ - DO NOT repeat experiments that failed (rejected section)
402
+ - BUILD on experiments that worked (kept section)
403
+ - Focus changes on these files: ${scopeFilesStr}
404
+ - Make ONE small, focused change
405
+ - Do not add new files unless absolutely necessary`;
406
+ // Use claude CLI directly — uses ANTHROPIC_API_KEY from env (set in .env, sourced by cron)
407
+ // Falls back to OAuth keychain if no API key set (requires terminal/tmux context)
408
+ return new Promise((resolve) => {
409
+ console.log(" Spawning claude CLI...");
410
+ const child = spawn("claude", [
411
+ "--dangerously-skip-permissions",
412
+ "-p", enhancedTask,
413
+ "--output-format", "text",
414
+ ], {
415
+ cwd: session.worktreePath,
416
+ stdio: "inherit",
417
+ env: {
418
+ ...process.env,
419
+ CLAUDECODE: undefined,
420
+ CLAUDE_CODE: undefined,
421
+ },
422
+ });
423
+ const timeoutId = setTimeout(() => {
424
+ child.kill("SIGTERM");
425
+ setTimeout(() => {
426
+ if (!child.killed)
427
+ child.kill("SIGKILL");
428
+ }, 5000);
429
+ }, timeout);
430
+ child.on("error", (err) => {
431
+ console.error(` Claude CLI error: ${err.message}`);
432
+ clearTimeout(timeoutId);
433
+ resolve();
434
+ });
435
+ child.on("exit", (code, signal) => {
436
+ console.error(` Claude CLI exit: code=${code} signal=${signal}`);
437
+ clearTimeout(timeoutId);
438
+ resolve();
439
+ });
440
+ });
441
+ }
442
+ function logResult(session, result) {
443
+ const line = [
444
+ result.round,
445
+ result.task.replace(/\t/g, " ").slice(0, 100),
446
+ result.metricBefore.toFixed(6),
447
+ result.metricAfter.toFixed(6),
448
+ result.delta.toFixed(6),
449
+ result.kept ? "1" : "0",
450
+ result.duration_ms,
451
+ (result.error || "").replace(/\t/g, " ").slice(0, 100),
452
+ new Date().toISOString(),
453
+ ].join("\t");
454
+ appendFileSync(session.resultsPath, line + "\n");
455
+ // Remove EXPERIMENTS.md from git tracking (it's ephemeral, regenerated each round)
456
+ const experimentsPath = join(session.worktreePath, "EXPERIMENTS.md");
457
+ if (existsSync(experimentsPath)) {
458
+ gitExec(["reset", "HEAD", "EXPERIMENTS.md"], session.worktreePath);
459
+ // Don't delete — keep it for reference, just don't commit
460
+ }
461
+ }
462
+ export async function endSession(session, transitions) {
463
+ session.status = "completed";
464
+ // Calculate summary statistics
465
+ let improvedRounds = 0;
466
+ let bestDelta = 0;
467
+ let totalDelta = 0;
468
+ for (const t of transitions) {
469
+ if (t.reward > 0)
470
+ improvedRounds++;
471
+ if (t.reward > bestDelta)
472
+ bestDelta = t.reward;
473
+ totalDelta += t.reward;
474
+ }
475
+ const summary = {
476
+ session_id: session.id,
477
+ agentName: session.agentName,
478
+ rounds: transitions.length,
479
+ baseline: session.baselineMetric - totalDelta, // Reconstruct original baseline
480
+ finalMetric: session.baselineMetric,
481
+ totalDelta,
482
+ bestDelta,
483
+ improvedRounds,
484
+ transitions,
485
+ };
486
+ // Write transitions to training buffer WITH diffs (for code-policy training)
487
+ try {
488
+ const { TrainingBuffer } = await import("./training-buffer.js");
489
+ const tb = new TrainingBuffer(session.projectRoot);
490
+ for (const t of transitions) {
491
+ tb.append({
492
+ agent: t.agent,
493
+ state: t.state,
494
+ action: {
495
+ ...t.action,
496
+ // Include the actual code diff for code-policy training (AutoHarness pattern)
497
+ code_diff: t.action_diff?.slice(0, 10000) || "", // Cap at 10KB
498
+ },
499
+ reward: {
500
+ composite_delta: t.reward,
501
+ dimension_deltas: {},
502
+ tests_added: 0,
503
+ quality_score: t.reward > 0 ? 1 : 0,
504
+ improved: t.reward > 0,
505
+ },
506
+ metadata: {
507
+ branch: session.branch,
508
+ source: "autoresearch",
509
+ session_id: session.id,
510
+ round: t.state?.trajectory_length || 0,
511
+ hypothesis: t.hypothesis,
512
+ },
513
+ });
514
+ }
515
+ }
516
+ catch { }
517
+ // If we improved, push the branch (but do NOT create a PR or auto-merge)
518
+ // Following Karpathy's autoresearch pattern: branches grow overnight,
519
+ // humans (or their agents) review and merge in the morning
520
+ if (improvedRounds > 0) {
521
+ // Push the branch so it's available for review
522
+ const push = gitExec(["push", "-u", "origin", session.branch], session.worktreePath);
523
+ if (push.ok) {
524
+ summary.branchUrl = `https://github.com/402goose/${session.worktreePath.split('/').pop()}/tree/${session.branch}`;
525
+ }
526
+ // Emit scope:impact events for each produces pattern
527
+ // This triggers downstream agents that consume these patterns
528
+ for (const pattern of session.config.context_scope.produces) {
529
+ emitScopeImpact(session, pattern, totalDelta, summary);
530
+ }
531
+ }
532
+ // Clean up worktree — the branch persists on remote for review
533
+ gitExec(["worktree", "remove", session.worktreePath, "--force"], session.projectRoot);
534
+ gitExec(["worktree", "prune"], session.projectRoot);
535
+ return summary;
536
+ }
537
+ async function createPR(session, summary) {
538
+ // Push branch from worktree
539
+ const push = gitExec(["push", "-u", "origin", session.branch], session.worktreePath);
540
+ if (!push.ok) {
541
+ return undefined;
542
+ }
543
+ // Create PR
544
+ const title = `Agent(${session.agentName}): +${summary.totalDelta.toFixed(4)} ${session.config.metric}`;
545
+ const body = [
546
+ `## Scoped Agent Result`,
547
+ "",
548
+ `**Agent:** ${session.agentName}`,
549
+ `**Metric:** ${session.config.metric}`,
550
+ `**Baseline:** ${summary.baseline.toFixed(4)}`,
551
+ `**Final:** ${summary.finalMetric.toFixed(4)}`,
552
+ `**Delta:** +${summary.totalDelta.toFixed(4)}`,
553
+ "",
554
+ `### Rounds`,
555
+ `- Total: ${summary.rounds}`,
556
+ `- Improved: ${summary.improvedRounds}`,
557
+ `- Best delta: +${summary.bestDelta.toFixed(4)}`,
558
+ "",
559
+ "---",
560
+ "*Generated by JFL scoped agent*",
561
+ ].join("\n");
562
+ const prResult = spawnSync("gh", [
563
+ "pr", "create",
564
+ "--title", title,
565
+ "--body", body,
566
+ "--base", session.baseBranch,
567
+ "--head", session.branch,
568
+ "--label", "agent-generated",
569
+ ], {
570
+ cwd: session.worktreePath,
571
+ encoding: "utf-8",
572
+ stdio: "pipe",
573
+ });
574
+ if (prResult.status === 0) {
575
+ return prResult.stdout.trim();
576
+ }
577
+ // Try without label
578
+ const prRetry = spawnSync("gh", [
579
+ "pr", "create",
580
+ "--title", title,
581
+ "--body", body,
582
+ "--base", session.baseBranch,
583
+ "--head", session.branch,
584
+ ], {
585
+ cwd: session.worktreePath,
586
+ encoding: "utf-8",
587
+ stdio: "pipe",
588
+ });
589
+ return prRetry.status === 0 ? prRetry.stdout.trim() : undefined;
590
+ }
591
+ // ============================================================================
592
+ // Session Recovery
593
+ // ============================================================================
594
+ export function loadSessionState(projectRoot, sessionId) {
595
+ const sessionDir = join(projectRoot, ".jfl", "sessions", sessionId);
596
+ const statePath = join(sessionDir, "state.json");
597
+ if (!existsSync(statePath))
598
+ return null;
599
+ try {
600
+ const state = JSON.parse(readFileSync(statePath, "utf-8"));
601
+ return state;
602
+ }
603
+ catch {
604
+ return null;
605
+ }
606
+ }
607
+ export function saveSessionState(session) {
608
+ const sessionDir = join(session.projectRoot, ".jfl", "sessions", session.id);
609
+ if (!existsSync(sessionDir)) {
610
+ mkdirSync(sessionDir, { recursive: true });
611
+ }
612
+ const statePath = join(sessionDir, "state.json");
613
+ writeFileSync(statePath, JSON.stringify(session, null, 2));
614
+ }
615
+ export function listActiveSessions(projectRoot) {
616
+ const sessionsDir = join(projectRoot, ".jfl", "sessions");
617
+ if (!existsSync(sessionsDir))
618
+ return [];
619
+ const { readdirSync } = require("fs");
620
+ const sessions = [];
621
+ for (const entry of readdirSync(sessionsDir)) {
622
+ const statePath = join(sessionsDir, entry, "state.json");
623
+ if (existsSync(statePath)) {
624
+ try {
625
+ const state = JSON.parse(readFileSync(statePath, "utf-8"));
626
+ if (state.status === "active") {
627
+ sessions.push(entry);
628
+ }
629
+ }
630
+ catch { }
631
+ }
632
+ }
633
+ return sessions;
634
+ }
635
+ //# sourceMappingURL=agent-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../src/lib/agent-session.ts"],"names":[],"mappings":"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"}