@nexagent-cli/cli 0.7.1 → 0.8.0

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 (63) hide show
  1. package/dist/commands/amarax.d.ts +1 -0
  2. package/dist/commands/amarax.d.ts.map +1 -1
  3. package/dist/commands/amarax.js +45 -59
  4. package/dist/commands/amarax.js.map +1 -1
  5. package/dist/commands/sophie.d.ts +1 -0
  6. package/dist/commands/sophie.d.ts.map +1 -1
  7. package/dist/commands/sophie.js +42 -107
  8. package/dist/commands/sophie.js.map +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +10 -3
  11. package/dist/index.js.map +1 -1
  12. package/dist/profiles/sophie.d.ts.map +1 -1
  13. package/dist/profiles/sophie.js +1 -0
  14. package/dist/profiles/sophie.js.map +1 -1
  15. package/dist/runtime/workflow.d.ts +27 -0
  16. package/dist/runtime/workflow.d.ts.map +1 -0
  17. package/dist/runtime/workflow.js +21 -0
  18. package/dist/runtime/workflow.js.map +1 -0
  19. package/dist/workflows/amarax/brand.d.ts +3 -0
  20. package/dist/workflows/amarax/brand.d.ts.map +1 -0
  21. package/dist/workflows/amarax/brand.js +214 -0
  22. package/dist/workflows/amarax/brand.js.map +1 -0
  23. package/dist/workflows/amarax/package.d.ts +3 -0
  24. package/dist/workflows/amarax/package.d.ts.map +1 -0
  25. package/dist/workflows/amarax/package.js +204 -0
  26. package/dist/workflows/amarax/package.js.map +1 -0
  27. package/dist/workflows/amarax/scaffold.d.ts +3 -0
  28. package/dist/workflows/amarax/scaffold.d.ts.map +1 -0
  29. package/dist/workflows/amarax/scaffold.js +332 -0
  30. package/dist/workflows/amarax/scaffold.js.map +1 -0
  31. package/dist/workflows/index.d.ts +4 -0
  32. package/dist/workflows/index.d.ts.map +1 -0
  33. package/dist/workflows/index.js +32 -0
  34. package/dist/workflows/index.js.map +1 -0
  35. package/dist/workflows/sophie/audit.d.ts +3 -0
  36. package/dist/workflows/sophie/audit.d.ts.map +1 -0
  37. package/dist/workflows/sophie/audit.js +166 -0
  38. package/dist/workflows/sophie/audit.js.map +1 -0
  39. package/dist/workflows/sophie/council.d.ts +3 -0
  40. package/dist/workflows/sophie/council.d.ts.map +1 -0
  41. package/dist/workflows/sophie/council.js +214 -0
  42. package/dist/workflows/sophie/council.js.map +1 -0
  43. package/dist/workflows/sophie/inspect.d.ts +3 -0
  44. package/dist/workflows/sophie/inspect.d.ts.map +1 -0
  45. package/dist/workflows/sophie/inspect.js +295 -0
  46. package/dist/workflows/sophie/inspect.js.map +1 -0
  47. package/dist/workflows/sophie/plan.d.ts +3 -0
  48. package/dist/workflows/sophie/plan.d.ts.map +1 -0
  49. package/dist/workflows/sophie/plan.js +163 -0
  50. package/dist/workflows/sophie/plan.js.map +1 -0
  51. package/dist/workflows/sophie/review.d.ts +3 -0
  52. package/dist/workflows/sophie/review.d.ts.map +1 -0
  53. package/dist/workflows/sophie/review.js +199 -0
  54. package/dist/workflows/sophie/review.js.map +1 -0
  55. package/dist/workflows/sophie/skill.d.ts +3 -0
  56. package/dist/workflows/sophie/skill.d.ts.map +1 -0
  57. package/dist/workflows/sophie/skill.js +193 -0
  58. package/dist/workflows/sophie/skill.js.map +1 -0
  59. package/dist/workflows/sophie/status.d.ts +3 -0
  60. package/dist/workflows/sophie/status.d.ts.map +1 -0
  61. package/dist/workflows/sophie/status.js +184 -0
  62. package/dist/workflows/sophie/status.js.map +1 -0
  63. package/package.json +5 -5
