@10et/cli 1.0.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 (1401) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +79 -0
  3. package/clawdbot-plugin/clawdbot.plugin.json +20 -0
  4. package/clawdbot-plugin/index.js +555 -0
  5. package/clawdbot-plugin/index.ts +582 -0
  6. package/clawdbot-skill/README.md +328 -0
  7. package/clawdbot-skill/SKILL.md +59 -0
  8. package/clawdbot-skill/index.ts +683 -0
  9. package/clawdbot-skill/package.json +28 -0
  10. package/clawdbot-skill/skill.json +19 -0
  11. package/dist/commands/agent.d.ts +7 -0
  12. package/dist/commands/agent.d.ts.map +1 -0
  13. package/dist/commands/agent.js +170 -0
  14. package/dist/commands/agent.js.map +1 -0
  15. package/dist/commands/agents.d.ts +5 -0
  16. package/dist/commands/agents.d.ts.map +1 -0
  17. package/dist/commands/agents.js +400 -0
  18. package/dist/commands/agents.js.map +1 -0
  19. package/dist/commands/ci-setup.d.ts +5 -0
  20. package/dist/commands/ci-setup.d.ts.map +1 -0
  21. package/dist/commands/ci-setup.js +82 -0
  22. package/dist/commands/ci-setup.js.map +1 -0
  23. package/dist/commands/clawdbot.d.ts +11 -0
  24. package/dist/commands/clawdbot.d.ts.map +1 -0
  25. package/dist/commands/clawdbot.js +215 -0
  26. package/dist/commands/clawdbot.js.map +1 -0
  27. package/dist/commands/context-hub.d.ts +22 -0
  28. package/dist/commands/context-hub.d.ts.map +1 -0
  29. package/dist/commands/context-hub.js +3505 -0
  30. package/dist/commands/context-hub.js.map +1 -0
  31. package/dist/commands/deploy.d.ts +5 -0
  32. package/dist/commands/deploy.d.ts.map +1 -0
  33. package/dist/commands/deploy.js +371 -0
  34. package/dist/commands/deploy.js.map +1 -0
  35. package/dist/commands/digest.d.ts +12 -0
  36. package/dist/commands/digest.d.ts.map +1 -0
  37. package/dist/commands/digest.js +128 -0
  38. package/dist/commands/digest.js.map +1 -0
  39. package/dist/commands/doctor.d.ts +8 -0
  40. package/dist/commands/doctor.d.ts.map +1 -0
  41. package/dist/commands/doctor.js +265 -0
  42. package/dist/commands/doctor.js.map +1 -0
  43. package/dist/commands/eval.d.ts +46 -0
  44. package/dist/commands/eval.d.ts.map +1 -0
  45. package/dist/commands/eval.js +427 -0
  46. package/dist/commands/eval.js.map +1 -0
  47. package/dist/commands/feedback.d.ts +2 -0
  48. package/dist/commands/feedback.d.ts.map +1 -0
  49. package/dist/commands/feedback.js +179 -0
  50. package/dist/commands/feedback.js.map +1 -0
  51. package/dist/commands/findings.d.ts +13 -0
  52. package/dist/commands/findings.d.ts.map +1 -0
  53. package/dist/commands/findings.js +203 -0
  54. package/dist/commands/findings.js.map +1 -0
  55. package/dist/commands/flows.d.ts +10 -0
  56. package/dist/commands/flows.d.ts.map +1 -0
  57. package/dist/commands/flows.js +423 -0
  58. package/dist/commands/flows.js.map +1 -0
  59. package/dist/commands/gtm-process-update.d.ts +10 -0
  60. package/dist/commands/gtm-process-update.d.ts.map +1 -0
  61. package/dist/commands/gtm-process-update.js +101 -0
  62. package/dist/commands/gtm-process-update.js.map +1 -0
  63. package/dist/commands/hooks.d.ts +13 -0
  64. package/dist/commands/hooks.d.ts.map +1 -0
  65. package/dist/commands/hooks.js +304 -0
  66. package/dist/commands/hooks.js.map +1 -0
  67. package/dist/commands/hud.d.ts +4 -0
  68. package/dist/commands/hud.d.ts.map +1 -0
  69. package/dist/commands/hud.js +300 -0
  70. package/dist/commands/hud.js.map +1 -0
  71. package/dist/commands/ide.d.ts +28 -0
  72. package/dist/commands/ide.d.ts.map +1 -0
  73. package/dist/commands/ide.js +628 -0
  74. package/dist/commands/ide.js.map +1 -0
  75. package/dist/commands/improve.d.ts +11 -0
  76. package/dist/commands/improve.d.ts.map +1 -0
  77. package/dist/commands/improve.js +77 -0
  78. package/dist/commands/improve.js.map +1 -0
  79. package/dist/commands/init-from-service.d.ts +15 -0
  80. package/dist/commands/init-from-service.d.ts.map +1 -0
  81. package/dist/commands/init-from-service.js +540 -0
  82. package/dist/commands/init-from-service.js.map +1 -0
  83. package/dist/commands/init.d.ts +15 -0
  84. package/dist/commands/init.d.ts.map +1 -0
  85. package/dist/commands/init.js +940 -0
  86. package/dist/commands/init.js.map +1 -0
  87. package/dist/commands/kanban.d.ts +34 -0
  88. package/dist/commands/kanban.d.ts.map +1 -0
  89. package/dist/commands/kanban.js +225 -0
  90. package/dist/commands/kanban.js.map +1 -0
  91. package/dist/commands/linear.d.ts +41 -0
  92. package/dist/commands/linear.d.ts.map +1 -0
  93. package/dist/commands/linear.js +740 -0
  94. package/dist/commands/linear.js.map +1 -0
  95. package/dist/commands/login.d.ts +12 -0
  96. package/dist/commands/login.d.ts.map +1 -0
  97. package/dist/commands/login.js +780 -0
  98. package/dist/commands/login.js.map +1 -0
  99. package/dist/commands/memory.d.ts +38 -0
  100. package/dist/commands/memory.d.ts.map +1 -0
  101. package/dist/commands/memory.js +229 -0
  102. package/dist/commands/memory.js.map +1 -0
  103. package/dist/commands/migrate-services.d.ts +8 -0
  104. package/dist/commands/migrate-services.d.ts.map +1 -0
  105. package/dist/commands/migrate-services.js +182 -0
  106. package/dist/commands/migrate-services.js.map +1 -0
  107. package/dist/commands/migrate-tenet.d.ts +25 -0
  108. package/dist/commands/migrate-tenet.d.ts.map +1 -0
  109. package/dist/commands/migrate-tenet.js +252 -0
  110. package/dist/commands/migrate-tenet.js.map +1 -0
  111. package/dist/commands/onboard.d.ts +24 -0
  112. package/dist/commands/onboard.d.ts.map +1 -0
  113. package/dist/commands/onboard.js +873 -0
  114. package/dist/commands/onboard.js.map +1 -0
  115. package/dist/commands/openclaw.d.ts +59 -0
  116. package/dist/commands/openclaw.d.ts.map +1 -0
  117. package/dist/commands/openclaw.js +775 -0
  118. package/dist/commands/openclaw.js.map +1 -0
  119. package/dist/commands/orchestrate.d.ts +14 -0
  120. package/dist/commands/orchestrate.d.ts.map +1 -0
  121. package/dist/commands/orchestrate.js +270 -0
  122. package/dist/commands/orchestrate.js.map +1 -0
  123. package/dist/commands/organize.d.ts +16 -0
  124. package/dist/commands/organize.d.ts.map +1 -0
  125. package/dist/commands/organize.js +334 -0
  126. package/dist/commands/organize.js.map +1 -0
  127. package/dist/commands/peter.d.ts +21 -0
  128. package/dist/commands/peter.d.ts.map +1 -0
  129. package/dist/commands/peter.js +2778 -0
  130. package/dist/commands/peter.js.map +1 -0
  131. package/dist/commands/pi-fleet.d.ts +18 -0
  132. package/dist/commands/pi-fleet.d.ts.map +1 -0
  133. package/dist/commands/pi-fleet.js +382 -0
  134. package/dist/commands/pi-fleet.js.map +1 -0
  135. package/dist/commands/pi.d.ts +25 -0
  136. package/dist/commands/pi.d.ts.map +1 -0
  137. package/dist/commands/pi.js +218 -0
  138. package/dist/commands/pi.js.map +1 -0
  139. package/dist/commands/pivot.d.ts +28 -0
  140. package/dist/commands/pivot.d.ts.map +1 -0
  141. package/dist/commands/pivot.js +216 -0
  142. package/dist/commands/pivot.js.map +1 -0
  143. package/dist/commands/portfolio.d.ts +11 -0
  144. package/dist/commands/portfolio.d.ts.map +1 -0
  145. package/dist/commands/portfolio.js +239 -0
  146. package/dist/commands/portfolio.js.map +1 -0
  147. package/dist/commands/predict.d.ts +25 -0
  148. package/dist/commands/predict.d.ts.map +1 -0
  149. package/dist/commands/predict.js +234 -0
  150. package/dist/commands/predict.js.map +1 -0
  151. package/dist/commands/profile.d.ts +46 -0
  152. package/dist/commands/profile.d.ts.map +1 -0
  153. package/dist/commands/profile.js +498 -0
  154. package/dist/commands/profile.js.map +1 -0
  155. package/dist/commands/ralph.d.ts +11 -0
  156. package/dist/commands/ralph.d.ts.map +1 -0
  157. package/dist/commands/ralph.js +102 -0
  158. package/dist/commands/ralph.js.map +1 -0
  159. package/dist/commands/repair.d.ts +7 -0
  160. package/dist/commands/repair.d.ts.map +1 -0
  161. package/dist/commands/repair.js +356 -0
  162. package/dist/commands/repair.js.map +1 -0
  163. package/dist/commands/scope.d.ts +8 -0
  164. package/dist/commands/scope.d.ts.map +1 -0
  165. package/dist/commands/scope.js +503 -0
  166. package/dist/commands/scope.js.map +1 -0
  167. package/dist/commands/service-agent.d.ts +16 -0
  168. package/dist/commands/service-agent.d.ts.map +1 -0
  169. package/dist/commands/service-agent.js +375 -0
  170. package/dist/commands/service-agent.js.map +1 -0
  171. package/dist/commands/service-manager.d.ts +12 -0
  172. package/dist/commands/service-manager.d.ts.map +1 -0
  173. package/dist/commands/service-manager.js +969 -0
  174. package/dist/commands/service-manager.js.map +1 -0
  175. package/dist/commands/service-validate.d.ts +12 -0
  176. package/dist/commands/service-validate.d.ts.map +1 -0
  177. package/dist/commands/service-validate.js +619 -0
  178. package/dist/commands/service-validate.js.map +1 -0
  179. package/dist/commands/services-create.d.ts +15 -0
  180. package/dist/commands/services-create.d.ts.map +1 -0
  181. package/dist/commands/services-create.js +1800 -0
  182. package/dist/commands/services-create.js.map +1 -0
  183. package/dist/commands/services-scan.d.ts +13 -0
  184. package/dist/commands/services-scan.d.ts.map +1 -0
  185. package/dist/commands/services-scan.js +251 -0
  186. package/dist/commands/services-scan.js.map +1 -0
  187. package/dist/commands/services-sync-agents.d.ts +23 -0
  188. package/dist/commands/services-sync-agents.d.ts.map +1 -0
  189. package/dist/commands/services-sync-agents.js +207 -0
  190. package/dist/commands/services-sync-agents.js.map +1 -0
  191. package/dist/commands/services.d.ts +19 -0
  192. package/dist/commands/services.d.ts.map +1 -0
  193. package/dist/commands/services.js +906 -0
  194. package/dist/commands/services.js.map +1 -0
  195. package/dist/commands/session.d.ts +7 -0
  196. package/dist/commands/session.d.ts.map +1 -0
  197. package/dist/commands/session.js +597 -0
  198. package/dist/commands/session.js.map +1 -0
  199. package/dist/commands/setup.d.ts +12 -0
  200. package/dist/commands/setup.d.ts.map +1 -0
  201. package/dist/commands/setup.js +727 -0
  202. package/dist/commands/setup.js.map +1 -0
  203. package/dist/commands/skills.d.ts +31 -0
  204. package/dist/commands/skills.d.ts.map +1 -0
  205. package/dist/commands/skills.js +314 -0
  206. package/dist/commands/skills.js.map +1 -0
  207. package/dist/commands/start.d.ts +25 -0
  208. package/dist/commands/start.d.ts.map +1 -0
  209. package/dist/commands/start.js +251 -0
  210. package/dist/commands/start.js.map +1 -0
  211. package/dist/commands/status.d.ts +2 -0
  212. package/dist/commands/status.d.ts.map +1 -0
  213. package/dist/commands/status.js +163 -0
  214. package/dist/commands/status.js.map +1 -0
  215. package/dist/commands/synopsis.d.ts +54 -0
  216. package/dist/commands/synopsis.d.ts.map +1 -0
  217. package/dist/commands/synopsis.js +277 -0
  218. package/dist/commands/synopsis.js.map +1 -0
  219. package/dist/commands/telemetry-monitor.d.ts +11 -0
  220. package/dist/commands/telemetry-monitor.d.ts.map +1 -0
  221. package/dist/commands/telemetry-monitor.js +224 -0
  222. package/dist/commands/telemetry-monitor.js.map +1 -0
  223. package/dist/commands/telemetry-test.d.ts +11 -0
  224. package/dist/commands/telemetry-test.d.ts.map +1 -0
  225. package/dist/commands/telemetry-test.js +67 -0
  226. package/dist/commands/telemetry-test.js.map +1 -0
  227. package/dist/commands/tenet-agents.d.ts +13 -0
  228. package/dist/commands/tenet-agents.d.ts.map +1 -0
  229. package/dist/commands/tenet-agents.js +191 -0
  230. package/dist/commands/tenet-agents.js.map +1 -0
  231. package/dist/commands/tenet-setup.d.ts +20 -0
  232. package/dist/commands/tenet-setup.d.ts.map +1 -0
  233. package/dist/commands/tenet-setup.js +135 -0
  234. package/dist/commands/tenet-setup.js.map +1 -0
  235. package/dist/commands/train.d.ts +51 -0
  236. package/dist/commands/train.d.ts.map +1 -0
  237. package/dist/commands/train.js +692 -0
  238. package/dist/commands/train.js.map +1 -0
  239. package/dist/commands/update.d.ts +12 -0
  240. package/dist/commands/update.d.ts.map +1 -0
  241. package/dist/commands/update.js +559 -0
  242. package/dist/commands/update.js.map +1 -0
  243. package/dist/commands/validate-settings.d.ts +37 -0
  244. package/dist/commands/validate-settings.d.ts.map +1 -0
  245. package/dist/commands/validate-settings.js +197 -0
  246. package/dist/commands/validate-settings.js.map +1 -0
  247. package/dist/commands/verify.d.ts +14 -0
  248. package/dist/commands/verify.d.ts.map +1 -0
  249. package/dist/commands/verify.js +304 -0
  250. package/dist/commands/verify.js.map +1 -0
  251. package/dist/commands/viz.d.ts +40 -0
  252. package/dist/commands/viz.d.ts.map +1 -0
  253. package/dist/commands/viz.js +877 -0
  254. package/dist/commands/viz.js.map +1 -0
  255. package/dist/commands/voice.d.ts +409 -0
  256. package/dist/commands/voice.d.ts.map +1 -0
  257. package/dist/commands/voice.js +4765 -0
  258. package/dist/commands/voice.js.map +1 -0
  259. package/dist/commands/whoami.d.ts +2 -0
  260. package/dist/commands/whoami.d.ts.map +1 -0
  261. package/dist/commands/whoami.js +24 -0
  262. package/dist/commands/whoami.js.map +1 -0
  263. package/dist/dashboard/index.d.ts +11 -0
  264. package/dist/dashboard/index.d.ts.map +1 -0
  265. package/dist/dashboard/index.js +70 -0
  266. package/dist/dashboard/index.js.map +1 -0
  267. package/dist/dashboard-static/assets/index-BVrmW-ZI.js +154 -0
  268. package/dist/dashboard-static/assets/index-DtruPD44.css +1 -0
  269. package/dist/dashboard-static/index.html +16 -0
  270. package/dist/index.d.ts +4 -0
  271. package/dist/index.d.ts.map +1 -0
  272. package/dist/index.js +1707 -0
  273. package/dist/index.js.map +1 -0
  274. package/dist/lib/advanced-setup.d.ts +78 -0
  275. package/dist/lib/advanced-setup.d.ts.map +1 -0
  276. package/dist/lib/advanced-setup.js +433 -0
  277. package/dist/lib/advanced-setup.js.map +1 -0
  278. package/dist/lib/agent-config.d.ts +86 -0
  279. package/dist/lib/agent-config.d.ts.map +1 -0
  280. package/dist/lib/agent-config.js +281 -0
  281. package/dist/lib/agent-config.js.map +1 -0
  282. package/dist/lib/agent-generator.d.ts +36 -0
  283. package/dist/lib/agent-generator.d.ts.map +1 -0
  284. package/dist/lib/agent-generator.js +400 -0
  285. package/dist/lib/agent-generator.js.map +1 -0
  286. package/dist/lib/agent-guards.d.ts +67 -0
  287. package/dist/lib/agent-guards.d.ts.map +1 -0
  288. package/dist/lib/agent-guards.js +229 -0
  289. package/dist/lib/agent-guards.js.map +1 -0
  290. package/dist/lib/agent-manifest.d.ts +35 -0
  291. package/dist/lib/agent-manifest.d.ts.map +1 -0
  292. package/dist/lib/agent-manifest.js +75 -0
  293. package/dist/lib/agent-manifest.js.map +1 -0
  294. package/dist/lib/agent-runtime-api.d.ts +32 -0
  295. package/dist/lib/agent-runtime-api.d.ts.map +1 -0
  296. package/dist/lib/agent-runtime-api.js +270 -0
  297. package/dist/lib/agent-runtime-api.js.map +1 -0
  298. package/dist/lib/agent-session.d.ts +104 -0
  299. package/dist/lib/agent-session.d.ts.map +1 -0
  300. package/dist/lib/agent-session.js +954 -0
  301. package/dist/lib/agent-session.js.map +1 -0
  302. package/dist/lib/build-supervisor.d.ts +44 -0
  303. package/dist/lib/build-supervisor.d.ts.map +1 -0
  304. package/dist/lib/build-supervisor.js +79 -0
  305. package/dist/lib/build-supervisor.js.map +1 -0
  306. package/dist/lib/connectors/index.d.ts +19 -0
  307. package/dist/lib/connectors/index.d.ts.map +1 -0
  308. package/dist/lib/connectors/index.js +23 -0
  309. package/dist/lib/connectors/index.js.map +1 -0
  310. package/dist/lib/counterfactual-engine.d.ts +136 -0
  311. package/dist/lib/counterfactual-engine.d.ts.map +1 -0
  312. package/dist/lib/counterfactual-engine.js +417 -0
  313. package/dist/lib/counterfactual-engine.js.map +1 -0
  314. package/dist/lib/counterfactual-training-bridge.d.ts +114 -0
  315. package/dist/lib/counterfactual-training-bridge.d.ts.map +1 -0
  316. package/dist/lib/counterfactual-training-bridge.js +322 -0
  317. package/dist/lib/counterfactual-training-bridge.js.map +1 -0
  318. package/dist/lib/discovery-agent.d.ts +48 -0
  319. package/dist/lib/discovery-agent.d.ts.map +1 -0
  320. package/dist/lib/discovery-agent.js +111 -0
  321. package/dist/lib/discovery-agent.js.map +1 -0
  322. package/dist/lib/domain/engine.d.ts +11 -0
  323. package/dist/lib/domain/engine.d.ts.map +1 -0
  324. package/dist/lib/domain/engine.js +23 -0
  325. package/dist/lib/domain/engine.js.map +1 -0
  326. package/dist/lib/domain/index.d.ts +3 -0
  327. package/dist/lib/domain/index.d.ts.map +1 -0
  328. package/dist/lib/domain/index.js +3 -0
  329. package/dist/lib/domain/index.js.map +1 -0
  330. package/dist/lib/domain/template-loader.d.ts +9 -0
  331. package/dist/lib/domain/template-loader.d.ts.map +1 -0
  332. package/dist/lib/domain/template-loader.js +29 -0
  333. package/dist/lib/domain/template-loader.js.map +1 -0
  334. package/dist/lib/domain/types.d.ts +29 -0
  335. package/dist/lib/domain/types.d.ts.map +1 -0
  336. package/dist/lib/domain/types.js +2 -0
  337. package/dist/lib/domain/types.js.map +1 -0
  338. package/dist/lib/dynamics-model.d.ts +107 -0
  339. package/dist/lib/dynamics-model.d.ts.map +1 -0
  340. package/dist/lib/dynamics-model.js +363 -0
  341. package/dist/lib/dynamics-model.js.map +1 -0
  342. package/dist/lib/eval-snapshot.d.ts +47 -0
  343. package/dist/lib/eval-snapshot.d.ts.map +1 -0
  344. package/dist/lib/eval-snapshot.js +326 -0
  345. package/dist/lib/eval-snapshot.js.map +1 -0
  346. package/dist/lib/eval-store.d.ts +20 -0
  347. package/dist/lib/eval-store.d.ts.map +1 -0
  348. package/dist/lib/eval-store.js +209 -0
  349. package/dist/lib/eval-store.js.map +1 -0
  350. package/dist/lib/findings-engine.d.ts +51 -0
  351. package/dist/lib/findings-engine.d.ts.map +1 -0
  352. package/dist/lib/findings-engine.js +338 -0
  353. package/dist/lib/findings-engine.js.map +1 -0
  354. package/dist/lib/flow-engine.d.ts +57 -0
  355. package/dist/lib/flow-engine.d.ts.map +1 -0
  356. package/dist/lib/flow-engine.js +717 -0
  357. package/dist/lib/flow-engine.js.map +1 -0
  358. package/dist/lib/gtm-generator.d.ts +29 -0
  359. package/dist/lib/gtm-generator.d.ts.map +1 -0
  360. package/dist/lib/gtm-generator.js +250 -0
  361. package/dist/lib/gtm-generator.js.map +1 -0
  362. package/dist/lib/hook-transformer.d.ts +11 -0
  363. package/dist/lib/hook-transformer.d.ts.map +1 -0
  364. package/dist/lib/hook-transformer.js +74 -0
  365. package/dist/lib/hook-transformer.js.map +1 -0
  366. package/dist/lib/hub-client.d.ts +81 -0
  367. package/dist/lib/hub-client.d.ts.map +1 -0
  368. package/dist/lib/hub-client.js +73 -0
  369. package/dist/lib/hub-client.js.map +1 -0
  370. package/dist/lib/hub-health.d.ts +40 -0
  371. package/dist/lib/hub-health.d.ts.map +1 -0
  372. package/dist/lib/hub-health.js +101 -0
  373. package/dist/lib/hub-health.js.map +1 -0
  374. package/dist/lib/ide-panes.d.ts +58 -0
  375. package/dist/lib/ide-panes.d.ts.map +1 -0
  376. package/dist/lib/ide-panes.js +508 -0
  377. package/dist/lib/ide-panes.js.map +1 -0
  378. package/dist/lib/invariant-monitor.d.ts +54 -0
  379. package/dist/lib/invariant-monitor.d.ts.map +1 -0
  380. package/dist/lib/invariant-monitor.js +487 -0
  381. package/dist/lib/invariant-monitor.js.map +1 -0
  382. package/dist/lib/journal-analyzer.d.ts +71 -0
  383. package/dist/lib/journal-analyzer.d.ts.map +1 -0
  384. package/dist/lib/journal-analyzer.js +306 -0
  385. package/dist/lib/journal-analyzer.js.map +1 -0
  386. package/dist/lib/kanban-github.d.ts +81 -0
  387. package/dist/lib/kanban-github.d.ts.map +1 -0
  388. package/dist/lib/kanban-github.js +318 -0
  389. package/dist/lib/kanban-github.js.map +1 -0
  390. package/dist/lib/kanban.d.ts +131 -0
  391. package/dist/lib/kanban.d.ts.map +1 -0
  392. package/dist/lib/kanban.js +340 -0
  393. package/dist/lib/kanban.js.map +1 -0
  394. package/dist/lib/kuva.d.ts +45 -0
  395. package/dist/lib/kuva.d.ts.map +1 -0
  396. package/dist/lib/kuva.js +131 -0
  397. package/dist/lib/kuva.js.map +1 -0
  398. package/dist/lib/linear-client.d.ts +73 -0
  399. package/dist/lib/linear-client.d.ts.map +1 -0
  400. package/dist/lib/linear-client.js +112 -0
  401. package/dist/lib/linear-client.js.map +1 -0
  402. package/dist/lib/linear-id-map.d.ts +20 -0
  403. package/dist/lib/linear-id-map.d.ts.map +1 -0
  404. package/dist/lib/linear-id-map.js +59 -0
  405. package/dist/lib/linear-id-map.js.map +1 -0
  406. package/dist/lib/linear-kanban.d.ts +66 -0
  407. package/dist/lib/linear-kanban.d.ts.map +1 -0
  408. package/dist/lib/linear-kanban.js +175 -0
  409. package/dist/lib/linear-kanban.js.map +1 -0
  410. package/dist/lib/linear-webhook.d.ts +50 -0
  411. package/dist/lib/linear-webhook.d.ts.map +1 -0
  412. package/dist/lib/linear-webhook.js +92 -0
  413. package/dist/lib/linear-webhook.js.map +1 -0
  414. package/dist/lib/map-event-bus.d.ts +50 -0
  415. package/dist/lib/map-event-bus.d.ts.map +1 -0
  416. package/dist/lib/map-event-bus.js +366 -0
  417. package/dist/lib/map-event-bus.js.map +1 -0
  418. package/dist/lib/memory-db.d.ts +136 -0
  419. package/dist/lib/memory-db.d.ts.map +1 -0
  420. package/dist/lib/memory-db.js +429 -0
  421. package/dist/lib/memory-db.js.map +1 -0
  422. package/dist/lib/memory-indexer.d.ts +61 -0
  423. package/dist/lib/memory-indexer.d.ts.map +1 -0
  424. package/dist/lib/memory-indexer.js +418 -0
  425. package/dist/lib/memory-indexer.js.map +1 -0
  426. package/dist/lib/memory-search.d.ts +185 -0
  427. package/dist/lib/memory-search.d.ts.map +1 -0
  428. package/dist/lib/memory-search.js +678 -0
  429. package/dist/lib/memory-search.js.map +1 -0
  430. package/dist/lib/meta-orchestrator.d.ts +141 -0
  431. package/dist/lib/meta-orchestrator.d.ts.map +1 -0
  432. package/dist/lib/meta-orchestrator.js +552 -0
  433. package/dist/lib/meta-orchestrator.js.map +1 -0
  434. package/dist/lib/model-pricing.d.ts +11 -0
  435. package/dist/lib/model-pricing.d.ts.map +1 -0
  436. package/dist/lib/model-pricing.js +27 -0
  437. package/dist/lib/model-pricing.js.map +1 -0
  438. package/dist/lib/onboarding.d.ts +40 -0
  439. package/dist/lib/onboarding.d.ts.map +1 -0
  440. package/dist/lib/onboarding.js +213 -0
  441. package/dist/lib/onboarding.js.map +1 -0
  442. package/dist/lib/openclaw-registry.d.ts +48 -0
  443. package/dist/lib/openclaw-registry.d.ts.map +1 -0
  444. package/dist/lib/openclaw-registry.js +181 -0
  445. package/dist/lib/openclaw-registry.js.map +1 -0
  446. package/dist/lib/openclaw-sdk.d.ts +115 -0
  447. package/dist/lib/openclaw-sdk.d.ts.map +1 -0
  448. package/dist/lib/openclaw-sdk.js +220 -0
  449. package/dist/lib/openclaw-sdk.js.map +1 -0
  450. package/dist/lib/peer-agent-generator.d.ts +44 -0
  451. package/dist/lib/peer-agent-generator.d.ts.map +1 -0
  452. package/dist/lib/peer-agent-generator.js +310 -0
  453. package/dist/lib/peer-agent-generator.js.map +1 -0
  454. package/dist/lib/peter-parker-bridge.d.ts +70 -0
  455. package/dist/lib/peter-parker-bridge.d.ts.map +1 -0
  456. package/dist/lib/peter-parker-bridge.js +345 -0
  457. package/dist/lib/peter-parker-bridge.js.map +1 -0
  458. package/dist/lib/peter-parker-config.d.ts +13 -0
  459. package/dist/lib/peter-parker-config.d.ts.map +1 -0
  460. package/dist/lib/peter-parker-config.js +86 -0
  461. package/dist/lib/peter-parker-config.js.map +1 -0
  462. package/dist/lib/physical-world-model.d.ts +50 -0
  463. package/dist/lib/physical-world-model.d.ts.map +1 -0
  464. package/dist/lib/physical-world-model.js +251 -0
  465. package/dist/lib/physical-world-model.js.map +1 -0
  466. package/dist/lib/pi-sky/bridge.d.ts +55 -0
  467. package/dist/lib/pi-sky/bridge.d.ts.map +1 -0
  468. package/dist/lib/pi-sky/bridge.js +264 -0
  469. package/dist/lib/pi-sky/bridge.js.map +1 -0
  470. package/dist/lib/pi-sky/cost-monitor.d.ts +21 -0
  471. package/dist/lib/pi-sky/cost-monitor.d.ts.map +1 -0
  472. package/dist/lib/pi-sky/cost-monitor.js +126 -0
  473. package/dist/lib/pi-sky/cost-monitor.js.map +1 -0
  474. package/dist/lib/pi-sky/eval-sweep.d.ts +27 -0
  475. package/dist/lib/pi-sky/eval-sweep.d.ts.map +1 -0
  476. package/dist/lib/pi-sky/eval-sweep.js +141 -0
  477. package/dist/lib/pi-sky/eval-sweep.js.map +1 -0
  478. package/dist/lib/pi-sky/event-router.d.ts +32 -0
  479. package/dist/lib/pi-sky/event-router.d.ts.map +1 -0
  480. package/dist/lib/pi-sky/event-router.js +176 -0
  481. package/dist/lib/pi-sky/event-router.js.map +1 -0
  482. package/dist/lib/pi-sky/experiment.d.ts +9 -0
  483. package/dist/lib/pi-sky/experiment.d.ts.map +1 -0
  484. package/dist/lib/pi-sky/experiment.js +83 -0
  485. package/dist/lib/pi-sky/experiment.js.map +1 -0
  486. package/dist/lib/pi-sky/index.d.ts +16 -0
  487. package/dist/lib/pi-sky/index.d.ts.map +1 -0
  488. package/dist/lib/pi-sky/index.js +16 -0
  489. package/dist/lib/pi-sky/index.js.map +1 -0
  490. package/dist/lib/pi-sky/stratus-gate.d.ts +28 -0
  491. package/dist/lib/pi-sky/stratus-gate.d.ts.map +1 -0
  492. package/dist/lib/pi-sky/stratus-gate.js +61 -0
  493. package/dist/lib/pi-sky/stratus-gate.js.map +1 -0
  494. package/dist/lib/pi-sky/swarm.d.ts +28 -0
  495. package/dist/lib/pi-sky/swarm.d.ts.map +1 -0
  496. package/dist/lib/pi-sky/swarm.js +208 -0
  497. package/dist/lib/pi-sky/swarm.js.map +1 -0
  498. package/dist/lib/pi-sky/types.d.ts +139 -0
  499. package/dist/lib/pi-sky/types.d.ts.map +1 -0
  500. package/dist/lib/pi-sky/types.js +2 -0
  501. package/dist/lib/pi-sky/types.js.map +1 -0
  502. package/dist/lib/pi-sky/voice-bridge.d.ts +20 -0
  503. package/dist/lib/pi-sky/voice-bridge.d.ts.map +1 -0
  504. package/dist/lib/pi-sky/voice-bridge.js +91 -0
  505. package/dist/lib/pi-sky/voice-bridge.js.map +1 -0
  506. package/dist/lib/planning-loop.d.ts +157 -0
  507. package/dist/lib/planning-loop.d.ts.map +1 -0
  508. package/dist/lib/planning-loop.js +537 -0
  509. package/dist/lib/planning-loop.js.map +1 -0
  510. package/dist/lib/policy-head.d.ts +53 -0
  511. package/dist/lib/policy-head.d.ts.map +1 -0
  512. package/dist/lib/policy-head.js +400 -0
  513. package/dist/lib/policy-head.js.map +1 -0
  514. package/dist/lib/predictor.d.ts +109 -0
  515. package/dist/lib/predictor.d.ts.map +1 -0
  516. package/dist/lib/predictor.js +433 -0
  517. package/dist/lib/predictor.js.map +1 -0
  518. package/dist/lib/replay-buffer.d.ts +93 -0
  519. package/dist/lib/replay-buffer.d.ts.map +1 -0
  520. package/dist/lib/replay-buffer.js +302 -0
  521. package/dist/lib/replay-buffer.js.map +1 -0
  522. package/dist/lib/resource-optimizer-middleware.d.ts +39 -0
  523. package/dist/lib/resource-optimizer-middleware.d.ts.map +1 -0
  524. package/dist/lib/resource-optimizer-middleware.js +228 -0
  525. package/dist/lib/resource-optimizer-middleware.js.map +1 -0
  526. package/dist/lib/resource-optimizer.d.ts +71 -0
  527. package/dist/lib/resource-optimizer.d.ts.map +1 -0
  528. package/dist/lib/resource-optimizer.js +228 -0
  529. package/dist/lib/resource-optimizer.js.map +1 -0
  530. package/dist/lib/rewards/index.d.ts +14 -0
  531. package/dist/lib/rewards/index.d.ts.map +1 -0
  532. package/dist/lib/rewards/index.js +15 -0
  533. package/dist/lib/rewards/index.js.map +1 -0
  534. package/dist/lib/rl-manager.d.ts +74 -0
  535. package/dist/lib/rl-manager.d.ts.map +1 -0
  536. package/dist/lib/rl-manager.js +245 -0
  537. package/dist/lib/rl-manager.js.map +1 -0
  538. package/dist/lib/sentinel-rl.d.ts +97 -0
  539. package/dist/lib/sentinel-rl.d.ts.map +1 -0
  540. package/dist/lib/sentinel-rl.js +430 -0
  541. package/dist/lib/sentinel-rl.js.map +1 -0
  542. package/dist/lib/service-analyzer.d.ts +76 -0
  543. package/dist/lib/service-analyzer.d.ts.map +1 -0
  544. package/dist/lib/service-analyzer.js +704 -0
  545. package/dist/lib/service-analyzer.js.map +1 -0
  546. package/dist/lib/service-dependencies.d.ts +44 -0
  547. package/dist/lib/service-dependencies.d.ts.map +1 -0
  548. package/dist/lib/service-dependencies.js +314 -0
  549. package/dist/lib/service-dependencies.js.map +1 -0
  550. package/dist/lib/service-detector.d.ts +61 -0
  551. package/dist/lib/service-detector.d.ts.map +1 -0
  552. package/dist/lib/service-detector.js +541 -0
  553. package/dist/lib/service-detector.js.map +1 -0
  554. package/dist/lib/service-gtm.d.ts +208 -0
  555. package/dist/lib/service-gtm.d.ts.map +1 -0
  556. package/dist/lib/service-gtm.js +1006 -0
  557. package/dist/lib/service-gtm.js.map +1 -0
  558. package/dist/lib/service-mcp-base.d.ts +103 -0
  559. package/dist/lib/service-mcp-base.d.ts.map +1 -0
  560. package/dist/lib/service-mcp-base.js +263 -0
  561. package/dist/lib/service-mcp-base.js.map +1 -0
  562. package/dist/lib/service-questionnaire.d.ts +11 -0
  563. package/dist/lib/service-questionnaire.d.ts.map +1 -0
  564. package/dist/lib/service-questionnaire.js +89 -0
  565. package/dist/lib/service-questionnaire.js.map +1 -0
  566. package/dist/lib/service-utils.d.ts +103 -0
  567. package/dist/lib/service-utils.d.ts.map +1 -0
  568. package/dist/lib/service-utils.js +385 -0
  569. package/dist/lib/service-utils.js.map +1 -0
  570. package/dist/lib/session-lock.d.ts +61 -0
  571. package/dist/lib/session-lock.d.ts.map +1 -0
  572. package/dist/lib/session-lock.js +438 -0
  573. package/dist/lib/session-lock.js.map +1 -0
  574. package/dist/lib/setup/agent-generator.d.ts +25 -0
  575. package/dist/lib/setup/agent-generator.d.ts.map +1 -0
  576. package/dist/lib/setup/agent-generator.js +444 -0
  577. package/dist/lib/setup/agent-generator.js.map +1 -0
  578. package/dist/lib/setup/context-analyzer.d.ts +16 -0
  579. package/dist/lib/setup/context-analyzer.d.ts.map +1 -0
  580. package/dist/lib/setup/context-analyzer.js +112 -0
  581. package/dist/lib/setup/context-analyzer.js.map +1 -0
  582. package/dist/lib/setup/doc-auditor.d.ts +54 -0
  583. package/dist/lib/setup/doc-auditor.d.ts.map +1 -0
  584. package/dist/lib/setup/doc-auditor.js +629 -0
  585. package/dist/lib/setup/doc-auditor.js.map +1 -0
  586. package/dist/lib/setup/domain-generator.d.ts +7 -0
  587. package/dist/lib/setup/domain-generator.d.ts.map +1 -0
  588. package/dist/lib/setup/domain-generator.js +58 -0
  589. package/dist/lib/setup/domain-generator.js.map +1 -0
  590. package/dist/lib/setup/flow-generator.d.ts +10 -0
  591. package/dist/lib/setup/flow-generator.d.ts.map +1 -0
  592. package/dist/lib/setup/flow-generator.js +113 -0
  593. package/dist/lib/setup/flow-generator.js.map +1 -0
  594. package/dist/lib/setup/invariant-bridge.d.ts +91 -0
  595. package/dist/lib/setup/invariant-bridge.d.ts.map +1 -0
  596. package/dist/lib/setup/invariant-bridge.js +384 -0
  597. package/dist/lib/setup/invariant-bridge.js.map +1 -0
  598. package/dist/lib/setup/smart-eval-generator.d.ts +38 -0
  599. package/dist/lib/setup/smart-eval-generator.d.ts.map +1 -0
  600. package/dist/lib/setup/smart-eval-generator.js +378 -0
  601. package/dist/lib/setup/smart-eval-generator.js.map +1 -0
  602. package/dist/lib/setup/smart-recommender.d.ts +63 -0
  603. package/dist/lib/setup/smart-recommender.d.ts.map +1 -0
  604. package/dist/lib/setup/smart-recommender.js +329 -0
  605. package/dist/lib/setup/smart-recommender.js.map +1 -0
  606. package/dist/lib/setup/spec-generator.d.ts +99 -0
  607. package/dist/lib/setup/spec-generator.d.ts.map +1 -0
  608. package/dist/lib/setup/spec-generator.js +784 -0
  609. package/dist/lib/setup/spec-generator.js.map +1 -0
  610. package/dist/lib/setup/starter-intelligence.d.ts +25 -0
  611. package/dist/lib/setup/starter-intelligence.d.ts.map +1 -0
  612. package/dist/lib/setup/starter-intelligence.js +309 -0
  613. package/dist/lib/setup/starter-intelligence.js.map +1 -0
  614. package/dist/lib/setup/violation-agent-generator.d.ts +32 -0
  615. package/dist/lib/setup/violation-agent-generator.d.ts.map +1 -0
  616. package/dist/lib/setup/violation-agent-generator.js +255 -0
  617. package/dist/lib/setup/violation-agent-generator.js.map +1 -0
  618. package/dist/lib/skill-generator.d.ts +21 -0
  619. package/dist/lib/skill-generator.d.ts.map +1 -0
  620. package/dist/lib/skill-generator.js +253 -0
  621. package/dist/lib/skill-generator.js.map +1 -0
  622. package/dist/lib/state-capture.d.ts +36 -0
  623. package/dist/lib/state-capture.d.ts.map +1 -0
  624. package/dist/lib/state-capture.js +541 -0
  625. package/dist/lib/state-capture.js.map +1 -0
  626. package/dist/lib/stealth-onboarding.d.ts +40 -0
  627. package/dist/lib/stealth-onboarding.d.ts.map +1 -0
  628. package/dist/lib/stealth-onboarding.js +213 -0
  629. package/dist/lib/stealth-onboarding.js.map +1 -0
  630. package/dist/lib/storage/cloud.d.ts +27 -0
  631. package/dist/lib/storage/cloud.d.ts.map +1 -0
  632. package/dist/lib/storage/cloud.js +75 -0
  633. package/dist/lib/storage/cloud.js.map +1 -0
  634. package/dist/lib/storage/index.d.ts +15 -0
  635. package/dist/lib/storage/index.d.ts.map +1 -0
  636. package/dist/lib/storage/index.js +15 -0
  637. package/dist/lib/storage/index.js.map +1 -0
  638. package/dist/lib/storage/interface.d.ts +56 -0
  639. package/dist/lib/storage/interface.d.ts.map +1 -0
  640. package/dist/lib/storage/interface.js +2 -0
  641. package/dist/lib/storage/interface.js.map +1 -0
  642. package/dist/lib/storage/local.d.ts +26 -0
  643. package/dist/lib/storage/local.d.ts.map +1 -0
  644. package/dist/lib/storage/local.js +164 -0
  645. package/dist/lib/storage/local.js.map +1 -0
  646. package/dist/lib/stratus-client.d.ts +178 -0
  647. package/dist/lib/stratus-client.d.ts.map +1 -0
  648. package/dist/lib/stratus-client.js +739 -0
  649. package/dist/lib/stratus-client.js.map +1 -0
  650. package/dist/lib/stratus-rollout-test.d.ts +10 -0
  651. package/dist/lib/stratus-rollout-test.d.ts.map +1 -0
  652. package/dist/lib/stratus-rollout-test.js +412 -0
  653. package/dist/lib/stratus-rollout-test.js.map +1 -0
  654. package/dist/lib/surface-agent.d.ts +78 -0
  655. package/dist/lib/surface-agent.d.ts.map +1 -0
  656. package/dist/lib/surface-agent.js +105 -0
  657. package/dist/lib/surface-agent.js.map +1 -0
  658. package/dist/lib/surface-coordination-example.d.ts +30 -0
  659. package/dist/lib/surface-coordination-example.d.ts.map +1 -0
  660. package/dist/lib/surface-coordination-example.js +164 -0
  661. package/dist/lib/surface-coordination-example.js.map +1 -0
  662. package/dist/lib/telemetry/physical-world-collector.d.ts +15 -0
  663. package/dist/lib/telemetry/physical-world-collector.d.ts.map +1 -0
  664. package/dist/lib/telemetry/physical-world-collector.js +177 -0
  665. package/dist/lib/telemetry/physical-world-collector.js.map +1 -0
  666. package/dist/lib/telemetry/training-bridge.d.ts +51 -0
  667. package/dist/lib/telemetry/training-bridge.d.ts.map +1 -0
  668. package/dist/lib/telemetry/training-bridge.js +185 -0
  669. package/dist/lib/telemetry/training-bridge.js.map +1 -0
  670. package/dist/lib/telemetry-agent-v2.d.ts +128 -0
  671. package/dist/lib/telemetry-agent-v2.d.ts.map +1 -0
  672. package/dist/lib/telemetry-agent-v2.js +1043 -0
  673. package/dist/lib/telemetry-agent-v2.js.map +1 -0
  674. package/dist/lib/telemetry-agent.d.ts +57 -0
  675. package/dist/lib/telemetry-agent.d.ts.map +1 -0
  676. package/dist/lib/telemetry-agent.js +289 -0
  677. package/dist/lib/telemetry-agent.js.map +1 -0
  678. package/dist/lib/telemetry-digest.d.ts +10 -0
  679. package/dist/lib/telemetry-digest.d.ts.map +1 -0
  680. package/dist/lib/telemetry-digest.js +381 -0
  681. package/dist/lib/telemetry-digest.js.map +1 -0
  682. package/dist/lib/telemetry.d.ts +37 -0
  683. package/dist/lib/telemetry.d.ts.map +1 -0
  684. package/dist/lib/telemetry.js +376 -0
  685. package/dist/lib/telemetry.js.map +1 -0
  686. package/dist/lib/tenet-board-agent.d.ts +52 -0
  687. package/dist/lib/tenet-board-agent.d.ts.map +1 -0
  688. package/dist/lib/tenet-board-agent.js +226 -0
  689. package/dist/lib/tenet-board-agent.js.map +1 -0
  690. package/dist/lib/tenet-ide-agent.d.ts +40 -0
  691. package/dist/lib/tenet-ide-agent.d.ts.map +1 -0
  692. package/dist/lib/tenet-ide-agent.js +199 -0
  693. package/dist/lib/tenet-ide-agent.js.map +1 -0
  694. package/dist/lib/text-preprocessing.d.ts +83 -0
  695. package/dist/lib/text-preprocessing.d.ts.map +1 -0
  696. package/dist/lib/text-preprocessing.js +261 -0
  697. package/dist/lib/text-preprocessing.js.map +1 -0
  698. package/dist/lib/tool-schemas.d.ts +35 -0
  699. package/dist/lib/tool-schemas.d.ts.map +1 -0
  700. package/dist/lib/tool-schemas.js +246 -0
  701. package/dist/lib/tool-schemas.js.map +1 -0
  702. package/dist/lib/training-buffer.d.ts +86 -0
  703. package/dist/lib/training-buffer.d.ts.map +1 -0
  704. package/dist/lib/training-buffer.js +139 -0
  705. package/dist/lib/training-buffer.js.map +1 -0
  706. package/dist/lib/training-tuples.d.ts +33 -0
  707. package/dist/lib/training-tuples.d.ts.map +1 -0
  708. package/dist/lib/training-tuples.js +273 -0
  709. package/dist/lib/training-tuples.js.map +1 -0
  710. package/dist/lib/trajectory-loader.d.ts +82 -0
  711. package/dist/lib/trajectory-loader.d.ts.map +1 -0
  712. package/dist/lib/trajectory-loader.js +406 -0
  713. package/dist/lib/trajectory-loader.js.map +1 -0
  714. package/dist/lib/tuple-miner.d.ts +30 -0
  715. package/dist/lib/tuple-miner.d.ts.map +1 -0
  716. package/dist/lib/tuple-miner.js +427 -0
  717. package/dist/lib/tuple-miner.js.map +1 -0
  718. package/dist/lib/vm-backend.d.ts +72 -0
  719. package/dist/lib/vm-backend.d.ts.map +1 -0
  720. package/dist/lib/vm-backend.js +175 -0
  721. package/dist/lib/vm-backend.js.map +1 -0
  722. package/dist/lib/workspace/backend.d.ts +53 -0
  723. package/dist/lib/workspace/backend.d.ts.map +1 -0
  724. package/dist/lib/workspace/backend.js +37 -0
  725. package/dist/lib/workspace/backend.js.map +1 -0
  726. package/dist/lib/workspace/cmux-adapter.d.ts +46 -0
  727. package/dist/lib/workspace/cmux-adapter.d.ts.map +1 -0
  728. package/dist/lib/workspace/cmux-adapter.js +261 -0
  729. package/dist/lib/workspace/cmux-adapter.js.map +1 -0
  730. package/dist/lib/workspace/data-pipeline.d.ts +35 -0
  731. package/dist/lib/workspace/data-pipeline.d.ts.map +1 -0
  732. package/dist/lib/workspace/data-pipeline.js +494 -0
  733. package/dist/lib/workspace/data-pipeline.js.map +1 -0
  734. package/dist/lib/workspace/engine.d.ts +65 -0
  735. package/dist/lib/workspace/engine.d.ts.map +1 -0
  736. package/dist/lib/workspace/engine.js +407 -0
  737. package/dist/lib/workspace/engine.js.map +1 -0
  738. package/dist/lib/workspace/notifications.d.ts +14 -0
  739. package/dist/lib/workspace/notifications.d.ts.map +1 -0
  740. package/dist/lib/workspace/notifications.js +41 -0
  741. package/dist/lib/workspace/notifications.js.map +1 -0
  742. package/dist/lib/workspace/sidebar-runner.d.ts +13 -0
  743. package/dist/lib/workspace/sidebar-runner.d.ts.map +1 -0
  744. package/dist/lib/workspace/sidebar-runner.js +419 -0
  745. package/dist/lib/workspace/sidebar-runner.js.map +1 -0
  746. package/dist/lib/workspace/surface-registry.d.ts +49 -0
  747. package/dist/lib/workspace/surface-registry.d.ts.map +1 -0
  748. package/dist/lib/workspace/surface-registry.js +225 -0
  749. package/dist/lib/workspace/surface-registry.js.map +1 -0
  750. package/dist/lib/workspace/surface-type.d.ts +153 -0
  751. package/dist/lib/workspace/surface-type.d.ts.map +1 -0
  752. package/dist/lib/workspace/surface-type.js +9 -0
  753. package/dist/lib/workspace/surface-type.js.map +1 -0
  754. package/dist/lib/workspace/surfaces/agent-overview.d.ts +16 -0
  755. package/dist/lib/workspace/surfaces/agent-overview.d.ts.map +1 -0
  756. package/dist/lib/workspace/surfaces/agent-overview.js +116 -0
  757. package/dist/lib/workspace/surfaces/agent-overview.js.map +1 -0
  758. package/dist/lib/workspace/surfaces/agent.d.ts +16 -0
  759. package/dist/lib/workspace/surfaces/agent.d.ts.map +1 -0
  760. package/dist/lib/workspace/surfaces/agent.js +112 -0
  761. package/dist/lib/workspace/surfaces/agent.js.map +1 -0
  762. package/dist/lib/workspace/surfaces/claude.d.ts +15 -0
  763. package/dist/lib/workspace/surfaces/claude.d.ts.map +1 -0
  764. package/dist/lib/workspace/surfaces/claude.js +23 -0
  765. package/dist/lib/workspace/surfaces/claude.js.map +1 -0
  766. package/dist/lib/workspace/surfaces/dashboard.d.ts +21 -0
  767. package/dist/lib/workspace/surfaces/dashboard.d.ts.map +1 -0
  768. package/dist/lib/workspace/surfaces/dashboard.js +32 -0
  769. package/dist/lib/workspace/surfaces/dashboard.js.map +1 -0
  770. package/dist/lib/workspace/surfaces/eval.d.ts +15 -0
  771. package/dist/lib/workspace/surfaces/eval.d.ts.map +1 -0
  772. package/dist/lib/workspace/surfaces/eval.js +42 -0
  773. package/dist/lib/workspace/surfaces/eval.js.map +1 -0
  774. package/dist/lib/workspace/surfaces/event-stream.d.ts +16 -0
  775. package/dist/lib/workspace/surfaces/event-stream.d.ts.map +1 -0
  776. package/dist/lib/workspace/surfaces/event-stream.js +40 -0
  777. package/dist/lib/workspace/surfaces/event-stream.js.map +1 -0
  778. package/dist/lib/workspace/surfaces/flow.d.ts +16 -0
  779. package/dist/lib/workspace/surfaces/flow.d.ts.map +1 -0
  780. package/dist/lib/workspace/surfaces/flow.js +49 -0
  781. package/dist/lib/workspace/surfaces/flow.js.map +1 -0
  782. package/dist/lib/workspace/surfaces/index.d.ts +19 -0
  783. package/dist/lib/workspace/surfaces/index.d.ts.map +1 -0
  784. package/dist/lib/workspace/surfaces/index.js +19 -0
  785. package/dist/lib/workspace/surfaces/index.js.map +1 -0
  786. package/dist/lib/workspace/surfaces/kanban.d.ts +15 -0
  787. package/dist/lib/workspace/surfaces/kanban.d.ts.map +1 -0
  788. package/dist/lib/workspace/surfaces/kanban.js +43 -0
  789. package/dist/lib/workspace/surfaces/kanban.js.map +1 -0
  790. package/dist/lib/workspace/surfaces/physical-world.d.ts +15 -0
  791. package/dist/lib/workspace/surfaces/physical-world.d.ts.map +1 -0
  792. package/dist/lib/workspace/surfaces/physical-world.js +37 -0
  793. package/dist/lib/workspace/surfaces/physical-world.js.map +1 -0
  794. package/dist/lib/workspace/surfaces/portfolio.d.ts +16 -0
  795. package/dist/lib/workspace/surfaces/portfolio.d.ts.map +1 -0
  796. package/dist/lib/workspace/surfaces/portfolio.js +102 -0
  797. package/dist/lib/workspace/surfaces/portfolio.js.map +1 -0
  798. package/dist/lib/workspace/surfaces/service.d.ts +16 -0
  799. package/dist/lib/workspace/surfaces/service.d.ts.map +1 -0
  800. package/dist/lib/workspace/surfaces/service.js +45 -0
  801. package/dist/lib/workspace/surfaces/service.js.map +1 -0
  802. package/dist/lib/workspace/surfaces/shell.d.ts +15 -0
  803. package/dist/lib/workspace/surfaces/shell.d.ts.map +1 -0
  804. package/dist/lib/workspace/surfaces/shell.js +19 -0
  805. package/dist/lib/workspace/surfaces/shell.js.map +1 -0
  806. package/dist/lib/workspace/surfaces/sidebar.d.ts +22 -0
  807. package/dist/lib/workspace/surfaces/sidebar.d.ts.map +1 -0
  808. package/dist/lib/workspace/surfaces/sidebar.js +94 -0
  809. package/dist/lib/workspace/surfaces/sidebar.js.map +1 -0
  810. package/dist/lib/workspace/surfaces/telemetry.d.ts +16 -0
  811. package/dist/lib/workspace/surfaces/telemetry.d.ts.map +1 -0
  812. package/dist/lib/workspace/surfaces/telemetry.js +48 -0
  813. package/dist/lib/workspace/surfaces/telemetry.js.map +1 -0
  814. package/dist/lib/workspace/surfaces/topology.d.ts +15 -0
  815. package/dist/lib/workspace/surfaces/topology.d.ts.map +1 -0
  816. package/dist/lib/workspace/surfaces/topology.js +19 -0
  817. package/dist/lib/workspace/surfaces/topology.js.map +1 -0
  818. package/dist/lib/workspace/surfaces/training.d.ts +16 -0
  819. package/dist/lib/workspace/surfaces/training.d.ts.map +1 -0
  820. package/dist/lib/workspace/surfaces/training.js +22 -0
  821. package/dist/lib/workspace/surfaces/training.js.map +1 -0
  822. package/dist/lib/workspace/tmux-adapter.d.ts +30 -0
  823. package/dist/lib/workspace/tmux-adapter.d.ts.map +1 -0
  824. package/dist/lib/workspace/tmux-adapter.js +137 -0
  825. package/dist/lib/workspace/tmux-adapter.js.map +1 -0
  826. package/dist/lib/workspace/tmux-sidebar.d.ts +14 -0
  827. package/dist/lib/workspace/tmux-sidebar.d.ts.map +1 -0
  828. package/dist/lib/workspace/tmux-sidebar.js +230 -0
  829. package/dist/lib/workspace/tmux-sidebar.js.map +1 -0
  830. package/dist/lib/world-model-store.d.ts +172 -0
  831. package/dist/lib/world-model-store.d.ts.map +1 -0
  832. package/dist/lib/world-model-store.js +487 -0
  833. package/dist/lib/world-model-store.js.map +1 -0
  834. package/dist/mcp/context-hub-mcp.d.ts +11 -0
  835. package/dist/mcp/context-hub-mcp.d.ts.map +1 -0
  836. package/dist/mcp/context-hub-mcp.js +797 -0
  837. package/dist/mcp/context-hub-mcp.js.map +1 -0
  838. package/dist/mcp/service-mcp-server.d.ts +12 -0
  839. package/dist/mcp/service-mcp-server.d.ts.map +1 -0
  840. package/dist/mcp/service-mcp-server.js +434 -0
  841. package/dist/mcp/service-mcp-server.js.map +1 -0
  842. package/dist/mcp/service-peer-mcp.d.ts +36 -0
  843. package/dist/mcp/service-peer-mcp.d.ts.map +1 -0
  844. package/dist/mcp/service-peer-mcp.js +220 -0
  845. package/dist/mcp/service-peer-mcp.js.map +1 -0
  846. package/dist/mcp/service-registry-mcp.d.ts +13 -0
  847. package/dist/mcp/service-registry-mcp.d.ts.map +1 -0
  848. package/dist/mcp/service-registry-mcp.js +330 -0
  849. package/dist/mcp/service-registry-mcp.js.map +1 -0
  850. package/dist/telegram/voice.d.ts +146 -0
  851. package/dist/telegram/voice.d.ts.map +1 -0
  852. package/dist/telegram/voice.js +351 -0
  853. package/dist/telegram/voice.js.map +1 -0
  854. package/dist/types/eval.d.ts +18 -0
  855. package/dist/types/eval.d.ts.map +1 -0
  856. package/dist/types/eval.js +5 -0
  857. package/dist/types/eval.js.map +1 -0
  858. package/dist/types/flows.d.ts +72 -0
  859. package/dist/types/flows.d.ts.map +1 -0
  860. package/dist/types/flows.js +10 -0
  861. package/dist/types/flows.js.map +1 -0
  862. package/dist/types/ide.d.ts +49 -0
  863. package/dist/types/ide.d.ts.map +1 -0
  864. package/dist/types/ide.js +5 -0
  865. package/dist/types/ide.js.map +1 -0
  866. package/dist/types/journal.d.ts +133 -0
  867. package/dist/types/journal.d.ts.map +1 -0
  868. package/dist/types/journal.js +59 -0
  869. package/dist/types/journal.js.map +1 -0
  870. package/dist/types/map.d.ts +42 -0
  871. package/dist/types/map.d.ts.map +1 -0
  872. package/dist/types/map.js +39 -0
  873. package/dist/types/map.js.map +1 -0
  874. package/dist/types/physical-world-model.d.ts +65 -0
  875. package/dist/types/physical-world-model.d.ts.map +1 -0
  876. package/dist/types/physical-world-model.js +43 -0
  877. package/dist/types/physical-world-model.js.map +1 -0
  878. package/dist/types/platform-digest.d.ts +228 -0
  879. package/dist/types/platform-digest.d.ts.map +1 -0
  880. package/dist/types/platform-digest.js +5 -0
  881. package/dist/types/platform-digest.js.map +1 -0
  882. package/dist/types/skills.d.ts +44 -0
  883. package/dist/types/skills.d.ts.map +1 -0
  884. package/dist/types/skills.js +5 -0
  885. package/dist/types/skills.js.map +1 -0
  886. package/dist/types/telemetry-digest.d.ts +75 -0
  887. package/dist/types/telemetry-digest.d.ts.map +1 -0
  888. package/dist/types/telemetry-digest.js +5 -0
  889. package/dist/types/telemetry-digest.js.map +1 -0
  890. package/dist/types/telemetry.d.ts +107 -0
  891. package/dist/types/telemetry.d.ts.map +1 -0
  892. package/dist/types/telemetry.js +5 -0
  893. package/dist/types/telemetry.js.map +1 -0
  894. package/dist/types/world-model.d.ts +478 -0
  895. package/dist/types/world-model.d.ts.map +1 -0
  896. package/dist/types/world-model.js +87 -0
  897. package/dist/types/world-model.js.map +1 -0
  898. package/dist/ui/banner.d.ts +18 -0
  899. package/dist/ui/banner.d.ts.map +1 -0
  900. package/dist/ui/banner.js +323 -0
  901. package/dist/ui/banner.js.map +1 -0
  902. package/dist/ui/context-hub-logs.d.ts +10 -0
  903. package/dist/ui/context-hub-logs.d.ts.map +1 -0
  904. package/dist/ui/context-hub-logs.js +175 -0
  905. package/dist/ui/context-hub-logs.js.map +1 -0
  906. package/dist/ui/event-dashboard.d.ts +12 -0
  907. package/dist/ui/event-dashboard.d.ts.map +1 -0
  908. package/dist/ui/event-dashboard.js +342 -0
  909. package/dist/ui/event-dashboard.js.map +1 -0
  910. package/dist/ui/index.d.ts +8 -0
  911. package/dist/ui/index.d.ts.map +1 -0
  912. package/dist/ui/index.js +8 -0
  913. package/dist/ui/index.js.map +1 -0
  914. package/dist/ui/prompts.d.ts +52 -0
  915. package/dist/ui/prompts.d.ts.map +1 -0
  916. package/dist/ui/prompts.js +72 -0
  917. package/dist/ui/prompts.js.map +1 -0
  918. package/dist/ui/service-dashboard.d.ts +11 -0
  919. package/dist/ui/service-dashboard.d.ts.map +1 -0
  920. package/dist/ui/service-dashboard.js +357 -0
  921. package/dist/ui/service-dashboard.js.map +1 -0
  922. package/dist/ui/services-manager.d.ts +11 -0
  923. package/dist/ui/services-manager.d.ts.map +1 -0
  924. package/dist/ui/services-manager.js +507 -0
  925. package/dist/ui/services-manager.js.map +1 -0
  926. package/dist/ui/theme.d.ts +82 -0
  927. package/dist/ui/theme.d.ts.map +1 -0
  928. package/dist/ui/theme.js +142 -0
  929. package/dist/ui/theme.js.map +1 -0
  930. package/dist/utils/auth-guard.d.ts +66 -0
  931. package/dist/utils/auth-guard.d.ts.map +1 -0
  932. package/dist/utils/auth-guard.js +347 -0
  933. package/dist/utils/auth-guard.js.map +1 -0
  934. package/dist/utils/auth-status.d.ts +21 -0
  935. package/dist/utils/auth-status.d.ts.map +1 -0
  936. package/dist/utils/auth-status.js +53 -0
  937. package/dist/utils/auth-status.js.map +1 -0
  938. package/dist/utils/claude-md-generator.d.ts +10 -0
  939. package/dist/utils/claude-md-generator.d.ts.map +1 -0
  940. package/dist/utils/claude-md-generator.js +215 -0
  941. package/dist/utils/claude-md-generator.js.map +1 -0
  942. package/dist/utils/context-hub-port.d.ts +33 -0
  943. package/dist/utils/context-hub-port.d.ts.map +1 -0
  944. package/dist/utils/context-hub-port.js +118 -0
  945. package/dist/utils/context-hub-port.js.map +1 -0
  946. package/dist/utils/ensure-context-hub.d.ts +20 -0
  947. package/dist/utils/ensure-context-hub.d.ts.map +1 -0
  948. package/dist/utils/ensure-context-hub.js +66 -0
  949. package/dist/utils/ensure-context-hub.js.map +1 -0
  950. package/dist/utils/ensure-project.d.ts +12 -0
  951. package/dist/utils/ensure-project.d.ts.map +1 -0
  952. package/dist/utils/ensure-project.js +81 -0
  953. package/dist/utils/ensure-project.js.map +1 -0
  954. package/dist/utils/git.d.ts +73 -0
  955. package/dist/utils/git.d.ts.map +1 -0
  956. package/dist/utils/git.js +222 -0
  957. package/dist/utils/git.js.map +1 -0
  958. package/dist/utils/github-auth.d.ts +54 -0
  959. package/dist/utils/github-auth.d.ts.map +1 -0
  960. package/dist/utils/github-auth.js +376 -0
  961. package/dist/utils/github-auth.js.map +1 -0
  962. package/dist/utils/github-repo.d.ts +30 -0
  963. package/dist/utils/github-repo.d.ts.map +1 -0
  964. package/dist/utils/github-repo.js +219 -0
  965. package/dist/utils/github-repo.js.map +1 -0
  966. package/dist/utils/jfl-config.d.ts +30 -0
  967. package/dist/utils/jfl-config.d.ts.map +1 -0
  968. package/dist/utils/jfl-config.js +153 -0
  969. package/dist/utils/jfl-config.js.map +1 -0
  970. package/dist/utils/jfl-migration.d.ts +29 -0
  971. package/dist/utils/jfl-migration.d.ts.map +1 -0
  972. package/dist/utils/jfl-migration.js +142 -0
  973. package/dist/utils/jfl-migration.js.map +1 -0
  974. package/dist/utils/jfl-paths.d.ts +71 -0
  975. package/dist/utils/jfl-paths.d.ts.map +1 -0
  976. package/dist/utils/jfl-paths.js +157 -0
  977. package/dist/utils/jfl-paths.js.map +1 -0
  978. package/dist/utils/platform-auth.d.ts +81 -0
  979. package/dist/utils/platform-auth.d.ts.map +1 -0
  980. package/dist/utils/platform-auth.js +192 -0
  981. package/dist/utils/platform-auth.js.map +1 -0
  982. package/dist/utils/project-config.d.ts +43 -0
  983. package/dist/utils/project-config.d.ts.map +1 -0
  984. package/dist/utils/project-config.js +97 -0
  985. package/dist/utils/project-config.js.map +1 -0
  986. package/dist/utils/provenance.d.ts +65 -0
  987. package/dist/utils/provenance.d.ts.map +1 -0
  988. package/dist/utils/provenance.js +213 -0
  989. package/dist/utils/provenance.js.map +1 -0
  990. package/dist/utils/settings-validator.d.ts +74 -0
  991. package/dist/utils/settings-validator.d.ts.map +1 -0
  992. package/dist/utils/settings-validator.js +241 -0
  993. package/dist/utils/settings-validator.js.map +1 -0
  994. package/dist/utils/skill-registry.d.ts +49 -0
  995. package/dist/utils/skill-registry.d.ts.map +1 -0
  996. package/dist/utils/skill-registry.js +192 -0
  997. package/dist/utils/skill-registry.js.map +1 -0
  998. package/dist/utils/tenet-env.d.ts +34 -0
  999. package/dist/utils/tenet-env.d.ts.map +1 -0
  1000. package/dist/utils/tenet-env.js +42 -0
  1001. package/dist/utils/tenet-env.js.map +1 -0
  1002. package/dist/utils/wallet.d.ts +62 -0
  1003. package/dist/utils/wallet.d.ts.map +1 -0
  1004. package/dist/utils/wallet.js +253 -0
  1005. package/dist/utils/wallet.js.map +1 -0
  1006. package/dist/utils/x402-client.d.ts +86 -0
  1007. package/dist/utils/x402-client.d.ts.map +1 -0
  1008. package/dist/utils/x402-client.js +266 -0
  1009. package/dist/utils/x402-client.js.map +1 -0
  1010. package/package.json +105 -0
  1011. package/packages/pi/AGENTS.md +112 -0
  1012. package/packages/pi/assets/boot.mp3 +0 -0
  1013. package/packages/pi/dist/agent-grid.d.ts +24 -0
  1014. package/packages/pi/dist/agent-grid.d.ts.map +1 -0
  1015. package/packages/pi/dist/agent-grid.js +162 -0
  1016. package/packages/pi/dist/agent-grid.js.map +1 -0
  1017. package/packages/pi/dist/agent-names.d.ts +43 -0
  1018. package/packages/pi/dist/agent-names.d.ts.map +1 -0
  1019. package/packages/pi/dist/agent-names.js +156 -0
  1020. package/packages/pi/dist/agent-names.js.map +1 -0
  1021. package/packages/pi/dist/autoresearch.d.ts +15 -0
  1022. package/packages/pi/dist/autoresearch.d.ts.map +1 -0
  1023. package/packages/pi/dist/autoresearch.js +372 -0
  1024. package/packages/pi/dist/autoresearch.js.map +1 -0
  1025. package/packages/pi/dist/bookmarks.d.ts +15 -0
  1026. package/packages/pi/dist/bookmarks.d.ts.map +1 -0
  1027. package/packages/pi/dist/bookmarks.js +77 -0
  1028. package/packages/pi/dist/bookmarks.js.map +1 -0
  1029. package/packages/pi/dist/context.d.ts +17 -0
  1030. package/packages/pi/dist/context.d.ts.map +1 -0
  1031. package/packages/pi/dist/context.js +152 -0
  1032. package/packages/pi/dist/context.js.map +1 -0
  1033. package/packages/pi/dist/crm-tool.d.ts +12 -0
  1034. package/packages/pi/dist/crm-tool.d.ts.map +1 -0
  1035. package/packages/pi/dist/crm-tool.js +58 -0
  1036. package/packages/pi/dist/crm-tool.js.map +1 -0
  1037. package/packages/pi/dist/eval-tool.d.ts +11 -0
  1038. package/packages/pi/dist/eval-tool.d.ts.map +1 -0
  1039. package/packages/pi/dist/eval-tool.js +188 -0
  1040. package/packages/pi/dist/eval-tool.js.map +1 -0
  1041. package/packages/pi/dist/eval.d.ts +12 -0
  1042. package/packages/pi/dist/eval.d.ts.map +1 -0
  1043. package/packages/pi/dist/eval.js +43 -0
  1044. package/packages/pi/dist/eval.js.map +1 -0
  1045. package/packages/pi/dist/footer.d.ts +20 -0
  1046. package/packages/pi/dist/footer.d.ts.map +1 -0
  1047. package/packages/pi/dist/footer.js +222 -0
  1048. package/packages/pi/dist/footer.js.map +1 -0
  1049. package/packages/pi/dist/header.d.ts +17 -0
  1050. package/packages/pi/dist/header.d.ts.map +1 -0
  1051. package/packages/pi/dist/header.js +156 -0
  1052. package/packages/pi/dist/header.js.map +1 -0
  1053. package/packages/pi/dist/hub-resolver.d.ts +11 -0
  1054. package/packages/pi/dist/hub-resolver.d.ts.map +1 -0
  1055. package/packages/pi/dist/hub-resolver.js +58 -0
  1056. package/packages/pi/dist/hub-resolver.js.map +1 -0
  1057. package/packages/pi/dist/hub-tools.d.ts +14 -0
  1058. package/packages/pi/dist/hub-tools.d.ts.map +1 -0
  1059. package/packages/pi/dist/hub-tools.js +266 -0
  1060. package/packages/pi/dist/hub-tools.js.map +1 -0
  1061. package/packages/pi/dist/hud-tool.d.ts +17 -0
  1062. package/packages/pi/dist/hud-tool.d.ts.map +1 -0
  1063. package/packages/pi/dist/hud-tool.js +297 -0
  1064. package/packages/pi/dist/hud-tool.js.map +1 -0
  1065. package/packages/pi/dist/index.d.ts +12 -0
  1066. package/packages/pi/dist/index.d.ts.map +1 -0
  1067. package/packages/pi/dist/index.js +556 -0
  1068. package/packages/pi/dist/index.js.map +1 -0
  1069. package/packages/pi/dist/jfl-resolve.d.ts +29 -0
  1070. package/packages/pi/dist/jfl-resolve.d.ts.map +1 -0
  1071. package/packages/pi/dist/jfl-resolve.js +89 -0
  1072. package/packages/pi/dist/jfl-resolve.js.map +1 -0
  1073. package/packages/pi/dist/journal.d.ts +23 -0
  1074. package/packages/pi/dist/journal.d.ts.map +1 -0
  1075. package/packages/pi/dist/journal.js +250 -0
  1076. package/packages/pi/dist/journal.js.map +1 -0
  1077. package/packages/pi/dist/map-bridge.d.ts +20 -0
  1078. package/packages/pi/dist/map-bridge.d.ts.map +1 -0
  1079. package/packages/pi/dist/map-bridge.js +181 -0
  1080. package/packages/pi/dist/map-bridge.js.map +1 -0
  1081. package/packages/pi/dist/memory-tool.d.ts +11 -0
  1082. package/packages/pi/dist/memory-tool.d.ts.map +1 -0
  1083. package/packages/pi/dist/memory-tool.js +162 -0
  1084. package/packages/pi/dist/memory-tool.js.map +1 -0
  1085. package/packages/pi/dist/notifications.d.ts +15 -0
  1086. package/packages/pi/dist/notifications.d.ts.map +1 -0
  1087. package/packages/pi/dist/notifications.js +65 -0
  1088. package/packages/pi/dist/notifications.js.map +1 -0
  1089. package/packages/pi/dist/onboarding-v1.d.ts +15 -0
  1090. package/packages/pi/dist/onboarding-v1.d.ts.map +1 -0
  1091. package/packages/pi/dist/onboarding-v1.js +417 -0
  1092. package/packages/pi/dist/onboarding-v1.js.map +1 -0
  1093. package/packages/pi/dist/onboarding-v2.d.ts +18 -0
  1094. package/packages/pi/dist/onboarding-v2.d.ts.map +1 -0
  1095. package/packages/pi/dist/onboarding-v2.js +402 -0
  1096. package/packages/pi/dist/onboarding-v2.js.map +1 -0
  1097. package/packages/pi/dist/onboarding-v3.d.ts +13 -0
  1098. package/packages/pi/dist/onboarding-v3.d.ts.map +1 -0
  1099. package/packages/pi/dist/onboarding-v3.js +581 -0
  1100. package/packages/pi/dist/onboarding-v3.js.map +1 -0
  1101. package/packages/pi/dist/peter-parker.d.ts +12 -0
  1102. package/packages/pi/dist/peter-parker.d.ts.map +1 -0
  1103. package/packages/pi/dist/peter-parker.js +162 -0
  1104. package/packages/pi/dist/peter-parker.js.map +1 -0
  1105. package/packages/pi/dist/pivot-tool.d.ts +11 -0
  1106. package/packages/pi/dist/pivot-tool.d.ts.map +1 -0
  1107. package/packages/pi/dist/pivot-tool.js +56 -0
  1108. package/packages/pi/dist/pivot-tool.js.map +1 -0
  1109. package/packages/pi/dist/policy-head-tool.d.ts +15 -0
  1110. package/packages/pi/dist/policy-head-tool.d.ts.map +1 -0
  1111. package/packages/pi/dist/policy-head-tool.js +220 -0
  1112. package/packages/pi/dist/policy-head-tool.js.map +1 -0
  1113. package/packages/pi/dist/portfolio-bridge.d.ts +12 -0
  1114. package/packages/pi/dist/portfolio-bridge.d.ts.map +1 -0
  1115. package/packages/pi/dist/portfolio-bridge.js +81 -0
  1116. package/packages/pi/dist/portfolio-bridge.js.map +1 -0
  1117. package/packages/pi/dist/service-skills.d.ts +15 -0
  1118. package/packages/pi/dist/service-skills.d.ts.map +1 -0
  1119. package/packages/pi/dist/service-skills.js +198 -0
  1120. package/packages/pi/dist/service-skills.js.map +1 -0
  1121. package/packages/pi/dist/session.d.ts +28 -0
  1122. package/packages/pi/dist/session.d.ts.map +1 -0
  1123. package/packages/pi/dist/session.js +649 -0
  1124. package/packages/pi/dist/session.js.map +1 -0
  1125. package/packages/pi/dist/shortcuts.d.ts +11 -0
  1126. package/packages/pi/dist/shortcuts.d.ts.map +1 -0
  1127. package/packages/pi/dist/shortcuts.js +231 -0
  1128. package/packages/pi/dist/shortcuts.js.map +1 -0
  1129. package/packages/pi/dist/startup-briefing.d.ts +13 -0
  1130. package/packages/pi/dist/startup-briefing.d.ts.map +1 -0
  1131. package/packages/pi/dist/startup-briefing.js +432 -0
  1132. package/packages/pi/dist/startup-briefing.js.map +1 -0
  1133. package/packages/pi/dist/stratus-bridge.d.ts +14 -0
  1134. package/packages/pi/dist/stratus-bridge.d.ts.map +1 -0
  1135. package/packages/pi/dist/stratus-bridge.js +104 -0
  1136. package/packages/pi/dist/stratus-bridge.js.map +1 -0
  1137. package/packages/pi/dist/subway-mesh.d.ts +88 -0
  1138. package/packages/pi/dist/subway-mesh.d.ts.map +1 -0
  1139. package/packages/pi/dist/subway-mesh.js +813 -0
  1140. package/packages/pi/dist/subway-mesh.js.map +1 -0
  1141. package/packages/pi/dist/synopsis-tool.d.ts +12 -0
  1142. package/packages/pi/dist/synopsis-tool.d.ts.map +1 -0
  1143. package/packages/pi/dist/synopsis-tool.js +84 -0
  1144. package/packages/pi/dist/synopsis-tool.js.map +1 -0
  1145. package/packages/pi/dist/tool-renderers.d.ts +55 -0
  1146. package/packages/pi/dist/tool-renderers.d.ts.map +1 -0
  1147. package/packages/pi/dist/tool-renderers.js +349 -0
  1148. package/packages/pi/dist/tool-renderers.js.map +1 -0
  1149. package/packages/pi/dist/training-buffer-tool.d.ts +16 -0
  1150. package/packages/pi/dist/training-buffer-tool.d.ts.map +1 -0
  1151. package/packages/pi/dist/training-buffer-tool.js +319 -0
  1152. package/packages/pi/dist/training-buffer-tool.js.map +1 -0
  1153. package/packages/pi/dist/types.d.ts +195 -0
  1154. package/packages/pi/dist/types.d.ts.map +1 -0
  1155. package/packages/pi/dist/types.js +11 -0
  1156. package/packages/pi/dist/types.js.map +1 -0
  1157. package/packages/pi/extensions/agent-grid.ts +191 -0
  1158. package/packages/pi/extensions/agent-names.ts +178 -0
  1159. package/packages/pi/extensions/autoresearch.ts +428 -0
  1160. package/packages/pi/extensions/bookmarks.ts +85 -0
  1161. package/packages/pi/extensions/context.ts +158 -0
  1162. package/packages/pi/extensions/crm-tool.ts +61 -0
  1163. package/packages/pi/extensions/eval-tool.ts +224 -0
  1164. package/packages/pi/extensions/eval.ts +61 -0
  1165. package/packages/pi/extensions/footer.ts +239 -0
  1166. package/packages/pi/extensions/header.ts +171 -0
  1167. package/packages/pi/extensions/hub-resolver.ts +63 -0
  1168. package/packages/pi/extensions/hub-tools.ts +267 -0
  1169. package/packages/pi/extensions/hud-tool.ts +294 -0
  1170. package/packages/pi/extensions/index.ts +601 -0
  1171. package/packages/pi/extensions/jfl-resolve.ts +98 -0
  1172. package/packages/pi/extensions/journal.ts +309 -0
  1173. package/packages/pi/extensions/map-bridge.ts +209 -0
  1174. package/packages/pi/extensions/memory-tool.ts +170 -0
  1175. package/packages/pi/extensions/notifications.ts +73 -0
  1176. package/packages/pi/extensions/onboarding-v1.ts +455 -0
  1177. package/packages/pi/extensions/onboarding-v2.ts +374 -0
  1178. package/packages/pi/extensions/onboarding-v3.ts +686 -0
  1179. package/packages/pi/extensions/peter-parker.ts +203 -0
  1180. package/packages/pi/extensions/pivot-tool.ts +59 -0
  1181. package/packages/pi/extensions/policy-head-tool.ts +277 -0
  1182. package/packages/pi/extensions/portfolio-bridge.ts +89 -0
  1183. package/packages/pi/extensions/service-skills.ts +219 -0
  1184. package/packages/pi/extensions/session.ts +684 -0
  1185. package/packages/pi/extensions/shortcuts.ts +259 -0
  1186. package/packages/pi/extensions/startup-briefing.ts +482 -0
  1187. package/packages/pi/extensions/stratus-bridge.ts +116 -0
  1188. package/packages/pi/extensions/subway-mesh.ts +893 -0
  1189. package/packages/pi/extensions/synopsis-tool.ts +88 -0
  1190. package/packages/pi/extensions/tool-renderers.ts +366 -0
  1191. package/packages/pi/extensions/training-buffer-tool.ts +376 -0
  1192. package/packages/pi/extensions/types.ts +169 -0
  1193. package/packages/pi/package-lock.json +346 -0
  1194. package/packages/pi/package.json +42 -0
  1195. package/packages/pi/skills/agent-browser/SKILL.md +116 -0
  1196. package/packages/pi/skills/brand-architect/SKILL.md +240 -0
  1197. package/packages/pi/skills/brand-architect/config.yaml +137 -0
  1198. package/packages/pi/skills/campaign-hud/config.yaml +112 -0
  1199. package/packages/pi/skills/content-creator/SKILL.md +294 -0
  1200. package/packages/pi/skills/context/SKILL.md +65 -0
  1201. package/packages/pi/skills/debug/MULTI_AGENT.md +360 -0
  1202. package/packages/pi/skills/debug/SKILL.md +554 -0
  1203. package/packages/pi/skills/end/SKILL.md +1790 -0
  1204. package/packages/pi/skills/eval/SKILL.md +75 -0
  1205. package/packages/pi/skills/fly-deploy/SKILL.md +676 -0
  1206. package/packages/pi/skills/founder-video/SKILL.md +467 -0
  1207. package/packages/pi/skills/hud/SKILL.md +160 -0
  1208. package/packages/pi/skills/orchestrate/SKILL.md +74 -0
  1209. package/packages/pi/skills/pi-agents/SKILL.md +78 -0
  1210. package/packages/pi/skills/pivot/SKILL.md +91 -0
  1211. package/packages/pi/skills/react-best-practices/AGENTS.md +2249 -0
  1212. package/packages/pi/skills/react-best-practices/README.md +123 -0
  1213. package/packages/pi/skills/react-best-practices/SKILL.md +125 -0
  1214. package/packages/pi/skills/react-best-practices/metadata.json +15 -0
  1215. package/packages/pi/skills/react-best-practices/rules/_sections.md +46 -0
  1216. package/packages/pi/skills/react-best-practices/rules/_template.md +28 -0
  1217. package/packages/pi/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  1218. package/packages/pi/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  1219. package/packages/pi/skills/react-best-practices/rules/async-api-routes.md +38 -0
  1220. package/packages/pi/skills/react-best-practices/rules/async-defer-await.md +80 -0
  1221. package/packages/pi/skills/react-best-practices/rules/async-dependencies.md +36 -0
  1222. package/packages/pi/skills/react-best-practices/rules/async-parallel.md +28 -0
  1223. package/packages/pi/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  1224. package/packages/pi/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  1225. package/packages/pi/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  1226. package/packages/pi/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  1227. package/packages/pi/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  1228. package/packages/pi/skills/react-best-practices/rules/bundle-preload.md +50 -0
  1229. package/packages/pi/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  1230. package/packages/pi/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  1231. package/packages/pi/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  1232. package/packages/pi/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  1233. package/packages/pi/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  1234. package/packages/pi/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  1235. package/packages/pi/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  1236. package/packages/pi/skills/react-best-practices/rules/js-early-exit.md +50 -0
  1237. package/packages/pi/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  1238. package/packages/pi/skills/react-best-practices/rules/js-index-maps.md +37 -0
  1239. package/packages/pi/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  1240. package/packages/pi/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  1241. package/packages/pi/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  1242. package/packages/pi/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  1243. package/packages/pi/skills/react-best-practices/rules/rendering-activity.md +26 -0
  1244. package/packages/pi/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  1245. package/packages/pi/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  1246. package/packages/pi/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  1247. package/packages/pi/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  1248. package/packages/pi/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  1249. package/packages/pi/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  1250. package/packages/pi/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  1251. package/packages/pi/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  1252. package/packages/pi/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  1253. package/packages/pi/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  1254. package/packages/pi/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  1255. package/packages/pi/skills/react-best-practices/rules/rerender-memo.md +44 -0
  1256. package/packages/pi/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  1257. package/packages/pi/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  1258. package/packages/pi/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  1259. package/packages/pi/skills/react-best-practices/rules/server-cache-react.md +26 -0
  1260. package/packages/pi/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
  1261. package/packages/pi/skills/react-best-practices/rules/server-serialization.md +38 -0
  1262. package/packages/pi/skills/remotion-best-practices/SKILL.md +43 -0
  1263. package/packages/pi/skills/remotion-best-practices/rules/3d.md +86 -0
  1264. package/packages/pi/skills/remotion-best-practices/rules/animations.md +29 -0
  1265. package/packages/pi/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  1266. package/packages/pi/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  1267. package/packages/pi/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
  1268. package/packages/pi/skills/remotion-best-practices/rules/assets.md +78 -0
  1269. package/packages/pi/skills/remotion-best-practices/rules/audio.md +172 -0
  1270. package/packages/pi/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
  1271. package/packages/pi/skills/remotion-best-practices/rules/can-decode.md +75 -0
  1272. package/packages/pi/skills/remotion-best-practices/rules/charts.md +58 -0
  1273. package/packages/pi/skills/remotion-best-practices/rules/compositions.md +146 -0
  1274. package/packages/pi/skills/remotion-best-practices/rules/display-captions.md +126 -0
  1275. package/packages/pi/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  1276. package/packages/pi/skills/remotion-best-practices/rules/fonts.md +152 -0
  1277. package/packages/pi/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  1278. package/packages/pi/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  1279. package/packages/pi/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
  1280. package/packages/pi/skills/remotion-best-practices/rules/gifs.md +138 -0
  1281. package/packages/pi/skills/remotion-best-practices/rules/images.md +130 -0
  1282. package/packages/pi/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
  1283. package/packages/pi/skills/remotion-best-practices/rules/lottie.md +68 -0
  1284. package/packages/pi/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
  1285. package/packages/pi/skills/remotion-best-practices/rules/measuring-text.md +143 -0
  1286. package/packages/pi/skills/remotion-best-practices/rules/sequencing.md +106 -0
  1287. package/packages/pi/skills/remotion-best-practices/rules/tailwind.md +11 -0
  1288. package/packages/pi/skills/remotion-best-practices/rules/text-animations.md +20 -0
  1289. package/packages/pi/skills/remotion-best-practices/rules/timing.md +179 -0
  1290. package/packages/pi/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
  1291. package/packages/pi/skills/remotion-best-practices/rules/transitions.md +122 -0
  1292. package/packages/pi/skills/remotion-best-practices/rules/trimming.md +53 -0
  1293. package/packages/pi/skills/remotion-best-practices/rules/videos.md +171 -0
  1294. package/packages/pi/skills/search/SKILL.md +220 -0
  1295. package/packages/pi/skills/spec/SKILL.md +377 -0
  1296. package/packages/pi/skills/startup/SKILL.md +315 -0
  1297. package/packages/pi/skills/subway-browser/SKILL.md +292 -0
  1298. package/packages/pi/skills/viz/SKILL.md +204 -0
  1299. package/packages/pi/skills/web-architect/SKILL.md +309 -0
  1300. package/packages/pi/skills/x-algorithm/SKILL.md +305 -0
  1301. package/packages/pi/teams/dev-team.yaml +63 -0
  1302. package/packages/pi/teams/gtm-team.yaml +79 -0
  1303. package/packages/pi/themes/jfl.theme.json +76 -0
  1304. package/packages/pi/tsconfig.json +21 -0
  1305. package/scripts/__pycache__/train-policy-head.cpython-314.pyc +0 -0
  1306. package/scripts/collect-tuples.sh +124 -0
  1307. package/scripts/commit-gtm.sh +56 -0
  1308. package/scripts/commit-product.sh +68 -0
  1309. package/scripts/context-query.sh +45 -0
  1310. package/scripts/destroy-fleet.sh +37 -0
  1311. package/scripts/generate-changesets.sh +113 -0
  1312. package/scripts/jfl-ide.sh +48 -0
  1313. package/scripts/migrate-to-branch-sessions.sh +201 -0
  1314. package/scripts/postinstall.js +146 -0
  1315. package/scripts/pp-branch-pr.sh +133 -0
  1316. package/scripts/pp-branch-pr.sh.bak +115 -0
  1317. package/scripts/session/auto-commit.sh +297 -0
  1318. package/scripts/session/fix-tracked-logs.sh +97 -0
  1319. package/scripts/session/jfl-doctor.sh +707 -0
  1320. package/scripts/session/session-cleanup.sh +292 -0
  1321. package/scripts/session/session-end.sh +198 -0
  1322. package/scripts/session/session-init.sh +356 -0
  1323. package/scripts/session/session-init.sh.backup +292 -0
  1324. package/scripts/session/session-sync.sh +192 -0
  1325. package/scripts/session/test-context-preservation.sh +160 -0
  1326. package/scripts/session/test-critical-infrastructure.sh +293 -0
  1327. package/scripts/session/test-experience-level.sh +336 -0
  1328. package/scripts/session/test-session-cleanup.sh +268 -0
  1329. package/scripts/session/test-session-sync.sh +320 -0
  1330. package/scripts/setup-branch-protection.sh +106 -0
  1331. package/scripts/spawn-fleet.sh +144 -0
  1332. package/scripts/telemetry-dashboard.sh +44 -0
  1333. package/scripts/test-map-eventbus.sh +357 -0
  1334. package/scripts/test-onboarding.sh +121 -0
  1335. package/scripts/test-planning-loop-e2e.ts +181 -0
  1336. package/scripts/test-server-inference.ts +49 -0
  1337. package/scripts/test-state-sensitivity.ts +32 -0
  1338. package/scripts/train/requirements.txt +5 -0
  1339. package/scripts/train/train-policy-head.py +477 -0
  1340. package/scripts/train/v2/__pycache__/dataset.cpython-314.pyc +0 -0
  1341. package/scripts/train/v2/__pycache__/eval.cpython-314.pyc +0 -0
  1342. package/scripts/train/v2/__pycache__/generate_data.cpython-314.pyc +0 -0
  1343. package/scripts/train/v2/__pycache__/infer.cpython-314.pyc +0 -0
  1344. package/scripts/train/v2/__pycache__/model.cpython-314.pyc +0 -0
  1345. package/scripts/train/v2/__pycache__/precompute.cpython-314.pyc +0 -0
  1346. package/scripts/train/v2/__pycache__/train.cpython-314.pyc +0 -0
  1347. package/scripts/train/v2/__pycache__/transform_buffer.cpython-314.pyc +0 -0
  1348. package/scripts/train/v2/__pycache__/validate_data.cpython-314.pyc +0 -0
  1349. package/scripts/train/v2/benchmark.py +661 -0
  1350. package/scripts/train/v2/dataset.py +81 -0
  1351. package/scripts/train/v2/domain.json +66 -0
  1352. package/scripts/train/v2/eval.py +196 -0
  1353. package/scripts/train/v2/generate_balanced.py +439 -0
  1354. package/scripts/train/v2/generate_data.py +219 -0
  1355. package/scripts/train/v2/generate_hard_negatives.py +219 -0
  1356. package/scripts/train/v2/infer.py +301 -0
  1357. package/scripts/train/v2/infer_server.py +224 -0
  1358. package/scripts/train/v2/model.py +112 -0
  1359. package/scripts/train/v2/online_train.py +576 -0
  1360. package/scripts/train/v2/precompute.py +150 -0
  1361. package/scripts/train/v2/train.py +302 -0
  1362. package/scripts/train/v2/transform_buffer.py +227 -0
  1363. package/scripts/train/v2/validate_data.py +115 -0
  1364. package/scripts/train-policy-head.py +434 -0
  1365. package/scripts/vm-swarm/README.md +301 -0
  1366. package/scripts/vm-swarm/collect-tuples.sh +331 -0
  1367. package/scripts/vm-swarm/create-base-template.sh +339 -0
  1368. package/scripts/vm-swarm/kill-fleet.sh +204 -0
  1369. package/scripts/vm-swarm/monitor-fleet.sh +346 -0
  1370. package/scripts/vm-swarm/spawn-fleet.sh +304 -0
  1371. package/scripts/voice-start.sh +156 -0
  1372. package/scripts/voice-stop.sh +33 -0
  1373. package/scripts/where-am-i.sh +78 -0
  1374. package/templates/QUICKSTART_SKILL_TO_PRODUCT.md +242 -0
  1375. package/templates/brand/BRAND_BRIEF.md +124 -0
  1376. package/templates/brand/BRAND_DECISIONS.md +168 -0
  1377. package/templates/brand/BRAND_GUIDELINES.md +251 -0
  1378. package/templates/brand/VOICE_AND_TONE.md +146 -0
  1379. package/templates/brand/global.css +240 -0
  1380. package/templates/collaboration/CONTRIBUTOR.md +74 -0
  1381. package/templates/collaboration/CRM.md +97 -0
  1382. package/templates/collaboration/TASKS.md +83 -0
  1383. package/templates/dating/FUNNEL.md +29 -0
  1384. package/templates/dating/REWARDS.md +24 -0
  1385. package/templates/dating/SIGNALS.md +18 -0
  1386. package/templates/dating/anti_patterns.md +23 -0
  1387. package/templates/dating/connectors/index.md +16 -0
  1388. package/templates/dating/modes.md +21 -0
  1389. package/templates/dating/psychology.md +18 -0
  1390. package/templates/default/README.md +19 -0
  1391. package/templates/service-agent/.claude/settings.json +32 -0
  1392. package/templates/service-agent/CLAUDE.md +334 -0
  1393. package/templates/service-agent/knowledge/ARCHITECTURE.md +115 -0
  1394. package/templates/service-agent/knowledge/DEPLOYMENT.md +199 -0
  1395. package/templates/service-agent/knowledge/RUNBOOK.md +412 -0
  1396. package/templates/service-agent/knowledge/SERVICE_SPEC.md +77 -0
  1397. package/templates/service-mcp-template.js +325 -0
  1398. package/templates/strategic/NARRATIVE.md +114 -0
  1399. package/templates/strategic/ROADMAP.md +128 -0
  1400. package/templates/strategic/THESIS.md +108 -0
  1401. package/templates/strategic/VISION.md +74 -0
