@mmnto/cli 1.14.0 → 1.14.1
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/commands/compile-prune.test.d.ts +2 -0
- package/dist/commands/compile-prune.test.d.ts.map +1 -0
- package/dist/commands/compile-prune.test.js +116 -0
- package/dist/commands/compile-prune.test.js.map +1 -0
- package/dist/commands/compile.d.ts +37 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +91 -4
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +1 -1
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/handoff.d.ts +17 -37
- package/dist/commands/handoff.d.ts.map +1 -1
- package/dist/commands/handoff.js +120 -273
- package/dist/commands/handoff.js.map +1 -1
- package/dist/commands/handoff.test.js +64 -277
- package/dist/commands/handoff.test.js.map +1 -1
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +2 -1
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/run-compiled-rules.d.ts +2 -0
- package/dist/commands/run-compiled-rules.d.ts.map +1 -1
- package/dist/commands/run-compiled-rules.js +63 -5
- package/dist/commands/run-compiled-rules.js.map +1 -1
- package/dist/commands/run-compiled-rules.test.js +382 -0
- package/dist/commands/run-compiled-rules.test.js.map +1 -1
- package/dist/commands/shield.js +2 -2
- package/dist/commands/shield.js.map +1 -1
- package/dist/commands/shield.test.js +1 -1
- package/dist/commands/shield.test.js.map +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +0 -1
- package/dist/help.js.map +1 -1
- package/dist/index.js +8 -10
- package/dist/index.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +0 -1
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
- package/dist/schemas/handoff-checkpoint.d.ts +0 -34
- package/dist/schemas/handoff-checkpoint.d.ts.map +0 -1
- package/dist/schemas/handoff-checkpoint.js +0 -13
- package/dist/schemas/handoff-checkpoint.js.map +0 -1
- package/dist/schemas/handoff-checkpoint.test.d.ts +0 -2
- package/dist/schemas/handoff-checkpoint.test.d.ts.map +0 -1
- package/dist/schemas/handoff-checkpoint.test.js +0 -65
- package/dist/schemas/handoff-checkpoint.test.js.map +0 -1
package/dist/commands/handoff.js
CHANGED
|
@@ -1,47 +1,21 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
-
import { readAllLessons } from '@mmnto/totem'; // totem-
|
|
4
|
-
import {
|
|
5
|
-
import { sanitize, wrapXml } from '../utils.js';
|
|
3
|
+
import { readAllLessons } from '@mmnto/totem'; // totem-context: static import required — readRecentLessons is a sync exported helper used in tests
|
|
4
|
+
import { sanitize } from '../utils.js';
|
|
6
5
|
// ─── Constants ──────────────────────────────────────────
|
|
7
6
|
const TAG = 'Handoff';
|
|
8
|
-
const MAX_DIFF_CHARS = 50_000;
|
|
9
7
|
const LESSONS_TAIL_LINES = 100;
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
- Distinguish between what IS done vs what NEEDS to be done next
|
|
22
|
-
- If there are uncommitted changes, describe what they represent and whether they look ready to commit
|
|
23
|
-
- If the working tree is clean, say so and focus on what was accomplished and what's next
|
|
24
|
-
- Capture any lessons or traps discovered during this session
|
|
25
|
-
- Be concise — this is a tactical handoff, not a retrospective
|
|
26
|
-
|
|
27
|
-
## Output Format
|
|
28
|
-
Respond with ONLY the sections below. No preamble, no closing remarks.
|
|
29
|
-
|
|
30
|
-
### Branch & State
|
|
31
|
-
[Current branch, clean/dirty status, what the branch represents]
|
|
32
|
-
|
|
33
|
-
### What Was Done
|
|
34
|
-
[Summary of work completed this session based on the diff and git state. If no changes, say "No uncommitted changes — session may have been exploratory or changes were already committed."]
|
|
35
|
-
|
|
36
|
-
### Uncommitted Changes
|
|
37
|
-
[Description of what the uncommitted changes contain and their state (staged vs unstaged). If clean, say "Working tree is clean."]
|
|
38
|
-
|
|
39
|
-
### Lessons & Traps
|
|
40
|
-
[Lessons learned during this session from the memory file. If none, say "No new lessons recorded this session."]
|
|
41
|
-
|
|
42
|
-
### Next Steps
|
|
43
|
-
[Clear, ordered list of what the next session should do first. Be specific — not "continue working" but "finish implementing X in file Y, then run tests."]
|
|
44
|
-
`;
|
|
8
|
+
const RECENT_COMMITS_COUNT = 10;
|
|
9
|
+
const MAX_SLUG_LENGTH = 60;
|
|
10
|
+
/** Local calendar date as YYYY-MM-DD (avoids UTC off-by-one for evening users). */
|
|
11
|
+
function currentLocalDate() {
|
|
12
|
+
const now = new Date();
|
|
13
|
+
return [
|
|
14
|
+
now.getFullYear(),
|
|
15
|
+
String(now.getMonth() + 1).padStart(2, '0'),
|
|
16
|
+
String(now.getDate()).padStart(2, '0'),
|
|
17
|
+
].join('-');
|
|
18
|
+
}
|
|
45
19
|
// ─── Lessons file reader ────────────────────────────────
|
|
46
20
|
export function readRecentLessons(cwd, totemDir) {
|
|
47
21
|
const fullTotemDir = path.join(cwd, totemDir);
|
|
@@ -55,190 +29,67 @@ export function readRecentLessons(cwd, totemDir) {
|
|
|
55
29
|
return combined.trim();
|
|
56
30
|
return lines.slice(-LESSONS_TAIL_LINES).join('\n').trim();
|
|
57
31
|
}
|
|
58
|
-
// ───
|
|
59
|
-
function assemblePrompt(branch, status, diff, diffStat, lessons, systemPrompt) {
|
|
60
|
-
const sections = [systemPrompt];
|
|
61
|
-
// Git state
|
|
62
|
-
sections.push('=== GIT STATE ===');
|
|
63
|
-
sections.push(`Branch: ${branch}`);
|
|
64
|
-
sections.push(`Status:\n${status ? wrapXml('git_status', status) : '(clean working tree)'}`);
|
|
65
|
-
// Diff
|
|
66
|
-
sections.push('\n=== DIFF ===');
|
|
67
|
-
if (!diff.trim()) {
|
|
68
|
-
sections.push('(no uncommitted changes)');
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
if (diffStat) {
|
|
72
|
-
sections.push(`Diff stat:\n${diffStat}`);
|
|
73
|
-
sections.push('');
|
|
74
|
-
}
|
|
75
|
-
if (diff.length > MAX_DIFF_CHARS) {
|
|
76
|
-
sections.push(wrapXml('git_diff', diff.slice(0, MAX_DIFF_CHARS) + `\n... [diff truncated at ${MAX_DIFF_CHARS} chars] ...`));
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
sections.push(wrapXml('git_diff', diff));
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
// Lessons
|
|
83
|
-
sections.push('\n=== SESSION LESSONS ===');
|
|
84
|
-
sections.push(lessons || '(no lessons recorded)');
|
|
85
|
-
return sections.join('\n');
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Parse file paths from `git status --porcelain` output.
|
|
89
|
-
* Handles standard two-char status codes: " M", "M ", "MM", "A ", "??", "D ", etc.
|
|
90
|
-
* Also handles renames ("R old -> new") by extracting the new path.
|
|
91
|
-
*/
|
|
92
|
-
function parseStatusFiles(statusOutput) {
|
|
93
|
-
if (!statusOutput.trim())
|
|
94
|
-
return [];
|
|
95
|
-
const files = [];
|
|
96
|
-
for (const line of statusOutput.split(/\r?\n/)) {
|
|
97
|
-
if (!line.trim())
|
|
98
|
-
continue;
|
|
99
|
-
// Porcelain format: XY <path> or XY <old> -> <new> for renames (R/C status)
|
|
100
|
-
const statusCode = line.slice(0, 2);
|
|
101
|
-
let filePart = line.slice(3); // skip 2-char status + space
|
|
102
|
-
if ((statusCode.includes('R') || statusCode.includes('C')) && filePart.includes(' -> ')) {
|
|
103
|
-
filePart = filePart.slice(filePart.indexOf(' -> ') + 4);
|
|
104
|
-
}
|
|
105
|
-
// Strip C-style quotes that git adds for paths with spaces/special chars
|
|
106
|
-
if (filePart.startsWith('"') && filePart.endsWith('"')) {
|
|
107
|
-
filePart = filePart.slice(1, -1);
|
|
108
|
-
}
|
|
109
|
-
files.push(filePart);
|
|
110
|
-
}
|
|
111
|
-
return files;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Gathers deterministic (zero-LLM) state for the handoff checkpoint.
|
|
115
|
-
* ADR-039: Git Metadata Primacy — these fields come from git, never the LLM.
|
|
116
|
-
*/
|
|
117
|
-
export async function gatherDeterministicState(cwd) {
|
|
118
|
-
const { getGitBranch, getGitStatus } = await import('../git.js');
|
|
119
|
-
// 1. Get branch — handle detached HEAD gracefully
|
|
120
|
-
let branch;
|
|
121
|
-
try {
|
|
122
|
-
const raw = getGitBranch(cwd);
|
|
123
|
-
branch = raw && raw !== '(unknown)' ? raw : 'HEAD';
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
branch = 'HEAD';
|
|
127
|
-
}
|
|
128
|
-
// 2. Get active files from git status --porcelain (covers staged, unstaged, and untracked)
|
|
129
|
-
const statusOutput = getGitStatus(cwd);
|
|
130
|
-
const active_files = parseStatusFiles(statusOutput).sort();
|
|
131
|
-
// 3. Return checkpoint with timestamp and empty open_prs (PR detection is future work)
|
|
132
|
-
return {
|
|
133
|
-
checkpoint_version: 1,
|
|
134
|
-
timestamp: new Date().toISOString(),
|
|
135
|
-
branch,
|
|
136
|
-
active_files,
|
|
137
|
-
open_prs: [],
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
// ─── Semantic field extraction (Task 3) ─────────────────
|
|
141
|
-
/**
|
|
142
|
-
* Known Markdown section headings and the semantic field they map to.
|
|
143
|
-
* Headings are matched case-insensitively.
|
|
144
|
-
*/
|
|
145
|
-
const SECTION_MAP = {
|
|
146
|
-
'what was done': 'completed',
|
|
147
|
-
'next steps': 'remaining',
|
|
148
|
-
'lessons & traps': 'context_hints',
|
|
149
|
-
lessons: 'context_hints',
|
|
150
|
-
'uncommitted changes': 'pending_decisions',
|
|
151
|
-
};
|
|
32
|
+
// ─── Slug from branch ───────────────────────────────────
|
|
152
33
|
/**
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
* Returns empty arrays for any sections not found or when input is malformed.
|
|
34
|
+
* Derive a filesystem-safe slug from the git branch name.
|
|
35
|
+
* Falls back to 'session' for main, master, or detached HEAD.
|
|
157
36
|
*/
|
|
158
|
-
export function
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
for (const line of lines) {
|
|
171
|
-
const trimmed = line.trim();
|
|
172
|
-
// Track fenced code blocks (``` or ~~~)
|
|
173
|
-
if (trimmed.startsWith('```') || trimmed.startsWith('~~~')) {
|
|
174
|
-
inCodeBlock = !inCodeBlock;
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
if (inCodeBlock)
|
|
178
|
-
continue;
|
|
179
|
-
// Detect heading (### or ##)
|
|
180
|
-
const headingMatch = line.match(/^#{2,3}\s+(.+)$/);
|
|
181
|
-
if (headingMatch) {
|
|
182
|
-
const heading = headingMatch[1].trim().toLowerCase();
|
|
183
|
-
currentField = SECTION_MAP[heading] ?? null;
|
|
184
|
-
continue;
|
|
185
|
-
}
|
|
186
|
-
// Collect content lines under recognized sections
|
|
187
|
-
if (currentField) {
|
|
188
|
-
if (!trimmed)
|
|
189
|
-
continue;
|
|
190
|
-
const bulletMatch = trimmed.match(/^[-*]\s+(.+)$/) ?? trimmed.match(/^\d+\.\s+(.+)$/);
|
|
191
|
-
if (bulletMatch) {
|
|
192
|
-
result[currentField].push(bulletMatch[1].trim());
|
|
193
|
-
}
|
|
194
|
-
else if (!/^#{1,6}\s/.test(trimmed)) {
|
|
195
|
-
result[currentField].push(trimmed);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return result;
|
|
37
|
+
export function slugFromBranch(branch) {
|
|
38
|
+
const generic = ['main', 'master', 'HEAD', '', '(unknown)'];
|
|
39
|
+
if (generic.includes(branch))
|
|
40
|
+
return 'session';
|
|
41
|
+
// Strip common prefixes (feat/, fix/, chore/, hotfix/, etc.)
|
|
42
|
+
const stripped = branch.replace(/^[a-z]+\//, '');
|
|
43
|
+
// Sanitize: lowercase, replace non-alphanumeric with hyphens, collapse runs, trim
|
|
44
|
+
return (stripped
|
|
45
|
+
.toLowerCase()
|
|
46
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
47
|
+
.replace(/^-|-$/g, '')
|
|
48
|
+
.slice(0, MAX_SLUG_LENGTH) || 'session');
|
|
200
49
|
}
|
|
201
|
-
// ───
|
|
50
|
+
// ─── Journal path resolution ────────────────────────────
|
|
202
51
|
/**
|
|
203
|
-
*
|
|
204
|
-
*
|
|
52
|
+
* Build the journal file path: .totem/journal/YYYY-MM-DD-<slug>.md
|
|
53
|
+
* If --out is specified, use that path instead.
|
|
205
54
|
*/
|
|
206
|
-
export function
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
fs.writeFileSync(tmpPath, JSON.stringify(checkpoint, null, 2) + '\n', 'utf-8');
|
|
213
|
-
fs.renameSync(tmpPath, jsonPath);
|
|
55
|
+
export function resolveJournalPath(cwd, totemDir, branch, outPath) {
|
|
56
|
+
if (outPath)
|
|
57
|
+
return outPath;
|
|
58
|
+
const date = currentLocalDate(); // YYYY-MM-DD
|
|
59
|
+
const slug = slugFromBranch(branch);
|
|
60
|
+
return path.join(cwd, totemDir, 'journal', `${date}-${slug}.md`);
|
|
214
61
|
}
|
|
62
|
+
// ─── Journal scaffold builder ───────────────────────────
|
|
215
63
|
/**
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* - If --out is not specified: <cwd>/<totemDir>/handoff.json
|
|
64
|
+
* Build the structured journal scaffold with human-editable sections
|
|
65
|
+
* at the top and deterministic git state at the bottom.
|
|
219
66
|
*/
|
|
220
|
-
export function
|
|
221
|
-
if (outPath) {
|
|
222
|
-
const ext = path.extname(outPath);
|
|
223
|
-
if (ext === '.json') {
|
|
224
|
-
return outPath.slice(0, -ext.length) + '.checkpoint.json';
|
|
225
|
-
}
|
|
226
|
-
if (ext) {
|
|
227
|
-
return outPath.slice(0, -ext.length) + '.json';
|
|
228
|
-
}
|
|
229
|
-
return outPath + '.json';
|
|
230
|
-
}
|
|
231
|
-
return path.join(cwd, totemDir, 'handoff.json');
|
|
232
|
-
}
|
|
233
|
-
// ─── Lite handoff (zero LLM) ────────────────────────────
|
|
234
|
-
const RECENT_COMMITS_COUNT = 10;
|
|
235
|
-
export function buildLiteHandoff(branch, status, diffStat, recentCommits, lessons) {
|
|
67
|
+
export function buildJournalScaffold(branch, status, diffStat, recentCommits, lessons) {
|
|
236
68
|
// Sanitize git-sourced fields to strip ANSI escapes / control chars
|
|
237
|
-
const sBranch = sanitize(branch);
|
|
69
|
+
const sBranch = sanitize(branch);
|
|
238
70
|
const sStatus = sanitize(status);
|
|
239
71
|
const sDiffStat = sanitize(diffStat);
|
|
240
72
|
const sCommits = sanitize(recentCommits);
|
|
73
|
+
const date = currentLocalDate();
|
|
241
74
|
const lines = [];
|
|
75
|
+
// ── Human-editable section (top) ──
|
|
76
|
+
lines.push(`# ${date} — ${sBranch}`);
|
|
77
|
+
lines.push('');
|
|
78
|
+
lines.push('## What Shipped');
|
|
79
|
+
lines.push('<!-- What was accomplished this session? -->');
|
|
80
|
+
lines.push('');
|
|
81
|
+
lines.push('## Architectural Decisions');
|
|
82
|
+
lines.push('<!-- Any design choices worth recording? -->');
|
|
83
|
+
lines.push('');
|
|
84
|
+
lines.push('## Open Tickets');
|
|
85
|
+
lines.push('<!-- Tickets filed, referenced, or blocked? -->');
|
|
86
|
+
lines.push('');
|
|
87
|
+
lines.push('## Next Steps');
|
|
88
|
+
lines.push('<!-- What should the next session pick up? -->');
|
|
89
|
+
lines.push('');
|
|
90
|
+
// ── Deterministic git state (bottom) ──
|
|
91
|
+
lines.push('---');
|
|
92
|
+
lines.push('');
|
|
242
93
|
lines.push('### Branch & State');
|
|
243
94
|
lines.push(`${sBranch}; ${sStatus.trim() ? 'dirty working tree' : 'clean working tree'}.`);
|
|
244
95
|
lines.push('');
|
|
@@ -276,13 +127,29 @@ export function buildLiteHandoff(branch, status, diffStat, recentCommits, lesson
|
|
|
276
127
|
else {
|
|
277
128
|
lines.push('No lessons file found.');
|
|
278
129
|
}
|
|
279
|
-
return lines.join('\n');
|
|
130
|
+
return lines.join('\n') + '\n';
|
|
131
|
+
}
|
|
132
|
+
// ─── Editor launcher ────────────────────────────────────
|
|
133
|
+
/**
|
|
134
|
+
* Open a file in the user's editor. Uses $VISUAL, then $EDITOR, then vi.
|
|
135
|
+
* Returns true if the editor exited successfully.
|
|
136
|
+
*/
|
|
137
|
+
export async function openInEditor(filePath) {
|
|
138
|
+
const { spawnSync } = await import('node:child_process');
|
|
139
|
+
const editor = process.env['VISUAL'] || process.env['EDITOR'] || 'vi';
|
|
140
|
+
// Use shell: true so the system shell parses the editor command (handles
|
|
141
|
+
// quoted paths like "/Applications/Visual Studio Code.app/.../code" --wait
|
|
142
|
+
// and Windows .cmd/.bat resolution).
|
|
143
|
+
const result = spawnSync(`${editor} "${filePath}"`, {
|
|
144
|
+
stdio: 'inherit',
|
|
145
|
+
shell: true,
|
|
146
|
+
});
|
|
147
|
+
return result.status === 0;
|
|
280
148
|
}
|
|
281
|
-
// ─── Main command ───────────────────────────────────────
|
|
282
149
|
export async function handoffCommand(options) {
|
|
283
|
-
const { getGitBranch,
|
|
150
|
+
const { getGitBranch, getGitDiffStat, getGitLogSince, getGitStatus } = await import('../git.js');
|
|
284
151
|
const { log } = await import('../ui.js');
|
|
285
|
-
const {
|
|
152
|
+
const { loadConfig, loadEnv, resolveConfigPath } = await import('../utils.js');
|
|
286
153
|
const cwd = process.cwd();
|
|
287
154
|
const configPath = resolveConfigPath(cwd);
|
|
288
155
|
loadEnv(cwd);
|
|
@@ -292,69 +159,49 @@ export async function handoffCommand(options) {
|
|
|
292
159
|
const branch = getGitBranch(cwd);
|
|
293
160
|
const status = getGitStatus(cwd);
|
|
294
161
|
log.info(TAG, `Branch: ${branch}`);
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
const diff = getGitDiff('all', cwd);
|
|
298
|
-
const diffStat = diff.trim() ? getGitDiffStat(cwd) : '';
|
|
299
|
-
if (diff.trim()) {
|
|
300
|
-
log.info(TAG, `Diff: ${(diff.length / 1024).toFixed(0)}KB`);
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
log.dim(TAG, 'Working tree is clean.');
|
|
304
|
-
}
|
|
162
|
+
const diffStat = status.trim() ? getGitDiffStat(cwd) : '';
|
|
163
|
+
const recentCommits = getGitLogSince(cwd, undefined, RECENT_COMMITS_COUNT);
|
|
305
164
|
// Read recent lessons
|
|
306
|
-
log.info(TAG, 'Reading recent lessons...');
|
|
307
165
|
const lessons = readRecentLessons(cwd, config.totemDir);
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
const
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
log.success(TAG, `Written to ${options.out}`);
|
|
318
|
-
// Write checkpoint JSON with empty semantic fields (lite = no LLM)
|
|
319
|
-
try {
|
|
320
|
-
const checkpoint = HandoffCheckpointSchema.parse(deterministicState);
|
|
321
|
-
const jsonPath = resolveCheckpointPath(cwd, config.totemDir, options.out);
|
|
322
|
-
writeCheckpoint(jsonPath, checkpoint);
|
|
323
|
-
log.dim(TAG, `Checkpoint: ${jsonPath}`);
|
|
324
|
-
}
|
|
325
|
-
catch (err) {
|
|
326
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
327
|
-
log.warn(TAG, `Checkpoint write failed (skipped): ${msg}`);
|
|
328
|
-
}
|
|
329
|
-
log.dim(TAG, 'Lite handoff complete (zero LLM).');
|
|
166
|
+
// Build scaffold
|
|
167
|
+
const scaffold = buildJournalScaffold(branch, status, diffStat, recentCommits, lessons);
|
|
168
|
+
// --out: write to the specified path and exit (no editor)
|
|
169
|
+
if (options.out) {
|
|
170
|
+
const outDir = path.dirname(options.out);
|
|
171
|
+
if (!fs.existsSync(outDir))
|
|
172
|
+
fs.mkdirSync(outDir, { recursive: true });
|
|
173
|
+
fs.writeFileSync(options.out, scaffold, 'utf-8');
|
|
174
|
+
log.success(TAG, `Scaffold written to ${options.out}`);
|
|
330
175
|
return;
|
|
331
176
|
}
|
|
332
|
-
//
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
const
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
177
|
+
// --stdout / --lite: print to stdout
|
|
178
|
+
if (options.stdout || options.lite) {
|
|
179
|
+
process.stdout.write(scaffold);
|
|
180
|
+
log.dim(TAG, 'Scaffold printed to stdout.');
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// Default: write scaffold to journal file and open in editor
|
|
184
|
+
const journalPath = resolveJournalPath(cwd, config.totemDir, branch);
|
|
185
|
+
const journalDir = path.dirname(journalPath);
|
|
186
|
+
if (!fs.existsSync(journalDir)) {
|
|
187
|
+
fs.mkdirSync(journalDir, { recursive: true });
|
|
188
|
+
}
|
|
189
|
+
// If the file already exists, don't overwrite — open it for editing instead
|
|
190
|
+
if (!fs.existsSync(journalPath)) {
|
|
191
|
+
fs.writeFileSync(journalPath, scaffold, 'utf-8');
|
|
192
|
+
log.success(TAG, `Scaffold written to ${journalPath}`);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
log.info(TAG, `Journal entry already exists: ${journalPath}`);
|
|
196
|
+
}
|
|
197
|
+
// Open in editor
|
|
198
|
+
log.info(TAG, 'Opening in editor...');
|
|
199
|
+
const ok = await openInEditor(journalPath);
|
|
200
|
+
if (ok) {
|
|
201
|
+
log.success(TAG, 'Journal entry saved.');
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
log.warn(TAG, `Editor exited with error. Your journal entry is at: ${journalPath}`);
|
|
358
205
|
}
|
|
359
206
|
}
|
|
360
207
|
//# sourceMappingURL=handoff.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"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"}
|