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.
Files changed (76) hide show
  1. package/dist/SkillsRegistry-LXDK73BL.cjs +9 -0
  2. package/dist/SkillsRegistry-SP5MX7OA.js +9 -0
  3. package/dist/agents-FH47ZMOI.cjs +10 -0
  4. package/dist/{agents-OJWYZN6X.js → agents-NB5VQN6H.js} +2 -2
  5. package/dist/{agents-new-WQLJOXSS.js → agents-new-M325HGWT.js} +3 -2
  6. package/dist/agents-new-XLEU26YI.cjs +11 -0
  7. package/dist/{chunk-DD2YPHP5.cjs → chunk-2OBNJCG6.cjs} +15 -13
  8. package/dist/{chunk-NWXYG5PQ.js → chunk-37NUB5KX.js} +1 -1
  9. package/dist/{chunk-AL4Z4WKG.cjs → chunk-3DPDLZYY.cjs} +9 -7
  10. package/dist/chunk-3HPUOQJN.cjs +23 -0
  11. package/dist/{chunk-G7SYGATA.cjs → chunk-3ZUWWML7.cjs} +2 -2
  12. package/dist/{chunk-3Y6G5DUX.cjs → chunk-53YDUYNS.cjs} +10 -4
  13. package/dist/{chunk-PRZTK2FX.js → chunk-5WKR4HIB.js} +7 -5
  14. package/dist/{chunk-ZTA2ASFW.cjs → chunk-6ZGNSZRG.cjs} +1 -1
  15. package/dist/chunk-7BYSXAKS.js +23 -0
  16. package/dist/{chunk-6FEZ6JAQ.js → chunk-7HB7GSQF.js} +1 -1
  17. package/dist/{chunk-UBGEAEKS.js → chunk-AY2XV7TH.js} +1 -1
  18. package/dist/{chunk-7RRX7H2X.cjs → chunk-B5N5UAMO.cjs} +20 -12
  19. package/dist/{chunk-KZ2UXXLH.js → chunk-BAHUKJJR.js} +7 -5
  20. package/dist/{chunk-KT55HW6V.js → chunk-CHQMK2ZG.js} +1 -1
  21. package/dist/chunk-CVYEUA3D.cjs +528 -0
  22. package/dist/{chunk-MRQV5HMC.js → chunk-DE7YC5MB.js} +8 -6
  23. package/dist/{chunk-AD4O67ZA.cjs → chunk-EJ77L3KT.cjs} +10 -10
  24. package/dist/{chunk-737A24RB.js → chunk-FUEL6BK7.js} +9 -1
  25. package/dist/{chunk-6MCXWSR3.js → chunk-H4RPZD6H.js} +1 -1
  26. package/dist/chunk-JHGIWNHL.cjs +46 -0
  27. package/dist/{chunk-27JNK5TE.cjs → chunk-LUKMRIKJ.cjs} +40 -61
  28. package/dist/{chunk-4H3B46YX.js → chunk-MWLAHCU7.js} +9 -3
  29. package/dist/{chunk-QCMC2WOC.cjs → chunk-N6ZOJI2M.cjs} +4 -4
  30. package/dist/{chunk-2TPGTNNY.js → chunk-NGSLABLS.js} +37 -58
  31. package/dist/chunk-QHPFA6OE.js +46 -0
  32. package/dist/{chunk-M4LKQQHU.cjs → chunk-REPKBECD.cjs} +2 -2
  33. package/dist/chunk-SKU4M27Z.js +528 -0
  34. package/dist/chunk-W4XTDUGT.js +267 -0
  35. package/dist/{chunk-RDEROLKA.cjs → chunk-XAM7SFVB.cjs} +8 -6
  36. package/dist/chunk-XF4EQ3IV.cjs +267 -0
  37. package/dist/{chunk-IHJDYAYJ.cjs → chunk-XTHHDIBG.cjs} +9 -1
  38. package/dist/{chunk-5N3QP5LJ.js → chunk-YDH2BMEN.js} +19 -11
  39. package/dist/constants-ICQLSGZN.cjs +19 -0
  40. package/dist/constants-N3I2FHCM.js +19 -0
  41. package/dist/feedback-TOGESBX7.cjs +11 -0
  42. package/dist/{feedback-3THCLEBE.js → feedback-YGSYBQEW.js} +3 -2
  43. package/dist/index.cjs +1463 -1146
  44. package/dist/index.js +987 -670
  45. package/dist/login-QVBS7KBK.cjs +13 -0
  46. package/dist/login-XUVEFKCR.js +13 -0
  47. package/dist/logout-75YLPOBK.js +13 -0
  48. package/dist/logout-FYYR5KCP.cjs +13 -0
  49. package/dist/{permissions-CYW62ZK3.js → permissions-3GS4ZWVA.js} +2 -1
  50. package/dist/permissions-E3MTIE7D.cjs +10 -0
  51. package/dist/{skills-HF4SAF5O.js → skills-3M26KASS.js} +3 -1
  52. package/dist/skills-BOFY5RQN.cjs +13 -0
  53. package/dist/skills-install-WJ2LDRQG.js +680 -0
  54. package/dist/skills-install-Z3W5PQWQ.cjs +680 -0
  55. package/dist/skills-new-KIBUN63X.js +12 -0
  56. package/dist/skills-new-XDYS24XW.cjs +12 -0
  57. package/dist/{status-SLYYTKXD.js → status-6FY6RKIS.js} +1 -1
  58. package/dist/status-DJHDT6QH.cjs +9 -0
  59. package/dist/theme-2UK74UWR.cjs +13 -0
  60. package/dist/{theme-THMQ5AIN.js → theme-XNZ2X6HE.js} +3 -3
  61. package/package.json +1 -1
  62. package/dist/agents-EHLYBJLK.cjs +0 -10
  63. package/dist/agents-new-7VPASCBV.cjs +0 -10
  64. package/dist/chunk-NEAJ2UWG.js +0 -191
  65. package/dist/chunk-Z6SGIQWH.cjs +0 -191
  66. package/dist/feedback-PATTKRH5.cjs +0 -10
  67. package/dist/login-QJROML5I.js +0 -12
  68. package/dist/login-X66DSV75.cjs +0 -12
  69. package/dist/logout-3Z7R3F7J.cjs +0 -12
  70. package/dist/logout-RJ5OAXRI.js +0 -12
  71. package/dist/permissions-NOC5DMOH.cjs +0 -9
  72. package/dist/skills-U6J6DFLK.cjs +0 -11
  73. package/dist/skills-new-QDTNEG3R.js +0 -10
  74. package/dist/skills-new-UPVBHIF2.cjs +0 -10
  75. package/dist/status-GR73LEEN.cjs +0 -9
  76. 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,9 @@
