@tdk-landscape/tdk-cli-core 1.3.14

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 (212) hide show
  1. package/README.md +293 -0
  2. package/bin/tdk.js +14 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +64 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/completion.d.ts +3 -0
  8. package/dist/commands/completion.d.ts.map +1 -0
  9. package/dist/commands/completion.js +294 -0
  10. package/dist/commands/completion.js.map +1 -0
  11. package/dist/commands/config.d.ts +3 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +220 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/doctor.d.ts +3 -0
  16. package/dist/commands/doctor.d.ts.map +1 -0
  17. package/dist/commands/doctor.js +176 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/down.d.ts +3 -0
  20. package/dist/commands/down.d.ts.map +1 -0
  21. package/dist/commands/down.js +32 -0
  22. package/dist/commands/down.js.map +1 -0
  23. package/dist/commands/help.d.ts +2 -0
  24. package/dist/commands/help.d.ts.map +1 -0
  25. package/dist/commands/help.js +130 -0
  26. package/dist/commands/help.js.map +1 -0
  27. package/dist/commands/networks.d.ts +3 -0
  28. package/dist/commands/networks.d.ts.map +1 -0
  29. package/dist/commands/networks.js +260 -0
  30. package/dist/commands/networks.js.map +1 -0
  31. package/dist/commands/project.d.ts +3 -0
  32. package/dist/commands/project.d.ts.map +1 -0
  33. package/dist/commands/project.js +360 -0
  34. package/dist/commands/project.js.map +1 -0
  35. package/dist/commands/projects.d.ts +3 -0
  36. package/dist/commands/projects.d.ts.map +1 -0
  37. package/dist/commands/projects.js +71 -0
  38. package/dist/commands/projects.js.map +1 -0
  39. package/dist/commands/resource.d.ts +69 -0
  40. package/dist/commands/resource.d.ts.map +1 -0
  41. package/dist/commands/resource.js +572 -0
  42. package/dist/commands/resource.js.map +1 -0
  43. package/dist/commands/resources.d.ts +3 -0
  44. package/dist/commands/resources.d.ts.map +1 -0
  45. package/dist/commands/resources.js +73 -0
  46. package/dist/commands/resources.js.map +1 -0
  47. package/dist/commands/stack.d.ts +3 -0
  48. package/dist/commands/stack.d.ts.map +1 -0
  49. package/dist/commands/stack.js +103 -0
  50. package/dist/commands/stack.js.map +1 -0
  51. package/dist/commands/stacks.d.ts +3 -0
  52. package/dist/commands/stacks.d.ts.map +1 -0
  53. package/dist/commands/stacks.js +43 -0
  54. package/dist/commands/stacks.js.map +1 -0
  55. package/dist/commands/status.d.ts +3 -0
  56. package/dist/commands/status.d.ts.map +1 -0
  57. package/dist/commands/status.js +71 -0
  58. package/dist/commands/status.js.map +1 -0
  59. package/dist/commands/ui.d.ts +3 -0
  60. package/dist/commands/ui.d.ts.map +1 -0
  61. package/dist/commands/ui.js +446 -0
  62. package/dist/commands/ui.js.map +1 -0
  63. package/dist/commands/up.d.ts +3 -0
  64. package/dist/commands/up.d.ts.map +1 -0
  65. package/dist/commands/up.js +149 -0
  66. package/dist/commands/up.js.map +1 -0
  67. package/dist/commands/upgrade.d.ts +3 -0
  68. package/dist/commands/upgrade.d.ts.map +1 -0
  69. package/dist/commands/upgrade.js +454 -0
  70. package/dist/commands/upgrade.js.map +1 -0
  71. package/dist/commands/version.d.ts +3 -0
  72. package/dist/commands/version.d.ts.map +1 -0
  73. package/dist/commands/version.js +9 -0
  74. package/dist/commands/version.js.map +1 -0
  75. package/dist/components/Accessible.d.ts +8 -0
  76. package/dist/components/Accessible.d.ts.map +1 -0
  77. package/dist/components/Accessible.js +10 -0
  78. package/dist/components/Accessible.js.map +1 -0
  79. package/dist/components/BaseTooltip.d.ts +4 -0
  80. package/dist/components/BaseTooltip.d.ts.map +1 -0
  81. package/dist/components/BaseTooltip.js +28 -0
  82. package/dist/components/BaseTooltip.js.map +1 -0
  83. package/dist/components/DetailPanel.d.ts +4 -0
  84. package/dist/components/DetailPanel.d.ts.map +1 -0
  85. package/dist/components/DetailPanel.js +18 -0
  86. package/dist/components/DetailPanel.js.map +1 -0
  87. package/dist/components/FileTree.d.ts +4 -0
  88. package/dist/components/FileTree.d.ts.map +1 -0
  89. package/dist/components/FileTree.js +47 -0
  90. package/dist/components/FileTree.js.map +1 -0
  91. package/dist/components/ResourceSelectInput.d.ts +4 -0
  92. package/dist/components/ResourceSelectInput.d.ts.map +1 -0
  93. package/dist/components/ResourceSelectInput.js +7 -0
  94. package/dist/components/ResourceSelectInput.js.map +1 -0
  95. package/dist/components/ResourceTable.d.ts +4 -0
  96. package/dist/components/ResourceTable.d.ts.map +1 -0
  97. package/dist/components/ResourceTable.js +18 -0
  98. package/dist/components/ResourceTable.js.map +1 -0
  99. package/dist/components/TabBar.d.ts +4 -0
  100. package/dist/components/TabBar.d.ts.map +1 -0
  101. package/dist/components/TabBar.js +17 -0
  102. package/dist/components/TabBar.js.map +1 -0
  103. package/dist/components/Tooltip.d.ts +12 -0
  104. package/dist/components/Tooltip.d.ts.map +1 -0
  105. package/dist/components/Tooltip.js +12 -0
  106. package/dist/components/Tooltip.js.map +1 -0
  107. package/dist/components/index.d.ts +8 -0
  108. package/dist/components/index.d.ts.map +1 -0
  109. package/dist/components/index.js +8 -0
  110. package/dist/components/index.js.map +1 -0
  111. package/dist/config/platform-standards.d.ts +159 -0
  112. package/dist/config/platform-standards.d.ts.map +1 -0
  113. package/dist/config/platform-standards.js +181 -0
  114. package/dist/config/platform-standards.js.map +1 -0
  115. package/dist/generator/extension-fetch.d.ts +9 -0
  116. package/dist/generator/extension-fetch.d.ts.map +1 -0
  117. package/dist/generator/extension-fetch.js +153 -0
  118. package/dist/generator/extension-fetch.js.map +1 -0
  119. package/dist/generator/template-engine.d.ts +60 -0
  120. package/dist/generator/template-engine.d.ts.map +1 -0
  121. package/dist/generator/template-engine.js +416 -0
  122. package/dist/generator/template-engine.js.map +1 -0
  123. package/dist/index.d.ts +11 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +11 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/types/index.d.ts +236 -0
  128. package/dist/types/index.d.ts.map +1 -0
  129. package/dist/types/index.js +17 -0
  130. package/dist/types/index.js.map +1 -0
  131. package/dist/utils/cache.d.ts +19 -0
  132. package/dist/utils/cache.d.ts.map +1 -0
  133. package/dist/utils/cache.js +64 -0
  134. package/dist/utils/cache.js.map +1 -0
  135. package/dist/utils/command-helpers.d.ts +17 -0
  136. package/dist/utils/command-helpers.d.ts.map +1 -0
  137. package/dist/utils/command-helpers.js +48 -0
  138. package/dist/utils/command-helpers.js.map +1 -0
  139. package/dist/utils/constants.d.ts +50 -0
  140. package/dist/utils/constants.d.ts.map +1 -0
  141. package/dist/utils/constants.js +100 -0
  142. package/dist/utils/constants.js.map +1 -0
  143. package/dist/utils/discovery-context.d.ts +4 -0
  144. package/dist/utils/discovery-context.d.ts.map +1 -0
  145. package/dist/utils/discovery-context.js +39 -0
  146. package/dist/utils/discovery-context.js.map +1 -0
  147. package/dist/utils/docker.d.ts +3 -0
  148. package/dist/utils/docker.d.ts.map +1 -0
  149. package/dist/utils/docker.js +13 -0
  150. package/dist/utils/docker.js.map +1 -0
  151. package/dist/utils/env-validator.d.ts +15 -0
  152. package/dist/utils/env-validator.d.ts.map +1 -0
  153. package/dist/utils/env-validator.js +95 -0
  154. package/dist/utils/env-validator.js.map +1 -0
  155. package/dist/utils/errors.d.ts +28 -0
  156. package/dist/utils/errors.d.ts.map +1 -0
  157. package/dist/utils/errors.js +127 -0
  158. package/dist/utils/errors.js.map +1 -0
  159. package/dist/utils/file-helpers.d.ts +14 -0
  160. package/dist/utils/file-helpers.d.ts.map +1 -0
  161. package/dist/utils/file-helpers.js +45 -0
  162. package/dist/utils/file-helpers.js.map +1 -0
  163. package/dist/utils/formatting.d.ts +30 -0
  164. package/dist/utils/formatting.d.ts.map +1 -0
  165. package/dist/utils/formatting.js +164 -0
  166. package/dist/utils/formatting.js.map +1 -0
  167. package/dist/utils/paths.d.ts +3 -0
  168. package/dist/utils/paths.d.ts.map +1 -0
  169. package/dist/utils/paths.js +41 -0
  170. package/dist/utils/paths.js.map +1 -0
  171. package/dist/utils/port-assignment.d.ts +6 -0
  172. package/dist/utils/port-assignment.d.ts.map +1 -0
  173. package/dist/utils/port-assignment.js +75 -0
  174. package/dist/utils/port-assignment.js.map +1 -0
  175. package/dist/utils/project-features.d.ts +23 -0
  176. package/dist/utils/project-features.d.ts.map +1 -0
  177. package/dist/utils/project-features.js +98 -0
  178. package/dist/utils/project-features.js.map +1 -0
  179. package/dist/utils/project-templates.d.ts +7 -0
  180. package/dist/utils/project-templates.d.ts.map +1 -0
  181. package/dist/utils/project-templates.js +24 -0
  182. package/dist/utils/project-templates.js.map +1 -0
  183. package/dist/utils/resource-features.d.ts +28 -0
  184. package/dist/utils/resource-features.d.ts.map +1 -0
  185. package/dist/utils/resource-features.js +148 -0
  186. package/dist/utils/resource-features.js.map +1 -0
  187. package/dist/utils/services.d.ts +18 -0
  188. package/dist/utils/services.d.ts.map +1 -0
  189. package/dist/utils/services.js +291 -0
  190. package/dist/utils/services.js.map +1 -0
  191. package/dist/utils/stack-features.d.ts +22 -0
  192. package/dist/utils/stack-features.d.ts.map +1 -0
  193. package/dist/utils/stack-features.js +13 -0
  194. package/dist/utils/stack-features.js.map +1 -0
  195. package/dist/utils/tar.d.ts +7 -0
  196. package/dist/utils/tar.d.ts.map +1 -0
  197. package/dist/utils/tar.js +21 -0
  198. package/dist/utils/tar.js.map +1 -0
  199. package/dist/utils/tilt.d.ts +18 -0
  200. package/dist/utils/tilt.d.ts.map +1 -0
  201. package/dist/utils/tilt.js +77 -0
  202. package/dist/utils/tilt.js.map +1 -0
  203. package/dist/utils/validation.d.ts +9 -0
  204. package/dist/utils/validation.d.ts.map +1 -0
  205. package/dist/utils/validation.js +49 -0
  206. package/dist/utils/validation.js.map +1 -0
  207. package/package.json +72 -0
  208. package/templates/.tiltignore.hbs +73 -0
  209. package/templates/TILT_RESOURCE_DEFAULTS.star.hbs +221 -0
  210. package/templates/TILT_TECH_STACK.star.hbs +150 -0
  211. package/templates/Tiltfile.hbs +295 -0
  212. package/templates/spec.master.hbs +186 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAO,MAAM,cAAc,SAKvB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Command } from "commander";
