@bradygaster/squad-cli 0.8.4 → 0.8.16

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 (156) hide show
  1. package/README.md +2 -2
  2. package/dist/cli/commands/aspire.d.ts.map +1 -1
  3. package/dist/cli/commands/aspire.js +7 -8
  4. package/dist/cli/commands/aspire.js.map +1 -1
  5. package/dist/cli/commands/copilot-bridge.d.ts +42 -0
  6. package/dist/cli/commands/copilot-bridge.d.ts.map +1 -0
  7. package/dist/cli/commands/copilot-bridge.js +191 -0
  8. package/dist/cli/commands/copilot-bridge.js.map +1 -0
  9. package/dist/cli/commands/import.js.map +1 -1
  10. package/dist/cli/commands/rc-tunnel.d.ts +30 -0
  11. package/dist/cli/commands/rc-tunnel.d.ts.map +1 -0
  12. package/dist/cli/commands/rc-tunnel.js +107 -0
  13. package/dist/cli/commands/rc-tunnel.js.map +1 -0
  14. package/dist/cli/commands/rc.d.ts +13 -0
  15. package/dist/cli/commands/rc.d.ts.map +1 -0
  16. package/dist/cli/commands/rc.js +270 -0
  17. package/dist/cli/commands/rc.js.map +1 -0
  18. package/dist/cli/commands/start.d.ts +18 -0
  19. package/dist/cli/commands/start.d.ts.map +1 -0
  20. package/dist/cli/commands/start.js +219 -0
  21. package/dist/cli/commands/start.js.map +1 -0
  22. package/dist/cli/commands/upstream.js.map +1 -1
  23. package/dist/cli/commands/watch.d.ts +10 -0
  24. package/dist/cli/commands/watch.d.ts.map +1 -1
  25. package/dist/cli/commands/watch.js +181 -65
  26. package/dist/cli/commands/watch.js.map +1 -1
  27. package/dist/cli/core/cast.d.ts +40 -0
  28. package/dist/cli/core/cast.d.ts.map +1 -0
  29. package/dist/cli/core/cast.js +442 -0
  30. package/dist/cli/core/cast.js.map +1 -0
  31. package/dist/cli/core/gh-cli.d.ts +25 -0
  32. package/dist/cli/core/gh-cli.d.ts.map +1 -1
  33. package/dist/cli/core/gh-cli.js +15 -1
  34. package/dist/cli/core/gh-cli.js.map +1 -1
  35. package/dist/cli/core/init.d.ts +9 -1
  36. package/dist/cli/core/init.d.ts.map +1 -1
  37. package/dist/cli/core/init.js +108 -13
  38. package/dist/cli/core/init.js.map +1 -1
  39. package/dist/cli/core/migrations.js.map +1 -1
  40. package/dist/cli/core/nap.d.ts +37 -0
  41. package/dist/cli/core/nap.d.ts.map +1 -0
  42. package/dist/cli/core/nap.js +528 -0
  43. package/dist/cli/core/nap.js.map +1 -0
  44. package/dist/cli/core/output.d.ts +5 -0
  45. package/dist/cli/core/output.d.ts.map +1 -1
  46. package/dist/cli/core/output.js +7 -0
  47. package/dist/cli/core/output.js.map +1 -1
  48. package/dist/cli/core/upgrade.d.ts +0 -1
  49. package/dist/cli/core/upgrade.d.ts.map +1 -1
  50. package/dist/cli/core/upgrade.js.map +1 -1
  51. package/dist/cli/core/version.js.map +1 -1
  52. package/dist/cli/shell/agent-status.d.ts +11 -0
  53. package/dist/cli/shell/agent-status.d.ts.map +1 -0
  54. package/dist/cli/shell/agent-status.js +26 -0
  55. package/dist/cli/shell/agent-status.js.map +1 -0
  56. package/dist/cli/shell/commands.d.ts +10 -0
  57. package/dist/cli/shell/commands.d.ts.map +1 -1
  58. package/dist/cli/shell/commands.js +143 -29
  59. package/dist/cli/shell/commands.js.map +1 -1
  60. package/dist/cli/shell/components/AgentPanel.d.ts +1 -4
  61. package/dist/cli/shell/components/AgentPanel.d.ts.map +1 -1
  62. package/dist/cli/shell/components/AgentPanel.js +88 -6
  63. package/dist/cli/shell/components/AgentPanel.js.map +1 -1
  64. package/dist/cli/shell/components/App.d.ts +11 -6
  65. package/dist/cli/shell/components/App.d.ts.map +1 -1
  66. package/dist/cli/shell/components/App.js +212 -35
  67. package/dist/cli/shell/components/App.js.map +1 -1
  68. package/dist/cli/shell/components/ErrorBoundary.d.ts +22 -0
  69. package/dist/cli/shell/components/ErrorBoundary.d.ts.map +1 -0
  70. package/dist/cli/shell/components/ErrorBoundary.js +31 -0
  71. package/dist/cli/shell/components/ErrorBoundary.js.map +1 -0
  72. package/dist/cli/shell/components/InputPrompt.d.ts +3 -0
  73. package/dist/cli/shell/components/InputPrompt.d.ts.map +1 -1
  74. package/dist/cli/shell/components/InputPrompt.js +155 -13
  75. package/dist/cli/shell/components/InputPrompt.js.map +1 -1
  76. package/dist/cli/shell/components/MessageStream.d.ts +17 -4
  77. package/dist/cli/shell/components/MessageStream.d.ts.map +1 -1
  78. package/dist/cli/shell/components/MessageStream.js +215 -23
  79. package/dist/cli/shell/components/MessageStream.js.map +1 -1
  80. package/dist/cli/shell/components/Separator.d.ts +17 -0
  81. package/dist/cli/shell/components/Separator.d.ts.map +1 -0
  82. package/dist/cli/shell/components/Separator.js +10 -0
  83. package/dist/cli/shell/components/Separator.js.map +1 -0
  84. package/dist/cli/shell/components/ThinkingIndicator.d.ts +21 -0
  85. package/dist/cli/shell/components/ThinkingIndicator.d.ts.map +1 -0
  86. package/dist/cli/shell/components/ThinkingIndicator.js +102 -0
  87. package/dist/cli/shell/components/ThinkingIndicator.js.map +1 -0
  88. package/dist/cli/shell/components/index.d.ts +3 -0
  89. package/dist/cli/shell/components/index.d.ts.map +1 -1
  90. package/dist/cli/shell/components/index.js +2 -0
  91. package/dist/cli/shell/components/index.js.map +1 -1
  92. package/dist/cli/shell/coordinator.d.ts +10 -0
  93. package/dist/cli/shell/coordinator.d.ts.map +1 -1
  94. package/dist/cli/shell/coordinator.js +99 -4
  95. package/dist/cli/shell/coordinator.js.map +1 -1
  96. package/dist/cli/shell/error-messages.d.ts +21 -0
  97. package/dist/cli/shell/error-messages.d.ts.map +1 -0
  98. package/dist/cli/shell/error-messages.js +61 -0
  99. package/dist/cli/shell/error-messages.js.map +1 -0
  100. package/dist/cli/shell/index.d.ts +24 -3
  101. package/dist/cli/shell/index.d.ts.map +1 -1
  102. package/dist/cli/shell/index.js +949 -29
  103. package/dist/cli/shell/index.js.map +1 -1
  104. package/dist/cli/shell/lifecycle.d.ts +2 -0
  105. package/dist/cli/shell/lifecycle.d.ts.map +1 -1
  106. package/dist/cli/shell/lifecycle.js +59 -6
  107. package/dist/cli/shell/lifecycle.js.map +1 -1
  108. package/dist/cli/shell/memory.d.ts +6 -1
  109. package/dist/cli/shell/memory.d.ts.map +1 -1
  110. package/dist/cli/shell/memory.js +12 -1
  111. package/dist/cli/shell/memory.js.map +1 -1
  112. package/dist/cli/shell/router.d.ts +16 -0
  113. package/dist/cli/shell/router.d.ts.map +1 -1
  114. package/dist/cli/shell/router.js +27 -0
  115. package/dist/cli/shell/router.js.map +1 -1
  116. package/dist/cli/shell/session-store.d.ts +47 -0
  117. package/dist/cli/shell/session-store.d.ts.map +1 -0
  118. package/dist/cli/shell/session-store.js +125 -0
  119. package/dist/cli/shell/session-store.js.map +1 -0
  120. package/dist/cli/shell/sessions.d.ts +2 -0
  121. package/dist/cli/shell/sessions.d.ts.map +1 -1
  122. package/dist/cli/shell/sessions.js +19 -5
  123. package/dist/cli/shell/sessions.js.map +1 -1
  124. package/dist/cli/shell/shell-metrics.d.ts +34 -0
  125. package/dist/cli/shell/shell-metrics.d.ts.map +1 -0
  126. package/dist/cli/shell/shell-metrics.js +98 -0
  127. package/dist/cli/shell/shell-metrics.js.map +1 -0
  128. package/dist/cli/shell/spawn.d.ts.map +1 -1
  129. package/dist/cli/shell/spawn.js +20 -6
  130. package/dist/cli/shell/spawn.js.map +1 -1
  131. package/dist/cli/shell/terminal.d.ts +26 -0
  132. package/dist/cli/shell/terminal.d.ts.map +1 -1
  133. package/dist/cli/shell/terminal.js +65 -2
  134. package/dist/cli/shell/terminal.js.map +1 -1
  135. package/dist/cli/shell/theme-colors.d.ts +39 -0
  136. package/dist/cli/shell/theme-colors.d.ts.map +1 -0
  137. package/dist/cli/shell/theme-colors.js +39 -0
  138. package/dist/cli/shell/theme-colors.js.map +1 -0
  139. package/dist/cli/shell/types.d.ts +2 -0
  140. package/dist/cli/shell/types.d.ts.map +1 -1
  141. package/dist/cli/shell/useAnimation.d.ts +42 -0
  142. package/dist/cli/shell/useAnimation.d.ts.map +1 -0
  143. package/dist/cli/shell/useAnimation.js +139 -0
  144. package/dist/cli/shell/useAnimation.js.map +1 -0
  145. package/dist/cli-entry.d.ts +0 -7
  146. package/dist/cli-entry.d.ts.map +1 -1
  147. package/dist/cli-entry.js +701 -96
  148. package/dist/cli-entry.js.map +1 -1
  149. package/package.json +156 -140
  150. package/templates/orchestration-log.md +1 -1
  151. package/templates/package.json +3 -0
  152. package/templates/ralph-triage.js +543 -0
  153. package/templates/scribe-charter.md +1 -1
  154. package/templates/squad.agent.md +10 -10
  155. package/templates/workflows/squad-heartbeat.yml +52 -196
  156. package/templates/workflows/squad-insider-release.yml +1 -1
