aliasmate 2.0.0 → 2.4.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 (96) hide show
  1. package/CHANGELOG.md +53 -3
  2. package/README.md +98 -10
  3. package/dist/cli/completion.js +4 -4
  4. package/dist/cli/completion.js.map +1 -1
  5. package/dist/cli/extras.d.ts +5 -0
  6. package/dist/cli/extras.d.ts.map +1 -0
  7. package/dist/cli/extras.js +73 -0
  8. package/dist/cli/extras.js.map +1 -0
  9. package/dist/cli/init.d.ts +2 -0
  10. package/dist/cli/init.d.ts.map +1 -0
  11. package/dist/cli/init.js +140 -0
  12. package/dist/cli/init.js.map +1 -0
  13. package/dist/cli/manage.d.ts +2 -3
  14. package/dist/cli/manage.d.ts.map +1 -1
  15. package/dist/cli/manage.js +47 -27
  16. package/dist/cli/manage.js.map +1 -1
  17. package/dist/cli/project.d.ts +2 -0
  18. package/dist/cli/project.d.ts.map +1 -0
  19. package/dist/cli/project.js +105 -0
  20. package/dist/cli/project.js.map +1 -0
  21. package/dist/cli/run.d.ts +2 -0
  22. package/dist/cli/run.d.ts.map +1 -1
  23. package/dist/cli/run.js +90 -16
  24. package/dist/cli/run.js.map +1 -1
  25. package/dist/cli/save.d.ts +7 -8
  26. package/dist/cli/save.d.ts.map +1 -1
  27. package/dist/cli/save.js +71 -33
  28. package/dist/cli/save.js.map +1 -1
  29. package/dist/cli/sync.d.ts +2 -0
  30. package/dist/cli/sync.d.ts.map +1 -0
  31. package/dist/cli/sync.js +122 -0
  32. package/dist/cli/sync.js.map +1 -0
  33. package/dist/cli/transfer.d.ts +1 -0
  34. package/dist/cli/transfer.d.ts.map +1 -1
  35. package/dist/cli/transfer.js +40 -59
  36. package/dist/cli/transfer.js.map +1 -1
  37. package/dist/core/clipboard.d.ts +3 -0
  38. package/dist/core/clipboard.d.ts.map +1 -0
  39. package/dist/core/clipboard.js +57 -0
  40. package/dist/core/clipboard.js.map +1 -0
  41. package/dist/core/commands.d.ts +8 -1
  42. package/dist/core/commands.d.ts.map +1 -1
  43. package/dist/core/commands.js +59 -4
  44. package/dist/core/commands.js.map +1 -1
  45. package/dist/core/project.d.ts +21 -0
  46. package/dist/core/project.d.ts.map +1 -0
  47. package/dist/core/project.js +130 -0
  48. package/dist/core/project.js.map +1 -0
  49. package/dist/core/recent.d.ts +6 -1
  50. package/dist/core/recent.d.ts.map +1 -1
  51. package/dist/core/recent.js +11 -2
  52. package/dist/core/recent.js.map +1 -1
  53. package/dist/core/runner.d.ts +22 -4
  54. package/dist/core/runner.d.ts.map +1 -1
  55. package/dist/core/runner.js +72 -8
  56. package/dist/core/runner.js.map +1 -1
  57. package/dist/core/suggest.d.ts +12 -0
  58. package/dist/core/suggest.d.ts.map +1 -0
  59. package/dist/core/suggest.js +109 -0
  60. package/dist/core/suggest.js.map +1 -0
  61. package/dist/core/transfer.d.ts +20 -0
  62. package/dist/core/transfer.d.ts.map +1 -0
  63. package/dist/core/transfer.js +115 -0
  64. package/dist/core/transfer.js.map +1 -0
  65. package/dist/core/types.d.ts +8 -0
  66. package/dist/core/types.d.ts.map +1 -1
  67. package/dist/core/undo.d.ts +7 -0
  68. package/dist/core/undo.d.ts.map +1 -0
  69. package/dist/core/undo.js +34 -0
  70. package/dist/core/undo.js.map +1 -0
  71. package/dist/index.js +53 -15
  72. package/dist/index.js.map +1 -1
  73. package/dist/ui/format.d.ts +6 -1
  74. package/dist/ui/format.d.ts.map +1 -1
  75. package/dist/ui/format.js +64 -18
  76. package/dist/ui/format.js.map +1 -1
  77. package/dist/ui/interactive.d.ts +63 -3
  78. package/dist/ui/interactive.d.ts.map +1 -1
  79. package/dist/ui/interactive.js +701 -95
  80. package/dist/ui/interactive.js.map +1 -1
  81. package/dist/ui/onboarding.d.ts.map +1 -1
  82. package/dist/ui/onboarding.js +27 -7
  83. package/dist/ui/onboarding.js.map +1 -1
  84. package/dist/ui/prompts.d.ts +1 -12
  85. package/dist/ui/prompts.d.ts.map +1 -1
  86. package/dist/ui/prompts.js +45 -91
  87. package/dist/ui/prompts.js.map +1 -1
  88. package/dist/ui/table.d.ts +18 -0
  89. package/dist/ui/table.d.ts.map +1 -0
  90. package/dist/ui/table.js +54 -0
  91. package/dist/ui/table.js.map +1 -0
  92. package/dist/ui/theme.d.ts +8 -6
  93. package/dist/ui/theme.d.ts.map +1 -1
  94. package/dist/ui/theme.js +33 -18
  95. package/dist/ui/theme.js.map +1 -1
  96. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/cli/save.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/cli/save.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,kCAIC;AAMD,kCAiCC;AAvDD,+CAAoE;AACpE,6CAAuE;AACvE,uCAA8C;AAE9C,SAAS,UAAU;IACjB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAA,YAAI,EAAC,6CAA6C,CAAC,CAAC;IACpD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sEAAsE;AAC/D,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC,UAAU,EAAE;QAAE,OAAO;IAC1B,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;IAC9D,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,WAAW,CAAC,IAAwB;IACxD,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,SAAS,GAAG,IAAA,8BAAmB,EAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAA,YAAI,EAAC,SAAS,CAAC,CAAC;YAChB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,wBAAc,GAAE,CAAC;IACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,IAAA,YAAI,EAAC,yDAAyD,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,KAAK,IAAA,8BAAoB,GAAE,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,yDAAyD;QACzD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAA,YAAI,EAAC,0EAA0E,CAAC,CAAC;YACjF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAA,sBAAW,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtE,IAAA,UAAE,EAAC,SAAS,aAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAK,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;IAC9D,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function syncHandler(direction: string, id?: string): void;
