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
package/dist/types.js ADDED
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Core type definitions for bigtool-ts.
3
+ *
4
+ * This module defines the fundamental interfaces that power the tool discovery
5
+ * system: sources, catalogs, loaders, search, and events.
6
+ *
7
+ * @module types
8
+ */
9
+ /**
10
+ * Creates a simple typed event emitter.
11
+ *
12
+ * @typeParam T - The event payload type
13
+ * @returns A new EventEmitter instance
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * interface MyEvent {
18
+ * type: string;
19
+ * data: unknown;
20
+ * }
21
+ *
22
+ * const emitter = createEventEmitter<MyEvent>();
23
+ *
24
+ * emitter.on((event) => {
25
+ * console.log(event.type, event.data);
26
+ * });
27
+ *
28
+ * await emitter.emit({ type: 'test', data: { foo: 'bar' } });
29
+ * ```
30
+ */
31
+ export function createEventEmitter() {
32
+ let handlers = [];
33
+ const subscribe = (handler) => {
34
+ handlers = [...handlers, handler];
35
+ let unsubscribed = false;
36
+ return () => {
37
+ if (unsubscribed)
38
+ return;
39
+ unsubscribed = true;
40
+ handlers = handlers.filter((h) => h !== handler);
41
+ };
42
+ };
43
+ return {
44
+ subscribe,
45
+ on: subscribe,
46
+ async emit(event) {
47
+ const currentHandlers = handlers;
48
+ for (const handler of currentHandlers) {
49
+ await handler(event);
50
+ }
51
+ },
52
+ subscriberCount() {
53
+ return handlers.length;
54
+ },
55
+ clear() {
56
+ handlers = [];
57
+ },
58
+ };
59
+ }
60
+ /**
61
+ * Attach enhancement metadata to a tool.
62
+ *
63
+ * This is a fluent helper that adds search optimization hints
64
+ * to a StructuredTool. The metadata is used during indexing
65
+ * to improve search results.
66
+ *
67
+ * @typeParam T - The tool type (must extend StructuredTool)
68
+ * @param tool - The tool to enhance
69
+ * @param metadata - Enhancement metadata (categories, keywords)
70
+ * @returns The same tool instance with metadata attached
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * import { withMetadata } from '@repo/bigtool-ts';
75
+ *
76
+ * const createPRTool = new DynamicStructuredTool({
77
+ * name: 'create_pr',
78
+ * description: 'Creates a GitHub pull request',
79
+ * schema: z.object({ title: z.string() }),
80
+ * func: async (input) => { ... },
81
+ * });
82
+ *
83
+ * const enhanced = withMetadata(createPRTool, {
84
+ * categories: ['github', 'git'],
85
+ * keywords: ['PR', 'pull request', 'merge'],
86
+ * });
87
+ *
88
+ * // Use in a LocalSource
89
+ * const source = new LocalSource([enhanced]);
90
+ * ```
91
+ */
92
+ export function withMetadata(tool, metadata) {
93
+ const enhanced = tool;
94
+ enhanced.__bigtool_metadata = metadata;
95
+ return enhanced;
96
+ }
97
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwGH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,QAAQ,GAAsB,EAAE,CAAC;IAErC,MAAM,SAAS,GAAG,CAAC,OAAwB,EAAe,EAAE;QAC1D,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,OAAO,GAAG,EAAE;YACV,IAAI,YAAY;gBAAE,OAAO;YACzB,YAAY,GAAG,IAAI,CAAC;YACpB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,SAAS;QACT,EAAE,EAAE,SAAS;QACb,KAAK,CAAC,IAAI,CAAC,KAAQ;YACjB,MAAM,eAAe,GAAG,QAAQ,CAAC;YACjC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;gBACtC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,eAAe;YACb,OAAO,QAAQ,CAAC,MAAM,CAAC;QACzB,CAAC;QACD,KAAK;YACH,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAshBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAO,EACP,QAAyB;IAEzB,MAAM,QAAQ,GAAG,IAAwB,CAAC;IAC1C,QAAQ,CAAC,kBAAkB,GAAG,QAAQ,CAAC;IACvC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,118 @@
1
+ {
2
+ "name": "bigtool-ts",
3
+ "version": "0.1.0",
4
+ "description": "Dynamic tool discovery for AI agents. Search and load tools on-demand instead of loading all tools upfront.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "author": "wiski",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/wi-ski/bigtool-ts"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/wi-ski/bigtool-ts/issues"
14
+ },
15
+ "homepage": "https://github.com/wi-ski/bigtool-ts#readme",
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "keywords": [
20
+ "langgraph",
21
+ "langchain",
22
+ "ai",
23
+ "tools",
24
+ "mcp",
25
+ "model-context-protocol",
26
+ "semantic-search",
27
+ "dynamic-tools",
28
+ "agents",
29
+ "llm"
30
+ ],
31
+ "engines": {
32
+ "node": ">=18.0.0"
33
+ },
34
+ "sideEffects": false,
35
+ "main": "./dist/index.js",
36
+ "module": "./dist/index.js",
37
+ "types": "./dist/index.d.ts",
38
+ "exports": {
39
+ ".": {
40
+ "types": "./dist/index.d.ts",
41
+ "import": "./dist/index.js"
42
+ },
43
+ "./catalog": {
44
+ "types": "./dist/catalog/index.d.ts",
45
+ "import": "./dist/catalog/index.js"
46
+ },
47
+ "./search": {
48
+ "types": "./dist/search/index.d.ts",
49
+ "import": "./dist/search/index.js"
50
+ },
51
+ "./loader": {
52
+ "types": "./dist/loader/index.d.ts",
53
+ "import": "./dist/loader/index.js"
54
+ },
55
+ "./sources": {
56
+ "types": "./dist/sources/index.d.ts",
57
+ "import": "./dist/sources/index.js"
58
+ },
59
+ "./graph": {
60
+ "types": "./dist/graph/index.d.ts",
61
+ "import": "./dist/graph/index.js"
62
+ },
63
+ "./types": {
64
+ "types": "./dist/types.d.ts",
65
+ "import": "./dist/types.js"
66
+ },
67
+ "./adapters": {
68
+ "types": "./dist/adapters/index.d.ts",
69
+ "import": "./dist/adapters/index.js"
70
+ }
71
+ },
72
+ "files": [
73
+ "dist",
74
+ "LICENSE",
75
+ "README.md",
76
+ "CHANGELOG.md"
77
+ ],
78
+ "scripts": {
79
+ "build": "tsc",
80
+ "clean": "rm -rf dist",
81
+ "prepublishOnly": "pnpm run clean && pnpm run build",
82
+ "test": "vitest run",
83
+ "test:watch": "vitest",
84
+ "typecheck": "tsc --noEmit"
85
+ },
86
+ "dependencies": {
87
+ "@orama/orama": "^3.0.0",
88
+ "eventemitter3": "^5.0.0",
89
+ "lru-cache": "^10.0.0",
90
+ "zod": "^3.23.0"
91
+ },
92
+ "peerDependencies": {
93
+ "@langchain/core": ">=0.2.0",
94
+ "@langchain/langgraph": ">=0.2.0",
95
+ "@langchain/openai": ">=0.2.0",
96
+ "@modelcontextprotocol/sdk": ">=1.0.0",
97
+ "ai": ">=4.0.0"
98
+ },
99
+ "peerDependenciesMeta": {
100
+ "@langchain/openai": {
101
+ "optional": true
102
+ },
103
+ "@modelcontextprotocol/sdk": {
104
+ "optional": true
105
+ },
106
+ "ai": {
107
+ "optional": true
108
+ }
109
+ },
110
+ "devDependencies": {
111
+ "@langchain/core": "^1.0.0",
112
+ "@langchain/langgraph": "^1.0.0",
113
+ "@langchain/openai": "^0.3.0",
114
+ "@types/node": "^20",
115
+ "typescript": "^5",
116
+ "vitest": "^2.0.0"
117
+ }
118
+ }