@@ -0,0 +1,528 @@
1
+ /**
2
+ * Nap — context hygiene engine for .squad/ state
3
+ * Compresses histories, prunes logs, archives decisions, cleans inbox.
4
+ * @module cli/core/nap
5
+ */
6
+ import fs from 'node:fs';
7
+ import path from 'node:path';
8
+ // ─── Constants ──────────────────────────────────────────────────────────
9
+ const HISTORY_THRESHOLD = 15 * 1024; // 15 KB
10
+ const DECISION_THRESHOLD = 20 * 1024; // 20 KB
11
+ const LOG_MAX_AGE_DAYS = 7;
12
+ const DECISION_MAX_AGE_DAYS = 30;
13
+ const KEEP_ENTRIES_DEFAULT = 5;
14
+ const KEEP_ENTRIES_DEEP = 3;
15
+ const JOURNAL_FILE = '.nap-journal';
16
+ const TOKENS_PER_KB = 250;
17
+ // ─── Helpers ────────────────────────────────────────────────────────────
18
+ function collectFiles(dir) {
19
+ if (!fs.existsSync(dir))
20
+ return [];
21
+ const results = [];
22
+ const walk = (d) => {
23
+ for (const entry of fs.readdirSync(d, { withFileTypes: true })) {
24
+ const full = path.join(d, entry.name);
25
+ if (entry.isDirectory())
26
+ walk(full);
27
+ else
28
+ results.push(full);
29
+ }
30
+ };
31
+ walk(dir);
32
+ return results;
33
+ }
34
+ function dirSize(dir) {
35
+ const files = collectFiles(dir);
36
+ let bytes = 0;
37
+ for (const f of files) {
38
+ try {
39
+ bytes += fs.statSync(f).size;
40
+ }
41
+ catch { /* skip */ }
42
+ }
43
+ return { files: files.length, bytes };
44
+ }
45
+ function fileSize(p) {
46
+ try {
47
+ return fs.statSync(p).size;
48
+ }
49
+ catch {
50
+ return 0;
51
+ }
52
+ }
53
+ function isOlderThan(filePath, days) {
54
+ try {
55
+ const stat = fs.statSync(filePath);
56
+ const cutoff = Date.now() - days * 24 * 60 * 60 * 1000;
57
+ return stat.mtimeMs < cutoff;
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ }
63
+ function humanBytes(bytes) {
64
+ if (bytes < 1024)
65
+ return `${bytes} B`;
66
+ if (bytes < 1024 * 1024)
67
+ return `${(bytes / 1024).toFixed(1)} KB`;
68
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
69
+ }
70
+ function humanTokens(bytes) {
71
+ const tokens = Math.round((bytes / 1024) * TOKENS_PER_KB);
72
+ if (tokens < 1000)
73
+ return `${tokens}`;
74
+ return `${(tokens / 1000).toFixed(0)}K`;
75
+ }
76
+ function daysAgoFromLine(line) {
77
+ // Match dates like 2026-02-28 or ### 2026-02-28
78
+ const m = line.match(/(\d{4}-\d{2}-\d{2})/);
79
+ if (!m)
80
+ return null;
81
+ const d = new Date(m[1]);
82
+ if (isNaN(d.getTime()))
83
+ return null;
84
+ return (Date.now() - d.getTime()) / (24 * 60 * 60 * 1000);
85
+ }
86
+ // ─── Metrics collection ─────────────────────────────────────────────────
87
+ function collectMetrics(squadDir) {
88
+ const agentsDir = path.join(squadDir, 'agents');
89
+ const orchLogDir = path.join(squadDir, 'orchestration-log');
90
+ const logDir = path.join(squadDir, 'log');
91
+ const decisionsFile = path.join(squadDir, 'decisions.md');
92
+ const inboxDir = path.join(squadDir, 'decisions', 'inbox');
93
+ let historyBytes = 0;
94
+ if (fs.existsSync(agentsDir)) {
95
+ for (const agent of fs.readdirSync(agentsDir, { withFileTypes: true })) {
96
+ if (!agent.isDirectory())
97
+ continue;
98
+ const hf = path.join(agentsDir, agent.name, 'history.md');
99
+ historyBytes += fileSize(hf);
100
+ }
101
+ }
102
+ const orchLog = dirSize(orchLogDir);
103
+ const sessionLog = dirSize(logDir);
104
+ const logBytes = orchLog.bytes + sessionLog.bytes;
105
+ const decisionBytes = fileSize(decisionsFile);
106
+ let inboxFiles = 0;
107
+ if (fs.existsSync(inboxDir)) {
108
+ inboxFiles = fs.readdirSync(inboxDir).filter(f => !f.startsWith('.')).length;
109
+ }
110
+ const total = dirSize(squadDir);
111
+ return {
112
+ totalFiles: total.files,
113
+ totalBytes: total.bytes,
114
+ historyBytes,
115
+ logBytes,
116
+ decisionBytes,
117
+ inboxFiles,
118
+ };
119
+ }
120
+ // ─── History compression ────────────────────────────────────────────────
121
+ function compressHistory(filePath, keepEntries, dryRun) {
122
+ if (!fs.existsSync(filePath))
123
+ return null;
124
+ const size = fileSize(filePath);
125
+ if (size <= HISTORY_THRESHOLD)
126
+ return null;
127
+ const content = fs.readFileSync(filePath, 'utf8');
128
+ const lines = content.split('\n');
129
+ // Find ## Core Context section bounds
130
+ let coreStart = -1;
131
+ let coreEnd = -1;
132
+ for (let i = 0; i < lines.length; i++) {
133
+ if (lines[i].match(/^##\s+Core\s+Context/i)) {
134
+ coreStart = i;
135
+ // Ends at next ## heading or end of file
136
+ for (let j = i + 1; j < lines.length; j++) {
137
+ if (lines[j].match(/^##\s/)) {
138
+ coreEnd = j;
139
+ break;
140
+ }
141
+ }
142
+ if (coreEnd === -1)
143
+ coreEnd = lines.length;
144
+ break;
145
+ }
146
+ }
147
+ // Find all ## Learnings sections (or any ## section after Core Context)
148
+ const sections = [];
149
+ for (let i = 0; i < lines.length; i++) {
150
+ if (i === coreStart) {
151
+ i = coreEnd - 1;
152
+ continue;
153
+ }
154
+ if (lines[i].match(/^##\s/)) {
155
+ const secStart = i;
156
+ let secEnd = lines.length;
157
+ for (let j = i + 1; j < lines.length; j++) {
158
+ if (lines[j].match(/^##\s/)) {
159
+ secEnd = j;
160
+ break;
161
+ }
162
+ }
163
+ sections.push({ start: secStart, end: secEnd });
164
+ i = secEnd - 1;
165
+ }
166
+ }
167
+ if (sections.length <= keepEntries)
168
+ return null;
169
+ // Keep the most recent N sections (last N)
170
+ const keep = sections.slice(-keepEntries);
171
+ const archive = sections.slice(0, -keepEntries);
172
+ // Build archive content
173
+ const archiveLines = [];
174
+ for (const sec of archive) {
175
+ archiveLines.push(...lines.slice(sec.start, sec.end));
176
+ archiveLines.push('');
177
+ }
178
+ // Build new file: header (lines before first section or core context) + core context + kept sections
179
+ const newLines = [];
180
+ // Lines before any ## heading
181
+ const firstHeading = Math.min(coreStart >= 0 ? coreStart : Infinity, sections.length > 0 ? sections[0].start : Infinity);
182
+ if (firstHeading < Infinity) {
183
+ newLines.push(...lines.slice(0, firstHeading));
184
+ }
185
+ // Core context
186
+ if (coreStart >= 0) {
187
+ newLines.push(...lines.slice(coreStart, coreEnd));
188
+ if (!newLines[newLines.length - 1]?.match(/^\s*$/))
189
+ newLines.push('');
190
+ }
191
+ // Kept sections
192
+ for (const sec of keep) {
193
+ newLines.push(...lines.slice(sec.start, sec.end));
194
+ if (!newLines[newLines.length - 1]?.match(/^\s*$/))
195
+ newLines.push('');
196
+ }
197
+ const newContent = newLines.join('\n');
198
+ const archiveContent = archiveLines.join('\n');
199
+ const saved = size - Buffer.byteLength(newContent, 'utf8');
200
+ if (!dryRun) {
201
+ const archivePath = filePath.replace(/\.md$/, '-archive.md');
202
+ // Append to archive
203
+ if (archiveContent.trim()) {
204
+ fs.appendFileSync(archivePath, archiveContent + '\n', 'utf8');
205
+ }
206
+ fs.writeFileSync(filePath, newContent, 'utf8');
207
+ }
208
+ const relPath = path.basename(path.dirname(filePath));
209
+ return {
210
+ type: 'compress',
211
+ target: filePath,
212
+ description: `Compressed ${relPath}/history.md: kept ${keepEntries} entries, archived ${archive.length}`,
213
+ bytesSaved: Math.max(0, saved),
214
+ };
215
+ }
216
+ // ─── Log pruning ────────────────────────────────────────────────────────
217
+ function pruneLogs(dir, dryRun) {
218
+ if (!fs.existsSync(dir))
219
+ return [];
220
+ const actions = [];
221
+ const files = collectFiles(dir);
222
+ for (const f of files) {
223
+ if (isOlderThan(f, LOG_MAX_AGE_DAYS)) {
224
+ const size = fileSize(f);
225
+ if (!dryRun) {
226
+ fs.unlinkSync(f);
227
+ }
228
+ actions.push({
229
+ type: 'prune',
230
+ target: f,
231
+ description: `Pruned old log: ${path.basename(f)}`,
232
+ bytesSaved: size,
233
+ });
234
+ }
235
+ }
236
+ return actions;
237
+ }
238
+ // ─── Inbox cleanup ──────────────────────────────────────────────────────
239
+ function cleanInbox(squadDir, dryRun) {
240
+ const inboxDir = path.join(squadDir, 'decisions', 'inbox');
241
+ const decisionsFile = path.join(squadDir, 'decisions.md');
242
+ if (!fs.existsSync(inboxDir))
243
+ return [];
244
+ const files = fs.readdirSync(inboxDir).filter(f => !f.startsWith('.'));
245
+ if (files.length === 0)
246
+ return [];
247
+ const actions = [];
248
+ for (const f of files) {
249
+ const fp = path.join(inboxDir, f);
250
+ const stat = fs.statSync(fp);
251
+ if (!stat.isFile())
252
+ continue;
253
+ const content = fs.readFileSync(fp, 'utf8');
254
+ const size = stat.size;
255
+ if (!dryRun) {
256
+ fs.appendFileSync(decisionsFile, '\n' + content.trimEnd() + '\n', 'utf8');
257
+ fs.unlinkSync(fp);
258
+ }
259
+ actions.push({
260
+ type: 'merge',
261
+ target: fp,
262
+ description: `Merged inbox file: ${f} into decisions.md`,
263
+ bytesSaved: size,
264
+ });
265
+ }
266
+ return actions;
267
+ }
268
+ // ─── Decision archival ──────────────────────────────────────────────────
269
+ function archiveDecisions(squadDir, dryRun) {
270
+ const decisionsFile = path.join(squadDir, 'decisions.md');
271
+ if (!fs.existsSync(decisionsFile))
272
+ return null;
273
+ const size = fileSize(decisionsFile);
274
+ if (size <= DECISION_THRESHOLD)
275
+ return null;
276
+ const content = fs.readFileSync(decisionsFile, 'utf8');
277
+ const lines = content.split('\n');
278
+ // Find entry boundaries (### headings)
279
+ const entries = [];
280
+ for (let i = 0; i < lines.length; i++) {
281
+ if (lines[i].match(/^###\s/)) {
282
+ const entryStart = i;
283
+ let entryEnd = lines.length;
284
+ for (let j = i + 1; j < lines.length; j++) {
285
+ if (lines[j].match(/^###\s/)) {
286
+ entryEnd = j;
287
+ break;
288
+ }
289
+ }
290
+ const age = daysAgoFromLine(lines[i]);
291
+ entries.push({ start: entryStart, end: entryEnd, daysAgo: age });
292
+ i = entryEnd - 1;
293
+ }
294
+ }
295
+ // Split: keep entries from last 30 days
296
+ const recent = [];
297
+ const old = [];
298
+ for (const e of entries) {
299
+ if (e.daysAgo !== null && e.daysAgo > DECISION_MAX_AGE_DAYS) {
300
+ old.push(e);
301
+ }
302
+ else {
303
+ recent.push(e);
304
+ }
305
+ }
306
+ if (old.length === 0)
307
+ return null;
308
+ // Header: lines before first ### heading
309
+ const headerEnd = entries.length > 0 ? entries[0].start : lines.length;
310
+ const header = lines.slice(0, headerEnd).join('\n');
311
+ const recentContent = header + '\n' + recent.map(e => lines.slice(e.start, e.end).join('\n')).join('\n') + '\n';
312
+ const archiveContent = old.map(e => lines.slice(e.start, e.end).join('\n')).join('\n') + '\n';
313
+ const saved = size - Buffer.byteLength(recentContent, 'utf8');
314
+ if (!dryRun) {
315
+ const archivePath = path.join(squadDir, 'decisions-archive.md');
316
+ if (archiveContent.trim()) {
317
+ fs.appendFileSync(archivePath, archiveContent, 'utf8');
318
+ }
319
+ fs.writeFileSync(decisionsFile, recentContent, 'utf8');
320
+ }
321
+ return {
322
+ type: 'archive',
323
+ target: decisionsFile,
324
+ description: `Archived ${old.length} old decision entries, kept ${recent.length} recent`,
325
+ bytesSaved: Math.max(0, saved),
326
+ };
327
+ }
328
+ // ─── Journal safety ─────────────────────────────────────────────────────
329
+ function checkJournal(squadDir) {
330
+ return fs.existsSync(path.join(squadDir, JOURNAL_FILE));
331
+ }
332
+ function writeJournal(squadDir) {
333
+ fs.writeFileSync(path.join(squadDir, JOURNAL_FILE), `nap started at ${new Date().toISOString()}\n`, 'utf8');
334
+ }
335
+ function removeJournal(squadDir) {
336
+ const jp = path.join(squadDir, JOURNAL_FILE);
337
+ if (fs.existsSync(jp))
338
+ fs.unlinkSync(jp);
339
+ }
340
+ // ─── Main entry ─────────────────────────────────────────────────────────
341
+ export async function runNap(options) {
342
+ const { squadDir, deep = false, dryRun = false } = options;
343
+ const actions = [];
344
+ if (!fs.existsSync(squadDir)) {
345
+ return { before: emptyMetrics(), after: emptyMetrics(), actions };
346
+ }
347
+ // Journal safety check
348
+ if (checkJournal(squadDir)) {
349
+ const noColor = !!process.env['NO_COLOR'];
350
+ const prefix = noColor ? '[WARN]' : '\x1b[33m⚠️\x1b[0m';
351
+ console.error(`${prefix} Previous nap was interrupted. Continuing anyway.`);
352
+ }
353
+ // Collect before metrics
354
+ const before = collectMetrics(squadDir);
355
+ if (!dryRun)
356
+ writeJournal(squadDir);
357
+ try {
358
+ const keepEntries = deep ? KEEP_ENTRIES_DEEP : KEEP_ENTRIES_DEFAULT;
359
+ // History compression
360
+ const agentsDir = path.join(squadDir, 'agents');
361
+ if (fs.existsSync(agentsDir)) {
362
+ for (const agent of fs.readdirSync(agentsDir, { withFileTypes: true })) {
363
+ if (!agent.isDirectory())
364
+ continue;
365
+ const hf = path.join(agentsDir, agent.name, 'history.md');
366
+ const action = compressHistory(hf, keepEntries, dryRun);
367
+ if (action)
368
+ actions.push(action);
369
+ }
370
+ }
371
+ // Log pruning
372
+ actions.push(...pruneLogs(path.join(squadDir, 'orchestration-log'), dryRun));
373
+ actions.push(...pruneLogs(path.join(squadDir, 'log'), dryRun));
374
+ // Inbox cleanup
375
+ actions.push(...cleanInbox(squadDir, dryRun));
376
+ // Decision archival
377
+ const archiveAction = archiveDecisions(squadDir, dryRun);
378
+ if (archiveAction)
379
+ actions.push(archiveAction);
380
+ }
381
+ finally {
382
+ if (!dryRun)
383
+ removeJournal(squadDir);
384
+ }
385
+ // Collect after metrics
386
+ const after = dryRun ? estimateAfterMetrics(before, actions) : collectMetrics(squadDir);
387
+ return { before, after, actions };
388
+ }
389
+ /**
390
+ * Synchronous version of runNap for use in REPL (executeCommand is sync).
391
+ * All internal operations use sync fs calls, so this is safe.
392
+ */
393
+ export function runNapSync(options) {
394
+ const { squadDir, deep = false, dryRun = false } = options;
395
+ const actions = [];
396
+ if (!fs.existsSync(squadDir)) {
397
+ return { before: emptyMetrics(), after: emptyMetrics(), actions };
398
+ }
399
+ if (checkJournal(squadDir)) {
400
+ const noColor = !!process.env['NO_COLOR'];
401
+ const prefix = noColor ? '[WARN]' : '\x1b[33m⚠️\x1b[0m';
402
+ console.error(`${prefix} Previous nap was interrupted. Continuing anyway.`);
403
+ }
404
+ const before = collectMetrics(squadDir);
405
+ if (!dryRun)
406
+ writeJournal(squadDir);
407
+ try {
408
+ const keepEntries = deep ? KEEP_ENTRIES_DEEP : KEEP_ENTRIES_DEFAULT;
409
+ const agentsDir = path.join(squadDir, 'agents');
410
+ if (fs.existsSync(agentsDir)) {
411
+ for (const agent of fs.readdirSync(agentsDir, { withFileTypes: true })) {
412
+ if (!agent.isDirectory())
413
+ continue;
414
+ const hf = path.join(agentsDir, agent.name, 'history.md');
415
+ const action = compressHistory(hf, keepEntries, dryRun);
416
+ if (action)
417
+ actions.push(action);
418
+ }
419
+ }
420
+ actions.push(...pruneLogs(path.join(squadDir, 'orchestration-log'), dryRun));
421
+ actions.push(...pruneLogs(path.join(squadDir, 'log'), dryRun));
422
+ actions.push(...cleanInbox(squadDir, dryRun));
423
+ const archiveAction = archiveDecisions(squadDir, dryRun);
424
+ if (archiveAction)
425
+ actions.push(archiveAction);
426
+ }
427
+ finally {
428
+ if (!dryRun)
429
+ removeJournal(squadDir);
430
+ }
431
+ const after = dryRun ? estimateAfterMetrics(before, actions) : collectMetrics(squadDir);
432
+ return { before, after, actions };
433
+ }
434
+ // ─── Report formatting ──────────────────────────────────────────────────
435
+ export function formatNapReport(result, noColor) {
436
+ const nc = noColor ?? !!process.env['NO_COLOR'];
437
+ const B = nc ? '' : '\x1b[1m';
438
+ const D = nc ? '' : '\x1b[2m';
439
+ const G = nc ? '' : '\x1b[32m';
440
+ const Y = nc ? '' : '\x1b[33m';
441
+ const R = nc ? '' : '\x1b[0m';
442
+ const sep = '-'.repeat(40);
443
+ const { before, after, actions } = result;
444
+ const saved = before.totalBytes - after.totalBytes;
445
+ const tokensSaved = humanTokens(Math.max(0, saved));
446
+ const lines = [];
447
+ if (actions.length === 0) {
448
+ lines.push(`${nc ? '' : '😴 '}${B}Nap complete${R} - nothing to clean up.`);
449
+ lines.push(`${D}Total: ${humanBytes(before.totalBytes)} (${humanTokens(before.totalBytes)} tokens est.)${R}`);
450
+ return lines.join('\n');
451
+ }
452
+ lines.push(`${nc ? '' : '😴 '}${B}Nap Report${R}`);
453
+ lines.push(sep);
454
+ lines.push('');
455
+ // Before/after summary
456
+ lines.push(`${B}Overall${R}`);
457
+ lines.push(` ${humanBytes(before.totalBytes)} ${D}->${R} ${G}${humanBytes(after.totalBytes)}${R} ${D}(saved ~${tokensSaved} tokens)${R}`);
458
+ lines.push('');
459
+ // Category breakdown
460
+ lines.push(`${B}Breakdown${R}`);
461
+ const categories = [
462
+ ['History', before.historyBytes, after.historyBytes],
463
+ ['Logs', before.logBytes, after.logBytes],
464
+ ['Decisions', before.decisionBytes, after.decisionBytes],
465
+ ];
466
+ for (const [name, b, a] of categories) {
467
+ if (b === 0 && a === 0)
468
+ continue;
469
+ const delta = b - a;
470
+ const deltaStr = delta > 0 ? `${D}(-${humanBytes(delta)})${R}` : '';
471
+ lines.push(` ${name}: ${humanBytes(b)} -> ${humanBytes(a)} ${deltaStr}`);
472
+ }
473
+ if (before.inboxFiles > 0) {
474
+ lines.push(` Inbox: ${before.inboxFiles} file${before.inboxFiles !== 1 ? 's' : ''} -> ${after.inboxFiles}`);
475
+ }
476
+ lines.push('');
477
+ lines.push(`${B}Actions${R} (${actions.length})`);
478
+ for (const a of actions) {
479
+ const tag = actionTag(a.type, nc);
480
+ lines.push(` ${tag} ${a.description}`);
481
+ }
482
+ lines.push('');
483
+ lines.push(`${D}Token estimate: 1 KB ~ ${TOKENS_PER_KB} tokens${R}`);
484
+ return lines.join('\n');
485
+ }
486
+ function actionTag(type, noColor) {
487
+ if (noColor)
488
+ return `[${type.toUpperCase()}]`;
489
+ const colors = {
490
+ compress: '\x1b[36m', // cyan
491
+ prune: '\x1b[31m', // red
492
+ archive: '\x1b[33m', // yellow
493
+ merge: '\x1b[32m', // green
494
+ cleanup: '\x1b[35m', // magenta
495
+ };
496
+ const c = colors[type] ?? '';
497
+ return `${c}[${type.toUpperCase()}]\x1b[0m`;
498
+ }
499
+ function emptyMetrics() {
500
+ return { totalFiles: 0, totalBytes: 0, historyBytes: 0, logBytes: 0, decisionBytes: 0, inboxFiles: 0 };
501
+ }
502
+ function estimateAfterMetrics(before, actions) {
503
+ let totalSaved = 0;
504
+ let historySaved = 0;
505
+ let logSaved = 0;
506
+ let decisionSaved = 0;
507
+ let inboxMerged = 0;
508
+ for (const a of actions) {
509
+ totalSaved += a.bytesSaved;
510
+ if (a.type === 'compress')
511
+ historySaved += a.bytesSaved;
512
+ if (a.type === 'prune')
513
+ logSaved += a.bytesSaved;
514
+ if (a.type === 'archive')
515
+ decisionSaved += a.bytesSaved;
516
+ if (a.type === 'merge')
517
+ inboxMerged++;
518
+ }
519
+ return {
520
+ totalFiles: before.totalFiles, // approximate in dry-run
521
+ totalBytes: Math.max(0, before.totalBytes - totalSaved),
522
+ historyBytes: Math.max(0, before.historyBytes - historySaved),
523
+ logBytes: Math.max(0, before.logBytes - logSaved),
524
+ decisionBytes: Math.max(0, before.decisionBytes - decisionSaved),
525
+ inboxFiles: Math.max(0, before.inboxFiles - inboxMerged),
526
+ };
527
+ }
528
+ //# sourceMappingURL=nap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nap.js","sourceRoot":"","sources":["../../../src/cli/core/nap.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  export declare const GREEN = "\u001B[32m";
5
5
  export declare const RED = "\u001B[31m";
6
6
  export declare const YELLOW = "\u001B[33m";
7
+ export declare const GRAY = "\u001B[90m";
7
8
  export declare const DIM = "\u001B[2m";
8
9
  export declare const BOLD = "\u001B[1m";
9
10
  export declare const RESET = "\u001B[0m";
@@ -23,6 +24,10 @@ export declare function warn(msg: string): void;
23
24
  * Print info message
24
25
  */
25
26
  export declare function info(msg: string): void;
27
+ /**
28
+ * Print secondary text (gray, higher contrast than DIM)
29
+ */
30
+ export declare function secondary(msg: string): void;
26
31
  /**
27
32
  * Print dimmed text
28
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/cli/core/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,KAAK,eAAa,CAAC;AAChC,eAAO,MAAM,GAAG,eAAa,CAAC;AAC9B,eAAO,MAAM,MAAM,eAAa,CAAC;AACjC,eAAO,MAAM,GAAG,cAAY,CAAC;AAC7B,eAAO,MAAM,IAAI,cAAY,CAAC;AAC9B,eAAO,MAAM,KAAK,cAAY,CAAC;AAE/B;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAErC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/cli/core/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,KAAK,eAAa,CAAC;AAChC,eAAO,MAAM,GAAG,eAAa,CAAC;AAC9B,eAAO,MAAM,MAAM,eAAa,CAAC;AACjC,eAAO,MAAM,IAAI,eAAa,CAAC;AAC/B,eAAO,MAAM,GAAG,cAAY,CAAC;AAC7B,eAAO,MAAM,IAAI,cAAY,CAAC;AAC9B,eAAO,MAAM,KAAK,cAAY,CAAC;AAE/B;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAErC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC"}
@@ -5,6 +5,7 @@
5
5
  export const GREEN = '\x1b[32m';
6
6
  export const RED = '\x1b[31m';
7
7
  export const YELLOW = '\x1b[33m';
8
+ export const GRAY = '\x1b[90m';
8
9
  export const DIM = '\x1b[2m';
9
10
  export const BOLD = '\x1b[1m';
10
11
  export const RESET = '\x1b[0m';
@@ -32,6 +33,12 @@ export function warn(msg) {
32
33
  export function info(msg) {
33
34
  console.log(msg);
34
35
  }
36
+ /**
37
+ * Print secondary text (gray, higher contrast than DIM)
38
+ */
39
+ export function secondary(msg) {
40
+ console.log(`${GRAY}${msg}${RESET}`);
41
+ }
35
42
  /**
36
43
  * Print dimmed text
37
44
  */
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/cli/core/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mBAAmB;AACnB,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC;AAChC,MAAM,CAAC,MAAM,GAAG,GAAG,UAAU,CAAC;AAC9B,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;AACjC,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC;AAC7B,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC;AAC9B,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC;AAE/B;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,GAAW;IAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/cli/core/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mBAAmB;AACnB,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC;AAChC,MAAM,CAAC,MAAM,GAAG,GAAG,UAAU,CAAC;AAC9B,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;AACjC,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC;AAC7B,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC;AAC9B,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC;AAE/B;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,GAAW;IAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;AACvC,CAAC"}
@@ -5,7 +5,6 @@
5
5
  */
6
6
  export interface UpgradeOptions {
7
7
  migrateDirectory?: boolean;
8
- self?: boolean;
9
8
  }
10
9
  export interface UpdateInfo {
11
10
  fromVersion: string;
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/cli/core/upgrade.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAiRD;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAoJhG"}
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/cli/core/upgrade.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAiRD;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAoJhG"}