@@ -0,0 +1,1800 @@
1
+ /**
2
+ * Services Create Command
3
+ *
4
+ * Create new service with AI assistance and automatic GTM integration
5
+ *
6
+ * @purpose Create new services with wizard, templates, and AI assistance
7
+ */
8
+ import * as p from "@clack/prompts";
9
+ import chalk from "chalk";
10
+ import { existsSync, mkdirSync, writeFileSync } from "fs";
11
+ import { join } from "path";
12
+ import { spawn } from "child_process";
13
+ import { getCodeDirectory } from "../utils/jfl-config.js";
14
+ import { onboardCommand } from "./onboard.js";
15
+ import { execSync } from "child_process";
16
+ // ============================================================================
17
+ // Main Command
18
+ // ============================================================================
19
+ export async function servicesCreateCommand(options = {}) {
20
+ console.log();
21
+ p.intro(chalk.cyan("JFL - Create Service"));
22
+ try {
23
+ // Step 1: Collect service metadata
24
+ const metadata = await collectServiceMetadata(options);
25
+ if (!metadata) {
26
+ p.cancel("Service creation cancelled");
27
+ process.exit(0);
28
+ }
29
+ const { name, type, description, location } = metadata;
30
+ // Step 2: Check if directory exists
31
+ if (existsSync(location)) {
32
+ const overwrite = await p.confirm({
33
+ message: `Directory ${location} already exists. Overwrite?`,
34
+ initialValue: false,
35
+ });
36
+ if (p.isCancel(overwrite) || !overwrite) {
37
+ p.cancel("Service creation cancelled");
38
+ process.exit(0);
39
+ }
40
+ }
41
+ // Step 3: Choose AI tool (unless --skip-ai)
42
+ let aiTool = null;
43
+ if (!options.skipAI) {
44
+ const tools = getAvailableAITools();
45
+ if (tools.length === 0) {
46
+ console.log(chalk.yellow("\n⚠️ No AI tools detected"));
47
+ console.log(chalk.gray(" Install Claude Code: npm install -g @anthropic-ai/claude-code"));
48
+ console.log(chalk.gray(" Install Ralph: bun install -g ralph-tui\n"));
49
+ }
50
+ else {
51
+ aiTool = await p.select({
52
+ message: "Build with AI assistance?",
53
+ options: [
54
+ ...tools.map(tool => ({
55
+ value: tool,
56
+ label: getToolLabel(tool),
57
+ hint: getToolHint(tool),
58
+ })),
59
+ {
60
+ value: "skip",
61
+ label: "Skip (just scaffold, I'll build manually)",
62
+ },
63
+ ],
64
+ });
65
+ if (p.isCancel(aiTool)) {
66
+ p.cancel("Service creation cancelled");
67
+ process.exit(0);
68
+ }
69
+ if (aiTool === "skip") {
70
+ aiTool = null;
71
+ }
72
+ }
73
+ }
74
+ // Step 4: Confirm creation
75
+ const confirmed = await confirmCreation(name, type, description, location, aiTool);
76
+ if (!confirmed) {
77
+ p.cancel("Service creation cancelled");
78
+ process.exit(0);
79
+ }
80
+ // Step 5: Scaffold service
81
+ const spinner = p.spinner();
82
+ spinner.start("Creating service...");
83
+ await scaffoldService(location, name, type, description);
84
+ spinner.stop("✓ Service scaffolded");
85
+ // Step 6: Launch AI tool if selected
86
+ if (aiTool) {
87
+ await launchAITool(aiTool, location, name, type, description);
88
+ }
89
+ else {
90
+ showManualNextSteps(location, name);
91
+ }
92
+ p.outro(chalk.green("Service created successfully! 🚀"));
93
+ }
94
+ catch (error) {
95
+ p.cancel(chalk.red(`Error: ${error.message}`));
96
+ process.exit(1);
97
+ }
98
+ }
99
+ // ============================================================================
100
+ // Metadata Collection
101
+ // ============================================================================
102
+ async function collectServiceMetadata(options) {
103
+ // Service name
104
+ let name = options.name;
105
+ if (!name) {
106
+ name = await p.text({
107
+ message: "Service name?",
108
+ placeholder: "my-new-service",
109
+ validate: (value) => {
110
+ const error = validateServiceName(value);
111
+ return error || undefined;
112
+ },
113
+ });
114
+ if (p.isCancel(name)) {
115
+ return null;
116
+ }
117
+ }
118
+ else {
119
+ const error = validateServiceName(name);
120
+ if (error) {
121
+ throw new Error(error);
122
+ }
123
+ }
124
+ // Service type
125
+ let type = options.type;
126
+ if (!type) {
127
+ type = await p.select({
128
+ message: "Service type?",
129
+ options: [
130
+ { value: "api", label: "API - REST/GraphQL service" },
131
+ { value: "web", label: "Web - Frontend application" },
132
+ { value: "worker", label: "Worker - Background jobs/queue" },
133
+ { value: "cli", label: "CLI - Command-line tool" },
134
+ { value: "infrastructure", label: "Infrastructure - Database, cache, etc." },
135
+ { value: "container", label: "Container - Docker service" },
136
+ { value: "agent", label: "Agent - Autonomous AI agent with eval loop" },
137
+ ],
138
+ });
139
+ if (p.isCancel(type)) {
140
+ return null;
141
+ }
142
+ }
143
+ // Description
144
+ let description = options.description;
145
+ if (!description) {
146
+ description = await p.text({
147
+ message: "Description?",
148
+ placeholder: "What does this service do?",
149
+ validate: (value) => {
150
+ if (!value.trim()) {
151
+ return "Description required";
152
+ }
153
+ },
154
+ });
155
+ if (p.isCancel(description)) {
156
+ return null;
157
+ }
158
+ }
159
+ // Location
160
+ const codeDir = await getCodeDirectory();
161
+ const defaultLocation = join(codeDir, name);
162
+ const location = await p.text({
163
+ message: "Where to create?",
164
+ placeholder: defaultLocation,
165
+ initialValue: defaultLocation,
166
+ });
167
+ if (p.isCancel(location)) {
168
+ return null;
169
+ }
170
+ return { name, type, description, location };
171
+ }
172
+ // ============================================================================
173
+ // Validation
174
+ // ============================================================================
175
+ function validateServiceName(name) {
176
+ if (!name || !name.trim()) {
177
+ return "Service name required";
178
+ }
179
+ // Must be lowercase with hyphens
180
+ if (!/^[a-z0-9-]+$/.test(name)) {
181
+ return "Service name must be lowercase letters, numbers, and hyphens only";
182
+ }
183
+ // Can't start or end with hyphen
184
+ if (name.startsWith("-") || name.endsWith("-")) {
185
+ return "Service name can't start or end with hyphen";
186
+ }
187
+ // No consecutive hyphens
188
+ if (name.includes("--")) {
189
+ return "Service name can't have consecutive hyphens";
190
+ }
191
+ return undefined;
192
+ }
193
+ // ============================================================================
194
+ // AI Tool Detection
195
+ // ============================================================================
196
+ function getAvailableAITools() {
197
+ const tools = [];
198
+ if (hasClaudeCLI()) {
199
+ tools.push("claude");
200
+ }
201
+ if (hasRalphTui()) {
202
+ tools.push("ralph");
203
+ }
204
+ return tools;
205
+ }
206
+ function hasClaudeCLI() {
207
+ try {
208
+ execSync("which claude", { stdio: "ignore" });
209
+ return true;
210
+ }
211
+ catch {
212
+ return false;
213
+ }
214
+ }
215
+ function hasRalphTui() {
216
+ try {
217
+ execSync("which ralph-tui", { stdio: "ignore" });
218
+ return true;
219
+ }
220
+ catch {
221
+ return false;
222
+ }
223
+ }
224
+ function getToolLabel(tool) {
225
+ switch (tool) {
226
+ case "claude":
227
+ return "Claude Code (collaborative, recommended)";
228
+ case "ralph":
229
+ return "Ralph (autonomous agent loop)";
230
+ default:
231
+ return tool;
232
+ }
233
+ }
234
+ function getToolHint(tool) {
235
+ switch (tool) {
236
+ case "claude":
237
+ return "Interactive AI pair programming";
238
+ case "ralph":
239
+ return "Autonomous loop until complete";
240
+ default:
241
+ return "";
242
+ }
243
+ }
244
+ // ============================================================================
245
+ // Confirmation
246
+ // ============================================================================
247
+ async function confirmCreation(name, type, description, location, aiTool) {
248
+ console.log();
249
+ console.log(chalk.cyan("Ready to create:"));
250
+ console.log(chalk.gray(` Name: ${name}`));
251
+ console.log(chalk.gray(` Type: ${type}`));
252
+ console.log(chalk.gray(` Description: ${description}`));
253
+ console.log(chalk.gray(` Location: ${location}`));
254
+ console.log(chalk.gray(` AI Tool: ${aiTool || "None (manual)"}`));
255
+ console.log();
256
+ const confirmed = await p.confirm({
257
+ message: "Create this service?",
258
+ initialValue: true,
259
+ });
260
+ return !p.isCancel(confirmed) && confirmed;
261
+ }
262
+ // ============================================================================
263
+ // Service Scaffolding
264
+ // ============================================================================
265
+ async function scaffoldService(servicePath, serviceName, serviceType, description) {
266
+ // Create base directories
267
+ mkdirSync(servicePath, { recursive: true });
268
+ mkdirSync(join(servicePath, ".jfl", "journal"), { recursive: true });
269
+ mkdirSync(join(servicePath, ".jfl", "logs"), { recursive: true });
270
+ mkdirSync(join(servicePath, ".claude", "agents"), { recursive: true });
271
+ mkdirSync(join(servicePath, ".claude", "skills"), { recursive: true });
272
+ mkdirSync(join(servicePath, "knowledge"), { recursive: true });
273
+ // Get template for service type
274
+ const template = getServiceTemplate(serviceType, serviceName, description);
275
+ // Write all template files
276
+ for (const file of template.files) {
277
+ const filePath = join(servicePath, file.path);
278
+ const fileDir = join(filePath, "..");
279
+ mkdirSync(fileDir, { recursive: true });
280
+ writeFileSync(filePath, file.content);
281
+ }
282
+ // Write CLAUDE.md with service-specific instructions
283
+ const claudeMd = generateClaudeMd(serviceName, serviceType, description, template.instructions);
284
+ writeFileSync(join(servicePath, "CLAUDE.md"), claudeMd);
285
+ // Write base .gitignore
286
+ const gitignore = generateGitignore(serviceType);
287
+ writeFileSync(join(servicePath, ".gitignore"), gitignore);
288
+ // Initialize git
289
+ try {
290
+ execSync("git init", { cwd: servicePath, stdio: "ignore" });
291
+ execSync("git add .", { cwd: servicePath, stdio: "ignore" });
292
+ execSync(`git commit -m "Initial commit: scaffolded ${serviceType} service"`, {
293
+ cwd: servicePath,
294
+ stdio: "ignore",
295
+ });
296
+ }
297
+ catch (error) {
298
+ // Git init failed - not critical
299
+ console.log(chalk.yellow("⚠️ Git initialization failed (not critical)"));
300
+ }
301
+ }
302
+ // ============================================================================
303
+ // Service Templates
304
+ // ============================================================================
305
+ function getServiceTemplate(type, name, description) {
306
+ switch (type) {
307
+ case "api":
308
+ return getAPITemplate(name, description);
309
+ case "web":
310
+ return getWebTemplate(name, description);
311
+ case "worker":
312
+ return getWorkerTemplate(name, description);
313
+ case "cli":
314
+ return getCLITemplate(name, description);
315
+ case "infrastructure":
316
+ return getInfrastructureTemplate(name, description);
317
+ case "container":
318
+ return getContainerTemplate(name, description);
319
+ case "agent":
320
+ return getAgentTemplate(name, description);
321
+ default:
322
+ throw new Error(`Unknown service type: ${type}`);
323
+ }
324
+ }
325
+ function getAPITemplate(name, description) {
326
+ return {
327
+ files: [
328
+ {
329
+ path: "package.json",
330
+ content: JSON.stringify({
331
+ name,
332
+ version: "0.1.0",
333
+ description,
334
+ type: "module",
335
+ scripts: {
336
+ dev: "tsx watch src/index.ts",
337
+ build: "tsc",
338
+ start: "node dist/index.js",
339
+ test: "vitest",
340
+ },
341
+ dependencies: {
342
+ fastify: "^4.26.0",
343
+ "@fastify/cors": "^9.0.1",
344
+ pino: "^8.19.0",
345
+ },
346
+ devDependencies: {
347
+ typescript: "^5.3.3",
348
+ tsx: "^4.7.1",
349
+ vitest: "^1.3.1",
350
+ "@types/node": "^20.11.17",
351
+ },
352
+ }, null, 2),
353
+ },
354
+ {
355
+ path: "tsconfig.json",
356
+ content: JSON.stringify({
357
+ compilerOptions: {
358
+ target: "ES2022",
359
+ module: "ES2022",
360
+ moduleResolution: "node",
361
+ outDir: "./dist",
362
+ rootDir: "./src",
363
+ strict: true,
364
+ esModuleInterop: true,
365
+ skipLibCheck: true,
366
+ forceConsistentCasingInFileNames: true,
367
+ },
368
+ include: ["src/**/*"],
369
+ exclude: ["node_modules", "dist"],
370
+ }, null, 2),
371
+ },
372
+ {
373
+ path: "src/index.ts",
374
+ content: `import Fastify from 'fastify'
375
+ import cors from '@fastify/cors'
376
+ import { healthRoutes } from './routes/health.js'
377
+
378
+ const fastify = Fastify({
379
+ logger: true
380
+ })
381
+
382
+ fastify.register(cors)
383
+ fastify.register(healthRoutes)
384
+
385
+ const start = async () => {
386
+ try {
387
+ const port = parseInt(process.env.PORT || '3000', 10)
388
+ await fastify.listen({ port, host: '0.0.0.0' })
389
+ console.log(\`Server running on http://localhost:\${port}\`)
390
+ } catch (err) {
391
+ fastify.log.error(err)
392
+ process.exit(1)
393
+ }
394
+ }
395
+
396
+ start()
397
+ `,
398
+ },
399
+ {
400
+ path: "src/routes/health.ts",
401
+ content: `import { FastifyInstance } from 'fastify'
402
+
403
+ export async function healthRoutes(fastify: FastifyInstance) {
404
+ fastify.get('/health', async () => {
405
+ return { status: 'ok', timestamp: new Date().toISOString() }
406
+ })
407
+ }
408
+ `,
409
+ },
410
+ {
411
+ path: ".env.example",
412
+ content: `PORT=3000
413
+ NODE_ENV=development
414
+ `,
415
+ },
416
+ {
417
+ path: "README.md",
418
+ content: `# ${name}
419
+
420
+ ${description}
421
+
422
+ ## Getting Started
423
+
424
+ \`\`\`bash
425
+ npm install
426
+ npm run dev
427
+ \`\`\`
428
+
429
+ ## API Endpoints
430
+
431
+ - \`GET /health\` - Health check
432
+
433
+ ## Environment Variables
434
+
435
+ See \`.env.example\` for required environment variables.
436
+ `,
437
+ },
438
+ {
439
+ path: "knowledge/SERVICE_SPEC.md",
440
+ content: `# ${name} - Service Specification
441
+
442
+ ## Overview
443
+
444
+ ${description}
445
+
446
+ ## Responsibilities
447
+
448
+ - [ ] TODO: Define what this service is responsible for
449
+
450
+ ## API Endpoints
451
+
452
+ - \`GET /health\` - Health check endpoint
453
+
454
+ ## Dependencies
455
+
456
+ - None (update as you add dependencies)
457
+
458
+ ## Environment Variables
459
+
460
+ - \`PORT\` - Server port (default: 3000)
461
+ - \`NODE_ENV\` - Environment (development/production)
462
+ `,
463
+ },
464
+ ],
465
+ instructions: `This is a REST API service using Fastify and TypeScript.
466
+
467
+ ## Core Features to Implement
468
+ - [ ] Define API routes and endpoints
469
+ - [ ] Add request validation
470
+ - [ ] Implement business logic
471
+ - [ ] Add error handling
472
+ - [ ] Write unit tests
473
+
474
+ ## Technical Stack
475
+ - **Framework:** Fastify (fast, low-overhead web framework)
476
+ - **Language:** TypeScript
477
+ - **Testing:** Vitest
478
+
479
+ ## Key Patterns
480
+ - Keep routes thin, move logic to separate modules
481
+ - Use Fastify plugins for reusable functionality
482
+ - Validate all inputs
483
+ - Return consistent error responses
484
+ `,
485
+ };
486
+ }
487
+ function getWebTemplate(name, description) {
488
+ return {
489
+ files: [
490
+ {
491
+ path: "package.json",
492
+ content: JSON.stringify({
493
+ name,
494
+ version: "0.1.0",
495
+ description,
496
+ scripts: {
497
+ dev: "next dev",
498
+ build: "next build",
499
+ start: "next start",
500
+ lint: "next lint",
501
+ },
502
+ dependencies: {
503
+ react: "^18.2.0",
504
+ "react-dom": "^18.2.0",
505
+ next: "^14.1.0",
506
+ },
507
+ devDependencies: {
508
+ typescript: "^5.3.3",
509
+ "@types/node": "^20.11.17",
510
+ "@types/react": "^18.2.55",
511
+ "@types/react-dom": "^18.2.19",
512
+ },
513
+ }, null, 2),
514
+ },
515
+ {
516
+ path: "tsconfig.json",
517
+ content: JSON.stringify({
518
+ compilerOptions: {
519
+ target: "ES2022",
520
+ lib: ["dom", "dom.iterable", "esnext"],
521
+ allowJs: true,
522
+ skipLibCheck: true,
523
+ strict: true,
524
+ forceConsistentCasingInFileNames: true,
525
+ noEmit: true,
526
+ esModuleInterop: true,
527
+ module: "esnext",
528
+ moduleResolution: "bundler",
529
+ resolveJsonModule: true,
530
+ isolatedModules: true,
531
+ jsx: "preserve",
532
+ incremental: true,
533
+ plugins: [{ name: "next" }],
534
+ paths: {
535
+ "@/*": ["./src/*"],
536
+ },
537
+ },
538
+ include: ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
539
+ exclude: ["node_modules"],
540
+ }, null, 2),
541
+ },
542
+ {
543
+ path: "next.config.js",
544
+ content: `/** @type {import('next').NextConfig} */
545
+ const nextConfig = {}
546
+
547
+ module.exports = nextConfig
548
+ `,
549
+ },
550
+ {
551
+ path: "src/app/layout.tsx",
552
+ content: `export const metadata = {
553
+ title: '${name}',
554
+ description: '${description}',
555
+ }
556
+
557
+ export default function RootLayout({
558
+ children,
559
+ }: {
560
+ children: React.ReactNode
561
+ }) {
562
+ return (
563
+ <html lang="en">
564
+ <body>{children}</body>
565
+ </html>
566
+ )
567
+ }
568
+ `,
569
+ },
570
+ {
571
+ path: "src/app/page.tsx",
572
+ content: `export default function Home() {
573
+ return (
574
+ <main className="min-h-screen p-8">
575
+ <h1 className="text-4xl font-bold">${name}</h1>
576
+ <p className="mt-4 text-lg">${description}</p>
577
+ </main>
578
+ )
579
+ }
580
+ `,
581
+ },
582
+ {
583
+ path: "README.md",
584
+ content: `# ${name}
585
+
586
+ ${description}
587
+
588
+ ## Getting Started
589
+
590
+ \`\`\`bash
591
+ npm install
592
+ npm run dev
593
+ \`\`\`
594
+
595
+ Open [http://localhost:3000](http://localhost:3000) with your browser.
596
+ `,
597
+ },
598
+ {
599
+ path: "knowledge/SERVICE_SPEC.md",
600
+ content: `# ${name} - Service Specification
601
+
602
+ ## Overview
603
+
604
+ ${description}
605
+
606
+ ## Responsibilities
607
+
608
+ - [ ] TODO: Define what this frontend does
609
+
610
+ ## Pages/Routes
611
+
612
+ - \`/\` - Home page
613
+
614
+ ## Components
615
+
616
+ - None yet (add as you build)
617
+
618
+ ## Styling
619
+
620
+ - TailwindCSS (recommended - add if needed)
621
+ - Or CSS modules
622
+
623
+ ## API Integration
624
+
625
+ - None yet (define API endpoints to connect to)
626
+ `,
627
+ },
628
+ ],
629
+ instructions: `This is a Next.js web application with TypeScript.
630
+
631
+ ## Core Features to Implement
632
+ - [ ] Design page layouts
633
+ - [ ] Build reusable components
634
+ - [ ] Connect to backend APIs
635
+ - [ ] Add styling (TailwindCSS recommended)
636
+ - [ ] Implement client-side routing
637
+
638
+ ## Technical Stack
639
+ - **Framework:** Next.js 14 (App Router)
640
+ - **Language:** TypeScript
641
+ - **UI:** React
642
+
643
+ ## Key Patterns
644
+ - Use Server Components by default
645
+ - Use Client Components only when needed (interactivity, hooks)
646
+ - Keep components small and focused
647
+ - Co-locate related files
648
+ `,
649
+ };
650
+ }
651
+ function getWorkerTemplate(name, description) {
652
+ return {
653
+ files: [
654
+ {
655
+ path: "package.json",
656
+ content: JSON.stringify({
657
+ name,
658
+ version: "0.1.0",
659
+ description,
660
+ type: "module",
661
+ scripts: {
662
+ dev: "tsx watch src/index.ts",
663
+ build: "tsc",
664
+ start: "node dist/index.js",
665
+ },
666
+ dependencies: {
667
+ bullmq: "^5.3.0",
668
+ ioredis: "^5.3.2",
669
+ },
670
+ devDependencies: {
671
+ typescript: "^5.3.3",
672
+ tsx: "^4.7.1",
673
+ "@types/node": "^20.11.17",
674
+ },
675
+ }, null, 2),
676
+ },
677
+ {
678
+ path: "tsconfig.json",
679
+ content: JSON.stringify({
680
+ compilerOptions: {
681
+ target: "ES2022",
682
+ module: "ES2022",
683
+ moduleResolution: "node",
684
+ outDir: "./dist",
685
+ rootDir: "./src",
686
+ strict: true,
687
+ esModuleInterop: true,
688
+ skipLibCheck: true,
689
+ forceConsistentCasingInFileNames: true,
690
+ },
691
+ include: ["src/**/*"],
692
+ exclude: ["node_modules", "dist"],
693
+ }, null, 2),
694
+ },
695
+ {
696
+ path: "src/index.ts",
697
+ content: `import { Worker } from 'bullmq'
698
+
699
+ const worker = new Worker('${name}', async job => {
700
+ console.log(\`Processing job \${job.id}:\`, job.data)
701
+
702
+ // Add job processing logic here
703
+ // Example: await processTask(job.data)
704
+
705
+ return { processed: true, timestamp: new Date().toISOString() }
706
+ }, {
707
+ connection: {
708
+ host: process.env.REDIS_HOST || 'localhost',
709
+ port: parseInt(process.env.REDIS_PORT || '6379', 10),
710
+ }
711
+ })
712
+
713
+ worker.on('completed', job => {
714
+ console.log(\`Job \${job.id} completed\`)
715
+ })
716
+
717
+ worker.on('failed', (job, err) => {
718
+ console.error(\`Job \${job?.id} failed:\`, err)
719
+ })
720
+
721
+ console.log('Worker started, waiting for jobs...')
722
+ `,
723
+ },
724
+ {
725
+ path: "src/jobs/example.ts",
726
+ content: `export async function processExampleJob(data: any) {
727
+ // Implement job logic here
728
+ console.log('Processing example job:', data)
729
+
730
+ return { success: true }
731
+ }
732
+ `,
733
+ },
734
+ {
735
+ path: ".env.example",
736
+ content: `REDIS_HOST=localhost
737
+ REDIS_PORT=6379
738
+ NODE_ENV=development
739
+ `,
740
+ },
741
+ {
742
+ path: "README.md",
743
+ content: `# ${name}
744
+
745
+ ${description}
746
+
747
+ ## Getting Started
748
+
749
+ \`\`\`bash
750
+ npm install
751
+ npm run dev
752
+ \`\`\`
753
+
754
+ ## Requirements
755
+
756
+ - Redis server running on localhost:6379
757
+
758
+ ## Job Types
759
+
760
+ - Add job types as you implement them
761
+
762
+ ## Environment Variables
763
+
764
+ See \`.env.example\` for required environment variables.
765
+ `,
766
+ },
767
+ {
768
+ path: "knowledge/SERVICE_SPEC.md",
769
+ content: `# ${name} - Service Specification
770
+
771
+ ## Overview
772
+
773
+ ${description}
774
+
775
+ ## Responsibilities
776
+
777
+ - [ ] TODO: Define what jobs this worker processes
778
+
779
+ ## Job Types
780
+
781
+ - None yet (add as you implement)
782
+
783
+ ## Dependencies
784
+
785
+ - **Redis** - Job queue backend (required)
786
+
787
+ ## Environment Variables
788
+
789
+ - \`REDIS_HOST\` - Redis host (default: localhost)
790
+ - \`REDIS_PORT\` - Redis port (default: 6379)
791
+ `,
792
+ },
793
+ ],
794
+ instructions: `This is a background job worker using BullMQ and TypeScript.
795
+
796
+ ## Core Features to Implement
797
+ - [ ] Define job types and handlers
798
+ - [ ] Add error handling and retries
799
+ - [ ] Implement job prioritization
800
+ - [ ] Add monitoring/logging
801
+ - [ ] Write job tests
802
+
803
+ ## Technical Stack
804
+ - **Queue:** BullMQ (Redis-based job queue)
805
+ - **Language:** TypeScript
806
+
807
+ ## Key Patterns
808
+ - Keep job handlers focused and testable
809
+ - Use job data validation
810
+ - Implement proper error handling
811
+ - Add retry logic for transient failures
812
+ - Log job progress for debugging
813
+ `,
814
+ };
815
+ }
816
+ function getCLITemplate(name, description) {
817
+ return {
818
+ files: [
819
+ {
820
+ path: "package.json",
821
+ content: JSON.stringify({
822
+ name,
823
+ version: "0.1.0",
824
+ description,
825
+ type: "module",
826
+ bin: {
827
+ [name]: "./bin/cli.js",
828
+ },
829
+ scripts: {
830
+ dev: "tsx watch src/cli.ts",
831
+ build: "tsc && chmod +x bin/cli.js",
832
+ start: "node bin/cli.js",
833
+ },
834
+ dependencies: {
835
+ commander: "^11.1.0",
836
+ chalk: "^5.3.0",
837
+ },
838
+ devDependencies: {
839
+ typescript: "^5.3.3",
840
+ tsx: "^4.7.1",
841
+ "@types/node": "^20.11.17",
842
+ },
843
+ }, null, 2),
844
+ },
845
+ {
846
+ path: "tsconfig.json",
847
+ content: JSON.stringify({
848
+ compilerOptions: {
849
+ target: "ES2022",
850
+ module: "ES2022",
851
+ moduleResolution: "node",
852
+ outDir: "./bin",
853
+ rootDir: "./src",
854
+ strict: true,
855
+ esModuleInterop: true,
856
+ skipLibCheck: true,
857
+ forceConsistentCasingInFileNames: true,
858
+ },
859
+ include: ["src/**/*"],
860
+ exclude: ["node_modules", "bin"],
861
+ }, null, 2),
862
+ },
863
+ {
864
+ path: "src/cli.ts",
865
+ content: `#!/usr/bin/env node
866
+ import { Command } from 'commander'
867
+ import chalk from 'chalk'
868
+ import { helloCommand } from './commands/hello.js'
869
+
870
+ const program = new Command()
871
+
872
+ program
873
+ .name('${name}')
874
+ .description('${description}')
875
+ .version('0.1.0')
876
+
877
+ program
878
+ .command('hello')
879
+ .description('Say hello')
880
+ .argument('[name]', 'Name to greet')
881
+ .action(helloCommand)
882
+
883
+ program.parse()
884
+ `,
885
+ },
886
+ {
887
+ path: "src/commands/hello.ts",
888
+ content: `import chalk from 'chalk'
889
+
890
+ export function helloCommand(name?: string) {
891
+ const greeting = name ? \`Hello, \${name}!\` : 'Hello!'
892
+ console.log(chalk.cyan(greeting))
893
+ }
894
+ `,
895
+ },
896
+ {
897
+ path: "README.md",
898
+ content: `# ${name}
899
+
900
+ ${description}
901
+
902
+ ## Installation
903
+
904
+ \`\`\`bash
905
+ npm install -g ${name}
906
+ \`\`\`
907
+
908
+ ## Usage
909
+
910
+ \`\`\`bash
911
+ ${name} hello
912
+ ${name} hello World
913
+ \`\`\`
914
+
915
+ ## Commands
916
+
917
+ - \`hello [name]\` - Say hello
918
+ `,
919
+ },
920
+ {
921
+ path: "knowledge/SERVICE_SPEC.md",
922
+ content: `# ${name} - Service Specification
923
+
924
+ ## Overview
925
+
926
+ ${description}
927
+
928
+ ## Commands
929
+
930
+ - \`hello [name]\` - Example command
931
+
932
+ ## Installation
933
+
934
+ Installable globally via npm.
935
+
936
+ ## Usage Patterns
937
+
938
+ Define expected CLI usage patterns here.
939
+ `,
940
+ },
941
+ ],
942
+ instructions: `This is a CLI tool using Commander and TypeScript.
943
+
944
+ ## Core Features to Implement
945
+ - [ ] Define CLI commands
946
+ - [ ] Add command arguments and options
947
+ - [ ] Implement command logic
948
+ - [ ] Add help text and examples
949
+ - [ ] Write command tests
950
+
951
+ ## Technical Stack
952
+ - **CLI Framework:** Commander
953
+ - **Styling:** Chalk
954
+ - **Language:** TypeScript
955
+
956
+ ## Key Patterns
957
+ - Keep commands focused (one command = one responsibility)
958
+ - Provide clear help text
959
+ - Validate inputs early
960
+ - Give helpful error messages
961
+ - Support --help and --version
962
+ `,
963
+ };
964
+ }
965
+ function getInfrastructureTemplate(name, description) {
966
+ return {
967
+ files: [
968
+ {
969
+ path: "docker-compose.yml",
970
+ content: `version: '3.8'
971
+
972
+ services:
973
+ ${name}:
974
+ image: ${name}:latest
975
+ ports:
976
+ - "8080:8080"
977
+ environment:
978
+ - NODE_ENV=development
979
+ volumes:
980
+ - ./data:/data
981
+ `,
982
+ },
983
+ {
984
+ path: "Dockerfile",
985
+ content: `FROM node:20-alpine
986
+
987
+ WORKDIR /app
988
+
989
+ COPY package*.json ./
990
+ RUN npm ci
991
+
992
+ COPY . .
993
+
994
+ EXPOSE 8080
995
+
996
+ CMD ["npm", "start"]
997
+ `,
998
+ },
999
+ {
1000
+ path: "README.md",
1001
+ content: `# ${name}
1002
+
1003
+ ${description}
1004
+
1005
+ ## Getting Started
1006
+
1007
+ \`\`\`bash
1008
+ docker-compose up
1009
+ \`\`\`
1010
+
1011
+ ## Configuration
1012
+
1013
+ Update \`docker-compose.yml\` with your configuration.
1014
+ `,
1015
+ },
1016
+ {
1017
+ path: "knowledge/SERVICE_SPEC.md",
1018
+ content: `# ${name} - Service Specification
1019
+
1020
+ ## Overview
1021
+
1022
+ ${description}
1023
+
1024
+ ## Infrastructure Components
1025
+
1026
+ - [ ] TODO: Define what infrastructure this service provides
1027
+
1028
+ ## Configuration
1029
+
1030
+ Document configuration options here.
1031
+
1032
+ ## Deployment
1033
+
1034
+ Define deployment strategy here.
1035
+ `,
1036
+ },
1037
+ ],
1038
+ instructions: `This is an infrastructure service with Docker configuration.
1039
+
1040
+ ## Core Features to Implement
1041
+ - [ ] Define infrastructure components
1042
+ - [ ] Configure networking
1043
+ - [ ] Set up volumes and persistence
1044
+ - [ ] Add health checks
1045
+ - [ ] Document deployment process
1046
+
1047
+ ## Technical Stack
1048
+ - **Containerization:** Docker
1049
+ - **Orchestration:** Docker Compose (or Kubernetes if needed)
1050
+
1051
+ ## Key Patterns
1052
+ - Use multi-stage builds for production
1053
+ - Keep images small (Alpine-based)
1054
+ - Externalize configuration via env vars
1055
+ - Set up proper health checks
1056
+ - Document all ports and volumes
1057
+ `,
1058
+ };
1059
+ }
1060
+ function getContainerTemplate(name, description) {
1061
+ return {
1062
+ files: [
1063
+ {
1064
+ path: "Dockerfile",
1065
+ content: `FROM node:20-alpine
1066
+
1067
+ WORKDIR /app
1068
+
1069
+ COPY package*.json ./
1070
+ RUN npm ci --only=production
1071
+
1072
+ COPY . .
1073
+
1074
+ EXPOSE 3000
1075
+
1076
+ CMD ["npm", "start"]
1077
+ `,
1078
+ },
1079
+ {
1080
+ path: "package.json",
1081
+ content: JSON.stringify({
1082
+ name,
1083
+ version: "0.1.0",
1084
+ description,
1085
+ scripts: {
1086
+ start: "node index.js",
1087
+ },
1088
+ }, null, 2),
1089
+ },
1090
+ {
1091
+ path: "index.js",
1092
+ content: `console.log('Container service started')
1093
+
1094
+ // Add your service logic here
1095
+ `,
1096
+ },
1097
+ {
1098
+ path: "README.md",
1099
+ content: `# ${name}
1100
+
1101
+ ${description}
1102
+
1103
+ ## Build
1104
+
1105
+ \`\`\`bash
1106
+ docker build -t ${name} .
1107
+ \`\`\`
1108
+
1109
+ ## Run
1110
+
1111
+ \`\`\`bash
1112
+ docker run -p 3000:3000 ${name}
1113
+ \`\`\`
1114
+ `,
1115
+ },
1116
+ {
1117
+ path: "knowledge/SERVICE_SPEC.md",
1118
+ content: `# ${name} - Service Specification
1119
+
1120
+ ## Overview
1121
+
1122
+ ${description}
1123
+
1124
+ ## Container Configuration
1125
+
1126
+ - **Base Image:** node:20-alpine
1127
+ - **Exposed Ports:** 3000
1128
+
1129
+ ## Environment Variables
1130
+
1131
+ - None yet (add as needed)
1132
+
1133
+ ## Volumes
1134
+
1135
+ - None yet (add for persistence)
1136
+ `,
1137
+ },
1138
+ ],
1139
+ instructions: `This is a containerized service with Docker.
1140
+
1141
+ ## Core Features to Implement
1142
+ - [ ] Define service functionality
1143
+ - [ ] Configure container properly
1144
+ - [ ] Add health checks
1145
+ - [ ] Set up logging
1146
+ - [ ] Document deployment
1147
+
1148
+ ## Technical Stack
1149
+ - **Containerization:** Docker
1150
+
1151
+ ## Key Patterns
1152
+ - Keep container small and focused
1153
+ - Use .dockerignore to exclude unnecessary files
1154
+ - Run as non-root user
1155
+ - Add health checks
1156
+ - Log to stdout/stderr
1157
+ `,
1158
+ };
1159
+ }
1160
+ function getAgentTemplate(name, description) {
1161
+ const evalScript = `#!/bin/bash
1162
+ # Eval script for ${name}
1163
+ # Returns a single scalar score (higher is better)
1164
+ set -euo pipefail
1165
+
1166
+ cd "$(dirname "$0")/.."
1167
+
1168
+ # Run tests and count pass/fail
1169
+ RESULT=$(npx jest --json --silent 2>/dev/null || echo '{"numPassedTests":0,"numTotalTests":1}')
1170
+ PASSED=$(echo "$RESULT" | jq '.numPassedTests // 0')
1171
+ TOTAL=$(echo "$RESULT" | jq '.numTotalTests // 1')
1172
+
1173
+ if [ "$TOTAL" -eq 0 ]; then
1174
+ echo "1.0"
1175
+ else
1176
+ echo "scale=4; $PASSED / $TOTAL" | bc -l
1177
+ fi
1178
+ `;
1179
+ const manifestYaml = `name: ${name}
1180
+ version: 0.1.0
1181
+ description: "${description}"
1182
+ type: reactive
1183
+
1184
+ triggers:
1185
+ - pattern: "session:ended"
1186
+ - pattern: "eval:scored"
1187
+ - schedule: "0 */6 * * *"
1188
+
1189
+ capabilities:
1190
+ - read_context
1191
+ - write_journal
1192
+ - run_eval
1193
+ - modify_code
1194
+
1195
+ runtime:
1196
+ command: "node"
1197
+ args: ["dist/index.js"]
1198
+ cwd: "."
1199
+ env:
1200
+ NODE_ENV: "production"
1201
+
1202
+ policy:
1203
+ cost_limit_usd: 1.00
1204
+ approval_gate: auto
1205
+ max_concurrent: 1
1206
+ cooldown_seconds: 300
1207
+ `;
1208
+ return {
1209
+ files: [
1210
+ {
1211
+ path: "package.json",
1212
+ content: JSON.stringify({
1213
+ name,
1214
+ version: "0.1.0",
1215
+ description,
1216
+ type: "module",
1217
+ scripts: {
1218
+ dev: "tsx watch src/index.ts",
1219
+ build: "tsc",
1220
+ start: "node dist/index.js",
1221
+ test: "jest --passWithNoTests",
1222
+ eval: "bash eval/score.sh",
1223
+ },
1224
+ dependencies: {
1225
+ axios: "^1.6.0",
1226
+ },
1227
+ devDependencies: {
1228
+ typescript: "^5.3.3",
1229
+ tsx: "^4.7.1",
1230
+ jest: "^30.3.0",
1231
+ "ts-jest": "^30.0.0",
1232
+ "@types/jest": "^30.0.0",
1233
+ "@types/node": "^20.11.17",
1234
+ },
1235
+ }, null, 2),
1236
+ },
1237
+ {
1238
+ path: "tsconfig.json",
1239
+ content: JSON.stringify({
1240
+ compilerOptions: {
1241
+ target: "ES2022",
1242
+ module: "ES2022",
1243
+ moduleResolution: "node",
1244
+ outDir: "./dist",
1245
+ rootDir: "./src",
1246
+ strict: true,
1247
+ esModuleInterop: true,
1248
+ skipLibCheck: true,
1249
+ forceConsistentCasingInFileNames: true,
1250
+ declaration: true,
1251
+ },
1252
+ include: ["src/**/*"],
1253
+ exclude: ["node_modules", "dist"],
1254
+ }, null, 2),
1255
+ },
1256
+ {
1257
+ path: "jest.config.js",
1258
+ content: `export default {
1259
+ preset: "ts-jest/presets/default-esm",
1260
+ testEnvironment: "node",
1261
+ extensionsToTreatAsEsm: [".ts"],
1262
+ transform: { "^.+\\\\.ts$": ["ts-jest", { useESM: true }] },
1263
+ moduleNameMapper: { "^(\\\\.{1,2}/.*)\\\\.js$": "$1" },
1264
+ }
1265
+ `,
1266
+ },
1267
+ {
1268
+ path: "manifest.yaml",
1269
+ content: manifestYaml,
1270
+ },
1271
+ {
1272
+ path: "eval/score.sh",
1273
+ content: evalScript,
1274
+ },
1275
+ {
1276
+ path: "src/index.ts",
1277
+ content: `import { AgentLoop } from "./loop.js"
1278
+
1279
+ const agent = new AgentLoop({
1280
+ name: "${name}",
1281
+ hubUrl: process.env.CONTEXT_HUB_URL || "http://localhost:4242",
1282
+ })
1283
+
1284
+ agent.run().catch((err) => {
1285
+ console.error("Agent failed:", err)
1286
+ process.exit(1)
1287
+ })
1288
+ `,
1289
+ },
1290
+ {
1291
+ path: "src/loop.ts",
1292
+ content: `import { readFileSync, appendFileSync, mkdirSync, existsSync } from "fs"
1293
+ import { join } from "path"
1294
+ import { execSync } from "child_process"
1295
+ import axios from "axios"
1296
+
1297
+ export interface AgentLoopConfig {
1298
+ name: string
1299
+ hubUrl: string
1300
+ }
1301
+
1302
+ export class AgentLoop {
1303
+ private name: string
1304
+ private hubUrl: string
1305
+ private projectRoot: string
1306
+
1307
+ constructor(config: AgentLoopConfig) {
1308
+ this.name = config.name
1309
+ this.hubUrl = config.hubUrl
1310
+ this.projectRoot = process.cwd()
1311
+ }
1312
+
1313
+ async run(): Promise<void> {
1314
+ console.log(\`[\${this.name}] Starting agent loop\`)
1315
+
1316
+ const context = await this.getContext()
1317
+ console.log(\`[\${this.name}] Loaded \${context.length} context items\`)
1318
+
1319
+ const baseline = this.runEval()
1320
+ console.log(\`[\${this.name}] Baseline score: \${baseline}\`)
1321
+
1322
+ // Agent work goes here — analyze context, plan action, execute, eval
1323
+ await this.execute(context, baseline)
1324
+
1325
+ console.log(\`[\${this.name}] Loop complete\`)
1326
+ }
1327
+
1328
+ async getContext(): Promise<any[]> {
1329
+ try {
1330
+ const resp = await axios.post(\`\${this.hubUrl}/api/context\`, {
1331
+ query: this.name,
1332
+ taskType: "code",
1333
+ maxItems: 20,
1334
+ }, { timeout: 5000 })
1335
+ return resp.data?.items || []
1336
+ } catch {
1337
+ console.log(\`[\${this.name}] Context Hub unreachable, continuing without context\`)
1338
+ return []
1339
+ }
1340
+ }
1341
+
1342
+ runEval(): number {
1343
+ try {
1344
+ const result = execSync("bash eval/score.sh", {
1345
+ cwd: this.projectRoot,
1346
+ encoding: "utf-8",
1347
+ timeout: 60000,
1348
+ }).trim()
1349
+ return parseFloat(result) || 0
1350
+ } catch {
1351
+ return 0
1352
+ }
1353
+ }
1354
+
1355
+ async execute(context: any[], baseline: number): Promise<void> {
1356
+ // Override this method with your agent's logic
1357
+ // Example: analyze findings, generate fixes, run eval, keep or revert
1358
+ this.writeJournal({
1359
+ type: "discovery",
1360
+ title: \`\${this.name} loop executed\`,
1361
+ summary: \`Baseline score: \${baseline}. Context items: \${context.length}\`,
1362
+ })
1363
+ }
1364
+
1365
+ writeJournal(entry: { type: string; title: string; summary: string; detail?: string; files?: string[] }): void {
1366
+ const journalDir = join(this.projectRoot, ".jfl", "journal")
1367
+ if (!existsSync(journalDir)) mkdirSync(journalDir, { recursive: true })
1368
+
1369
+ let branch = "main"
1370
+ try {
1371
+ branch = execSync("git branch --show-current", { encoding: "utf-8", timeout: 3000 }).trim()
1372
+ } catch {}
1373
+
1374
+ const journalFile = join(journalDir, \`\${branch}.jsonl\`)
1375
+ const fullEntry = {
1376
+ v: 1,
1377
+ ts: new Date().toISOString(),
1378
+ session: branch,
1379
+ ...entry,
1380
+ }
1381
+ appendFileSync(journalFile, JSON.stringify(fullEntry) + "\\n")
1382
+ }
1383
+ }
1384
+ `,
1385
+ },
1386
+ {
1387
+ path: "src/__tests__/loop.test.ts",
1388
+ content: `import { AgentLoop } from "../loop.js"
1389
+
1390
+ describe("AgentLoop", () => {
1391
+ it("constructs with config", () => {
1392
+ const agent = new AgentLoop({ name: "test-agent", hubUrl: "http://localhost:4242" })
1393
+ expect(agent).toBeDefined()
1394
+ })
1395
+ })
1396
+ `,
1397
+ },
1398
+ {
1399
+ path: ".env.example",
1400
+ content: `CONTEXT_HUB_URL=http://localhost:4242
1401
+ NODE_ENV=development
1402
+ `,
1403
+ },
1404
+ {
1405
+ path: "README.md",
1406
+ content: `# ${name}
1407
+
1408
+ ${description}
1409
+
1410
+ ## Getting Started
1411
+
1412
+ \`\`\`bash
1413
+ npm install
1414
+ npm run dev
1415
+ \`\`\`
1416
+
1417
+ ## Architecture
1418
+
1419
+ This is a JFL agent service — an autonomous AI agent that integrates with JFL's context, journal, and eval systems.
1420
+
1421
+ ### Key Files
1422
+
1423
+ - \`manifest.yaml\` — Agent manifest (triggers, capabilities, runtime)
1424
+ - \`eval/score.sh\` — Eval script that returns a scalar score
1425
+ - \`src/loop.ts\` — Core agent loop (context → plan → execute → eval)
1426
+ - \`src/index.ts\` — Entry point
1427
+
1428
+ ### How It Works
1429
+
1430
+ 1. **Trigger** — Agent is triggered by events or schedule (see manifest.yaml)
1431
+ 2. **Context** — Loads project context from Context Hub
1432
+ 3. **Execute** — Performs its task (code changes, analysis, etc.)
1433
+ 4. **Eval** — Runs eval script to measure impact
1434
+ 5. **Journal** — Records what happened for future sessions
1435
+
1436
+ ### Eval Loop
1437
+
1438
+ The agent follows Karpathy's autoresearch pattern:
1439
+ - ONE metric to optimize (\`eval/score.sh\`)
1440
+ - Small, focused changes per round
1441
+ - Keep improvements, revert regressions
1442
+ - Experiment history informs next action
1443
+
1444
+ ### Integration
1445
+
1446
+ Register with JFL:
1447
+ \`\`\`bash
1448
+ jfl onboard .
1449
+ \`\`\`
1450
+
1451
+ Run standalone:
1452
+ \`\`\`bash
1453
+ npm start
1454
+ \`\`\`
1455
+
1456
+ ## Development
1457
+
1458
+ \`\`\`bash
1459
+ npm test # Run tests
1460
+ npm run eval # Run eval script
1461
+ npm run dev # Watch mode
1462
+ \`\`\`
1463
+ `,
1464
+ },
1465
+ ],
1466
+ instructions: `## Agent Requirements
1467
+
1468
+ - [ ] Implement agent logic in \`src/loop.ts\` execute() method
1469
+ - [ ] Configure triggers in \`manifest.yaml\`
1470
+ - [ ] Write eval script that returns a meaningful metric
1471
+ - [ ] Add tests for agent logic
1472
+ - [ ] Test with Context Hub running: \`jfl context-hub start\`
1473
+ - [ ] Journal significant actions (the loop class has writeJournal())
1474
+ - [ ] Register with GTM: \`jfl onboard .\`
1475
+
1476
+ ## Agent Design Principles
1477
+
1478
+ - **One metric**: Focus on a single scalar metric to optimize
1479
+ - **Small changes**: Make focused, reversible changes per round
1480
+ - **Eval everything**: Always run eval before and after changes
1481
+ - **Journal always**: Record what you did for future sessions
1482
+ - **Context first**: Load context before acting
1483
+ `,
1484
+ };
1485
+ }
1486
+ // ============================================================================
1487
+ // CLAUDE.md Generation
1488
+ // ============================================================================
1489
+ function generateClaudeMd(name, type, description, instructions) {
1490
+ return `# ${name} - Service Agent
1491
+
1492
+ Your context layer for building this service.
1493
+
1494
+ ## What You're Building
1495
+
1496
+ **Type:** ${type}
1497
+ **Description:** ${description}
1498
+
1499
+ ## Requirements
1500
+
1501
+ ${instructions}
1502
+
1503
+ ## Development Guidelines
1504
+
1505
+ ### Testing Strategy
1506
+ - Write tests as you build
1507
+ - Test happy paths and error cases
1508
+ - Keep tests focused and fast
1509
+
1510
+ ### Code Organization
1511
+ - Keep files small and focused
1512
+ - Group related code together
1513
+ - Use clear, descriptive names
1514
+
1515
+ ## Integration with GTM
1516
+
1517
+ This service will be part of a GTM (Go-To-Market) workspace:
1518
+ - Will have autonomous service agent (you!)
1519
+ - Can @-mention peer services
1520
+ - Journal entries sync to GTM parent
1521
+ - Coordinates with other services via Service Manager
1522
+
1523
+ ## Getting Started
1524
+
1525
+ 1. Implement core features (see checklist above)
1526
+ 2. Add tests
1527
+ 3. Update knowledge docs as you build
1528
+ 4. Test locally
1529
+ 5. Ready to onboard to GTM: \`jfl onboard .\`
1530
+
1531
+ ## Questions to Answer
1532
+
1533
+ As you build, consider:
1534
+ - What data models are needed?
1535
+ - What external APIs or services to integrate?
1536
+ - What environment variables are required?
1537
+ - What are the deployment requirements?
1538
+ - How will this be tested?
1539
+ - How will this be monitored?
1540
+
1541
+ Update this file as you answer these questions.
1542
+ `;
1543
+ }
1544
+ // ============================================================================
1545
+ // .gitignore Generation
1546
+ // ============================================================================
1547
+ function generateGitignore(type) {
1548
+ const base = `# Dependencies
1549
+ node_modules/
1550
+ .pnpm-store/
1551
+
1552
+ # Build output
1553
+ dist/
1554
+ bin/
1555
+ build/
1556
+ .next/
1557
+
1558
+ # Environment
1559
+ .env
1560
+ .env.local
1561
+ .env.*.local
1562
+
1563
+ # Logs
1564
+ *.log
1565
+ .jfl/logs/
1566
+ logs/
1567
+
1568
+ # OS
1569
+ .DS_Store
1570
+ Thumbs.db
1571
+
1572
+ # IDE
1573
+ .vscode/
1574
+ .idea/
1575
+ *.swp
1576
+ *.swo
1577
+ `;
1578
+ if (type === "web") {
1579
+ return base + `
1580
+ # Next.js
1581
+ .next/
1582
+ out/
1583
+ `;
1584
+ }
1585
+ if (type === "infrastructure" || type === "container") {
1586
+ return base + `
1587
+ # Docker
1588
+ *.tar
1589
+ `;
1590
+ }
1591
+ return base;
1592
+ }
1593
+ // ============================================================================
1594
+ // AI Tool Launching
1595
+ // ============================================================================
1596
+ async function launchAITool(toolName, servicePath, serviceName, serviceType, description) {
1597
+ switch (toolName) {
1598
+ case "claude":
1599
+ await launchClaudeCode(servicePath, serviceName);
1600
+ break;
1601
+ case "ralph":
1602
+ await launchRalph(servicePath, serviceName, serviceType, description);
1603
+ break;
1604
+ default:
1605
+ throw new Error(`Unknown AI tool: ${toolName}`);
1606
+ }
1607
+ }
1608
+ async function launchClaudeCode(servicePath, serviceName) {
1609
+ console.log(chalk.cyan(`\n🤖 Launching Claude Code...\n`));
1610
+ console.log(chalk.gray(`Read CLAUDE.md for service requirements\n`));
1611
+ // Spawn Claude in service directory
1612
+ const child = spawn("claude", [], {
1613
+ cwd: servicePath,
1614
+ stdio: "inherit",
1615
+ shell: true,
1616
+ });
1617
+ // Wait for Claude to close
1618
+ await new Promise((resolve) => {
1619
+ child.on("exit", () => resolve());
1620
+ });
1621
+ // Offer to onboard automatically
1622
+ console.log();
1623
+ const shouldOnboard = await p.confirm({
1624
+ message: "Onboard this service to GTM now?",
1625
+ initialValue: true,
1626
+ });
1627
+ if (!p.isCancel(shouldOnboard) && shouldOnboard) {
1628
+ try {
1629
+ await onboardCommand(servicePath, { skipGit: true });
1630
+ }
1631
+ catch (error) {
1632
+ console.log(chalk.yellow(`\n⚠️ Onboard failed: ${error.message}`));
1633
+ console.log(chalk.gray(`You can onboard manually later: jfl onboard ${servicePath}\n`));
1634
+ }
1635
+ }
1636
+ else {
1637
+ console.log(chalk.gray(`\nOnboard later: jfl onboard ${servicePath}\n`));
1638
+ }
1639
+ }
1640
+ async function launchRalph(servicePath, serviceName, serviceType, description) {
1641
+ // Generate PRD file for Ralph
1642
+ const prdPath = join(servicePath, "PRD.json");
1643
+ const prd = {
1644
+ title: `Build ${serviceName}`,
1645
+ description,
1646
+ requirements: getTypeSpecificRequirements(serviceType),
1647
+ techStack: getTypeSpecificStack(serviceType),
1648
+ acceptance_criteria: getTypeSpecificCriteria(serviceType),
1649
+ };
1650
+ writeFileSync(prdPath, JSON.stringify(prd, null, 2));
1651
+ console.log(chalk.cyan(`\n🤖 Launching Ralph autonomous loop...\n`));
1652
+ console.log(chalk.gray(`PRD generated at ${prdPath}\n`));
1653
+ // Spawn Ralph with PRD
1654
+ const child = spawn("ralph-tui", ["run", "--prd", prdPath], {
1655
+ cwd: servicePath,
1656
+ stdio: "inherit",
1657
+ shell: true,
1658
+ });
1659
+ await new Promise((resolve) => {
1660
+ child.on("exit", () => resolve());
1661
+ });
1662
+ // Offer to onboard
1663
+ console.log();
1664
+ const shouldOnboard = await p.confirm({
1665
+ message: "Onboard this service to GTM now?",
1666
+ initialValue: true,
1667
+ });
1668
+ if (!p.isCancel(shouldOnboard) && shouldOnboard) {
1669
+ try {
1670
+ await onboardCommand(servicePath, { skipGit: true });
1671
+ }
1672
+ catch (error) {
1673
+ console.log(chalk.yellow(`\n⚠️ Onboard failed: ${error.message}`));
1674
+ console.log(chalk.gray(`You can onboard manually later: jfl onboard ${servicePath}\n`));
1675
+ }
1676
+ }
1677
+ else {
1678
+ console.log(chalk.gray(`\nOnboard later: jfl onboard ${servicePath}\n`));
1679
+ }
1680
+ }
1681
+ function getTypeSpecificRequirements(type) {
1682
+ switch (type) {
1683
+ case "api":
1684
+ return [
1685
+ "Implement health check endpoint",
1686
+ "Add request validation",
1687
+ "Implement core API routes",
1688
+ "Add error handling",
1689
+ "Write API tests",
1690
+ ];
1691
+ case "web":
1692
+ return [
1693
+ "Set up page layouts",
1694
+ "Build reusable components",
1695
+ "Add styling",
1696
+ "Connect to backend APIs",
1697
+ "Implement routing",
1698
+ ];
1699
+ case "worker":
1700
+ return [
1701
+ "Define job types",
1702
+ "Implement job handlers",
1703
+ "Add error handling and retries",
1704
+ "Set up job monitoring",
1705
+ "Write job tests",
1706
+ ];
1707
+ case "cli":
1708
+ return [
1709
+ "Define CLI commands",
1710
+ "Add command arguments/options",
1711
+ "Implement command logic",
1712
+ "Add help text",
1713
+ "Write command tests",
1714
+ ];
1715
+ case "agent":
1716
+ return [
1717
+ "Implement agent logic in execute() method",
1718
+ "Configure triggers in manifest.yaml",
1719
+ "Write eval script returning a scalar metric",
1720
+ "Add tests for agent logic",
1721
+ "Test with Context Hub running",
1722
+ "Register with GTM via jfl onboard",
1723
+ ];
1724
+ default:
1725
+ return ["Implement core functionality", "Add tests", "Document usage"];
1726
+ }
1727
+ }
1728
+ function getTypeSpecificStack(type) {
1729
+ switch (type) {
1730
+ case "api":
1731
+ return ["Fastify", "TypeScript", "Vitest"];
1732
+ case "web":
1733
+ return ["Next.js", "React", "TypeScript"];
1734
+ case "worker":
1735
+ return ["BullMQ", "TypeScript", "Redis"];
1736
+ case "cli":
1737
+ return ["Commander", "TypeScript", "Chalk"];
1738
+ case "agent":
1739
+ return ["TypeScript", "Context Hub SDK", "Jest", "Eval Scripts"];
1740
+ default:
1741
+ return ["TypeScript", "Node.js"];
1742
+ }
1743
+ }
1744
+ function getTypeSpecificCriteria(type) {
1745
+ switch (type) {
1746
+ case "api":
1747
+ return [
1748
+ "All endpoints return correct status codes",
1749
+ "Request validation works",
1750
+ "Error responses are consistent",
1751
+ "Health check returns 200",
1752
+ "Tests pass",
1753
+ ];
1754
+ case "web":
1755
+ return [
1756
+ "Pages render correctly",
1757
+ "Components are reusable",
1758
+ "Styling is consistent",
1759
+ "API calls work",
1760
+ "Build succeeds",
1761
+ ];
1762
+ case "worker":
1763
+ return [
1764
+ "Jobs process successfully",
1765
+ "Failed jobs retry correctly",
1766
+ "Worker handles shutdown gracefully",
1767
+ "Tests pass",
1768
+ ];
1769
+ case "cli":
1770
+ return [
1771
+ "Commands execute correctly",
1772
+ "Help text is clear",
1773
+ "Error messages are helpful",
1774
+ "Tests pass",
1775
+ ];
1776
+ case "agent":
1777
+ return [
1778
+ "Agent loop runs end-to-end",
1779
+ "Eval script returns valid metric",
1780
+ "Context Hub integration works",
1781
+ "Journal entries are written",
1782
+ "Tests pass",
1783
+ ];
1784
+ default:
1785
+ return ["Core functionality works", "Tests pass", "Documentation is complete"];
1786
+ }
1787
+ }
1788
+ // ============================================================================
1789
+ // Manual Next Steps
1790
+ // ============================================================================
1791
+ function showManualNextSteps(location, name) {
1792
+ console.log(chalk.cyan("\n✓ Service scaffolded!\n"));
1793
+ console.log(chalk.gray("Next steps:"));
1794
+ console.log(chalk.gray(` 1. cd ${location}`));
1795
+ console.log(chalk.gray(` 2. npm install`));
1796
+ console.log(chalk.gray(` 3. npm run dev`));
1797
+ console.log(chalk.gray(` 4. Build your service`));
1798
+ console.log(chalk.gray(` 5. jfl onboard ${location}\n`));
1799
+ }
1800
+ //# sourceMappingURL=services-create.js.map