memoire-ai 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 (51) hide show
  1. package/README.md +18 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +359 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands.d.ts +33 -0
  7. package/dist/commands.d.ts.map +1 -0
  8. package/dist/commands.js +497 -0
  9. package/dist/commands.js.map +1 -0
  10. package/dist/configure.d.ts +65 -0
  11. package/dist/configure.d.ts.map +1 -0
  12. package/dist/configure.js +485 -0
  13. package/dist/configure.js.map +1 -0
  14. package/dist/dashboard.d.ts +9 -0
  15. package/dist/dashboard.d.ts.map +1 -0
  16. package/dist/dashboard.js +8 -0
  17. package/dist/dashboard.js.map +1 -0
  18. package/dist/dependencies.d.ts +3 -0
  19. package/dist/dependencies.d.ts.map +1 -0
  20. package/dist/dependencies.js +213 -0
  21. package/dist/dependencies.js.map +1 -0
  22. package/dist/detect.d.ts +3 -0
  23. package/dist/detect.d.ts.map +1 -0
  24. package/dist/detect.js +30 -0
  25. package/dist/detect.js.map +1 -0
  26. package/dist/hooks.d.ts +25 -0
  27. package/dist/hooks.d.ts.map +1 -0
  28. package/dist/hooks.js +479 -0
  29. package/dist/hooks.js.map +1 -0
  30. package/dist/index.d.ts +9 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +9 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/local-config.d.ts +8 -0
  35. package/dist/local-config.d.ts.map +1 -0
  36. package/dist/local-config.js +16 -0
  37. package/dist/local-config.js.map +1 -0
  38. package/dist/login.d.ts +20 -0
  39. package/dist/login.d.ts.map +1 -0
  40. package/dist/login.js +93 -0
  41. package/dist/login.js.map +1 -0
  42. package/dist/manual.d.ts +15 -0
  43. package/dist/manual.d.ts.map +1 -0
  44. package/dist/manual.js +143 -0
  45. package/dist/manual.js.map +1 -0
  46. package/dist/mcp.d.ts +5 -0
  47. package/dist/mcp.d.ts.map +1 -0
  48. package/dist/mcp.js +18 -0
  49. package/dist/mcp.js.map +1 -0
  50. package/package.json +55 -0
  51. package/skills/use-memoire/SKILL.md +79 -0
