dino-spec 5.1.1 → 5.3.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 (72) hide show
  1. package/README.md +51 -1
  2. package/dist/cli/index.js +39 -1
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/compact.d.ts +34 -0
  5. package/dist/commands/compact.d.ts.map +1 -0
  6. package/dist/commands/compact.js +120 -0
  7. package/dist/commands/compact.js.map +1 -0
  8. package/dist/commands/store/index.d.ts +1 -0
  9. package/dist/commands/store/index.d.ts.map +1 -1
  10. package/dist/commands/store/index.js +1 -0
  11. package/dist/commands/store/index.js.map +1 -1
  12. package/dist/commands/store/search.d.ts +19 -0
  13. package/dist/commands/store/search.d.ts.map +1 -0
  14. package/dist/commands/store/search.js +229 -0
  15. package/dist/commands/store/search.js.map +1 -0
  16. package/dist/core/checkpoints/checkpoint.d.ts +58 -1
  17. package/dist/core/checkpoints/checkpoint.d.ts.map +1 -1
  18. package/dist/core/checkpoints/checkpoint.js +186 -1
  19. package/dist/core/checkpoints/checkpoint.js.map +1 -1
  20. package/dist/core/checkpoints/index.d.ts +6 -1
  21. package/dist/core/checkpoints/index.d.ts.map +1 -1
  22. package/dist/core/checkpoints/index.js +6 -1
  23. package/dist/core/checkpoints/index.js.map +1 -1
  24. package/dist/core/config/constants.d.ts +10 -3
  25. package/dist/core/config/constants.d.ts.map +1 -1
  26. package/dist/core/config/constants.js +10 -3
  27. package/dist/core/config/constants.js.map +1 -1
  28. package/dist/core/config/feature-flags.d.ts +103 -0
  29. package/dist/core/config/feature-flags.d.ts.map +1 -0
  30. package/dist/core/config/feature-flags.js +122 -0
  31. package/dist/core/config/feature-flags.js.map +1 -0
  32. package/dist/core/config/index.d.ts +3 -1
  33. package/dist/core/config/index.d.ts.map +1 -1
  34. package/dist/core/config/index.js +3 -1
  35. package/dist/core/config/index.js.map +1 -1
  36. package/dist/core/examples/index.d.ts +7 -0
  37. package/dist/core/examples/index.d.ts.map +1 -0
  38. package/dist/core/examples/index.js +7 -0
  39. package/dist/core/examples/index.js.map +1 -0
  40. package/dist/core/examples/tool-examples.d.ts +45 -0
  41. package/dist/core/examples/tool-examples.d.ts.map +1 -0
  42. package/dist/core/examples/tool-examples.js +282 -0
  43. package/dist/core/examples/tool-examples.js.map +1 -0
  44. package/dist/core/intelligence/index.d.ts +3 -2
  45. package/dist/core/intelligence/index.d.ts.map +1 -1
  46. package/dist/core/intelligence/index.js +3 -2
  47. package/dist/core/intelligence/index.js.map +1 -1
  48. package/dist/core/intelligence/session-compactor.d.ts +112 -0
  49. package/dist/core/intelligence/session-compactor.d.ts.map +1 -0
  50. package/dist/core/intelligence/session-compactor.js +373 -0
  51. package/dist/core/intelligence/session-compactor.js.map +1 -0
  52. package/dist/hooks/pre-compact.d.ts +12 -2
  53. package/dist/hooks/pre-compact.d.ts.map +1 -1
  54. package/dist/hooks/pre-compact.js +54 -6
  55. package/dist/hooks/pre-compact.js.map +1 -1
  56. package/dist/hooks/user-prompt-submit.d.ts +2 -1
  57. package/dist/hooks/user-prompt-submit.d.ts.map +1 -1
  58. package/dist/hooks/user-prompt-submit.js +77 -2
  59. package/dist/hooks/user-prompt-submit.js.map +1 -1
  60. package/dist/mcp/server.d.ts +11 -3
  61. package/dist/mcp/server.d.ts.map +1 -1
  62. package/dist/mcp/server.js +147 -10
  63. package/dist/mcp/server.js.map +1 -1
  64. package/dist/store/index.d.ts +1 -1
  65. package/dist/store/index.d.ts.map +1 -1
  66. package/dist/store/index.js +1 -1
  67. package/dist/store/index.js.map +1 -1
  68. package/dist/store/remote.d.ts +10 -1
  69. package/dist/store/remote.d.ts.map +1 -1
  70. package/dist/store/remote.js +102 -3
  71. package/dist/store/remote.js.map +1 -1
  72. package/package.json +69 -68
