cortex-tms 3.2.0 → 4.0.1

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 (190) hide show
  1. package/README.md +245 -526
  2. package/dist/cli.js +52 -32
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/archive.d.ts +5 -0
  5. package/dist/commands/archive.d.ts.map +1 -0
  6. package/dist/commands/archive.js +85 -0
  7. package/dist/commands/archive.js.map +1 -0
  8. package/dist/commands/auto-tier.d.ts +1 -1
  9. package/dist/commands/auto-tier.d.ts.map +1 -1
  10. package/dist/commands/auto-tier.js +77 -76
  11. package/dist/commands/auto-tier.js.map +1 -1
  12. package/dist/commands/dashboard.d.ts +3 -0
  13. package/dist/commands/dashboard.d.ts.map +1 -0
  14. package/dist/commands/dashboard.js +20 -0
  15. package/dist/commands/dashboard.js.map +1 -0
  16. package/dist/commands/init.d.ts +1 -1
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +73 -73
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/migrate.d.ts +2 -2
  21. package/dist/commands/migrate.d.ts.map +1 -1
  22. package/dist/commands/migrate.js +147 -136
  23. package/dist/commands/migrate.js.map +1 -1
  24. package/dist/commands/prompt.d.ts +1 -1
  25. package/dist/commands/prompt.d.ts.map +1 -1
  26. package/dist/commands/prompt.js +32 -31
  27. package/dist/commands/prompt.js.map +1 -1
  28. package/dist/commands/review.d.ts +1 -1
  29. package/dist/commands/review.d.ts.map +1 -1
  30. package/dist/commands/review.js +76 -58
  31. package/dist/commands/review.js.map +1 -1
  32. package/dist/commands/status.d.ts +2 -1
  33. package/dist/commands/status.d.ts.map +1 -1
  34. package/dist/commands/status.js +54 -144
  35. package/dist/commands/status.js.map +1 -1
  36. package/dist/commands/tutorial.d.ts +1 -1
  37. package/dist/commands/tutorial.js +168 -168
  38. package/dist/commands/tutorial.js.map +1 -1
  39. package/dist/commands/validate.d.ts +1 -1
  40. package/dist/commands/validate.d.ts.map +1 -1
  41. package/dist/commands/validate.js +60 -60
  42. package/dist/commands/validate.js.map +1 -1
  43. package/dist/types/cli.d.ts +23 -15
  44. package/dist/types/cli.d.ts.map +1 -1
  45. package/dist/types/guardian.d.ts +2 -2
  46. package/dist/ui/components/Dashboard.d.ts +11 -0
  47. package/dist/ui/components/Dashboard.d.ts.map +1 -0
  48. package/dist/ui/components/Dashboard.js +64 -0
  49. package/dist/ui/components/Dashboard.js.map +1 -0
  50. package/dist/ui/components/dashboard/ContextReductionCard.d.ts +9 -0
  51. package/dist/ui/components/dashboard/ContextReductionCard.d.ts.map +1 -0
  52. package/dist/ui/components/dashboard/ContextReductionCard.js +38 -0
  53. package/dist/ui/components/dashboard/ContextReductionCard.js.map +1 -0
  54. package/dist/ui/components/dashboard/CostSavingsCard.d.ts +10 -0
  55. package/dist/ui/components/dashboard/CostSavingsCard.d.ts.map +1 -0
  56. package/dist/ui/components/dashboard/CostSavingsCard.js +45 -0
  57. package/dist/ui/components/dashboard/CostSavingsCard.js.map +1 -0
  58. package/dist/ui/components/dashboard/FileDistributionCard.d.ts +10 -0
  59. package/dist/ui/components/dashboard/FileDistributionCard.d.ts.map +1 -0
  60. package/dist/ui/components/dashboard/FileDistributionCard.js +51 -0
  61. package/dist/ui/components/dashboard/FileDistributionCard.js.map +1 -0
  62. package/dist/ui/components/dashboard/FileSizeHealthCard.d.ts +15 -0
  63. package/dist/ui/components/dashboard/FileSizeHealthCard.d.ts.map +1 -0
  64. package/dist/ui/components/dashboard/FileSizeHealthCard.js +48 -0
  65. package/dist/ui/components/dashboard/FileSizeHealthCard.js.map +1 -0
  66. package/dist/ui/components/dashboard/Footer.d.ts +3 -0
  67. package/dist/ui/components/dashboard/Footer.d.ts.map +1 -0
  68. package/dist/ui/components/dashboard/Footer.js +13 -0
  69. package/dist/ui/components/dashboard/Footer.js.map +1 -0
  70. package/dist/ui/components/dashboard/GovernanceHealthCard.d.ts +10 -0
  71. package/dist/ui/components/dashboard/GovernanceHealthCard.d.ts.map +1 -0
  72. package/dist/ui/components/dashboard/GovernanceHealthCard.js +46 -0
  73. package/dist/ui/components/dashboard/GovernanceHealthCard.js.map +1 -0
  74. package/dist/ui/components/dashboard/GuardianStatusCard.d.ts +10 -0
  75. package/dist/ui/components/dashboard/GuardianStatusCard.d.ts.map +1 -0
  76. package/dist/ui/components/dashboard/GuardianStatusCard.js +71 -0
  77. package/dist/ui/components/dashboard/GuardianStatusCard.js.map +1 -0
  78. package/dist/ui/components/dashboard/Header.d.ts +7 -0
  79. package/dist/ui/components/dashboard/Header.d.ts.map +1 -0
  80. package/dist/ui/components/dashboard/Header.js +21 -0
  81. package/dist/ui/components/dashboard/Header.js.map +1 -0
  82. package/dist/ui/components/dashboard/HotFilesCard.d.ts +8 -0
  83. package/dist/ui/components/dashboard/HotFilesCard.d.ts.map +1 -0
  84. package/dist/ui/components/dashboard/HotFilesCard.js +28 -0
  85. package/dist/ui/components/dashboard/HotFilesCard.js.map +1 -0
  86. package/dist/ui/components/dashboard/NotConfiguredCard.d.ts +10 -0
  87. package/dist/ui/components/dashboard/NotConfiguredCard.d.ts.map +1 -0
  88. package/dist/ui/components/dashboard/NotConfiguredCard.js +13 -0
  89. package/dist/ui/components/dashboard/NotConfiguredCard.js.map +1 -0
  90. package/dist/ui/components/dashboard/SprintProgressCard.d.ts +11 -0
  91. package/dist/ui/components/dashboard/SprintProgressCard.d.ts.map +1 -0
  92. package/dist/ui/components/dashboard/SprintProgressCard.js +33 -0
  93. package/dist/ui/components/dashboard/SprintProgressCard.js.map +1 -0
  94. package/dist/ui/components/dashboard/StalenessCard.d.ts +10 -0
  95. package/dist/ui/components/dashboard/StalenessCard.d.ts.map +1 -0
  96. package/dist/ui/components/dashboard/StalenessCard.js +43 -0
  97. package/dist/ui/components/dashboard/StalenessCard.js.map +1 -0
  98. package/dist/ui/components/dashboard/TabBar.d.ts +8 -0
  99. package/dist/ui/components/dashboard/TabBar.d.ts.map +1 -0
  100. package/dist/ui/components/dashboard/TabBar.js +16 -0
  101. package/dist/ui/components/dashboard/TabBar.js.map +1 -0
  102. package/dist/ui/components/dashboard/ValidationCard.d.ts +10 -0
  103. package/dist/ui/components/dashboard/ValidationCard.d.ts.map +1 -0
  104. package/dist/ui/components/dashboard/ValidationCard.js +62 -0
  105. package/dist/ui/components/dashboard/ValidationCard.js.map +1 -0
  106. package/dist/ui/components/dashboard/ViewContainer.d.ts +14 -0
  107. package/dist/ui/components/dashboard/ViewContainer.d.ts.map +1 -0
  108. package/dist/ui/components/dashboard/ViewContainer.js +53 -0
  109. package/dist/ui/components/dashboard/ViewContainer.js.map +1 -0
  110. package/dist/ui/components/dashboard/index.d.ts +14 -0
  111. package/dist/ui/components/dashboard/index.d.ts.map +1 -0
  112. package/dist/ui/components/dashboard/index.js +14 -0
  113. package/dist/ui/components/dashboard/index.js.map +1 -0
  114. package/dist/ui/index.d.ts +5 -0
  115. package/dist/ui/index.d.ts.map +1 -0
  116. package/dist/ui/index.js +46 -0
  117. package/dist/ui/index.js.map +1 -0
  118. package/dist/utils/backup.d.ts.map +1 -1
  119. package/dist/utils/backup.js +20 -20
  120. package/dist/utils/backup.js.map +1 -1
  121. package/dist/utils/config.d.ts +1 -1
  122. package/dist/utils/config.js +68 -68
  123. package/dist/utils/detection.d.ts +1 -1
  124. package/dist/utils/detection.js +25 -25
  125. package/dist/utils/errors.d.ts.map +1 -1
  126. package/dist/utils/errors.js +4 -4
  127. package/dist/utils/errors.js.map +1 -1
  128. package/dist/utils/git-history.d.ts.map +1 -1
  129. package/dist/utils/git-history.js +9 -5
  130. package/dist/utils/git-history.js.map +1 -1
  131. package/dist/utils/git-staleness.d.ts +13 -0
  132. package/dist/utils/git-staleness.d.ts.map +1 -0
  133. package/dist/utils/git-staleness.js +129 -0
  134. package/dist/utils/git-staleness.js.map +1 -0
  135. package/dist/utils/guardian-prompt.d.ts.map +1 -1
  136. package/dist/utils/guardian-prompt.js +1 -1
  137. package/dist/utils/guardian-prompt.js.map +1 -1
  138. package/dist/utils/llm-client.d.ts +5 -5
  139. package/dist/utils/llm-client.d.ts.map +1 -1
  140. package/dist/utils/llm-client.js +56 -53
  141. package/dist/utils/llm-client.js.map +1 -1
  142. package/dist/utils/prompt-parser.d.ts.map +1 -1
  143. package/dist/utils/prompt-parser.js +13 -17
  144. package/dist/utils/prompt-parser.js.map +1 -1
  145. package/dist/utils/prompts.d.ts +1 -1
  146. package/dist/utils/prompts.d.ts.map +1 -1
  147. package/dist/utils/prompts.js +74 -49
  148. package/dist/utils/prompts.js.map +1 -1
  149. package/dist/utils/sanitize.js +6 -6
  150. package/dist/utils/sanitize.js.map +1 -1
  151. package/dist/utils/stats-collector.d.ts +56 -0
  152. package/dist/utils/stats-collector.d.ts.map +1 -0
  153. package/dist/utils/stats-collector.js +244 -0
  154. package/dist/utils/stats-collector.js.map +1 -0
  155. package/dist/utils/status.d.ts +1 -1
  156. package/dist/utils/status.d.ts.map +1 -1
  157. package/dist/utils/status.js +16 -16
  158. package/dist/utils/status.js.map +1 -1
  159. package/dist/utils/templates.d.ts +3 -3
  160. package/dist/utils/templates.d.ts.map +1 -1
  161. package/dist/utils/templates.js +59 -54
  162. package/dist/utils/templates.js.map +1 -1
  163. package/dist/utils/tier-tags.d.ts +1 -1
  164. package/dist/utils/tier-tags.js +2 -2
  165. package/dist/utils/token-counter.d.ts +1 -43
  166. package/dist/utils/token-counter.d.ts.map +1 -1
  167. package/dist/utils/token-counter.js +32 -80
  168. package/dist/utils/token-counter.js.map +1 -1
  169. package/dist/utils/validation.d.ts +2 -11
  170. package/dist/utils/validation.d.ts.map +1 -1
  171. package/dist/utils/validation.js +26 -39
  172. package/dist/utils/validation.js.map +1 -1
  173. package/dist/utils/validator.d.ts +1 -1
  174. package/dist/utils/validator.d.ts.map +1 -1
  175. package/dist/utils/validator.js +145 -73
  176. package/dist/utils/validator.js.map +1 -1
  177. package/package.json +10 -5
  178. package/templates/CLAUDE.md +1 -1
  179. package/templates/FUTURE-ENHANCEMENTS.md +1 -1
  180. package/templates/NEXT-TASKS.md +1 -1
  181. package/templates/PROMPTS.md +1 -1
  182. package/templates/README.md +1 -1
  183. package/templates/docs/archive/v1.0-CHANGELOG.md +1 -1
  184. package/templates/docs/core/ARCHITECTURE.md +1 -1
  185. package/templates/docs/core/DECISIONS.md +1 -1
  186. package/templates/docs/core/DOMAIN-LOGIC.md +1 -1
  187. package/templates/docs/core/GLOSSARY.md +1 -1
  188. package/templates/docs/core/PATTERNS.md +1 -1
  189. package/templates/docs/core/SCHEMA.md +1 -1
  190. package/templates/docs/core/TROUBLESHOOTING.md +1 -1
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ interface FileDistributionCardProps {
3
+ hot: number;
4
+ warm: number;
5
+ cold: number;
6
+ total: number;
7
+ }
8
+ export declare const FileDistributionCard: React.FC<FileDistributionCardProps>;
9
+ export {};
10
+ //# sourceMappingURL=FileDistributionCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDistributionCard.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/FileDistributionCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,yBAAyB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAwEpE,CAAC"}
@@ -0,0 +1,51 @@
1
+ import React from "react";
2
+ import { Box, Text, Newline } from "ink";
3
+ export const FileDistributionCard = ({ hot, warm, cold, total, }) => {
4
+ const getPercentage = (count) => Math.round((count / total) * 100);
5
+ const getBarLength = (count) => Math.round((count / total) * 20);
6
+ return (React.createElement(React.Fragment, null,
7
+ React.createElement(Box, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1 },
8
+ React.createElement(Text, { bold: true }, "\uD83D\uDCC1 FILE DISTRIBUTION"),
9
+ React.createElement(Newline, null),
10
+ React.createElement(Box, null,
11
+ React.createElement(Box, { width: 20 },
12
+ React.createElement(Text, { color: "yellow" }, "\uD83D\uDD25 HOT")),
13
+ React.createElement(Box, { width: 8 },
14
+ React.createElement(Text, { color: "white" }, hot)),
15
+ React.createElement(Text, { dimColor: true },
16
+ "(",
17
+ getPercentage(hot),
18
+ "%)"),
19
+ React.createElement(Box, null,
20
+ React.createElement(Text, { color: "yellow" }, "█".repeat(getBarLength(hot))),
21
+ React.createElement(Text, { dimColor: true }, "░".repeat(20 - getBarLength(hot))))),
22
+ React.createElement(Newline, null),
23
+ React.createElement(Box, null,
24
+ React.createElement(Box, { width: 20 },
25
+ React.createElement(Text, { color: "blue" }, "\uD83C\uDF21\uFE0F WARM")),
26
+ React.createElement(Box, { width: 8 },
27
+ React.createElement(Text, { color: "white" }, warm)),
28
+ React.createElement(Text, { dimColor: true },
29
+ "(",
30
+ getPercentage(warm),
31
+ "%)"),
32
+ React.createElement(Box, null,
33
+ React.createElement(Text, { color: "blue" }, "█".repeat(getBarLength(warm))),
34
+ React.createElement(Text, { dimColor: true }, "░".repeat(20 - getBarLength(warm))))),
35
+ React.createElement(Newline, null),
36
+ React.createElement(Box, null,
37
+ React.createElement(Box, { width: 20 },
38
+ React.createElement(Text, { color: "cyan" }, "\u2744\uFE0F COLD")),
39
+ React.createElement(Box, { width: 8 },
40
+ React.createElement(Text, { color: "white" }, cold)),
41
+ React.createElement(Text, { dimColor: true },
42
+ "(",
43
+ getPercentage(cold),
44
+ "%)"),
45
+ React.createElement(Box, null,
46
+ React.createElement(Text, { color: "cyan" }, "█".repeat(getBarLength(cold))),
47
+ React.createElement(Text, { dimColor: true }, "░".repeat(20 - getBarLength(cold)))))),
48
+ React.createElement(Newline, null),
49
+ React.createElement(Newline, null)));
50
+ };
51
+ //# sourceMappingURL=FileDistributionCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDistributionCard.js","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/FileDistributionCard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ interface FileSizeHealthItem {
3
+ file: string;
4
+ lines: number;
5
+ limit: number;
6
+ percent: number;
7
+ status: "healthy" | "warning" | "over";
8
+ }
9
+ interface FileSizeHealthCardProps {
10
+ files: FileSizeHealthItem[];
11
+ maxDisplay?: number;
12
+ }
13
+ export declare const FileSizeHealthCard: React.FC<FileSizeHealthCardProps>;
14
+ export {};
15
+ //# sourceMappingURL=FileSizeHealthCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSizeHealthCard.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/FileSizeHealthCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;CACxC;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAKD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAsEhE,CAAC"}
@@ -0,0 +1,48 @@
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ export const FileSizeHealthCard = ({ files, maxDisplay = 5, }) => {
4
+ const topFiles = files.slice(0, maxDisplay);
5
+ const overLimitCount = files.filter((f) => f.status === "over").length;
6
+ const getStatusDisplay = (status) => {
7
+ switch (status) {
8
+ case "over":
9
+ return { emoji: "🔴", color: "red" };
10
+ case "warning":
11
+ return { emoji: "🟡", color: "yellow" };
12
+ case "healthy":
13
+ return { emoji: "🟢", color: "green" };
14
+ default:
15
+ return { emoji: "⚪", color: "gray" };
16
+ }
17
+ };
18
+ return (React.createElement(Box, { flexDirection: "column", paddingY: 1, borderStyle: "round", borderColor: "yellow" },
19
+ React.createElement(Box, { paddingX: 2 },
20
+ React.createElement(Text, { bold: true, color: "yellow" }, "\uD83D\uDCCF FILE SIZE HEALTH")),
21
+ topFiles.length === 0 ? (React.createElement(Box, { paddingX: 2, paddingTop: 1 },
22
+ React.createElement(Text, { dimColor: true }, "No tracked files found"))) : (React.createElement(React.Fragment, null,
23
+ topFiles.map((file) => {
24
+ const { emoji, color } = getStatusDisplay(file.status);
25
+ return (React.createElement(Box, { key: file.file, paddingX: 2, paddingTop: 1 },
26
+ React.createElement(Text, null,
27
+ emoji,
28
+ " "),
29
+ React.createElement(Text, { color: color }, file.file.padEnd(30)),
30
+ React.createElement(Text, { dimColor: true },
31
+ " ",
32
+ file.lines,
33
+ "/",
34
+ file.limit,
35
+ " lines (",
36
+ file.percent,
37
+ "%)")));
38
+ }),
39
+ overLimitCount > 0 && (React.createElement(Box, { paddingX: 2, paddingTop: 1 },
40
+ React.createElement(Text, { color: "red", bold: true },
41
+ overLimitCount,
42
+ " file",
43
+ overLimitCount > 1 ? "s" : "",
44
+ " over limit"),
45
+ React.createElement(Text, { dimColor: true }, " \u2022 Run: "),
46
+ React.createElement(Text, { color: "cyan" }, "cortex-tms validate --fix")))))));
47
+ };
48
+ //# sourceMappingURL=FileSizeHealthCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSizeHealthCard.js","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/FileSizeHealthCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAkBhC,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EACpE,KAAK,EACL,UAAU,GAAG,CAAC,GACf,EAAE,EAAE;IAEH,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAG5C,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAGvE,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,EAAE;QAC1C,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC;YAChD,KAAK,SAAS;gBACZ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAiB,EAAE,CAAC;YACnD,KAAK,SAAS;gBACZ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAgB,EAAE,CAAC;YAClD;gBACE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAe,EAAE,CAAC;QAClD,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,QAAQ,EAAE,CAAC,EACX,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,QAAQ;QAEpB,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC;YACd,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,QAAQ,oCAElB,CACH;QAEL,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC7B,oBAAC,IAAI,IAAC,QAAQ,mCAA8B,CACxC,CACP,CAAC,CAAC,CAAC,CACF;YACG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvD,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;oBAC7C,oBAAC,IAAI;wBAAE,KAAK;4BAAS;oBACrB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,IAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAQ;oBACjD,oBAAC,IAAI,IAAC,QAAQ;wBACX,GAAG;wBACH,IAAI,CAAC,KAAK;;wBAAG,IAAI,CAAC,KAAK;;wBAAU,IAAI,CAAC,OAAO;6BACzC,CACH,CACP,CAAC;YACJ,CAAC,CAAC;YAED,cAAc,GAAG,CAAC,IAAI,CACrB,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;gBAC7B,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI;oBACnB,cAAc;;oBAAO,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;kCAC9C;gBACP,oBAAC,IAAI,IAAC,QAAQ,0BAAgB;gBAC9B,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,gCAAiC,CAC/C,CACP,CACA,CACJ,CACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export declare const Footer: React.FC;
3
+ //# sourceMappingURL=Footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/Footer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAa1B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ export const Footer = () => {
4
+ return (React.createElement(Box, { flexDirection: "column", paddingTop: 1 },
5
+ React.createElement(Box, { justifyContent: "center" },
6
+ React.createElement(Text, { dimColor: true }, "Tab: Switch view \u2022 1/2/3: Jump to view \u2022 q: Quit")),
7
+ React.createElement(Box, { justifyContent: "center" },
8
+ React.createElement(Text, { dimColor: true },
9
+ "Use ",
10
+ React.createElement(Text, { color: "cyan" }, "--live"),
11
+ " for auto-refresh (5s interval)"))));
12
+ };
13
+ //# sourceMappingURL=Footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/Footer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,MAAM,CAAC,MAAM,MAAM,GAAa,GAAG,EAAE;IACnC,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC;QACvC,oBAAC,GAAG,IAAC,cAAc,EAAC,QAAQ;YAC1B,oBAAC,IAAI,IAAC,QAAQ,uEAAwD,CAClE;QACN,oBAAC,GAAG,IAAC,cAAc,EAAC,QAAQ;YAC1B,oBAAC,IAAI,IAAC,QAAQ;;gBACR,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aAAc;kDAC/B,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ interface GovernanceHealthCardProps {
3
+ score: number;
4
+ validationStatus: "healthy" | "warnings" | "errors" | "unknown";
5
+ guardianStatus: "compliant" | "minor_issues" | "major_violations" | "unknown";
6
+ staleness: number;
7
+ }
8
+ export declare const GovernanceHealthCard: React.FC<GovernanceHealthCardProps>;
9
+ export {};
10
+ //# sourceMappingURL=GovernanceHealthCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GovernanceHealthCard.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/GovernanceHealthCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,yBAAyB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChE,cAAc,EAAE,WAAW,GAAG,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAAC;IAC9E,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAuEpE,CAAC"}
@@ -0,0 +1,46 @@
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ export const GovernanceHealthCard = ({ score, validationStatus, guardianStatus, staleness, }) => {
4
+ const getScoreColor = (score) => {
5
+ if (score >= 80)
6
+ return "green";
7
+ if (score >= 60)
8
+ return "yellow";
9
+ return "red";
10
+ };
11
+ const getStatusEmoji = () => {
12
+ if (score >= 80)
13
+ return "✅";
14
+ if (score >= 60)
15
+ return "⚠️";
16
+ return "❌";
17
+ };
18
+ const scoreColor = getScoreColor(score);
19
+ return (React.createElement(Box, { flexDirection: "column", paddingY: 1, borderStyle: "round", borderColor: scoreColor },
20
+ React.createElement(Box, { paddingX: 2 },
21
+ React.createElement(Text, { bold: true, color: scoreColor },
22
+ getStatusEmoji(),
23
+ " GOVERNANCE HEALTH")),
24
+ React.createElement(Box, { paddingX: 2, paddingTop: 1, justifyContent: "center" },
25
+ React.createElement(Text, { color: scoreColor, bold: true },
26
+ score,
27
+ "/100")),
28
+ React.createElement(Box, { paddingX: 2, justifyContent: "center" },
29
+ React.createElement(Text, { dimColor: true }, "overall quality score")),
30
+ React.createElement(Box, { paddingX: 2, paddingTop: 1 },
31
+ React.createElement(Text, { dimColor: true },
32
+ "Validation:",
33
+ " ",
34
+ React.createElement(Text, { color: validationStatus === "healthy" ? "green" : "yellow" }, validationStatus))),
35
+ React.createElement(Box, { paddingX: 2 },
36
+ React.createElement(Text, { dimColor: true },
37
+ "Guardian:",
38
+ " ",
39
+ React.createElement(Text, { color: guardianStatus === "compliant" ? "green" : "yellow" }, guardianStatus))),
40
+ React.createElement(Box, { paddingX: 2 },
41
+ React.createElement(Text, { dimColor: true },
42
+ "Stale docs:",
43
+ " ",
44
+ React.createElement(Text, { color: staleness === 0 ? "green" : "yellow" }, staleness)))));
45
+ };
46
+ //# sourceMappingURL=GovernanceHealthCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GovernanceHealthCard.js","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/GovernanceHealthCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAYhC,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EACxE,KAAK,EACL,gBAAgB,EAChB,cAAc,EACd,SAAS,GACV,EAAE,EAAE;IAEH,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE;QAC9C,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,OAAO,CAAC;QAChC,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,QAAQ,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAGF,MAAM,cAAc,GAAG,GAAW,EAAE;QAClC,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,GAAG,CAAC;QAC5B,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAExC,OAAO,CACL,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,QAAQ,EAAE,CAAC,EACX,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,UAAU;QAEvB,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC;YACd,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,UAAU;gBACzB,cAAc,EAAE;qCACZ,CACH;QAEN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,cAAc,EAAC,QAAQ;YACtD,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,EAAE,IAAI;gBAC1B,KAAK;uBACD,CACH;QAEN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAC,QAAQ;YACvC,oBAAC,IAAI,IAAC,QAAQ,kCAA6B,CACvC;QAEN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC7B,oBAAC,IAAI,IAAC,QAAQ;;gBACA,GAAG;gBACf,oBAAC,IAAI,IAAC,KAAK,EAAE,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAC7D,gBAAgB,CACZ,CACF,CACH;QAEN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC;YACd,oBAAC,IAAI,IAAC,QAAQ;;gBACF,GAAG;gBACb,oBAAC,IAAI,IAAC,KAAK,EAAE,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAC7D,cAAc,CACV,CACF,CACH;QAEN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC;YACd,oBAAC,IAAI,IAAC,QAAQ;;gBACA,GAAG;gBACf,oBAAC,IAAI,IAAC,KAAK,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAG,SAAS,CAAQ,CAChE,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ interface GuardianStatusCardProps {
3
+ status: "compliant" | "minor_issues" | "major_violations" | "unknown";
4
+ violationCount: number;
5
+ highConfidenceCount: number;
6
+ lastChecked: Date | null;
7
+ }
8
+ export declare const GuardianStatusCard: React.FC<GuardianStatusCardProps>;
9
+ export {};
10
+ //# sourceMappingURL=GuardianStatusCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuardianStatusCard.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/GuardianStatusCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,uBAAuB;IAC/B,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAAC;IACtE,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;CAC1B;AAKD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA+FhE,CAAC"}
@@ -0,0 +1,71 @@
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ export const GuardianStatusCard = ({ status, violationCount, highConfidenceCount, lastChecked, }) => {
4
+ const formatTimeAgo = (date) => {
5
+ const now = new Date();
6
+ const diffMs = now.getTime() - date.getTime();
7
+ const diffMins = Math.floor(diffMs / 60000);
8
+ const diffHours = Math.floor(diffMins / 60);
9
+ const diffDays = Math.floor(diffHours / 24);
10
+ if (diffDays > 0)
11
+ return `${diffDays} day${diffDays > 1 ? "s" : ""} ago`;
12
+ if (diffHours > 0)
13
+ return `${diffHours} hour${diffHours > 1 ? "s" : ""} ago`;
14
+ if (diffMins > 0)
15
+ return `${diffMins} minute${diffMins > 1 ? "s" : ""} ago`;
16
+ return "just now";
17
+ };
18
+ const getStatusDisplay = () => {
19
+ switch (status) {
20
+ case "compliant":
21
+ return { emoji: "✅", label: "All Clear", color: "green" };
22
+ case "minor_issues":
23
+ return {
24
+ emoji: "⚠️ ",
25
+ label: "Minor Issues Found",
26
+ color: "yellow",
27
+ };
28
+ case "major_violations":
29
+ return {
30
+ emoji: "❌",
31
+ label: "Major Violations",
32
+ color: "red",
33
+ };
34
+ default:
35
+ return {
36
+ emoji: "❓",
37
+ label: "Not Reviewed Yet",
38
+ color: "gray",
39
+ };
40
+ }
41
+ };
42
+ const { emoji, label, color } = getStatusDisplay();
43
+ return (React.createElement(Box, { flexDirection: "column", paddingY: 1, borderStyle: "round", borderColor: color },
44
+ React.createElement(Box, { paddingX: 2 },
45
+ React.createElement(Text, { bold: true, color: color }, "\uD83D\uDEE1\uFE0F GUARDIAN CODE REVIEW")),
46
+ React.createElement(Box, { paddingX: 2, paddingTop: 1 },
47
+ React.createElement(Text, { color: color },
48
+ emoji,
49
+ " ",
50
+ label)),
51
+ lastChecked ? (React.createElement(React.Fragment, null,
52
+ React.createElement(Box, { paddingX: 2, paddingTop: 1 },
53
+ React.createElement(Text, { dimColor: true },
54
+ "Last review: ",
55
+ formatTimeAgo(lastChecked))),
56
+ violationCount > 0 && (React.createElement(Box, { paddingX: 2 },
57
+ React.createElement(Text, { dimColor: true },
58
+ "Violations: ",
59
+ violationCount,
60
+ " total (",
61
+ highConfidenceCount,
62
+ " ",
63
+ "high-confidence)"))))) : (React.createElement(Box, { paddingX: 2, paddingTop: 1 },
64
+ React.createElement(Text, { dimColor: true }, "No reviews performed yet"))),
65
+ React.createElement(Box, { paddingX: 2, paddingTop: 1 },
66
+ React.createElement(Text, { dimColor: true }, "Run: "),
67
+ React.createElement(Text, { color: "cyan" },
68
+ "cortex-tms review ",
69
+ "<file>"))));
70
+ };
71
+ //# sourceMappingURL=GuardianStatusCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuardianStatusCard.js","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/GuardianStatusCard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ interface HeaderProps {
3
+ projectName: string;
4
+ }
5
+ export declare const Header: React.FC<HeaderProps>;
6
+ export {};
7
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA8BxC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import React, { useState, useEffect } from "react";
2
+ import { Box, Text, Newline } from "ink";
3
+ export const Header = ({ projectName }) => {
4
+ const [time, setTime] = useState(new Date());
5
+ useEffect(() => {
6
+ const interval = setInterval(() => setTime(new Date()), 1000);
7
+ return () => clearInterval(interval);
8
+ }, []);
9
+ return (React.createElement(React.Fragment, null,
10
+ React.createElement(Box, { justifyContent: "center" },
11
+ React.createElement(Text, { bold: true, color: "cyan" }, "\uD83E\uDDE0 CORTEX TMS DASHBOARD")),
12
+ React.createElement(Newline, null),
13
+ React.createElement(Box, { justifyContent: "space-between" },
14
+ React.createElement(Text, { dimColor: true },
15
+ "Project: ",
16
+ React.createElement(Text, { color: "white" }, projectName)),
17
+ React.createElement(Text, { dimColor: true }, time.toLocaleTimeString())),
18
+ React.createElement(Newline, null),
19
+ React.createElement(Newline, null)));
20
+ };
21
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAMzC,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;IAC/D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAG7C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9D,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL;QACE,oBAAC,GAAG,IAAC,cAAc,EAAC,QAAQ;YAC1B,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,wCAEhB,CACH;QAEN,oBAAC,OAAO,OAAG;QAEX,oBAAC,GAAG,IAAC,cAAc,EAAC,eAAe;YACjC,oBAAC,IAAI,IAAC,QAAQ;;gBACH,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,WAAW,CAAQ,CAC5C;YACP,oBAAC,IAAI,IAAC,QAAQ,UAAE,IAAI,CAAC,kBAAkB,EAAE,CAAQ,CAC7C;QAEN,oBAAC,OAAO,OAAG;QACX,oBAAC,OAAO,OAAG,CACV,CACJ,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ interface HotFilesCardProps {
3
+ hotFiles: string[];
4
+ count: number;
5
+ }
6
+ export declare const HotFilesCard: React.FC<HotFilesCardProps>;
7
+ export {};
8
+ //# sourceMappingURL=HotFilesCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HotFilesCard.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/HotFilesCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAkDpD,CAAC"}
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ import { Box, Text, Newline } from "ink";
3
+ export const HotFilesCard = ({ hotFiles, count, }) => {
4
+ return (React.createElement(React.Fragment, null,
5
+ React.createElement(Box, { flexDirection: "column", borderStyle: "single", borderColor: "yellow", paddingX: 1 },
6
+ React.createElement(Text, { bold: true, color: "yellow" },
7
+ "\uD83D\uDD25 ACTIVE FILES (",
8
+ count,
9
+ ")"),
10
+ React.createElement(Newline, null),
11
+ count > 0 ? (React.createElement(Box, { flexDirection: "column" },
12
+ hotFiles.slice(0, 5).map((file, i) => (React.createElement(Box, { key: i },
13
+ React.createElement(Text, { dimColor: true }, " \u2022 "),
14
+ React.createElement(Text, { color: "white" }, file)))),
15
+ count > 5 && (React.createElement(React.Fragment, null,
16
+ React.createElement(Newline, null),
17
+ React.createElement(Text, { dimColor: true },
18
+ " +",
19
+ count - 5,
20
+ " more files"))))) : (React.createElement(Box, null,
21
+ React.createElement(Text, { dimColor: true }, " No HOT files detected"))),
22
+ React.createElement(Newline, null),
23
+ React.createElement(Box, null,
24
+ React.createElement(Text, { dimColor: true }, "These files are always loaded by AI assistants"))),
25
+ React.createElement(Newline, null),
26
+ React.createElement(Newline, null)));
27
+ };
28
+ //# sourceMappingURL=HotFilesCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HotFilesCard.js","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/HotFilesCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAOzC,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,QAAQ,EACR,KAAK,GACN,EAAE,EAAE;IACH,OAAO,CACL;QACE,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,QAAQ,EACpB,QAAQ,EAAE,CAAC;YAEX,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,QAAQ;;gBACL,KAAK;oBAClB;YAEP,oBAAC,OAAO,OAAG;YAEV,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACX,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;gBACxB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACrC,oBAAC,GAAG,IAAC,GAAG,EAAE,CAAC;oBACT,oBAAC,IAAI,IAAC,QAAQ,qBAAW;oBACzB,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,IAAI,CAAQ,CAC7B,CACP,CAAC;gBACD,KAAK,GAAG,CAAC,IAAI,CACZ;oBACE,oBAAC,OAAO,OAAG;oBACX,oBAAC,IAAI,IAAC,QAAQ;;wBAAI,KAAK,GAAG,CAAC;sCAAmB,CAC7C,CACJ,CACG,CACP,CAAC,CAAC,CAAC,CACF,oBAAC,GAAG;gBACF,oBAAC,IAAI,IAAC,QAAQ,mCAA8B,CACxC,CACP;YAED,oBAAC,OAAO,OAAG;YAEX,oBAAC,GAAG;gBACF,oBAAC,IAAI,IAAC,QAAQ,2DAAsD,CAChE,CACF;QAEN,oBAAC,OAAO,OAAG;QACX,oBAAC,OAAO,OAAG,CACV,CACJ,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ interface NotConfiguredCardProps {
3
+ title: string;
4
+ message: string;
5
+ icon?: string;
6
+ color?: "gray" | "yellow" | "cyan";
7
+ }
8
+ export declare const NotConfiguredCard: React.FC<NotConfiguredCardProps>;
9
+ export {};
10
+ //# sourceMappingURL=NotConfiguredCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotConfiguredCard.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/NotConfiguredCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;CACpC;AAKD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAwB9D,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ export const NotConfiguredCard = ({ title, message, icon = "⚙️ ", color = "gray", }) => {
4
+ return (React.createElement(Box, { flexDirection: "column", paddingY: 1, borderStyle: "round", borderColor: color },
5
+ React.createElement(Box, { paddingX: 2 },
6
+ React.createElement(Text, { bold: true, color: color },
7
+ icon,
8
+ " ",
9
+ title)),
10
+ React.createElement(Box, { paddingX: 2, paddingTop: 1 },
11
+ React.createElement(Text, { dimColor: true }, message))));
12
+ };
13
+ //# sourceMappingURL=NotConfiguredCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotConfiguredCard.js","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/NotConfiguredCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAYhC,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAClE,KAAK,EACL,OAAO,EACP,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,MAAM,GACf,EAAE,EAAE;IACH,OAAO,CACL,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,QAAQ,EAAE,CAAC,EACX,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,KAAK;QAElB,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC;YACd,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,KAAK;gBACpB,IAAI;;gBAAG,KAAK,CACR,CACH;QAEN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC7B,oBAAC,IAAI,IAAC,QAAQ,UAAE,OAAO,CAAQ,CAC3B,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ interface SprintProgressCardProps {
3
+ sprintName: string;
4
+ progress: number;
5
+ done: number;
6
+ inProgress: number;
7
+ todo: number;
8
+ }
9
+ export declare const SprintProgressCard: React.FC<SprintProgressCardProps>;
10
+ export {};
11
+ //# sourceMappingURL=SprintProgressCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SprintProgressCard.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/SprintProgressCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,uBAAuB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAKD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAgDhE,CAAC"}
@@ -0,0 +1,33 @@
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ export const SprintProgressCard = ({ sprintName, progress, done, inProgress, todo, }) => {
4
+ const barWidth = 40;
5
+ const filled = Math.round((progress / 100) * barWidth);
6
+ const empty = barWidth - filled;
7
+ const progressBar = "█".repeat(filled) + "░".repeat(empty);
8
+ return (React.createElement(Box, { flexDirection: "column", paddingY: 1, borderStyle: "round", borderColor: "cyan" },
9
+ React.createElement(Box, { paddingX: 2 },
10
+ React.createElement(Text, { bold: true, color: "cyan" }, "\uD83C\uDFAF SPRINT PROGRESS")),
11
+ React.createElement(Box, { paddingX: 2, paddingTop: 1 },
12
+ React.createElement(Text, { dimColor: true }, "Current: "),
13
+ React.createElement(Text, null, sprintName)),
14
+ React.createElement(Box, { paddingX: 2, paddingTop: 1 },
15
+ React.createElement(Text, { color: "green" }, progressBar),
16
+ React.createElement(Text, { color: "cyan", bold: true },
17
+ " ",
18
+ progress,
19
+ "%")),
20
+ React.createElement(Box, { paddingX: 2, paddingTop: 1 },
21
+ React.createElement(Text, { color: "green" },
22
+ "\u2705 Done: ",
23
+ done),
24
+ React.createElement(Text, { dimColor: true }, " | "),
25
+ React.createElement(Text, { color: "yellow" },
26
+ "\uD83D\uDD04 In Progress: ",
27
+ inProgress),
28
+ React.createElement(Text, { dimColor: true }, " | "),
29
+ React.createElement(Text, { color: "gray" },
30
+ "\uD83D\uDCCB Todo: ",
31
+ todo))));
32
+ };
33
+ //# sourceMappingURL=SprintProgressCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SprintProgressCard.js","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/SprintProgressCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAahC,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EACpE,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,IAAI,GACL,EAAE,EAAE;IAEH,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChC,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE3D,OAAO,CACL,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,QAAQ,EAAE,CAAC,EACX,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM;QAElB,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC;YACd,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,mCAEhB,CACH;QAEN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC7B,oBAAC,IAAI,IAAC,QAAQ,sBAAiB;YAC/B,oBAAC,IAAI,QAAE,UAAU,CAAQ,CACrB;QAEN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC7B,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,WAAW,CAAQ;YACxC,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI;gBACpB,GAAG;gBACH,QAAQ;oBACJ,CACH;QAEN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC7B,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO;;gBAAU,IAAI,CAAQ;YACzC,oBAAC,IAAI,IAAC,QAAQ,gBAAW;YACzB,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ;;gBAAkB,UAAU,CAAQ;YACxD,oBAAC,IAAI,IAAC,QAAQ,gBAAW;YACzB,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;gBAAW,IAAI,CAAQ,CACrC,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ interface StalenessCardProps {
3
+ staleDocsCount: number;
4
+ totalDocsCount: number;
5
+ freshnessPercent: number;
6
+ oldestDocDays?: number | undefined;
7
+ }
8
+ export declare const StalenessCard: React.FC<StalenessCardProps>;
9
+ export {};
10
+ //# sourceMappingURL=StalenessCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StalenessCard.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/StalenessCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,kBAAkB;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAKD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA6EtD,CAAC"}
@@ -0,0 +1,43 @@
1
+ import React from "react";
2
+ import { Box, Text, Newline } from "ink";
3
+ export const StalenessCard = ({ staleDocsCount, totalDocsCount, freshnessPercent, oldestDocDays, }) => {
4
+ const isFresh = staleDocsCount === 0;
5
+ const color = isFresh ? "green" : freshnessPercent >= 70 ? "yellow" : "red";
6
+ return (React.createElement(React.Fragment, null,
7
+ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: color, padding: 1 },
8
+ React.createElement(Box, { justifyContent: "center" },
9
+ React.createElement(Text, { bold: true, color: color }, "\uD83D\uDCC5 DOCUMENTATION FRESHNESS")),
10
+ React.createElement(Newline, null),
11
+ React.createElement(Box, { justifyContent: "center" },
12
+ React.createElement(Text, { bold: true, color: color, dimColor: false }, "█".repeat(Math.min(40, Math.round(freshnessPercent / 2.5))))),
13
+ React.createElement(Newline, null),
14
+ React.createElement(Box, { justifyContent: "center" },
15
+ React.createElement(Text, { bold: true, color: color },
16
+ React.createElement(Text, { color: "white", bold: true, underline: true },
17
+ freshnessPercent.toFixed(0),
18
+ "%"))),
19
+ React.createElement(Newline, null),
20
+ React.createElement(Box, { justifyContent: "center" },
21
+ React.createElement(Text, { dimColor: true },
22
+ "Fresh docs:",
23
+ " ",
24
+ React.createElement(Text, { color: color },
25
+ totalDocsCount - staleDocsCount,
26
+ "/",
27
+ totalDocsCount))),
28
+ oldestDocDays !== undefined && oldestDocDays > 0 && (React.createElement(Box, { justifyContent: "center" },
29
+ React.createElement(Text, { dimColor: true },
30
+ "Oldest:",
31
+ " ",
32
+ React.createElement(Text, { color: oldestDocDays > 60 ? "red" : "yellow" },
33
+ oldestDocDays,
34
+ " days")))),
35
+ React.createElement(Box, { justifyContent: "center" },
36
+ React.createElement(Text, { dimColor: true },
37
+ "Status:",
38
+ " ",
39
+ React.createElement(Text, { color: color }, isFresh ? "All docs current" : `${staleDocsCount} need review`)))),
40
+ React.createElement(Newline, null),
41
+ React.createElement(Newline, null)));
42
+ };
43
+ //# sourceMappingURL=StalenessCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StalenessCard.js","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/StalenessCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAYzC,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,cAAc,KAAK,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IAE5E,OAAO,CACL;QACE,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,KAAK,EAClB,OAAO,EAAE,CAAC;YAEV,oBAAC,GAAG,IAAC,cAAc,EAAC,QAAQ;gBAC1B,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,KAAK,2CAEhB,CACH;YAEN,oBAAC,OAAO,OAAG;YAEX,oBAAC,GAAG,IAAC,cAAc,EAAC,QAAQ;gBAC1B,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,IACrC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,CACxD,CACH;YAEN,oBAAC,OAAO,OAAG;YAEX,oBAAC,GAAG,IAAC,cAAc,EAAC,QAAQ;gBAC1B,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,KAAK;oBACrB,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,QAAC,SAAS;wBAC/B,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;4BACvB,CACF,CACH;YAEN,oBAAC,OAAO,OAAG;YAEX,oBAAC,GAAG,IAAC,cAAc,EAAC,QAAQ;gBAC1B,oBAAC,IAAI,IAAC,QAAQ;;oBACA,GAAG;oBACf,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK;wBACf,cAAc,GAAG,cAAc;;wBAAG,cAAc,CAC5C,CACF,CACH;YAEL,aAAa,KAAK,SAAS,IAAI,aAAa,GAAG,CAAC,IAAI,CACnD,oBAAC,GAAG,IAAC,cAAc,EAAC,QAAQ;gBAC1B,oBAAC,IAAI,IAAC,QAAQ;;oBACJ,GAAG;oBACX,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;wBAC/C,aAAa;gCACT,CACF,CACH,CACP;YAED,oBAAC,GAAG,IAAC,cAAc,EAAC,QAAQ;gBAC1B,oBAAC,IAAI,IAAC,QAAQ;;oBACJ,GAAG;oBACX,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,IACf,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,cAAc,cAAc,CAC1D,CACF,CACH,CACF;QAEN,oBAAC,OAAO,OAAG;QACX,oBAAC,OAAO,OAAG,CACV,CACJ,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ export type ViewType = "overview" | "files" | "health";
3
+ interface TabBarProps {
4
+ activeView: ViewType;
5
+ }
6
+ export declare const TabBar: React.FC<TabBarProps>;
7
+ export {};
8
+ //# sourceMappingURL=TabBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/dashboard/TabBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvD,UAAU,WAAW;IACnB,UAAU,EAAE,QAAQ,CAAC;CACtB;AAKD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsBxC,CAAC"}