@orderful/droid 0.16.0 → 0.17.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/.claude/CLAUDE.md +3 -43
- package/AGENTS.md +75 -0
- package/CHANGELOG.md +18 -0
- package/bun.lock +12 -0
- package/dist/bin/droid.js +3064 -54
- package/dist/commands/tui/components/Badge.test.d.ts +2 -0
- package/dist/commands/tui/components/Badge.test.d.ts.map +1 -0
- package/dist/commands/tui/components/TabBar.test.d.ts +2 -0
- package/dist/commands/tui/components/TabBar.test.d.ts.map +1 -0
- package/dist/index.js +952 -6
- package/package.json +7 -2
- package/playwright.config.ts +20 -0
- package/scripts/build.ts +78 -0
- package/scripts/screenshot-tui.ts +126 -0
- package/src/commands/tui/components/Badge.test.tsx +94 -0
- package/src/commands/tui/components/TabBar.test.tsx +39 -0
- package/tests/e2e/tui.spec.ts +128 -0
- package/dist/bin/droid.js.map +0 -1
- package/dist/commands/config.js +0 -67
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/install.js +0 -45
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/setup.js +0 -269
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/skills.js +0 -144
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/tui/components/Badge.js +0 -29
- package/dist/commands/tui/components/Badge.js.map +0 -1
- package/dist/commands/tui/components/Markdown.js +0 -42
- package/dist/commands/tui/components/Markdown.js.map +0 -1
- package/dist/commands/tui/components/SettingsDetails.js +0 -11
- package/dist/commands/tui/components/SettingsDetails.js.map +0 -1
- package/dist/commands/tui/components/TabBar.js +0 -7
- package/dist/commands/tui/components/TabBar.js.map +0 -1
- package/dist/commands/tui/components/ToolDetails.js +0 -35
- package/dist/commands/tui/components/ToolDetails.js.map +0 -1
- package/dist/commands/tui/components/ToolItem.js +0 -11
- package/dist/commands/tui/components/ToolItem.js.map +0 -1
- package/dist/commands/tui/constants.js +0 -17
- package/dist/commands/tui/constants.js.map +0 -1
- package/dist/commands/tui/hooks/useAppUpdate.js +0 -52
- package/dist/commands/tui/hooks/useAppUpdate.js.map +0 -1
- package/dist/commands/tui/hooks/useToolUpdates.js +0 -77
- package/dist/commands/tui/hooks/useToolUpdates.js.map +0 -1
- package/dist/commands/tui/types.js +0 -2
- package/dist/commands/tui/types.js.map +0 -1
- package/dist/commands/tui/views/ReadmeViewer.js +0 -56
- package/dist/commands/tui/views/ReadmeViewer.js.map +0 -1
- package/dist/commands/tui/views/SetupScreen.js +0 -114
- package/dist/commands/tui/views/SetupScreen.js.map +0 -1
- package/dist/commands/tui/views/SkillConfigScreen.js +0 -148
- package/dist/commands/tui/views/SkillConfigScreen.js.map +0 -1
- package/dist/commands/tui/views/ToolExplorer.js +0 -86
- package/dist/commands/tui/views/ToolExplorer.js.map +0 -1
- package/dist/commands/tui/views/ToolUpdatePrompt.js +0 -38
- package/dist/commands/tui/views/ToolUpdatePrompt.js.map +0 -1
- package/dist/commands/tui/views/WelcomeScreen.js +0 -46
- package/dist/commands/tui/views/WelcomeScreen.js.map +0 -1
- package/dist/commands/tui.js +0 -307
- package/dist/commands/tui.js.map +0 -1
- package/dist/commands/uninstall.js +0 -26
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/commands/update.js +0 -45
- package/dist/commands/update.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/agents.js +0 -248
- package/dist/lib/agents.js.map +0 -1
- package/dist/lib/config.js +0 -196
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/platforms.js +0 -52
- package/dist/lib/platforms.js.map +0 -1
- package/dist/lib/quotes.js +0 -24
- package/dist/lib/quotes.js.map +0 -1
- package/dist/lib/skill-config.js +0 -80
- package/dist/lib/skill-config.js.map +0 -1
- package/dist/lib/skills.js +0 -582
- package/dist/lib/skills.js.map +0 -1
- package/dist/lib/tools.js +0 -145
- package/dist/lib/tools.js.map +0 -1
- package/dist/lib/types.js +0 -50
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/version.js +0 -100
- package/dist/lib/version.js.map +0 -1
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text, useInput } from 'ink';
|
|
3
|
-
import { useState, useMemo } from 'react';
|
|
4
|
-
import { existsSync, readFileSync } from 'fs';
|
|
5
|
-
import { join } from 'path';
|
|
6
|
-
import { getBundledToolsDir } from '../../../lib/tools';
|
|
7
|
-
import { colors } from '../constants';
|
|
8
|
-
export function ToolExplorer({ tool, onViewSource, onClose }) {
|
|
9
|
-
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
10
|
-
// Build list of all explorable items
|
|
11
|
-
const items = useMemo(() => {
|
|
12
|
-
const result = [];
|
|
13
|
-
const toolDir = getBundledToolsDir();
|
|
14
|
-
// Add skills
|
|
15
|
-
for (const skill of tool.includes.skills) {
|
|
16
|
-
result.push({
|
|
17
|
-
type: 'skill',
|
|
18
|
-
name: skill.name,
|
|
19
|
-
path: join(toolDir, tool.name, 'skills', skill.name, 'SKILL.md'),
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
// Add commands
|
|
23
|
-
for (const cmd of tool.includes.commands) {
|
|
24
|
-
result.push({
|
|
25
|
-
type: 'command',
|
|
26
|
-
name: `/${cmd}`,
|
|
27
|
-
path: join(toolDir, tool.name, 'commands', `${cmd}.md`),
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
// Add agents
|
|
31
|
-
for (const agent of tool.includes.agents) {
|
|
32
|
-
result.push({
|
|
33
|
-
type: 'agent',
|
|
34
|
-
name: agent,
|
|
35
|
-
path: join(toolDir, tool.name, 'agents', agent, 'AGENT.md'),
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
return result;
|
|
39
|
-
}, [tool]);
|
|
40
|
-
useInput((input, key) => {
|
|
41
|
-
if (key.escape) {
|
|
42
|
-
onClose();
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
if (key.leftArrow || key.upArrow) {
|
|
46
|
-
setSelectedIndex((prev) => Math.max(0, prev - 1));
|
|
47
|
-
}
|
|
48
|
-
if (key.rightArrow || key.downArrow) {
|
|
49
|
-
setSelectedIndex((prev) => Math.min(items.length - 1, prev + 1));
|
|
50
|
-
}
|
|
51
|
-
if (key.return && items.length > 0) {
|
|
52
|
-
const item = items[selectedIndex];
|
|
53
|
-
if (existsSync(item.path)) {
|
|
54
|
-
const content = readFileSync(item.path, 'utf-8');
|
|
55
|
-
onViewSource(`${tool.name} / ${item.name}`, content);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
// Try YAML fallback for skills/agents
|
|
59
|
-
const yamlPath = item.path.replace('.md', '.yaml');
|
|
60
|
-
if (existsSync(yamlPath)) {
|
|
61
|
-
const content = readFileSync(yamlPath, 'utf-8');
|
|
62
|
-
onViewSource(`${tool.name} / ${item.name}`, content);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
// Group items by type for display
|
|
68
|
-
const skillItems = items.filter(i => i.type === 'skill');
|
|
69
|
-
const commandItems = items.filter(i => i.type === 'command');
|
|
70
|
-
const agentItems = items.filter(i => i.type === 'agent');
|
|
71
|
-
const getItemIndex = (item) => items.indexOf(item);
|
|
72
|
-
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: [_jsx(Text, { color: colors.textDim, children: "[" }), _jsx(Text, { color: colors.primary, children: "\u25CF" }), _jsx(Text, { color: colors.textDim, children: " " }), _jsx(Text, { color: colors.primary, children: "\u25CF" }), _jsx(Text, { color: colors.textDim, children: "] " }), _jsx(Text, { color: colors.text, bold: true, children: tool.name })] }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: colors.textMuted, children: tool.description }) }), skillItems.length > 0 && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: colors.skill, bold: true, children: "Skills" }), _jsx(Box, { flexDirection: "row", flexWrap: "wrap", marginTop: 1, children: skillItems.map((item) => {
|
|
73
|
-
const idx = getItemIndex(item);
|
|
74
|
-
const isSelected = selectedIndex === idx;
|
|
75
|
-
return (_jsx(Box, { marginRight: 1, marginBottom: 1, children: _jsx(Text, { backgroundColor: isSelected ? colors.skill : colors.bgSelected, color: isSelected ? '#000000' : colors.skill, bold: isSelected, children: ` ${item.name} ` }) }, item.name));
|
|
76
|
-
}) })] })), commandItems.length > 0 && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: colors.command, bold: true, children: "Commands" }), _jsx(Box, { flexDirection: "row", flexWrap: "wrap", marginTop: 1, children: commandItems.map((item) => {
|
|
77
|
-
const idx = getItemIndex(item);
|
|
78
|
-
const isSelected = selectedIndex === idx;
|
|
79
|
-
return (_jsx(Box, { marginRight: 1, marginBottom: 1, children: _jsx(Text, { backgroundColor: isSelected ? colors.command : colors.bgSelected, color: isSelected ? '#000000' : colors.command, bold: isSelected, children: ` ${item.name} ` }) }, item.name));
|
|
80
|
-
}) })] })), agentItems.length > 0 && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: colors.agent, bold: true, children: "Agents" }), _jsx(Box, { flexDirection: "row", flexWrap: "wrap", marginTop: 1, children: agentItems.map((item) => {
|
|
81
|
-
const idx = getItemIndex(item);
|
|
82
|
-
const isSelected = selectedIndex === idx;
|
|
83
|
-
return (_jsx(Box, { marginRight: 1, marginBottom: 1, children: _jsx(Text, { backgroundColor: isSelected ? colors.agent : colors.bgSelected, color: isSelected ? '#000000' : colors.agent, bold: isSelected, children: ` ${item.name} ` }) }, item.name));
|
|
84
|
-
}) })] })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.textDim, children: "\u2190\u2192 navigate \u00B7 enter view source \u00B7 esc back" }) })] }));
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=ToolExplorer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolExplorer.js","sourceRoot":"","sources":["../../../../src/commands/tui/views/ToolExplorer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text, useInput } from 'ink';
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import { colors } from '../constants';
|
|
5
|
-
export function ToolUpdatePrompt({ toolUpdates, onUpdateAll, onAlways, onSkip, isUpdating }) {
|
|
6
|
-
const [selectedButton, setSelectedButton] = useState(0);
|
|
7
|
-
useInput((input, key) => {
|
|
8
|
-
if (isUpdating)
|
|
9
|
-
return;
|
|
10
|
-
if (key.leftArrow) {
|
|
11
|
-
setSelectedButton((prev) => Math.max(0, prev - 1));
|
|
12
|
-
}
|
|
13
|
-
if (key.rightArrow) {
|
|
14
|
-
setSelectedButton((prev) => Math.min(2, prev + 1));
|
|
15
|
-
}
|
|
16
|
-
if (key.return) {
|
|
17
|
-
if (selectedButton === 0) {
|
|
18
|
-
onUpdateAll();
|
|
19
|
-
}
|
|
20
|
-
else if (selectedButton === 1) {
|
|
21
|
-
onAlways();
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
onSkip();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (input === 'q') {
|
|
28
|
-
onSkip();
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
const buttons = [
|
|
32
|
-
{ label: 'Update All', action: onUpdateAll },
|
|
33
|
-
{ label: 'Always', action: onAlways },
|
|
34
|
-
{ label: 'Skip', action: onSkip },
|
|
35
|
-
];
|
|
36
|
-
return (_jsx(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", height: 18, children: _jsxs(Box, { flexDirection: "column", alignItems: "center", borderStyle: "single", borderColor: colors.primary, paddingX: 4, paddingY: 1, children: [_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: colors.textDim, children: "\u2554\u2550\u2550\u2550\u2550\u2550\u2557 " }), _jsx(Text, { color: colors.text, children: "Tool Updates" })] }), _jsxs(Text, { children: [_jsx(Text, { color: colors.textDim, children: "\u2551 " }), _jsx(Text, { color: colors.primary, children: "\u25CF" }), _jsx(Text, { color: colors.textDim, children: " " }), _jsx(Text, { color: colors.primary, children: "\u25CF" }), _jsx(Text, { color: colors.textDim, children: " \u2551 " }), _jsxs(Text, { color: colors.textMuted, children: [toolUpdates.length, " tool", toolUpdates.length > 1 ? 's have' : ' has', " updates available"] })] }), _jsx(Text, { children: _jsx(Text, { color: colors.textDim, children: "\u255A\u2550\u2566\u2550\u2566\u2550\u255D" }) })] }), _jsxs(Box, { marginTop: 1, marginBottom: 1, flexDirection: "column", children: [toolUpdates.slice(0, 5).map((tool) => (_jsxs(Text, { color: colors.textMuted, children: [_jsx(Text, { color: colors.primary, children: "\u2191" }), " ", tool.name, _jsxs(Text, { color: colors.textDim, children: [" ", tool.installedVersion, " \u2192 ", tool.bundledVersion] })] }, tool.name))), toolUpdates.length > 5 && (_jsxs(Text, { color: colors.textDim, children: ["...and ", toolUpdates.length - 5, " more"] }))] }), isUpdating ? (_jsx(Text, { color: colors.primary, children: "Updating tools..." })) : (_jsx(Box, { flexDirection: "row", children: buttons.map((button, index) => (_jsxs(Text, { backgroundColor: selectedButton === index ? colors.primary : colors.bgSelected, color: selectedButton === index ? '#000000' : colors.textMuted, bold: selectedButton === index, children: [' ', button.label, ' '] }, button.label))) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.textDim, children: "\u2190\u2192 select \u00B7 enter \u00B7 \"Always\" enables auto-update" }) })] }) }));
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=ToolUpdatePrompt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolUpdatePrompt.js","sourceRoot":"","sources":["../../../../src/commands/tui/views/ToolUpdatePrompt.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text, useInput } from 'ink';
|
|
3
|
-
import { useState, useMemo } from 'react';
|
|
4
|
-
import { colors } from '../constants';
|
|
5
|
-
import { getRandomQuote } from '../../../lib/quotes';
|
|
6
|
-
export function WelcomeScreen({ onContinue, onUpdate, onAlways, onExit, updateInfo, isUpdating }) {
|
|
7
|
-
const [selectedButton, setSelectedButton] = useState(0);
|
|
8
|
-
const welcomeQuote = useMemo(() => getRandomQuote(), []);
|
|
9
|
-
useInput((input, key) => {
|
|
10
|
-
if (isUpdating)
|
|
11
|
-
return;
|
|
12
|
-
if (updateInfo.hasUpdate) {
|
|
13
|
-
if (key.leftArrow) {
|
|
14
|
-
setSelectedButton((prev) => Math.max(0, prev - 1));
|
|
15
|
-
}
|
|
16
|
-
if (key.rightArrow) {
|
|
17
|
-
setSelectedButton((prev) => Math.min(2, prev + 1));
|
|
18
|
-
}
|
|
19
|
-
if (key.return) {
|
|
20
|
-
if (selectedButton === 0) {
|
|
21
|
-
onUpdate();
|
|
22
|
-
}
|
|
23
|
-
else if (selectedButton === 1) {
|
|
24
|
-
onAlways();
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
onContinue();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
if (input === 'q') {
|
|
31
|
-
onExit();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
if (key.return) {
|
|
36
|
-
onContinue();
|
|
37
|
-
}
|
|
38
|
-
if (input === 'q') {
|
|
39
|
-
onExit();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
const hasUpdate = updateInfo.hasUpdate && updateInfo.latestVersion;
|
|
44
|
-
return (_jsx(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", height: 18, children: _jsxs(Box, { flexDirection: "column", alignItems: "center", borderStyle: "single", borderColor: hasUpdate ? '#eab308' : colors.border, paddingX: 4, paddingY: 1, children: [_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: colors.textDim, children: "\u2554\u2550\u2550\u2550\u2550\u2550\u2557 " }), _jsx(Text, { color: colors.text, children: "droid" }), _jsxs(Text, { color: colors.textDim, children: [" v", updateInfo.currentVersion] })] }), _jsxs(Text, { children: [_jsx(Text, { color: colors.textDim, children: "\u2551 " }), _jsx(Text, { color: hasUpdate ? '#eab308' : colors.primary, children: "\u25CF" }), _jsx(Text, { color: colors.textDim, children: " " }), _jsx(Text, { color: hasUpdate ? '#eab308' : colors.primary, children: "\u25CF" }), _jsx(Text, { color: colors.textDim, children: " \u2551 " }), _jsx(Text, { color: colors.textMuted, children: "Droid, teaching your AI new tricks" })] }), _jsxs(Text, { children: [_jsx(Text, { color: colors.textDim, children: "\u255A\u2550\u2566\u2550\u2566\u2550\u255D " }), _jsx(Text, { color: colors.textDim, children: "github.com/Orderful/droid" })] })] }), hasUpdate ? (_jsxs(_Fragment, { children: [_jsxs(Box, { marginTop: 2, marginBottom: 1, flexDirection: "column", alignItems: "center", children: [_jsx(Text, { color: "#eab308", italic: true, children: "\"The odds of functioning optimally without this" }), _jsx(Text, { color: "#eab308", italic: true, children: "update are approximately 3,720 to 1.\"" })] }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: colors.textMuted, children: ["v", updateInfo.currentVersion, " \u2192 v", updateInfo.latestVersion] }) }), isUpdating ? (_jsx(Text, { color: "#eab308", children: "Updating..." })) : (_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { backgroundColor: selectedButton === 0 ? '#eab308' : colors.bgSelected, color: selectedButton === 0 ? '#000000' : colors.textMuted, bold: selectedButton === 0, children: [' ', "Update", ' '] }), _jsx(Text, { children: " " }), _jsxs(Text, { backgroundColor: selectedButton === 1 ? '#eab308' : colors.bgSelected, color: selectedButton === 1 ? '#000000' : colors.textMuted, bold: selectedButton === 1, children: [' ', "Always", ' '] }), _jsx(Text, { children: " " }), _jsxs(Text, { backgroundColor: selectedButton === 2 ? colors.bgSelected : undefined, color: selectedButton === 2 ? colors.text : colors.textMuted, bold: selectedButton === 2, children: [' ', "Skip", ' '] })] })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.textDim, children: "\u2190\u2192 select \u00B7 enter \u00B7 \"Always\" enables auto-update" }) })] })) : (_jsxs(_Fragment, { children: [_jsx(Box, { marginTop: 2, marginBottom: 1, children: _jsx(Text, { backgroundColor: colors.primary, color: "#ffffff", bold: true, children: ` ${welcomeQuote} ` }) }), _jsx(Text, { color: colors.textDim, children: "press enter" })] }))] }) }));
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=WelcomeScreen.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WelcomeScreen.js","sourceRoot":"","sources":["../../../../src/commands/tui/views/WelcomeScreen.tsx"],"names":[],"mappings":"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"}
|
package/dist/commands/tui.js
DELETED
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { render, Box, Text, useInput, useApp } from 'ink';
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import { getBundledSkills, installSkill, uninstallSkill, updateSkill, } from '../lib/skills';
|
|
5
|
-
import { getBundledTools, isToolInstalled, getToolUpdateStatus } from '../lib/tools';
|
|
6
|
-
import { configExists, loadConfig } from '../lib/config';
|
|
7
|
-
import { Platform } from '../lib/types';
|
|
8
|
-
import { getVersion } from '../lib/version';
|
|
9
|
-
import { colors, MAX_VISIBLE_ITEMS } from './tui/constants';
|
|
10
|
-
import { TabBar } from './tui/components/TabBar';
|
|
11
|
-
import { ToolItem } from './tui/components/ToolItem';
|
|
12
|
-
import { ToolDetails } from './tui/components/ToolDetails';
|
|
13
|
-
import { SettingsDetails } from './tui/components/SettingsDetails';
|
|
14
|
-
import { WelcomeScreen } from './tui/views/WelcomeScreen';
|
|
15
|
-
import { ToolUpdatePrompt } from './tui/views/ToolUpdatePrompt';
|
|
16
|
-
import { SetupScreen } from './tui/views/SetupScreen';
|
|
17
|
-
import { ReadmeViewer } from './tui/views/ReadmeViewer';
|
|
18
|
-
import { ToolExplorer } from './tui/views/ToolExplorer';
|
|
19
|
-
import { SkillConfigScreen } from './tui/views/SkillConfigScreen';
|
|
20
|
-
import { useAppUpdate } from './tui/hooks/useAppUpdate';
|
|
21
|
-
import { useToolUpdates } from './tui/hooks/useToolUpdates';
|
|
22
|
-
// Module-level variable to store exit message (printed after leaving alternate screen)
|
|
23
|
-
let exitMessage = null;
|
|
24
|
-
function App() {
|
|
25
|
-
const { exit } = useApp();
|
|
26
|
-
const tabs = [
|
|
27
|
-
{ id: 'tools', label: 'Tools' },
|
|
28
|
-
{ id: 'settings', label: 'Settings' },
|
|
29
|
-
];
|
|
30
|
-
const [activeTab, setActiveTab] = useState('tools');
|
|
31
|
-
const [tabIndex, setTabIndex] = useState(0);
|
|
32
|
-
const [view, setView] = useState('welcome');
|
|
33
|
-
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
34
|
-
const [selectedAction, setSelectedAction] = useState(0);
|
|
35
|
-
const [scrollOffset, setScrollOffset] = useState(0);
|
|
36
|
-
const [message, setMessage] = useState(null);
|
|
37
|
-
const [isEditingSettings, setIsEditingSettings] = useState(false);
|
|
38
|
-
const [readmeContent, setReadmeContent] = useState(null);
|
|
39
|
-
const [previousView, setPreviousView] = useState('detail'); // Track where to return from readme
|
|
40
|
-
const { updateInfo, isUpdating, handleUpdate, handleAlwaysUpdate } = useAppUpdate({
|
|
41
|
-
onUpdateSuccess: (msg) => {
|
|
42
|
-
exitMessage = msg;
|
|
43
|
-
},
|
|
44
|
-
onUpdateFailure: (error) => {
|
|
45
|
-
setMessage({ text: error, type: 'error' });
|
|
46
|
-
if (!configExists()) {
|
|
47
|
-
setView('setup');
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
setView('menu');
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
const proceedToNextView = () => {
|
|
55
|
-
if (!configExists()) {
|
|
56
|
-
setView('setup');
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
setView('menu');
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
const { toolUpdates, isUpdatingTools, autoUpdatedTools, checkForUpdates, updateAllTools, enableAutoUpdateAndUpdate, } = useToolUpdates({
|
|
63
|
-
onUpdateComplete: ({ successCount, failCount, silent }) => {
|
|
64
|
-
if (successCount > 0) {
|
|
65
|
-
setMessage({
|
|
66
|
-
text: silent
|
|
67
|
-
? `↑ Auto-updated ${successCount} tool${successCount > 1 ? 's' : ''}`
|
|
68
|
-
: `✓ Updated ${successCount} tool${successCount > 1 ? 's' : ''}${failCount > 0 ? `, ${failCount} failed` : ''}`,
|
|
69
|
-
type: failCount > 0 ? 'error' : 'success',
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
proceedToNextView();
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
// Check for tool updates and proceed to next view
|
|
76
|
-
const checkToolUpdatesAndProceed = () => {
|
|
77
|
-
const { updates, shouldAutoUpdate } = checkForUpdates();
|
|
78
|
-
if (shouldAutoUpdate) {
|
|
79
|
-
updateAllTools(updates, true);
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
if (updates.length > 0) {
|
|
83
|
-
setView('tool-updates');
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
proceedToNextView();
|
|
87
|
-
};
|
|
88
|
-
const handleSkipToolUpdates = () => {
|
|
89
|
-
proceedToNextView();
|
|
90
|
-
};
|
|
91
|
-
const tools = getBundledTools();
|
|
92
|
-
// Keep skills for configure view (tools configure via their primary skill)
|
|
93
|
-
const skills = getBundledSkills();
|
|
94
|
-
useInput((input, key) => {
|
|
95
|
-
if (message)
|
|
96
|
-
setMessage(null);
|
|
97
|
-
if (input === 'q') {
|
|
98
|
-
exit();
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
if (view === 'menu') {
|
|
102
|
-
if (key.leftArrow) {
|
|
103
|
-
const newIndex = Math.max(0, tabIndex - 1);
|
|
104
|
-
setTabIndex(newIndex);
|
|
105
|
-
setActiveTab(tabs[newIndex].id);
|
|
106
|
-
setSelectedIndex(0);
|
|
107
|
-
setScrollOffset(0);
|
|
108
|
-
}
|
|
109
|
-
if (key.rightArrow) {
|
|
110
|
-
const newIndex = Math.min(tabs.length - 1, tabIndex + 1);
|
|
111
|
-
setTabIndex(newIndex);
|
|
112
|
-
setActiveTab(tabs[newIndex].id);
|
|
113
|
-
setSelectedIndex(0);
|
|
114
|
-
setScrollOffset(0);
|
|
115
|
-
}
|
|
116
|
-
if (key.upArrow) {
|
|
117
|
-
setSelectedIndex((prev) => {
|
|
118
|
-
const newIndex = Math.max(0, prev - 1);
|
|
119
|
-
// Scroll up if needed
|
|
120
|
-
if (newIndex < scrollOffset) {
|
|
121
|
-
setScrollOffset(newIndex);
|
|
122
|
-
}
|
|
123
|
-
return newIndex;
|
|
124
|
-
});
|
|
125
|
-
setSelectedAction(0);
|
|
126
|
-
}
|
|
127
|
-
if (key.downArrow) {
|
|
128
|
-
const maxIndex = activeTab === 'tools' ? tools.length - 1 : 0;
|
|
129
|
-
setSelectedIndex((prev) => {
|
|
130
|
-
const newIndex = Math.min(maxIndex, prev + 1);
|
|
131
|
-
// Scroll down if needed
|
|
132
|
-
if (newIndex >= scrollOffset + MAX_VISIBLE_ITEMS) {
|
|
133
|
-
setScrollOffset(newIndex - MAX_VISIBLE_ITEMS + 1);
|
|
134
|
-
}
|
|
135
|
-
return newIndex;
|
|
136
|
-
});
|
|
137
|
-
setSelectedAction(0);
|
|
138
|
-
}
|
|
139
|
-
if (key.return) {
|
|
140
|
-
if (activeTab === 'tools' && tools.length > 0) {
|
|
141
|
-
setView('detail');
|
|
142
|
-
}
|
|
143
|
-
else if (activeTab === 'settings') {
|
|
144
|
-
setView('detail');
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
else if (view === 'detail') {
|
|
149
|
-
if (key.escape || key.backspace) {
|
|
150
|
-
setView('menu');
|
|
151
|
-
setSelectedAction(0);
|
|
152
|
-
}
|
|
153
|
-
if (activeTab === 'settings') {
|
|
154
|
-
// Settings detail view - just enter to edit
|
|
155
|
-
if (key.return) {
|
|
156
|
-
setIsEditingSettings(true);
|
|
157
|
-
setView('setup');
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (key.leftArrow && activeTab === 'tools') {
|
|
161
|
-
setSelectedAction((prev) => Math.max(0, prev - 1));
|
|
162
|
-
}
|
|
163
|
-
if (key.rightArrow && activeTab === 'tools') {
|
|
164
|
-
let maxActions = 0;
|
|
165
|
-
const tool = tools[selectedIndex];
|
|
166
|
-
const installed = tool ? isToolInstalled(tool.name) : false;
|
|
167
|
-
const hasUpdate = tool ? getToolUpdateStatus(tool.name).hasUpdate : false;
|
|
168
|
-
const isSystem = tool ? tool.system === true : false;
|
|
169
|
-
// Explore, [Update], Configure, [Uninstall] or Explore, Install
|
|
170
|
-
// System tools don't have Uninstall, so one less action
|
|
171
|
-
maxActions = installed ? (hasUpdate ? (isSystem ? 2 : 3) : (isSystem ? 1 : 2)) : 1;
|
|
172
|
-
setSelectedAction((prev) => Math.min(maxActions, prev + 1));
|
|
173
|
-
}
|
|
174
|
-
if (key.return && activeTab === 'tools') {
|
|
175
|
-
const tool = tools[selectedIndex];
|
|
176
|
-
if (tool) {
|
|
177
|
-
const installed = isToolInstalled(tool.name);
|
|
178
|
-
const toolUpdateStatus = getToolUpdateStatus(tool.name);
|
|
179
|
-
const isSystemTool = tool.system === true;
|
|
180
|
-
// Build actions array to match ToolDetails
|
|
181
|
-
const toolActions = installed
|
|
182
|
-
? [
|
|
183
|
-
{ id: 'explore' },
|
|
184
|
-
...(toolUpdateStatus.hasUpdate ? [{ id: 'update' }] : []),
|
|
185
|
-
{ id: 'configure' },
|
|
186
|
-
...(!isSystemTool ? [{ id: 'uninstall' }] : []),
|
|
187
|
-
]
|
|
188
|
-
: [{ id: 'explore' }, { id: 'install' }];
|
|
189
|
-
const actionId = toolActions[selectedAction]?.id;
|
|
190
|
-
if (actionId === 'explore') {
|
|
191
|
-
// Open the tool explorer view
|
|
192
|
-
setView('explorer');
|
|
193
|
-
}
|
|
194
|
-
else if (actionId === 'update') {
|
|
195
|
-
// Update the primary skill of the tool
|
|
196
|
-
const primarySkill = tool.includes.skills.find(s => s.required)?.name || tool.name;
|
|
197
|
-
const result = updateSkill(primarySkill);
|
|
198
|
-
setMessage({
|
|
199
|
-
text: result.success ? `✓ Updated ${tool.name}` : `✗ ${result.message}`,
|
|
200
|
-
type: result.success ? 'success' : 'error',
|
|
201
|
-
});
|
|
202
|
-
if (result.success) {
|
|
203
|
-
setSelectedAction(0);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
else if (actionId === 'configure') {
|
|
207
|
-
setView('configure');
|
|
208
|
-
}
|
|
209
|
-
else if (actionId === 'uninstall') {
|
|
210
|
-
// Uninstall the primary skill of the tool
|
|
211
|
-
const primarySkill = tool.includes.skills.find(s => s.required)?.name || tool.name;
|
|
212
|
-
const result = uninstallSkill(primarySkill);
|
|
213
|
-
setMessage({
|
|
214
|
-
text: result.success ? `✓ Uninstalled ${tool.name}` : `✗ ${result.message}`,
|
|
215
|
-
type: result.success ? 'success' : 'error',
|
|
216
|
-
});
|
|
217
|
-
if (result.success) {
|
|
218
|
-
setView('menu');
|
|
219
|
-
setSelectedAction(0);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
else if (actionId === 'install') {
|
|
223
|
-
// Install the primary skill of the tool
|
|
224
|
-
const primarySkill = tool.includes.skills.find(s => s.required)?.name || tool.name;
|
|
225
|
-
const result = installSkill(primarySkill);
|
|
226
|
-
setMessage({
|
|
227
|
-
text: result.success ? `✓ Installed ${tool.name}` : `✗ ${result.message}`,
|
|
228
|
-
type: result.success ? 'success' : 'error',
|
|
229
|
-
});
|
|
230
|
-
if (result.success) {
|
|
231
|
-
// Check if tool has required config (options without defaults)
|
|
232
|
-
const configSchema = tool.config_schema || {};
|
|
233
|
-
const hasRequiredConfig = Object.values(configSchema).some((option) => option.default === undefined);
|
|
234
|
-
if (hasRequiredConfig) {
|
|
235
|
-
// Go to configure view for required setup
|
|
236
|
-
setView('configure');
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
setView('menu');
|
|
240
|
-
setSelectedAction(0);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}, { isActive: view !== 'welcome' && view !== 'tool-updates' && view !== 'setup' && view !== 'configure' && view !== 'explorer' });
|
|
248
|
-
const selectedTool = activeTab === 'tools' ? tools[selectedIndex] ?? null : null;
|
|
249
|
-
// For configure view, we need the matching skill manifest
|
|
250
|
-
const selectedSkillForConfig = selectedTool
|
|
251
|
-
? skills.find(s => s.name === (selectedTool.includes.skills.find(sk => sk.required)?.name || selectedTool.name))
|
|
252
|
-
: null;
|
|
253
|
-
if (view === 'welcome') {
|
|
254
|
-
return (_jsx(WelcomeScreen, { updateInfo: updateInfo, isUpdating: isUpdating, onUpdate: handleUpdate, onAlways: handleAlwaysUpdate, onExit: exit, onContinue: checkToolUpdatesAndProceed }));
|
|
255
|
-
}
|
|
256
|
-
if (view === 'tool-updates' && toolUpdates.length > 0) {
|
|
257
|
-
return (_jsx(ToolUpdatePrompt, { toolUpdates: toolUpdates, onUpdateAll: () => updateAllTools(), onAlways: enableAutoUpdateAndUpdate, onSkip: handleSkipToolUpdates, isUpdating: isUpdatingTools }));
|
|
258
|
-
}
|
|
259
|
-
if (view === 'setup') {
|
|
260
|
-
return (_jsx(SetupScreen, { onComplete: () => {
|
|
261
|
-
setIsEditingSettings(false);
|
|
262
|
-
setView('menu');
|
|
263
|
-
}, onSkip: () => {
|
|
264
|
-
setIsEditingSettings(false);
|
|
265
|
-
setView('menu');
|
|
266
|
-
}, initialConfig: isEditingSettings ? loadConfig() : undefined }));
|
|
267
|
-
}
|
|
268
|
-
if (view === 'readme' && readmeContent) {
|
|
269
|
-
return (_jsx(ReadmeViewer, { title: readmeContent.title, content: readmeContent.content, onClose: () => {
|
|
270
|
-
setReadmeContent(null);
|
|
271
|
-
setView(previousView);
|
|
272
|
-
} }));
|
|
273
|
-
}
|
|
274
|
-
if (view === 'explorer' && selectedTool) {
|
|
275
|
-
return (_jsx(ToolExplorer, { tool: selectedTool, onViewSource: (title, content) => {
|
|
276
|
-
setPreviousView('explorer');
|
|
277
|
-
setReadmeContent({ title, content });
|
|
278
|
-
setView('readme');
|
|
279
|
-
}, onClose: () => {
|
|
280
|
-
setView('detail');
|
|
281
|
-
} }));
|
|
282
|
-
}
|
|
283
|
-
if (view === 'configure' && selectedSkillForConfig) {
|
|
284
|
-
return (_jsx(SkillConfigScreen, { skill: selectedSkillForConfig, onComplete: () => {
|
|
285
|
-
setMessage({ text: `✓ Configuration saved for ${selectedTool?.name || selectedSkillForConfig.name}`, type: 'success' });
|
|
286
|
-
setView('detail');
|
|
287
|
-
}, onCancel: () => {
|
|
288
|
-
setView('detail');
|
|
289
|
-
} }));
|
|
290
|
-
}
|
|
291
|
-
return (_jsxs(Box, { flexDirection: "row", padding: 1, children: [_jsxs(Box, { flexDirection: "column", width: 44, borderStyle: "single", borderColor: colors.border, children: [_jsx(Box, { paddingX: 1, children: _jsxs(Text, { children: [_jsx(Text, { color: colors.textDim, children: "[" }), _jsx(Text, { color: colors.primary, children: "\u25CF" }), _jsx(Text, { color: colors.textDim, children: " " }), _jsx(Text, { color: colors.primary, children: "\u25CF" }), _jsx(Text, { color: colors.textDim, children: "] " }), _jsx(Text, { color: colors.textMuted, children: "droid" }), _jsxs(Text, { color: colors.textDim, children: [" v", getVersion()] })] }) }), _jsx(Box, { paddingX: 1, children: _jsx(Text, { color: colors.textDim, children: loadConfig().platform === Platform.ClaudeCode ? 'Claude Code' : 'OpenCode' }) }), _jsx(Box, { paddingX: 1, marginTop: 1, children: _jsx(TabBar, { tabs: tabs, activeTab: activeTab }) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [activeTab === 'tools' && (_jsxs(_Fragment, { children: [scrollOffset > 0 && (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: colors.textDim, children: ["\u2191 ", scrollOffset, " more"] }) })), tools.slice(scrollOffset, scrollOffset + MAX_VISIBLE_ITEMS).map((tool, index) => (_jsx(ToolItem, { tool: tool, isSelected: scrollOffset + index === selectedIndex, isActive: scrollOffset + index === selectedIndex && view === 'detail', wasAutoUpdated: autoUpdatedTools.includes(tool.name) }, tool.name))), scrollOffset + MAX_VISIBLE_ITEMS < tools.length && (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: colors.textDim, children: ["\u2193 ", tools.length - scrollOffset - MAX_VISIBLE_ITEMS, " more"] }) })), tools.length > MAX_VISIBLE_ITEMS && (_jsx(Box, { paddingX: 1, marginTop: 1, children: _jsxs(Text, { color: colors.textDim, children: [tools.length, " tools total"] }) }))] })), activeTab === 'settings' && (_jsx(Box, { paddingX: 1, children: _jsx(Text, { color: colors.textDim, children: "View and edit config" }) }))] }), message && (_jsx(Box, { paddingX: 1, marginTop: 1, children: _jsx(Text, { color: message.type === 'success' ? colors.success : colors.error, children: message.text }) })), _jsx(Box, { paddingX: 1, marginTop: 1, children: _jsx(Text, { color: colors.textDim, children: view === 'menu' ? '←→ ↑↓ enter q' : '←→ enter esc q' }) })] }), activeTab === 'tools' && (_jsx(ToolDetails, { tool: selectedTool, isFocused: view === 'detail', selectedAction: selectedAction })), activeTab === 'settings' && (_jsx(SettingsDetails, { isFocused: view === 'detail' }))] }));
|
|
292
|
-
}
|
|
293
|
-
export async function tuiCommand() {
|
|
294
|
-
// Enter alternate screen (fullscreen mode)
|
|
295
|
-
process.stdout.write('\x1b[?1049h');
|
|
296
|
-
process.stdout.write('\x1b[H'); // Move cursor to top-left
|
|
297
|
-
const { waitUntilExit } = render(_jsx(App, {}));
|
|
298
|
-
await waitUntilExit();
|
|
299
|
-
// Leave alternate screen
|
|
300
|
-
process.stdout.write('\x1b[?1049l');
|
|
301
|
-
// Print exit message if set (e.g., after successful update)
|
|
302
|
-
if (exitMessage) {
|
|
303
|
-
console.log(exitMessage);
|
|
304
|
-
exitMessage = null;
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
//# sourceMappingURL=tui.js.map
|
package/dist/commands/tui.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/commands/tui.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { uninstallSkill } from '../lib/skills';
|
|
3
|
-
import { getBundledTools, isToolInstalled } from '../lib/tools';
|
|
4
|
-
export async function uninstallCommand(toolName) {
|
|
5
|
-
const tools = getBundledTools();
|
|
6
|
-
const tool = tools.find((t) => t.name === toolName);
|
|
7
|
-
if (!tool) {
|
|
8
|
-
console.error(chalk.red(`\n✗ Tool '${toolName}' not found`));
|
|
9
|
-
process.exit(1);
|
|
10
|
-
}
|
|
11
|
-
if (!isToolInstalled(toolName)) {
|
|
12
|
-
console.error(chalk.red(`\n✗ Tool '${toolName}' is not installed`));
|
|
13
|
-
process.exit(1);
|
|
14
|
-
}
|
|
15
|
-
// Uninstall via primary skill
|
|
16
|
-
const primarySkill = tool.includes.skills.find(s => s.required)?.name || toolName;
|
|
17
|
-
const result = uninstallSkill(primarySkill);
|
|
18
|
-
if (result.success) {
|
|
19
|
-
console.log(chalk.green(`\n✓ Uninstalled ${toolName}`));
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
console.error(chalk.red(`\n✗ ${result.message}`));
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=uninstall.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAEpD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,QAAQ,aAAa,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,QAAQ,oBAAoB,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,8BAA8B;IAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC;IAClF,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAE5C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/commands/update.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { execSync } from 'child_process';
|
|
3
|
-
import { getVersion } from '../lib/version';
|
|
4
|
-
export async function updateCommand(tool, options) {
|
|
5
|
-
// If specific tool specified, update just that tool
|
|
6
|
-
if (tool) {
|
|
7
|
-
console.log(chalk.yellow('\n⚠ Per-tool updates not implemented yet'));
|
|
8
|
-
console.log(chalk.gray('Tools are bundled with the CLI - run `droid update` to update all.'));
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
// If --tools flag, update tools only
|
|
12
|
-
if (options?.tools) {
|
|
13
|
-
console.log(chalk.yellow('\n⚠ Tool-only updates not implemented yet'));
|
|
14
|
-
console.log(chalk.gray('Tools are bundled with the CLI - run `droid update` to update all.'));
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
// Update CLI (and bundled skills with it)
|
|
18
|
-
console.log(chalk.bold('\n🤖 Updating Droid...\n'));
|
|
19
|
-
const currentVersion = getVersion();
|
|
20
|
-
console.log(chalk.gray(`Current version: ${currentVersion}`));
|
|
21
|
-
try {
|
|
22
|
-
// Check for latest version
|
|
23
|
-
const latestVersion = execSync('npm view @orderful/droid version 2>/dev/null', {
|
|
24
|
-
encoding: 'utf-8',
|
|
25
|
-
}).trim();
|
|
26
|
-
if (!latestVersion) {
|
|
27
|
-
console.log(chalk.yellow('\n⚠ Could not check for updates'));
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
if (latestVersion === currentVersion) {
|
|
31
|
-
console.log(chalk.green('\n✓ Already on latest version'));
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
console.log(chalk.gray(`Latest version: ${latestVersion}`));
|
|
35
|
-
console.log(chalk.gray('\nUpdating...'));
|
|
36
|
-
execSync('npm install -g @orderful/droid@latest', { stdio: 'inherit' });
|
|
37
|
-
console.log(chalk.green(`\n✓ Updated to v${latestVersion}`));
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
// Package might not be published yet
|
|
41
|
-
console.log(chalk.yellow('\n⚠ Could not check for updates'));
|
|
42
|
-
console.log(chalk.gray('Package may not be published yet.'));
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=update.js.map
|