@o3r/mcp 13.3.0-prerelease.1 → 13.3.0-prerelease.3
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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@o3r/mcp",
|
|
3
|
-
"version": "13.3.0-prerelease.
|
|
3
|
+
"version": "13.3.0-prerelease.3",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -39,17 +39,17 @@
|
|
|
39
39
|
"@nx/eslint-plugin": "~21.6.0",
|
|
40
40
|
"@nx/jest": "~21.6.0",
|
|
41
41
|
"@nx/js": "~21.6.0",
|
|
42
|
-
"@o3r/build-helpers": "^13.3.0-prerelease.
|
|
43
|
-
"@o3r/eslint-config": "^13.3.0-prerelease.
|
|
44
|
-
"@o3r/eslint-plugin": "^13.3.0-prerelease.
|
|
45
|
-
"@o3r/test-helpers": "^13.3.0-prerelease.
|
|
46
|
-
"@stylistic/eslint-plugin": "~5.
|
|
42
|
+
"@o3r/build-helpers": "^13.3.0-prerelease.3",
|
|
43
|
+
"@o3r/eslint-config": "^13.3.0-prerelease.3",
|
|
44
|
+
"@o3r/eslint-plugin": "^13.3.0-prerelease.3",
|
|
45
|
+
"@o3r/test-helpers": "^13.3.0-prerelease.3",
|
|
46
|
+
"@stylistic/eslint-plugin": "~5.4.0",
|
|
47
47
|
"@types/jest": "~29.5.2",
|
|
48
48
|
"@types/node": "~22.18.0",
|
|
49
|
-
"@typescript-eslint/parser": "~8.
|
|
49
|
+
"@typescript-eslint/parser": "~8.45.0",
|
|
50
50
|
"angular-eslint": "~20.3.0",
|
|
51
51
|
"cpy-cli": "^6.0.0",
|
|
52
|
-
"eslint": "~9.
|
|
52
|
+
"eslint": "~9.37.0",
|
|
53
53
|
"eslint-import-resolver-node": "~0.3.9",
|
|
54
54
|
"eslint-import-resolver-typescript": "~4.4.0",
|
|
55
55
|
"eslint-plugin-import": "~2.32.0",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"ts-node": "~10.9.2",
|
|
73
73
|
"type-fest": "^4.30.1",
|
|
74
74
|
"typescript": "~5.9.2",
|
|
75
|
-
"typescript-eslint": "~8.
|
|
75
|
+
"typescript-eslint": "~8.45.0",
|
|
76
76
|
"zone.js": "~0.15.0"
|
|
77
77
|
},
|
|
78
78
|
"engines": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-repositories-using-otter.d.ts","sourceRoot":"","sources":["../../../src/tools/find-repositories-using-otter.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,SAAS,EACV,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"find-repositories-using-otter.d.ts","sourceRoot":"","sources":["../../../src/tools/find-repositories-using-otter.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,SAAS,EACV,MAAM,yCAAyC,CAAC;AAgJjD;;;GAGG;AACH,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,SAAS,QAsCtE"}
|
|
@@ -6,20 +6,34 @@ const promises_1 = require("node:fs/promises");
|
|
|
6
6
|
const node_path_1 = require("node:path");
|
|
7
7
|
const rest_1 = require("@octokit/rest");
|
|
8
8
|
const logger_1 = require("../utils/logger");
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
const OTTER_SCOPES = [
|
|
10
|
+
'o3r',
|
|
11
|
+
'ama-styling',
|
|
12
|
+
'ama-mfe',
|
|
13
|
+
'ama-sdk'
|
|
14
|
+
];
|
|
15
|
+
async function listRepos(octokit) {
|
|
16
|
+
// We use several requests and not only one with OR
|
|
17
|
+
// because GitHub search API has some limitations in the query length and complexity
|
|
18
|
+
// Note: We can do only 10 searches per minute,
|
|
19
|
+
// so we should found another solution if we have more than 10 scopes to look for.
|
|
20
|
+
const search = (await Promise.all(OTTER_SCOPES
|
|
21
|
+
.map(async (scope) => {
|
|
22
|
+
const repos = (await octokit.paginate(octokit.search.code, { q: `@${scope}/ filename:package.json`, per_page: 100 }))
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention -- Naming convention from GitHub API
|
|
24
|
+
.map(({ repository: { name, full_name, fork, archived, default_branch } }) => ({ name, full_name, fork, archived, default_branch }))
|
|
25
|
+
.filter((repo) => !repo.archived && !repo.fork);
|
|
26
|
+
logger_1.logger.info(`Found ${repos.length} repositories with references to @${scope} in package.json`);
|
|
27
|
+
return repos;
|
|
28
|
+
}))).flat();
|
|
29
|
+
const repositories = Array.from(new Map((search)
|
|
30
|
+
.map(({ fork, archived, ...repo }) => [repo.full_name, repo])).values());
|
|
31
|
+
logger_1.logger.info(`Found ${repositories.length} repositories with references to Otter`);
|
|
32
|
+
return repositories;
|
|
18
33
|
}
|
|
19
34
|
function findPackageJsonFiles(octokit) {
|
|
20
35
|
return async (repository) => {
|
|
21
|
-
const owner =
|
|
22
|
-
const repo = repository.name;
|
|
36
|
+
const [owner, repo] = repository.full_name.split('/');
|
|
23
37
|
const { data: { commit: { sha } } } = await octokit.repos.getBranch({
|
|
24
38
|
owner,
|
|
25
39
|
repo,
|
|
@@ -33,17 +47,16 @@ function findPackageJsonFiles(octokit) {
|
|
|
33
47
|
return tree.filter((t) => t.type === 'blob' && t.path.endsWith('package.json'));
|
|
34
48
|
};
|
|
35
49
|
}
|
|
36
|
-
const O3R_SCOPE_REGEX =
|
|
50
|
+
const O3R_SCOPE_REGEX = new RegExp(`^@(?:${OTTER_SCOPES.join('|')})/`, 'gm');
|
|
37
51
|
function dependsOnOtter(octokit) {
|
|
38
52
|
return async (repository, packageJsonPath) => {
|
|
39
|
-
const owner =
|
|
40
|
-
const repo = repository.name;
|
|
53
|
+
const [owner, repo] = repository.full_name.split('/');
|
|
41
54
|
const { data } = await octokit.repos.getContent({
|
|
42
55
|
owner,
|
|
43
56
|
repo,
|
|
44
57
|
path: packageJsonPath
|
|
45
58
|
});
|
|
46
|
-
if (Array.isArray(data) || data.type !== 'file') {
|
|
59
|
+
if (Array.isArray(data) || data.type !== 'file' || data.encoding !== 'base64') {
|
|
47
60
|
throw new Error('Unexpected content response structure');
|
|
48
61
|
}
|
|
49
62
|
const content = Buffer.from(data.content, 'base64').toString('utf8');
|
|
@@ -71,7 +84,7 @@ async function findRepositoriesUsingOtter(octokit, reposUsingOtter) {
|
|
|
71
84
|
logger_1.logger.info('No cache file found, starting fresh search for repositories using Otter dependencies.', e);
|
|
72
85
|
}
|
|
73
86
|
}
|
|
74
|
-
const repositories = (await
|
|
87
|
+
const repositories = (await listRepos(octokit)).filter((r) => !cachedRepos[r.full_name]);
|
|
75
88
|
const findPackageJsonFilesInRepo = findPackageJsonFiles(octokit);
|
|
76
89
|
const dependsOnOtterInRepo = dependsOnOtter(octokit);
|
|
77
90
|
await Promise.allSettled(repositories.map(async (repository) => {
|
|
@@ -110,7 +123,7 @@ async function findRepositoriesUsingOtter(octokit, reposUsingOtter) {
|
|
|
110
123
|
catch { }
|
|
111
124
|
cachedRepos[repository.full_name] ||= false;
|
|
112
125
|
}));
|
|
113
|
-
logger_1.logger.info(`Found ${reposUsingOtter.length} repositories using Otter dependencies
|
|
126
|
+
logger_1.logger.info(`Found ${reposUsingOtter.length} repositories using Otter dependencies`);
|
|
114
127
|
if (process.env.O3R_MCP_USE_CACHED_REPOS === 'false') {
|
|
115
128
|
logger_1.logger.info('Not updating cache as O3R_MCP_USE_CACHED_REPOS is set to false');
|
|
116
129
|
}
|
|
@@ -135,10 +148,6 @@ function registerGetRepositoriesUsingOtterTool(server) {
|
|
|
135
148
|
logger_1.logger.error('Missing O3R_MCP_GITHUB_TOKEN environment variable for search_code_example tool');
|
|
136
149
|
return;
|
|
137
150
|
}
|
|
138
|
-
if (!process.env.O3R_MCP_GITHUB_ORG) {
|
|
139
|
-
logger_1.logger.error('Missing O3R_MCP_GITHUB_ORG environment variable');
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
151
|
const octokit = new rest_1.Octokit({ auth: process.env.O3R_MCP_GITHUB_TOKEN });
|
|
143
152
|
let isLookingForRepos = true;
|
|
144
153
|
const reposUsingOtter = [];
|
|
@@ -148,7 +157,7 @@ function registerGetRepositoriesUsingOtterTool(server) {
|
|
|
148
157
|
isLookingForRepos = false;
|
|
149
158
|
server.registerTool('get_repositories_using_otter', {
|
|
150
159
|
title: 'Get repositories using Otter dependencies',
|
|
151
|
-
description:
|
|
160
|
+
description: `List all repositories that use Otter dependencies (${OTTER_SCOPES.map((scope) => `@${scope}`).join(' or ')}) in their package.json files.`,
|
|
152
161
|
annotations: {
|
|
153
162
|
readOnlyHint: true,
|
|
154
163
|
openWorldHint: false
|
|
@@ -159,9 +168,9 @@ function registerGetRepositoriesUsingOtterTool(server) {
|
|
|
159
168
|
type: 'text',
|
|
160
169
|
text: (isLookingForRepos ? 'I did not finish to look for repositories. For the moment:\n' : '')
|
|
161
170
|
+ reposUsingOtter.length
|
|
162
|
-
? `The following repositories
|
|
171
|
+
? `The following repositories use Otter dependencies:\n`
|
|
163
172
|
+ reposUsingOtter.sort().map((repo) => `- ${repo}`).join('\n')
|
|
164
|
-
: `No repositories
|
|
173
|
+
: `No repositories were found to use Otter dependencies.`
|
|
165
174
|
}
|
|
166
175
|
]
|
|
167
176
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-repositories-using-otter.js","sourceRoot":"","sources":["../../../src/tools/find-repositories-using-otter.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"find-repositories-using-otter.js","sourceRoot":"","sources":["../../../src/tools/find-repositories-using-otter.ts"],"names":[],"mappings":"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"}
|