2
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"AA6EA,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAchE"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.syncHandler = syncHandler;
37
+ const child_process_1 = require("child_process");
38
+ const fs = __importStar(require("fs"));
39
+ const os = __importStar(require("os"));
40
+ const path = __importStar(require("path"));
41
+ const transfer_1 = require("../core/transfer");
42
+ const store_1 = require("../core/store");
43
+ const theme_1 = require("../ui/theme");
44
+ const GIST_KEY = 'sync_gist_id';
45
+ const GIST_FILE = 'aliasmate.json';
46
+ function gh(args, input) {
47
+ try {
48
+ return (0, child_process_1.execFileSync)('gh', args, {
49
+ encoding: 'utf8',
50
+ input,
51
+ stdio: ['pipe', 'pipe', 'pipe'],
52
+ }).trim();
53
+ }
54
+ catch (error) {
55
+ const stderr = error.stderr ?? '';
56
+ if (/command not found|ENOENT/.test(String(error)) ||
57
+ error.code === 'ENOENT') {
58
+ throw new Error('Sync needs the GitHub CLI (gh). Install it from https://cli.github.com');
59
+ }
60
+ throw new Error(`gh failed: ${stderr.trim() || error.message}`);
61
+ }
62
+ }
63
+ function exportToTemp() {
64
+ const tmp = path.join(os.tmpdir(), `aliasmate-sync-${Date.now()}.json`);
65
+ (0, transfer_1.exportToFile)(tmp, { full: true });
66
+ return tmp;
67
+ }
68
+ function push() {
69
+ const tmp = exportToTemp();
70
+ const content = fs.readFileSync(tmp, 'utf8');
71
+ fs.unlinkSync(tmp);
72
+ const body = JSON.stringify({
73
+ description: 'aliasmate sync (private)',
74
+ files: { [GIST_FILE]: { content } },
75
+ });
76
+ const gistId = (0, store_1.getMetadata)(GIST_KEY);
77
+ if (gistId) {
78
+ gh(['api', `gists/${gistId}`, '--method', 'PATCH', '--input', '-'], body);
79
+ (0, theme_1.ok)(`pushed to gist ${theme_1.theme.dim(gistId)}`);
80
+ }
81
+ else {
82
+ const created = gh(['api', 'gists', '--method', 'POST', '--input', '-', '--jq', '.id'], body);
83
+ (0, store_1.setMetadata)(GIST_KEY, created);
84
+ (0, theme_1.ok)(`created private sync gist ${theme_1.theme.dim(created)}`);
85
+ }
86
+ console.log(theme_1.theme.dim(' Pull on another machine with: aliasmate sync pull'));
87
+ }
88
+ function pull() {
89
+ const gistId = (0, store_1.getMetadata)(GIST_KEY);
90
+ if (!gistId) {
91
+ (0, theme_1.fail)('No sync gist configured on this machine yet.');
92
+ console.log(theme_1.theme.dim('Run "aliasmate sync push" on the machine that has your commands,'));
93
+ console.log(theme_1.theme.dim(`then here: aliasmate sync set <gist-id> && aliasmate sync pull`));
94
+ process.exitCode = 1;
95
+ return;
96
+ }
97
+ const content = gh(['api', `gists/${gistId}`, '--jq', `.files["${GIST_FILE}"].content`]);
98
+ const tmp = path.join(os.tmpdir(), `aliasmate-pull-${Date.now()}.json`);
99
+ fs.writeFileSync(tmp, content, 'utf8');
100
+ const result = (0, transfer_1.importFromFile)(tmp, { overwrite: () => true });
101
+ fs.unlinkSync(tmp);
102
+ (0, theme_1.ok)(`pulled ${result.imported} command${result.imported === 1 ? '' : 's'} from gist ${theme_1.theme.dim(gistId)}`);
103
+ if (result.backup)
104
+ console.log(theme_1.theme.dim(` previous state backed up to ${result.backup}`));
105
+ }
106
+ function syncHandler(direction, id) {
107
+ switch (direction) {
108
+ case 'push':
109
+ return push();
110
+ case 'pull':
111
+ return pull();
112
+ case 'set':
113
+ if (!id)
114
+ throw new Error('Usage: aliasmate sync set <gist-id>');
115
+ (0, store_1.setMetadata)(GIST_KEY, id);
116
+ (0, theme_1.ok)(`sync gist set to ${theme_1.theme.dim(id)}`);
117
+ return;
118
+ default:
119
+ throw new Error('Usage: aliasmate sync <push|pull|set <gist-id>>');
120
+ }
121
+ }
122
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export declare function exportHandler(file: string, options: {
2
2
  format?: string;
3
+ full?: boolean;
3
4
  }): void;
