autohand-cli 0.7.5 → 0.7.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 (136) hide show
  1. package/README.md +2 -0
  2. package/dist/{AutomodeManager-TJSW2SQY.cjs → AutomodeManager-HV6M7EAX.cjs} +61 -22
  3. package/dist/{AutomodeManager-WIMHLG4W.js → AutomodeManager-YVCJXOMQ.js} +61 -22
  4. package/dist/CommunitySkillsCache-2BITCEAA.cjs +7 -0
  5. package/dist/{CommunitySkillsCache-XPDVYU3K.js → CommunitySkillsCache-Q22FUAR5.js} +2 -2
  6. package/dist/HookManager-X47HCM5G.cjs +6 -0
  7. package/dist/{HookManager-VIX56KFU.js → HookManager-ZXKHCD7U.js} +1 -1
  8. package/dist/MemoryManager-2ATHG7BH.js +7 -0
  9. package/dist/MemoryManager-AENCGCEW.cjs +7 -0
  10. package/dist/PermissionManager-6HZGTK2N.cjs +10 -0
  11. package/dist/{PermissionManager-YFZI4ZZ6.js → PermissionManager-HATZKTRC.js} +3 -3
  12. package/dist/SessionManager-AG4WT3DP.cjs +9 -0
  13. package/dist/{SessionManager-IMW2HGR3.js → SessionManager-S5R6O3NU.js} +2 -2
  14. package/dist/{SkillsRegistry-7NICF6FY.js → SkillsRegistry-R5WDM6T3.js} +2 -2
  15. package/dist/SkillsRegistry-ZXU6YDRP.cjs +8 -0
  16. package/dist/SyncApiClient-FAOMIZAP.js +10 -0
  17. package/dist/SyncApiClient-UOA4VLLD.cjs +10 -0
  18. package/dist/add-dir-OMK3Y4DM.cjs +8 -0
  19. package/dist/add-dir-PNU7AGKO.js +8 -0
  20. package/dist/{agents-B33IAATH.js → agents-ICAC3KD3.js} +2 -2
  21. package/dist/agents-YONWPKFS.cjs +9 -0
  22. package/dist/agents-new-NV557UVG.cjs +10 -0
  23. package/dist/{agents-new-KTXJFC5E.js → agents-new-QHM3CO4B.js} +2 -2
  24. package/dist/{chunk-MFLRXVKU.js → chunk-23JQSCTO.js} +1 -1
  25. package/dist/chunk-2JPUEN44.cjs +299 -0
  26. package/dist/{chunk-5PD2L6WI.js → chunk-3YEDXG6S.js} +1 -1
  27. package/dist/{chunk-3ZUWWML7.cjs → chunk-4M2GX7RH.cjs} +2 -2
  28. package/dist/chunk-4RWTUT2Z.js +151 -0
  29. package/dist/{chunk-CHQMK2ZG.js → chunk-52MLYK5P.js} +1 -1
  30. package/dist/{chunk-CVYEUA3D.cjs → chunk-53BR4MUW.cjs} +3 -3
  31. package/dist/{chunk-5WKR4HIB.js → chunk-5DN5KNXU.js} +1 -1
  32. package/dist/{chunk-3CO5R6M2.cjs → chunk-7TOHYAUF.cjs} +2 -2
  33. package/dist/{chunk-UPR5PKX4.cjs → chunk-7VW3A7DO.cjs} +7 -3
  34. package/dist/chunk-A552JHUJ.cjs +151 -0
  35. package/dist/{chunk-NGSLABLS.js → chunk-A6QBABQ7.js} +1 -1
  36. package/dist/chunk-ARVFUZOB.js +736 -0
  37. package/dist/{chunk-2FLBGPE3.js → chunk-AVL4DKQO.js} +6 -2
  38. package/dist/{chunk-CT2VTDPQ.cjs → chunk-B4ZPNXZE.cjs} +1 -1
  39. package/dist/{chunk-OKMYLMCR.cjs → chunk-B7EUETGY.cjs} +4 -4
  40. package/dist/chunk-C26EN22G.cjs +328 -0
  41. package/dist/chunk-DOTAX65F.js +328 -0
  42. package/dist/{chunk-SKT2CRNY.cjs → chunk-DSKVMFRM.cjs} +56 -8
  43. package/dist/{chunk-FUEL6BK7.js → chunk-EKY5PKQI.js} +15 -0
  44. package/dist/{chunk-YMP7AGNT.js → chunk-G77ZY4QG.js} +1 -1
  45. package/dist/{chunk-KN5C4TR4.cjs → chunk-GDTZQSJ6.cjs} +2 -2
  46. package/dist/{chunk-536VWSZK.cjs → chunk-GFJ6AETU.cjs} +4 -4
  47. package/dist/chunk-GR7VWN63.js +613 -0
  48. package/dist/{chunk-PVM5I5WI.js → chunk-GWIAMKKF.js} +1 -1
  49. package/dist/{chunk-XAM7SFVB.cjs → chunk-GWXXFQ3F.cjs} +2 -2
  50. package/dist/{chunk-REPKBECD.cjs → chunk-JHFH3N4U.cjs} +2 -2
  51. package/dist/{chunk-4L5WYXHN.js → chunk-KH7BCZJN.js} +1 -1
  52. package/dist/{chunk-JXOXZTMA.js → chunk-L5ZFPWHY.js} +54 -6
  53. package/dist/chunk-MDWULS57.js +288 -0
  54. package/dist/{chunk-6LP2GO5C.js → chunk-MJFBVQHB.js} +2 -2
  55. package/dist/{chunk-MWLAHCU7.js → chunk-NI3BQXKU.js} +1 -1
  56. package/dist/{chunk-63XGCFCC.cjs → chunk-NYQVQYIF.cjs} +6 -103
  57. package/dist/{chunk-SKU4M27Z.js → chunk-OBV3UUIL.js} +1 -1
  58. package/dist/{chunk-27ISZOFA.js → chunk-P2Z6GDEN.js} +1 -1
  59. package/dist/{chunk-XTHHDIBG.cjs → chunk-PMMSDR44.cjs} +16 -1
  60. package/dist/chunk-PR53E47T.cjs +613 -0
  61. package/dist/{chunk-URY4AS4L.cjs → chunk-PU534KPO.cjs} +4 -4
  62. package/dist/chunk-Q3WCMY3Z.js +104 -0
  63. package/dist/{chunk-EYBIKL2I.js → chunk-QXAPHGEW.js} +4 -101
  64. package/dist/chunk-SFGJQPGC.cjs +288 -0
  65. package/dist/{chunk-53YDUYNS.cjs → chunk-SLISYSP4.cjs} +2 -2
  66. package/dist/{chunk-2E2COWKB.cjs → chunk-SYJLMBLP.cjs} +66 -10
  67. package/dist/chunk-U5WIP4HS.js +674 -0
  68. package/dist/{chunk-7HB7GSQF.js → chunk-UL7YPRCU.js} +1 -1
  69. package/dist/chunk-VDZJ3W4M.cjs +104 -0
  70. package/dist/{chunk-LUKMRIKJ.cjs → chunk-VEDIYPWY.cjs} +2 -2
  71. package/dist/{chunk-C2NFLFHH.js → chunk-VPAN5H7Q.js} +1 -1
  72. package/dist/chunk-WH3D42BQ.js +299 -0
  73. package/dist/{chunk-2FSQPRPJ.js → chunk-WIUGUR5T.js} +59 -3
  74. package/dist/{chunk-QMVTT55Y.cjs → chunk-WQSWU2QA.cjs} +4 -4
  75. package/dist/chunk-XFPITUFJ.cjs +674 -0
  76. package/dist/chunk-XFQS2VGT.cjs +736 -0
  77. package/dist/{chunk-HYTYXN2G.cjs → chunk-YAGD43KA.cjs} +10 -10
  78. package/dist/constants-G2PLP5HH.cjs +20 -0
  79. package/dist/{constants-QYBEF3DB.js → constants-ZLG6M5SI.js} +3 -1
  80. package/dist/{defaultHooks-3G3DVF6I.js → defaultHooks-R56VYG7I.js} +315 -1
  81. package/dist/{defaultHooks-Z4KA6U5C.cjs → defaultHooks-WLMRQUXG.cjs} +315 -1
  82. package/dist/{feedback-PZ2PINDU.js → feedback-HZBCTSFG.js} +2 -2
  83. package/dist/feedback-JBQ3UPGZ.cjs +10 -0
  84. package/dist/index.cjs +2669 -978
  85. package/dist/index.js +2657 -966
  86. package/dist/language-KODBDE5R.js +12 -0
  87. package/dist/language-SJT475NW.cjs +12 -0
  88. package/dist/localProjectPermissions-AYQYGTOE.cjs +17 -0
  89. package/dist/{localProjectPermissions-DURCNDZG.js → localProjectPermissions-YFFAKLUZ.js} +2 -2
  90. package/dist/login-TC2KROQI.js +14 -0
  91. package/dist/login-TYMR2ZD3.cjs +14 -0
  92. package/dist/logout-2ECV365P.js +12 -0
  93. package/dist/logout-CO3CPYZJ.cjs +12 -0
  94. package/dist/resume-EPOEF3WV.cjs +9 -0
  95. package/dist/{resume-2NERFSTD.js → resume-LOYD5MMP.js} +2 -1
  96. package/dist/share-544SIZOY.js +10 -0
  97. package/dist/share-OETK2GUF.cjs +10 -0
  98. package/dist/{skills-CRFOVWEQ.js → skills-3YEEODHK.js} +1 -1
  99. package/dist/skills-CRM55MKM.cjs +12 -0
  100. package/dist/{skills-install-Z27KPEGF.cjs → skills-install-FTGOHOZ4.cjs} +5 -5
  101. package/dist/{skills-install-RMPXN6RK.js → skills-install-KAXAQSN6.js} +2 -2
  102. package/dist/skills-new-JF4FKNUT.cjs +11 -0
  103. package/dist/{skills-new-S2YPO635.js → skills-new-JYX2GBKM.js} +2 -2
  104. package/dist/{status-VRYDAEBT.js → status-7LCXYYY4.js} +2 -1
  105. package/dist/status-E7MZEQ26.cjs +9 -0
  106. package/dist/sync-3B7SNBYC.js +14 -0
  107. package/dist/sync-4RARBQIH.cjs +39 -0
  108. package/dist/sync-H4UHHLKU.js +39 -0
  109. package/dist/sync-YZ6YZ42H.cjs +14 -0
  110. package/dist/theme-3XV5BWUB.js +12 -0
  111. package/dist/theme-Z2WS5XWZ.cjs +12 -0
  112. package/package.json +5 -2
  113. package/dist/CommunitySkillsCache-X3X237QQ.cjs +0 -7
  114. package/dist/HookManager-EOMUXKJ4.cjs +0 -6
  115. package/dist/MemoryManager-UVHILGV5.js +0 -7
  116. package/dist/MemoryManager-WO3KUZVA.cjs +0 -7
  117. package/dist/PermissionManager-PMTQN263.cjs +0 -10
  118. package/dist/SessionManager-VZNWGX4O.cjs +0 -9
  119. package/dist/SkillsRegistry-OINIPILA.cjs +0 -8
  120. package/dist/agents-GRAFXZY3.cjs +0 -9
  121. package/dist/agents-new-67NJJSDA.cjs +0 -10
  122. package/dist/chunk-55DQY6B5.js +0 -49
  123. package/dist/chunk-RYY5I7QN.cjs +0 -49
  124. package/dist/constants-PE5DLI7Q.cjs +0 -18
  125. package/dist/feedback-R66B3B3C.cjs +0 -10
  126. package/dist/localProjectPermissions-75X3ZGKH.cjs +0 -17
  127. package/dist/login-NYWZRZO5.js +0 -12
  128. package/dist/login-QNJ5C42G.cjs +0 -12
  129. package/dist/logout-MBS7L3ZW.js +0 -12
  130. package/dist/logout-MVUP7GPU.cjs +0 -12
  131. package/dist/resume-OYZMJRNO.cjs +0 -8
  132. package/dist/skills-6PIGHOWS.cjs +0 -12
  133. package/dist/skills-new-3QJUST7P.cjs +0 -11
  134. package/dist/status-CYVPCW7G.cjs +0 -8
  135. package/dist/theme-CVY6MVEK.cjs +0 -12
  136. package/dist/theme-CY7WF4M6.js +0 -12
