@mcp-graph-workflow/mcp-graph 5.5.1 → 5.5.3

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 (304) hide show
  1. package/dist/api/routes/integrations.d.ts.map +1 -1
  2. package/dist/api/routes/integrations.js +2 -1
  3. package/dist/api/routes/integrations.js.map +1 -1
  4. package/dist/api/routes/knowledge.js +1 -1
  5. package/dist/api/routes/knowledge.js.map +1 -1
  6. package/dist/api/routes/nodes.js +3 -3
  7. package/dist/api/routes/nodes.js.map +1 -1
  8. package/dist/cli/commands/doctor.d.ts.map +1 -1
  9. package/dist/cli/commands/doctor.js +2 -1
  10. package/dist/cli/commands/doctor.js.map +1 -1
  11. package/dist/cli/commands/import-cmd.d.ts.map +1 -1
  12. package/dist/cli/commands/import-cmd.js +2 -1
  13. package/dist/cli/commands/import-cmd.js.map +1 -1
  14. package/dist/cli/commands/index-cmd.d.ts.map +1 -1
  15. package/dist/cli/commands/index-cmd.js +2 -1
  16. package/dist/cli/commands/index-cmd.js.map +1 -1
  17. package/dist/cli/commands/init.d.ts.map +1 -1
  18. package/dist/cli/commands/init.js +2 -1
  19. package/dist/cli/commands/init.js.map +1 -1
  20. package/dist/cli/commands/stats.d.ts.map +1 -1
  21. package/dist/cli/commands/stats.js +2 -1
  22. package/dist/cli/commands/stats.js.map +1 -1
  23. package/dist/cli/commands/update.d.ts.map +1 -1
  24. package/dist/cli/commands/update.js +3 -2
  25. package/dist/cli/commands/update.js.map +1 -1
  26. package/dist/core/analyzer/ac-validator.d.ts.map +1 -1
  27. package/dist/core/analyzer/ac-validator.js +8 -2
  28. package/dist/core/analyzer/ac-validator.js.map +1 -1
  29. package/dist/core/analyzer/prd-quality.d.ts.map +1 -1
  30. package/dist/core/analyzer/prd-quality.js +9 -13
  31. package/dist/core/analyzer/prd-quality.js.map +1 -1
  32. package/dist/core/analyzer/scope-analyzer.d.ts.map +1 -1
  33. package/dist/core/analyzer/scope-analyzer.js +1 -2
  34. package/dist/core/analyzer/scope-analyzer.js.map +1 -1
  35. package/dist/core/code/code-types.d.ts +4 -4
  36. package/dist/core/context/compact-context.d.ts.map +1 -1
  37. package/dist/core/context/compact-context.js +14 -26
  38. package/dist/core/context/compact-context.js.map +1 -1
  39. package/dist/core/context/context-assembler.d.ts.map +1 -1
  40. package/dist/core/context/context-assembler.js +22 -3
  41. package/dist/core/context/context-assembler.js.map +1 -1
  42. package/dist/core/context/rag-context.d.ts.map +1 -1
  43. package/dist/core/context/rag-context.js +36 -3
  44. package/dist/core/context/rag-context.js.map +1 -1
  45. package/dist/core/designer/coupling-analyzer.d.ts.map +1 -1
  46. package/dist/core/designer/coupling-analyzer.js +3 -0
  47. package/dist/core/designer/coupling-analyzer.js.map +1 -1
  48. package/dist/core/designer/definition-of-ready.d.ts.map +1 -1
  49. package/dist/core/designer/definition-of-ready.js +1 -11
  50. package/dist/core/designer/definition-of-ready.js.map +1 -1
  51. package/dist/core/designer/interface-checker.d.ts.map +1 -1
  52. package/dist/core/designer/interface-checker.js +2 -1
  53. package/dist/core/designer/interface-checker.js.map +1 -1
  54. package/dist/core/designer/traceability-matrix.d.ts.map +1 -1
  55. package/dist/core/designer/traceability-matrix.js +7 -3
  56. package/dist/core/designer/traceability-matrix.js.map +1 -1
  57. package/dist/core/graph/mermaid-export.d.ts +1 -0
  58. package/dist/core/graph/mermaid-export.d.ts.map +1 -1
  59. package/dist/core/graph/mermaid-export.js +11 -8
  60. package/dist/core/graph/mermaid-export.js.map +1 -1
  61. package/dist/core/handoff/delivery-checklist.d.ts.map +1 -1
  62. package/dist/core/handoff/delivery-checklist.js +5 -14
  63. package/dist/core/handoff/delivery-checklist.js.map +1 -1
  64. package/dist/core/implementer/definition-of-done.d.ts.map +1 -1
  65. package/dist/core/implementer/definition-of-done.js +8 -18
  66. package/dist/core/implementer/definition-of-done.js.map +1 -1
  67. package/dist/core/implementer/sprint-progress.d.ts.map +1 -1
  68. package/dist/core/implementer/sprint-progress.js +1 -1
  69. package/dist/core/implementer/sprint-progress.js.map +1 -1
  70. package/dist/core/implementer/tdd-checker.d.ts +5 -1
  71. package/dist/core/implementer/tdd-checker.d.ts.map +1 -1
  72. package/dist/core/implementer/tdd-checker.js +20 -5
  73. package/dist/core/implementer/tdd-checker.js.map +1 -1
  74. package/dist/core/importer/prd-to-graph.d.ts.map +1 -1
  75. package/dist/core/importer/prd-to-graph.js +96 -1
  76. package/dist/core/importer/prd-to-graph.js.map +1 -1
  77. package/dist/core/listener/backlog-health.d.ts.map +1 -1
  78. package/dist/core/listener/backlog-health.js +22 -3
  79. package/dist/core/listener/backlog-health.js.map +1 -1
  80. package/dist/core/listener/feedback-readiness.d.ts.map +1 -1
  81. package/dist/core/listener/feedback-readiness.js +5 -14
  82. package/dist/core/listener/feedback-readiness.js.map +1 -1
  83. package/dist/core/parser/classify.d.ts +1 -0
  84. package/dist/core/parser/classify.d.ts.map +1 -1
  85. package/dist/core/parser/classify.js +23 -1
  86. package/dist/core/parser/classify.js.map +1 -1
  87. package/dist/core/parser/extract.d.ts.map +1 -1
  88. package/dist/core/parser/extract.js +35 -0
  89. package/dist/core/parser/extract.js.map +1 -1
  90. package/dist/core/planner/decompose.d.ts.map +1 -1
  91. package/dist/core/planner/decompose.js +6 -7
  92. package/dist/core/planner/decompose.js.map +1 -1
  93. package/dist/core/planner/dependency-chain.d.ts.map +1 -1
  94. package/dist/core/planner/dependency-chain.js +3 -0
  95. package/dist/core/planner/dependency-chain.js.map +1 -1
  96. package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
  97. package/dist/core/planner/lifecycle-phase.js +25 -16
  98. package/dist/core/planner/lifecycle-phase.js.map +1 -1
  99. package/dist/core/planner/next-task.d.ts.map +1 -1
  100. package/dist/core/planner/next-task.js +15 -5
  101. package/dist/core/planner/next-task.js.map +1 -1
  102. package/dist/core/planner/planning-report.d.ts.map +1 -1
  103. package/dist/core/planner/planning-report.js +2 -2
  104. package/dist/core/planner/planning-report.js.map +1 -1
  105. package/dist/core/planner/velocity.d.ts.map +1 -1
  106. package/dist/core/planner/velocity.js +1 -3
  107. package/dist/core/planner/velocity.js.map +1 -1
  108. package/dist/core/rag/phase-metadata.d.ts +2 -2
  109. package/dist/core/rag/phase-metadata.d.ts.map +1 -1
  110. package/dist/core/rag/phase-metadata.js +3 -4
  111. package/dist/core/rag/phase-metadata.js.map +1 -1
  112. package/dist/core/rag/phase-summary.d.ts.map +1 -1
  113. package/dist/core/rag/phase-summary.js +3 -3
  114. package/dist/core/rag/phase-summary.js.map +1 -1
  115. package/dist/core/reviewer/review-readiness.d.ts.map +1 -1
  116. package/dist/core/reviewer/review-readiness.js +5 -14
  117. package/dist/core/reviewer/review-readiness.js.map +1 -1
  118. package/dist/core/store/knowledge-store.js +2 -2
  119. package/dist/core/store/knowledge-store.js.map +1 -1
  120. package/dist/core/store/migrations.d.ts.map +1 -1
  121. package/dist/core/store/migrations.js +11 -0
  122. package/dist/core/store/migrations.js.map +1 -1
  123. package/dist/core/store/sqlite-store.d.ts.map +1 -1
  124. package/dist/core/store/sqlite-store.js +11 -7
  125. package/dist/core/store/sqlite-store.js.map +1 -1
  126. package/dist/core/utils/ac-helpers.d.ts +14 -0
  127. package/dist/core/utils/ac-helpers.d.ts.map +1 -0
  128. package/dist/core/utils/ac-helpers.js +26 -0
  129. package/dist/core/utils/ac-helpers.js.map +1 -0
  130. package/dist/core/utils/blocked-helpers.d.ts +14 -0
  131. package/dist/core/utils/blocked-helpers.d.ts.map +1 -0
  132. package/dist/core/utils/blocked-helpers.js +19 -0
  133. package/dist/core/utils/blocked-helpers.js.map +1 -0
  134. package/dist/core/utils/constants.d.ts +10 -0
  135. package/dist/core/utils/constants.d.ts.map +1 -1
  136. package/dist/core/utils/constants.js +12 -0
  137. package/dist/core/utils/constants.js.map +1 -1
  138. package/dist/core/utils/errors.d.ts +2 -0
  139. package/dist/core/utils/errors.d.ts.map +1 -1
  140. package/dist/core/utils/errors.js +4 -0
  141. package/dist/core/utils/errors.js.map +1 -1
  142. package/dist/core/utils/grading.d.ts +8 -0
  143. package/dist/core/utils/grading.d.ts.map +1 -0
  144. package/dist/core/utils/grading.js +17 -0
  145. package/dist/core/utils/grading.js.map +1 -0
  146. package/dist/core/utils/node-type-sets.d.ts +17 -0
  147. package/dist/core/utils/node-type-sets.d.ts.map +1 -0
  148. package/dist/core/utils/node-type-sets.js +23 -0
  149. package/dist/core/utils/node-type-sets.js.map +1 -0
  150. package/dist/core/utils/text.d.ts +9 -0
  151. package/dist/core/utils/text.d.ts.map +1 -0
  152. package/dist/core/utils/text.js +13 -0
  153. package/dist/core/utils/text.js.map +1 -0
  154. package/dist/core/utils/xp-sizing.d.ts +16 -0
  155. package/dist/core/utils/xp-sizing.d.ts.map +1 -0
  156. package/dist/core/utils/xp-sizing.js +20 -0
  157. package/dist/core/utils/xp-sizing.js.map +1 -0
  158. package/dist/core/validator/definition-of-ready.d.ts.map +1 -1
  159. package/dist/core/validator/definition-of-ready.js +2 -12
  160. package/dist/core/validator/definition-of-ready.js.map +1 -1
  161. package/dist/core/validator/done-integrity-checker.d.ts.map +1 -1
  162. package/dist/core/validator/done-integrity-checker.js +1 -1
  163. package/dist/core/validator/done-integrity-checker.js.map +1 -1
  164. package/dist/core/validator/status-flow-checker.d.ts.map +1 -1
  165. package/dist/core/validator/status-flow-checker.js +1 -1
  166. package/dist/core/validator/status-flow-checker.js.map +1 -1
  167. package/dist/mcp/lifecycle-wrapper.d.ts +0 -4
  168. package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
  169. package/dist/mcp/lifecycle-wrapper.js +6 -1
  170. package/dist/mcp/lifecycle-wrapper.js.map +1 -1
  171. package/dist/mcp/response-helpers.d.ts +20 -0
  172. package/dist/mcp/response-helpers.d.ts.map +1 -0
  173. package/dist/mcp/response-helpers.js +26 -0
  174. package/dist/mcp/response-helpers.js.map +1 -0
  175. package/dist/mcp/tools/add-node.d.ts.map +1 -1
  176. package/dist/mcp/tools/add-node.js +6 -16
  177. package/dist/mcp/tools/add-node.js.map +1 -1
  178. package/dist/mcp/tools/analyze.d.ts.map +1 -1
  179. package/dist/mcp/tools/analyze.js +29 -39
  180. package/dist/mcp/tools/analyze.js.map +1 -1
  181. package/dist/mcp/tools/clone-node.d.ts.map +1 -1
  182. package/dist/mcp/tools/clone-node.js +5 -28
  183. package/dist/mcp/tools/clone-node.js.map +1 -1
  184. package/dist/mcp/tools/context.d.ts.map +1 -1
  185. package/dist/mcp/tools/context.js +3 -14
  186. package/dist/mcp/tools/context.js.map +1 -1
  187. package/dist/mcp/tools/delete-node.d.ts.map +1 -1
  188. package/dist/mcp/tools/delete-node.js +3 -14
  189. package/dist/mcp/tools/delete-node.js.map +1 -1
  190. package/dist/mcp/tools/edge.d.ts.map +1 -1
  191. package/dist/mcp/tools/edge.js +18 -60
  192. package/dist/mcp/tools/edge.js.map +1 -1
  193. package/dist/mcp/tools/export.d.ts.map +1 -1
  194. package/dist/mcp/tools/export.js +14 -7
  195. package/dist/mcp/tools/export.js.map +1 -1
  196. package/dist/mcp/tools/import-prd.d.ts.map +1 -1
  197. package/dist/mcp/tools/import-prd.js +16 -34
  198. package/dist/mcp/tools/import-prd.js.map +1 -1
  199. package/dist/mcp/tools/init.d.ts.map +1 -1
  200. package/dist/mcp/tools/init.js +2 -8
  201. package/dist/mcp/tools/init.js.map +1 -1
  202. package/dist/mcp/tools/list-skills.d.ts.map +1 -1
  203. package/dist/mcp/tools/list-skills.js +16 -31
  204. package/dist/mcp/tools/list-skills.js.map +1 -1
  205. package/dist/mcp/tools/list.d.ts.map +1 -1
  206. package/dist/mcp/tools/list.js +12 -12
  207. package/dist/mcp/tools/list.js.map +1 -1
  208. package/dist/mcp/tools/manage-skill.d.ts.map +1 -1
  209. package/dist/mcp/tools/manage-skill.js +29 -86
  210. package/dist/mcp/tools/manage-skill.js.map +1 -1
  211. package/dist/mcp/tools/memory.d.ts.map +1 -1
  212. package/dist/mcp/tools/memory.js +17 -47
  213. package/dist/mcp/tools/memory.js.map +1 -1
  214. package/dist/mcp/tools/metrics.d.ts.map +1 -1
  215. package/dist/mcp/tools/metrics.js +9 -22
  216. package/dist/mcp/tools/metrics.js.map +1 -1
  217. package/dist/mcp/tools/move-node.d.ts.map +1 -1
  218. package/dist/mcp/tools/move-node.js +10 -36
  219. package/dist/mcp/tools/move-node.js.map +1 -1
  220. package/dist/mcp/tools/next.d.ts.map +1 -1
  221. package/dist/mcp/tools/next.js +22 -27
  222. package/dist/mcp/tools/next.js.map +1 -1
  223. package/dist/mcp/tools/node.d.ts.map +1 -1
  224. package/dist/mcp/tools/node.js +15 -37
  225. package/dist/mcp/tools/node.js.map +1 -1
  226. package/dist/mcp/tools/plan-sprint.d.ts.map +1 -1
  227. package/dist/mcp/tools/plan-sprint.js +15 -29
  228. package/dist/mcp/tools/plan-sprint.js.map +1 -1
  229. package/dist/mcp/tools/rag-context.d.ts.map +1 -1
  230. package/dist/mcp/tools/rag-context.js +5 -17
  231. package/dist/mcp/tools/rag-context.js.map +1 -1
  232. package/dist/mcp/tools/reindex-knowledge.d.ts.map +1 -1
  233. package/dist/mcp/tools/reindex-knowledge.js +2 -8
  234. package/dist/mcp/tools/reindex-knowledge.js.map +1 -1
  235. package/dist/mcp/tools/search.d.ts.map +1 -1
  236. package/dist/mcp/tools/search.js +2 -8
  237. package/dist/mcp/tools/search.js.map +1 -1
  238. package/dist/mcp/tools/set-phase.d.ts.map +1 -1
  239. package/dist/mcp/tools/set-phase.js +17 -46
  240. package/dist/mcp/tools/set-phase.js.map +1 -1
  241. package/dist/mcp/tools/show.d.ts.map +1 -1
  242. package/dist/mcp/tools/show.js +13 -24
  243. package/dist/mcp/tools/show.js.map +1 -1
  244. package/dist/mcp/tools/snapshot.d.ts.map +1 -1
  245. package/dist/mcp/tools/snapshot.js +5 -21
  246. package/dist/mcp/tools/snapshot.js.map +1 -1
  247. package/dist/mcp/tools/sync-stack-docs.d.ts.map +1 -1
  248. package/dist/mcp/tools/sync-stack-docs.js +8 -17
  249. package/dist/mcp/tools/sync-stack-docs.js.map +1 -1
  250. package/dist/mcp/tools/update-node.d.ts.map +1 -1
  251. package/dist/mcp/tools/update-node.js +3 -14
  252. package/dist/mcp/tools/update-node.js.map +1 -1
  253. package/dist/mcp/tools/update-status.d.ts.map +1 -1
  254. package/dist/mcp/tools/update-status.js +44 -24
  255. package/dist/mcp/tools/update-status.js.map +1 -1
  256. package/dist/mcp/tools/validate-ac.d.ts.map +1 -1
  257. package/dist/mcp/tools/validate-ac.js +2 -8
  258. package/dist/mcp/tools/validate-ac.js.map +1 -1
  259. package/dist/mcp/tools/validate-task.d.ts.map +1 -1
  260. package/dist/mcp/tools/validate-task.js +2 -6
  261. package/dist/mcp/tools/validate-task.js.map +1 -1
  262. package/dist/mcp/tools/validate.d.ts.map +1 -1
  263. package/dist/mcp/tools/validate.js +4 -10
  264. package/dist/mcp/tools/validate.js.map +1 -1
  265. package/dist/schemas/analyzer-schema.d.ts +7 -6
  266. package/dist/schemas/analyzer-schema.d.ts.map +1 -1
  267. package/dist/schemas/analyzer-schema.js +3 -1
  268. package/dist/schemas/analyzer-schema.js.map +1 -1
  269. package/dist/schemas/designer-schema.d.ts +19 -17
  270. package/dist/schemas/designer-schema.d.ts.map +1 -1
  271. package/dist/schemas/designer-schema.js +8 -15
  272. package/dist/schemas/designer-schema.js.map +1 -1
  273. package/dist/schemas/grade-schema.d.ts +13 -0
  274. package/dist/schemas/grade-schema.d.ts.map +1 -0
  275. package/dist/schemas/grade-schema.js +6 -0
  276. package/dist/schemas/grade-schema.js.map +1 -0
  277. package/dist/schemas/implementer-schema.d.ts +2 -0
  278. package/dist/schemas/implementer-schema.d.ts.map +1 -1
  279. package/dist/schemas/implementer-schema.js +6 -2
  280. package/dist/schemas/implementer-schema.js.map +1 -1
  281. package/dist/schemas/listener-schema.d.ts +11 -0
  282. package/dist/schemas/listener-schema.d.ts.map +1 -1
  283. package/dist/schemas/listener-schema.js +7 -0
  284. package/dist/schemas/listener-schema.js.map +1 -1
  285. package/dist/schemas/readiness-schema.d.ts +44 -0
  286. package/dist/schemas/readiness-schema.d.ts.map +1 -0
  287. package/dist/schemas/readiness-schema.js +22 -0
  288. package/dist/schemas/readiness-schema.js.map +1 -0
  289. package/dist/web/dashboard/dist/assets/{benchmark-tab-BW4QxI49.js → benchmark-tab-C5fwIqgM.js} +1 -1
  290. package/dist/web/dashboard/dist/assets/{constants-kpH_c6vY.js → constants-z0QkAiYv.js} +1 -1
  291. package/dist/web/dashboard/dist/assets/{context-tab-C5RAlXNW.js → context-tab-ChCyrRlr.js} +1 -1
  292. package/dist/web/dashboard/dist/assets/{gitnexus-tab-BnxxYl2F.js → gitnexus-tab-DnlGT63w.js} +1 -1
  293. package/dist/web/dashboard/dist/assets/{graph-tab-Cv_wQ6Az.js → graph-tab-DjV9RD41.js} +1 -1
  294. package/dist/web/dashboard/dist/assets/{graph-utils-Ds1zJyD1.js → graph-utils-C6bvcT4d.js} +1 -1
  295. package/dist/web/dashboard/dist/assets/{index-Bic_URMs.js → index-DlZhNCGR.js} +1 -1
  296. package/dist/web/dashboard/dist/assets/{index-BAeZDWWy.js → index-dCyMex_p.js} +2 -2
  297. package/dist/web/dashboard/dist/assets/{insights-tab-U_ATOqPu.js → insights-tab-Cj4f85vS.js} +1 -1
  298. package/dist/web/dashboard/dist/assets/{logs-tab-B8psCXuB.js → logs-tab-C4C2Vn8-.js} +1 -1
  299. package/dist/web/dashboard/dist/assets/{memories-tab-DcWok2by.js → memories-tab-NtNwoxbT.js} +1 -1
  300. package/dist/web/dashboard/dist/assets/{prd-backlog-tab-CjftveTc.js → prd-backlog-tab-Bxt7qiVG.js} +1 -1
  301. package/dist/web/dashboard/dist/assets/skills-tab-CIj4z1Ol.js +1 -0
  302. package/dist/web/dashboard/dist/index.html +1 -1
  303. package/package.json +1 -1
  304. package/dist/web/dashboard/dist/assets/skills-tab-Ddp1w4vS.js +0 -1
