@orderful/droid 0.15.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 (125) hide show
  1. package/.claude/CLAUDE.md +18 -40
  2. package/AGENTS.md +75 -0
  3. package/CHANGELOG.md +25 -0
  4. package/dist/bin/droid.js +3064 -54
  5. package/dist/commands/setup.d.ts +1 -1
  6. package/dist/commands/setup.d.ts.map +1 -1
  7. package/dist/commands/tui/components/Badge.d.ts +13 -0
  8. package/dist/commands/tui/components/Badge.d.ts.map +1 -0
  9. package/dist/commands/tui/components/Markdown.d.ts +5 -0
  10. package/dist/commands/tui/components/Markdown.d.ts.map +1 -0
  11. package/dist/commands/tui/components/SettingsDetails.d.ts +5 -0
  12. package/dist/commands/tui/components/SettingsDetails.d.ts.map +1 -0
  13. package/dist/commands/tui/components/TabBar.d.ts +10 -0
  14. package/dist/commands/tui/components/TabBar.d.ts.map +1 -0
  15. package/dist/commands/tui/components/ToolDetails.d.ts +8 -0
  16. package/dist/commands/tui/components/ToolDetails.d.ts.map +1 -0
  17. package/dist/commands/tui/components/ToolItem.d.ts +9 -0
  18. package/dist/commands/tui/components/ToolItem.d.ts.map +1 -0
  19. package/dist/commands/tui/constants.d.ts +16 -0
  20. package/dist/commands/tui/constants.d.ts.map +1 -0
  21. package/dist/commands/tui/hooks/useAppUpdate.d.ts +13 -0
  22. package/dist/commands/tui/hooks/useAppUpdate.d.ts.map +1 -0
  23. package/dist/commands/tui/hooks/useToolUpdates.d.ts +22 -0
  24. package/dist/commands/tui/hooks/useToolUpdates.d.ts.map +1 -0
  25. package/dist/commands/tui/types.d.ts +5 -0
  26. package/dist/commands/tui/types.d.ts.map +1 -0
  27. package/dist/commands/tui/views/ReadmeViewer.d.ts +7 -0
  28. package/dist/commands/tui/views/ReadmeViewer.d.ts.map +1 -0
  29. package/dist/commands/tui/views/SetupScreen.d.ts +8 -0
  30. package/dist/commands/tui/views/SetupScreen.d.ts.map +1 -0
  31. package/dist/commands/tui/views/SkillConfigScreen.d.ts +8 -0
  32. package/dist/commands/tui/views/SkillConfigScreen.d.ts.map +1 -0
  33. package/dist/commands/tui/views/ToolExplorer.d.ts +8 -0
  34. package/dist/commands/tui/views/ToolExplorer.d.ts.map +1 -0
  35. package/dist/commands/tui/views/ToolUpdatePrompt.d.ts +10 -0
  36. package/dist/commands/tui/views/ToolUpdatePrompt.d.ts.map +1 -0
  37. package/dist/commands/tui/views/WelcomeScreen.d.ts +11 -0
  38. package/dist/commands/tui/views/WelcomeScreen.d.ts.map +1 -0
  39. package/dist/commands/tui.d.ts.map +1 -1
  40. package/dist/index.d.ts +4 -4
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +952 -6
  43. package/dist/lib/agents.d.ts +1 -1
  44. package/dist/lib/agents.d.ts.map +1 -1
  45. package/dist/lib/config.d.ts +1 -1
  46. package/dist/lib/config.d.ts.map +1 -1
  47. package/dist/lib/platforms.d.ts +1 -1
  48. package/dist/lib/platforms.d.ts.map +1 -1
  49. package/dist/lib/skill-config.d.ts +1 -1
  50. package/dist/lib/skill-config.d.ts.map +1 -1
  51. package/dist/lib/skills.d.ts +1 -1
  52. package/dist/lib/skills.d.ts.map +1 -1
  53. package/dist/lib/tools.d.ts +1 -1
  54. package/dist/lib/tools.d.ts.map +1 -1
  55. package/package.json +3 -3
  56. package/scripts/build.ts +78 -0
  57. package/src/bin/droid.ts +8 -8
  58. package/src/commands/config.ts +1 -1
  59. package/src/commands/install.ts +3 -3
  60. package/src/commands/setup.test.ts +1 -1
  61. package/src/commands/setup.ts +3 -3
  62. package/src/commands/skills.ts +4 -4
  63. package/src/commands/tui/components/Badge.tsx +86 -0
  64. package/src/commands/tui/components/Markdown.tsx +48 -0
  65. package/src/commands/tui/components/SettingsDetails.tsx +70 -0
  66. package/src/commands/tui/components/TabBar.tsx +26 -0
  67. package/src/commands/tui/components/ToolDetails.tsx +117 -0
  68. package/src/commands/tui/components/ToolItem.tsx +39 -0
  69. package/src/commands/tui/constants.ts +17 -0
  70. package/src/commands/tui/hooks/useAppUpdate.ts +67 -0
  71. package/src/commands/tui/hooks/useToolUpdates.ts +110 -0
  72. package/src/commands/tui/types.ts +4 -0
  73. package/src/commands/tui/views/ReadmeViewer.tsx +93 -0
  74. package/src/commands/tui/views/SetupScreen.tsx +242 -0
  75. package/src/commands/tui/views/SkillConfigScreen.tsx +278 -0
  76. package/src/commands/tui/views/ToolExplorer.tsx +190 -0
  77. package/src/commands/tui/views/ToolUpdatePrompt.tsx +109 -0
  78. package/src/commands/tui/views/WelcomeScreen.tsx +149 -0
  79. package/src/commands/tui.tsx +65 -1587
  80. package/src/commands/uninstall.ts +2 -2
  81. package/src/commands/update.ts +1 -1
  82. package/src/index.ts +4 -4
  83. package/src/lib/agents.ts +4 -4
  84. package/src/lib/config.ts +1 -1
  85. package/src/lib/platforms.ts +1 -1
  86. package/src/lib/skill-config.ts +2 -2
  87. package/src/lib/skills.test.ts +2 -2
  88. package/src/lib/skills.ts +5 -5
  89. package/src/lib/tools.ts +3 -3
  90. package/src/lib/types.test.ts +1 -1
  91. package/src/lib/version.test.ts +1 -1
  92. package/dist/bin/droid.js.map +0 -1
  93. package/dist/commands/config.js +0 -67
  94. package/dist/commands/config.js.map +0 -1
  95. package/dist/commands/install.js +0 -45
  96. package/dist/commands/install.js.map +0 -1
  97. package/dist/commands/setup.js +0 -269
  98. package/dist/commands/setup.js.map +0 -1
  99. package/dist/commands/skills.js +0 -144
  100. package/dist/commands/skills.js.map +0 -1
  101. package/dist/commands/tui.js +0 -1008
  102. package/dist/commands/tui.js.map +0 -1
  103. package/dist/commands/uninstall.js +0 -26
  104. package/dist/commands/uninstall.js.map +0 -1
  105. package/dist/commands/update.js +0 -45
  106. package/dist/commands/update.js.map +0 -1
  107. package/dist/index.js.map +0 -1
  108. package/dist/lib/agents.js +0 -248
  109. package/dist/lib/agents.js.map +0 -1
  110. package/dist/lib/config.js +0 -196
  111. package/dist/lib/config.js.map +0 -1
  112. package/dist/lib/platforms.js +0 -52
  113. package/dist/lib/platforms.js.map +0 -1
  114. package/dist/lib/quotes.js +0 -24
  115. package/dist/lib/quotes.js.map +0 -1
  116. package/dist/lib/skill-config.js +0 -80
  117. package/dist/lib/skill-config.js.map +0 -1
  118. package/dist/lib/skills.js +0 -582
  119. package/dist/lib/skills.js.map +0 -1
  120. package/dist/lib/tools.js +0 -145
  121. package/dist/lib/tools.js.map +0 -1
  122. package/dist/lib/types.js +0 -50
  123. package/dist/lib/types.js.map +0 -1
  124. package/dist/lib/version.js +0 -100
  125. package/dist/lib/version.js.map +0 -1
@@ -1,144 +0,0 @@
1
- import inquirer from 'inquirer';
2
- import chalk from 'chalk';
3
- import { installSkill, uninstallSkill } from '../lib/skills.js';
4
- import { getBundledTools, isToolInstalled, getInstalledToolVersion } from '../lib/tools.js';
5
- import { promptForSkillConfig } from '../lib/skill-config.js';
6
- import { SkillStatus } from '../lib/types.js';
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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"}