@speclife/core 0.9.2 → 0.10.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 (77) hide show
  1. package/dist/completions/bash-generator.d.ts +13 -0
  2. package/dist/completions/bash-generator.d.ts.map +1 -0
  3. package/dist/completions/bash-generator.js +148 -0
  4. package/dist/completions/bash-generator.js.map +1 -0
  5. package/dist/completions/commands.d.ts +14 -0
  6. package/dist/completions/commands.d.ts.map +1 -0
  7. package/dist/completions/commands.js +114 -0
  8. package/dist/completions/commands.js.map +1 -0
  9. package/dist/completions/fish-generator.d.ts +15 -0
  10. package/dist/completions/fish-generator.d.ts.map +1 -0
  11. package/dist/completions/fish-generator.js +152 -0
  12. package/dist/completions/fish-generator.js.map +1 -0
  13. package/dist/completions/index.d.ts +34 -0
  14. package/dist/completions/index.d.ts.map +1 -0
  15. package/dist/completions/index.js +52 -0
  16. package/dist/completions/index.js.map +1 -0
  17. package/dist/completions/types.d.ts +61 -0
  18. package/dist/completions/types.d.ts.map +1 -0
  19. package/dist/completions/types.js +5 -0
  20. package/dist/completions/types.js.map +1 -0
  21. package/dist/completions/zsh-generator.d.ts +16 -0
  22. package/dist/completions/zsh-generator.d.ts.map +1 -0
  23. package/dist/completions/zsh-generator.js +199 -0
  24. package/dist/completions/zsh-generator.js.map +1 -0
  25. package/dist/configurators/base.d.ts +67 -0
  26. package/dist/configurators/base.d.ts.map +1 -0
  27. package/dist/configurators/base.js +18 -0
  28. package/dist/configurators/base.js.map +1 -0
  29. package/dist/configurators/claude-code.d.ts +16 -0
  30. package/dist/configurators/claude-code.d.ts.map +1 -0
  31. package/dist/configurators/claude-code.js +91 -0
  32. package/dist/configurators/claude-code.js.map +1 -0
  33. package/dist/configurators/cursor.d.ts +17 -0
  34. package/dist/configurators/cursor.d.ts.map +1 -0
  35. package/dist/configurators/cursor.js +140 -0
  36. package/dist/configurators/cursor.js.map +1 -0
  37. package/dist/configurators/detector.d.ts +36 -0
  38. package/dist/configurators/detector.d.ts.map +1 -0
  39. package/dist/configurators/detector.js +131 -0
  40. package/dist/configurators/detector.js.map +1 -0
  41. package/dist/configurators/index.d.ts +17 -0
  42. package/dist/configurators/index.d.ts.map +1 -0
  43. package/dist/configurators/index.js +34 -0
  44. package/dist/configurators/index.js.map +1 -0
  45. package/dist/configurators/registry.d.ts +55 -0
  46. package/dist/configurators/registry.d.ts.map +1 -0
  47. package/dist/configurators/registry.js +82 -0
  48. package/dist/configurators/registry.js.map +1 -0
  49. package/dist/configurators/vscode.d.ts +18 -0
  50. package/dist/configurators/vscode.d.ts.map +1 -0
  51. package/dist/configurators/vscode.js +142 -0
  52. package/dist/configurators/vscode.js.map +1 -0
  53. package/dist/configurators/windsurf.d.ts +17 -0
  54. package/dist/configurators/windsurf.d.ts.map +1 -0
  55. package/dist/configurators/windsurf.js +89 -0
  56. package/dist/configurators/windsurf.js.map +1 -0
  57. package/dist/global-config.d.ts +76 -0
  58. package/dist/global-config.d.ts.map +1 -0
  59. package/dist/global-config.js +212 -0
  60. package/dist/global-config.js.map +1 -0
  61. package/dist/index.d.ts +3 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +6 -0
  64. package/dist/index.js.map +1 -1
  65. package/dist/utils/index.d.ts +2 -0
  66. package/dist/utils/index.d.ts.map +1 -1
  67. package/dist/utils/index.js +2 -0
  68. package/dist/utils/index.js.map +1 -1
  69. package/dist/utils/progress.d.ts +77 -0
  70. package/dist/utils/progress.d.ts.map +1 -0
  71. package/dist/utils/progress.js +83 -0
  72. package/dist/utils/progress.js.map +1 -0
  73. package/dist/utils/task-progress.d.ts +72 -0
  74. package/dist/utils/task-progress.d.ts.map +1 -0
  75. package/dist/utils/task-progress.js +165 -0
  76. package/dist/utils/task-progress.js.map +1 -0
  77. package/package.json +1 -1
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Bash completion script generator
3
+ */
4
+ import type { CompletionGenerator, CommandDef } from './types.js';
5
+ export declare class BashGenerator implements CompletionGenerator {
6
+ readonly shell: "bash";
7
+ generate(commands: CommandDef[]): string;
8
+ getInstallInstructions(): string;
9
+ private generateCommandCase;
10
+ private generateArgCompletion;
11
+ private generateValueCompletion;
12
+ }
13
+ //# sourceMappingURL=bash-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash-generator.d.ts","sourceRoot":"","sources":["../../src/completions/bash-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAC;AAGrF,qBAAa,aAAc,YAAW,mBAAmB;IACvD,QAAQ,CAAC,KAAK,EAAG,MAAM,CAAU;IAEjC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM;IAgDxC,sBAAsB,IAAI,MAAM;IAShC,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,qBAAqB;IAiD7B,OAAO,CAAC,uBAAuB;CAiBhC"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Bash completion script generator
3
+ */
4
+ import { getConfigKeys } from './commands.js';
5
+ export class BashGenerator {
6
+ shell = 'bash';
7
+ generate(commands) {
8
+ const lines = [
9
+ '# Bash completion for speclife',
10
+ '# Generated by speclife completion bash',
11
+ '',
12
+ '_speclife_complete_change_id() {',
13
+ ' local changes',
14
+ ' changes=$(speclife list --json 2>/dev/null | grep -o \'"id":"[^"]*"\' | cut -d\'"\' -f4)',
15
+ ' COMPREPLY=($(compgen -W "$changes" -- "${COMP_WORDS[COMP_CWORD]}"))',
16
+ '}',
17
+ '',
18
+ '_speclife_complete_config_key() {',
19
+ ` local keys="${getConfigKeys().join(' ')}"`,
20
+ ' COMPREPLY=($(compgen -W "$keys" -- "${COMP_WORDS[COMP_CWORD]}"))',
21
+ '}',
22
+ '',
23
+ '_speclife() {',
24
+ ' local cur prev words cword',
25
+ ' _init_completion || return',
26
+ '',
27
+ ' local commands="' + commands.map(c => c.name).join(' ') + '"',
28
+ '',
29
+ ' # Handle first argument (main command)',
30
+ ' if [[ $cword -eq 1 ]]; then',
31
+ ' COMPREPLY=($(compgen -W "$commands" -- "$cur"))',
32
+ ' return',
33
+ ' fi',
34
+ '',
35
+ ' local cmd="${words[1]}"',
36
+ '',
37
+ ];
38
+ // Generate case for each command
39
+ lines.push(' case "$cmd" in');
40
+ for (const cmd of commands) {
41
+ lines.push(...this.generateCommandCase(cmd));
42
+ }
43
+ lines.push(' esac');
44
+ lines.push('}');
45
+ lines.push('');
46
+ lines.push('complete -F _speclife speclife');
47
+ lines.push('');
48
+ return lines.join('\n');
49
+ }
50
+ getInstallInstructions() {
51
+ return `# Add to your ~/.bashrc or ~/.bash_profile:
52
+ speclife completion bash >> ~/.bashrc
53
+ source ~/.bashrc
54
+
55
+ # Or install system-wide (requires sudo):
56
+ speclife completion bash | sudo tee /etc/bash_completion.d/speclife`;
57
+ }
58
+ generateCommandCase(cmd) {
59
+ const lines = [];
60
+ lines.push(` ${cmd.name})`);
61
+ if (cmd.subcommands && cmd.subcommands.length > 0) {
62
+ lines.push(' if [[ $cword -eq 2 ]]; then');
63
+ lines.push(` COMPREPLY=($(compgen -W "${cmd.subcommands.map(s => s.name).join(' ')}" -- "$cur"))`);
64
+ lines.push(' return');
65
+ lines.push(' fi');
66
+ lines.push(' local subcmd="${words[2]}"');
67
+ lines.push(' case "$subcmd" in');
68
+ for (const sub of cmd.subcommands) {
69
+ lines.push(` ${sub.name})`);
70
+ lines.push(...this.generateArgCompletion(sub.args ?? [], sub.options ?? [], 6));
71
+ lines.push(' ;;');
72
+ }
73
+ lines.push(' esac');
74
+ }
75
+ else {
76
+ lines.push(...this.generateArgCompletion(cmd.args ?? [], cmd.options ?? [], 4));
77
+ }
78
+ lines.push(' ;;');
79
+ return lines;
80
+ }
81
+ generateArgCompletion(args, options, indent) {
82
+ const pad = ' '.repeat(indent);
83
+ const lines = [];
84
+ // Collect all options
85
+ const optionWords = options.flatMap(o => [o.short, o.long].filter(Boolean)).join(' ');
86
+ // Handle option completions
87
+ if (options.length > 0) {
88
+ lines.push(`${pad}case "$prev" in`);
89
+ for (const opt of options.filter(o => o.takesValue)) {
90
+ const pattern = [opt.short, opt.long].filter(Boolean).join('|');
91
+ lines.push(`${pad} ${pattern})`);
92
+ lines.push(...this.generateValueCompletion(opt, indent + 4));
93
+ lines.push(`${pad} return`);
94
+ lines.push(`${pad} ;;`);
95
+ }
96
+ lines.push(`${pad}esac`);
97
+ }
98
+ // If current word starts with -, complete options
99
+ lines.push(`${pad}if [[ "$cur" == -* ]]; then`);
100
+ lines.push(`${pad} COMPREPLY=($(compgen -W "${optionWords}" -- "$cur"))`);
101
+ lines.push(`${pad} return`);
102
+ lines.push(`${pad}fi`);
103
+ // Otherwise complete positional args
104
+ for (const arg of args) {
105
+ if (arg.completion === 'change-id') {
106
+ lines.push(`${pad}_speclife_complete_change_id`);
107
+ break;
108
+ }
109
+ else if (arg.completion === 'config-key') {
110
+ lines.push(`${pad}_speclife_complete_config_key`);
111
+ break;
112
+ }
113
+ else if (arg.completion === 'static' && arg.staticValues) {
114
+ lines.push(`${pad}COMPREPLY=($(compgen -W "${arg.staticValues.join(' ')}" -- "$cur"))`);
115
+ break;
116
+ }
117
+ else if (arg.completion === 'file') {
118
+ lines.push(`${pad}COMPREPLY=($(compgen -f -- "$cur"))`);
119
+ break;
120
+ }
121
+ else if (arg.completion === 'directory') {
122
+ lines.push(`${pad}COMPREPLY=($(compgen -d -- "$cur"))`);
123
+ break;
124
+ }
125
+ }
126
+ return lines;
127
+ }
128
+ generateValueCompletion(opt, indent) {
129
+ const pad = ' '.repeat(indent);
130
+ if (opt.valueCompletion === 'static' && opt.staticValues) {
131
+ return [`${pad}COMPREPLY=($(compgen -W "${opt.staticValues.join(' ')}" -- "$cur"))`];
132
+ }
133
+ else if (opt.valueCompletion === 'change-id') {
134
+ return [`${pad}_speclife_complete_change_id`];
135
+ }
136
+ else if (opt.valueCompletion === 'config-key') {
137
+ return [`${pad}_speclife_complete_config_key`];
138
+ }
139
+ else if (opt.valueCompletion === 'file') {
140
+ return [`${pad}COMPREPLY=($(compgen -f -- "$cur"))`];
141
+ }
142
+ else if (opt.valueCompletion === 'directory') {
143
+ return [`${pad}COMPREPLY=($(compgen -d -- "$cur"))`];
144
+ }
145
+ return [];
146
+ }
147
+ }
148
+ //# sourceMappingURL=bash-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash-generator.js","sourceRoot":"","sources":["../../src/completions/bash-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Command definitions for completion generation
3
+ */
4
+ import type { CommandDef } from './types.js';
5
+ /**
6
+ * Get all speclife command definitions
7
+ * Used to generate shell completions
8
+ */
9
+ export declare function getCommandDefinitions(): CommandDef[];
10
+ /**
11
+ * Get config keys for completion
12
+ */
13
+ export declare function getConfigKeys(): string[];
14
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/completions/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,UAAU,EAAE,CA4FpD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CASxC"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Command definitions for completion generation
3
+ */
4
+ /**
5
+ * Get all speclife command definitions
6
+ * Used to generate shell completions
7
+ */
8
+ export function getCommandDefinitions() {
9
+ return [
10
+ {
11
+ name: 'init',
12
+ options: [
13
+ { long: '--force', short: '-f', description: 'Overwrite existing configuration' },
14
+ { long: '--tools', description: 'Tools to configure (comma-separated)', takesValue: true, valueCompletion: 'static', staticValues: ['cursor', 'claude-code', 'vscode', 'windsurf'] },
15
+ { long: '--no-interactive', description: 'Run without prompts' },
16
+ { long: '--yes', short: '-y', description: 'Accept all defaults' },
17
+ ],
18
+ },
19
+ {
20
+ name: 'worktree',
21
+ subcommands: [
22
+ {
23
+ name: 'create',
24
+ args: [{ name: 'change-id', completion: 'none' }],
25
+ options: [
26
+ { long: '--skip-bootstrap', description: 'Skip environment bootstrapping' },
27
+ ],
28
+ },
29
+ {
30
+ name: 'rm',
31
+ args: [{ name: 'change-id', completion: 'change-id' }],
32
+ options: [
33
+ { long: '--force', short: '-f', description: 'Force removal' },
34
+ ],
35
+ },
36
+ {
37
+ name: 'list',
38
+ options: [
39
+ { long: '--json', description: 'Output as JSON' },
40
+ ],
41
+ },
42
+ ],
43
+ },
44
+ {
45
+ name: 'status',
46
+ args: [{ name: 'change-id', completion: 'change-id', optional: true }],
47
+ options: [
48
+ { long: '--json', description: 'Output as JSON' },
49
+ ],
50
+ },
51
+ {
52
+ name: 'list',
53
+ options: [
54
+ { long: '--json', description: 'Output as JSON' },
55
+ { long: '--compact', description: 'Compact output' },
56
+ { long: '--sort', description: 'Sort order', takesValue: true, valueCompletion: 'static', staticValues: ['activity', 'progress', 'name'] },
57
+ { long: '--status', description: 'Filter by status', takesValue: true, valueCompletion: 'static', staticValues: ['draft', 'ready', 'merged', 'closed', 'local'] },
58
+ ],
59
+ },
60
+ {
61
+ name: 'view',
62
+ options: [
63
+ { long: '--json', description: 'Output as JSON' },
64
+ ],
65
+ },
66
+ {
67
+ name: 'completion',
68
+ args: [{ name: 'shell', completion: 'static', staticValues: ['bash', 'zsh', 'fish'] }],
69
+ },
70
+ {
71
+ name: 'config',
72
+ subcommands: [
73
+ { name: 'path' },
74
+ { name: 'list', options: [{ long: '--json', description: 'Output as JSON' }] },
75
+ { name: 'get', args: [{ name: 'key', completion: 'config-key' }] },
76
+ { name: 'set', args: [{ name: 'key', completion: 'config-key' }, { name: 'value', completion: 'none' }] },
77
+ { name: 'unset', args: [{ name: 'key', completion: 'config-key' }] },
78
+ { name: 'reset' },
79
+ { name: 'edit' },
80
+ ],
81
+ },
82
+ {
83
+ name: 'validate',
84
+ args: [{ name: 'change-id', completion: 'change-id', optional: true }],
85
+ options: [
86
+ { long: '--json', description: 'Output as JSON' },
87
+ { long: '--strict', description: 'Fail on warnings' },
88
+ ],
89
+ },
90
+ {
91
+ name: 'update',
92
+ options: [
93
+ { long: '--force', short: '-f', description: 'Overwrite customizations' },
94
+ ],
95
+ },
96
+ {
97
+ name: 'version',
98
+ },
99
+ ];
100
+ }
101
+ /**
102
+ * Get config keys for completion
103
+ */
104
+ export function getConfigKeys() {
105
+ return [
106
+ 'aiProvider',
107
+ 'aiModel',
108
+ 'defaultEditor',
109
+ 'preferences.colors',
110
+ 'preferences.spinners',
111
+ 'preferences.outputFormat',
112
+ ];
113
+ }
114
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/completions/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Fish completion script generator
3
+ */
4
+ import type { CompletionGenerator, CommandDef } from './types.js';
5
+ export declare class FishGenerator implements CompletionGenerator {
6
+ readonly shell: "fish";
7
+ generate(commands: CommandDef[]): string;
8
+ getInstallInstructions(): string;
9
+ private getCommandDescription;
10
+ private generateCommandCompletions;
11
+ private getSubcommandDescription;
12
+ private generateOptions;
13
+ private generateArgs;
14
+ }
15
+ //# sourceMappingURL=fish-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fish-generator.d.ts","sourceRoot":"","sources":["../../src/completions/fish-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAG7E,qBAAa,aAAc,YAAW,mBAAmB;IACvD,QAAQ,CAAC,KAAK,EAAG,MAAM,CAAU;IAEjC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM;IAoCxC,sBAAsB,IAAI,MAAM;IAShC,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,0BAA0B;IA0BlC,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,YAAY;CAmBrB"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Fish completion script generator
3
+ */
4
+ import { getConfigKeys } from './commands.js';
5
+ export class FishGenerator {
6
+ shell = 'fish';
7
+ generate(commands) {
8
+ const lines = [
9
+ '# Fish completion for speclife',
10
+ '# Generated by speclife completion fish',
11
+ '',
12
+ '# Disable file completion by default',
13
+ 'complete -c speclife -f',
14
+ '',
15
+ '# Helper functions',
16
+ 'function __speclife_change_ids',
17
+ ' speclife list --json 2>/dev/null | string match -r \'"id":"[^"]*"\' | string replace -r \'"id":"([^"]*)"\' \'$1\'',
18
+ 'end',
19
+ '',
20
+ 'function __speclife_config_keys',
21
+ ` echo "${getConfigKeys().join('\\n')}"`,
22
+ 'end',
23
+ '',
24
+ '# Main commands',
25
+ ];
26
+ for (const cmd of commands) {
27
+ const desc = this.getCommandDescription(cmd);
28
+ lines.push(`complete -c speclife -n "__fish_use_subcommand" -a "${cmd.name}" -d "${desc}"`);
29
+ }
30
+ lines.push('');
31
+ for (const cmd of commands) {
32
+ lines.push(`# ${cmd.name} subcommands and options`);
33
+ lines.push(...this.generateCommandCompletions(cmd));
34
+ lines.push('');
35
+ }
36
+ return lines.join('\n');
37
+ }
38
+ getInstallInstructions() {
39
+ return `# Save to Fish completions directory:
40
+ speclife completion fish > ~/.config/fish/completions/speclife.fish
41
+
42
+ # Or use mkdir if directory doesn't exist:
43
+ mkdir -p ~/.config/fish/completions
44
+ speclife completion fish > ~/.config/fish/completions/speclife.fish`;
45
+ }
46
+ getCommandDescription(cmd) {
47
+ const descriptions = {
48
+ init: 'Initialize SpecLife in this project',
49
+ worktree: 'Manage git worktrees',
50
+ status: 'Show change status',
51
+ list: 'List all changes',
52
+ view: 'Show dashboard view',
53
+ completion: 'Generate shell completions',
54
+ config: 'Manage configuration',
55
+ validate: 'Validate change spec',
56
+ update: 'Update managed files',
57
+ version: 'Show version',
58
+ };
59
+ return descriptions[cmd.name] ?? cmd.name;
60
+ }
61
+ generateCommandCompletions(cmd) {
62
+ const lines = [];
63
+ const condition = `__fish_seen_subcommand_from ${cmd.name}`;
64
+ if (cmd.subcommands && cmd.subcommands.length > 0) {
65
+ // Add subcommand completions
66
+ for (const sub of cmd.subcommands) {
67
+ const desc = this.getSubcommandDescription(cmd.name, sub.name);
68
+ lines.push(`complete -c speclife -n "${condition}; and not __fish_seen_subcommand_from ${cmd.subcommands.map(s => s.name).join(' ')}" -a "${sub.name}" -d "${desc}"`);
69
+ }
70
+ // Add options for each subcommand
71
+ for (const sub of cmd.subcommands) {
72
+ const subCondition = `${condition}; and __fish_seen_subcommand_from ${sub.name}`;
73
+ lines.push(...this.generateOptions(sub.options ?? [], subCondition));
74
+ lines.push(...this.generateArgs(sub, subCondition));
75
+ }
76
+ }
77
+ else {
78
+ // Add options for the command
79
+ lines.push(...this.generateOptions(cmd.options ?? [], condition));
80
+ lines.push(...this.generateArgs(cmd, condition));
81
+ }
82
+ return lines;
83
+ }
84
+ getSubcommandDescription(cmd, sub) {
85
+ const descriptions = {
86
+ worktree: {
87
+ create: 'Create a worktree for a change',
88
+ rm: 'Remove a worktree',
89
+ list: 'List all worktrees',
90
+ },
91
+ config: {
92
+ path: 'Show config file path',
93
+ list: 'List all config values',
94
+ get: 'Get a config value',
95
+ set: 'Set a config value',
96
+ unset: 'Remove a config value',
97
+ reset: 'Reset to defaults',
98
+ edit: 'Open config in editor',
99
+ },
100
+ };
101
+ return descriptions[cmd]?.[sub] ?? sub;
102
+ }
103
+ generateOptions(options, condition) {
104
+ const lines = [];
105
+ for (const opt of options) {
106
+ let completion = `complete -c speclife -n "${condition}"`;
107
+ if (opt.short) {
108
+ completion += ` -s ${opt.short.replace('-', '')}`;
109
+ }
110
+ if (opt.long) {
111
+ completion += ` -l ${opt.long.replace('--', '')}`;
112
+ }
113
+ completion += ` -d "${opt.description}"`;
114
+ if (opt.takesValue) {
115
+ completion += ' -r';
116
+ if (opt.valueCompletion === 'static' && opt.staticValues) {
117
+ completion += ` -a "${opt.staticValues.join(' ')}"`;
118
+ }
119
+ else if (opt.valueCompletion === 'change-id') {
120
+ completion += ' -a "(__speclife_change_ids)"';
121
+ }
122
+ else if (opt.valueCompletion === 'config-key') {
123
+ completion += ' -a "(__speclife_config_keys)"';
124
+ }
125
+ }
126
+ lines.push(completion);
127
+ }
128
+ return lines;
129
+ }
130
+ generateArgs(cmd, condition) {
131
+ const lines = [];
132
+ for (const arg of cmd.args ?? []) {
133
+ if (arg.completion === 'change-id') {
134
+ lines.push(`complete -c speclife -n "${condition}" -a "(__speclife_change_ids)"`);
135
+ }
136
+ else if (arg.completion === 'config-key') {
137
+ lines.push(`complete -c speclife -n "${condition}" -a "(__speclife_config_keys)"`);
138
+ }
139
+ else if (arg.completion === 'static' && arg.staticValues) {
140
+ lines.push(`complete -c speclife -n "${condition}" -a "${arg.staticValues.join(' ')}"`);
141
+ }
142
+ else if (arg.completion === 'file') {
143
+ lines.push(`complete -c speclife -n "${condition}" -F`);
144
+ }
145
+ else if (arg.completion === 'directory') {
146
+ lines.push(`complete -c speclife -n "${condition}" -a "(__fish_complete_directories)"`);
147
+ }
148
+ }
149
+ return lines;
150
+ }
151
+ }
152
+ //# sourceMappingURL=fish-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fish-generator.js","sourceRoot":"","sources":["../../src/completions/fish-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Shell completion system
3
+ * Generates completion scripts for bash, zsh, and fish
4
+ */
5
+ export type { Shell, CompletionType, CommandDef, OptionDef, ArgDef, CompletionGenerator } from './types.js';
6
+ export { getCommandDefinitions, getConfigKeys } from './commands.js';
7
+ export { BashGenerator } from './bash-generator.js';
8
+ export { ZshGenerator } from './zsh-generator.js';
9
+ export { FishGenerator } from './fish-generator.js';
10
+ import type { Shell, CompletionGenerator } from './types.js';
11
+ /**
12
+ * Get a completion generator for a shell
13
+ * @param shell Target shell
14
+ * @returns Completion generator
15
+ */
16
+ export declare function getGenerator(shell: Shell): CompletionGenerator;
17
+ /**
18
+ * Generate completion script for a shell
19
+ * @param shell Target shell
20
+ * @returns Shell script for completions
21
+ */
22
+ export declare function generateCompletions(shell: Shell): string;
23
+ /**
24
+ * Get installation instructions for a shell
25
+ * @param shell Target shell
26
+ * @returns Human-readable installation instructions
27
+ */
28
+ export declare function getInstallInstructions(shell: Shell): string;
29
+ /**
30
+ * Get list of supported shells
31
+ * @returns Array of shell names
32
+ */
33
+ export declare function getSupportedShells(): Shell[];
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/completions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE5G,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAa7D;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,mBAAmB,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAIxD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,KAAK,EAAE,CAE5C"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Shell completion system
3
+ * Generates completion scripts for bash, zsh, and fish
4
+ */
5
+ export { getCommandDefinitions, getConfigKeys } from './commands.js';
6
+ export { BashGenerator } from './bash-generator.js';
7
+ export { ZshGenerator } from './zsh-generator.js';
8
+ export { FishGenerator } from './fish-generator.js';
9
+ import { BashGenerator } from './bash-generator.js';
10
+ import { ZshGenerator } from './zsh-generator.js';
11
+ import { FishGenerator } from './fish-generator.js';
12
+ import { getCommandDefinitions } from './commands.js';
13
+ /** Map of shells to their generators */
14
+ const generators = {
15
+ bash: new BashGenerator(),
16
+ zsh: new ZshGenerator(),
17
+ fish: new FishGenerator(),
18
+ };
19
+ /**
20
+ * Get a completion generator for a shell
21
+ * @param shell Target shell
22
+ * @returns Completion generator
23
+ */
24
+ export function getGenerator(shell) {
25
+ return generators[shell];
26
+ }
27
+ /**
28
+ * Generate completion script for a shell
29
+ * @param shell Target shell
30
+ * @returns Shell script for completions
31
+ */
32
+ export function generateCompletions(shell) {
33
+ const generator = getGenerator(shell);
34
+ const commands = getCommandDefinitions();
35
+ return generator.generate(commands);
36
+ }
37
+ /**
38
+ * Get installation instructions for a shell
39
+ * @param shell Target shell
40
+ * @returns Human-readable installation instructions
41
+ */
42
+ export function getInstallInstructions(shell) {
43
+ return getGenerator(shell).getInstallInstructions();
44
+ }
45
+ /**
46
+ * Get list of supported shells
47
+ * @returns Array of shell names
48
+ */
49
+ export function getSupportedShells() {
50
+ return ['bash', 'zsh', 'fish'];
51
+ }
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/completions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,wCAAwC;AACxC,MAAM,UAAU,GAAuC;IACrD,IAAI,EAAE,IAAI,aAAa,EAAE;IACzB,GAAG,EAAE,IAAI,YAAY,EAAE;IACvB,IAAI,EAAE,IAAI,aAAa,EAAE;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAY;IACvC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAY;IAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACzC,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAY;IACjD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,sBAAsB,EAAE,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC"}