4
5
  export declare function importHandler(file: string): Promise<void>;
5
6
  //# sourceMappingURL=transfer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/cli/transfer.ts"],"names":[],"mappings":"AAQA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAY9E;AAWD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D/D"}
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/cli/transfer.ts"],"names":[],"mappings":"AAMA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA0B9F;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC/D"}
@@ -36,83 +36,64 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.exportHandler = exportHandler;
37
37
  exports.importHandler = importHandler;
38
38
  const fs = __importStar(require("fs"));
39
- const path = __importStar(require("path"));
40
39
  const commands_1 = require("../core/commands");
40
+ const transfer_1 = require("../core/transfer");
41
41
  const format_1 = require("../ui/format");
42
- const store_1 = require("../core/store");
43
42
  const theme_1 = require("../ui/theme");
44
43
  function exportHandler(file, options) {
45
- const commands = (0, commands_1.listCommands)();
46
- if (Object.keys(commands).length === 0) {
47
- (0, theme_1.warn)('No commands to export');
48
- return;
49
- }
50
44
  const format = options.format ?? (file.endsWith('.yaml') || file.endsWith('.yml') ? 'yaml' : 'json');
51
- const content = format === 'yaml' ? (0, format_1.toYaml)(commands) : (0, format_1.toJson)(commands);
52
- fs.writeFileSync(path.resolve(file), content, 'utf8');
53
- (0, theme_1.ok)(`Exported ${Object.keys(commands).length} commands to ${theme_1.theme.name(file)}`);
54
- console.log(theme_1.theme.dim(' Sensitive env values were masked for safe sharing.'));
55
- }
56
- function isValidEntry(value) {
57
- return (typeof value === 'object' &&
58
- value !== null &&
59
- typeof value.command === 'string' &&
60
- typeof value.directory === 'string');
45
+ let count;
46
+ if (format === 'yaml') {
47
+ const commands = (0, commands_1.listCommands)();
48
+ count = Object.keys(commands).length;
49
+ if (count === 0) {
50
+ (0, theme_1.warn)('No commands to export');
51
+ return;
52
+ }
53
+ fs.writeFileSync((0, transfer_1.expandPath)(file), (0, format_1.toYaml)(commands, !options.full), 'utf8');
54
+ }
55
+ else {
56
+ count = (0, transfer_1.exportToFile)(file, { full: options.full });
57
+ }
58
+ (0, theme_1.ok)(`Exported ${count} command${count === 1 ? '' : 's'} to ${theme_1.theme.name(file)}`);
59
+ if (options.full) {
60
+ console.log(theme_1.theme.warning(' Full export: secret env values are in PLAIN TEXT — keep this file safe.'));
61
+ }
62
+ else {
63
+ console.log(theme_1.theme.dim(' Sensitive env values were masked for safe sharing.'));
64
+ console.log(theme_1.theme.dim(' For a restorable backup with real secret values, use --full.'));
65
+ }
61
66
  }
