universal-agent-memory 0.1.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.
- package/LICENSE +21 -0
- package/README.md +321 -0
- package/dist/analyzers/index.d.ts +3 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +373 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +119 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/cli/analyze.d.ts +7 -0
- package/dist/cli/analyze.d.ts.map +1 -0
- package/dist/cli/analyze.js +103 -0
- package/dist/cli/analyze.js.map +1 -0
- package/dist/cli/droids.d.ts +9 -0
- package/dist/cli/droids.d.ts.map +1 -0
- package/dist/cli/droids.js +227 -0
- package/dist/cli/droids.js.map +1 -0
- package/dist/cli/generate.d.ts +9 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +203 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/init.d.ts +12 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +260 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/memory.d.ts +15 -0
- package/dist/cli/memory.d.ts.map +1 -0
- package/dist/cli/memory.js +274 -0
- package/dist/cli/memory.js.map +1 -0
- package/dist/cli/sync.d.ts +7 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +26 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/worktree.d.ts +9 -0
- package/dist/cli/worktree.d.ts.map +1 -0
- package/dist/cli/worktree.js +175 -0
- package/dist/cli/worktree.js.map +1 -0
- package/dist/generators/claude-md.d.ts +3 -0
- package/dist/generators/claude-md.d.ts.map +1 -0
- package/dist/generators/claude-md.js +643 -0
- package/dist/generators/claude-md.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/backends/base.d.ts +18 -0
- package/dist/memory/backends/base.d.ts.map +1 -0
- package/dist/memory/backends/base.js +2 -0
- package/dist/memory/backends/base.js.map +1 -0
- package/dist/memory/backends/factory.d.ts +4 -0
- package/dist/memory/backends/factory.d.ts.map +1 -0
- package/dist/memory/backends/factory.js +52 -0
- package/dist/memory/backends/factory.js.map +1 -0
- package/dist/memory/backends/github.d.ts +22 -0
- package/dist/memory/backends/github.d.ts.map +1 -0
- package/dist/memory/backends/github.js +118 -0
- package/dist/memory/backends/github.js.map +1 -0
- package/dist/memory/backends/qdrant-cloud.d.ts +19 -0
- package/dist/memory/backends/qdrant-cloud.d.ts.map +1 -0
- package/dist/memory/backends/qdrant-cloud.js +111 -0
- package/dist/memory/backends/qdrant-cloud.js.map +1 -0
- package/dist/memory/prepopulate.d.ts +76 -0
- package/dist/memory/prepopulate.d.ts.map +1 -0
- package/dist/memory/prepopulate.js +815 -0
- package/dist/memory/prepopulate.js.map +1 -0
- package/dist/memory/short-term/factory.d.ts +23 -0
- package/dist/memory/short-term/factory.d.ts.map +1 -0
- package/dist/memory/short-term/factory.js +28 -0
- package/dist/memory/short-term/factory.js.map +1 -0
- package/dist/memory/short-term/indexeddb.d.ts +25 -0
- package/dist/memory/short-term/indexeddb.d.ts.map +1 -0
- package/dist/memory/short-term/indexeddb.js +64 -0
- package/dist/memory/short-term/indexeddb.js.map +1 -0
- package/dist/memory/short-term/sqlite.d.ts +40 -0
- package/dist/memory/short-term/sqlite.d.ts.map +1 -0
- package/dist/memory/short-term/sqlite.js +136 -0
- package/dist/memory/short-term/sqlite.js.map +1 -0
- package/dist/types/analysis.d.ts +82 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +2 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/config.d.ts +923 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +97 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/merge-claude-md.d.ts +15 -0
- package/dist/utils/merge-claude-md.d.ts.map +1 -0
- package/dist/utils/merge-claude-md.js +149 -0
- package/dist/utils/merge-claude-md.js.map +1 -0
- package/package.json +90 -0
- package/templates/CLAUDE.template.md +632 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type DroidsAction = 'list' | 'add' | 'import';
|
|
2
|
+
interface DroidsOptions {
|
|
3
|
+
name?: string;
|
|
4
|
+
template?: string;
|
|
5
|
+
path?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function droidsCommand(action: DroidsAction, options?: DroidsOptions): Promise<void>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=droids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"droids.d.ts","sourceRoot":"","sources":["../../src/cli/droids.ts"],"names":[],"mappings":"AAKA,KAAK,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE9C,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAiGD,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAcpG"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { existsSync, readdirSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
4
|
+
import { join, basename } from 'path';
|
|
5
|
+
const BUILTIN_TEMPLATES = {
|
|
6
|
+
'code-reviewer': {
|
|
7
|
+
description: 'Reviews diffs for correctness, tests, and migration risks',
|
|
8
|
+
content: `---
|
|
9
|
+
name: code-reviewer
|
|
10
|
+
description: Reviews diffs for correctness, tests, and migration risks
|
|
11
|
+
model: inherit
|
|
12
|
+
tools: ["Read", "LS", "Grep", "Glob"]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
You are a senior code reviewer. Examine the diff and context provided:
|
|
16
|
+
|
|
17
|
+
- Summarize the intent of the change
|
|
18
|
+
- Flag correctness risks, missing tests, or rollback hazards
|
|
19
|
+
- Call out any migrations or data changes that need coordination
|
|
20
|
+
|
|
21
|
+
Reply with:
|
|
22
|
+
Summary: <one-line>
|
|
23
|
+
Findings:
|
|
24
|
+
- <issue or ✅ No blockers>
|
|
25
|
+
Follow-up:
|
|
26
|
+
- <action or leave blank>
|
|
27
|
+
`,
|
|
28
|
+
},
|
|
29
|
+
'security-reviewer': {
|
|
30
|
+
description: 'Looks for security issues in code changes',
|
|
31
|
+
content: `---
|
|
32
|
+
name: security-reviewer
|
|
33
|
+
description: Looks for security issues in recently edited files
|
|
34
|
+
model: inherit
|
|
35
|
+
tools: ["Read", "Grep", "WebSearch"]
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
Investigate the files referenced for security issues:
|
|
39
|
+
|
|
40
|
+
- Identify injection, insecure transport, privilege escalation, or secrets exposure
|
|
41
|
+
- Check for OWASP Top 10 vulnerabilities
|
|
42
|
+
- Suggest concrete mitigations
|
|
43
|
+
- Link to relevant CWE or standards when helpful
|
|
44
|
+
|
|
45
|
+
Respond with:
|
|
46
|
+
Summary: <headline>
|
|
47
|
+
Findings:
|
|
48
|
+
- <file>: <issue>
|
|
49
|
+
Mitigations:
|
|
50
|
+
- <recommendation>
|
|
51
|
+
`,
|
|
52
|
+
},
|
|
53
|
+
'performance-reviewer': {
|
|
54
|
+
description: 'Identifies performance bottlenecks and optimization opportunities',
|
|
55
|
+
content: `---
|
|
56
|
+
name: performance-reviewer
|
|
57
|
+
description: Identifies performance bottlenecks in code changes
|
|
58
|
+
model: inherit
|
|
59
|
+
tools: ["Read", "Grep", "Glob"]
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
Analyze the code for performance issues:
|
|
63
|
+
|
|
64
|
+
- Algorithmic complexity (O(n²), unnecessary iterations)
|
|
65
|
+
- N+1 query patterns
|
|
66
|
+
- Missing caching opportunities
|
|
67
|
+
- Memory leaks or excessive allocations
|
|
68
|
+
- I/O bottlenecks
|
|
69
|
+
|
|
70
|
+
Respond with:
|
|
71
|
+
Summary: <headline>
|
|
72
|
+
Issues:
|
|
73
|
+
- <file:line>: <issue> (severity: high/medium/low)
|
|
74
|
+
Recommendations:
|
|
75
|
+
- <optimization suggestion>
|
|
76
|
+
`,
|
|
77
|
+
},
|
|
78
|
+
'test-writer': {
|
|
79
|
+
description: 'Generates unit tests for code changes',
|
|
80
|
+
content: `---
|
|
81
|
+
name: test-writer
|
|
82
|
+
description: Generates comprehensive unit tests for code
|
|
83
|
+
model: inherit
|
|
84
|
+
tools: ["Read", "Create", "Edit", "Execute"]
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
Generate tests for the provided code:
|
|
88
|
+
|
|
89
|
+
1. Analyze the code to understand its behavior
|
|
90
|
+
2. Identify edge cases and error conditions
|
|
91
|
+
3. Write comprehensive unit tests
|
|
92
|
+
4. Ensure tests are idiomatic for the language/framework
|
|
93
|
+
5. Include both happy path and error cases
|
|
94
|
+
|
|
95
|
+
Follow the project's existing test patterns and conventions.
|
|
96
|
+
`,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
export async function droidsCommand(action, options = {}) {
|
|
100
|
+
const cwd = process.cwd();
|
|
101
|
+
switch (action) {
|
|
102
|
+
case 'list':
|
|
103
|
+
await listDroids(cwd);
|
|
104
|
+
break;
|
|
105
|
+
case 'add':
|
|
106
|
+
await addDroid(cwd, options.name, options.template);
|
|
107
|
+
break;
|
|
108
|
+
case 'import':
|
|
109
|
+
await importDroids(cwd, options.path);
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async function listDroids(cwd) {
|
|
114
|
+
console.log(chalk.bold('\n🤖 Available Droids\n'));
|
|
115
|
+
const droidPaths = [
|
|
116
|
+
{ path: join(cwd, '.factory/droids'), label: 'Project (.factory/droids)' },
|
|
117
|
+
{ path: join(cwd, '.claude/agents'), label: 'Claude Code (.claude/agents)' },
|
|
118
|
+
{ path: join(cwd, '.opencode/agent'), label: 'OpenCode (.opencode/agent)' },
|
|
119
|
+
{ path: join(process.env.HOME || '~', '.factory/droids'), label: 'Personal (~/.factory/droids)' },
|
|
120
|
+
];
|
|
121
|
+
let found = false;
|
|
122
|
+
for (const { path, label } of droidPaths) {
|
|
123
|
+
if (existsSync(path)) {
|
|
124
|
+
const files = readdirSync(path).filter((f) => f.endsWith('.md'));
|
|
125
|
+
if (files.length > 0) {
|
|
126
|
+
console.log(chalk.bold(label));
|
|
127
|
+
for (const file of files) {
|
|
128
|
+
const content = readFileSync(join(path, file), 'utf-8');
|
|
129
|
+
const descMatch = content.match(/description:\s*(.+)/);
|
|
130
|
+
const desc = descMatch ? descMatch[1].trim() : 'No description';
|
|
131
|
+
console.log(` ${chalk.cyan(basename(file, '.md'))}: ${chalk.dim(desc)}`);
|
|
132
|
+
}
|
|
133
|
+
console.log('');
|
|
134
|
+
found = true;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (!found) {
|
|
139
|
+
console.log(chalk.yellow('No droids found.'));
|
|
140
|
+
console.log(chalk.dim('Create one with: uam droids add <name>'));
|
|
141
|
+
}
|
|
142
|
+
console.log(chalk.bold('Built-in Templates:'));
|
|
143
|
+
for (const [name, { description }] of Object.entries(BUILTIN_TEMPLATES)) {
|
|
144
|
+
console.log(` ${chalk.cyan(name)}: ${chalk.dim(description)}`);
|
|
145
|
+
}
|
|
146
|
+
console.log('');
|
|
147
|
+
}
|
|
148
|
+
async function addDroid(cwd, name, template) {
|
|
149
|
+
const spinner = ora(`Creating droid: ${name}...`).start();
|
|
150
|
+
try {
|
|
151
|
+
// Determine target directory
|
|
152
|
+
const droidDir = join(cwd, '.factory/droids');
|
|
153
|
+
if (!existsSync(droidDir)) {
|
|
154
|
+
mkdirSync(droidDir, { recursive: true });
|
|
155
|
+
}
|
|
156
|
+
const droidPath = join(droidDir, `${name}.md`);
|
|
157
|
+
if (existsSync(droidPath)) {
|
|
158
|
+
spinner.fail(`Droid already exists: ${name}`);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
let content;
|
|
162
|
+
if (template && BUILTIN_TEMPLATES[template]) {
|
|
163
|
+
content = BUILTIN_TEMPLATES[template].content.replace(/name: .+/, `name: ${name}`);
|
|
164
|
+
}
|
|
165
|
+
else if (template) {
|
|
166
|
+
spinner.fail(`Unknown template: ${template}`);
|
|
167
|
+
console.log(chalk.dim('Available templates: ' + Object.keys(BUILTIN_TEMPLATES).join(', ')));
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
content = `---
|
|
172
|
+
name: ${name}
|
|
173
|
+
description: Custom droid for ${name}
|
|
174
|
+
model: inherit
|
|
175
|
+
tools: ["Read", "LS", "Grep", "Glob"]
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
You are a specialized assistant for ${name} tasks.
|
|
179
|
+
|
|
180
|
+
Describe what this droid should do and how it should respond.
|
|
181
|
+
`;
|
|
182
|
+
}
|
|
183
|
+
writeFileSync(droidPath, content);
|
|
184
|
+
spinner.succeed(`Created droid: ${name}`);
|
|
185
|
+
console.log(chalk.dim(` Path: ${droidPath}`));
|
|
186
|
+
console.log(chalk.dim(` Edit the file to customize the droid's behavior.`));
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
spinner.fail('Failed to create droid');
|
|
190
|
+
console.error(chalk.red(error));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
async function importDroids(cwd, sourcePath) {
|
|
194
|
+
const spinner = ora('Importing droids...').start();
|
|
195
|
+
try {
|
|
196
|
+
if (!existsSync(sourcePath)) {
|
|
197
|
+
spinner.fail(`Path not found: ${sourcePath}`);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
const files = readdirSync(sourcePath).filter((f) => f.endsWith('.md'));
|
|
201
|
+
if (files.length === 0) {
|
|
202
|
+
spinner.fail('No .md files found in source path');
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
const targetDir = join(cwd, '.factory/droids');
|
|
206
|
+
if (!existsSync(targetDir)) {
|
|
207
|
+
mkdirSync(targetDir, { recursive: true });
|
|
208
|
+
}
|
|
209
|
+
let imported = 0;
|
|
210
|
+
for (const file of files) {
|
|
211
|
+
const content = readFileSync(join(sourcePath, file), 'utf-8');
|
|
212
|
+
const targetPath = join(targetDir, file);
|
|
213
|
+
if (existsSync(targetPath)) {
|
|
214
|
+
console.log(chalk.yellow(` Skipped (exists): ${file}`));
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
writeFileSync(targetPath, content);
|
|
218
|
+
imported++;
|
|
219
|
+
}
|
|
220
|
+
spinner.succeed(`Imported ${imported} droid(s)`);
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
spinner.fail('Failed to import droids');
|
|
224
|
+
console.error(chalk.red(error));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=droids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"droids.js","sourceRoot":"","sources":["../../src/cli/droids.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAWA,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA4K7E"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import { analyzeProject } from '../analyzers/index.js';
|
|
7
|
+
import { generateClaudeMd } from '../generators/claude-md.js';
|
|
8
|
+
import { AgentContextConfigSchema } from '../types/index.js';
|
|
9
|
+
import { mergeClaudeMd } from '../utils/merge-claude-md.js';
|
|
10
|
+
export async function generateCommand(options) {
|
|
11
|
+
const cwd = process.cwd();
|
|
12
|
+
const configPath = join(cwd, '.uam.json');
|
|
13
|
+
console.log(chalk.bold('\n📝 Generate Agent Context Files\n'));
|
|
14
|
+
// Load config if exists
|
|
15
|
+
let config;
|
|
16
|
+
if (existsSync(configPath)) {
|
|
17
|
+
try {
|
|
18
|
+
const raw = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
19
|
+
config = AgentContextConfigSchema.parse(raw);
|
|
20
|
+
console.log(chalk.dim(`Using config from .uam.json`));
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error(chalk.red('Invalid .uam.json configuration'));
|
|
24
|
+
console.error(error);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
console.log(chalk.yellow('No .uam.json found. Run `uam init` first, or generating with defaults.'));
|
|
30
|
+
config = {
|
|
31
|
+
version: '1.0.0',
|
|
32
|
+
project: {
|
|
33
|
+
name: 'Unknown Project',
|
|
34
|
+
defaultBranch: 'main',
|
|
35
|
+
},
|
|
36
|
+
template: {
|
|
37
|
+
extends: 'default',
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Analyze project
|
|
42
|
+
const spinner = ora('Analyzing project...').start();
|
|
43
|
+
let analysis;
|
|
44
|
+
try {
|
|
45
|
+
analysis = await analyzeProject(cwd);
|
|
46
|
+
spinner.succeed(`Analyzed: ${analysis.projectName}`);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
spinner.fail('Failed to analyze project');
|
|
50
|
+
console.error(chalk.red(error));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Determine target file based on --web flag
|
|
54
|
+
const isWebPlatform = options.web === true;
|
|
55
|
+
const claudeMdPath = join(cwd, 'CLAUDE.md');
|
|
56
|
+
const agentMdPath = join(cwd, 'AGENT.md');
|
|
57
|
+
const claudeMdExists = existsSync(claudeMdPath);
|
|
58
|
+
const agentMdExists = existsSync(agentMdPath);
|
|
59
|
+
let existingContent;
|
|
60
|
+
// Use AGENT.md when --web flag is passed, CLAUDE.md otherwise
|
|
61
|
+
let targetPath = isWebPlatform ? agentMdPath : claudeMdPath;
|
|
62
|
+
let targetFileName = isWebPlatform ? 'AGENT.md' : 'CLAUDE.md';
|
|
63
|
+
// Check if target file or alternate file exists
|
|
64
|
+
const targetExists = existsSync(targetPath);
|
|
65
|
+
const alternateExists = isWebPlatform ? claudeMdExists : agentMdExists;
|
|
66
|
+
if ((targetExists || alternateExists) && !options.force && !options.dryRun) {
|
|
67
|
+
// Read existing content from target or alternate file
|
|
68
|
+
if (targetExists) {
|
|
69
|
+
existingContent = readFileSync(targetPath, 'utf-8');
|
|
70
|
+
}
|
|
71
|
+
else if (alternateExists) {
|
|
72
|
+
// Read from alternate file but will write to target
|
|
73
|
+
const alternatePath = isWebPlatform ? claudeMdPath : agentMdPath;
|
|
74
|
+
existingContent = readFileSync(alternatePath, 'utf-8');
|
|
75
|
+
console.log(chalk.dim(`Migrating ${isWebPlatform ? 'CLAUDE.md' : 'AGENT.md'} to ${targetFileName}`));
|
|
76
|
+
}
|
|
77
|
+
const { action } = await inquirer.prompt([
|
|
78
|
+
{
|
|
79
|
+
type: 'list',
|
|
80
|
+
name: 'action',
|
|
81
|
+
message: `${targetFileName} ${targetExists ? 'already exists' : 'will be created'}. What would you like to do?`,
|
|
82
|
+
choices: [
|
|
83
|
+
{ name: 'Merge with existing content (recommended)', value: 'merge' },
|
|
84
|
+
{ name: 'Overwrite completely', value: 'overwrite' },
|
|
85
|
+
{ name: 'Cancel', value: 'cancel' },
|
|
86
|
+
],
|
|
87
|
+
default: 'merge',
|
|
88
|
+
},
|
|
89
|
+
]);
|
|
90
|
+
if (action === 'cancel') {
|
|
91
|
+
console.log(chalk.yellow('Generation cancelled.'));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (action === 'overwrite') {
|
|
95
|
+
existingContent = undefined;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Override config based on --web flag
|
|
99
|
+
// Web mode: set webDatabase to trigger web platform detection
|
|
100
|
+
// Desktop mode (default): force desktop even if config has webDatabase
|
|
101
|
+
const effectiveConfig = isWebPlatform
|
|
102
|
+
? {
|
|
103
|
+
...config,
|
|
104
|
+
memory: {
|
|
105
|
+
...config.memory,
|
|
106
|
+
shortTerm: {
|
|
107
|
+
enabled: config.memory?.shortTerm?.enabled ?? true,
|
|
108
|
+
path: config.memory?.shortTerm?.path ?? './agents/data/memory/short_term.db',
|
|
109
|
+
webDatabase: 'agentContext',
|
|
110
|
+
maxEntries: config.memory?.shortTerm?.maxEntries ?? 50,
|
|
111
|
+
forceDesktop: false,
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
}
|
|
115
|
+
: {
|
|
116
|
+
// Desktop mode: ensure forceDesktop is true to override any webDatabase in config
|
|
117
|
+
...config,
|
|
118
|
+
memory: {
|
|
119
|
+
...config.memory,
|
|
120
|
+
shortTerm: config.memory?.shortTerm
|
|
121
|
+
? {
|
|
122
|
+
...config.memory.shortTerm,
|
|
123
|
+
forceDesktop: true, // Force desktop mode regardless of config
|
|
124
|
+
}
|
|
125
|
+
: undefined,
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
const genSpinner = ora(`${existingContent ? 'Merging' : 'Generating'} ${targetFileName}...`).start();
|
|
129
|
+
try {
|
|
130
|
+
const newClaudeMd = await generateClaudeMd(analysis, effectiveConfig);
|
|
131
|
+
const claudeMd = existingContent ? mergeClaudeMd(existingContent, newClaudeMd) : newClaudeMd;
|
|
132
|
+
if (options.dryRun) {
|
|
133
|
+
genSpinner.succeed(`${existingContent ? 'Merged' : 'Generated'} (dry run)`);
|
|
134
|
+
console.log(chalk.dim(`\n--- ${targetFileName} Preview ---\n`));
|
|
135
|
+
console.log(claudeMd.substring(0, 2000) + '\n...\n');
|
|
136
|
+
console.log(chalk.dim(`Total: ${claudeMd.length} characters, ${claudeMd.split('\n').length} lines`));
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
writeFileSync(targetPath, claudeMd);
|
|
140
|
+
genSpinner.succeed(`${existingContent ? 'Merged and updated' : 'Generated'} ${targetFileName}`);
|
|
141
|
+
if (existingContent) {
|
|
142
|
+
console.log(chalk.dim(' Preserved custom sections from existing file'));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
genSpinner.fail(`Failed to ${existingContent ? 'merge' : 'generate'} ${targetFileName}`);
|
|
148
|
+
console.error(chalk.red(error));
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// Generate platform-specific files if requested
|
|
152
|
+
if (options.platform || !options.dryRun) {
|
|
153
|
+
const platforms = options.platform
|
|
154
|
+
? [options.platform]
|
|
155
|
+
: Object.entries(config.platforms || {})
|
|
156
|
+
.filter(([_, v]) => v?.enabled)
|
|
157
|
+
.map(([k]) => k);
|
|
158
|
+
for (const platform of platforms) {
|
|
159
|
+
const platformSpinner = ora(`Generating ${platform} files...`).start();
|
|
160
|
+
try {
|
|
161
|
+
await generatePlatformFiles(cwd, platform, analysis, config, options.dryRun);
|
|
162
|
+
platformSpinner.succeed(`Generated ${platform} files`);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
platformSpinner.fail(`Failed to generate ${platform} files`);
|
|
166
|
+
console.error(chalk.red(error));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (!options.dryRun) {
|
|
171
|
+
console.log(chalk.green('\n✅ Generation complete!\n'));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
async function generatePlatformFiles(_cwd, platform, _analysis, _config, dryRun) {
|
|
175
|
+
// Platform-specific generation logic
|
|
176
|
+
switch (platform) {
|
|
177
|
+
case 'claudeCode':
|
|
178
|
+
// Generate .claude/ structure
|
|
179
|
+
if (!dryRun) {
|
|
180
|
+
// TODO: Generate Claude Code specific files
|
|
181
|
+
}
|
|
182
|
+
break;
|
|
183
|
+
case 'factory':
|
|
184
|
+
// Generate .factory/ structure
|
|
185
|
+
if (!dryRun) {
|
|
186
|
+
// TODO: Generate Factory specific files
|
|
187
|
+
}
|
|
188
|
+
break;
|
|
189
|
+
case 'vscode':
|
|
190
|
+
// Generate .vscode/ settings
|
|
191
|
+
if (!dryRun) {
|
|
192
|
+
// TODO: Generate VSCode specific files
|
|
193
|
+
}
|
|
194
|
+
break;
|
|
195
|
+
case 'opencode':
|
|
196
|
+
// Generate opencode.json
|
|
197
|
+
if (!dryRun) {
|
|
198
|
+
// TODO: Generate OpenCode specific files
|
|
199
|
+
}
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface InitOptions {
|
|
2
|
+
platform: string[];
|
|
3
|
+
web?: boolean;
|
|
4
|
+
desktop?: boolean;
|
|
5
|
+
interactive?: boolean;
|
|
6
|
+
withMemory?: boolean;
|
|
7
|
+
withWorktrees?: boolean;
|
|
8
|
+
force?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function initCommand(options: InitOptions): Promise<void>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AASD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgPrE"}
|