toolcraft 0.0.7 → 0.0.8

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 CHANGED
@@ -444,17 +444,20 @@ If you have an existing MCP server you want to keep running, use the MCP proxy:
444
444
  - `presets?: boolean` — enables `--preset <path>` for loading parameter defaults from JSON files.
445
445
  - `apiVersion?: string` — for `requires.apiVersion`.
446
446
  - `humanInLoop?: HumanInLoopRuntimeOptions`
447
+ - `projectRoot?: string` — root used for MCP proxy cache files (`.toolcraft/mcp/*.json`).
447
448
 
448
449
  ### `createSDK(root, options)`
449
450
 
450
451
  - `casing?: "camel"` — generated SDK member style.
451
452
  - `services?` / `humanInLoop?` / `apiVersion?`
453
+ - `projectRoot?: string` — root used for MCP proxy cache files (`.toolcraft/mcp/*.json`).
452
454
 
453
455
  ### `createMCPServer(root, options)` / `runMCP(root, options)`
454
456
 
455
457
  - `name: string`
456
458
  - `version: string`
457
459
  - `services?` / `humanInLoop?` / `apiVersion?`
460
+ - `projectRoot?: string` — root used for MCP proxy cache files (`.toolcraft/mcp/*.json`).
458
461
  - `tools?: string[]` — allowlist of MCP tool names or group prefixes. Tool names are `__`-joined snake_case path segments (`root__bot__create`); a prefix like `root__bot` includes every descendant tool.
459
462
  - `casing?: "snake" | "camel"` — affects MCP **input-schema property names** only. Tool names always stay `__`-joined snake_case.
460
463
 
package/dist/cli.d.ts CHANGED
@@ -5,6 +5,7 @@ export interface RunCLIOptions<TServices extends object = Record<string, unknown
5
5
  apiVersion?: string;
6
6
  casing?: Casing;
7
7
  humanInLoop?: HumanInLoopRuntimeOptions;
8
+ projectRoot?: string;
8
9
  rootDisplayName?: string;
9
10
  rootUsageName?: string;
10
11
  services?: TServices;
package/dist/cli.js CHANGED
@@ -2003,7 +2003,7 @@ function handleRunError(error, verbose) {
2003
2003
  }
2004
2004
  export async function runCLI(roots, options = {}) {
2005
2005
  const root = mergeApprovalsGroup(normalizeRoots(roots, process.argv));
2006
- await resolveMcpProxies(root);
2006
+ await resolveMcpProxies(root, { projectRoot: options.projectRoot });
2007
2007
  const casing = options.casing ?? "kebab";
2008
2008
  const services = (options.services ?? {});
2009
2009
  const runtimeOptions = options.humanInLoop ?? {};
@@ -1,8 +1,11 @@
1
1
  import type { McpServerConfig } from "@poe-code/agent-mcp-config";
2
2
  import { McpClient } from "tiny-mcp-client";
3
3
  import type { Group } from "./index.js";
4
+ export interface ResolveMcpProxyOptions {
5
+ projectRoot?: string;
6
+ }
4
7
  export declare function hasMcpProxyGroups(root: Group<any>): boolean;
5
8
  export declare function resolveCachePath(name: string, projectRoot?: string): string;
6
9
  export declare function parseRefreshEnv(value: string | undefined): "all" | Set<string> | undefined;
7
10
  export declare function dialUpstream(name: string, config: McpServerConfig): Promise<McpClient>;
8
- export declare function resolveMcpProxies(root: Group<any>): Promise<void>;
11
+ export declare function resolveMcpProxies(root: Group<any>, options?: ResolveMcpProxyOptions): Promise<void>;
package/dist/mcp-proxy.js CHANGED
@@ -268,7 +268,7 @@ function isRefreshRequested(name, refresh) {
268
268
  }
269
269
  return refresh?.has(name) === true;
270
270
  }