62
67
  async function importHandler(file) {
63
- const resolved = path.resolve(file);
68
+ const resolved = (0, transfer_1.expandPath)(file);
64
69
  if (!fs.existsSync(resolved)) {
65
70
  (0, theme_1.fail)(`File not found: ${file}`);
66
71
  process.exitCode = 1;
67
72
  return;
68
73
  }
69
- let incoming;
74
+ // Decide the conflict policy up front with a single confirmation.
75
+ let overwrite = false;
70
76
  try {
71
- incoming = JSON.parse(fs.readFileSync(resolved, 'utf8'));
77
+ const incoming = JSON.parse(fs.readFileSync(resolved, 'utf8'));
78
+ const conflicts = Object.keys(incoming).filter((name) => (0, commands_1.commandExists)(name));
79
+ if (conflicts.length > 0 && process.stdin.isTTY && process.stdout.isTTY) {
80
+ const { confirm } = await Promise.resolve().then(() => __importStar(require('../ui/prompts')));
81
+ overwrite = await confirm(`${conflicts.length} command${conflicts.length === 1 ? '' : 's'} already exist (${conflicts
82
+ .slice(0, 5)
83
+ .join(', ')}${conflicts.length > 5 ? ', …' : ''}). Overwrite?`);
84
+ }
72
85
  }
73
86
  catch {
74
87
  (0, theme_1.fail)('Could not parse the import file (JSON expected)');
75
88
  process.exitCode = 1;
76
89
  return;
77
90
  }
78
- // Back up current config before touching anything.
79
- const existing = (0, commands_1.listCommands)();
80
- if (Object.keys(existing).length > 0) {
81
- const backup = path.join((0, store_1.getConfigDir)(), `backup-${Date.now()}.json`);
82
- fs.writeFileSync(backup, JSON.stringify(existing, null, 2), 'utf8');
83
- console.log(theme_1.theme.dim(`Backup written to ${backup}`));
84
- }
85
- let imported = 0;
86
- let skipped = 0;
87
- for (const [name, entry] of Object.entries(incoming)) {
88
- if (!isValidEntry(entry)) {
89
- (0, theme_1.warn)(`Skipping "${name}": invalid entry`);
90
- skipped++;
91
- continue;
92
- }
93
- if ((0, commands_1.commandExists)(name)) {
94
- // Prompting is only possible on a TTY; in scripts, keep existing entries.
95
- if (!process.stdin.isTTY) {
96
- (0, theme_1.warn)(`Skipping "${name}": already exists (non-interactive)`);
97
- skipped++;
98
- continue;
99
- }
100
- const { confirm } = await Promise.resolve().then(() => __importStar(require('../ui/prompts')));
101
- const overwrite = await confirm(`"${name}" already exists. Overwrite?`);
102
- if (!overwrite) {
103
- skipped++;
104
- continue;
105
- }
106
- }
107
- (0, commands_1.saveCommand)({
108
- name,
109
- command: entry.command,
110
- directory: entry.directory,
111
- pathMode: entry.pathMode,
112
- env: entry.env,
113
- });
114
- imported++;
115
- }
116
- (0, theme_1.ok)(`Imported ${imported} command${imported === 1 ? '' : 's'}${skipped ? theme_1.theme.dim(` (${skipped} skipped)`) : ''}`);
91
+ const result = (0, transfer_1.importFromFile)(file, { overwrite: () => overwrite });
92
+ if (result.backup)
93
+ console.log(theme_1.theme.dim(`Backup written to ${result.backup}`));
94
+ for (const name of result.invalid)
95
+ (0, theme_1.warn)(`Skipping "${name}": invalid entry`);
96
+ const skippedNote = result.skipped.length > 0 ? theme_1.theme.dim(` (${result.skipped.length} skipped)`) : '';
97
+ (0, theme_1.ok)(`Imported ${result.imported} command${result.imported === 1 ? '' : 's'}${skippedNote}`);
117
98
  }
