@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.
Files changed (83) hide show
  1. package/.claude/CLAUDE.md +3 -43
  2. package/AGENTS.md +75 -0
  3. package/CHANGELOG.md +18 -0
  4. package/bun.lock +12 -0
  5. package/dist/bin/droid.js +3064 -54
  6. package/dist/commands/tui/components/Badge.test.d.ts +2 -0
  7. package/dist/commands/tui/components/Badge.test.d.ts.map +1 -0
  8. package/dist/commands/tui/components/TabBar.test.d.ts +2 -0
  9. package/dist/commands/tui/components/TabBar.test.d.ts.map +1 -0
  10. package/dist/index.js +952 -6
  11. package/package.json +7 -2
  12. package/playwright.config.ts +20 -0
  13. package/scripts/build.ts +78 -0
  14. package/scripts/screenshot-tui.ts +126 -0
  15. package/src/commands/tui/components/Badge.test.tsx +94 -0
  16. package/src/commands/tui/components/TabBar.test.tsx +39 -0
  17. package/tests/e2e/tui.spec.ts +128 -0
  18. package/dist/bin/droid.js.map +0 -1
  19. package/dist/commands/config.js +0 -67
  20. package/dist/commands/config.js.map +0 -1
  21. package/dist/commands/install.js +0 -45
  22. package/dist/commands/install.js.map +0 -1
  23. package/dist/commands/setup.js +0 -269
  24. package/dist/commands/setup.js.map +0 -1
  25. package/dist/commands/skills.js +0 -144
  26. package/dist/commands/skills.js.map +0 -1
  27. package/dist/commands/tui/components/Badge.js +0 -29
  28. package/dist/commands/tui/components/Badge.js.map +0 -1
  29. package/dist/commands/tui/components/Markdown.js +0 -42
  30. package/dist/commands/tui/components/Markdown.js.map +0 -1
  31. package/dist/commands/tui/components/SettingsDetails.js +0 -11
  32. package/dist/commands/tui/components/SettingsDetails.js.map +0 -1
  33. package/dist/commands/tui/components/TabBar.js +0 -7
  34. package/dist/commands/tui/components/TabBar.js.map +0 -1
  35. package/dist/commands/tui/components/ToolDetails.js +0 -35
  36. package/dist/commands/tui/components/ToolDetails.js.map +0 -1
  37. package/dist/commands/tui/components/ToolItem.js +0 -11
  38. package/dist/commands/tui/components/ToolItem.js.map +0 -1
  39. package/dist/commands/tui/constants.js +0 -17
  40. package/dist/commands/tui/constants.js.map +0 -1
  41. package/dist/commands/tui/hooks/useAppUpdate.js +0 -52
  42. package/dist/commands/tui/hooks/useAppUpdate.js.map +0 -1
  43. package/dist/commands/tui/hooks/useToolUpdates.js +0 -77
  44. package/dist/commands/tui/hooks/useToolUpdates.js.map +0 -1
  45. package/dist/commands/tui/types.js +0 -2
  46. package/dist/commands/tui/types.js.map +0 -1
  47. package/dist/commands/tui/views/ReadmeViewer.js +0 -56
  48. package/dist/commands/tui/views/ReadmeViewer.js.map +0 -1
  49. package/dist/commands/tui/views/SetupScreen.js +0 -114
  50. package/dist/commands/tui/views/SetupScreen.js.map +0 -1
  51. package/dist/commands/tui/views/SkillConfigScreen.js +0 -148
  52. package/dist/commands/tui/views/SkillConfigScreen.js.map +0 -1
  53. package/dist/commands/tui/views/ToolExplorer.js +0 -86
  54. package/dist/commands/tui/views/ToolExplorer.js.map +0 -1
  55. package/dist/commands/tui/views/ToolUpdatePrompt.js +0 -38
  56. package/dist/commands/tui/views/ToolUpdatePrompt.js.map +0 -1
  57. package/dist/commands/tui/views/WelcomeScreen.js +0 -46
  58. package/dist/commands/tui/views/WelcomeScreen.js.map +0 -1
  59. package/dist/commands/tui.js +0 -307
  60. package/dist/commands/tui.js.map +0 -1
  61. package/dist/commands/uninstall.js +0 -26
  62. package/dist/commands/uninstall.js.map +0 -1
  63. package/dist/commands/update.js +0 -45
  64. package/dist/commands/update.js.map +0 -1
  65. package/dist/index.js.map +0 -1
  66. package/dist/lib/agents.js +0 -248
  67. package/dist/lib/agents.js.map +0 -1
  68. package/dist/lib/config.js +0 -196
  69. package/dist/lib/config.js.map +0 -1
  70. package/dist/lib/platforms.js +0 -52
  71. package/dist/lib/platforms.js.map +0 -1
  72. package/dist/lib/quotes.js +0 -24
  73. package/dist/lib/quotes.js.map +0 -1
  74. package/dist/lib/skill-config.js +0 -80
  75. package/dist/lib/skill-config.js.map +0 -1
  76. package/dist/lib/skills.js +0 -582
  77. package/dist/lib/skills.js.map +0 -1
  78. package/dist/lib/tools.js +0 -145
  79. package/dist/lib/tools.js.map +0 -1
  80. package/dist/lib/types.js +0 -50
  81. package/dist/lib/types.js.map +0 -1
  82. package/dist/lib/version.js +0 -100
  83. package/dist/lib/version.js.map +0 -1
