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.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +321 -0
  3. package/dist/analyzers/index.d.ts +3 -0
  4. package/dist/analyzers/index.d.ts.map +1 -0
  5. package/dist/analyzers/index.js +373 -0
  6. package/dist/analyzers/index.js.map +1 -0
  7. package/dist/bin/cli.d.ts +3 -0
  8. package/dist/bin/cli.d.ts.map +1 -0
  9. package/dist/bin/cli.js +119 -0
  10. package/dist/bin/cli.js.map +1 -0
  11. package/dist/cli/analyze.d.ts +7 -0
  12. package/dist/cli/analyze.d.ts.map +1 -0
  13. package/dist/cli/analyze.js +103 -0
  14. package/dist/cli/analyze.js.map +1 -0
  15. package/dist/cli/droids.d.ts +9 -0
  16. package/dist/cli/droids.d.ts.map +1 -0
  17. package/dist/cli/droids.js +227 -0
  18. package/dist/cli/droids.js.map +1 -0
  19. package/dist/cli/generate.d.ts +9 -0
  20. package/dist/cli/generate.d.ts.map +1 -0
  21. package/dist/cli/generate.js +203 -0
  22. package/dist/cli/generate.js.map +1 -0
  23. package/dist/cli/init.d.ts +12 -0
  24. package/dist/cli/init.d.ts.map +1 -0
  25. package/dist/cli/init.js +260 -0
  26. package/dist/cli/init.js.map +1 -0
  27. package/dist/cli/memory.d.ts +15 -0
  28. package/dist/cli/memory.d.ts.map +1 -0
  29. package/dist/cli/memory.js +274 -0
  30. package/dist/cli/memory.js.map +1 -0
  31. package/dist/cli/sync.d.ts +7 -0
  32. package/dist/cli/sync.d.ts.map +1 -0
  33. package/dist/cli/sync.js +26 -0
  34. package/dist/cli/sync.js.map +1 -0
  35. package/dist/cli/worktree.d.ts +9 -0
  36. package/dist/cli/worktree.d.ts.map +1 -0
  37. package/dist/cli/worktree.js +175 -0
  38. package/dist/cli/worktree.js.map +1 -0
  39. package/dist/generators/claude-md.d.ts +3 -0
  40. package/dist/generators/claude-md.d.ts.map +1 -0
  41. package/dist/generators/claude-md.js +643 -0
  42. package/dist/generators/claude-md.js.map +1 -0
  43. package/dist/index.d.ts +4 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +4 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/memory/backends/base.d.ts +18 -0
  48. package/dist/memory/backends/base.d.ts.map +1 -0
  49. package/dist/memory/backends/base.js +2 -0
  50. package/dist/memory/backends/base.js.map +1 -0
  51. package/dist/memory/backends/factory.d.ts +4 -0
  52. package/dist/memory/backends/factory.d.ts.map +1 -0
  53. package/dist/memory/backends/factory.js +52 -0
  54. package/dist/memory/backends/factory.js.map +1 -0
  55. package/dist/memory/backends/github.d.ts +22 -0
  56. package/dist/memory/backends/github.d.ts.map +1 -0
  57. package/dist/memory/backends/github.js +118 -0
  58. package/dist/memory/backends/github.js.map +1 -0
  59. package/dist/memory/backends/qdrant-cloud.d.ts +19 -0
  60. package/dist/memory/backends/qdrant-cloud.d.ts.map +1 -0
  61. package/dist/memory/backends/qdrant-cloud.js +111 -0
  62. package/dist/memory/backends/qdrant-cloud.js.map +1 -0
  63. package/dist/memory/prepopulate.d.ts +76 -0
  64. package/dist/memory/prepopulate.d.ts.map +1 -0
  65. package/dist/memory/prepopulate.js +815 -0
  66. package/dist/memory/prepopulate.js.map +1 -0
  67. package/dist/memory/short-term/factory.d.ts +23 -0
  68. package/dist/memory/short-term/factory.d.ts.map +1 -0
  69. package/dist/memory/short-term/factory.js +28 -0
  70. package/dist/memory/short-term/factory.js.map +1 -0
  71. package/dist/memory/short-term/indexeddb.d.ts +25 -0
  72. package/dist/memory/short-term/indexeddb.d.ts.map +1 -0
  73. package/dist/memory/short-term/indexeddb.js +64 -0
  74. package/dist/memory/short-term/indexeddb.js.map +1 -0
  75. package/dist/memory/short-term/sqlite.d.ts +40 -0
  76. package/dist/memory/short-term/sqlite.d.ts.map +1 -0
  77. package/dist/memory/short-term/sqlite.js +136 -0
  78. package/dist/memory/short-term/sqlite.js.map +1 -0
  79. package/dist/types/analysis.d.ts +82 -0
  80. package/dist/types/analysis.d.ts.map +1 -0
  81. package/dist/types/analysis.js +2 -0
  82. package/dist/types/analysis.js.map +1 -0
  83. package/dist/types/config.d.ts +923 -0
  84. package/dist/types/config.d.ts.map +1 -0
  85. package/dist/types/config.js +97 -0
  86. package/dist/types/config.js.map +1 -0
  87. package/dist/types/index.d.ts +3 -0
  88. package/dist/types/index.d.ts.map +1 -0
  89. package/dist/types/index.js +3 -0
  90. package/dist/types/index.js.map +1 -0
  91. package/dist/utils/merge-claude-md.d.ts +15 -0
  92. package/dist/utils/merge-claude-md.d.ts.map +1 -0
  93. package/dist/utils/merge-claude-md.js +149 -0
  94. package/dist/utils/merge-claude-md.js.map +1 -0
  95. package/package.json +90 -0
  96. 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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAUtC,MAAM,iBAAiB,GAA6D;IAClF,eAAe,EAAE;QACf,WAAW,EAAE,2DAA2D;QACxE,OAAO,EAAE;;;;;;;;;;;;;;;;;;;CAmBZ;KACE;IACD,mBAAmB,EAAE;QACnB,WAAW,EAAE,2CAA2C;QACxD,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;CAoBZ;KACE;IACD,sBAAsB,EAAE;QACtB,WAAW,EAAE,mEAAmE;QAChF,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBZ;KACE;IACD,aAAa,EAAE;QACb,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE;;;;;;;;;;;;;;;;CAgBZ;KACE;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAoB,EAAE,UAAyB,EAAE;IACnF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,KAAK;YACR,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,IAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,IAAK,CAAC,CAAC;YACvC,MAAM;IACV,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAEnD,MAAM,UAAU,GAAG;QACjB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE;QAC1E,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE;QAC5E,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE;QAC3E,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,iBAAiB,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE;KAClG,CAAC;IAEF,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,UAAU,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACjE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;oBACxD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACvD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;oBAChE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5E,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAY,EAAE,QAAiB;IAClE,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAE1D,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAE/C,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,OAAe,CAAC;QAEpB,IAAI,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CACnD,UAAU,EACV,SAAS,IAAI,EAAE,CAChB,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5F,OAAO;QACT,CAAC;aAAM,CAAC;YACN,OAAO,GAAG;QACR,IAAI;gCACoB,IAAI;;;;;sCAKE,IAAI;;;CAGzC,CAAC;QACE,CAAC;QAED,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,UAAkB;IACzD,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEnD,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAEvE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAEzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC,CAAC;gBACzD,SAAS;YACX,CAAC;YAED,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACnC,QAAQ,EAAE,CAAC;QACb,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,YAAY,QAAQ,WAAW,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ interface GenerateOptions {
2
+ force?: boolean;
3
+ dryRun?: boolean;
4
+ platform?: string;
5
+ web?: boolean;
6
+ }
7
+ export declare function generateCommand(options: GenerateOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=generate.d.ts.map
@@ -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"}