@agimon-ai/doompi-mcp 0.0.1-alpha.77 → 0.0.1-alpha.78

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.
@@ -0,0 +1,52 @@
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ let _agimon_ai_doompi_core_mcp_facet = require("@agimon-ai/doompi-core/mcp-facet");
6
+ let _agimon_ai_doompi_core_server_facet = require("@agimon-ai/doompi-core/server-facet");
7
+ //#region src/extensions/workspaces/sessions/(backend)/skill/doompi-use-mcp.mcp.ts
8
+ var doompi_use_mcp_mcp_default = (0, _agimon_ai_doompi_core_mcp_facet.defineMcpSkill)({
9
+ name: "doompi-use-mcp",
10
+ description: "Use Doom Pi MCP to inspect domain-scoped servers, authenticate, reload configuration, and troubleshoot tool availability.",
11
+ read: () => (0, _agimon_ai_doompi_core_server_facet.readPackageResource)(require("url").pathToFileURL(__filename).href, "src/prompts/doompi-use-mcp/SKILL.md")
12
+ });
13
+ //#endregion
14
+ //#region src/services/mcpHeadlessTools/index.ts
15
+ const MCP_HEADLESS_TOOLS_SERVICE = "doom/mcp-headless-tools";
16
+ function bindMcpHeadlessTool(context, name) {
17
+ const tool = context.services.get(MCP_HEADLESS_TOOLS_SERVICE)?.get(name);
18
+ if (!tool) throw new Error(`MCP tool is unavailable: ${name}`);
19
+ return {
20
+ ...tool,
21
+ execute(toolCallId, parameters, signal, onUpdate) {
22
+ const executionSignal = AbortSignal.any([context.signal, signal ?? context.signal]);
23
+ return tool.execute(toolCallId, parameters, executionSignal, onUpdate, context.execution);
24
+ }
25
+ };
26
+ }
27
+ //#endregion
28
+ //#region src/extensions/workspaces/sessions/(backend)/tool/mcp_use.mcp.ts
29
+ var mcp_use_mcp_default = (0, _agimon_ai_doompi_core_mcp_facet.defineMcpTool)((context) => bindMcpHeadlessTool(context, "mcp_use"));
30
+ //#endregion
31
+ //#region generated/mcp.ts
32
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
33
+ const via = (identity, value) => ({
34
+ ...identity,
35
+ ...value
36
+ });
37
+ const mcp = (0, _agimon_ai_doompi_core_mcp_facet.defineMcpPlugin)({
38
+ name: "@agimon-ai/doompi-mcp",
39
+ session: (context) => ({
40
+ get skills() {
41
+ return [at(doompi_use_mcp_mcp_default, context)];
42
+ },
43
+ get tools() {
44
+ return [via({ name: "mcp_use" }, at(mcp_use_mcp_default, context))];
45
+ }
46
+ })
47
+ });
48
+ //#endregion
49
+ exports.default = mcp;
50
+ exports.mcp = mcp;
51
+
52
+ //# sourceMappingURL=mcp.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.cjs","names":["defineMcpSkill","readPackageResource","defineMcpTool","defineMcpPlugin","skillDoompiUseMcp","toolMcpUse"],"sources":["../../src/extensions/workspaces/sessions/(backend)/skill/doompi-use-mcp.mcp.ts","../../src/services/mcpHeadlessTools/index.ts","../../src/extensions/workspaces/sessions/(backend)/tool/mcp_use.mcp.ts","../../generated/mcp.ts"],"sourcesContent":["import { defineMcpSkill } from '@agimon-ai/doompi-core/mcp-facet';\nimport { readPackageResource } from '@agimon-ai/doompi-core/server-facet';\n\nexport default defineMcpSkill({\n name: 'doompi-use-mcp',\n description:\n 'Use Doom Pi MCP to inspect domain-scoped servers, authenticate, reload configuration, and troubleshoot tool availability.',\n read: () => readPackageResource(import.meta.url, 'src/prompts/doompi-use-mcp/SKILL.md'),\n});\n","import type { DoomHeadlessTool } from '@agimon-ai/doompi-core/headless';\nimport type { DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcp-facet';\nimport type { Context } from '@deepseek-ai/cordis';\n\nexport const MCP_HEADLESS_TOOLS_SERVICE = 'doom/mcp-headless-tools';\n\nexport interface McpHeadlessToolCatalog {\n get(name: string): DoomHeadlessTool | undefined;\n}\n\nexport function mountMcpHeadlessTools(tools: readonly DoomHeadlessTool[]) {\n return (context: Context): void => {\n context.plugin((providerContext) => {\n providerContext.provide(MCP_HEADLESS_TOOLS_SERVICE, {\n get: (name) => tools.find((tool) => tool.name === name),\n } satisfies McpHeadlessToolCatalog);\n });\n };\n}\n\nexport function bindMcpHeadlessTool(context: DoomMcpPluginContext, name: string): DoomHeadlessTool {\n const tool = context.services.get<McpHeadlessToolCatalog>(MCP_HEADLESS_TOOLS_SERVICE)?.get(name);\n if (!tool) throw new Error(`MCP tool is unavailable: ${name}`);\n return {\n ...tool,\n execute(toolCallId, parameters, signal, onUpdate) {\n const executionSignal = AbortSignal.any([context.signal, signal ?? context.signal]);\n return tool.execute(toolCallId, parameters, executionSignal, onUpdate, context.execution);\n },\n };\n}\n","import { defineMcpTool, type DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcp-facet';\n\nimport { bindMcpHeadlessTool } from '../../../../../services/mcpHeadlessTools';\n\nexport default defineMcpTool((context: DoomMcpPluginContext) => bindMcpHeadlessTool(context, 'mcp_use'));\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineMcpPlugin, type DoomMcpSessionPlugin } from '@agimon-ai/doompi-core/mcp-facet';\n\nimport skillDoompiUseMcp from '../src/extensions/workspaces/sessions/(backend)/skill/doompi-use-mcp.mcp';\nimport toolMcpUse from '../src/extensions/workspaces/sessions/(backend)/tool/mcp_use.mcp';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T => ({ ...identity, ...(value as object) }) as T;\n\nexport const mcp = defineMcpPlugin({\n name: '@agimon-ai/doompi-mcp',\n session: (context) => ({\n get skills(): DoomMcpSessionPlugin['skills'] { return [at(skillDoompiUseMcp, context)]; },\n get tools(): DoomMcpSessionPlugin['tools'] { return [via({ name: 'mcp_use' }, at(toolMcpUse, context))]; },\n }) satisfies DoomMcpSessionPlugin,\n});\n\nexport default mcp;\n"],"mappings":";;;;;;;AAGA,IAAA,8BAAA,GAAeA,iCAAAA,eAAAA,CAAe;CAC5B,MAAM;CACN,aACE;CACF,aAAA,GAAYC,oCAAAA,oBAAAA,CAAAA,QAAAA,KAAAA,CAAAA,CAAAA,cAAAA,UAAAA,CAAAA,CAAAA,MAAqC,qCAAqC;AACxF,CAAC;;;ACJD,MAAa,6BAA6B;AAgB1C,SAAgB,oBAAoB,SAA+B,MAAgC;CACjG,MAAM,OAAO,QAAQ,SAAS,IAA4B,0BAA0B,CAAC,EAAE,IAAI,IAAI;CAC/F,IAAI,CAAC,MAAM,MAAM,IAAI,MAAM,4BAA4B,MAAM;CAC7D,OAAO;EACL,GAAG;EACH,QAAQ,YAAY,YAAY,QAAQ,UAAU;GAChD,MAAM,kBAAkB,YAAY,IAAI,CAAC,QAAQ,QAAQ,UAAU,QAAQ,MAAM,CAAC;GAClF,OAAO,KAAK,QAAQ,YAAY,YAAY,iBAAiB,UAAU,QAAQ,SAAS;EAC1F;CACF;AACF;;;AC1BA,IAAA,uBAAA,GAAeC,iCAAAA,cAAAA,EAAe,YAAkC,oBAAoB,SAAS,SAAS,CAAC;;;ACGvG,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,WAAuB;CAAE,GAAG;CAAU,GAAI;AAAiB;AAE9G,MAAa,OAAA,GAAMC,iCAAAA,gBAAAA,CAAgB;CACjC,MAAM;CACN,UAAU,aAAa;EACrB,IAAI,SAAyC;GAAE,OAAO,CAAC,GAAGC,4BAAmB,OAAO,CAAC;EAAG;EACxF,IAAI,QAAuC;GAAE,OAAO,CAAC,IAAI,EAAE,MAAM,UAAU,GAAG,GAAGC,qBAAY,OAAO,CAAC,CAAC;EAAG;CAC3G;AACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ //#region generated/mcp.d.ts
2
+ export declare const mcp: import("@agimon-ai/doompi-core/mcp-facet").DoomMcpPluginDefinition;
3
+ //#endregion
4
+ export { mcp as default };
5
+ //# sourceMappingURL=mcp.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.cts","names":[],"sources":["../../generated/mcp.ts"],"mappings":";qBAWa,gDAAG"}
@@ -0,0 +1,5 @@
1
+ //#region generated/mcp.d.ts
2
+ export declare const mcp: import("@agimon-ai/doompi-core/mcp-facet").DoomMcpPluginDefinition;
3
+ //#endregion
4
+ export { mcp as default };
5
+ //# sourceMappingURL=mcp.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.mts","names":[],"sources":["../../generated/mcp.ts"],"mappings":";qBAWa,gDAAG"}
@@ -0,0 +1,47 @@
1
+ import { defineMcpPlugin, defineMcpSkill, defineMcpTool } from "@agimon-ai/doompi-core/mcp-facet";
2
+ import { readPackageResource } from "@agimon-ai/doompi-core/server-facet";
3
+ //#region src/extensions/workspaces/sessions/(backend)/skill/doompi-use-mcp.mcp.ts
4
+ var doompi_use_mcp_mcp_default = defineMcpSkill({
5
+ name: "doompi-use-mcp",
6
+ description: "Use Doom Pi MCP to inspect domain-scoped servers, authenticate, reload configuration, and troubleshoot tool availability.",
7
+ read: () => readPackageResource(import.meta.url, "src/prompts/doompi-use-mcp/SKILL.md")
8
+ });
9
+ //#endregion
10
+ //#region src/services/mcpHeadlessTools/index.ts
11
+ const MCP_HEADLESS_TOOLS_SERVICE = "doom/mcp-headless-tools";
12
+ function bindMcpHeadlessTool(context, name) {
13
+ const tool = context.services.get(MCP_HEADLESS_TOOLS_SERVICE)?.get(name);
14
+ if (!tool) throw new Error(`MCP tool is unavailable: ${name}`);
15
+ return {
16
+ ...tool,
17
+ execute(toolCallId, parameters, signal, onUpdate) {
18
+ const executionSignal = AbortSignal.any([context.signal, signal ?? context.signal]);
19
+ return tool.execute(toolCallId, parameters, executionSignal, onUpdate, context.execution);
20
+ }
21
+ };
22
+ }
23
+ //#endregion
24
+ //#region src/extensions/workspaces/sessions/(backend)/tool/mcp_use.mcp.ts
25
+ var mcp_use_mcp_default = defineMcpTool((context) => bindMcpHeadlessTool(context, "mcp_use"));
26
+ //#endregion
27
+ //#region generated/mcp.ts
28
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
29
+ const via = (identity, value) => ({
30
+ ...identity,
31
+ ...value
32
+ });
33
+ const mcp = defineMcpPlugin({
34
+ name: "@agimon-ai/doompi-mcp",
35
+ session: (context) => ({
36
+ get skills() {
37
+ return [at(doompi_use_mcp_mcp_default, context)];
38
+ },
39
+ get tools() {
40
+ return [via({ name: "mcp_use" }, at(mcp_use_mcp_default, context))];
41
+ }
42
+ })
43
+ });
44
+ //#endregion
45
+ export { mcp as default, mcp };
46
+
47
+ //# sourceMappingURL=mcp.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.mjs","names":["skillDoompiUseMcp","toolMcpUse"],"sources":["../../src/extensions/workspaces/sessions/(backend)/skill/doompi-use-mcp.mcp.ts","../../src/services/mcpHeadlessTools/index.ts","../../src/extensions/workspaces/sessions/(backend)/tool/mcp_use.mcp.ts","../../generated/mcp.ts"],"sourcesContent":["import { defineMcpSkill } from '@agimon-ai/doompi-core/mcp-facet';\nimport { readPackageResource } from '@agimon-ai/doompi-core/server-facet';\n\nexport default defineMcpSkill({\n name: 'doompi-use-mcp',\n description:\n 'Use Doom Pi MCP to inspect domain-scoped servers, authenticate, reload configuration, and troubleshoot tool availability.',\n read: () => readPackageResource(import.meta.url, 'src/prompts/doompi-use-mcp/SKILL.md'),\n});\n","import type { DoomHeadlessTool } from '@agimon-ai/doompi-core/headless';\nimport type { DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcp-facet';\nimport type { Context } from '@deepseek-ai/cordis';\n\nexport const MCP_HEADLESS_TOOLS_SERVICE = 'doom/mcp-headless-tools';\n\nexport interface McpHeadlessToolCatalog {\n get(name: string): DoomHeadlessTool | undefined;\n}\n\nexport function mountMcpHeadlessTools(tools: readonly DoomHeadlessTool[]) {\n return (context: Context): void => {\n context.plugin((providerContext) => {\n providerContext.provide(MCP_HEADLESS_TOOLS_SERVICE, {\n get: (name) => tools.find((tool) => tool.name === name),\n } satisfies McpHeadlessToolCatalog);\n });\n };\n}\n\nexport function bindMcpHeadlessTool(context: DoomMcpPluginContext, name: string): DoomHeadlessTool {\n const tool = context.services.get<McpHeadlessToolCatalog>(MCP_HEADLESS_TOOLS_SERVICE)?.get(name);\n if (!tool) throw new Error(`MCP tool is unavailable: ${name}`);\n return {\n ...tool,\n execute(toolCallId, parameters, signal, onUpdate) {\n const executionSignal = AbortSignal.any([context.signal, signal ?? context.signal]);\n return tool.execute(toolCallId, parameters, executionSignal, onUpdate, context.execution);\n },\n };\n}\n","import { defineMcpTool, type DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcp-facet';\n\nimport { bindMcpHeadlessTool } from '../../../../../services/mcpHeadlessTools';\n\nexport default defineMcpTool((context: DoomMcpPluginContext) => bindMcpHeadlessTool(context, 'mcp_use'));\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineMcpPlugin, type DoomMcpSessionPlugin } from '@agimon-ai/doompi-core/mcp-facet';\n\nimport skillDoompiUseMcp from '../src/extensions/workspaces/sessions/(backend)/skill/doompi-use-mcp.mcp';\nimport toolMcpUse from '../src/extensions/workspaces/sessions/(backend)/tool/mcp_use.mcp';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T => ({ ...identity, ...(value as object) }) as T;\n\nexport const mcp = defineMcpPlugin({\n name: '@agimon-ai/doompi-mcp',\n session: (context) => ({\n get skills(): DoomMcpSessionPlugin['skills'] { return [at(skillDoompiUseMcp, context)]; },\n get tools(): DoomMcpSessionPlugin['tools'] { return [via({ name: 'mcp_use' }, at(toolMcpUse, context))]; },\n }) satisfies DoomMcpSessionPlugin,\n});\n\nexport default mcp;\n"],"mappings":";;;AAGA,IAAA,6BAAe,eAAe;CAC5B,MAAM;CACN,aACE;CACF,YAAY,oBAAoB,YAAY,KAAK,qCAAqC;AACxF,CAAC;;;ACJD,MAAa,6BAA6B;AAgB1C,SAAgB,oBAAoB,SAA+B,MAAgC;CACjG,MAAM,OAAO,QAAQ,SAAS,IAA4B,0BAA0B,CAAC,EAAE,IAAI,IAAI;CAC/F,IAAI,CAAC,MAAM,MAAM,IAAI,MAAM,4BAA4B,MAAM;CAC7D,OAAO;EACL,GAAG;EACH,QAAQ,YAAY,YAAY,QAAQ,UAAU;GAChD,MAAM,kBAAkB,YAAY,IAAI,CAAC,QAAQ,QAAQ,UAAU,QAAQ,MAAM,CAAC;GAClF,OAAO,KAAK,QAAQ,YAAY,YAAY,iBAAiB,UAAU,QAAQ,SAAS;EAC1F;CACF;AACF;;;AC1BA,IAAA,sBAAe,eAAe,YAAkC,oBAAoB,SAAS,SAAS,CAAC;;;ACGvG,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,WAAuB;CAAE,GAAG;CAAU,GAAI;AAAiB;AAE9G,MAAa,MAAM,gBAAgB;CACjC,MAAM;CACN,UAAU,aAAa;EACrB,IAAI,SAAyC;GAAE,OAAO,CAAC,GAAGA,4BAAmB,OAAO,CAAC;EAAG;EACxF,IAAI,QAAuC;GAAE,OAAO,CAAC,IAAI,EAAE,MAAM,UAAU,GAAG,GAAGC,qBAAY,OAAO,CAAC,CAAC;EAAG;CAC3G;AACF,CAAC"}
@@ -1,10 +1,12 @@
1
- const require_index = require("../../../../../services/serverRuntime/index.cjs");
1
+ const require_index = require("../../../../../services/mcpHeadlessTools/index.cjs");
2
+ const require_index$1 = require("../../../../../services/serverRuntime/index.cjs");
2
3
  //#region src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.ts
