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
package/dist/cli/init.js
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import { analyzeProject } from '../analyzers/index.js';
|
|
7
|
+
import { generateClaudeMd } from '../generators/claude-md.js';
|
|
8
|
+
import { mergeClaudeMd } from '../utils/merge-claude-md.js';
|
|
9
|
+
const PLATFORM_MAP = {
|
|
10
|
+
claude: 'claudeCode',
|
|
11
|
+
factory: 'factory',
|
|
12
|
+
vscode: 'vscode',
|
|
13
|
+
opencode: 'opencode',
|
|
14
|
+
};
|
|
15
|
+
export async function initCommand(options) {
|
|
16
|
+
const cwd = process.cwd();
|
|
17
|
+
const configPath = join(cwd, '.uam.json');
|
|
18
|
+
console.log(chalk.bold('\nš Universal Agent Memory Initialization\n'));
|
|
19
|
+
// Check for existing config
|
|
20
|
+
if (existsSync(configPath) && !options.force) {
|
|
21
|
+
const { overwrite } = await inquirer.prompt([
|
|
22
|
+
{
|
|
23
|
+
type: 'confirm',
|
|
24
|
+
name: 'overwrite',
|
|
25
|
+
message: 'Configuration already exists. Overwrite?',
|
|
26
|
+
default: false,
|
|
27
|
+
},
|
|
28
|
+
]);
|
|
29
|
+
if (!overwrite) {
|
|
30
|
+
console.log(chalk.yellow('Initialization cancelled.'));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Determine platforms
|
|
35
|
+
const platforms = options.platform.includes('all')
|
|
36
|
+
? ['claudeCode', 'factory', 'vscode', 'opencode']
|
|
37
|
+
: options.platform.map((p) => PLATFORM_MAP[p] || p);
|
|
38
|
+
// Analyze project
|
|
39
|
+
const spinner = ora('Analyzing project structure...').start();
|
|
40
|
+
let analysis;
|
|
41
|
+
try {
|
|
42
|
+
analysis = await analyzeProject(cwd);
|
|
43
|
+
spinner.succeed(`Analyzed: ${analysis.projectName}`);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
spinner.fail('Failed to analyze project');
|
|
47
|
+
console.error(chalk.red(error));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Display analysis summary
|
|
51
|
+
console.log(chalk.dim('\nDetected:'));
|
|
52
|
+
console.log(chalk.dim(` Languages: ${analysis.languages.join(', ') || 'none detected'}`));
|
|
53
|
+
console.log(chalk.dim(` Frameworks: ${analysis.frameworks.join(', ') || 'none detected'}`));
|
|
54
|
+
console.log(chalk.dim(` Databases: ${analysis.databases.map((d) => d.type).join(', ') || 'none detected'}`));
|
|
55
|
+
// Prompt for additional options if not specified
|
|
56
|
+
const answers = await inquirer.prompt([
|
|
57
|
+
{
|
|
58
|
+
type: 'confirm',
|
|
59
|
+
name: 'withMemory',
|
|
60
|
+
message: 'Set up memory system (SQLite + Qdrant)?',
|
|
61
|
+
default: true,
|
|
62
|
+
when: () => options.withMemory === undefined,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
type: 'confirm',
|
|
66
|
+
name: 'withWorktrees',
|
|
67
|
+
message: 'Set up git worktree workflow?',
|
|
68
|
+
default: true,
|
|
69
|
+
when: () => options.withWorktrees === undefined,
|
|
70
|
+
},
|
|
71
|
+
]);
|
|
72
|
+
const withMemory = options.withMemory ?? answers.withMemory ?? true;
|
|
73
|
+
const withWorktrees = options.withWorktrees ?? answers.withWorktrees ?? true;
|
|
74
|
+
// Build configuration
|
|
75
|
+
const config = {
|
|
76
|
+
$schema: 'https://raw.githubusercontent.com/DammianMiller/universal-agent-memory/main/schema.json',
|
|
77
|
+
version: '1.0.0',
|
|
78
|
+
project: {
|
|
79
|
+
name: analysis.projectName,
|
|
80
|
+
description: analysis.description,
|
|
81
|
+
defaultBranch: analysis.defaultBranch,
|
|
82
|
+
},
|
|
83
|
+
platforms: {
|
|
84
|
+
claudeCode: { enabled: platforms.includes('claudeCode') },
|
|
85
|
+
factory: { enabled: platforms.includes('factory') },
|
|
86
|
+
vscode: { enabled: platforms.includes('vscode') },
|
|
87
|
+
opencode: { enabled: platforms.includes('opencode') },
|
|
88
|
+
},
|
|
89
|
+
memory: withMemory
|
|
90
|
+
? {
|
|
91
|
+
shortTerm: {
|
|
92
|
+
enabled: true,
|
|
93
|
+
path: './agents/data/memory/short_term.db',
|
|
94
|
+
webDatabase: 'agent_context_memory',
|
|
95
|
+
maxEntries: 50,
|
|
96
|
+
forceDesktop: false,
|
|
97
|
+
},
|
|
98
|
+
longTerm: {
|
|
99
|
+
enabled: true,
|
|
100
|
+
provider: 'qdrant',
|
|
101
|
+
endpoint: 'localhost:6333',
|
|
102
|
+
collection: 'agent_memory',
|
|
103
|
+
embeddingModel: 'all-MiniLM-L6-v2',
|
|
104
|
+
},
|
|
105
|
+
}
|
|
106
|
+
: undefined,
|
|
107
|
+
worktrees: withWorktrees
|
|
108
|
+
? {
|
|
109
|
+
enabled: true,
|
|
110
|
+
directory: '.worktrees',
|
|
111
|
+
branchPrefix: 'feature/',
|
|
112
|
+
autoCleanup: true,
|
|
113
|
+
}
|
|
114
|
+
: undefined,
|
|
115
|
+
droids: [],
|
|
116
|
+
commands: [],
|
|
117
|
+
template: {
|
|
118
|
+
extends: 'default',
|
|
119
|
+
sections: {
|
|
120
|
+
memorySystem: withMemory,
|
|
121
|
+
browserUsage: true,
|
|
122
|
+
decisionLoop: true,
|
|
123
|
+
worktreeWorkflow: withWorktrees,
|
|
124
|
+
troubleshooting: true,
|
|
125
|
+
augmentedCapabilities: true,
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
// Write configuration
|
|
130
|
+
const configSpinner = ora('Writing configuration...').start();
|
|
131
|
+
try {
|
|
132
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
133
|
+
configSpinner.succeed('Created .uam.json');
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
configSpinner.fail('Failed to write configuration');
|
|
137
|
+
console.error(chalk.red(error));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// Create directory structure
|
|
141
|
+
const dirsSpinner = ora('Creating directory structure...').start();
|
|
142
|
+
try {
|
|
143
|
+
const dirs = [
|
|
144
|
+
'agents/data/memory',
|
|
145
|
+
'agents/data/screenshots',
|
|
146
|
+
'agents/scripts',
|
|
147
|
+
];
|
|
148
|
+
if (withWorktrees) {
|
|
149
|
+
dirs.push('.worktrees');
|
|
150
|
+
}
|
|
151
|
+
for (const dir of dirs) {
|
|
152
|
+
const fullPath = join(cwd, dir);
|
|
153
|
+
if (!existsSync(fullPath)) {
|
|
154
|
+
mkdirSync(fullPath, { recursive: true });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
dirsSpinner.succeed('Created directory structure');
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
dirsSpinner.fail('Failed to create directories');
|
|
161
|
+
console.error(chalk.red(error));
|
|
162
|
+
}
|
|
163
|
+
// Generate CLAUDE.md
|
|
164
|
+
const claudeMdPath = join(cwd, 'CLAUDE.md');
|
|
165
|
+
const agentMdPath = join(cwd, 'AGENT.md');
|
|
166
|
+
const claudeMdExists = existsSync(claudeMdPath);
|
|
167
|
+
const agentMdExists = existsSync(agentMdPath);
|
|
168
|
+
let existingContent;
|
|
169
|
+
let targetPath = claudeMdPath;
|
|
170
|
+
let shouldGenerateClaude = true;
|
|
171
|
+
if ((claudeMdExists || agentMdExists) && !options.force) {
|
|
172
|
+
// Read existing content
|
|
173
|
+
if (claudeMdExists) {
|
|
174
|
+
existingContent = readFileSync(claudeMdPath, 'utf-8');
|
|
175
|
+
targetPath = claudeMdPath;
|
|
176
|
+
}
|
|
177
|
+
else if (agentMdExists) {
|
|
178
|
+
existingContent = readFileSync(agentMdPath, 'utf-8');
|
|
179
|
+
targetPath = agentMdPath;
|
|
180
|
+
}
|
|
181
|
+
const { action } = await inquirer.prompt([
|
|
182
|
+
{
|
|
183
|
+
type: 'list',
|
|
184
|
+
name: 'action',
|
|
185
|
+
message: `${claudeMdExists ? 'CLAUDE.md' : 'AGENT.md'} already exists. What would you like to do?`,
|
|
186
|
+
choices: [
|
|
187
|
+
{ name: 'Merge with existing content (recommended)', value: 'merge' },
|
|
188
|
+
{ name: 'Overwrite completely', value: 'overwrite' },
|
|
189
|
+
{ name: 'Skip generation', value: 'skip' },
|
|
190
|
+
],
|
|
191
|
+
default: 'merge',
|
|
192
|
+
},
|
|
193
|
+
]);
|
|
194
|
+
if (action === 'skip') {
|
|
195
|
+
shouldGenerateClaude = false;
|
|
196
|
+
console.log(chalk.dim('Skipping CLAUDE.md generation'));
|
|
197
|
+
}
|
|
198
|
+
else if (action === 'overwrite') {
|
|
199
|
+
existingContent = undefined;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (shouldGenerateClaude) {
|
|
203
|
+
const claudeSpinner = ora(`${existingContent ? 'Merging' : 'Generating'} CLAUDE.md...`).start();
|
|
204
|
+
try {
|
|
205
|
+
const newClaudeMd = await generateClaudeMd(analysis, config);
|
|
206
|
+
const claudeMd = existingContent ? mergeClaudeMd(existingContent, newClaudeMd) : newClaudeMd;
|
|
207
|
+
writeFileSync(targetPath, claudeMd);
|
|
208
|
+
claudeSpinner.succeed(`${existingContent ? 'Merged and updated' : 'Generated'} ${targetPath.endsWith('CLAUDE.md') ? 'CLAUDE.md' : 'AGENT.md'}`);
|
|
209
|
+
if (existingContent) {
|
|
210
|
+
console.log(chalk.dim(' Preserved custom sections from existing file'));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
claudeSpinner.fail(`Failed to ${existingContent ? 'merge' : 'generate'} CLAUDE.md`);
|
|
215
|
+
console.error(chalk.red(error));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// Platform-specific setup
|
|
219
|
+
for (const platform of platforms) {
|
|
220
|
+
const platformSpinner = ora(`Setting up ${platform}...`).start();
|
|
221
|
+
try {
|
|
222
|
+
await setupPlatform(cwd, platform, config);
|
|
223
|
+
platformSpinner.succeed(`Set up ${platform}`);
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
platformSpinner.fail(`Failed to set up ${platform}`);
|
|
227
|
+
console.error(chalk.red(error));
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Final summary
|
|
231
|
+
console.log(chalk.green('\nā
Initialization complete!\n'));
|
|
232
|
+
console.log(chalk.bold('Next steps:'));
|
|
233
|
+
console.log(' 1. Review and customize CLAUDE.md');
|
|
234
|
+
console.log(' 2. Review .uam.json configuration');
|
|
235
|
+
if (withMemory) {
|
|
236
|
+
console.log(' 3. Start memory services: uam memory start');
|
|
237
|
+
}
|
|
238
|
+
if (withWorktrees) {
|
|
239
|
+
console.log(' 4. Create your first worktree: uam worktree create <slug>');
|
|
240
|
+
}
|
|
241
|
+
console.log('');
|
|
242
|
+
}
|
|
243
|
+
async function setupPlatform(cwd, platform, _config) {
|
|
244
|
+
const platformDirs = {
|
|
245
|
+
claudeCode: ['.claude/agents', '.claude/commands'],
|
|
246
|
+
factory: ['.factory/droids', '.factory/commands', '.factory/skills', '.factory/scripts', '.factory/templates'],
|
|
247
|
+
vscode: ['.vscode'],
|
|
248
|
+
opencode: ['.opencode/agent', '.opencode/command'],
|
|
249
|
+
claudeWeb: [], // Web platforms don't need local directories
|
|
250
|
+
factoryWeb: [],
|
|
251
|
+
};
|
|
252
|
+
const dirs = platformDirs[platform] || [];
|
|
253
|
+
for (const dir of dirs) {
|
|
254
|
+
const fullPath = join(cwd, dir);
|
|
255
|
+
if (!existsSync(fullPath)) {
|
|
256
|
+
mkdirSync(fullPath, { recursive: true });
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type MemoryAction = 'status' | 'start' | 'stop' | 'query' | 'store' | 'prepopulate';
|
|
2
|
+
interface MemoryOptions {
|
|
3
|
+
search?: string;
|
|
4
|
+
limit?: string;
|
|
5
|
+
content?: string;
|
|
6
|
+
tags?: string;
|
|
7
|
+
importance?: string;
|
|
8
|
+
docs?: boolean;
|
|
9
|
+
git?: boolean;
|
|
10
|
+
since?: string;
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function memoryCommand(action: MemoryAction, options?: MemoryOptions): Promise<void>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/cli/memory.ts"],"names":[],"mappings":"AAUA,KAAK,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,CAAC;AAEpF,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBpG"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { execSync } from 'child_process';
|
|
6
|
+
import { prepopulateMemory } from '../memory/prepopulate.js';
|
|
7
|
+
import { SQLiteShortTermMemory } from '../memory/short-term/sqlite.js';
|
|
8
|
+
import { AgentContextConfigSchema } from '../types/index.js';
|
|
9
|
+
export async function memoryCommand(action, options = {}) {
|
|
10
|
+
const cwd = process.cwd();
|
|
11
|
+
switch (action) {
|
|
12
|
+
case 'status':
|
|
13
|
+
await showStatus(cwd);
|
|
14
|
+
break;
|
|
15
|
+
case 'start':
|
|
16
|
+
await startServices(cwd);
|
|
17
|
+
break;
|
|
18
|
+
case 'stop':
|
|
19
|
+
await stopServices(cwd);
|
|
20
|
+
break;
|
|
21
|
+
case 'query':
|
|
22
|
+
await queryMemory(cwd, options.search, parseInt(options.limit || '10'));
|
|
23
|
+
break;
|
|
24
|
+
case 'store':
|
|
25
|
+
await storeMemory(cwd, options.content, options.tags, parseInt(options.importance || '5'));
|
|
26
|
+
break;
|
|
27
|
+
case 'prepopulate':
|
|
28
|
+
await prepopulateFromSources(cwd, options);
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async function showStatus(cwd) {
|
|
33
|
+
console.log(chalk.bold('\nš Memory System Status\n'));
|
|
34
|
+
// Check short-term memory
|
|
35
|
+
const shortTermPath = join(cwd, 'agents/data/memory/short_term.db');
|
|
36
|
+
if (existsSync(shortTermPath)) {
|
|
37
|
+
console.log(chalk.green('ā Short-term memory: Active'));
|
|
38
|
+
console.log(chalk.dim(` Path: ${shortTermPath}`));
|
|
39
|
+
// TODO: Query for entry count
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
console.log(chalk.yellow('ā Short-term memory: Not initialized'));
|
|
43
|
+
}
|
|
44
|
+
// Check Qdrant
|
|
45
|
+
console.log('');
|
|
46
|
+
try {
|
|
47
|
+
execSync('docker ps --filter name=qdrant --format "{{.Status}}"', { encoding: 'utf-8' });
|
|
48
|
+
const status = execSync('docker ps --filter name=qdrant --format "{{.Status}}"', { encoding: 'utf-8' }).trim();
|
|
49
|
+
if (status) {
|
|
50
|
+
console.log(chalk.green('ā Long-term memory (Qdrant): Running'));
|
|
51
|
+
console.log(chalk.dim(` Status: ${status}`));
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.log(chalk.yellow('ā Long-term memory (Qdrant): Not running'));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
console.log(chalk.yellow('ā Long-term memory (Qdrant): Not available'));
|
|
59
|
+
console.log(chalk.dim(' Run `uam memory start` to initialize'));
|
|
60
|
+
}
|
|
61
|
+
// Check docker-compose
|
|
62
|
+
const composePath = join(cwd, 'agents/docker-compose.yml');
|
|
63
|
+
if (!existsSync(composePath)) {
|
|
64
|
+
const dockerPath = join(cwd, 'docker/docker-compose.yml');
|
|
65
|
+
if (!existsSync(dockerPath)) {
|
|
66
|
+
console.log(chalk.dim('\n No docker-compose.yml found. Memory services need manual setup.'));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
console.log('');
|
|
70
|
+
}
|
|
71
|
+
async function startServices(cwd) {
|
|
72
|
+
const spinner = ora('Starting memory services...').start();
|
|
73
|
+
// Check for docker-compose file
|
|
74
|
+
const composePaths = [
|
|
75
|
+
join(cwd, 'agents/docker-compose.yml'),
|
|
76
|
+
join(cwd, 'docker/docker-compose.yml'),
|
|
77
|
+
];
|
|
78
|
+
let composePath = null;
|
|
79
|
+
for (const path of composePaths) {
|
|
80
|
+
if (existsSync(path)) {
|
|
81
|
+
composePath = path;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (!composePath) {
|
|
86
|
+
// Create default docker-compose
|
|
87
|
+
spinner.text = 'Creating docker-compose.yml...';
|
|
88
|
+
const defaultCompose = `version: '3.8'
|
|
89
|
+
|
|
90
|
+
services:
|
|
91
|
+
qdrant:
|
|
92
|
+
image: qdrant/qdrant:latest
|
|
93
|
+
container_name: uam-qdrant
|
|
94
|
+
ports:
|
|
95
|
+
- "6333:6333"
|
|
96
|
+
- "6334:6334"
|
|
97
|
+
volumes:
|
|
98
|
+
- ./qdrant_data:/qdrant/storage
|
|
99
|
+
environment:
|
|
100
|
+
- QDRANT__SERVICE__GRPC_PORT=6334
|
|
101
|
+
restart: unless-stopped
|
|
102
|
+
`;
|
|
103
|
+
const agentsDir = join(cwd, 'agents');
|
|
104
|
+
if (!existsSync(agentsDir)) {
|
|
105
|
+
mkdirSync(agentsDir, { recursive: true });
|
|
106
|
+
}
|
|
107
|
+
composePath = join(agentsDir, 'docker-compose.yml');
|
|
108
|
+
writeFileSync(composePath, defaultCompose);
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
execSync(`docker-compose -f "${composePath}" up -d`, { encoding: 'utf-8', stdio: 'pipe' });
|
|
112
|
+
spinner.succeed('Memory services started');
|
|
113
|
+
console.log(chalk.dim(' Qdrant available at http://localhost:6333'));
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
spinner.fail('Failed to start memory services');
|
|
117
|
+
console.error(chalk.red('Make sure Docker is installed and running'));
|
|
118
|
+
console.error(error);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async function stopServices(cwd) {
|
|
122
|
+
const spinner = ora('Stopping memory services...').start();
|
|
123
|
+
const composePaths = [
|
|
124
|
+
join(cwd, 'agents/docker-compose.yml'),
|
|
125
|
+
join(cwd, 'docker/docker-compose.yml'),
|
|
126
|
+
];
|
|
127
|
+
let composePath = null;
|
|
128
|
+
for (const path of composePaths) {
|
|
129
|
+
if (existsSync(path)) {
|
|
130
|
+
composePath = path;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (!composePath) {
|
|
135
|
+
spinner.fail('No docker-compose.yml found');
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
try {
|
|
139
|
+
execSync(`docker-compose -f "${composePath}" down`, { encoding: 'utf-8', stdio: 'pipe' });
|
|
140
|
+
spinner.succeed('Memory services stopped');
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
spinner.fail('Failed to stop memory services');
|
|
144
|
+
console.error(error);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async function queryMemory(_cwd, search, limit) {
|
|
148
|
+
console.log(chalk.bold(`\nš Searching for: "${search}" (limit: ${limit})\n`));
|
|
149
|
+
// TODO: Implement actual Qdrant query
|
|
150
|
+
console.log(chalk.yellow('Memory query not yet implemented'));
|
|
151
|
+
console.log(chalk.dim('This will search the Qdrant vector database for semantically similar memories'));
|
|
152
|
+
}
|
|
153
|
+
async function storeMemory(_cwd, content, tags, importance = 5) {
|
|
154
|
+
console.log(chalk.bold('\nš¾ Storing memory...\n'));
|
|
155
|
+
console.log(chalk.dim(`Content: ${content}`));
|
|
156
|
+
console.log(chalk.dim(`Tags: ${tags || 'none'}`));
|
|
157
|
+
console.log(chalk.dim(`Importance: ${importance}/10`));
|
|
158
|
+
// TODO: Implement actual Qdrant store
|
|
159
|
+
console.log(chalk.yellow('\nMemory storage not yet implemented'));
|
|
160
|
+
console.log(chalk.dim('This will embed the content and store in Qdrant'));
|
|
161
|
+
}
|
|
162
|
+
async function prepopulateFromSources(cwd, options) {
|
|
163
|
+
console.log(chalk.bold('\nš§ Prepopulating Memory from Project Sources\n'));
|
|
164
|
+
// Load config
|
|
165
|
+
const configPath = join(cwd, '.uam.json');
|
|
166
|
+
let config;
|
|
167
|
+
if (existsSync(configPath)) {
|
|
168
|
+
try {
|
|
169
|
+
const raw = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
170
|
+
config = AgentContextConfigSchema.parse(raw);
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
config = {
|
|
174
|
+
version: '1.0.0',
|
|
175
|
+
project: { name: 'project', defaultBranch: 'main' },
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
config = {
|
|
181
|
+
version: '1.0.0',
|
|
182
|
+
project: { name: 'project', defaultBranch: 'main' },
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
const sources = [];
|
|
186
|
+
if (options.docs)
|
|
187
|
+
sources.push('documentation');
|
|
188
|
+
if (options.git)
|
|
189
|
+
sources.push('git history');
|
|
190
|
+
if (sources.length === 0)
|
|
191
|
+
sources.push('documentation', 'git history');
|
|
192
|
+
console.log(chalk.dim(`Sources: ${sources.join(', ')}`));
|
|
193
|
+
if (options.limit)
|
|
194
|
+
console.log(chalk.dim(`Git commit limit: ${options.limit}`));
|
|
195
|
+
if (options.since)
|
|
196
|
+
console.log(chalk.dim(`Git commits since: ${options.since}`));
|
|
197
|
+
console.log('');
|
|
198
|
+
const spinner = ora('Extracting knowledge from project...').start();
|
|
199
|
+
try {
|
|
200
|
+
const { shortTerm, longTerm, skills } = await prepopulateMemory(cwd, {
|
|
201
|
+
docs: options.docs || (!options.docs && !options.git),
|
|
202
|
+
git: options.git || (!options.docs && !options.git),
|
|
203
|
+
skills: true, // Always discover skills
|
|
204
|
+
limit: options.limit ? parseInt(options.limit) : 500,
|
|
205
|
+
since: options.since,
|
|
206
|
+
verbose: options.verbose,
|
|
207
|
+
});
|
|
208
|
+
spinner.succeed(`Extracted ${shortTerm.length} short-term, ${longTerm.length} long-term memories, ${skills.length} skills/artifacts`);
|
|
209
|
+
// Store short-term memories to SQLite
|
|
210
|
+
if (shortTerm.length > 0) {
|
|
211
|
+
const stSpinner = ora('Storing short-term memories...').start();
|
|
212
|
+
try {
|
|
213
|
+
const dbPath = config.memory?.shortTerm?.path || join(cwd, 'agents/data/memory/short_term.db');
|
|
214
|
+
const shortTermDb = new SQLiteShortTermMemory({
|
|
215
|
+
dbPath,
|
|
216
|
+
projectId: config.project.name,
|
|
217
|
+
maxEntries: config.memory?.shortTerm?.maxEntries || 50,
|
|
218
|
+
});
|
|
219
|
+
// Store memories in batch
|
|
220
|
+
const entries = shortTerm.map(m => ({
|
|
221
|
+
type: m.type,
|
|
222
|
+
content: m.content,
|
|
223
|
+
timestamp: m.timestamp,
|
|
224
|
+
}));
|
|
225
|
+
await shortTermDb.storeBatch(entries);
|
|
226
|
+
await shortTermDb.close();
|
|
227
|
+
stSpinner.succeed(`Stored ${shortTerm.length} short-term memories to SQLite`);
|
|
228
|
+
console.log(chalk.dim(` Database: ${dbPath}`));
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
stSpinner.fail('Failed to store short-term memories');
|
|
232
|
+
console.error(chalk.red(error));
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// Store long-term memories (summary for now)
|
|
236
|
+
if (longTerm.length > 0) {
|
|
237
|
+
console.log(chalk.dim(`\n Long-term memories ready: ${longTerm.length} entries`));
|
|
238
|
+
console.log(chalk.dim(' To store in Qdrant, run: uam memory start'));
|
|
239
|
+
// Save long-term memories as JSON for manual import or Qdrant storage
|
|
240
|
+
const ltPath = join(cwd, 'agents/data/memory/long_term_prepopulated.json');
|
|
241
|
+
const ltDir = join(cwd, 'agents/data/memory');
|
|
242
|
+
if (!existsSync(ltDir)) {
|
|
243
|
+
mkdirSync(ltDir, { recursive: true });
|
|
244
|
+
}
|
|
245
|
+
writeFileSync(ltPath, JSON.stringify(longTerm, null, 2));
|
|
246
|
+
console.log(chalk.dim(` Exported to: ${ltPath}`));
|
|
247
|
+
}
|
|
248
|
+
// Summary by type
|
|
249
|
+
console.log(chalk.bold('\nš Memory Summary:\n'));
|
|
250
|
+
const byType = {
|
|
251
|
+
observations: longTerm.filter(m => m.type === 'observation').length,
|
|
252
|
+
thoughts: longTerm.filter(m => m.type === 'thought').length,
|
|
253
|
+
actions: longTerm.filter(m => m.type === 'action').length,
|
|
254
|
+
goals: longTerm.filter(m => m.type === 'goal').length,
|
|
255
|
+
};
|
|
256
|
+
console.log(chalk.dim(` Observations: ${byType.observations}`));
|
|
257
|
+
console.log(chalk.dim(` Thoughts: ${byType.thoughts}`));
|
|
258
|
+
console.log(chalk.dim(` Actions: ${byType.actions}`));
|
|
259
|
+
console.log(chalk.dim(` Goals: ${byType.goals}`));
|
|
260
|
+
// Show sample memories
|
|
261
|
+
if (options.verbose && shortTerm.length > 0) {
|
|
262
|
+
console.log(chalk.bold('\nš Sample Memories:\n'));
|
|
263
|
+
for (const mem of shortTerm.slice(0, 3)) {
|
|
264
|
+
console.log(chalk.cyan(` [${mem.type}] `) + chalk.dim(mem.content.substring(0, 100) + '...'));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
console.log(chalk.green('\nā
Memory prepopulation complete!\n'));
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
spinner.fail('Failed to prepopulate memory');
|
|
271
|
+
console.error(chalk.red(error));
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/cli/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"AAGA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BrE"}
|
package/dist/cli/sync.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
export async function syncCommand(options) {
|
|
4
|
+
console.log(chalk.bold('\nš Platform Sync\n'));
|
|
5
|
+
if (!options.from && !options.to) {
|
|
6
|
+
console.log(chalk.yellow('Specify --from and/or --to platforms'));
|
|
7
|
+
console.log(chalk.dim('\nExample:'));
|
|
8
|
+
console.log(chalk.dim(' uam sync --from claude --to factory'));
|
|
9
|
+
console.log(chalk.dim(' uam sync --from factory --to opencode'));
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const spinner = ora('Syncing platforms...').start();
|
|
13
|
+
// TODO: Implement platform sync logic
|
|
14
|
+
// This would:
|
|
15
|
+
// 1. Read droids/agents from source platform
|
|
16
|
+
// 2. Convert to target platform format
|
|
17
|
+
// 3. Write to target platform directories
|
|
18
|
+
spinner.warn('Platform sync not yet implemented');
|
|
19
|
+
console.log(chalk.dim('\nThis will convert and sync:'));
|
|
20
|
+
console.log(chalk.dim(' - Droids/Agents'));
|
|
21
|
+
console.log(chalk.dim(' - Commands'));
|
|
22
|
+
console.log(chalk.dim(' - Configuration'));
|
|
23
|
+
console.log(chalk.dim(`\nFrom: ${options.from || 'auto-detect'}`));
|
|
24
|
+
console.log(chalk.dim(`To: ${options.to || 'all enabled platforms'}`));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEpD,sCAAsC;IACtC,cAAc;IACd,6CAA6C;IAC7C,uCAAuC;IACvC,0CAA0C;IAE1C,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,CAAC,EAAE,IAAI,uBAAuB,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type WorktreeAction = 'create' | 'list' | 'pr' | 'cleanup';
|
|
2
|
+
interface WorktreeOptions {
|
|
3
|
+
slug?: string;
|
|
4
|
+
id?: string;
|
|
5
|
+
draft?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function worktreeCommand(action: WorktreeAction, options?: WorktreeOptions): Promise<void>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=worktree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../src/cli/worktree.ts"],"names":[],"mappings":"AAMA,KAAK,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAE3D,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB1G"}
|