@nexagent-cli/cli 0.7.0 → 0.7.2

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 (48) hide show
  1. package/dist/bin/nexagent.d.ts +3 -0
  2. package/dist/bin/nexagent.d.ts.map +1 -0
  3. package/dist/bin/nexagent.js +7 -0
  4. package/dist/bin/nexagent.js.map +1 -0
  5. package/dist/commands/amarax.d.ts +1 -0
  6. package/dist/commands/amarax.d.ts.map +1 -1
  7. package/dist/commands/amarax.js +45 -59
  8. package/dist/commands/amarax.js.map +1 -1
  9. package/dist/commands/sophie.d.ts +1 -0
  10. package/dist/commands/sophie.d.ts.map +1 -1
  11. package/dist/commands/sophie.js +45 -58
  12. package/dist/commands/sophie.js.map +1 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +10 -3
  15. package/dist/index.js.map +1 -1
  16. package/dist/runtime/workflow.d.ts +27 -0
  17. package/dist/runtime/workflow.d.ts.map +1 -0
  18. package/dist/runtime/workflow.js +21 -0
  19. package/dist/runtime/workflow.js.map +1 -0
  20. package/dist/workflows/amarax/brand.d.ts +3 -0
  21. package/dist/workflows/amarax/brand.d.ts.map +1 -0
  22. package/dist/workflows/amarax/brand.js +214 -0
  23. package/dist/workflows/amarax/brand.js.map +1 -0
  24. package/dist/workflows/amarax/package.d.ts +3 -0
  25. package/dist/workflows/amarax/package.d.ts.map +1 -0
  26. package/dist/workflows/amarax/package.js +204 -0
  27. package/dist/workflows/amarax/package.js.map +1 -0
  28. package/dist/workflows/amarax/scaffold.d.ts +3 -0
  29. package/dist/workflows/amarax/scaffold.d.ts.map +1 -0
  30. package/dist/workflows/amarax/scaffold.js +332 -0
  31. package/dist/workflows/amarax/scaffold.js.map +1 -0
  32. package/dist/workflows/index.d.ts +4 -0
  33. package/dist/workflows/index.d.ts.map +1 -0
  34. package/dist/workflows/index.js +24 -0
  35. package/dist/workflows/index.js.map +1 -0
  36. package/dist/workflows/sophie/audit.d.ts +3 -0
  37. package/dist/workflows/sophie/audit.d.ts.map +1 -0
  38. package/dist/workflows/sophie/audit.js +166 -0
  39. package/dist/workflows/sophie/audit.js.map +1 -0
  40. package/dist/workflows/sophie/inspect.d.ts +3 -0
  41. package/dist/workflows/sophie/inspect.d.ts.map +1 -0
  42. package/dist/workflows/sophie/inspect.js +295 -0
  43. package/dist/workflows/sophie/inspect.js.map +1 -0
  44. package/dist/workflows/sophie/plan.d.ts +3 -0
  45. package/dist/workflows/sophie/plan.d.ts.map +1 -0
  46. package/dist/workflows/sophie/plan.js +163 -0
  47. package/dist/workflows/sophie/plan.js.map +1 -0
  48. package/package.json +8 -6