@@ -0,0 +1,213 @@
1
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
2
+ import { dirname, join, relative, resolve } from 'node:path';
3
+ import { parse as parseYaml } from 'yaml';
4
+ export function detectDependencies(cwd) {
5
+ const repoRoot = findRepoRoot(cwd);
6
+ const descriptors = new Map();
7
+ const workspacePackages = loadWorkspacePackages(repoRoot);
8
+ const packageJsonPath = join(repoRoot, 'package.json');
9
+ if (existsSync(packageJsonPath)) {
10
+ const manifest = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
11
+ const nodeVersions = resolveNodeVersions(repoRoot, '.');
12
+ for (const [name, spec] of Object.entries({
13
+ ...(manifest.dependencies ?? {}),
14
+ ...(manifest.devDependencies ?? {}),
15
+ })) {
16
+ const workspaceMatch = workspacePackages.get(name);
17
+ if (workspaceMatch && (spec.startsWith('workspace:') || spec.startsWith('file:'))) {
18
+ descriptors.set(keyFor('internal', name), {
19
+ name,
20
+ version: workspaceMatch.version,
21
+ ecosystem: 'internal',
22
+ manifest_path: relative(repoRoot, packageJsonPath),
23
+ source_url: workspaceMatch.dir,
24
+ inline_title: `${name} README`,
25
+ inline_content: workspaceMatch.readme,
26
+ });
27
+ continue;
28
+ }
29
+ descriptors.set(keyFor('npm', name), {
30
+ name,
31
+ version: nodeVersions.get(name) ?? cleanVersionSpecifier(spec),
32
+ ecosystem: 'npm',
33
+ manifest_path: relative(repoRoot, packageJsonPath),
34
+ });
35
+ }
36
+ }
37
+ const requirementsPath = join(repoRoot, 'requirements.txt');
38
+ if (existsSync(requirementsPath)) {
39
+ for (const line of readFileSync(requirementsPath, 'utf-8').split('\n')) {
40
+ const match = line.trim().match(/^([A-Za-z0-9_.-]+)==([A-Za-z0-9_.+-]+)$/);
41
+ if (!match)
42
+ continue;
43
+ const [, name, version] = match;
44
+ descriptors.set(keyFor('pip', name), {
45
+ name,
46
+ version,
47
+ ecosystem: 'pip',
48
+ manifest_path: 'requirements.txt',
49
+ });
50
+ }
51
+ }
52
+ const cargoTomlPath = join(repoRoot, 'Cargo.toml');
53
+ if (existsSync(cargoTomlPath)) {
54
+ const cargoVersions = resolveCargoVersions(repoRoot);
55
+ const inDependencies = { value: false };
56
+ for (const rawLine of readFileSync(cargoTomlPath, 'utf-8').split('\n')) {
57
+ const line = rawLine.trim();
58
+ if (line.startsWith('[')) {
59
+ inDependencies.value = line === '[dependencies]';
60
+ continue;
61
+ }
62
+ if (!inDependencies.value || !line || line.startsWith('#'))
63
+ continue;
64
+ const match = line.match(/^([A-Za-z0-9_-]+)\s*=\s*["']([^"']+)["']/);
65
+ if (!match)
66
+ continue;
67
+ const [, name, spec] = match;
68
+ descriptors.set(keyFor('cargo', name), {
69
+ name,
70
+ version: cargoVersions.get(name) ?? cleanVersionSpecifier(spec),
71
+ ecosystem: 'cargo',
72
+ manifest_path: 'Cargo.toml',
73
+ });
74
+ }
75
+ }
76
+ const goModPath = join(repoRoot, 'go.mod');
77
+ if (existsSync(goModPath)) {
78
+ for (const rawLine of readFileSync(goModPath, 'utf-8').split('\n')) {
79
+ const line = rawLine.trim();
80
+ if (!line || line.startsWith('//'))
81
+ continue;
82
+ const match = line.match(/^(?:require\s+)?([^\s]+)\s+(v[^\s]+)$/);
83
+ if (!match || line === 'require (')
84
+ continue;
85
+ const [, name, version] = match;
86
+ descriptors.set(keyFor('go', name), {
87
+ name,
88
+ version,
89
+ ecosystem: 'go',
90
+ manifest_path: 'go.mod',
91
+ });
92
+ }
93
+ }
94
+ return Array.from(descriptors.values());
95
+ }
96
+ function findRepoRoot(cwd) {
97
+ let current = resolve(cwd);
98
+ while (true) {
99
+ if (existsSync(join(current, 'package.json'))
100
+ || existsSync(join(current, 'requirements.txt'))
101
+ || existsSync(join(current, 'Cargo.toml'))
102
+ || existsSync(join(current, 'go.mod'))) {
103
+ return current;
104
+ }
105
+ const parent = dirname(current);
106
+ if (parent === current)
107
+ return resolve(cwd);
108
+ current = parent;
109
+ }
110
+ }
111
+ function resolveNodeVersions(repoRoot, importerKey) {
112
+ const versions = new Map();
113
+ const packageLockPath = join(repoRoot, 'package-lock.json');
114
+ if (existsSync(packageLockPath)) {
115
+ const packageLock = JSON.parse(readFileSync(packageLockPath, 'utf-8'));
116
+ for (const [path, pkg] of Object.entries(packageLock.packages ?? {})) {
117
+ const match = path.match(/^node_modules\/(.+)$/);
118
+ if (match && pkg.version) {
119
+ versions.set(match[1], pkg.version);
120
+ }
121
+ }
122
+ for (const [name, pkg] of Object.entries(packageLock.dependencies ?? {})) {
123
+ if (pkg.version && !versions.has(name)) {
124
+ versions.set(name, pkg.version);
125
+ }
126
+ }
127
+ }
128
+ const pnpmLockPath = join(repoRoot, 'pnpm-lock.yaml');
129
+ if (existsSync(pnpmLockPath)) {
130
+ const lock = parseYaml(readFileSync(pnpmLockPath, 'utf-8'));
131
+ const importer = lock.importers?.[importerKey];
132
+ for (const source of [importer?.dependencies, importer?.devDependencies]) {
133
+ for (const [name, pkg] of Object.entries(source ?? {})) {
134
+ if (pkg.version) {
135
+ versions.set(name, pkg.version.split('(')[0].replace(/^link:/, ''));
136
+ }
137
+ }
138
+ }
139
+ }
140
+ return versions;
141
+ }
142
+ function resolveCargoVersions(repoRoot) {
143
+ const versions = new Map();
144
+ const cargoLockPath = join(repoRoot, 'Cargo.lock');
145
+ if (!existsSync(cargoLockPath))
146
+ return versions;
147
+ let currentName;
148
+ for (const rawLine of readFileSync(cargoLockPath, 'utf-8').split('\n')) {
149
+ const line = rawLine.trim();
150
+ const nameMatch = line.match(/^name\s*=\s*"([^"]+)"$/);
151
+ if (nameMatch) {
152
+ currentName = nameMatch[1];
153
+ continue;
154
+ }
155
+ const versionMatch = line.match(/^version\s*=\s*"([^"]+)"$/);
156
+ if (currentName && versionMatch) {
157
+ versions.set(currentName, versionMatch[1]);
158
+ currentName = undefined;
159
+ }
160
+ }
161
+ return versions;
162
+ }
163
+ function loadWorkspacePackages(repoRoot) {
164
+ const packages = new Map();
165
+ const workspaceConfigPath = join(repoRoot, 'pnpm-workspace.yaml');
166
+ const patterns = existsSync(workspaceConfigPath)
167
+ ? (parseYaml(readFileSync(workspaceConfigPath, 'utf-8'))?.packages ?? [])
168
+ : ['packages/*', 'apps/*'];
169
+ for (const pattern of patterns) {
170
+ for (const dir of expandWorkspacePattern(repoRoot, pattern)) {
171
+ const manifestPath = join(dir, 'package.json');
172
+ if (!existsSync(manifestPath))
173
+ continue;
174
+ const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
175
+ if (!manifest.name || !manifest.version)
176
+ continue;
177
+ const readmePath = ['README.md', 'README.mdx', 'README.txt']
178
+ .map((name) => join(dir, name))
179
+ .find((candidate) => existsSync(candidate));
180
+ packages.set(manifest.name, {
181
+ version: manifest.version,
182
+ dir,
183
+ readme: readmePath
184
+ ? readFileSync(readmePath, 'utf-8')
185
+ : manifest.description ?? `${manifest.name} internal package`,
186
+ });
187
+ }
188
+ }
189
+ return packages;
190
+ }
191
+ function expandWorkspacePattern(repoRoot, pattern) {
192
+ if (!pattern.endsWith('/*')) {
193
+ const absolute = join(repoRoot, pattern);
194
+ return existsSync(absolute) ? [absolute] : [];
195
+ }
196
+ const parent = join(repoRoot, pattern.slice(0, -2));
197
+ if (!existsSync(parent))
198
+ return [];
199
+ return readdirSync(parent)
200
+ .map((entry) => join(parent, entry))
201
+ .filter((entry) => statSync(entry).isDirectory());
202
+ }
203
+ function cleanVersionSpecifier(spec) {
204
+ return spec
205
+ .replace(/^workspace:/, '')
206
+ .replace(/^file:/, '')
207
+ .replace(/^[~^><= ]+/, '')
208
+ .trim();
209
+ }
210
+ function keyFor(ecosystem, name) {
211
+ return `${ecosystem}:${name}`;
212
+ }
213
+ //# sourceMappingURL=dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../src/dependencies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Detect which AI coding client is installed */
2
+ export declare function detectClient(): Promise<string | null>;
3
+ //# sourceMappingURL=detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAIA,iDAAiD;AACjD,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyB3D"}
package/dist/detect.js ADDED
@@ -0,0 +1,30 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ /** Detect which AI coding client is installed */
5
+ export async function detectClient() {
6
+ const home = homedir();
7
+ // Check for Cursor
8
+ const cursorPaths = [
9
+ join(home, '.cursor'),
10
+ join(home, 'Library', 'Application Support', 'Cursor'),
11
+ join(home, '.config', 'Cursor'),
12
+ ];
13
+ if (cursorPaths.some(existsSync))
14
+ return 'cursor';
15
+ // Check for Claude Code
16
+ const claudePaths = [
17
+ join(home, '.claude'),
18
+ join(home, 'Library', 'Application Support', 'Claude'),
19
+ ];
20
+ if (claudePaths.some(existsSync))
21
+ return 'claude';
22
+ const codexPaths = [
23
+ join(home, '.codex'),
24
+ join(home, '.config', 'codex'),
25
+ ];
26
+ if (codexPaths.some(existsSync))
27
+ return 'codex';
28
+ return null;
29
+ }
30
+ //# sourceMappingURL=detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,iDAAiD;AACjD,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,mBAAmB;IACnB,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,CAAC;QACtD,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;KAChC,CAAC;IACF,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC;IAElD,wBAAwB;IACxB,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,CAAC;KACvD,CAAC;IACF,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC;IAElD,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;KAC/B,CAAC;IACF,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC;IAEhD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { MemoireClient } from '@memoire/sdk';
2
+ import type { MemoireConfig } from '@memoire/shared';
3
+ type HookClientName = MemoireConfig['client'];
4
+ export type HookCommandName = 'cursor-before-submit' | 'cursor-after-mcp' | 'cursor-after-shell' | 'cursor-after-file-edit' | 'cursor-stop' | 'claude-session-start' | 'claude-user-prompt' | 'claude-post-tool-use' | 'claude-stop';
5
+ type HookClient = Pick<MemoireClient, 'ingestEvent'>;
6
+ interface HookCommandOptions {
7
+ hookName: HookCommandName;
8
+ client?: HookClientName;
9
+ clientId?: string;
10
+ configPath?: string;
11
+ }
12
+ interface HookCommandDeps {
13
+ readConfig?: (configPath?: string) => MemoireConfig;
14
+ createClient?: (config: MemoireConfig, clientId?: string) => HookClient;
15
+ readStdin?: () => Promise<string>;
16
+ writeStdout?: (value: string) => void;
17
+ runResume?: (query: string | undefined, args: {
18
+ config: MemoireConfig;
19
+ clientId?: string;
20
+ }) => Promise<string>;
21
+ detectBranch?: (cwd: string) => string | undefined;
22
+ }
23
+ export declare function runHookCommand(options: HookCommandOptions, deps?: HookCommandDeps): Promise<void>;
24
+ export {};
25
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,iBAAiB,CAAC;AAInE,KAAK,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAY9C,MAAM,MAAM,eAAe,GACvB,sBAAsB,GACtB,kBAAkB,GAClB,oBAAoB,GACpB,wBAAwB,GACxB,aAAa,GACb,sBAAsB,GACtB,oBAAoB,GACpB,sBAAsB,GACtB,aAAa,CAAC;AAElB,KAAK,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAErD,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,aAAa,CAAC;IACpD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;IACxE,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/G,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACpD;AAYD,wBAAsB,cAAc,CAClC,OAAO,EAAE,kBAAkB,EAC3B,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,IAAI,CAAC,CAmHf"}