@elliotding/ai-agent-mcp 0.1.24 → 0.1.26

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 (233) hide show
  1. package/README.md +27 -0
  2. package/package.json +4 -1
  3. package/.prompt-cache/cmd-cmd-client-sdk-ai-hub-generate-testcase.md +0 -101
  4. package/.prompt-cache/cmd-cmd-client-sdk-ai-hub-submit_zct_job.md +0 -158
  5. package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-conf-status.md +0 -311
  6. package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-sdk-log.md +0 -64
  7. package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-zmb-log-errors.md +0 -84
  8. package/ai-resource-telemetry.json +0 -40
  9. package/dist/api/cached-client.d.ts +0 -48
  10. package/dist/api/cached-client.d.ts.map +0 -1
  11. package/dist/api/cached-client.js +0 -126
  12. package/dist/api/cached-client.js.map +0 -1
  13. package/dist/api/client.d.ts +0 -281
  14. package/dist/api/client.d.ts.map +0 -1
  15. package/dist/api/client.js +0 -371
  16. package/dist/api/client.js.map +0 -1
  17. package/dist/auth/index.d.ts +0 -8
  18. package/dist/auth/index.d.ts.map +0 -1
  19. package/dist/auth/index.js +0 -26
  20. package/dist/auth/index.js.map +0 -1
  21. package/dist/auth/middleware.d.ts +0 -36
  22. package/dist/auth/middleware.d.ts.map +0 -1
  23. package/dist/auth/middleware.js +0 -194
  24. package/dist/auth/middleware.js.map +0 -1
  25. package/dist/auth/permissions.d.ts +0 -60
  26. package/dist/auth/permissions.d.ts.map +0 -1
  27. package/dist/auth/permissions.js +0 -262
  28. package/dist/auth/permissions.js.map +0 -1
  29. package/dist/auth/token-validator.d.ts +0 -52
  30. package/dist/auth/token-validator.d.ts.map +0 -1
  31. package/dist/auth/token-validator.js +0 -215
  32. package/dist/auth/token-validator.js.map +0 -1
  33. package/dist/cache/cache-manager.d.ts +0 -49
  34. package/dist/cache/cache-manager.d.ts.map +0 -1
  35. package/dist/cache/cache-manager.js +0 -191
  36. package/dist/cache/cache-manager.js.map +0 -1
  37. package/dist/cache/index.d.ts +0 -6
  38. package/dist/cache/index.d.ts.map +0 -1
  39. package/dist/cache/index.js +0 -12
  40. package/dist/cache/index.js.map +0 -1
  41. package/dist/cache/redis-client.d.ts +0 -45
  42. package/dist/cache/redis-client.d.ts.map +0 -1
  43. package/dist/cache/redis-client.js +0 -210
  44. package/dist/cache/redis-client.js.map +0 -1
  45. package/dist/config/constants.d.ts +0 -28
  46. package/dist/config/constants.d.ts.map +0 -1
  47. package/dist/config/constants.js +0 -31
  48. package/dist/config/constants.js.map +0 -1
  49. package/dist/config/index.d.ts +0 -71
  50. package/dist/config/index.d.ts.map +0 -1
  51. package/dist/config/index.js +0 -190
  52. package/dist/config/index.js.map +0 -1
  53. package/dist/filesystem/manager.d.ts +0 -45
  54. package/dist/filesystem/manager.d.ts.map +0 -1
  55. package/dist/filesystem/manager.js +0 -246
  56. package/dist/filesystem/manager.js.map +0 -1
  57. package/dist/git/multi-source-manager.d.ts +0 -78
  58. package/dist/git/multi-source-manager.d.ts.map +0 -1
  59. package/dist/git/multi-source-manager.js +0 -577
  60. package/dist/git/multi-source-manager.js.map +0 -1
  61. package/dist/git/operations.d.ts +0 -27
  62. package/dist/git/operations.d.ts.map +0 -1
  63. package/dist/git/operations.js +0 -83
  64. package/dist/git/operations.js.map +0 -1
  65. package/dist/index.d.ts +0 -6
  66. package/dist/index.d.ts.map +0 -1
  67. package/dist/index.js +0 -122
  68. package/dist/index.js.map +0 -1
  69. package/dist/monitoring/health.d.ts +0 -35
  70. package/dist/monitoring/health.d.ts.map +0 -1
  71. package/dist/monitoring/health.js +0 -105
  72. package/dist/monitoring/health.js.map +0 -1
  73. package/dist/prompts/cache.d.ts +0 -69
  74. package/dist/prompts/cache.d.ts.map +0 -1
  75. package/dist/prompts/cache.js +0 -163
  76. package/dist/prompts/cache.js.map +0 -1
  77. package/dist/prompts/generator.d.ts +0 -49
  78. package/dist/prompts/generator.d.ts.map +0 -1
  79. package/dist/prompts/generator.js +0 -160
  80. package/dist/prompts/generator.js.map +0 -1
  81. package/dist/prompts/index.d.ts +0 -13
  82. package/dist/prompts/index.d.ts.map +0 -1
  83. package/dist/prompts/index.js +0 -24
  84. package/dist/prompts/index.js.map +0 -1
  85. package/dist/prompts/manager.d.ts +0 -169
  86. package/dist/prompts/manager.d.ts.map +0 -1
  87. package/dist/prompts/manager.js +0 -488
  88. package/dist/prompts/manager.js.map +0 -1
  89. package/dist/resources/index.d.ts +0 -6
  90. package/dist/resources/index.d.ts.map +0 -1
  91. package/dist/resources/index.js +0 -10
  92. package/dist/resources/index.js.map +0 -1
  93. package/dist/resources/loader.d.ts +0 -88
  94. package/dist/resources/loader.d.ts.map +0 -1
  95. package/dist/resources/loader.js +0 -492
  96. package/dist/resources/loader.js.map +0 -1
  97. package/dist/server/http.d.ts +0 -57
  98. package/dist/server/http.d.ts.map +0 -1
  99. package/dist/server/http.js +0 -435
  100. package/dist/server/http.js.map +0 -1
  101. package/dist/server.d.ts +0 -13
  102. package/dist/server.d.ts.map +0 -1
  103. package/dist/server.js +0 -200
  104. package/dist/server.js.map +0 -1
  105. package/dist/session/manager.d.ts +0 -91
  106. package/dist/session/manager.d.ts.map +0 -1
  107. package/dist/session/manager.js +0 -251
  108. package/dist/session/manager.js.map +0 -1
  109. package/dist/telemetry/index.d.ts +0 -3
  110. package/dist/telemetry/index.d.ts.map +0 -1
  111. package/dist/telemetry/index.js +0 -7
  112. package/dist/telemetry/index.js.map +0 -1
  113. package/dist/telemetry/manager.d.ts +0 -151
  114. package/dist/telemetry/manager.d.ts.map +0 -1
  115. package/dist/telemetry/manager.js +0 -367
  116. package/dist/telemetry/manager.js.map +0 -1
  117. package/dist/tools/index.d.ts +0 -12
  118. package/dist/tools/index.d.ts.map +0 -1
  119. package/dist/tools/index.js +0 -28
  120. package/dist/tools/index.js.map +0 -1
  121. package/dist/tools/manage-subscription.d.ts +0 -47
  122. package/dist/tools/manage-subscription.d.ts.map +0 -1
  123. package/dist/tools/manage-subscription.js +0 -314
  124. package/dist/tools/manage-subscription.js.map +0 -1
  125. package/dist/tools/registry.d.ts +0 -40
  126. package/dist/tools/registry.d.ts.map +0 -1
  127. package/dist/tools/registry.js +0 -85
  128. package/dist/tools/registry.js.map +0 -1
  129. package/dist/tools/search-resources.d.ts +0 -35
  130. package/dist/tools/search-resources.d.ts.map +0 -1
  131. package/dist/tools/search-resources.js +0 -159
  132. package/dist/tools/search-resources.js.map +0 -1
  133. package/dist/tools/sync-resources.d.ts +0 -54
  134. package/dist/tools/sync-resources.d.ts.map +0 -1
  135. package/dist/tools/sync-resources.js +0 -733
  136. package/dist/tools/sync-resources.js.map +0 -1
  137. package/dist/tools/track-usage.d.ts +0 -63
  138. package/dist/tools/track-usage.d.ts.map +0 -1
  139. package/dist/tools/track-usage.js +0 -90
  140. package/dist/tools/track-usage.js.map +0 -1
  141. package/dist/tools/uninstall-resource.d.ts +0 -30
  142. package/dist/tools/uninstall-resource.d.ts.map +0 -1
  143. package/dist/tools/uninstall-resource.js +0 -174
  144. package/dist/tools/uninstall-resource.js.map +0 -1
  145. package/dist/tools/upload-resource.d.ts +0 -81
  146. package/dist/tools/upload-resource.d.ts.map +0 -1
  147. package/dist/tools/upload-resource.js +0 -393
  148. package/dist/tools/upload-resource.js.map +0 -1
  149. package/dist/transport/sse.d.ts +0 -29
  150. package/dist/transport/sse.d.ts.map +0 -1
  151. package/dist/transport/sse.js +0 -271
  152. package/dist/transport/sse.js.map +0 -1
  153. package/dist/types/errors.d.ts +0 -60
  154. package/dist/types/errors.d.ts.map +0 -1
  155. package/dist/types/errors.js +0 -112
  156. package/dist/types/errors.js.map +0 -1
  157. package/dist/types/index.d.ts +0 -7
  158. package/dist/types/index.d.ts.map +0 -1
  159. package/dist/types/index.js +0 -23
  160. package/dist/types/index.js.map +0 -1
  161. package/dist/types/mcp.d.ts +0 -50
  162. package/dist/types/mcp.d.ts.map +0 -1
  163. package/dist/types/mcp.js +0 -6
  164. package/dist/types/mcp.js.map +0 -1
  165. package/dist/types/resources.d.ts +0 -109
  166. package/dist/types/resources.d.ts.map +0 -1
  167. package/dist/types/resources.js +0 -7
  168. package/dist/types/resources.js.map +0 -1
  169. package/dist/types/tools.d.ts +0 -235
  170. package/dist/types/tools.d.ts.map +0 -1
  171. package/dist/types/tools.js +0 -6
  172. package/dist/types/tools.js.map +0 -1
  173. package/dist/utils/cursor-paths.d.ts +0 -84
  174. package/dist/utils/cursor-paths.d.ts.map +0 -1
  175. package/dist/utils/cursor-paths.js +0 -166
  176. package/dist/utils/cursor-paths.js.map +0 -1
  177. package/dist/utils/log-cleaner.d.ts +0 -18
  178. package/dist/utils/log-cleaner.d.ts.map +0 -1
  179. package/dist/utils/log-cleaner.js +0 -112
  180. package/dist/utils/log-cleaner.js.map +0 -1
  181. package/dist/utils/logger.d.ts +0 -59
  182. package/dist/utils/logger.d.ts.map +0 -1
  183. package/dist/utils/logger.js +0 -292
  184. package/dist/utils/logger.js.map +0 -1
  185. package/dist/utils/validation.d.ts +0 -58
  186. package/dist/utils/validation.d.ts.map +0 -1
  187. package/dist/utils/validation.js +0 -214
  188. package/dist/utils/validation.js.map +0 -1
  189. package/src/api/cached-client.ts +0 -144
  190. package/src/api/client.ts +0 -697
  191. package/src/auth/index.ts +0 -11
  192. package/src/auth/middleware.ts +0 -244
  193. package/src/auth/permissions.ts +0 -323
  194. package/src/auth/token-validator.ts +0 -292
  195. package/src/cache/cache-manager.ts +0 -243
  196. package/src/cache/index.ts +0 -6
  197. package/src/cache/redis-client.ts +0 -249
  198. package/src/config/constants.ts +0 -33
  199. package/src/config/index.ts +0 -269
  200. package/src/filesystem/manager.ts +0 -235
  201. package/src/git/multi-source-manager.ts +0 -654
  202. package/src/git/operations.ts +0 -93
  203. package/src/index.ts +0 -157
  204. package/src/monitoring/health.ts +0 -132
  205. package/src/prompts/cache.ts +0 -140
  206. package/src/prompts/generator.ts +0 -143
  207. package/src/prompts/index.ts +0 -20
  208. package/src/prompts/manager.ts +0 -613
  209. package/src/resources/index.ts +0 -13
  210. package/src/resources/loader.ts +0 -563
  211. package/src/server/http.ts +0 -549
  212. package/src/server.ts +0 -204
  213. package/src/session/manager.ts +0 -296
  214. package/src/telemetry/index.ts +0 -10
  215. package/src/telemetry/manager.ts +0 -419
  216. package/src/tools/index.ts +0 -12
  217. package/src/tools/manage-subscription.ts +0 -385
  218. package/src/tools/registry.ts +0 -97
  219. package/src/tools/search-resources.ts +0 -185
  220. package/src/tools/sync-resources.ts +0 -827
  221. package/src/tools/track-usage.ts +0 -113
  222. package/src/tools/uninstall-resource.ts +0 -199
  223. package/src/tools/upload-resource.ts +0 -431
  224. package/src/transport/sse.ts +0 -308
  225. package/src/types/errors.ts +0 -146
  226. package/src/types/index.ts +0 -7
  227. package/src/types/mcp.ts +0 -61
  228. package/src/types/resources.ts +0 -141
  229. package/src/types/tools.ts +0 -284
  230. package/src/utils/cursor-paths.ts +0 -135
  231. package/src/utils/log-cleaner.ts +0 -92
  232. package/src/utils/logger.ts +0 -333
  233. package/src/utils/validation.ts +0 -262
