@rangerchaz/aimem 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 (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +380 -0
  3. package/dist/cli/commands/git.d.ts +6 -0
  4. package/dist/cli/commands/git.d.ts.map +1 -0
  5. package/dist/cli/commands/git.js +298 -0
  6. package/dist/cli/commands/git.js.map +1 -0
  7. package/dist/cli/commands/hook-session-end.d.ts +7 -0
  8. package/dist/cli/commands/hook-session-end.d.ts.map +1 -0
  9. package/dist/cli/commands/hook-session-end.js +109 -0
  10. package/dist/cli/commands/hook-session-end.js.map +1 -0
  11. package/dist/cli/commands/hook-session-start.d.ts +7 -0
  12. package/dist/cli/commands/hook-session-start.d.ts.map +1 -0
  13. package/dist/cli/commands/hook-session-start.js +116 -0
  14. package/dist/cli/commands/hook-session-start.js.map +1 -0
  15. package/dist/cli/commands/import.d.ts +14 -0
  16. package/dist/cli/commands/import.d.ts.map +1 -0
  17. package/dist/cli/commands/import.js +527 -0
  18. package/dist/cli/commands/import.js.map +1 -0
  19. package/dist/cli/commands/init.d.ts +2 -0
  20. package/dist/cli/commands/init.d.ts.map +1 -0
  21. package/dist/cli/commands/init.js +32 -0
  22. package/dist/cli/commands/init.js.map +1 -0
  23. package/dist/cli/commands/mcp-serve.d.ts +2 -0
  24. package/dist/cli/commands/mcp-serve.d.ts.map +1 -0
  25. package/dist/cli/commands/mcp-serve.js +5 -0
  26. package/dist/cli/commands/mcp-serve.js.map +1 -0
  27. package/dist/cli/commands/query.d.ts +8 -0
  28. package/dist/cli/commands/query.d.ts.map +1 -0
  29. package/dist/cli/commands/query.js +83 -0
  30. package/dist/cli/commands/query.js.map +1 -0
  31. package/dist/cli/commands/setup.d.ts +10 -0
  32. package/dist/cli/commands/setup.d.ts.map +1 -0
  33. package/dist/cli/commands/setup.js +504 -0
  34. package/dist/cli/commands/setup.js.map +1 -0
  35. package/dist/cli/commands/start.d.ts +8 -0
  36. package/dist/cli/commands/start.d.ts.map +1 -0
  37. package/dist/cli/commands/start.js +90 -0
  38. package/dist/cli/commands/start.js.map +1 -0
  39. package/dist/cli/commands/status.d.ts +2 -0
  40. package/dist/cli/commands/status.d.ts.map +1 -0
  41. package/dist/cli/commands/status.js +85 -0
  42. package/dist/cli/commands/status.js.map +1 -0
  43. package/dist/cli/commands/stop.d.ts +7 -0
  44. package/dist/cli/commands/stop.d.ts.map +1 -0
  45. package/dist/cli/commands/stop.js +46 -0
  46. package/dist/cli/commands/stop.js.map +1 -0
  47. package/dist/cli/commands/visualize.d.ts +8 -0
  48. package/dist/cli/commands/visualize.d.ts.map +1 -0
  49. package/dist/cli/commands/visualize.js +96 -0
  50. package/dist/cli/commands/visualize.js.map +1 -0
  51. package/dist/cli/index.d.ts +3 -0
  52. package/dist/cli/index.d.ts.map +1 -0
  53. package/dist/cli/index.js +114 -0
  54. package/dist/cli/index.js.map +1 -0
  55. package/dist/db/index.d.ts +55 -0
  56. package/dist/db/index.d.ts.map +1 -0
  57. package/dist/db/index.js +464 -0
  58. package/dist/db/index.js.map +1 -0
  59. package/dist/db/schema.d.ts +4 -0
  60. package/dist/db/schema.d.ts.map +1 -0
  61. package/dist/db/schema.js +200 -0
  62. package/dist/db/schema.js.map +1 -0
  63. package/dist/extractor/index.d.ts +27 -0
  64. package/dist/extractor/index.d.ts.map +1 -0
  65. package/dist/extractor/index.js +227 -0
  66. package/dist/extractor/index.js.map +1 -0
  67. package/dist/git/extractor.d.ts +30 -0
  68. package/dist/git/extractor.d.ts.map +1 -0
  69. package/dist/git/extractor.js +126 -0
  70. package/dist/git/extractor.js.map +1 -0
  71. package/dist/git/hooks.d.ts +36 -0
  72. package/dist/git/hooks.d.ts.map +1 -0
  73. package/dist/git/hooks.js +142 -0
  74. package/dist/git/hooks.js.map +1 -0
  75. package/dist/git/index.d.ts +69 -0
  76. package/dist/git/index.d.ts.map +1 -0
  77. package/dist/git/index.js +250 -0
  78. package/dist/git/index.js.map +1 -0
  79. package/dist/indexer/index.d.ts +20 -0
  80. package/dist/indexer/index.d.ts.map +1 -0
  81. package/dist/indexer/index.js +173 -0
  82. package/dist/indexer/index.js.map +1 -0
  83. package/dist/indexer/parsers/base.d.ts +19 -0
  84. package/dist/indexer/parsers/base.d.ts.map +1 -0
  85. package/dist/indexer/parsers/base.js +46 -0
  86. package/dist/indexer/parsers/base.js.map +1 -0
  87. package/dist/indexer/parsers/cpp.d.ts +3 -0
  88. package/dist/indexer/parsers/cpp.d.ts.map +1 -0
  89. package/dist/indexer/parsers/cpp.js +180 -0
  90. package/dist/indexer/parsers/cpp.js.map +1 -0
  91. package/dist/indexer/parsers/go.d.ts +3 -0
  92. package/dist/indexer/parsers/go.d.ts.map +1 -0
  93. package/dist/indexer/parsers/go.js +98 -0
  94. package/dist/indexer/parsers/go.js.map +1 -0
  95. package/dist/indexer/parsers/java.d.ts +3 -0
  96. package/dist/indexer/parsers/java.d.ts.map +1 -0
  97. package/dist/indexer/parsers/java.js +204 -0
  98. package/dist/indexer/parsers/java.js.map +1 -0
  99. package/dist/indexer/parsers/javascript.d.ts +3 -0
  100. package/dist/indexer/parsers/javascript.d.ts.map +1 -0
  101. package/dist/indexer/parsers/javascript.js +157 -0
  102. package/dist/indexer/parsers/javascript.js.map +1 -0
  103. package/dist/indexer/parsers/kotlin.d.ts +3 -0
  104. package/dist/indexer/parsers/kotlin.d.ts.map +1 -0
  105. package/dist/indexer/parsers/kotlin.js +182 -0
  106. package/dist/indexer/parsers/kotlin.js.map +1 -0
  107. package/dist/indexer/parsers/php.d.ts +3 -0
  108. package/dist/indexer/parsers/php.d.ts.map +1 -0
  109. package/dist/indexer/parsers/php.js +190 -0
  110. package/dist/indexer/parsers/php.js.map +1 -0
  111. package/dist/indexer/parsers/python.d.ts +3 -0
  112. package/dist/indexer/parsers/python.d.ts.map +1 -0
  113. package/dist/indexer/parsers/python.js +101 -0
  114. package/dist/indexer/parsers/python.js.map +1 -0
  115. package/dist/indexer/parsers/ruby.d.ts +3 -0
  116. package/dist/indexer/parsers/ruby.d.ts.map +1 -0
  117. package/dist/indexer/parsers/ruby.js +92 -0
  118. package/dist/indexer/parsers/ruby.js.map +1 -0
  119. package/dist/indexer/parsers/rust.d.ts +3 -0
  120. package/dist/indexer/parsers/rust.d.ts.map +1 -0
  121. package/dist/indexer/parsers/rust.js +190 -0
  122. package/dist/indexer/parsers/rust.js.map +1 -0
  123. package/dist/indexer/watcher-daemon.d.ts +2 -0
  124. package/dist/indexer/watcher-daemon.d.ts.map +1 -0
  125. package/dist/indexer/watcher-daemon.js +27 -0
  126. package/dist/indexer/watcher-daemon.js.map +1 -0
  127. package/dist/indexer/watcher.d.ts +7 -0
  128. package/dist/indexer/watcher.d.ts.map +1 -0
  129. package/dist/indexer/watcher.js +77 -0
  130. package/dist/indexer/watcher.js.map +1 -0
  131. package/dist/mcp/server.d.ts +2 -0
  132. package/dist/mcp/server.d.ts.map +1 -0
  133. package/dist/mcp/server.js +241 -0
  134. package/dist/mcp/server.js.map +1 -0
  135. package/dist/proxy/interceptor-mockttp.d.ts +27 -0
  136. package/dist/proxy/interceptor-mockttp.d.ts.map +1 -0
  137. package/dist/proxy/interceptor-mockttp.js +274 -0
  138. package/dist/proxy/interceptor-mockttp.js.map +1 -0
  139. package/dist/proxy/proxy-daemon.d.ts +5 -0
  140. package/dist/proxy/proxy-daemon.d.ts.map +1 -0
  141. package/dist/proxy/proxy-daemon.js +26 -0
  142. package/dist/proxy/proxy-daemon.js.map +1 -0
  143. package/dist/query/index.d.ts +32 -0
  144. package/dist/query/index.d.ts.map +1 -0
  145. package/dist/query/index.js +135 -0
  146. package/dist/query/index.js.map +1 -0
  147. package/dist/types/index.d.ts +89 -0
  148. package/dist/types/index.d.ts.map +1 -0
  149. package/dist/types/index.js +3 -0
  150. package/dist/types/index.js.map +1 -0
  151. package/dist/visualize/index.d.ts +144 -0
  152. package/dist/visualize/index.d.ts.map +1 -0
  153. package/dist/visualize/index.js +707 -0
  154. package/dist/visualize/index.js.map +1 -0
  155. package/dist/visualize/server.d.ts +7 -0
  156. package/dist/visualize/server.d.ts.map +1 -0
  157. package/dist/visualize/server.js +77 -0
  158. package/dist/visualize/server.js.map +1 -0
  159. package/dist/visualize/template.d.ts +3 -0
  160. package/dist/visualize/template.d.ts.map +1 -0
  161. package/dist/visualize/template.js +3465 -0
  162. package/dist/visualize/template.js.map +1 -0
  163. package/package.json +56 -0
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Git hooks for aimem integration
3
+ */
4
+ /**
5
+ * Generate post-commit hook content
6
+ */
7
+ export declare function generatePostCommitHook(): string;
8
+ /**
9
+ * Generate pre-push hook content
10
+ */
11
+ export declare function generatePrePushHook(): string;
12
+ /**
13
+ * Check if a hook is installed by aimem
14
+ */
15
+ export declare function isAimemHook(hookPath: string): boolean;
16
+ /**
17
+ * Install a git hook
18
+ */
19
+ export declare function installHook(projectPath: string, hookName: 'post-commit' | 'pre-push', options?: {
20
+ force?: boolean;
21
+ }): {
22
+ success: boolean;
23
+ message: string;
24
+ };
25
+ /**
26
+ * Remove a git hook installed by aimem
27
+ */
28
+ export declare function removeHook(projectPath: string, hookName: 'post-commit' | 'pre-push'): {
29
+ success: boolean;
30
+ message: string;
31
+ };
32
+ /**
33
+ * Get status of installed hooks
34
+ */
35
+ export declare function getHooksStatus(projectPath: string): Record<string, 'installed' | 'not-installed' | 'other'>;
36
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/git/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAU/C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAU5C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,aAAa,GAAG,UAAU,EACpC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAChC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA6CvC;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,aAAa,GAAG,UAAU,GACnC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAsBvC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,GAAG,OAAO,CAAC,CAqB3G"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Git hooks for aimem integration
3
+ */
4
+ import { existsSync, writeFileSync, readFileSync, chmodSync, unlinkSync, mkdirSync } from 'fs';
5
+ import { join } from 'path';
6
+ import { getGitRoot } from './index.js';
7
+ const HOOK_MARKER = '# aimem hook';
8
+ /**
9
+ * Generate post-commit hook content
10
+ */
11
+ export function generatePostCommitHook() {
12
+ return `#!/bin/sh
13
+ ${HOOK_MARKER}
14
+ # Auto-link decisions to commits after each commit
15
+
16
+ # Only run if aimem is available
17
+ if command -v aimem >/dev/null 2>&1; then
18
+ aimem git link --auto 2>/dev/null || true
19
+ fi
20
+ `;
21
+ }
22
+ /**
23
+ * Generate pre-push hook content
24
+ */
25
+ export function generatePrePushHook() {
26
+ return `#!/bin/sh
27
+ ${HOOK_MARKER}
28
+ # Import commits before push
29
+
30
+ # Only run if aimem is available
31
+ if command -v aimem >/dev/null 2>&1; then
32
+ aimem git import --limit 50 2>/dev/null || true
33
+ fi
34
+ `;
35
+ }
36
+ /**
37
+ * Check if a hook is installed by aimem
38
+ */
39
+ export function isAimemHook(hookPath) {
40
+ if (!existsSync(hookPath))
41
+ return false;
42
+ try {
43
+ const content = readFileSync(hookPath, 'utf-8');
44
+ return content.includes(HOOK_MARKER);
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ /**
51
+ * Install a git hook
52
+ */
53
+ export function installHook(projectPath, hookName, options = {}) {
54
+ const gitRoot = getGitRoot(projectPath);
55
+ if (!gitRoot) {
56
+ return { success: false, message: 'Not a git repository' };
57
+ }
58
+ const hooksDir = join(gitRoot, '.git', 'hooks');
59
+ const hookPath = join(hooksDir, hookName);
60
+ // Check if hook already exists
61
+ if (existsSync(hookPath)) {
62
+ if (isAimemHook(hookPath)) {
63
+ return { success: true, message: `Hook ${hookName} already installed` };
64
+ }
65
+ if (!options.force) {
66
+ return { success: false, message: `Hook ${hookName} already exists (use --force to overwrite)` };
67
+ }
68
+ }
69
+ // Ensure hooks directory exists
70
+ if (!existsSync(hooksDir)) {
71
+ mkdirSync(hooksDir, { recursive: true });
72
+ }
73
+ // Generate hook content
74
+ let content;
75
+ switch (hookName) {
76
+ case 'post-commit':
77
+ content = generatePostCommitHook();
78
+ break;
79
+ case 'pre-push':
80
+ content = generatePrePushHook();
81
+ break;
82
+ default:
83
+ return { success: false, message: `Unknown hook: ${hookName}` };
84
+ }
85
+ // Write hook
86
+ try {
87
+ writeFileSync(hookPath, content);
88
+ chmodSync(hookPath, 0o755);
89
+ return { success: true, message: `Installed ${hookName} hook` };
90
+ }
91
+ catch (err) {
92
+ return { success: false, message: `Failed to write hook: ${err.message}` };
93
+ }
94
+ }
95
+ /**
96
+ * Remove a git hook installed by aimem
97
+ */
98
+ export function removeHook(projectPath, hookName) {
99
+ const gitRoot = getGitRoot(projectPath);
100
+ if (!gitRoot) {
101
+ return { success: false, message: 'Not a git repository' };
102
+ }
103
+ const hookPath = join(gitRoot, '.git', 'hooks', hookName);
104
+ if (!existsSync(hookPath)) {
105
+ return { success: true, message: `Hook ${hookName} not installed` };
106
+ }
107
+ if (!isAimemHook(hookPath)) {
108
+ return { success: false, message: `Hook ${hookName} was not installed by aimem` };
109
+ }
110
+ try {
111
+ unlinkSync(hookPath);
112
+ return { success: true, message: `Removed ${hookName} hook` };
113
+ }
114
+ catch (err) {
115
+ return { success: false, message: `Failed to remove hook: ${err.message}` };
116
+ }
117
+ }
118
+ /**
119
+ * Get status of installed hooks
120
+ */
121
+ export function getHooksStatus(projectPath) {
122
+ const gitRoot = getGitRoot(projectPath);
123
+ if (!gitRoot) {
124
+ return {};
125
+ }
126
+ const hooks = ['post-commit', 'pre-push'];
127
+ const status = {};
128
+ for (const hook of hooks) {
129
+ const hookPath = join(gitRoot, '.git', 'hooks', hook);
130
+ if (!existsSync(hookPath)) {
131
+ status[hook] = 'not-installed';
132
+ }
133
+ else if (isAimemHook(hookPath)) {
134
+ status[hook] = 'installed';
135
+ }
136
+ else {
137
+ status[hook] = 'other';
138
+ }
139
+ }
140
+ return status;
141
+ }
142
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/git/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Git operations using shell commands (no dependencies)
3
+ */
4
+ export interface GitCommit {
5
+ hash: string;
6
+ shortHash: string;
7
+ authorName: string;
8
+ authorEmail: string;
9
+ timestamp: string;
10
+ subject: string;
11
+ body: string;
12
+ parentHashes: string[];
13
+ }
14
+ export interface GitBlame {
15
+ lineNumber: number;
16
+ hash: string;
17
+ author: string;
18
+ authorEmail: string;
19
+ timestamp: string;
20
+ }
21
+ export interface ChangedFile {
22
+ path: string;
23
+ status: 'A' | 'M' | 'D' | 'R' | 'C' | string;
24
+ }
25
+ /**
26
+ * Check if a path is a git repository
27
+ */
28
+ export declare function isGitRepo(path: string): boolean;
29
+ /**
30
+ * Get the current branch name
31
+ */
32
+ export declare function getCurrentBranch(path: string): string | null;
33
+ /**
34
+ * Get the HEAD commit hash
35
+ */
36
+ export declare function getHeadCommit(path: string): string | null;
37
+ /**
38
+ * Get commits from git log
39
+ */
40
+ export declare function getCommits(path: string, options?: {
41
+ limit?: number;
42
+ since?: string;
43
+ until?: string;
44
+ }): Promise<GitCommit[]>;
45
+ /**
46
+ * Get a single commit by hash
47
+ */
48
+ export declare function getCommit(path: string, hash: string): Promise<GitCommit | null>;
49
+ /**
50
+ * Get files changed in a commit
51
+ */
52
+ export declare function getChangedFiles(path: string, hash: string): Promise<ChangedFile[]>;
53
+ /**
54
+ * Get git blame for a file
55
+ */
56
+ export declare function getBlame(path: string, filePath: string): Promise<GitBlame[]>;
57
+ /**
58
+ * Get blame for a specific line range
59
+ */
60
+ export declare function getBlameForLines(path: string, filePath: string, startLine: number, endLine: number): Promise<GitBlame[]>;
61
+ /**
62
+ * Get the root directory of the git repository
63
+ */
64
+ export declare function getGitRoot(path: string): string | null;
65
+ /**
66
+ * Check if there are uncommitted changes
67
+ */
68
+ export declare function hasUncommittedChanges(path: string): boolean;
69
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;CAC9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMzD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,OAAO,CAAC,SAAS,EAAE,CAAC,CAyCtB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAwBrF;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBxF;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CA0ClF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,QAAQ,EAAE,CAAC,CA2CrB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMtD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO3D"}
@@ -0,0 +1,250 @@
1
+ /**
2
+ * Git operations using shell commands (no dependencies)
3
+ */
4
+ import { execSync, exec } from 'child_process';
5
+ import { promisify } from 'util';
6
+ const execAsync = promisify(exec);
7
+ /**
8
+ * Check if a path is a git repository
9
+ */
10
+ export function isGitRepo(path) {
11
+ try {
12
+ execSync('git rev-parse --git-dir', { cwd: path, stdio: 'pipe' });
13
+ return true;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ /**
20
+ * Get the current branch name
21
+ */
22
+ export function getCurrentBranch(path) {
23
+ try {
24
+ return execSync('git rev-parse --abbrev-ref HEAD', { cwd: path, encoding: 'utf-8' }).trim();
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ /**
31
+ * Get the HEAD commit hash
32
+ */
33
+ export function getHeadCommit(path) {
34
+ try {
35
+ return execSync('git rev-parse HEAD', { cwd: path, encoding: 'utf-8' }).trim();
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ /**
42
+ * Get commits from git log
43
+ */
44
+ export async function getCommits(path, options = {}) {
45
+ const { limit = 100, since, until } = options;
46
+ // Use a unique separator that won't appear in commit messages
47
+ const SEP = '<<<AIMEM_SEP>>>';
48
+ const END = '<<<AIMEM_END>>>';
49
+ // Format: hash, short hash, author name, author email, timestamp, parent hashes, subject, body
50
+ const format = `%H${SEP}%h${SEP}%an${SEP}%ae${SEP}%aI${SEP}%P${SEP}%s${SEP}%b${END}`;
51
+ let cmd = `git log --format="${format}" -n ${limit}`;
52
+ if (since)
53
+ cmd += ` --since="${since}"`;
54
+ if (until)
55
+ cmd += ` --until="${until}"`;
56
+ try {
57
+ const { stdout } = await execAsync(cmd, { cwd: path, maxBuffer: 10 * 1024 * 1024 });
58
+ const commits = [];
59
+ for (const entry of stdout.split(END)) {
60
+ const trimmed = entry.trim();
61
+ if (!trimmed)
62
+ continue;
63
+ const parts = trimmed.split(SEP);
64
+ if (parts.length < 7)
65
+ continue;
66
+ commits.push({
67
+ hash: parts[0],
68
+ shortHash: parts[1],
69
+ authorName: parts[2],
70
+ authorEmail: parts[3],
71
+ timestamp: parts[4],
72
+ parentHashes: parts[5] ? parts[5].split(' ') : [],
73
+ subject: parts[6],
74
+ body: parts[7] || '',
75
+ });
76
+ }
77
+ return commits;
78
+ }
79
+ catch {
80
+ return [];
81
+ }
82
+ }
83
+ /**
84
+ * Get a single commit by hash
85
+ */
86
+ export async function getCommit(path, hash) {
87
+ const commits = await getCommits(path, { limit: 1 });
88
+ // Actually need to get specific commit
89
+ const SEP = '<<<AIMEM_SEP>>>';
90
+ const format = `%H${SEP}%h${SEP}%an${SEP}%ae${SEP}%aI${SEP}%P${SEP}%s${SEP}%b`;
91
+ try {
92
+ const { stdout } = await execAsync(`git show -s --format="${format}" ${hash}`, { cwd: path });
93
+ const parts = stdout.trim().split(SEP);
94
+ if (parts.length < 7)
95
+ return null;
96
+ return {
97
+ hash: parts[0],
98
+ shortHash: parts[1],
99
+ authorName: parts[2],
100
+ authorEmail: parts[3],
101
+ timestamp: parts[4],
102
+ parentHashes: parts[5] ? parts[5].split(' ') : [],
103
+ subject: parts[6],
104
+ body: parts[7] || '',
105
+ };
106
+ }
107
+ catch {
108
+ return null;
109
+ }
110
+ }
111
+ /**
112
+ * Get files changed in a commit
113
+ */
114
+ export async function getChangedFiles(path, hash) {
115
+ try {
116
+ const { stdout } = await execAsync(`git diff-tree --no-commit-id --name-status -r ${hash}`, { cwd: path });
117
+ const files = [];
118
+ for (const line of stdout.split('\n')) {
119
+ const trimmed = line.trim();
120
+ if (!trimmed)
121
+ continue;
122
+ const [status, ...pathParts] = trimmed.split('\t');
123
+ files.push({
124
+ status: status,
125
+ path: pathParts.join('\t'), // Handle paths with tabs (rare)
126
+ });
127
+ }
128
+ return files;
129
+ }
130
+ catch {
131
+ return [];
132
+ }
133
+ }
134
+ /**
135
+ * Get git blame for a file
136
+ */
137
+ export async function getBlame(path, filePath) {
138
+ try {
139
+ // Use porcelain format for easier parsing
140
+ const { stdout } = await execAsync(`git blame --porcelain "${filePath}"`, { cwd: path, maxBuffer: 10 * 1024 * 1024 });
141
+ const lines = stdout.split('\n');
142
+ const blames = [];
143
+ let currentHash = '';
144
+ let currentAuthor = '';
145
+ let currentEmail = '';
146
+ let currentTimestamp = '';
147
+ let lineNumber = 0;
148
+ for (const line of lines) {
149
+ if (line.match(/^[0-9a-f]{40}/)) {
150
+ // New blame entry: hash origLine finalLine [numLines]
151
+ const parts = line.split(' ');
152
+ currentHash = parts[0];
153
+ lineNumber = parseInt(parts[2], 10);
154
+ }
155
+ else if (line.startsWith('author ')) {
156
+ currentAuthor = line.slice(7);
157
+ }
158
+ else if (line.startsWith('author-mail ')) {
159
+ currentEmail = line.slice(12).replace(/[<>]/g, '');
160
+ }
161
+ else if (line.startsWith('author-time ')) {
162
+ const timestamp = parseInt(line.slice(12), 10);
163
+ currentTimestamp = new Date(timestamp * 1000).toISOString();
164
+ }
165
+ else if (line.startsWith('\t')) {
166
+ // This is the actual line content - entry is complete
167
+ blames.push({
168
+ lineNumber,
169
+ hash: currentHash,
170
+ author: currentAuthor,
171
+ authorEmail: currentEmail,
172
+ timestamp: currentTimestamp,
173
+ });
174
+ }
175
+ }
176
+ return blames;
177
+ }
178
+ catch {
179
+ return [];
180
+ }
181
+ }
182
+ /**
183
+ * Get blame for a specific line range
184
+ */
185
+ export async function getBlameForLines(path, filePath, startLine, endLine) {
186
+ try {
187
+ const { stdout } = await execAsync(`git blame --porcelain -L ${startLine},${endLine} "${filePath}"`, { cwd: path, maxBuffer: 10 * 1024 * 1024 });
188
+ const lines = stdout.split('\n');
189
+ const blames = [];
190
+ let currentHash = '';
191
+ let currentAuthor = '';
192
+ let currentEmail = '';
193
+ let currentTimestamp = '';
194
+ let lineNumber = 0;
195
+ for (const line of lines) {
196
+ if (line.match(/^[0-9a-f]{40}/)) {
197
+ const parts = line.split(' ');
198
+ currentHash = parts[0];
199
+ lineNumber = parseInt(parts[2], 10);
200
+ }
201
+ else if (line.startsWith('author ')) {
202
+ currentAuthor = line.slice(7);
203
+ }
204
+ else if (line.startsWith('author-mail ')) {
205
+ currentEmail = line.slice(12).replace(/[<>]/g, '');
206
+ }
207
+ else if (line.startsWith('author-time ')) {
208
+ const timestamp = parseInt(line.slice(12), 10);
209
+ currentTimestamp = new Date(timestamp * 1000).toISOString();
210
+ }
211
+ else if (line.startsWith('\t')) {
212
+ blames.push({
213
+ lineNumber,
214
+ hash: currentHash,
215
+ author: currentAuthor,
216
+ authorEmail: currentEmail,
217
+ timestamp: currentTimestamp,
218
+ });
219
+ }
220
+ }
221
+ return blames;
222
+ }
223
+ catch {
224
+ return [];
225
+ }
226
+ }
227
+ /**
228
+ * Get the root directory of the git repository
229
+ */
230
+ export function getGitRoot(path) {
231
+ try {
232
+ return execSync('git rev-parse --show-toplevel', { cwd: path, encoding: 'utf-8' }).trim();
233
+ }
234
+ catch {
235
+ return null;
236
+ }
237
+ }
238
+ /**
239
+ * Check if there are uncommitted changes
240
+ */
241
+ export function hasUncommittedChanges(path) {
242
+ try {
243
+ const status = execSync('git status --porcelain', { cwd: path, encoding: 'utf-8' });
244
+ return status.trim().length > 0;
245
+ }
246
+ catch {
247
+ return false;
248
+ }
249
+ }
250
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ interface PendingCall {
2
+ callerId: number;
3
+ calledName: string;
4
+ }
5
+ interface IndexFileOptions {
6
+ pendingCalls?: PendingCall[];
7
+ trackBlame?: boolean;
8
+ }
9
+ export declare function indexFile(projectId: number, projectPath: string, relativePath: string, options?: IndexFileOptions): Promise<number>;
10
+ interface IndexProjectOptions {
11
+ trackBlame?: boolean;
12
+ }
13
+ export declare function indexProject(projectId: number, projectPath: string, options?: IndexProjectOptions): Promise<{
14
+ files: number;
15
+ structures: number;
16
+ links: number;
17
+ }>;
18
+ export declare function getSupportedExtensions(): string[];
19
+ export {};
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAkBA,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AA+DD,UAAU,gBAAgB;IACxB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAqEjB;AAED,UAAU,mBAAmB;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsD/D;AAED,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD"}