118
99
  //# sourceMappingURL=transfer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/cli/transfer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,sCAYC;AAWD,sCA2DC;AA1FD,uCAAyB;AACzB,2CAA6B;AAE7B,+CAA4E;AAC5E,yCAA8C;AAC9C,yCAA6C;AAC7C,uCAAoD;AAEpD,SAAgB,aAAa,CAAC,IAAY,EAAE,OAA4B;IACtE,MAAM,QAAQ,GAAG,IAAA,uBAAY,GAAE,CAAC;IAChC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,IAAA,YAAI,EAAC,uBAAuB,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC;IACxE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACtD,IAAA,UAAE,EAAC,YAAY,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,aAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAsB,CAAC,OAAO,KAAK,QAAQ;QACnD,OAAQ,KAAsB,CAAC,SAAS,KAAK,QAAQ,CACtD,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,IAAA,YAAI,EAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,QAAoB,CAAC;IACzB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAe,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,IAAA,YAAI,EAAC,iDAAiD,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,mDAAmD;IACnD,MAAM,QAAQ,GAAG,IAAA,uBAAY,GAAE,CAAC;IAChC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,oBAAY,GAAE,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACtE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAA,YAAI,EAAC,aAAa,IAAI,kBAAkB,CAAC,CAAC;YAC1C,OAAO,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QACD,IAAI,IAAA,wBAAa,EAAC,IAAI,CAAC,EAAE,CAAC;YACxB,0EAA0E;YAC1E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACzB,IAAA,YAAI,EAAC,aAAa,IAAI,qCAAqC,CAAC,CAAC;gBAC7D,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,eAAe,GAAC,CAAC;YAClD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,IAAI,8BAA8B,CAAC,CAAC;YACxE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;QACH,CAAC;QACD,IAAA,sBAAW,EAAC;YACV,IAAI;YACJ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC,CAAC;QACH,QAAQ,EAAE,CAAC;IACb,CAAC;IACD,IAAA,UAAE,EACA,YAAY,QAAQ,WAAW,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,aAAK,CAAC,GAAG,CAAC,KAAK,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/G,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/cli/transfer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,sCA0BC;AAED,sCAiCC;AAnED,uCAAyB;AACzB,+CAA+D;AAC/D,+CAA4E;AAC5E,yCAAsC;AACtC,uCAAoD;AAEpD,SAAgB,aAAa,CAAC,IAAY,EAAE,OAA4C;IACtF,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAExF,IAAI,KAAa,CAAC;IAClB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAA,uBAAY,GAAE,CAAC;QAChC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACrC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,IAAA,YAAI,EAAC,uBAAuB,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,IAAA,qBAAU,EAAC,IAAI,CAAC,EAAE,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAA,uBAAY,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAA,UAAE,EAAC,YAAY,KAAK,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,aAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CACT,aAAK,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAC3F,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,MAAM,QAAQ,GAAG,IAAA,qBAAU,EAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,IAAA,YAAI,EAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,kEAAkE;IAClE,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAA4B,CAAC;QAC1F,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACxE,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,eAAe,GAAC,CAAC;YAClD,SAAS,GAAG,MAAM,OAAO,CACvB,GAAG,SAAS,CAAC,MAAM,WAAW,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,mBAAmB,SAAS;iBACxF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,CACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,IAAA,YAAI,EAAC,iDAAiD,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,yBAAc,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO;QAAE,IAAA,YAAI,EAAC,aAAa,IAAI,kBAAkB,CAAC,CAAC;IAC7E,MAAM,WAAW,GACf,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAK,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,IAAA,UAAE,EAAC,YAAY,MAAM,CAAC,QAAQ,WAAW,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,EAAE,CAAC,CAAC;AAC7F,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Copy text to the system clipboard. Returns false if no tool is available. */