@@ -1,577 +0,0 @@
1
- "use strict";
2
- /**
3
- * Multi-Source Git Manager
4
- * Manages multiple AI Resources Git repositories efficiently
5
- */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
- Object.defineProperty(o, "default", { enumerable: true, value: v });
19
- }) : function(o, v) {
20
- o["default"] = v;
21
- });
22
- var __importStar = (this && this.__importStar) || (function () {
23
- var ownKeys = function(o) {
24
- ownKeys = Object.getOwnPropertyNames || function (o) {
25
- var ar = [];
26
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
- return ar;
28
- };
29
- return ownKeys(o);
30
- };
31
- return function (mod) {
32
- if (mod && mod.__esModule) return mod;
33
- var result = {};
34
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
- __setModuleDefault(result, mod);
36
- return result;
37
- };
38
- })();
39
- var __importDefault = (this && this.__importDefault) || function (mod) {
40
- return (mod && mod.__esModule) ? mod : { "default": mod };
41
- };
42
- Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.multiSourceGitManager = void 0;
44
- const fs = __importStar(require("fs/promises"));
45
- const path = __importStar(require("path"));
46
- const simple_git_1 = __importDefault(require("simple-git"));
47
- const logger_1 = require("../utils/logger");
48
- const errors_1 = require("../types/errors");
49
- class MultiSourceGitManager {
50
- configPath;
51
- baseDir;
52
- constructor(baseDir) {
53
- this.baseDir = baseDir;
54
- this.configPath = path.join(baseDir, 'ai-resources-config.json');
55
- }
56
- /**
57
- * Load AI Resources configuration
58
- */
59
- async loadConfig() {
60
- try {
61
- const configContent = await fs.readFile(this.configPath, 'utf-8');
62
- return JSON.parse(configContent);
63
- }
64
- catch (error) {
65
- throw new Error(`Failed to load AI Resources config: ${error instanceof Error ? error.message : String(error)}`);
66
- }
67
- }
68
- /**
69
- * Get all enabled sources (including default)
70
- */
71
- async getEnabledSources() {
72
- const config = await this.loadConfig();
73
- const sources = [];
74
- if (config.default_source.enabled) {
75
- sources.push(config.default_source);
76
- }
77
- if (config.extended_sources) {
78
- sources.push(...config.extended_sources.filter(s => s.enabled));
79
- }
80
- return sources;
81
- }
82
- /**
83
- * Check if a Git repository exists at the given path
84
- */
85
- async repositoryExists(repoPath) {
86
- try {
87
- const gitDir = path.join(repoPath, '.git');
88
- const stats = await fs.stat(gitDir);
89
- return stats.isDirectory();
90
- }
91
- catch {
92
- return false;
93
- }
94
- }
95
- /**
96
- * Get Git repository URL from existing repo
97
- */
98
- async getRepoUrl(repoPath) {
99
- try {
100
- const git = (0, simple_git_1.default)(repoPath);
101
- const remotes = await git.getRemotes(true);
102
- const origin = remotes.find(r => r.name === 'origin');
103
- return origin?.refs.fetch || null;
104
- }
105
- catch {
106
- return null;
107
- }
108
- }
109
- /**
110
- * Clone a Git repository
111
- */
112
- async cloneRepository(repoUrl, targetPath, branch = 'main') {
113
- try {
114
- logger_1.logger.info({ repoUrl, targetPath, branch }, 'Cloning Git repository...');
115
- // Ensure parent directory exists
116
- const parentDir = path.dirname(targetPath);
117
- await fs.mkdir(parentDir, { recursive: true });
118
- const git = (0, simple_git_1.default)();
119
- // Clone with --single-branch to limit downloaded history to the target
120
- // branch only, keeping the clone fast without creating a shallow repo
121
- // (shallow repos cause "no merge base" errors on subsequent fetches).
122
- await git.clone(repoUrl, targetPath, [
123
- '--branch', branch,
124
- '--single-branch',
125
- ]);
126
- logger_1.logger.info({ repoUrl, targetPath }, 'Repository cloned successfully');
127
- }
128
- catch (error) {
129
- throw (0, errors_1.createGitError)('clone', error, repoUrl);
130
- }
131
- }
132
- /**
133
- * Pull latest changes using fetch + fast-forward merge.
134
- *
135
- * Deliberately avoids --depth=1 on fetch: shallow fetches truncate local
136
- * history, causing "no merge base" divergence errors on subsequent pulls.
137
- */
138
- async pullRepository(repoPath, branch = 'main') {
139
- try {
140
- const git = (0, simple_git_1.default)(repoPath);
141
- // ── Step 1: read local HEAD commit before fetch ──────────────────────
142
- let localHead = '<unknown>';
143
- try {
144
- localHead = (await git.revparse(['HEAD'])).trim();
145
- }
146
- catch (e) {
147
- logger_1.logger.warn({ repoPath, error: e.message }, 'git pull: failed to read local HEAD');
148
- }
149
- // ── Step 2: check current remotes ────────────────────────────────────
150
- let remotes = [];
151
- try {
152
- remotes = await git.getRemotes(true);
153
- }
154
- catch (e) {
155
- logger_1.logger.warn({ repoPath, error: e.message }, 'git pull: failed to list remotes');
156
- }
157
- logger_1.logger.info({
158
- repoPath,
159
- branch,
160
- localHead,
161
- remotes: remotes.map((r) => ({ name: r.name, fetch: r.refs.fetch })),
162
- }, 'git pull: starting — reading local state');
163
- // ── Step 3: detect shallow repo ──────────────────────────────────────
164
- let isShallow = false;
165
- try {
166
- isShallow = (await git.raw(['rev-parse', '--is-shallow-repository'])).trim() === 'true';
167
- }
168
- catch (e) {
169
- logger_1.logger.warn({ repoPath, error: e.message }, 'git pull: failed to check shallow status — assuming not shallow');
170
- }
171
- logger_1.logger.info({ repoPath, isShallow }, 'git pull: shallow-repository check complete');
172
- // ── Step 4: fetch ─────────────────────────────────────────────────────
173
- if (isShallow) {
174
- logger_1.logger.info({ repoPath, branch }, 'git pull: shallow repo detected — running fetch --unshallow');
175
- try {
176
- await git.fetch(['--unshallow', 'origin', branch]);
177
- logger_1.logger.info({ repoPath, branch }, 'git pull: fetch --unshallow succeeded');
178
- }
179
- catch (fetchErr) {
180
- logger_1.logger.error({ repoPath, branch, error: fetchErr.message }, 'git pull: fetch --unshallow FAILED');
181
- throw fetchErr;
182
- }
183
- }
184
- else {
185
- logger_1.logger.info({ repoPath, branch }, 'git pull: running fetch origin');
186
- try {
187
- await git.fetch(['origin', branch]);
188
- logger_1.logger.info({ repoPath, branch }, 'git pull: fetch origin succeeded');
189
- }
190
- catch (fetchErr) {
191
- logger_1.logger.error({ repoPath, branch, error: fetchErr.message }, 'git pull: fetch origin FAILED');
192
- throw fetchErr;
193
- }
194
- }
195
- // ── Step 5: read remote HEAD after fetch ─────────────────────────────
196
- const remoteBranch = `origin/${branch}`;
197
- let remoteHead = '<unknown>';
198
- try {
199
- remoteHead = (await git.revparse([remoteBranch])).trim();
200
- }
201
- catch (e) {
202
- logger_1.logger.warn({ repoPath, remoteBranch, error: e.message }, 'git pull: failed to read remote HEAD after fetch');
203
- }
204
- logger_1.logger.info({ repoPath, localHead, remoteHead, remoteBranch }, 'git pull: comparing local HEAD vs remote HEAD');
205
- // ── Step 6: diff to detect actual file changes ────────────────────────
206
- let diffSummary = { files: [], insertions: 0, deletions: 0 };
207
- try {
208
- diffSummary = await git.diffSummary([`HEAD...${remoteBranch}`]);
209
- }
210
- catch (e) {
211
- logger_1.logger.warn({ repoPath, remoteBranch, error: e.message }, 'git pull: diffSummary failed — assuming no changes');
212
- }
213
- const hasChanges = diffSummary.files.length > 0;
214
- logger_1.logger.info({
215
- repoPath,
216
- branch,
217
- remoteBranch,
218
- hasChanges,
219
- filesChanged: diffSummary.files.length,
220
- changedFiles: diffSummary.files.map((f) => f.file),
221
- insertions: diffSummary.insertions,
222
- deletions: diffSummary.deletions,
223
- }, hasChanges ? 'git pull: diff found changes — will merge' : 'git pull: repository is up-to-date');
224
- if (!hasChanges) {
225
- return { hasChanges: false, filesChanged: 0 };
226
- }
227
- // ── Step 7: fast-forward merge ────────────────────────────────────────
228
- logger_1.logger.info({ repoPath, remoteBranch, filesChanged: diffSummary.files.length }, 'git pull: running merge --ff-only');
229
- try {
230
- await git.merge([remoteBranch, '--ff-only']);
231
- }
232
- catch (mergeErr) {
233
- logger_1.logger.error({ repoPath, remoteBranch, error: mergeErr.message }, 'git pull: merge --ff-only FAILED');
234
- throw mergeErr;
235
- }
236
- // ── Step 8: read new HEAD after merge ────────────────────────────────
237
- let newHead = '<unknown>';
238
- try {
239
- newHead = (await git.revparse(['HEAD'])).trim();
240
- }
241
- catch { /* non-critical */ }
242
- logger_1.logger.info({
243
- repoPath,
244
- branch,
245
- prevHead: localHead,
246
- newHead,
247
- filesChanged: diffSummary.files.length,
248
- insertions: diffSummary.insertions,
249
- deletions: diffSummary.deletions,
250
- }, 'git pull: repository updated successfully');
251
- return { hasChanges: true, filesChanged: diffSummary.files.length };
252
- }
253
- catch (error) {
254
- throw (0, errors_1.createGitError)('pull', error, repoPath);
255
- }
256
- }
257
- /**
258
- * Sync a single source repository
259
- */
260
- async syncSource(source) {
261
- const startTime = Date.now();
262
- const sourcePath = path.join(this.baseDir, source.path);
263
- const branch = source.git_branch || 'main';
264
- logger_1.logger.info({
265
- source: source.name,
266
- path: sourcePath,
267
- priority: source.priority,
268
- git_url: source.git_url ?? '(not configured)',
269
- branch,
270
- }, 'Syncing AI Resources source...');
271
- try {
272
- const exists = await this.repositoryExists(sourcePath);
273
- logger_1.logger.info({
274
- source: source.name,
275
- sourcePath,
276
- repoExists: exists,
277
- git_url: source.git_url ?? null,
278
- branch,
279
- }, 'syncSource: repository existence check complete');
280
- if (!exists) {
281
- if (!source.git_url) {
282
- // No git_url means the directory is Docker-mounted or manually placed —
283
- // files should already be present on disk. Skip clone and let
284
- // readResourceFiles serve them directly.
285
- logger_1.logger.warn({
286
- source: source.name,
287
- sourcePath,
288
- reason: 'git_url not configured in ai-resources-config.json',
289
- hint: 'If the directory is Docker-mounted, git pull must be done manually or configured with a git_url.',
290
- }, 'Source has no git_url configured, skipping clone');
291
- return {
292
- source: source.name,
293
- action: 'skipped',
294
- changes: 0,
295
- duration: Date.now() - startTime,
296
- };
297
- }
298
- logger_1.logger.info({ source: source.name, sourcePath, git_url: source.git_url, branch }, 'Repository does not exist, cloning...');
299
- await this.cloneRepository(source.git_url, sourcePath, branch);
300
- logger_1.logger.info({ source: source.name, sourcePath, branch }, 'syncSource: clone succeeded');
301
- return {
302
- source: source.name,
303
- action: 'cloned',
304
- changes: -1,
305
- duration: Date.now() - startTime,
306
- };
307
- }
308
- else {
309
- // Repository exists — check if it has a remote we can pull from.
310
- if (!source.git_url) {
311
- // No git_url: Docker-mounted or manual directory — cannot pull.
312
- // Log clearly so operators know why git pull is not happening.
313
- const existingRemote = await this.getRepoUrl(sourcePath);
314
- logger_1.logger.warn({
315
- source: source.name,
316
- sourcePath,
317
- existingRemoteUrl: existingRemote ?? '(none)',
318
- reason: 'git_url not configured in ai-resources-config.json',
319
- hint: 'Add a git_url to ai-resources-config.json to enable automatic git pull, or pull manually.',
320
- }, 'syncSource: repository exists but has no git_url — skipping pull');
321
- return {
322
- source: source.name,
323
- action: 'skipped',
324
- changes: 0,
325
- duration: Date.now() - startTime,
326
- };
327
- }
328
- logger_1.logger.info({ source: source.name, sourcePath, git_url: source.git_url, branch }, 'Repository exists, pulling latest changes...');
329
- const { hasChanges, filesChanged } = await this.pullRepository(sourcePath, branch);
330
- logger_1.logger.info({
331
- source: source.name,
332
- sourcePath,
333
- branch,
334
- action: hasChanges ? 'pulled' : 'up-to-date',
335
- filesChanged,
336
- duration: Date.now() - startTime,
337
- }, 'syncSource: pull complete');
338
- return {
339
- source: source.name,
340
- action: hasChanges ? 'pulled' : 'up-to-date',
341
- changes: filesChanged,
342
- duration: Date.now() - startTime,
343
- };
344
- }
345
- }
346
- catch (error) {
347
- logger_1.logger.error({
348
- source: source.name,
349
- sourcePath,
350
- git_url: source.git_url ?? null,
351
- branch,
352
- error: error instanceof Error ? error.message : String(error),
353
- stack: error instanceof Error ? error.stack : undefined,
354
- }, 'Failed to sync source');
355
- throw error;
356
- }
357
- }
358
- /**
359
- * Sync all enabled sources
360
- */
361
- async syncAllSources() {
362
- logger_1.logger.info('Starting multi-source sync...');
363
- const sources = await this.getEnabledSources();
364
- logger_1.logger.info({
365
- totalSources: sources.length,
366
- sourceNames: sources.map(s => s.name)
367
- }, 'Found enabled sources');
368
- const results = [];
369
- for (const source of sources) {
370
- try {
371
- const result = await this.syncSource(source);
372
- results.push(result);
373
- }
374
- catch (error) {
375
- logger_1.logger.error({
376
- source: source.name,
377
- error: error instanceof Error ? error.message : String(error)
378
- }, 'Failed to sync source, continuing with next...');
379
- results.push({
380
- source: source.name,
381
- action: 'skipped',
382
- changes: 0,
383
- duration: 0
384
- });
385
- }
386
- }
387
- logger_1.logger.info({
388
- results,
389
- totalSources: results.length,
390
- cloned: results.filter(r => r.action === 'cloned').length,
391
- pulled: results.filter(r => r.action === 'pulled').length,
392
- upToDate: results.filter(r => r.action === 'up-to-date').length
393
- }, 'Multi-source sync completed');
394
- return results;
395
- }
396
- /**
397
- * Read the files for a named Command or Skill resource from the local git
398
- * checkout. Used when the CSP API download returns an empty `files` array
399
- * (which is expected for Command/Skill resources in MCP Prompt mode — the
400
- * API only stores metadata; actual file content lives in the git repo).
401
- *
402
- * Searches all enabled sources in priority order and returns the first match.
403
- *
404
- * @param resourceName The resource name as returned by the subscriptions API.
405
- * @param resourceType 'command' | 'skill'
406
- * @returns Array of { path, content } file entries, or [] when not found.
407
- */
408
- async readResourceFiles(resourceName, resourceType) {
409
- let sources;
410
- try {
411
- sources = await this.getEnabledSources();
412
- }
413
- catch (configErr) {
414
- logger_1.logger.warn({
415
- resourceName,
416
- resourceType,
417
- aiResourcesBase: this.baseDir,
418
- error: configErr.message,
419
- }, 'readResourceFiles: failed to load ai-resources-config.json — returning empty. ' +
420
- 'Set AI_RESOURCES_PATH env var to the directory containing ai-resources-config.json.');
421
- return [];
422
- }
423
- // Sort by priority descending so higher-priority sources win.
424
- sources.sort((a, b) => b.priority - a.priority);
425
- // Map singular type names to the plural directory keys used in config.
426
- const typeToDirKey = {
427
- command: 'commands',
428
- commands: 'commands',
429
- skill: 'skills',
430
- skills: 'skills',
431
- rule: 'rules',
432
- rules: 'rules',
433
- mcp: 'mcp',
434
- };
435
- const typeDir = typeToDirKey[resourceType] ?? 'skills';
436
- logger_1.logger.info({
437
- resourceName,
438
- resourceType,
439
- resolvedDirKey: typeDir,
440
- sourceCount: sources.length,
441
- sourceNames: sources.map((s) => s.name),
442
- }, 'readResourceFiles: start — searching git sources for resource');
443
- for (const source of sources) {
444
- const sourcePath = path.join(this.baseDir, source.path);
445
- const resourcesSubDir = source.resources[typeDir];
446
- const resourceDir = path.join(sourcePath, resourcesSubDir, resourceName);
447
- const resourceFile = path.join(sourcePath, resourcesSubDir, `${resourceName}.md`);
448
- logger_1.logger.info({
449
- source: source.name,
450
- resourceName,
451
- resourceType,
452
- tryDirPath: resourceDir,
453
- tryFilePath: resourceFile,
454
- }, 'readResourceFiles: trying source');
455
- // Try directory-based layout first (e.g. rules/<name>/ or mcp/<name>/)
456
- try {
457
- const stat = await fs.stat(resourceDir);
458
- if (stat.isDirectory()) {
459
- const entries = await fs.readdir(resourceDir);
460
- // For mcp resources also include mcp-config.json (which is the key
461
- // config file and may be the only file present in the directory).
462
- const relevantFiles = entries.filter((f) => f.endsWith('.md') || f.endsWith('.mdc') ||
463
- (resourceType === 'mcp' && f === 'mcp-config.json'));
464
- if (relevantFiles.length > 0) {
465
- const results = [];
466
- for (const f of relevantFiles) {
467
- const filePath = path.join(resourceDir, f);
468
- const content = await fs.readFile(filePath, 'utf-8');
469
- results.push({ path: f, content });
470
- }
471
- logger_1.logger.info({
472
- source: source.name,
473
- resourceName,
474
- resourceType,
475
- dirPath: resourceDir,
476
- fileCount: results.length,
477
- files: results.map((r) => r.path),
478
- }, 'readResourceFiles: found files in directory layout');
479
- return results;
480
- }
481
- logger_1.logger.info({ source: source.name, resourceName, resourceType, dirPath: resourceDir }, 'readResourceFiles: directory exists but contains no relevant files — trying flat file');
482
- }
483
- }
484
- catch { /* not a directory or doesn't exist — try flat file */ }
485
- // Try flat file layout (e.g. rules/<name>.mdc or rules/<name>.md)
486
- // Also try .mdc extension for rule resources.
487
- const mdcFile = path.join(sourcePath, resourcesSubDir, `${resourceName}.mdc`);
488
- for (const [filePath, ext] of [[resourceFile, '.md'], [mdcFile, '.mdc']]) {
489
- try {
490
- const content = await fs.readFile(filePath, 'utf-8');
491
- logger_1.logger.info({
492
- source: source.name,
493
- resourceName,
494
- resourceType,
495
- filePath,
496
- ext,
497
- contentLength: content.length,
498
- }, 'readResourceFiles: found flat file');
499
- return [{ path: `${resourceName}${ext}`, content }];
500
- }
501
- catch { /* not found — try next extension or source */ }
502
- }
503
- logger_1.logger.info({ source: source.name, resourceName, resourceType }, 'readResourceFiles: resource not found in this source — trying next');
504
- }
505
- logger_1.logger.warn({ resourceName, resourceType, resolvedDirKey: typeDir, sourceCount: sources.length }, 'readResourceFiles: resource not found in any git source');
506
- return [];
507
- }
508
- /**
509
- * Check status of all sources without pulling
510
- */
511
- async checkAllSources() {
512
- const sources = await this.getEnabledSources();
513
- const statuses = [];
514
- for (const source of sources) {
515
- const sourcePath = path.join(this.baseDir, source.path);
516
- const exists = await this.repositoryExists(sourcePath);
517
- let repoUrl = null;
518
- if (exists) {
519
- repoUrl = await this.getRepoUrl(sourcePath);
520
- }
521
- statuses.push({
522
- source: source.name,
523
- exists,
524
- hasRemote: !!repoUrl,
525
- repoUrl
526
- });
527
- }
528
- return statuses;
529
- }
530
- }
531
- // Resolve the AI-Resources base directory.
532
- //
533
- // Resolution order (first existing path wins):
534
- // 1. AI_RESOURCES_PATH env var (explicit override for production deployments)
535
- // 2. __dirname-relative path: dist/git/ → ../../AI-Resources
536
- // Works when the package is installed as an npm package and run from its
537
- // own directory (the common production case after `npm install -g`).
538
- // 3. process.cwd()-relative path: ../AI-Resources
539
- // Works in local development where cwd is SourceCode/.
540
- //
541
- // Using __dirname (compiled file location) instead of process.cwd() makes the
542
- // path robust to being started from any working directory on the server.
543
- function resolveAiResourcesBase() {
544
- if (process.env.AI_RESOURCES_PATH) {
545
- const explicit = path.resolve(process.env.AI_RESOURCES_PATH);
546
- logger_1.logger.info({ aiResourcesBase: explicit }, 'AI-Resources base resolved from AI_RESOURCES_PATH env');
547
- return explicit;
548
- }
549
- // Probe candidate locations in priority order:
550
- //
551
- // 1. cwd/AI-Resources — server deployed with cwd = project root (e.g. /app)
552
- // and AI-Resources/ is a sibling of dist/
553
- // 2. cwd/../AI-Resources — local dev: cwd = SourceCode/, AI-Resources/ is one level up
554
- // 3. __dirname/../../AI-Resources — npm global install: dist/git/ → ../../AI-Resources
555
- // (resolves to same as #1 when installed as a local package from project root)
556
- const candidates = [
557
- path.resolve(process.cwd(), 'AI-Resources'), // production: cwd is package root
558
- path.resolve(process.cwd(), '../AI-Resources'), // local dev: cwd is SourceCode/
559
- path.resolve(__dirname, '../../AI-Resources'), // npm global install fallback
560
- ];
561
- for (const candidate of candidates) {
562
- try {
563
- const configFile = path.join(candidate, 'ai-resources-config.json');
564
- require('fs').accessSync(configFile);
565
- logger_1.logger.info({ aiResourcesBase: candidate }, 'AI-Resources base resolved');
566
- return candidate;
567
- }
568
- catch { /* try next */ }
569
- }
570
- // Nothing found — fall back to first candidate and let later errors surface clearly.
571
- logger_1.logger.warn({ triedPaths: candidates }, 'AI-Resources config not found in any candidate path — using cwd/AI-Resources as fallback. ' +
572
- 'Set AI_RESOURCES_PATH env var to override.');
573
- return candidates[0];
574
- }
575
- const AI_RESOURCES_BASE = resolveAiResourcesBase();
576
- exports.multiSourceGitManager = new MultiSourceGitManager(AI_RESOURCES_BASE);
577
- //# sourceMappingURL=multi-source-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-source-manager.js","sourceRoot":"","sources":["../../src/git/multi-source-manager.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Git Operations Module
3
- * Per-repo git helpers used by upload_resource to target a specific source repo.
4
- * All repo URLs and branches come from AI-Resources/ai-resources-config.json —
5
- * not from environment variables.
6
- */
7
- declare class GitOperations {
8
- /**
9
- * Check whether a git repository exists at an arbitrary local path
10
- */
11
- repositoryExistsAt(repoPath: string): Promise<boolean>;
12
- /**
13
- * Get current branch of an arbitrary local repo
14
- */
15
- getCurrentBranchAt(repoPath: string): Promise<string>;
16
- /**
17
- * Commit and push to a specific repo / remote url / branch.
18
- * Creates a unique remote testing branch and returns a PR URL.
19
- */
20
- commitAndPushRepo(repoPath: string, remoteUrl: string, baseBranch: string, message: string, files?: string[]): Promise<{
21
- commitHash: string;
22
- prUrl?: string;
23
- }>;
24
- }
25
- export declare const gitOperations: GitOperations;
26
- export {};
27
- //# sourceMappingURL=operations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/git/operations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,cAAM,aAAa;IAGjB;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5D;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU3D;;;OAGG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAuCnD;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}