autohand-cli 0.6.4 → 0.6.7
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/dist/SkillsRegistry-LXDK73BL.cjs +9 -0
- package/dist/SkillsRegistry-SP5MX7OA.js +9 -0
- package/dist/agents-FH47ZMOI.cjs +10 -0
- package/dist/{agents-OJWYZN6X.js → agents-NB5VQN6H.js} +2 -2
- package/dist/{agents-new-WQLJOXSS.js → agents-new-M325HGWT.js} +3 -2
- package/dist/agents-new-XLEU26YI.cjs +11 -0
- package/dist/{chunk-DD2YPHP5.cjs → chunk-2OBNJCG6.cjs} +15 -13
- package/dist/{chunk-NWXYG5PQ.js → chunk-37NUB5KX.js} +1 -1
- package/dist/{chunk-AL4Z4WKG.cjs → chunk-3DPDLZYY.cjs} +9 -7
- package/dist/chunk-3HPUOQJN.cjs +23 -0
- package/dist/{chunk-G7SYGATA.cjs → chunk-3ZUWWML7.cjs} +2 -2
- package/dist/{chunk-3Y6G5DUX.cjs → chunk-53YDUYNS.cjs} +10 -4
- package/dist/{chunk-PRZTK2FX.js → chunk-5WKR4HIB.js} +7 -5
- package/dist/{chunk-ZTA2ASFW.cjs → chunk-6ZGNSZRG.cjs} +1 -1
- package/dist/chunk-7BYSXAKS.js +23 -0
- package/dist/{chunk-6FEZ6JAQ.js → chunk-7HB7GSQF.js} +1 -1
- package/dist/{chunk-UBGEAEKS.js → chunk-AY2XV7TH.js} +1 -1
- package/dist/{chunk-7RRX7H2X.cjs → chunk-B5N5UAMO.cjs} +20 -12
- package/dist/{chunk-KZ2UXXLH.js → chunk-BAHUKJJR.js} +7 -5
- package/dist/{chunk-KT55HW6V.js → chunk-CHQMK2ZG.js} +1 -1
- package/dist/chunk-CVYEUA3D.cjs +528 -0
- package/dist/{chunk-MRQV5HMC.js → chunk-DE7YC5MB.js} +8 -6
- package/dist/{chunk-AD4O67ZA.cjs → chunk-EJ77L3KT.cjs} +10 -10
- package/dist/{chunk-737A24RB.js → chunk-FUEL6BK7.js} +9 -1
- package/dist/{chunk-6MCXWSR3.js → chunk-H4RPZD6H.js} +1 -1
- package/dist/chunk-JHGIWNHL.cjs +46 -0
- package/dist/{chunk-27JNK5TE.cjs → chunk-LUKMRIKJ.cjs} +40 -61
- package/dist/{chunk-4H3B46YX.js → chunk-MWLAHCU7.js} +9 -3
- package/dist/{chunk-QCMC2WOC.cjs → chunk-N6ZOJI2M.cjs} +4 -4
- package/dist/{chunk-2TPGTNNY.js → chunk-NGSLABLS.js} +37 -58
- package/dist/chunk-QHPFA6OE.js +46 -0
- package/dist/{chunk-M4LKQQHU.cjs → chunk-REPKBECD.cjs} +2 -2
- package/dist/chunk-SKU4M27Z.js +528 -0
- package/dist/chunk-W4XTDUGT.js +267 -0
- package/dist/{chunk-RDEROLKA.cjs → chunk-XAM7SFVB.cjs} +8 -6
- package/dist/chunk-XF4EQ3IV.cjs +267 -0
- package/dist/{chunk-IHJDYAYJ.cjs → chunk-XTHHDIBG.cjs} +9 -1
- package/dist/{chunk-5N3QP5LJ.js → chunk-YDH2BMEN.js} +19 -11
- package/dist/constants-ICQLSGZN.cjs +19 -0
- package/dist/constants-N3I2FHCM.js +19 -0
- package/dist/feedback-TOGESBX7.cjs +11 -0
- package/dist/{feedback-3THCLEBE.js → feedback-YGSYBQEW.js} +3 -2
- package/dist/index.cjs +1463 -1146
- package/dist/index.js +987 -670
- package/dist/login-QVBS7KBK.cjs +13 -0
- package/dist/login-XUVEFKCR.js +13 -0
- package/dist/logout-75YLPOBK.js +13 -0
- package/dist/logout-FYYR5KCP.cjs +13 -0
- package/dist/{permissions-CYW62ZK3.js → permissions-3GS4ZWVA.js} +2 -1
- package/dist/permissions-E3MTIE7D.cjs +10 -0
- package/dist/{skills-HF4SAF5O.js → skills-3M26KASS.js} +3 -1
- package/dist/skills-BOFY5RQN.cjs +13 -0
- package/dist/skills-install-WJ2LDRQG.js +680 -0
- package/dist/skills-install-Z3W5PQWQ.cjs +680 -0
- package/dist/skills-new-KIBUN63X.js +12 -0
- package/dist/skills-new-XDYS24XW.cjs +12 -0
- package/dist/{status-SLYYTKXD.js → status-6FY6RKIS.js} +1 -1
- package/dist/status-DJHDT6QH.cjs +9 -0
- package/dist/theme-2UK74UWR.cjs +13 -0
- package/dist/{theme-THMQ5AIN.js → theme-XNZ2X6HE.js} +3 -3
- package/package.json +1 -1
- package/dist/agents-EHLYBJLK.cjs +0 -10
- package/dist/agents-new-7VPASCBV.cjs +0 -10
- package/dist/chunk-NEAJ2UWG.js +0 -191
- package/dist/chunk-Z6SGIQWH.cjs +0 -191
- package/dist/feedback-PATTKRH5.cjs +0 -10
- package/dist/login-QJROML5I.js +0 -12
- package/dist/login-X66DSV75.cjs +0 -12
- package/dist/logout-3Z7R3F7J.cjs +0 -12
- package/dist/logout-RJ5OAXRI.js +0 -12
- package/dist/permissions-NOC5DMOH.cjs +0 -9
- package/dist/skills-U6J6DFLK.cjs +0 -11
- package/dist/skills-new-QDTNEG3R.js +0 -10
- package/dist/skills-new-UPVBHIF2.cjs +0 -10
- package/dist/status-GR73LEEN.cjs +0 -9
- package/dist/theme-YDANJLZR.cjs +0 -13
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkCVYEUA3Dcjs = require('./chunk-CVYEUA3D.cjs');
|
|
4
|
+
require('./chunk-JHGIWNHL.cjs');
|
|
5
|
+
require('./chunk-XTHHDIBG.cjs');
|
|
6
|
+
require('./chunk-N254NRHT.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
exports.SkillsRegistry = _chunkCVYEUA3Dcjs.SkillsRegistry;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunk3ZUWWML7cjs = require('./chunk-3ZUWWML7.cjs');
|
|
5
|
+
require('./chunk-XTHHDIBG.cjs');
|
|
6
|
+
require('./chunk-N254NRHT.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.handler = _chunk3ZUWWML7cjs.handler; exports.metadata = _chunk3ZUWWML7cjs.metadata;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunk53YDUYNScjs = require('./chunk-53YDUYNS.cjs');
|
|
5
|
+
require('./chunk-3HPUOQJN.cjs');
|
|
6
|
+
require('./chunk-XTHHDIBG.cjs');
|
|
7
|
+
require('./chunk-N254NRHT.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
exports.createAgent = _chunk53YDUYNScjs.createAgent; exports.metadata = _chunk53YDUYNScjs.metadata;
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkREPKBECDcjs = require('./chunk-REPKBECD.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkN6ZOJI2Mcjs = require('./chunk-N6ZOJI2M.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunk3HPUOQJNcjs = require('./chunk-3HPUOQJN.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunkXTHHDIBGcjs = require('./chunk-XTHHDIBG.cjs');
|
|
10
13
|
|
|
11
14
|
// src/commands/login.ts
|
|
12
15
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
13
|
-
var _enquirer = require('enquirer'); var _enquirer2 = _interopRequireDefault(_enquirer);
|
|
14
16
|
var metadata = {
|
|
15
17
|
command: "/login",
|
|
16
18
|
description: "sign in to your Autohand account",
|
|
@@ -47,18 +49,18 @@ function sleep(ms) {
|
|
|
47
49
|
async function login(ctx) {
|
|
48
50
|
const config = ctx.config;
|
|
49
51
|
if (_optionalChain([config, 'optionalAccess', _ => _.auth, 'optionalAccess', _2 => _2.token]) && _optionalChain([config, 'optionalAccess', _3 => _3.auth, 'optionalAccess', _4 => _4.user])) {
|
|
50
|
-
const
|
|
52
|
+
const result = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
|
|
51
53
|
type: "confirm",
|
|
52
54
|
name: "continueLogin",
|
|
53
55
|
message: `Already logged in as ${_chalk2.default.cyan(config.auth.user.email)}. Log in with a different account?`,
|
|
54
56
|
initial: false
|
|
55
57
|
});
|
|
56
|
-
if (!continueLogin) {
|
|
58
|
+
if (!result || !result.continueLogin) {
|
|
57
59
|
console.log(_chalk2.default.gray("Login cancelled."));
|
|
58
60
|
return null;
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
|
-
const authClient =
|
|
63
|
+
const authClient = _chunkREPKBECDcjs.getAuthClient.call(void 0, );
|
|
62
64
|
console.log(_chalk2.default.gray("Initiating authentication..."));
|
|
63
65
|
const initResult = await authClient.initiateDeviceAuth();
|
|
64
66
|
if (!initResult.success || !initResult.deviceCode || !initResult.userCode) {
|
|
@@ -67,13 +69,13 @@ async function login(ctx) {
|
|
|
67
69
|
}
|
|
68
70
|
console.log();
|
|
69
71
|
console.log(_chalk2.default.bold("To sign in, visit:"));
|
|
70
|
-
console.log(_chalk2.default.cyan.underline(initResult.verificationUriComplete || `${
|
|
72
|
+
console.log(_chalk2.default.cyan.underline(initResult.verificationUriComplete || `${_chunkXTHHDIBGcjs.AUTH_CONFIG.authorizationUrl}?code=${initResult.userCode}`));
|
|
71
73
|
console.log();
|
|
72
74
|
console.log(_chalk2.default.gray("Or enter this code manually:"));
|
|
73
75
|
console.log(_chalk2.default.bold.yellow(` ${initResult.userCode}`));
|
|
74
76
|
console.log();
|
|
75
77
|
const browserOpened = await openBrowser(
|
|
76
|
-
initResult.verificationUriComplete || `${
|
|
78
|
+
initResult.verificationUriComplete || `${_chunkXTHHDIBGcjs.AUTH_CONFIG.authorizationUrl}?code=${initResult.userCode}`
|
|
77
79
|
);
|
|
78
80
|
if (browserOpened) {
|
|
79
81
|
console.log(_chalk2.default.gray("Browser opened. Complete the login in your browser."));
|
|
@@ -84,8 +86,8 @@ async function login(ctx) {
|
|
|
84
86
|
console.log(_chalk2.default.gray("Waiting for authorization..."));
|
|
85
87
|
console.log(_chalk2.default.gray("(Press Ctrl+C to cancel)"));
|
|
86
88
|
const startTime = Date.now();
|
|
87
|
-
const timeout =
|
|
88
|
-
const pollInterval = initResult.interval ? initResult.interval * 1e3 :
|
|
89
|
+
const timeout = _chunkXTHHDIBGcjs.AUTH_CONFIG.authTimeout;
|
|
90
|
+
const pollInterval = initResult.interval ? initResult.interval * 1e3 : _chunkXTHHDIBGcjs.AUTH_CONFIG.pollInterval;
|
|
89
91
|
let dots = 0;
|
|
90
92
|
const maxDots = 3;
|
|
91
93
|
while (Date.now() - startTime < timeout) {
|
|
@@ -95,7 +97,7 @@ async function login(ctx) {
|
|
|
95
97
|
const pollResult = await authClient.pollDeviceAuth(initResult.deviceCode);
|
|
96
98
|
if (pollResult.status === "authorized" && pollResult.token && pollResult.user) {
|
|
97
99
|
process.stdout.write("\r" + " ".repeat(20) + "\r");
|
|
98
|
-
const expiresAt = new Date(Date.now() +
|
|
100
|
+
const expiresAt = new Date(Date.now() + _chunkXTHHDIBGcjs.AUTH_CONFIG.sessionExpiryDays * 24 * 60 * 60 * 1e3).toISOString();
|
|
99
101
|
const updatedConfig = {
|
|
100
102
|
...config,
|
|
101
103
|
auth: {
|
|
@@ -104,7 +106,7 @@ async function login(ctx) {
|
|
|
104
106
|
expiresAt
|
|
105
107
|
}
|
|
106
108
|
};
|
|
107
|
-
await
|
|
109
|
+
await _chunkN6ZOJI2Mcjs.saveConfig.call(void 0, updatedConfig);
|
|
108
110
|
console.log();
|
|
109
111
|
console.log(_chalk2.default.green("Login successful!"));
|
|
110
112
|
console.log(_chalk2.default.cyan(`Welcome, ${pollResult.user.name || pollResult.user.email}!`));
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkREPKBECDcjs = require('./chunk-REPKBECD.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkN6ZOJI2Mcjs = require('./chunk-N6ZOJI2M.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunk3HPUOQJNcjs = require('./chunk-3HPUOQJN.cjs');
|
|
7
10
|
|
|
8
11
|
// src/commands/logout.ts
|
|
9
12
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
10
|
-
var _enquirer = require('enquirer'); var _enquirer2 = _interopRequireDefault(_enquirer);
|
|
11
13
|
var metadata = {
|
|
12
14
|
command: "/logout",
|
|
13
15
|
description: "sign out of your Autohand account",
|
|
@@ -21,17 +23,17 @@ async function logout(ctx) {
|
|
|
21
23
|
return null;
|
|
22
24
|
}
|
|
23
25
|
const userName = _optionalChain([config, 'access', _3 => _3.auth, 'access', _4 => _4.user, 'optionalAccess', _5 => _5.name]) || _optionalChain([config, 'access', _6 => _6.auth, 'access', _7 => _7.user, 'optionalAccess', _8 => _8.email]) || "user";
|
|
24
|
-
const
|
|
26
|
+
const result = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
|
|
25
27
|
type: "confirm",
|
|
26
28
|
name: "confirm",
|
|
27
29
|
message: `Log out from ${_chalk2.default.cyan(userName)}?`,
|
|
28
30
|
initial: true
|
|
29
31
|
});
|
|
30
|
-
if (!confirm) {
|
|
32
|
+
if (!result || !result.confirm) {
|
|
31
33
|
console.log(_chalk2.default.gray("Logout cancelled."));
|
|
32
34
|
return null;
|
|
33
35
|
}
|
|
34
|
-
const authClient =
|
|
36
|
+
const authClient = _chunkREPKBECDcjs.getAuthClient.call(void 0, );
|
|
35
37
|
try {
|
|
36
38
|
await authClient.logout(config.auth.token);
|
|
37
39
|
} catch (e) {
|
|
@@ -40,7 +42,7 @@ async function logout(ctx) {
|
|
|
40
42
|
...config,
|
|
41
43
|
auth: void 0
|
|
42
44
|
};
|
|
43
|
-
await
|
|
45
|
+
await _chunkN6ZOJI2Mcjs.saveConfig.call(void 0, updatedConfig);
|
|
44
46
|
console.log();
|
|
45
47
|
console.log(_chalk2.default.green("Successfully logged out."));
|
|
46
48
|
console.log(_chalk2.default.gray("Your local session has been cleared."));
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/utils/prompt.ts
|
|
2
|
+
var _enquirer = require('enquirer'); var _enquirer2 = _interopRequireDefault(_enquirer);
|
|
3
|
+
async function safePrompt(questions) {
|
|
4
|
+
try {
|
|
5
|
+
return await _enquirer2.default.prompt(questions);
|
|
6
|
+
} catch (error) {
|
|
7
|
+
if (_optionalChain([error, 'optionalAccess', _ => _.code]) === "ERR_USE_AFTER_CLOSE" || _optionalChain([error, 'optionalAccess', _2 => _2.message, 'optionalAccess', _3 => _3.includes, 'call', _4 => _4("cancelled")]) || _optionalChain([error, 'optionalAccess', _5 => _5.message, 'optionalAccess', _6 => _6.includes, 'call', _7 => _7("canceled")])) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
throw error;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
exports.safePrompt = safePrompt;
|
|
17
|
+
/**
|
|
18
|
+
* @license
|
|
19
|
+
* Copyright 2025 Autohand AI LLC
|
|
20
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
21
|
+
*
|
|
22
|
+
* Safe prompt utilities for handling enquirer cancellation
|
|
23
|
+
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkXTHHDIBGcjs = require('./chunk-XTHHDIBG.cjs');
|
|
4
4
|
|
|
5
5
|
// src/commands/agents.ts
|
|
6
6
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
@@ -20,7 +20,7 @@ var AgentRegistry = class _AgentRegistry {
|
|
|
20
20
|
constructor() {
|
|
21
21
|
this.agents = /* @__PURE__ */ new Map();
|
|
22
22
|
this.externalPaths = [];
|
|
23
|
-
this.agentsDir =
|
|
23
|
+
this.agentsDir = _chunkXTHHDIBGcjs.AUTOHAND_PATHS.agents;
|
|
24
24
|
}
|
|
25
25
|
static getInstance() {
|
|
26
26
|
if (!_AgentRegistry.instance) {
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunk3HPUOQJNcjs = require('./chunk-3HPUOQJN.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkXTHHDIBGcjs = require('./chunk-XTHHDIBG.cjs');
|
|
4
7
|
|
|
5
8
|
// src/commands/agents-new.ts
|
|
6
9
|
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
7
10
|
var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
|
|
8
11
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
9
|
-
var _enquirer = require('enquirer'); var _enquirer2 = _interopRequireDefault(_enquirer);
|
|
10
12
|
var metadata = {
|
|
11
13
|
command: "/agents new",
|
|
12
14
|
description: "create a new sub-agent from a description",
|
|
@@ -14,7 +16,7 @@ var metadata = {
|
|
|
14
16
|
prd: "prd/sub_agents_architecture.md"
|
|
15
17
|
};
|
|
16
18
|
async function createAgent(ctx) {
|
|
17
|
-
const answers = await
|
|
19
|
+
const answers = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, [
|
|
18
20
|
{
|
|
19
21
|
type: "input",
|
|
20
22
|
name: "name",
|
|
@@ -27,6 +29,10 @@ async function createAgent(ctx) {
|
|
|
27
29
|
message: "Briefly describe what the agent should do"
|
|
28
30
|
}
|
|
29
31
|
]);
|
|
32
|
+
if (!answers) {
|
|
33
|
+
console.log(_chalk2.default.gray("Cancelled."));
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
30
36
|
const name = answers.name.trim();
|
|
31
37
|
const description = answers.description.trim();
|
|
32
38
|
if (!name) {
|
|
@@ -77,7 +83,7 @@ function buildPrompt(name, description) {
|
|
|
77
83
|
].filter(Boolean).join("\n");
|
|
78
84
|
}
|
|
79
85
|
function getAgentsDir() {
|
|
80
|
-
return
|
|
86
|
+
return _chunkXTHHDIBGcjs.AUTOHAND_PATHS.agents;
|
|
81
87
|
}
|
|
82
88
|
function slugify(input) {
|
|
83
89
|
return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "agent";
|
|
@@ -1,26 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
safePrompt
|
|
3
|
+
} from "./chunk-7BYSXAKS.js";
|
|
1
4
|
import {
|
|
2
5
|
AUTOHAND_FILES
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FUEL6BK7.js";
|
|
4
7
|
|
|
5
8
|
// src/commands/feedback.ts
|
|
6
9
|
import fs from "fs-extra";
|
|
7
10
|
import chalk from "chalk";
|
|
8
|
-
import enquirer from "enquirer";
|
|
9
11
|
var metadata = {
|
|
10
12
|
command: "/feedback",
|
|
11
13
|
description: "share feedback with environment details",
|
|
12
14
|
implemented: true
|
|
13
15
|
};
|
|
14
16
|
async function feedback(_ctx) {
|
|
15
|
-
const answer = await
|
|
17
|
+
const answer = await safePrompt([
|
|
16
18
|
{
|
|
17
19
|
type: "input",
|
|
18
20
|
name: "feedback",
|
|
19
21
|
message: "What worked? What broke?"
|
|
20
22
|
}
|
|
21
23
|
]);
|
|
22
|
-
if (!answer.feedback?.trim()) {
|
|
23
|
-
console.log(chalk.gray("Feedback discarded
|
|
24
|
+
if (!answer || !answer.feedback?.trim()) {
|
|
25
|
+
console.log(chalk.gray("Feedback discarded."));
|
|
24
26
|
return null;
|
|
25
27
|
}
|
|
26
28
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -5,7 +5,7 @@ var _readline = require('readline'); var _readline2 = _interopRequireDefault(_re
|
|
|
5
5
|
// package.json
|
|
6
6
|
var package_default = {
|
|
7
7
|
name: "autohand-cli",
|
|
8
|
-
version: "0.6.
|
|
8
|
+
version: "0.6.7",
|
|
9
9
|
licenses: "SEE LICENSE IN LICENSE",
|
|
10
10
|
description: "Autohand interactive coding agent CLI powered by LLMs.",
|
|
11
11
|
type: "module",
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/utils/prompt.ts
|
|
2
|
+
import enquirer from "enquirer";
|
|
3
|
+
async function safePrompt(questions) {
|
|
4
|
+
try {
|
|
5
|
+
return await enquirer.prompt(questions);
|
|
6
|
+
} catch (error) {
|
|
7
|
+
if (error?.code === "ERR_USE_AFTER_CLOSE" || error?.message?.includes("cancelled") || error?.message?.includes("canceled")) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
throw error;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
safePrompt
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* @license
|
|
19
|
+
* Copyright 2025 Autohand AI LLC
|
|
20
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
21
|
+
*
|
|
22
|
+
* Safe prompt utilities for handling enquirer cancellation
|
|
23
|
+
*/
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
var _chunk3HPUOQJNcjs = require('./chunk-3HPUOQJN.cjs');
|
|
4
|
+
|
|
5
|
+
// src/commands/permissions.ts
|
|
2
6
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
3
|
-
var _enquirer = require('enquirer'); var _enquirer2 = _interopRequireDefault(_enquirer);
|
|
4
7
|
async function permissions(ctx) {
|
|
5
8
|
const whitelist = ctx.permissionManager.getWhitelist();
|
|
6
9
|
const blacklist = ctx.permissionManager.getBlacklist();
|
|
@@ -36,7 +39,7 @@ async function permissions(ctx) {
|
|
|
36
39
|
console.log(_chalk2.default.gray("\u2500".repeat(50)));
|
|
37
40
|
console.log(_chalk2.default.gray(`Total: ${whitelist.length} approved, ${blacklist.length} denied`));
|
|
38
41
|
console.log();
|
|
39
|
-
const
|
|
42
|
+
const actionResult = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
|
|
40
43
|
type: "select",
|
|
41
44
|
name: "action",
|
|
42
45
|
message: "What would you like to do?",
|
|
@@ -47,35 +50,40 @@ async function permissions(ctx) {
|
|
|
47
50
|
{ name: "clear_all", message: "Clear all permissions" }
|
|
48
51
|
]
|
|
49
52
|
});
|
|
50
|
-
if (action === "done") {
|
|
53
|
+
if (!actionResult || actionResult.action === "done") {
|
|
51
54
|
return null;
|
|
52
55
|
}
|
|
56
|
+
const { action } = actionResult;
|
|
53
57
|
if (action === "remove_approved" && whitelist.length > 0) {
|
|
54
|
-
const
|
|
58
|
+
const result = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
|
|
55
59
|
type: "select",
|
|
56
60
|
name: "pattern",
|
|
57
61
|
message: "Select item to remove from approved list:",
|
|
58
62
|
choices: whitelist.map((p) => ({ name: p, message: p }))
|
|
59
63
|
});
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
if (result) {
|
|
65
|
+
await ctx.permissionManager.removeFromWhitelist(result.pattern);
|
|
66
|
+
console.log(_chalk2.default.yellow(`Removed "${result.pattern}" from approved list.`));
|
|
67
|
+
}
|
|
62
68
|
} else if (action === "remove_denied" && blacklist.length > 0) {
|
|
63
|
-
const
|
|
69
|
+
const result = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
|
|
64
70
|
type: "select",
|
|
65
71
|
name: "pattern",
|
|
66
72
|
message: "Select item to remove from denied list:",
|
|
67
73
|
choices: blacklist.map((p) => ({ name: p, message: p }))
|
|
68
74
|
});
|
|
69
|
-
|
|
70
|
-
|
|
75
|
+
if (result) {
|
|
76
|
+
await ctx.permissionManager.removeFromBlacklist(result.pattern);
|
|
77
|
+
console.log(_chalk2.default.yellow(`Removed "${result.pattern}" from denied list.`));
|
|
78
|
+
}
|
|
71
79
|
} else if (action === "clear_all") {
|
|
72
|
-
const
|
|
80
|
+
const result = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
|
|
73
81
|
type: "confirm",
|
|
74
82
|
name: "confirm",
|
|
75
83
|
message: "Clear all saved permissions? This cannot be undone.",
|
|
76
84
|
initial: false
|
|
77
85
|
});
|
|
78
|
-
if (confirm) {
|
|
86
|
+
if (_optionalChain([result, 'optionalAccess', _ => _.confirm])) {
|
|
79
87
|
for (const pattern of [...whitelist]) {
|
|
80
88
|
await ctx.permissionManager.removeFromWhitelist(pattern);
|
|
81
89
|
}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getAuthClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CHQMK2ZG.js";
|
|
4
4
|
import {
|
|
5
5
|
saveConfig
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-AY2XV7TH.js";
|
|
7
|
+
import {
|
|
8
|
+
safePrompt
|
|
9
|
+
} from "./chunk-7BYSXAKS.js";
|
|
7
10
|
|
|
8
11
|
// src/commands/logout.ts
|
|
9
12
|
import chalk from "chalk";
|
|
10
|
-
import enquirer from "enquirer";
|
|
11
13
|
var metadata = {
|
|
12
14
|
command: "/logout",
|
|
13
15
|
description: "sign out of your Autohand account",
|
|
@@ -21,13 +23,13 @@ async function logout(ctx) {
|
|
|
21
23
|
return null;
|
|
22
24
|
}
|
|
23
25
|
const userName = config.auth.user?.name || config.auth.user?.email || "user";
|
|
24
|
-
const
|
|
26
|
+
const result = await safePrompt({
|
|
25
27
|
type: "confirm",
|
|
26
28
|
name: "confirm",
|
|
27
29
|
message: `Log out from ${chalk.cyan(userName)}?`,
|
|
28
30
|
initial: true
|
|
29
31
|
});
|
|
30
|
-
if (!confirm) {
|
|
32
|
+
if (!result || !result.confirm) {
|
|
31
33
|
console.log(chalk.gray("Logout cancelled."));
|
|
32
34
|
return null;
|
|
33
35
|
}
|