@elliotding/ai-agent-mcp 0.1.25 → 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.
- package/package.json +4 -1
- package/.prompt-cache/cmd-cmd-client-sdk-ai-hub-generate-testcase.md +0 -101
- package/.prompt-cache/cmd-cmd-client-sdk-ai-hub-submit_zct_job.md +0 -158
- package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-conf-status.md +0 -311
- package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-sdk-log.md +0 -64
- package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-zmb-log-errors.md +0 -84
- package/ai-resource-telemetry.json +0 -40
- package/dist/api/cached-client.d.ts +0 -48
- package/dist/api/cached-client.d.ts.map +0 -1
- package/dist/api/cached-client.js +0 -126
- package/dist/api/cached-client.js.map +0 -1
- package/dist/api/client.d.ts +0 -281
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js +0 -371
- package/dist/api/client.js.map +0 -1
- package/dist/auth/index.d.ts +0 -8
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -26
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/middleware.d.ts +0 -36
- package/dist/auth/middleware.d.ts.map +0 -1
- package/dist/auth/middleware.js +0 -194
- package/dist/auth/middleware.js.map +0 -1
- package/dist/auth/permissions.d.ts +0 -60
- package/dist/auth/permissions.d.ts.map +0 -1
- package/dist/auth/permissions.js +0 -262
- package/dist/auth/permissions.js.map +0 -1
- package/dist/auth/token-validator.d.ts +0 -52
- package/dist/auth/token-validator.d.ts.map +0 -1
- package/dist/auth/token-validator.js +0 -215
- package/dist/auth/token-validator.js.map +0 -1
- package/dist/cache/cache-manager.d.ts +0 -49
- package/dist/cache/cache-manager.d.ts.map +0 -1
- package/dist/cache/cache-manager.js +0 -191
- package/dist/cache/cache-manager.js.map +0 -1
- package/dist/cache/index.d.ts +0 -6
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -12
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/redis-client.d.ts +0 -45
- package/dist/cache/redis-client.d.ts.map +0 -1
- package/dist/cache/redis-client.js +0 -210
- package/dist/cache/redis-client.js.map +0 -1
- package/dist/config/constants.d.ts +0 -28
- package/dist/config/constants.d.ts.map +0 -1
- package/dist/config/constants.js +0 -31
- package/dist/config/constants.js.map +0 -1
- package/dist/config/index.d.ts +0 -71
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -190
- package/dist/config/index.js.map +0 -1
- package/dist/filesystem/manager.d.ts +0 -45
- package/dist/filesystem/manager.d.ts.map +0 -1
- package/dist/filesystem/manager.js +0 -246
- package/dist/filesystem/manager.js.map +0 -1
- package/dist/git/multi-source-manager.d.ts +0 -78
- package/dist/git/multi-source-manager.d.ts.map +0 -1
- package/dist/git/multi-source-manager.js +0 -577
- package/dist/git/multi-source-manager.js.map +0 -1
- package/dist/git/operations.d.ts +0 -27
- package/dist/git/operations.d.ts.map +0 -1
- package/dist/git/operations.js +0 -83
- package/dist/git/operations.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -122
- package/dist/index.js.map +0 -1
- package/dist/monitoring/health.d.ts +0 -35
- package/dist/monitoring/health.d.ts.map +0 -1
- package/dist/monitoring/health.js +0 -105
- package/dist/monitoring/health.js.map +0 -1
- package/dist/prompts/cache.d.ts +0 -69
- package/dist/prompts/cache.d.ts.map +0 -1
- package/dist/prompts/cache.js +0 -163
- package/dist/prompts/cache.js.map +0 -1
- package/dist/prompts/generator.d.ts +0 -49
- package/dist/prompts/generator.d.ts.map +0 -1
- package/dist/prompts/generator.js +0 -160
- package/dist/prompts/generator.js.map +0 -1
- package/dist/prompts/index.d.ts +0 -13
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/index.js +0 -24
- package/dist/prompts/index.js.map +0 -1
- package/dist/prompts/manager.d.ts +0 -207
- package/dist/prompts/manager.d.ts.map +0 -1
- package/dist/prompts/manager.js +0 -566
- package/dist/prompts/manager.js.map +0 -1
- package/dist/resources/index.d.ts +0 -6
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/resources/index.js +0 -10
- package/dist/resources/index.js.map +0 -1
- package/dist/resources/loader.d.ts +0 -88
- package/dist/resources/loader.d.ts.map +0 -1
- package/dist/resources/loader.js +0 -492
- package/dist/resources/loader.js.map +0 -1
- package/dist/server/http.d.ts +0 -57
- package/dist/server/http.d.ts.map +0 -1
- package/dist/server/http.js +0 -435
- package/dist/server/http.js.map +0 -1
- package/dist/server.d.ts +0 -13
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -201
- package/dist/server.js.map +0 -1
- package/dist/session/manager.d.ts +0 -91
- package/dist/session/manager.d.ts.map +0 -1
- package/dist/session/manager.js +0 -251
- package/dist/session/manager.js.map +0 -1
- package/dist/telemetry/index.d.ts +0 -3
- package/dist/telemetry/index.d.ts.map +0 -1
- package/dist/telemetry/index.js +0 -7
- package/dist/telemetry/index.js.map +0 -1
- package/dist/telemetry/manager.d.ts +0 -151
- package/dist/telemetry/manager.d.ts.map +0 -1
- package/dist/telemetry/manager.js +0 -367
- package/dist/telemetry/manager.js.map +0 -1
- package/dist/tools/index.d.ts +0 -13
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -29
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/manage-subscription.d.ts +0 -47
- package/dist/tools/manage-subscription.d.ts.map +0 -1
- package/dist/tools/manage-subscription.js +0 -317
- package/dist/tools/manage-subscription.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -40
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -85
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/resolve-prompt-content.d.ts +0 -35
- package/dist/tools/resolve-prompt-content.d.ts.map +0 -1
- package/dist/tools/resolve-prompt-content.js +0 -99
- package/dist/tools/resolve-prompt-content.js.map +0 -1
- package/dist/tools/search-resources.d.ts +0 -35
- package/dist/tools/search-resources.d.ts.map +0 -1
- package/dist/tools/search-resources.js +0 -159
- package/dist/tools/search-resources.js.map +0 -1
- package/dist/tools/sync-resources.d.ts +0 -54
- package/dist/tools/sync-resources.d.ts.map +0 -1
- package/dist/tools/sync-resources.js +0 -735
- package/dist/tools/sync-resources.js.map +0 -1
- package/dist/tools/track-usage.d.ts +0 -63
- package/dist/tools/track-usage.d.ts.map +0 -1
- package/dist/tools/track-usage.js +0 -90
- package/dist/tools/track-usage.js.map +0 -1
- package/dist/tools/uninstall-resource.d.ts +0 -30
- package/dist/tools/uninstall-resource.d.ts.map +0 -1
- package/dist/tools/uninstall-resource.js +0 -174
- package/dist/tools/uninstall-resource.js.map +0 -1
- package/dist/tools/upload-resource.d.ts +0 -81
- package/dist/tools/upload-resource.d.ts.map +0 -1
- package/dist/tools/upload-resource.js +0 -393
- package/dist/tools/upload-resource.js.map +0 -1
- package/dist/transport/sse.d.ts +0 -29
- package/dist/transport/sse.d.ts.map +0 -1
- package/dist/transport/sse.js +0 -271
- package/dist/transport/sse.js.map +0 -1
- package/dist/types/errors.d.ts +0 -60
- package/dist/types/errors.d.ts.map +0 -1
- package/dist/types/errors.js +0 -112
- package/dist/types/errors.js.map +0 -1
- package/dist/types/index.d.ts +0 -7
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -23
- package/dist/types/index.js.map +0 -1
- package/dist/types/mcp.d.ts +0 -50
- package/dist/types/mcp.d.ts.map +0 -1
- package/dist/types/mcp.js +0 -6
- package/dist/types/mcp.js.map +0 -1
- package/dist/types/resources.d.ts +0 -109
- package/dist/types/resources.d.ts.map +0 -1
- package/dist/types/resources.js +0 -7
- package/dist/types/resources.js.map +0 -1
- package/dist/types/tools.d.ts +0 -253
- package/dist/types/tools.d.ts.map +0 -1
- package/dist/types/tools.js +0 -6
- package/dist/types/tools.js.map +0 -1
- package/dist/utils/cursor-paths.d.ts +0 -84
- package/dist/utils/cursor-paths.d.ts.map +0 -1
- package/dist/utils/cursor-paths.js +0 -166
- package/dist/utils/cursor-paths.js.map +0 -1
- package/dist/utils/log-cleaner.d.ts +0 -18
- package/dist/utils/log-cleaner.d.ts.map +0 -1
- package/dist/utils/log-cleaner.js +0 -112
- package/dist/utils/log-cleaner.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -59
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -292
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -58
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -214
- package/dist/utils/validation.js.map +0 -1
- package/src/api/cached-client.ts +0 -144
- package/src/api/client.ts +0 -697
- package/src/auth/index.ts +0 -11
- package/src/auth/middleware.ts +0 -244
- package/src/auth/permissions.ts +0 -323
- package/src/auth/token-validator.ts +0 -292
- package/src/cache/cache-manager.ts +0 -243
- package/src/cache/index.ts +0 -6
- package/src/cache/redis-client.ts +0 -249
- package/src/config/constants.ts +0 -33
- package/src/config/index.ts +0 -269
- package/src/filesystem/manager.ts +0 -235
- package/src/git/multi-source-manager.ts +0 -654
- package/src/git/operations.ts +0 -93
- package/src/index.ts +0 -157
- package/src/monitoring/health.ts +0 -132
- package/src/prompts/cache.ts +0 -140
- package/src/prompts/generator.ts +0 -143
- package/src/prompts/index.ts +0 -20
- package/src/prompts/manager.ts +0 -718
- package/src/resources/index.ts +0 -13
- package/src/resources/loader.ts +0 -563
- package/src/server/http.ts +0 -549
- package/src/server.ts +0 -206
- package/src/session/manager.ts +0 -296
- package/src/telemetry/index.ts +0 -10
- package/src/telemetry/manager.ts +0 -419
- package/src/tools/index.ts +0 -13
- package/src/tools/manage-subscription.ts +0 -388
- package/src/tools/registry.ts +0 -97
- package/src/tools/resolve-prompt-content.ts +0 -113
- package/src/tools/search-resources.ts +0 -185
- package/src/tools/sync-resources.ts +0 -829
- package/src/tools/track-usage.ts +0 -113
- package/src/tools/uninstall-resource.ts +0 -199
- package/src/tools/upload-resource.ts +0 -431
- package/src/transport/sse.ts +0 -308
- package/src/types/errors.ts +0 -146
- package/src/types/index.ts +0 -7
- package/src/types/mcp.ts +0 -61
- package/src/types/resources.ts +0 -141
- package/src/types/tools.ts +0 -305
- package/src/utils/cursor-paths.ts +0 -135
- package/src/utils/log-cleaner.ts +0 -92
- package/src/utils/logger.ts +0 -333
- 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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"}
|
package/dist/git/operations.d.ts
DELETED
|
@@ -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"}
|