package/README.md CHANGED
@@ -20,7 +20,7 @@ When working with AI coding assistants, projects often suffer from:
20
20
  - **State blindness** - No awareness of test/build/lint status
21
21
  - **Unstructured iteration** - No clear progression from idea to implementation
22
22
 
23
- **dino-spec v5.0.0** solves these with:
23
+ **dino-spec v5.3.0** solves these with:
24
24
 
25
25
  - **Progressive task delegation** - Automatic delegation to specialized agents with context handoffs
26
26
  - **Progressive context loading** - Minimal initial tokens, load context on-demand via MCP resources
@@ -186,8 +186,58 @@ dino hooks list # List all available hooks
186
186
  dino hooks enable <id> # Enable a specific hook
187
187
  dino hooks disable <id> # Disable a specific hook
188
188
  dino hooks remove # Remove all hooks
189
+
190
+ # Skill Store
191
+ dino store list # List installed skills
192
+ dino store list --remote # List available remote skills
193
+ dino store search # Interactive skill search and install
194
+ dino store install <skill> # Install a skill
195
+ dino store remove <skill> # Remove a skill
196
+ dino store sync # Refresh remote manifests
197
+ ```
198
+
199
+ ## Skill Store
200
+
201
+ The skill store provides a way to share and install workflow skills.
202
+
203
+ ### Interactive Search
204
+
205
+ ```bash
206
+ dino store search
207
+ ```
208
+
209
+ This launches an interactive search interface where you can:
210
+ - Type to filter skills by name, description, or tags
211
+ - See which skills are already installed (✓)
212
+ - Select a skill to view details and install
213
+ - Choose installation scope (local project or global)
214
+
215
+ ### Commands
216
+
217
+ | Command | Description |
218
+ |---------|-------------|
219
+ | `dino store list` | List installed skills (local project) |
220
+ | `dino store list -g` | List global installed skills |
221
+ | `dino store list --remote` | List available skills from remote store |
222
+ | `dino store search` | Interactive skill search and install |
223
+ | `dino store search --list` | Non-interactive list mode |
224
+ | `dino store install <skill>` | Install to local project |
225
+ | `dino store install <skill> -g` | Install globally |
226
+ | `dino store remove <skill>` | Remove from local project |
227
+ | `dino store sync` | Refresh remote manifests |
228
+
229
+ ### Private Repositories
230
+
231
+ For private skill repositories, set a GitHub token:
232
+
233
+ ```bash
234
+ export GITHUB_TOKEN=your_token_here
235
+ # or
236
+ export GH_TOKEN=your_token_here
189
237
  ```
190
238
 
239
+ The token needs `repo` scope for private repository access.
240
+
191
241
  ## Project Structure
192
242
 
193
243
  After `dino init`, your project will have:
package/dist/cli/index.js CHANGED
@@ -24,7 +24,8 @@ import { statusCommand } from '../commands/status.js';
24
24
  import { refreshCommand } from '../commands/refresh.js';
25
25
  import { hooksSetupCommand, hooksStatusCommand, hooksRemoveCommand, hooksEnableCommand, hooksDisableCommand, hooksListCommand, hooksDebugCommand, } from '../commands/hooks/index.js';
26
26
  import { sessionReadCommand, sessionUpdateCommand } from '../commands/session.js';
27
- import { storeListCommand, storeInstallCommand, storeRemoveCommand, storeSyncCommand, } from '../commands/store/index.js';
27
+ import { compactCommand, compactStatusCommand } from '../commands/compact.js';
28
+ import { storeListCommand, storeInstallCommand, storeRemoveCommand, storeSyncCommand, storeSearchCommand, listFilteredSkills, } from '../commands/store/index.js';
28
29
  const program = new Command();
29
30
  program
30
31
  .name('dino')
@@ -141,6 +142,29 @@ sessionCmd
141
142
  .action(async (options) => {
142
143
  await sessionUpdateCommand(options);
143
144
  });
145
+ sessionCmd
146
+ .command('compact')
147
+ .description('Intelligent session compaction (40-60% token reduction)')
148
+ .option('--dry-run', 'Preview compaction without applying')
149
+ .option('--json', 'Output as JSON')
150
+ .option('--threshold <tokens>', 'Token threshold to trigger compaction (default: 500)', parseInt)
151
+ .option('--max-notes <n>', 'Max notes to keep (default: 3)', parseInt)
152
+ .option('--max-changes <n>', 'Max recent changes to keep (default: 5)', parseInt)
153
+ .option('--max-progress <n>', 'Max progress signals to keep (default: 5)', parseInt)
154
+ .option('--max-blockers <n>', 'Max blockers to keep (default: 3)', parseInt)
155
+ .option('--no-preserve-decisions', 'Do not preserve architectural decisions')
156
+ .option('--no-archive', 'Do not archive compacted items')
157
+ .action(async (options) => {
158
+ await compactCommand(options);
159
+ });
160
+ sessionCmd
161
+ .command('compact-status')
162
+ .description('Check if session needs compaction')
163
+ .option('--json', 'Output as JSON')
164
+ .option('--threshold <tokens>', 'Token threshold (default: 500)', parseInt)
165
+ .action(async (options) => {
166
+ await compactStatusCommand(options);
167
+ });
144
168
  // Store subcommand
145
169
  const storeCmd = program
146
170
  .command('store')
@@ -171,6 +195,20 @@ storeCmd
171
195
  .action(async (skill, options) => {
172
196
  await storeRemoveCommand(skill, options);
173
197
  });
198
+ storeCmd
199
+ .command('search [query]')
200
+ .description('Interactive skill search and install')
201
+ .option('-g, --global', 'Default to global installation')
202
+ .option('--json', 'Output as JSON (non-interactive)')
203
+ .option('--list', 'List mode instead of interactive search')
204
+ .action(async (query, options) => {
205
+ if (options.list || options.json) {
206
+ await listFilteredSkills(query, options);
207
+ }
208
+ else {
209
+ await storeSearchCommand(options);
210
+ }
211
+ });
174
212
  storeCmd
175
213
  .command('sync')
176
214
  .description('Refresh remote manifests and sync local registry')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Compact command - v5.1.0
3
+ *
4
+ * CLI command for intelligent session compaction.
5
+ * Can be called directly or from pre-compact hook.
6
+ */
7
+ /**
8
+ * Compact command options
9
+ */
10
+ interface CompactOptions {
11
+ intelligent?: boolean;
12
+ dryRun?: boolean;
13
+ json?: boolean;
14
+ threshold?: number;
15
+ maxNotes?: number;
16
+ maxChanges?: number;
17
+ maxProgress?: number;
18
+ maxBlockers?: number;
19
+ preserveDecisions?: boolean;
20
+ archive?: boolean;
21
+ }
22
+ /**
23
+ * Run intelligent session compaction
24
+ */
25
+ export declare function compactCommand(options?: CompactOptions): Promise<void>;
26
+ /**
27
+ * Check compaction status (used by hooks to decide whether to call compact)
28
+ */
29
+ export declare function compactStatusCommand(options?: {
30
+ json?: boolean;
31
+ threshold?: number;
32
+ }): Promise<void>;
33
+ export {};
34
+ //# sourceMappingURL=compact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/commands/compact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH;;GAEG;AACH,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFhF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B9G"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Compact command - v5.1.0
3
+ *
4
+ * CLI command for intelligent session compaction.
5
+ * Can be called directly or from pre-compact hook.
6
+ */
7
+ import chalk from 'chalk';
8
+ import { join } from 'path';
9
+ import { FileSystem } from '../utils/file-system.js';
10
+ import { DINO_DIR_NAME } from '../core/config.js';
11
+ import { compactSession, needsCompaction, getCompactionStats, } from '../core/intelligence/index.js';
12
+ /**
13
+ * Run intelligent session compaction
14
+ */
15
+ export async function compactCommand(options = {}) {
16
+ const dinoDir = join(process.cwd(), DINO_DIR_NAME);
17
+ if (!(await FileSystem.exists(dinoDir))) {
18
+ if (!options.json) {
19
+ console.error(chalk.red('No .dino directory found. Run "dino init" first.'));
20
+ }
21
+ else {
22
+ console.log(JSON.stringify({ error: 'No .dino directory found' }));
23
+ }
24
+ process.exit(1);
25
+ }
26
+ // Check if compaction is needed
27
+ const threshold = options.threshold ?? 500;
28
+ const shouldCompact = await needsCompaction(process.cwd(), threshold);
29
+ if (!shouldCompact && !options.dryRun) {
30
+ if (options.json) {
31
+ console.log(JSON.stringify({ status: 'skipped', reason: 'below_threshold' }));
32
+ }
33
+ else {
34
+ console.log(chalk.dim('[dino] Session size below threshold, no compaction needed'));
35
+ }
36
+ return;
37
+ }
38
+ // Dry run - just show stats
39
+ if (options.dryRun) {
40
+ const stats = await getCompactionStats(process.cwd());
41
+ if (options.json) {
42
+ console.log(JSON.stringify({
43
+ status: 'dry_run',
44
+ ...stats,
45
+ }));
46
+ }
47
+ else {
48
+ console.log(chalk.bold('\nCompaction Preview\n'));
49
+ console.log(`Current tokens: ${chalk.yellow(stats.currentTokens)}`);
50
+ console.log(`Estimated after compaction: ${chalk.green(stats.estimatedAfterCompaction)}`);
51
+ console.log(`Estimated reduction: ${chalk.cyan(Math.round((1 - stats.estimatedAfterCompaction / stats.currentTokens) * 100))}%`);
52
+ console.log('');
53
+ console.log(`Architectural decisions to preserve: ${chalk.blue(stats.architecturalDecisions)}`);
54
+ console.log(`Active blockers: ${chalk.yellow(stats.blockers)}`);
55
+ console.log(`Progress signals: ${chalk.dim(stats.progressSignals)}`);
56
+ console.log('');
57
+ console.log(chalk.dim('Run without --dry-run to compact.'));
58
+ }
59
+ return;
60
+ }
61
+ // Perform intelligent compaction
62
+ const result = await compactSession(process.cwd(), {
63
+ maxNotes: options.maxNotes ?? 3,
64
+ maxChanges: options.maxChanges ?? 5,
65
+ maxProgress: options.maxProgress ?? 5,
66
+ maxBlockers: options.maxBlockers ?? 3,
67
+ preserveDecisions: options.preserveDecisions ?? true,
68
+ archive: options.archive ?? true,
69
+ });
70
+ if (options.json) {
71
+ console.log(JSON.stringify({
72
+ status: 'compacted',
73
+ ...result,
74
+ }));
75
+ }
76
+ else {
77
+ console.log(chalk.green('[dino] Session compacted'));
78
+ console.log(chalk.dim(` Tokens: ${result.originalTokens} -> ${result.compactedTokens} (${result.reductionPercent}% reduction)`));
79
+ if (result.preservedDecisions.length > 0) {
80
+ console.log(chalk.dim(` Preserved ${result.preservedDecisions.length} architectural decision(s)`));
81
+ }
82
+ if (result.archivedItems > 0) {
83
+ console.log(chalk.dim(` Archived ${result.archivedItems} item(s)`));
84
+ }
85
+ if (result.deduplicatedBlockers > 0) {
86
+ console.log(chalk.dim(` Deduplicated ${result.deduplicatedBlockers} blocker(s)`));
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * Check compaction status (used by hooks to decide whether to call compact)
92
+ */
93
+ export async function compactStatusCommand(options = {}) {
94
+ const dinoDir = join(process.cwd(), DINO_DIR_NAME);
95
+ if (!(await FileSystem.exists(dinoDir))) {
96
+ if (options.json) {
97
+ console.log(JSON.stringify({ exists: false }));
98
+ }
99
+ return;
100
+ }
101
+ const threshold = options.threshold ?? 500;
102
+ const stats = await getCompactionStats(process.cwd());
103
+ const needsCompact = stats.currentTokens > threshold;
104
+ if (options.json) {
105
+ console.log(JSON.stringify({
106
+ needsCompaction: needsCompact,
107
+ threshold,
108
+ ...stats,
109
+ }));
110
+ }
111
+ else {
112
+ if (needsCompact) {
113
+ console.log(chalk.yellow(`[dino] Session needs compaction (${stats.currentTokens} tokens > ${threshold} threshold)`));
114
+ }
115
+ else {
116
+ console.log(chalk.dim(`[dino] Session OK (${stats.currentTokens} tokens)`));
117
+ }
118
+ }
119
+ }
120
+ //# sourceMappingURL=compact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/commands/compact.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,5 @@ export { storeListCommand, type ListOptions } from './list.js';
7
7
  export { storeInstallCommand, type InstallOptions } from './install.js';
8
8
  export { storeRemoveCommand, type RemoveOptions } from './remove.js';
9
9
  export { storeSyncCommand } from './sync.js';
10
+ export { storeSearchCommand, listFilteredSkills, type SearchOptions } from './search.js';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/store/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/store/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -7,4 +7,5 @@ export { storeListCommand } from './list.js';
7
7
  export { storeInstallCommand } from './install.js';
8
8
  export { storeRemoveCommand } from './remove.js';
9
9
  export { storeSyncCommand } from './sync.js';
10
+ export { storeSearchCommand, listFilteredSkills } from './search.js';
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/store/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAoB,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAuB,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAsB,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/store/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAoB,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAuB,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAsB,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAsB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Store Search Command - v1.0.0
3
+ *
4
+ * Interactive skill search and installation.
5
+ * Provides fuzzy search, filtering, and one-click install.
6
+ */
7
+ export interface SearchOptions {
8
+ global?: boolean;
9
+ json?: boolean;
10
+ }
11
+ /**
12
+ * Interactive skill search and selection
13
+ */
14
+ export declare function storeSearchCommand(options?: SearchOptions): Promise<void>;
15
+ /**
16
+ * List all skills with filtering (non-interactive mode)
17
+ */
18
+ export declare function listFilteredSkills(query?: string, options?: SearchOptions): Promise<void>;
19
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/store/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAyCD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuJnF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA8Df"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Store Search Command - v1.0.0
3
+ *
4
+ * Interactive skill search and installation.
5
+ * Provides fuzzy search, filtering, and one-click install.
6
+ */
7
+ import chalk from 'chalk';
8
+ import { search, select, confirm } from '@inquirer/prompts';
9
+ import ora from 'ora';
10
+ import { getAllRemoteSkills, getDefaultSource, installSkill, hasGitHubAuth, isSkillInstalled, } from '../../store/index.js';
11
+ /**
12
+ * Fuzzy match a query against a skill
13
+ */
14
+ function matchesQuery(skill, query) {
15
+ const lowerQuery = query.toLowerCase();
16
+ const searchTargets = [
17
+ skill.name.toLowerCase(),
18
+ skill.description.toLowerCase(),
19
+ ...skill.tags.map((t) => t.toLowerCase()),
20
+ ];
21
+ return searchTargets.some((target) => target.includes(lowerQuery));
22
+ }
23
+ /**
24
+ * Format skill for display
25
+ */
26
+ function formatSkillDisplay(skill, installed) {
27
+ const status = installed ? chalk.green(' ✓') : '';
28
+ const name = chalk.cyan(skill.name);
29
+ const version = chalk.dim(`v${skill.version}`);
30
+ const tags = skill.tags.length > 0 ? chalk.yellow(` [${skill.tags.join(', ')}]`) : '';
31
+ return `${name} ${version}${tags}${status}`;
32
+ }
33
+ /**
34
+ * Format skill description
35
+ */
36
+ function formatSkillDescription(skill) {
37
+ return chalk.dim(skill.description);
38
+ }
39
+ /**
40
+ * Interactive skill search and selection
41
+ */
42
+ export async function storeSearchCommand(options = {}) {
43
+ console.log('');
44
+ // Check authentication status
45
+ const hasAuth = hasGitHubAuth();
46
+ if (!hasAuth) {
47
+ console.log(chalk.yellow(' ⚠ No GitHub token found. Private repos may not be accessible.'));
48
+ console.log(chalk.dim(' Set GITHUB_TOKEN or GH_TOKEN environment variable for private repos.\n'));
49
+ }
50
+ // Fetch skills with spinner
51
+ const fetchSpinner = ora('Fetching available skills...').start();
52
+ let skills;
53
+ let source;
54
+ try {
55
+ source = await getDefaultSource();
56
+ skills = await getAllRemoteSkills(false); // Force refresh, don't use cache
57
+ fetchSpinner.succeed(chalk.dim(`Found ${skills.length} skills from ${source.repo}`));
58
+ }
59
+ catch (error) {
60
+ fetchSpinner.fail(chalk.red('Failed to fetch skills'));
61
+ console.log(chalk.dim(` Error: ${error instanceof Error ? error.message : String(error)}\n`));
62
+ return;
63
+ }
64
+ if (skills.length === 0) {
65
+ console.log(chalk.dim('\n No skills available in the store.\n'));
66
+ return;
67
+ }
68
+ // Check installed status for each skill
69
+ const installedMap = new Map();
70
+ for (const skill of skills) {
71
+ const installedLocal = await isSkillInstalled(skill.name, 'local');
72
+ const installedGlobal = await isSkillInstalled(skill.name, 'global');
73
+ installedMap.set(skill.name, installedLocal || installedGlobal);
74
+ }
75
+ console.log('');
76
+ console.log(chalk.bold(' 🔍 Skill Store Search'));
77
+ console.log(chalk.dim(' Type to search by name, description, or tags'));
78
+ console.log(chalk.dim(' Use arrow keys to navigate, Enter to select\n'));
79
+ try {
80
+ // Interactive search with filtering
81
+ const selectedSkill = await search({
82
+ message: 'Search skills',
83
+ source: async (input) => {
84
+ const query = input?.trim() || '';
85
+ // Filter skills based on query
86
+ const filteredSkills = query
87
+ ? skills.filter((skill) => matchesQuery(skill, query))
88
+ : skills;
89
+ // Convert to choices
90
+ return filteredSkills.map((skill) => ({
91
+ name: formatSkillDisplay(skill, installedMap.get(skill.name) || false),
92
+ value: skill,
93
+ description: formatSkillDescription(skill),
94
+ }));
95
+ },
96
+ });
97
+ if (!selectedSkill) {
98
+ console.log(chalk.dim('\n No skill selected.\n'));
99
+ return;
100
+ }
101
+ // Show skill details
102
+ console.log('');
103
+ console.log(chalk.bold(` 📦 ${selectedSkill.name}`));
104
+ console.log(chalk.dim(` ${selectedSkill.description}`));
105
+ console.log(chalk.dim(` Version: ${selectedSkill.version}`));
106
+ if (selectedSkill.tags.length > 0) {
107
+ console.log(chalk.dim(` Tags: ${selectedSkill.tags.join(', ')}`));
108
+ }
109
+ console.log('');
110
+ // Check if already installed
111
+ const isInstalledLocal = await isSkillInstalled(selectedSkill.name, 'local');
112
+ const isInstalledGlobal = await isSkillInstalled(selectedSkill.name, 'global');
113
+ if (isInstalledLocal || isInstalledGlobal) {
114
+ const installedScope = isInstalledLocal ? 'local' : 'global';
115
+ console.log(chalk.green(` ✓ Already installed (${installedScope})`));
116
+ const reinstall = await confirm({
117
+ message: 'Reinstall this skill?',
118
+ default: false,
119
+ });
120
+ if (!reinstall) {
121
+ console.log('');
122
+ return;
123
+ }
124
+ }
125
+ // Ask for installation scope
126
+ const scope = await select({
127
+ message: 'Install location',
128
+ choices: [
129
+ {
130
+ name: 'Local (project)',
131
+ value: 'local',
132
+ description: 'Install to .claude/skills/ in current project',
133
+ },
134
+ {
135
+ name: 'Global (user)',
136
+ value: 'global',
137
+ description: 'Install to ~/.claude/skills/ for all projects',
138
+ },
139
+ ],
140
+ default: options.global ? 'global' : 'local',
141
+ });
142
+ // Install the skill
143
+ const isGlobal = scope === 'global';
144
+ const installSpinner = ora(`Installing ${selectedSkill.name}...`).start();
145
+ try {
146
+ const result = await installSkill(selectedSkill.name, undefined, true, // force reinstall if already installed
147
+ isGlobal);
148
+ if (result.success) {
149
+ installSpinner.succeed(chalk.green(result.message));
150
+ console.log('');
151
+ console.log(chalk.dim(` Version: ${result.version}`));
152
+ console.log(chalk.dim(` Scope: ${result.scope}`));
153
+ console.log('');
154
+ console.log(chalk.dim(` Use /${selectedSkill.name} to invoke this skill.\n`));
155
+ }
156
+ else {
157
+ installSpinner.fail(chalk.red(result.message ?? 'Installation failed'));
158
+ }
159
+ }
160
+ catch (error) {
161
+ installSpinner.fail(chalk.red('Installation failed'));
162
+ console.log(chalk.dim(` Error: ${error instanceof Error ? error.message : String(error)}\n`));
163
+ }
164
+ }
165
+ catch (error) {
166
+ // Handle user cancellation (Ctrl+C)
167
+ if (error instanceof Error && error.message.includes('User force closed')) {
168
+ console.log(chalk.dim('\n Search cancelled.\n'));
169
+ return;
170
+ }
171
+ throw error;
172
+ }
173
+ }
174
+ /**
175
+ * List all skills with filtering (non-interactive mode)
176
+ */
177
+ export async function listFilteredSkills(query, options = {}) {
178
+ console.log('');
179
+ const fetchSpinner = ora('Fetching available skills...').start();
180
+ let skills;
181
+ let source;
182
+ try {
183
+ source = await getDefaultSource();
184
+ skills = await getAllRemoteSkills(false);
185
+ fetchSpinner.succeed(chalk.dim(`Found ${skills.length} skills from ${source.repo}`));
186
+ }
187
+ catch (error) {
188
+ fetchSpinner.fail(chalk.red('Failed to fetch skills'));
189
+ console.log(chalk.dim(` Error: ${error instanceof Error ? error.message : String(error)}\n`));
190
+ return;
191
+ }
192
+ // Filter by query if provided
193
+ const filteredSkills = query
194
+ ? skills.filter((skill) => matchesQuery(skill, query))
195
+ : skills;
196
+ if (options.json) {
197
+ console.log(JSON.stringify(filteredSkills, null, 2));
198
+ return;
199
+ }
200
+ console.log('');
201
+ if (query) {
202
+ console.log(chalk.bold(` Search Results for "${query}"\n`));
203
+ }
204
+ else {
205
+ console.log(chalk.bold(' Available Skills\n'));
206
+ }
207
+ if (filteredSkills.length === 0) {
208
+ console.log(chalk.dim(' No skills match your search.\n'));
209
+ return;
210
+ }
211
+ // Table header
212
+ console.log(chalk.dim(' ') +
213
+ chalk.bold('Name'.padEnd(25)) +
214
+ chalk.bold('Version'.padEnd(12)) +
215
+ chalk.bold('Tags'.padEnd(20)) +
216
+ chalk.bold('Description'));
217
+ console.log(chalk.dim(' ' + '-'.repeat(80)));
218
+ for (const skill of filteredSkills) {
219
+ const name = skill.name.padEnd(25);
220
+ const version = skill.version.padEnd(12);
221
+ const tags = (skill.tags.slice(0, 2).join(', ') || '-').padEnd(20);
222
+ const desc = skill.description.slice(0, 30) + (skill.description.length > 30 ? '...' : '');
223
+ console.log(` ${chalk.cyan(name)}${chalk.dim(version)}${chalk.yellow(tags)}${desc}`);
224
+ }
225
+ console.log('');
226
+ console.log(chalk.dim(` ${filteredSkills.length} skill(s) found\n`));
227
+ console.log(chalk.dim(' Use "dino store search" for interactive search and install.\n'));
228
+ }
229
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/store/search.ts"],"names":[],"mappings":"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"}