@@ -9,6 +9,10 @@ export declare const TechDebtIndicatorSchema: z.ZodObject<{
9
9
  title: z.ZodString;
10
10
  keywords: z.ZodArray<z.ZodString>;
11
11
  }, z.core.$strip>;
12
+ export declare const BacklogAgingSchema: z.ZodObject<{
13
+ avgDays: z.ZodNumber;
14
+ maxDays: z.ZodNumber;
15
+ }, z.core.$strip>;
12
16
  export declare const BacklogHealthReportSchema: z.ZodObject<{
13
17
  backlogCount: z.ZodNumber;
14
18
  readyCount: z.ZodNumber;
@@ -23,6 +27,12 @@ export declare const BacklogHealthReportSchema: z.ZodObject<{
23
27
  keywords: z.ZodArray<z.ZodString>;
24
28
  }, z.core.$strip>>;
25
29
  cleanForNewCycle: z.ZodBoolean;
30
+ typeDistribution: z.ZodRecord<z.ZodString, z.ZodNumber>;
31
+ priorityDistribution: z.ZodRecord<z.ZodString, z.ZodNumber>;
32
+ aging: z.ZodObject<{
33
+ avgDays: z.ZodNumber;
34
+ maxDays: z.ZodNumber;
35
+ }, z.core.$strip>;
26
36
  }, z.core.$strip>;