1
+ import {
2
+ SkillsRegistry
3
+ } from "./chunk-SKU4M27Z.js";
4
+ import "./chunk-QHPFA6OE.js";
5
+ import "./chunk-FUEL6BK7.js";
6
+ import "./chunk-JSBRDJBE.js";
7
+ export {
8
+ SkillsRegistry
9
+ };
@@ -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;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  handler,
3
3
  metadata
4
- } from "./chunk-6FEZ6JAQ.js";
5
- import "./chunk-737A24RB.js";
4
+ } from "./chunk-7HB7GSQF.js";
5
+ import "./chunk-FUEL6BK7.js";
6
6
  import "./chunk-JSBRDJBE.js";
7
7
  export {
8
8
  handler,
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  createAgent,
3
3
  metadata
4
- } from "./chunk-4H3B46YX.js";
5
- import "./chunk-737A24RB.js";
4
+ } from "./chunk-MWLAHCU7.js";
5
+ import "./chunk-7BYSXAKS.js";
6
+ import "./chunk-FUEL6BK7.js";
6
7
  import "./chunk-JSBRDJBE.js";
7
8
  export {
8
9
  createAgent,
@@ -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 _chunkM4LKQQHUcjs = require('./chunk-M4LKQQHU.cjs');
3
+ var _chunkREPKBECDcjs = require('./chunk-REPKBECD.cjs');
4
4
 
5
5
 
6
- var _chunkQCMC2WOCcjs = require('./chunk-QCMC2WOC.cjs');
6
+ var _chunkN6ZOJI2Mcjs = require('./chunk-N6ZOJI2M.cjs');
7
7
 
8
8
 
9
- var _chunkIHJDYAYJcjs = require('./chunk-IHJDYAYJ.cjs');
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 { continueLogin } = await _enquirer2.default.prompt({
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 = _chunkM4LKQQHUcjs.getAuthClient.call(void 0, );
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 || `${_chunkIHJDYAYJcjs.AUTH_CONFIG.authorizationUrl}?code=${initResult.userCode}`));
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 || `${_chunkIHJDYAYJcjs.AUTH_CONFIG.authorizationUrl}?code=${initResult.userCode}`
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 = _chunkIHJDYAYJcjs.AUTH_CONFIG.authTimeout;
88
- const pollInterval = initResult.interval ? initResult.interval * 1e3 : _chunkIHJDYAYJcjs.AUTH_CONFIG.pollInterval;
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() + _chunkIHJDYAYJcjs.AUTH_CONFIG.sessionExpiryDays * 24 * 60 * 60 * 1e3).toISOString();
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 _chunkQCMC2WOCcjs.saveConfig.call(void 0, updatedConfig);
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}!`));
@@ -5,7 +5,7 @@ import {
5
5
  isThemeInitialized,
6
6
  listAvailableThemes,
7
7
  saveConfig
8
- } from "./chunk-UBGEAEKS.js";
8
+ } from "./chunk-AY2XV7TH.js";
9
9
 
10
10
  // src/commands/theme.ts
11
11
  import chalk from "chalk";
@@ -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 _chunkM4LKQQHUcjs = require('./chunk-M4LKQQHU.cjs');
3
+ var _chunkREPKBECDcjs = require('./chunk-REPKBECD.cjs');
4
4
 
5
5
 
6
- var _chunkQCMC2WOCcjs = require('./chunk-QCMC2WOC.cjs');
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 { confirm } = await _enquirer2.default.prompt({
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 = _chunkM4LKQQHUcjs.getAuthClient.call(void 0, );
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 _chunkQCMC2WOCcjs.saveConfig.call(void 0, updatedConfig);
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 _chunkIHJDYAYJcjs = require('./chunk-IHJDYAYJ.cjs');
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 = _chunkIHJDYAYJcjs.AUTOHAND_PATHS.agents;
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 _chunkIHJDYAYJcjs = require('./chunk-IHJDYAYJ.cjs');
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 _enquirer2.default.prompt([
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 _chunkIHJDYAYJcjs.AUTOHAND_PATHS.agents;
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-737A24RB.js";
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 enquirer.prompt([
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 (empty)."));
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.4",
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,6 @@
1
1
  import {
2
2
  AUTOHAND_PATHS
3
- } from "./chunk-737A24RB.js";
3
+ } from "./chunk-FUEL6BK7.js";
4
4
 
5
5
  // src/commands/agents.ts
6
6
  import chalk from "chalk";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AUTOHAND_FILES
3
- } from "./chunk-737A24RB.js";
3
+ } from "./chunk-FUEL6BK7.js";
4
4
 
5
5
  // src/ui/theme/Theme.ts
6
6
  var Theme = class {
@@ -1,6 +1,9 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/commands/permissions.ts
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 { action } = await _enquirer2.default.prompt({
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 { pattern } = await _enquirer2.default.prompt({
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
- await ctx.permissionManager.removeFromWhitelist(pattern);
61
- console.log(_chalk2.default.yellow(`Removed "${pattern}" from approved list.`));
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 { pattern } = await _enquirer2.default.prompt({
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
- await ctx.permissionManager.removeFromBlacklist(pattern);
70
- console.log(_chalk2.default.yellow(`Removed "${pattern}" from denied list.`));
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 { confirm } = await _enquirer2.default.prompt({
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-KT55HW6V.js";
3
+ } from "./chunk-CHQMK2ZG.js";
4
4
  import {
5
5
  saveConfig
6
- } from "./chunk-UBGEAEKS.js";
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 { confirm } = await enquirer.prompt({
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
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AUTH_CONFIG
3
- } from "./chunk-737A24RB.js";
3
+ } from "./chunk-FUEL6BK7.js";
4
4
 
5
5
  // src/auth/AuthClient.ts
6
6
  var DEFAULT_TIMEOUT = 1e4;