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.
- package/README.md +245 -526
- package/dist/cli.js +52 -32
- package/dist/cli.js.map +1 -1
- package/dist/commands/archive.d.ts +5 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +85 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/auto-tier.d.ts +1 -1
- package/dist/commands/auto-tier.d.ts.map +1 -1
- package/dist/commands/auto-tier.js +77 -76
- package/dist/commands/auto-tier.js.map +1 -1
- package/dist/commands/dashboard.d.ts +3 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +20 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +73 -73
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +2 -2
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +147 -136
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/prompt.d.ts +1 -1
- package/dist/commands/prompt.d.ts.map +1 -1
- package/dist/commands/prompt.js +32 -31
- package/dist/commands/prompt.js.map +1 -1
- package/dist/commands/review.d.ts +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +76 -58
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/status.d.ts +2 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +54 -144
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/tutorial.d.ts +1 -1
- package/dist/commands/tutorial.js +168 -168
- package/dist/commands/tutorial.js.map +1 -1
- package/dist/commands/validate.d.ts +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +60 -60
- package/dist/commands/validate.js.map +1 -1
- package/dist/types/cli.d.ts +23 -15
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/guardian.d.ts +2 -2
- package/dist/ui/components/Dashboard.d.ts +11 -0
- package/dist/ui/components/Dashboard.d.ts.map +1 -0
- package/dist/ui/components/Dashboard.js +64 -0
- package/dist/ui/components/Dashboard.js.map +1 -0
- package/dist/ui/components/dashboard/ContextReductionCard.d.ts +9 -0
- package/dist/ui/components/dashboard/ContextReductionCard.d.ts.map +1 -0
- package/dist/ui/components/dashboard/ContextReductionCard.js +38 -0
- package/dist/ui/components/dashboard/ContextReductionCard.js.map +1 -0
- package/dist/ui/components/dashboard/CostSavingsCard.d.ts +10 -0
- package/dist/ui/components/dashboard/CostSavingsCard.d.ts.map +1 -0
- package/dist/ui/components/dashboard/CostSavingsCard.js +45 -0
- package/dist/ui/components/dashboard/CostSavingsCard.js.map +1 -0
- package/dist/ui/components/dashboard/FileDistributionCard.d.ts +10 -0
- package/dist/ui/components/dashboard/FileDistributionCard.d.ts.map +1 -0
- package/dist/ui/components/dashboard/FileDistributionCard.js +51 -0
- package/dist/ui/components/dashboard/FileDistributionCard.js.map +1 -0
- package/dist/ui/components/dashboard/FileSizeHealthCard.d.ts +15 -0
- package/dist/ui/components/dashboard/FileSizeHealthCard.d.ts.map +1 -0
- package/dist/ui/components/dashboard/FileSizeHealthCard.js +48 -0
- package/dist/ui/components/dashboard/FileSizeHealthCard.js.map +1 -0
- package/dist/ui/components/dashboard/Footer.d.ts +3 -0
- package/dist/ui/components/dashboard/Footer.d.ts.map +1 -0
- package/dist/ui/components/dashboard/Footer.js +13 -0
- package/dist/ui/components/dashboard/Footer.js.map +1 -0
- package/dist/ui/components/dashboard/GovernanceHealthCard.d.ts +10 -0
- package/dist/ui/components/dashboard/GovernanceHealthCard.d.ts.map +1 -0
- package/dist/ui/components/dashboard/GovernanceHealthCard.js +46 -0
- package/dist/ui/components/dashboard/GovernanceHealthCard.js.map +1 -0
- package/dist/ui/components/dashboard/GuardianStatusCard.d.ts +10 -0
- package/dist/ui/components/dashboard/GuardianStatusCard.d.ts.map +1 -0
- package/dist/ui/components/dashboard/GuardianStatusCard.js +71 -0
- package/dist/ui/components/dashboard/GuardianStatusCard.js.map +1 -0
- package/dist/ui/components/dashboard/Header.d.ts +7 -0
- package/dist/ui/components/dashboard/Header.d.ts.map +1 -0
- package/dist/ui/components/dashboard/Header.js +21 -0
- package/dist/ui/components/dashboard/Header.js.map +1 -0
- package/dist/ui/components/dashboard/HotFilesCard.d.ts +8 -0
- package/dist/ui/components/dashboard/HotFilesCard.d.ts.map +1 -0
- package/dist/ui/components/dashboard/HotFilesCard.js +28 -0
- package/dist/ui/components/dashboard/HotFilesCard.js.map +1 -0
- package/dist/ui/components/dashboard/NotConfiguredCard.d.ts +10 -0
- package/dist/ui/components/dashboard/NotConfiguredCard.d.ts.map +1 -0
- package/dist/ui/components/dashboard/NotConfiguredCard.js +13 -0
- package/dist/ui/components/dashboard/NotConfiguredCard.js.map +1 -0
- package/dist/ui/components/dashboard/SprintProgressCard.d.ts +11 -0
- package/dist/ui/components/dashboard/SprintProgressCard.d.ts.map +1 -0
- package/dist/ui/components/dashboard/SprintProgressCard.js +33 -0
- package/dist/ui/components/dashboard/SprintProgressCard.js.map +1 -0
- package/dist/ui/components/dashboard/StalenessCard.d.ts +10 -0
- package/dist/ui/components/dashboard/StalenessCard.d.ts.map +1 -0
- package/dist/ui/components/dashboard/StalenessCard.js +43 -0
- package/dist/ui/components/dashboard/StalenessCard.js.map +1 -0
- package/dist/ui/components/dashboard/TabBar.d.ts +8 -0
- package/dist/ui/components/dashboard/TabBar.d.ts.map +1 -0
- package/dist/ui/components/dashboard/TabBar.js +16 -0
- package/dist/ui/components/dashboard/TabBar.js.map +1 -0
- package/dist/ui/components/dashboard/ValidationCard.d.ts +10 -0
- package/dist/ui/components/dashboard/ValidationCard.d.ts.map +1 -0
- package/dist/ui/components/dashboard/ValidationCard.js +62 -0
- package/dist/ui/components/dashboard/ValidationCard.js.map +1 -0
- package/dist/ui/components/dashboard/ViewContainer.d.ts +14 -0
- package/dist/ui/components/dashboard/ViewContainer.d.ts.map +1 -0
- package/dist/ui/components/dashboard/ViewContainer.js +53 -0
- package/dist/ui/components/dashboard/ViewContainer.js.map +1 -0
- package/dist/ui/components/dashboard/index.d.ts +14 -0
- package/dist/ui/components/dashboard/index.d.ts.map +1 -0
- package/dist/ui/components/dashboard/index.js +14 -0
- package/dist/ui/components/dashboard/index.js.map +1 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +46 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/utils/backup.d.ts.map +1 -1
- package/dist/utils/backup.js +20 -20
- package/dist/utils/backup.js.map +1 -1
- package/dist/utils/config.d.ts +1 -1
- package/dist/utils/config.js +68 -68
- package/dist/utils/detection.d.ts +1 -1
- package/dist/utils/detection.js +25 -25
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +4 -4
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/git-history.d.ts.map +1 -1
- package/dist/utils/git-history.js +9 -5
- package/dist/utils/git-history.js.map +1 -1
- package/dist/utils/git-staleness.d.ts +13 -0
- package/dist/utils/git-staleness.d.ts.map +1 -0
- package/dist/utils/git-staleness.js +129 -0
- package/dist/utils/git-staleness.js.map +1 -0
- package/dist/utils/guardian-prompt.d.ts.map +1 -1
- package/dist/utils/guardian-prompt.js +1 -1
- package/dist/utils/guardian-prompt.js.map +1 -1
- package/dist/utils/llm-client.d.ts +5 -5
- package/dist/utils/llm-client.d.ts.map +1 -1
- package/dist/utils/llm-client.js +56 -53
- package/dist/utils/llm-client.js.map +1 -1
- package/dist/utils/prompt-parser.d.ts.map +1 -1
- package/dist/utils/prompt-parser.js +13 -17
- package/dist/utils/prompt-parser.js.map +1 -1
- package/dist/utils/prompts.d.ts +1 -1
- package/dist/utils/prompts.d.ts.map +1 -1
- package/dist/utils/prompts.js +74 -49
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/sanitize.js +6 -6
- package/dist/utils/sanitize.js.map +1 -1
- package/dist/utils/stats-collector.d.ts +56 -0
- package/dist/utils/stats-collector.d.ts.map +1 -0
- package/dist/utils/stats-collector.js +244 -0
- package/dist/utils/stats-collector.js.map +1 -0
- package/dist/utils/status.d.ts +1 -1
- package/dist/utils/status.d.ts.map +1 -1
- package/dist/utils/status.js +16 -16
- package/dist/utils/status.js.map +1 -1
- package/dist/utils/templates.d.ts +3 -3
- package/dist/utils/templates.d.ts.map +1 -1
- package/dist/utils/templates.js +59 -54
- package/dist/utils/templates.js.map +1 -1
- package/dist/utils/tier-tags.d.ts +1 -1
- package/dist/utils/tier-tags.js +2 -2
- package/dist/utils/token-counter.d.ts +1 -43
- package/dist/utils/token-counter.d.ts.map +1 -1
- package/dist/utils/token-counter.js +32 -80
- package/dist/utils/token-counter.js.map +1 -1
- package/dist/utils/validation.d.ts +2 -11
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +26 -39
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/validator.d.ts +1 -1
- package/dist/utils/validator.d.ts.map +1 -1
- package/dist/utils/validator.js +145 -73
- package/dist/utils/validator.js.map +1 -1
- package/package.json +10 -5
- package/templates/CLAUDE.md +1 -1
- package/templates/FUTURE-ENHANCEMENTS.md +1 -1
- package/templates/NEXT-TASKS.md +1 -1
- package/templates/PROMPTS.md +1 -1
- package/templates/README.md +1 -1
- package/templates/docs/archive/v1.0-CHANGELOG.md +1 -1
- package/templates/docs/core/ARCHITECTURE.md +1 -1
- package/templates/docs/core/DECISIONS.md +1 -1
- package/templates/docs/core/DOMAIN-LOGIC.md +1 -1
- package/templates/docs/core/GLOSSARY.md +1 -1
- package/templates/docs/core/PATTERNS.md +1 -1
- package/templates/docs/core/SCHEMA.md +1 -1
- 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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AASzC,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EACxE,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,KAAK,GACN,EAAE,EAAE;IACH,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAEzE,OAAO,CACL;QACE,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC;YAEX,oBAAC,IAAI,IAAC,IAAI,2CAA4B;YAEtC,oBAAC,OAAO,OAAG;YAEX,oBAAC,GAAG;gBACF,oBAAC,GAAG,IAAC,KAAK,EAAE,EAAE;oBACZ,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAc,CAC9B;gBACN,oBAAC,GAAG,IAAC,KAAK,EAAE,CAAC;oBACX,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,GAAG,CAAQ,CAC5B;gBACN,oBAAC,IAAI,IAAC,QAAQ;;oBAAG,aAAa,CAAC,GAAG,CAAC;yBAAU;gBAC7C,oBAAC,GAAG;oBACF,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,IAAE,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAQ;oBAC3D,oBAAC,IAAI,IAAC,QAAQ,UAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAQ,CACtD,CACF;YAEN,oBAAC,OAAO,OAAG;YAEX,oBAAC,GAAG;gBACF,oBAAC,GAAG,IAAC,KAAK,EAAE,EAAE;oBACZ,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,8BAAgB,CAC9B;gBACN,oBAAC,GAAG,IAAC,KAAK,EAAE,CAAC;oBACX,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,IAAI,CAAQ,CAC7B;gBACN,oBAAC,IAAI,IAAC,QAAQ;;oBAAG,aAAa,CAAC,IAAI,CAAC;yBAAU;gBAC9C,oBAAC,GAAG;oBACF,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,IAAE,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAQ;oBAC1D,oBAAC,IAAI,IAAC,QAAQ,UAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAQ,CACvD,CACF;YAEN,oBAAC,OAAO,OAAG;YAEX,oBAAC,GAAG;gBACF,oBAAC,GAAG,IAAC,KAAK,EAAE,EAAE;oBACZ,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBAAe,CAC7B;gBACN,oBAAC,GAAG,IAAC,KAAK,EAAE,CAAC;oBACX,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,IAAI,CAAQ,CAC7B;gBACN,oBAAC,IAAI,IAAC,QAAQ;;oBAAG,aAAa,CAAC,IAAI,CAAC;yBAAU;gBAC9C,oBAAC,GAAG;oBACF,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,IAAE,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAQ;oBAC1D,oBAAC,IAAI,IAAC,QAAQ,UAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAQ,CACvD,CACF,CACF;QAEN,oBAAC,OAAO,OAAG;QACX,oBAAC,OAAO,OAAG,CACV,CACJ,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|