bigtool-ts 0.1.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 (116) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/LICENSE +21 -0
  3. package/README.md +641 -0
  4. package/dist/adapters/agent-protocol.d.ts +149 -0
  5. package/dist/adapters/agent-protocol.d.ts.map +1 -0
  6. package/dist/adapters/agent-protocol.js +133 -0
  7. package/dist/adapters/agent-protocol.js.map +1 -0
  8. package/dist/adapters/index.d.ts +39 -0
  9. package/dist/adapters/index.d.ts.map +1 -0
  10. package/dist/adapters/index.js +42 -0
  11. package/dist/adapters/index.js.map +1 -0
  12. package/dist/adapters/inngest.d.ts +234 -0
  13. package/dist/adapters/inngest.d.ts.map +1 -0
  14. package/dist/adapters/inngest.js +276 -0
  15. package/dist/adapters/inngest.js.map +1 -0
  16. package/dist/adapters/mastra.d.ts +201 -0
  17. package/dist/adapters/mastra.d.ts.map +1 -0
  18. package/dist/adapters/mastra.js +250 -0
  19. package/dist/adapters/mastra.js.map +1 -0
  20. package/dist/adapters/types.d.ts +42 -0
  21. package/dist/adapters/types.d.ts.map +1 -0
  22. package/dist/adapters/types.js +6 -0
  23. package/dist/adapters/types.js.map +1 -0
  24. package/dist/adapters/vercel-ai.d.ts +176 -0
  25. package/dist/adapters/vercel-ai.d.ts.map +1 -0
  26. package/dist/adapters/vercel-ai.js +244 -0
  27. package/dist/adapters/vercel-ai.js.map +1 -0
  28. package/dist/catalog/index.d.ts +177 -0
  29. package/dist/catalog/index.d.ts.map +1 -0
  30. package/dist/catalog/index.js +244 -0
  31. package/dist/catalog/index.js.map +1 -0
  32. package/dist/graph/agent.d.ts +214 -0
  33. package/dist/graph/agent.d.ts.map +1 -0
  34. package/dist/graph/agent.js +196 -0
  35. package/dist/graph/agent.js.map +1 -0
  36. package/dist/graph/index.d.ts +5 -0
  37. package/dist/graph/index.d.ts.map +1 -0
  38. package/dist/graph/index.js +4 -0
  39. package/dist/graph/index.js.map +1 -0
  40. package/dist/graph/nodes.d.ts +100 -0
  41. package/dist/graph/nodes.d.ts.map +1 -0
  42. package/dist/graph/nodes.js +190 -0
  43. package/dist/graph/nodes.js.map +1 -0
  44. package/dist/graph/search-tool.d.ts +34 -0
  45. package/dist/graph/search-tool.d.ts.map +1 -0
  46. package/dist/graph/search-tool.js +54 -0
  47. package/dist/graph/search-tool.js.map +1 -0
  48. package/dist/graph/state.d.ts +26 -0
  49. package/dist/graph/state.d.ts.map +1 -0
  50. package/dist/graph/state.js +29 -0
  51. package/dist/graph/state.js.map +1 -0
  52. package/dist/index.d.ts +69 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +85 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/loader/index.d.ts +172 -0
  57. package/dist/loader/index.d.ts.map +1 -0
  58. package/dist/loader/index.js +179 -0
  59. package/dist/loader/index.js.map +1 -0
  60. package/dist/loader/loader.d.ts +114 -0
  61. package/dist/loader/loader.d.ts.map +1 -0
  62. package/dist/loader/loader.js +185 -0
  63. package/dist/loader/loader.js.map +1 -0
  64. package/dist/search/cache.d.ts +76 -0
  65. package/dist/search/cache.d.ts.map +1 -0
  66. package/dist/search/cache.js +135 -0
  67. package/dist/search/cache.js.map +1 -0
  68. package/dist/search/index.d.ts +63 -0
  69. package/dist/search/index.d.ts.map +1 -0
  70. package/dist/search/index.js +122 -0
  71. package/dist/search/index.js.map +1 -0
  72. package/dist/search/normalize.d.ts +104 -0
  73. package/dist/search/normalize.d.ts.map +1 -0
  74. package/dist/search/normalize.js +211 -0
  75. package/dist/search/normalize.js.map +1 -0
  76. package/dist/search/orama.d.ts +256 -0
  77. package/dist/search/orama.d.ts.map +1 -0
  78. package/dist/search/orama.js +511 -0
  79. package/dist/search/orama.js.map +1 -0
  80. package/dist/search/types.d.ts +96 -0
  81. package/dist/search/types.d.ts.map +1 -0
  82. package/dist/search/types.js +8 -0
  83. package/dist/search/types.js.map +1 -0
  84. package/dist/sources/dynamic.d.ts +200 -0
  85. package/dist/sources/dynamic.d.ts.map +1 -0
  86. package/dist/sources/dynamic.js +194 -0
  87. package/dist/sources/dynamic.js.map +1 -0
  88. package/dist/sources/index.d.ts +11 -0
  89. package/dist/sources/index.d.ts.map +1 -0
  90. package/dist/sources/index.js +14 -0
  91. package/dist/sources/index.js.map +1 -0
  92. package/dist/sources/local.d.ts +128 -0
  93. package/dist/sources/local.d.ts.map +1 -0
  94. package/dist/sources/local.js +155 -0
  95. package/dist/sources/local.js.map +1 -0
  96. package/dist/sources/mcp.d.ts +438 -0
  97. package/dist/sources/mcp.d.ts.map +1 -0
  98. package/dist/sources/mcp.js +438 -0
  99. package/dist/sources/mcp.js.map +1 -0
  100. package/dist/sources/types.d.ts +16 -0
  101. package/dist/sources/types.d.ts.map +1 -0
  102. package/dist/sources/types.js +7 -0
  103. package/dist/sources/types.js.map +1 -0
  104. package/dist/sources/with-metadata.d.ts +7 -0
  105. package/dist/sources/with-metadata.d.ts.map +1 -0
  106. package/dist/sources/with-metadata.js +7 -0
  107. package/dist/sources/with-metadata.js.map +1 -0
  108. package/dist/types/index.d.ts +7 -0
  109. package/dist/types/index.d.ts.map +1 -0
  110. package/dist/types/index.js +8 -0
  111. package/dist/types/index.js.map +1 -0
  112. package/dist/types.d.ts +700 -0
  113. package/dist/types.d.ts.map +1 -0
  114. package/dist/types.js +97 -0
  115. package/dist/types.js.map +1 -0
  116. package/package.json +118 -0
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Agent Protocol adapter for bigtool-ts.
3
+ *
4
+ * IMPORTANT: Agent Protocol is a task/step-oriented specification, NOT a tool-oriented one.
5
+ * The protocol defines Tasks (high-level goals) and Steps (actions), with no native tool endpoints.
6
+ *
7
+ * This adapter provides a framework-agnostic handler interface that maps bigtool-ts
8
+ * tool operations to a REST-like API. It can be used with any HTTP framework
9
+ * (Express, Fastify, Hono, etc.) or integrated with the Agent Protocol SDK.
10
+ *
11
+ * @see https://github.com/AI-Engineers-Foundation/agent-protocol
12
+ * @module adapters/agent-protocol
13
+ */
14
+ import type { AdapterConfig } from './types.js';
15
+ /**
16
+ * Tool representation in Agent Protocol wire format.
17
+ *
18
+ * Uses JSON Schema for parameters (not Zod) as required by REST APIs.
19
+ */
20
+ export interface AgentTool {
21
+ /** Unique tool identifier */
22
+ name: string;
23
+ /** Human-readable description */
24
+ description: string;
25
+ /** JSON Schema for tool parameters */
26
+ parameters: Record<string, unknown>;
27
+ }
28
+ /**
29
+ * Result from tool execution.
30
+ */
31
+ export interface ToolExecutionResult {
32
+ /** Unique identifier for this tool call */
33
+ tool_call_id: string;
34
+ /** Output from the tool (serialized to string) */
35
+ output: string;
36
+ }
37
+ /**
38
+ * Error response structure.
39
+ */
40
+ export interface ToolError {
41
+ /** Error code for programmatic handling */
42
+ code: 'TOOL_NOT_FOUND' | 'EXECUTION_ERROR';
43
+ /** Human-readable error message */
44
+ message: string;
45
+ }
46
+ /**
47
+ * Result type for operations that can fail.
48
+ */
49
+ export type ToolResult<T> = {
50
+ success: true;
51
+ data: T;
52
+ } | {
53
+ success: false;
54
+ error: ToolError;
55
+ };
56
+ /**
57
+ * Framework-agnostic handler for Agent Protocol tool operations.
58
+ *
59
+ * This interface provides the core operations that can be exposed via any
60
+ * HTTP framework or integrated with the Agent Protocol SDK's step mechanism.
61
+ *
62
+ * @example Express integration
63
+ * ```typescript
64
+ * import express from 'express';
65
+ * import { createAgentProtocolHandler } from '@repo/bigtool-ts/adapters';
66
+ *
67
+ * const handler = createAgentProtocolHandler({ catalog, loader, searchIndex });
68
+ * const app = express();
69
+ *
70
+ * app.get('/tools', async (req, res) => {
71
+ * const tools = await handler.listTools();
72
+ * res.json(tools);
73
+ * });
74
+ *
75
+ * app.post('/tools/search', async (req, res) => {
76
+ * const { query, limit } = req.body;
77
+ * const tools = await handler.searchTools(query, limit);
78
+ * res.json(tools);
79
+ * });
80
+ *
81
+ * app.post('/tools/execute', async (req, res) => {
82
+ * const { name, args } = req.body;
83
+ * const result = await handler.executeTool(name, args);
84
+ * if (result.success) {
85
+ * res.json(result.data);
86
+ * } else {
87
+ * res.status(400).json(result.error);
88
+ * }
89
+ * });
90
+ * ```
91
+ */
92
+ export interface AgentProtocolHandler {
93
+ /**
94
+ * List all available tools.
95
+ *
96
+ * @returns Array of tools in Agent Protocol format
97
+ */
98
+ listTools(): Promise<AgentTool[]>;
99
+ /**
100
+ * Search for tools matching a query.
101
+ *
102
+ * @param query - Natural language search query
103
+ * @param limit - Maximum number of results (default: 5)
104
+ * @returns Array of matching tools, sorted by relevance
105
+ */
106
+ searchTools(query: string, limit?: number): Promise<AgentTool[]>;
107
+ /**
108
+ * Execute a tool with the given arguments.
109
+ *
110
+ * @param name - Tool name to execute
111
+ * @param args - Arguments to pass to the tool
112
+ * @returns Result containing output or error
113
+ */
114
+ executeTool(name: string, args: Record<string, unknown>): Promise<ToolResult<ToolExecutionResult>>;
115
+ }
116
+ /**
117
+ * Creates a framework-agnostic Agent Protocol handler.
118
+ *
119
+ * The handler provides three core operations for tool management:
120
+ * - `listTools()`: Get all available tools
121
+ * - `searchTools()`: Find tools by natural language query
122
+ * - `executeTool()`: Run a specific tool with arguments
123
+ *
124
+ * @param config - Adapter configuration with catalog, loader, and search index
125
+ * @returns Handler instance with tool operations
126
+ *
127
+ * @example Basic usage
128
+ * ```typescript
129
+ * const handler = createAgentProtocolHandler({
130
+ * catalog,
131
+ * loader,
132
+ * searchIndex,
133
+ * });
134
+ *
135
+ * // List all tools
136
+ * const tools = await handler.listTools();
137
+ *
138
+ * // Search for specific tools
139
+ * const githubTools = await handler.searchTools('github pull request', 5);
140
+ *
141
+ * // Execute a tool
142
+ * const result = await handler.executeTool('create_pr', {
143
+ * title: 'My PR',
144
+ * body: 'Description',
145
+ * });
146
+ * ```
147
+ */
148
+ export declare function createAgentProtocolHandler(config: AdapterConfig): AgentProtocolHandler;
149
+ //# sourceMappingURL=agent-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-protocol.d.ts","sourceRoot":"","sources":["../../src/adapters/agent-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMhD;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,2CAA2C;IAC3C,IAAI,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;IAC3C,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IACpB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC1B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAMzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAElC;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC;CAC7C;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,GACpB,oBAAoB,CA2EtB"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Agent Protocol adapter for bigtool-ts.
3
+ *
4
+ * IMPORTANT: Agent Protocol is a task/step-oriented specification, NOT a tool-oriented one.
5
+ * The protocol defines Tasks (high-level goals) and Steps (actions), with no native tool endpoints.
6
+ *
7
+ * This adapter provides a framework-agnostic handler interface that maps bigtool-ts
8
+ * tool operations to a REST-like API. It can be used with any HTTP framework
9
+ * (Express, Fastify, Hono, etc.) or integrated with the Agent Protocol SDK.
10
+ *
11
+ * @see https://github.com/AI-Engineers-Foundation/agent-protocol
12
+ * @module adapters/agent-protocol
13
+ */
14
+ // ═══════════════════════════════════════════════════════════════════
15
+ // IMPLEMENTATION
16
+ // ═══════════════════════════════════════════════════════════════════
17
+ /**
18
+ * Convert bigtool-ts metadata to Agent Protocol wire format.
19
+ *
20
+ * This is a pure function that transforms internal metadata to the
21
+ * external API representation.
22
+ */
23
+ function toAgentTool(metadata) {
24
+ return {
25
+ name: metadata.name,
26
+ description: metadata.description,
27
+ parameters: metadata.parameters ?? {},
28
+ };
29
+ }
30
+ /**
31
+ * Generate a unique tool call ID.
32
+ *
33
+ * Uses timestamp + random suffix for uniqueness without external dependencies.
34
+ */
35
+ function generateToolCallId() {
36
+ const timestamp = Date.now().toString(36);
37
+ const random = Math.random().toString(36).substring(2, 8);
38
+ return `call_${timestamp}_${random}`;
39
+ }
40
+ /**
41
+ * Creates a framework-agnostic Agent Protocol handler.
42
+ *
43
+ * The handler provides three core operations for tool management:
44
+ * - `listTools()`: Get all available tools
45
+ * - `searchTools()`: Find tools by natural language query
46
+ * - `executeTool()`: Run a specific tool with arguments
47
+ *
48
+ * @param config - Adapter configuration with catalog, loader, and search index
49
+ * @returns Handler instance with tool operations
50
+ *
51
+ * @example Basic usage
52
+ * ```typescript
53
+ * const handler = createAgentProtocolHandler({
54
+ * catalog,
55
+ * loader,
56
+ * searchIndex,
57
+ * });
58
+ *
59
+ * // List all tools
60
+ * const tools = await handler.listTools();
61
+ *
62
+ * // Search for specific tools
63
+ * const githubTools = await handler.searchTools('github pull request', 5);
64
+ *
65
+ * // Execute a tool
66
+ * const result = await handler.executeTool('create_pr', {
67
+ * title: 'My PR',
68
+ * body: 'Description',
69
+ * });
70
+ * ```
71
+ */
72
+ export function createAgentProtocolHandler(config) {
73
+ const { catalog, loader, searchIndex } = config;
74
+ return {
75
+ async listTools() {
76
+ const metadata = catalog.getAllMetadata();
77
+ return metadata.map(toAgentTool);
78
+ },
79
+ async searchTools(query, limit = 5) {
80
+ const results = await searchIndex.search(query, { limit });
81
+ // Map search results to agent tools
82
+ // Filter out nulls in case metadata was removed between search and lookup
83
+ const tools = [];
84
+ for (const result of results) {
85
+ const metadata = catalog.getMetadata(result.toolId);
86
+ if (metadata !== null) {
87
+ tools.push(toAgentTool(metadata));
88
+ }
89
+ }
90
+ return tools;
91
+ },
92
+ async executeTool(name, args) {
93
+ // Find tool by name (search through metadata)
94
+ const allMetadata = catalog.getAllMetadata();
95
+ const metadata = allMetadata.find((m) => m.name === name);
96
+ if (metadata === undefined) {
97
+ return {
98
+ success: false,
99
+ error: {
100
+ code: 'TOOL_NOT_FOUND',
101
+ message: `Tool not found: ${name}`,
102
+ },
103
+ };
104
+ }
105
+ // Load and execute the tool
106
+ const tool = await loader.load(metadata.id);
107
+ // Attempt execution with error handling
108
+ const toolCallId = generateToolCallId();
109
+ try {
110
+ const rawResult = await tool.invoke(args);
111
+ const output = typeof rawResult === 'string' ? rawResult : JSON.stringify(rawResult);
112
+ return {
113
+ success: true,
114
+ data: {
115
+ tool_call_id: toolCallId,
116
+ output,
117
+ },
118
+ };
119
+ }
120
+ catch (error) {
121
+ const message = error instanceof Error ? error.message : 'Unknown execution error';
122
+ return {
123
+ success: false,
124
+ error: {
125
+ code: 'EXECUTION_ERROR',
126
+ message,
127
+ },
128
+ };
129
+ }
130
+ },
131
+ };
132
+ }
133
+ //# sourceMappingURL=agent-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-protocol.js","sourceRoot":"","sources":["../../src/adapters/agent-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Framework adapters for bigtool-ts.
3
+ *
4
+ * This module provides adapters that convert bigtool-ts tools to
5
+ * framework-specific formats. Each adapter implements the ToolAdapter
6
+ * interface and provides a factory function for easy instantiation.
7
+ *
8
+ * @module adapters
9
+ *
10
+ * @example Inngest AgentKit
11
+ * ```typescript
12
+ * import { createInngestAdapter } from '@repo/bigtool-ts/adapters';
13
+ *
14
+ * const adapter = createInngestAdapter({ catalog, loader, searchIndex });
15
+ * const tools = await adapter.getTools(['github:create_pr']);
16
+ * ```
17
+ *
18
+ * @example Vercel AI SDK
19
+ * ```typescript
20
+ * import { createVercelAdapter } from '@repo/bigtool-ts/adapters';
21
+ *
22
+ * const adapter = createVercelAdapter({ catalog, loader, searchIndex });
23
+ * const tools = await adapter.getToolsAsRecord(['github:create_pr']);
24
+ * ```
25
+ *
26
+ * @example Mastra
27
+ * ```typescript
28
+ * import { createMastraAdapter } from '@repo/bigtool-ts/adapters';
29
+ *
30
+ * const adapter = createMastraAdapter({ catalog, loader, searchIndex });
31
+ * const tools = await adapter.getToolsAsRecord(['github:create_pr']);
32
+ * ```
33
+ */
34
+ export type { AdapterConfig, SearchToolOptions, ToolAdapter } from './types.js';
35
+ export { InngestAdapter, createInngestAdapter, type InngestTool, type InngestToolOptions, type InngestNetworkRun, type InngestStep, type SearchToolResult, } from './inngest.js';
36
+ export { createAgentProtocolHandler, type AgentProtocolHandler, type AgentTool, type ToolExecutionResult, type ToolError, type ToolResult, } from './agent-protocol.js';
37
+ export { VercelAIAdapter, createVercelAdapter, } from './vercel-ai.js';
38
+ export { MastraAdapter, createMastraAdapter, type MastraTool, type MastraToolContext, } from './mastra.js';
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGhF,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Framework adapters for bigtool-ts.
3
+ *
4
+ * This module provides adapters that convert bigtool-ts tools to
5
+ * framework-specific formats. Each adapter implements the ToolAdapter
6
+ * interface and provides a factory function for easy instantiation.
7
+ *
8
+ * @module adapters
9
+ *
10
+ * @example Inngest AgentKit
11
+ * ```typescript
12
+ * import { createInngestAdapter } from '@repo/bigtool-ts/adapters';
13
+ *
14
+ * const adapter = createInngestAdapter({ catalog, loader, searchIndex });
15
+ * const tools = await adapter.getTools(['github:create_pr']);
16
+ * ```
17
+ *
18
+ * @example Vercel AI SDK
19
+ * ```typescript
20
+ * import { createVercelAdapter } from '@repo/bigtool-ts/adapters';
21
+ *
22
+ * const adapter = createVercelAdapter({ catalog, loader, searchIndex });
23
+ * const tools = await adapter.getToolsAsRecord(['github:create_pr']);
24
+ * ```
25
+ *
26
+ * @example Mastra
27
+ * ```typescript
28
+ * import { createMastraAdapter } from '@repo/bigtool-ts/adapters';
29
+ *
30
+ * const adapter = createMastraAdapter({ catalog, loader, searchIndex });
31
+ * const tools = await adapter.getToolsAsRecord(['github:create_pr']);
32
+ * ```
33
+ */
34
+ // Inngest AgentKit adapter
35
+ export { InngestAdapter, createInngestAdapter, } from './inngest.js';
36
+ // Agent Protocol adapter
37
+ export { createAgentProtocolHandler, } from './agent-protocol.js';
38
+ // Vercel AI SDK adapter
39
+ export { VercelAIAdapter, createVercelAdapter, } from './vercel-ai.js';
40
+ // Mastra adapter
41
+ export { MastraAdapter, createMastraAdapter, } from './mastra.js';
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAKH,2BAA2B;AAC3B,OAAO,EACL,cAAc,EACd,oBAAoB,GAMrB,MAAM,cAAc,CAAC;AAEtB,yBAAyB;AACzB,OAAO,EACL,0BAA0B,GAM3B,MAAM,qBAAqB,CAAC;AAE7B,wBAAwB;AACxB,OAAO,EACL,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,mBAAmB,GAGpB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Inngest AgentKit adapter for bigtool-ts.
3
+ *
4
+ * Converts bigtool-ts tools to Inngest AgentKit format and provides
5
+ * search tools for dynamic tool discovery.
6
+ *
7
+ * @module adapters/inngest
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { createInngestAdapter } from '@repo/bigtool-ts/adapters';
12
+ * import { createAgent, openai } from '@inngest/agent-kit';
13
+ *
14
+ * const adapter = createInngestAdapter({ catalog, loader, searchIndex });
15
+ *
16
+ * const agent = createAgent({
17
+ * name: 'tool-user',
18
+ * model: openai({ model: 'gpt-4o' }),
19
+ * tools: [
20
+ * adapter.createSearchTool(),
21
+ * adapter.createCallToolTool(),
22
+ * ],
23
+ * system: 'You are a helpful assistant...',
24
+ * });
25
+ * ```
26
+ */
27
+ import { z } from 'zod';
28
+ import type { ToolMetadata } from '../types.js';
29
+ import type { AdapterConfig, SearchToolOptions, ToolAdapter } from './types.js';
30
+ /**
31
+ * Inngest AgentKit tool type.
32
+ *
33
+ * Matches the Tool type from @inngest/agent-kit but defined here
34
+ * to avoid requiring the package as a runtime dependency.
35
+ */
36
+ export interface InngestTool {
37
+ name: string;
38
+ description: string | undefined;
39
+ parameters: z.ZodTypeAny | undefined;
40
+ handler: (input: unknown, opts: InngestToolOptions) => unknown | Promise<unknown>;
41
+ }
42
+ /**
43
+ * Options passed to tool handlers by Inngest AgentKit.
44
+ *
45
+ * These options provide access to agent context, network state,
46
+ * and durable execution primitives.
47
+ */
48
+ export interface InngestToolOptions {
49
+ /** The agent executing this tool */
50
+ agent: unknown;
51
+ /** Network run context for accessing shared state (kv store and typed data) */
52
+ network: InngestNetworkRun | undefined;
53
+ /** Step context for durable execution (step.run, step.waitForEvent) */
54
+ step: InngestStep | undefined;
55
+ }
56
+ /**
57
+ * Inngest network run context for state access.
58
+ */
59
+ export interface InngestNetworkRun {
60
+ state: {
61
+ kv: {
62
+ get(key: string): unknown;
63
+ set(key: string, value: unknown): void;
64
+ };
65
+ data: Record<string, unknown>;
66
+ };
67
+ }
68
+ /**
69
+ * Inngest step context for durable execution.
70
+ *
71
+ * Provides primitives for building reliable, resumable workflows.
72
+ */
73
+ export interface InngestStep {
74
+ /**
75
+ * Execute code durably with automatic retries.
76
+ * Results are cached - if the function resumes, cached results are returned.
77
+ */
78
+ run<T>(name: string, fn: () => T | Promise<T>): Promise<T>;
79
+ /**
80
+ * Wait for an external event (human-in-the-loop, webhooks, etc.).
81
+ * The function pauses until the event arrives or timeout is reached.
82
+ */
83
+ waitForEvent(name: string, opts: {
84
+ event: string;
85
+ timeout: string;
86
+ match?: string;
87
+ }): Promise<unknown>;
88
+ }
89
+ /**
90
+ * Inngest AgentKit adapter for bigtool-ts.
91
+ *
92
+ * Implements the ToolAdapter interface to convert bigtool-ts tools
93
+ * to Inngest AgentKit format. Provides additional tools for dynamic
94
+ * tool discovery and execution.
95
+ *
96
+ * Key features:
97
+ * - Automatic durable execution wrapping via step.run()
98
+ * - Search tool for runtime tool discovery
99
+ * - Call tool for executing discovered tools by name
100
+ *
101
+ * @example Basic usage
102
+ * ```typescript
103
+ * const adapter = createInngestAdapter({ catalog, loader, searchIndex });
104
+ *
105
+ * // Get specific tools by ID
106
+ * const tools = await adapter.getTools(['github:create_pr', 'slack:send']);
107
+ *
108
+ * // Create discovery tools
109
+ * const searchTool = adapter.createSearchTool({ limit: 5 });
110
+ * const callTool = adapter.createCallToolTool();
111
+ * ```
112
+ */
113
+ export declare class InngestAdapter implements ToolAdapter<InngestTool> {
114
+ private readonly catalog;
115
+ private readonly loader;
116
+ private readonly searchIndex;
117
+ constructor(config: AdapterConfig);
118
+ /**
119
+ * Convert bigtool-ts metadata to an Inngest AgentKit tool.
120
+ *
121
+ * The resulting tool wraps the bigtool-ts loader and automatically
122
+ * uses step.run() for durable execution when available.
123
+ *
124
+ * **Note:** Parameter schemas are not converted from ToolMetadata to Zod.
125
+ * The underlying bigtool-ts tool handles its own input validation.
126
+ * If you need Inngest-side schema validation, provide tools with Zod
127
+ * schemas directly rather than using the adapter.
128
+ *
129
+ * @param metadata - Tool metadata from the catalog
130
+ * @returns Inngest-compatible tool
131
+ */
132
+ toFrameworkTool(metadata: ToolMetadata): InngestTool;
133
+ /**
134
+ * Get multiple tools by their IDs.
135
+ *
136
+ * Tools not found in the catalog are silently skipped.
137
+ * Use this when you know which tools you need ahead of time.
138
+ *
139
+ * @param toolIds - Array of tool IDs to retrieve
140
+ * @returns Array of Inngest-compatible tools
141
+ */
142
+ getTools(toolIds: string[]): Promise<InngestTool[]>;
143
+ /**
144
+ * Get all tools from the catalog.
145
+ *
146
+ * Use sparingly - prefer getTools() or createSearchTool() for
147
+ * large catalogs.
148
+ *
149
+ * @returns Array of all Inngest-compatible tools
150
+ */
151
+ getAllTools(): Promise<InngestTool[]>;
152
+ /**
153
+ * Get tools filtered by category.
154
+ *
155
+ * @param categories - Categories to filter by (matches any)
156
+ * @returns Array of matching Inngest-compatible tools
157
+ */
158
+ getToolsByCategory(categories: string[]): Promise<InngestTool[]>;
159
+ /**
160
+ * Create a search tool for discovering available tools.
161
+ *
162
+ * This is the core tool for dynamic tool discovery. The agent
163
+ * can search for tools by natural language query and get back
164
+ * matching tool names and descriptions.
165
+ *
166
+ * @param options - Search options (limit, threshold, categories)
167
+ * @returns Inngest-compatible search tool
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * const searchTool = adapter.createSearchTool({ limit: 5 });
172
+ * // Agent calls: search_tools({ query: "create github pr" })
173
+ * // Returns: [{ name: "create_pr", description: "...", score: 0.95 }]
174
+ * ```
175
+ */
176
+ createSearchTool(options?: SearchToolOptions): InngestTool;
177
+ /**
178
+ * Create a tool for executing discovered tools by name.
179
+ *
180
+ * Use this in combination with createSearchTool() to enable
181
+ * dynamic tool discovery and execution patterns.
182
+ *
183
+ * **Note:** Tool lookup uses name matching. If multiple tools share the
184
+ * same name (from different sources), the first match wins. Ensure tool
185
+ * names are unique within your catalog to avoid ambiguity.
186
+ *
187
+ * @returns Inngest-compatible call tool
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * const callTool = adapter.createCallToolTool();
192
+ * // Agent calls: call_tool({ toolName: "create_pr", arguments: { title: "..." } })
193
+ * ```
194
+ */
195
+ createCallToolTool(): InngestTool;
196
+ }
197
+ /**
198
+ * Result returned by the search_tools tool.
199
+ */
200
+ export interface SearchToolResult {
201
+ /** Tool name */
202
+ name: string;
203
+ /** Tool description */
204
+ description: string;
205
+ /** Relevance score (0-1) */
206
+ score: number;
207
+ }
208
+ /**
209
+ * Create an Inngest AgentKit adapter.
210
+ *
211
+ * Factory function for creating InngestAdapter instances. Use this
212
+ * as the primary entry point for the adapter.
213
+ *
214
+ * @param config - Adapter configuration with catalog, loader, and search index
215
+ * @returns Configured InngestAdapter instance
216
+ *
217
+ * @example
218
+ * ```typescript
219
+ * import { createInngestAdapter } from '@repo/bigtool-ts/adapters';
220
+ * import { DefaultToolCatalog, OramaSearch, DefaultToolLoader } from '@repo/bigtool-ts';
221
+ *
222
+ * const catalog = new DefaultToolCatalog();
223
+ * await catalog.register(new LocalSource(myTools));
224
+ *
225
+ * const searchIndex = new OramaSearch();
226
+ * await searchIndex.index(catalog.getAllMetadata());
227
+ *
228
+ * const loader = new DefaultToolLoader(catalog);
229
+ *
230
+ * const adapter = createInngestAdapter({ catalog, loader, searchIndex });
231
+ * ```
232
+ */
233
+ export declare function createInngestAdapter(config: AdapterConfig): InngestAdapter;
234
+ //# sourceMappingURL=inngest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inngest.d.ts","sourceRoot":"","sources":["../../src/adapters/inngest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMhF;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,CAAC,CAAC,UAAU,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnF;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,oCAAoC;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,+EAA+E;IAC/E,OAAO,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACvC,uEAAuE;IACvE,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE;QACL,EAAE,EAAE;YACF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;SACxC,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,CAAC;CACH;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D;;;OAGG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,cAAe,YAAW,WAAW,CAAC,WAAW,CAAC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;gBAE/C,MAAM,EAAE,aAAa;IAMjC;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW;IAyBpD;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAazD;;;;;;;OAOG;IACG,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAK3C;;;;;OAKG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAQtE;;;;;;;;;;;;;;;;OAgBG;IACH,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,WAAW;IA8C9D;;;;;;;;;;;;;;;;;OAiBG;IACH,kBAAkB,IAAI,WAAW;CAuClC;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAE1E"}