2
+ export declare function copyToClipboard(text: string): boolean;
3
+ //# sourceMappingURL=clipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/core/clipboard.ts"],"names":[],"mappings":"AAGA,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBrD"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.copyToClipboard = copyToClipboard;
37
+ const child_process_1 = require("child_process");
38
+ const os = __importStar(require("os"));
39
+ /** Copy text to the system clipboard. Returns false if no tool is available. */
40
+ function copyToClipboard(text) {
41
+ const candidates = os.platform() === 'darwin'
42
+ ? [['pbcopy', []]]
43
+ : os.platform() === 'win32'
44
+ ? [['clip', []]]
45
+ : [
46
+ ['wl-copy', []],
47
+ ['xclip', ['-selection', 'clipboard']],
48
+ ['xsel', ['--clipboard', '--input']],
49
+ ];
50
+ for (const [cmd, args] of candidates) {
51
+ const result = (0, child_process_1.spawnSync)(cmd, args, { input: text, stdio: ['pipe', 'ignore', 'ignore'] });
52
+ if (result.status === 0)
53
+ return true;
54
+ }
55
+ return false;
56
+ }
57
+ //# sourceMappingURL=clipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/core/clipboard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,0CAgBC;AApBD,iDAA0C;AAC1C,uCAAyB;AAEzB,gFAAgF;AAChF,SAAgB,eAAe,CAAC,IAAY;IAC1C,MAAM,UAAU,GACd,EAAE,CAAC,QAAQ,EAAE,KAAK,QAAQ;QACxB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClB,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;YACzB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAChB,CAAC,CAAC;gBACE,CAAC,SAAS,EAAE,EAAE,CAAC;gBACf,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBACtC,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;aACrC,CAAC;IACV,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { CommandMap, AliasMap, PathMode, SavedCommand } from './types';
2
2
  /** Command names that would shadow CLI subcommands. */
3
3
  export declare const RESERVED_NAMES: Set<string>;
4
+ /** Naming rules shared by every save surface (CLI args, prompts, TUI form). */
5
+ export declare function validateCommandName(value: string): true | string;
4
6
  export declare function listCommands(): CommandMap;
5
7
  export declare function getCommand(name: string): SavedCommand | undefined;
6
8
  export declare function commandExists(name: string): boolean;
@@ -10,8 +12,13 @@ export interface SaveInput {
10
12
  directory: string;
11
13
  pathMode?: PathMode;
12
14
  env?: Record<string, string>;
15
+ description?: string;
16
+ tags?: string[];
17
+ steps?: string[];
13
18
  }
14
- export declare function saveCommand(input: SaveInput): SavedCommand;
19
+ export declare function saveCommand(input: SaveInput, options?: {
20
+ undo?: boolean;
21
+ }): SavedCommand;
15
22
  export declare function deleteCommand(name: string): boolean;
16
23
  export declare function renameCommand(from: string, to: string): void;