@@ -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"}
@@ -0,0 +1,163 @@
1
+ export async function planWorkflow(ctx) {
2
+ const goal = ctx.input.trim();
3
+ if (!goal) {
4
+ return {
5
+ success: false,
6
+ data: {},
7
+ messages: ['Error: No goal provided. Usage: sophie plan "goal"'],
8
+ recommendations: ['Provide a clear, concise goal describing what you want to achieve.'],
9
+ };
10
+ }
11
+ const lowerGoal = goal.toLowerCase();
12
+ const hasApi = lowerGoal.includes('api') || lowerGoal.includes('backend') || lowerGoal.includes('server');
13
+ const hasUi = lowerGoal.includes('ui') || lowerGoal.includes('frontend') || lowerGoal.includes('react') || lowerGoal.includes('vue');
14
+ const hasTest = lowerGoal.includes('test') || lowerGoal.includes('testing');
15
+ const hasDeploy = lowerGoal.includes('deploy') || lowerGoal.includes('release') || lowerGoal.includes('ci/cd') || lowerGoal.includes('ci');
16
+ const hasDb = lowerGoal.includes('database') || lowerGoal.includes('db') || lowerGoal.includes('sql') || lowerGoal.includes('prisma');
17
+ const hasAuth = lowerGoal.includes('auth') || lowerGoal.includes('login') || lowerGoal.includes('oauth');
18
+ const assumptions = [
19
+ 'The team has access to a modern development environment (Node.js, Git).',
20
+ 'Requirements are available in some form (ticket, brief, or stakeholder input).',
21
+ ];
22
+ if (hasApi)
23
+ assumptions.push('Backend service will expose REST or GraphQL endpoints.');
24
+ if (hasUi)
25
+ assumptions.push('UI will be built with a component-based framework.');
26
+ if (hasDb)
27
+ assumptions.push('A persistent data store is available and provisioned.');
28
+ if (hasAuth)
29
+ assumptions.push('An identity provider or auth strategy has been chosen.');
30
+ const phases = [
31
+ {
32
+ name: 'Discovery & Scoping',
33
+ tasks: ['Clarify requirements', 'Define success metrics', 'Stakeholder alignment'],
34
+ duration: '1–2 days',
35
+ },
36
+ {
37
+ name: 'Design & Architecture',
38
+ tasks: ['Draft data models', 'Define API contracts', 'Create UI wireframes'],
39
+ duration: '2–3 days',
40
+ },
41
+ ];
42
+ if (hasApi) {
43
+ phases.push({
44
+ name: 'Backend Implementation',
45
+ tasks: ['Scaffold server', 'Implement domain logic', 'Add middleware & auth'],
46
+ duration: '3–5 days',
47
+ });
48
+ }
49
+ if (hasUi) {
50
+ phases.push({
51
+ name: 'Frontend Implementation',
52
+ tasks: ['Set up project scaffold', 'Build core components', 'Wire API integration'],
53
+ duration: '3–5 days',
54
+ });
55
+ }
56
+ if (hasDb) {
57
+ phases.push({
58
+ name: 'Data Layer Setup',
59
+ tasks: ['Define schema / migrations', 'Seed test data', 'Configure connection pooling'],
60
+ duration: '1–2 days',
61
+ });
62
+ }
63
+ if (hasTest) {
64
+ phases.push({
65
+ name: 'Testing & QA',
66
+ tasks: ['Unit tests', 'Integration tests', 'Manual QA pass'],
67
+ duration: '2–3 days',
68
+ });
69
+ }
70
+ else {
71
+ phases.push({
72
+ name: 'Testing & QA',
73
+ tasks: ['Add smoke tests', 'Validate happy path', 'Regression check'],
74
+ duration: '1–2 days',
75
+ });
76
+ }
77
+ if (hasDeploy) {
78
+ phases.push({
79
+ name: 'Deployment & Release',
80
+ tasks: ['Configure CI/CD pipeline', 'Set up staging environment', 'Production release'],
81
+ duration: '1–2 days',
82
+ });
83
+ }
84
+ else {
85
+ phases.push({
86
+ name: 'Wrap-up',
87
+ tasks: ['Code review', 'Documentation', 'Handoff'],
88
+ duration: '1 day',
89
+ });
90
+ }
91
+ const tasks = phases.flatMap((phase, pi) => phase.tasks.map((t, ti) => ({
92
+ id: `P${pi + 1}-T${ti + 1}`,
93
+ description: `${phase.name}: ${t}`,
94
+ priority: pi <= 1 ? 'high' : 'medium',
95
+ })));
96
+ const risks = [
97
+ { level: 'low', description: 'Scope creep from ambiguous requirements.' },
98
+ { level: 'medium', description: 'Integration friction with third-party services.' },
99
+ ];
100
+ if (!hasTest)
101
+ risks.push({ level: 'high', description: 'No explicit testing phase increases regression risk.' });
102
+ if (!hasDeploy)
103
+ risks.push({ level: 'medium', description: 'Deployment strategy undefined; may delay go-live.' });
104
+ if (hasAuth)
105
+ risks.push({ level: 'high', description: 'Auth implementation must be audited for security.' });
106
+ const exitGates = [
107
+ 'Requirements document signed off.',
108
+ 'Architecture review completed.',
109
+ 'All P1 tasks resolved.',
110
+ 'Stakeholder demo approved.',
111
+ ];
112
+ if (hasTest)
113
+ exitGates.push('Test coverage ≥ 80% and CI passing.');
114
+ if (hasDeploy)
115
+ exitGates.push('Staging environment validated.');
116
+ const recommendedNextCommand = 'sophie audit .';
117
+ const plan = {
118
+ goal,
119
+ assumptions,
120
+ phases,
121
+ tasks,
122
+ risks,
123
+ exitGates,
124
+ recommendedNextCommand,
125
+ };
126
+ if (ctx.flags.json) {
127
+ return {
128
+ success: true,
129
+ data: plan,
130
+ messages: [],
131
+ recommendations: [`Run: ${recommendedNextCommand}`],
132
+ };
133
+ }
134
+ const messages = [];
135
+ messages.push(`🎯 Goal: ${goal}`);
136
+ messages.push('');
137
+ messages.push('Assumptions:');
138
+ assumptions.forEach((a) => messages.push(` • ${a}`));
139
+ messages.push('');
140
+ messages.push('Phases:');
141
+ phases.forEach((p) => {
142
+ messages.push(` 📋 ${p.name} (${p.duration})`);
143
+ p.tasks.forEach((t) => messages.push(` - ${t}`));
144
+ });
145
+ messages.push('');
146
+ messages.push('Tasks:');
147
+ tasks.forEach((t) => messages.push(` [${t.priority.toUpperCase()}] ${t.id}: ${t.description}`));
148
+ messages.push('');
149
+ messages.push('Risks:');
150
+ risks.forEach((r) => messages.push(` [${r.level.toUpperCase()}] ${r.description}`));
151
+ messages.push('');
152
+ messages.push('Exit Gates:');
153
+ exitGates.forEach((g) => messages.push(` ✓ ${g}`));
154
+ messages.push('');
155
+ messages.push(`Next recommended command: ${recommendedNextCommand}`);
156
+ return {
157
+ success: true,
158
+ data: plan,
159
+ messages,
160
+ recommendations: [`Run: ${recommendedNextCommand}`],
161
+ };
162
+ }
163
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/workflows/sophie/plan.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@nexagent-cli/cli",
3
- "version": "0.7.0",
3
+ "version": "0.7.2",
4
4
  "description": "NexAgent — locally-runnable AI agent CLI with file editing, tools, and beautiful TUI",