@@ -0,0 +1,151 @@
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 _chunkPMMSDR44cjs = require('./chunk-PMMSDR44.cjs');
4
+
5
+ // src/commands/resume.ts
6
+ var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
7
+ var _enquirer = require('enquirer'); var _enquirer2 = _interopRequireDefault(_enquirer);
8
+ var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
9
+ var _path = require('path'); var _path2 = _interopRequireDefault(_path);
10
+ var metadata = {
11
+ command: "/resume",
12
+ description: "resume a previous session",
13
+ implemented: true
14
+ };
15
+ async function getSessionTitle(sessionMeta) {
16
+ if (sessionMeta.summary && sessionMeta.summary.trim()) {
17
+ return sessionMeta.summary.slice(0, 60);
18
+ }
19
+ try {
20
+ const conversationPath = _path2.default.join(_chunkPMMSDR44cjs.AUTOHAND_PATHS.sessions, sessionMeta.sessionId, "conversation.jsonl");
21
+ if (await _fsextra2.default.pathExists(conversationPath)) {
22
+ const content = await _fsextra2.default.readFile(conversationPath, "utf-8");
23
+ const lines = content.trim().split("\n").filter((line) => line);
24
+ for (const line of lines) {
25
+ try {
26
+ const msg = JSON.parse(line);
27
+ if (msg.role === "user" && msg.content) {
28
+ const cleanContent = msg.content.replace(/\n/g, " ").replace(/\s+/g, " ").trim();
29
+ return cleanContent.slice(0, 60) + (cleanContent.length > 60 ? "..." : "");
30
+ }
31
+ } catch (e) {
32
+ }
33
+ }
34
+ }
35
+ } catch (e2) {
36
+ }
37
+ return _chalk2.default.gray("(no title)");
38
+ }
39
+ function formatSessionChoice(sessionMeta, title) {
40
+ const date = new Date(sessionMeta.createdAt);
41
+ const timeAgo = getTimeAgo(date);
42
+ const msgCount = sessionMeta.messageCount;
43
+ return {
44
+ name: sessionMeta.sessionId,
45
+ message: title,
46
+ hint: `${timeAgo} - ${msgCount} messages - ${sessionMeta.projectName}`
47
+ };
48
+ }
49
+ function getTimeAgo(date) {
50
+ const now = /* @__PURE__ */ new Date();
51
+ const diffMs = now.getTime() - date.getTime();
52
+ const diffMins = Math.floor(diffMs / (1e3 * 60));
53
+ const diffHours = Math.floor(diffMs / (1e3 * 60 * 60));
54
+ const diffDays = Math.floor(diffMs / (1e3 * 60 * 60 * 24));
55
+ if (diffMins < 1) return "just now";
56
+ if (diffMins < 60) return `${diffMins}m ago`;
57
+ if (diffHours < 24) return `${diffHours}h ago`;
58
+ if (diffDays < 7) return `${diffDays}d ago`;
59
+ return date.toLocaleDateString("en-US", { month: "short", day: "numeric" });
60
+ }
61
+ async function resume(ctx) {
62
+ const sessionId = ctx.args[0];
63
+ if (sessionId) {
64
+ return resumeSession(ctx.sessionManager, sessionId);
65
+ }
66
+ try {
67
+ const allSessions = await ctx.sessionManager.listSessions();
68
+ if (allSessions.length === 0) {
69
+ console.log(_chalk2.default.gray("\nNo sessions found."));
70
+ console.log(_chalk2.default.gray("Start a new conversation to create a session.\n"));
71
+ return null;
72
+ }
73
+ console.log(_chalk2.default.cyan("\nSelect a session to resume:\n"));
74
+ const choices = [];
75
+ const recentSessions = allSessions.slice(0, 20);
76
+ for (const session of recentSessions) {
77
+ const title = await getSessionTitle(session);
78
+ choices.push(formatSessionChoice(session, title));
79
+ }
80
+ if (allSessions.length > 20) {
81
+ choices.push({
82
+ name: "__more__",
83
+ message: _chalk2.default.gray(`... ${allSessions.length - 20} more sessions`),
84
+ hint: "Use /sessions to see all"
85
+ });
86
+ }
87
+ const { selected } = await _enquirer2.default.prompt([
88
+ {
89
+ type: "select",
90
+ name: "selected",
91
+ message: "Choose a session",
92
+ choices
93
+ }
94
+ ]);
95
+ if (selected === "__more__") {
96
+ console.log(_chalk2.default.gray("\nUse /sessions to see all sessions, then /resume <id>"));
97
+ return null;
98
+ }
99
+ return resumeSession(ctx.sessionManager, selected);
100
+ } catch (error) {
101
+ if (error.name === "ExitPromptError" || _optionalChain([error, 'access', _ => _.message, 'optionalAccess', _2 => _2.includes, 'call', _3 => _3("canceled")])) {
102
+ console.log(_chalk2.default.gray("\nResume cancelled."));
103
+ return null;
104
+ }
105
+ console.error(_chalk2.default.red(`Failed to list sessions: ${error.message}`));
106
+ return null;
107
+ }
108
+ }
109
+ async function resumeSession(sessionManager, sessionId) {
110
+ try {
111
+ const session = await sessionManager.loadSession(sessionId);
112
+ const messages = session.getMessages();
113
+ const firstUserMessage = messages.find((m) => m.role === "user");
114
+ const title = session.metadata.summary || _optionalChain([firstUserMessage, 'optionalAccess', _4 => _4.content, 'access', _5 => _5.slice, 'call', _6 => _6(0, 50)]) || "Untitled session";
115
+ console.log(_chalk2.default.cyan(`
116
+ Resuming: ${title}`));
117
+ console.log(_chalk2.default.gray(` Project: ${session.metadata.projectPath}`));
118
+ console.log(_chalk2.default.gray(` Started: ${new Date(session.metadata.createdAt).toLocaleString()}`));
119
+ console.log(_chalk2.default.gray(` Messages: ${messages.length}`));
120
+ console.log();
121
+ if (messages.length > 0) {
122
+ console.log(_chalk2.default.cyan("Recent conversation:"));
123
+ console.log(_chalk2.default.gray("\u2500".repeat(60)));
124
+ const recentMessages = messages.slice(-5);
125
+ for (const msg of recentMessages) {
126
+ const role = msg.role === "user" ? _chalk2.default.green("You") : msg.role === "assistant" ? _chalk2.default.blue("Assistant") : _chalk2.default.gray(msg.role);
127
+ if (msg.role === "tool") continue;
128
+ const preview = msg.content.replace(/\n/g, " ").replace(/\s+/g, " ").slice(0, 100);
129
+ const truncated = msg.content.length > 100 ? "..." : "";
130
+ console.log(`${role}: ${_chalk2.default.white(preview)}${truncated}`);
131
+ }
132
+ console.log(_chalk2.default.gray("\u2500".repeat(60)));
133
+ console.log();
134
+ }
135
+ console.log(_chalk2.default.green("Session resumed. Continue typing to chat.\n"));
136
+ return "SESSION_RESUMED";
137
+ } catch (error) {
138
+ console.error(_chalk2.default.red(`Failed to resume session: ${error.message}`));
139
+ return null;
140
+ }
141
+ }
142
+
143
+
144
+
145
+
146
+ exports.metadata = metadata; exports.resume = resume;
147
+ /**
148
+ * @license
149
+ * Copyright 2025 Autohand AI LLC
150
+ * SPDX-License-Identifier: Apache-2.0
151
+ */
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-7BYSXAKS.js";
7
7
  import {
8
8
  AUTOHAND_PATHS
9
- } from "./chunk-FUEL6BK7.js";
9
+ } from "./chunk-EKY5PKQI.js";
10
10
 
11
11
  // src/commands/skills-new.ts
12
12
  import path from "path";