@@ -0,0 +1,214 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ export async function councilWorkflow(ctx) {
4
+ const topic = ctx.input.trim();
5
+ if (!topic) {
6
+ return {
7
+ success: false,
8
+ data: {},
9
+ messages: [
10
+ 'Error: No topic provided.',
11
+ '',
12
+ 'Usage: sophie council "<topic or question>"',
13
+ '',
14
+ 'Example: sophie council "Should we migrate to pnpm?"',
15
+ ],
16
+ recommendations: ['Provide a clear, decision-oriented question for the council.'],
17
+ };
18
+ }
19
+ // Detect project context for richer recommendations
20
+ let pkg = null;
21
+ try {
22
+ const raw = await readFile(join(ctx.cwd, 'package.json'), 'utf-8');
23
+ pkg = JSON.parse(raw);
24
+ }
25
+ catch {
26
+ pkg = null;
27
+ }
28
+ const version = pkg?.version || 'unknown';
29
+ const scripts = pkg && typeof pkg.scripts === 'object' && pkg.scripts !== null
30
+ ? pkg.scripts : {};
31
+ const hasTests = 'test' in scripts;
32
+ const hasCi = 'ci' in scripts;
33
+ // Generate council perspectives based on topic keywords
34
+ const lowerTopic = topic.toLowerCase();
35
+ const isRelease = /release|version|publish|deploy|ship/.test(lowerTopic);
36
+ const isMigration = /migrat|switch|move|upgrade|update/.test(lowerTopic);
37
+ const isArchitecture = /architect|refactor|restruct|redesign/.test(lowerTopic);
38
+ const isSecurity = /security|vulnerability|auth|encrypt/.test(lowerTopic);
39
+ const members = [
40
+ {
41
+ role: 'Architect',
42
+ icon: '🏗',
43
+ perspective: generateArchitectView(topic, isArchitecture, isMigration),
44
+ recommendation: generateArchitectRec(topic, isArchitecture, isMigration),
45
+ confidence: isArchitecture ? 0.92 : 0.75,
46
+ },
47
+ {
48
+ role: 'Security',
49
+ icon: '🔒',
50
+ perspective: generateSecurityView(topic, isSecurity, isRelease),
51
+ recommendation: generateSecurityRec(topic, isSecurity, isRelease),
52
+ confidence: isSecurity ? 0.95 : 0.70,
53
+ },
54
+ {
55
+ role: 'Release',
56
+ icon: '🚀',
57
+ perspective: generateReleaseView(topic, isRelease, hasTests, hasCi),
58
+ recommendation: generateReleaseRec(topic, isRelease, hasTests, hasCi),
59
+ confidence: isRelease ? 0.90 : 0.72,
60
+ },
61
+ {
62
+ role: 'Product',
63
+ icon: '📐',
64
+ perspective: generateProductView(topic, isRelease, version),
65
+ recommendation: generateProductRec(topic, isRelease, version),
66
+ confidence: 0.78,
67
+ },
68
+ ];
69
+ // Compute consensus
70
+ const avgConfidence = members.reduce((s, m) => s + m.confidence, 0) / members.length;
71
+ const recs = members.map(m => m.recommendation.toLowerCase());
72
+ const goCount = recs.filter(r => r.includes('proceed') || r.includes('go') || r.includes('yes') || r.includes('ship')).length;
73
+ const cautionCount = recs.filter(r => r.includes('caution') || r.includes('wait') || r.includes('defer') || r.includes('hold')).length;
74
+ const noCount = recs.filter(r => r.includes('no') || r.includes('block') || r.includes('stop') || r.includes('wait')).length;
75
+ let consensusLevel;
76
+ if (goCount >= 3)
77
+ consensusLevel = 'strong';
78
+ else if (goCount >= 2 && cautionCount <= 1)
79
+ consensusLevel = 'moderate';
80
+ else if (goCount >= 2 || cautionCount >= 2)
81
+ consensusLevel = 'weak';
82
+ else
83
+ consensusLevel = 'split';
84
+ // Final recommendation
85
+ let finalRecommendation;
86
+ if (consensusLevel === 'strong') {
87
+ finalRecommendation = 'Proceed with confidence. The council is aligned. Document the decision and execute.';
88
+ }
89
+ else if (consensusLevel === 'moderate') {
90
+ finalRecommendation = 'Proceed with a phased approach. Address the caution flags before full commitment.';
91
+ }
92
+ else if (consensusLevel === 'weak') {
93
+ finalRecommendation = 'Defer or run a time-boxed spike. The council sees significant uncertainty.';
94
+ }
95
+ else {
96
+ finalRecommendation = 'Do not proceed without further analysis. The council is split. Gather more data and reconvene.';
97
+ }
98
+ const actionItems = [];
99
+ if (!hasTests)
100
+ actionItems.push('Add test coverage before any release decision.');
101
+ if (!hasCi)
102
+ actionItems.push('Set up CI pipeline to validate changes automatically.');
103
+ if (isRelease)
104
+ actionItems.push('Run full regression test suite before shipping.');
105
+ if (isMigration)
106
+ actionItems.push('Create rollback plan and validate data compatibility.');
107
+ if (isSecurity)
108
+ actionItems.push('Schedule security audit and review threat model.');
109
+ if (actionItems.length === 0)
110
+ actionItems.push('Document the decision in ADR or team wiki.');
111
+ const council = {
112
+ topic,
113
+ members,
114
+ finalRecommendation,
115
+ consensusLevel,
116
+ actionItems,
117
+ };
118
+ if (ctx.flags.json) {
119
+ return {
120
+ success: true,
121
+ data: council,
122
+ messages: [],
123
+ recommendations: actionItems,
124
+ };
125
+ }
126
+ const messages = [];
127
+ messages.push(`🧠 Sophie Council — "${topic}"`);
128
+ messages.push(` Current version: ${version}`);
129
+ messages.push('');
130
+ members.forEach(m => {
131
+ messages.push(`${m.icon} ${m.role} (confidence: ${Math.round(m.confidence * 100)}%)`);
132
+ messages.push(` Perspective: ${m.perspective}`);
133
+ messages.push(` Recommendation: ${m.recommendation}`);
134
+ messages.push('');
135
+ });
136
+ messages.push(`Consensus: ${consensusLevel.toUpperCase()}`);
137
+ messages.push(`Final recommendation: ${finalRecommendation}`);
138
+ messages.push('');
139
+ messages.push('Action items:');
140
+ actionItems.forEach(a => messages.push(` → ${a}`));
141
+ return {
142
+ success: true,
143
+ data: council,
144
+ messages,
145
+ recommendations: actionItems,
146
+ };
147
+ }
148
+ // ── Perspective generators ───────────────────────────────────
149
+ function generateArchitectView(topic, isArch, isMigrate) {
150
+ if (isArch)
151
+ return `The structural change in "${topic}" affects core abstractions. Review coupling and cohesion before proceeding.`;
152
+ if (isMigrate)
153
+ return `Migration changes the foundation. Evaluate blast radius, deprecation path, and backward compatibility.`;
154
+ return `From an architecture standpoint, "${topic}" should be evaluated for side effects on existing modules and interfaces.`;
155
+ }
156
+ function generateArchitectRec(_topic, isArch, isMigrate) {
157
+ if (isArch)
158
+ return 'Proceed with a design doc and incremental refactoring plan.';
159
+ if (isMigrate)
160
+ return 'Run a proof-of-concept on a non-critical module first.';
161
+ return 'No structural blockers. Proceed with standard review.';
162
+ }
163
+ function generateSecurityView(topic, isSec, isRelease) {
164
+ if (isSec)
165
+ return `Security-sensitive topic "${topic}" requires threat modeling and dependency scanning.`;
166
+ if (isRelease)
167
+ return 'Release expands the attack surface. Verify secrets management and supply-chain integrity.';
168
+ return `Standard security posture applies to "${topic}". No immediate red flags.`;
169
+ }
170
+ function generateSecurityRec(_topic, isSec, isRelease) {
171
+ if (isSec)
172
+ return 'Hold until security audit is complete and findings are resolved.';
173
+ if (isRelease)
174
+ return 'Proceed only after automated security checks pass in CI.';
175
+ return 'Proceed with caution. Monitor for new CVEs post-deployment.';
176
+ }
177
+ function generateReleaseView(topic, isRelease, hasTests, hasCi) {
178
+ if (isRelease)
179
+ return `Release "${topic}" needs green CI, version bump, changelog, and rollback plan.`;
180
+ const readiness = [hasTests ? 'tests' : null, hasCi ? 'CI' : null].filter(Boolean);
181
+ if (readiness.length === 0)
182
+ return 'Project lacks automated validation. Any change is high-risk.';
183
+ if (readiness.length === 1)
184
+ return `Only ${readiness[0]} is in place. Build out the other gate before shipping.`;
185
+ return `Project has ${readiness.join(' and ')}. Release pipeline is moderately mature.`;
186
+ }
187
+ function generateReleaseRec(_topic, isRelease, hasTests, hasCi) {
188
+ if (isRelease) {
189
+ if (hasTests && hasCi)
190
+ return 'Ship it. All gates are green.';
191
+ if (hasTests)
192
+ return 'Proceed with manual CI verification before release.';
193
+ if (hasCi)
194
+ return 'Add tests before release; CI alone is insufficient.';
195
+ return 'Block release. No automated validation in place.';
196
+ }
197
+ return 'Proceed. Change is not release-critical.';
198
+ }
199
+ function generateProductView(topic, isRelease, version) {
200
+ if (isRelease)
201
+ return `Version ${version} release for "${topic}" must align with user communication and support readiness.`;
202
+ return `Product impact of "${topic}" depends on user-facing changes. Verify no breaking changes without deprecation.`;
203
+ }
204
+ function generateProductRec(_topic, isRelease, version) {
205
+ if (isRelease) {
206
+ if (version === 'unknown')
207
+ return 'Caution: unknown version. Define versioning strategy first.';
208
+ if (/^0\./.test(version))
209
+ return 'Proceed with pre-release label. v0.x implies instability is acceptable.';
210
+ return 'Proceed with full release checklist for stable version.';
211
+ }
212
+ return 'Proceed. Monitor user feedback after deployment.';
213
+ }
214
+ //# sourceMappingURL=council.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"council.js","sourceRoot":"","sources":["../../../src/workflows/sophie/council.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { WorkflowContext, WorkflowResult } from '../../runtime/workflow.js';
2
+ export declare function inspectWorkflow(ctx: WorkflowContext): Promise<WorkflowResult>;
3
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/workflows/sophie/inspect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAoBjF,wBAAsB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAuSnF"}
@@ -0,0 +1,295 @@
1
+ import { readdir, readFile, stat } from 'node:fs/promises';
2
+ import { join, resolve } from 'node:path';
3
+ export async function inspectWorkflow(ctx) {
4
+ const target = ctx.input.trim() || ctx.cwd;
5
+ const resolved = resolve(target);
6
+ let targetStat;
7
+ try {
8
+ targetStat = await stat(resolved);
9
+ }
10
+ catch {
11
+ return {
12
+ success: false,
13
+ data: {},
14
+ messages: [`Error: Target path does not exist: ${resolved}`],
15
+ recommendations: ['Provide a valid directory path or run without a target to inspect the current directory.'],
16
+ };
17
+ }
18
+ if (!targetStat.isDirectory()) {
19
+ return {
20
+ success: false,
21
+ data: {},
22
+ messages: [`Error: Target is not a directory: ${resolved}`],
23
+ recommendations: ['Inspect requires a directory target.'],
24
+ };
25
+ }
26
+ const relExists = async (...segments) => {
27
+ try {
28
+ await stat(join(resolved, ...segments));
29
+ return true;
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ };
35
+ let topLevel = [];
36
+ try {
37
+ topLevel = await readdir(resolved, { withFileTypes: true });
38
+ }
39
+ catch {
40
+ topLevel = [];
41
+ }
42
+ let pkg = null;
43
+ if (await relExists('package.json')) {
44
+ try {
45
+ const raw = await readFile(join(resolved, 'package.json'), 'utf-8');
46
+ pkg = JSON.parse(raw);
47
+ }
48
+ catch {
49
+ pkg = null;
50
+ }
51
+ }
52
+ const deps = {
53
+ ...(pkg && typeof pkg.dependencies === 'object' && pkg.dependencies !== null
54
+ ? pkg.dependencies
55
+ : {}),
56
+ ...(pkg && typeof pkg.devDependencies === 'object' && pkg.devDependencies !== null
57
+ ? pkg.devDependencies
58
+ : {}),
59
+ };
60
+ const hasDep = (name) => !!deps[name];
61
+ const detectedStack = [];
62
+ if (hasDep('react') || hasDep('react-dom'))
63
+ detectedStack.push('React');
64
+ if (hasDep('vue'))
65
+ detectedStack.push('Vue');
66
+ if (hasDep('express'))
67
+ detectedStack.push('Express');
68
+ if (hasDep('fastify'))
69
+ detectedStack.push('Fastify');
70
+ if (hasDep('next'))
71
+ detectedStack.push('Next.js');
72
+ if (hasDep('nuxt'))
73
+ detectedStack.push('Nuxt');
74
+ if (hasDep('astro'))
75
+ detectedStack.push('Astro');
76
+ if (hasDep('svelte'))
77
+ detectedStack.push('Svelte');
78
+ if (hasDep('prisma') || (await relExists('prisma', 'schema.prisma')))
79
+ detectedStack.push('Prisma');
80
+ if (await relExists('tsconfig.json'))
81
+ detectedStack.push('TypeScript');
82
+ if (pkg)
83
+ detectedStack.push('Node.js');
84
+ if ((await relExists('vite.config.ts')) ||
85
+ (await relExists('vite.config.js')) ||
86
+ (await relExists('vite.config.mjs')))
87
+ detectedStack.push('Vite');
88
+ if ((await relExists('next.config.ts')) ||
89
+ (await relExists('next.config.js')) ||
90
+ (await relExists('next.config.mjs')))
91
+ detectedStack.push('Next.js');
92
+ if (hasDep('tailwindcss') ||
93
+ (await relExists('tailwind.config.js')) ||
94
+ (await relExists('tailwind.config.ts')))
95
+ detectedStack.push('Tailwind CSS');
96
+ if (hasDep('jest') ||
97
+ hasDep('vitest') ||
98
+ hasDep('mocha') ||
99
+ hasDep('cypress') ||
100
+ hasDep('playwright'))
101
+ detectedStack.push('Testing Framework');
102
+ const workspaceLayout = {
103
+ isMonorepo: false,
104
+ tools: [],
105
+ };
106
+ if (await relExists('pnpm-workspace.yaml')) {
107
+ workspaceLayout.isMonorepo = true;
108
+ workspaceLayout.tools.push('pnpm workspaces');
109
+ }
110
+ if (await relExists('lerna.json')) {
111
+ workspaceLayout.isMonorepo = true;
112
+ workspaceLayout.tools.push('Lerna');
113
+ }
114
+ if (await relExists('nx.json')) {
115
+ workspaceLayout.isMonorepo = true;
116
+ workspaceLayout.tools.push('Nx');
117
+ }
118
+ if (await relExists('turbo.json')) {
119
+ workspaceLayout.isMonorepo = true;
120
+ workspaceLayout.tools.push('Turborepo');
121
+ }
122
+ if (pkg &&
123
+ Array.isArray(pkg.workspaces)) {
124
+ workspaceLayout.isMonorepo = true;
125
+ const hasYarn = workspaceLayout.tools.some((t) => t.includes('Yarn'));
126
+ if (!hasYarn)
127
+ workspaceLayout.tools.push('npm workspaces');
128
+ }
129
+ let packageManager = 'unknown';
130
+ if (await relExists('pnpm-lock.yaml'))
131
+ packageManager = 'pnpm';
132
+ else if (await relExists('yarn.lock'))
133
+ packageManager = 'yarn';
134
+ else if (await relExists('package-lock.json'))
135
+ packageManager = 'npm';
136
+ else if (await relExists('bun.lockb'))
137
+ packageManager = 'bun';
138
+ const configFiles = [];
139
+ const configCandidates = [
140
+ 'package.json',
141
+ 'tsconfig.json',
142
+ 'vite.config.ts',
143
+ 'vite.config.js',
144
+ 'vite.config.mjs',
145
+ 'next.config.ts',
146
+ 'next.config.js',
147
+ 'next.config.mjs',
148
+ 'tailwind.config.ts',
149
+ 'tailwind.config.js',
150
+ 'eslint.config.js',
151
+ 'eslint.config.mjs',
152
+ '.eslintrc.json',
153
+ '.eslintrc.js',
154
+ 'prettier.config.js',
155
+ '.prettierrc',
156
+ '.prettierrc.json',
157
+ 'jest.config.js',
158
+ 'vitest.config.ts',
159
+ 'vitest.config.js',
160
+ 'dockerfile',
161
+ 'docker-compose.yml',
162
+ '.github',
163
+ 'prisma/schema.prisma',
164
+ 'webpack.config.js',
165
+ 'rollup.config.js',
166
+ 'esbuild.config.js',
167
+ 'biome.json',
168
+ 'deno.json',
169
+ 'deno.jsonc',
170
+ ];
171
+ for (const c of configCandidates) {
172
+ if (await relExists(c))
173
+ configFiles.push(c);
174
+ }
175
+ const entrypoints = [];
176
+ if (pkg && typeof pkg.main === 'string')
177
+ entrypoints.push(pkg.main);
178
+ if (pkg && typeof pkg.module === 'string')
179
+ entrypoints.push(pkg.module);
180
+ if (pkg && typeof pkg.bin === 'string')
181
+ entrypoints.push(pkg.bin);
182
+ if (pkg && typeof pkg.bin === 'object' && pkg.bin !== null) {
183
+ entrypoints.push(...Object.values(pkg.bin));
184
+ }
185
+ const srcIndexFiles = ['index.ts', 'index.js', 'index.tsx', 'index.jsx', 'main.ts', 'main.js', 'app.ts', 'app.js'];
186
+ if (await relExists('src')) {
187
+ for (const f of srcIndexFiles) {
188
+ if (await relExists('src', f))
189
+ entrypoints.push(`src/${f}`);
190
+ }
191
+ }
192
+ for (const f of srcIndexFiles) {
193
+ if (await relExists(f))
194
+ entrypoints.push(f);
195
+ }
196
+ const uniqueEntrypoints = [...new Set(entrypoints)];
197
+ const scripts = pkg && typeof pkg.scripts === 'object' && pkg.scripts !== null
198
+ ? pkg.scripts
199
+ : {};
200
+ const commandsAvailable = Object.entries(scripts).map(([k, v]) => ({ name: k, command: v }));
201
+ let fileCount = 0;
202
+ let maxDepth = 0;
203
+ const countFiles = async (dir, depth) => {
204
+ if (depth > maxDepth)
205
+ maxDepth = depth;
206
+ try {
207
+ const entries = await readdir(join(resolved, dir), { withFileTypes: true });
208
+ for (const e of entries) {
209
+ if (e.isDirectory()) {
210
+ const lower = e.name.toLowerCase();
211
+ if (lower === 'node_modules' ||
212
+ lower === '.git' ||
213
+ lower === 'dist' ||
214
+ lower === 'build' ||
215
+ lower === '.next' ||
216
+ lower === 'coverage' ||
217
+ lower === 'out')
218
+ continue;
219
+ await countFiles(join(dir, e.name), depth + 1);
220
+ }
221
+ else {
222
+ fileCount++;
223
+ }
224
+ }
225
+ }
226
+ catch {
227
+ // ignore unreadable directories
228
+ }
229
+ };
230
+ await countFiles('.', 0);
231
+ const result = {
232
+ detectedStack,
233
+ workspaceLayout,
234
+ packageManager,
235
+ configFiles,
236
+ entrypoints: uniqueEntrypoints,
237
+ commandsAvailable,
238
+ stats: {
239
+ fileCount,
240
+ directoryDepth: maxDepth,
241
+ hasPackageJson: !!pkg,
242
+ topLevelItemCount: topLevel.length,
243
+ },
244
+ };
245
+ if (ctx.flags.json) {
246
+ return {
247
+ success: true,
248
+ data: result,
249
+ messages: [],
250
+ recommendations: [`Run: sophie audit ${target || '.'}`, 'Run: sophie plan "add feature X"'],
251
+ };
252
+ }
253
+ const messages = [];
254
+ messages.push(`🔍 Inspecting: ${resolved}`);
255
+ messages.push('');
256
+ messages.push(`Detected stack: ${detectedStack.length ? detectedStack.join(', ') : 'None detected'}`);
257
+ messages.push(`Package manager: ${packageManager}`);
258
+ messages.push(`Monorepo: ${workspaceLayout.isMonorepo ? `Yes (${workspaceLayout.tools.join(', ')})` : 'No'}`);
259
+ messages.push('');
260
+ messages.push('Config files found:');
261
+ if (configFiles.length) {
262
+ configFiles.forEach((c) => messages.push(` 📄 ${c}`));
263
+ }
264
+ else {
265
+ messages.push(' (none found)');
266
+ }
267
+ messages.push('');
268
+ messages.push('Entrypoints:');
269
+ if (uniqueEntrypoints.length) {
270
+ uniqueEntrypoints.forEach((e) => messages.push(` → ${e}`));
271
+ }
272
+ else {
273
+ messages.push(' (none identified)');
274
+ }
275
+ messages.push('');
276
+ messages.push('Available commands:');
277
+ if (commandsAvailable.length) {
278
+ commandsAvailable.forEach((c) => messages.push(` $ ${c.name}: ${c.command}`));
279
+ }
280
+ else {
281
+ messages.push(' (none found)');
282
+ }
283
+ messages.push('');
284
+ messages.push('Stats:');
285
+ messages.push(` Files (excluding build dirs): ${fileCount}`);
286
+ messages.push(` Max directory depth: ${maxDepth}`);
287
+ messages.push(` Top-level items: ${topLevel.length}`);
288
+ return {
289
+ success: true,
290
+ data: result,
291
+ messages,
292
+ recommendations: [`Run: sophie audit ${target || '.'}`, 'Run: sophie plan "add feature X"'],
293
+ };
294
+ }
295
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/workflows/sophie/inspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { WorkflowContext, WorkflowResult } from '../../runtime/workflow.js';
2
+ export declare function planWorkflow(ctx: WorkflowContext): Promise<WorkflowResult>;
3
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/workflows/sophie/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AA6BjF,wBAAsB,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAqKhF"}