agent-nuvira 1.14.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 (379) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +891 -0
  3. package/dist/agent-sdk/src/agent.d.ts +118 -0
  4. package/dist/agent-sdk/src/agent.d.ts.map +1 -0
  5. package/dist/agent-sdk/src/agent.js +88 -0
  6. package/dist/agent-sdk/src/agent.js.map +1 -0
  7. package/dist/agent-sdk/src/index.d.ts +33 -0
  8. package/dist/agent-sdk/src/index.d.ts.map +1 -0
  9. package/dist/agent-sdk/src/index.js +32 -0
  10. package/dist/agent-sdk/src/index.js.map +1 -0
  11. package/dist/agent-sdk/src/register.d.ts +70 -0
  12. package/dist/agent-sdk/src/register.d.ts.map +1 -0
  13. package/dist/agent-sdk/src/register.js +181 -0
  14. package/dist/agent-sdk/src/register.js.map +1 -0
  15. package/dist/agent-sdk/src/scaffold.d.ts +50 -0
  16. package/dist/agent-sdk/src/scaffold.d.ts.map +1 -0
  17. package/dist/agent-sdk/src/scaffold.js +291 -0
  18. package/dist/agent-sdk/src/scaffold.js.map +1 -0
  19. package/dist/agent-sdk/src/testing.d.ts +187 -0
  20. package/dist/agent-sdk/src/testing.d.ts.map +1 -0
  21. package/dist/agent-sdk/src/testing.js +243 -0
  22. package/dist/agent-sdk/src/testing.js.map +1 -0
  23. package/dist/agent-sdk/src/types.d.ts +202 -0
  24. package/dist/agent-sdk/src/types.d.ts.map +1 -0
  25. package/dist/agent-sdk/src/types.js +11 -0
  26. package/dist/agent-sdk/src/types.js.map +1 -0
  27. package/dist/agents/agent.d.ts +132 -0
  28. package/dist/agents/agent.d.ts.map +1 -0
  29. package/dist/agents/agent.js +19 -0
  30. package/dist/agents/agent.js.map +1 -0
  31. package/dist/agents/agents/context-gatherer.d.ts +42 -0
  32. package/dist/agents/agents/context-gatherer.d.ts.map +1 -0
  33. package/dist/agents/agents/context-gatherer.js +366 -0
  34. package/dist/agents/agents/context-gatherer.js.map +1 -0
  35. package/dist/agents/agents/debugger.d.ts +58 -0
  36. package/dist/agents/agents/debugger.d.ts.map +1 -0
  37. package/dist/agents/agents/debugger.js +257 -0
  38. package/dist/agents/agents/debugger.js.map +1 -0
  39. package/dist/agents/agents/git-agent.d.ts +34 -0
  40. package/dist/agents/agents/git-agent.d.ts.map +1 -0
  41. package/dist/agents/agents/git-agent.js +200 -0
  42. package/dist/agents/agents/git-agent.js.map +1 -0
  43. package/dist/agents/agents/github-release-agent.d.ts +65 -0
  44. package/dist/agents/agents/github-release-agent.d.ts.map +1 -0
  45. package/dist/agents/agents/github-release-agent.js +439 -0
  46. package/dist/agents/agents/github-release-agent.js.map +1 -0
  47. package/dist/agents/agents/package-agent.d.ts +33 -0
  48. package/dist/agents/agents/package-agent.d.ts.map +1 -0
  49. package/dist/agents/agents/package-agent.js +233 -0
  50. package/dist/agents/agents/package-agent.js.map +1 -0
  51. package/dist/agents/agents/planner.d.ts +26 -0
  52. package/dist/agents/agents/planner.d.ts.map +1 -0
  53. package/dist/agents/agents/planner.js +222 -0
  54. package/dist/agents/agents/planner.js.map +1 -0
  55. package/dist/agents/agents/reviewer.d.ts +34 -0
  56. package/dist/agents/agents/reviewer.d.ts.map +1 -0
  57. package/dist/agents/agents/reviewer.js +159 -0
  58. package/dist/agents/agents/reviewer.js.map +1 -0
  59. package/dist/agents/agents/runner.d.ts +73 -0
  60. package/dist/agents/agents/runner.d.ts.map +1 -0
  61. package/dist/agents/agents/runner.js +299 -0
  62. package/dist/agents/agents/runner.js.map +1 -0
  63. package/dist/agents/agents/security-agent.d.ts +33 -0
  64. package/dist/agents/agents/security-agent.d.ts.map +1 -0
  65. package/dist/agents/agents/security-agent.js +184 -0
  66. package/dist/agents/agents/security-agent.js.map +1 -0
  67. package/dist/agents/agents/tester.d.ts +96 -0
  68. package/dist/agents/agents/tester.d.ts.map +1 -0
  69. package/dist/agents/agents/tester.js +410 -0
  70. package/dist/agents/agents/tester.js.map +1 -0
  71. package/dist/agents/agents/writer.d.ts +51 -0
  72. package/dist/agents/agents/writer.d.ts.map +1 -0
  73. package/dist/agents/agents/writer.js +384 -0
  74. package/dist/agents/agents/writer.js.map +1 -0
  75. package/dist/agents/context-vault.d.ts +49 -0
  76. package/dist/agents/context-vault.d.ts.map +1 -0
  77. package/dist/agents/context-vault.js +134 -0
  78. package/dist/agents/context-vault.js.map +1 -0
  79. package/dist/agents/orchestrator.d.ts +97 -0
  80. package/dist/agents/orchestrator.d.ts.map +1 -0
  81. package/dist/agents/orchestrator.js +696 -0
  82. package/dist/agents/orchestrator.js.map +1 -0
  83. package/dist/agents/utils/file-tree.d.ts +28 -0
  84. package/dist/agents/utils/file-tree.d.ts.map +1 -0
  85. package/dist/agents/utils/file-tree.js +93 -0
  86. package/dist/agents/utils/file-tree.js.map +1 -0
  87. package/dist/cli/agent.d.ts +25 -0
  88. package/dist/cli/agent.d.ts.map +1 -0
  89. package/dist/cli/agent.js +374 -0
  90. package/dist/cli/agent.js.map +1 -0
  91. package/dist/cli/benchmark.d.ts +24 -0
  92. package/dist/cli/benchmark.d.ts.map +1 -0
  93. package/dist/cli/benchmark.js +235 -0
  94. package/dist/cli/benchmark.js.map +1 -0
  95. package/dist/cli/cache.d.ts +12 -0
  96. package/dist/cli/cache.d.ts.map +1 -0
  97. package/dist/cli/cache.js +58 -0
  98. package/dist/cli/cache.js.map +1 -0
  99. package/dist/cli/chat.d.ts +37 -0
  100. package/dist/cli/chat.d.ts.map +1 -0
  101. package/dist/cli/chat.js +393 -0
  102. package/dist/cli/chat.js.map +1 -0
  103. package/dist/cli/commands.d.ts +24 -0
  104. package/dist/cli/commands.d.ts.map +1 -0
  105. package/dist/cli/commands.js +18 -0
  106. package/dist/cli/commands.js.map +1 -0
  107. package/dist/cli/config.d.ts +19 -0
  108. package/dist/cli/config.d.ts.map +1 -0
  109. package/dist/cli/config.js +162 -0
  110. package/dist/cli/config.js.map +1 -0
  111. package/dist/cli/dashboard.d.ts +34 -0
  112. package/dist/cli/dashboard.d.ts.map +1 -0
  113. package/dist/cli/dashboard.js +126 -0
  114. package/dist/cli/dashboard.js.map +1 -0
  115. package/dist/cli/doctor.d.ts +68 -0
  116. package/dist/cli/doctor.d.ts.map +1 -0
  117. package/dist/cli/doctor.js +585 -0
  118. package/dist/cli/doctor.js.map +1 -0
  119. package/dist/cli/edit.d.ts +11 -0
  120. package/dist/cli/edit.d.ts.map +1 -0
  121. package/dist/cli/edit.js +86 -0
  122. package/dist/cli/edit.js.map +1 -0
  123. package/dist/cli/execute.d.ts +25 -0
  124. package/dist/cli/execute.d.ts.map +1 -0
  125. package/dist/cli/execute.js +186 -0
  126. package/dist/cli/execute.js.map +1 -0
  127. package/dist/cli/federation.d.ts +31 -0
  128. package/dist/cli/federation.d.ts.map +1 -0
  129. package/dist/cli/federation.js +387 -0
  130. package/dist/cli/federation.js.map +1 -0
  131. package/dist/cli/history.d.ts +22 -0
  132. package/dist/cli/history.d.ts.map +1 -0
  133. package/dist/cli/history.js +140 -0
  134. package/dist/cli/history.js.map +1 -0
  135. package/dist/cli/init.d.ts +49 -0
  136. package/dist/cli/init.d.ts.map +1 -0
  137. package/dist/cli/init.js +423 -0
  138. package/dist/cli/init.js.map +1 -0
  139. package/dist/cli/learn.d.ts +31 -0
  140. package/dist/cli/learn.d.ts.map +1 -0
  141. package/dist/cli/learn.js +320 -0
  142. package/dist/cli/learn.js.map +1 -0
  143. package/dist/cli/memory.d.ts +38 -0
  144. package/dist/cli/memory.d.ts.map +1 -0
  145. package/dist/cli/memory.js +295 -0
  146. package/dist/cli/memory.js.map +1 -0
  147. package/dist/cli/model-picker.d.ts +18 -0
  148. package/dist/cli/model-picker.d.ts.map +1 -0
  149. package/dist/cli/model-picker.js +225 -0
  150. package/dist/cli/model-picker.js.map +1 -0
  151. package/dist/cli/models.d.ts +11 -0
  152. package/dist/cli/models.d.ts.map +1 -0
  153. package/dist/cli/models.js +132 -0
  154. package/dist/cli/models.js.map +1 -0
  155. package/dist/cli/plan.d.ts +11 -0
  156. package/dist/cli/plan.d.ts.map +1 -0
  157. package/dist/cli/plan.js +94 -0
  158. package/dist/cli/plan.js.map +1 -0
  159. package/dist/cli/plugins.d.ts +15 -0
  160. package/dist/cli/plugins.d.ts.map +1 -0
  161. package/dist/cli/plugins.js +123 -0
  162. package/dist/cli/plugins.js.map +1 -0
  163. package/dist/cli/router.d.ts +20 -0
  164. package/dist/cli/router.d.ts.map +1 -0
  165. package/dist/cli/router.js +142 -0
  166. package/dist/cli/router.js.map +1 -0
  167. package/dist/cli/run.d.ts +22 -0
  168. package/dist/cli/run.d.ts.map +1 -0
  169. package/dist/cli/run.js +110 -0
  170. package/dist/cli/run.js.map +1 -0
  171. package/dist/cli/sandbox.d.ts +27 -0
  172. package/dist/cli/sandbox.d.ts.map +1 -0
  173. package/dist/cli/sandbox.js +264 -0
  174. package/dist/cli/sandbox.js.map +1 -0
  175. package/dist/cli/sdk.d.ts +27 -0
  176. package/dist/cli/sdk.d.ts.map +1 -0
  177. package/dist/cli/sdk.js +204 -0
  178. package/dist/cli/sdk.js.map +1 -0
  179. package/dist/cli/stats.d.ts +18 -0
  180. package/dist/cli/stats.d.ts.map +1 -0
  181. package/dist/cli/stats.js +78 -0
  182. package/dist/cli/stats.js.map +1 -0
  183. package/dist/cli/team.d.ts +42 -0
  184. package/dist/cli/team.d.ts.map +1 -0
  185. package/dist/cli/team.js +473 -0
  186. package/dist/cli/team.js.map +1 -0
  187. package/dist/cli/workflow.d.ts +27 -0
  188. package/dist/cli/workflow.d.ts.map +1 -0
  189. package/dist/cli/workflow.js +347 -0
  190. package/dist/cli/workflow.js.map +1 -0
  191. package/dist/config/manager.d.ts +37 -0
  192. package/dist/config/manager.d.ts.map +1 -0
  193. package/dist/config/manager.js +147 -0
  194. package/dist/config/manager.js.map +1 -0
  195. package/dist/config/types.d.ts +53 -0
  196. package/dist/config/types.d.ts.map +1 -0
  197. package/dist/config/types.js +2 -0
  198. package/dist/config/types.js.map +1 -0
  199. package/dist/context/cache.d.ts +27 -0
  200. package/dist/context/cache.d.ts.map +1 -0
  201. package/dist/context/cache.js +116 -0
  202. package/dist/context/cache.js.map +1 -0
  203. package/dist/context/history.d.ts +87 -0
  204. package/dist/context/history.d.ts.map +1 -0
  205. package/dist/context/history.js +249 -0
  206. package/dist/context/history.js.map +1 -0
  207. package/dist/context/parser.d.ts +61 -0
  208. package/dist/context/parser.d.ts.map +1 -0
  209. package/dist/context/parser.js +194 -0
  210. package/dist/context/parser.js.map +1 -0
  211. package/dist/federation/client.d.ts +49 -0
  212. package/dist/federation/client.d.ts.map +1 -0
  213. package/dist/federation/client.js +239 -0
  214. package/dist/federation/client.js.map +1 -0
  215. package/dist/federation/protocol.d.ts +155 -0
  216. package/dist/federation/protocol.d.ts.map +1 -0
  217. package/dist/federation/protocol.js +57 -0
  218. package/dist/federation/protocol.js.map +1 -0
  219. package/dist/federation/server.d.ts +25 -0
  220. package/dist/federation/server.d.ts.map +1 -0
  221. package/dist/federation/server.js +401 -0
  222. package/dist/federation/server.js.map +1 -0
  223. package/dist/index.d.ts +67 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +93 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/inference/factory.d.ts +20 -0
  228. package/dist/inference/factory.d.ts.map +1 -0
  229. package/dist/inference/factory.js +46 -0
  230. package/dist/inference/factory.js.map +1 -0
  231. package/dist/inference/gemini-adapter.d.ts +17 -0
  232. package/dist/inference/gemini-adapter.d.ts.map +1 -0
  233. package/dist/inference/gemini-adapter.js +176 -0
  234. package/dist/inference/gemini-adapter.js.map +1 -0
  235. package/dist/inference/groq-adapter.d.ts +17 -0
  236. package/dist/inference/groq-adapter.d.ts.map +1 -0
  237. package/dist/inference/groq-adapter.js +103 -0
  238. package/dist/inference/groq-adapter.js.map +1 -0
  239. package/dist/inference/interface.d.ts +49 -0
  240. package/dist/inference/interface.d.ts.map +1 -0
  241. package/dist/inference/interface.js +2 -0
  242. package/dist/inference/interface.js.map +1 -0
  243. package/dist/inference/local-adapter.d.ts +35 -0
  244. package/dist/inference/local-adapter.d.ts.map +1 -0
  245. package/dist/inference/local-adapter.js +311 -0
  246. package/dist/inference/local-adapter.js.map +1 -0
  247. package/dist/inference/model-catalog.d.ts +53 -0
  248. package/dist/inference/model-catalog.d.ts.map +1 -0
  249. package/dist/inference/model-catalog.js +306 -0
  250. package/dist/inference/model-catalog.js.map +1 -0
  251. package/dist/inference/nim-adapter.d.ts +17 -0
  252. package/dist/inference/nim-adapter.d.ts.map +1 -0
  253. package/dist/inference/nim-adapter.js +103 -0
  254. package/dist/inference/nim-adapter.js.map +1 -0
  255. package/dist/inference/openrouter-adapter.d.ts +17 -0
  256. package/dist/inference/openrouter-adapter.d.ts.map +1 -0
  257. package/dist/inference/openrouter-adapter.js +105 -0
  258. package/dist/inference/openrouter-adapter.js.map +1 -0
  259. package/dist/inference/sse.d.ts +20 -0
  260. package/dist/inference/sse.d.ts.map +1 -0
  261. package/dist/inference/sse.js +91 -0
  262. package/dist/inference/sse.js.map +1 -0
  263. package/dist/learning/agent-stats.d.ts +109 -0
  264. package/dist/learning/agent-stats.d.ts.map +1 -0
  265. package/dist/learning/agent-stats.js +240 -0
  266. package/dist/learning/agent-stats.js.map +1 -0
  267. package/dist/learning/benchmark.d.ts +161 -0
  268. package/dist/learning/benchmark.d.ts.map +1 -0
  269. package/dist/learning/benchmark.js +589 -0
  270. package/dist/learning/benchmark.js.map +1 -0
  271. package/dist/learning/cost-tracker.d.ts +101 -0
  272. package/dist/learning/cost-tracker.d.ts.map +1 -0
  273. package/dist/learning/cost-tracker.js +224 -0
  274. package/dist/learning/cost-tracker.js.map +1 -0
  275. package/dist/learning/feedback.d.ts +88 -0
  276. package/dist/learning/feedback.d.ts.map +1 -0
  277. package/dist/learning/feedback.js +169 -0
  278. package/dist/learning/feedback.js.map +1 -0
  279. package/dist/learning/hybrid-router.d.ts +201 -0
  280. package/dist/learning/hybrid-router.d.ts.map +1 -0
  281. package/dist/learning/hybrid-router.js +450 -0
  282. package/dist/learning/hybrid-router.js.map +1 -0
  283. package/dist/learning/model-compare.d.ts +76 -0
  284. package/dist/learning/model-compare.d.ts.map +1 -0
  285. package/dist/learning/model-compare.js +252 -0
  286. package/dist/learning/model-compare.js.map +1 -0
  287. package/dist/learning/model-router.d.ts +68 -0
  288. package/dist/learning/model-router.d.ts.map +1 -0
  289. package/dist/learning/model-router.js +140 -0
  290. package/dist/learning/model-router.js.map +1 -0
  291. package/dist/learning/pattern-extractor.d.ts +99 -0
  292. package/dist/learning/pattern-extractor.d.ts.map +1 -0
  293. package/dist/learning/pattern-extractor.js +310 -0
  294. package/dist/learning/pattern-extractor.js.map +1 -0
  295. package/dist/learning/scorer.d.ts +51 -0
  296. package/dist/learning/scorer.d.ts.map +1 -0
  297. package/dist/learning/scorer.js +64 -0
  298. package/dist/learning/scorer.js.map +1 -0
  299. package/dist/learning/self-improver.d.ts +48 -0
  300. package/dist/learning/self-improver.d.ts.map +1 -0
  301. package/dist/learning/self-improver.js +161 -0
  302. package/dist/learning/self-improver.js.map +1 -0
  303. package/dist/memory/embedder.d.ts +65 -0
  304. package/dist/memory/embedder.d.ts.map +1 -0
  305. package/dist/memory/embedder.js +424 -0
  306. package/dist/memory/embedder.js.map +1 -0
  307. package/dist/memory/memory-integration.d.ts +56 -0
  308. package/dist/memory/memory-integration.d.ts.map +1 -0
  309. package/dist/memory/memory-integration.js +95 -0
  310. package/dist/memory/memory-integration.js.map +1 -0
  311. package/dist/memory/trajectory-store.d.ts +149 -0
  312. package/dist/memory/trajectory-store.d.ts.map +1 -0
  313. package/dist/memory/trajectory-store.js +476 -0
  314. package/dist/memory/trajectory-store.js.map +1 -0
  315. package/dist/memory/vector-store.d.ts +78 -0
  316. package/dist/memory/vector-store.d.ts.map +1 -0
  317. package/dist/memory/vector-store.js +186 -0
  318. package/dist/memory/vector-store.js.map +1 -0
  319. package/dist/plugins/agent-plugin.d.ts +73 -0
  320. package/dist/plugins/agent-plugin.d.ts.map +1 -0
  321. package/dist/plugins/agent-plugin.js +199 -0
  322. package/dist/plugins/agent-plugin.js.map +1 -0
  323. package/dist/plugins/registry.d.ts +61 -0
  324. package/dist/plugins/registry.d.ts.map +1 -0
  325. package/dist/plugins/registry.js +67 -0
  326. package/dist/plugins/registry.js.map +1 -0
  327. package/dist/sandbox/images.d.ts +31 -0
  328. package/dist/sandbox/images.d.ts.map +1 -0
  329. package/dist/sandbox/images.js +129 -0
  330. package/dist/sandbox/images.js.map +1 -0
  331. package/dist/sandbox/manager.d.ts +134 -0
  332. package/dist/sandbox/manager.d.ts.map +1 -0
  333. package/dist/sandbox/manager.js +470 -0
  334. package/dist/sandbox/manager.js.map +1 -0
  335. package/dist/sandbox/types.d.ts +113 -0
  336. package/dist/sandbox/types.d.ts.map +1 -0
  337. package/dist/sandbox/types.js +107 -0
  338. package/dist/sandbox/types.js.map +1 -0
  339. package/dist/security/scanner.d.ts +53 -0
  340. package/dist/security/scanner.d.ts.map +1 -0
  341. package/dist/security/scanner.js +271 -0
  342. package/dist/security/scanner.js.map +1 -0
  343. package/dist/team/config.d.ts +50 -0
  344. package/dist/team/config.d.ts.map +1 -0
  345. package/dist/team/config.js +108 -0
  346. package/dist/team/config.js.map +1 -0
  347. package/dist/team/memory.d.ts +63 -0
  348. package/dist/team/memory.d.ts.map +1 -0
  349. package/dist/team/memory.js +282 -0
  350. package/dist/team/memory.js.map +1 -0
  351. package/dist/team/review.d.ts +123 -0
  352. package/dist/team/review.d.ts.map +1 -0
  353. package/dist/team/review.js +293 -0
  354. package/dist/team/review.js.map +1 -0
  355. package/dist/utils/env.d.ts +19 -0
  356. package/dist/utils/env.d.ts.map +1 -0
  357. package/dist/utils/env.js +250 -0
  358. package/dist/utils/env.js.map +1 -0
  359. package/dist/utils/logger.d.ts +11 -0
  360. package/dist/utils/logger.d.ts.map +1 -0
  361. package/dist/utils/logger.js +45 -0
  362. package/dist/utils/logger.js.map +1 -0
  363. package/dist/web-dashboard/server.d.ts +59 -0
  364. package/dist/web-dashboard/server.d.ts.map +1 -0
  365. package/dist/web-dashboard/server.js +418 -0
  366. package/dist/web-dashboard/server.js.map +1 -0
  367. package/dist/workflow/registry.d.ts +127 -0
  368. package/dist/workflow/registry.d.ts.map +1 -0
  369. package/dist/workflow/registry.js +482 -0
  370. package/dist/workflow/registry.js.map +1 -0
  371. package/dist/workflow/templates.d.ts +93 -0
  372. package/dist/workflow/templates.d.ts.map +1 -0
  373. package/dist/workflow/templates.js +481 -0
  374. package/dist/workflow/templates.js.map +1 -0
  375. package/package.json +78 -0
  376. package/src/web-dashboard/public/assets/index-B08nDkSB.css +1 -0
  377. package/src/web-dashboard/public/assets/index-BKL8YOFD.js +135 -0
  378. package/src/web-dashboard/public/assets/index-BKL8YOFD.js.map +1 -0
  379. package/src/web-dashboard/public/index.html +13 -0
