@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.
- package/README.md +103 -0
- package/dist/chunk-3YLVPZRJ.cjs +32 -0
- package/dist/chunk-3YLVPZRJ.cjs.map +1 -0
- package/dist/chunk-AXUNV4MK.js +28 -0
- package/dist/chunk-AXUNV4MK.js.map +1 -0
- package/dist/chunk-BM4EVYI5.js +1069 -0
- package/dist/chunk-BM4EVYI5.js.map +1 -0
- package/dist/chunk-P3UEAZHK.cjs +171 -0
- package/dist/chunk-P3UEAZHK.cjs.map +1 -0
- package/dist/chunk-RPAMQCFH.js +167 -0
- package/dist/chunk-RPAMQCFH.js.map +1 -0
- package/dist/chunk-Z7TGIG77.cjs +1108 -0
- package/dist/chunk-Z7TGIG77.cjs.map +1 -0
- package/dist/cli.cjs +154 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +147 -0
- package/dist/cli.js.map +1 -0
- package/dist/codegen/build.d.ts +23 -0
- package/dist/codegen/build.d.ts.map +1 -0
- package/dist/codegen/generator.d.ts +15 -0
- package/dist/codegen/generator.d.ts.map +1 -0
- package/dist/codegen/index.d.ts +21 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/init.d.ts +17 -0
- package/dist/codegen/init.d.ts.map +1 -0
- package/dist/codegen/run.d.ts +19 -0
- package/dist/codegen/run.d.ts.map +1 -0
- package/dist/codegen/scan/scanN8n.d.ts +17 -0
- package/dist/codegen/scan/scanN8n.d.ts.map +1 -0
- package/dist/codegen/scan/scanSkill.d.ts +17 -0
- package/dist/codegen/scan/scanSkill.d.ts.map +1 -0
- package/dist/codegen/scan/scanTools.d.ts +31 -0
- package/dist/codegen/scan/scanTools.d.ts.map +1 -0
- package/dist/codegen/scan/scanner.d.ts +26 -0
- package/dist/codegen/scan/scanner.d.ts.map +1 -0
- package/dist/codegen/scan/schemaFromTs.d.ts +16 -0
- package/dist/codegen/scan/schemaFromTs.d.ts.map +1 -0
- package/dist/codegen/types.d.ts +81 -0
- package/dist/codegen/types.d.ts.map +1 -0
- package/dist/core.cjs +20 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.ts +8 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +3 -0
- package/dist/core.js.map +1 -0
- package/dist/discovery/MCPProcessManager.d.ts +57 -0
- package/dist/discovery/MCPProcessManager.d.ts.map +1 -0
- package/dist/discovery/errors.d.ts +13 -0
- package/dist/discovery/errors.d.ts.map +1 -0
- package/dist/discovery/load/LangChainLoader.d.ts +7 -0
- package/dist/discovery/load/LangChainLoader.d.ts.map +1 -0
- package/dist/discovery/load/MCPLoader.d.ts +8 -0
- package/dist/discovery/load/MCPLoader.d.ts.map +1 -0
- package/dist/discovery/load/N8nLoader.d.ts +25 -0
- package/dist/discovery/load/N8nLoader.d.ts.map +1 -0
- package/dist/discovery/load/SkillLoader.d.ts +20 -0
- package/dist/discovery/load/SkillLoader.d.ts.map +1 -0
- package/dist/discovery/load/SkillManifest.d.ts +79 -0
- package/dist/discovery/load/SkillManifest.d.ts.map +1 -0
- package/dist/discovery/load/SkillMdParser.d.ts +31 -0
- package/dist/discovery/load/SkillMdParser.d.ts.map +1 -0
- package/dist/discovery/load/index.d.ts +6 -0
- package/dist/discovery/load/index.d.ts.map +1 -0
- package/dist/discovery/load/resolveEntry.d.ts +7 -0
- package/dist/discovery/load/resolveEntry.d.ts.map +1 -0
- package/dist/discovery/scan/DirectoryScanner.d.ts +37 -0
- package/dist/discovery/scan/DirectoryScanner.d.ts.map +1 -0
- package/dist/discovery/scan/scanUtil.d.ts +16 -0
- package/dist/discovery/scan/scanUtil.d.ts.map +1 -0
- package/dist/discovery/types.d.ts +99 -0
- package/dist/discovery/types.d.ts.map +1 -0
- package/dist/index.cjs +3014 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +68 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2778 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/AgentLLMAdapter.d.ts +27 -0
- package/dist/llm/AgentLLMAdapter.d.ts.map +1 -0
- package/dist/llm/LangChainToolsHub.d.ts +31 -0
- package/dist/llm/LangChainToolsHub.d.ts.map +1 -0
- package/dist/llm/OpenAICompatibleClient.d.ts +64 -0
- package/dist/llm/OpenAICompatibleClient.d.ts.map +1 -0
- package/dist/llm/ReActAgent.d.ts +35 -0
- package/dist/llm/ReActAgent.d.ts.map +1 -0
- package/dist/llm-export.cjs +20 -0
- package/dist/llm-export.cjs.map +1 -0
- package/dist/llm-export.d.ts +9 -0
- package/dist/llm-export.d.ts.map +1 -0
- package/dist/llm-export.js +3 -0
- package/dist/llm-export.js.map +1 -0
- package/dist/mcp/MCPClientAdapter.d.ts +34 -0
- package/dist/mcp/MCPClientAdapter.d.ts.map +1 -0
- package/dist/mcp/connectMCP.d.ts +47 -0
- package/dist/mcp/connectMCP.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +10 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/registerMCPTools.d.ts +24 -0
- package/dist/mcp/registerMCPTools.d.ts.map +1 -0
- package/dist/observability/EventLog.d.ts +60 -0
- package/dist/observability/EventLog.d.ts.map +1 -0
- package/dist/observability/Logger.d.ts +33 -0
- package/dist/observability/Logger.d.ts.map +1 -0
- package/dist/observability/Metrics.d.ts +70 -0
- package/dist/observability/Metrics.d.ts.map +1 -0
- package/dist/observability/Tracing.d.ts +69 -0
- package/dist/observability/Tracing.d.ts.map +1 -0
- package/dist/registry/ToolRegistry.d.ts +68 -0
- package/dist/registry/ToolRegistry.d.ts.map +1 -0
- package/dist/report/AgentReportGenerator.d.ts +53 -0
- package/dist/report/AgentReportGenerator.d.ts.map +1 -0
- package/dist/report/agent-report-template.html +362 -0
- package/dist/report/index.d.ts +3 -0
- package/dist/report/index.d.ts.map +1 -0
- package/dist/report/types.d.ts +101 -0
- package/dist/report/types.d.ts.map +1 -0
- package/dist/runAgent.d.ts +37 -0
- package/dist/runAgent.d.ts.map +1 -0
- package/dist/runtime/Budget.d.ts +63 -0
- package/dist/runtime/Budget.d.ts.map +1 -0
- package/dist/runtime/Evidence.d.ts +19 -0
- package/dist/runtime/Evidence.d.ts.map +1 -0
- package/dist/runtime/PTCRuntime.d.ts +115 -0
- package/dist/runtime/PTCRuntime.d.ts.map +1 -0
- package/dist/runtime/PTCRuntimeObservability.d.ts +26 -0
- package/dist/runtime/PTCRuntimeObservability.d.ts.map +1 -0
- package/dist/runtime/PTCRuntimePipeline.d.ts +62 -0
- package/dist/runtime/PTCRuntimePipeline.d.ts.map +1 -0
- package/dist/runtime/PolicyEngine.d.ts +67 -0
- package/dist/runtime/PolicyEngine.d.ts.map +1 -0
- package/dist/runtime/Retry.d.ts +33 -0
- package/dist/runtime/Retry.d.ts.map +1 -0
- package/dist/runtime/SchemaValidator.d.ts +42 -0
- package/dist/runtime/SchemaValidator.d.ts.map +1 -0
- package/dist/templates/mcp-server.js +48 -0
- package/dist/templates/n8n-invoker.js +11 -0
- package/dist/templates/skill-invoker.js +11 -0
- package/dist/templates/tool-index.js +9 -0
- package/dist/toolDescriptor.d.ts +38 -0
- package/dist/toolDescriptor.d.ts.map +1 -0
- package/dist/types/Events.d.ts +99 -0
- package/dist/types/Events.d.ts.map +1 -0
- package/dist/types/ToolIntent.d.ts +40 -0
- package/dist/types/ToolIntent.d.ts.map +1 -0
- package/dist/types/ToolResult.d.ts +30 -0
- package/dist/types/ToolResult.d.ts.map +1 -0
- package/dist/types/ToolSpec.d.ts +99 -0
- package/dist/types/ToolSpec.d.ts.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/extensions/examples/README.md +40 -0
- package/extensions/examples/scripts/agent-tool-react-stock.mjs +30 -0
- package/extensions/examples/tools/instruction-only/skill/SKILL.md +26 -0
- package/extensions/examples/tools/web-search/mcp/mcp.json +8 -0
- package/package.json +122 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/llm/OpenAICompatibleClient.ts","../src/llm/ReActAgent.ts"],"names":[],"mappings":"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","file":"chunk-RPAMQCFH.js","sourcesContent":["/**\n * Minimal client for OpenAI-compatible chat completions API.\n * Use createOpenAICompatibleClient(baseUrl, model, apiKey?) and then .chat(messages) or .chatWithTools(messages, tools).\n */\n\nexport interface ChatMessage {\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface ChatOptions {\n /** Request timeout in milliseconds. Default 60000. */\n timeoutMs?: number;\n}\n\nexport interface ChatResult {\n content: string;\n raw: unknown;\n}\n\nexport interface OpenAIToolDefinition {\n type: \"function\";\n function: {\n name: string;\n description?: string;\n parameters?: object;\n };\n}\n\nexport interface AssistantMessageWithToolCalls {\n role: \"assistant\";\n content?: string | null;\n tool_calls?: Array<{\n id: string;\n type: \"function\";\n function: { name: string; arguments: string };\n }>;\n}\n\nexport interface ChatWithToolsResult {\n message: AssistantMessageWithToolCalls;\n raw: unknown;\n}\n\nexport interface OpenAICompatibleClientConfig {\n baseUrl: string;\n model: string;\n apiKey?: string;\n}\n\nconst DEFAULT_TIMEOUT_MS = 60_000;\n\nexport function createOpenAICompatibleClient(\n baseUrl: string,\n model: string,\n apiKey?: string\n): OpenAICompatibleClient {\n return new OpenAICompatibleClient({ baseUrl, model, apiKey });\n}\n\nexport class OpenAICompatibleClient {\n private readonly baseUrl: string;\n private readonly model: string;\n private readonly apiKey?: string;\n\n constructor(config: OpenAICompatibleClientConfig) {\n this.baseUrl = config.baseUrl.replace(/\\/$/, \"\");\n this.model = config.model;\n this.apiKey = config.apiKey;\n }\n\n async chat(\n messages: ChatMessage[],\n options?: ChatOptions\n ): Promise<ChatResult> {\n const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const raw = await this.request(\n {\n model: this.model,\n messages: messages.map((m) => ({ role: m.role, content: m.content })),\n },\n timeoutMs\n );\n const choices = (raw as { choices?: Array<{ message?: { content?: string } }> }).choices;\n const content =\n Array.isArray(choices) && choices[0]?.message?.content != null\n ? String(choices[0].message.content)\n : \"\";\n return { content, raw };\n }\n\n async chatWithTools(\n messages: Array<\n | ChatMessage\n | { role: \"tool\"; content: string; tool_call_id: string }\n | (Omit<AssistantMessageWithToolCalls, \"role\"> & { role: \"assistant\" })\n >,\n tools: OpenAIToolDefinition[],\n options?: ChatOptions\n ): Promise<ChatWithToolsResult> {\n const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const raw = await this.request(\n {\n model: this.model,\n messages: messages.map((m) => this.serializeMessage(m)),\n tools,\n },\n timeoutMs\n );\n const choices = (raw as {\n choices?: Array<{\n message?: {\n content?: string | null;\n tool_calls?: AssistantMessageWithToolCalls[\"tool_calls\"];\n };\n }>;\n }).choices;\n const msg = Array.isArray(choices) ? choices[0]?.message : undefined;\n return {\n message: {\n role: \"assistant\",\n content: msg?.content ?? null,\n tool_calls: msg?.tool_calls,\n },\n raw,\n };\n }\n\n private buildHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n if (this.apiKey) headers[\"Authorization\"] = `Bearer ${this.apiKey}`;\n return headers;\n }\n\n private serializeMessage(\n m:\n | ChatMessage\n | { role: \"tool\"; content: string; tool_call_id: string }\n | (AssistantMessageWithToolCalls & { role: \"assistant\" })\n ): object {\n if (m.role === \"tool\")\n return { role: \"tool\", content: m.content, tool_call_id: m.tool_call_id };\n if (m.role === \"assistant\" && \"tool_calls\" in m && m.tool_calls?.length)\n return { role: \"assistant\", content: m.content ?? null, tool_calls: m.tool_calls };\n return { role: m.role, content: (m as ChatMessage).content };\n }\n\n private async request(body: object, timeoutMs: number): Promise<unknown> {\n const url = `${this.baseUrl}/chat/completions`;\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n let response: Response;\n try {\n response = await fetch(url, {\n method: \"POST\",\n headers: this.buildHeaders(),\n body: JSON.stringify(body),\n signal: controller.signal,\n });\n } catch (err) {\n clearTimeout(timer);\n if (err instanceof Error && err.name === \"AbortError\")\n throw new Error(`LLM request timed out after ${timeoutMs}ms`);\n throw err;\n }\n clearTimeout(timer);\n const raw = (await response.json()) as unknown;\n if (!response.ok) {\n const errBody =\n typeof raw === \"object\" && raw !== null && \"error\" in (raw as object)\n ? (raw as { error: unknown }).error\n : raw;\n throw new Error(\n `LLM API error ${response.status}: ${JSON.stringify(errBody)}`\n );\n }\n return raw;\n }\n}\n","/**\n * ReAct agent: LLM + tool hub, Thought–Action–Observation loop.\n * Use: new ReActAgent(llm, toolHub).run(instruction).\n */\n\nimport type { ToolRegistry } from \"../registry/ToolRegistry.js\";\nimport type { ToolSpec } from \"../types/ToolSpec.js\";\nimport type { ToolResult } from \"../types/ToolResult.js\";\nimport type {\n OpenAICompatibleClient,\n OpenAIToolDefinition,\n AssistantMessageWithToolCalls,\n ChatMessage,\n} from \"./OpenAICompatibleClient.js\";\n\nexport interface ReActAgentToolHub {\n getRegistry(): ToolRegistry;\n invokeTool(toolName: string, args: unknown): Promise<ToolResult>;\n}\n\nexport interface ReActAgentRunOptions {\n systemPrompt?: string;\n maxSteps?: number;\n timeoutMs?: number;\n /** When set, only these tool names are exposed to the LLM (e.g. from agent.yaml tools list). */\n toolNames?: string[];\n}\n\nexport interface ReActAgentRunResult {\n content: string;\n steps: number;\n}\n\ntype AgentMessage =\n | ChatMessage\n | { role: \"tool\"; content: string; tool_call_id: string }\n | (AssistantMessageWithToolCalls & { role: \"assistant\" });\n\nconst DEFAULT_PROMPT =\n \"ReAct: Thought (reason) → Action (use tool or answer) → Observation (tool result). Repeat until you give the final answer. Same language as user.\";\n\nexport class ReActAgent {\n constructor(\n private readonly llm: OpenAICompatibleClient,\n private readonly toolHub: ReActAgentToolHub\n ) {}\n\n async run(\n instruction: string,\n options: ReActAgentRunOptions = {}\n ): Promise<ReActAgentRunResult> {\n const maxSteps = options.maxSteps ?? 100;\n const tools = this.getTools(options.toolNames);\n const messages: AgentMessage[] = [\n { role: \"system\", content: options.systemPrompt ?? DEFAULT_PROMPT },\n { role: \"user\", content: instruction },\n ];\n let steps = 0;\n let lastContent = \"\";\n\n while (steps < maxSteps) {\n const { message } = await this.llm.chatWithTools(\n messages,\n tools,\n options.timeoutMs ? { timeoutMs: options.timeoutMs } : undefined\n );\n steps++;\n messages.push({ ...message, role: \"assistant\" });\n if (message.content) lastContent = message.content;\n if (!message.tool_calls?.length)\n return { content: lastContent, steps };\n\n for (const tc of message.tool_calls) {\n const args = this.parseArgs(tc.function.arguments);\n const result = await this.toolHub.invokeTool(tc.function.name, args);\n const content = result.ok\n ? JSON.stringify(result.result)\n : JSON.stringify({ ok: false, error: result.error?.message ?? \"Tool failed\" });\n messages.push({ role: \"tool\", content: `Observation: ${content}`, tool_call_id: tc.id });\n }\n }\n return { content: lastContent || \"Reached max steps.\", steps };\n }\n\n private getTools(toolNames?: string[]): OpenAIToolDefinition[] {\n let specs = this.toolHub.getRegistry().snapshot();\n if (toolNames?.length) {\n const set = new Set(toolNames);\n specs = specs.filter((s) => set.has(s.name));\n }\n return specs.map((s: ToolSpec) => ({\n type: \"function\" as const,\n function: { name: s.name, description: s.description ?? \"\", parameters: s.inputSchema },\n }));\n }\n\n /**\n * Parse tool-call arguments. Handles models that send text + JSON\n * (e.g. \"Let's fetch.{\\\"symbol\\\":\\\"GOOGL\\\"}\") by extracting the last {...} and parsing.\n */\n private parseArgs(json: string | undefined): unknown {\n const str = (json ?? \"\").trim();\n if (!str) return {};\n try {\n const parsed = JSON.parse(str) as unknown;\n if (parsed != null && typeof parsed === \"object\" && !Array.isArray(parsed))\n return parsed;\n } catch {\n // ignore\n }\n const lastBrace = str.lastIndexOf(\"{\");\n if (lastBrace === -1) return {};\n try {\n const parsed = JSON.parse(str.slice(lastBrace)) as unknown;\n if (parsed != null && typeof parsed === \"object\" && !Array.isArray(parsed))\n return parsed;\n } catch {\n // ignore\n }\n return {};\n }\n}\n"]}
|