@easynet/agent-tool 1.0.0

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 (157) hide show
  1. package/README.md +103 -0
  2. package/dist/chunk-3YLVPZRJ.cjs +32 -0
  3. package/dist/chunk-3YLVPZRJ.cjs.map +1 -0
  4. package/dist/chunk-AXUNV4MK.js +28 -0
  5. package/dist/chunk-AXUNV4MK.js.map +1 -0
  6. package/dist/chunk-BM4EVYI5.js +1069 -0
  7. package/dist/chunk-BM4EVYI5.js.map +1 -0
  8. package/dist/chunk-P3UEAZHK.cjs +171 -0
  9. package/dist/chunk-P3UEAZHK.cjs.map +1 -0
  10. package/dist/chunk-RPAMQCFH.js +167 -0
  11. package/dist/chunk-RPAMQCFH.js.map +1 -0
  12. package/dist/chunk-Z7TGIG77.cjs +1108 -0
  13. package/dist/chunk-Z7TGIG77.cjs.map +1 -0
  14. package/dist/cli.cjs +154 -0
  15. package/dist/cli.cjs.map +1 -0
  16. package/dist/cli.d.ts +10 -0
  17. package/dist/cli.d.ts.map +1 -0
  18. package/dist/cli.js +147 -0
  19. package/dist/cli.js.map +1 -0
  20. package/dist/codegen/build.d.ts +23 -0
  21. package/dist/codegen/build.d.ts.map +1 -0
  22. package/dist/codegen/generator.d.ts +15 -0
  23. package/dist/codegen/generator.d.ts.map +1 -0
  24. package/dist/codegen/index.d.ts +21 -0
  25. package/dist/codegen/index.d.ts.map +1 -0
  26. package/dist/codegen/init.d.ts +17 -0
  27. package/dist/codegen/init.d.ts.map +1 -0
  28. package/dist/codegen/run.d.ts +19 -0
  29. package/dist/codegen/run.d.ts.map +1 -0
  30. package/dist/codegen/scan/scanN8n.d.ts +17 -0
  31. package/dist/codegen/scan/scanN8n.d.ts.map +1 -0
  32. package/dist/codegen/scan/scanSkill.d.ts +17 -0
  33. package/dist/codegen/scan/scanSkill.d.ts.map +1 -0
  34. package/dist/codegen/scan/scanTools.d.ts +31 -0
  35. package/dist/codegen/scan/scanTools.d.ts.map +1 -0
  36. package/dist/codegen/scan/scanner.d.ts +26 -0
  37. package/dist/codegen/scan/scanner.d.ts.map +1 -0
  38. package/dist/codegen/scan/schemaFromTs.d.ts +16 -0
  39. package/dist/codegen/scan/schemaFromTs.d.ts.map +1 -0
  40. package/dist/codegen/types.d.ts +81 -0
  41. package/dist/codegen/types.d.ts.map +1 -0
  42. package/dist/core.cjs +20 -0
  43. package/dist/core.cjs.map +1 -0
  44. package/dist/core.d.ts +8 -0
  45. package/dist/core.d.ts.map +1 -0
  46. package/dist/core.js +3 -0
  47. package/dist/core.js.map +1 -0
  48. package/dist/discovery/MCPProcessManager.d.ts +57 -0
  49. package/dist/discovery/MCPProcessManager.d.ts.map +1 -0
  50. package/dist/discovery/errors.d.ts +13 -0
  51. package/dist/discovery/errors.d.ts.map +1 -0
  52. package/dist/discovery/load/LangChainLoader.d.ts +7 -0
  53. package/dist/discovery/load/LangChainLoader.d.ts.map +1 -0
  54. package/dist/discovery/load/MCPLoader.d.ts +8 -0
  55. package/dist/discovery/load/MCPLoader.d.ts.map +1 -0
  56. package/dist/discovery/load/N8nLoader.d.ts +25 -0
  57. package/dist/discovery/load/N8nLoader.d.ts.map +1 -0
  58. package/dist/discovery/load/SkillLoader.d.ts +20 -0
  59. package/dist/discovery/load/SkillLoader.d.ts.map +1 -0
  60. package/dist/discovery/load/SkillManifest.d.ts +79 -0
  61. package/dist/discovery/load/SkillManifest.d.ts.map +1 -0
  62. package/dist/discovery/load/SkillMdParser.d.ts +31 -0
  63. package/dist/discovery/load/SkillMdParser.d.ts.map +1 -0
  64. package/dist/discovery/load/index.d.ts +6 -0
  65. package/dist/discovery/load/index.d.ts.map +1 -0
  66. package/dist/discovery/load/resolveEntry.d.ts +7 -0
  67. package/dist/discovery/load/resolveEntry.d.ts.map +1 -0
  68. package/dist/discovery/scan/DirectoryScanner.d.ts +37 -0
  69. package/dist/discovery/scan/DirectoryScanner.d.ts.map +1 -0
  70. package/dist/discovery/scan/scanUtil.d.ts +16 -0
  71. package/dist/discovery/scan/scanUtil.d.ts.map +1 -0
  72. package/dist/discovery/types.d.ts +99 -0
  73. package/dist/discovery/types.d.ts.map +1 -0
  74. package/dist/index.cjs +3014 -0
  75. package/dist/index.cjs.map +1 -0
  76. package/dist/index.d.ts +68 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +2778 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/llm/AgentLLMAdapter.d.ts +27 -0
  81. package/dist/llm/AgentLLMAdapter.d.ts.map +1 -0
  82. package/dist/llm/LangChainToolsHub.d.ts +31 -0
  83. package/dist/llm/LangChainToolsHub.d.ts.map +1 -0
  84. package/dist/llm/OpenAICompatibleClient.d.ts +64 -0
  85. package/dist/llm/OpenAICompatibleClient.d.ts.map +1 -0
  86. package/dist/llm/ReActAgent.d.ts +35 -0
  87. package/dist/llm/ReActAgent.d.ts.map +1 -0
  88. package/dist/llm-export.cjs +20 -0
  89. package/dist/llm-export.cjs.map +1 -0
  90. package/dist/llm-export.d.ts +9 -0
  91. package/dist/llm-export.d.ts.map +1 -0
  92. package/dist/llm-export.js +3 -0
  93. package/dist/llm-export.js.map +1 -0
  94. package/dist/mcp/MCPClientAdapter.d.ts +34 -0
  95. package/dist/mcp/MCPClientAdapter.d.ts.map +1 -0
  96. package/dist/mcp/connectMCP.d.ts +47 -0
  97. package/dist/mcp/connectMCP.d.ts.map +1 -0
  98. package/dist/mcp/index.d.ts +10 -0
  99. package/dist/mcp/index.d.ts.map +1 -0
  100. package/dist/mcp/registerMCPTools.d.ts +24 -0
  101. package/dist/mcp/registerMCPTools.d.ts.map +1 -0
  102. package/dist/observability/EventLog.d.ts +60 -0
  103. package/dist/observability/EventLog.d.ts.map +1 -0
  104. package/dist/observability/Logger.d.ts +33 -0
  105. package/dist/observability/Logger.d.ts.map +1 -0
  106. package/dist/observability/Metrics.d.ts +70 -0
  107. package/dist/observability/Metrics.d.ts.map +1 -0
  108. package/dist/observability/Tracing.d.ts +69 -0
  109. package/dist/observability/Tracing.d.ts.map +1 -0
  110. package/dist/registry/ToolRegistry.d.ts +68 -0
  111. package/dist/registry/ToolRegistry.d.ts.map +1 -0
  112. package/dist/report/AgentReportGenerator.d.ts +53 -0
  113. package/dist/report/AgentReportGenerator.d.ts.map +1 -0
  114. package/dist/report/agent-report-template.html +362 -0
  115. package/dist/report/index.d.ts +3 -0
  116. package/dist/report/index.d.ts.map +1 -0
  117. package/dist/report/types.d.ts +101 -0
  118. package/dist/report/types.d.ts.map +1 -0
  119. package/dist/runAgent.d.ts +37 -0
  120. package/dist/runAgent.d.ts.map +1 -0
  121. package/dist/runtime/Budget.d.ts +63 -0
  122. package/dist/runtime/Budget.d.ts.map +1 -0
  123. package/dist/runtime/Evidence.d.ts +19 -0
  124. package/dist/runtime/Evidence.d.ts.map +1 -0
  125. package/dist/runtime/PTCRuntime.d.ts +115 -0
  126. package/dist/runtime/PTCRuntime.d.ts.map +1 -0
  127. package/dist/runtime/PTCRuntimeObservability.d.ts +26 -0
  128. package/dist/runtime/PTCRuntimeObservability.d.ts.map +1 -0
  129. package/dist/runtime/PTCRuntimePipeline.d.ts +62 -0
  130. package/dist/runtime/PTCRuntimePipeline.d.ts.map +1 -0
  131. package/dist/runtime/PolicyEngine.d.ts +67 -0
  132. package/dist/runtime/PolicyEngine.d.ts.map +1 -0
  133. package/dist/runtime/Retry.d.ts +33 -0
  134. package/dist/runtime/Retry.d.ts.map +1 -0
  135. package/dist/runtime/SchemaValidator.d.ts +42 -0
  136. package/dist/runtime/SchemaValidator.d.ts.map +1 -0
  137. package/dist/templates/mcp-server.js +48 -0
  138. package/dist/templates/n8n-invoker.js +11 -0
  139. package/dist/templates/skill-invoker.js +11 -0
  140. package/dist/templates/tool-index.js +9 -0
  141. package/dist/toolDescriptor.d.ts +38 -0
  142. package/dist/toolDescriptor.d.ts.map +1 -0
  143. package/dist/types/Events.d.ts +99 -0
  144. package/dist/types/Events.d.ts.map +1 -0
  145. package/dist/types/ToolIntent.d.ts +40 -0
  146. package/dist/types/ToolIntent.d.ts.map +1 -0
  147. package/dist/types/ToolResult.d.ts +30 -0
  148. package/dist/types/ToolResult.d.ts.map +1 -0
  149. package/dist/types/ToolSpec.d.ts +99 -0
  150. package/dist/types/ToolSpec.d.ts.map +1 -0
  151. package/dist/types/index.d.ts +6 -0
  152. package/dist/types/index.d.ts.map +1 -0
  153. package/extensions/examples/README.md +40 -0
  154. package/extensions/examples/scripts/agent-tool-react-stock.mjs +30 -0
  155. package/extensions/examples/tools/instruction-only/skill/SKILL.md +26 -0
  156. package/extensions/examples/tools/web-search/mcp/mcp.json +8 -0
  157. package/package.json +122 -0
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Evidence attached to a tool result for audit trail.
3
+ */
4
+ export interface Evidence {
5
+ type: "tool" | "file" | "url" | "text" | "metric";
6
+ ref: string;
7
+ summary: string;
8
+ createdAt: string;
9
+ }
10
+ /**
11
+ * Error information in a tool result.
12
+ */
13
+ export interface ToolError {
14
+ kind?: "TOOL_NOT_FOUND" | "INPUT_SCHEMA_INVALID" | "POLICY_DENIED" | "BUDGET_EXCEEDED" | "TIMEOUT" | "UPSTREAM_ERROR" | "OUTPUT_SCHEMA_INVALID" | "PATH_OUTSIDE_SANDBOX" | "FILE_TOO_LARGE" | "HTTP_DISALLOWED_HOST" | "HTTP_TIMEOUT" | "HTTP_TOO_LARGE";
15
+ message: string;
16
+ details?: unknown;
17
+ }
18
+ /**
19
+ * Unified tool result returned to agent-orchestra.
20
+ * Always structured, never throws raw exceptions.
21
+ */
22
+ export interface ToolResult {
23
+ ok: boolean;
24
+ result?: unknown;
25
+ evidence: Evidence[];
26
+ error?: ToolError;
27
+ /** Raw response for debugging (can be disabled in production) */
28
+ raw?: unknown;
29
+ }
30
+ //# sourceMappingURL=ToolResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolResult.d.ts","sourceRoot":"","sources":["../../src/types/ToolResult.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EACD,gBAAgB,GAChB,sBAAsB,GACtB,eAAe,GACf,iBAAiB,GACjB,SAAS,GACT,gBAAgB,GAChB,uBAAuB,GACvB,sBAAsB,GACtB,gBAAgB,GAChB,sBAAsB,GACtB,cAAc,GACd,gBAAgB,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,iEAAiE;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Unified tool kinds supported by the tools package.
3
+ */
4
+ export type ToolKind = "mcp" | "langchain" | "n8n" | "comfyui" | "skill" | "core" | "example";
5
+ /**
6
+ * Capability declarations for tools.
7
+ * Used by PolicyEngine for permission gating.
8
+ */
9
+ export type Capability = "read:web" | "read:fs" | "write:fs" | "read:db" | "write:db" | "network" | "gpu" | "workflow" | "danger:destructive" | "exec";
10
+ /**
11
+ * HITL (Human-in-the-Loop) side-effect classification.
12
+ * Used to gate execution: external_write / destructive require human approval when onApprovalRequired is set.
13
+ */
14
+ export type HitlSideEffect = "none" | "local_write" | "external_write" | "destructive";
15
+ /**
16
+ * Cost hints for tools, used by Budget and routing.
17
+ */
18
+ export interface CostHints {
19
+ latencyMsP50?: number;
20
+ latencyMsP95?: number;
21
+ isAsync?: boolean;
22
+ }
23
+ /**
24
+ * Unified tool specification.
25
+ * All tool types (MCP, LangChain, n8n, SKILL) are described by this interface.
26
+ */
27
+ export interface ToolSpec {
28
+ /** Globally unique name, recommended format: namespace/name */
29
+ name: string;
30
+ /** Semver version */
31
+ version: string;
32
+ /** Tool kind determines which adapter handles execution */
33
+ kind: ToolKind;
34
+ description?: string;
35
+ tags?: string[];
36
+ /** JSON Schema for input validation */
37
+ inputSchema: object;
38
+ /** JSON Schema for output validation */
39
+ outputSchema: object;
40
+ /** Required capabilities for this tool */
41
+ capabilities: Capability[];
42
+ costHints?: CostHints;
43
+ /** HITL: side-effect level; when external_write/destructive, runtime may require human approval before execute */
44
+ _meta?: {
45
+ hitl?: {
46
+ sideEffect?: HitlSideEffect;
47
+ };
48
+ };
49
+ /** Adapter-specific: endpoint URL (MCP/n8n) */
50
+ endpoint?: string;
51
+ /** Adapter-specific: resource identifier (workflowId, promptId, etc.) */
52
+ resourceId?: string;
53
+ /** Adapter-specific: implementation reference (LangChain Tool instance, skill handler) */
54
+ impl?: unknown;
55
+ }
56
+ /** Default permissive input schema when not provided (framework supports auto-derived schema). */
57
+ export declare const DEFAULT_INPUT_SCHEMA: object;
58
+ /** Default permissive output schema when not provided (framework supports auto-derived schema). */
59
+ export declare const DEFAULT_OUTPUT_SCHEMA: object;
60
+ /**
61
+ * Minimal options to build a ToolSpec. Use with @effect in JSDoc for HITL sideEffect.
62
+ * Framework fills _meta.hitl.sideEffect from the sideEffect parameter (matches @effect annotation).
63
+ * inputSchema/outputSchema are optional: when omitted, permissive defaults are used (framework supports auto-derived schema at build time in codegen).
64
+ */
65
+ export interface CreateToolSpecOptions {
66
+ name: string;
67
+ version?: string;
68
+ kind: ToolKind;
69
+ description?: string;
70
+ tags?: string[];
71
+ /** Optional: when omitted, DEFAULT_INPUT_SCHEMA is used. Codegen can derive from handler params. */
72
+ inputSchema?: object;
73
+ /** Optional: when omitted, DEFAULT_OUTPUT_SCHEMA is used. Codegen can derive from handler return type. */
74
+ outputSchema?: object;
75
+ capabilities: Capability[];
76
+ costHints?: CostHints;
77
+ /** HITL: from @effect annotation (none | local_write | external_write | destructive). Default "none". */
78
+ sideEffect?: HitlSideEffect;
79
+ }
80
+ /**
81
+ * Build a ToolSpec from minimal options. Use @effect in handler JSDoc as annotation; pass same value as sideEffect.
82
+ * When inputSchema/outputSchema are omitted, permissive defaults are used (schema can be auto-derived at build time).
83
+ */
84
+ export declare function createToolSpec(opts: CreateToolSpecOptions): ToolSpec;
85
+ /**
86
+ * Unified adapter interface.
87
+ * Each protocol adapter (MCP, LangChain, n8n, SKILL) implements this.
88
+ */
89
+ export interface ToolAdapter {
90
+ kind: ToolKind;
91
+ /** Optional: supports dynamic tool discovery */
92
+ listTools?(): Promise<ToolSpec[]>;
93
+ /** Execute the tool with validated args */
94
+ invoke(spec: ToolSpec, args: unknown, ctx: import("./ToolIntent.js").ExecContext): Promise<{
95
+ result: unknown;
96
+ raw?: unknown;
97
+ }>;
98
+ }
99
+ //# sourceMappingURL=ToolSpec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolSpec.d.ts","sourceRoot":"","sources":["../../src/types/ToolSpec.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9F;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,KAAK,GACL,UAAU,GACV,oBAAoB,GACpB,MAAM,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,IAAI,EAAE,QAAQ,CAAC;IAEf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IAErB,0CAA0C;IAC1C,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,kHAAkH;IAClH,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,cAAc,CAAA;SAAE,CAAA;KAAE,CAAC;IAEnD,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,kGAAkG;AAClG,eAAO,MAAM,oBAAoB,EAAE,MAGlC,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,qBAAqB,EAAE,MAGnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,oGAAoG;IACpG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0GAA0G;IAC1G,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,yGAAyG;IACzG,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,QAAQ,CAcpE;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,gDAAgD;IAChD,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClC,2CAA2C;IAC3C,MAAM,CACJ,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,OAAO,iBAAiB,EAAE,WAAW,GACzC,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAChD"}
@@ -0,0 +1,6 @@
1
+ export type { ToolKind, Capability, CostHints, ToolSpec, ToolAdapter, HitlSideEffect, CreateToolSpecOptions, } from "./ToolSpec.js";
2
+ export { createToolSpec, DEFAULT_INPUT_SCHEMA, DEFAULT_OUTPUT_SCHEMA, } from "./ToolSpec.js";
3
+ export type { BudgetConfig, ExecContext, ToolIntent, } from "./ToolIntent.js";
4
+ export type { Evidence, ToolError, ToolResult, } from "./ToolResult.js";
5
+ export type { ToolEventType, ToolEvent, ToolCalledEvent, ToolResultEvent, PolicyDeniedEvent, RetryEvent, JobSubmittedEvent, JobCompletedEvent, JobFailedEvent, AnyToolEvent, } from "./Events.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,UAAU,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,cAAc,EACd,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,YAAY,EACZ,WAAW,EACX,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,QAAQ,EACR,SAAS,EACT,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC"}
@@ -0,0 +1,40 @@
1
+ # Examples
2
+
3
+ Examples for **agent-tool** are organized under `extensions/` and use the **new way**: core-style tools (TypeScript, `ToolSpec` + handler, JSON Schema).
4
+
5
+ ## Layout
6
+
7
+ | Path | Purpose |
8
+ |------|--------|
9
+ | **extensions/example-tools/** | Example tools extension: Yahoo Finance (quote + chart). Same pattern as `builtin-tools`. FS and HTTP are in builtin-tools. |
10
+ | **extensions/examples/scripts/** | Runnable demo scripts (e.g. ReAct + stock report). |
11
+ | **extensions/examples/tools/** | Reference content for discovery: instruction-only skill, MCP configs. |
12
+ | **extensions/builtin-tools/** | Built-in core tools: FS, HTTP, util, security. |
13
+
14
+ ## New way (core-style)
15
+
16
+ - **TypeScript** with `ToolSpec` (name, description, inputSchema, outputSchema) and a handler function.
17
+ - Handlers return `{ result, evidence }`; context (config, execCtx) is injected via adapter.
18
+ - Tools are registered with a `ToolRegistry` and an adapter (e.g. `CoreAdapter`, `ExampleAdapter`).
19
+
20
+ Example tools (domain examples only; FS and HTTP use builtin-tools):
21
+
22
+ - **example/finance.yahoo.quote** — Yahoo Finance quote summary by symbol.
23
+ - **example/finance.yahoo.chart** — Yahoo Finance chart/OHLCV by symbol.
24
+
25
+ ## Run the ReAct stock demo
26
+
27
+ From the repo root (after `npm run build` and `npm run build:ext` if needed):
28
+
29
+ ```bash
30
+ npm run build && node extensions/examples/scripts/agent-tool-react-stock.mjs AAPL
31
+ ```
32
+
33
+ Uses `registerCoreTools` and `registerExampleTools` with PTCRuntime + LangChainToolsHub; no `toolhub.yaml` required.
34
+
35
+ ## Reference content (discovery)
36
+
37
+ - **tools/instruction-only/skill/SKILL.md** — Instruction-only skill (no handler); agent follows written steps.
38
+ - **tools/web-search/mcp/mcp.json** — MCP config for web search (e.g. open-websearch).
39
+
40
+ Discovery roots can point at `extensions/examples/tools` to load these skills and MCP configs.
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Stock research example: runs agent-tool run with a stock task and report path.
4
+ *
5
+ * Usage (from project root, after npm run build):
6
+ * node extensions/examples/scripts/agent-tool-react-stock.mjs [SYMBOL]
7
+ * node extensions/examples/scripts/agent-tool-react-stock.mjs AAPL
8
+ *
9
+ * Or: agent-tool run "Your task" --report out.html
10
+ */
11
+ import { resolve, dirname, join } from "node:path";
12
+ import { fileURLToPath } from "node:url";
13
+ import { spawn } from "node:child_process";
14
+
15
+ const __dirname = dirname(fileURLToPath(import.meta.url));
16
+ const PROJECT_ROOT = resolve(__dirname, "..", "..", "..");
17
+ const CLI = join(PROJECT_ROOT, "dist", "cli.js");
18
+
19
+ const SYMBOL = (process.argv[2] || "AAPL").toUpperCase();
20
+ const SYSTEM_PROMPT = `You are an expert doing research. Please do deep research for the company from Wikipedia, and then produce a detailed Markdown report (≥2000 words) and confirm.`;
21
+ const USER_TASK = `Perform deep research on stock/company "${SYMBOL}": investigate, analyze, speculate. Produce a detailed Markdown report (≥2000 words) and confirm.`;
22
+ const REPORT_PATH = `${SYMBOL}-research-report.html`;
23
+
24
+ const child = spawn(process.execPath, [CLI, "run", USER_TASK, "--report", REPORT_PATH], {
25
+ cwd: PROJECT_ROOT,
26
+ stdio: "inherit",
27
+ env: { ...process.env, AGENT_SYSTEM: SYSTEM_PROMPT },
28
+ });
29
+
30
+ child.on("exit", (code) => process.exit(code ?? 0));
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: instruction-only-skill
3
+ description: Instruction-only skill with no handler. Returns SKILL.md content for the agent to consume; use when the agent should follow written instructions instead of calling code.
4
+ license: MIT
5
+ ---
6
+
7
+ # Instruction-Only Skill (Level 2)
8
+
9
+ This skill has **no handler** — it demonstrates **instruction-only mode**. When invoked, the agent receives this body and the resource list; no programmatic code runs.
10
+
11
+ ## When to use
12
+
13
+ - The task is best done by the agent following written steps.
14
+ - No bundled script is needed; instructions are sufficient.
15
+
16
+ ## Steps (example)
17
+
18
+ 1. Read the user request.
19
+ 2. Follow the instructions in this SKILL.md.
20
+ 3. Return a structured response.
21
+
22
+ ## Progressive disclosure
23
+
24
+ - **Level 1**: name + description (loaded at startup).
25
+ - **Level 2**: This body (loaded when skill is activated).
26
+ - **Level 3**: No bundled files in this example; handlers can use `readResource(relativePath)` and `getResourcesByType(type)` when present.
@@ -0,0 +1,8 @@
1
+ {
2
+ "command": "npx",
3
+ "args": ["-y", "open-websearch@latest"],
4
+ "env": {
5
+ "MODE": "stdio",
6
+ "DEFAULT_SEARCH_ENGINE": "duckduckgo"
7
+ }
8
+ }
package/package.json ADDED
@@ -0,0 +1,122 @@
1
+ {
2
+ "name": "@easynet/agent-tool",
3
+ "version": "1.0.0",
4
+ "description": "MCP build: init → build → run. Turn your project (@tool, SKILL, n8n) into a standalone MCP npm server (no framework embedding, no package conflict).",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "bin": {
10
+ "agent-tool": "dist/cli.js"
11
+ },
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.js",
16
+ "require": "./dist/index.cjs"
17
+ },
18
+ "./core": {
19
+ "types": "./dist/core.d.ts",
20
+ "import": "./dist/core.js",
21
+ "require": "./dist/core.cjs"
22
+ }
23
+ },
24
+ "files": [
25
+ "dist",
26
+ "extensions/examples"
27
+ ],
28
+ "publishConfig": {
29
+ "access": "public",
30
+ "registry": "https://registry.npmjs.org/"
31
+ },
32
+ "scripts": {
33
+ "build": "npx tsup && npx tsc -p tsconfig.dts.json && mkdir -p dist/report && cp src/report/agent-report-template.html dist/report/ && mkdir -p dist/templates && cp src/codegen/templates/*.js dist/templates/",
34
+ "build:ext": "cd extensions/builtin-tools && npm install && npm run build && cd ../example-tools && npm install && npm run build",
35
+ "dev": "npx tsup --watch",
36
+ "test": "vitest run",
37
+ "test:watch": "vitest",
38
+ "typecheck": "tsc --noEmit",
39
+ "clean": "rm -rf dist",
40
+ "lint:lines": "./scripts/check-line-count.sh",
41
+ "lint:functions": "python3 scripts/check-function-length.py",
42
+ "deps:tree": "npm ls --all",
43
+ "deps:size": "du -sh node_modules/* 2>/dev/null | sort -hr | head -40",
44
+ "agent": "echo 'Use: npx @easynet/agent-orchestra run \"task\" -c agent.yaml'",
45
+ "agent:stock": "node extensions/examples/scripts/agent-tool-react-stock.mjs"
46
+ },
47
+ "dependencies": {
48
+ "@easynet/agent-llm": "^1.0.0",
49
+ "@easynet/agent-tool-builtin-tools": "file:extensions/builtin-tools",
50
+ "@modelcontextprotocol/sdk": "^1.25.3",
51
+ "@easynet/agent-tool-example-tools": "file:extensions/example-tools",
52
+ "@langchain/core": ">=0.3.0",
53
+ "@langchain/openai": "^1.2.3",
54
+ "ajv": "^8.17.1",
55
+ "ajv-formats": "^3.0.1",
56
+ "cockatiel": "^3.2.1",
57
+ "eventemitter3": "^5.0.1",
58
+ "jmespath": "^0.16.0",
59
+ "js-yaml": "^4.1.1",
60
+ "langchain": ">=1.0.0",
61
+ "mustache": "^4.2.0",
62
+ "p-retry": "^6.2.1",
63
+ "p-timeout": "^6.1.4",
64
+ "tsx": "^4.21.0",
65
+ "typescript": "^5.7.2",
66
+ "uuid": "^11.0.5"
67
+ },
68
+ "devDependencies": {
69
+ "@langchain/core": "1.1.17",
70
+ "@langchain/openai": "1.2.3",
71
+ "@semantic-release/git": "^10.0.1",
72
+ "@types/jmespath": "^0.15.2",
73
+ "@types/js-yaml": "^4.0.9",
74
+ "@types/mustache": "^4.2.5",
75
+ "@types/node": "^22.10.0",
76
+ "@types/uuid": "^10.0.0",
77
+ "deepagents": "1.6.1",
78
+ "langchain": "1.2.7",
79
+ "semantic-release": "^24.2.0",
80
+ "tsup": "^8.3.5",
81
+ "typescript": "^5.7.2",
82
+ "vitest": "^2.1.8",
83
+ "zod": "^3.23.0"
84
+ },
85
+ "peerDependencies": {
86
+ "@langchain/core": ">=0.3.0",
87
+ "@modelcontextprotocol/sdk": ">=1.25.0",
88
+ "langchain": ">=1.0.0",
89
+ "zod": ">=3.23.0"
90
+ },
91
+ "peerDependenciesMeta": {
92
+ "@modelcontextprotocol/sdk": {
93
+ "optional": true
94
+ },
95
+ "@langchain/core": {
96
+ "optional": true
97
+ },
98
+ "langchain": {
99
+ "optional": true
100
+ },
101
+ "zod": {
102
+ "optional": true
103
+ }
104
+ },
105
+ "overrides": {
106
+ "@langchain/core": "1.1.17",
107
+ "deepagents": "1.6.1",
108
+ "langchain": "1.2.7"
109
+ },
110
+ "engines": {
111
+ "node": ">=18.0.0"
112
+ },
113
+ "license": "MIT",
114
+ "repository": {
115
+ "type": "git",
116
+ "url": "https://github.com/easynet-world/agent-tool.git"
117
+ },
118
+ "homepage": "https://github.com/easynet-world/agent-tool#readme",
119
+ "bugs": {
120
+ "url": "https://github.com/easynet-world/agent-tool/issues"
121
+ }
122
+ }