claudeup 0.6.4 → 1.0.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.
- package/bin/claudeup.js +1 -1
- package/dist/data/marketplaces.d.ts +2 -0
- package/dist/data/marketplaces.d.ts.map +1 -1
- package/dist/data/marketplaces.js +51 -8
- package/dist/data/marketplaces.js.map +1 -1
- package/dist/data/mcp-servers.d.ts.map +1 -1
- package/dist/data/mcp-servers.js +82 -0
- package/dist/data/mcp-servers.js.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +79 -0
- package/dist/main.js.map +1 -0
- package/dist/services/claude-settings.d.ts +8 -1
- package/dist/services/claude-settings.d.ts.map +1 -1
- package/dist/services/claude-settings.js +79 -0
- package/dist/services/claude-settings.js.map +1 -1
- package/dist/services/local-marketplace.d.ts +76 -0
- package/dist/services/local-marketplace.d.ts.map +1 -0
- package/dist/services/local-marketplace.js +340 -0
- package/dist/services/local-marketplace.js.map +1 -0
- package/dist/services/plugin-manager.d.ts +39 -2
- package/dist/services/plugin-manager.d.ts.map +1 -1
- package/dist/services/plugin-manager.js +259 -9
- package/dist/services/plugin-manager.js.map +1 -1
- package/dist/types/index.d.ts +6 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/ui/InkApp.d.ts +5 -0
- package/dist/ui/InkApp.d.ts.map +1 -0
- package/dist/ui/InkApp.js +175 -0
- package/dist/ui/InkApp.js.map +1 -0
- package/dist/ui/components/CategoryHeader.d.ts +16 -0
- package/dist/ui/components/CategoryHeader.d.ts.map +1 -0
- package/dist/ui/components/CategoryHeader.js +11 -0
- package/dist/ui/components/CategoryHeader.js.map +1 -0
- package/dist/ui/components/ScrollableList.d.ts +16 -0
- package/dist/ui/components/ScrollableList.d.ts.map +1 -0
- package/dist/ui/components/ScrollableList.js +35 -0
- package/dist/ui/components/ScrollableList.js.map +1 -0
- package/dist/ui/components/SearchInput.d.ts +18 -0
- package/dist/ui/components/SearchInput.d.ts.map +1 -0
- package/dist/ui/components/SearchInput.js +30 -0
- package/dist/ui/components/SearchInput.js.map +1 -0
- package/dist/ui/components/TabBar.d.ts +8 -0
- package/dist/ui/components/TabBar.d.ts.map +1 -0
- package/dist/ui/components/TabBar.js +18 -0
- package/dist/ui/components/TabBar.js.map +1 -0
- package/dist/ui/components/layout/Footer.d.ts +14 -0
- package/dist/ui/components/layout/Footer.d.ts.map +1 -0
- package/dist/ui/components/layout/Footer.js +23 -0
- package/dist/ui/components/layout/Footer.js.map +1 -0
- package/dist/ui/components/layout/Header.d.ts +4 -0
- package/dist/ui/components/layout/Header.d.ts.map +1 -0
- package/dist/ui/components/layout/Header.js +25 -0
- package/dist/ui/components/layout/Header.js.map +1 -0
- package/dist/ui/components/layout/Panel.d.ts +22 -0
- package/dist/ui/components/layout/Panel.d.ts.map +1 -0
- package/dist/ui/components/layout/Panel.js +8 -0
- package/dist/ui/components/layout/Panel.js.map +1 -0
- package/dist/ui/components/layout/ProgressBar.d.ts +12 -0
- package/dist/ui/components/layout/ProgressBar.d.ts.map +1 -0
- package/dist/ui/components/layout/ProgressBar.js +16 -0
- package/dist/ui/components/layout/ProgressBar.js.map +1 -0
- package/dist/ui/components/layout/ScopeTabs.d.ts +12 -0
- package/dist/ui/components/layout/ScopeTabs.d.ts.map +1 -0
- package/dist/ui/components/layout/ScopeTabs.js +8 -0
- package/dist/ui/components/layout/ScopeTabs.js.map +1 -0
- package/dist/ui/components/layout/ScreenLayout.d.ts +30 -0
- package/dist/ui/components/layout/ScreenLayout.d.ts.map +1 -0
- package/dist/ui/components/layout/ScreenLayout.js +23 -0
- package/dist/ui/components/layout/ScreenLayout.js.map +1 -0
- package/dist/ui/components/layout/index.d.ts +7 -0
- package/dist/ui/components/layout/index.d.ts.map +1 -0
- package/dist/ui/components/layout/index.js +7 -0
- package/dist/ui/components/layout/index.js.map +1 -0
- package/dist/ui/components/modals/ConfirmModal.d.ts +14 -0
- package/dist/ui/components/modals/ConfirmModal.d.ts.map +1 -0
- package/dist/ui/components/modals/ConfirmModal.js +15 -0
- package/dist/ui/components/modals/ConfirmModal.js.map +1 -0
- package/dist/ui/components/modals/InputModal.d.ts +16 -0
- package/dist/ui/components/modals/InputModal.d.ts.map +1 -0
- package/dist/ui/components/modals/InputModal.js +23 -0
- package/dist/ui/components/modals/InputModal.js.map +1 -0
- package/dist/ui/components/modals/LoadingModal.d.ts +8 -0
- package/dist/ui/components/modals/LoadingModal.d.ts.map +1 -0
- package/dist/ui/components/modals/LoadingModal.js +8 -0
- package/dist/ui/components/modals/LoadingModal.js.map +1 -0
- package/dist/ui/components/modals/MessageModal.d.ts +14 -0
- package/dist/ui/components/modals/MessageModal.d.ts.map +1 -0
- package/dist/ui/components/modals/MessageModal.js +17 -0
- package/dist/ui/components/modals/MessageModal.js.map +1 -0
- package/dist/ui/components/modals/ModalContainer.d.ts +7 -0
- package/dist/ui/components/modals/ModalContainer.d.ts.map +1 -0
- package/dist/ui/components/modals/ModalContainer.js +38 -0
- package/dist/ui/components/modals/ModalContainer.js.map +1 -0
- package/dist/ui/components/modals/SelectModal.d.ts +17 -0
- package/dist/ui/components/modals/SelectModal.d.ts.map +1 -0
- package/dist/ui/components/modals/SelectModal.js +33 -0
- package/dist/ui/components/modals/SelectModal.js.map +1 -0
- package/dist/ui/components/modals/index.d.ts +7 -0
- package/dist/ui/components/modals/index.d.ts.map +1 -0
- package/dist/ui/components/modals/index.js +7 -0
- package/dist/ui/components/modals/index.js.map +1 -0
- package/dist/ui/hooks/index.d.ts +3 -0
- package/dist/ui/hooks/index.d.ts.map +1 -0
- package/dist/ui/hooks/index.js +3 -0
- package/dist/ui/hooks/index.js.map +1 -0
- package/dist/ui/hooks/useAsyncData.d.ts +40 -0
- package/dist/ui/hooks/useAsyncData.d.ts.map +1 -0
- package/dist/ui/hooks/useAsyncData.js +78 -0
- package/dist/ui/hooks/useAsyncData.js.map +1 -0
- package/dist/ui/hooks/useKeyboardNavigation.d.ts +27 -0
- package/dist/ui/hooks/useKeyboardNavigation.d.ts.map +1 -0
- package/dist/ui/hooks/useKeyboardNavigation.js +82 -0
- package/dist/ui/hooks/useKeyboardNavigation.js.map +1 -0
- package/dist/ui/screens/CliToolsScreen.d.ts +4 -0
- package/dist/ui/screens/CliToolsScreen.d.ts.map +1 -0
- package/dist/ui/screens/CliToolsScreen.js +268 -0
- package/dist/ui/screens/CliToolsScreen.js.map +1 -0
- package/dist/ui/screens/EnvVarsScreen.d.ts +4 -0
- package/dist/ui/screens/EnvVarsScreen.d.ts.map +1 -0
- package/dist/ui/screens/EnvVarsScreen.js +145 -0
- package/dist/ui/screens/EnvVarsScreen.js.map +1 -0
- package/dist/ui/screens/McpRegistryScreen.d.ts +4 -0
- package/dist/ui/screens/McpRegistryScreen.d.ts.map +1 -0
- package/dist/ui/screens/McpRegistryScreen.js +226 -0
- package/dist/ui/screens/McpRegistryScreen.js.map +1 -0
- package/dist/ui/screens/McpScreen.d.ts +4 -0
- package/dist/ui/screens/McpScreen.d.ts.map +1 -0
- package/dist/ui/screens/McpScreen.js +222 -0
- package/dist/ui/screens/McpScreen.js.map +1 -0
- package/dist/ui/screens/ModelSelectorScreen.d.ts +4 -0
- package/dist/ui/screens/ModelSelectorScreen.d.ts.map +1 -0
- package/dist/ui/screens/ModelSelectorScreen.js +143 -0
- package/dist/ui/screens/ModelSelectorScreen.js.map +1 -0
- package/dist/ui/screens/PluginsScreen.d.ts +4 -0
- package/dist/ui/screens/PluginsScreen.d.ts.map +1 -0
- package/dist/ui/screens/PluginsScreen.js +747 -0
- package/dist/ui/screens/PluginsScreen.js.map +1 -0
- package/dist/ui/screens/StatusLineScreen.d.ts +4 -0
- package/dist/ui/screens/StatusLineScreen.d.ts.map +1 -0
- package/dist/ui/screens/StatusLineScreen.js +197 -0
- package/dist/ui/screens/StatusLineScreen.js.map +1 -0
- package/dist/ui/screens/index.d.ts +8 -0
- package/dist/ui/screens/index.d.ts.map +1 -0
- package/dist/ui/screens/index.js +8 -0
- package/dist/ui/screens/index.js.map +1 -0
- package/dist/ui/state/AppContext.d.ts +40 -0
- package/dist/ui/state/AppContext.d.ts.map +1 -0
- package/dist/ui/state/AppContext.js +162 -0
- package/dist/ui/state/AppContext.js.map +1 -0
- package/dist/ui/state/DimensionsContext.d.ts +25 -0
- package/dist/ui/state/DimensionsContext.d.ts.map +1 -0
- package/dist/ui/state/DimensionsContext.js +68 -0
- package/dist/ui/state/DimensionsContext.js.map +1 -0
- package/dist/ui/state/reducer.d.ts +4 -0
- package/dist/ui/state/reducer.d.ts.map +1 -0
- package/dist/ui/state/reducer.js +412 -0
- package/dist/ui/state/reducer.js.map +1 -0
- package/dist/ui/state/types.d.ts +266 -0
- package/dist/ui/state/types.d.ts.map +1 -0
- package/dist/ui/state/types.js +2 -0
- package/dist/ui/state/types.js.map +1 -0
- package/dist/utils/fuzzy-search.d.ts +33 -0
- package/dist/utils/fuzzy-search.d.ts.map +1 -0
- package/dist/utils/fuzzy-search.js +102 -0
- package/dist/utils/fuzzy-search.js.map +1 -0
- package/dist/utils/string-utils.d.ts +24 -0
- package/dist/utils/string-utils.d.ts.map +1 -0
- package/dist/utils/string-utils.js +62 -0
- package/dist/utils/string-utils.js.map +1 -0
- package/package.json +19 -7
- package/dist/ui/app.d.ts +0 -38
- package/dist/ui/app.d.ts.map +0 -1
- package/dist/ui/app.js +0 -590
- package/dist/ui/app.js.map +0 -1
- package/dist/ui/screens/cli-tools.d.ts +0 -4
- package/dist/ui/screens/cli-tools.d.ts.map +0 -1
- package/dist/ui/screens/cli-tools.js +0 -369
- package/dist/ui/screens/cli-tools.js.map +0 -1
- package/dist/ui/screens/env-vars.d.ts +0 -3
- package/dist/ui/screens/env-vars.d.ts.map +0 -1
- package/dist/ui/screens/env-vars.js +0 -119
- package/dist/ui/screens/env-vars.js.map +0 -1
- package/dist/ui/screens/main-menu.d.ts +0 -3
- package/dist/ui/screens/main-menu.d.ts.map +0 -1
- package/dist/ui/screens/main-menu.js +0 -110
- package/dist/ui/screens/main-menu.js.map +0 -1
- package/dist/ui/screens/mcp-registry.d.ts +0 -10
- package/dist/ui/screens/mcp-registry.d.ts.map +0 -1
- package/dist/ui/screens/mcp-registry.js +0 -310
- package/dist/ui/screens/mcp-registry.js.map +0 -1
- package/dist/ui/screens/mcp-setup.d.ts +0 -4
- package/dist/ui/screens/mcp-setup.d.ts.map +0 -1
- package/dist/ui/screens/mcp-setup.js +0 -492
- package/dist/ui/screens/mcp-setup.js.map +0 -1
- package/dist/ui/screens/plugins.d.ts +0 -3
- package/dist/ui/screens/plugins.d.ts.map +0 -1
- package/dist/ui/screens/plugins.js +0 -443
- package/dist/ui/screens/plugins.js.map +0 -1
- package/dist/ui/screens/statusline.d.ts +0 -5
- package/dist/ui/screens/statusline.d.ts.map +0 -1
- package/dist/ui/screens/statusline.js +0 -235
- package/dist/ui/screens/statusline.js.map +0 -1
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { getConfiguredMarketplaces, getEnabledPlugins, readSettings, writeSettings, getGlobalConfiguredMarketplaces, getGlobalEnabledPlugins, getGlobalInstalledPluginVersions, } from './claude-settings.js';
|
|
1
|
+
import { getConfiguredMarketplaces, getEnabledPlugins, readSettings, writeSettings, getGlobalConfiguredMarketplaces, getGlobalEnabledPlugins, getGlobalInstalledPluginVersions, getLocalEnabledPlugins, getLocalInstalledPluginVersions, } from './claude-settings.js';
|
|
2
2
|
import { defaultMarketplaces } from '../data/marketplaces.js';
|
|
3
|
+
import { scanLocalMarketplaces, refreshLocalMarketplaces } from './local-marketplace.js';
|
|
4
|
+
import { formatMarketplaceName, isValidGitHubRepo, parsePluginId } from '../utils/string-utils.js';
|
|
5
|
+
// Cache for local marketplaces (session-level) - Promise-based to prevent race conditions
|
|
6
|
+
let localMarketplacesPromise = null;
|
|
3
7
|
// Session-level cache for fetched marketplace data (no TTL - persists until explicit refresh)
|
|
4
8
|
const marketplaceCache = new Map();
|
|
5
9
|
export async function fetchMarketplacePlugins(marketplaceName, repo) {
|
|
@@ -8,22 +12,39 @@ export async function fetchMarketplacePlugins(marketplaceName, repo) {
|
|
|
8
12
|
if (cached) {
|
|
9
13
|
return cached;
|
|
10
14
|
}
|
|
15
|
+
// Validate repo format to prevent SSRF
|
|
16
|
+
if (!isValidGitHubRepo(repo)) {
|
|
17
|
+
console.error(`Invalid GitHub repo format: ${repo}`);
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
11
20
|
try {
|
|
12
21
|
// Fetch marketplace.json from GitHub
|
|
13
22
|
const url = `https://raw.githubusercontent.com/${repo}/main/.claude-plugin/marketplace.json`;
|
|
14
|
-
const response = await fetch(url
|
|
23
|
+
const response = await fetch(url, {
|
|
24
|
+
signal: AbortSignal.timeout(10000), // 10s timeout
|
|
25
|
+
});
|
|
15
26
|
if (!response.ok) {
|
|
16
27
|
console.error(`Failed to fetch marketplace: ${response.status}`);
|
|
17
28
|
return [];
|
|
18
29
|
}
|
|
30
|
+
// Validate content-type
|
|
31
|
+
const contentType = response.headers.get('content-type');
|
|
32
|
+
if (contentType && !contentType.includes('application/json') && !contentType.includes('text/plain')) {
|
|
33
|
+
console.error(`Invalid content-type for marketplace: ${contentType}`);
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
19
36
|
const data = (await response.json());
|
|
20
37
|
const plugins = [];
|
|
21
38
|
if (data.plugins && Array.isArray(data.plugins)) {
|
|
22
39
|
for (const plugin of data.plugins) {
|
|
23
40
|
plugins.push({
|
|
24
41
|
name: plugin.name,
|
|
25
|
-
version: plugin.version ||
|
|
42
|
+
version: plugin.version || null,
|
|
26
43
|
description: plugin.description || '',
|
|
44
|
+
category: plugin.category,
|
|
45
|
+
author: plugin.author,
|
|
46
|
+
homepage: plugin.homepage,
|
|
47
|
+
tags: plugin.tags,
|
|
27
48
|
});
|
|
28
49
|
}
|
|
29
50
|
}
|
|
@@ -40,11 +61,32 @@ export async function getAvailablePlugins(projectPath) {
|
|
|
40
61
|
const configuredMarketplaces = await getConfiguredMarketplaces(projectPath);
|
|
41
62
|
const enabledPlugins = await getEnabledPlugins(projectPath);
|
|
42
63
|
const installedVersions = await getInstalledPluginVersions(projectPath);
|
|
64
|
+
// Fetch all scopes for per-scope status
|
|
65
|
+
const userEnabledPlugins = await getGlobalEnabledPlugins();
|
|
66
|
+
const userInstalledVersions = await getGlobalInstalledPluginVersions();
|
|
67
|
+
const projectEnabledPlugins = await getEnabledPlugins(projectPath);
|
|
68
|
+
const projectInstalledVersions = await getInstalledPluginVersions(projectPath);
|
|
69
|
+
const localEnabledPlugins = await getLocalEnabledPlugins(projectPath);
|
|
70
|
+
const localInstalledVersions = await getLocalInstalledPluginVersions(projectPath);
|
|
43
71
|
const plugins = [];
|
|
44
|
-
|
|
72
|
+
const seenPluginIds = new Set();
|
|
73
|
+
// Helper to build scope status
|
|
74
|
+
const buildScopeStatus = (pluginId) => ({
|
|
75
|
+
userScope: userEnabledPlugins[pluginId] !== undefined
|
|
76
|
+
? { enabled: userEnabledPlugins[pluginId], version: userInstalledVersions[pluginId] }
|
|
77
|
+
: undefined,
|
|
78
|
+
projectScope: projectEnabledPlugins[pluginId] !== undefined
|
|
79
|
+
? { enabled: projectEnabledPlugins[pluginId], version: projectInstalledVersions[pluginId] }
|
|
80
|
+
: undefined,
|
|
81
|
+
localScope: localEnabledPlugins[pluginId] !== undefined
|
|
82
|
+
? { enabled: localEnabledPlugins[pluginId], version: localInstalledVersions[pluginId] }
|
|
83
|
+
: undefined,
|
|
84
|
+
});
|
|
85
|
+
// Get all marketplace names (configured + official defaults)
|
|
86
|
+
// Always include official marketplaces so users can browse them
|
|
45
87
|
const marketplaceNames = new Set();
|
|
46
88
|
for (const mp of defaultMarketplaces) {
|
|
47
|
-
if (configuredMarketplaces[mp.name]) {
|
|
89
|
+
if (configuredMarketplaces[mp.name] || mp.official) {
|
|
48
90
|
marketplaceNames.add(mp.name);
|
|
49
91
|
}
|
|
50
92
|
}
|
|
@@ -58,6 +100,8 @@ export async function getAvailablePlugins(projectPath) {
|
|
|
58
100
|
const pluginId = `${plugin.name}@${mpName}`;
|
|
59
101
|
const installedVersion = installedVersions[pluginId];
|
|
60
102
|
const isEnabled = enabledPlugins[pluginId] === true;
|
|
103
|
+
const scopeStatus = buildScopeStatus(pluginId);
|
|
104
|
+
seenPluginIds.add(pluginId);
|
|
61
105
|
plugins.push({
|
|
62
106
|
id: pluginId,
|
|
63
107
|
name: plugin.name,
|
|
@@ -67,21 +111,120 @@ export async function getAvailablePlugins(projectPath) {
|
|
|
67
111
|
marketplaceDisplay: marketplace.displayName,
|
|
68
112
|
enabled: isEnabled,
|
|
69
113
|
installedVersion: installedVersion,
|
|
70
|
-
hasUpdate: installedVersion ? compareVersions(plugin.version, installedVersion) > 0 : false,
|
|
114
|
+
hasUpdate: installedVersion && plugin.version ? compareVersions(plugin.version, installedVersion) > 0 : false,
|
|
115
|
+
...scopeStatus,
|
|
116
|
+
category: plugin.category,
|
|
117
|
+
author: plugin.author,
|
|
118
|
+
homepage: plugin.homepage,
|
|
119
|
+
tags: plugin.tags,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Fetch ALL plugins from local marketplace caches (for marketplaces not in defaults)
|
|
124
|
+
const localMarketplaces = await getLocalMarketplaces();
|
|
125
|
+
for (const [mpName, localMp] of localMarketplaces) {
|
|
126
|
+
// Skip if already fetched from defaults
|
|
127
|
+
if (marketplaceNames.has(mpName))
|
|
128
|
+
continue;
|
|
129
|
+
// Add ALL plugins from this local marketplace cache
|
|
130
|
+
for (const localPlugin of localMp.plugins) {
|
|
131
|
+
const pluginId = `${localPlugin.name}@${mpName}`;
|
|
132
|
+
if (seenPluginIds.has(pluginId))
|
|
133
|
+
continue;
|
|
134
|
+
const installedVersion = installedVersions[pluginId];
|
|
135
|
+
const isEnabled = enabledPlugins[pluginId] === true;
|
|
136
|
+
const scopeStatus = buildScopeStatus(pluginId);
|
|
137
|
+
seenPluginIds.add(pluginId);
|
|
138
|
+
plugins.push({
|
|
139
|
+
id: pluginId,
|
|
140
|
+
name: localPlugin.name,
|
|
141
|
+
version: localPlugin.version,
|
|
142
|
+
description: localPlugin.description || '',
|
|
143
|
+
marketplace: mpName,
|
|
144
|
+
marketplaceDisplay: localMp.name || formatMarketplaceName(mpName),
|
|
145
|
+
enabled: isEnabled,
|
|
146
|
+
installedVersion: installedVersion,
|
|
147
|
+
hasUpdate: installedVersion ? compareVersions(localPlugin.version, installedVersion) > 0 : false,
|
|
148
|
+
...scopeStatus,
|
|
149
|
+
category: localPlugin.category,
|
|
150
|
+
author: localPlugin.author,
|
|
151
|
+
agents: localPlugin.agents,
|
|
152
|
+
commands: localPlugin.commands,
|
|
153
|
+
skills: localPlugin.skills,
|
|
154
|
+
mcpServers: localPlugin.mcpServers,
|
|
155
|
+
lspServers: localPlugin.lspServers,
|
|
71
156
|
});
|
|
72
157
|
}
|
|
73
158
|
}
|
|
159
|
+
// Add orphaned plugins (enabled/installed but not in any cache)
|
|
160
|
+
const allPluginIds = new Set([
|
|
161
|
+
...Object.keys(enabledPlugins),
|
|
162
|
+
...Object.keys(installedVersions),
|
|
163
|
+
]);
|
|
164
|
+
for (const pluginId of allPluginIds) {
|
|
165
|
+
if (seenPluginIds.has(pluginId))
|
|
166
|
+
continue;
|
|
167
|
+
const parsed = parsePluginId(pluginId);
|
|
168
|
+
if (!parsed)
|
|
169
|
+
continue;
|
|
170
|
+
const { pluginName, marketplace: mpName } = parsed;
|
|
171
|
+
const installedVersion = installedVersions[pluginId];
|
|
172
|
+
const isEnabled = enabledPlugins[pluginId] === true;
|
|
173
|
+
const scopeStatus = buildScopeStatus(pluginId);
|
|
174
|
+
// Try to get plugin info from local marketplace cache (fallback)
|
|
175
|
+
const localMp = localMarketplaces.get(mpName);
|
|
176
|
+
const localPlugin = localMp?.plugins.find((p) => p.name === pluginName);
|
|
177
|
+
const latestVersion = localPlugin?.version || installedVersion || 'unknown';
|
|
178
|
+
const description = localPlugin?.description || 'Installed plugin';
|
|
179
|
+
const hasUpdate = installedVersion && localPlugin?.version
|
|
180
|
+
? compareVersions(localPlugin.version, installedVersion) > 0
|
|
181
|
+
: false;
|
|
182
|
+
plugins.push({
|
|
183
|
+
id: pluginId,
|
|
184
|
+
name: pluginName,
|
|
185
|
+
version: latestVersion,
|
|
186
|
+
description,
|
|
187
|
+
marketplace: mpName,
|
|
188
|
+
marketplaceDisplay: localMp?.name || formatMarketplaceName(mpName),
|
|
189
|
+
enabled: isEnabled,
|
|
190
|
+
installedVersion: installedVersion,
|
|
191
|
+
hasUpdate,
|
|
192
|
+
...scopeStatus,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
74
195
|
return plugins;
|
|
75
196
|
}
|
|
76
197
|
export async function getGlobalAvailablePlugins() {
|
|
77
198
|
const configuredMarketplaces = await getGlobalConfiguredMarketplaces();
|
|
78
199
|
const enabledPlugins = await getGlobalEnabledPlugins();
|
|
79
200
|
const installedVersions = await getGlobalInstalledPluginVersions();
|
|
201
|
+
// Fetch all scopes for per-scope status display
|
|
202
|
+
const userEnabledPlugins = await getGlobalEnabledPlugins();
|
|
203
|
+
const userInstalledVersions = await getGlobalInstalledPluginVersions();
|
|
204
|
+
// Also fetch project and local scope for complete status display
|
|
205
|
+
const projectEnabledPlugins = await getEnabledPlugins();
|
|
206
|
+
const projectInstalledVersions = await getInstalledPluginVersions();
|
|
207
|
+
const localEnabledPlugins = await getLocalEnabledPlugins();
|
|
208
|
+
const localInstalledVersions = await getLocalInstalledPluginVersions();
|
|
80
209
|
const plugins = [];
|
|
81
|
-
|
|
210
|
+
const seenPluginIds = new Set();
|
|
211
|
+
// Helper to build scope status (show all scopes)
|
|
212
|
+
const buildScopeStatus = (pluginId) => ({
|
|
213
|
+
userScope: userEnabledPlugins[pluginId] !== undefined
|
|
214
|
+
? { enabled: userEnabledPlugins[pluginId], version: userInstalledVersions[pluginId] }
|
|
215
|
+
: undefined,
|
|
216
|
+
projectScope: projectEnabledPlugins[pluginId] !== undefined
|
|
217
|
+
? { enabled: projectEnabledPlugins[pluginId], version: projectInstalledVersions[pluginId] }
|
|
218
|
+
: undefined,
|
|
219
|
+
localScope: localEnabledPlugins[pluginId] !== undefined
|
|
220
|
+
? { enabled: localEnabledPlugins[pluginId], version: localInstalledVersions[pluginId] }
|
|
221
|
+
: undefined,
|
|
222
|
+
});
|
|
223
|
+
// Get all marketplace names (configured + official defaults)
|
|
224
|
+
// Always include official marketplaces so users can browse them
|
|
82
225
|
const marketplaceNames = new Set();
|
|
83
226
|
for (const mp of defaultMarketplaces) {
|
|
84
|
-
if (configuredMarketplaces[mp.name]) {
|
|
227
|
+
if (configuredMarketplaces[mp.name] || mp.official) {
|
|
85
228
|
marketplaceNames.add(mp.name);
|
|
86
229
|
}
|
|
87
230
|
}
|
|
@@ -95,6 +238,8 @@ export async function getGlobalAvailablePlugins() {
|
|
|
95
238
|
const pluginId = `${plugin.name}@${mpName}`;
|
|
96
239
|
const installedVersion = installedVersions[pluginId];
|
|
97
240
|
const isEnabled = enabledPlugins[pluginId] === true;
|
|
241
|
+
const scopeStatus = buildScopeStatus(pluginId);
|
|
242
|
+
seenPluginIds.add(pluginId);
|
|
98
243
|
plugins.push({
|
|
99
244
|
id: pluginId,
|
|
100
245
|
name: plugin.name,
|
|
@@ -104,14 +249,93 @@ export async function getGlobalAvailablePlugins() {
|
|
|
104
249
|
marketplaceDisplay: marketplace.displayName,
|
|
105
250
|
enabled: isEnabled,
|
|
106
251
|
installedVersion: installedVersion,
|
|
107
|
-
hasUpdate: installedVersion ? compareVersions(plugin.version, installedVersion) > 0 : false,
|
|
252
|
+
hasUpdate: installedVersion && plugin.version ? compareVersions(plugin.version, installedVersion) > 0 : false,
|
|
253
|
+
...scopeStatus,
|
|
254
|
+
category: plugin.category,
|
|
255
|
+
author: plugin.author,
|
|
256
|
+
homepage: plugin.homepage,
|
|
257
|
+
tags: plugin.tags,
|
|
108
258
|
});
|
|
109
259
|
}
|
|
110
260
|
}
|
|
261
|
+
// Fetch ALL plugins from local marketplace caches (for marketplaces not in defaults)
|
|
262
|
+
const localMarketplaces = await getLocalMarketplaces();
|
|
263
|
+
for (const [mpName, localMp] of localMarketplaces) {
|
|
264
|
+
// Skip if already fetched from defaults
|
|
265
|
+
if (marketplaceNames.has(mpName))
|
|
266
|
+
continue;
|
|
267
|
+
// Add ALL plugins from this local marketplace cache
|
|
268
|
+
for (const localPlugin of localMp.plugins) {
|
|
269
|
+
const pluginId = `${localPlugin.name}@${mpName}`;
|
|
270
|
+
if (seenPluginIds.has(pluginId))
|
|
271
|
+
continue;
|
|
272
|
+
const installedVersion = installedVersions[pluginId];
|
|
273
|
+
const isEnabled = enabledPlugins[pluginId] === true;
|
|
274
|
+
const scopeStatus = buildScopeStatus(pluginId);
|
|
275
|
+
seenPluginIds.add(pluginId);
|
|
276
|
+
plugins.push({
|
|
277
|
+
id: pluginId,
|
|
278
|
+
name: localPlugin.name,
|
|
279
|
+
version: localPlugin.version,
|
|
280
|
+
description: localPlugin.description || '',
|
|
281
|
+
marketplace: mpName,
|
|
282
|
+
marketplaceDisplay: localMp.name || formatMarketplaceName(mpName),
|
|
283
|
+
enabled: isEnabled,
|
|
284
|
+
installedVersion: installedVersion,
|
|
285
|
+
hasUpdate: installedVersion ? compareVersions(localPlugin.version, installedVersion) > 0 : false,
|
|
286
|
+
...scopeStatus,
|
|
287
|
+
category: localPlugin.category,
|
|
288
|
+
author: localPlugin.author,
|
|
289
|
+
agents: localPlugin.agents,
|
|
290
|
+
commands: localPlugin.commands,
|
|
291
|
+
skills: localPlugin.skills,
|
|
292
|
+
mcpServers: localPlugin.mcpServers,
|
|
293
|
+
lspServers: localPlugin.lspServers,
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// Add orphaned plugins (enabled/installed but not in any cache)
|
|
298
|
+
const allPluginIds = new Set([
|
|
299
|
+
...Object.keys(enabledPlugins),
|
|
300
|
+
...Object.keys(installedVersions),
|
|
301
|
+
]);
|
|
302
|
+
for (const pluginId of allPluginIds) {
|
|
303
|
+
if (seenPluginIds.has(pluginId))
|
|
304
|
+
continue;
|
|
305
|
+
const parsed = parsePluginId(pluginId);
|
|
306
|
+
if (!parsed)
|
|
307
|
+
continue;
|
|
308
|
+
const { pluginName, marketplace: mpName } = parsed;
|
|
309
|
+
const installedVersion = installedVersions[pluginId];
|
|
310
|
+
const isEnabled = enabledPlugins[pluginId] === true;
|
|
311
|
+
const scopeStatus = buildScopeStatus(pluginId);
|
|
312
|
+
// Try to get plugin info from local marketplace cache (fallback)
|
|
313
|
+
const localMp = localMarketplaces.get(mpName);
|
|
314
|
+
const localPlugin = localMp?.plugins.find((p) => p.name === pluginName);
|
|
315
|
+
const latestVersion = localPlugin?.version || installedVersion || 'unknown';
|
|
316
|
+
const description = localPlugin?.description || 'Installed plugin';
|
|
317
|
+
const hasUpdate = installedVersion && localPlugin?.version
|
|
318
|
+
? compareVersions(localPlugin.version, installedVersion) > 0
|
|
319
|
+
: false;
|
|
320
|
+
plugins.push({
|
|
321
|
+
id: pluginId,
|
|
322
|
+
name: pluginName,
|
|
323
|
+
version: latestVersion,
|
|
324
|
+
description,
|
|
325
|
+
marketplace: mpName,
|
|
326
|
+
marketplaceDisplay: localMp?.name || formatMarketplaceName(mpName),
|
|
327
|
+
enabled: isEnabled,
|
|
328
|
+
...scopeStatus,
|
|
329
|
+
installedVersion: installedVersion,
|
|
330
|
+
hasUpdate,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
111
333
|
return plugins;
|
|
112
334
|
}
|
|
113
335
|
// Simple version comparison (returns 1 if a > b, -1 if a < b, 0 if equal)
|
|
114
336
|
function compareVersions(a, b) {
|
|
337
|
+
if (!a || !b)
|
|
338
|
+
return 0;
|
|
115
339
|
const partsA = a.replace(/^v/, '').split('.').map(Number);
|
|
116
340
|
const partsB = b.replace(/^v/, '').split('.').map(Number);
|
|
117
341
|
for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
|
|
@@ -147,5 +371,31 @@ export async function removeInstalledPluginVersion(pluginId, projectPath) {
|
|
|
147
371
|
// Clear marketplace cache
|
|
148
372
|
export function clearMarketplaceCache() {
|
|
149
373
|
marketplaceCache.clear();
|
|
374
|
+
localMarketplacesPromise = null;
|
|
375
|
+
}
|
|
376
|
+
// Get local marketplaces (with Promise-based caching to prevent race conditions)
|
|
377
|
+
async function getLocalMarketplaces() {
|
|
378
|
+
if (localMarketplacesPromise === null) {
|
|
379
|
+
localMarketplacesPromise = scanLocalMarketplaces();
|
|
380
|
+
}
|
|
381
|
+
return localMarketplacesPromise;
|
|
382
|
+
}
|
|
383
|
+
// Export local marketplaces for use in other modules
|
|
384
|
+
export async function getLocalMarketplacesInfo() {
|
|
385
|
+
return getLocalMarketplaces();
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Refresh all marketplace data:
|
|
389
|
+
* 1. Git pull on all local marketplaces
|
|
390
|
+
* 2. Clear all caches (forces re-fetch from GitHub and re-scan of local)
|
|
391
|
+
* Returns results from git pull operations
|
|
392
|
+
* @param onProgress - Optional callback for progress updates
|
|
393
|
+
*/
|
|
394
|
+
export async function refreshAllMarketplaces(onProgress) {
|
|
395
|
+
// First, git pull all local marketplaces
|
|
396
|
+
const results = await refreshLocalMarketplaces(onProgress);
|
|
397
|
+
// Then clear all caches to force fresh data
|
|
398
|
+
clearMarketplaceCache();
|
|
399
|
+
return results;
|
|
150
400
|
}
|
|
151
401
|
//# sourceMappingURL=plugin-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../../src/services/plugin-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../../src/services/plugin-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export interface McpServer {
|
|
|
6
6
|
env?: Record<string, string>;
|
|
7
7
|
type?: 'http';
|
|
8
8
|
url?: string;
|
|
9
|
-
category: 'browser' | 'ai' | 'design' | 'dev-tools' | 'cloud' | 'database' | 'productivity';
|
|
9
|
+
category: 'browser' | 'ai' | 'design' | 'dev-tools' | 'cloud' | 'database' | 'productivity' | 'seo';
|
|
10
10
|
requiresConfig?: boolean;
|
|
11
11
|
configFields?: ConfigField[];
|
|
12
12
|
}
|
|
@@ -28,6 +28,11 @@ export interface Marketplace {
|
|
|
28
28
|
description: string;
|
|
29
29
|
official?: boolean;
|
|
30
30
|
}
|
|
31
|
+
export interface DiscoveredMarketplace {
|
|
32
|
+
name: string;
|
|
33
|
+
source: 'default' | 'configured' | 'inferred';
|
|
34
|
+
config?: MarketplaceSource;
|
|
35
|
+
}
|
|
31
36
|
export interface Plugin {
|
|
32
37
|
name: string;
|
|
33
38
|
version: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InkApp.d.ts","sourceRoot":"","sources":["../../src/ui/InkApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAkBnD,eAAO,MAAM,OAAO,UAAU,CAAC;AAkN/B,wBAAgB,GAAG,IAAI,KAAK,CAAC,YAAY,CAMxC;AAED,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { Box, Text, useApp as useInkApp, useInput, useStdout } from 'ink';
|
|
4
|
+
import fs from 'node:fs';
|
|
5
|
+
import { AppProvider, useApp, useNavigation, useModal } from './state/AppContext.js';
|
|
6
|
+
import { DimensionsProvider, useDimensions } from './state/DimensionsContext.js';
|
|
7
|
+
// Header removed as per new design
|
|
8
|
+
import { ModalContainer } from './components/modals/index.js';
|
|
9
|
+
import { PluginsScreen, McpScreen, McpRegistryScreen, StatusLineScreen, EnvVarsScreen, CliToolsScreen, } from './screens/index.js';
|
|
10
|
+
import { refreshLocalMarketplaces } from '../services/local-marketplace.js';
|
|
11
|
+
export const VERSION = '1.0.0';
|
|
12
|
+
function Router() {
|
|
13
|
+
const { state } = useApp();
|
|
14
|
+
const { currentRoute } = state;
|
|
15
|
+
switch (currentRoute.screen) {
|
|
16
|
+
case 'plugins':
|
|
17
|
+
return _jsx(PluginsScreen, {});
|
|
18
|
+
case 'mcp':
|
|
19
|
+
return _jsx(McpScreen, {});
|
|
20
|
+
case 'mcp-registry':
|
|
21
|
+
return _jsx(McpRegistryScreen, {});
|
|
22
|
+
case 'statusline':
|
|
23
|
+
return _jsx(StatusLineScreen, {});
|
|
24
|
+
case 'env-vars':
|
|
25
|
+
return _jsx(EnvVarsScreen, {});
|
|
26
|
+
case 'cli-tools':
|
|
27
|
+
return _jsx(CliToolsScreen, {});
|
|
28
|
+
default:
|
|
29
|
+
return _jsx(PluginsScreen, {});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function GlobalKeyHandler({ onDebugToggle }) {
|
|
33
|
+
const { state } = useApp();
|
|
34
|
+
const { navigateToScreen } = useNavigation();
|
|
35
|
+
const { exit } = useInkApp();
|
|
36
|
+
const modal = useModal();
|
|
37
|
+
const { stdout } = useStdout();
|
|
38
|
+
useInput((input, key) => {
|
|
39
|
+
// Debug key - always available
|
|
40
|
+
if (input === 'D' && key.shift) {
|
|
41
|
+
onDebugToggle();
|
|
42
|
+
// Also write debug info to file
|
|
43
|
+
const debugInfo = {
|
|
44
|
+
timestamp: new Date().toISOString(),
|
|
45
|
+
terminal: { rows: stdout?.rows, columns: stdout?.columns },
|
|
46
|
+
state: {
|
|
47
|
+
currentRoute: state.currentRoute,
|
|
48
|
+
isSearching: state.isSearching,
|
|
49
|
+
modal: state.modal ? { type: state.modal.type } : null,
|
|
50
|
+
plugins: {
|
|
51
|
+
scope: state.plugins.scope,
|
|
52
|
+
selectedIndex: state.plugins.selectedIndex,
|
|
53
|
+
searchQuery: state.plugins.searchQuery,
|
|
54
|
+
marketplacesStatus: state.plugins.marketplaces.status,
|
|
55
|
+
pluginsStatus: state.plugins.plugins.status,
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
fs.writeFileSync('/tmp/claudeup-debug.json', JSON.stringify(debugInfo, null, 2));
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
// Don't handle keys when modal is open or searching
|
|
63
|
+
if (state.modal || state.isSearching)
|
|
64
|
+
return;
|
|
65
|
+
// Global navigation shortcuts (1-5) - include mcp-registry as it's a sub-screen of mcp
|
|
66
|
+
const isTopLevel = ['plugins', 'mcp', 'mcp-registry', 'statusline', 'env-vars', 'cli-tools'].includes(state.currentRoute.screen);
|
|
67
|
+
if (isTopLevel) {
|
|
68
|
+
if (input === '1')
|
|
69
|
+
navigateToScreen('plugins');
|
|
70
|
+
else if (input === '2')
|
|
71
|
+
navigateToScreen('mcp');
|
|
72
|
+
else if (input === '3')
|
|
73
|
+
navigateToScreen('statusline');
|
|
74
|
+
else if (input === '4')
|
|
75
|
+
navigateToScreen('env-vars');
|
|
76
|
+
else if (input === '5')
|
|
77
|
+
navigateToScreen('cli-tools');
|
|
78
|
+
// Tab navigation cycling
|
|
79
|
+
if (key.tab) {
|
|
80
|
+
const screens = ['plugins', 'mcp', 'statusline', 'env-vars', 'cli-tools'];
|
|
81
|
+
const currentIndex = screens.indexOf(state.currentRoute.screen);
|
|
82
|
+
if (currentIndex !== -1) {
|
|
83
|
+
const nextIndex = key.shift
|
|
84
|
+
? (currentIndex - 1 + screens.length) % screens.length
|
|
85
|
+
: (currentIndex + 1) % screens.length;
|
|
86
|
+
navigateToScreen(screens[nextIndex]);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Escape/q to go back or exit
|
|
91
|
+
if (key.escape || input === 'q') {
|
|
92
|
+
if (state.currentRoute.screen === 'plugins') {
|
|
93
|
+
// On home screen, exit immediately
|
|
94
|
+
exit();
|
|
95
|
+
}
|
|
96
|
+
else if (state.currentRoute.screen === 'mcp-registry') {
|
|
97
|
+
// Go back to MCP from registry
|
|
98
|
+
navigateToScreen('mcp');
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Go back to plugins (home)
|
|
102
|
+
navigateToScreen('plugins');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// ? for help
|
|
106
|
+
if (input === '?') {
|
|
107
|
+
modal.message('claudeup Help', `Navigation
|
|
108
|
+
↑/↓ or j/k Move selection
|
|
109
|
+
Enter Select / Toggle
|
|
110
|
+
Escape or q Back / Quit
|
|
111
|
+
? This help
|
|
112
|
+
|
|
113
|
+
Quick Navigation
|
|
114
|
+
1 Plugins 4 Env Vars
|
|
115
|
+
2 MCP Servers 5 CLI Tools
|
|
116
|
+
3 Status Line
|
|
117
|
+
|
|
118
|
+
Plugin Actions
|
|
119
|
+
u Update d Uninstall
|
|
120
|
+
a Update All r Refresh
|
|
121
|
+
|
|
122
|
+
MCP Servers
|
|
123
|
+
/ Search local + remote
|
|
124
|
+
r Browse MCP registry`, 'info');
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
function ProgressIndicator({ message, current, total }) {
|
|
130
|
+
let progressText = message;
|
|
131
|
+
if (current !== undefined && total !== undefined && total > 0) {
|
|
132
|
+
const barWidth = 20;
|
|
133
|
+
const filled = Math.round((current / total) * barWidth);
|
|
134
|
+
const empty = barWidth - filled;
|
|
135
|
+
progressText += ` [${'█'.repeat(filled)}${'░'.repeat(empty)}] ${current}/${total}`;
|
|
136
|
+
}
|
|
137
|
+
return (_jsxs(Box, { paddingX: 1, children: [_jsx(Text, { color: "cyan", children: "\u27F3 " }), _jsx(Text, { children: progressText })] }));
|
|
138
|
+
}
|
|
139
|
+
function AppContentInner({ showDebug, onDebugToggle }) {
|
|
140
|
+
const { state, dispatch } = useApp();
|
|
141
|
+
const { progress } = state;
|
|
142
|
+
const dimensions = useDimensions();
|
|
143
|
+
// Auto-refresh marketplaces on startup
|
|
144
|
+
useEffect(() => {
|
|
145
|
+
const noRefresh = process.argv.includes('--no-refresh');
|
|
146
|
+
if (noRefresh)
|
|
147
|
+
return;
|
|
148
|
+
dispatch({ type: 'SHOW_PROGRESS', state: { message: 'Syncing marketplaces...' } });
|
|
149
|
+
refreshLocalMarketplaces((prog) => {
|
|
150
|
+
dispatch({
|
|
151
|
+
type: 'UPDATE_PROGRESS',
|
|
152
|
+
state: { message: `Syncing ${prog.name}...`, current: prog.current, total: prog.total },
|
|
153
|
+
});
|
|
154
|
+
})
|
|
155
|
+
.then(() => {
|
|
156
|
+
dispatch({ type: 'HIDE_PROGRESS' });
|
|
157
|
+
dispatch({ type: 'DATA_REFRESH_COMPLETE' });
|
|
158
|
+
})
|
|
159
|
+
.catch(() => {
|
|
160
|
+
dispatch({ type: 'HIDE_PROGRESS' });
|
|
161
|
+
});
|
|
162
|
+
}, [dispatch]);
|
|
163
|
+
return (_jsxs(Box, { flexDirection: "column", height: dimensions.terminalHeight, children: [showDebug && (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: "yellow", dimColor: true, children: ["DEBUG: ", dimensions.terminalWidth, "x", dimensions.terminalHeight, " | content=", dimensions.contentHeight, " | screen=", state.currentRoute.screen] }) })), progress && _jsx(ProgressIndicator, { ...progress }), _jsx(Box, { flexDirection: "column", height: dimensions.contentHeight, paddingX: 1, overflow: "hidden", children: _jsx(Router, {}) }), _jsx(GlobalKeyHandler, { onDebugToggle: onDebugToggle }), _jsx(ModalContainer, {})] }));
|
|
164
|
+
}
|
|
165
|
+
function AppContent() {
|
|
166
|
+
const { state } = useApp();
|
|
167
|
+
const { progress } = state;
|
|
168
|
+
const [showDebug, setShowDebug] = useState(false);
|
|
169
|
+
return (_jsx(DimensionsProvider, { showProgress: !!progress, showDebug: showDebug, children: _jsx(AppContentInner, { showDebug: showDebug, onDebugToggle: () => setShowDebug(s => !s) }) }));
|
|
170
|
+
}
|
|
171
|
+
export function App() {
|
|
172
|
+
return (_jsx(AppProvider, { children: _jsx(AppContent, {}) }));
|
|
173
|
+
}
|
|
174
|
+
export default App;
|
|
175
|
+
//# sourceMappingURL=InkApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InkApp.js","sourceRoot":"","sources":["../../src/ui/InkApp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface CategoryHeaderProps {
|
|
3
|
+
/** Category title */
|
|
4
|
+
title: string;
|
|
5
|
+
/** Status badge (e.g., "✓ Configured", "3 plugins") */
|
|
6
|
+
status?: string;
|
|
7
|
+
/** Status badge color */
|
|
8
|
+
statusColor?: string;
|
|
9
|
+
/** Whether category is expanded */
|
|
10
|
+
expanded?: boolean;
|
|
11
|
+
/** Number of items in category */
|
|
12
|
+
count?: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function CategoryHeader({ title, status, statusColor, expanded, count, }: CategoryHeaderProps): React.ReactElement;
|
|
15
|
+
export default CategoryHeader;
|
|
16
|
+
//# sourceMappingURL=CategoryHeader.d.ts.map
|