27
37
  export declare const ListenerReadinessCheckSchema: z.ZodObject<{
28
38
  name: z.ZodString;
@@ -56,6 +66,7 @@ export declare const ListenerReadinessReportSchema: z.ZodObject<{
56
66
  }, z.core.$strip>;
57
67
  export type StaleTask = z.infer<typeof StaleTaskSchema>;
58
68
  export type TechDebtIndicator = z.infer<typeof TechDebtIndicatorSchema>;
69
+ export type BacklogAging = z.infer<typeof BacklogAgingSchema>;
59
70
  export type BacklogHealthReport = z.infer<typeof BacklogHealthReportSchema>;
60
71
  export type ListenerReadinessCheck = z.infer<typeof ListenerReadinessCheckSchema>;
61
72
  export type ListenerReadinessReport = z.infer<typeof ListenerReadinessReportSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"listener-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/listener-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAK3B,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;iBAIlC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBAMpC,CAAC;AAIH,eAAO,MAAM,4BAA4B;;;;;;;;iBAKvC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;iBAMxC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC"}
1
+ {"version":3,"file":"listener-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/listener-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAK3B,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;iBAIlC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;iBASpC,CAAC;AAIH,eAAO,MAAM,4BAA4B;;;;;;;;iBAKvC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;iBAMxC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC"}
@@ -11,12 +11,19 @@ export const TechDebtIndicatorSchema = z.object({
11
11
  title: z.string(),
12
12
  keywords: z.array(z.string()),
13
13
  });