5
5
  "bin": {
6
- "nexagent": "./dist/index.js",
7
- "sophie": "./dist/bin/sophie.js",
8
- "amarax": "./dist/bin/amarax.js"
6
+ "nexagent": "dist/bin/nexagent.js",
7
+ "sophie": "dist/bin/sophie.js",
8
+ "amarax": "dist/bin/amarax.js"
9
9
  },
10
10
  "main": "./dist/index.js",
11
11
  "types": "./dist/index.d.ts",
@@ -30,13 +30,15 @@
30
30
  "test:watch": "vitest",
31
31
  "lint": "eslint src/",
32
32
  "clean": "rm -rf dist/",
33
- "prepublishOnly": "pnpm run build"
33
+ "prepublishOnly": "pnpm run build",
34
+ "validate:bin": "node --import tsx scripts/validate-bin-map.ts",
35
+ "smoke:pack": "node --import tsx scripts/smoke-pack.ts"
34
36
  },
35
37
  "dependencies": {
36
38
  "@anthropic-ai/sdk": "^0.29.0",
37
39
  "@google/generative-ai": "^0.19.0",
38
40
  "@inquirer/prompts": "^5.0.0",
39
- "@nexagent-cli/shared": "^0.7.0",
41
+ "@nexagent-cli/shared": "workspace:*",
40
42
  "better-sqlite3": "^11.0.0",
41
43
  "boxen": "^8.0.0",
42
44
  "chalk": "^5.3.0",