@easynet/agent-tool 1.0.85 → 1.0.87

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.
Files changed (102) hide show
  1. package/README.md +1 -0
  2. package/dist/api/register-tools.d.ts +2 -1
  3. package/dist/api/register-tools.d.ts.map +1 -1
  4. package/dist/build.cjs +8 -9
  5. package/dist/build.js +3 -4
  6. package/dist/{chunk-6ORA3MNX.js → chunk-2YP4Q4BW.js} +4 -4
  7. package/dist/{chunk-6ORA3MNX.js.map → chunk-2YP4Q4BW.js.map} +1 -1
  8. package/dist/{chunk-PYCCJF7C.cjs → chunk-AGLGFQUW.cjs} +118 -7
  9. package/dist/chunk-AGLGFQUW.cjs.map +1 -0
  10. package/dist/{chunk-W2WJOS5Z.js → chunk-BBNQ6AWK.js} +6 -8
  11. package/dist/chunk-BBNQ6AWK.js.map +1 -0
  12. package/dist/{chunk-HEVWKBBQ.js → chunk-BDUSB6GT.js} +36 -6
  13. package/dist/chunk-BDUSB6GT.js.map +1 -0
  14. package/dist/{chunk-NEMGE573.js → chunk-IJVVH4JN.js} +3 -3
  15. package/dist/{chunk-NEMGE573.js.map → chunk-IJVVH4JN.js.map} +1 -1
  16. package/dist/{chunk-WUMLZERG.js → chunk-IVL4TBFB.js} +106 -4
  17. package/dist/chunk-IVL4TBFB.js.map +1 -0
  18. package/dist/{chunk-LHKEJNKL.cjs → chunk-JW4EMVTE.cjs} +38 -6
  19. package/dist/chunk-JW4EMVTE.cjs.map +1 -0
  20. package/dist/{chunk-V2RD4BHT.cjs → chunk-LKE7PMRB.cjs} +13 -13
  21. package/dist/{chunk-V2RD4BHT.cjs.map → chunk-LKE7PMRB.cjs.map} +1 -1
  22. package/dist/{chunk-5HSGVA6S.cjs → chunk-PJDINB7G.cjs} +35 -37
  23. package/dist/chunk-PJDINB7G.cjs.map +1 -0
  24. package/dist/{chunk-F4HS7H7K.cjs → chunk-QYY6PNIB.cjs} +4 -4
  25. package/dist/{chunk-F4HS7H7K.cjs.map → chunk-QYY6PNIB.cjs.map} +1 -1
  26. package/dist/{chunk-3D7XYAZO.js → chunk-SNN4QJ5Z.js} +3 -3
  27. package/dist/{chunk-3D7XYAZO.js.map → chunk-SNN4QJ5Z.js.map} +1 -1
  28. package/dist/{chunk-QCHMXVWZ.cjs → chunk-ZDEQREVL.cjs} +14 -14
  29. package/dist/{chunk-QCHMXVWZ.cjs.map → chunk-ZDEQREVL.cjs.map} +1 -1
  30. package/dist/index.cjs +256 -14
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.js +258 -10
  33. package/dist/index.js.map +1 -1
  34. package/dist/{extension.cjs → sdk.cjs} +212 -11
  35. package/dist/sdk.cjs.map +1 -0
  36. package/dist/sdk.d.ts +17 -0
  37. package/dist/sdk.d.ts.map +1 -0
  38. package/dist/{extension.js → sdk.js} +183 -7
  39. package/dist/sdk.js.map +1 -0
  40. package/dist/tools/discoveryFactory.d.ts.map +1 -1
  41. package/dist/tools/function/scanner.d.ts.map +1 -1
  42. package/dist/tools/util/toolDescriptor.d.ts +1 -1
  43. package/dist/tools/util/toolDescriptor.d.ts.map +1 -1
  44. package/dist/utils/cli/index.cjs +23 -26
  45. package/dist/utils/cli/index.cjs.map +1 -1
  46. package/dist/utils/cli/index.js +9 -12
  47. package/dist/utils/cli/index.js.map +1 -1
  48. package/package.json +6 -20
  49. package/dist/api/main.cjs +0 -21
  50. package/dist/api/main.cjs.map +0 -1
  51. package/dist/api/main.d.ts +0 -6
  52. package/dist/api/main.d.ts.map +0 -1
  53. package/dist/api/main.js +0 -12
  54. package/dist/api/main.js.map +0 -1
  55. package/dist/chunk-5HSGVA6S.cjs.map +0 -1
  56. package/dist/chunk-ACSGEQAY.js +0 -258
  57. package/dist/chunk-ACSGEQAY.js.map +0 -1
  58. package/dist/chunk-HEVWKBBQ.js.map +0 -1
  59. package/dist/chunk-LHKEJNKL.cjs.map +0 -1
  60. package/dist/chunk-ODEHUAR4.js +0 -33
  61. package/dist/chunk-ODEHUAR4.js.map +0 -1
  62. package/dist/chunk-PYCCJF7C.cjs.map +0 -1
  63. package/dist/chunk-QEJF3KDV.cjs +0 -38
  64. package/dist/chunk-QEJF3KDV.cjs.map +0 -1
  65. package/dist/chunk-QXQ4477T.js +0 -49
  66. package/dist/chunk-QXQ4477T.js.map +0 -1
  67. package/dist/chunk-RZTTO5MQ.js +0 -65
  68. package/dist/chunk-RZTTO5MQ.js.map +0 -1
  69. package/dist/chunk-W2WJOS5Z.js.map +0 -1
  70. package/dist/chunk-WUMLZERG.js.map +0 -1
  71. package/dist/chunk-XPGHS4W7.cjs +0 -73
  72. package/dist/chunk-XPGHS4W7.cjs.map +0 -1
  73. package/dist/chunk-XW52LOLP.cjs +0 -261
  74. package/dist/chunk-XW52LOLP.cjs.map +0 -1
  75. package/dist/chunk-ZDSZHEQU.cjs +0 -52
  76. package/dist/chunk-ZDSZHEQU.cjs.map +0 -1
  77. package/dist/config/index.d.ts +0 -12
  78. package/dist/config/index.d.ts.map +0 -1
  79. package/dist/config/ref.d.ts +0 -9
  80. package/dist/config/ref.d.ts.map +0 -1
  81. package/dist/core/index.cjs +0 -20
  82. package/dist/core/index.cjs.map +0 -1
  83. package/dist/core/index.d.ts +0 -7
  84. package/dist/core/index.d.ts.map +0 -1
  85. package/dist/core/index.js +0 -3
  86. package/dist/core/index.js.map +0 -1
  87. package/dist/core/runtime.cjs +0 -26
  88. package/dist/core/runtime.cjs.map +0 -1
  89. package/dist/core/runtime.d.ts +0 -12
  90. package/dist/core/runtime.d.ts.map +0 -1
  91. package/dist/core/runtime.js +0 -5
  92. package/dist/core/runtime.js.map +0 -1
  93. package/dist/extension.cjs.map +0 -1
  94. package/dist/extension.d.ts +0 -6
  95. package/dist/extension.d.ts.map +0 -1
  96. package/dist/extension.js.map +0 -1
  97. package/dist/security.cjs +0 -193
  98. package/dist/security.cjs.map +0 -1
  99. package/dist/security.d.ts +0 -6
  100. package/dist/security.d.ts.map +0 -1
  101. package/dist/security.js +0 -182
  102. package/dist/security.js.map +0 -1
@@ -1,15 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var chunkQCHMXVWZ_cjs = require('../../chunk-QCHMXVWZ.cjs');
5
- var chunk5HSGVA6S_cjs = require('../../chunk-5HSGVA6S.cjs');
4
+ var chunkZDEQREVL_cjs = require('../../chunk-ZDEQREVL.cjs');
5
+ var chunkPJDINB7G_cjs = require('../../chunk-PJDINB7G.cjs');
6
+ require('../../chunk-LKE7PMRB.cjs');
7
+ require('../../chunk-AGLGFQUW.cjs');
8
+ require('../../chunk-JW4EMVTE.cjs');
6
9
  var chunkUUNG3GL3_cjs = require('../../chunk-UUNG3GL3.cjs');
7
- require('../../chunk-V2RD4BHT.cjs');
8
- require('../../chunk-LHKEJNKL.cjs');
9
- require('../../chunk-ZDSZHEQU.cjs');
10
- require('../../chunk-PYCCJF7C.cjs');
11
- require('../../chunk-XPGHS4W7.cjs');
12
- require('../../chunk-QEJF3KDV.cjs');
13
10
  var path2 = require('path');
14
11
  var fs = require('fs');
15
12
  var url = require('url');