271
- async function resolveSingleProxy(group) {
271
+ async function resolveSingleProxy(group, options) {
272
272
  const internal = getInternalGroupConfig(group);
273
273
  const config = internal.mcp;
274
274
  if (config === undefined) {
@@ -276,7 +276,7 @@ async function resolveSingleProxy(group) {
276
276
  }
277
277
  const name = group.name;
278
278
  try {
279
- const cachePath = resolveCachePath(name);
279
+ const cachePath = resolveCachePath(name, options.projectRoot);
280
280
  const refresh = parseRefreshEnv(process.env.TOOLCRAFT_MCP_REFRESH);
281
281
  let cache;
282
282
  if (isRefreshRequested(name, refresh)) {
@@ -377,7 +377,7 @@ export async function dialUpstream(name, config) {
377
377
  await client.connect(transport);
378
378
  return client;
379
379
  }
380
- export async function resolveMcpProxies(root) {
380
+ export async function resolveMcpProxies(root, options = {}) {
381
381
  const groups = collectProxyGroups(root);
382
- await Promise.all(groups.map((group) => resolveSingleProxy(group)));
382
+ await Promise.all(groups.map((group) => resolveSingleProxy(group, options)));
383
383
  }
package/dist/mcp.d.ts CHANGED
@@ -9,6 +9,7 @@ export interface RunMCPOptions<TServices extends object = Record<string, unknown
9
9
  name: string;
10
10
  version?: string;
11
11
  humanInLoop?: HumanInLoopRuntimeOptions;
12
+ projectRoot?: string;
12
13
  /**
13
14
  * Optional allowlist of MCP tool names or group prefixes.
14
15
  *
package/dist/mcp.js CHANGED
@@ -419,7 +419,7 @@ function createDeferredMCPServer(root, options) {
419
419
  let serverPromise;
420
420
  const resolveServer = () => {
421
421
  serverPromise ??= (async () => {
422
- await resolveMcpProxies(root);
422
+ await resolveMcpProxies(root, { projectRoot: options.projectRoot });
423
423
  return createResolvedMCPServer(root, options);
424
424
  })();
425
425
  return serverPromise;
@@ -449,7 +449,7 @@ export function createMCPServer(roots, options) {
449
449
  }
450
450
  export async function runMCP(roots, options) {
451
451
  const root = mergeApprovalsGroup(normalizeRoots(roots));
452
- await resolveMcpProxies(root);
452
+ await resolveMcpProxies(root, { projectRoot: options.projectRoot });
453
453
  const server = createResolvedMCPServer(root, options);
454
454
  await server.listen();
455
455
  }
package/dist/sdk.d.ts CHANGED
@@ -63,6 +63,7 @@ export interface CreateSDKOptions<TServices extends object = Record<string, unkn
63
63
  services?: TServices;
64
64
  casing?: "camel";
65
65
  humanInLoop?: HumanInLoopRuntimeOptions;
66
+ projectRoot?: string;
66
67
  }
67
68
  export declare function createSDK<TRootInfo, TServices extends object = Record<string, unknown>>(root: Group<any> & {
68
69
  readonly __agentKitGroupTypeInfo: TRootInfo;
package/dist/sdk.js CHANGED
@@ -234,7 +234,7 @@ function createDeferredSDK(root, options) {
234
234
  let sdkPromise;
235
235
  const resolveSDK = () => {
236
236
  sdkPromise ??= (async () => {
237
- await resolveMcpProxies(root);
237
+ await resolveMcpProxies(root, { projectRoot: options.projectRoot });
238
238
  return createResolvedSDK(root, options);
239
239
  })();
240
240
  return sdkPromise;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toolcraft",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -45,7 +45,7 @@
45
45
  "commander": "^14.0.3",
46
46
  "console-table-printer": "^2.15.0",
47
47
  "tiny-stdio-mcp-server": "^0.1.0",
48
- "toolcraft-schema": "^0.0.7"
48
+ "toolcraft-schema": "^0.0.8"
49
49
  },
50
50
  "files": [
51
51
  "dist"