@nexagent-cli/cli 0.7.2 → 0.8.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.
Files changed (53) hide show
  1. package/dist/commands/sophie.d.ts +2 -0
  2. package/dist/commands/sophie.d.ts.map +1 -1
  3. package/dist/commands/sophie.js +3 -53
  4. package/dist/commands/sophie.js.map +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +3 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/profiles/sophie.d.ts.map +1 -1
  9. package/dist/profiles/sophie.js +1 -0
  10. package/dist/profiles/sophie.js.map +1 -1
  11. package/dist/runtime/workflow.d.ts +2 -0
  12. package/dist/runtime/workflow.d.ts.map +1 -1
  13. package/dist/runtime/workflow.js.map +1 -1
  14. package/dist/workflows/index.d.ts.map +1 -1
  15. package/dist/workflows/index.js +8 -0
  16. package/dist/workflows/index.js.map +1 -1
  17. package/dist/workflows/persistence/index.d.ts +5 -0
  18. package/dist/workflows/persistence/index.d.ts.map +1 -0
  19. package/dist/workflows/persistence/index.js +8 -0
  20. package/dist/workflows/persistence/index.js.map +1 -0
  21. package/dist/workflows/persistence/phase-gates.d.ts +17 -0
  22. package/dist/workflows/persistence/phase-gates.d.ts.map +1 -0
  23. package/dist/workflows/persistence/phase-gates.js +55 -0
  24. package/dist/workflows/persistence/phase-gates.js.map +1 -0
  25. package/dist/workflows/persistence/status-memory.d.ts +15 -0
  26. package/dist/workflows/persistence/status-memory.d.ts.map +1 -0
  27. package/dist/workflows/persistence/status-memory.js +87 -0
  28. package/dist/workflows/persistence/status-memory.js.map +1 -0
  29. package/dist/workflows/persistence/workflow-snapshot.d.ts +20 -0
  30. package/dist/workflows/persistence/workflow-snapshot.d.ts.map +1 -0
  31. package/dist/workflows/persistence/workflow-snapshot.js +83 -0
  32. package/dist/workflows/persistence/workflow-snapshot.js.map +1 -0
  33. package/dist/workflows/persistence/workflow-store.d.ts +16 -0
  34. package/dist/workflows/persistence/workflow-store.d.ts.map +1 -0
  35. package/dist/workflows/persistence/workflow-store.js +108 -0
  36. package/dist/workflows/persistence/workflow-store.js.map +1 -0
  37. package/dist/workflows/sophie/council.d.ts +3 -0
  38. package/dist/workflows/sophie/council.d.ts.map +1 -0
  39. package/dist/workflows/sophie/council.js +264 -0
  40. package/dist/workflows/sophie/council.js.map +1 -0
  41. package/dist/workflows/sophie/review.d.ts +3 -0
  42. package/dist/workflows/sophie/review.d.ts.map +1 -0
  43. package/dist/workflows/sophie/review.js +245 -0
  44. package/dist/workflows/sophie/review.js.map +1 -0
  45. package/dist/workflows/sophie/skill.d.ts +3 -0
  46. package/dist/workflows/sophie/skill.d.ts.map +1 -0
  47. package/dist/workflows/sophie/skill.js +193 -0
  48. package/dist/workflows/sophie/skill.js.map +1 -0
  49. package/dist/workflows/sophie/status.d.ts +3 -0
  50. package/dist/workflows/sophie/status.d.ts.map +1 -0
  51. package/dist/workflows/sophie/status.js +313 -0
  52. package/dist/workflows/sophie/status.js.map +1 -0
  53. package/package.json +1 -2