@@ -114,14 +111,14 @@ function generateManifestTemplate() {
114
111
  * Build step: run framework generateManifest (scan src, emit manifest).
115
112
  * Tool names in the manifest are the exported function names.
116
113
  */
117
- import { generateManifest } from "@easynet/agent-tool/extension";
114
+ import { generateManifest } from "@easynet/agent-tool/sdk";
118
115
 
119
116
  generateManifest(process.cwd());
120
117
  `;
121
118
  }
122
119
  function extensionIndexTemplate() {
123
- return `import { createExtension } from "@easynet/agent-tool/extension";
124
- import type { ToolRegistry, ToolAdapter } from "@easynet/agent-tool/runtime";
120
+ return `import { createExtension } from "@easynet/agent-tool/sdk";
121
+ import type { ToolRegistry, ToolAdapter } from "@easynet/agent-tool/sdk";
125
122
 
126
123
  const ext = createExtension({ importMeta: import.meta });
127
124
 
@@ -274,10 +271,10 @@ async function getRuntimeWithTools(pathOpt, verbose = false) {
274
271
  const stepLog = verbose ? (msg) => process.stderr.write(`[agent-tool] ${msg}
275
272
  `) : void 0;
276
273
  if (stepLog) stepLog(`Loading tool config from ${searchDir}`);
277
- const config = chunk5HSGVA6S_cjs.findAndLoadToolConfig(searchDir);
274
+ const config = chunkPJDINB7G_cjs.findAndLoadToolConfig(searchDir);
278
275
  let sandboxRoot = cwd;
279
276
  if (config.sandboxedPath && typeof config.sandboxedPath === "string" && config.configPath) {
280
- sandboxRoot = chunk5HSGVA6S_cjs.resolveSandboxedPath(config.configPath, config.sandboxedPath);
277
+ sandboxRoot = chunkPJDINB7G_cjs.resolveSandboxedPath(config.configPath, config.sandboxedPath);
281
278
  }
282
279
  if (stepLog) {
283
280
  if (config.configPath) {
@@ -292,7 +289,7 @@ async function getRuntimeWithTools(pathOpt, verbose = false) {
292
289
  enableSandboxValidation: config.enableSandboxValidation ?? DEFAULT_CORE_CONFIG.enableSandboxValidation,
293
290
  allowedHosts: []
294
291
  };
295
- const result = await chunk5HSGVA6S_cjs.createRuntimeFromConfig({
292
+ const result = await chunkPJDINB7G_cjs.createRuntimeFromConfig({
296
293
  coreTools: coreConfig,
297
294
  configFilePath: config.configPath,
298
295
  stepLog
@@ -403,7 +400,7 @@ Next: cd ${path2__namespace.default.basename(targetPath)} && npm install && npm
403
400
  }
404
401
  async function cmdInit(pathOpt) {
405
402
  try {
406
- const { targetPath, filesCreated } = await chunkQCHMXVWZ_cjs.initProject({ targetPath: pathOpt || void 0 });
403
+ const { targetPath, filesCreated } = await chunkZDEQREVL_cjs.initProject({ targetPath: pathOpt || void 0 });
407
404
  process.stdout.write(`Initialized project at ${targetPath}
408
405
  Created: ${filesCreated.join(", ")}
409
406
  Next: npm install && npm run build
@@ -417,7 +414,7 @@ Next: npm install && npm run build
417
414
  }