3
4
  const createMcpServerRoot = () => {
4
- const runtime = require_index.createMcpServerRuntime();
5
+ const runtime = require_index$1.createMcpServerRuntime();
5
6
  return {
6
7
  value: runtime,
7
- activities: runtime.activities
8
+ activities: runtime.activities,
9
+ services: [require_index.mountMcpHeadlessTools(runtime.tools)]
8
10
  };
9
11
  };
10
12
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"serverRoot.cjs","names":["createMcpServerRuntime"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.ts"],"sourcesContent":["import { createMcpServerRuntime } from '../../../../../services/serverRuntime';\nexport const createMcpServerRoot = () => {\n const runtime = createMcpServerRuntime();\n return { value: runtime, activities: runtime.activities };\n};\nexport type McpServerScope = Awaited<ReturnType<typeof createMcpServerRoot>>['value'];\n"],"mappings":";;AACA,MAAa,4BAA4B;CACvC,MAAM,UAAUA,cAAAA,uBAAuB;CACvC,OAAO;EAAE,OAAO;EAAS,YAAY,QAAQ;CAAW;AAC1D"}
1
+ {"version":3,"file":"serverRoot.cjs","names":["createMcpServerRuntime","mountMcpHeadlessTools"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.ts"],"sourcesContent":["import { mountMcpHeadlessTools } from '../../../../../services/mcpHeadlessTools';\nimport { createMcpServerRuntime } from '../../../../../services/serverRuntime';\nexport const createMcpServerRoot = () => {\n const runtime = createMcpServerRuntime();\n return { value: runtime, activities: runtime.activities, services: [mountMcpHeadlessTools(runtime.tools)] };\n};\nexport type McpServerScope = Awaited<ReturnType<typeof createMcpServerRoot>>['value'];\n"],"mappings":";;;AAEA,MAAa,4BAA4B;CACvC,MAAM,UAAUA,gBAAAA,uBAAuB;CACvC,OAAO;EAAE,OAAO;EAAS,YAAY,QAAQ;EAAY,UAAU,CAACC,cAAAA,sBAAsB,QAAQ,KAAK,CAAC;CAAE;AAC5G"}
@@ -1,10 +1,12 @@
1
+ import { mountMcpHeadlessTools } from "../../../../../services/mcpHeadlessTools/index.mjs";
1
2
  import { createMcpServerRuntime } from "../../../../../services/serverRuntime/index.mjs";
2
3
  //#region src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.ts
3
4
  const createMcpServerRoot = () => {
4
5
  const runtime = createMcpServerRuntime();
5
6
  return {
6
7
  value: runtime,
7
- activities: runtime.activities
8
+ activities: runtime.activities,
9
+ services: [mountMcpHeadlessTools(runtime.tools)]
8
10
  };
9
11
  };
10
12
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"serverRoot.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.ts"],"sourcesContent":["import { createMcpServerRuntime } from '../../../../../services/serverRuntime';\nexport const createMcpServerRoot = () => {\n const runtime = createMcpServerRuntime();\n return { value: runtime, activities: runtime.activities };\n};\nexport type McpServerScope = Awaited<ReturnType<typeof createMcpServerRoot>>['value'];\n"],"mappings":";;AACA,MAAa,4BAA4B;CACvC,MAAM,UAAU,uBAAuB;CACvC,OAAO;EAAE,OAAO;EAAS,YAAY,QAAQ;CAAW;AAC1D"}
1
+ {"version":3,"file":"serverRoot.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.ts"],"sourcesContent":["import { mountMcpHeadlessTools } from '../../../../../services/mcpHeadlessTools';\nimport { createMcpServerRuntime } from '../../../../../services/serverRuntime';\nexport const createMcpServerRoot = () => {\n const runtime = createMcpServerRuntime();\n return { value: runtime, activities: runtime.activities, services: [mountMcpHeadlessTools(runtime.tools)] };\n};\nexport type McpServerScope = Awaited<ReturnType<typeof createMcpServerRoot>>['value'];\n"],"mappings":";;;AAEA,MAAa,4BAA4B;CACvC,MAAM,UAAU,uBAAuB;CACvC,OAAO;EAAE,OAAO;EAAS,YAAY,QAAQ;EAAY,UAAU,CAAC,sBAAsB,QAAQ,KAAK,CAAC;CAAE;AAC5G"}
@@ -0,0 +1,14 @@
1
+ //#region src/services/mcpHeadlessTools/index.ts
2
+ const MCP_HEADLESS_TOOLS_SERVICE = "doom/mcp-headless-tools";
3
+ function mountMcpHeadlessTools(tools) {
4
+ return (context) => {
5
+ context.plugin((providerContext) => {
6
+ providerContext.provide(MCP_HEADLESS_TOOLS_SERVICE, { get: (name) => tools.find((tool) => tool.name === name) });
7
+ });
8
+ };
9
+ }
10
+ //#endregion
11
+ exports.MCP_HEADLESS_TOOLS_SERVICE = MCP_HEADLESS_TOOLS_SERVICE;
12
+ exports.mountMcpHeadlessTools = mountMcpHeadlessTools;
13
+
14
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/services/mcpHeadlessTools/index.ts"],"sourcesContent":["import type { DoomHeadlessTool } from '@agimon-ai/doompi-core/headless';\nimport type { DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcp-facet';\nimport type { Context } from '@deepseek-ai/cordis';\n\nexport const MCP_HEADLESS_TOOLS_SERVICE = 'doom/mcp-headless-tools';\n\nexport interface McpHeadlessToolCatalog {\n get(name: string): DoomHeadlessTool | undefined;\n}\n\nexport function mountMcpHeadlessTools(tools: readonly DoomHeadlessTool[]) {\n return (context: Context): void => {\n context.plugin((providerContext) => {\n providerContext.provide(MCP_HEADLESS_TOOLS_SERVICE, {\n get: (name) => tools.find((tool) => tool.name === name),\n } satisfies McpHeadlessToolCatalog);\n });\n };\n}\n\nexport function bindMcpHeadlessTool(context: DoomMcpPluginContext, name: string): DoomHeadlessTool {\n const tool = context.services.get<McpHeadlessToolCatalog>(MCP_HEADLESS_TOOLS_SERVICE)?.get(name);\n if (!tool) throw new Error(`MCP tool is unavailable: ${name}`);\n return {\n ...tool,\n execute(toolCallId, parameters, signal, onUpdate) {\n const executionSignal = AbortSignal.any([context.signal, signal ?? context.signal]);\n return tool.execute(toolCallId, parameters, executionSignal, onUpdate, context.execution);\n },\n };\n}\n"],"mappings":";AAIA,MAAa,6BAA6B;AAM1C,SAAgB,sBAAsB,OAAoC;CACxE,QAAQ,YAA2B;EACjC,QAAQ,QAAQ,oBAAoB;GAClC,gBAAgB,QAAQ,4BAA4B,EAClD,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,SAAS,IAAI,EACxD,CAAkC;EACpC,CAAC;CACH;AACF"}
@@ -0,0 +1,13 @@
1
+ //#region src/services/mcpHeadlessTools/index.ts
2
+ const MCP_HEADLESS_TOOLS_SERVICE = "doom/mcp-headless-tools";
3
+ function mountMcpHeadlessTools(tools) {
4
+ return (context) => {
5
+ context.plugin((providerContext) => {
6
+ providerContext.provide(MCP_HEADLESS_TOOLS_SERVICE, { get: (name) => tools.find((tool) => tool.name === name) });
7
+ });
8
+ };
9
+ }
10
+ //#endregion
11
+ export { MCP_HEADLESS_TOOLS_SERVICE, mountMcpHeadlessTools };
12
+
13
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/mcpHeadlessTools/index.ts"],"sourcesContent":["import type { DoomHeadlessTool } from '@agimon-ai/doompi-core/headless';\nimport type { DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcp-facet';\nimport type { Context } from '@deepseek-ai/cordis';\n\nexport const MCP_HEADLESS_TOOLS_SERVICE = 'doom/mcp-headless-tools';\n\nexport interface McpHeadlessToolCatalog {\n get(name: string): DoomHeadlessTool | undefined;\n}\n\nexport function mountMcpHeadlessTools(tools: readonly DoomHeadlessTool[]) {\n return (context: Context): void => {\n context.plugin((providerContext) => {\n providerContext.provide(MCP_HEADLESS_TOOLS_SERVICE, {\n get: (name) => tools.find((tool) => tool.name === name),\n } satisfies McpHeadlessToolCatalog);\n });\n };\n}\n\nexport function bindMcpHeadlessTool(context: DoomMcpPluginContext, name: string): DoomHeadlessTool {\n const tool = context.services.get<McpHeadlessToolCatalog>(MCP_HEADLESS_TOOLS_SERVICE)?.get(name);\n if (!tool) throw new Error(`MCP tool is unavailable: ${name}`);\n return {\n ...tool,\n execute(toolCallId, parameters, signal, onUpdate) {\n const executionSignal = AbortSignal.any([context.signal, signal ?? context.signal]);\n return tool.execute(toolCallId, parameters, executionSignal, onUpdate, context.execution);\n },\n };\n}\n"],"mappings":";AAIA,MAAa,6BAA6B;AAM1C,SAAgB,sBAAsB,OAAoC;CACxE,QAAQ,YAA2B;EACjC,QAAQ,QAAQ,oBAAoB;GAClC,gBAAgB,QAAQ,4BAA4B,EAClD,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,SAAS,IAAI,EACxD,CAAkC;EACpC,CAAC;CACH;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agimon-ai/doompi-mcp",
3
- "version": "0.0.1-alpha.77",
3
+ "version": "0.0.1-alpha.78",
4
4
  "description": "Domain-aware MCP server selection and access boundaries for Pi sessions composed with DoomPi.",
5
5
  "keywords": [
6
6
  "ai",
@@ -73,11 +73,11 @@
73
73
  "access": "public"
74
74
  },
75
75
  "dependencies": {
76
- "@agimon-ai/doompi-config": "0.0.1-alpha.75",
77
- "@agimon-ai/doompi-core": "0.0.1-alpha.76",
78
- "@agimon-ai/doompi-ui": "0.0.1-alpha.76",
79
- "@agimon-ai/doompi-web-components": "0.0.1-alpha.34",
80
- "@agimon-ai/doompi-web-security": "0.0.1-alpha.36",
76
+ "@agimon-ai/doompi-config": "0.0.1-alpha.76",
77
+ "@agimon-ai/doompi-core": "0.0.1-alpha.77",
78
+ "@agimon-ai/doompi-ui": "0.0.1-alpha.77",
79
+ "@agimon-ai/doompi-web-components": "0.0.1-alpha.35",
80
+ "@agimon-ai/doompi-web-security": "0.0.1-alpha.37",
81
81
  "@agimon-ai/mcp-proxy": "0.31.25",
82
82
  "@deepseek-ai/cordis": "4.0.2",
83
83
  "@modelcontextprotocol/sdk": "1.30.0",
@@ -87,7 +87,7 @@
87
87
  "yaml": "2.9.0"
88
88
  },
89
89
  "devDependencies": {
90
- "@agimon-ai/doompi-build": "0.0.1-alpha.5",
90
+ "@agimon-ai/doompi-build": "0.0.1-alpha.6",
91
91
  "@earendil-works/pi-coding-agent": "0.85.1",
92
92
  "@earendil-works/pi-tui": "0.85.1",
93
93
  "@tanstack/react-store": "0.11.1",
@@ -116,6 +116,13 @@
116
116
  "engines": {
117
117
  "node": ">=22.19.0"
118
118
  },
119
+ "doompiMcp": {
120
+ "entry": "./generated/mcp.ts",
121
+ "dist": "./dist/extensions/mcp.mjs",
122
+ "scopes": [
123
+ "session"
124
+ ]
125
+ },
119
126
  "doompiServer": {
120
127
  "entry": "./generated/server.ts",
121
128
  "dist": "./dist/extensions/server.mjs",
@@ -144,7 +151,8 @@
144
151
  ]
145
152
  },
146
153
  "scripts": {
147
- "build": "tsdown",
154
+ "build": "tsdown && tsdown --config tsdown.mcp.config.ts",
155
+ "build:mcp": "tsdown --config tsdown.mcp.config.ts",
148
156
  "test": "vitest --run",
149
157
  "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.web.json",
150
158
  "lint": "oxlint . && oxfmt . --check",