aliasmate 1.6.2 → 2.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.
- package/CHANGELOG.md +61 -3
- package/README.md +84 -884
- package/dist/cli/completion.d.ts +5 -0
- package/dist/cli/completion.d.ts.map +1 -0
- package/dist/cli/completion.js +144 -0
- package/dist/cli/completion.js.map +1 -0
- package/dist/cli/manage.d.ts +19 -0
- package/dist/cli/manage.d.ts.map +1 -0
- package/dist/cli/manage.js +231 -0
- package/dist/cli/manage.js.map +1 -0
- package/dist/cli/run.d.ts +6 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +48 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/save.d.ts +8 -0
- package/dist/cli/save.d.ts.map +1 -0
- package/dist/cli/save.js +90 -0
- package/dist/cli/save.js.map +1 -0
- package/dist/cli/transfer.d.ts +6 -0
- package/dist/cli/transfer.d.ts.map +1 -0
- package/dist/cli/transfer.js +99 -0
- package/dist/cli/transfer.js.map +1 -0
- package/dist/core/commands.d.ts +29 -0
- package/dist/core/commands.d.ts.map +1 -0
- package/dist/core/commands.js +232 -0
- package/dist/core/commands.js.map +1 -0
- package/dist/core/env.d.ts +9 -0
- package/dist/core/env.d.ts.map +1 -0
- package/dist/core/env.js +45 -0
- package/dist/core/env.js.map +1 -0
- package/dist/core/executor.d.ts +7 -0
- package/dist/core/executor.d.ts.map +1 -0
- package/dist/{utils → core}/executor.js +10 -46
- package/dist/core/executor.js.map +1 -0
- package/dist/core/history.d.ts +11 -0
- package/dist/core/history.d.ts.map +1 -0
- package/dist/core/history.js +117 -0
- package/dist/core/history.js.map +1 -0
- package/dist/core/recent.d.ts +14 -0
- package/dist/core/recent.d.ts.map +1 -0
- package/dist/core/recent.js +54 -0
- package/dist/core/recent.js.map +1 -0
- package/dist/core/runner.d.ts +13 -0
- package/dist/core/runner.d.ts.map +1 -0
- package/dist/core/runner.js +83 -0
- package/dist/core/runner.js.map +1 -0
- package/dist/core/store.d.ts +29 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +131 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/transfer.d.ts +20 -0
- package/dist/core/transfer.d.ts.map +1 -0
- package/dist/core/transfer.js +110 -0
- package/dist/core/transfer.js.map +1 -0
- package/dist/core/types.d.ts +29 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/validate.d.ts +6 -0
- package/dist/core/validate.d.ts.map +1 -0
- package/dist/core/validate.js +139 -0
- package/dist/core/validate.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +172 -0
- package/dist/index.js.map +1 -0
- package/dist/ui/format.d.ts +19 -0
- package/dist/ui/format.d.ts.map +1 -0
- package/dist/ui/format.js +155 -0
- package/dist/ui/format.js.map +1 -0
- package/dist/ui/interactive.d.ts +62 -0
- package/dist/ui/interactive.d.ts.map +1 -0
- package/dist/ui/interactive.js +657 -0
- package/dist/ui/interactive.js.map +1 -0
- package/dist/ui/onboarding.d.ts +3 -0
- package/dist/ui/onboarding.d.ts.map +1 -0
- package/dist/ui/onboarding.js +82 -0
- package/dist/ui/onboarding.js.map +1 -0
- package/dist/ui/prompts.d.ts +3 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +50 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/table.d.ts +18 -0
- package/dist/ui/table.d.ts.map +1 -0
- package/dist/ui/table.js +54 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/theme.d.ts +30 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +58 -0
- package/dist/ui/theme.js.map +1 -0
- package/package.json +10 -11
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -253
- package/dist/cli.js.map +0 -1
- package/dist/commands/alias.d.ts +0 -30
- package/dist/commands/alias.d.ts.map +0 -1
- package/dist/commands/alias.js +0 -213
- package/dist/commands/alias.js.map +0 -1
- package/dist/commands/changelog.d.ts +0 -9
- package/dist/commands/changelog.d.ts.map +0 -1
- package/dist/commands/changelog.js +0 -72
- package/dist/commands/changelog.js.map +0 -1
- package/dist/commands/completion.d.ts +0 -31
- package/dist/commands/completion.d.ts.map +0 -1
- package/dist/commands/completion.js +0 -522
- package/dist/commands/completion.js.map +0 -1
- package/dist/commands/delete.d.ts +0 -14
- package/dist/commands/delete.d.ts.map +0 -1
- package/dist/commands/delete.js +0 -54
- package/dist/commands/delete.js.map +0 -1
- package/dist/commands/edit.d.ts +0 -16
- package/dist/commands/edit.d.ts.map +0 -1
- package/dist/commands/edit.js +0 -231
- package/dist/commands/edit.js.map +0 -1
- package/dist/commands/export.d.ts +0 -23
- package/dist/commands/export.d.ts.map +0 -1
- package/dist/commands/export.js +0 -122
- package/dist/commands/export.js.map +0 -1
- package/dist/commands/import.d.ts +0 -23
- package/dist/commands/import.d.ts.map +0 -1
- package/dist/commands/import.js +0 -235
- package/dist/commands/import.js.map +0 -1
- package/dist/commands/list.d.ts +0 -25
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -58
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/prev.d.ts +0 -15
- package/dist/commands/prev.d.ts.map +0 -1
- package/dist/commands/prev.js +0 -138
- package/dist/commands/prev.js.map +0 -1
- package/dist/commands/recent.d.ts +0 -24
- package/dist/commands/recent.d.ts.map +0 -1
- package/dist/commands/recent.js +0 -132
- package/dist/commands/recent.js.map +0 -1
- package/dist/commands/run.d.ts +0 -22
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -217
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/save.d.ts +0 -17
- package/dist/commands/save.d.ts.map +0 -1
- package/dist/commands/save.js +0 -232
- package/dist/commands/save.js.map +0 -1
- package/dist/commands/search.d.ts +0 -19
- package/dist/commands/search.d.ts.map +0 -1
- package/dist/commands/search.js +0 -113
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -10
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/validate.js +0 -162
- package/dist/commands/validate.js.map +0 -1
- package/dist/storage/index.d.ts +0 -117
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js +0 -262
- package/dist/storage/index.js.map +0 -1
- package/dist/utils/changelog.d.ts +0 -41
- package/dist/utils/changelog.d.ts.map +0 -1
- package/dist/utils/changelog.js +0 -192
- package/dist/utils/changelog.js.map +0 -1
- package/dist/utils/constants.d.ts +0 -48
- package/dist/utils/constants.d.ts.map +0 -1
- package/dist/utils/constants.js +0 -51
- package/dist/utils/constants.js.map +0 -1
- package/dist/utils/env.d.ts +0 -64
- package/dist/utils/env.d.ts.map +0 -1
- package/dist/utils/env.js +0 -199
- package/dist/utils/env.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -30
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -62
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/executor.d.ts +0 -33
- package/dist/utils/executor.d.ts.map +0 -1
- package/dist/utils/executor.js.map +0 -1
- package/dist/utils/formatters.d.ts +0 -30
- package/dist/utils/formatters.d.ts.map +0 -1
- package/dist/utils/formatters.js +0 -188
- package/dist/utils/formatters.js.map +0 -1
- package/dist/utils/history.d.ts +0 -37
- package/dist/utils/history.d.ts.map +0 -1
- package/dist/utils/history.js +0 -179
- package/dist/utils/history.js.map +0 -1
- package/dist/utils/llm-generator.d.ts +0 -21
- package/dist/utils/llm-generator.d.ts.map +0 -1
- package/dist/utils/llm-generator.js +0 -915
- package/dist/utils/llm-generator.js.map +0 -1
- package/dist/utils/onboarding.d.ts +0 -10
- package/dist/utils/onboarding.d.ts.map +0 -1
- package/dist/utils/onboarding.js +0 -316
- package/dist/utils/onboarding.js.map +0 -1
- package/dist/utils/paths.d.ts +0 -44
- package/dist/utils/paths.d.ts.map +0 -1
- package/dist/utils/paths.js +0 -115
- package/dist/utils/paths.js.map +0 -1
- package/dist/utils/prompts.d.ts +0 -66
- package/dist/utils/prompts.d.ts.map +0 -1
- package/dist/utils/prompts.js +0 -51
- package/dist/utils/prompts.js.map +0 -1
- package/dist/utils/recent.d.ts +0 -55
- package/dist/utils/recent.d.ts.map +0 -1
- package/dist/utils/recent.js +0 -102
- package/dist/utils/recent.js.map +0 -1
- package/dist/utils/validator.d.ts +0 -56
- package/dist/utils/validator.d.ts.map +0 -1
- package/dist/utils/validator.js +0 -413
- package/dist/utils/validator.js.map +0 -1
- package/dist/utils/version-checker.d.ts +0 -29
- package/dist/utils/version-checker.d.ts.map +0 -1
- package/dist/utils/version-checker.js +0 -191
- package/dist/utils/version-checker.js.map +0 -1
- package/whats-new.json +0 -217
|
@@ -0,0 +1,99 @@
|
|
|
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.exportHandler = exportHandler;
|
|
37
|
+
exports.importHandler = importHandler;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const commands_1 = require("../core/commands");
|
|
40
|
+
const transfer_1 = require("../core/transfer");
|
|
41
|
+
const format_1 = require("../ui/format");
|
|
42
|
+
const theme_1 = require("../ui/theme");
|
|
43
|
+
function exportHandler(file, options) {
|
|
44
|
+
const format = options.format ?? (file.endsWith('.yaml') || file.endsWith('.yml') ? 'yaml' : 'json');
|
|
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
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function importHandler(file) {
|
|
68
|
+
const resolved = (0, transfer_1.expandPath)(file);
|
|
69
|
+
if (!fs.existsSync(resolved)) {
|
|
70
|
+
(0, theme_1.fail)(`File not found: ${file}`);
|
|
71
|
+
process.exitCode = 1;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Decide the conflict policy up front with a single confirmation.
|
|
75
|
+
let overwrite = false;
|
|
76
|
+
try {
|
|
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
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
(0, theme_1.fail)('Could not parse the import file (JSON expected)');
|
|
88
|
+
process.exitCode = 1;
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
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}`);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,29 @@
|
|
|
1
|
+
import { CommandMap, AliasMap, PathMode, SavedCommand } from './types';
|
|
2
|
+
/** Command names that would shadow CLI subcommands. */
|
|
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;
|
|
6
|
+
export declare function listCommands(): CommandMap;
|
|
7
|
+
export declare function getCommand(name: string): SavedCommand | undefined;
|
|
8
|
+
export declare function commandExists(name: string): boolean;
|
|
9
|
+
export interface SaveInput {
|
|
10
|
+
name: string;
|
|
11
|
+
command: string;
|
|
12
|
+
directory: string;
|
|
13
|
+
pathMode?: PathMode;
|
|
14
|
+
env?: Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
export declare function saveCommand(input: SaveInput): SavedCommand;
|
|
17
|
+
export declare function deleteCommand(name: string): boolean;
|
|
18
|
+
export declare function renameCommand(from: string, to: string): void;
|
|
19
|
+
/** Case-insensitive search across name, command text, and directory. */
|
|
20
|
+
export declare function searchCommands(query: string): CommandMap;
|
|
21
|
+
export declare function listAliases(): AliasMap;
|
|
22
|
+
export declare function setShortcutAlias(alias: string, commandName: string): void;
|
|
23
|
+
export declare function removeShortcutAlias(alias: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve a user-supplied name to a saved command name.
|
|
26
|
+
* Handles direct names, shortcut aliases, and @N recent-history references.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveName(input: string, recent?: string[]): string | undefined;
|
|
29
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +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,aAwBzB,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;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,CAgC5D;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"}
|
|
@@ -0,0 +1,232 @@
|
|
|
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.RESERVED_NAMES = void 0;
|
|
37
|
+
exports.validateCommandName = validateCommandName;
|
|
38
|
+
exports.listCommands = listCommands;
|
|
39
|
+
exports.getCommand = getCommand;
|
|
40
|
+
exports.commandExists = commandExists;
|
|
41
|
+
exports.saveCommand = saveCommand;
|
|
42
|
+
exports.deleteCommand = deleteCommand;
|
|
43
|
+
exports.renameCommand = renameCommand;
|
|
44
|
+
exports.searchCommands = searchCommands;
|
|
45
|
+
exports.listAliases = listAliases;
|
|
46
|
+
exports.setShortcutAlias = setShortcutAlias;
|
|
47
|
+
exports.removeShortcutAlias = removeShortcutAlias;
|
|
48
|
+
exports.resolveName = resolveName;
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
const store_1 = require("./store");
|
|
51
|
+
const ALIASES_KEY = 'command_aliases';
|
|
52
|
+
/** Command names that would shadow CLI subcommands. */
|
|
53
|
+
exports.RESERVED_NAMES = new Set([
|
|
54
|
+
'run',
|
|
55
|
+
'save',
|
|
56
|
+
'prev',
|
|
57
|
+
'list',
|
|
58
|
+
'ls',
|
|
59
|
+
'search',
|
|
60
|
+
'find',
|
|
61
|
+
'edit',
|
|
62
|
+
'rename',
|
|
63
|
+
'mv',
|
|
64
|
+
'delete',
|
|
65
|
+
'rm',
|
|
66
|
+
'export',
|
|
67
|
+
'import',
|
|
68
|
+
'alias',
|
|
69
|
+
'recent',
|
|
70
|
+
'validate',
|
|
71
|
+
'completion',
|
|
72
|
+
'changelog',
|
|
73
|
+
'changes',
|
|
74
|
+
'config',
|
|
75
|
+
'stats',
|
|
76
|
+
'help',
|
|
77
|
+
]);
|
|
78
|
+
/** Naming rules shared by every save surface (CLI args, prompts, TUI form). */
|
|
79
|
+
function validateCommandName(value) {
|
|
80
|
+
const name = value.trim();
|
|
81
|
+
if (!name)
|
|
82
|
+
return 'Name cannot be empty';
|
|
83
|
+
if (/\s/.test(name))
|
|
84
|
+
return 'Name cannot contain spaces — try dashes: build-prod';
|
|
85
|
+
if (!/^[\w.:-]+$/.test(name))
|
|
86
|
+
return 'Only letters, digits, and - _ . : are allowed';
|
|
87
|
+
if (name.startsWith('@'))
|
|
88
|
+
return 'Names starting with @ are reserved for recent commands';
|
|
89
|
+
if (exports.RESERVED_NAMES.has(name))
|
|
90
|
+
return `"${name}" is a reserved word — pick another name`;
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
function listCommands() {
|
|
94
|
+
return store_1.configFile.read();
|
|
95
|
+
}
|
|
96
|
+
function getCommand(name) {
|
|
97
|
+
return listCommands()[name];
|
|
98
|
+
}
|
|
99
|
+
function commandExists(name) {
|
|
100
|
+
return name in listCommands();
|
|
101
|
+
}
|
|
102
|
+
function saveCommand(input) {
|
|
103
|
+
const name = input.name.trim();
|
|
104
|
+
const command = input.command.trim();
|
|
105
|
+
if (!name)
|
|
106
|
+
throw new Error('Command name cannot be empty');
|
|
107
|
+
if (!/^[\w@.:-]+$/.test(name)) {
|
|
108
|
+
throw new Error('Command name may only contain letters, digits, and - _ . : @');
|
|
109
|
+
}
|
|
110
|
+
if (name.startsWith('@'))
|
|
111
|
+
throw new Error('Names starting with @ are reserved for recent commands');
|
|
112
|
+
if (!command)
|
|
113
|
+
throw new Error('Command cannot be empty');
|
|
114
|
+
if (!input.directory.trim())
|
|
115
|
+
throw new Error('Directory cannot be empty');
|
|
116
|
+
const commands = listCommands();
|
|
117
|
+
const now = new Date().toISOString();
|
|
118
|
+
const entry = {
|
|
119
|
+
command,
|
|
120
|
+
directory: path.resolve(input.directory),
|
|
121
|
+
pathMode: input.pathMode ?? 'saved',
|
|
122
|
+
...(input.env && Object.keys(input.env).length > 0 ? { env: input.env } : {}),
|
|
123
|
+
createdAt: commands[name]?.createdAt ?? now,
|
|
124
|
+
updatedAt: now,
|
|
125
|
+
};
|
|
126
|
+
store_1.configFile.update((data) => {
|
|
127
|
+
data[name] = entry;
|
|
128
|
+
});
|
|
129
|
+
return entry;
|
|
130
|
+
}
|
|
131
|
+
function deleteCommand(name) {
|
|
132
|
+
if (!commandExists(name))
|
|
133
|
+
return false;
|
|
134
|
+
store_1.configFile.update((data) => {
|
|
135
|
+
delete data[name];
|
|
136
|
+
});
|
|
137
|
+
// Drop shortcut aliases that pointed at the deleted command.
|
|
138
|
+
const aliases = listAliases();
|
|
139
|
+
const orphaned = Object.keys(aliases).filter((a) => aliases[a] === name);
|
|
140
|
+
if (orphaned.length > 0) {
|
|
141
|
+
for (const a of orphaned)
|
|
142
|
+
delete aliases[a];
|
|
143
|
+
(0, store_1.setMetadata)(ALIASES_KEY, aliases);
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
function renameCommand(from, to) {
|
|
148
|
+
const commands = listCommands();
|
|
149
|
+
const existing = commands[from];
|
|
150
|
+
if (!existing)
|
|
151
|
+
throw new Error(`Command "${from}" not found`);
|
|
152
|
+
const nameCheck = validateCommandName(to);
|
|
153
|
+
if (nameCheck !== true)
|
|
154
|
+
throw new Error(nameCheck);
|
|
155
|
+
if (commandExists(to))
|
|
156
|
+
throw new Error(`Command "${to}" already exists`);
|
|
157
|
+
store_1.configFile.update((data) => {
|
|
158
|
+
data[to] = { ...existing, updatedAt: new Date().toISOString() };
|
|
159
|
+
delete data[from];
|
|
160
|
+
});
|
|
161
|
+
// Shortcut aliases and run history follow the command to its new name.
|
|
162
|
+
const aliases = listAliases();
|
|
163
|
+
let aliasesChanged = false;
|
|
164
|
+
for (const a of Object.keys(aliases)) {
|
|
165
|
+
if (aliases[a] === from) {
|
|
166
|
+
aliases[a] = to;
|
|
167
|
+
aliasesChanged = true;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (aliasesChanged)
|
|
171
|
+
(0, store_1.setMetadata)(ALIASES_KEY, aliases);
|
|
172
|
+
const history = (0, store_1.getMetadata)('execution_history');
|
|
173
|
+
if (history?.some((e) => e.commandName === from)) {
|
|
174
|
+
(0, store_1.setMetadata)('execution_history', history.map((e) => (e.commandName === from ? { ...e, commandName: to } : e)));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/** Case-insensitive search across name, command text, and directory. */
|
|
178
|
+
function searchCommands(query) {
|
|
179
|
+
const q = query.toLowerCase();
|
|
180
|
+
const result = {};
|
|
181
|
+
for (const [name, cmd] of Object.entries(listCommands())) {
|
|
182
|
+
if (name.toLowerCase().includes(q) ||
|
|
183
|
+
cmd.command.toLowerCase().includes(q) ||
|
|
184
|
+
cmd.directory.toLowerCase().includes(q)) {
|
|
185
|
+
result[name] = cmd;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
// --- Shortcut aliases -------------------------------------------------------
|
|
191
|
+
function listAliases() {
|
|
192
|
+
return { ...((0, store_1.getMetadata)(ALIASES_KEY) ?? {}) };
|
|
193
|
+
}
|
|
194
|
+
function setShortcutAlias(alias, commandName) {
|
|
195
|
+
const a = alias.trim();
|
|
196
|
+
if (!a)
|
|
197
|
+
throw new Error('Alias cannot be empty');
|
|
198
|
+
if (exports.RESERVED_NAMES.has(a))
|
|
199
|
+
throw new Error(`"${a}" is a reserved name`);
|
|
200
|
+
if (commandExists(a))
|
|
201
|
+
throw new Error(`"${a}" is already a saved command name`);
|
|
202
|
+
if (!commandExists(commandName))
|
|
203
|
+
throw new Error(`Command "${commandName}" not found`);
|
|
204
|
+
const aliases = listAliases();
|
|
205
|
+
aliases[a] = commandName;
|
|
206
|
+
(0, store_1.setMetadata)(ALIASES_KEY, aliases);
|
|
207
|
+
}
|
|
208
|
+
function removeShortcutAlias(alias) {
|
|
209
|
+
const aliases = listAliases();
|
|
210
|
+
if (!(alias in aliases))
|
|
211
|
+
return false;
|
|
212
|
+
delete aliases[alias];
|
|
213
|
+
(0, store_1.setMetadata)(ALIASES_KEY, aliases);
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Resolve a user-supplied name to a saved command name.
|
|
218
|
+
* Handles direct names, shortcut aliases, and @N recent-history references.
|
|
219
|
+
*/
|
|
220
|
+
function resolveName(input, recent = []) {
|
|
221
|
+
if (input.startsWith('@')) {
|
|
222
|
+
const index = Number(input.slice(1));
|
|
223
|
+
if (!Number.isInteger(index) || index < 0)
|
|
224
|
+
return undefined;
|
|
225
|
+
return recent[index];
|
|
226
|
+
}
|
|
227
|
+
if (commandExists(input))
|
|
228
|
+
return input;
|
|
229
|
+
const target = listAliases()[input];
|
|
230
|
+
return target && commandExists(target) ? target : undefined;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Environment variable capture, filtering, and secret masking. */
|
|
2
|
+
/** User-defined variables from the current process, system noise filtered out. */
|
|
3
|
+
export declare function captureUserEnv(env?: NodeJS.ProcessEnv): Record<string, string>;
|
|
4
|
+
export declare function isSensitive(key: string): boolean;
|
|
5
|
+
/** Mask a secret value for display/export: keep short hints, hide the middle. */
|
|
6
|
+
export declare function maskValue(value: string): string;
|
|
7
|
+
/** Copy of env with sensitive values masked (safe for display and export). */
|
|
8
|
+
export declare function maskSensitive(env: Record<string, string>): Record<string, string>;
|
|
9
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/core/env.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAYnE,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ3F;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMjF"}
|
package/dist/core/env.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** Environment variable capture, filtering, and secret masking. */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.captureUserEnv = captureUserEnv;
|
|
5
|
+
exports.isSensitive = isSensitive;
|
|
6
|
+
exports.maskValue = maskValue;
|
|
7
|
+
exports.maskSensitive = maskSensitive;
|
|
8
|
+
const SYSTEM_VAR_PATTERNS = [
|
|
9
|
+
/^(PATH|HOME|USER|LOGNAME|SHELL|SHLVL|PWD|OLDPWD|TERM|TERM_PROGRAM.*|TMPDIR|TEMP|TMP)$/,
|
|
10
|
+
/^(LANG|LANGUAGE|LC_.*|TZ|COLORTERM|DISPLAY|EDITOR|VISUAL|PAGER|LESS.*|MANPATH)$/,
|
|
11
|
+
/^(SSH_.*|XPC_.*|XDG_.*|DBUS_.*|WINDOWID|HOSTNAME|COMPUTERNAME|OS|PROCESSOR_.*)$/,
|
|
12
|
+
/^(HOMEBREW_.*|npm_.*|NODE|NVM_.*|_|__.*|ALIASMATE_.*|Apple_.*|COMMAND_MODE)$/,
|
|
13
|
+
/^(SYSTEMROOT|WINDIR|APPDATA|LOCALAPPDATA|PROGRAMFILES.*|USERPROFILE|COMSPEC|PATHEXT)$/,
|
|
14
|
+
];
|
|
15
|
+
const SENSITIVE_PATTERN = /(KEY|SECRET|TOKEN|PASSWORD|PASSWD|CREDENTIAL|AUTH|PRIVATE)/i;
|
|
16
|
+
/** User-defined variables from the current process, system noise filtered out. */
|
|
17
|
+
function captureUserEnv(env = process.env) {
|
|
18
|
+
const result = {};
|
|
19
|
+
for (const [key, value] of Object.entries(env)) {
|
|
20
|
+
if (value === undefined)
|
|
21
|
+
continue;
|
|
22
|
+
if (SYSTEM_VAR_PATTERNS.some((p) => p.test(key)))
|
|
23
|
+
continue;
|
|
24
|
+
result[key] = value;
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
function isSensitive(key) {
|
|
29
|
+
return SENSITIVE_PATTERN.test(key);
|
|
30
|
+
}
|
|
31
|
+
/** Mask a secret value for display/export: keep short hints, hide the middle. */
|
|
32
|
+
function maskValue(value) {
|
|
33
|
+
if (value.length <= 4)
|
|
34
|
+
return '***';
|
|
35
|
+
return `${value.slice(0, 3)}***${value.slice(-2)}`;
|
|
36
|
+
}
|
|
37
|
+
/** Copy of env with sensitive values masked (safe for display and export). */
|
|
38
|
+
function maskSensitive(env) {
|
|
39
|
+
const result = {};
|
|
40
|
+
for (const [key, value] of Object.entries(env)) {
|
|
41
|
+
result[key] = isSensitive(key) ? maskValue(value) : value;
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/core/env.ts"],"names":[],"mappings":";AAAA,mEAAmE;;AAanE,wCAQC;AAED,kCAEC;AAGD,8BAGC;AAGD,sCAMC;AAtCD,MAAM,mBAAmB,GAAG;IAC1B,uFAAuF;IACvF,iFAAiF;IACjF,iFAAiF;IACjF,8EAA8E;IAC9E,uFAAuF;CACxF,CAAC;AAEF,MAAM,iBAAiB,GAAG,6DAA6D,CAAC;AAExF,kFAAkF;AAClF,SAAgB,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG;IACjE,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAE,SAAS;QAC3D,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,iFAAiF;AACjF,SAAgB,SAAS,CAAC,KAAa;IACrC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,8EAA8E;AAC9E,SAAgB,aAAa,CAAC,GAA2B;IACvD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ExecutionResult } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Run a shell command with inherited stdio so interactive programs work.
|
|
4
|
+
* Saved env vars are layered over the current process env.
|
|
5
|
+
*/
|
|
6
|
+
export declare function executeCommand(command: string, cwd: string, env?: Record<string, string>): Promise<ExecutionResult>;
|
|
7
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C;;;GAGG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,eAAe,CAAC,CAmB1B"}
|
|
@@ -38,66 +38,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.executeCommand = executeCommand;
|
|
40
40
|
const execa_1 = __importDefault(require("execa"));
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
41
|
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* @param command - The shell command to execute
|
|
48
|
-
* @param cwd - The working directory to execute the command in
|
|
49
|
-
* @param env - Optional environment variables to use (defaults to process.env)
|
|
50
|
-
* @returns A promise that resolves with the execution result
|
|
51
|
-
* @throws {Error} If the directory doesn't exist
|
|
52
|
-
*
|
|
53
|
-
* @example
|
|
54
|
-
* ```ts
|
|
55
|
-
* const result = await executeCommand('npm install', '/path/to/project');
|
|
56
|
-
* if (result.success) {
|
|
57
|
-
* console.log('Installation successful');
|
|
58
|
-
* }
|
|
59
|
-
* ```
|
|
44
|
+
* Run a shell command with inherited stdio so interactive programs work.
|
|
45
|
+
* Saved env vars are layered over the current process env.
|
|
60
46
|
*/
|
|
61
|
-
async function executeCommand(command, cwd, env
|
|
62
|
-
// Validate inputs
|
|
63
|
-
if (!command || !command.trim()) {
|
|
64
|
-
throw new Error('Command cannot be empty');
|
|
65
|
-
}
|
|
66
|
-
// Resolve the directory path
|
|
47
|
+
async function executeCommand(command, cwd, env) {
|
|
67
48
|
const resolvedCwd = path.resolve(cwd);
|
|
68
|
-
|
|
69
|
-
if (!fs.existsSync(resolvedCwd)) {
|
|
49
|
+
if (!fs.existsSync(resolvedCwd) || !fs.statSync(resolvedCwd).isDirectory()) {
|
|
70
50
|
throw new Error(`Directory does not exist: ${resolvedCwd}`);
|
|
71
51
|
}
|
|
72
|
-
|
|
73
|
-
const stats = fs.statSync(resolvedCwd);
|
|
74
|
-
if (!stats.isDirectory()) {
|
|
75
|
-
throw new Error(`Path is not a directory: ${resolvedCwd}`);
|
|
76
|
-
}
|
|
52
|
+
const started = Date.now();
|
|
77
53
|
try {
|
|
78
|
-
// Execute the command using the user's shell
|
|
79
|
-
// stdio: 'inherit' allows real-time output to terminal
|
|
80
54
|
await (0, execa_1.default)(command, {
|
|
81
55
|
shell: true,
|
|
82
56
|
cwd: resolvedCwd,
|
|
83
57
|
stdio: 'inherit',
|
|
84
|
-
env,
|
|
58
|
+
env: env ? { ...process.env, ...env } : process.env,
|
|
85
59
|
});
|
|
86
|
-
return {
|
|
87
|
-
success: true,
|
|
88
|
-
stdout: '',
|
|
89
|
-
stderr: '',
|
|
90
|
-
exitCode: 0,
|
|
91
|
-
};
|
|
60
|
+
return { success: true, exitCode: 0, durationMs: Date.now() - started };
|
|
92
61
|
}
|
|
93
62
|
catch (error) {
|
|
94
|
-
const
|
|
95
|
-
return {
|
|
96
|
-
success: false,
|
|
97
|
-
stdout: execaError.stdout || '',
|
|
98
|
-
stderr: execaError.stderr || execaError.message,
|
|
99
|
-
exitCode: execaError.exitCode,
|
|
100
|
-
};
|
|
63
|
+
const exitCode = error.exitCode ?? 1;
|
|
64
|
+
return { success: false, exitCode, durationMs: Date.now() - started };
|
|
101
65
|
}
|
|
102
66
|
}
|
|
103
67
|
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,wCAuBC;AAhCD,kDAA0B;AAC1B,uCAAyB;AACzB,2CAA6B;AAG7B;;;GAGG;AACI,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,GAAW,EACX,GAA4B;IAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,IAAA,eAAK,EAAC,OAAO,EAAE;YACnB,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;SACpD,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAI,KAA0B,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC3D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACxE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Parse one raw history line into a command, handling zsh/fish formats. */
|
|
2
|
+
export declare function parseHistoryLine(line: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* The last non-aliasmate command from shell history, or null if unavailable.
|
|
5
|
+
* ALIASMATE_LAST_CMD (set by shell integration) takes precedence over the
|
|
6
|
+
* history file, which most shells only flush on exit.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getLastCommand(): string | null;
|
|
9
|
+
/** Shell-specific instructions for real-time history writing. */
|
|
10
|
+
export declare function getHistoryConfigHint(): string;
|
|
11
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/core/history.ts"],"names":[],"mappings":"AAIA,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQrD;AA2CD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAgB9C;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,IAAI,MAAM,CAS7C"}
|