418
415
  async function cmdBuild(pathOpt, outDir, include, includeN8n) {
419
416
  try {
420
- const result = await chunkQCHMXVWZ_cjs.buildMCPPackage({
417
+ const result = await chunkZDEQREVL_cjs.buildMCPPackage({
421
418
  projectPath: pathOpt || void 0,
422
419
  outDir: outDir || void 0,
423
420
  include: include.length > 0 ? include : void 0,
@@ -438,7 +435,7 @@ mcp.json: ${result.mcpJsonPath}
438
435
  }
439
436
  async function cmdServe(pathOpt) {
440
437
  try {
441
- const { process: child } = await chunkQCHMXVWZ_cjs.runMCPServer({ path: pathOpt || void 0 });
438
+ const { process: child } = await chunkZDEQREVL_cjs.runMCPServer({ path: pathOpt || void 0 });
442
439
  child.stdin?.pipe(process.stdin);
443
440
  child.stdout?.pipe(process.stdout);
444
441
  process.stdin?.unref();
@@ -456,7 +453,7 @@ var LS_DESC_MAX = 72;
456
453
  function formatLsOutput(specs) {
457
454
  const rows = specs.map((spec) => {
458
455
  const { name } = parseToolName(spec.name);
459
- const scope = chunk5HSGVA6S_cjs.getDisplayScope(spec.name, spec.kind, spec.version);
456
+ const scope = chunkPJDINB7G_cjs.getDisplayScope(spec.name, spec.kind, spec.version);
460
457
  const desc = (spec.description ?? "").replace(/\n/g, " ").trim().slice(0, LS_DESC_MAX);
461
458
  return { scope, name, description: desc || "(no description)" };
462
459
  });
@@ -483,7 +480,7 @@ function formatLsOutput(specs) {
483
480
  }
484
481
  function formatDescribeOutput(spec) {
485
482
  const { name: localName } = parseToolName(spec.name);
486
- const scope = chunk5HSGVA6S_cjs.getDisplayScope(spec.name, spec.kind, spec.version);
483
+ const scope = chunkPJDINB7G_cjs.getDisplayScope(spec.name, spec.kind, spec.version);
487
484
  const sections = [];
488
485
  sections.push("\u250C\u2500 Tool");
489
486
  sections.push(`\u2502 name: ${spec.name}`);
@@ -519,7 +516,7 @@ async function cmdLs(pathOpt, verbose = false) {
519
516
  process.stdout.write("No tools registered.\n");
520
517
  const cwd = process.cwd();
521
518
  const searchDir = path2__namespace.default.resolve(cwd, pathOpt ?? ".");
522
- const config = chunk5HSGVA6S_cjs.findAndLoadToolConfig(searchDir);
519
+ const config = chunkPJDINB7G_cjs.findAndLoadToolConfig(searchDir);
523
520
  const hasNpmTools = Array.isArray(config.tools) && config.tools.some((t) => typeof t === "string" && t.startsWith("npm:"));
524
521
  if (hasNpmTools) {
525
522
  process.stdout.write(
@@ -544,7 +541,7 @@ async function cmdDescribe(toolName, pathOpt, verbose = false) {
544
541
  }
545
542
  try {
546
543
  const { registry } = await getRuntimeWithTools(pathOpt, verbose);
547
- const registryName = chunk5HSGVA6S_cjs.resolveToolDescriptor(toolName.trim());
544
+ const registryName = chunkPJDINB7G_cjs.resolveToolDescriptor(toolName.trim());
548
545
  const spec = registry.get(registryName);
549
546
  if (!spec) {
550
547
  process.stderr.write(`Tool not found: ${toolName}
@@ -593,7 +590,7 @@ async function cmdRun(toolName, toolArgsJson, pathOpt, verbose = false) {
593
590
  }
594
591
  try {
595
592
  const { runtime, registry } = await getRuntimeWithTools(pathOpt, verbose);
596
- const registryName = chunk5HSGVA6S_cjs.resolveToolDescriptor(toolName.trim());
593
+ const registryName = chunkPJDINB7G_cjs.resolveToolDescriptor(toolName.trim());
597
594
  if (!registry.get(registryName)) {
598
595
  process.stderr.write(`Tool not found: ${toolName}
599
596
  `);
@@ -621,11 +618,11 @@ async function cmdStartMcp(pathOpt, verbose = false, stdio = false, port = 3e3,
621
618
  try {
622
619
  const { runtime } = await getRuntimeWithTools(pathOpt, verbose);
623
620
  if (stdio) {
624
- await chunk5HSGVA6S_cjs.runMCPServerOverStdio(runtime);
621
+ await chunkPJDINB7G_cjs.runMCPServerOverStdio(runtime);
625
622
  return 0;
626
623
  }
627
- const streamable = await chunk5HSGVA6S_cjs.createMCPServerStreamableHttp(runtime, { port, host, path: "/mcp" });
628
- const { url, port: actualPort } = await streamable.listen(port, host);
624
+ const streamable = await chunkPJDINB7G_cjs.createMCPServerStreamableHttp(runtime, { port, host, path: "/mcp" });
625
+ const { url } = await streamable.listen(port, host);
629
626
  process.stdout.write(`MCP Streamable HTTP: ${url}
630
627
  `);
631
628
  await new Promise(() => {
@@ -640,7 +637,7 @@ async function cmdStartMcp(pathOpt, verbose = false, stdio = false, port = 3e3,
640
637
  async function cmdStartHttp(port, host, pathOpt, verbose = false) {
641
638
  try {
642
639
  const { runtime } = await getRuntimeWithTools(pathOpt, verbose);
643
- const http = await chunk5HSGVA6S_cjs.createHttpService(runtime);
640
+ const http = await chunkPJDINB7G_cjs.createHttpService(runtime);
644
641
  const { port: actualPort, host: actualHost } = await http.listen({ port, host });
645
642
  const base = `http://${actualHost}:${actualPort}`;
646
643
  process.stdout.write(`API: ${base}/invoke (POST), ${base}/tools (GET)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/expose/extension-init/initExtension.ts","../../../src/utils/cli/help.ts","../../../src/utils/cli/index.ts"],"names":["path","fs","findAndLoadToolConfig","resolveSandboxedPath","createRuntimeFromConfig","initProject","buildMCPPackage","runMCPServer","resolve","getDisplayScope","resolveToolDescriptor","enrichSpecWithCanonicalSchema","runMCPServerOverStdio","createMCPServerStreamableHttp","createHttpService","fileURLToPath","realpathSync"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Scaffold a new agent-tool extension: folder, src, hello-world tool, generate-manifest, index, package.json.\n * Use: agent-tool init <extension name> → then cd <name> && npm install && npm run build.\n */\n\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\n\nexport interface InitExtensionOptions {\n /** Extension name (folder name to create). */\n extensionName: string;\n /** Parent directory (default: process.cwd()). */\n parentDir?: string;\n /** npm package scope (e.g. \"wallee\" → package name @wallee/<name>). Optional. */\n scope?: string;\n}\n\n/** Sanitize extension name for npm package name: lowercase, hyphens allowed. */\nfunction toPackageName(name: string): string {\n return name\n .trim()\n .toLowerCase()\n .replace(/\\s+/g, \"-\")\n .replace(/[^a-z0-9-]/g, \"\");\n}\n\nfunction packageJsonTemplate(packageName: string): string {\n return `{\n \"name\": \"${packageName}\",\n \"version\": \"0.0.1\",\n \"description\": \"Tools extension for @easynet/agent-tool\",\n \"type\": \"module\",\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n }\n },\n \"files\": [\"dist\"],\n \"scripts\": {\n \"build\": \"tsx generate-manifest.ts && tsc -p tsconfig.build.json\",\n \"clean\": \"rm -rf dist\",\n \"pretest\": \"npm run build\",\n \"test\": \"vitest run\"\n },\n \"dependencies\": {\n \"@easynet/agent-tool\": \"latest\"\n },\n \"peerDependencies\": {\n \"@easynet/agent-tool\": \"*\"\n },\n \"devDependencies\": {\n \"tsx\": \"^4.19.2\",\n \"typescript\": \"~5.7.2\",\n \"vitest\": \"^2.1.8\"\n },\n \"license\": \"MIT\"\n}\n`;\n}\n\nfunction tsconfigTemplate(): string {\n return `{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"NodeNext\",\n \"moduleResolution\": \"NodeNext\",\n \"lib\": [\"ES2022\"],\n \"strict\": true,\n \"skipLibCheck\": true,\n \"declaration\": true,\n \"declarationMap\": true,\n \"sourceMap\": true,\n \"outDir\": \"./dist\",\n \"rootDir\": \".\",\n \"resolveJsonModule\": true,\n \"isolatedModules\": true\n },\n \"include\": [\"./**/*.ts\"],\n \"exclude\": [\"node_modules\", \"dist\", \"**/dist/**\"]\n}\n`;\n}\n\nfunction tsconfigBuildTemplate(): string {\n return `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": { \"rootDir\": \".\", \"outDir\": \"dist\" },\n \"include\": [\"./**/*.ts\"],\n \"exclude\": [\"node_modules\", \"dist\", \"**/dist/**\", \"**/tsconfig*.json\", \"**/*.test.ts\", \"test\", \"scripts\", \"generate-manifest.ts\"]\n}\n`;\n}\n\nfunction generateManifestTemplate(): string {\n return `/**\n * Build step: run framework generateManifest (scan src, emit manifest).\n * Tool names in the manifest are the exported function names.\n */\nimport { generateManifest } from \"@easynet/agent-tool/extension\";\n\ngenerateManifest(process.cwd());\n`;\n}\n\nfunction extensionIndexTemplate(): string {\n return `import { createExtension } from \"@easynet/agent-tool/extension\";\nimport type { ToolRegistry, ToolAdapter } from \"@easynet/agent-tool/runtime\";\n\nconst ext = createExtension({ importMeta: import.meta });\n\n/** Framework contract: extension exports register(registry, options). */\nexport function register(\n registry: ToolRegistry,\n options?: { only?: string[]; namePrefixes?: string[] },\n): ToolAdapter {\n return ext.register(registry, options ?? {});\n}\n\nexport const getExtensionContext = ext.getContext;\nexport const runWithExtensionContext = ext.runWith;\n`;\n}\n\nfunction helloWorldTemplate(): string {\n return `/**\n * A simple hello-world tool.\n * @tool\n * @effect none\n */\nexport async function helloWorld(_args: Record<string, unknown>) {\n return {\n result: { message: \"Hello, World!\" },\n evidence: [\n {\n type: \"tool\",\n ref: \"helloWorld\",\n summary: \"Hello, World!\",\n createdAt: new Date().toISOString(),\n },\n ],\n };\n}\n`;\n}\n\nfunction readmeTemplate(packageName: string): string {\n return `# ${packageName}\n\nScaffolded by \\`agent-tool init ${packageName}\\`.\n\n## Quick start\n\n\\`\\`\\`bash\nnpm install\nnpm run build\n\\`\\`\\`\n\nAdd more tools under \\`src/\\` (export async functions with \\`@tool\\` JSDoc), then \\`npm run build\\` again.\n\n## Use in tool config\n\nIn your \\`tool.yaml\\` \\`tools.packages\\`:\n\n\\`\\`\\`yaml\ntools:\n packages:\n file:./path/to/${packageName}: {}\n\\`\\`\\`\n\nOr publish and use: \\`npm:@your-scope/${packageName}\\`\n`;\n}\n\nfunction templates(packageName: string) {\n return {\n \"package.json\": packageJsonTemplate(packageName),\n \"tsconfig.json\": tsconfigTemplate(),\n \"tsconfig.build.json\": tsconfigBuildTemplate(),\n \"generate-manifest.ts\": generateManifestTemplate(),\n \"index.ts\": extensionIndexTemplate(),\n \"src/helloWorld.ts\": helloWorldTemplate(),\n \"README.md\": readmeTemplate(packageName),\n };\n}\n\n/**\n * Create extension scaffold at parentDir/extensionName.\n * Returns target path and list of created files.\n */\nexport async function initExtension(\n options: InitExtensionOptions,\n): Promise<{ targetPath: string; filesCreated: string[] }> {\n const parent = path.resolve(options.parentDir ?? process.cwd());\n const name = options.extensionName.trim();\n if (!name) {\n throw new Error(\"Extension name is required\");\n }\n const targetPath = path.join(parent, name);\n const baseName = toPackageName(name) || name.replace(/\\s/g, \"-\").toLowerCase();\n const scopeNorm = options.scope?.trim().replace(/^@/, \"\") || \"\";\n const packageName = scopeNorm ? `@${scopeNorm}/${baseName}` : baseName;\n const filesCreated: string[] = [];\n const tmpl = templates(packageName);\n\n await fs.mkdir(targetPath, { recursive: true });\n\n for (const [relPath, content] of Object.entries(tmpl)) {\n const fullPath = path.join(targetPath, relPath);\n await fs.mkdir(path.dirname(fullPath), { recursive: true });\n await fs.writeFile(fullPath, content.trimStart(), \"utf8\");\n filesCreated.push(relPath);\n }\n\n return { targetPath, filesCreated };\n}\n","export function printHelp(bin = \"agent-tool\"): void {\n process.stdout.write(`\nUsage: ${bin} <command> [options] [args]\n\nPrimary commands:\n ls List all tools (scope, name, description).\n describe <tool path> Show tool details (schema, capabilities, etc.).\n run <tool path> [params] Run a tool. Params: JSON, e.g. '{\"path\":\"README.md\"}'\n start mcp Start MCP server (default: Streamable HTTP; use --stdio for stdio).\n start http Start OpenAPI HTTP server (API + Swagger).\n\nOther commands:\n init [extension name] Create extension scaffold (folder + src + hello-world + generate-manifest + index + package.json). With no name: create MCP project in --path. Then: cd <folder> && npm install && npm run build.\n build Scan folder for @tool / SKILL / n8n, generate MCP npm package.\n serve Start the generated MCP server (stdio) for testing.\n list Alias for ls.\n show <tool> Alias for describe.\n help Show this help.\n\nOptions:\n --path, -p <path> For init/build/serve: path (default: cwd).\n --scope, -s <scope> For init [extension name]: npm package scope (e.g. wallee → @wallee/<name>).\n --out, -o <path> For build: output directory.\n --include, -i <glob> For build: glob for TS files.\n --include-n8n For build: include n8n workflow tools.\n --verbose, -v Print step logs (config load, cache, tools registered).\n --stdio For start mcp: use stdio transport (default: Streamable HTTP).\n --port <number> For start mcp/http: port (default: 3000).\n --host <string> For start mcp/http: host (default: 127.0.0.1).\n --help, -h Show this help.\n\nExamples:\n ${bin} ls\n ${bin} describe core.fs.readText\n ${bin} run core.fs.readText '{\"path\":\"README.md\"}'\n ${bin} start mcp\n ${bin} start mcp --stdio\n ${bin} start http --port 3000\n ${bin} build --path . --out dist\n ${bin} init my-extension\n\nFor agent run (ReAct + agent.yaml): npx @easynet/agent-orchestra run \"task\" -c agent.yaml\n`);\n}\n","#!/usr/bin/env node\n/**\n * CLI for @easynet/agent-tool: ls | describe | run | start mcp | start http | init | build | serve | help.\n * Usage: agent-tool <command> [options] [args]\n * Primary: ls, describe [tool path], run [tool path] [parameters], start mcp, start http.\n */\n\nimport path from \"node:path\";\nimport { realpathSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { initProject } from \"../../api/expose/mcp-build/init.js\";\nimport { initExtension } from \"../../api/expose/extension-init/index.js\";\nimport { buildMCPPackage } from \"../../api/expose/mcp-build/build.js\";\nimport { runMCPServer } from \"../../api/expose/mcp-build/run.js\";\nimport { createRuntimeFromConfig, createRuntimeFromConfigSync } from \"../../api/runtimeFromConfig.js\";\nimport { createHttpService } from \"../../api/expose/openapiHttp.js\";\nimport { runMCPServerOverStdio, createMCPServerStreamableHttp } from \"../../api/expose/mcpServer.js\";\nimport type { ToolSpec } from \"../../core/types/ToolSpec.js\";\nimport type { ExecContext } from \"../../core/types/ToolIntent.js\";\nimport { getDisplayScope, resolveToolDescriptor } from \"../../tools/util/toolDescriptor.js\";\nimport { findAndLoadToolConfig, resolveSandboxedPath } from \"../../tools/util/toolConfig.js\";\nimport { enrichSpecWithCanonicalSchema } from \"../../tools/util/canonicalCoreSchemas.js\";\nimport { printHelp } from \"./help.js\";\n\ntype CliCommand = \"init\" | \"build\" | \"serve\" | \"list\" | \"ls\" | \"show\" | \"describe\" | \"run\" | \"start\" | \"help\";\ntype StartSubcommand = \"mcp\" | \"http\";\n\ninterface CliArgs {\n command: CliCommand;\n startSub: StartSubcommand;\n help: boolean;\n verbose: boolean;\n /** For start mcp: use stdio transport (default: streamable HTTP) */\n mcpStdio: boolean;\n pathOpt: string;\n /** For init: extension name (folder to create). If set, scaffold extension; else MCP project. */\n extensionName: string;\n /** For init [extension name]: npm package scope (e.g. wallee → @wallee/name). */\n scope: string;\n outDir: string;\n include: string[];\n includeN8n: boolean;\n toolName: string;\n toolArgsJson: string;\n port: number;\n host: string;\n}\n\nconst DEFAULT_CORE_CONFIG = {\n sandboxRoot: process.cwd(),\n enableSandboxValidation: false,\n allowedHosts: [] as string[],\n};\n\nasync function getRuntimeWithTools(pathOpt?: string, verbose = false): Promise<{ runtime: Awaited<ReturnType<typeof createRuntimeFromConfig>>[\"runtime\"]; registry: Awaited<ReturnType<typeof createRuntimeFromConfig>>[\"registry\"] }> {\n const cwd = process.cwd();\n const searchDir = path.resolve(cwd, pathOpt ?? \".\");\n const stepLog = verbose ? (msg: string) => process.stderr.write(`[agent-tool] ${msg}\\n`) : undefined;\n if (stepLog) stepLog(`Loading tool config from ${searchDir}`);\n const config = findAndLoadToolConfig(searchDir);\n let sandboxRoot = cwd;\n if (config.sandboxedPath && typeof config.sandboxedPath === \"string\" && config.configPath) {\n sandboxRoot = resolveSandboxedPath(config.configPath, config.sandboxedPath);\n }\n if (stepLog) {\n if (config.configPath) {\n const n = Array.isArray(config.tools) ? config.tools.length : 0;\n stepLog(`Config: ${config.configPath} (${n} tool(s)), sandbox: ${sandboxRoot}`);\n } else {\n stepLog(\"No tool.yaml found\");\n }\n }\n const coreConfig = {\n sandboxRoot,\n enableSandboxValidation: config.enableSandboxValidation ?? DEFAULT_CORE_CONFIG.enableSandboxValidation,\n allowedHosts: [] as string[],\n };\n const result = await createRuntimeFromConfig({\n coreTools: coreConfig,\n configFilePath: config.configPath,\n stepLog,\n });\n if (stepLog) stepLog(`Registered ${result.registry.snapshot().length} tool(s)`);\n return result;\n}\n\n/** Parse \"scope/name\" into { scope, name }; if no slash, scope is \"\", name is full. */\nfunction parseToolName(fullName: string): { scope: string; name: string } {\n const i = fullName.indexOf(\"/\");\n if (i < 0) return { scope: \"\", name: fullName };\n return { scope: fullName.slice(0, i), name: fullName.slice(i + 1) };\n}\n\nfunction parseArgv(argv: string[]): CliArgs {\n const args = argv.slice(2);\n let command: CliCommand = \"help\";\n let startSub: StartSubcommand = \"http\";\n let help = false;\n let verbose = false;\n let mcpStdio = false;\n let pathOpt = \"\";\n let extensionName = \"\";\n let scope = \"\";\n let outDir = \"\";\n let include: string[] = [];\n let includeN8n = false;\n let toolName = \"\";\n let toolArgsJson = \"{}\";\n let port = 3000;\n let host = \"127.0.0.1\";\n\n const commands: CliCommand[] = [\n \"init\", \"build\", \"serve\", \"list\", \"ls\", \"show\", \"describe\", \"run\", \"start\", \"help\",\n ];\n const startSubcommands: StartSubcommand[] = [\"mcp\", \"http\"];\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--help\" || arg === \"-h\") {\n help = true;\n } else if (arg === \"--verbose\" || arg === \"-v\") {\n verbose = true;\n } else if (arg === \"--stdio\") {\n mcpStdio = true;\n } else if (arg === \"--path\" || arg === \"-p\") {\n pathOpt = path.resolve(process.cwd(), args[++i] ?? \"\");\n } else if (arg === \"--out\" || arg === \"-o\") {\n outDir = path.resolve(process.cwd(), args[++i] ?? \"\");\n } else if (arg === \"--include\" || arg === \"-i\") {\n const v = args[++i];\n if (v) include.push(v);\n } else if (arg === \"--include-n8n\") {\n includeN8n = true;\n } else if (arg === \"--port\") {\n const v = args[++i];\n if (v !== undefined) port = parseInt(v, 10) || 3000;\n } else if (arg === \"--host\") {\n const v = args[++i];\n if (v !== undefined) host = v;\n } else if (arg === \"--scope\" || arg === \"-s\") {\n scope = args[++i] ?? \"\";\n } else if (arg && !arg.startsWith(\"-\") && commands.includes(arg as CliCommand)) {\n command = arg as CliCommand;\n const nextArg = args[i + 1];\n if (command === \"init\" && nextArg !== undefined && !nextArg.startsWith(\"-\")) {\n extensionName = args[++i] ?? \"\";\n } else if ((command === \"show\" || command === \"describe\") && nextArg !== undefined && !nextArg.startsWith(\"-\")) {\n toolName = args[++i] ?? \"\";\n } else if (command === \"run\" && nextArg !== undefined && !nextArg.startsWith(\"-\")) {\n toolName = args[++i] ?? \"\";\n const runNext = args[i + 1];\n if (runNext !== undefined && !runNext.startsWith(\"-\")) {\n toolArgsJson = args[++i] ?? \"{}\";\n }\n } else if (command === \"start\" && nextArg !== undefined && !nextArg.startsWith(\"-\") && startSubcommands.includes(nextArg as StartSubcommand)) {\n startSub = args[++i] as StartSubcommand;\n }\n }\n }\n\n return { command, startSub, help, verbose, mcpStdio, pathOpt, extensionName, scope, outDir, include, includeN8n, toolName, toolArgsJson, port, host };\n}\n\nasync function cmdInitExtension(extensionName: string, pathOpt: string, scope: string): Promise<number> {\n try {\n const parentDir = pathOpt ? path.resolve(process.cwd(), pathOpt) : undefined;\n const { targetPath, filesCreated } = await initExtension({\n extensionName,\n parentDir: parentDir || process.cwd(),\n scope: scope || undefined,\n });\n process.stdout.write(\n `Extension scaffold at ${targetPath}\\nCreated: ${filesCreated.join(\", \")}\\nNext: cd ${path.basename(targetPath)} && npm install && npm run build\\n`,\n );\n return 0;\n } catch (err) {\n process.stderr.write(`Init extension failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdInit(pathOpt: string): Promise<number> {\n try {\n const { targetPath, filesCreated } = await initProject({ targetPath: pathOpt || undefined });\n process.stdout.write(`Initialized project at ${targetPath}\\nCreated: ${filesCreated.join(\", \")}\\nNext: npm install && npm run build\\n`);\n return 0;\n } catch (err) {\n process.stderr.write(`Init failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdBuild(\n pathOpt: string,\n outDir: string,\n include: string[],\n includeN8n: boolean,\n): Promise<number> {\n try {\n const result = await buildMCPPackage({\n projectPath: pathOpt || undefined,\n outDir: outDir || undefined,\n include: include.length > 0 ? include : undefined,\n includeN8n: includeN8n || undefined,\n });\n process.stdout.write(\n `Built ${result.toolCount} tool(s) -> ${result.outDir}\\nEntry: ${result.entryPath}\\nmcp.json: ${result.mcpJsonPath}\\n`,\n );\n return 0;\n } catch (err) {\n process.stderr.write(`Build failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdServe(pathOpt: string): Promise<number> {\n try {\n const { process: child } = await runMCPServer({ path: pathOpt || undefined });\n child.stdin?.pipe(process.stdin);\n child.stdout?.pipe(process.stdout);\n process.stdin?.unref();\n const exit = new Promise<number>((resolve) => {\n child.on(\"close\", (code) => resolve(code ?? 0));\n });\n return exit;\n } catch (err) {\n process.stderr.write(`Serve failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nconst LS_DESC_MAX = 72;\n\n/** Format tool list as table: SCOPE (full package name) | NAME | DESCRIPTION */\nfunction formatLsOutput(specs: ToolSpec[]): string {\n const rows = specs.map((spec) => {\n const { name } = parseToolName(spec.name);\n const scope = getDisplayScope(spec.name, spec.kind, spec.version);\n const desc = (spec.description ?? \"\")\n .replace(/\\n/g, \" \")\n .trim()\n .slice(0, LS_DESC_MAX);\n return { scope, name, description: desc || \"(no description)\" };\n });\n\n const scopeW = Math.max(6, ...rows.map((r) => r.scope.length));\n const nameW = Math.max(4, ...rows.map((r) => r.name.length));\n\n const sep = `${\"─\".repeat(scopeW)}┬${\"─\".repeat(nameW)}┬${\"─\".repeat(LS_DESC_MAX + 2)}`;\n const header = [\n \"SCOPE\".padEnd(scopeW),\n \"NAME\".padEnd(nameW),\n \"DESCRIPTION\",\n ].join(\" │ \");\n const lines = [\n header,\n sep,\n ...rows.map((r) =>\n [\n r.scope.padEnd(scopeW),\n r.name.padEnd(nameW),\n r.description,\n ].join(\" │ \")\n ),\n ];\n return lines.join(\"\\n\");\n}\n\n/** Format single tool details (describe) with clear sections */\nfunction formatDescribeOutput(spec: ToolSpec): string {\n const { name: localName } = parseToolName(spec.name);\n const scope = getDisplayScope(spec.name, spec.kind, spec.version);\n const sections: string[] = [];\n\n sections.push(\"┌─ Tool\");\n sections.push(`│ name: ${spec.name}`);\n sections.push(`│ scope: ${scope}`);\n sections.push(`│ localName: ${localName}`);\n sections.push(`│ version: ${spec.version}`);\n sections.push(`│ kind: ${spec.kind}`);\n sections.push(\"├─ Description\");\n sections.push(`│ ${(spec.description ?? \"(none)\").replace(/\\n/g, \"\\n│ \")}`);\n sections.push(\"├─ Tags\");\n sections.push(`│ ${spec.tags?.length ? spec.tags.join(\", \") : \"(none)\"}`);\n sections.push(\"├─ Capabilities\");\n sections.push(`│ ${spec.capabilities.join(\", \")}`);\n if (spec._meta?.hitl?.sideEffect) {\n sections.push(\"├─ HITL\");\n sections.push(`│ sideEffect: ${spec._meta.hitl.sideEffect}`);\n }\n sections.push(\"├─ Input schema\");\n sections.push(\n \"│ \" + JSON.stringify(spec.inputSchema, null, 2).replace(/\\n/g, \"\\n│ \")\n );\n sections.push(\"└─ Output schema\");\n sections.push(\n \" \" + JSON.stringify(spec.outputSchema, null, 2).replace(/\\n/g, \"\\n \")\n );\n\n return sections.join(\"\\n\");\n}\n\nasync function cmdLs(pathOpt?: string, verbose = false): Promise<number> {\n try {\n const { registry } = await getRuntimeWithTools(pathOpt, verbose);\n const specs = registry.snapshot();\n if (specs.length === 0) {\n process.stdout.write(\"No tools registered.\\n\");\n const cwd = process.cwd();\n const searchDir = path.resolve(cwd, pathOpt ?? \".\");\n const config = findAndLoadToolConfig(searchDir);\n const hasNpmTools = Array.isArray(config.tools) && config.tools.some((t) => typeof t === \"string\" && t.startsWith(\"npm:\"));\n if (hasNpmTools) {\n process.stdout.write(\n \"Tip: Install builtin tools in this directory so 'agent-tool ls' finds them: npm init -y && npm install @easynet/agent-tool-buildin\\n\"\n );\n }\n return 0;\n }\n specs.sort((a, b) => a.name.localeCompare(b.name));\n process.stdout.write(formatLsOutput(specs) + \"\\n\");\n return 0;\n } catch (err) {\n process.stderr.write(`ls failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdDescribe(toolName: string, pathOpt?: string, verbose = false): Promise<number> {\n if (!toolName.trim()) {\n process.stderr.write(\"Usage: agent-tool describe <tool path>\\n\");\n return 1;\n }\n try {\n const { registry } = await getRuntimeWithTools(pathOpt, verbose);\n const registryName = resolveToolDescriptor(toolName.trim());\n const spec = registry.get(registryName);\n if (!spec) {\n process.stderr.write(`Tool not found: ${toolName}\\n`);\n return 1;\n }\n process.stdout.write(formatDescribeOutput(enrichSpecWithCanonicalSchema(spec)) + \"\\n\");\n return 0;\n } catch (err) {\n process.stderr.write(`describe failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nfunction defaultExecContext(): ExecContext {\n return {\n requestId: `cli-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,\n taskId: `task-${Date.now()}`,\n permissions: [\n \"read:web\",\n \"read:fs\",\n \"write:fs\",\n \"read:db\",\n \"write:db\",\n \"network\",\n \"workflow\",\n \"danger:destructive\",\n \"exec\",\n ],\n };\n}\n\nasync function cmdRun(toolName: string, toolArgsJson: string, pathOpt?: string, verbose = false): Promise<number> {\n if (!toolName.trim()) {\n process.stderr.write(\"Usage: agent-tool run <tool path> [<json params>]\\n\");\n return 1;\n }\n let args: unknown = {};\n if (toolArgsJson.trim()) {\n try {\n args = JSON.parse(toolArgsJson) as unknown;\n } catch {\n process.stderr.write(\"Invalid JSON for parameters. Example: '{\\\"path\\\":\\\"README.md\\\"}'\\n\");\n return 1;\n }\n }\n try {\n const { runtime, registry } = await getRuntimeWithTools(pathOpt, verbose);\n const registryName = resolveToolDescriptor(toolName.trim());\n if (!registry.get(registryName)) {\n process.stderr.write(`Tool not found: ${toolName}\\n`);\n return 1;\n }\n const ctx = defaultExecContext();\n const result = await runtime.invoke(\n { tool: registryName, args, purpose: \"cli\" },\n ctx\n );\n if (result.ok) {\n process.stdout.write(JSON.stringify(result.result, null, 2) + \"\\n\");\n return 0;\n }\n process.stderr.write(`Tool error: ${result.error?.kind ?? \"unknown\"} - ${result.error?.message ?? \"\"}\\n`);\n return 1;\n } catch (err) {\n process.stderr.write(`Run failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdStartMcp(pathOpt?: string, verbose = false, stdio = false, port = 3000, host = \"127.0.0.1\"): Promise<number> {\n try {\n const { runtime } = await getRuntimeWithTools(pathOpt, verbose);\n if (stdio) {\n await runMCPServerOverStdio(runtime);\n return 0;\n }\n const streamable = await createMCPServerStreamableHttp(runtime, { port, host, path: \"/mcp\" });\n const { url, port: actualPort } = await streamable.listen(port, host);\n process.stdout.write(`MCP Streamable HTTP: ${url}\\n`);\n await new Promise<void>(() => {});\n return 0;\n } catch (err) {\n process.stderr.write(`start mcp failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdStartHttp(port: number, host: string, pathOpt?: string, verbose = false): Promise<number> {\n try {\n const { runtime } = await getRuntimeWithTools(pathOpt, verbose);\n const http = await createHttpService(runtime);\n const { port: actualPort, host: actualHost } = await http.listen({ port, host });\n const base = `http://${actualHost}:${actualPort}`;\n process.stdout.write(`API: ${base}/invoke (POST), ${base}/tools (GET)\\n`);\n process.stdout.write(`Swagger UI: ${base}/ (spec: ${base}/openapi.json)\\n`);\n await new Promise<void>(() => {});\n return 0;\n } catch (err) {\n process.stderr.write(`start http failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function main(argv: string[] = process.argv): Promise<number> {\n const { command, startSub, help, verbose, mcpStdio, pathOpt, extensionName, scope, outDir, include, includeN8n, toolName, toolArgsJson, port, host } =\n parseArgv(argv);\n\n if (help || command === \"help\") {\n printHelp();\n return 0;\n }\n\n if (command === \"init\") {\n if (extensionName) return cmdInitExtension(extensionName, pathOpt, scope);\n return cmdInit(pathOpt);\n }\n if (command === \"build\") return cmdBuild(pathOpt, outDir, include, includeN8n);\n if (command === \"serve\") return cmdServe(pathOpt);\n if (command === \"ls\" || command === \"list\") return cmdLs(pathOpt, verbose);\n if (command === \"describe\" || command === \"show\") return cmdDescribe(toolName, pathOpt, verbose);\n if (command === \"run\") return cmdRun(toolName, toolArgsJson, pathOpt, verbose);\n if (command === \"start\") {\n if (startSub === \"mcp\") return cmdStartMcp(pathOpt, verbose, mcpStdio, port, host);\n if (startSub === \"http\") return cmdStartHttp(port, host, pathOpt, verbose);\n process.stderr.write(\"Usage: agent-tool start mcp | agent-tool start http [--port 3000] [--host 127.0.0.1]\\n\");\n return 1;\n }\n\n printHelp();\n return 1;\n}\n\n/** Run CLI with the given argv (same shape as process.argv). Exported for tests. */\nexport async function run(argv: string[]): Promise<number> {\n return main(argv);\n}\n\nconst scriptPath = fileURLToPath(import.meta.url);\nconst invokedPath = process.argv[1];\nlet isMain = typeof process !== \"undefined\" && invokedPath !== undefined && invokedPath === scriptPath;\nif (!isMain && invokedPath) {\n try {\n isMain = realpathSync(invokedPath) === realpathSync(scriptPath);\n } catch {\n // keep isMain false if realpath fails\n }\n}\n\nif (isMain) {\n main()\n .then((code) => process.exit(code))\n .catch((err) => {\n process.stderr.write(String(err?.message ?? err) + \"\\n\");\n process.exit(1);\n });\n}\n"]}
1
+ {"version":3,"sources":["../../../src/api/expose/extension-init/initExtension.ts","../../../src/utils/cli/help.ts","../../../src/utils/cli/index.ts"],"names":["path","fs","findAndLoadToolConfig","resolveSandboxedPath","createRuntimeFromConfig","initProject","buildMCPPackage","runMCPServer","resolve","getDisplayScope","resolveToolDescriptor","enrichSpecWithCanonicalSchema","runMCPServerOverStdio","createMCPServerStreamableHttp","createHttpService","fileURLToPath","realpathSync"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Scaffold a new agent-tool extension: folder, src, hello-world tool, generate-manifest, index, package.json.\n * Use: agent-tool init <extension name> → then cd <name> && npm install && npm run build.\n */\n\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\n\nexport interface InitExtensionOptions {\n /** Extension name (folder name to create). */\n extensionName: string;\n /** Parent directory (default: process.cwd()). */\n parentDir?: string;\n /** npm package scope (e.g. \"wallee\" → package name @wallee/<name>). Optional. */\n scope?: string;\n}\n\n/** Sanitize extension name for npm package name: lowercase, hyphens allowed. */\nfunction toPackageName(name: string): string {\n return name\n .trim()\n .toLowerCase()\n .replace(/\\s+/g, \"-\")\n .replace(/[^a-z0-9-]/g, \"\");\n}\n\nfunction packageJsonTemplate(packageName: string): string {\n return `{\n \"name\": \"${packageName}\",\n \"version\": \"0.0.1\",\n \"description\": \"Tools extension for @easynet/agent-tool\",\n \"type\": \"module\",\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n }\n },\n \"files\": [\"dist\"],\n \"scripts\": {\n \"build\": \"tsx generate-manifest.ts && tsc -p tsconfig.build.json\",\n \"clean\": \"rm -rf dist\",\n \"pretest\": \"npm run build\",\n \"test\": \"vitest run\"\n },\n \"dependencies\": {\n \"@easynet/agent-tool\": \"latest\"\n },\n \"peerDependencies\": {\n \"@easynet/agent-tool\": \"*\"\n },\n \"devDependencies\": {\n \"tsx\": \"^4.19.2\",\n \"typescript\": \"~5.7.2\",\n \"vitest\": \"^2.1.8\"\n },\n \"license\": \"MIT\"\n}\n`;\n}\n\nfunction tsconfigTemplate(): string {\n return `{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"NodeNext\",\n \"moduleResolution\": \"NodeNext\",\n \"lib\": [\"ES2022\"],\n \"strict\": true,\n \"skipLibCheck\": true,\n \"declaration\": true,\n \"declarationMap\": true,\n \"sourceMap\": true,\n \"outDir\": \"./dist\",\n \"rootDir\": \".\",\n \"resolveJsonModule\": true,\n \"isolatedModules\": true\n },\n \"include\": [\"./**/*.ts\"],\n \"exclude\": [\"node_modules\", \"dist\", \"**/dist/**\"]\n}\n`;\n}\n\nfunction tsconfigBuildTemplate(): string {\n return `{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": { \"rootDir\": \".\", \"outDir\": \"dist\" },\n \"include\": [\"./**/*.ts\"],\n \"exclude\": [\"node_modules\", \"dist\", \"**/dist/**\", \"**/tsconfig*.json\", \"**/*.test.ts\", \"test\", \"scripts\", \"generate-manifest.ts\"]\n}\n`;\n}\n\nfunction generateManifestTemplate(): string {\n return `/**\n * Build step: run framework generateManifest (scan src, emit manifest).\n * Tool names in the manifest are the exported function names.\n */\nimport { generateManifest } from \"@easynet/agent-tool/sdk\";\n\ngenerateManifest(process.cwd());\n`;\n}\n\nfunction extensionIndexTemplate(): string {\n return `import { createExtension } from \"@easynet/agent-tool/sdk\";\nimport type { ToolRegistry, ToolAdapter } from \"@easynet/agent-tool/sdk\";\n\nconst ext = createExtension({ importMeta: import.meta });\n\n/** Framework contract: extension exports register(registry, options). */\nexport function register(\n registry: ToolRegistry,\n options?: { only?: string[]; namePrefixes?: string[] },\n): ToolAdapter {\n return ext.register(registry, options ?? {});\n}\n\nexport const getExtensionContext = ext.getContext;\nexport const runWithExtensionContext = ext.runWith;\n`;\n}\n\nfunction helloWorldTemplate(): string {\n return `/**\n * A simple hello-world tool.\n * @tool\n * @effect none\n */\nexport async function helloWorld(_args: Record<string, unknown>) {\n return {\n result: { message: \"Hello, World!\" },\n evidence: [\n {\n type: \"tool\",\n ref: \"helloWorld\",\n summary: \"Hello, World!\",\n createdAt: new Date().toISOString(),\n },\n ],\n };\n}\n`;\n}\n\nfunction readmeTemplate(packageName: string): string {\n return `# ${packageName}\n\nScaffolded by \\`agent-tool init ${packageName}\\`.\n\n## Quick start\n\n\\`\\`\\`bash\nnpm install\nnpm run build\n\\`\\`\\`\n\nAdd more tools under \\`src/\\` (export async functions with \\`@tool\\` JSDoc), then \\`npm run build\\` again.\n\n## Use in tool config\n\nIn your \\`tool.yaml\\` \\`tools.packages\\`:\n\n\\`\\`\\`yaml\ntools:\n packages:\n file:./path/to/${packageName}: {}\n\\`\\`\\`\n\nOr publish and use: \\`npm:@your-scope/${packageName}\\`\n`;\n}\n\nfunction templates(packageName: string) {\n return {\n \"package.json\": packageJsonTemplate(packageName),\n \"tsconfig.json\": tsconfigTemplate(),\n \"tsconfig.build.json\": tsconfigBuildTemplate(),\n \"generate-manifest.ts\": generateManifestTemplate(),\n \"index.ts\": extensionIndexTemplate(),\n \"src/helloWorld.ts\": helloWorldTemplate(),\n \"README.md\": readmeTemplate(packageName),\n };\n}\n\n/**\n * Create extension scaffold at parentDir/extensionName.\n * Returns target path and list of created files.\n */\nexport async function initExtension(\n options: InitExtensionOptions,\n): Promise<{ targetPath: string; filesCreated: string[] }> {\n const parent = path.resolve(options.parentDir ?? process.cwd());\n const name = options.extensionName.trim();\n if (!name) {\n throw new Error(\"Extension name is required\");\n }\n const targetPath = path.join(parent, name);\n const baseName = toPackageName(name) || name.replace(/\\s/g, \"-\").toLowerCase();\n const scopeNorm = options.scope?.trim().replace(/^@/, \"\") || \"\";\n const packageName = scopeNorm ? `@${scopeNorm}/${baseName}` : baseName;\n const filesCreated: string[] = [];\n const tmpl = templates(packageName);\n\n await fs.mkdir(targetPath, { recursive: true });\n\n for (const [relPath, content] of Object.entries(tmpl)) {\n const fullPath = path.join(targetPath, relPath);\n await fs.mkdir(path.dirname(fullPath), { recursive: true });\n await fs.writeFile(fullPath, content.trimStart(), \"utf8\");\n filesCreated.push(relPath);\n }\n\n return { targetPath, filesCreated };\n}\n","export function printHelp(bin = \"agent-tool\"): void {\n process.stdout.write(`\nUsage: ${bin} <command> [options] [args]\n\nPrimary commands:\n ls List all tools (scope, name, description).\n describe <tool path> Show tool details (schema, capabilities, etc.).\n run <tool path> [params] Run a tool. Params: JSON, e.g. '{\"path\":\"README.md\"}'\n start mcp Start MCP server (default: Streamable HTTP; use --stdio for stdio).\n start http Start OpenAPI HTTP server (API + Swagger).\n\nOther commands:\n init [extension name] Create extension scaffold (folder + src + hello-world + generate-manifest + index + package.json). With no name: create MCP project in --path. Then: cd <folder> && npm install && npm run build.\n build Scan folder for @tool / SKILL / n8n, generate MCP npm package.\n serve Start the generated MCP server (stdio) for testing.\n list Alias for ls.\n show <tool> Alias for describe.\n help Show this help.\n\nOptions:\n --path, -p <path> For init/build/serve: path (default: cwd).\n --scope, -s <scope> For init [extension name]: npm package scope (e.g. wallee → @wallee/<name>).\n --out, -o <path> For build: output directory.\n --include, -i <glob> For build: glob for TS files.\n --include-n8n For build: include n8n workflow tools.\n --verbose, -v Print step logs (config load, cache, tools registered).\n --stdio For start mcp: use stdio transport (default: Streamable HTTP).\n --port <number> For start mcp/http: port (default: 3000).\n --host <string> For start mcp/http: host (default: 127.0.0.1).\n --help, -h Show this help.\n\nExamples:\n ${bin} ls\n ${bin} describe core.fs.readText\n ${bin} run core.fs.readText '{\"path\":\"README.md\"}'\n ${bin} start mcp\n ${bin} start mcp --stdio\n ${bin} start http --port 3000\n ${bin} build --path . --out dist\n ${bin} init my-extension\n\nFor agent run (ReAct + agent.yaml): npx @easynet/agent-orchestra run \"task\" -c agent.yaml\n`);\n}\n","#!/usr/bin/env node\n/**\n * CLI for @easynet/agent-tool: ls | describe | run | start mcp | start http | init | build | serve | help.\n * Usage: agent-tool <command> [options] [args]\n * Primary: ls, describe [tool path], run [tool path] [parameters], start mcp, start http.\n */\n\nimport path from \"node:path\";\nimport { realpathSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { initProject } from \"../../api/expose/mcp-build/init.js\";\nimport { initExtension } from \"../../api/expose/extension-init/index.js\";\nimport { buildMCPPackage } from \"../../api/expose/mcp-build/build.js\";\nimport { runMCPServer } from \"../../api/expose/mcp-build/run.js\";\nimport { createRuntimeFromConfig } from \"../../api/runtimeFromConfig.js\";\nimport { createHttpService } from \"../../api/expose/openapiHttp.js\";\nimport { runMCPServerOverStdio, createMCPServerStreamableHttp } from \"../../api/expose/mcpServer.js\";\nimport type { ToolSpec } from \"../../core/types/ToolSpec.js\";\nimport type { ExecContext } from \"../../core/types/ToolIntent.js\";\nimport { getDisplayScope, resolveToolDescriptor } from \"../../tools/util/toolDescriptor.js\";\nimport { findAndLoadToolConfig, resolveSandboxedPath } from \"../../tools/util/toolConfig.js\";\nimport { enrichSpecWithCanonicalSchema } from \"../../tools/util/canonicalCoreSchemas.js\";\nimport { printHelp } from \"./help.js\";\n\ntype CliCommand = \"init\" | \"build\" | \"serve\" | \"list\" | \"ls\" | \"show\" | \"describe\" | \"run\" | \"start\" | \"help\";\ntype StartSubcommand = \"mcp\" | \"http\";\n\ninterface CliArgs {\n command: CliCommand;\n startSub: StartSubcommand;\n help: boolean;\n verbose: boolean;\n /** For start mcp: use stdio transport (default: streamable HTTP) */\n mcpStdio: boolean;\n pathOpt: string;\n /** For init: extension name (folder to create). If set, scaffold extension; else MCP project. */\n extensionName: string;\n /** For init [extension name]: npm package scope (e.g. wallee → @wallee/name). */\n scope: string;\n outDir: string;\n include: string[];\n includeN8n: boolean;\n toolName: string;\n toolArgsJson: string;\n port: number;\n host: string;\n}\n\nconst DEFAULT_CORE_CONFIG = {\n sandboxRoot: process.cwd(),\n enableSandboxValidation: false,\n allowedHosts: [] as string[],\n};\n\nasync function getRuntimeWithTools(pathOpt?: string, verbose = false): Promise<{ runtime: Awaited<ReturnType<typeof createRuntimeFromConfig>>[\"runtime\"]; registry: Awaited<ReturnType<typeof createRuntimeFromConfig>>[\"registry\"] }> {\n const cwd = process.cwd();\n const searchDir = path.resolve(cwd, pathOpt ?? \".\");\n const stepLog = verbose ? (msg: string) => process.stderr.write(`[agent-tool] ${msg}\\n`) : undefined;\n if (stepLog) stepLog(`Loading tool config from ${searchDir}`);\n const config = findAndLoadToolConfig(searchDir);\n let sandboxRoot = cwd;\n if (config.sandboxedPath && typeof config.sandboxedPath === \"string\" && config.configPath) {\n sandboxRoot = resolveSandboxedPath(config.configPath, config.sandboxedPath);\n }\n if (stepLog) {\n if (config.configPath) {\n const n = Array.isArray(config.tools) ? config.tools.length : 0;\n stepLog(`Config: ${config.configPath} (${n} tool(s)), sandbox: ${sandboxRoot}`);\n } else {\n stepLog(\"No tool.yaml found\");\n }\n }\n const coreConfig = {\n sandboxRoot,\n enableSandboxValidation: config.enableSandboxValidation ?? DEFAULT_CORE_CONFIG.enableSandboxValidation,\n allowedHosts: [] as string[],\n };\n const result = await createRuntimeFromConfig({\n coreTools: coreConfig,\n configFilePath: config.configPath,\n stepLog,\n });\n if (stepLog) stepLog(`Registered ${result.registry.snapshot().length} tool(s)`);\n return result;\n}\n\n/** Parse \"scope/name\" into { scope, name }; if no slash, scope is \"\", name is full. */\nfunction parseToolName(fullName: string): { scope: string; name: string } {\n const i = fullName.indexOf(\"/\");\n if (i < 0) return { scope: \"\", name: fullName };\n return { scope: fullName.slice(0, i), name: fullName.slice(i + 1) };\n}\n\nfunction parseArgv(argv: string[]): CliArgs {\n const args = argv.slice(2);\n let command: CliCommand = \"help\";\n let startSub: StartSubcommand = \"http\";\n let help = false;\n let verbose = false;\n let mcpStdio = false;\n let pathOpt = \"\";\n let extensionName = \"\";\n let scope = \"\";\n let outDir = \"\";\n let include: string[] = [];\n let includeN8n = false;\n let toolName = \"\";\n let toolArgsJson = \"{}\";\n let port = 3000;\n let host = \"127.0.0.1\";\n\n const commands: CliCommand[] = [\n \"init\", \"build\", \"serve\", \"list\", \"ls\", \"show\", \"describe\", \"run\", \"start\", \"help\",\n ];\n const startSubcommands: StartSubcommand[] = [\"mcp\", \"http\"];\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--help\" || arg === \"-h\") {\n help = true;\n } else if (arg === \"--verbose\" || arg === \"-v\") {\n verbose = true;\n } else if (arg === \"--stdio\") {\n mcpStdio = true;\n } else if (arg === \"--path\" || arg === \"-p\") {\n pathOpt = path.resolve(process.cwd(), args[++i] ?? \"\");\n } else if (arg === \"--out\" || arg === \"-o\") {\n outDir = path.resolve(process.cwd(), args[++i] ?? \"\");\n } else if (arg === \"--include\" || arg === \"-i\") {\n const v = args[++i];\n if (v) include.push(v);\n } else if (arg === \"--include-n8n\") {\n includeN8n = true;\n } else if (arg === \"--port\") {\n const v = args[++i];\n if (v !== undefined) port = parseInt(v, 10) || 3000;\n } else if (arg === \"--host\") {\n const v = args[++i];\n if (v !== undefined) host = v;\n } else if (arg === \"--scope\" || arg === \"-s\") {\n scope = args[++i] ?? \"\";\n } else if (arg && !arg.startsWith(\"-\") && commands.includes(arg as CliCommand)) {\n command = arg as CliCommand;\n const nextArg = args[i + 1];\n if (command === \"init\" && nextArg !== undefined && !nextArg.startsWith(\"-\")) {\n extensionName = args[++i] ?? \"\";\n } else if ((command === \"show\" || command === \"describe\") && nextArg !== undefined && !nextArg.startsWith(\"-\")) {\n toolName = args[++i] ?? \"\";\n } else if (command === \"run\" && nextArg !== undefined && !nextArg.startsWith(\"-\")) {\n toolName = args[++i] ?? \"\";\n const runNext = args[i + 1];\n if (runNext !== undefined && !runNext.startsWith(\"-\")) {\n toolArgsJson = args[++i] ?? \"{}\";\n }\n } else if (command === \"start\" && nextArg !== undefined && !nextArg.startsWith(\"-\") && startSubcommands.includes(nextArg as StartSubcommand)) {\n startSub = args[++i] as StartSubcommand;\n }\n }\n }\n\n return { command, startSub, help, verbose, mcpStdio, pathOpt, extensionName, scope, outDir, include, includeN8n, toolName, toolArgsJson, port, host };\n}\n\nasync function cmdInitExtension(extensionName: string, pathOpt: string, scope: string): Promise<number> {\n try {\n const parentDir = pathOpt ? path.resolve(process.cwd(), pathOpt) : undefined;\n const { targetPath, filesCreated } = await initExtension({\n extensionName,\n parentDir: parentDir || process.cwd(),\n scope: scope || undefined,\n });\n process.stdout.write(\n `Extension scaffold at ${targetPath}\\nCreated: ${filesCreated.join(\", \")}\\nNext: cd ${path.basename(targetPath)} && npm install && npm run build\\n`,\n );\n return 0;\n } catch (err) {\n process.stderr.write(`Init extension failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdInit(pathOpt: string): Promise<number> {\n try {\n const { targetPath, filesCreated } = await initProject({ targetPath: pathOpt || undefined });\n process.stdout.write(`Initialized project at ${targetPath}\\nCreated: ${filesCreated.join(\", \")}\\nNext: npm install && npm run build\\n`);\n return 0;\n } catch (err) {\n process.stderr.write(`Init failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdBuild(\n pathOpt: string,\n outDir: string,\n include: string[],\n includeN8n: boolean,\n): Promise<number> {\n try {\n const result = await buildMCPPackage({\n projectPath: pathOpt || undefined,\n outDir: outDir || undefined,\n include: include.length > 0 ? include : undefined,\n includeN8n: includeN8n || undefined,\n });\n process.stdout.write(\n `Built ${result.toolCount} tool(s) -> ${result.outDir}\\nEntry: ${result.entryPath}\\nmcp.json: ${result.mcpJsonPath}\\n`,\n );\n return 0;\n } catch (err) {\n process.stderr.write(`Build failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdServe(pathOpt: string): Promise<number> {\n try {\n const { process: child } = await runMCPServer({ path: pathOpt || undefined });\n child.stdin?.pipe(process.stdin);\n child.stdout?.pipe(process.stdout);\n process.stdin?.unref();\n const exit = new Promise<number>((resolve) => {\n child.on(\"close\", (code) => resolve(code ?? 0));\n });\n return exit;\n } catch (err) {\n process.stderr.write(`Serve failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nconst LS_DESC_MAX = 72;\n\n/** Format tool list as table: SCOPE (full package name) | NAME | DESCRIPTION */\nfunction formatLsOutput(specs: ToolSpec[]): string {\n const rows = specs.map((spec) => {\n const { name } = parseToolName(spec.name);\n const scope = getDisplayScope(spec.name, spec.kind, spec.version);\n const desc = (spec.description ?? \"\")\n .replace(/\\n/g, \" \")\n .trim()\n .slice(0, LS_DESC_MAX);\n return { scope, name, description: desc || \"(no description)\" };\n });\n\n const scopeW = Math.max(6, ...rows.map((r) => r.scope.length));\n const nameW = Math.max(4, ...rows.map((r) => r.name.length));\n\n const sep = `${\"─\".repeat(scopeW)}┬${\"─\".repeat(nameW)}┬${\"─\".repeat(LS_DESC_MAX + 2)}`;\n const header = [\n \"SCOPE\".padEnd(scopeW),\n \"NAME\".padEnd(nameW),\n \"DESCRIPTION\",\n ].join(\" │ \");\n const lines = [\n header,\n sep,\n ...rows.map((r) =>\n [\n r.scope.padEnd(scopeW),\n r.name.padEnd(nameW),\n r.description,\n ].join(\" │ \")\n ),\n ];\n return lines.join(\"\\n\");\n}\n\n/** Format single tool details (describe) with clear sections */\nfunction formatDescribeOutput(spec: ToolSpec): string {\n const { name: localName } = parseToolName(spec.name);\n const scope = getDisplayScope(spec.name, spec.kind, spec.version);\n const sections: string[] = [];\n\n sections.push(\"┌─ Tool\");\n sections.push(`│ name: ${spec.name}`);\n sections.push(`│ scope: ${scope}`);\n sections.push(`│ localName: ${localName}`);\n sections.push(`│ version: ${spec.version}`);\n sections.push(`│ kind: ${spec.kind}`);\n sections.push(\"├─ Description\");\n sections.push(`│ ${(spec.description ?? \"(none)\").replace(/\\n/g, \"\\n│ \")}`);\n sections.push(\"├─ Tags\");\n sections.push(`│ ${spec.tags?.length ? spec.tags.join(\", \") : \"(none)\"}`);\n sections.push(\"├─ Capabilities\");\n sections.push(`│ ${spec.capabilities.join(\", \")}`);\n if (spec._meta?.hitl?.sideEffect) {\n sections.push(\"├─ HITL\");\n sections.push(`│ sideEffect: ${spec._meta.hitl.sideEffect}`);\n }\n sections.push(\"├─ Input schema\");\n sections.push(\n \"│ \" + JSON.stringify(spec.inputSchema, null, 2).replace(/\\n/g, \"\\n│ \")\n );\n sections.push(\"└─ Output schema\");\n sections.push(\n \" \" + JSON.stringify(spec.outputSchema, null, 2).replace(/\\n/g, \"\\n \")\n );\n\n return sections.join(\"\\n\");\n}\n\nasync function cmdLs(pathOpt?: string, verbose = false): Promise<number> {\n try {\n const { registry } = await getRuntimeWithTools(pathOpt, verbose);\n const specs = registry.snapshot();\n if (specs.length === 0) {\n process.stdout.write(\"No tools registered.\\n\");\n const cwd = process.cwd();\n const searchDir = path.resolve(cwd, pathOpt ?? \".\");\n const config = findAndLoadToolConfig(searchDir);\n const hasNpmTools = Array.isArray(config.tools) && config.tools.some((t) => typeof t === \"string\" && t.startsWith(\"npm:\"));\n if (hasNpmTools) {\n process.stdout.write(\n \"Tip: Install builtin tools in this directory so 'agent-tool ls' finds them: npm init -y && npm install @easynet/agent-tool-buildin\\n\"\n );\n }\n return 0;\n }\n specs.sort((a, b) => a.name.localeCompare(b.name));\n process.stdout.write(formatLsOutput(specs) + \"\\n\");\n return 0;\n } catch (err) {\n process.stderr.write(`ls failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdDescribe(toolName: string, pathOpt?: string, verbose = false): Promise<number> {\n if (!toolName.trim()) {\n process.stderr.write(\"Usage: agent-tool describe <tool path>\\n\");\n return 1;\n }\n try {\n const { registry } = await getRuntimeWithTools(pathOpt, verbose);\n const registryName = resolveToolDescriptor(toolName.trim());\n const spec = registry.get(registryName);\n if (!spec) {\n process.stderr.write(`Tool not found: ${toolName}\\n`);\n return 1;\n }\n process.stdout.write(formatDescribeOutput(enrichSpecWithCanonicalSchema(spec)) + \"\\n\");\n return 0;\n } catch (err) {\n process.stderr.write(`describe failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nfunction defaultExecContext(): ExecContext {\n return {\n requestId: `cli-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,\n taskId: `task-${Date.now()}`,\n permissions: [\n \"read:web\",\n \"read:fs\",\n \"write:fs\",\n \"read:db\",\n \"write:db\",\n \"network\",\n \"workflow\",\n \"danger:destructive\",\n \"exec\",\n ],\n };\n}\n\nasync function cmdRun(toolName: string, toolArgsJson: string, pathOpt?: string, verbose = false): Promise<number> {\n if (!toolName.trim()) {\n process.stderr.write(\"Usage: agent-tool run <tool path> [<json params>]\\n\");\n return 1;\n }\n let args: unknown = {};\n if (toolArgsJson.trim()) {\n try {\n args = JSON.parse(toolArgsJson) as unknown;\n } catch {\n process.stderr.write(\"Invalid JSON for parameters. Example: '{\\\"path\\\":\\\"README.md\\\"}'\\n\");\n return 1;\n }\n }\n try {\n const { runtime, registry } = await getRuntimeWithTools(pathOpt, verbose);\n const registryName = resolveToolDescriptor(toolName.trim());\n if (!registry.get(registryName)) {\n process.stderr.write(`Tool not found: ${toolName}\\n`);\n return 1;\n }\n const ctx = defaultExecContext();\n const result = await runtime.invoke(\n { tool: registryName, args, purpose: \"cli\" },\n ctx\n );\n if (result.ok) {\n process.stdout.write(JSON.stringify(result.result, null, 2) + \"\\n\");\n return 0;\n }\n process.stderr.write(`Tool error: ${result.error?.kind ?? \"unknown\"} - ${result.error?.message ?? \"\"}\\n`);\n return 1;\n } catch (err) {\n process.stderr.write(`Run failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdStartMcp(pathOpt?: string, verbose = false, stdio = false, port = 3000, host = \"127.0.0.1\"): Promise<number> {\n try {\n const { runtime } = await getRuntimeWithTools(pathOpt, verbose);\n if (stdio) {\n await runMCPServerOverStdio(runtime);\n return 0;\n }\n const streamable = await createMCPServerStreamableHttp(runtime, { port, host, path: \"/mcp\" });\n const { url } = await streamable.listen(port, host);\n process.stdout.write(`MCP Streamable HTTP: ${url}\\n`);\n await new Promise<void>(() => {});\n return 0;\n } catch (err) {\n process.stderr.write(`start mcp failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function cmdStartHttp(port: number, host: string, pathOpt?: string, verbose = false): Promise<number> {\n try {\n const { runtime } = await getRuntimeWithTools(pathOpt, verbose);\n const http = await createHttpService(runtime);\n const { port: actualPort, host: actualHost } = await http.listen({ port, host });\n const base = `http://${actualHost}:${actualPort}`;\n process.stdout.write(`API: ${base}/invoke (POST), ${base}/tools (GET)\\n`);\n process.stdout.write(`Swagger UI: ${base}/ (spec: ${base}/openapi.json)\\n`);\n await new Promise<void>(() => {});\n return 0;\n } catch (err) {\n process.stderr.write(`start http failed: ${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n\nasync function main(argv: string[] = process.argv): Promise<number> {\n const { command, startSub, help, verbose, mcpStdio, pathOpt, extensionName, scope, outDir, include, includeN8n, toolName, toolArgsJson, port, host } =\n parseArgv(argv);\n\n if (help || command === \"help\") {\n printHelp();\n return 0;\n }\n\n if (command === \"init\") {\n if (extensionName) return cmdInitExtension(extensionName, pathOpt, scope);\n return cmdInit(pathOpt);\n }\n if (command === \"build\") return cmdBuild(pathOpt, outDir, include, includeN8n);\n if (command === \"serve\") return cmdServe(pathOpt);\n if (command === \"ls\" || command === \"list\") return cmdLs(pathOpt, verbose);\n if (command === \"describe\" || command === \"show\") return cmdDescribe(toolName, pathOpt, verbose);\n if (command === \"run\") return cmdRun(toolName, toolArgsJson, pathOpt, verbose);\n if (command === \"start\") {\n if (startSub === \"mcp\") return cmdStartMcp(pathOpt, verbose, mcpStdio, port, host);\n if (startSub === \"http\") return cmdStartHttp(port, host, pathOpt, verbose);\n process.stderr.write(\"Usage: agent-tool start mcp | agent-tool start http [--port 3000] [--host 127.0.0.1]\\n\");\n return 1;\n }\n\n printHelp();\n return 1;\n}\n\n/** Run CLI with the given argv (same shape as process.argv). Exported for tests. */\nexport async function run(argv: string[]): Promise<number> {\n return main(argv);\n}\n\nconst scriptPath = fileURLToPath(import.meta.url);\nconst invokedPath = process.argv[1];\nlet isMain = typeof process !== \"undefined\" && invokedPath !== undefined && invokedPath === scriptPath;\nif (!isMain && invokedPath) {\n try {\n isMain = realpathSync(invokedPath) === realpathSync(scriptPath);\n } catch {\n // keep isMain false if realpath fails\n }\n}\n\nif (isMain) {\n main()\n .then((code) => process.exit(code))\n .catch((err) => {\n process.stderr.write(String(err?.message ?? err) + \"\\n\");\n process.exit(1);\n });\n}\n"]}
@@ -1,13 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { initProject, buildMCPPackage, runMCPServer } from '../../chunk-6ORA3MNX.js';
3
- import { findAndLoadToolConfig, resolveToolDescriptor, runMCPServerOverStdio, createMCPServerStreamableHttp, createHttpService, resolveSandboxedPath, createRuntimeFromConfig, getDisplayScope } from '../../chunk-W2WJOS5Z.js';
2
+ import { initProject, buildMCPPackage, runMCPServer } from '../../chunk-2YP4Q4BW.js';
3
+ import { findAndLoadToolConfig, resolveToolDescriptor, runMCPServerOverStdio, createMCPServerStreamableHttp, createHttpService, resolveSandboxedPath, createRuntimeFromConfig, getDisplayScope } from '../../chunk-BBNQ6AWK.js';
4
+ import '../../chunk-SNN4QJ5Z.js';
5
+ import '../../chunk-IVL4TBFB.js';
6
+ import '../../chunk-BDUSB6GT.js';
4
7
  import { enrichSpecWithCanonicalSchema } from '../../chunk-NTWOVFEY.js';
5
- import '../../chunk-3D7XYAZO.js';
6
- import '../../chunk-HEVWKBBQ.js';
7
- import '../../chunk-QXQ4477T.js';
8
- import '../../chunk-WUMLZERG.js';
9
- import '../../chunk-RZTTO5MQ.js';
10
- import '../../chunk-ODEHUAR4.js';
11
8
  import * as path2 from 'path';
12
9
  import path2__default from 'path';
13
10
  import { realpathSync } from 'fs';
@@ -91,14 +88,14 @@ function generateManifestTemplate() {
91
88
  * Build step: run framework generateManifest (scan src, emit manifest).
92
89
  * Tool names in the manifest are the exported function names.
93
90
  */
94
- import { generateManifest } from "@easynet/agent-tool/extension";
91
+ import { generateManifest } from "@easynet/agent-tool/sdk";
95
92
 
96
93
  generateManifest(process.cwd());
97
94
  `;
98
95
  }
99
96
  function extensionIndexTemplate() {
100
- return `import { createExtension } from "@easynet/agent-tool/extension";
101
- import type { ToolRegistry, ToolAdapter } from "@easynet/agent-tool/runtime";
97
+ return `import { createExtension } from "@easynet/agent-tool/sdk";
98
+ import type { ToolRegistry, ToolAdapter } from "@easynet/agent-tool/sdk";
102
99
 
103
100
  const ext = createExtension({ importMeta: import.meta });
104
101
 
@@ -602,7 +599,7 @@ async function cmdStartMcp(pathOpt, verbose = false, stdio = false, port = 3e3,
602
599
  return 0;
603
600
  }
604
601
  const streamable = await createMCPServerStreamableHttp(runtime, { port, host, path: "/mcp" });
605
- const { url, port: actualPort } = await streamable.listen(port, host);
602
+ const { url } = await streamable.listen(port, host);
606
603
  process.stdout.write(`MCP Streamable HTTP: ${url}
607
604
  `);
608
605
  await new Promise(() => {