@jspm/local-mcp 0.1.0 → 0.1.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/Readme.md +54 -76
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +20 -0
- package/dist/cli.js.map +1 -0
- package/dist/context.d.ts +39 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +254 -0
- package/dist/context.js.map +1 -0
- package/dist/generator-options.d.ts +64 -0
- package/dist/generator-options.d.ts.map +1 -0
- package/dist/generator-options.js +78 -0
- package/dist/generator-options.js.map +1 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -291
- package/dist/index.js.map +1 -1
- package/dist/tools/get-importmap.d.ts +4 -0
- package/dist/tools/get-importmap.d.ts.map +1 -0
- package/dist/tools/get-importmap.js +26 -0
- package/dist/tools/get-importmap.js.map +1 -0
- package/dist/tools/get-status.d.ts +4 -0
- package/dist/tools/get-status.d.ts.map +1 -0
- package/dist/tools/get-status.js +27 -0
- package/dist/tools/get-status.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +33 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/install-package.d.ts +4 -0
- package/dist/tools/install-package.d.ts.map +1 -0
- package/dist/tools/install-package.js +32 -0
- package/dist/tools/install-package.js.map +1 -0
- package/dist/tools/remove-provider-override.d.ts +4 -0
- package/dist/tools/remove-provider-override.d.ts.map +1 -0
- package/dist/tools/remove-provider-override.js +40 -0
- package/dist/tools/remove-provider-override.js.map +1 -0
- package/dist/tools/remove-resolution.d.ts +4 -0
- package/dist/tools/remove-resolution.d.ts.map +1 -0
- package/dist/tools/remove-resolution.js +40 -0
- package/dist/tools/remove-resolution.js.map +1 -0
- package/dist/tools/set-cache.d.ts +4 -0
- package/dist/tools/set-cache.d.ts.map +1 -0
- package/dist/tools/set-cache.js +40 -0
- package/dist/tools/set-cache.js.map +1 -0
- package/dist/tools/set-env.d.ts +4 -0
- package/dist/tools/set-env.d.ts.map +1 -0
- package/dist/tools/set-env.js +41 -0
- package/dist/tools/set-env.js.map +1 -0
- package/dist/tools/set-generator-options.d.ts +4 -0
- package/dist/tools/set-generator-options.d.ts.map +1 -0
- package/dist/tools/set-generator-options.js +43 -0
- package/dist/tools/set-generator-options.js.map +1 -0
- package/dist/tools/set-ignore.d.ts +4 -0
- package/dist/tools/set-ignore.d.ts.map +1 -0
- package/dist/tools/set-ignore.js +38 -0
- package/dist/tools/set-ignore.js.map +1 -0
- package/dist/tools/set-project.d.ts +4 -0
- package/dist/tools/set-project.d.ts.map +1 -0
- package/dist/tools/set-project.js +59 -0
- package/dist/tools/set-project.js.map +1 -0
- package/dist/tools/set-provider.d.ts +4 -0
- package/dist/tools/set-provider.d.ts.map +1 -0
- package/dist/tools/set-provider.js +57 -0
- package/dist/tools/set-provider.js.map +1 -0
- package/dist/tools/set-resolution.d.ts +4 -0
- package/dist/tools/set-resolution.d.ts.map +1 -0
- package/dist/tools/set-resolution.js +43 -0
- package/dist/tools/set-resolution.js.map +1 -0
- package/dist/tools/set-target.d.ts +4 -0
- package/dist/tools/set-target.d.ts.map +1 -0
- package/dist/tools/set-target.js +72 -0
- package/dist/tools/set-target.js.map +1 -0
- package/dist/tools/trace-file.d.ts +4 -0
- package/dist/tools/trace-file.d.ts.map +1 -0
- package/dist/tools/trace-file.js +48 -0
- package/dist/tools/trace-file.js.map +1 -0
- package/dist/tools/uninstall-package.d.ts +4 -0
- package/dist/tools/uninstall-package.d.ts.map +1 -0
- package/dist/tools/uninstall-package.js +32 -0
- package/dist/tools/uninstall-package.js.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +59 -2
- package/dist/utils.js.map +1 -1
- package/package.json +7 -4
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerRemoveProviderOverrideTool(server, context) {
|
|
3
|
+
server.registerTool("remove_provider_override", {
|
|
4
|
+
title: "Remove JSPM provider overrides",
|
|
5
|
+
description: "Removes one or more scoped provider overrides from the active project.",
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
specifiers: z.array(z.string().min(1)),
|
|
8
|
+
reinstall: z
|
|
9
|
+
.boolean()
|
|
10
|
+
.optional()
|
|
11
|
+
.describe("Re-resolve the current top-level imports after removing the overrides. Defaults to true."),
|
|
12
|
+
}),
|
|
13
|
+
}, async ({ specifiers, reinstall = true }) => {
|
|
14
|
+
try {
|
|
15
|
+
context.ensureStateProjectPath();
|
|
16
|
+
await context.applyConfigChange(() => {
|
|
17
|
+
for (const specifier of specifiers) {
|
|
18
|
+
context.removeProviderOverride(specifier);
|
|
19
|
+
}
|
|
20
|
+
}, reinstall);
|
|
21
|
+
return {
|
|
22
|
+
content: [
|
|
23
|
+
{
|
|
24
|
+
type: "text",
|
|
25
|
+
text: [
|
|
26
|
+
`Removed provider overrides for: ${specifiers.join(", ")}`,
|
|
27
|
+
reinstall
|
|
28
|
+
? "Re-resolved the current top-level imports and saved the updated import map target."
|
|
29
|
+
: "Saved the updated import map target without reinstalling top-level imports.",
|
|
30
|
+
].join("\n"),
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
return context.failure(error.message);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=remove-provider-override.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-provider-override.js","sourceRoot":"","sources":["../../src/tools/remove-provider-override.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AAGrB,MAAM,UAAU,kCAAkC,CAChD,MAAiB,EACjB,OAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,wEAAwE;QAC1E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtC,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,0FAA0F,CAC3F;SACJ,CAAC;KACH,EACD,KAAK,EAAE,EAAC,UAAU,EAAE,SAAS,GAAG,IAAI,EAAC,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAEhC,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBACnC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACnC,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAA;gBAC3C,CAAC;YACH,CAAC,EAAE,SAAS,CAAC,CAAA;YAEb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,mCAAmC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BAC1D,SAAS;gCACP,CAAC,CAAC,oFAAoF;gCACtF,CAAC,CAAC,6EAA6E;yBAClF,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;iBACF;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAE,KAAe,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { ProjectContext } from "../context.js";
|
|
3
|
+
export declare function registerRemoveResolutionTool(server: McpServer, context: ProjectContext): void;
|
|
4
|
+
//# sourceMappingURL=remove-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-resolution.d.ts","sourceRoot":"","sources":["../../src/tools/remove-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AAEjE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAA;AAEjD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,QA8CxB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerRemoveResolutionTool(server, context) {
|
|
3
|
+
server.registerTool("remove_resolution", {
|
|
4
|
+
title: "Remove JSPM resolution overrides",
|
|
5
|
+
description: "Removes one or more package resolution overrides from the active project.",
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
specifiers: z.array(z.string().min(1)),
|
|
8
|
+
reinstall: z
|
|
9
|
+
.boolean()
|
|
10
|
+
.optional()
|
|
11
|
+
.describe("Re-resolve the current top-level imports after removing the resolutions. Defaults to true."),
|
|
12
|
+
}),
|
|
13
|
+
}, async ({ specifiers, reinstall = true }) => {
|
|
14
|
+
try {
|
|
15
|
+
context.ensureStateProjectPath();
|
|
16
|
+
await context.applyConfigChange(() => {
|
|
17
|
+
for (const specifier of specifiers) {
|
|
18
|
+
context.removeResolution(specifier);
|
|
19
|
+
}
|
|
20
|
+
}, reinstall);
|
|
21
|
+
return {
|
|
22
|
+
content: [
|
|
23
|
+
{
|
|
24
|
+
type: "text",
|
|
25
|
+
text: [
|
|
26
|
+
`Removed resolution overrides for: ${specifiers.join(", ")}`,
|
|
27
|
+
reinstall
|
|
28
|
+
? "Re-resolved the current top-level imports and saved the updated import map target."
|
|
29
|
+
: "Saved the updated import map target without reinstalling top-level imports.",
|
|
30
|
+
].join("\n"),
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
return context.failure(error.message);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=remove-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-resolution.js","sourceRoot":"","sources":["../../src/tools/remove-resolution.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AAGrB,MAAM,UAAU,4BAA4B,CAC1C,MAAiB,EACjB,OAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,kCAAkC;QACzC,WAAW,EACT,2EAA2E;QAC7E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtC,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,4FAA4F,CAC7F;SACJ,CAAC;KACH,EACD,KAAK,EAAE,EAAC,UAAU,EAAE,SAAS,GAAG,IAAI,EAAC,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAEhC,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBACnC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACnC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;gBACrC,CAAC;YACH,CAAC,EAAE,SAAS,CAAC,CAAA;YAEb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,qCAAqC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BAC5D,SAAS;gCACP,CAAC,CAAC,oFAAoF;gCACtF,CAAC,CAAC,6EAA6E;yBAClF,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;iBACF;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAE,KAAe,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-cache.d.ts","sourceRoot":"","sources":["../../src/tools/set-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AAEjE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAA;AAEjD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,QAgDxB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerSetCacheTool(server, context) {
|
|
3
|
+
server.registerTool("set_cache", {
|
|
4
|
+
title: "Set JSPM cache mode",
|
|
5
|
+
description: "Configure whether JSPM uses the fetch cache, disables it, or runs in offline cache mode.",
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
cache: z
|
|
8
|
+
.union([z.boolean(), z.literal("offline")])
|
|
9
|
+
.describe('Use `true`, `false`, or `"offline"` for JSPM cache behavior.'),
|
|
10
|
+
reinstall: z
|
|
11
|
+
.boolean()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe("Re-resolve the current top-level imports after changing cache mode. Defaults to false."),
|
|
14
|
+
}),
|
|
15
|
+
}, async ({ cache, reinstall = false }) => {
|
|
16
|
+
try {
|
|
17
|
+
context.ensureStateProjectPath();
|
|
18
|
+
await context.applyConfigChange(() => {
|
|
19
|
+
context.setGeneratorOptions({ cache });
|
|
20
|
+
}, reinstall);
|
|
21
|
+
return {
|
|
22
|
+
content: [
|
|
23
|
+
{
|
|
24
|
+
type: "text",
|
|
25
|
+
text: [
|
|
26
|
+
`Cache mode set to ${String(cache)}.`,
|
|
27
|
+
reinstall
|
|
28
|
+
? "Re-resolved the current top-level imports and saved the updated import map target."
|
|
29
|
+
: "Saved the updated import map target with the new cache mode.",
|
|
30
|
+
].join("\n"),
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
return context.failure(error.message);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=set-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-cache.js","sourceRoot":"","sources":["../../src/tools/set-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AAGrB,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,OAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,0FAA0F;QAC5F,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;iBAC1C,QAAQ,CACP,8DAA8D,CAC/D;YACH,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,wFAAwF,CACzF;SACJ,CAAC;KACH,EACD,KAAK,EAAE,EAAC,KAAK,EAAE,SAAS,GAAG,KAAK,EAAC,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAEhC,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBACnC,OAAO,CAAC,mBAAmB,CAAC,EAAC,KAAK,EAAC,CAAC,CAAA;YACtC,CAAC,EAAE,SAAS,CAAC,CAAA;YAEb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,qBAAqB,MAAM,CAAC,KAAK,CAAC,GAAG;4BACrC,SAAS;gCACP,CAAC,CAAC,oFAAoF;gCACtF,CAAC,CAAC,8DAA8D;yBACnE,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;iBACF;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAE,KAAe,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-env.d.ts","sourceRoot":"","sources":["../../src/tools/set-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AAEjE,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,eAAe,CAAA;AAEtB,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,QAiD5E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { buildGeneratorEnv, } from "../context.js";
|
|
3
|
+
export function registerSetEnvTool(server, context) {
|
|
4
|
+
server.registerTool("set_env", {
|
|
5
|
+
title: "Set JSPM resolution environment",
|
|
6
|
+
description: 'Switch the generator environment between "production" and "development" while keeping the standard "browser" and "module" conditions enabled.',
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
environment: z
|
|
9
|
+
.enum(["production", "development"])
|
|
10
|
+
.describe("Primary JSPM environment condition to apply."),
|
|
11
|
+
customConditions: z
|
|
12
|
+
.array(z.string().min(1))
|
|
13
|
+
.optional()
|
|
14
|
+
.describe('Optional extra package export conditions to include alongside the selected environment, "browser", and "module".'),
|
|
15
|
+
}),
|
|
16
|
+
}, async ({ environment, customConditions }) => {
|
|
17
|
+
try {
|
|
18
|
+
context.ensureStateProjectPath();
|
|
19
|
+
const nextEnv = buildGeneratorEnv(environment, customConditions ?? []);
|
|
20
|
+
await context.applyConfigChange(() => {
|
|
21
|
+
context.setEnv(nextEnv);
|
|
22
|
+
}, true);
|
|
23
|
+
return {
|
|
24
|
+
content: [
|
|
25
|
+
{
|
|
26
|
+
type: "text",
|
|
27
|
+
text: [
|
|
28
|
+
`Generator environment set to ${environment}.`,
|
|
29
|
+
`Active conditions: ${nextEnv.join(", ")}`,
|
|
30
|
+
"Re-resolved the current top-level imports and saved the updated import map target.",
|
|
31
|
+
].join("\n"),
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
return context.failure(error.message);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=set-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-env.js","sourceRoot":"","sources":["../../src/tools/set-env.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AACrB,OAAO,EACL,iBAAiB,GAGlB,MAAM,eAAe,CAAA;AAEtB,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,OAAuB;IAC3E,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,+IAA+I;QACjJ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,CAAC;iBACX,IAAI,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;iBACnC,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,gBAAgB,EAAE,CAAC;iBAChB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxB,QAAQ,EAAE;iBACV,QAAQ,CACP,kHAAkH,CACnH;SACJ,CAAC;KACH,EACD,KAAK,EAAE,EAAC,WAAW,EAAE,gBAAgB,EAAC,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAEhC,MAAM,OAAO,GAAG,iBAAiB,CAC/B,WAAiC,EACjC,gBAAgB,IAAI,EAAE,CACvB,CAAA;YAED,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBACnC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACzB,CAAC,EAAE,IAAI,CAAC,CAAA;YAER,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,gCAAgC,WAAW,GAAG;4BAC9C,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BAC1C,oFAAoF;yBACrF,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;iBACF;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAE,KAAe,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { ProjectContext } from "../context.js";
|
|
3
|
+
export declare function registerSetGeneratorOptionsTool(server: McpServer, context: ProjectContext): void;
|
|
4
|
+
//# sourceMappingURL=set-generator-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-generator-options.d.ts","sourceRoot":"","sources":["../../src/tools/set-generator-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AAGjE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAA;AAEjD,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,QAqDxB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PROJECT_GENERATOR_OPTIONS_SCHEMA } from "../generator-options.js";
|
|
3
|
+
export function registerSetGeneratorOptionsTool(server, context) {
|
|
4
|
+
server.registerTool("set_generator_options", {
|
|
5
|
+
title: "Set JSPM generator options",
|
|
6
|
+
description: "Configure CommonJS, TypeScript, SystemJS, integrity output, and fetch retry behavior for the active project. At least one option must be provided.",
|
|
7
|
+
inputSchema: PROJECT_GENERATOR_OPTIONS_SCHEMA.extend({
|
|
8
|
+
reinstall: z
|
|
9
|
+
.boolean()
|
|
10
|
+
.optional()
|
|
11
|
+
.describe("Re-resolve the current top-level imports after applying the new options. Defaults to true."),
|
|
12
|
+
}),
|
|
13
|
+
}, async ({ reinstall = true, ...options }) => {
|
|
14
|
+
try {
|
|
15
|
+
if (Object.keys(options).length === 0) {
|
|
16
|
+
return context.failure("Provide at least one generator option to update.");
|
|
17
|
+
}
|
|
18
|
+
context.ensureStateProjectPath();
|
|
19
|
+
await context.applyConfigChange(() => {
|
|
20
|
+
context.setGeneratorOptions(options);
|
|
21
|
+
}, reinstall);
|
|
22
|
+
const { commonJS, typeScript, system, integrity, fetchRetries } = context.state.generatorOptions;
|
|
23
|
+
return {
|
|
24
|
+
content: [
|
|
25
|
+
{
|
|
26
|
+
type: "text",
|
|
27
|
+
text: [
|
|
28
|
+
"Updated JSPM generator options.",
|
|
29
|
+
`commonJS=${commonJS}, typeScript=${typeScript}, system=${system}, integrity=${integrity}, fetchRetries=${fetchRetries}`,
|
|
30
|
+
reinstall
|
|
31
|
+
? "Re-resolved the current top-level imports and saved the updated import map target."
|
|
32
|
+
: "Saved the updated import map target without reinstalling top-level imports.",
|
|
33
|
+
].join("\n"),
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
return context.failure(error.message);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=set-generator-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-generator-options.js","sourceRoot":"","sources":["../../src/tools/set-generator-options.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AACrB,OAAO,EAAC,gCAAgC,EAAC,MAAM,yBAAyB,CAAA;AAGxE,MAAM,UAAU,+BAA+B,CAC7C,MAAiB,EACjB,OAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,oJAAoJ;QACtJ,WAAW,EAAE,gCAAgC,CAAC,MAAM,CAAC;YACnD,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,4FAA4F,CAC7F;SACJ,CAAC;KACH,EACD,KAAK,EAAE,EAAC,SAAS,GAAG,IAAI,EAAE,GAAG,OAAO,EAAC,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtC,OAAO,OAAO,CAAC,OAAO,CACpB,kDAAkD,CACnD,CAAA;YACH,CAAC;YAED,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAEhC,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBACnC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;YACtC,CAAC,EAAE,SAAS,CAAC,CAAA;YAEb,MAAM,EAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAC,GAC3D,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAA;YAEhC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,iCAAiC;4BACjC,YAAY,QAAQ,gBAAgB,UAAU,YAAY,MAAM,eAAe,SAAS,kBAAkB,YAAY,EAAE;4BACxH,SAAS;gCACP,CAAC,CAAC,oFAAoF;gCACtF,CAAC,CAAC,6EAA6E;yBAClF,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;iBACF;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAE,KAAe,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-ignore.d.ts","sourceRoot":"","sources":["../../src/tools/set-ignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AAEjE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAA;AAEjD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,QA4CxB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerSetIgnoreTool(server, context) {
|
|
3
|
+
server.registerTool("set_ignore", {
|
|
4
|
+
title: "Set JSPM ignore list",
|
|
5
|
+
description: "Replace the list of specifiers JSPM should ignore during tracing for the active project.",
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
specifiers: z.array(z.string().min(1)),
|
|
8
|
+
reinstall: z
|
|
9
|
+
.boolean()
|
|
10
|
+
.optional()
|
|
11
|
+
.describe("Re-resolve the current top-level imports after updating the ignore list. Defaults to true."),
|
|
12
|
+
}),
|
|
13
|
+
}, async ({ specifiers, reinstall = true }) => {
|
|
14
|
+
try {
|
|
15
|
+
context.ensureStateProjectPath();
|
|
16
|
+
await context.applyConfigChange(() => {
|
|
17
|
+
context.setIgnoreList(specifiers);
|
|
18
|
+
}, reinstall);
|
|
19
|
+
return {
|
|
20
|
+
content: [
|
|
21
|
+
{
|
|
22
|
+
type: "text",
|
|
23
|
+
text: [
|
|
24
|
+
`Ignore list now has ${context.state.generatorOptions.ignore.length} specifier(s).`,
|
|
25
|
+
reinstall
|
|
26
|
+
? "Re-resolved the current top-level imports and saved the updated import map target."
|
|
27
|
+
: "Saved the updated import map target without reinstalling top-level imports.",
|
|
28
|
+
].join("\n"),
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return context.failure(error.message);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=set-ignore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-ignore.js","sourceRoot":"","sources":["../../src/tools/set-ignore.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AAGrB,MAAM,UAAU,qBAAqB,CACnC,MAAiB,EACjB,OAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,0FAA0F;QAC5F,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtC,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,4FAA4F,CAC7F;SACJ,CAAC;KACH,EACD,KAAK,EAAE,EAAC,UAAU,EAAE,SAAS,GAAG,IAAI,EAAC,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAEhC,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBACnC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;YACnC,CAAC,EAAE,SAAS,CAAC,CAAA;YAEb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,uBAAuB,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,gBAAgB;4BACnF,SAAS;gCACP,CAAC,CAAC,oFAAoF;gCACtF,CAAC,CAAC,6EAA6E;yBAClF,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;iBACF;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAE,KAAe,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-project.d.ts","sourceRoot":"","sources":["../../src/tools/set-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AAIjE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAA;AAOjD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,QA+DxB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { assertInsideAllowedRoot, ensureProjectDirectory, getImportMapLocation, } from "../utils.js";
|
|
5
|
+
export function registerSetProjectTool(server, context) {
|
|
6
|
+
server.registerTool("set_project", {
|
|
7
|
+
title: "Set current project",
|
|
8
|
+
description: "Sets the active project directory",
|
|
9
|
+
inputSchema: z.object({
|
|
10
|
+
path: z.string(),
|
|
11
|
+
}),
|
|
12
|
+
}, async ({ path }) => context.runExclusive(async () => {
|
|
13
|
+
try {
|
|
14
|
+
const projectPath = ensureProjectDirectory(resolve(path));
|
|
15
|
+
assertInsideAllowedRoot(projectPath);
|
|
16
|
+
// Re-anchoring the same project preserves the configured map target.
|
|
17
|
+
// Switching to a different project (or anchoring the first time)
|
|
18
|
+
// re-derives the default target from what is on disk, since an HTML
|
|
19
|
+
// target's file name may not exist in the new project.
|
|
20
|
+
const samePath = projectPath === context.state.projectPath;
|
|
21
|
+
const switchedProject = !samePath;
|
|
22
|
+
context.state.projectPath = projectPath;
|
|
23
|
+
if (switchedProject) {
|
|
24
|
+
await context.setDefaultMapTarget();
|
|
25
|
+
}
|
|
26
|
+
await context.refreshGenerator();
|
|
27
|
+
let targetMessage;
|
|
28
|
+
if (context.state.mapTarget === "html") {
|
|
29
|
+
targetMessage = context.state.htmlFileName
|
|
30
|
+
? `Managing the import map inside HTML target "${context.state.htmlFileName}".`
|
|
31
|
+
: 'Defaulting to an HTML target. Call set_target with "html" and a fileName to choose the file.';
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const importMapPath = getImportMapLocation(projectPath);
|
|
35
|
+
targetMessage = existsSync(importMapPath)
|
|
36
|
+
? "Loaded the existing importmap.json from this project."
|
|
37
|
+
: 'No importmap.json found yet. I will create one when you install packages. Call set_target with "html" and a fileName to manage an HTML file instead.';
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
content: [
|
|
41
|
+
{
|
|
42
|
+
type: "text",
|
|
43
|
+
text: [
|
|
44
|
+
`Project set to ${projectPath}.`,
|
|
45
|
+
targetMessage,
|
|
46
|
+
`Active environment conditions: ${context.state.env.join(", ")}.`,
|
|
47
|
+
`Generator options: provider=${context.state.generatorOptions.defaultProvider}, cache=${String(context.state.generatorOptions.cache)}, commonJS=${context.state.generatorOptions.commonJS}, typeScript=${context.state.generatorOptions.typeScript}, system=${context.state.generatorOptions.system}, integrity=${context.state.generatorOptions.integrity}, fetchRetries=${context.state.generatorOptions.fetchRetries}.`,
|
|
48
|
+
`Configured overrides: providers=${Object.keys(context.state.generatorOptions.providers).length}, resolutions=${Object.keys(context.state.generatorOptions.resolutions).length}, ignore=${context.state.generatorOptions.ignore.length}.`,
|
|
49
|
+
].join("\n"),
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
return context.failure(error.message);
|
|
56
|
+
}
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=set-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-project.js","sourceRoot":"","sources":["../../src/tools/set-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-provider.d.ts","sourceRoot":"","sources":["../../src/tools/set-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AAEjE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAA;AAGjD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,QAuExB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PROVIDER_SCHEMA as providerSchema } from "../generator-options.js";
|
|
3
|
+
export function registerSetProviderTool(server, context) {
|
|
4
|
+
server.registerTool("set_provider", {
|
|
5
|
+
title: "Set JSPM provider configuration",
|
|
6
|
+
description: "Configure the default JSPM provider and optional scoped provider overrides for the active project.",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
defaultProvider: providerSchema
|
|
9
|
+
.optional()
|
|
10
|
+
.describe("Default provider for top-level installs."),
|
|
11
|
+
overrides: z
|
|
12
|
+
.array(z.object({
|
|
13
|
+
specifier: z
|
|
14
|
+
.string()
|
|
15
|
+
.min(1)
|
|
16
|
+
.describe('Package name, scope, or registry prefix like "npm:".'),
|
|
17
|
+
provider: providerSchema.describe("Provider to use for the matching specifier."),
|
|
18
|
+
}))
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("Scoped provider overrides to merge into the project config."),
|
|
21
|
+
reinstall: z
|
|
22
|
+
.boolean()
|
|
23
|
+
.optional()
|
|
24
|
+
.describe("Re-resolve the current top-level imports after applying the provider settings. Defaults to true."),
|
|
25
|
+
}),
|
|
26
|
+
}, async ({ defaultProvider, overrides, reinstall = true }) => {
|
|
27
|
+
try {
|
|
28
|
+
context.ensureStateProjectPath();
|
|
29
|
+
await context.applyConfigChange(() => {
|
|
30
|
+
if (defaultProvider) {
|
|
31
|
+
context.setGeneratorOptions({ defaultProvider });
|
|
32
|
+
}
|
|
33
|
+
for (const override of overrides ?? []) {
|
|
34
|
+
context.setProviderOverride(override.specifier, override.provider);
|
|
35
|
+
}
|
|
36
|
+
}, reinstall);
|
|
37
|
+
return {
|
|
38
|
+
content: [
|
|
39
|
+
{
|
|
40
|
+
type: "text",
|
|
41
|
+
text: [
|
|
42
|
+
`Default provider: ${context.state.generatorOptions.defaultProvider}`,
|
|
43
|
+
`Provider overrides: ${Object.keys(context.state.generatorOptions.providers).length}`,
|
|
44
|
+
reinstall
|
|
45
|
+
? "Re-resolved the current top-level imports and saved the updated import map target."
|
|
46
|
+
: "Saved the updated import map target without reinstalling top-level imports.",
|
|
47
|
+
].join("\n"),
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
return context.failure(error.message);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=set-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-provider.js","sourceRoot":"","sources":["../../src/tools/set-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AAErB,OAAO,EAAC,eAAe,IAAI,cAAc,EAAC,MAAM,yBAAyB,CAAA;AAEzE,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,OAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,oGAAoG;QACtG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,eAAe,EAAE,cAAc;iBAC5B,QAAQ,EAAE;iBACV,QAAQ,CAAC,0CAA0C,CAAC;YACvD,SAAS,EAAE,CAAC;iBACT,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;gBACP,SAAS,EAAE,CAAC;qBACT,MAAM,EAAE;qBACR,GAAG,CAAC,CAAC,CAAC;qBACN,QAAQ,CACP,sDAAsD,CACvD;gBACH,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAC/B,6CAA6C,CAC9C;aACF,CAAC,CACH;iBACA,QAAQ,EAAE;iBACV,QAAQ,CACP,6DAA6D,CAC9D;YACH,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,kGAAkG,CACnG;SACJ,CAAC;KACH,EACD,KAAK,EAAE,EAAC,eAAe,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,EAAC,EAAE,EAAE;QACvD,IAAI,CAAC;YACH,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAEhC,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBACnC,IAAI,eAAe,EAAE,CAAC;oBACpB,OAAO,CAAC,mBAAmB,CAAC,EAAC,eAAe,EAAC,CAAC,CAAA;gBAChD,CAAC;gBAED,KAAK,MAAM,QAAQ,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;oBACvC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;gBACpE,CAAC;YACH,CAAC,EAAE,SAAS,CAAC,CAAA;YAEb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,qBAAqB,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,eAAe,EAAE;4BACrE,uBAAuB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;4BACrF,SAAS;gCACP,CAAC,CAAC,oFAAoF;gCACtF,CAAC,CAAC,6EAA6E;yBAClF,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;iBACF;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAE,KAAe,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-resolution.d.ts","sourceRoot":"","sources":["../../src/tools/set-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AAEjE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAA;AAEjD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,QAmDxB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerSetResolutionTool(server, context) {
|
|
3
|
+
server.registerTool("set_resolution", {
|
|
4
|
+
title: "Set JSPM resolution overrides",
|
|
5
|
+
description: "Add or update package resolution overrides for the active project.",
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
resolutions: z.array(z.object({
|
|
8
|
+
specifier: z.string().min(1),
|
|
9
|
+
target: z.string().min(1),
|
|
10
|
+
})),
|
|
11
|
+
reinstall: z
|
|
12
|
+
.boolean()
|
|
13
|
+
.optional()
|
|
14
|
+
.describe("Re-resolve the current top-level imports after applying the resolutions. Defaults to true."),
|
|
15
|
+
}),
|
|
16
|
+
}, async ({ resolutions, reinstall = true }) => {
|
|
17
|
+
try {
|
|
18
|
+
context.ensureStateProjectPath();
|
|
19
|
+
await context.applyConfigChange(() => {
|
|
20
|
+
for (const resolution of resolutions) {
|
|
21
|
+
context.setResolution(resolution.specifier, resolution.target);
|
|
22
|
+
}
|
|
23
|
+
}, reinstall);
|
|
24
|
+
return {
|
|
25
|
+
content: [
|
|
26
|
+
{
|
|
27
|
+
type: "text",
|
|
28
|
+
text: [
|
|
29
|
+
`Configured ${resolutions.length} resolution override(s).`,
|
|
30
|
+
reinstall
|
|
31
|
+
? "Re-resolved the current top-level imports and saved the updated import map target."
|
|
32
|
+
: "Saved the updated import map target without reinstalling top-level imports.",
|
|
33
|
+
].join("\n"),
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
return context.failure(error.message);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=set-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-resolution.js","sourceRoot":"","sources":["../../src/tools/set-resolution.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AAGrB,MAAM,UAAU,yBAAyB,CACvC,MAAiB,EACjB,OAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,+BAA+B;QACtC,WAAW,EACT,oEAAoE;QACtE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,CAAC,CAAC,KAAK,CAClB,CAAC,CAAC,MAAM,CAAC;gBACP,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;aAC1B,CAAC,CACH;YACD,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,4FAA4F,CAC7F;SACJ,CAAC;KACH,EACD,KAAK,EAAE,EAAC,WAAW,EAAE,SAAS,GAAG,IAAI,EAAC,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAEhC,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBACnC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;oBACrC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;gBAChE,CAAC;YACH,CAAC,EAAE,SAAS,CAAC,CAAA;YAEb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,cAAc,WAAW,CAAC,MAAM,0BAA0B;4BAC1D,SAAS;gCACP,CAAC,CAAC,oFAAoF;gCACtF,CAAC,CAAC,6EAA6E;yBAClF,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;iBACF;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAE,KAAe,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-target.d.ts","sourceRoot":"","sources":["../../src/tools/set-target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AAGjE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAA;AAGjD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,QAwFxB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { existsSync, statSync } from "node:fs";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { normalizeMapTarget } from "../utils.js";
|
|
4
|
+
export function registerSetTargetTool(server, context) {
|
|
5
|
+
server.registerTool("set_target", {
|
|
6
|
+
title: "Set how importmap is managed",
|
|
7
|
+
description: "Choose whether to store the importmap in a file or inject it into an HTML file.",
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
target: z
|
|
10
|
+
.string()
|
|
11
|
+
.describe('Target type. Accepts flexible values like "importmap", "file", "json", "html", "inline".'),
|
|
12
|
+
fileName: z
|
|
13
|
+
.string()
|
|
14
|
+
.optional()
|
|
15
|
+
.describe("Required when using HTML target (e.g. index.html)"),
|
|
16
|
+
esModuleShims: z
|
|
17
|
+
.boolean()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe("HTML target only. Inject an es-module-shims CDN script tag for the import map. Defaults to false; modern browsers support import maps natively, so only enable this to support older browsers."),
|
|
20
|
+
}),
|
|
21
|
+
}, async ({ target, fileName, esModuleShims = false }) => context.runExclusive(async () => {
|
|
22
|
+
try {
|
|
23
|
+
context.ensureStateProjectPath();
|
|
24
|
+
const normalizedTarget = normalizeMapTarget(target);
|
|
25
|
+
if (normalizedTarget === "html") {
|
|
26
|
+
if (!fileName) {
|
|
27
|
+
return context.failure('HTML target requires "fileName" (for example "index.html")');
|
|
28
|
+
}
|
|
29
|
+
const htmlPath = context.resolveProjectFilePath(fileName);
|
|
30
|
+
if (!existsSync(htmlPath)) {
|
|
31
|
+
return context.failure(`HTML file not found: ${fileName}`);
|
|
32
|
+
}
|
|
33
|
+
if (!statSync(htmlPath).isFile()) {
|
|
34
|
+
return context.failure(`Target is not a file: ${fileName}`);
|
|
35
|
+
}
|
|
36
|
+
context.state.mapTarget = "html";
|
|
37
|
+
context.state.htmlFileName = fileName;
|
|
38
|
+
context.state.esModuleShims = esModuleShims;
|
|
39
|
+
await context.refreshGenerator();
|
|
40
|
+
return {
|
|
41
|
+
content: [
|
|
42
|
+
{
|
|
43
|
+
type: "text",
|
|
44
|
+
text: [
|
|
45
|
+
`Importmap target set to HTML: ${fileName}`,
|
|
46
|
+
esModuleShims
|
|
47
|
+
? "es-module-shims will be injected into the HTML (a CDN script tag) for older-browser support."
|
|
48
|
+
: "es-module-shims will not be injected. Pass esModuleShims: true to add it for older browsers.",
|
|
49
|
+
].join("\n"),
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
context.state.mapTarget = "importmap";
|
|
55
|
+
context.state.htmlFileName = undefined;
|
|
56
|
+
context.state.esModuleShims = false;
|
|
57
|
+
await context.refreshGenerator();
|
|
58
|
+
return {
|
|
59
|
+
content: [
|
|
60
|
+
{
|
|
61
|
+
type: "text",
|
|
62
|
+
text: "Importmap target set to importmap.json",
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
return context.failure(error.message);
|
|
69
|
+
}
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=set-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-target.js","sourceRoot":"","sources":["../../src/tools/set-target.ts"],"names":[],"mappings":"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"}
|