@hoangsonw/forge 0.1.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 (598) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +919 -0
  3. package/bin/forge.js +30 -0
  4. package/dist/agents/architect.d.ts +20 -0
  5. package/dist/agents/architect.d.ts.map +1 -0
  6. package/dist/agents/architect.js +75 -0
  7. package/dist/agents/architect.js.map +1 -0
  8. package/dist/agents/base.d.ts +20 -0
  9. package/dist/agents/base.d.ts.map +1 -0
  10. package/dist/agents/base.js +3 -0
  11. package/dist/agents/base.js.map +1 -0
  12. package/dist/agents/debugger.d.ts +16 -0
  13. package/dist/agents/debugger.d.ts.map +1 -0
  14. package/dist/agents/debugger.js +93 -0
  15. package/dist/agents/debugger.js.map +1 -0
  16. package/dist/agents/executor.d.ts +48 -0
  17. package/dist/agents/executor.d.ts.map +1 -0
  18. package/dist/agents/executor.js +402 -0
  19. package/dist/agents/executor.js.map +1 -0
  20. package/dist/agents/memory.d.ts +8 -0
  21. package/dist/agents/memory.d.ts.map +1 -0
  22. package/dist/agents/memory.js +84 -0
  23. package/dist/agents/memory.js.map +1 -0
  24. package/dist/agents/planner.d.ts +5 -0
  25. package/dist/agents/planner.d.ts.map +1 -0
  26. package/dist/agents/planner.js +185 -0
  27. package/dist/agents/planner.js.map +1 -0
  28. package/dist/agents/registry.d.ts +6 -0
  29. package/dist/agents/registry.d.ts.map +1 -0
  30. package/dist/agents/registry.js +32 -0
  31. package/dist/agents/registry.js.map +1 -0
  32. package/dist/agents/reviewer.d.ts +18 -0
  33. package/dist/agents/reviewer.d.ts.map +1 -0
  34. package/dist/agents/reviewer.js +87 -0
  35. package/dist/agents/reviewer.js.map +1 -0
  36. package/dist/classifier/classifier.d.ts +9 -0
  37. package/dist/classifier/classifier.d.ts.map +1 -0
  38. package/dist/classifier/classifier.js +83 -0
  39. package/dist/classifier/classifier.js.map +1 -0
  40. package/dist/classifier/heuristics.d.ts +11 -0
  41. package/dist/classifier/heuristics.d.ts.map +1 -0
  42. package/dist/classifier/heuristics.js +112 -0
  43. package/dist/classifier/heuristics.js.map +1 -0
  44. package/dist/cli/animations.d.ts +27 -0
  45. package/dist/cli/animations.d.ts.map +1 -0
  46. package/dist/cli/animations.js +186 -0
  47. package/dist/cli/animations.js.map +1 -0
  48. package/dist/cli/banners.d.ts +47 -0
  49. package/dist/cli/banners.d.ts.map +1 -0
  50. package/dist/cli/banners.js +211 -0
  51. package/dist/cli/banners.js.map +1 -0
  52. package/dist/cli/bootstrap.d.ts +2 -0
  53. package/dist/cli/bootstrap.d.ts.map +1 -0
  54. package/dist/cli/bootstrap.js +21 -0
  55. package/dist/cli/bootstrap.js.map +1 -0
  56. package/dist/cli/commands/bundle.d.ts +3 -0
  57. package/dist/cli/commands/bundle.d.ts.map +1 -0
  58. package/dist/cli/commands/bundle.js +80 -0
  59. package/dist/cli/commands/bundle.js.map +1 -0
  60. package/dist/cli/commands/changelog.d.ts +3 -0
  61. package/dist/cli/commands/changelog.d.ts.map +1 -0
  62. package/dist/cli/commands/changelog.js +60 -0
  63. package/dist/cli/commands/changelog.js.map +1 -0
  64. package/dist/cli/commands/config.d.ts +3 -0
  65. package/dist/cli/commands/config.d.ts.map +1 -0
  66. package/dist/cli/commands/config.js +91 -0
  67. package/dist/cli/commands/config.js.map +1 -0
  68. package/dist/cli/commands/container.d.ts +3 -0
  69. package/dist/cli/commands/container.d.ts.map +1 -0
  70. package/dist/cli/commands/container.js +149 -0
  71. package/dist/cli/commands/container.js.map +1 -0
  72. package/dist/cli/commands/cost.d.ts +3 -0
  73. package/dist/cli/commands/cost.d.ts.map +1 -0
  74. package/dist/cli/commands/cost.js +38 -0
  75. package/dist/cli/commands/cost.js.map +1 -0
  76. package/dist/cli/commands/daemon.d.ts +3 -0
  77. package/dist/cli/commands/daemon.d.ts.map +1 -0
  78. package/dist/cli/commands/daemon.js +39 -0
  79. package/dist/cli/commands/daemon.js.map +1 -0
  80. package/dist/cli/commands/dev.d.ts +3 -0
  81. package/dist/cli/commands/dev.d.ts.map +1 -0
  82. package/dist/cli/commands/dev.js +73 -0
  83. package/dist/cli/commands/dev.js.map +1 -0
  84. package/dist/cli/commands/doctor.d.ts +3 -0
  85. package/dist/cli/commands/doctor.d.ts.map +1 -0
  86. package/dist/cli/commands/doctor.js +214 -0
  87. package/dist/cli/commands/doctor.js.map +1 -0
  88. package/dist/cli/commands/init.d.ts +3 -0
  89. package/dist/cli/commands/init.d.ts.map +1 -0
  90. package/dist/cli/commands/init.js +148 -0
  91. package/dist/cli/commands/init.js.map +1 -0
  92. package/dist/cli/commands/mcp.d.ts +3 -0
  93. package/dist/cli/commands/mcp.d.ts.map +1 -0
  94. package/dist/cli/commands/mcp.js +227 -0
  95. package/dist/cli/commands/mcp.js.map +1 -0
  96. package/dist/cli/commands/memory.d.ts +3 -0
  97. package/dist/cli/commands/memory.d.ts.map +1 -0
  98. package/dist/cli/commands/memory.js +101 -0
  99. package/dist/cli/commands/memory.js.map +1 -0
  100. package/dist/cli/commands/migrate.d.ts +3 -0
  101. package/dist/cli/commands/migrate.d.ts.map +1 -0
  102. package/dist/cli/commands/migrate.js +18 -0
  103. package/dist/cli/commands/migrate.js.map +1 -0
  104. package/dist/cli/commands/model.d.ts +3 -0
  105. package/dist/cli/commands/model.d.ts.map +1 -0
  106. package/dist/cli/commands/model.js +37 -0
  107. package/dist/cli/commands/model.js.map +1 -0
  108. package/dist/cli/commands/permissions.d.ts +3 -0
  109. package/dist/cli/commands/permissions.d.ts.map +1 -0
  110. package/dist/cli/commands/permissions.js +32 -0
  111. package/dist/cli/commands/permissions.js.map +1 -0
  112. package/dist/cli/commands/resume.d.ts +3 -0
  113. package/dist/cli/commands/resume.d.ts.map +1 -0
  114. package/dist/cli/commands/resume.js +90 -0
  115. package/dist/cli/commands/resume.js.map +1 -0
  116. package/dist/cli/commands/run.d.ts +5 -0
  117. package/dist/cli/commands/run.d.ts.map +1 -0
  118. package/dist/cli/commands/run.js +164 -0
  119. package/dist/cli/commands/run.js.map +1 -0
  120. package/dist/cli/commands/session.d.ts +3 -0
  121. package/dist/cli/commands/session.d.ts.map +1 -0
  122. package/dist/cli/commands/session.js +94 -0
  123. package/dist/cli/commands/session.js.map +1 -0
  124. package/dist/cli/commands/skills.d.ts +4 -0
  125. package/dist/cli/commands/skills.d.ts.map +1 -0
  126. package/dist/cli/commands/skills.js +176 -0
  127. package/dist/cli/commands/skills.js.map +1 -0
  128. package/dist/cli/commands/spec.d.ts +3 -0
  129. package/dist/cli/commands/spec.d.ts.map +1 -0
  130. package/dist/cli/commands/spec.js +58 -0
  131. package/dist/cli/commands/spec.js.map +1 -0
  132. package/dist/cli/commands/status.d.ts +3 -0
  133. package/dist/cli/commands/status.d.ts.map +1 -0
  134. package/dist/cli/commands/status.js +65 -0
  135. package/dist/cli/commands/status.js.map +1 -0
  136. package/dist/cli/commands/task.d.ts +3 -0
  137. package/dist/cli/commands/task.d.ts.map +1 -0
  138. package/dist/cli/commands/task.js +42 -0
  139. package/dist/cli/commands/task.js.map +1 -0
  140. package/dist/cli/commands/ui.d.ts +3 -0
  141. package/dist/cli/commands/ui.d.ts.map +1 -0
  142. package/dist/cli/commands/ui.js +28 -0
  143. package/dist/cli/commands/ui.js.map +1 -0
  144. package/dist/cli/commands/update.d.ts +3 -0
  145. package/dist/cli/commands/update.d.ts.map +1 -0
  146. package/dist/cli/commands/update.js +53 -0
  147. package/dist/cli/commands/update.js.map +1 -0
  148. package/dist/cli/commands/web.d.ts +3 -0
  149. package/dist/cli/commands/web.d.ts.map +1 -0
  150. package/dist/cli/commands/web.js +42 -0
  151. package/dist/cli/commands/web.js.map +1 -0
  152. package/dist/cli/help.d.ts +21 -0
  153. package/dist/cli/help.d.ts.map +1 -0
  154. package/dist/cli/help.js +216 -0
  155. package/dist/cli/help.js.map +1 -0
  156. package/dist/cli/index.d.ts +3 -0
  157. package/dist/cli/index.d.ts.map +1 -0
  158. package/dist/cli/index.js +154 -0
  159. package/dist/cli/index.js.map +1 -0
  160. package/dist/cli/repl-commands.d.ts +47 -0
  161. package/dist/cli/repl-commands.d.ts.map +1 -0
  162. package/dist/cli/repl-commands.js +508 -0
  163. package/dist/cli/repl-commands.js.map +1 -0
  164. package/dist/cli/repl-input.d.ts +87 -0
  165. package/dist/cli/repl-input.d.ts.map +1 -0
  166. package/dist/cli/repl-input.js +764 -0
  167. package/dist/cli/repl-input.js.map +1 -0
  168. package/dist/cli/repl.d.ts +5 -0
  169. package/dist/cli/repl.d.ts.map +1 -0
  170. package/dist/cli/repl.js +1046 -0
  171. package/dist/cli/repl.js.map +1 -0
  172. package/dist/cli/ui.d.ts +19 -0
  173. package/dist/cli/ui.d.ts.map +1 -0
  174. package/dist/cli/ui.js +106 -0
  175. package/dist/cli/ui.js.map +1 -0
  176. package/dist/config/loader.d.ts +11 -0
  177. package/dist/config/loader.d.ts.map +1 -0
  178. package/dist/config/loader.js +132 -0
  179. package/dist/config/loader.js.map +1 -0
  180. package/dist/config/paths.d.ts +35 -0
  181. package/dist/config/paths.d.ts.map +1 -0
  182. package/dist/config/paths.js +114 -0
  183. package/dist/config/paths.js.map +1 -0
  184. package/dist/config/schema.d.ts +372 -0
  185. package/dist/config/schema.d.ts.map +1 -0
  186. package/dist/config/schema.js +161 -0
  187. package/dist/config/schema.js.map +1 -0
  188. package/dist/config/xdg.d.ts +2 -0
  189. package/dist/config/xdg.d.ts.map +1 -0
  190. package/dist/config/xdg.js +55 -0
  191. package/dist/config/xdg.js.map +1 -0
  192. package/dist/core/continuity.d.ts +8 -0
  193. package/dist/core/continuity.d.ts.map +1 -0
  194. package/dist/core/continuity.js +36 -0
  195. package/dist/core/continuity.js.map +1 -0
  196. package/dist/core/conversation.d.ts +152 -0
  197. package/dist/core/conversation.d.ts.map +1 -0
  198. package/dist/core/conversation.js +435 -0
  199. package/dist/core/conversation.js.map +1 -0
  200. package/dist/core/estimation.d.ts +19 -0
  201. package/dist/core/estimation.d.ts.map +1 -0
  202. package/dist/core/estimation.js +53 -0
  203. package/dist/core/estimation.js.map +1 -0
  204. package/dist/core/fork.d.ts +7 -0
  205. package/dist/core/fork.d.ts.map +1 -0
  206. package/dist/core/fork.js +93 -0
  207. package/dist/core/fork.js.map +1 -0
  208. package/dist/core/interactive-host.d.ts +28 -0
  209. package/dist/core/interactive-host.d.ts.map +1 -0
  210. package/dist/core/interactive-host.js +19 -0
  211. package/dist/core/interactive-host.js.map +1 -0
  212. package/dist/core/loop-detection.d.ts +25 -0
  213. package/dist/core/loop-detection.d.ts.map +1 -0
  214. package/dist/core/loop-detection.js +37 -0
  215. package/dist/core/loop-detection.js.map +1 -0
  216. package/dist/core/loop.d.ts +15 -0
  217. package/dist/core/loop.d.ts.map +1 -0
  218. package/dist/core/loop.js +417 -0
  219. package/dist/core/loop.js.map +1 -0
  220. package/dist/core/mode-policy.d.ts +33 -0
  221. package/dist/core/mode-policy.d.ts.map +1 -0
  222. package/dist/core/mode-policy.js +62 -0
  223. package/dist/core/mode-policy.js.map +1 -0
  224. package/dist/core/orchestrator.d.ts +14 -0
  225. package/dist/core/orchestrator.d.ts.map +1 -0
  226. package/dist/core/orchestrator.js +69 -0
  227. package/dist/core/orchestrator.js.map +1 -0
  228. package/dist/core/plan-fixer.d.ts +16 -0
  229. package/dist/core/plan-fixer.d.ts.map +1 -0
  230. package/dist/core/plan-fixer.js +55 -0
  231. package/dist/core/plan-fixer.js.map +1 -0
  232. package/dist/core/signals.d.ts +5 -0
  233. package/dist/core/signals.d.ts.map +1 -0
  234. package/dist/core/signals.js +44 -0
  235. package/dist/core/signals.js.map +1 -0
  236. package/dist/core/spec.d.ts +8 -0
  237. package/dist/core/spec.d.ts.map +1 -0
  238. package/dist/core/spec.js +75 -0
  239. package/dist/core/spec.js.map +1 -0
  240. package/dist/core/validation.d.ts +21 -0
  241. package/dist/core/validation.d.ts.map +1 -0
  242. package/dist/core/validation.js +126 -0
  243. package/dist/core/validation.js.map +1 -0
  244. package/dist/daemon/control.d.ts +9 -0
  245. package/dist/daemon/control.d.ts.map +1 -0
  246. package/dist/daemon/control.js +88 -0
  247. package/dist/daemon/control.js.map +1 -0
  248. package/dist/daemon/server.d.ts +8 -0
  249. package/dist/daemon/server.d.ts.map +1 -0
  250. package/dist/daemon/server.js +129 -0
  251. package/dist/daemon/server.js.map +1 -0
  252. package/dist/daemon/updater.d.ts +21 -0
  253. package/dist/daemon/updater.d.ts.map +1 -0
  254. package/dist/daemon/updater.js +159 -0
  255. package/dist/daemon/updater.js.map +1 -0
  256. package/dist/keychain/index.d.ts +8 -0
  257. package/dist/keychain/index.d.ts.map +1 -0
  258. package/dist/keychain/index.js +243 -0
  259. package/dist/keychain/index.js.map +1 -0
  260. package/dist/keychain/windows.d.ts +5 -0
  261. package/dist/keychain/windows.d.ts.map +1 -0
  262. package/dist/keychain/windows.js +65 -0
  263. package/dist/keychain/windows.js.map +1 -0
  264. package/dist/logging/logger.d.ts +12 -0
  265. package/dist/logging/logger.d.ts.map +1 -0
  266. package/dist/logging/logger.js +127 -0
  267. package/dist/logging/logger.js.map +1 -0
  268. package/dist/logging/rotation.d.ts +9 -0
  269. package/dist/logging/rotation.d.ts.map +1 -0
  270. package/dist/logging/rotation.js +85 -0
  271. package/dist/logging/rotation.js.map +1 -0
  272. package/dist/logging/trace.d.ts +7 -0
  273. package/dist/logging/trace.d.ts.map +1 -0
  274. package/dist/logging/trace.js +50 -0
  275. package/dist/logging/trace.js.map +1 -0
  276. package/dist/mcp/client.d.ts +37 -0
  277. package/dist/mcp/client.d.ts.map +1 -0
  278. package/dist/mcp/client.js +111 -0
  279. package/dist/mcp/client.js.map +1 -0
  280. package/dist/mcp/http-transport.d.ts +30 -0
  281. package/dist/mcp/http-transport.d.ts.map +1 -0
  282. package/dist/mcp/http-transport.js +109 -0
  283. package/dist/mcp/http-transport.js.map +1 -0
  284. package/dist/mcp/oauth.d.ts +23 -0
  285. package/dist/mcp/oauth.d.ts.map +1 -0
  286. package/dist/mcp/oauth.js +235 -0
  287. package/dist/mcp/oauth.js.map +1 -0
  288. package/dist/mcp/registry.d.ts +5 -0
  289. package/dist/mcp/registry.d.ts.map +1 -0
  290. package/dist/mcp/registry.js +35 -0
  291. package/dist/mcp/registry.js.map +1 -0
  292. package/dist/memory/cold.d.ts +16 -0
  293. package/dist/memory/cold.d.ts.map +1 -0
  294. package/dist/memory/cold.js +244 -0
  295. package/dist/memory/cold.js.map +1 -0
  296. package/dist/memory/graph.d.ts +19 -0
  297. package/dist/memory/graph.d.ts.map +1 -0
  298. package/dist/memory/graph.js +102 -0
  299. package/dist/memory/graph.js.map +1 -0
  300. package/dist/memory/hot.d.ts +26 -0
  301. package/dist/memory/hot.d.ts.map +1 -0
  302. package/dist/memory/hot.js +58 -0
  303. package/dist/memory/hot.js.map +1 -0
  304. package/dist/memory/index.d.ts +7 -0
  305. package/dist/memory/index.d.ts.map +1 -0
  306. package/dist/memory/index.js +26 -0
  307. package/dist/memory/index.js.map +1 -0
  308. package/dist/memory/learning.d.ts +18 -0
  309. package/dist/memory/learning.d.ts.map +1 -0
  310. package/dist/memory/learning.js +83 -0
  311. package/dist/memory/learning.js.map +1 -0
  312. package/dist/memory/retrieval.d.ts +21 -0
  313. package/dist/memory/retrieval.d.ts.map +1 -0
  314. package/dist/memory/retrieval.js +114 -0
  315. package/dist/memory/retrieval.js.map +1 -0
  316. package/dist/memory/warm.d.ts +9 -0
  317. package/dist/memory/warm.d.ts.map +1 -0
  318. package/dist/memory/warm.js +150 -0
  319. package/dist/memory/warm.js.map +1 -0
  320. package/dist/migrations/runner.d.ts +18 -0
  321. package/dist/migrations/runner.d.ts.map +1 -0
  322. package/dist/migrations/runner.js +62 -0
  323. package/dist/migrations/runner.js.map +1 -0
  324. package/dist/models/adapter.d.ts +46 -0
  325. package/dist/models/adapter.d.ts.map +1 -0
  326. package/dist/models/adapter.js +85 -0
  327. package/dist/models/adapter.js.map +1 -0
  328. package/dist/models/anthropic.d.ts +17 -0
  329. package/dist/models/anthropic.d.ts.map +1 -0
  330. package/dist/models/anthropic.js +128 -0
  331. package/dist/models/anthropic.js.map +1 -0
  332. package/dist/models/cache.d.ts +5 -0
  333. package/dist/models/cache.d.ts.map +1 -0
  334. package/dist/models/cache.js +135 -0
  335. package/dist/models/cache.js.map +1 -0
  336. package/dist/models/circuit-breaker.d.ts +18 -0
  337. package/dist/models/circuit-breaker.d.ts.map +1 -0
  338. package/dist/models/circuit-breaker.js +63 -0
  339. package/dist/models/circuit-breaker.js.map +1 -0
  340. package/dist/models/cost.d.ts +13 -0
  341. package/dist/models/cost.d.ts.map +1 -0
  342. package/dist/models/cost.js +92 -0
  343. package/dist/models/cost.js.map +1 -0
  344. package/dist/models/llamacpp.d.ts +9 -0
  345. package/dist/models/llamacpp.d.ts.map +1 -0
  346. package/dist/models/llamacpp.js +15 -0
  347. package/dist/models/llamacpp.js.map +1 -0
  348. package/dist/models/lmstudio.d.ts +11 -0
  349. package/dist/models/lmstudio.d.ts.map +1 -0
  350. package/dist/models/lmstudio.js +18 -0
  351. package/dist/models/lmstudio.js.map +1 -0
  352. package/dist/models/local-catalog.d.ts +45 -0
  353. package/dist/models/local-catalog.d.ts.map +1 -0
  354. package/dist/models/local-catalog.js +314 -0
  355. package/dist/models/local-catalog.js.map +1 -0
  356. package/dist/models/ollama.d.ts +10 -0
  357. package/dist/models/ollama.d.ts.map +1 -0
  358. package/dist/models/ollama.js +98 -0
  359. package/dist/models/ollama.js.map +1 -0
  360. package/dist/models/openai.d.ts +16 -0
  361. package/dist/models/openai.d.ts.map +1 -0
  362. package/dist/models/openai.js +139 -0
  363. package/dist/models/openai.js.map +1 -0
  364. package/dist/models/provider.d.ts +7 -0
  365. package/dist/models/provider.d.ts.map +1 -0
  366. package/dist/models/provider.js +39 -0
  367. package/dist/models/provider.js.map +1 -0
  368. package/dist/models/rate-limit.d.ts +13 -0
  369. package/dist/models/rate-limit.d.ts.map +1 -0
  370. package/dist/models/rate-limit.js +37 -0
  371. package/dist/models/rate-limit.js.map +1 -0
  372. package/dist/models/registry.d.ts +2 -0
  373. package/dist/models/registry.d.ts.map +1 -0
  374. package/dist/models/registry.js +69 -0
  375. package/dist/models/registry.js.map +1 -0
  376. package/dist/models/router.d.ts +26 -0
  377. package/dist/models/router.d.ts.map +1 -0
  378. package/dist/models/router.js +185 -0
  379. package/dist/models/router.js.map +1 -0
  380. package/dist/models/vllm.d.ts +13 -0
  381. package/dist/models/vllm.d.ts.map +1 -0
  382. package/dist/models/vllm.js +19 -0
  383. package/dist/models/vllm.js.map +1 -0
  384. package/dist/notifications/manager.d.ts +5 -0
  385. package/dist/notifications/manager.d.ts.map +1 -0
  386. package/dist/notifications/manager.js +65 -0
  387. package/dist/notifications/manager.js.map +1 -0
  388. package/dist/permissions/manager.d.ts +15 -0
  389. package/dist/permissions/manager.d.ts.map +1 -0
  390. package/dist/permissions/manager.js +159 -0
  391. package/dist/permissions/manager.js.map +1 -0
  392. package/dist/permissions/risk.d.ts +13 -0
  393. package/dist/permissions/risk.d.ts.map +1 -0
  394. package/dist/permissions/risk.js +43 -0
  395. package/dist/permissions/risk.js.map +1 -0
  396. package/dist/persistence/compression.d.ts +9 -0
  397. package/dist/persistence/compression.d.ts.map +1 -0
  398. package/dist/persistence/compression.js +126 -0
  399. package/dist/persistence/compression.js.map +1 -0
  400. package/dist/persistence/conversation-store.d.ts +67 -0
  401. package/dist/persistence/conversation-store.d.ts.map +1 -0
  402. package/dist/persistence/conversation-store.js +370 -0
  403. package/dist/persistence/conversation-store.js.map +1 -0
  404. package/dist/persistence/events.d.ts +4 -0
  405. package/dist/persistence/events.d.ts.map +1 -0
  406. package/dist/persistence/events.js +50 -0
  407. package/dist/persistence/events.js.map +1 -0
  408. package/dist/persistence/index-db.d.ts +65 -0
  409. package/dist/persistence/index-db.d.ts.map +1 -0
  410. package/dist/persistence/index-db.js +280 -0
  411. package/dist/persistence/index-db.js.map +1 -0
  412. package/dist/persistence/jsonl.d.ts +8 -0
  413. package/dist/persistence/jsonl.d.ts.map +1 -0
  414. package/dist/persistence/jsonl.js +90 -0
  415. package/dist/persistence/jsonl.js.map +1 -0
  416. package/dist/persistence/sessions.d.ts +5 -0
  417. package/dist/persistence/sessions.d.ts.map +1 -0
  418. package/dist/persistence/sessions.js +54 -0
  419. package/dist/persistence/sessions.js.map +1 -0
  420. package/dist/persistence/tasks.d.ts +7 -0
  421. package/dist/persistence/tasks.d.ts.map +1 -0
  422. package/dist/persistence/tasks.js +162 -0
  423. package/dist/persistence/tasks.js.map +1 -0
  424. package/dist/prompts/assembler.d.ts +29 -0
  425. package/dist/prompts/assembler.d.ts.map +1 -0
  426. package/dist/prompts/assembler.js +136 -0
  427. package/dist/prompts/assembler.js.map +1 -0
  428. package/dist/prompts/layers.d.ts +6 -0
  429. package/dist/prompts/layers.d.ts.map +1 -0
  430. package/dist/prompts/layers.js +60 -0
  431. package/dist/prompts/layers.js.map +1 -0
  432. package/dist/release/download.d.ts +19 -0
  433. package/dist/release/download.d.ts.map +1 -0
  434. package/dist/release/download.js +187 -0
  435. package/dist/release/download.js.map +1 -0
  436. package/dist/release/verify.d.ts +34 -0
  437. package/dist/release/verify.d.ts.map +1 -0
  438. package/dist/release/verify.js +127 -0
  439. package/dist/release/verify.js.map +1 -0
  440. package/dist/sandbox/fs.d.ts +10 -0
  441. package/dist/sandbox/fs.d.ts.map +1 -0
  442. package/dist/sandbox/fs.js +114 -0
  443. package/dist/sandbox/fs.js.map +1 -0
  444. package/dist/sandbox/shell.d.ts +20 -0
  445. package/dist/sandbox/shell.d.ts.map +1 -0
  446. package/dist/sandbox/shell.js +131 -0
  447. package/dist/sandbox/shell.js.map +1 -0
  448. package/dist/scheduler/dag.d.ts +7 -0
  449. package/dist/scheduler/dag.d.ts.map +1 -0
  450. package/dist/scheduler/dag.js +72 -0
  451. package/dist/scheduler/dag.js.map +1 -0
  452. package/dist/scheduler/resource-manager.d.ts +25 -0
  453. package/dist/scheduler/resource-manager.d.ts.map +1 -0
  454. package/dist/scheduler/resource-manager.js +101 -0
  455. package/dist/scheduler/resource-manager.js.map +1 -0
  456. package/dist/security/injection.d.ts +14 -0
  457. package/dist/security/injection.d.ts.map +1 -0
  458. package/dist/security/injection.js +46 -0
  459. package/dist/security/injection.js.map +1 -0
  460. package/dist/security/redact.d.ts +10 -0
  461. package/dist/security/redact.d.ts.map +1 -0
  462. package/dist/security/redact.js +89 -0
  463. package/dist/security/redact.js.map +1 -0
  464. package/dist/skills/loader.d.ts +4 -0
  465. package/dist/skills/loader.d.ts.map +1 -0
  466. package/dist/skills/loader.js +142 -0
  467. package/dist/skills/loader.js.map +1 -0
  468. package/dist/skills/marketplace.d.ts +15 -0
  469. package/dist/skills/marketplace.d.ts.map +1 -0
  470. package/dist/skills/marketplace.js +132 -0
  471. package/dist/skills/marketplace.js.map +1 -0
  472. package/dist/tools/apply-patch.d.ts +20 -0
  473. package/dist/tools/apply-patch.d.ts.map +1 -0
  474. package/dist/tools/apply-patch.js +195 -0
  475. package/dist/tools/apply-patch.js.map +1 -0
  476. package/dist/tools/ask-user.d.ts +12 -0
  477. package/dist/tools/ask-user.d.ts.map +1 -0
  478. package/dist/tools/ask-user.js +86 -0
  479. package/dist/tools/ask-user.js.map +1 -0
  480. package/dist/tools/delete-file.d.ts +10 -0
  481. package/dist/tools/delete-file.d.ts.map +1 -0
  482. package/dist/tools/delete-file.js +94 -0
  483. package/dist/tools/delete-file.js.map +1 -0
  484. package/dist/tools/edit-file.d.ts +20 -0
  485. package/dist/tools/edit-file.d.ts.map +1 -0
  486. package/dist/tools/edit-file.js +128 -0
  487. package/dist/tools/edit-file.js.map +1 -0
  488. package/dist/tools/format.d.ts +5 -0
  489. package/dist/tools/format.d.ts.map +1 -0
  490. package/dist/tools/format.js +131 -0
  491. package/dist/tools/format.js.map +1 -0
  492. package/dist/tools/git.d.ts +24 -0
  493. package/dist/tools/git.d.ts.map +1 -0
  494. package/dist/tools/git.js +122 -0
  495. package/dist/tools/git.js.map +1 -0
  496. package/dist/tools/glob.d.ts +12 -0
  497. package/dist/tools/glob.d.ts.map +1 -0
  498. package/dist/tools/glob.js +55 -0
  499. package/dist/tools/glob.js.map +1 -0
  500. package/dist/tools/grep.d.ts +19 -0
  501. package/dist/tools/grep.d.ts.map +1 -0
  502. package/dist/tools/grep.js +97 -0
  503. package/dist/tools/grep.js.map +1 -0
  504. package/dist/tools/init.d.ts +3 -0
  505. package/dist/tools/init.d.ts.map +1 -0
  506. package/dist/tools/init.js +66 -0
  507. package/dist/tools/init.js.map +1 -0
  508. package/dist/tools/list-dir.d.ts +16 -0
  509. package/dist/tools/list-dir.d.ts.map +1 -0
  510. package/dist/tools/list-dir.js +107 -0
  511. package/dist/tools/list-dir.js.map +1 -0
  512. package/dist/tools/move-file.d.ts +13 -0
  513. package/dist/tools/move-file.d.ts.map +1 -0
  514. package/dist/tools/move-file.js +100 -0
  515. package/dist/tools/move-file.js.map +1 -0
  516. package/dist/tools/read-file.d.ts +14 -0
  517. package/dist/tools/read-file.d.ts.map +1 -0
  518. package/dist/tools/read-file.js +99 -0
  519. package/dist/tools/read-file.js.map +1 -0
  520. package/dist/tools/registry.d.ts +10 -0
  521. package/dist/tools/registry.d.ts.map +1 -0
  522. package/dist/tools/registry.js +30 -0
  523. package/dist/tools/registry.js.map +1 -0
  524. package/dist/tools/run-command.d.ts +17 -0
  525. package/dist/tools/run-command.d.ts.map +1 -0
  526. package/dist/tools/run-command.js +73 -0
  527. package/dist/tools/run-command.js.map +1 -0
  528. package/dist/tools/run-tests.d.ts +16 -0
  529. package/dist/tools/run-tests.d.ts.map +1 -0
  530. package/dist/tools/run-tests.js +140 -0
  531. package/dist/tools/run-tests.js.map +1 -0
  532. package/dist/tools/web-browse.d.ts +10 -0
  533. package/dist/tools/web-browse.d.ts.map +1 -0
  534. package/dist/tools/web-browse.js +45 -0
  535. package/dist/tools/web-browse.js.map +1 -0
  536. package/dist/tools/web-fetch.d.ts +11 -0
  537. package/dist/tools/web-fetch.d.ts.map +1 -0
  538. package/dist/tools/web-fetch.js +43 -0
  539. package/dist/tools/web-fetch.js.map +1 -0
  540. package/dist/tools/web-search.d.ts +12 -0
  541. package/dist/tools/web-search.d.ts.map +1 -0
  542. package/dist/tools/web-search.js +52 -0
  543. package/dist/tools/web-search.js.map +1 -0
  544. package/dist/tools/write-file.d.ts +13 -0
  545. package/dist/tools/write-file.d.ts.map +1 -0
  546. package/dist/tools/write-file.js +100 -0
  547. package/dist/tools/write-file.js.map +1 -0
  548. package/dist/types/errors.d.ts +14 -0
  549. package/dist/types/errors.d.ts.map +1 -0
  550. package/dist/types/errors.js +55 -0
  551. package/dist/types/errors.js.map +1 -0
  552. package/dist/types/index.d.ts +267 -0
  553. package/dist/types/index.d.ts.map +1 -0
  554. package/dist/types/index.js +38 -0
  555. package/dist/types/index.js.map +1 -0
  556. package/dist/ui/chat.d.ts +89 -0
  557. package/dist/ui/chat.d.ts.map +1 -0
  558. package/dist/ui/chat.js +311 -0
  559. package/dist/ui/chat.js.map +1 -0
  560. package/dist/ui/public/app.js +2113 -0
  561. package/dist/ui/public/index.html +78 -0
  562. package/dist/ui/public/styles.css +1703 -0
  563. package/dist/ui/server-errors.d.ts +24 -0
  564. package/dist/ui/server-errors.d.ts.map +1 -0
  565. package/dist/ui/server-errors.js +31 -0
  566. package/dist/ui/server-errors.js.map +1 -0
  567. package/dist/ui/server.d.ts +10 -0
  568. package/dist/ui/server.d.ts.map +1 -0
  569. package/dist/ui/server.js +815 -0
  570. package/dist/ui/server.js.map +1 -0
  571. package/dist/ui/task-runner.d.ts +71 -0
  572. package/dist/ui/task-runner.d.ts.map +1 -0
  573. package/dist/ui/task-runner.js +334 -0
  574. package/dist/ui/task-runner.js.map +1 -0
  575. package/dist/web/browse.d.ts +35 -0
  576. package/dist/web/browse.d.ts.map +1 -0
  577. package/dist/web/browse.js +166 -0
  578. package/dist/web/browse.js.map +1 -0
  579. package/dist/web/fetch.d.ts +18 -0
  580. package/dist/web/fetch.d.ts.map +1 -0
  581. package/dist/web/fetch.js +107 -0
  582. package/dist/web/fetch.js.map +1 -0
  583. package/dist/web/sanitize.d.ts +8 -0
  584. package/dist/web/sanitize.d.ts.map +1 -0
  585. package/dist/web/sanitize.js +58 -0
  586. package/dist/web/sanitize.js.map +1 -0
  587. package/dist/web/search.d.ts +12 -0
  588. package/dist/web/search.d.ts.map +1 -0
  589. package/dist/web/search.js +124 -0
  590. package/dist/web/search.js.map +1 -0
  591. package/install/install.ps1 +46 -0
  592. package/install/install.sh +72 -0
  593. package/package.json +89 -0
  594. package/scripts/bundle.js +26 -0
  595. package/scripts/copy-assets.js +33 -0
  596. package/scripts/link.sh +79 -0
  597. package/scripts/metrics.sh +33 -0
  598. package/scripts/postinstall.js +36 -0
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isAnimEnabled = exports.pulse = exports.breadcrumbs = exports.readyFlourish = exports.multilineSpinner = exports.progressBar = exports.pending = exports.typeWriter = exports.revealLines = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const ora_1 = __importDefault(require("ora"));
9
+ const banners_1 = require("./banners");
10
+ /**
11
+ * Interactive animation kit: banner reveal, typewriter output, progress bars,
12
+ * pulsing spinners, and status ticks. Every helper respects NO_COLOR,
13
+ * TTY absence, and a global `FORGE_NO_ANIM=1` escape hatch. Non-TTY callers
14
+ * get instant, un-decorated output.
15
+ */
16
+ const noAnim = !process.stdout.isTTY ||
17
+ process.env.NO_COLOR === '1' ||
18
+ process.env.FORGE_NO_ANIM === '1' ||
19
+ process.env.CI === 'true';
20
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
21
+ /** Reveal lines top-down with a small delay. Good for the startup banner. */
22
+ const revealLines = async (text, delayMs = 40) => {
23
+ if (noAnim) {
24
+ process.stdout.write(text + '\n');
25
+ return;
26
+ }
27
+ const lines = text.split('\n');
28
+ for (const line of lines) {
29
+ process.stdout.write(line + '\n');
30
+ if (line.trim().length)
31
+ await sleep(delayMs);
32
+ }
33
+ };
34
+ exports.revealLines = revealLines;
35
+ /** Type out a string character-by-character. Caps total time so long strings don't drag. */
36
+ const typeWriter = async (text, opts = {}) => {
37
+ if (noAnim) {
38
+ process.stdout.write(text);
39
+ return;
40
+ }
41
+ const per = opts.perCharMs ?? 18;
42
+ const cap = opts.capMs ?? 1_800;
43
+ const total = text.length * per;
44
+ const step = total > cap ? cap / Math.max(1, text.length) : per;
45
+ for (const ch of text) {
46
+ process.stdout.write(ch);
47
+ await sleep(step);
48
+ }
49
+ };
50
+ exports.typeWriter = typeWriter;
51
+ /** Animated ellipsis (".." "..." "....") while awaiting a promise. */
52
+ const pending = async (label, work) => {
53
+ if (noAnim)
54
+ return work();
55
+ const frames = ['· ', '·· ', '···', ' ··', ' ·', ' '];
56
+ let i = 0;
57
+ const tag = chalk_1.default.rgb(...banners_1.PALETTE.cyan)('▸') + ' ' + chalk_1.default.bold(label);
58
+ const interval = setInterval(() => {
59
+ process.stdout.write(`\r${tag} ${chalk_1.default.rgb(...banners_1.PALETTE.muted)(frames[i++ % frames.length])} `);
60
+ }, 120);
61
+ try {
62
+ const out = await work();
63
+ clearInterval(interval);
64
+ process.stdout.write(`\r${tag} ${chalk_1.default.bold.rgb(...banners_1.PALETTE.green)('✔')} \n`);
65
+ return out;
66
+ }
67
+ catch (err) {
68
+ clearInterval(interval);
69
+ process.stdout.write(`\r${tag} ${chalk_1.default.bold.rgb(...banners_1.PALETTE.red)('✖')} \n`);
70
+ throw err;
71
+ }
72
+ };
73
+ exports.pending = pending;
74
+ const progressBar = (total, label) => {
75
+ const width = 28;
76
+ let current = 0;
77
+ let lastMessage = '';
78
+ const render = () => {
79
+ if (noAnim)
80
+ return;
81
+ const pct = Math.min(1, current / Math.max(1, total));
82
+ const filled = Math.floor(pct * width);
83
+ const left = '█'.repeat(filled);
84
+ const right = '░'.repeat(width - filled);
85
+ const percent = `${Math.floor(pct * 100)}%`.padStart(4);
86
+ const bar = chalk_1.default.rgb(...banners_1.PALETTE.cyan)(left) + chalk_1.default.rgb(...banners_1.PALETTE.dim)(right);
87
+ const suffix = lastMessage ? chalk_1.default.dim(' · ' + lastMessage) : '';
88
+ process.stdout.write(`\r ${chalk_1.default.bold(label.padEnd(14))} ${bar} ${chalk_1.default.rgb(...banners_1.PALETTE.violet)(percent)}${suffix} `);
89
+ };
90
+ render();
91
+ return {
92
+ tick(increment = 1) {
93
+ current += increment;
94
+ render();
95
+ },
96
+ update(c, message) {
97
+ current = c;
98
+ if (message !== undefined)
99
+ lastMessage = message;
100
+ render();
101
+ },
102
+ finish(message) {
103
+ current = total;
104
+ if (message)
105
+ lastMessage = message;
106
+ render();
107
+ if (!noAnim)
108
+ process.stdout.write('\n');
109
+ },
110
+ };
111
+ };
112
+ exports.progressBar = progressBar;
113
+ /** Multi-message spinner that rotates a hint underneath. */
114
+ const multilineSpinner = (label, hints) => {
115
+ const s = (0, ora_1.default)({ text: `${label}`, color: 'cyan' });
116
+ if (!noAnim && hints.length) {
117
+ let i = 0;
118
+ s.start();
119
+ const interval = setInterval(() => {
120
+ s.text = `${label} ${chalk_1.default.dim('· ' + hints[i++ % hints.length])}`;
121
+ }, 1500);
122
+ const origSucceed = s.succeed.bind(s);
123
+ const origFail = s.fail.bind(s);
124
+ const origStop = s.stop.bind(s);
125
+ s.succeed = (t) => {
126
+ clearInterval(interval);
127
+ return origSucceed(t);
128
+ };
129
+ s.fail = (t) => {
130
+ clearInterval(interval);
131
+ return origFail(t);
132
+ };
133
+ s.stop = () => {
134
+ clearInterval(interval);
135
+ return origStop();
136
+ };
137
+ }
138
+ else {
139
+ s.start();
140
+ }
141
+ return s;
142
+ };
143
+ exports.multilineSpinner = multilineSpinner;
144
+ /** Short, punchy "ready" flourish. */
145
+ const readyFlourish = async () => {
146
+ if (noAnim)
147
+ return;
148
+ const frames = ['▱▱▱▱▱', '▰▱▱▱▱', '▰▰▱▱▱', '▰▰▰▱▱', '▰▰▰▰▱', '▰▰▰▰▰'];
149
+ for (const f of frames) {
150
+ process.stdout.write(`\r ${chalk_1.default.rgb(...banners_1.PALETTE.cyan)('warming up')} ${chalk_1.default.rgb(...banners_1.PALETTE.pink)(f)} `);
151
+ await sleep(80);
152
+ }
153
+ process.stdout.write(`\r ${chalk_1.default.rgb(...banners_1.PALETTE.green)('ready ')} ${chalk_1.default.rgb(...banners_1.PALETTE.green)('▰▰▰▰▰')}\n`);
154
+ };
155
+ exports.readyFlourish = readyFlourish;
156
+ /** Compact breadcrumb: «phase ▸ phase ▸ phase». */
157
+ const breadcrumbs = (stages, currentIndex) => {
158
+ return stages
159
+ .map((s, i) => {
160
+ if (i < currentIndex)
161
+ return chalk_1.default.rgb(...banners_1.PALETTE.green)(`✓ ${s}`);
162
+ if (i === currentIndex)
163
+ return chalk_1.default.bold.rgb(...banners_1.PALETTE.cyan)(`▸ ${s}`);
164
+ return chalk_1.default.rgb(...banners_1.PALETTE.muted)(`○ ${s}`);
165
+ })
166
+ .join(chalk_1.default.rgb(...banners_1.PALETTE.muted)(' → '));
167
+ };
168
+ exports.breadcrumbs = breadcrumbs;
169
+ /** Pulse-fade line, emitted as a single newline-terminated entry. */
170
+ const pulse = async (text, times = 2) => {
171
+ if (noAnim) {
172
+ process.stdout.write(text + '\n');
173
+ return;
174
+ }
175
+ for (let i = 0; i < times; i++) {
176
+ process.stdout.write('\r' + chalk_1.default.dim(text));
177
+ await sleep(220);
178
+ process.stdout.write('\r' + chalk_1.default.bold(text));
179
+ await sleep(220);
180
+ }
181
+ process.stdout.write('\n');
182
+ };
183
+ exports.pulse = pulse;
184
+ const isAnimEnabled = () => !noAnim;
185
+ exports.isAnimEnabled = isAnimEnabled;
186
+ //# sourceMappingURL=animations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animations.js","sourceRoot":"","sources":["../../src/cli/animations.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,8CAA+B;AAC/B,uCAAoC;AAEpC;;;;;GAKG;AAEH,MAAM,MAAM,GACV,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;IACrB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,GAAG;IAC5B,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG;IACjC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC;AAE5B,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAE1E,6EAA6E;AACtE,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,OAAO,GAAG,EAAE,EAAiB,EAAE;IAC7E,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM;YAAE,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,WAAW,eAUtB;AAEF,4FAA4F;AACrF,MAAM,UAAU,GAAG,KAAK,EAC7B,IAAY,EACZ,OAA+C,EAAE,EAClC,EAAE;IACjB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,UAAU,cAgBrB;AAEF,sEAAsE;AAC/D,MAAM,OAAO,GAAG,KAAK,EAAK,KAAa,EAAE,IAAsB,EAAc,EAAE;IACpF,IAAI,MAAM;QAAE,OAAO,IAAI,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IAChG,CAAC,EAAE,GAAG,CAAC,CAAC;IACR,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,GAAG,KAAK,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAC5E,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAChG,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AApBW,QAAA,OAAO,WAoBlB;AASK,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,KAAa,EAAO,EAAE;IAC/D,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,MAAM;YAAE,OAAO;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,KAAK,CAClG,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,EAAE,CAAC;IACT,OAAO;QACL,IAAI,CAAC,SAAS,GAAG,CAAC;YAChB,OAAO,IAAI,SAAS,CAAC;YACrB,MAAM,EAAE,CAAC;QACX,CAAC;QACD,MAAM,CAAC,CAAC,EAAE,OAAO;YACf,OAAO,GAAG,CAAC,CAAC;YACZ,IAAI,OAAO,KAAK,SAAS;gBAAE,WAAW,GAAG,OAAO,CAAC;YACjD,MAAM,EAAE,CAAC;QACX,CAAC;QACD,MAAM,CAAC,OAAO;YACZ,OAAO,GAAG,KAAK,CAAC;YAChB,IAAI,OAAO;gBAAE,WAAW,GAAG,OAAO,CAAC;YACnC,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,WAAW,eAqCtB;AAEF,4DAA4D;AACrD,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,KAAe,EAAO,EAAE;IACtE,MAAM,CAAC,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,eAAK,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACrE,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE;YAChB,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE;YACb,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE;YACZ,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,QAAQ,EAAE,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,CAAC,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AA3BW,QAAA,gBAAgB,oBA2B3B;AAEF,sCAAsC;AAC/B,MAAM,aAAa,GAAG,KAAK,IAAmB,EAAE;IACrD,IAAI,MAAM;QAAE,OAAO;IACnB,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CACpF,CAAC;QACF,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAC9F,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,aAAa,iBAYxB;AAEF,mDAAmD;AAC5C,MAAM,WAAW,GAAG,CAAC,MAAgB,EAAE,YAAoB,EAAU,EAAE;IAC5E,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,IAAI,CAAC,GAAG,YAAY;YAAE,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,YAAY;YAAE,OAAO,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC;SACD,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,iBAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AARW,QAAA,WAAW,eAQtB;AAEF,qEAAqE;AAC9D,MAAM,KAAK,GAAG,KAAK,EAAE,IAAY,EAAE,KAAK,GAAG,CAAC,EAAiB,EAAE;IACpE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAZW,QAAA,KAAK,SAYhB;AAEK,MAAM,aAAa,GAAG,GAAY,EAAE,CAAC,CAAC,MAAM,CAAC;AAAvC,QAAA,aAAa,iBAA0B"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Visual kit for Forge's interactive output: the boxed brand banner, bar
3
+ * separators, status boxes, and a set of decorative ASCII glyphs used across
4
+ * commands. All helpers return strings so callers compose them freely.
5
+ */
6
+ declare const PALETTE: {
7
+ cyan: [number, number, number];
8
+ teal: [number, number, number];
9
+ blue: [number, number, number];
10
+ violet: [number, number, number];
11
+ pink: [number, number, number];
12
+ amber: [number, number, number];
13
+ green: [number, number, number];
14
+ red: [number, number, number];
15
+ muted: [number, number, number];
16
+ dim: [number, number, number];
17
+ };
18
+ /** The primary brand banner. Matches the ASCII the user requested exactly. */
19
+ export declare const banner: () => string;
20
+ /** Welcome hero used by `forge init` and a blank `forge`. */
21
+ export declare const welcome: (version: string) => string;
22
+ /** Heavy divider with gradient and optional title. */
23
+ export declare const divider: (title?: string) => string;
24
+ /** Section header with glyph. */
25
+ export declare const section: (title: string, glyph?: string) => string;
26
+ /** Big celebratory success frame. */
27
+ export declare const success: (title: string, body?: string[]) => string;
28
+ /** Bold failure frame. */
29
+ export declare const failure: (title: string, body?: string[]) => string;
30
+ /** Attention frame. */
31
+ export declare const attention: (title: string, body?: string[]) => string;
32
+ /** Small sparkles for completion summaries. */
33
+ export declare const sparkles: () => string;
34
+ /** Tiny animated-looking rocket for "launching" moments. */
35
+ export declare const rocket: () => string;
36
+ /** Step badge used in run/plan output: ╭─ 01 ─╮ style. */
37
+ export declare const stepBadge: (index: number, total: number) => string;
38
+ /** Colored provider / status pill. */
39
+ export declare const pill: (label: string, value: string, tone?: "ok" | "warn" | "err" | "neutral") => string;
40
+ /** Compact KV line with aligned keys. */
41
+ export declare const kv: (key: string, value: string, keyWidth?: number) => string;
42
+ /** Colored severity tag, e.g., [info] [warning] [error]. */
43
+ export declare const tag: (severity: "info" | "warning" | "error" | "critical") => string;
44
+ /** Completion summary, used by `run` at the end of a task. */
45
+ export declare const completionSummary: (title: string, filesChanged: string[], durationMs: number, cost?: number) => string;
46
+ export { PALETTE };
47
+ //# sourceMappingURL=banners.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banners.d.ts","sourceRoot":"","sources":["../../src/cli/banners.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,QAAA,MAAM,OAAO;UACa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;UACxB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;UACxB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YACrB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;UAC1B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;WACxB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;WACzB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAC1B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;WACpB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAC5B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;CAC/C,CAAC;AAwCF,8EAA8E;AAC9E,eAAO,MAAM,MAAM,QAAO,MAiBzB,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,OAAO,GAAI,SAAS,MAAM,KAAG,MAazC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,KAAG,MAUxC,CAAC;AAEF,iCAAiC;AACjC,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,cAAW,KAAG,MAEpD,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,KAAG,MAUxD,CAAC;AAEF,0BAA0B;AAC1B,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,KAAG,MAQxD,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,KAAG,MAU1D,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,QAAQ,QAAO,MAIO,CAAC;AAEpC,4DAA4D;AAC5D,eAAO,MAAM,MAAM,QAAO,MACqH,CAAC;AAEhJ,0DAA0D;AAC1D,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MAIxD,CAAC;AAEF,sCAAsC;AACtC,eAAO,MAAM,IAAI,GACf,OAAO,MAAM,EACb,OAAO,MAAM,EACb,OAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,SAAqB,KAClD,MAQF,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,EAAE,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,iBAAa,KAAG,MACgB,CAAC;AAEhF,4DAA4D;AAC5D,eAAO,MAAM,GAAG,GAAI,UAAU,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,KAAG,MASzE,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,GAC5B,OAAO,MAAM,EACb,cAAc,MAAM,EAAE,EACtB,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,MA6BF,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PALETTE = exports.completionSummary = exports.tag = exports.kv = exports.pill = exports.stepBadge = exports.rocket = exports.sparkles = exports.attention = exports.failure = exports.success = exports.section = exports.divider = exports.welcome = exports.banner = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ /**
9
+ * Visual kit for Forge's interactive output: the boxed brand banner, bar
10
+ * separators, status boxes, and a set of decorative ASCII glyphs used across
11
+ * commands. All helpers return strings so callers compose them freely.
12
+ */
13
+ const PALETTE = {
14
+ cyan: [94, 234, 212],
15
+ teal: [20, 184, 166],
16
+ blue: [56, 189, 248],
17
+ violet: [167, 139, 250],
18
+ pink: [244, 114, 182],
19
+ amber: [251, 191, 36],
20
+ green: [34, 197, 94],
21
+ red: [239, 68, 68],
22
+ muted: [138, 153, 166],
23
+ dim: [82, 94, 105],
24
+ };
25
+ exports.PALETTE = PALETTE;
26
+ const lerp = (a, b, t) => Math.round(a + (b - a) * t);
27
+ const gradientText = (text, from, to) => {
28
+ let out = '';
29
+ const visible = Array.from(text);
30
+ const n = Math.max(1, visible.length - 1);
31
+ visible.forEach((ch, i) => {
32
+ const t = i / n;
33
+ out += chalk_1.default.rgb(lerp(from[0], to[0], t), lerp(from[1], to[1], t), lerp(from[2], to[2], t))(ch);
34
+ });
35
+ return out;
36
+ };
37
+ const gradientLines = (lines, from, to) => {
38
+ const n = Math.max(1, lines.length - 1);
39
+ return lines.map((line, i) => {
40
+ const t = i / n;
41
+ const mid = [
42
+ lerp(from[0], to[0], t),
43
+ lerp(from[1], to[1], t),
44
+ lerp(from[2], to[2], t),
45
+ ];
46
+ return gradientText(line, mid, [
47
+ lerp(mid[0], to[0], 0.4),
48
+ lerp(mid[1], to[1], 0.4),
49
+ lerp(mid[2], to[2], 0.4),
50
+ ]);
51
+ });
52
+ };
53
+ /** The primary brand banner. Matches the ASCII the user requested exactly. */
54
+ const banner = () => {
55
+ const art = [
56
+ `.------------------------------.`,
57
+ `| _____ |`,
58
+ `|| ___|___ _ __ __ _ ___ |`,
59
+ `|| |_ / _ \\ | '__|/ _\` | / _ \\|`,
60
+ `|| _|| (_) || | | (_| || __/|`,
61
+ `||_| \\___/ |_| \\__, | \\___||`,
62
+ `| |___/ |`,
63
+ `'------------------------------'`,
64
+ ];
65
+ const coloured = gradientLines(art, PALETTE.cyan, PALETTE.violet).join('\n');
66
+ const tagline = chalk_1.default.rgb(...PALETTE.muted)(' local-first · multi-agent · programmable');
67
+ const subtitle = chalk_1.default
68
+ .rgb(...PALETTE.pink)
69
+ .italic(' forge — software engineering as a runtime');
70
+ return `\n${coloured}\n${subtitle}\n${tagline}\n`;
71
+ };
72
+ exports.banner = banner;
73
+ /** Welcome hero used by `forge init` and a blank `forge`. */
74
+ const welcome = (version) => {
75
+ const left = chalk_1.default.rgb(...PALETTE.cyan)('⟡');
76
+ const right = chalk_1.default.rgb(...PALETTE.pink)('⟡');
77
+ const v = chalk_1.default.rgb(...PALETTE.muted)(`v${version}`);
78
+ const header = `${(0, exports.banner)()}${' '.repeat(6)}${left} ${chalk_1.default.bold('Welcome to Forge')} ${right} ${v}\n`;
79
+ const hint = chalk_1.default.rgb(...PALETTE.muted)(' try: ') +
80
+ chalk_1.default.bold.rgb(...PALETTE.cyan)('forge run ') +
81
+ chalk_1.default.rgb(...PALETTE.amber)('"add a /health endpoint"') +
82
+ chalk_1.default.rgb(...PALETTE.muted)(' · ') +
83
+ chalk_1.default.bold.rgb(...PALETTE.cyan)('forge ui start') +
84
+ '\n';
85
+ return header + hint;
86
+ };
87
+ exports.welcome = welcome;
88
+ /** Heavy divider with gradient and optional title. */
89
+ const divider = (title) => {
90
+ const cols = process.stdout.columns && process.stdout.columns > 0 ? process.stdout.columns : 80;
91
+ const width = Math.max(8, Math.min(60, cols - 2));
92
+ const bar = '━'.repeat(width);
93
+ if (!title)
94
+ return gradientText(bar, PALETTE.cyan, PALETTE.violet);
95
+ const decoration = gradientText('━━━', PALETTE.cyan, PALETTE.violet);
96
+ const label = chalk_1.default.bold.rgb(...PALETTE.cyan)(` ${title.toUpperCase()} `);
97
+ const remain = Math.max(0, width - title.length - 8);
98
+ const tail = gradientText('━'.repeat(remain), PALETTE.violet, PALETTE.pink);
99
+ return `${decoration}${label}${tail}`;
100
+ };
101
+ exports.divider = divider;
102
+ /** Section header with glyph. */
103
+ const section = (title, glyph = '◆') => {
104
+ return `\n${chalk_1.default.rgb(...PALETTE.cyan)(glyph)} ${chalk_1.default.bold(title)}\n`;
105
+ };
106
+ exports.section = section;
107
+ /** Big celebratory success frame. */
108
+ const success = (title, body) => {
109
+ const lines = [
110
+ chalk_1.default.green(' ╭──────────────────────────────────────────────╮'),
111
+ chalk_1.default.green(' │ ') + chalk_1.default.bold.green('✔ ' + title.padEnd(40)) + chalk_1.default.green(' │'),
112
+ ...(body ?? []).map((b) => chalk_1.default.green(' │ ') + chalk_1.default.dim(b.padEnd(40)) + chalk_1.default.green(' │')),
113
+ chalk_1.default.green(' ╰──────────────────────────────────────────────╯'),
114
+ ];
115
+ return lines.join('\n');
116
+ };
117
+ exports.success = success;
118
+ /** Bold failure frame. */
119
+ const failure = (title, body) => {
120
+ const lines = [
121
+ chalk_1.default.red(' ╭──────────────────────────────────────────────╮'),
122
+ chalk_1.default.red(' │ ') + chalk_1.default.bold.red('✖ ' + title.padEnd(40)) + chalk_1.default.red(' │'),
123
+ ...(body ?? []).map((b) => chalk_1.default.red(' │ ') + chalk_1.default.dim(b.padEnd(40)) + chalk_1.default.red(' │')),
124
+ chalk_1.default.red(' ╰──────────────────────────────────────────────╯'),
125
+ ];
126
+ return lines.join('\n');
127
+ };
128
+ exports.failure = failure;
129
+ /** Attention frame. */
130
+ const attention = (title, body) => {
131
+ const lines = [
132
+ chalk_1.default.yellow(' ╭──────────────────────────────────────────────╮'),
133
+ chalk_1.default.yellow(' │ ') + chalk_1.default.bold.yellow('⚠ ' + title.padEnd(40)) + chalk_1.default.yellow(' │'),
134
+ ...(body ?? []).map((b) => chalk_1.default.yellow(' │ ') + chalk_1.default.dim(b.padEnd(40)) + chalk_1.default.yellow(' │')),
135
+ chalk_1.default.yellow(' ╰──────────────────────────────────────────────╯'),
136
+ ];
137
+ return lines.join('\n');
138
+ };
139
+ exports.attention = attention;
140
+ /** Small sparkles for completion summaries. */
141
+ const sparkles = () => chalk_1.default.rgb(...PALETTE.amber)('✦') +
142
+ chalk_1.default.rgb(...PALETTE.pink)('✧') +
143
+ chalk_1.default.rgb(...PALETTE.cyan)('✦') +
144
+ chalk_1.default.rgb(...PALETTE.violet)('✧');
145
+ exports.sparkles = sparkles;
146
+ /** Tiny animated-looking rocket for "launching" moments. */
147
+ const rocket = () => `${chalk_1.default.rgb(...PALETTE.amber)('◢')}${chalk_1.default.rgb(...PALETTE.pink)('▬')}${chalk_1.default.rgb(...PALETTE.violet)('▬')}${chalk_1.default.rgb(...PALETTE.cyan)('▶')}`;
148
+ exports.rocket = rocket;
149
+ /** Step badge used in run/plan output: ╭─ 01 ─╮ style. */
150
+ const stepBadge = (index, total) => {
151
+ const n = String(index).padStart(2, '0');
152
+ const t = chalk_1.default.rgb(...PALETTE.muted)(`/${String(total).padStart(2, '0')}`);
153
+ return `${chalk_1.default.rgb(...PALETTE.cyan)('▸')} ${chalk_1.default.bold.rgb(...PALETTE.violet)(n)}${t}`;
154
+ };
155
+ exports.stepBadge = stepBadge;
156
+ /** Colored provider / status pill. */
157
+ const pill = (label, value, tone = 'neutral') => {
158
+ const tones = {
159
+ ok: chalk_1.default.bgRgb(...PALETTE.green).black,
160
+ warn: chalk_1.default.bgRgb(...PALETTE.amber).black,
161
+ err: chalk_1.default.bgRgb(...PALETTE.red).white,
162
+ neutral: chalk_1.default.bgRgb(...PALETTE.dim).white,
163
+ };
164
+ return `${chalk_1.default.rgb(...PALETTE.muted)(label)}${tones[tone](` ${value} `)}`;
165
+ };
166
+ exports.pill = pill;
167
+ /** Compact KV line with aligned keys. */
168
+ const kv = (key, value, keyWidth = 16) => ` ${chalk_1.default.rgb(...PALETTE.muted)(key.padEnd(keyWidth))}${chalk_1.default.white(value)}`;
169
+ exports.kv = kv;
170
+ /** Colored severity tag, e.g., [info] [warning] [error]. */
171
+ const tag = (severity) => {
172
+ const map = {
173
+ info: PALETTE.cyan,
174
+ warning: PALETTE.amber,
175
+ error: PALETTE.red,
176
+ critical: PALETTE.red,
177
+ };
178
+ const [r, g, b] = map[severity];
179
+ return chalk_1.default.rgb(r, g, b).bold(`[${severity}]`);
180
+ };
181
+ exports.tag = tag;
182
+ /** Completion summary, used by `run` at the end of a task. */
183
+ const completionSummary = (title, filesChanged, durationMs, cost) => {
184
+ const lines = [
185
+ (0, exports.divider)('done'),
186
+ '',
187
+ ` ${(0, exports.sparkles)()} ${chalk_1.default.bold(title)}`,
188
+ '',
189
+ (0, exports.kv)('duration', chalk_1.default.rgb(...PALETTE.cyan)(`${(durationMs / 1000).toFixed(1)}s`)),
190
+ (0, exports.kv)('files changed', filesChanged.length
191
+ ? chalk_1.default.rgb(...PALETTE.amber)(String(filesChanged.length))
192
+ : chalk_1.default.dim('0')),
193
+ ];
194
+ if (cost !== undefined && cost > 0) {
195
+ lines.push((0, exports.kv)('model cost', chalk_1.default.rgb(...PALETTE.pink)(`$${cost.toFixed(4)}`)));
196
+ }
197
+ if (filesChanged.length) {
198
+ lines.push('');
199
+ lines.push(chalk_1.default.rgb(...PALETTE.muted)(' files:'));
200
+ for (const f of filesChanged.slice(0, 12)) {
201
+ lines.push(` ${chalk_1.default.rgb(...PALETTE.teal)('▸')} ${chalk_1.default.white(f)}`);
202
+ }
203
+ if (filesChanged.length > 12) {
204
+ lines.push(chalk_1.default.rgb(...PALETTE.muted)(` …and ${filesChanged.length - 12} more`));
205
+ }
206
+ }
207
+ lines.push('');
208
+ return lines.join('\n');
209
+ };
210
+ exports.completionSummary = completionSummary;
211
+ //# sourceMappingURL=banners.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banners.js","sourceRoot":"","sources":["../../src/cli/banners.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B;;;;GAIG;AAEH,MAAM,OAAO,GAAG;IACd,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAA6B;IAChD,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAA6B;IAChD,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAA6B;IAChD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAA6B;IACnD,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAA6B;IACjD,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAA6B;IACjD,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAA6B;IAChD,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAA6B;IAC9C,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAA6B;IAClD,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAA6B;CAC/C,CAAC;AAyNO,0BAAO;AAvNhB,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtF,MAAM,YAAY,GAAG,CACnB,IAAY,EACZ,IAA8B,EAC9B,EAA4B,EACpB,EAAE;IACV,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,IAAI,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CACpB,KAAe,EACf,IAA8B,EAC9B,EAA4B,EAClB,EAAE;IACZ,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,GAAG,GAA6B;YACpC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACxB,CAAC;QACF,OAAO,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE;YAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;SACzB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,8EAA8E;AACvE,MAAM,MAAM,GAAG,GAAW,EAAE;IACjC,MAAM,GAAG,GAAG;QACV,kCAAkC;QAClC,kCAAkC;QAClC,kCAAkC;QAClC,qCAAqC;QACrC,kCAAkC;QAClC,qCAAqC;QACrC,kCAAkC;QAClC,kCAAkC;KACnC,CAAC;IACF,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,8CAA8C,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,eAAK;SACnB,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;SACpB,MAAM,CAAC,+CAA+C,CAAC,CAAC;IAC3D,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,OAAO,IAAI,CAAC;AACpD,CAAC,CAAC;AAjBW,QAAA,MAAM,UAiBjB;AAEF,6DAA6D;AACtD,MAAM,OAAO,GAAG,CAAC,OAAe,EAAU,EAAE;IACjD,MAAM,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,GAAG,IAAA,cAAM,GAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;IACvG,MAAM,IAAI,GACR,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;QACxC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;QAC7C,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC;QACvD,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;QACtC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC;IACP,OAAO,MAAM,GAAG,IAAI,CAAC;AACvB,CAAC,CAAC;AAbW,QAAA,OAAO,WAalB;AAEF,sDAAsD;AAC/C,MAAM,OAAO,GAAG,CAAC,KAAc,EAAU,EAAE;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAChG,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,OAAO,GAAG,UAAU,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;AACxC,CAAC,CAAC;AAVW,QAAA,OAAO,WAUlB;AAEF,iCAAiC;AAC1B,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,KAAK,GAAG,GAAG,EAAU,EAAE;IAC5D,OAAO,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1E,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB;AAEF,qCAAqC;AAC9B,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,IAAe,EAAU,EAAE;IAChE,MAAM,KAAK,GAAG;QACZ,eAAK,CAAC,KAAK,CAAC,qDAAqD,CAAC;QAClE,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACxF,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAC7E;QACD,eAAK,CAAC,KAAK,CAAC,qDAAqD,CAAC;KACnE,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAVW,QAAA,OAAO,WAUlB;AAEF,0BAA0B;AACnB,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,IAAe,EAAU,EAAE;IAChE,MAAM,KAAK,GAAG;QACZ,eAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC;QAChE,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QAClF,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7F,eAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC;KACjE,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AARW,QAAA,OAAO,WAQlB;AAEF,uBAAuB;AAChB,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,IAAe,EAAU,EAAE;IAClE,MAAM,KAAK,GAAG;QACZ,eAAK,CAAC,MAAM,CAAC,qDAAqD,CAAC;QACnE,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3F,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAC/E;QACD,eAAK,CAAC,MAAM,CAAC,qDAAqD,CAAC;KACpE,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAVW,QAAA,SAAS,aAUpB;AAEF,+CAA+C;AACxC,MAAM,QAAQ,GAAG,GAAW,EAAE,CACnC,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;IAChC,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;IAC/B,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;IAC/B,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAJvB,QAAA,QAAQ,YAIe;AAEpC,4DAA4D;AACrD,MAAM,MAAM,GAAG,GAAW,EAAE,CACjC,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AADnI,QAAA,MAAM,UAC6H;AAEhJ,0DAA0D;AACnD,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa,EAAU,EAAE;IAChE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5E,OAAO,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1F,CAAC,CAAC;AAJW,QAAA,SAAS,aAIpB;AAEF,sCAAsC;AAC/B,MAAM,IAAI,GAAG,CAClB,KAAa,EACb,KAAa,EACb,OAA0C,SAAS,EAC3C,EAAE;IACV,MAAM,KAAK,GAA0C;QACnD,EAAE,EAAE,eAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK;QACvC,IAAI,EAAE,eAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK;QACzC,GAAG,EAAE,eAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK;QACtC,OAAO,EAAE,eAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK;KAC3C,CAAC;IACF,OAAO,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;AAC7E,CAAC,CAAC;AAZW,QAAA,IAAI,QAYf;AAEF,yCAAyC;AAClC,MAAM,EAAE,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,QAAQ,GAAG,EAAE,EAAU,EAAE,CACtE,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AADnE,QAAA,EAAE,MACiE;AAEhF,4DAA4D;AACrD,MAAM,GAAG,GAAG,CAAC,QAAmD,EAAU,EAAE;IACjF,MAAM,GAAG,GAA6C;QACpD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,KAAK;QACtB,KAAK,EAAE,OAAO,CAAC,GAAG;QAClB,QAAQ,EAAE,OAAO,CAAC,GAAG;KACtB,CAAC;IACF,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,eAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;AAClD,CAAC,CAAC;AATW,QAAA,GAAG,OASd;AAEF,8DAA8D;AACvD,MAAM,iBAAiB,GAAG,CAC/B,KAAa,EACb,YAAsB,EACtB,UAAkB,EAClB,IAAa,EACL,EAAE;IACV,MAAM,KAAK,GAAG;QACZ,IAAA,eAAO,EAAC,MAAM,CAAC;QACf,EAAE;QACF,KAAK,IAAA,gBAAQ,GAAE,IAAI,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACtC,EAAE;QACF,IAAA,UAAE,EAAC,UAAU,EAAE,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChF,IAAA,UAAE,EACA,eAAe,EACf,YAAY,CAAC,MAAM;YACjB,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC1D,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CACnB;KACF,CAAC;IACF,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAA,UAAE,EAAC,YAAY,EAAE,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,YAAY,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAlCW,QAAA,iBAAiB,qBAkC5B"}
@@ -0,0 +1,2 @@
1
+ export declare const bootstrap: () => void;
2
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/cli/bootstrap.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,SAAS,QAAO,IAQ5B,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bootstrap = void 0;
4
+ const registry_1 = require("../models/registry");
5
+ const init_1 = require("../tools/init");
6
+ const registry_2 = require("../agents/registry");
7
+ const paths_1 = require("../config/paths");
8
+ const loader_1 = require("../config/loader");
9
+ let done = false;
10
+ const bootstrap = () => {
11
+ if (done)
12
+ return;
13
+ (0, paths_1.ensureForgeHome)();
14
+ (0, loader_1.loadGlobalConfig)();
15
+ (0, registry_1.initProviders)();
16
+ (0, init_1.initTools)();
17
+ (0, registry_2.initAgents)();
18
+ done = true;
19
+ };
20
+ exports.bootstrap = bootstrap;
21
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/cli/bootstrap.ts"],"names":[],"mappings":";;;AAAA,iDAAmD;AACnD,wCAA0C;AAC1C,iDAAgD;AAChD,2CAAkD;AAClD,6CAAoD;AAEpD,IAAI,IAAI,GAAG,KAAK,CAAC;AAEV,MAAM,SAAS,GAAG,GAAS,EAAE;IAClC,IAAI,IAAI;QAAE,OAAO;IACjB,IAAA,uBAAe,GAAE,CAAC;IAClB,IAAA,yBAAgB,GAAE,CAAC;IACnB,IAAA,wBAAa,GAAE,CAAC;IAChB,IAAA,gBAAS,GAAE,CAAC;IACZ,IAAA,qBAAU,GAAE,CAAC;IACb,IAAI,GAAG,IAAI,CAAC;AACd,CAAC,CAAC;AARW,QAAA,SAAS,aAQpB"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const bundleCommand: Command;
3
+ //# sourceMappingURL=bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,aAAa,SAEzB,CAAC"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.bundleCommand = void 0;
37
+ const commander_1 = require("commander");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const os = __importStar(require("os"));
41
+ const child_process_1 = require("child_process");
42
+ const bootstrap_1 = require("../bootstrap");
43
+ const ui_1 = require("../ui");
44
+ exports.bundleCommand = new commander_1.Command('bundle').description('Offline bundle (air-gapped install).');
45
+ exports.bundleCommand
46
+ .command('create')
47
+ .description('Create a Forge bundle tarball.')
48
+ .option('--output <path>', 'destination directory', path.join(os.tmpdir(), 'forge-bundle'))
49
+ .action((opts) => {
50
+ (0, bootstrap_1.bootstrap)();
51
+ const outDir = opts.output;
52
+ fs.mkdirSync(outDir, { recursive: true });
53
+ const script = path.join(__dirname, '..', '..', '..', 'scripts', 'bundle.js');
54
+ const res = (0, child_process_1.spawnSync)(process.execPath, [script, outDir], { stdio: 'inherit' });
55
+ if (res.status !== 0) {
56
+ (0, ui_1.err)('Bundle creation failed.');
57
+ return;
58
+ }
59
+ (0, ui_1.ok)(`Bundle written to ${outDir}/forge-bundle.tar.gz`);
60
+ });
61
+ exports.bundleCommand
62
+ .command('install <bundle>')
63
+ .description('Install a Forge bundle tarball.')
64
+ .option('--prefix <path>', 'install prefix', path.join(os.homedir(), '.forge', 'bundle'))
65
+ .action((bundle, opts) => {
66
+ (0, bootstrap_1.bootstrap)();
67
+ if (!fs.existsSync(bundle)) {
68
+ (0, ui_1.err)(`Bundle not found: ${bundle}`);
69
+ return;
70
+ }
71
+ const prefix = opts.prefix;
72
+ fs.mkdirSync(prefix, { recursive: true });
73
+ const res = (0, child_process_1.spawnSync)('tar', ['-xzf', bundle, '-C', prefix], { stdio: 'inherit' });
74
+ if (res.status !== 0) {
75
+ (0, ui_1.err)('Bundle extraction failed.');
76
+ return;
77
+ }
78
+ (0, ui_1.info)(`Bundle installed at ${prefix}. Add \`${prefix}/bin\` to your PATH if not already.`);
79
+ });
80
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../src/cli/commands/bundle.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,iDAA0C;AAC1C,4CAAyC;AACzC,8BAAsC;AAEzB,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAC5D,sCAAsC,CACvC,CAAC;AAEF,qBAAa;KACV,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;KAC1F,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACf,IAAA,qBAAS,GAAE,CAAC;IACZ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;IACrC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,IAAA,yBAAS,EAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,IAAA,QAAG,EAAC,yBAAyB,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,IAAA,OAAE,EAAC,qBAAqB,MAAM,sBAAsB,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEL,qBAAa;KACV,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;KACxF,MAAM,CAAC,CAAC,MAAc,EAAE,IAAI,EAAE,EAAE;IAC/B,IAAA,qBAAS,GAAE,CAAC;IACZ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAA,QAAG,EAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;IACrC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACnF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,IAAA,QAAG,EAAC,2BAA2B,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IACD,IAAA,SAAI,EAAC,uBAAuB,MAAM,WAAW,MAAM,qCAAqC,CAAC,CAAC;AAC5F,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const changelogCommand: Command;
3
+ //# sourceMappingURL=changelog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/changelog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,gBAAgB,SAiBzB,CAAC"}