14
+ export const BacklogAgingSchema = z.object({
15
+ avgDays: z.number().min(0),
16
+ maxDays: z.number().min(0),
17
+ });
14
18
  export const BacklogHealthReportSchema = z.object({
15
19
  backlogCount: z.number().min(0),
16
20
  readyCount: z.number().min(0),
17
21
  staleTasks: z.array(StaleTaskSchema),
18
22
  techDebtIndicators: z.array(TechDebtIndicatorSchema),
19
23
  cleanForNewCycle: z.boolean(),
24
+ typeDistribution: z.record(z.string(), z.number()),
25
+ priorityDistribution: z.record(z.string(), z.number()),
26
+ aging: BacklogAgingSchema,
20
27
  });
21
28
  // ── Listener Readiness ──
22
29
  export const ListenerReadinessCheckSchema = z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"listener-schema.js","sourceRoot":"","sources":["../../src/schemas/listener-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,uBAAuB;AAEvB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACpC,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;IACpD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;CAC9B,CAAC,CAAC;AAEH,2BAA2B;AAE3B,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,uBAAuB;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC;IAC7C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,KAAK,EAAE,cAAc;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
1
+ {"version":3,"file":"listener-schema.js","sourceRoot":"","sources":["../../src/schemas/listener-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,uBAAuB;AAEvB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACpC,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;IACpD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC7B,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAClD,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACtD,KAAK,EAAE,kBAAkB;CAC1B,CAAC,CAAC;AAEH,2BAA2B;AAE3B,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,uBAAuB;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC;IAC7C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,KAAK,EAAE,cAAc;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Canonical readiness check/report schemas — single source of truth.
3
+ * Phase-specific schemas (Design, Validation, Review, Handoff, Listener)
4
+ * should use these as base or re-export.
5
+ */
6
+ import { z } from "zod/v4";
7
+ export declare const ReadinessSeveritySchema: z.ZodEnum<{
8
+ required: "required";
9
+ recommended: "recommended";
10
+ }>;
11
+ export type ReadinessSeverity = z.infer<typeof ReadinessSeveritySchema>;
12
+ export declare const BaseReadinessCheckSchema: z.ZodObject<{
13
+ name: z.ZodString;
14
+ passed: z.ZodBoolean;
15
+ details: z.ZodString;
16
+ severity: z.ZodEnum<{
17
+ required: "required";
18
+ recommended: "recommended";
19
+ }>;
20
+ }, z.core.$strip>;
21
+ export type BaseReadinessCheck = z.infer<typeof BaseReadinessCheckSchema>;
22
+ export declare const BaseReadinessReportSchema: z.ZodObject<{
23
+ checks: z.ZodArray<z.ZodObject<{
24
+ name: z.ZodString;
25
+ passed: z.ZodBoolean;
26
+ details: z.ZodString;
27
+ severity: z.ZodEnum<{
28
+ required: "required";
29
+ recommended: "recommended";
30
+ }>;
31
+ }, z.core.$strip>>;
32
+ ready: z.ZodBoolean;
33
+ score: z.ZodNumber;
34
+ grade: z.ZodEnum<{
35
+ A: "A";
36
+ B: "B";
37
+ C: "C";
38
+ D: "D";
39
+ F: "F";
40
+ }>;
41
+ summary: z.ZodString;
42
+ }, z.core.$strip>;
43
+ export type BaseReadinessReport = z.infer<typeof BaseReadinessReportSchema>;
44
+ //# sourceMappingURL=readiness-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/readiness-schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,eAAO,MAAM,uBAAuB;;;EAAsC,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,wBAAwB;;;;;;;;iBAKnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;iBAMpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Canonical readiness check/report schemas — single source of truth.
3
+ * Phase-specific schemas (Design, Validation, Review, Handoff, Listener)
4
+ * should use these as base or re-export.
5
+ */
6
+ import { z } from "zod/v4";
7
+ import { GradeSchema } from "./grade-schema.js";
8
+ export const ReadinessSeveritySchema = z.enum(["required", "recommended"]);
9
+ export const BaseReadinessCheckSchema = z.object({
10
+ name: z.string(),
11
+ passed: z.boolean(),
12
+ details: z.string(),
13
+ severity: ReadinessSeveritySchema,
14
+ });
15
+ export const BaseReadinessReportSchema = z.object({
16
+ checks: z.array(BaseReadinessCheckSchema),
17
+ ready: z.boolean(),
18
+ score: z.number().min(0).max(100),
19
+ grade: GradeSchema,
20
+ summary: z.string(),
21
+ });
22
+ //# sourceMappingURL=readiness-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness-schema.js","sourceRoot":"","sources":["../../src/schemas/readiness-schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AAG3E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,uBAAuB;CAClC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
@@ -1 +1 @@
1
- import{r as u,a as h,j as e}from"./index-BAeZDWWy.js";function v(){const[n,d]=u.useState(null),[m,t]=u.useState(!0),[a,x]=u.useState(null);return u.useEffect(()=>{async function r(){try{const c=await h.request("/benchmark");d(c)}catch(c){x(c instanceof Error?c.message:"Failed to load benchmark data")}finally{t(!1)}}r()},[]),{data:n,loading:m,error:a}}function b(){const{data:n,loading:d,error:m}=v();if(d)return e.jsx("div",{className:"flex items-center justify-center h-full text-[var(--color-text-muted)]",children:"Loading benchmark data..."});if(m)return e.jsxs("div",{className:"flex items-center justify-center h-full text-[var(--color-danger)]",children:["Failed to load: ",m]});if(!n)return e.jsx("div",{});const{tokenEconomy:t,layeredCompression:a,dependencyIntelligence:x,toolTokenUsage:r,formulas:c}=n;return e.jsxs("div",{className:"p-6 max-w-5xl mx-auto space-y-6 overflow-y-auto h-full",children:[e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Token Economy"}),e.jsxs("div",{className:"grid grid-cols-4 gap-3 mb-4",children:[e.jsx(s,{value:`${t.avgCompressionPercent}%`,label:"Avg Compress"}),e.jsx(s,{value:t.sampleSize>0?Math.round(t.totalTokensSaved/t.sampleSize).toLocaleString():"0",label:"Tokens Saved/Task"}),e.jsx(s,{value:t.totalNodes,label:"Nodes"}),e.jsx(s,{value:t.totalEdges,label:"Edges"})]}),t.perTaskMetrics.length>0&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-medium text-[var(--color-text-muted)] mb-2",children:"Context Compression per Task (vs Full Graph)"}),e.jsx("div",{className:"space-y-1.5","data-testid":"compression-bars",children:t.perTaskMetrics.slice(0,15).map(l=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"w-32 truncate",title:l.title,children:l.title}),e.jsx("div",{className:"flex-1 h-3 bg-[var(--color-bg-tertiary)] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-[var(--color-accent)]",style:{width:`${Math.min(l.compressionPercent,100)}%`}})}),e.jsxs("span",{className:"text-[var(--color-text-muted)] w-24 text-right",children:[l.compressionPercent,"% (",l.estimatedTokens," tok)"]})]},l.id))})]})]}),a&&e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Real Token Savings (Per-Layer)"}),e.jsxs("div",{className:"grid grid-cols-5 gap-3 mb-4",children:[e.jsx(s,{value:`${a.avgLayer1SavingsPercent}%`,label:"L1: Field Strip"}),e.jsx(s,{value:`${a.avgLayer2SavingsPercent}%`,label:"L2: Desc Truncate"}),e.jsx(s,{value:`${a.avgLayer3SavingsPercent}%`,label:"L3: Default Omit"}),e.jsx(s,{value:`${a.avgLayer4SavingsPercent}%`,label:"L4: Short Keys"}),e.jsx(s,{value:`${a.avgTotalRealSavingsPercent}%`,label:"Total Real Savings"})]}),(()=>{const l=Math.max(a.avgNaiveNeighborhoodTokens,1),o=[{label:"Naive Neighborhood",tokens:a.avgNaiveNeighborhoodTokens,color:"#ef4444"},{label:"L1: Field Stripping",tokens:a.avgCompactContextTokens,color:"#f97316"},{label:"L2: Desc Truncation",tokens:a.avgNeighborTruncatedTokens,color:"#eab308"},{label:"L3: Default Omission",tokens:a.avgDefaultOmittedTokens,color:"#22c55e"},{label:"L4: Short Keys",tokens:a.avgShortKeysTokens,color:"#3b82f6"},{label:"Summary Tier",tokens:a.avgSummaryTierTokens,color:"#8b5cf6"}];return e.jsx("div",{className:"space-y-1.5","data-testid":"waterfall-bars",children:o.map(i=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"w-40 truncate",title:i.label,children:i.label}),e.jsx("div",{className:"flex-1 h-3 bg-[var(--color-bg-tertiary)] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full",style:{width:`${Math.min(i.tokens/l*100,100)}%`,backgroundColor:i.color}})}),e.jsxs("span",{className:"text-[var(--color-text-muted)] w-20 text-right",children:[i.tokens.toLocaleString()," tok"]})]},i.label))})})()]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Dependency Intelligence"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsx(s,{value:x.inferredDeps,label:"Auto Inferred"}),e.jsx(s,{value:`${x.blockedTasks}/${t.totalNodes}`,label:"Blocked Detected"}),e.jsx(s,{value:x.cycles,label:"Cycles Detected"})]})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Formulas & Justification"}),e.jsx("div",{className:"px-3 py-2 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-xs space-y-1","data-testid":"formulas-section",children:Object.entries(c).map(([l,o])=>e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("span",{className:"text-[var(--color-text-muted)] font-mono w-40 shrink-0",children:[l,":"]}),e.jsx("span",{children:o})]},l))})]}),r&&r.totalCalls>0&&e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Tool Token Usage"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3 mb-4",children:[e.jsx(s,{value:r.totalCalls.toLocaleString(),label:"Total Calls"}),e.jsx(s,{value:r.totalInputTokens.toLocaleString(),label:"Total Input Tokens"}),e.jsx(s,{value:r.totalOutputTokens.toLocaleString(),label:"Total Output Tokens"})]}),r.perTool.length>0&&(()=>{const l=Math.max(...r.perTool.map(o=>o.totalTokens),1);return e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-medium text-[var(--color-text-muted)] mb-2",children:"Token Usage per Tool"}),e.jsx("div",{className:"space-y-1.5","data-testid":"tool-token-bars",children:r.perTool.slice(0,15).map(o=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"w-32 truncate font-mono",title:o.toolName,children:o.toolName}),e.jsx("div",{className:"flex-1 h-3 bg-[var(--color-bg-tertiary)] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-[var(--color-accent)]",style:{width:`${Math.min(o.totalTokens/l*100,100)}%`}})}),e.jsxs("span",{className:"text-[var(--color-text-muted)] w-32 text-right",children:[o.callCount," calls, ",o.totalTokens.toLocaleString()," tok"]})]},o.toolName))})]})})()]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Cost Savings per Task"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsx(s,{value:`$${t.costSavings.opusPerTask.toFixed(3)}`,label:"Opus Input"}),e.jsx(s,{value:`$${t.costSavings.sonnetPerTask.toFixed(3)}`,label:"Sonnet Input"})]})]})]})}function s({value:n,label:d}){return e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-center","data-testid":"metric-card",children:[e.jsx("div",{className:"text-xl font-bold",children:n}),e.jsx("div",{className:"text-[10px] text-[var(--color-text-muted)] uppercase",children:d})]})}export{b as BenchmarkTab};
1
+ import{r as u,a as h,j as e}from"./index-dCyMex_p.js";function v(){const[n,d]=u.useState(null),[m,t]=u.useState(!0),[a,x]=u.useState(null);return u.useEffect(()=>{async function r(){try{const c=await h.request("/benchmark");d(c)}catch(c){x(c instanceof Error?c.message:"Failed to load benchmark data")}finally{t(!1)}}r()},[]),{data:n,loading:m,error:a}}function b(){const{data:n,loading:d,error:m}=v();if(d)return e.jsx("div",{className:"flex items-center justify-center h-full text-[var(--color-text-muted)]",children:"Loading benchmark data..."});if(m)return e.jsxs("div",{className:"flex items-center justify-center h-full text-[var(--color-danger)]",children:["Failed to load: ",m]});if(!n)return e.jsx("div",{});const{tokenEconomy:t,layeredCompression:a,dependencyIntelligence:x,toolTokenUsage:r,formulas:c}=n;return e.jsxs("div",{className:"p-6 max-w-5xl mx-auto space-y-6 overflow-y-auto h-full",children:[e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Token Economy"}),e.jsxs("div",{className:"grid grid-cols-4 gap-3 mb-4",children:[e.jsx(s,{value:`${t.avgCompressionPercent}%`,label:"Avg Compress"}),e.jsx(s,{value:t.sampleSize>0?Math.round(t.totalTokensSaved/t.sampleSize).toLocaleString():"0",label:"Tokens Saved/Task"}),e.jsx(s,{value:t.totalNodes,label:"Nodes"}),e.jsx(s,{value:t.totalEdges,label:"Edges"})]}),t.perTaskMetrics.length>0&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-medium text-[var(--color-text-muted)] mb-2",children:"Context Compression per Task (vs Full Graph)"}),e.jsx("div",{className:"space-y-1.5","data-testid":"compression-bars",children:t.perTaskMetrics.slice(0,15).map(l=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"w-32 truncate",title:l.title,children:l.title}),e.jsx("div",{className:"flex-1 h-3 bg-[var(--color-bg-tertiary)] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-[var(--color-accent)]",style:{width:`${Math.min(l.compressionPercent,100)}%`}})}),e.jsxs("span",{className:"text-[var(--color-text-muted)] w-24 text-right",children:[l.compressionPercent,"% (",l.estimatedTokens," tok)"]})]},l.id))})]})]}),a&&e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Real Token Savings (Per-Layer)"}),e.jsxs("div",{className:"grid grid-cols-5 gap-3 mb-4",children:[e.jsx(s,{value:`${a.avgLayer1SavingsPercent}%`,label:"L1: Field Strip"}),e.jsx(s,{value:`${a.avgLayer2SavingsPercent}%`,label:"L2: Desc Truncate"}),e.jsx(s,{value:`${a.avgLayer3SavingsPercent}%`,label:"L3: Default Omit"}),e.jsx(s,{value:`${a.avgLayer4SavingsPercent}%`,label:"L4: Short Keys"}),e.jsx(s,{value:`${a.avgTotalRealSavingsPercent}%`,label:"Total Real Savings"})]}),(()=>{const l=Math.max(a.avgNaiveNeighborhoodTokens,1),o=[{label:"Naive Neighborhood",tokens:a.avgNaiveNeighborhoodTokens,color:"#ef4444"},{label:"L1: Field Stripping",tokens:a.avgCompactContextTokens,color:"#f97316"},{label:"L2: Desc Truncation",tokens:a.avgNeighborTruncatedTokens,color:"#eab308"},{label:"L3: Default Omission",tokens:a.avgDefaultOmittedTokens,color:"#22c55e"},{label:"L4: Short Keys",tokens:a.avgShortKeysTokens,color:"#3b82f6"},{label:"Summary Tier",tokens:a.avgSummaryTierTokens,color:"#8b5cf6"}];return e.jsx("div",{className:"space-y-1.5","data-testid":"waterfall-bars",children:o.map(i=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"w-40 truncate",title:i.label,children:i.label}),e.jsx("div",{className:"flex-1 h-3 bg-[var(--color-bg-tertiary)] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full",style:{width:`${Math.min(i.tokens/l*100,100)}%`,backgroundColor:i.color}})}),e.jsxs("span",{className:"text-[var(--color-text-muted)] w-20 text-right",children:[i.tokens.toLocaleString()," tok"]})]},i.label))})})()]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Dependency Intelligence"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsx(s,{value:x.inferredDeps,label:"Auto Inferred"}),e.jsx(s,{value:`${x.blockedTasks}/${t.totalNodes}`,label:"Blocked Detected"}),e.jsx(s,{value:x.cycles,label:"Cycles Detected"})]})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Formulas & Justification"}),e.jsx("div",{className:"px-3 py-2 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-xs space-y-1","data-testid":"formulas-section",children:Object.entries(c).map(([l,o])=>e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("span",{className:"text-[var(--color-text-muted)] font-mono w-40 shrink-0",children:[l,":"]}),e.jsx("span",{children:o})]},l))})]}),r&&r.totalCalls>0&&e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Tool Token Usage"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3 mb-4",children:[e.jsx(s,{value:r.totalCalls.toLocaleString(),label:"Total Calls"}),e.jsx(s,{value:r.totalInputTokens.toLocaleString(),label:"Total Input Tokens"}),e.jsx(s,{value:r.totalOutputTokens.toLocaleString(),label:"Total Output Tokens"})]}),r.perTool.length>0&&(()=>{const l=Math.max(...r.perTool.map(o=>o.totalTokens),1);return e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-medium text-[var(--color-text-muted)] mb-2",children:"Token Usage per Tool"}),e.jsx("div",{className:"space-y-1.5","data-testid":"tool-token-bars",children:r.perTool.slice(0,15).map(o=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"w-32 truncate font-mono",title:o.toolName,children:o.toolName}),e.jsx("div",{className:"flex-1 h-3 bg-[var(--color-bg-tertiary)] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-[var(--color-accent)]",style:{width:`${Math.min(o.totalTokens/l*100,100)}%`}})}),e.jsxs("span",{className:"text-[var(--color-text-muted)] w-32 text-right",children:[o.callCount," calls, ",o.totalTokens.toLocaleString()," tok"]})]},o.toolName))})]})})()]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Cost Savings per Task"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsx(s,{value:`$${t.costSavings.opusPerTask.toFixed(3)}`,label:"Opus Input"}),e.jsx(s,{value:`$${t.costSavings.sonnetPerTask.toFixed(3)}`,label:"Sonnet Input"})]})]})]})}function s({value:n,label:d}){return e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-center","data-testid":"metric-card",children:[e.jsx("div",{className:"text-xl font-bold",children:n}),e.jsx("div",{className:"text-[10px] text-[var(--color-text-muted)] uppercase",children:d})]})}export{b as BenchmarkTab};
@@ -1 +1 @@
1
- const e={epic:"#7c3aed",task:"#2196f3",subtask:"#10b981",requirement:"#f59e0b",constraint:"#ef4444",milestone:"#8b5cf6",acceptance_criteria:"#06b6d4",risk:"#f97316",decision:"#ec4899"},o={done:"#4caf50",in_progress:"#2196f3",blocked:"#f44336",ready:"#ff9800",backlog:"#9e9e9e"},s={done:"Done",in_progress:"In Progress",blocked:"Blocked",ready:"Ready",backlog:"Backlog"},a={depends_on:{color:"#6c757d",dashed:!1,label:"depends on"},blocks:{color:"#f44336",dashed:!0,label:"blocks"},parent_of:{color:"#7c3aed",dashed:!1,label:"parent of"},child_of:{color:"#10b981",dashed:!1,label:"child of"},related_to:{color:"#9e9e9e",dashed:!0,label:"related to"},priority_over:{color:"#ff9800",dashed:!0,label:"priority over"},implements:{color:"#2196f3",dashed:!1,label:"implements"},derived_from:{color:"#06b6d4",dashed:!0,label:"derived from"}},c=["backlog","ready","in_progress","blocked","done"],d=["epic","task","subtask","requirement","constraint","milestone","acceptance_criteria","risk","decision"],l={function:"#4fc3f7",class:"#ce93d8",method:"#81c784",interface:"#4dd0e1",variable:"#ffd54f",module:"#b39ddb",file:"#90a4ae",folder:"#78909c"},r={imports:"#546e7a",calls:"#4fc3f7",belongs_to:"#ce93d8",extends:"#81c784",implements:"#4dd0e1"},t={belongs_to:"Contains",imports:"Imports",calls:"Calls",extends:"Extends",implements:"Implements"};export{c as A,l as C,a as E,e as N,o as S,d as a,r as b,t as c,s as d};
1
+ const e={epic:"#7c3aed",task:"#2196f3",subtask:"#10b981",requirement:"#f59e0b",constraint:"#ef4444",milestone:"#8b5cf6",acceptance_criteria:"#06b6d4",risk:"#f97316",decision:"#ec4899"},s={done:"#4caf50",in_progress:"#2196f3",blocked:"#f44336",ready:"#ff9800",backlog:"#9e9e9e"},o={done:"Done",in_progress:"In Progress",blocked:"Blocked",ready:"Ready",backlog:"Backlog"},a={depends_on:{color:"#6c757d",dashed:!1,label:"depends on"},blocks:{color:"#f44336",dashed:!0,label:"blocks"},parent_of:{color:"#7c3aed",dashed:!1,label:"parent of"},child_of:{color:"#10b981",dashed:!1,label:"child of"},related_to:{color:"#9e9e9e",dashed:!0,label:"related to"},priority_over:{color:"#ff9800",dashed:!0,label:"priority over"},implements:{color:"#2196f3",dashed:!1,label:"implements"},derived_from:{color:"#06b6d4",dashed:!0,label:"derived from"}},c=["backlog","ready","in_progress","blocked","done"],d=["epic","task","subtask","requirement","constraint","milestone","acceptance_criteria","risk","decision"],l=["ANALYZE","DESIGN","PLAN","IMPLEMENT","VALIDATE","REVIEW","HANDOFF","LISTENING"],t={ANALYZE:"#8b5cf6",DESIGN:"#3b82f6",PLAN:"#06b6d4",IMPLEMENT:"#10b981",VALIDATE:"#f59e0b",REVIEW:"#ef4444",HANDOFF:"#ec4899",LISTENING:"#6b7280"},r={function:"#4fc3f7",class:"#ce93d8",method:"#81c784",interface:"#4dd0e1",variable:"#ffd54f",module:"#b39ddb",file:"#90a4ae",folder:"#78909c"},n={imports:"#546e7a",calls:"#4fc3f7",belongs_to:"#ce93d8",extends:"#81c784",implements:"#4dd0e1"},i={belongs_to:"Contains",imports:"Imports",calls:"Calls",extends:"Extends",implements:"Implements"};export{c as A,r as C,a as E,l as L,e as N,t as P,s as S,d as a,n as b,i as c,o as d};
@@ -1 +1 @@
1
- import{r as o,a as x,j as e}from"./index-BAeZDWWy.js";function u(){const[t,n]=o.useState(null),[d,l]=o.useState(!0),[a,c]=o.useState(null),r=o.useCallback(async()=>{l(!0),c(null);try{const s=await x.getContextBudget();n(s)}catch(s){c(s instanceof Error?s.message:"Failed to load context budget")}finally{l(!1)}},[]);return o.useEffect(()=>{r()},[r]),{budget:t,loading:d,error:a,refresh:r}}const i={green:{bg:"bg-green-500/10",text:"text-green-500",border:"border-green-500/30"},yellow:{bg:"bg-yellow-500/10",text:"text-yellow-500",border:"border-yellow-500/30"},red:{bg:"bg-red-500/10",text:"text-red-500",border:"border-red-500/30"}};function h(){const{budget:t,loading:n,error:d,refresh:l}=u();if(d)return e.jsxs("div",{className:"flex items-center justify-center h-full text-[var(--color-danger)]",children:["Failed to load context budget: ",d]});if(n||!t)return e.jsx("div",{className:"flex items-center justify-center h-full text-[var(--color-text-muted)]",children:"Loading context budget..."});const a=i[t.health]??i.green,c=async r=>{await x.toggleSkill(r,!1),l()};return e.jsxs("div",{className:"p-6 max-w-6xl mx-auto space-y-6 overflow-y-auto h-full",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Context Management"}),e.jsx("button",{onClick:()=>l(),className:"text-xs px-3 py-1.5 rounded-lg bg-[var(--color-accent)] text-white hover:opacity-90 transition-opacity",children:"Refresh"})]}),e.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3",children:[e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-center",children:[e.jsx("div",{className:"text-xl font-bold",children:t.activeTokens.toLocaleString()}),e.jsx("div",{className:"text-[10px] text-[var(--color-text-muted)] uppercase",children:"Active Tokens"})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-center",children:[e.jsx("div",{className:"text-xl font-bold",children:t.totalTokens.toLocaleString()}),e.jsx("div",{className:"text-[10px] text-[var(--color-text-muted)] uppercase",children:"Total Tokens"})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-center",children:[e.jsx("div",{className:"text-xl font-bold",children:t.activeCount}),e.jsx("div",{className:"text-[10px] text-[var(--color-text-muted)] uppercase",children:"Active Skills"})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-center",children:[e.jsx("div",{className:"text-xl font-bold",children:t.totalCount}),e.jsx("div",{className:"text-[10px] text-[var(--color-text-muted)] uppercase",children:"Total Skills"})]})]}),e.jsxs("div",{className:`p-4 rounded-lg border ${a.bg} ${a.border}`,children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:`w-3 h-3 rounded-full ${t.health==="green"?"bg-green-500":t.health==="yellow"?"bg-yellow-500":"bg-red-500"}`}),e.jsxs("div",{children:[e.jsxs("div",{className:`text-sm font-medium ${a.text}`,children:["Session Health: ",t.health.charAt(0).toUpperCase()+t.health.slice(1)]}),e.jsx("div",{className:"text-xs text-[var(--color-text-muted)] mt-0.5",children:t.healthMessage})]})]}),t.recommendations.length>0&&e.jsx("div",{className:"mt-3 space-y-1",children:t.recommendations.map((r,s)=>e.jsx("div",{className:"text-xs text-[var(--color-text-muted)]",children:r},s))})]}),e.jsxs("div",{className:"p-4 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h3",{className:"text-xs font-semibold text-[var(--color-text-muted)] uppercase",children:"Token Budget"}),e.jsxs("span",{className:"text-xs text-[var(--color-text-muted)]",children:[t.activeTokens.toLocaleString()," / 4,000 (",Math.round(t.activeTokens/40),"%)"]})]}),e.jsxs("div",{className:"w-full h-3 rounded-full bg-[var(--color-border)] relative",children:[e.jsx("div",{className:"h-full rounded-full absolute top-0 left-0 opacity-20",style:{width:`${Math.min(Math.round(t.totalTokens/40),100)}%`,background:"#6b7280"}}),e.jsx("div",{className:"h-full rounded-full absolute top-0 left-0 transition-all",style:{width:`${Math.min(Math.round(t.activeTokens/40),100)}%`,background:t.health==="red"?"#ef4444":t.health==="yellow"?"#f59e0b":"#10b981"}})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xs font-semibold text-[var(--color-text-muted)] uppercase",children:"Token Breakdown by Skill"}),e.jsx("div",{className:"space-y-1",children:t.breakdown.map(r=>{const s=t.totalTokens>0?Math.round(r.tokens/t.totalTokens*100):0;return e.jsxs("div",{className:`flex items-center gap-3 p-2 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] ${r.enabled?"":"opacity-40"}`,children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs font-medium truncate",children:r.name}),e.jsx("span",{className:`px-1 py-0.5 rounded text-[9px] ${r.source==="custom"?"bg-purple-500/10 text-purple-500":"bg-blue-500/10 text-blue-500"}`,children:r.source})]}),e.jsx("div",{className:"w-full h-1 rounded-full bg-[var(--color-border)] mt-1",children:e.jsx("div",{className:"h-full rounded-full",style:{width:`${s}%`,background:r.enabled?"#3b82f6":"#6b7280"}})})]}),e.jsxs("span",{className:"text-[10px] text-[var(--color-text-muted)] shrink-0 w-16 text-right",children:[r.tokens.toLocaleString()," tok"]}),r.enabled&&e.jsx("button",{onClick:()=>void c(r.name),className:"text-[10px] px-1.5 py-0.5 rounded border border-[var(--color-border)] text-[var(--color-text-muted)] hover:text-red-500 hover:border-red-500/50 shrink-0",children:"Disable"})]},r.name)})})]})]})}export{h as ContextTab};
1
+ import{r as o,a as x,j as e}from"./index-dCyMex_p.js";function u(){const[t,n]=o.useState(null),[d,l]=o.useState(!0),[a,c]=o.useState(null),r=o.useCallback(async()=>{l(!0),c(null);try{const s=await x.getContextBudget();n(s)}catch(s){c(s instanceof Error?s.message:"Failed to load context budget")}finally{l(!1)}},[]);return o.useEffect(()=>{r()},[r]),{budget:t,loading:d,error:a,refresh:r}}const i={green:{bg:"bg-green-500/10",text:"text-green-500",border:"border-green-500/30"},yellow:{bg:"bg-yellow-500/10",text:"text-yellow-500",border:"border-yellow-500/30"},red:{bg:"bg-red-500/10",text:"text-red-500",border:"border-red-500/30"}};function h(){const{budget:t,loading:n,error:d,refresh:l}=u();if(d)return e.jsxs("div",{className:"flex items-center justify-center h-full text-[var(--color-danger)]",children:["Failed to load context budget: ",d]});if(n||!t)return e.jsx("div",{className:"flex items-center justify-center h-full text-[var(--color-text-muted)]",children:"Loading context budget..."});const a=i[t.health]??i.green,c=async r=>{await x.toggleSkill(r,!1),l()};return e.jsxs("div",{className:"p-6 max-w-6xl mx-auto space-y-6 overflow-y-auto h-full",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Context Management"}),e.jsx("button",{onClick:()=>l(),className:"text-xs px-3 py-1.5 rounded-lg bg-[var(--color-accent)] text-white hover:opacity-90 transition-opacity",children:"Refresh"})]}),e.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3",children:[e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-center",children:[e.jsx("div",{className:"text-xl font-bold",children:t.activeTokens.toLocaleString()}),e.jsx("div",{className:"text-[10px] text-[var(--color-text-muted)] uppercase",children:"Active Tokens"})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-center",children:[e.jsx("div",{className:"text-xl font-bold",children:t.totalTokens.toLocaleString()}),e.jsx("div",{className:"text-[10px] text-[var(--color-text-muted)] uppercase",children:"Total Tokens"})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-center",children:[e.jsx("div",{className:"text-xl font-bold",children:t.activeCount}),e.jsx("div",{className:"text-[10px] text-[var(--color-text-muted)] uppercase",children:"Active Skills"})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-center",children:[e.jsx("div",{className:"text-xl font-bold",children:t.totalCount}),e.jsx("div",{className:"text-[10px] text-[var(--color-text-muted)] uppercase",children:"Total Skills"})]})]}),e.jsxs("div",{className:`p-4 rounded-lg border ${a.bg} ${a.border}`,children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:`w-3 h-3 rounded-full ${t.health==="green"?"bg-green-500":t.health==="yellow"?"bg-yellow-500":"bg-red-500"}`}),e.jsxs("div",{children:[e.jsxs("div",{className:`text-sm font-medium ${a.text}`,children:["Session Health: ",t.health.charAt(0).toUpperCase()+t.health.slice(1)]}),e.jsx("div",{className:"text-xs text-[var(--color-text-muted)] mt-0.5",children:t.healthMessage})]})]}),t.recommendations.length>0&&e.jsx("div",{className:"mt-3 space-y-1",children:t.recommendations.map((r,s)=>e.jsx("div",{className:"text-xs text-[var(--color-text-muted)]",children:r},s))})]}),e.jsxs("div",{className:"p-4 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h3",{className:"text-xs font-semibold text-[var(--color-text-muted)] uppercase",children:"Token Budget"}),e.jsxs("span",{className:"text-xs text-[var(--color-text-muted)]",children:[t.activeTokens.toLocaleString()," / 4,000 (",Math.round(t.activeTokens/40),"%)"]})]}),e.jsxs("div",{className:"w-full h-3 rounded-full bg-[var(--color-border)] relative",children:[e.jsx("div",{className:"h-full rounded-full absolute top-0 left-0 opacity-20",style:{width:`${Math.min(Math.round(t.totalTokens/40),100)}%`,background:"#6b7280"}}),e.jsx("div",{className:"h-full rounded-full absolute top-0 left-0 transition-all",style:{width:`${Math.min(Math.round(t.activeTokens/40),100)}%`,background:t.health==="red"?"#ef4444":t.health==="yellow"?"#f59e0b":"#10b981"}})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-xs font-semibold text-[var(--color-text-muted)] uppercase",children:"Token Breakdown by Skill"}),e.jsx("div",{className:"space-y-1",children:t.breakdown.map(r=>{const s=t.totalTokens>0?Math.round(r.tokens/t.totalTokens*100):0;return e.jsxs("div",{className:`flex items-center gap-3 p-2 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] ${r.enabled?"":"opacity-40"}`,children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs font-medium truncate",children:r.name}),e.jsx("span",{className:`px-1 py-0.5 rounded text-[9px] ${r.source==="custom"?"bg-purple-500/10 text-purple-500":"bg-blue-500/10 text-blue-500"}`,children:r.source})]}),e.jsx("div",{className:"w-full h-1 rounded-full bg-[var(--color-border)] mt-1",children:e.jsx("div",{className:"h-full rounded-full",style:{width:`${s}%`,background:r.enabled?"#3b82f6":"#6b7280"}})})]}),e.jsxs("span",{className:"text-[10px] text-[var(--color-text-muted)] shrink-0 w-16 text-right",children:[r.tokens.toLocaleString()," tok"]}),r.enabled&&e.jsx("button",{onClick:()=>void c(r.name),className:"text-[10px] px-1.5 py-0.5 rounded border border-[var(--color-border)] text-[var(--color-text-muted)] hover:text-red-500 hover:border-red-500/50 shrink-0",children:"Disable"})]},r.name)})})]})]})}export{h as ContextTab};