@@ -0,0 +1,481 @@
1
+ /**
2
+ * Workflow Templates — Pre-built agent pipeline templates.
3
+ *
4
+ * Each template defines a sequence of agent steps for common tasks.
5
+ * The WorkflowEngine uses these to pre-fill the orchestrator's task plan,
6
+ * bypassing the PlannerAgent when a fixed workflow is desired.
7
+ *
8
+ * Built-in templates:
9
+ * - quick-fix: gather context → edit → run → review (small, fast changes)
10
+ * - feature-implement: plan → gather → write → test → review (new features)
11
+ * - create-and-run: write → run → review (create from scratch + execute)
12
+ * - publish-release: test → build → version → publish (release pipeline)
13
+ */
14
+ // ─── Built-in Templates ─────────────────────────────────────────────────────
15
+ const BUILTIN_TEMPLATES = [
16
+ {
17
+ id: 'quick-fix',
18
+ name: 'Quick Fix',
19
+ description: 'Fast context gather \u2192 edit \u2192 run test \u2192 review for small changes (bug fixes, typos, simple edits)',
20
+ steps: [
21
+ {
22
+ agentType: 'context-gatherer',
23
+ description: 'Scan codebase to find relevant files for the fix',
24
+ dependsOn: [],
25
+ },
26
+ {
27
+ agentType: 'writer',
28
+ description: 'Apply the fix based on gathered context',
29
+ dependsOn: ['step-0'],
30
+ },
31
+ {
32
+ agentType: 'runner',
33
+ description: 'Run: npm test (or equivalent verification command) to verify the fix',
34
+ dependsOn: ['step-1'],
35
+ },
36
+ {
37
+ agentType: 'reviewer',
38
+ description: 'Review the fix for correctness and quality',
39
+ dependsOn: ['step-2'],
40
+ },
41
+ {
42
+ agentType: 'security',
43
+ description: 'Run all security scans on changes',
44
+ dependsOn: ['step-3'],
45
+ },
46
+ ],
47
+ recommendedModels: {
48
+ 'context-gatherer': 'groq/llama-3.1-8b-instant',
49
+ writer: 'groq/llama-3.1-8b-instant',
50
+ reviewer: 'groq/llama-3.1-8b-instant',
51
+ },
52
+ },
53
+ {
54
+ id: 'create-and-run',
55
+ name: 'Create & Run',
56
+ description: 'Create a new program/script from scratch, execute it, and show output — perfect for prototyping and scaffolding',
57
+ steps: [
58
+ {
59
+ agentType: 'writer',
60
+ description: 'Create the program files from scratch based on the goal',
61
+ dependsOn: [],
62
+ },
63
+ {
64
+ agentType: 'runner',
65
+ description: 'Run the newly created program and capture output',
66
+ dependsOn: ['step-0'],
67
+ },
68
+ {
69
+ agentType: 'reviewer',
70
+ description: 'Review the code quality and correctness of output',
71
+ dependsOn: ['step-1'],
72
+ },
73
+ ],
74
+ recommendedModels: {
75
+ writer: 'groq/llama-3.1-8b-instant',
76
+ },
77
+ },
78
+ {
79
+ id: 'feature-implement',
80
+ name: 'Feature Implementation',
81
+ description: 'Full feature workflow: plan \u2192 gather \u2192 write \u2192 test \u2192 run \u2192 review',
82
+ steps: [
83
+ {
84
+ agentType: 'planner',
85
+ description: 'Analyze the goal and create an implementation plan',
86
+ dependsOn: [],
87
+ },
88
+ {
89
+ agentType: 'context-gatherer',
90
+ description: 'Gather relevant files and context for the feature',
91
+ dependsOn: ['step-0'],
92
+ },
93
+ {
94
+ agentType: 'writer',
95
+ description: 'Implement the feature code changes',
96
+ dependsOn: ['step-1'],
97
+ },
98
+ {
99
+ agentType: 'tester',
100
+ description: 'Run tests to verify the implementation',
101
+ dependsOn: ['step-2'],
102
+ },
103
+ {
104
+ agentType: 'runner',
105
+ description: 'Run the application to verify it starts correctly',
106
+ dependsOn: ['step-2'],
107
+ },
108
+ {
109
+ agentType: 'reviewer',
110
+ description: 'Review the implementation for quality and completeness',
111
+ dependsOn: ['step-2'],
112
+ },
113
+ {
114
+ agentType: 'security',
115
+ description: 'Run all security scans on changes',
116
+ dependsOn: ['step-5'],
117
+ },
118
+ ],
119
+ recommendedModels: {
120
+ planner: 'groq/llama-3.1-8b-instant',
121
+ 'context-gatherer': 'groq/llama-3.1-8b-instant',
122
+ writer: 'groq/llama-3.1-8b-instant',
123
+ tester: 'groq/llama-3.1-8b-instant',
124
+ reviewer: 'groq/llama-3.1-8b-instant',
125
+ },
126
+ useMemory: true,
127
+ },
128
+ {
129
+ id: 'publish-release',
130
+ name: 'Publish Release',
131
+ description: 'Full release pipeline: test \u2192 version bump \u2192 review \u2192 commit \u2192 build&publish \u2192 github release',
132
+ steps: [
133
+ {
134
+ agentType: 'tester',
135
+ description: 'Run the full test suite to verify the codebase is healthy',
136
+ dependsOn: [],
137
+ },
138
+ {
139
+ agentType: 'writer',
140
+ description: 'Bump version number in package.json and update changelog',
141
+ dependsOn: ['step-0'],
142
+ },
143
+ {
144
+ agentType: 'reviewer',
145
+ description: 'Review version bump and changelog for correctness',
146
+ dependsOn: ['step-1'],
147
+ },
148
+ {
149
+ agentType: 'security',
150
+ description: 'Run all security scans on changes before committing',
151
+ dependsOn: ['step-2'],
152
+ },
153
+ {
154
+ agentType: 'git',
155
+ description: 'Commit the version bump and changelog changes to git',
156
+ dependsOn: ['step-3'],
157
+ },
158
+ {
159
+ agentType: 'package',
160
+ description: 'Build project and publish to npm',
161
+ dependsOn: ['step-4'],
162
+ },
163
+ {
164
+ agentType: 'github-release',
165
+ description: 'Create git tag and GitHub release with auto-generated notes',
166
+ dependsOn: ['step-5'],
167
+ },
168
+ ],
169
+ recommendedModels: {
170
+ writer: 'groq/llama-3.1-8b-instant',
171
+ reviewer: 'groq/llama-3.1-8b-instant',
172
+ },
173
+ useMemory: false,
174
+ tags: ['release', 'publish', 'devops'],
175
+ },
176
+ {
177
+ id: 'api-scaffold',
178
+ name: 'API Scaffold',
179
+ description: 'Scaffold a REST API project: create routes, controllers, models, and middleware from a specification',
180
+ steps: [
181
+ {
182
+ agentType: 'planner',
183
+ description: 'Analyze the API specification and design the architecture',
184
+ dependsOn: [],
185
+ },
186
+ {
187
+ agentType: 'context-gatherer',
188
+ description: 'Scan existing project structure to understand conventions',
189
+ dependsOn: ['step-0'],
190
+ },
191
+ {
192
+ agentType: 'writer',
193
+ description: 'Create routes, controllers, models, and middleware files',
194
+ dependsOn: ['step-1'],
195
+ },
196
+ {
197
+ agentType: 'runner',
198
+ description: 'Run: npm run lint (or equivalent) to verify code quality',
199
+ dependsOn: ['step-2'],
200
+ },
201
+ {
202
+ agentType: 'tester',
203
+ description: 'Generate and run basic endpoint tests',
204
+ dependsOn: ['step-3'],
205
+ },
206
+ {
207
+ agentType: 'reviewer',
208
+ description: 'Review the API implementation for correctness and consistency',
209
+ dependsOn: ['step-4'],
210
+ },
211
+ ],
212
+ recommendedModels: {
213
+ planner: 'groq/llama-3.1-8b-instant',
214
+ 'context-gatherer': 'groq/llama-3.1-8b-instant',
215
+ writer: 'groq/llama-3.1-8b-instant',
216
+ reviewer: 'groq/llama-3.1-8b-instant',
217
+ },
218
+ useMemory: true,
219
+ tags: ['api', 'scaffold', 'rest', 'backend'],
220
+ },
221
+ // ── New Templates (Phase 2.2) ────────────────────────────────────────────
222
+ {
223
+ id: 'security-audit',
224
+ name: 'Security Audit',
225
+ description: 'Run security scans, review dependencies for vulnerabilities, and generate a security report',
226
+ steps: [
227
+ {
228
+ agentType: 'context-gatherer',
229
+ description: 'Scan codebase and identify all dependencies and entry points',
230
+ dependsOn: [],
231
+ },
232
+ {
233
+ agentType: 'security',
234
+ description: 'Run all security scans (injection, PII, dangerous code)',
235
+ dependsOn: ['step-0'],
236
+ },
237
+ {
238
+ agentType: 'writer',
239
+ description: 'Generate a comprehensive security report',
240
+ dependsOn: ['step-1'],
241
+ },
242
+ {
243
+ agentType: 'reviewer',
244
+ description: 'Review security findings and prioritize fixes',
245
+ dependsOn: ['step-2'],
246
+ },
247
+ ],
248
+ recommendedModels: {
249
+ 'context-gatherer': 'groq/llama-3.1-8b-instant',
250
+ writer: 'groq/llama-3.1-8b-instant',
251
+ reviewer: 'openrouter/meta-llama/llama-3.1-8b-instruct',
252
+ },
253
+ useMemory: false,
254
+ tags: ['security', 'audit', 'scan'],
255
+ },
256
+ {
257
+ id: 'refactor-module',
258
+ name: 'Refactor Module',
259
+ description: 'Plan and execute a module-level refactor with testing and verification',
260
+ steps: [
261
+ {
262
+ agentType: 'planner',
263
+ description: 'Analyze the module and create refactoring plan',
264
+ dependsOn: [],
265
+ },
266
+ {
267
+ agentType: 'context-gatherer',
268
+ description: 'Find all files that import or depend on the module',
269
+ dependsOn: ['step-0'],
270
+ },
271
+ {
272
+ agentType: 'writer',
273
+ description: 'Execute the refactoring changes across all files',
274
+ dependsOn: ['step-1'],
275
+ },
276
+ {
277
+ agentType: 'runner',
278
+ description: 'Run: npm test (or equivalent) to verify nothing is broken',
279
+ dependsOn: ['step-2'],
280
+ },
281
+ {
282
+ agentType: 'tester',
283
+ description: 'Run full test suite to ensure refactor is safe',
284
+ dependsOn: ['step-3'],
285
+ },
286
+ {
287
+ agentType: 'reviewer',
288
+ description: 'Review refactoring for correctness and style',
289
+ dependsOn: ['step-4'],
290
+ },
291
+ ],
292
+ recommendedModels: {
293
+ planner: 'gemini-2.0-flash-exp',
294
+ writer: 'groq/llama-3.1-8b-instant',
295
+ reviewer: 'groq/llama-3.1-8b-instant',
296
+ },
297
+ useMemory: true,
298
+ tags: ['refactor', 'cleanup', 'optimize'],
299
+ },
300
+ {
301
+ id: 'code-review',
302
+ name: 'Code Review',
303
+ description: 'Review staged changes in git, run security scans, and generate a thorough review report',
304
+ steps: [
305
+ {
306
+ agentType: 'context-gatherer',
307
+ description: 'Get git diff of staged changes and scan the codebase',
308
+ dependsOn: [],
309
+ },
310
+ {
311
+ agentType: 'reviewer',
312
+ description: 'Review all changes for bugs, style, and correctness',
313
+ dependsOn: ['step-0'],
314
+ },
315
+ {
316
+ agentType: 'security',
317
+ description: 'Run security scans on the changes',
318
+ dependsOn: ['step-1'],
319
+ },
320
+ {
321
+ agentType: 'writer',
322
+ description: 'Generate a review report with findings and recommendations',
323
+ dependsOn: ['step-2'],
324
+ },
325
+ ],
326
+ recommendedModels: {
327
+ 'context-gatherer': 'groq/llama-3.1-8b-instant',
328
+ reviewer: 'openrouter/meta-llama/llama-3.1-8b-instruct',
329
+ writer: 'groq/llama-3.1-8b-instant',
330
+ },
331
+ useMemory: false,
332
+ tags: ['review', 'code-quality', 'git'],
333
+ },
334
+ {
335
+ id: 'bug-hunt',
336
+ name: 'Bug Hunt',
337
+ description: 'Systematically find and fix bugs: reproduce \u2192 diagnose \u2192 fix \u2192 verify',
338
+ steps: [
339
+ {
340
+ agentType: 'context-gatherer',
341
+ description: 'Analyze the codebase around the bug report',
342
+ dependsOn: [],
343
+ },
344
+ {
345
+ agentType: 'planner',
346
+ description: 'Create a diagnosis and fix plan',
347
+ dependsOn: ['step-0'],
348
+ },
349
+ {
350
+ agentType: 'writer',
351
+ description: 'Implement the bug fix',
352
+ dependsOn: ['step-1'],
353
+ },
354
+ {
355
+ agentType: 'tester',
356
+ description: 'Run tests to verify the fix and check for regressions',
357
+ dependsOn: ['step-2'],
358
+ },
359
+ {
360
+ agentType: 'debugger',
361
+ description: 'If tests fail, iterate on the fix',
362
+ dependsOn: ['step-3'],
363
+ },
364
+ {
365
+ agentType: 'runner',
366
+ description: 'Run the application to verify the fix works end-to-end',
367
+ dependsOn: ['step-4'],
368
+ },
369
+ ],
370
+ recommendedModels: {
371
+ planner: 'groq/llama-3.1-8b-instant',
372
+ writer: 'groq/llama-3.1-8b-instant',
373
+ debugger: 'groq/llama-3.1-8b-instant',
374
+ },
375
+ useMemory: true,
376
+ tags: ['debug', 'fix', 'bug'],
377
+ },
378
+ {
379
+ id: 'test-generation',
380
+ name: 'Test Generation',
381
+ description: 'Automatically generate unit/integration tests for files in the codebase',
382
+ steps: [
383
+ {
384
+ agentType: 'context-gatherer',
385
+ description: 'Find files without tests and analyze their exports',
386
+ dependsOn: [],
387
+ },
388
+ {
389
+ agentType: 'writer',
390
+ description: 'Generate test files for discovered code',
391
+ dependsOn: ['step-0'],
392
+ },
393
+ {
394
+ agentType: 'runner',
395
+ description: 'Run: npm test (or equivalent) to verify generated tests pass',
396
+ dependsOn: ['step-1'],
397
+ },
398
+ {
399
+ agentType: 'debugger',
400
+ description: 'Fix any failing generated tests',
401
+ dependsOn: ['step-2'],
402
+ },
403
+ {
404
+ agentType: 'reviewer',
405
+ description: 'Review the generated tests for quality and coverage',
406
+ dependsOn: ['step-3'],
407
+ },
408
+ ],
409
+ recommendedModels: {
410
+ 'context-gatherer': 'groq/llama-3.1-8b-instant',
411
+ writer: 'groq/llama-3.1-8b-instant',
412
+ reviewer: 'groq/llama-3.1-8b-instant',
413
+ },
414
+ useMemory: false,
415
+ tags: ['test', 'coverage', 'qa'],
416
+ },
417
+ ];
418
+ // ─── Workflow Engine ────────────────────────────────────────────────────────
419
+ /**
420
+ * Get all available workflow templates.
421
+ */
422
+ export function getWorkflowTemplates() {
423
+ return [...BUILTIN_TEMPLATES];
424
+ }
425
+ /**
426
+ * Get a specific workflow template by ID.
427
+ */
428
+ export function getWorkflowTemplate(id) {
429
+ return BUILTIN_TEMPLATES.find((t) => t.id === id);
430
+ }
431
+ /**
432
+ * Build a task plan from a workflow template, filling in the user's goal.
433
+ * Each step gets a stable ID (step-0, step-1, etc.) and the dependsOn
434
+ * references are translated from index-based to ID-based.
435
+ */
436
+ export function buildTaskPlanFromTemplate(template, goal) {
437
+ return template.steps.map((step, index) => ({
438
+ id: `step-${index}`,
439
+ description: `${step.description} for: ${goal}`,
440
+ agentType: step.agentType,
441
+ dependsOn: step.dependsOn,
442
+ status: 'pending',
443
+ }));
444
+ }
445
+ /**
446
+ * Build OrchestratorOptions from a workflow template.
447
+ * Merges the template's recommended models with user overrides.
448
+ */
449
+ /**
450
+ * Validate that an object is a valid WorkflowTemplate.
451
+ * Used by the workflow registry when installing templates.
452
+ */
453
+ export function isValidWorkflowTemplate(obj) {
454
+ if (typeof obj !== 'object' || obj === null)
455
+ return false;
456
+ const t = obj;
457
+ return (typeof t.id === 'string' &&
458
+ typeof t.name === 'string' &&
459
+ Array.isArray(t.steps) &&
460
+ t.steps.length > 0 &&
461
+ t.steps.every((s) => typeof s === 'object' &&
462
+ s !== null &&
463
+ typeof s.agentType === 'string' &&
464
+ typeof s.description === 'string'));
465
+ }
466
+ /**
467
+ * Build OrchestratorOptions from a workflow template.
468
+ * Merges the template's recommended models with user overrides.
469
+ */
470
+ export function buildWorkflowOptions(template, userOptions = {}) {
471
+ return {
472
+ agentModels: template.recommendedModels,
473
+ useMemory: template.useMemory,
474
+ autoRouteModels: !template.recommendedModels,
475
+ verbose: userOptions.verbose,
476
+ dryRun: userOptions.dryRun,
477
+ provider: userOptions.provider,
478
+ model: userOptions.model,
479
+ };
480
+ }
481
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/workflow/templates.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "agent-nuvira",
3
+ "version": "1.14.0",
4
+ "description": "Agent-Nuvira: Multi-agent AI coding CLI — plan, write, review, test, and publish code with local models (Ollama) or cloud APIs (Groq, NVIDIA NIM, Google Gemini, OpenRouter)",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "agent-nuvira": "dist/index.js"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "start": "node dist/index.js",
17
+ "dev": "tsx src/index.ts",
18
+ "test": "vitest run",
19
+ "test:watch": "vitest",
20
+ "test:coverage": "vitest run --coverage",
21
+ "build:dashboard": "cd src/web-dashboard && npm install --silent 2>/dev/null && npm run build",
22
+ "build:sdk": "cd src/agent-sdk && npx tsc",
23
+ "prepack": "npm run build"
24
+ },
25
+ "keywords": [
26
+ "ai",
27
+ "cli",
28
+ "llm",
29
+ "code-generation",
30
+ "multi-agent",
31
+ "ollama",
32
+ "groq",
33
+ "gemini",
34
+ "nim",
35
+ "openrouter",
36
+ "inference",
37
+ "devops",
38
+ "coding-agent",
39
+ "code-review",
40
+ "automation",
41
+ "developer-tools",
42
+ "typescript"
43
+ ],
44
+ "license": "MIT",
45
+ "author": "Dheeraj Sharma",
46
+ "repository": {
47
+ "type": "git",
48
+ "url": "git+https://github.com/imdheerajKube/agent-nuvira.git"
49
+ },
50
+ "bugs": {
51
+ "url": "https://github.com/imdheerajKube/agent-nuvira/issues"
52
+ },
53
+ "homepage": "https://github.com/imdheerajKube/agent-nuvira#readme",
54
+ "engines": {
55
+ "node": ">=21.7.0"
56
+ },
57
+ "files": [
58
+ "dist/",
59
+ "src/web-dashboard/public/",
60
+ "README.md",
61
+ "LICENSE"
62
+ ],
63
+ "dependencies": {
64
+ "@huggingface/transformers": "^4.2.0",
65
+ "chalk": "^5.3.0",
66
+ "commander": "^12.0.0",
67
+ "freebuff": "^0.0.124",
68
+ "inquirer": "^9.3.0",
69
+ "ora": "^8.0.0"
70
+ },
71
+ "devDependencies": {
72
+ "@types/inquirer": "^9.0.10",
73
+ "@types/node": "^20.11.0",
74
+ "tsx": "^4.7.0",
75
+ "typescript": "^5.3.0",
76
+ "vitest": "^4.1.10"
77
+ }
78
+ }
@@ -0,0 +1 @@
1
+ :root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #1c2333;--bg-card: #1a1f2e;--bg-hover: #1c2538;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--accent-blue: #58a6ff;--accent-green: #3fb950;--accent-yellow: #d29922;--accent-red: #f85149;--accent-purple: #bc8cff;--accent-cyan: #39d2c0;--border: #30363d;--border-light: #21262d;--shadow: rgba(0, 0, 0, .3);--nav-width: 220px;--transition: all .2s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;font-size:14px;min-height:100vh}#root{min-height:100vh}.layout{display:flex;min-height:100vh}.nav{width:var(--nav-width);background:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;overflow-y:auto;z-index:100}.nav-header{display:flex;align-items:center;gap:10px;padding:20px 16px;border-bottom:1px solid var(--border)}.nav-logo{font-size:24px}.nav-title{font-size:15px;font-weight:600;color:var(--text-primary)}.nav-links{flex:1;padding:8px 0}.nav-link{display:block;padding:10px 16px;color:var(--text-secondary);text-decoration:none;font-size:13px;transition:var(--transition);border-left:3px solid transparent}.nav-link:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-link.active{color:var(--accent-blue);background:#58a6ff14;border-left-color:var(--accent-blue);font-weight:500}.nav-footer{padding:12px 16px;border-top:1px solid var(--border);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot.connected{background:var(--accent-green);box-shadow:0 0 6px #3fb95066}.status-dot.reconnecting{background:var(--accent-yellow);animation:pulse 1s infinite}.status-text{font-size:11px;color:var(--text-secondary);flex:1}.last-updated{font-size:10px;color:var(--text-muted)}.main{margin-left:var(--nav-width);flex:1;padding:32px 40px;max-width:1200px}.section-title{font-size:22px;font-weight:600;margin-bottom:24px;color:var(--text-primary)}.section-subtitle{font-size:15px;font-weight:500;color:var(--text-secondary);margin:28px 0 14px}.section-description{color:var(--text-secondary);font-size:13px;margin-bottom:24px;line-height:1.6}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin-bottom:10px}.stats-grid.mini{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:18px 16px;display:flex;align-items:center;gap:14px;transition:var(--transition)}.stat-card:hover{border-color:var(--accent-blue);box-shadow:0 4px 12px var(--shadow)}.stat-icon{font-size:24px}.stat-body{min-width:0}.stat-value{font-size:20px;font-weight:700;color:var(--text-primary);line-height:1.2}.stat-label{font-size:11px;color:var(--text-secondary);margin-top:2px;text-transform:uppercase;letter-spacing:.5px}.chart-container{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:10px}.cost-summary{display:flex;gap:24px;margin-bottom:20px}.cost-total{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px 24px;text-align:center;flex:1}.cost-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.cost-amount{font-size:28px;font-weight:700;color:var(--accent-green);display:block;margin-top:4px}.cost-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:16px}.cost-row{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);transition:var(--transition)}.cost-row:last-child{border-bottom:none}.cost-row:hover{background:var(--bg-hover)}.cost-row-name{flex:1;font-size:13px;font-weight:500}.cost-row-bar{width:200px;height:6px;background:var(--bg-tertiary);border-radius:3px;margin:0 16px;overflow:hidden}.cost-row-fill{height:100%;background:linear-gradient(90deg,var(--accent-blue),var(--accent-cyan));border-radius:3px;transition:width .5s ease}.cost-row-value{font-size:13px;font-weight:600;color:var(--accent-green);min-width:70px;text-align:right}.request-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.request-row{display:flex;align-items:center;padding:8px 14px;border-bottom:1px solid var(--border-light);font-size:12px;transition:var(--transition)}.request-row:last-child{border-bottom:none}.request-row:hover{background:var(--bg-hover)}.request-time{color:var(--text-muted);min-width:70px}.request-provider{min-width:80px;font-weight:500}.request-model{flex:1;color:var(--text-secondary)}.request-cost{min-width:60px;text-align:right;color:var(--accent-green);font-weight:500}.request-tokens{min-width:60px;text-align:right;color:var(--text-secondary)}.history-stats{margin-bottom:14px;font-size:13px;color:var(--text-secondary)}.history-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.history-item{padding:12px 16px;border-bottom:1px solid var(--border-light);transition:var(--transition)}.history-item:last-child{border-bottom:none}.history-item:hover{background:var(--bg-hover)}.history-summary{font-size:13px;color:var(--text-primary);margin-bottom:4px;line-height:1.5}.history-meta{font-size:11px;color:var(--text-secondary);display:flex;gap:12px;flex-wrap:wrap;align-items:center}.history-meta span{display:inline-flex;align-items:center;gap:4px}.history-tag{background:#58a6ff26;color:var(--accent-blue);padding:1px 6px;border-radius:3px;font-size:10px;margin-left:2px}.benchmark-latest{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:16px}.benchmark-header{margin-bottom:8px;font-size:13px;color:var(--text-primary)}.benchmark-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px}.benchmark-stat{text-align:center;padding:12px;background:var(--bg-tertiary);border-radius:8px}.benchmark-stat-value{font-size:18px;font-weight:700}.benchmark-stat-label{font-size:10px;color:var(--text-secondary);margin-top:2px;text-transform:uppercase;letter-spacing:.5px}.benchmark-stat.pass .benchmark-stat-value{color:var(--accent-green)}.benchmark-stat.fail .benchmark-stat-value{color:var(--accent-red)}.benchmark-stat.quality .benchmark-stat-value{color:var(--accent-purple)}.benchmark-stat.latency .benchmark-stat-value{color:var(--accent-yellow)}.benchmark-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.benchmark-item{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);font-size:12px;transition:var(--transition)}.benchmark-item:last-child{border-bottom:none}.benchmark-item:hover{background:var(--bg-hover)}.benchmark-date{min-width:100px;color:var(--text-muted)}.benchmark-model{flex:1;font-weight:500}.benchmark-score{min-width:50px;text-align:right}.benchmark-score.high{color:var(--accent-green)}.benchmark-score.medium{color:var(--accent-yellow)}.benchmark-score.low{color:var(--accent-red)}.dag-container{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:24px;margin-bottom:16px;overflow-x:auto}.dag-container svg{display:block;margin:0 auto}.dag-legend{display:flex;flex-wrap:wrap;gap:12px;padding:16px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}.legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.legend-icon{font-size:12px}.legend-label{font-size:11px}.memory-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.memory-item{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);font-size:13px;transition:var(--transition)}.memory-item:last-child{border-bottom:none}.memory-item:hover{background:var(--bg-hover)}.memory-project{flex:1;font-weight:500}.memory-count{min-width:50px;text-align:right;color:var(--text-secondary)}.health-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-bottom:20px}.health-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px;display:flex;align-items:center;gap:14px;transition:var(--transition)}.health-card:hover{border-color:var(--accent-blue)}.health-icon{font-size:22px}.health-body{min-width:0}.health-title{font-size:12px;color:var(--text-secondary);margin-bottom:2px}.health-path{font-size:11px;color:var(--text-muted);font-family:SFMono-Regular,Consolas,monospace}.health-value{font-size:16px;font-weight:600;color:var(--text-primary)}.server-info{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.info-row{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);font-size:13px}.info-row:last-child{border-bottom:none}.info-label{min-width:140px;color:var(--text-secondary)}.info-value{color:var(--text-primary);font-weight:500}.loading-state{text-align:center;padding:80px 20px;color:var(--text-muted)}.loading-spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent-blue);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 16px}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{padding:32px;text-align:center;color:var(--text-muted);font-size:13px}.empty-state code{background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-size:12px;color:var(--accent-blue)}.dag-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:14px 18px;margin-bottom:14px;transition:var(--transition)}.dag-status-bar.active{border-color:var(--accent-blue);box-shadow:0 0 12px #58a6ff1a}.dag-pipeline-name{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--text-primary)}.dag-live-dot{width:10px;height:10px;border-radius:50%;background:var(--accent-green);box-shadow:0 0 8px #3fb95099;animation:pulse 1.5s infinite}.dag-live-badge{background:#3fb95026;color:var(--accent-green);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.5px;animation:pulse 2s infinite}.dag-pipeline-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dag-step-count{font-size:11px;color:var(--text-secondary)}.dag-running-badge{background:#58a6ff26;color:var(--accent-blue);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-completed-badge{background:#3fb9501f;color:var(--accent-green);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-pending-badge{background:#6e768126;color:var(--text-secondary);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-failed-badge{background:#f8514926;color:var(--accent-red);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-empty{text-align:center;padding:60px 20px;background:var(--bg-card);border:1px dashed var(--border);border-radius:12px}.dag-empty-icon{font-size:48px;margin-bottom:16px}.dag-empty h3{font-size:18px;color:var(--text-primary);margin-bottom:8px}.dag-empty p{color:var(--text-secondary);font-size:13px;max-width:400px;margin:0 auto}.dag-empty-hint{margin-top:12px!important;font-size:12px!important;color:var(--text-muted)!important}.dag-empty-hint code{background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-size:12px;color:var(--accent-blue)}.dag-node-group{transition:opacity .3s ease}.dag-node-group:hover rect:first-of-type{filter:brightness(1.2)}.dag-node-running{animation:dag-node-pulse 2s ease-in-out infinite}.dag-edge{transition:stroke .5s ease,stroke-width .5s ease,stroke-opacity .5s ease}@keyframes dag-node-pulse{0%,to{stroke-opacity:.9}50%{stroke-opacity:.5}}.dag-node-summary{pointer-events:none;animation:fadeIn .2s ease-out}.dag-table-wrapper{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:16px}.dag-table{width:100%;border-collapse:collapse;font-size:12px}.dag-table th{background:var(--bg-tertiary);padding:10px 14px;text-align:left;font-weight:600;color:var(--text-secondary);font-size:11px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border)}.dag-table td{padding:8px 14px;border-bottom:1px solid var(--border-light)}.dag-row:last-child td{border-bottom:none}.dag-row:hover td{background:var(--bg-hover)}.dag-cell-step{color:var(--text-muted);font-family:SFMono-Regular,Consolas,monospace;width:40px}.dag-cell-agent{display:flex;align-items:center;gap:6px;font-weight:500;color:var(--text-primary)}.dag-agent-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.dag-cell-status{font-weight:500}.dag-status-pending{color:var(--text-muted)}.dag-status-running{color:var(--accent-blue)}.dag-status-completed{color:var(--accent-green)}.dag-status-failed{color:var(--accent-red)}.dag-cell-duration{color:var(--text-secondary);font-family:SFMono-Regular,Consolas,monospace;font-size:11px}.dag-cell-time{color:var(--text-muted);font-family:SFMono-Regular,Consolas,monospace;font-size:11px}.dag-cell-summary{color:var(--text-secondary);font-size:11px;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.stat-card,.health-card,.cost-row,.history-item,.benchmark-item,.dag-row,.dag-status-bar{animation:fadeIn .3s ease-out}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@media (max-width: 768px){.nav{width:60px}.nav-title,.nav-link,.nav-footer{display:none}.nav-header{justify-content:center;padding:16px}.main{margin-left:60px;padding:20px}.stats-grid,.benchmark-stats{grid-template-columns:repeat(2,1fr)}.cost-summary{flex-direction:column;gap:12px}}