@orderful/droid 0.16.0 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/.claude/CLAUDE.md +3 -43
  2. package/AGENTS.md +75 -0
  3. package/CHANGELOG.md +12 -0
  4. package/dist/bin/droid.js +3064 -54
  5. package/dist/index.js +952 -6
  6. package/package.json +2 -2
  7. package/scripts/build.ts +78 -0
  8. package/dist/bin/droid.js.map +0 -1
  9. package/dist/commands/config.js +0 -67
  10. package/dist/commands/config.js.map +0 -1
  11. package/dist/commands/install.js +0 -45
  12. package/dist/commands/install.js.map +0 -1
  13. package/dist/commands/setup.js +0 -269
  14. package/dist/commands/setup.js.map +0 -1
  15. package/dist/commands/skills.js +0 -144
  16. package/dist/commands/skills.js.map +0 -1
  17. package/dist/commands/tui/components/Badge.js +0 -29
  18. package/dist/commands/tui/components/Badge.js.map +0 -1
  19. package/dist/commands/tui/components/Markdown.js +0 -42
  20. package/dist/commands/tui/components/Markdown.js.map +0 -1
  21. package/dist/commands/tui/components/SettingsDetails.js +0 -11
  22. package/dist/commands/tui/components/SettingsDetails.js.map +0 -1
  23. package/dist/commands/tui/components/TabBar.js +0 -7
  24. package/dist/commands/tui/components/TabBar.js.map +0 -1
  25. package/dist/commands/tui/components/ToolDetails.js +0 -35
  26. package/dist/commands/tui/components/ToolDetails.js.map +0 -1
  27. package/dist/commands/tui/components/ToolItem.js +0 -11
  28. package/dist/commands/tui/components/ToolItem.js.map +0 -1
  29. package/dist/commands/tui/constants.js +0 -17
  30. package/dist/commands/tui/constants.js.map +0 -1
  31. package/dist/commands/tui/hooks/useAppUpdate.js +0 -52
  32. package/dist/commands/tui/hooks/useAppUpdate.js.map +0 -1
  33. package/dist/commands/tui/hooks/useToolUpdates.js +0 -77
  34. package/dist/commands/tui/hooks/useToolUpdates.js.map +0 -1
  35. package/dist/commands/tui/types.js +0 -2
  36. package/dist/commands/tui/types.js.map +0 -1
  37. package/dist/commands/tui/views/ReadmeViewer.js +0 -56
  38. package/dist/commands/tui/views/ReadmeViewer.js.map +0 -1
  39. package/dist/commands/tui/views/SetupScreen.js +0 -114
  40. package/dist/commands/tui/views/SetupScreen.js.map +0 -1
  41. package/dist/commands/tui/views/SkillConfigScreen.js +0 -148
  42. package/dist/commands/tui/views/SkillConfigScreen.js.map +0 -1
  43. package/dist/commands/tui/views/ToolExplorer.js +0 -86
  44. package/dist/commands/tui/views/ToolExplorer.js.map +0 -1
  45. package/dist/commands/tui/views/ToolUpdatePrompt.js +0 -38
  46. package/dist/commands/tui/views/ToolUpdatePrompt.js.map +0 -1
  47. package/dist/commands/tui/views/WelcomeScreen.js +0 -46
  48. package/dist/commands/tui/views/WelcomeScreen.js.map +0 -1
  49. package/dist/commands/tui.js +0 -307
  50. package/dist/commands/tui.js.map +0 -1
  51. package/dist/commands/uninstall.js +0 -26
  52. package/dist/commands/uninstall.js.map +0 -1
  53. package/dist/commands/update.js +0 -45
  54. package/dist/commands/update.js.map +0 -1
  55. package/dist/index.js.map +0 -1
  56. package/dist/lib/agents.js +0 -248
  57. package/dist/lib/agents.js.map +0 -1
  58. package/dist/lib/config.js +0 -196
  59. package/dist/lib/config.js.map +0 -1
  60. package/dist/lib/platforms.js +0 -52
  61. package/dist/lib/platforms.js.map +0 -1
  62. package/dist/lib/quotes.js +0 -24
  63. package/dist/lib/quotes.js.map +0 -1
  64. package/dist/lib/skill-config.js +0 -80
  65. package/dist/lib/skill-config.js.map +0 -1
  66. package/dist/lib/skills.js +0 -582
  67. package/dist/lib/skills.js.map +0 -1
  68. package/dist/lib/tools.js +0 -145
  69. package/dist/lib/tools.js.map +0 -1
  70. package/dist/lib/types.js +0 -50
  71. package/dist/lib/types.js.map +0 -1
  72. package/dist/lib/version.js +0 -100
  73. package/dist/lib/version.js.map +0 -1
@@ -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
@@ -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"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAO5C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAa,EAAE,OAAuB;IACxE,oDAAoD;IACpD,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC,CAAC;QAC9F,OAAO;IACT,CAAC;IAED,qCAAqC;IACrC,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC,CAAC;QAC9F,OAAO;IACT,CAAC;IAED,0CAA0C;IAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEpD,MAAM,cAAc,GAAG,UAAU,EAAE,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,aAAa,GAAG,QAAQ,CAAC,8CAA8C,EAAE;YAC7E,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAEzC,QAAQ,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAExE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}