@mindstudio-ai/local-model-tunnel 0.1.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/README.md +30 -115
  2. package/dist/chunk-PTK4SJQK.js +1768 -0
  3. package/dist/chunk-PTK4SJQK.js.map +1 -0
  4. package/dist/cli.d.ts +0 -2
  5. package/dist/cli.js +8 -517
  6. package/dist/cli.js.map +1 -1
  7. package/dist/index.d.ts +24 -5
  8. package/dist/index.js +6 -13
  9. package/dist/index.js.map +1 -1
  10. package/dist/tui-56JFPKBP.js +1561 -0
  11. package/dist/tui-56JFPKBP.js.map +1 -0
  12. package/package.json +11 -4
  13. package/dist/api.d.ts +0 -88
  14. package/dist/api.d.ts.map +0 -1
  15. package/dist/api.js +0 -168
  16. package/dist/api.js.map +0 -1
  17. package/dist/cli.d.ts.map +0 -1
  18. package/dist/config.d.ts +0 -27
  19. package/dist/config.d.ts.map +0 -1
  20. package/dist/config.js +0 -109
  21. package/dist/config.js.map +0 -1
  22. package/dist/helpers.d.ts +0 -4
  23. package/dist/helpers.d.ts.map +0 -1
  24. package/dist/helpers.js +0 -33
  25. package/dist/helpers.js.map +0 -1
  26. package/dist/index.d.ts.map +0 -1
  27. package/dist/ollama.d.ts +0 -11
  28. package/dist/ollama.d.ts.map +0 -1
  29. package/dist/ollama.js +0 -36
  30. package/dist/ollama.js.map +0 -1
  31. package/dist/providers/comfyui.d.ts +0 -29
  32. package/dist/providers/comfyui.d.ts.map +0 -1
  33. package/dist/providers/comfyui.js +0 -359
  34. package/dist/providers/comfyui.js.map +0 -1
  35. package/dist/providers/index.d.ts +0 -63
  36. package/dist/providers/index.d.ts.map +0 -1
  37. package/dist/providers/index.js +0 -126
  38. package/dist/providers/index.js.map +0 -1
  39. package/dist/providers/lmstudio.d.ts +0 -11
  40. package/dist/providers/lmstudio.d.ts.map +0 -1
  41. package/dist/providers/lmstudio.js +0 -106
  42. package/dist/providers/lmstudio.js.map +0 -1
  43. package/dist/providers/ollama.d.ts +0 -11
  44. package/dist/providers/ollama.d.ts.map +0 -1
  45. package/dist/providers/ollama.js +0 -59
  46. package/dist/providers/ollama.js.map +0 -1
  47. package/dist/providers/stable-diffusion.d.ts +0 -41
  48. package/dist/providers/stable-diffusion.d.ts.map +0 -1
  49. package/dist/providers/stable-diffusion.js +0 -283
  50. package/dist/providers/stable-diffusion.js.map +0 -1
  51. package/dist/providers/types.d.ts +0 -196
  52. package/dist/providers/types.d.ts.map +0 -1
  53. package/dist/providers/types.js +0 -19
  54. package/dist/providers/types.js.map +0 -1
  55. package/dist/quickstart/QuickstartScreen.d.ts +0 -5
  56. package/dist/quickstart/QuickstartScreen.d.ts.map +0 -1
  57. package/dist/quickstart/QuickstartScreen.js +0 -616
  58. package/dist/quickstart/QuickstartScreen.js.map +0 -1
  59. package/dist/quickstart/detect.d.ts +0 -22
  60. package/dist/quickstart/detect.d.ts.map +0 -1
  61. package/dist/quickstart/detect.js +0 -243
  62. package/dist/quickstart/detect.js.map +0 -1
  63. package/dist/quickstart/index.d.ts +0 -4
  64. package/dist/quickstart/index.d.ts.map +0 -1
  65. package/dist/quickstart/index.js +0 -245
  66. package/dist/quickstart/index.js.map +0 -1
  67. package/dist/quickstart/installers.d.ts +0 -109
  68. package/dist/quickstart/installers.d.ts.map +0 -1
  69. package/dist/quickstart/installers.js +0 -1296
  70. package/dist/quickstart/installers.js.map +0 -1
  71. package/dist/runner.d.ts +0 -19
  72. package/dist/runner.d.ts.map +0 -1
  73. package/dist/runner.js +0 -314
  74. package/dist/runner.js.map +0 -1
  75. package/dist/tui/App.d.ts +0 -7
  76. package/dist/tui/App.d.ts.map +0 -1
  77. package/dist/tui/App.js +0 -53
  78. package/dist/tui/App.js.map +0 -1
  79. package/dist/tui/TunnelRunner.d.ts +0 -19
  80. package/dist/tui/TunnelRunner.d.ts.map +0 -1
  81. package/dist/tui/TunnelRunner.js +0 -228
  82. package/dist/tui/TunnelRunner.js.map +0 -1
  83. package/dist/tui/components/Header.d.ts +0 -9
  84. package/dist/tui/components/Header.d.ts.map +0 -1
  85. package/dist/tui/components/Header.js +0 -21
  86. package/dist/tui/components/Header.js.map +0 -1
  87. package/dist/tui/components/ModelsPanel.d.ts +0 -7
  88. package/dist/tui/components/ModelsPanel.d.ts.map +0 -1
  89. package/dist/tui/components/ModelsPanel.js +0 -28
  90. package/dist/tui/components/ModelsPanel.js.map +0 -1
  91. package/dist/tui/components/ProvidersPanel.d.ts +0 -7
  92. package/dist/tui/components/ProvidersPanel.d.ts.map +0 -1
  93. package/dist/tui/components/ProvidersPanel.js +0 -6
  94. package/dist/tui/components/ProvidersPanel.js.map +0 -1
  95. package/dist/tui/components/RequestLog.d.ts +0 -8
  96. package/dist/tui/components/RequestLog.d.ts.map +0 -1
  97. package/dist/tui/components/RequestLog.js +0 -60
  98. package/dist/tui/components/RequestLog.js.map +0 -1
  99. package/dist/tui/components/StatusBar.d.ts +0 -10
  100. package/dist/tui/components/StatusBar.d.ts.map +0 -1
  101. package/dist/tui/components/StatusBar.js +0 -7
  102. package/dist/tui/components/StatusBar.js.map +0 -1
  103. package/dist/tui/components/index.d.ts +0 -6
  104. package/dist/tui/components/index.d.ts.map +0 -1
  105. package/dist/tui/components/index.js +0 -6
  106. package/dist/tui/components/index.js.map +0 -1
  107. package/dist/tui/events.d.ts +0 -35
  108. package/dist/tui/events.d.ts.map +0 -1
  109. package/dist/tui/events.js +0 -26
  110. package/dist/tui/events.js.map +0 -1
  111. package/dist/tui/hooks/index.d.ts +0 -5
  112. package/dist/tui/hooks/index.d.ts.map +0 -1
  113. package/dist/tui/hooks/index.js +0 -5
  114. package/dist/tui/hooks/index.js.map +0 -1
  115. package/dist/tui/hooks/useConnection.d.ts +0 -10
  116. package/dist/tui/hooks/useConnection.d.ts.map +0 -1
  117. package/dist/tui/hooks/useConnection.js +0 -42
  118. package/dist/tui/hooks/useConnection.js.map +0 -1
  119. package/dist/tui/hooks/useModels.d.ts +0 -9
  120. package/dist/tui/hooks/useModels.d.ts.map +0 -1
  121. package/dist/tui/hooks/useModels.js +0 -28
  122. package/dist/tui/hooks/useModels.js.map +0 -1
  123. package/dist/tui/hooks/useProviders.d.ts +0 -9
  124. package/dist/tui/hooks/useProviders.d.ts.map +0 -1
  125. package/dist/tui/hooks/useProviders.js +0 -30
  126. package/dist/tui/hooks/useProviders.js.map +0 -1
  127. package/dist/tui/hooks/useRequests.d.ts +0 -9
  128. package/dist/tui/hooks/useRequests.d.ts.map +0 -1
  129. package/dist/tui/hooks/useRequests.js +0 -60
  130. package/dist/tui/hooks/useRequests.js.map +0 -1
  131. package/dist/tui/index.d.ts +0 -2
  132. package/dist/tui/index.d.ts.map +0 -1
  133. package/dist/tui/index.js +0 -19
  134. package/dist/tui/index.js.map +0 -1
  135. package/dist/tui/screens/ConfigScreen.d.ts +0 -2
  136. package/dist/tui/screens/ConfigScreen.d.ts.map +0 -1
  137. package/dist/tui/screens/ConfigScreen.js +0 -18
  138. package/dist/tui/screens/ConfigScreen.js.map +0 -1
  139. package/dist/tui/screens/HomeScreen.d.ts +0 -2
  140. package/dist/tui/screens/HomeScreen.d.ts.map +0 -1
  141. package/dist/tui/screens/HomeScreen.js +0 -156
  142. package/dist/tui/screens/HomeScreen.js.map +0 -1
  143. package/dist/tui/screens/ModelsScreen.d.ts +0 -2
  144. package/dist/tui/screens/ModelsScreen.d.ts.map +0 -1
  145. package/dist/tui/screens/ModelsScreen.js +0 -59
  146. package/dist/tui/screens/ModelsScreen.js.map +0 -1
  147. package/dist/tui/screens/StatusScreen.d.ts +0 -2
  148. package/dist/tui/screens/StatusScreen.d.ts.map +0 -1
  149. package/dist/tui/screens/StatusScreen.js +0 -53
  150. package/dist/tui/screens/StatusScreen.js.map +0 -1
  151. package/dist/tui/screens/index.d.ts +0 -9
  152. package/dist/tui/screens/index.d.ts.map +0 -1
  153. package/dist/tui/screens/index.js +0 -38
  154. package/dist/tui/screens/index.js.map +0 -1
  155. package/dist/tui/types.d.ts +0 -30
  156. package/dist/tui/types.d.ts.map +0 -1
  157. package/dist/tui/types.js +0 -2
  158. package/dist/tui/types.js.map +0 -1
  159. package/dist/workflows/index.d.ts +0 -47
  160. package/dist/workflows/index.d.ts.map +0 -1
  161. package/dist/workflows/index.js +0 -95
  162. package/dist/workflows/index.js.map +0 -1
  163. package/dist/workflows/ltx-video.d.ts +0 -45
  164. package/dist/workflows/ltx-video.d.ts.map +0 -1
  165. package/dist/workflows/ltx-video.js +0 -114
  166. package/dist/workflows/ltx-video.js.map +0 -1
  167. package/dist/workflows/wan2.1.d.ts +0 -44
  168. package/dist/workflows/wan2.1.d.ts.map +0 -1
  169. package/dist/workflows/wan2.1.js +0 -119
  170. package/dist/workflows/wan2.1.js.map +0 -1