17
24
  /** Case-insensitive search across name, command text, and directory. */
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvE,uDAAuD;AACvD,eAAO,MAAM,cAAc,aAsBzB,CAAC;AAEH,wBAAgB,YAAY,IAAI,UAAU,CAEzC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEjE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CA0B1D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAanD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAO5D;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAaxD;AAID,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CASzE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAAO,GAAG,MAAM,GAAG,SAAS,CASpF"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvE,uDAAuD;AACvD,eAAO,MAAM,cAAc,aA+BzB,CAAC;AAEH,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQhE;AAED,wBAAgB,YAAY,IAAI,UAAU,CAEzC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEjE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,YAAY,CA8B5F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAcnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAiC5D;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAexD;AAID,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CASzE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAAO,GAAG,MAAM,GAAG,SAAS,CASpF"}
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.RESERVED_NAMES = void 0;
37
+ exports.validateCommandName = validateCommandName;
37
38
  exports.listCommands = listCommands;
38
39
  exports.getCommand = getCommand;
39
40
  exports.commandExists = commandExists;
@@ -47,6 +48,7 @@ exports.removeShortcutAlias = removeShortcutAlias;
47
48
  exports.resolveName = resolveName;
48
49
  const path = __importStar(require("path"));
49
50
  const store_1 = require("./store");
51
+ const undo_1 = require("./undo");
50
52
  const ALIASES_KEY = 'command_aliases';
51
53
  /** Command names that would shadow CLI subcommands. */