2
+ import { getPackageVersion } from "../utils/paths.js";
3
+ export const versionCommand = new Command("version")
4
+ .description("Display version number")
5
+ .alias("v")
6
+ .action(() => {
7
+ console.log(getPackageVersion());
8
+ });
9
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,wBAAwB,CAAC;KACrC,KAAK,CAAC,GAAG,CAAC;KACV,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type React from "react";
2
+ import type { BaseTooltipProps } from "../types/index.js";
3
+ /**
4
+ * Info tooltip variant with predefined accessibility styling.
5
+ * Uses ℹ prefix and adds margin for better visibility.
6
+ */
7
+ export declare const AccessibleTooltip: React.FC<Pick<BaseTooltipProps, "content" | "shortcut" | "visible">>;
8
+ //# sourceMappingURL=Accessible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accessible.d.ts","sourceRoot":"","sources":["../../src/components/Accessible.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CACtC,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC,CAW3D,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { BaseTooltip } from "./BaseTooltip.js";
3
+ /**
4
+ * Info tooltip variant with predefined accessibility styling.
5
+ * Uses ℹ prefix and adds margin for better visibility.
6
+ */
7
+ export const AccessibleTooltip = ({ content, shortcut, visible }) => {
8
+ return (_jsx(BaseTooltip, { content: content, shortcut: shortcut, visible: visible, prefix: "\u2139 ", marginTop: 1 }));
9
+ };
10
+ //# sourceMappingURL=Accessible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accessible.js","sourceRoot":"","sources":["../../src/components/Accessible.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAE1B,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;IACrC,OAAO,CACL,KAAC,WAAW,IACV,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAC,SAAI,EACX,SAAS,EAAE,CAAC,GACZ,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type React from "react";
2
+ import type { BaseTooltipProps } from "../types/index.js";
3
+ export declare const BaseTooltip: React.FC<BaseTooltipProps>;
4
+ //# sourceMappingURL=BaseTooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTooltip.d.ts","sourceRoot":"","sources":["../../src/components/BaseTooltip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA0ClD,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ export const BaseTooltip = ({ content, shortcut, visible, maxWidth = 40, wrapText = false, prefix = "", marginTop = 0, }) => {
4
+ if (!visible)
5
+ return null;
6
+ // Wrap text to maxWidth if requested
7
+ const lines = wrapText ? wrapContent(content, maxWidth) : [content];
8
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "yellow", paddingX: 1, paddingY: 1, backgroundColor: "black", marginTop: marginTop, children: [lines.map((line, i) => (_jsxs(Text, { color: "yellow", children: [prefix, line] }, i))), shortcut && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", children: "Press " }), _jsx(Text, { color: "cyan", bold: true, children: shortcut.startsWith("[") ? shortcut : `[${shortcut}]` }), _jsx(Text, { color: "gray", children: " to use" })] }))] }));
9
+ };
10
+ function wrapContent(content, maxWidth) {
11
+ const words = content.split(" ");
12
+ const lines = [];
13
+ let currentLine = "";
14
+ for (const word of words) {
15
+ if ((currentLine + word).length > maxWidth - 2) {
16
+ lines.push(currentLine.trim());
17
+ currentLine = `${word} `;
18
+ }
19
+ else {
20
+ currentLine += `${word} `;
21
+ }
22
+ }
23
+ if (currentLine) {
24
+ lines.push(currentLine.trim());
25
+ }
26
+ return lines;
27
+ }
28
+ //# sourceMappingURL=BaseTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTooltip.js","sourceRoot":"","sources":["../../src/components/BaseTooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAIhC,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EACtD,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,EAAE,EACb,QAAQ,GAAG,KAAK,EAChB,MAAM,GAAG,EAAE,EACX,SAAS,GAAG,CAAC,GACd,EAAE,EAAE;IACH,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,qCAAqC;IACrC,MAAM,KAAK,GAAa,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAE9E,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,QAAQ,EACpB,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,eAAe,EAAC,OAAO,EACvB,SAAS,EAAE,SAAS,aAEnB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAEtB,MAAC,IAAI,IAAS,KAAK,EAAC,QAAQ,aACzB,MAAM,EACN,IAAI,KAFI,CAAC,CAGL,CACR,CAAC,EACD,QAAQ,IAAI,CACX,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAc,EAChC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,kBACpB,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,GAAG,GACjD,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBAAe,IAC7B,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,WAAW,CAAC,OAAe,EAAE,QAAgB;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/B,WAAW,GAAG,GAAG,IAAI,GAAG,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,WAAW,IAAI,GAAG,IAAI,GAAG,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type React from "react";
2
+ import type { DetailPanelProps } from "../types/index.js";
3
+ export declare const DetailPanel: React.FC<DetailPanelProps>;
4
+ //# sourceMappingURL=DetailPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailPanel.d.ts","sourceRoot":"","sources":["../../src/components/DetailPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA4IlD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { formatDate, getStatusColor, getStatusIcon } from "../utils/formatting.js";
4
+ export const DetailPanel = ({ stack, service, stackMetadata, visible, }) => {
5
+ if (!visible) {
6
+ return _jsx(Box, { width: 0 });
7
+ }
8
+ if (service) {
9
+ return (_jsxs(Box, { width: 40, flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, paddingY: 1, children: [_jsx(Box, { marginBottom: 1, justifyContent: "center", children: _jsxs(Text, { color: "cyan", bold: true, children: ["\u250C\u2500 ", service.name.toUpperCase(), " \u2500\u2510"] }) }), _jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "Name: " }), _jsx(Text, { color: "white", children: service.name })] }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "Stack: " }), _jsx(Text, { color: "white", children: service.stack || "unknown" })] }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "Type: " }), _jsx(Text, { color: "yellow", children: (service.stack || "") === "platform" ? "PLATFORM" : "PRODUCT" })] })] }), _jsx(Box, { marginTop: 2, children: _jsxs(Text, { color: "gray", dimColor: true, children: ["Press ", _jsx(Text, { color: "cyan", children: "[Esc]" }), " to close"] }) })] }));
10
+ }
11
+ if (stack && stackMetadata) {
12
+ const statusColor = getStatusColor(stackMetadata.overallStatus);
13
+ const statusIcon = getStatusIcon(stackMetadata.overallStatus);
14
+ return (_jsxs(Box, { width: 40, flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, paddingY: 1, children: [_jsx(Box, { marginBottom: 1, justifyContent: "center", children: _jsxs(Text, { color: "cyan", bold: true, children: ["\u250C\u2500 ", stack.name.toUpperCase(), " \u2500\u2510"] }) }), _jsx(Box, { borderStyle: "single", borderColor: statusColor, paddingX: 1, paddingY: 1, marginY: 1, justifyContent: "center", children: _jsxs(Text, { color: statusColor, bold: true, children: [statusIcon, " ", stackMetadata.overallStatus.toUpperCase()] }) }), _jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "Created: " }), _jsx(Text, { color: "white", children: formatDate(stackMetadata.createdAt) })] }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "Resources: " }), _jsx(Text, { color: "cyan", children: stackMetadata.resourceCount })] })] }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { color: "gray", underline: true, children: "Resources" }) }), _jsx(Box, { flexDirection: "column", children: stack.resources.map((svc, index) => (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: index === stack.resources.length - 1 ? "└─ " : "├─ " }), _jsx(Text, { color: "white", children: svc.name })] }, svc.name))) }), _jsx(Box, { marginTop: 2, children: _jsxs(Text, { color: "gray", dimColor: true, children: ["Press ", _jsx(Text, { color: "cyan", children: "[Esc]" }), " to close"] }) })] }));
15
+ }
16
+ return (_jsxs(Box, { width: 40, borderStyle: "single", borderColor: "gray", paddingX: 2, paddingY: 2, flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, justifyContent: "center", children: _jsx(Text, { color: "gray", dimColor: true, children: "Select a stack or service" }) }), _jsx(Box, { justifyContent: "center", children: _jsx(Text, { color: "gray", dimColor: true, children: "to view details" }) })] }));
17
+ };
18
+ //# sourceMappingURL=DetailPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailPanel.js","sourceRoot":"","sources":["../../src/components/DetailPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type React from "react";
2
+ import type { FileTreeProps } from "../types/index.js";
3
+ export declare const FileTree: React.FC<FileTreeProps>;
4
+ //# sourceMappingURL=FileTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileTree.d.ts","sourceRoot":"","sources":["../../src/components/FileTree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAY,aAAa,EAAY,MAAM,mBAAmB,CAAC;AAsB3E,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA+D5C,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { useState } from "react";
4
+ import { formatBytes } from "../utils/formatting.js";
5
+ const FILE_ICONS = {
6
+ docker: "🐳",
7
+ tilt: "⚙️",
8
+ config: "🔧",
9
+ prisma: "🗄️",
10
+ generated: "📄",
11
+ unknown: "📃",
12
+ };
13
+ const FILE_COLORS = {
14
+ docker: "blue",
15
+ tilt: "cyan",
16
+ config: "yellow",
17
+ prisma: "magenta",
18
+ generated: "gray",
19
+ unknown: "white",
20
+ };
21
+ // biome-ignore lint/correctness/noUnusedFunctionParameters: reserved callback prop kept in the component API
22
+ export const FileTree = ({ nodes, onSelect, selectedPath }) => {
23
+ const [expandedNodes, setExpandedNodes] = useState(new Set());
24
+ const _toggleNode = (path) => {
25
+ const newExpanded = new Set(expandedNodes);
26
+ if (newExpanded.has(path)) {
27
+ newExpanded.delete(path);
28
+ }
29
+ else {
30
+ newExpanded.add(path);
31
+ }
32
+ setExpandedNodes(newExpanded);
33
+ };
34
+ const renderNode = (node, depth = 0) => {
35
+ const isExpanded = expandedNodes.has(node.path);
36
+ const isSelected = selectedPath === node.path;
37
+ const indent = " ".repeat(depth);
38
+ if (node.type === "directory") {
39
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { children: _jsxs(Text, { color: isSelected ? "cyan" : "white", bold: isSelected, backgroundColor: isSelected ? "blue" : undefined, children: [indent, isExpanded ? "▼" : "▶", " ", node.name] }) }), isExpanded && node.children?.map((child) => renderNode(child, depth + 1))] }, node.path));
40
+ }
41
+ const icon = node.fileType ? FILE_ICONS[node.fileType] : FILE_ICONS.unknown;
42
+ const color = node.fileType ? FILE_COLORS[node.fileType] : FILE_COLORS.unknown;
43
+ return (_jsxs(Box, { children: [_jsxs(Text, { color: isSelected ? "cyan" : color, bold: isSelected, backgroundColor: isSelected ? "blue" : undefined, children: [indent, " ", icon, " ", node.name] }), node.size && (_jsxs(Text, { color: "gray", dimColor: true, children: [" ", "(", formatBytes(node.size), ")"] }))] }, node.path));
44
+ };
45
+ return (_jsx(Box, { flexDirection: "column", paddingX: 1, children: nodes.map((node) => renderNode(node, 0)) }));
46
+ };
47
+ //# sourceMappingURL=FileTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileTree.js","sourceRoot":"","sources":["../../src/components/FileTree.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type React from "react";
2
+ import type { ResourceSelectInputProps } from "../types/index.js";
3
+ export declare const ResourceSelectInput: React.FC<ResourceSelectInputProps>;
4
+ //# sourceMappingURL=ResourceSelectInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceSelectInput.d.ts","sourceRoot":"","sources":["../../src/components/ResourceSelectInput.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElE,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAwBlE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Text } from "ink";
3
+ import SelectInput from "ink-select-input";
4
+ export const ResourceSelectInput = ({ items, onSelect, highlightedIndex, }) => {
5
+ return (_jsx(SelectInput, { items: items, onSelect: onSelect, initialIndex: highlightedIndex, indicatorComponent: ({ isSelected }) => (_jsx(Text, { color: isSelected ? "cyan" : undefined, children: isSelected ? "▓▒░ " : " " })), itemComponent: ({ isSelected, label }) => (_jsx(Text, { color: isSelected ? "cyan" : "white", bold: isSelected, backgroundColor: isSelected ? "black" : undefined, children: label })) }));
6
+ };
7
+ //# sourceMappingURL=ResourceSelectInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceSelectInput.js","sourceRoot":"","sources":["../../src/components/ResourceSelectInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAI3C,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,EACtE,KAAK,EACL,QAAQ,EACR,gBAAgB,GACjB,EAAE,EAAE;IACH,OAAO,CACL,KAAC,WAAW,IACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,gBAAgB,EAC9B,kBAAkB,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CACtC,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAQ,CACpF,EACD,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACxC,KAAC,IAAI,IACH,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EACpC,IAAI,EAAE,UAAU,EAChB,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,YAEhD,KAAK,GACD,CACR,GACD,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type React from "react";
2
+ import type { ResourceTableProps } from "../types/index.js";
3
+ export declare const ResourceTable: React.FC<ResourceTableProps>;
4
+ //# sourceMappingURL=ResourceTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceTable.d.ts","sourceRoot":"","sources":["../../src/components/ResourceTable.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAwEtD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { formatShortDate, getStatusColor, getStatusIcon, truncate } from "../utils/formatting.js";
4
+ export const ResourceTable = ({ resources, maxWidth = 100 }) => {
5
+ if (resources.length === 0) {
6
+ return (_jsx(Box, { paddingY: 1, children: _jsx(Text, { color: "gray", children: "No resources found" }) }));
7
+ }
8
+ const narrowMode = maxWidth < 80;
9
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [_jsx(Box, { width: narrowMode ? 20 : 25, children: _jsx(Text, { bold: true, children: "Logical ID" }) }), !narrowMode && (_jsx(Box, { width: 20, children: _jsx(Text, { bold: true, children: "Physical ID" }) })), _jsx(Box, { width: 12, children: _jsx(Text, { bold: true, children: "Type" }) }), _jsx(Box, { width: 15, children: _jsx(Text, { bold: true, children: "Status" }) }), !narrowMode && (_jsx(Box, { width: 20, children: _jsx(Text, { bold: true, children: "Created" }) }))] }), resources.map((resource, index) => {
10
+ const statusColor = getStatusColor(resource.status);
11
+ const statusIcon = getStatusIcon(resource.status);
12
+ const _isEven = index % 2 === 0;
13
+ return (_jsxs(Box, { flexDirection: "row", paddingX: 1, children: [_jsx(Box, { width: narrowMode ? 20 : 25, children: _jsx(Text, { children: truncate(resource.name, narrowMode ? 18 : 23) }) }), !narrowMode && (_jsx(Box, { width: 20, children: _jsx(Text, { color: "gray", children: resource.stack && resource.stack !== "unknown"
14
+ ? truncate(`${resource.stack}/${resource.name}`, 18)
15
+ : truncate(resource.name, 18) }) })), _jsx(Box, { width: 12, children: _jsx(Text, { color: "cyan", children: resource.type }) }), _jsx(Box, { width: 15, children: _jsxs(Text, { color: statusColor, children: [statusIcon, " ", resource.status] }) }), !narrowMode && (_jsx(Box, { width: 20, children: _jsx(Text, { color: "gray", children: formatShortDate(resource.createdAt) }) }))] }, resource.name));
16
+ })] }));
17
+ };
18
+ //# sourceMappingURL=ResourceTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceTable.js","sourceRoot":"","sources":["../../src/components/ResourceTable.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type React from "react";
2
+ import type { TabBarProps } from "../types/index.js";
3
+ export declare const TabBar: React.FC<TabBarProps>;
4
+ //# sourceMappingURL=TabBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../src/components/TabBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAO,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAW1D,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAuCxC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ const TABS = [
4
+ { id: "overview", label: "OVERVIEW", shortcut: "1" },
5
+ { id: "resources", label: "RESOURCES", shortcut: "2" },
6
+ { id: "events", label: "EVENTS", shortcut: "3" },
7
+ { id: "files", label: "FILES", shortcut: "4" },
8
+ { id: "config", label: "CONFIG", shortcut: "5" },
9
+ ];
10
+ // biome-ignore lint/correctness/noUnusedFunctionParameters: reserved callback prop kept in the component API
11
+ export const TabBar = ({ activeTab, onTabChange, compact = false }) => {
12
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "gray", children: "─".repeat(compact ? 60 : 80) }) }), _jsx(Box, { flexDirection: "row", justifyContent: "space-between", paddingX: 1, children: TABS.map((tab) => {
13
+ const isActive = activeTab === tab.id;
14
+ return (_jsx(Box, { children: isActive ? (_jsx(Box, { borderStyle: "single", borderColor: "cyan", paddingX: 1, backgroundColor: "black", children: _jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: "\u2593\u2592\u2591" }), _jsxs(Text, { color: "cyan", bold: true, children: [" ", "[", tab.shortcut, "] ", tab.label, " "] }), _jsx(Text, { color: "cyan", children: "\u2591\u2592\u2593" })] }) })) : (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: "gray", dimColor: true, children: ["[", tab.shortcut, "] ", compact ? tab.label.slice(0, 4) : tab.label] }) })) }, tab.id));
15
+ }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "─".repeat(compact ? 60 : 80) }) })] }));
16
+ };
17
+ //# sourceMappingURL=TabBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabBar.js","sourceRoot":"","sources":["../../src/components/TabBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAIhC,MAAM,IAAI,GAAU;IAClB,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE;IACpD,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE;IACtD,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE;IAChD,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE;IAC9C,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE;CACjD,CAAC;AAEF,6GAA6G;AAC7G,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,GAAG,KAAK,EAAE,EAAE,EAAE;IAC3F,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAQ,GACrD,EACN,KAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,cAAc,EAAC,eAAe,EAAC,QAAQ,EAAE,CAAC,YAChE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBAChB,MAAM,QAAQ,GAAG,SAAS,KAAK,GAAG,CAAC,EAAE,CAAC;oBAEtC,OAAO,CACL,KAAC,GAAG,cACD,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAC,OAAO,YAC/E,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mCAAW,EAC7B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,mBACpB,GAAG,OACF,GAAG,CAAC,QAAQ,QAAI,GAAG,CAAC,KAAK,EAAE,GAAG,IAC3B,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mCAAW,IACxB,GACH,CACP,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,wBACvB,GAAG,CAAC,QAAQ,QAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IACxD,GACH,CACP,IAlBO,GAAG,CAAC,EAAE,CAmBV,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAQ,GACrD,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare const TOOLTIPS: {
2
+ overviewTab: string;
3
+ resourcesTab: string;
4
+ eventsTab: string;
5
+ filesTab: string;
6
+ configTab: string;
7
+ search: string;
8
+ refresh: string;
9
+ help: string;
10
+ quit: string;
11
+ };
12
+ //# sourceMappingURL=Tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/components/Tooltip.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;IACnB,WAAW;IACX,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,IAAI;IACJ,IAAI;CACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ export const TOOLTIPS = {
2
+ overviewTab: "View all stacks and their resources",
3
+ resourcesTab: "Detailed resource list with metadata",
4
+ eventsTab: "Service lifecycle events timeline",
5
+ filesTab: "Browse autogenerated configuration files",
6
+ configTab: "View and edit service configurations",
7
+ search: "Filter services by name, stack, or type",
8
+ refresh: "Reload data from Tilt API",
9
+ help: "Show keyboard shortcuts and help",
10
+ quit: "Exit the TUI",
11
+ };
12
+ //# sourceMappingURL=Tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../src/components/Tooltip.tsx"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW,EAAE,qCAAqC;IAClD,YAAY,EAAE,sCAAsC;IACpD,SAAS,EAAE,mCAAmC;IAC9C,QAAQ,EAAE,0CAA0C;IACpD,SAAS,EAAE,sCAAsC;IACjD,MAAM,EAAE,yCAAyC;IACjD,OAAO,EAAE,2BAA2B;IACpC,IAAI,EAAE,kCAAkC;IACxC,IAAI,EAAE,cAAc;CACrB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { AccessibleTooltip } from "./Accessible.js";
2
+ export { DetailPanel } from "./DetailPanel.js";
3
+ export { FileTree } from "./FileTree.js";
4
+ export { ResourceSelectInput } from "./ResourceSelectInput.js";
5
+ export { ResourceTable } from "./ResourceTable.js";
6
+ export { TabBar } from "./TabBar.js";
7
+ export { TOOLTIPS } from "./Tooltip.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { AccessibleTooltip } from "./Accessible.js";
2
+ export { DetailPanel } from "./DetailPanel.js";
3
+ export { FileTree } from "./FileTree.js";
4
+ export { ResourceSelectInput } from "./ResourceSelectInput.js";
5
+ export { ResourceTable } from "./ResourceTable.js";
6
+ export { TabBar } from "./TabBar.js";
7
+ export { TOOLTIPS } from "./Tooltip.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,159 @@
1
+ export declare const PLATFORM_STANDARDS: {
2
+ readonly version: "1.0.0";
3
+ readonly tech: {
4
+ readonly runtime: "bun";
5
+ readonly bundler: "vite";
6
+ readonly language: "typescript";
7
+ readonly framework: "hono";
8
+ readonly database: "postgresql";
9
+ readonly orm: "prisma";
10
+ readonly messaging: "nats";
11
+ readonly linting: "biome";
12
+ readonly testing: "vitest";
13
+ };
14
+ readonly ports: {
15
+ readonly frontend: {
16
+ readonly base: 3000;
17
+ readonly range: "3000-3999";
18
+ readonly start: 3000;
19
+ readonly end: 3999;
20
+ };
21
+ readonly backend: {
22
+ readonly base: 4000;
23
+ readonly range: "4000-4999";
24
+ readonly start: 4000;
25
+ readonly end: 4999;
26
+ };
27
+ readonly health: {
28
+ readonly base: 5000;
29
+ readonly range: "5000-5999";
30
+ readonly start: 5000;
31
+ readonly end: 5999;
32
+ };
33
+ readonly worker: {
34
+ readonly base: 6000;
35
+ readonly range: "6000-6999";
36
+ readonly start: 6000;
37
+ readonly end: 6999;
38
+ };
39
+ readonly migrator: {
40
+ readonly base: 7000;
41
+ readonly range: "7000-7999";
42
+ readonly start: 7000;
43
+ readonly end: 7999;
44
+ };
45
+ readonly tiltUi: 10350;
46
+ readonly traefik: 8080;
47
+ };
48
+ readonly health: {
49
+ readonly path: "/health";
50
+ readonly live: "/health/live";
51
+ readonly ready: "/health/ready";
52
+ readonly timeout: 30;
53
+ readonly interval: 5;
54
+ };
55
+ readonly naming: {
56
+ readonly frontend: "-frontend";
57
+ readonly backend: "-backend";
58
+ readonly worker: "-worker";
59
+ readonly migrator: "-migrator";
60
+ readonly library: "-lib";
61
+ readonly sdk: "-sdk";
62
+ readonly validSeparators: readonly ["-", "_"];
63
+ readonly maxLength: 63;
64
+ readonly minLength: 3;
65
+ };
66
+ readonly traefik: {
67
+ readonly entrypoint: "web";
68
+ readonly network: "traefik-public";
69
+ readonly defaultHost: "localhost";
70
+ readonly appHost: "app.localhost";
71
+ readonly apiHost: "api.localhost";
72
+ readonly appSubdomainPrefix: "app";
73
+ readonly apiSubdomainPrefix: "api";
74
+ readonly defaultPort: 8080;
75
+ readonly tlsEnabled: false;
76
+ readonly entrypoints: readonly ["web"];
77
+ readonly middlewares: readonly [];
78
+ readonly tls: {
79
+ readonly enabled: false;
80
+ };
81
+ readonly healthcheckPath: "/health";
82
+ readonly healthcheckInterval: "10s";
83
+ readonly healthcheckTimeout: "5s";
84
+ readonly frontendPriorityBase: 100;
85
+ };
86
+ readonly filewatchIgnores: readonly ["node_modules", "dist", "build", ".git", ".prisma", ".turbo", "coverage", "tmp", "temp", "__tests__", "test", "tests"];
87
+ readonly serviceTypes: {
88
+ readonly frontend: {
89
+ readonly suffix: "-frontend";
90
+ readonly portRange: "3000-3999";
91
+ };
92
+ readonly backend: {
93
+ readonly suffix: "-backend";
94
+ readonly portRange: "4000-4999";
95
+ };
96
+ readonly library: {
97
+ readonly suffix: "-library";
98
+ readonly portRange: null;
99
+ };
100
+ readonly sdk: {
101
+ readonly suffix: "-sdk";
102
+ readonly portRange: "3000-9999";
103
+ };
104
+ readonly migrator: {
105
+ readonly suffix: "-migrator";
106
+ readonly portRange: "7000-7999";
107
+ };
108
+ readonly worker: {
109
+ readonly suffix: "-worker";
110
+ readonly portRange: "6000-6999";
111
+ };
112
+ };
113
+ readonly features: {
114
+ readonly prisma: "Database ORM with migrations";
115
+ readonly nats: "Event streaming via NATS";
116
+ readonly redis: "Caching layer";
117
+ readonly infisical: "Secrets management";
118
+ readonly vitest: "Testing framework";
119
+ readonly traefik: "HTTP routing";
120
+ readonly websocket: "Real-time connections";
121
+ readonly graphql: "GraphQL support";
122
+ readonly grpc: "gRPC support";
123
+ readonly viteNode: "Vite Node runtime";
124
+ readonly maintenance: "Maintenance mode";
125
+ };
126
+ readonly paths: {
127
+ readonly services: "services/product";
128
+ readonly sharedPlatform: "shared-platform-engineering";
129
+ readonly sharedProduct: "shared-product-engineering";
130
+ readonly sharedDdd: "shared-ddd-layers";
131
+ };
132
+ readonly discovery: {
133
+ readonly scanIntervalSeconds: 5;
134
+ readonly maxManifestsPerRoot: 50;
135
+ readonly servicePatterns: readonly ["services/product/*", "services/platform/*"];
136
+ };
137
+ readonly docker: {
138
+ readonly dockerfile: "Dockerfile";
139
+ readonly context: ".";
140
+ };
141
+ readonly runtime: {
142
+ readonly backend: {
143
+ readonly command: "bun";
144
+ readonly args: readonly ["run", "dev"];
145
+ readonly env: {
146
+ readonly NODE_ENV: "development";
147
+ };
148
+ };
149
+ readonly frontend: {
150
+ readonly command: "bun";
151
+ readonly args: readonly ["run", "dev"];
152
+ readonly env: {
153
+ readonly NODE_ENV: "development";
154
+ };
155
+ };
156
+ };
157
+ };
158
+ export type PlatformStandards = typeof PLATFORM_STANDARDS;
159
+ //# sourceMappingURL=platform-standards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-standards.d.ts","sourceRoot":"","sources":["../../src/config/platform-standards.ts"],"names":[],"mappings":"AAmLA,eAAO,MAAM,kBAAkB;aAC7B,OAAO;aACP,IAAI;0BAhLK,KAAK;0BACL,MAAM;2BACL,YAAY;4BACX,MAAM;2BACP,YAAY;sBACjB,QAAQ;4BACF,MAAM;0BACR,OAAO;0BACP,QAAQ;;aAyKjB,KAAK;;qBApKH,IAAI;qBACJ,KAAK;qBACL,KAAK;qBACL,GAAG;;;qBAGH,IAAI;qBACJ,KAAK;qBACL,KAAK;qBACL,GAAG;;;qBAGH,IAAI;qBACJ,KAAK;qBACL,KAAK;qBACL,GAAG;;;qBAGH,IAAI;qBACJ,KAAK;qBACL,KAAK;qBACL,GAAG;;;qBAGH,IAAI;qBACJ,KAAK;qBACL,KAAK;qBACL,GAAG;;;;;aA0IL,MAAM;uBAnIA,SAAS;uBACT,cAAc;wBACb,eAAe;0BACb,EAAE;2BACD,CAAC;;aAgIX,MAAM;2BA5HI,WAAW;0BACZ,UAAU;yBACX,SAAS;2BACP,WAAW;0BACZ,MAAM;sBACV,MAAM;4CACO,GAAG,EAAE,GAAG;4BACf,EAAE;4BACF,CAAC;;aAqHZ,OAAO;6BAjHK,KAAK;0BACR,gBAAgB;8BACZ,WAAW;0BACf,eAAe;0BACf,eAAe;qCACJ,KAAK;qCACL,KAAK;8BACZ,IAAI;;wCAEH,KAAK;;;qBAEZ,OAAO;;kCACG,SAAS;sCACL,KAAK;qCACN,IAAI;uCACF,GAAG;;aAmGzB,gBAAgB;aAChB,YAAY;;qBAhFV,MAAM,EAAE,WAAW;qBACnB,SAAS,EAAE,WAAW;;;qBAGtB,MAAM,EAAE,UAAU;qBAClB,SAAS,EAAE,WAAW;;;qBAGtB,MAAM,EAAE,UAAU;qBAClB,SAAS;;;qBAGT,MAAM,EAAE,MAAM;qBACd,SAAS,EAAE,WAAW;;;qBAGtB,MAAM,EAAE,WAAW;qBACnB,SAAS,EAAE,WAAW;;;qBAGtB,MAAM,EAAE,SAAS;qBACjB,SAAS,EAAE,WAAW;;;aA4DxB,QAAQ;yBAvDA,8BAA8B;uBAChC,0BAA0B;wBACzB,eAAe;4BACX,oBAAoB;yBACvB,mBAAmB;0BAClB,cAAc;4BACZ,uBAAuB;0BACzB,iBAAiB;uBACpB,cAAc;2BACV,mBAAmB;8BAChB,kBAAkB;;aA8C/B,KAAK;2BA1CK,kBAAkB;iCACZ,6BAA6B;gCAC9B,4BAA4B;4BAChC,mBAAmB;;aAwC9B,SAAS;sCApCY,CAAC;sCACD,EAAE;4CACL,oBAAoB,EAAE,qBAAqB;;aAmC7D,MAAM;6BA/BM,YAAY;0BACf,GAAG;;aA+BZ,OAAO;;qBAxBL,OAAO,EAAE,KAAK;qBACd,IAAI,YAAG,KAAK,EAAE,KAAK;qBACnB,GAAG;yBAAI,QAAQ,EAAE,aAAa;;;;qBAG9B,OAAO,EAAE,KAAK;qBACd,IAAI,YAAG,KAAK,EAAE,KAAK;qBACnB,GAAG;yBAAI,QAAQ,EAAE,aAAa;;;;CAkBxB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,OAAO,kBAAkB,CAAC"}