@@ -1,53 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect } from "react";
3
- import { Box, Text, useApp } from "ink";
4
- import Spinner from "ink-spinner";
5
- import { verifyApiKey } from "../../api.js";
6
- import { getApiKey, getEnvironment, getEnvironmentInfo } from "../../config.js";
7
- import { getProviderStatuses, discoverAllModels, } from "../../providers/index.js";
8
- import { LogoString } from "../../helpers.js";
9
- export function StatusScreen() {
10
- const { exit } = useApp();
11
- const [connection, setConnection] = useState("checking");
12
- const [providers, setProviders] = useState([]);
13
- const [models, setModels] = useState([]);
14
- const [loading, setLoading] = useState(true);
15
- const environment = getEnvironment();
16
- const info = getEnvironmentInfo();
17
- useEffect(() => {
18
- async function loadStatus() {
19
- // Check API key
20
- const apiKey = getApiKey();
21
- if (!apiKey) {
22
- setConnection("not_set");
23
- }
24
- else {
25
- const isValid = await verifyApiKey();
26
- setConnection(isValid ? "connected" : "invalid");
27
- }
28
- // Check providers
29
- const statuses = await getProviderStatuses();
30
- setProviders(statuses);
31
- // Discover models
32
- const discoveredModels = await discoverAllModels();
33
- setModels(discoveredModels);
34
- setLoading(false);
35
- }
36
- loadStatus();
37
- }, []);
38
- // Auto-exit after loading completes
39
- useEffect(() => {
40
- if (!loading) {
41
- const timer = setTimeout(() => exit(), 50);
42
- return () => clearTimeout(timer);
43
- }
44
- }, [loading, exit]);
45
- const envColor = environment === "prod" ? "green" : "yellow";
46
- const envBadge = environment === "prod" ? "PROD" : "LOCAL";
47
- return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { color: "cyan", children: LogoString }), _jsxs(Box, { marginTop: 1, marginBottom: 1, children: [_jsx(Text, { bold: true, children: "MindStudio Local Tunnel " }), _jsxs(Text, { color: envColor, bold: true, children: ["[", envBadge, "]"] })] }), _jsxs(Text, { color: "gray", children: ["API: ", info.apiBaseUrl] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, color: "white", children: "Connection" }), _jsx(Box, { marginTop: 1, children: connection === "checking" ? (_jsxs(Text, { color: "cyan", children: [_jsx(Spinner, { type: "dots" }), " Checking..."] })) : connection === "connected" ? (_jsx(Text, { color: "green", children: "\u25CF MindStudio: Connected" })) : connection === "invalid" ? (_jsx(Text, { color: "red", children: "\u25CF MindStudio: Invalid API key" })) : (_jsx(Text, { color: "yellow", children: "\u25CB MindStudio: Not authenticated" })) })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, color: "white", children: "Providers" }), loading ? (_jsxs(Text, { color: "cyan", children: [_jsx(Spinner, { type: "dots" }), " Loading..."] })) : (_jsx(Box, { flexDirection: "column", marginTop: 1, children: providers.map(({ provider, running }) => (_jsxs(Box, { children: [_jsxs(Text, { color: running ? "green" : "gray", children: [running ? "●" : "○", " ", provider.displayName, ":", " "] }), _jsx(Text, { color: running ? "green" : "gray", children: running ? "Running" : "Not running" })] }, provider.name))) }))] }), models.length > 0 && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, color: "white", children: "Models" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [models.filter((m) => m.capability === "text").length > 0 && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "green", children: "Text Models" }), models
48
- .filter((m) => m.capability === "text")
49
- .map((model) => (_jsxs(Box, { children: [_jsx(Text, { color: "green", children: " \u25CF " }), _jsxs(Text, { children: [model.name, " "] }), _jsxs(Text, { color: "gray", children: ["[", model.provider, "]"] })] }, model.name)))] })), models.filter((m) => m.capability === "image").length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "magenta", children: "Image Models" }), models
50
- .filter((m) => m.capability === "image")
51
- .map((model) => (_jsxs(Box, { children: [_jsx(Text, { color: "magenta", children: " \u25CF " }), _jsxs(Text, { children: [model.name, " "] }), _jsxs(Text, { color: "gray", children: ["[", model.provider, "]"] })] }, model.name)))] }))] })] }))] }));
52
- }
53
- //# sourceMappingURL=StatusScreen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusScreen.js","sourceRoot":"","sources":["../../../src/tui/screens/StatusScreen.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAElB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,MAAM,UAAU,YAAY;IAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAmB,UAAU,CAAC,CAAC;IAC3E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE7C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAElC,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,UAAU,UAAU;YACvB,gBAAgB;YAChB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;gBACrC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACnD,CAAC;YAED,kBAAkB;YAClB,MAAM,QAAQ,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAC7C,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEvB,kBAAkB;YAClB,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,EAAE,CAAC;YACnD,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAE5B,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,UAAU,EAAE,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,oCAAoC;IACpC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3C,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAEpB,MAAM,QAAQ,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7D,MAAM,QAAQ,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAE3D,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,aAEpC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,UAAU,GAAQ,EACtC,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,aAChC,KAAC,IAAI,IAAC,IAAI,+CAAgC,EAC1C,MAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,wBACvB,QAAQ,SACL,IACH,EACN,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAO,IAAI,CAAC,UAAU,IAAQ,EAGhD,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,2BAEjB,EACP,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACd,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,CAC3B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aAChB,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,oBAClB,CACR,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,CAC/B,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,6CAA+B,CACnD,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAC7B,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,mDAAqC,CACvD,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,qDAAuC,CAC5D,GACG,IACF,EAGN,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,0BAEjB,EACN,OAAO,CAAC,CAAC,CAAC,CACT,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aAChB,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,mBAClB,CACR,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,YACrC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CACxC,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,aACpC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAG,QAAQ,CAAC,WAAW,OAAG,GAAG,IAC5C,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YACpC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,GAC/B,KANC,QAAQ,CAAC,IAAI,CAOjB,CACP,CAAC,GACE,CACP,IACG,EAGL,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,uBAEjB,EACP,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aAErC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAC3D,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,4BAAmB,EACrC,MAAM;yCACJ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC;yCACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACd,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,yBAAW,EAC9B,MAAC,IAAI,eAAE,KAAK,CAAC,IAAI,SAAS,EAC1B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAG,KAAK,CAAC,QAAQ,SAAS,KAHpC,KAAK,CAAC,IAAI,CAId,CACP,CAAC,IACA,CACP,EAEA,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5D,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,6BAAoB,EACxC,MAAM;yCACJ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC;yCACvC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACd,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,yBAAW,EAChC,MAAC,IAAI,eAAE,KAAK,CAAC,IAAI,SAAS,EAC1B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAG,KAAK,CAAC,QAAQ,SAAS,KAHpC,KAAK,CAAC,IAAI,CAId,CACP,CAAC,IACA,CACP,IACG,IACF,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,9 +0,0 @@
1
- export { StatusScreen } from "./StatusScreen.js";
2
- export { ConfigScreen } from "./ConfigScreen.js";
3
- export { HomeScreen } from "./HomeScreen.js";
4
- export { ModelsScreen } from "./ModelsScreen.js";
5
- export declare function showStatusScreen(): Promise<void>;
6
- export declare function showConfigScreen(): Promise<void>;
7
- export declare function showModelsScreen(): Promise<void>;
8
- export declare function showHomeScreen(): Promise<string | null>;
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMjD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ7D"}
@@ -1,38 +0,0 @@
1
- import React from "react";
2
- import { render } from "ink";
3
- import { StatusScreen } from "./StatusScreen.js";
4
- import { ConfigScreen } from "./ConfigScreen.js";
5
- import { HomeScreen } from "./HomeScreen.js";
6
- import { ModelsScreen } from "./ModelsScreen.js";
7
- export { StatusScreen } from "./StatusScreen.js";
8
- export { ConfigScreen } from "./ConfigScreen.js";
9
- export { HomeScreen } from "./HomeScreen.js";
10
- export { ModelsScreen } from "./ModelsScreen.js";
11
- function clearTerminal() {
12
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
13
- }
14
- export async function showStatusScreen() {
15
- clearTerminal();
16
- const { waitUntilExit } = render(React.createElement(StatusScreen));
17
- await waitUntilExit();
18
- }
19
- export async function showConfigScreen() {
20
- clearTerminal();
21
- const { waitUntilExit } = render(React.createElement(ConfigScreen));
22
- await waitUntilExit();
23
- }
24
- export async function showModelsScreen() {
25
- clearTerminal();
26
- const { waitUntilExit } = render(React.createElement(ModelsScreen));
27
- await waitUntilExit();
28
- }
29
- export async function showHomeScreen() {
30
- clearTerminal();
31
- const { waitUntilExit } = render(React.createElement(HomeScreen));
32
- await waitUntilExit();
33
- // Return the next command to run, if any
34
- const nextCommand = process.env.MINDSTUDIO_NEXT_COMMAND;
35
- delete process.env.MINDSTUDIO_NEXT_COMMAND;
36
- return nextCommand || null;
37
- }
38
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tui/screens/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,SAAS,aAAa;IACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,aAAa,EAAE,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IACpE,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,aAAa,EAAE,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IACpE,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,aAAa,EAAE,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IACpE,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,aAAa,EAAE,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,MAAM,aAAa,EAAE,CAAC;IACtB,yCAAyC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACxD,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAC3C,OAAO,WAAW,IAAI,IAAI,CAAC;AAC7B,CAAC"}
@@ -1,30 +0,0 @@
1
- import type { Provider, LocalModel } from "../providers/types.js";
2
- export type ConnectionStatus = "connecting" | "connected" | "disconnected" | "error";
3
- export interface ProviderStatus {
4
- provider: Provider;
5
- running: boolean;
6
- }
7
- export interface RequestLogEntry {
8
- id: string;
9
- modelId: string;
10
- requestType: "llm_chat" | "image_generation" | "video_generation";
11
- status: "processing" | "completed" | "failed";
12
- startTime: number;
13
- endTime?: number;
14
- duration?: number;
15
- result?: {
16
- chars?: number;
17
- imageSize?: number;
18
- };
19
- error?: string;
20
- }
21
- export interface AppState {
22
- connection: ConnectionStatus;
23
- environment: "prod" | "local";
24
- providers: ProviderStatus[];
25
- models: LocalModel[];
26
- requests: RequestLogEntry[];
27
- activeRequests: number;
28
- isPolling: boolean;
29
- }
30
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ,WAAW,GACX,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,UAAU,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;IAClE,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB"}
package/dist/tui/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":""}
@@ -1,47 +0,0 @@
1
- /**
2
- * Workflow registry - maps model filenames to workflow builders.
3
- */
4
- export type ModelFamily = "ltx-video" | "wan2.1";
5
- export interface WorkflowConfig {
6
- family: ModelFamily;
7
- displayName: string;
8
- /** Build the workflow JSON for ComfyUI's /prompt endpoint */
9
- buildWorkflow: (params: {
10
- model: string;
11
- prompt: string;
12
- negativePrompt: string;
13
- width: number;
14
- height: number;
15
- numFrames: number;
16
- fps: number;
17
- steps: number;
18
- cfgScale: number;
19
- seed: number;
20
- }) => Record<string, unknown>;
21
- /** Node ID that produces the output (for fetching results from /history) */
22
- outputNodeId: string;
23
- /** Default parameters */
24
- defaults: {
25
- width: number;
26
- height: number;
27
- numFrames: number;
28
- fps: number;
29
- steps: number;
30
- cfgScale: number;
31
- };
32
- }
33
- /**
34
- * Find the workflow configuration for a given model filename.
35
- */
36
- export declare function getWorkflowForModel(modelFilename: string): WorkflowConfig | null;
37
- /**
38
- * Check if a model filename is recognized as a video model.
39
- */
40
- export declare function isKnownVideoModel(modelFilename: string): boolean;
41
- /**
42
- * Get all supported model families.
43
- */
44
- export declare function getSupportedFamilies(): WorkflowConfig[];
45
- export { buildLtxVideoWorkflow } from "./ltx-video.js";
46
- export { buildWan21Workflow } from "./wan2.1.js";
47
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,aAAa,EAAE,CAAC,MAAM,EAAE;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAyED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,GACpB,cAAc,GAAG,IAAI,CAOvB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,EAAE,CAEvD;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,95 +0,0 @@
1
- /**
2
- * Workflow registry - maps model filenames to workflow builders.
3
- */
4
- import { buildLtxVideoWorkflow, LTX_VIDEO_OUTPUT_NODE, LTX_VIDEO_DEFAULTS, } from "./ltx-video.js";
5
- import { buildWan21Workflow, WAN21_OUTPUT_NODE, WAN21_DEFAULTS, } from "./wan2.1.js";
6
- /**
7
- * Known model files and their workflow configurations.
8
- * Keys are filename patterns (matched case-insensitively).
9
- */
10
- const MODEL_REGISTRY = [
11
- // LTX-Video models
12
- {
13
- pattern: /ltx[_-]?video/i,
14
- config: {
15
- family: "ltx-video",
16
- displayName: "LTX-Video",
17
- buildWorkflow: (params) => buildLtxVideoWorkflow({
18
- model: params.model,
19
- prompt: params.prompt,
20
- negativePrompt: params.negativePrompt,
21
- width: params.width,
22
- height: params.height,
23
- numFrames: params.numFrames,
24
- fps: params.fps,
25
- steps: params.steps,
26
- cfgScale: params.cfgScale,
27
- seed: params.seed,
28
- }),
29
- outputNodeId: LTX_VIDEO_OUTPUT_NODE,
30
- defaults: {
31
- width: LTX_VIDEO_DEFAULTS.width,
32
- height: LTX_VIDEO_DEFAULTS.height,
33
- numFrames: LTX_VIDEO_DEFAULTS.numFrames,
34
- fps: LTX_VIDEO_DEFAULTS.fps,
35
- steps: LTX_VIDEO_DEFAULTS.steps,
36
- cfgScale: LTX_VIDEO_DEFAULTS.cfgScale,
37
- },
38
- },
39
- },
40
- // Wan 2.1 models
41
- {
42
- pattern: /wan2[\._]?1/i,
43
- config: {
44
- family: "wan2.1",
45
- displayName: "Wan 2.1",
46
- buildWorkflow: (params) => buildWan21Workflow({
47
- model: params.model,
48
- prompt: params.prompt,
49
- negativePrompt: params.negativePrompt,
50
- width: params.width,
51
- height: params.height,
52
- numFrames: params.numFrames,
53
- fps: params.fps,
54
- steps: params.steps,
55
- cfgScale: params.cfgScale,
56
- seed: params.seed,
57
- }),
58
- outputNodeId: WAN21_OUTPUT_NODE,
59
- defaults: {
60
- width: WAN21_DEFAULTS.width,
61
- height: WAN21_DEFAULTS.height,
62
- numFrames: WAN21_DEFAULTS.numFrames,
63
- fps: WAN21_DEFAULTS.fps,
64
- steps: WAN21_DEFAULTS.steps,
65
- cfgScale: WAN21_DEFAULTS.cfgScale,
66
- },
67
- },
68
- },
69
- ];
70
- /**
71
- * Find the workflow configuration for a given model filename.
72
- */
73
- export function getWorkflowForModel(modelFilename) {
74
- for (const entry of MODEL_REGISTRY) {
75
- if (entry.pattern.test(modelFilename)) {
76
- return entry.config;
77
- }
78
- }
79
- return null;
80
- }
81
- /**
82
- * Check if a model filename is recognized as a video model.
83
- */
84
- export function isKnownVideoModel(modelFilename) {
85
- return getWorkflowForModel(modelFilename) !== null;
86
- }
87
- /**
88
- * Get all supported model families.
89
- */
90
- export function getSupportedFamilies() {
91
- return MODEL_REGISTRY.map((entry) => entry.config);
92
- }
93
- export { buildLtxVideoWorkflow } from "./ltx-video.js";
94
- export { buildWan21Workflow } from "./wan2.1.js";
95
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- /**
2
- * LTX-Video text-to-video workflow template for ComfyUI.
3
- *
4
- * Based on the official ComfyUI LTX-Video example workflow.
5
- * The checkpoint contains the MODEL + VAE but NOT the text encoder.
6
- * A separate CLIPLoader with type "ltxv" loads the T5-XXL text encoder.
7
- *
8
- * Model: ltx-video-2b-v0.9.5.safetensors in models/checkpoints/
9
- * Text encoder: t5xxl_fp16.safetensors in models/text_encoders/
10
- */
11
- export interface LtxVideoParams {
12
- /** Model checkpoint filename (in models/checkpoints/) */
13
- model: string;
14
- /** Text encoder filename (in models/text_encoders/) */
15
- textEncoder: string;
16
- /** Positive prompt */
17
- prompt: string;
18
- /** Negative prompt */
19
- negativePrompt: string;
20
- /** Video width */
21
- width: number;
22
- /** Video height */
23
- height: number;
24
- /** Number of frames to generate */
25
- numFrames: number;
26
- /** Frames per second for output */
27
- fps: number;
28
- /** Number of sampling steps */
29
- steps: number;
30
- /** CFG scale */
31
- cfgScale: number;
32
- /** Random seed (-1 for random) */
33
- seed: number;
34
- }
35
- export declare const LTX_VIDEO_DEFAULTS: LtxVideoParams;
36
- /**
37
- * Build an LTX-Video text-to-video workflow in ComfyUI API format.
38
- * Follows the official ComfyUI example workflow structure.
39
- */
40
- export declare function buildLtxVideoWorkflow(params: Partial<LtxVideoParams> & {
41
- prompt: string;
42
- }): Record<string, unknown>;
43
- /** Output node ID for fetching results */
44
- export declare const LTX_VIDEO_OUTPUT_NODE = "8";
45
- //# sourceMappingURL=ltx-video.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ltx-video.d.ts","sourceRoot":"","sources":["../../src/workflows/ltx-video.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,kBAAkB,EAAE,cAahC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoFzB;AAED,0CAA0C;AAC1C,eAAO,MAAM,qBAAqB,MAAM,CAAC"}
@@ -1,114 +0,0 @@
1
- /**
2
- * LTX-Video text-to-video workflow template for ComfyUI.
3
- *
4
- * Based on the official ComfyUI LTX-Video example workflow.
5
- * The checkpoint contains the MODEL + VAE but NOT the text encoder.
6
- * A separate CLIPLoader with type "ltxv" loads the T5-XXL text encoder.
7
- *
8
- * Model: ltx-video-2b-v0.9.5.safetensors in models/checkpoints/
9
- * Text encoder: t5xxl_fp16.safetensors in models/text_encoders/
10
- */
11
- export const LTX_VIDEO_DEFAULTS = {
12
- model: "ltx-video-2b-v0.9.5.safetensors",
13
- textEncoder: "t5xxl_fp16.safetensors",
14
- prompt: "",
15
- negativePrompt: "worst quality, blurry, distorted, disfigured, motion smear, motion artifacts",
16
- width: 512,
17
- height: 320,
18
- numFrames: 41,
19
- fps: 8,
20
- steps: 20,
21
- cfgScale: 3.0,
22
- seed: -1,
23
- };
24
- /**
25
- * Build an LTX-Video text-to-video workflow in ComfyUI API format.
26
- * Follows the official ComfyUI example workflow structure.
27
- */
28
- export function buildLtxVideoWorkflow(params) {
29
- const p = { ...LTX_VIDEO_DEFAULTS, ...params };
30
- const seed = p.seed === -1 ? Math.floor(Math.random() * 2 ** 32) : p.seed;
31
- return {
32
- // Node 1: Load checkpoint (MODEL + VAE, CLIP output unused)
33
- "1": {
34
- class_type: "CheckpointLoaderSimple",
35
- inputs: {
36
- ckpt_name: p.model,
37
- },
38
- },
39
- // Node 2: Load text encoder (T5-XXL) separately
40
- "2": {
41
- class_type: "CLIPLoader",
42
- inputs: {
43
- clip_name: p.textEncoder,
44
- type: "ltxv",
45
- },
46
- },
47
- // Node 3: Positive prompt encoding (CLIP from CLIPLoader, NOT from checkpoint)
48
- "3": {
49
- class_type: "CLIPTextEncode",
50
- inputs: {
51
- text: p.prompt,
52
- clip: ["2", 0],
53
- },
54
- },
55
- // Node 4: Negative prompt encoding
56
- "4": {
57
- class_type: "CLIPTextEncode",
58
- inputs: {
59
- text: p.negativePrompt,
60
- clip: ["2", 0],
61
- },
62
- },
63
- // Node 5: Empty latent video
64
- "5": {
65
- class_type: "EmptyLTXVLatentVideo",
66
- inputs: {
67
- width: p.width,
68
- height: p.height,
69
- length: p.numFrames,
70
- batch_size: 1,
71
- },
72
- },
73
- // Node 6: KSampler
74
- "6": {
75
- class_type: "KSampler",
76
- inputs: {
77
- model: ["1", 0],
78
- positive: ["3", 0],
79
- negative: ["4", 0],
80
- latent_image: ["5", 0],
81
- seed: seed,
82
- steps: p.steps,
83
- cfg: p.cfgScale,
84
- sampler_name: "euler",
85
- scheduler: "normal",
86
- denoise: 1.0,
87
- },
88
- },
89
- // Node 7: VAE Decode (VAE from checkpoint, slot 2)
90
- "7": {
91
- class_type: "VAEDecode",
92
- inputs: {
93
- samples: ["6", 0],
94
- vae: ["1", 2],
95
- },
96
- },
97
- // Node 8: Save as MP4 via VideoHelperSuite
98
- "8": {
99
- class_type: "VHS_VideoCombine",
100
- inputs: {
101
- images: ["7", 0],
102
- frame_rate: p.fps,
103
- loop_count: 0,
104
- filename_prefix: "ltxv_output",
105
- format: "video/h264-mp4",
106
- pingpong: false,
107
- save_output: true,
108
- },
109
- },
110
- };
111
- }
112
- /** Output node ID for fetching results */
113
- export const LTX_VIDEO_OUTPUT_NODE = "8";
114
- //# sourceMappingURL=ltx-video.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ltx-video.js","sourceRoot":"","sources":["../../src/workflows/ltx-video.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Wan2.1 text-to-video workflow template for ComfyUI.
3
- *
4
- * Uses ComfyUI's native Wan 2.1 support (no custom nodes required).
5
- * Diffusion model: wan2.1_t2v_1.3B_fp16.safetensors in models/diffusion_models/
6
- * Text encoder: umt5_xxl_fp8_e4m3fn_scaled.safetensors in models/text_encoders/
7
- * VAE: wan_2.1_vae.safetensors in models/vae/
8
- */
9
- export interface Wan21Params {
10
- /** Diffusion model filename */
11
- model: string;
12
- /** Text encoder filename */
13
- textEncoder: string;
14
- /** VAE filename */
15
- vae: string;
16
- /** Positive prompt */
17
- prompt: string;
18
- /** Negative prompt */
19
- negativePrompt: string;
20
- /** Video width */
21
- width: number;
22
- /** Video height */
23
- height: number;
24
- /** Number of frames to generate */
25
- numFrames: number;
26
- /** Frames per second for output */
27
- fps: number;
28
- /** Number of sampling steps */
29
- steps: number;
30
- /** CFG scale */
31
- cfgScale: number;
32
- /** Random seed (-1 for random) */
33
- seed: number;
34
- }
35
- export declare const WAN21_DEFAULTS: Wan21Params;
36
- /**
37
- * Build a Wan2.1 text-to-video workflow in ComfyUI API format.
38
- */
39
- export declare function buildWan21Workflow(params: Partial<Wan21Params> & {
40
- prompt: string;
41
- }): Record<string, unknown>;
42
- /** Output node ID for fetching results */
43
- export declare const WAN21_OUTPUT_NODE = "9";
44
- //# sourceMappingURL=wan2.1.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wan2.1.d.ts","sourceRoot":"","sources":["../../src/workflows/wan2.1.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,cAAc,EAAE,WAa5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2FzB;AAED,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,MAAM,CAAC"}