52
54
  exports.RESERVED_NAMES = new Set([
@@ -58,6 +60,8 @@ exports.RESERVED_NAMES = new Set([
58
60
  'search',
59
61
  'find',
60
62
  'edit',
63
+ 'rename',
64
+ 'mv',
61
65
  'delete',
62
66
  'rm',
63
67
  'export',
@@ -70,8 +74,30 @@ exports.RESERVED_NAMES = new Set([
70
74
  'changes',
71
75
  'config',
72
76
  'stats',
77
+ 'copy',
78
+ 'undo',
79
+ 'chain',
80
+ 'tag',
81
+ 'init',
82
+ 'project',
83
+ 'sync',
73
84
  'help',
74
85
  ]);
86
+ /** Naming rules shared by every save surface (CLI args, prompts, TUI form). */
87
+ function validateCommandName(value) {
88
+ const name = value.trim();
89
+ if (!name)
90
+ return 'Name cannot be empty';
91
+ if (/\s/.test(name))
92
+ return 'Name cannot contain spaces — try dashes: build-prod';
93
+ if (!/^[\w.:-]+$/.test(name))
94
+ return 'Only letters, digits, and - _ . : are allowed';
95
+ if (name.startsWith('@'))
96
+ return 'Names starting with @ are reserved for recent commands';
97
+ if (exports.RESERVED_NAMES.has(name))
98
+ return `"${name}" is a reserved word — pick another name`;
99
+ return true;
100
+ }
75
101
  function listCommands() {
76
102
  return store_1.configFile.read();
77
103
  }
@@ -81,7 +107,7 @@ function getCommand(name) {
81
107
  function commandExists(name) {
82
108
  return name in listCommands();
83
109
  }
84
- function saveCommand(input) {
110
+ function saveCommand(input, options = {}) {
85
111
  const name = input.name.trim();
86
112
  const command = input.command.trim();
87
113
  if (!name)
@@ -102,9 +128,14 @@ function saveCommand(input) {
102
128
  directory: path.resolve(input.directory),
103
129
  pathMode: input.pathMode ?? 'saved',
104
130
  ...(input.env && Object.keys(input.env).length > 0 ? { env: input.env } : {}),
131
+ ...(input.description?.trim() ? { description: input.description.trim() } : {}),
132
+ ...(input.tags && input.tags.length > 0 ? { tags: input.tags } : {}),
133
+ ...(input.steps && input.steps.length > 0 ? { steps: input.steps } : {}),
105
134
  createdAt: commands[name]?.createdAt ?? now,
106
135
  updatedAt: now,
107
136
  };
137
+ if (options.undo !== false)
138
+ (0, undo_1.pushUndo)(commands[name] ? `edit ${name}` : `create ${name}`);
108
139
  store_1.configFile.update((data) => {
109
140
  data[name] = entry;
110
141
  });
@@ -113,6 +144,7 @@ function saveCommand(input) {
113
144
  function deleteCommand(name) {
114
145
  if (!commandExists(name))
115
146
  return false;
147
+ (0, undo_1.pushUndo)(`delete ${name}`);
116
148
  store_1.configFile.update((data) => {
117
149
  delete data[name];
118
150
  });
@@ -131,10 +163,31 @@ function renameCommand(from, to) {
131
163
  const existing = commands[from];
132
164
  if (!existing)
133
165
  throw new Error(`Command "${from}" not found`);
166
+ const nameCheck = validateCommandName(to);
167
+ if (nameCheck !== true)
168
+ throw new Error(nameCheck);
134
169
  if (commandExists(to))
135
170
  throw new Error(`Command "${to}" already exists`);
136
- saveCommand({ name: to, ...existing });
137
- deleteCommand(from);
171
+ (0, undo_1.pushUndo)(`rename ${from} ${to}`);
172
+ store_1.configFile.update((data) => {
173
+ data[to] = { ...existing, updatedAt: new Date().toISOString() };
174
+ delete data[from];
175
+ });
176
+ // Shortcut aliases and run history follow the command to its new name.
177
+ const aliases = listAliases();
178
+ let aliasesChanged = false;
179
+ for (const a of Object.keys(aliases)) {
180
+ if (aliases[a] === from) {
181
+ aliases[a] = to;
182
+ aliasesChanged = true;
183
+ }
184
+ }
185
+ if (aliasesChanged)
186
+ (0, store_1.setMetadata)(ALIASES_KEY, aliases);
187
+ const history = (0, store_1.getMetadata)('execution_history');
188
+ if (history?.some((e) => e.commandName === from)) {
189
+ (0, store_1.setMetadata)('execution_history', history.map((e) => (e.commandName === from ? { ...e, commandName: to } : e)));
190
+ }
138
191
  }
139
192
  /** Case-insensitive search across name, command text, and directory. */
140
193
  function searchCommands(query) {
@@ -143,7 +196,9 @@ function searchCommands(query) {
143
196
  for (const [name, cmd] of Object.entries(listCommands())) {
144
197
  if (name.toLowerCase().includes(q) ||
145
198
  cmd.command.toLowerCase().includes(q) ||
146
- cmd.directory.toLowerCase().includes(q)) {
199
+ cmd.directory.toLowerCase().includes(q) ||
200
+ (cmd.description ?? '').toLowerCase().includes(q) ||
201
+ (cmd.tags ?? []).some((t) => t.toLowerCase().includes(q))) {
147
202
  result[name] = cmd;
148
203
  }
149
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { CommandMap, SavedCommand } from './types';
2
+ export declare const PROJECT_FILE = ".aliasmate.json";
3
+ /** Walk up from cwd looking for a .aliasmate.json. */
4
+ export declare function findProjectFile(from?: string): string | null;
5
+ /**
6
+ * Commands defined by the current project. Relative directories resolve
7
+ * against the project root so the file is portable across machines.
8
+ */
9
+ export declare function loadProjectCommands(from?: string): CommandMap;
10
+ export interface EffectiveCommands {
11
+ commands: CommandMap;
12
+ /** Names that came from the project file (they shadow globals). */
13
+ projectNames: Set<string>;
14
+ projectFile: string | null;
15
+ }
16
+ /** Global commands overlaid with the current project's commands. */
17
+ export declare function listEffectiveCommands(from?: string): EffectiveCommands;
18
+ /** Write a command into the project file (created on demand). */
19
+ export declare function saveProjectCommand(name: string, entry: SavedCommand, root?: string): string;
20
+ export declare function removeProjectCommand(name: string, root?: string): boolean;
21
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/core/project.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGnD,eAAO,MAAM,YAAY,oBAAoB,CAAC;AAE9C,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAS3E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,MAAsB,GAAG,UAAU,CA0B5E;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,UAAU,CAAC;IACrB,mEAAmE;IACnE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,MAAsB,GAAG,iBAAiB,CAQrF;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,IAAI,GAAE,MAAsB,GAC3B,MAAM,CAcR;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAsB,GAAG,OAAO,CAQxF"}