@@ -0,0 +1,313 @@
1
+ import { readdir, readFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { NEXAGENT_VERSION } from '@nexagent-cli/shared';
4
+ import { saveProjectStatus, loadProjectStatus, appendStatusHistory, loadStatusHistory, saveWorkflowRun, createSnapshot, saveMarkdownReport, } from '../persistence/index.js';
5
+ const PHASES = [
6
+ 'Foundation (v0.1–0.3)',
7
+ 'Distribution (v0.4–0.5)',
8
+ 'Hardening (v0.6)',
9
+ 'Branded Profiles (v0.7)',
10
+ 'Sophie-X Runtime (v0.8)',
11
+ 'Workflow Persistence (v0.8.1)',
12
+ 'Amarax Product Layer (v0.9)',
13
+ 'Stable Release (v1.0)',
14
+ ];
15
+ export async function statusWorkflow(ctx) {
16
+ const cwd = ctx.cwd;
17
+ // ── History mode ────────────────────────────────────────────
18
+ if (ctx.flags.history || ctx.input.trim() === '--history') {
19
+ const history = await loadStatusHistory(10);
20
+ if (ctx.flags.json) {
21
+ return {
22
+ success: true,
23
+ data: { history },
24
+ messages: [],
25
+ recommendations: [],
26
+ };
27
+ }
28
+ const messages = [];
29
+ messages.push('📚 Status History (last 10 snapshots)');
30
+ messages.push('');
31
+ if (history.length === 0) {
32
+ messages.push(' No history found. Run `sophie status --save` to create snapshots.');
33
+ }
34
+ else {
35
+ history.forEach((h, i) => {
36
+ messages.push(` ${i + 1}. ${h.timestamp.slice(0, 19)} — ${h.phase} — gate score: ${h.gateScore}%`);
37
+ messages.push(` Next: ${h.nextAction}`);
38
+ });
39
+ }
40
+ return {
41
+ success: true,
42
+ data: { history },
43
+ messages,
44
+ recommendations: history.length > 0 ? [history[history.length - 1].nextAction] : ['Run `sophie status --save` to start tracking.'],
45
+ };
46
+ }
47
+ // ── Load saved status if requested ──────────────────────────
48
+ const input = ctx.input.trim();
49
+ if (input === '--load' || input === '--saved') {
50
+ const saved = await loadProjectStatus(cwd);
51
+ if (!saved) {
52
+ return {
53
+ success: false,
54
+ data: {},
55
+ messages: ['No saved status found. Run `sophie status --save` first.'],
56
+ recommendations: ['Run `sophie status --save` to persist project state.'],
57
+ };
58
+ }
59
+ if (ctx.flags.json) {
60
+ return {
61
+ success: true,
62
+ data: saved,
63
+ messages: [],
64
+ recommendations: [],
65
+ };
66
+ }
67
+ const messages = [];
68
+ messages.push('💾 Saved Project Status');
69
+ messages.push(` Saved at: ${saved.savedAt}`);
70
+ messages.push('');
71
+ return {
72
+ success: true,
73
+ data: saved,
74
+ messages,
75
+ recommendations: ['Run `sophie status` without flags for a fresh scan.'],
76
+ };
77
+ }
78
+ // ── Compute fresh status ────────────────────────────────────
79
+ let pkg = null;
80
+ try {
81
+ const raw = await readFile(join(cwd, 'package.json'), 'utf-8');
82
+ pkg = JSON.parse(raw);
83
+ }
84
+ catch {
85
+ pkg = null;
86
+ }
87
+ const version = pkg?.version || NEXAGENT_VERSION || 'unknown';
88
+ const scripts = pkg && typeof pkg.scripts === 'object' && pkg.scripts !== null
89
+ ? pkg.scripts : {};
90
+ const health = {
91
+ hasPackageJson: pkg !== null,
92
+ hasReadme: await fileExists(join(cwd, 'README.md')),
93
+ hasLicense: await fileExists(join(cwd, 'LICENSE')) || await fileExists(join(cwd, 'LICENSE.md')),
94
+ hasChangelog: await fileExists(join(cwd, 'CHANGELOG.md')),
95
+ hasCi: await dirExists(join(cwd, '.github', 'workflows')),
96
+ hasTests: 'test' in scripts,
97
+ hasBuildScript: 'build' in scripts,
98
+ };
99
+ const currentPhase = determinePhase(version);
100
+ const completedPhases = PHASES.slice(0, PHASES.indexOf(currentPhase) + 1);
101
+ const pendingGates = [
102
+ { name: 'Package.json valid', status: health.hasPackageJson ? 'passed' : 'blocked' },
103
+ { name: 'README present', status: health.hasReadme ? 'passed' : 'pending' },
104
+ { name: 'LICENSE present', status: health.hasLicense ? 'passed' : 'pending' },
105
+ { name: 'CHANGELOG maintained', status: health.hasChangelog ? 'passed' : 'pending' },
106
+ { name: 'CI configured', status: health.hasCi ? 'passed' : 'pending' },
107
+ { name: 'Tests configured', status: health.hasTests ? 'passed' : 'pending' },
108
+ { name: 'Build script defined', status: health.hasBuildScript ? 'passed' : 'pending' },
109
+ ];
110
+ let testFileCount = 0;
111
+ let testFramework = null;
112
+ try {
113
+ const entries = await readdir(join(cwd, 'tests'), { withFileTypes: true }).catch(() => []);
114
+ testFileCount = entries.filter(e => e.isFile() && /\.(test|spec)\.(ts|js)$/.test(e.name)).length;
115
+ if (scripts.vitest || scripts['test:unit']?.includes('vitest'))
116
+ testFramework = 'vitest';
117
+ else if (scripts.jest || scripts['test:unit']?.includes('jest'))
118
+ testFramework = 'jest';
119
+ else if (scripts.test?.includes('vitest'))
120
+ testFramework = 'vitest';
121
+ else if (scripts.test?.includes('jest'))
122
+ testFramework = 'jest';
123
+ }
124
+ catch {
125
+ // ignore
126
+ }
127
+ let latestPublishState = 'unknown';
128
+ if (/^0\.8\./.test(version))
129
+ latestPublishState = 'published (latest)';
130
+ else if (/^0\.7\./.test(version))
131
+ latestPublishState = 'published (stable)';
132
+ else if (/^0\./.test(version))
133
+ latestPublishState = 'published (pre-release)';
134
+ const blocked = pendingGates.filter(g => g.status === 'blocked');
135
+ const pending = pendingGates.filter(g => g.status === 'pending');
136
+ let nextRecommendedAction;
137
+ if (blocked.length > 0) {
138
+ nextRecommendedAction = `Fix blocker: ${blocked[0].name}`;
139
+ }
140
+ else if (pending.length > 0) {
141
+ nextRecommendedAction = `Address pending gate: ${pending[0].name}`;
142
+ }
143
+ else if (!health.hasTests) {
144
+ nextRecommendedAction = 'Add test infrastructure (vitest or jest).';
145
+ }
146
+ else if (testFileCount < 5) {
147
+ nextRecommendedAction = `Expand test coverage (currently ${testFileCount} test files).`;
148
+ }
149
+ else {
150
+ nextRecommendedAction = 'All gates green. Proceed to next phase feature work.';
151
+ }
152
+ const gateScore = Math.round((pendingGates.filter(g => g.status === 'passed').length / pendingGates.length) * 100);
153
+ const status = {
154
+ currentVersion: version,
155
+ currentPhase,
156
+ completedPhases,
157
+ pendingGates,
158
+ latestTests: { total: testFileCount, passed: null, framework: testFramework },
159
+ latestPublishState,
160
+ nextRecommendedAction,
161
+ projectHealth: health,
162
+ };
163
+ // ── Save mode ───────────────────────────────────────────────
164
+ if (ctx.flags.save || input === '--save') {
165
+ if (ctx.flags.dryRun) {
166
+ return {
167
+ success: true,
168
+ data: { ...status, wouldSave: true },
169
+ messages: ['(dry-run) Would save status to .nexagent/status.json and append to history.'],
170
+ recommendations: [nextRecommendedAction],
171
+ };
172
+ }
173
+ // Save project-local status
174
+ const savedPath = await saveProjectStatus(cwd, status);
175
+ // Append to global history
176
+ await appendStatusHistory({
177
+ timestamp: new Date().toISOString(),
178
+ version,
179
+ phase: currentPhase,
180
+ gateScore,
181
+ nextAction: nextRecommendedAction,
182
+ });
183
+ // Also save as a workflow run
184
+ const run = await saveWorkflowRun({
185
+ workflow: 'status',
186
+ profile: 'sophie',
187
+ input: '',
188
+ success: true,
189
+ data: status,
190
+ recommendations: [nextRecommendedAction],
191
+ });
192
+ // Create and save snapshot + markdown report
193
+ const snapshot = createSnapshot(run, cwd, pendingGates, ['status', 'auto']);
194
+ const reportPath = await saveMarkdownReport(cwd, snapshot);
195
+ if (ctx.flags.json) {
196
+ return {
197
+ success: true,
198
+ data: {
199
+ ...status,
200
+ savedAt: new Date().toISOString(),
201
+ savedPath,
202
+ reportPath,
203
+ runId: run.id,
204
+ },
205
+ messages: [],
206
+ recommendations: [nextRecommendedAction],
207
+ };
208
+ }
209
+ const messages = [];
210
+ messages.push(`📊 Project Status (saved)`);
211
+ messages.push(` Version: ${version} | Phase: ${currentPhase}`);
212
+ messages.push(` Gate score: ${gateScore}%`);
213
+ messages.push('');
214
+ messages.push(`💾 Saved to: ${savedPath}`);
215
+ messages.push(`📝 Report: ${reportPath}`);
216
+ messages.push(`🏷 Run ID: ${run.id}`);
217
+ messages.push('');
218
+ messages.push('Phase gates:');
219
+ pendingGates.forEach(g => {
220
+ const icon = g.status === 'passed' ? '✅' : g.status === 'pending' ? '⏳' : '❌';
221
+ messages.push(` ${icon} ${g.name}`);
222
+ });
223
+ messages.push('');
224
+ messages.push(`Next recommended action: ${nextRecommendedAction}`);
225
+ return {
226
+ success: true,
227
+ data: status,
228
+ messages,
229
+ recommendations: [nextRecommendedAction],
230
+ };
231
+ }
232
+ // ── Default output (no save) ────────────────────────────────
233
+ if (ctx.flags.json) {
234
+ return {
235
+ success: true,
236
+ data: status,
237
+ messages: [],
238
+ recommendations: [nextRecommendedAction],
239
+ };
240
+ }
241
+ const messages = [];
242
+ messages.push(`📊 Project Status`);
243
+ messages.push(` Version: ${version} | Phase: ${currentPhase}`);
244
+ messages.push(` Publish state: ${latestPublishState}`);
245
+ messages.push('');
246
+ messages.push('Completed phases:');
247
+ completedPhases.forEach(p => messages.push(` ✅ ${p}`));
248
+ messages.push('');
249
+ messages.push('Phase gates:');
250
+ pendingGates.forEach(g => {
251
+ const icon = g.status === 'passed' ? '✅' : g.status === 'pending' ? '⏳' : '❌';
252
+ messages.push(` ${icon} ${g.name}`);
253
+ });
254
+ messages.push('');
255
+ messages.push('Tests:');
256
+ messages.push(` Framework: ${testFramework || 'none detected'}`);
257
+ messages.push(` Test files: ${testFileCount}`);
258
+ messages.push('');
259
+ messages.push(`Next recommended action: ${nextRecommendedAction}`);
260
+ messages.push('');
261
+ messages.push(chalkDim('Tip: Run `sophie status --save` to persist this snapshot.'));
262
+ return {
263
+ success: true,
264
+ data: status,
265
+ messages,
266
+ recommendations: [nextRecommendedAction],
267
+ };
268
+ }
269
+ // ── Helpers ──────────────────────────────────────────────────
270
+ async function fileExists(path) {
271
+ try {
272
+ const { stat } = await import('node:fs/promises');
273
+ const s = await stat(path);
274
+ return s.isFile();
275
+ }
276
+ catch {
277
+ return false;
278
+ }
279
+ }
280
+ async function dirExists(path) {
281
+ try {
282
+ const { stat } = await import('node:fs/promises');
283
+ const s = await stat(path);
284
+ return s.isDirectory();
285
+ }
286
+ catch {
287
+ return false;
288
+ }
289
+ }
290
+ function determinePhase(version) {
291
+ if (/^0\.[0-3]\./.test(version))
292
+ return PHASES[0];
293
+ if (/^0\.[4-5]\./.test(version))
294
+ return PHASES[1];
295
+ if (/^0\.6\./.test(version))
296
+ return PHASES[2];
297
+ if (/^0\.7\./.test(version))
298
+ return PHASES[3];
299
+ if (/^0\.8\.0/.test(version))
300
+ return PHASES[4];
301
+ if (/^0\.8\./.test(version))
302
+ return PHASES[5];
303
+ if (/^0\.9\./.test(version))
304
+ return PHASES[6];
305
+ if (/^1\./.test(version))
306
+ return PHASES[7];
307
+ return PHASES[5];
308
+ }
309
+ function chalkDim(text) {
310
+ // Fallback dim for when chalk is not imported here
311
+ return `\x1b[2m${text}\x1b[0m`;
312
+ }
313
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/workflows/sophie/status.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexagent-cli/cli",
3
- "version": "0.7.2",
3
+ "version": "0.8.1",
4
4
  "description": "NexAgent — locally-runnable AI agent CLI with file editing, tools, and beautiful TUI",
5
5
  "bin": {
6
6
  "nexagent": "dist/bin/nexagent.js",
@@ -30,7 +30,6 @@
30
30
  "test:watch": "vitest",
31
31
  "lint": "eslint src/",
32
32
  "clean": "rm -rf dist/",
33
- "prepublishOnly": "pnpm run build",
34
33
  "validate:bin": "node --import tsx scripts/validate-bin-map.ts",
35
34
  "smoke:pack": "node --import tsx scripts/smoke-pack.ts"
36
35
  },