@yourgpt/copilot-sdk 2.1.5-alpha.0 → 2.1.5-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-4QXY2PBG.js → chunk-3AONOZLY.js} +2 -2
- package/dist/{chunk-4QXY2PBG.js.map → chunk-3AONOZLY.js.map} +1 -1
- package/dist/{chunk-JKGFQUHJ.cjs → chunk-MDS23G2S.cjs} +5 -5
- package/dist/{chunk-JKGFQUHJ.cjs.map → chunk-MDS23G2S.cjs.map} +1 -1
- package/dist/{chunk-6BMQZIS3.js → chunk-PT2TOHG5.js} +23 -8
- package/dist/chunk-PT2TOHG5.js.map +1 -0
- package/dist/{chunk-ENFWM3EY.js → chunk-RKGRQRZU.js} +3 -3
- package/dist/{chunk-ENFWM3EY.js.map → chunk-RKGRQRZU.js.map} +1 -1
- package/dist/{chunk-76RE7AJE.cjs → chunk-TCPAT3WG.cjs} +51 -36
- package/dist/chunk-TCPAT3WG.cjs.map +1 -0
- package/dist/{chunk-246B6X5D.cjs → chunk-TPB7XED6.cjs} +2 -2
- package/dist/{chunk-246B6X5D.cjs.map → chunk-TPB7XED6.cjs.map} +1 -1
- package/dist/{chunk-I3SQUNTT.cjs → chunk-WIXFZUEZ.cjs} +23 -23
- package/dist/{chunk-I3SQUNTT.cjs.map → chunk-WIXFZUEZ.cjs.map} +1 -1
- package/dist/{chunk-UXJ6LIZB.js → chunk-WZ2TOZ7M.js} +4 -4
- package/dist/{chunk-UXJ6LIZB.js.map → chunk-WZ2TOZ7M.js.map} +1 -1
- package/dist/core/index.cjs +82 -82
- package/dist/core/index.d.cts +3 -3
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.js +3 -3
- package/dist/{index-CiExk87c.d.cts → index-CzJB8Ddo.d.cts} +1 -1
- package/dist/{index-Dwrcf-CP.d.ts → index-D7169xuR.d.ts} +1 -1
- package/dist/mcp/index.d.cts +3 -3
- package/dist/mcp/index.d.ts +3 -3
- package/dist/react/index.cjs +65 -65
- package/dist/react/index.d.cts +8 -4
- package/dist/react/index.d.ts +8 -4
- package/dist/react/index.js +4 -4
- package/dist/styles.css +43 -0
- package/dist/tools/anthropic/index.d.cts +1 -1
- package/dist/tools/anthropic/index.d.ts +1 -1
- package/dist/tools/brave/index.cjs +2 -2
- package/dist/tools/brave/index.d.cts +1 -1
- package/dist/tools/brave/index.d.ts +1 -1
- package/dist/tools/brave/index.js +1 -1
- package/dist/tools/exa/index.cjs +2 -2
- package/dist/tools/exa/index.d.cts +1 -1
- package/dist/tools/exa/index.d.ts +1 -1
- package/dist/tools/exa/index.js +1 -1
- package/dist/tools/google/index.cjs +2 -2
- package/dist/tools/google/index.d.cts +1 -1
- package/dist/tools/google/index.d.ts +1 -1
- package/dist/tools/google/index.js +1 -1
- package/dist/tools/openai/index.cjs +2 -2
- package/dist/tools/openai/index.d.cts +1 -1
- package/dist/tools/openai/index.d.ts +1 -1
- package/dist/tools/openai/index.js +1 -1
- package/dist/tools/searxng/index.cjs +2 -2
- package/dist/tools/searxng/index.d.cts +1 -1
- package/dist/tools/searxng/index.d.ts +1 -1
- package/dist/tools/searxng/index.js +1 -1
- package/dist/tools/serper/index.cjs +2 -2
- package/dist/tools/serper/index.d.cts +1 -1
- package/dist/tools/serper/index.d.ts +1 -1
- package/dist/tools/serper/index.js +1 -1
- package/dist/tools/tavily/index.cjs +2 -2
- package/dist/tools/tavily/index.d.cts +1 -1
- package/dist/tools/tavily/index.d.ts +1 -1
- package/dist/tools/tavily/index.js +1 -1
- package/dist/tools/web-search/index.cjs +3 -3
- package/dist/tools/web-search/index.d.cts +2 -2
- package/dist/tools/web-search/index.d.ts +2 -2
- package/dist/tools/web-search/index.js +2 -2
- package/dist/{tools-DHZhF5km.d.cts → tools-tmksfhUo.d.cts} +9 -0
- package/dist/{tools-DHZhF5km.d.ts → tools-tmksfhUo.d.ts} +9 -0
- package/dist/{types-BdX7uPj0.d.cts → types-BLw7mxtW.d.cts} +1 -1
- package/dist/{types-BTyJu0WD.d.ts → types-BqwW3Baj.d.ts} +1 -1
- package/dist/ui/index.cjs +434 -449
- package/dist/ui/index.cjs.map +1 -1
- package/dist/ui/index.d.cts +40 -56
- package/dist/ui/index.d.ts +40 -56
- package/dist/ui/index.js +381 -396
- package/dist/ui/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-6BMQZIS3.js.map +0 -1
- package/dist/chunk-76RE7AJE.cjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { tool, failure } from './chunk-
|
|
1
|
+
import { tool, failure } from './chunk-3AONOZLY.js';
|
|
2
2
|
import { formatSearchResultsForAI, executeWebSearch, summarizeSearchResults } from './chunk-LLM7AHMO.js';
|
|
3
3
|
|
|
4
4
|
// src/core/tools/builtin/webSearch.ts
|
|
@@ -75,5 +75,5 @@ function createWebSearchTool(config) {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
export { createWebSearchTool, webSearchTool };
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
79
|
-
//# sourceMappingURL=chunk-
|
|
78
|
+
//# sourceMappingURL=chunk-RKGRQRZU.js.map
|
|
79
|
+
//# sourceMappingURL=chunk-RKGRQRZU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/tools/builtin/webSearch.ts"],"names":[],"mappings":";;;;AAoDO,IAAM,gBAAgB,IAAA,CAAsB;AAAA,EACjD,WAAA,EAAa,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qDAAA,CAAA;AAAA,EAOb,QAAA,EAAU,QAAA;AAAA;AAAA,EAEV,KAAA,EAAO,CAAC,IAAA,KAAS,CAAA,eAAA,EAAkB,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,EAC7C,cAAA,EAAgB,CAAC,IAAA,KAAS,CAAA,uBAAA,EAA0B,KAAK,KAAK,CAAA,IAAA,CAAA;AAAA,EAC9D,cAAA,EAAgB,CAAC,IAAA,KAAS,CAAA,mBAAA,EAAsB,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,EAE1D,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY;AAAA,MACV,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa;AAAA,OACf;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EACE,2DAAA;AAAA,QACF,OAAA,EAAS,CAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM,CAAC,OAAA,EAAS,UAAU,CAAA;AAAA,QAC1B,WAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,QAAA,EAAU,CAAC,OAAO;AAAA,GACpB;AAAA,EAEA,aAAA,EAAe,KAAA;AAAA;AAAA;AAAA,EAGf,cAAA,EAAgB,MAAA;AAAA,EAChB,SAAA,EAAW,CAAC,MAAA,EAAQ,IAAA,KAAS;AAC3B,IAAA,IAAI,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO,CAAA,eAAA,EAAkB,OAAO,KAAK,CAAA,CAAA;AAC1D,IAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,IAAA,OAAO,yBAAyB,IAAI,CAAA;AAAA,EACtC;AACF,CAAC;AAoEM,SAAS,oBACd,MAAA,EACiC;AACjC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,YAAA;AAAA,IACN,GAAG,aAAA;AAAA,IACH,OAAA,EAAS,OAAO,MAAA,KAA4B;AAC1C,MAAA,IAAI;AACF,QAAA,MAAM,WAAW,MAAM,gBAAA;AAAA,UACrB;AAAA,YACE,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,UAAA,EAAY,MAAA,CAAO,UAAA,IAAc,MAAA,CAAO,UAAA,IAAc,CAAA;AAAA,YACtD,WAAA,EAAa,MAAA,CAAO,WAAA,IAAe,MAAA,CAAO,WAAA,IAAe;AAAA,WAC3D;AAAA,UACA;AAAA,SACF;AAGA,QAAA,MAAM,SAAA,GAAY,yBAAyB,QAAQ,CAAA;AAEnD,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,IAAA;AAAA,UACT,OAAA,EAAS,uBAAuB,QAAQ,CAAA;AAAA,UACxC,IAAA,EAAM,QAAA;AAAA,UACN,UAAA,EAAY;AAAA,SACd;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,YAAA,GACJ,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,mBAAA;AAC3C,QAAA,OAAO,QAAQ,YAAY,CAAA;AAAA,MAC7B;AAAA,IACF;AAAA,GACF;AACF","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/core/tools/builtin/webSearch.ts"],"names":[],"mappings":";;;;AAoDO,IAAM,gBAAgB,IAAA,CAAsB;AAAA,EACjD,WAAA,EAAa,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qDAAA,CAAA;AAAA,EAOb,QAAA,EAAU,QAAA;AAAA;AAAA,EAEV,KAAA,EAAO,CAAC,IAAA,KAAS,CAAA,eAAA,EAAkB,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,EAC7C,cAAA,EAAgB,CAAC,IAAA,KAAS,CAAA,uBAAA,EAA0B,KAAK,KAAK,CAAA,IAAA,CAAA;AAAA,EAC9D,cAAA,EAAgB,CAAC,IAAA,KAAS,CAAA,mBAAA,EAAsB,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,EAE1D,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY;AAAA,MACV,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa;AAAA,OACf;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EACE,2DAAA;AAAA,QACF,OAAA,EAAS,CAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM,CAAC,OAAA,EAAS,UAAU,CAAA;AAAA,QAC1B,WAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,QAAA,EAAU,CAAC,OAAO;AAAA,GACpB;AAAA,EAEA,aAAA,EAAe,KAAA;AAAA;AAAA;AAAA,EAGf,cAAA,EAAgB,MAAA;AAAA,EAChB,SAAA,EAAW,CAAC,MAAA,EAAQ,IAAA,KAAS;AAC3B,IAAA,IAAI,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO,CAAA,eAAA,EAAkB,OAAO,KAAK,CAAA,CAAA;AAC1D,IAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,IAAA,OAAO,yBAAyB,IAAI,CAAA;AAAA,EACtC;AACF,CAAC;AAoEM,SAAS,oBACd,MAAA,EACiC;AACjC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,YAAA;AAAA,IACN,GAAG,aAAA;AAAA,IACH,OAAA,EAAS,OAAO,MAAA,KAA4B;AAC1C,MAAA,IAAI;AACF,QAAA,MAAM,WAAW,MAAM,gBAAA;AAAA,UACrB;AAAA,YACE,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,UAAA,EAAY,MAAA,CAAO,UAAA,IAAc,MAAA,CAAO,UAAA,IAAc,CAAA;AAAA,YACtD,WAAA,EAAa,MAAA,CAAO,WAAA,IAAe,MAAA,CAAO,WAAA,IAAe;AAAA,WAC3D;AAAA,UACA;AAAA,SACF;AAGA,QAAA,MAAM,SAAA,GAAY,yBAAyB,QAAQ,CAAA;AAEnD,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,IAAA;AAAA,UACT,OAAA,EAAS,uBAAuB,QAAQ,CAAA;AAAA,UACxC,IAAA,EAAM,QAAA;AAAA,UACN,UAAA,EAAY;AAAA,SACd;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,YAAA,GACJ,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,mBAAA;AAC3C,QAAA,OAAO,QAAQ,YAAY,CAAA;AAAA,MAC7B;AAAA,IACF;AAAA,GACF;AACF","file":"chunk-RKGRQRZU.js","sourcesContent":["/**\n * Built-in Web Search Tool\n *\n * A pre-configured tool for searching the web with multiple provider support.\n * Runs on the server to protect API keys.\n *\n * Supports tree-shaking - import providers directly for smaller bundles.\n *\n * @example\n * ```typescript\n * // Option 1: String provider (lazy loaded at runtime)\n * import { createWebSearchTool } from '@yourgpt/copilot-sdk';\n * const webSearch = createWebSearchTool({\n * provider: 'tavily',\n * apiKey: process.env.TAVILY_API_KEY,\n * });\n *\n * // Option 2: Direct provider import (best for tree-shaking)\n * import { createWebSearchTool, tavilyProvider } from '@yourgpt/copilot-sdk';\n * const webSearch = createWebSearchTool({\n * provider: tavilyProvider,\n * apiKey: process.env.TAVILY_API_KEY,\n * });\n *\n * // Add to your runtime\n * const runtime = createRuntime({\n * tools: [webSearch],\n * });\n * ```\n */\n\nimport { tool, success, failure } from \"../../types/tools\";\nimport type { ToolDefinition } from \"../../types/tools\";\nimport {\n executeWebSearch,\n formatSearchResultsForAI,\n summarizeSearchResults,\n type WebSearchConfigExtended,\n} from \"../webSearch\";\nimport type {\n WebSearchConfig,\n WebSearchParams,\n WebSearchResponse,\n WebSearchProviderInterface,\n} from \"../webSearch/types\";\n\n/**\n * Base web search tool definition\n *\n * This is the core tool definition. Use `createWebSearchTool()` to create\n * a configured instance with your provider settings.\n */\nexport const webSearchTool = tool<WebSearchParams>({\n description: `Search the web for current information. Use this when the user asks about:\n- Recent events, news, or current affairs\n- Real-time data (prices, weather, stocks, sports scores)\n- Information that might have changed after your training cutoff\n- Facts that need verification with current sources\n- Research topics that require up-to-date information`,\n\n location: \"server\", // Runs on server to protect API keys\n\n title: (args) => `Searching for \"${args.query}\"`,\n executingTitle: (args) => `Searching the web for \"${args.query}\"...`,\n completedTitle: (args) => `Found results for \"${args.query}\"`,\n\n inputSchema: {\n type: \"object\",\n properties: {\n query: {\n type: \"string\",\n description: \"The search query to find relevant information\",\n },\n maxResults: {\n type: \"number\",\n description:\n \"Maximum number of results to return (default: 5, max: 10)\",\n minimum: 1,\n maximum: 10,\n },\n searchDepth: {\n type: \"string\",\n enum: [\"basic\", \"advanced\"],\n description:\n \"Search depth - 'advanced' provides more thorough results but may be slower\",\n },\n },\n required: [\"query\"],\n },\n\n needsApproval: false, // No user data exposed, just searching\n\n // Control what AI sees from results\n aiResponseMode: \"full\",\n aiContext: (result, args) => {\n if (!result.success) return `Search failed: ${result.error}`;\n const data = result.data as WebSearchResponse;\n return formatSearchResultsForAI(data);\n },\n});\n\n/**\n * Create a configured web search tool\n *\n * Supports both string provider names (lazy loaded) and direct provider imports (tree-shakeable).\n *\n * @param config - Web search configuration including provider and API key\n * @returns A configured tool definition ready to use\n *\n * @example\n * ```typescript\n * // ===== BEST FOR TREE-SHAKING: Direct provider import =====\n * import { createWebSearchTool, openaiProvider } from '@yourgpt/copilot-sdk/core';\n *\n * const webSearch = createWebSearchTool({\n * provider: openaiProvider, // Only this provider in bundle\n * apiKey: process.env.OPENAI_API_KEY,\n * });\n *\n * // ===== STRING PROVIDERS (Lazy loaded at runtime) =====\n *\n * // OpenAI (uses your OpenAI API key)\n * const webSearch = createWebSearchTool({\n * provider: 'openai',\n * apiKey: process.env.OPENAI_API_KEY,\n * });\n *\n * // Google (uses your Google/Gemini API key)\n * const webSearch = createWebSearchTool({\n * provider: 'google',\n * apiKey: process.env.GOOGLE_API_KEY,\n * });\n *\n * // Tavily (AI-optimized search with answer generation)\n * const webSearch = createWebSearchTool({\n * provider: 'tavily',\n * apiKey: process.env.TAVILY_API_KEY,\n * includeAnswer: true,\n * maxResults: 5,\n * });\n *\n * // Serper (Google results)\n * const webSearch = createWebSearchTool({\n * provider: 'serper',\n * apiKey: process.env.SERPER_API_KEY,\n * });\n *\n * // Brave Search (privacy-focused)\n * const webSearch = createWebSearchTool({\n * provider: 'brave',\n * apiKey: process.env.BRAVE_API_KEY,\n * });\n *\n * // Self-hosted SearXNG (no API key needed)\n * const webSearch = createWebSearchTool({\n * provider: 'searxng',\n * baseUrl: 'https://your-searxng-instance.com',\n * });\n *\n * // Exa (AI-optimized semantic search)\n * const webSearch = createWebSearchTool({\n * provider: 'exa',\n * apiKey: process.env.EXA_API_KEY,\n * searchDepth: 'advanced',\n * });\n * ```\n */\nexport function createWebSearchTool(\n config: WebSearchConfigExtended,\n): ToolDefinition<WebSearchParams> {\n return {\n name: \"web_search\",\n ...webSearchTool,\n handler: async (params: WebSearchParams) => {\n try {\n const response = await executeWebSearch(\n {\n query: params.query,\n maxResults: params.maxResults ?? config.maxResults ?? 5,\n searchDepth: params.searchDepth ?? config.searchDepth ?? \"basic\",\n },\n config,\n );\n\n // Build the AI context string\n const aiContext = formatSearchResultsForAI(response);\n\n return {\n success: true,\n message: summarizeSearchResults(response),\n data: response,\n _aiContext: aiContext,\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Web search failed\";\n return failure(errorMessage);\n }\n },\n };\n}\n\n/**\n * Utility types for web search tool configuration\n */\nexport type {\n WebSearchConfig,\n WebSearchParams,\n WebSearchResponse,\n WebSearchProviderInterface,\n};\nexport type { WebSearchConfigExtended };\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkWIXFZUEZ_cjs = require('./chunk-WIXFZUEZ.cjs');
|
|
4
4
|
var chunkJGPDQDY4_cjs = require('./chunk-JGPDQDY4.cjs');
|
|
5
5
|
var chunkBJYA5NDL_cjs = require('./chunk-BJYA5NDL.cjs');
|
|
6
6
|
var React2 = require('react');
|
|
@@ -1647,18 +1647,23 @@ var AbstractChat = class {
|
|
|
1647
1647
|
"resolveUnresolvedToolCalls",
|
|
1648
1648
|
`Adding ${unresolvedIds.length} missing tool results`
|
|
1649
1649
|
);
|
|
1650
|
+
const visibleMsgs = this.state.messages;
|
|
1651
|
+
let errorChainParentId = visibleMsgs.length > 0 ? visibleMsgs[visibleMsgs.length - 1].id : void 0;
|
|
1650
1652
|
for (const toolCallId of unresolvedIds) {
|
|
1653
|
+
const toolMessageId = generateMessageId();
|
|
1651
1654
|
const toolMessage = {
|
|
1652
|
-
id:
|
|
1655
|
+
id: toolMessageId,
|
|
1653
1656
|
role: "tool",
|
|
1654
1657
|
content: JSON.stringify({
|
|
1655
1658
|
success: false,
|
|
1656
1659
|
error: "Tool execution was interrupted. Please try again."
|
|
1657
1660
|
}),
|
|
1658
1661
|
toolCallId,
|
|
1659
|
-
createdAt: /* @__PURE__ */ new Date()
|
|
1662
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
1663
|
+
...errorChainParentId !== void 0 ? { parentId: errorChainParentId } : {}
|
|
1660
1664
|
};
|
|
1661
1665
|
this.state.pushMessage(toolMessage);
|
|
1666
|
+
errorChainParentId = toolMessageId;
|
|
1662
1667
|
}
|
|
1663
1668
|
this.callbacks.onMessagesChange?.(this._allMessages());
|
|
1664
1669
|
}
|
|
@@ -1674,6 +1679,8 @@ var AbstractChat = class {
|
|
|
1674
1679
|
this.debug("continueWithToolResults", toolResults);
|
|
1675
1680
|
try {
|
|
1676
1681
|
const attachmentsToAdd = [];
|
|
1682
|
+
const visibleMessages = this.state.messages;
|
|
1683
|
+
let chainParentId = visibleMessages.length > 0 ? visibleMessages[visibleMessages.length - 1].id : void 0;
|
|
1677
1684
|
for (const { toolCallId, result } of toolResults) {
|
|
1678
1685
|
const typedResult = result;
|
|
1679
1686
|
let messageContent;
|
|
@@ -1690,14 +1697,17 @@ var AbstractChat = class {
|
|
|
1690
1697
|
} else {
|
|
1691
1698
|
messageContent = typeof result === "string" ? result : JSON.stringify(result);
|
|
1692
1699
|
}
|
|
1700
|
+
const toolMessageId = generateMessageId();
|
|
1693
1701
|
const toolMessage = {
|
|
1694
|
-
id:
|
|
1702
|
+
id: toolMessageId,
|
|
1695
1703
|
role: "tool",
|
|
1696
1704
|
content: messageContent,
|
|
1697
1705
|
toolCallId,
|
|
1698
|
-
createdAt: /* @__PURE__ */ new Date()
|
|
1706
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
1707
|
+
...chainParentId !== void 0 ? { parentId: chainParentId } : {}
|
|
1699
1708
|
};
|
|
1700
1709
|
this.state.pushMessage(toolMessage);
|
|
1710
|
+
chainParentId = toolMessageId;
|
|
1701
1711
|
}
|
|
1702
1712
|
if (attachmentsToAdd.length > 0) {
|
|
1703
1713
|
this.debug(
|
|
@@ -1709,7 +1719,8 @@ var AbstractChat = class {
|
|
|
1709
1719
|
role: "user",
|
|
1710
1720
|
content: "Here's my screen:",
|
|
1711
1721
|
attachments: attachmentsToAdd,
|
|
1712
|
-
createdAt: /* @__PURE__ */ new Date()
|
|
1722
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
1723
|
+
...chainParentId !== void 0 ? { parentId: chainParentId } : {}
|
|
1713
1724
|
};
|
|
1714
1725
|
this.state.pushMessage(userMessage);
|
|
1715
1726
|
}
|
|
@@ -2408,7 +2419,7 @@ ${this.dynamicContext}`.trim() : this.config.systemPrompt;
|
|
|
2408
2419
|
}
|
|
2409
2420
|
get log() {
|
|
2410
2421
|
if (!this._log) {
|
|
2411
|
-
this._log =
|
|
2422
|
+
this._log = chunkWIXFZUEZ_cjs.createLogger("streaming", () => this.config.debug ?? false);
|
|
2412
2423
|
}
|
|
2413
2424
|
return this._log;
|
|
2414
2425
|
}
|
|
@@ -2682,11 +2693,14 @@ var AbstractAgentLoop = class {
|
|
|
2682
2693
|
}
|
|
2683
2694
|
let approvalData;
|
|
2684
2695
|
if (tool2.needsApproval && !this.config.autoApprove) {
|
|
2696
|
+
const approvalTitle = typeof tool2.approvalTitle === "function" ? tool2.approvalTitle(toolCall.args) : tool2.approvalTitle;
|
|
2685
2697
|
const approvalMessage = typeof tool2.approvalMessage === "function" ? tool2.approvalMessage(toolCall.args) : tool2.approvalMessage;
|
|
2686
2698
|
execution.approvalStatus = "required";
|
|
2699
|
+
execution.approvalTitle = approvalTitle;
|
|
2687
2700
|
execution.approvalMessage = approvalMessage;
|
|
2688
2701
|
this.updateToolExecution(toolCall.id, {
|
|
2689
2702
|
approvalStatus: "required",
|
|
2703
|
+
approvalTitle,
|
|
2690
2704
|
approvalMessage
|
|
2691
2705
|
});
|
|
2692
2706
|
this.callbacks.onApprovalRequired?.(execution);
|
|
@@ -3329,7 +3343,7 @@ var ChatWithTools = class {
|
|
|
3329
3343
|
// Private
|
|
3330
3344
|
// ============================================
|
|
3331
3345
|
debug(message, ...args) {
|
|
3332
|
-
|
|
3346
|
+
chunkWIXFZUEZ_cjs.createLogger("tools", () => this.config.debug ?? false)(
|
|
3333
3347
|
message,
|
|
3334
3348
|
args.length === 1 ? args[0] : args.length > 1 ? args : void 0
|
|
3335
3349
|
);
|
|
@@ -4843,7 +4857,7 @@ function useTool(config, dependencies = []) {
|
|
|
4843
4857
|
configRef.current = config;
|
|
4844
4858
|
const inputSchema = React2.useMemo(() => {
|
|
4845
4859
|
if (isZodSchema(config.inputSchema)) {
|
|
4846
|
-
return
|
|
4860
|
+
return chunkWIXFZUEZ_cjs.zodToJsonSchema(config.inputSchema);
|
|
4847
4861
|
}
|
|
4848
4862
|
return config.inputSchema;
|
|
4849
4863
|
}, [config.inputSchema]);
|
|
@@ -4859,6 +4873,7 @@ function useTool(config, dependencies = []) {
|
|
|
4859
4873
|
render: config.render,
|
|
4860
4874
|
available: config.available ?? true,
|
|
4861
4875
|
needsApproval: config.needsApproval,
|
|
4876
|
+
approvalTitle: config.approvalTitle,
|
|
4862
4877
|
approvalMessage: config.approvalMessage,
|
|
4863
4878
|
hidden: config.hidden,
|
|
4864
4879
|
deferLoading: config.deferLoading,
|
|
@@ -5197,7 +5212,7 @@ function CopilotProvider({
|
|
|
5197
5212
|
}) {
|
|
5198
5213
|
const debugLog = React2.useCallback(
|
|
5199
5214
|
(action, data) => {
|
|
5200
|
-
|
|
5215
|
+
chunkWIXFZUEZ_cjs.createLogger("provider", () => debug ?? false)(action, data);
|
|
5201
5216
|
},
|
|
5202
5217
|
[debug]
|
|
5203
5218
|
);
|
|
@@ -5615,17 +5630,17 @@ function useAITools(options = {}) {
|
|
|
5615
5630
|
const rememberedConsentRef = React2.useRef(/* @__PURE__ */ new Set());
|
|
5616
5631
|
React2.useEffect(() => {
|
|
5617
5632
|
if (!autoStart || !isEnabled) return;
|
|
5618
|
-
if (consoleCapture && !
|
|
5619
|
-
|
|
5633
|
+
if (consoleCapture && !chunkWIXFZUEZ_cjs.isConsoleCaptureActive()) {
|
|
5634
|
+
chunkWIXFZUEZ_cjs.startConsoleCapture(consoleOptions);
|
|
5620
5635
|
setActiveCaptures((prev) => ({ ...prev, console: true }));
|
|
5621
5636
|
}
|
|
5622
|
-
if (network && !
|
|
5623
|
-
|
|
5637
|
+
if (network && !chunkWIXFZUEZ_cjs.isNetworkCaptureActive()) {
|
|
5638
|
+
chunkWIXFZUEZ_cjs.startNetworkCapture(networkOptions);
|
|
5624
5639
|
setActiveCaptures((prev) => ({ ...prev, network: true }));
|
|
5625
5640
|
}
|
|
5626
5641
|
return () => {
|
|
5627
|
-
|
|
5628
|
-
|
|
5642
|
+
chunkWIXFZUEZ_cjs.stopConsoleCapture();
|
|
5643
|
+
chunkWIXFZUEZ_cjs.stopNetworkCapture();
|
|
5629
5644
|
};
|
|
5630
5645
|
}, [
|
|
5631
5646
|
autoStart,
|
|
@@ -5640,12 +5655,12 @@ function useAITools(options = {}) {
|
|
|
5640
5655
|
if (!screenshot) {
|
|
5641
5656
|
throw new Error("Screenshot capture is not enabled");
|
|
5642
5657
|
}
|
|
5643
|
-
if (!
|
|
5658
|
+
if (!chunkWIXFZUEZ_cjs.isScreenshotSupported()) {
|
|
5644
5659
|
throw new Error(
|
|
5645
5660
|
"Screenshot capture is not supported in this environment"
|
|
5646
5661
|
);
|
|
5647
5662
|
}
|
|
5648
|
-
return
|
|
5663
|
+
return chunkWIXFZUEZ_cjs.captureScreenshot({ ...screenshotOptions, ...opts });
|
|
5649
5664
|
},
|
|
5650
5665
|
[screenshot, screenshotOptions]
|
|
5651
5666
|
);
|
|
@@ -5654,7 +5669,7 @@ function useAITools(options = {}) {
|
|
|
5654
5669
|
if (!consoleCapture) {
|
|
5655
5670
|
return { logs: [], totalCaptured: 0 };
|
|
5656
5671
|
}
|
|
5657
|
-
return
|
|
5672
|
+
return chunkWIXFZUEZ_cjs.getConsoleLogs({ ...consoleOptions, ...opts });
|
|
5658
5673
|
},
|
|
5659
5674
|
[consoleCapture, consoleOptions]
|
|
5660
5675
|
);
|
|
@@ -5663,7 +5678,7 @@ function useAITools(options = {}) {
|
|
|
5663
5678
|
if (!network) {
|
|
5664
5679
|
return { requests: [], totalCaptured: 0 };
|
|
5665
5680
|
}
|
|
5666
|
-
return
|
|
5681
|
+
return chunkWIXFZUEZ_cjs.getNetworkRequests({ ...networkOptions, ...opts });
|
|
5667
5682
|
},
|
|
5668
5683
|
[network, networkOptions]
|
|
5669
5684
|
);
|
|
@@ -5756,23 +5771,23 @@ function useAITools(options = {}) {
|
|
|
5756
5771
|
]
|
|
5757
5772
|
);
|
|
5758
5773
|
const startCapturing = React2.useCallback(() => {
|
|
5759
|
-
if (consoleCapture && !
|
|
5760
|
-
|
|
5774
|
+
if (consoleCapture && !chunkWIXFZUEZ_cjs.isConsoleCaptureActive()) {
|
|
5775
|
+
chunkWIXFZUEZ_cjs.startConsoleCapture(consoleOptions);
|
|
5761
5776
|
setActiveCaptures((prev) => ({ ...prev, console: true }));
|
|
5762
5777
|
}
|
|
5763
|
-
if (network && !
|
|
5764
|
-
|
|
5778
|
+
if (network && !chunkWIXFZUEZ_cjs.isNetworkCaptureActive()) {
|
|
5779
|
+
chunkWIXFZUEZ_cjs.startNetworkCapture(networkOptions);
|
|
5765
5780
|
setActiveCaptures((prev) => ({ ...prev, network: true }));
|
|
5766
5781
|
}
|
|
5767
5782
|
}, [consoleCapture, network, consoleOptions, networkOptions]);
|
|
5768
5783
|
const stopCapturing = React2.useCallback(() => {
|
|
5769
|
-
|
|
5770
|
-
|
|
5784
|
+
chunkWIXFZUEZ_cjs.stopConsoleCapture();
|
|
5785
|
+
chunkWIXFZUEZ_cjs.stopNetworkCapture();
|
|
5771
5786
|
setActiveCaptures({ console: false, network: false });
|
|
5772
5787
|
}, []);
|
|
5773
5788
|
const clearCaptured = React2.useCallback(() => {
|
|
5774
|
-
|
|
5775
|
-
|
|
5789
|
+
chunkWIXFZUEZ_cjs.clearConsoleLogs();
|
|
5790
|
+
chunkWIXFZUEZ_cjs.clearNetworkRequests();
|
|
5776
5791
|
}, []);
|
|
5777
5792
|
const formatForAI = React2.useCallback((context) => {
|
|
5778
5793
|
const parts = [];
|
|
@@ -5782,16 +5797,16 @@ function useAITools(options = {}) {
|
|
|
5782
5797
|
);
|
|
5783
5798
|
}
|
|
5784
5799
|
if (context.consoleLogs && context.consoleLogs.logs.length > 0) {
|
|
5785
|
-
parts.push(
|
|
5800
|
+
parts.push(chunkWIXFZUEZ_cjs.formatLogsForAI(context.consoleLogs.logs));
|
|
5786
5801
|
}
|
|
5787
5802
|
if (context.networkRequests && context.networkRequests.requests.length > 0) {
|
|
5788
|
-
parts.push(
|
|
5803
|
+
parts.push(chunkWIXFZUEZ_cjs.formatRequestsForAI(context.networkRequests.requests));
|
|
5789
5804
|
}
|
|
5790
5805
|
return parts.length > 0 ? parts.join("\n\n---\n\n") : "No context captured.";
|
|
5791
5806
|
}, []);
|
|
5792
5807
|
const detectIntentFn = React2.useCallback(
|
|
5793
5808
|
(message) => {
|
|
5794
|
-
const result =
|
|
5809
|
+
const result = chunkWIXFZUEZ_cjs.detectIntent(message);
|
|
5795
5810
|
result.suggestedTools = result.suggestedTools.filter((tool2) => {
|
|
5796
5811
|
if (tool2 === "screenshot") return screenshot;
|
|
5797
5812
|
if (tool2 === "console") return consoleCapture;
|
|
@@ -5854,7 +5869,7 @@ function convertZodSchema(schema, _toolName) {
|
|
|
5854
5869
|
}
|
|
5855
5870
|
} catch {
|
|
5856
5871
|
}
|
|
5857
|
-
return
|
|
5872
|
+
return chunkWIXFZUEZ_cjs.zodObjectToInputSchema(schema);
|
|
5858
5873
|
}
|
|
5859
5874
|
function useToolWithSchema(config, dependencies = []) {
|
|
5860
5875
|
const { registerTool, unregisterTool } = useCopilot();
|
|
@@ -6163,7 +6178,7 @@ function useAgent(options) {
|
|
|
6163
6178
|
if (!response.ok) {
|
|
6164
6179
|
throw new Error(`Agent error: ${response.status}`);
|
|
6165
6180
|
}
|
|
6166
|
-
for await (const event of
|
|
6181
|
+
for await (const event of chunkWIXFZUEZ_cjs.streamSSE(response)) {
|
|
6167
6182
|
handleAgentEvent(event);
|
|
6168
6183
|
}
|
|
6169
6184
|
} catch (err) {
|
|
@@ -6657,7 +6672,7 @@ function createReactThreadManagerState(initialThreads) {
|
|
|
6657
6672
|
}
|
|
6658
6673
|
|
|
6659
6674
|
// src/react/internal/ReactThreadManager.ts
|
|
6660
|
-
var _ReactThreadManager = class _ReactThreadManager extends
|
|
6675
|
+
var _ReactThreadManager = class _ReactThreadManager extends chunkWIXFZUEZ_cjs.ThreadManager {
|
|
6661
6676
|
constructor(config = {}, callbacks = {}) {
|
|
6662
6677
|
const reactState = new ReactThreadManagerState();
|
|
6663
6678
|
super({ ...config, state: reactState }, callbacks);
|
|
@@ -7488,5 +7503,5 @@ exports.useToolExecutor = useToolExecutor;
|
|
|
7488
7503
|
exports.useToolWithSchema = useToolWithSchema;
|
|
7489
7504
|
exports.useTools = useTools;
|
|
7490
7505
|
exports.useToolsWithSchema = useToolsWithSchema;
|
|
7491
|
-
//# sourceMappingURL=chunk-
|
|
7492
|
-
//# sourceMappingURL=chunk-
|
|
7506
|
+
//# sourceMappingURL=chunk-TCPAT3WG.cjs.map
|
|
7507
|
+
//# sourceMappingURL=chunk-TCPAT3WG.cjs.map
|