memobank-cli 0.2.0 → 0.6.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/CHANGELOG.md +24 -0
- package/README.md +330 -83
- package/dist/cli.js +180 -13
- package/dist/cli.js.map +1 -1
- package/dist/commands/capture.d.ts +1 -0
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +38 -15
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/init.d.ts +10 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +94 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.d.ts +1 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +56 -4
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/lifecycle.d.ts +2 -0
- package/dist/commands/lifecycle.d.ts.map +1 -1
- package/dist/commands/lifecycle.js +10 -0
- package/dist/commands/lifecycle.js.map +1 -1
- package/dist/commands/migrate.d.ts +22 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +130 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/onboarding.d.ts +8 -7
- package/dist/commands/onboarding.d.ts.map +1 -1
- package/dist/commands/onboarding.js +411 -343
- package/dist/commands/onboarding.js.map +1 -1
- package/dist/commands/recall.d.ts +4 -2
- package/dist/commands/recall.d.ts.map +1 -1
- package/dist/commands/recall.js +27 -30
- package/dist/commands/recall.js.map +1 -1
- package/dist/commands/scan.d.ts +27 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +147 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +7 -2
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/setup.js +2 -2
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/team.d.ts +18 -0
- package/dist/commands/team.d.ts.map +1 -0
- package/dist/commands/team.js +215 -0
- package/dist/commands/team.js.map +1 -0
- package/dist/commands/workspace.d.ts +12 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +189 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/commands/write.d.ts.map +1 -1
- package/dist/commands/write.js +4 -0
- package/dist/commands/write.js.map +1 -1
- package/dist/components/MultiSelect.d.ts +17 -0
- package/dist/components/MultiSelect.d.ts.map +1 -0
- package/dist/components/MultiSelect.js +7 -0
- package/dist/components/MultiSelect.js.map +1 -0
- package/dist/config.d.ts +3 -15
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +28 -61
- package/dist/config.js.map +1 -1
- package/dist/core/decay-engine.d.ts +11 -0
- package/dist/core/decay-engine.d.ts.map +1 -1
- package/dist/core/decay-engine.js +11 -0
- package/dist/core/decay-engine.js.map +1 -1
- package/dist/core/embedding.d.ts +1 -1
- package/dist/core/embedding.d.ts.map +1 -1
- package/dist/core/embedding.js +13 -0
- package/dist/core/embedding.js.map +1 -1
- package/dist/core/lifecycle-manager.d.ts +16 -0
- package/dist/core/lifecycle-manager.d.ts.map +1 -1
- package/dist/core/lifecycle-manager.js +86 -0
- package/dist/core/lifecycle-manager.js.map +1 -1
- package/dist/core/reranker.d.ts +14 -0
- package/dist/core/reranker.d.ts.map +1 -0
- package/dist/core/reranker.js +64 -0
- package/dist/core/reranker.js.map +1 -0
- package/dist/core/retriever.d.ts +2 -5
- package/dist/core/retriever.d.ts.map +1 -1
- package/dist/core/retriever.js +96 -16
- package/dist/core/retriever.js.map +1 -1
- package/dist/core/sanitizer.d.ts +10 -0
- package/dist/core/sanitizer.d.ts.map +1 -1
- package/dist/core/sanitizer.js +57 -39
- package/dist/core/sanitizer.js.map +1 -1
- package/dist/core/store.d.ts +16 -30
- package/dist/core/store.d.ts.map +1 -1
- package/dist/core/store.js +121 -71
- package/dist/core/store.js.map +1 -1
- package/dist/engines/lancedb-engine.d.ts.map +1 -1
- package/dist/engines/lancedb-engine.js +2 -1
- package/dist/engines/lancedb-engine.js.map +1 -1
- package/dist/platforms/claude-code.d.ts +2 -1
- package/dist/platforms/claude-code.d.ts.map +1 -1
- package/dist/platforms/claude-code.js +21 -3
- package/dist/platforms/claude-code.js.map +1 -1
- package/dist/platforms/gemini.d.ts +7 -0
- package/dist/platforms/gemini.d.ts.map +1 -0
- package/dist/platforms/gemini.js +109 -0
- package/dist/platforms/gemini.js.map +1 -0
- package/dist/platforms/qwen.d.ts +7 -0
- package/dist/platforms/qwen.d.ts.map +1 -0
- package/dist/platforms/qwen.js +109 -0
- package/dist/platforms/qwen.js.map +1 -0
- package/dist/types.d.ts +32 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Team memory commands
|
|
4
|
+
* memo team init <remote> — clone/init team repo
|
|
5
|
+
* memo team sync — pull + commit + push
|
|
6
|
+
* memo team publish <file> — scan then stage in team/
|
|
7
|
+
* memo team status — show git status of team/
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.installPreCommitHook = installPreCommitHook;
|
|
44
|
+
exports.getTeamSyncStatus = getTeamSyncStatus;
|
|
45
|
+
exports.teamInit = teamInit;
|
|
46
|
+
exports.teamSync = teamSync;
|
|
47
|
+
exports.teamPublish = teamPublish;
|
|
48
|
+
exports.teamStatus = teamStatus;
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const child_process_1 = require("child_process");
|
|
52
|
+
const store_1 = require("../core/store");
|
|
53
|
+
const config_1 = require("../config");
|
|
54
|
+
const MEMORY_TYPES = ['lesson', 'decision', 'workflow', 'architecture', 'meta'];
|
|
55
|
+
const PRE_COMMIT_HOOK = `#!/bin/sh
|
|
56
|
+
# memobank secret scanner — installed by memo team init
|
|
57
|
+
memo scan --staged --fail-on-secrets
|
|
58
|
+
`;
|
|
59
|
+
function installPreCommitHook(teamDir) {
|
|
60
|
+
const hooksDir = path.join(teamDir, '.git', 'hooks');
|
|
61
|
+
if (!fs.existsSync(hooksDir)) {
|
|
62
|
+
fs.mkdirSync(hooksDir, { recursive: true });
|
|
63
|
+
}
|
|
64
|
+
const hookPath = path.join(hooksDir, 'pre-commit');
|
|
65
|
+
fs.writeFileSync(hookPath, PRE_COMMIT_HOOK, 'utf-8');
|
|
66
|
+
fs.chmodSync(hookPath, 0o755);
|
|
67
|
+
}
|
|
68
|
+
function getTeamSyncStatus(repoRoot) {
|
|
69
|
+
const teamDir = (0, store_1.getTeamDir)(repoRoot);
|
|
70
|
+
if (!fs.existsSync(path.join(teamDir, '.git'))) {
|
|
71
|
+
return { hasTeam: false };
|
|
72
|
+
}
|
|
73
|
+
return { hasTeam: true };
|
|
74
|
+
}
|
|
75
|
+
async function teamInit(remoteUrl, repoRoot) {
|
|
76
|
+
const teamDir = (0, store_1.getTeamDir)(repoRoot);
|
|
77
|
+
if (fs.existsSync(teamDir)) {
|
|
78
|
+
console.log(`team/ directory already exists. Run: memo team sync`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// Check if personal/ needs migration first
|
|
82
|
+
const personalDir = (0, store_1.getPersonalDir)(repoRoot);
|
|
83
|
+
if (!fs.existsSync(personalDir)) {
|
|
84
|
+
console.log('Migrating existing memories to personal/ before setting up team...');
|
|
85
|
+
const { migrated, skipped } = (0, store_1.migrateToPersonal)(repoRoot);
|
|
86
|
+
if (migrated.length > 0) {
|
|
87
|
+
console.log(` Migrated ${migrated.length} memories.`);
|
|
88
|
+
}
|
|
89
|
+
if (skipped.length > 0) {
|
|
90
|
+
console.warn(` Skipped ${skipped.length} files (conflict with existing personal/ files):`);
|
|
91
|
+
skipped.forEach(f => console.warn(` ${f}`));
|
|
92
|
+
}
|
|
93
|
+
fs.mkdirSync(personalDir, { recursive: true });
|
|
94
|
+
}
|
|
95
|
+
// Try cloning (works if remote has commits)
|
|
96
|
+
let cloned = false;
|
|
97
|
+
try {
|
|
98
|
+
(0, child_process_1.execSync)(`git clone "${remoteUrl}" "${teamDir}"`, { stdio: 'pipe' });
|
|
99
|
+
cloned = true;
|
|
100
|
+
console.log('✓ Cloned team repository.');
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Remote is likely empty — init locally and push
|
|
104
|
+
}
|
|
105
|
+
if (!cloned) {
|
|
106
|
+
fs.mkdirSync(teamDir, { recursive: true });
|
|
107
|
+
(0, child_process_1.execSync)(`git init "${teamDir}"`, { stdio: 'pipe' });
|
|
108
|
+
(0, child_process_1.execSync)(`git -C "${teamDir}" remote add origin "${remoteUrl}"`, { stdio: 'pipe' });
|
|
109
|
+
for (const type of MEMORY_TYPES) {
|
|
110
|
+
const typeDir = path.join(teamDir, type);
|
|
111
|
+
fs.mkdirSync(typeDir, { recursive: true });
|
|
112
|
+
fs.writeFileSync(path.join(typeDir, '.gitkeep'), '');
|
|
113
|
+
}
|
|
114
|
+
(0, child_process_1.execSync)(`git -C "${teamDir}" add -A`, { stdio: 'pipe' });
|
|
115
|
+
(0, child_process_1.execSync)(`git -C "${teamDir}" commit -m "chore: initialize team memory repo"`, { stdio: 'pipe' });
|
|
116
|
+
(0, child_process_1.execSync)(`git -C "${teamDir}" push -u origin main`, { stdio: 'pipe' });
|
|
117
|
+
console.log('✓ Initialized and pushed empty team repository.');
|
|
118
|
+
}
|
|
119
|
+
installPreCommitHook(teamDir);
|
|
120
|
+
console.log('✓ Pre-commit hook installed.');
|
|
121
|
+
const config = (0, config_1.loadConfig)(repoRoot);
|
|
122
|
+
config.team = { remote: remoteUrl, auto_sync: false, branch: 'main' };
|
|
123
|
+
(0, config_1.writeConfig)(repoRoot, config);
|
|
124
|
+
console.log(`✓ Team remote configured: ${remoteUrl}`);
|
|
125
|
+
}
|
|
126
|
+
async function teamSync(repoRoot) {
|
|
127
|
+
const config = (0, config_1.loadConfig)(repoRoot);
|
|
128
|
+
if (!config.team) {
|
|
129
|
+
console.error('No team remote configured. Run: memo team init <remote-url>');
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
const teamDir = (0, store_1.getTeamDir)(repoRoot);
|
|
133
|
+
const branch = config.team.branch;
|
|
134
|
+
console.log('Pulling from team remote...');
|
|
135
|
+
(0, child_process_1.execFileSync)('git', ['-C', teamDir, 'pull', 'origin', branch], { stdio: 'inherit' });
|
|
136
|
+
(0, child_process_1.execSync)(`git -C "${teamDir}" add -A`, { stdio: 'pipe' });
|
|
137
|
+
let hasChanges = false;
|
|
138
|
+
try {
|
|
139
|
+
(0, child_process_1.execSync)(`git -C "${teamDir}" diff --staged --quiet`, { stdio: 'pipe' });
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
hasChanges = true;
|
|
143
|
+
}
|
|
144
|
+
if (hasChanges) {
|
|
145
|
+
console.log('Committing staged changes...');
|
|
146
|
+
(0, child_process_1.execSync)(`git -C "${teamDir}" commit -m "chore: sync memories [memo team sync]"`, { stdio: 'inherit' });
|
|
147
|
+
console.log('Pushing...');
|
|
148
|
+
(0, child_process_1.execFileSync)('git', ['-C', teamDir, 'push', 'origin', branch], { stdio: 'inherit' });
|
|
149
|
+
console.log('✓ Sync complete.');
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
console.log('Nothing to commit. Repository is up to date.');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
async function teamPublish(filePath, repoRoot) {
|
|
156
|
+
const absoluteFile = path.resolve(filePath);
|
|
157
|
+
if (!fs.existsSync(absoluteFile)) {
|
|
158
|
+
console.error(`File not found: ${absoluteFile}`);
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
// Scan for secrets first (scan.ts is created in a later task — use indirect
|
|
162
|
+
// import path to avoid compile-time module-not-found errors)
|
|
163
|
+
try {
|
|
164
|
+
const scanPath = './scan';
|
|
165
|
+
const { scanFile } = await Promise.resolve(`${scanPath}`).then(s => __importStar(require(s)));
|
|
166
|
+
const findings = scanFile(absoluteFile);
|
|
167
|
+
if (findings.length > 0) {
|
|
168
|
+
console.error('⚠️ Potential secrets found — aborting publish:');
|
|
169
|
+
findings.forEach((f) => console.error(` ${f}`));
|
|
170
|
+
console.error('→ Fix manually or run: memo scan --fix <file>');
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
const err = e;
|
|
176
|
+
if (err.code !== 'MODULE_NOT_FOUND') {
|
|
177
|
+
throw e; // re-throw non-import errors
|
|
178
|
+
}
|
|
179
|
+
// scan module not yet available — skip scanning (will be created in Task 7)
|
|
180
|
+
}
|
|
181
|
+
const teamDir = (0, store_1.getTeamDir)(repoRoot);
|
|
182
|
+
const personalDir = (0, store_1.getPersonalDir)(repoRoot);
|
|
183
|
+
const rel = path.relative(personalDir, absoluteFile);
|
|
184
|
+
const dst = path.join(teamDir, rel);
|
|
185
|
+
fs.mkdirSync(path.dirname(dst), { recursive: true });
|
|
186
|
+
fs.copyFileSync(absoluteFile, dst);
|
|
187
|
+
(0, child_process_1.execSync)(`git -C "${teamDir}" add "${dst}"`, { stdio: 'pipe' });
|
|
188
|
+
console.log(`✓ Published: ${rel}`);
|
|
189
|
+
console.log(' Staged in team/. Run: memo team sync to push.');
|
|
190
|
+
}
|
|
191
|
+
async function teamStatus(repoRoot) {
|
|
192
|
+
const teamDir = (0, store_1.getTeamDir)(repoRoot);
|
|
193
|
+
if (!fs.existsSync(path.join(teamDir, '.git'))) {
|
|
194
|
+
console.log('No team repository. Run: memo team init <remote-url>');
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
const status = (0, child_process_1.execFileSync)('git', ['-C', teamDir, 'status', '--short'], { encoding: 'utf-8' });
|
|
199
|
+
let log = '';
|
|
200
|
+
try {
|
|
201
|
+
log = (0, child_process_1.execFileSync)('git', ['-C', teamDir, 'log', '--oneline', '-5'], { encoding: 'utf-8' });
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
log = '(no commits)';
|
|
205
|
+
}
|
|
206
|
+
console.log('Team repository status:');
|
|
207
|
+
console.log(status || ' (clean)');
|
|
208
|
+
console.log('\nRecent commits:');
|
|
209
|
+
console.log(log);
|
|
210
|
+
}
|
|
211
|
+
catch (e) {
|
|
212
|
+
console.error(`Could not get team status: ${e.message}`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=team.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/commands/team.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace memory commands (cross-repo, optional)
|
|
3
|
+
* memo workspace init <remote> — clone/init workspace repo
|
|
4
|
+
* memo workspace sync — pull latest; optionally push
|
|
5
|
+
* memo workspace publish <file> — scan secrets + copy to workspace
|
|
6
|
+
* memo workspace status — show git status of local workspace clone
|
|
7
|
+
*/
|
|
8
|
+
export declare function workspaceInit(remoteUrl: string, repoRoot: string): Promise<void>;
|
|
9
|
+
export declare function workspaceSync(repoRoot: string, push?: boolean): Promise<void>;
|
|
10
|
+
export declare function workspacePublish(filePath: string, repoRoot: string, wsDirOverride?: string): Promise<void>;
|
|
11
|
+
export declare function workspaceStatus(repoRoot: string): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCtF;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjF;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BrE"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workspace memory commands (cross-repo, optional)
|
|
4
|
+
* memo workspace init <remote> — clone/init workspace repo
|
|
5
|
+
* memo workspace sync — pull latest; optionally push
|
|
6
|
+
* memo workspace publish <file> — scan secrets + copy to workspace
|
|
7
|
+
* memo workspace status — show git status of local workspace clone
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.workspaceInit = workspaceInit;
|
|
44
|
+
exports.workspaceSync = workspaceSync;
|
|
45
|
+
exports.workspacePublish = workspacePublish;
|
|
46
|
+
exports.workspaceStatus = workspaceStatus;
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const child_process_1 = require("child_process");
|
|
50
|
+
const config_1 = require("../config");
|
|
51
|
+
const scan_1 = require("./scan");
|
|
52
|
+
const MEMORY_TYPES = ['lesson', 'decision', 'workflow', 'architecture', 'meta'];
|
|
53
|
+
async function workspaceInit(remoteUrl, repoRoot) {
|
|
54
|
+
const config = (0, config_1.loadConfig)(repoRoot);
|
|
55
|
+
const wsName = path.basename(remoteUrl, '.git');
|
|
56
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
57
|
+
const wsDir = path.join(home, '.memobank', '_workspace', wsName);
|
|
58
|
+
if (fs.existsSync(wsDir)) {
|
|
59
|
+
console.log(`Workspace already initialized at ${wsDir}. Run: memo workspace sync`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
let cloned = false;
|
|
63
|
+
try {
|
|
64
|
+
(0, child_process_1.execSync)(`git clone "${remoteUrl}" "${wsDir}"`, { stdio: 'pipe' });
|
|
65
|
+
cloned = true;
|
|
66
|
+
console.log('✓ Cloned workspace repository.');
|
|
67
|
+
}
|
|
68
|
+
catch { /* remote may be empty */ }
|
|
69
|
+
if (!cloned) {
|
|
70
|
+
fs.mkdirSync(wsDir, { recursive: true });
|
|
71
|
+
(0, child_process_1.execSync)(`git init "${wsDir}"`, { stdio: 'pipe' });
|
|
72
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" remote add origin "${remoteUrl}"`, { stdio: 'pipe' });
|
|
73
|
+
for (const type of MEMORY_TYPES) {
|
|
74
|
+
fs.mkdirSync(path.join(wsDir, type), { recursive: true });
|
|
75
|
+
fs.writeFileSync(path.join(wsDir, type, '.gitkeep'), '');
|
|
76
|
+
}
|
|
77
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" add -A`, { stdio: 'pipe' });
|
|
78
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" commit -m "chore: initialize workspace memory repo"`, { stdio: 'pipe' });
|
|
79
|
+
try {
|
|
80
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" push -u origin main`, { stdio: 'pipe' });
|
|
81
|
+
}
|
|
82
|
+
catch { /* push may fail for empty remotes — ok */ }
|
|
83
|
+
console.log('✓ Initialized workspace repository.');
|
|
84
|
+
}
|
|
85
|
+
config.workspace = { remote: remoteUrl, auto_sync: false, branch: 'main', path: '.memobank' };
|
|
86
|
+
(0, config_1.writeConfig)(repoRoot, config);
|
|
87
|
+
console.log(`✓ Workspace remote configured: ${remoteUrl}`);
|
|
88
|
+
}
|
|
89
|
+
async function workspaceSync(repoRoot, push = false) {
|
|
90
|
+
const config = (0, config_1.loadConfig)(repoRoot);
|
|
91
|
+
if (!config.workspace?.remote) {
|
|
92
|
+
console.error('No workspace remote configured. Run: memo workspace init <remote-url>');
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
const wsName = path.basename(config.workspace.remote, '.git');
|
|
96
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
97
|
+
const wsDir = path.join(home, '.memobank', '_workspace', wsName);
|
|
98
|
+
const branch = config.workspace.branch ?? 'main';
|
|
99
|
+
console.log('Pulling from workspace remote...');
|
|
100
|
+
(0, child_process_1.execFileSync)('git', ['-C', wsDir, 'pull', 'origin', branch], { stdio: 'inherit' });
|
|
101
|
+
if (push) {
|
|
102
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" add -A`, { stdio: 'pipe' });
|
|
103
|
+
let hasChanges = false;
|
|
104
|
+
try {
|
|
105
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" diff --staged --quiet`, { stdio: 'pipe' });
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
hasChanges = true;
|
|
109
|
+
}
|
|
110
|
+
if (hasChanges) {
|
|
111
|
+
(0, child_process_1.execSync)(`git -C "${wsDir}" commit -m "chore: workspace sync [memo workspace sync]"`, { stdio: 'inherit' });
|
|
112
|
+
(0, child_process_1.execFileSync)('git', ['-C', wsDir, 'push', 'origin', branch], { stdio: 'inherit' });
|
|
113
|
+
console.log('✓ Pushed to workspace remote.');
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log('Nothing to push. Repository is up to date.');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
console.log('✓ Workspace memories synced.');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async function workspacePublish(filePath, repoRoot, wsDirOverride) {
|
|
124
|
+
if (!fs.existsSync(filePath)) {
|
|
125
|
+
throw new Error(`File not found: ${filePath}`);
|
|
126
|
+
}
|
|
127
|
+
// Secret scan
|
|
128
|
+
try {
|
|
129
|
+
const findings = (0, scan_1.scanFile)(filePath);
|
|
130
|
+
if (findings.length > 0) {
|
|
131
|
+
console.error('⚠️ Potential secrets found — aborting publish:');
|
|
132
|
+
findings.forEach(f => console.error(` ${f}`));
|
|
133
|
+
console.error('→ Fix manually or run: memo scan --fix <file>');
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch { /* scan module unavailable — skip */ }
|
|
138
|
+
const config = (0, config_1.loadConfig)(repoRoot);
|
|
139
|
+
const wsName = config.workspace?.remote
|
|
140
|
+
? path.basename(config.workspace.remote, '.git')
|
|
141
|
+
: '_workspace';
|
|
142
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
143
|
+
const wsDir = wsDirOverride ?? path.join(home, '.memobank', '_workspace', wsName);
|
|
144
|
+
if (!fs.existsSync(wsDir)) {
|
|
145
|
+
throw new Error(`Workspace not initialized. Run: memo workspace init <remote-url>`);
|
|
146
|
+
}
|
|
147
|
+
const rel = path.relative(repoRoot, filePath);
|
|
148
|
+
const dst = path.join(wsDir, rel);
|
|
149
|
+
if (fs.existsSync(dst)) {
|
|
150
|
+
console.warn(`⚠️ File already exists in workspace: ${rel}`);
|
|
151
|
+
console.warn(' Overwriting. The workspace repo PR review is the governance gate.');
|
|
152
|
+
}
|
|
153
|
+
fs.mkdirSync(path.dirname(dst), { recursive: true });
|
|
154
|
+
fs.copyFileSync(filePath, dst);
|
|
155
|
+
console.log(`✓ Published: ${rel}`);
|
|
156
|
+
console.log(' Run: memo workspace sync --push to share with team.');
|
|
157
|
+
}
|
|
158
|
+
async function workspaceStatus(repoRoot) {
|
|
159
|
+
const config = (0, config_1.loadConfig)(repoRoot);
|
|
160
|
+
if (!config.workspace?.remote) {
|
|
161
|
+
console.log('No workspace configured. Run: memo workspace init <remote-url>');
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const wsName = path.basename(config.workspace.remote, '.git');
|
|
165
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
166
|
+
const wsDir = path.join(home, '.memobank', '_workspace', wsName);
|
|
167
|
+
if (!fs.existsSync(path.join(wsDir, '.git'))) {
|
|
168
|
+
console.log(`Workspace directory not found: ${wsDir}`);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
const status = (0, child_process_1.execFileSync)('git', ['-C', wsDir, 'status', '--short'], { encoding: 'utf-8' });
|
|
173
|
+
let log = '';
|
|
174
|
+
try {
|
|
175
|
+
log = (0, child_process_1.execFileSync)('git', ['-C', wsDir, 'log', '--oneline', '-5'], { encoding: 'utf-8' });
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
log = '(no commits)';
|
|
179
|
+
}
|
|
180
|
+
console.log('Workspace repository status:');
|
|
181
|
+
console.log(status || ' (clean)');
|
|
182
|
+
console.log('\nRecent commits:');
|
|
183
|
+
console.log(log);
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
console.error(`Could not get workspace status: ${e.message}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAYlD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA8FD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAYlD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA8FD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CA+Hf"}
|
package/dist/commands/write.js
CHANGED
|
@@ -147,6 +147,7 @@ async function writeMemoryCommand(type, options = {}) {
|
|
|
147
147
|
confidence: 'medium',
|
|
148
148
|
content: options.content || '',
|
|
149
149
|
created: new Date().toISOString(),
|
|
150
|
+
status: 'experimental',
|
|
150
151
|
};
|
|
151
152
|
}
|
|
152
153
|
else {
|
|
@@ -237,6 +238,9 @@ async function writeMemoryCommand(type, options = {}) {
|
|
|
237
238
|
});
|
|
238
239
|
// Update memoryData with generated file name
|
|
239
240
|
memoryData.name = fileName.replace('.md', '').replace(/^\d{4}-\d{2}-\d{2}-/, '');
|
|
241
|
+
if (!memoryData.status) {
|
|
242
|
+
memoryData.status = 'experimental';
|
|
243
|
+
}
|
|
240
244
|
const filePath = (0, store_1.writeMemory)(repoRoot, memoryData);
|
|
241
245
|
console.log(`✅ Created: ${filePath}`);
|
|
242
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwHH,
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MultiSelect — types only.
|
|
3
|
+
* The component implementation lives in onboarding.tsx where ink is loaded dynamically.
|
|
4
|
+
*/
|
|
5
|
+
export interface MultiSelectItem {
|
|
6
|
+
label: string;
|
|
7
|
+
value: string;
|
|
8
|
+
hint?: string;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface MultiSelectProps {
|
|
12
|
+
label: string;
|
|
13
|
+
items: MultiSelectItem[];
|
|
14
|
+
defaultSelected?: string[];
|
|
15
|
+
onSubmit: (selected: string[]) => void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=MultiSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../src/components/MultiSelect.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSelect.js","sourceRoot":"","sources":["../../src/components/MultiSelect.tsx"],"names":[],"mappings":";AAAA;;;GAGG"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* Read and write meta/config.yaml
|
|
4
|
-
*/
|
|
5
|
-
import { MemoConfig } from './types';
|
|
6
|
-
/**
|
|
7
|
-
* Load config from repo root
|
|
8
|
-
* Falls back to defaults if file doesn't exist
|
|
9
|
-
*/
|
|
1
|
+
import { MemoConfig, LifecycleConfig } from './types';
|
|
2
|
+
declare const DEFAULT_LIFECYCLE: LifecycleConfig;
|
|
10
3
|
export declare function loadConfig(repoRoot: string): MemoConfig;
|
|
11
|
-
/**
|
|
12
|
-
* Write config to repo root
|
|
13
|
-
*/
|
|
14
4
|
export declare function writeConfig(repoRoot: string, config: MemoConfig): void;
|
|
15
|
-
/**
|
|
16
|
-
* Initialize config with project name
|
|
17
|
-
*/
|
|
18
5
|
export declare function initConfig(repoRoot: string, projectName: string): void;
|
|
6
|
+
export { DEFAULT_LIFECYCLE };
|
|
19
7
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAA2B,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/E,QAAA,MAAM,iBAAiB,EAAE,eAMxB,CAAC;AAqBF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CA4BvD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAUtE;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAEtE;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|