ycodium-acp-executor 0.2.2510 → 0.2.2544

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/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export { createAcpExecutor } from "./executor.ts";
2
2
  export type { AcpExecutor, AcpExecutorOptions } from "./executor.ts";
3
+ export { toAcpMcpServers } from "./mcp-servers.ts";
4
+ export type { HostMcpServerEntry } from "./mcp-servers.ts";
3
5
  export { acpInitializePayload } from "./handshake.ts";
4
6
  export type { AcpClientCapabilityOverrides, AcpClientInfo, AcpInitializePayload, } from "./handshake.ts";
5
7
  export { acpModelChoicesFromConfigOptions, acpModelChoicesFromSessionModels, findAcpEffortConfig, } from "./config-options.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { createAcpExecutor } from "./executor.js";
2
+ export { toAcpMcpServers } from "./mcp-servers.js";
2
3
  export { acpInitializePayload } from "./handshake.js";
3
4
  export { acpModelChoicesFromConfigOptions, acpModelChoicesFromSessionModels, findAcpEffortConfig, } from "./config-options.js";
4
5
  export { acpAvailableModes, acpCurrentModeId, acpModeConfigId } from "./runtime-mode.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAMtD,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,wBAAwB,EACxB,gBAAgB,EAChB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mCAAmC,EACnC,oBAAoB,EACpB,2BAA2B,EAC3B,qCAAqC,GACtC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,mCAAmC,EACnC,yBAAyB,EACzB,kBAAkB,EAClB,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,0CAA0C,GAC3C,MAAM,oBAAoB,CAAC;AAU5B,OAAO,EACL,8BAA8B,EAC9B,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAmBzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,iCAAiC;AACjC,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,OAAO,EACP,YAAY,GACb,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAMtD,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,wBAAwB,EACxB,gBAAgB,EAChB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mCAAmC,EACnC,oBAAoB,EACpB,2BAA2B,EAC3B,qCAAqC,GACtC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,mCAAmC,EACnC,yBAAyB,EACzB,kBAAkB,EAClB,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,0CAA0C,GAC3C,MAAM,oBAAoB,CAAC;AAU5B,OAAO,EACL,8BAA8B,EAC9B,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAmBzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,iCAAiC;AACjC,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,OAAO,EACP,YAAY,GACb,MAAM,eAAe,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * 宿主插口上的一条 MCP server。与 `@ycodium-ai/plugin-api` 的 `ExecutorMcpServer` 同形,
3
+ * 这个包不依赖插件 API,所以在此处按结构重述。
4
+ */
5
+ export type HostMcpServerEntry = {
6
+ readonly name: string;
7
+ readonly transport: {
8
+ readonly type: "stdio";
9
+ readonly command: string;
10
+ readonly args?: ReadonlyArray<string> | undefined;
11
+ readonly env?: Readonly<Record<string, string>> | undefined;
12
+ } | {
13
+ readonly type: "http" | "sse";
14
+ readonly url: string;
15
+ readonly headers?: Readonly<Record<string, string>> | undefined;
16
+ };
17
+ };
18
+ /**
19
+ * 宿主插口上的 MCP server 列表 → ACP `session/new` 的 `mcpServers`。
20
+ *
21
+ * 「哪条给这只手、传输支不支持」宿主 `resolveMcpLaunchList` 已经判完,这里只换形状。
22
+ * ACP 的 stdio 变体没有 `type` 字段,env 与 headers 都是 `{ name, value }` 数组。
23
+ * http / sse 要不要发给 agent,由执行器按 agent 握手里报的 `mcpCapabilities` 再筛一遍。
24
+ */
25
+ export declare function toAcpMcpServers(entries: ReadonlyArray<HostMcpServerEntry> | undefined): ReadonlyArray<{
26
+ readonly type?: string;
27
+ readonly [key: string]: unknown;
28
+ }>;
29
+ //# sourceMappingURL=mcp-servers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-servers.d.ts","sourceRoot":"","sources":["../src/mcp-servers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EACd;QACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QAClD,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;KAC7D,GACD;QACE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;KACjE,CAAC;CACP,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,SAAS,GACrD,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,CAmB5E"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * 宿主插口上的 MCP server 列表 → ACP `session/new` 的 `mcpServers`。
3
+ *
4
+ * 「哪条给这只手、传输支不支持」宿主 `resolveMcpLaunchList` 已经判完,这里只换形状。
5
+ * ACP 的 stdio 变体没有 `type` 字段,env 与 headers 都是 `{ name, value }` 数组。
6
+ * http / sse 要不要发给 agent,由执行器按 agent 握手里报的 `mcpCapabilities` 再筛一遍。
7
+ */
8
+ export function toAcpMcpServers(entries) {
9
+ return (entries ?? []).map((entry) => entry.transport.type === "stdio"
10
+ ? {
11
+ name: entry.name,
12
+ command: entry.transport.command,
13
+ args: [...(entry.transport.args ?? [])],
14
+ env: Object.entries(entry.transport.env ?? {}).map(([name, value]) => ({ name, value })),
15
+ }
16
+ : {
17
+ type: entry.transport.type,
18
+ name: entry.name,
19
+ url: entry.transport.url,
20
+ headers: Object.entries(entry.transport.headers ?? {}).map(([name, value]) => ({
21
+ name,
22
+ value,
23
+ })),
24
+ });
25
+ }
26
+ //# sourceMappingURL=mcp-servers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-servers.js","sourceRoot":"","sources":["../src/mcp-servers.ts"],"names":[],"mappings":"AAoBA;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAsD;IAEtD,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO;QAC9B,CAAC,CAAC;YACE,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;YAChC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACvC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SACzF;QACH,CAAC,CAAC;YACE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG;YACxB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7E,IAAI;gBACJ,KAAK;aACN,CAAC,CAAC;SACJ,CACN,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ycodium-acp-executor",
3
- "version": "0.2.2510",
3
+ "version": "0.2.2544",
4
4
  "description": "Agent Client Protocol client and executor state machine for Ycodium agent plugins. Speaks ACP over stdio and emits Ycodium executor events.",
5
5
  "keywords": [
6
6
  "acp",