@@ -1,269 +0,0 @@
1
- import inquirer from 'inquirer';
2
- import chalk from 'chalk';
3
- import { execSync } from 'child_process';
4
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
5
- import { join } from 'path';
6
- import { homedir } from 'os';
7
- import { loadConfig, saveConfig, configExists } from '../lib/config';
8
- import { getBundledSkills } from '../lib/skills';
9
- import { Platform, BuiltInOutput } from '../lib/types';
10
- /**
11
- * Permissions droid needs to operate without constant prompts
12
- */
13
- const DROID_PERMISSIONS = [
14
- 'Read(~/.droid/**)',
15
- 'Write(~/.droid/**)',
16
- 'Edit(~/.droid/**)',
17
- 'Glob(~/.droid/**)',
18
- 'Grep(~/.droid/**)',
19
- ];
20
- /**
21
- * Detect which platform is installed
22
- */
23
- function detectPlatform() {
24
- try {
25
- execSync('claude --version', { stdio: 'ignore' });
26
- return Platform.ClaudeCode;
27
- }
28
- catch {
29
- // Claude Code not found
30
- }
31
- try {
32
- execSync('opencode --version', { stdio: 'ignore' });
33
- return Platform.OpenCode;
34
- }
35
- catch {
36
- // OpenCode not found
37
- }
38
- return null;
39
- }
40
- /**
41
- * Try to get git username
42
- */
43
- function detectGitUsername() {
44
- try {
45
- return execSync('git config user.name', { encoding: 'utf-8' }).trim();
46
- }
47
- catch {
48
- return '';
49
- }
50
- }
51
- /**
52
- * The opencode-skills plugin name for OpenCode
53
- * This plugin enables Claude Code-style skills in OpenCode
54
- * @see https://github.com/malhashemi/opencode-skills
55
- */
56
- const OPENCODE_SKILLS_PLUGIN = 'opencode-skills';
57
- /**
58
- * Configure platform permissions for droid
59
- */
60
- export function configurePlatformPermissions(platform) {
61
- const added = [];
62
- if (platform === Platform.ClaudeCode) {
63
- const settingsPath = join(homedir(), '.claude', 'settings.json');
64
- // Ensure .claude directory exists
65
- const claudeDir = join(homedir(), '.claude');
66
- if (!existsSync(claudeDir)) {
67
- mkdirSync(claudeDir, { recursive: true });
68
- }
69
- // Load or create settings
70
- let settings = {};
71
- if (existsSync(settingsPath)) {
72
- try {
73
- settings = JSON.parse(readFileSync(settingsPath, 'utf-8'));
74
- }
75
- catch {
76
- console.warn(chalk.yellow('⚠ Claude Code settings.json appears corrupted, resetting permissions'));
77
- settings = {};
78
- }
79
- }
80
- // Ensure permissions structure exists
81
- if (!settings.permissions) {
82
- settings.permissions = {};
83
- }
84
- if (!Array.isArray(settings.permissions.allow)) {
85
- settings.permissions.allow = [];
86
- }
87
- // Add missing permissions
88
- for (const perm of DROID_PERMISSIONS) {
89
- if (!settings.permissions.allow.includes(perm)) {
90
- settings.permissions.allow.push(perm);
91
- added.push(perm);
92
- }
93
- }
94
- // Save if we added anything
95
- if (added.length > 0) {
96
- try {
97
- writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
98
- }
99
- catch (e) {
100
- const message = e instanceof Error ? e.message : 'Unknown error';
101
- return { added: [], alreadyPresent: false, error: `Failed to update Claude Code settings: ${message}` };
102
- }
103
- }
104
- return { added, alreadyPresent: added.length === 0 };
105
- }
106
- if (platform === Platform.OpenCode) {
107
- // OpenCode uses opencode.json for config
108
- // Check global config location: ~/.config/opencode/opencode.json
109
- const globalConfigDir = join(homedir(), '.config', 'opencode');
110
- const globalConfigPath = join(globalConfigDir, 'opencode.json');
111
- // Ensure config directory exists
112
- if (!existsSync(globalConfigDir)) {
113
- mkdirSync(globalConfigDir, { recursive: true });
114
- }
115
- // Load or create config
116
- let config = {};
117
- if (existsSync(globalConfigPath)) {
118
- try {
119
- config = JSON.parse(readFileSync(globalConfigPath, 'utf-8'));
120
- }
121
- catch {
122
- console.warn(chalk.yellow('⚠ OpenCode config appears corrupted, resetting'));
123
- config = {};
124
- }
125
- }
126
- // Ensure plugin array exists
127
- if (!Array.isArray(config.plugin)) {
128
- config.plugin = [];
129
- }
130
- // Add opencode-skills plugin if not present
131
- if (!config.plugin.includes(OPENCODE_SKILLS_PLUGIN)) {
132
- config.plugin.push(OPENCODE_SKILLS_PLUGIN);
133
- added.push(OPENCODE_SKILLS_PLUGIN);
134
- }
135
- // Save if we added anything
136
- if (added.length > 0) {
137
- try {
138
- writeFileSync(globalConfigPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
139
- }
140
- catch (e) {
141
- const message = e instanceof Error ? e.message : 'Unknown error';
142
- return { added: [], alreadyPresent: false, error: `Failed to update OpenCode config: ${message}` };
143
- }
144
- }
145
- return { added, alreadyPresent: added.length === 0 };
146
- }
147
- return { added: [], alreadyPresent: true };
148
- }
149
- /**
150
- * Get available output options (built-in + skills that provide output)
151
- */
152
- function getOutputOptions() {
153
- const options = [
154
- { name: 'Terminal (display in CLI)', value: BuiltInOutput.Terminal },
155
- { name: 'Editor ($EDITOR)', value: BuiltInOutput.Editor },
156
- ];
157
- // Add skills that provide output targets
158
- const skills = getBundledSkills();
159
- for (const skill of skills) {
160
- if (skill.provides_output) {
161
- options.push({
162
- name: `${skill.name} (${skill.description})`,
163
- value: skill.name,
164
- });
165
- }
166
- }
167
- return options;
168
- }
169
- export async function setupCommand() {
170
- console.log(chalk.bold('\n🤖 Droid Setup\n'));
171
- const hasExistingConfig = configExists();
172
- if (hasExistingConfig) {
173
- const { overwrite } = await inquirer.prompt([
174
- {
175
- type: 'confirm',
176
- name: 'overwrite',
177
- message: 'Config already exists. Overwrite?',
178
- default: false,
179
- },
180
- ]);
181
- if (!overwrite) {
182
- console.log(chalk.gray('Setup cancelled.'));
183
- return;
184
- }
185
- }
186
- // Detect platform
187
- const detectedPlatform = detectPlatform();
188
- if (detectedPlatform) {
189
- console.log(chalk.green(`✓ Detected ${detectedPlatform}\n`));
190
- }
191
- else {
192
- console.log(chalk.yellow('⚠ No platform detected (Claude Code or OpenCode)\n'));
193
- }
194
- // Detect git username
195
- const detectedGitUsername = detectGitUsername();
196
- // Get dynamic output options
197
- const outputOptions = getOutputOptions();
198
- const answers = await inquirer.prompt([
199
- {
200
- type: 'list',
201
- name: 'platform',
202
- message: 'Which platform are you using?',
203
- choices: [
204
- { name: 'Claude Code', value: Platform.ClaudeCode },
205
- { name: 'OpenCode', value: Platform.OpenCode },
206
- ],
207
- default: detectedPlatform || Platform.ClaudeCode,
208
- },
209
- {
210
- type: 'input',
211
- name: 'user_mention',
212
- message: 'What @mention should be used for you?',
213
- default: '@user',
214
- filter: (input) => {
215
- // Auto-add @ prefix if missing
216
- return input.startsWith('@') ? input : `@${input}`;
217
- },
218
- },
219
- {
220
- type: 'list',
221
- name: 'output_preference',
222
- message: 'Default output preference for skill results?',
223
- choices: outputOptions,
224
- default: BuiltInOutput.Terminal,
225
- },
226
- {
227
- type: 'input',
228
- name: 'git_username',
229
- message: 'Git username for attribution?',
230
- default: detectedGitUsername || '',
231
- },
232
- ]);
233
- const existingConfig = loadConfig();
234
- const config = {
235
- ...existingConfig,
236
- platform: answers.platform,
237
- user_mention: answers.user_mention,
238
- output_preference: answers.output_preference,
239
- git_username: answers.git_username,
240
- };
241
- saveConfig(config);
242
- console.log(chalk.green('\n✓ Config saved to ~/.droid/config.yaml'));
243
- // Configure platform permissions/plugins
244
- const { added, alreadyPresent, error } = configurePlatformPermissions(answers.platform);
245
- if (error) {
246
- console.log(chalk.red(`✗ ${error}`));
247
- console.log(chalk.yellow(' You may need to manually configure your platform'));
248
- }
249
- else if (answers.platform === Platform.ClaudeCode) {
250
- if (added.length > 0) {
251
- console.log(chalk.green(`✓ Added droid permissions to Claude Code settings`));
252
- }
253
- else if (alreadyPresent) {
254
- console.log(chalk.gray(` Droid permissions already configured in Claude Code`));
255
- }
256
- }
257
- else if (answers.platform === Platform.OpenCode) {
258
- if (added.length > 0) {
259
- console.log(chalk.green(`✓ Added opencode-skills plugin to OpenCode config`));
260
- console.log(chalk.gray(` This enables Claude Code-style skills in OpenCode`));
261
- console.log(chalk.gray(` Restart OpenCode to activate the plugin`));
262
- }
263
- else if (alreadyPresent) {
264
- console.log(chalk.gray(` opencode-skills plugin already configured in OpenCode`));
265
- }
266
- }
267
- console.log(chalk.gray('\nRun `droid skills` to browse and install skills.'));
268
- }
269
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAA2C,MAAM,cAAc,CAAC;AAEhG;;GAEG;AACH,MAAM,iBAAiB,GAAG;IACxB,mBAAmB;IACnB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;CACpB,CAAC;AAEF;;GAEG;AACH,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,QAAQ,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC,UAAU,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAAkB;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,QAAQ,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAEjE,kCAAkC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,0BAA0B;QAC1B,IAAI,QAAQ,GAA4E,EAAE,CAAC;QAC3F,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sEAAsE,CAAC,CAAC,CAAC;gBACnG,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC1B,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,QAAQ,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;QAClC,CAAC;QAED,0BAA0B;QAC1B,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YACjF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBACjE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,0CAA0C,OAAO,EAAE,EAAE,CAAC;YAC1G,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACnC,yCAAyC;QACzC,iEAAiE;QACjE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;QAEhE,iCAAiC;QACjC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,wBAAwB;QACxB,IAAI,MAAM,GAA0B,EAAE,CAAC;QACvC,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;gBAC7E,MAAM,GAAG,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;QACrB,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,CAAC;QAED,4BAA4B;QAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YACnF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBACjE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,OAAO,EAAE,EAAE,CAAC;YACrG,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAqD;QAChE,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE;QACpE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE;KAC1D,CAAC;IAEF,yCAAyC;IACzC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,GAAG;gBAC5C,KAAK,EAAE,KAAK,CAAC,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE9C,MAAM,iBAAiB,GAAG,YAAY,EAAE,CAAC;IACzC,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAyB;YAClE;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,mCAAmC;gBAC5C,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,gBAAgB,GAAG,cAAc,EAAE,CAAC;IAC1C,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,gBAAgB,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,sBAAsB;IACtB,MAAM,mBAAmB,GAAG,iBAAiB,EAAE,CAAC;IAEhD,6BAA6B;IAC7B,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAKlC;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,+BAA+B;YACxC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE;gBACnD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE;aAC/C;YACD,OAAO,EAAE,gBAAgB,IAAI,QAAQ,CAAC,UAAU;SACjD;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,uCAAuC;YAChD,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACxB,+BAA+B;gBAC/B,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YACrD,CAAC;SACF;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,8CAA8C;YACvD,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,aAAa,CAAC,QAAQ;SAChC;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,+BAA+B;YACxC,OAAO,EAAE,mBAAmB,IAAI,EAAE;SACnC;KACF,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,UAAU,EAAE,CAAC;IACpC,MAAM,MAAM,GAAgB;QAC1B,GAAG,cAAc;QACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC;IAEF,UAAU,CAAC,MAAM,CAAC,CAAC;IAEnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;IAErE,yCAAyC;IACzC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,4BAA4B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAClF,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAChF,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;AAChF,CAAC"}
@@ -1,144 +0,0 @@
1
- import inquirer from 'inquirer';
2
- import chalk from 'chalk';
3
- import { installSkill, uninstallSkill } from '../lib/skills';
4
- import { getBundledTools, isToolInstalled, getInstalledToolVersion } from '../lib/tools';
5
- import { promptForSkillConfig } from '../lib/skill-config';
6
- import { SkillStatus } from '../lib/types';
7
- function formatToolChoice(tool) {
8
- const installed = isToolInstalled(tool.name);
9
- const installedVersion = getInstalledToolVersion(tool.name);
10
- let line = `${tool.name}`;
11
- if (installed && installedVersion) {
12
- line += chalk.green(` [installed] v${installedVersion}`);
13
- }
14
- else {
15
- line += chalk.gray(` v${tool.version}`);
16
- }
17
- if (tool.status) {
18
- const statusColor = tool.status === SkillStatus.Alpha
19
- ? chalk.red
20
- : tool.status === SkillStatus.Beta
21
- ? chalk.yellow
22
- : chalk.white;
23
- line += statusColor(` [${tool.status}]`);
24
- }
25
- return line;
26
- }
27
- export async function skillsCommand() {
28
- const tools = getBundledTools();
29
- if (tools.length === 0) {
30
- console.log(chalk.yellow('\nNo tools available yet.'));
31
- return;
32
- }
33
- console.log(chalk.bold('\n🤖 Available Tools\n'));
34
- const toolChoices = tools.map((tool) => ({
35
- name: formatToolChoice(tool),
36
- value: tool.name,
37
- short: tool.name,
38
- }));
39
- const choices = [
40
- {
41
- name: chalk.gray('← Exit'),
42
- value: '__exit__',
43
- short: 'Exit',
44
- },
45
- ...toolChoices,
46
- ];
47
- const { selectedTool } = await inquirer.prompt([
48
- {
49
- type: 'list',
50
- name: 'selectedTool',
51
- message: 'Select a tool to view details or install:',
52
- choices,
53
- pageSize: 15,
54
- },
55
- ]);
56
- if (selectedTool === '__exit__') {
57
- return;
58
- }
59
- const tool = tools.find((t) => t.name === selectedTool);
60
- if (!tool) {
61
- console.error(chalk.red('Tool not found'));
62
- return;
63
- }
64
- // Show tool details
65
- console.log(chalk.bold(`\n📦 ${tool.name}`));
66
- console.log(chalk.gray(`Version: ${tool.version}`));
67
- if (tool.status) {
68
- console.log(chalk.gray(`Status: ${tool.status}`));
69
- }
70
- console.log(`\n${tool.description}`);
71
- // Show what the tool includes
72
- const skillNames = tool.includes.skills.map(s => s.name);
73
- const commandNames = tool.includes.commands.map(c => `/${c}`);
74
- const agentNames = tool.includes.agents;
75
- if (skillNames.length > 0) {
76
- console.log(chalk.gray(`\nSkills: ${skillNames.join(', ')}`));
77
- }
78
- if (commandNames.length > 0) {
79
- console.log(chalk.gray(`Commands: ${commandNames.join(', ')}`));
80
- }
81
- if (agentNames.length > 0) {
82
- console.log(chalk.gray(`Agents: ${agentNames.join(', ')}`));
83
- }
84
- const installed = isToolInstalled(tool.name);
85
- const primarySkill = tool.includes.skills.find(s => s.required)?.name || tool.name;
86
- const actions = installed
87
- ? [
88
- { name: '← Back', value: 'back' },
89
- { name: 'Configure', value: 'configure' },
90
- { name: 'Uninstall', value: 'uninstall' },
91
- ]
92
- : [
93
- { name: '← Back', value: 'back' },
94
- { name: 'Install', value: 'install' },
95
- ];
96
- const { action } = await inquirer.prompt([
97
- {
98
- type: 'list',
99
- name: 'action',
100
- message: 'What would you like to do?',
101
- choices: actions,
102
- },
103
- ]);
104
- switch (action) {
105
- case 'install': {
106
- const result = installSkill(primarySkill);
107
- if (result.success) {
108
- console.log(chalk.green(`\n✓ Installed ${tool.name}`));
109
- // Prompt for config if tool has options
110
- if (tool.config_schema && Object.keys(tool.config_schema).length > 0) {
111
- const hasRequiredConfig = Object.values(tool.config_schema).some((option) => option.default === undefined);
112
- await promptForSkillConfig(primarySkill, tool.config_schema, !hasRequiredConfig);
113
- }
114
- }
115
- else {
116
- console.log(chalk.red(`\n✗ ${result.message}`));
117
- }
118
- break;
119
- }
120
- case 'configure': {
121
- if (tool.config_schema && Object.keys(tool.config_schema).length > 0) {
122
- await promptForSkillConfig(primarySkill, tool.config_schema, false);
123
- }
124
- else {
125
- console.log(chalk.gray('\nThis tool has no configuration options.'));
126
- }
127
- break;
128
- }
129
- case 'uninstall': {
130
- const result = uninstallSkill(primarySkill);
131
- if (result.success) {
132
- console.log(chalk.green(`\n✓ Uninstalled ${tool.name}`));
133
- }
134
- else {
135
- console.log(chalk.red(`\n✗ ${result.message}`));
136
- }
137
- break;
138
- }
139
- case 'back':
140
- await skillsCommand();
141
- break;
142
- }
143
- }
144
- //# sourceMappingURL=skills.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import { colors } from '../constants';
4
- export function Badge({ type, label, isSelected = false, dimmed = false, }) {
5
- const color = colors[type];
6
- const displayLabel = label || type.charAt(0).toUpperCase() + type.slice(1);
7
- if (dimmed) {
8
- return (_jsx(Text, { color: colors.textDim, children: displayLabel }));
9
- }
10
- return (_jsx(Text, { backgroundColor: isSelected ? color : undefined, color: isSelected ? '#000000' : color, bold: isSelected, children: isSelected ? ` ${displayLabel} ` : displayLabel }));
11
- }
12
- export function ComponentBadges({ tool, compact = false }) {
13
- const hasSkills = tool.includes.skills.length > 0;
14
- const hasCommands = tool.includes.commands.length > 0;
15
- const hasAgents = tool.includes.agents.length > 0;
16
- if (compact) {
17
- // Show colored squares for list view (single char with spacing)
18
- const parts = [];
19
- if (hasSkills)
20
- parts.push('skill');
21
- if (hasCommands)
22
- parts.push('command');
23
- if (hasAgents)
24
- parts.push('agent');
25
- return (_jsx(Box, { flexDirection: "row", children: parts.map((type, i) => (_jsxs(Text, { children: [_jsx(Text, { backgroundColor: colors[type], children: " " }), i < parts.length - 1 && ' '] }, type))) }));
26
- }
27
- return (_jsxs(Box, { flexDirection: "row", children: [hasSkills && (_jsx(Box, { marginRight: 1, children: _jsx(Text, { backgroundColor: colors.skill, color: "#000000", bold: true, children: ` ${tool.includes.skills.length} skill${tool.includes.skills.length > 1 ? 's' : ''} ` }) })), hasCommands && (_jsx(Box, { marginRight: 1, children: _jsx(Text, { backgroundColor: colors.command, color: "#000000", bold: true, children: ` ${tool.includes.commands.length} cmd${tool.includes.commands.length > 1 ? 's' : ''} ` }) })), hasAgents && (_jsx(Box, { marginRight: 1, children: _jsx(Text, { backgroundColor: colors.agent, color: "#000000", bold: true, children: ` ${tool.includes.agents.length} agent${tool.includes.agents.length > 1 ? 's' : ''} ` }) }))] }));
28
- }
29
- //# sourceMappingURL=Badge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Badge.js","sourceRoot":"","sources":["../../../../src/commands/tui/components/Badge.tsx"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Text } from 'ink';
3
- import { colors } from '../constants';
4
- export function MarkdownLine({ line, inCodeBlock }) {
5
- // Code block content
6
- if (inCodeBlock) {
7
- return _jsx(Text, { color: "#a5d6ff", children: line || ' ' });
8
- }
9
- // Code block delimiter
10
- if (line.startsWith('```')) {
11
- return _jsx(Text, { color: colors.textDim, children: line });
12
- }
13
- // Headers
14
- if (line.startsWith('# ')) {
15
- return _jsx(Text, { color: colors.text, bold: true, children: line.slice(2) });
16
- }
17
- if (line.startsWith('## ')) {
18
- return _jsx(Text, { color: colors.text, bold: true, children: line.slice(3) });
19
- }
20
- if (line.startsWith('### ')) {
21
- return _jsx(Text, { color: "#c9d1d9", bold: true, children: line.slice(4) });
22
- }
23
- // YAML frontmatter delimiter
24
- if (line === '---') {
25
- return _jsx(Text, { color: colors.textDim, children: line });
26
- }
27
- // List items
28
- if (line.match(/^[\s]*[-*]\s/)) {
29
- return _jsx(Text, { color: colors.textMuted, children: line });
30
- }
31
- // Blockquotes
32
- if (line.startsWith('>')) {
33
- return _jsx(Text, { color: "#8b949e", italic: true, children: line });
34
- }
35
- // Table rows
36
- if (line.includes('|')) {
37
- return _jsx(Text, { color: colors.textMuted, children: line });
38
- }
39
- // Default
40
- return _jsx(Text, { color: colors.textMuted, children: line || ' ' });
41
- }
42
- //# sourceMappingURL=Markdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../../../src/commands/tui/components/Markdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAA0C;IACxF,qBAAqB;IACrB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,IAAI,IAAI,GAAG,GAAQ,CAAC;IACpD,CAAC;IAED,uBAAuB;IACvB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,IAAI,GAAQ,CAAC;IACpD,CAAC;IAED,UAAU;IACV,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,kBAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAQ,CAAC;IAC/D,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,kBAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAQ,CAAC;IAC/D,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,kBAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAQ,CAAC;IAC3D,CAAC;IAED,6BAA6B;IAC7B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,IAAI,GAAQ,CAAC;IACpD,CAAC;IAED,aAAa;IACb,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,YAAG,IAAI,GAAQ,CAAC;IACtD,CAAC;IAED,cAAc;IACd,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,MAAM,kBAAE,IAAI,GAAQ,CAAC;IACpD,CAAC;IAED,aAAa;IACb,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,YAAG,IAAI,GAAQ,CAAC;IACtD,CAAC;IAED,UAAU;IACV,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,YAAG,IAAI,IAAI,GAAG,GAAQ,CAAC;AAC7D,CAAC"}
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import { loadConfig, getAutoUpdateConfig } from '../../../lib/config';
4
- import { Platform } from '../../../lib/types';
5
- import { colors } from '../constants';
6
- export function SettingsDetails({ isFocused, }) {
7
- const config = loadConfig();
8
- const autoUpdateConfig = getAutoUpdateConfig();
9
- return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, flexGrow: 1, children: [_jsx(Text, { color: colors.text, bold: true, children: "Settings" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: colors.textDim, children: "Platform: " }), _jsx(Text, { color: colors.text, children: config.platform === Platform.ClaudeCode ? 'Claude Code' : 'OpenCode' })] }), _jsxs(Text, { children: [_jsx(Text, { color: colors.textDim, children: "Your @mention: " }), _jsx(Text, { color: colors.text, children: config.user_mention })] }), _jsxs(Text, { children: [_jsx(Text, { color: colors.textDim, children: "Auto-update tools: " }), _jsx(Text, { color: colors.text, children: autoUpdateConfig.tools ? 'enabled' : 'disabled' })] }), _jsxs(Text, { children: [_jsx(Text, { color: colors.textDim, children: "Auto-update app: " }), _jsx(Text, { color: colors.text, children: autoUpdateConfig.app ? 'enabled' : 'disabled' })] })] }), _jsx(Box, { marginTop: 2, children: _jsx(Text, { color: colors.textDim, children: "Config: ~/.droid/config.yaml" }) }), isFocused && (_jsx(Box, { marginTop: 2, children: _jsxs(Text, { backgroundColor: colors.primary, color: "#ffffff", bold: true, children: [' ', "Edit", ' '] }) })), isFocused && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.textDim, children: "enter edit \u00B7 esc back" }) })), !isFocused && (_jsx(Box, { marginTop: 2, children: _jsx(Text, { color: colors.textDim, children: "press enter to edit" }) }))] }));
10
- }
11
- //# sourceMappingURL=SettingsDetails.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SettingsDetails.js","sourceRoot":"","sources":["../../../../src/commands/tui/components/SettingsDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAMtC,MAAM,UAAU,eAAe,CAAC,EAC9B,SAAS,GACY;IACrB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAE/C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,aACrD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,+BAAgB,EAE9C,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,qCAA6B,EACxD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YACrB,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,GAChE,IACF,EACP,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,qCAA6B,EACxD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,MAAM,CAAC,YAAY,GAAQ,IACjD,EACP,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,qCAA6B,EACxD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAQ,IAC7E,EACP,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,qCAA6B,EACxD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAQ,IAC3E,IACH,EAEN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,6CAAqC,GAC5D,EAEL,SAAS,IAAI,CACZ,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,MAAC,IAAI,IACH,eAAe,EAAE,MAAM,CAAC,OAAO,EAC/B,KAAK,EAAC,SAAS,EACf,IAAI,mBAEH,GAAG,UAAM,GAAG,IACR,GACH,CACP,EAEA,SAAS,IAAI,CACZ,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,2CAA8B,GACrD,CACP,EAEA,CAAC,SAAS,IAAI,CACb,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,oCAA4B,GACnD,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import { colors } from '../constants';
4
- export function TabBar({ tabs, activeTab }) {
5
- return (_jsx(Box, { flexDirection: "row", flexWrap: "wrap", children: tabs.map((tab) => (_jsxs(Text, { backgroundColor: tab.id === activeTab ? colors.primary : undefined, color: tab.id === activeTab ? '#ffffff' : colors.textMuted, bold: tab.id === activeTab, wrap: "truncate", children: [' ', tab.label, ' '] }, tab.id))) }));
6
- }
7
- //# sourceMappingURL=TabBar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabBar.js","sourceRoot":"","sources":["../../../../src/commands/tui/components/TabBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAOtC,MAAM,UAAU,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAe;IACrD,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,QAAQ,EAAC,MAAM,YACrC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,MAAC,IAAI,IAEH,eAAe,EAAE,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAClE,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAC1D,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,SAAS,EAC1B,IAAI,EAAC,UAAU,aAEd,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,KANf,GAAG,CAAC,EAAE,CAON,CACR,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -1,35 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import { isToolInstalled, getInstalledToolVersion, getToolUpdateStatus } from '../../../lib/tools';
4
- import { colors } from '../constants';
5
- import { ComponentBadges } from './Badge';
6
- export function ToolDetails({ tool, isFocused, selectedAction, }) {
7
- if (!tool) {
8
- return (_jsx(Box, { paddingLeft: 2, flexGrow: 1, children: _jsx(Text, { color: colors.textDim, children: "Select a tool" }) }));
9
- }
10
- const installed = isToolInstalled(tool.name);
11
- const installedVersion = getInstalledToolVersion(tool.name);
12
- const updateStatus = getToolUpdateStatus(tool.name);
13
- const isSystemTool = tool.system === true;
14
- const actions = installed
15
- ? [
16
- { id: 'explore', label: 'Explore', variant: 'default' },
17
- ...(updateStatus.hasUpdate
18
- ? [{ id: 'update', label: `Update (${updateStatus.bundledVersion})`, variant: 'primary' }]
19
- : []),
20
- { id: 'configure', label: 'Configure', variant: 'default' },
21
- // System tools can't be uninstalled
22
- ...(!isSystemTool ? [{ id: 'uninstall', label: 'Uninstall', variant: 'danger' }] : []),
23
- ]
24
- : [
25
- { id: 'explore', label: 'Explore', variant: 'default' },
26
- // System tools auto-install, but show Install for manual trigger if needed
27
- { id: 'install', label: 'Install', variant: 'primary' },
28
- ];
29
- return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, flexGrow: 1, children: [_jsx(Text, { color: colors.text, bold: true, children: tool.name }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: colors.textDim, children: [tool.version, tool.status && ` · ${tool.status}`, installed && _jsx(Text, { color: colors.success, children: " \u00B7 installed" }), updateStatus.hasUpdate && (_jsxs(Text, { color: colors.primary, children: [" \u00B7 update (", installedVersion, " \u2192 ", updateStatus.bundledVersion, ")"] }))] }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.textMuted, children: tool.description }) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: colors.textDim, children: "Includes:" }), _jsx(Box, { marginTop: 1, children: _jsx(ComponentBadges, { tool: tool }) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, marginLeft: 1, children: [tool.includes.skills.length > 0 && (_jsxs(Text, { children: [_jsx(Text, { color: colors.skill, children: "Skills: " }), _jsx(Text, { color: colors.textMuted, children: tool.includes.skills.map(s => s.name).join(', ') })] })), tool.includes.commands.length > 0 && (_jsxs(Text, { children: [_jsx(Text, { color: colors.command, children: "Commands: " }), _jsx(Text, { color: colors.textMuted, children: tool.includes.commands.map(c => `/${c}`).join(', ') })] })), tool.includes.agents.length > 0 && (_jsxs(Text, { children: [_jsx(Text, { color: colors.agent, children: "Agents: " }), _jsx(Text, { color: colors.textMuted, children: tool.includes.agents.join(', ') })] }))] })] }), isFocused && (_jsx(Box, { flexDirection: "row", marginTop: 1, children: actions.map((action, index) => (_jsxs(Text, { backgroundColor: selectedAction === index
30
- ? action.variant === 'danger'
31
- ? colors.error
32
- : colors.primary
33
- : colors.bgSelected, color: selectedAction === index ? '#ffffff' : colors.textMuted, bold: selectedAction === index, children: [' ', action.label, ' '] }, action.id))) }))] }));
34
- }
35
- //# sourceMappingURL=ToolDetails.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolDetails.js","sourceRoot":"","sources":["../../../../src/commands/tui/components/ToolDetails.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import { isToolInstalled, getInstalledToolVersion, getToolUpdateStatus } from '../../../lib/tools';
4
- import { colors } from '../constants';
5
- export function ToolItem({ tool, isSelected, isActive, wasAutoUpdated, }) {
6
- const installed = isToolInstalled(tool.name);
7
- const installedVersion = getInstalledToolVersion(tool.name);
8
- const updateStatus = getToolUpdateStatus(tool.name);
9
- return (_jsx(Box, { paddingX: 1, backgroundColor: isActive ? colors.bgSelected : undefined, children: _jsxs(Text, { wrap: "truncate", children: [_jsxs(Text, { color: colors.textDim, children: [isSelected ? '>' : ' ', " "] }), _jsx(Text, { color: isSelected || isActive ? colors.text : colors.textMuted, children: tool.name }), installed && installedVersion && _jsxs(Text, { color: colors.textDim, children: [" v", installedVersion] }), installed && _jsx(Text, { color: colors.success, children: " \u2713" }), wasAutoUpdated && _jsx(Text, { color: colors.success, children: " \u2191" }), updateStatus.hasUpdate && !wasAutoUpdated && _jsx(Text, { color: colors.primary, children: " \u2191" }), _jsx(Text, { children: " " }), tool.includes.skills.length > 0 && _jsx(Text, { color: colors.skill, children: "\u25CF " }), tool.includes.commands.length > 0 && _jsx(Text, { color: colors.command, children: "\u25CF " }), tool.includes.agents.length > 0 && _jsx(Text, { color: colors.agent, children: "\u25CF" })] }) }));
10
- }
11
- //# sourceMappingURL=ToolItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolItem.js","sourceRoot":"","sources":["../../../../src/commands/tui/components/ToolItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEnG,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAStC,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,cAAc,GACA;IACd,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEpD,OAAO,CACL,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,YACzE,MAAC,IAAI,IAAC,IAAI,EAAC,UAAU,aACnB,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,aAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,EAC7D,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,YAAG,IAAI,CAAC,IAAI,GAAQ,EACvF,SAAS,IAAI,gBAAgB,IAAI,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,mBAAK,gBAAgB,IAAQ,EACzF,SAAS,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,wBAAW,EACnD,cAAc,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,wBAAW,EACxD,YAAY,CAAC,SAAS,IAAI,CAAC,cAAc,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,wBAAW,EACpF,KAAC,IAAI,oBAAS,EACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,wBAAW,EACvE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,wBAAW,EAC3E,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,uBAAU,IAClE,GACH,CACP,CAAC;AACJ,CAAC"}