@aquiles-ai/ishikawa-toolkit 1.4.0 → 1.6.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 +107 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/modules/module.d.ts +1 -1
- package/dist/modules/module.d.ts.map +1 -1
- package/dist/modules/module.js +19 -1
- package/dist/modules/module.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -93,6 +93,112 @@ console.log(result2); // Output: 5
|
|
|
93
93
|
const tools = await manager.list();
|
|
94
94
|
console.log(tools); // Output: ['calculator', ...]
|
|
95
95
|
```
|
|
96
|
+
|
|
97
|
+
## Environment Variables (Optional)
|
|
98
|
+
|
|
99
|
+
If your tool requires environment variables, you can provide a `.env` file during registration. This parameter is optional and accepts either a file path or direct content.
|
|
100
|
+
|
|
101
|
+
### Complete Example with Environment Variables
|
|
102
|
+
|
|
103
|
+
**1. Create your tool that uses environment variables**
|
|
104
|
+
|
|
105
|
+
Create `api-client.ts`:
|
|
106
|
+
```typescript
|
|
107
|
+
import dotenv from 'dotenv';
|
|
108
|
+
|
|
109
|
+
// Load environment variables
|
|
110
|
+
dotenv.config();
|
|
111
|
+
|
|
112
|
+
export default async function apiClient({endpoint}: {endpoint: string}) {
|
|
113
|
+
const apiKey = process.env.API_KEY;
|
|
114
|
+
const baseUrl = process.env.API_URL;
|
|
115
|
+
|
|
116
|
+
if (!apiKey) {
|
|
117
|
+
throw new Error('API_KEY not found in environment');
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const response = await fetch(`${baseUrl}${endpoint}`, {
|
|
121
|
+
headers: {
|
|
122
|
+
'Authorization': `Bearer ${apiKey}`
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
return await response.json();
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**2. Create metadata with dotenv dependency**
|
|
131
|
+
|
|
132
|
+
Create `api-metadata.json`:
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"type": "function",
|
|
136
|
+
"name": "apiClient",
|
|
137
|
+
"description": "Makes authenticated API requests",
|
|
138
|
+
"parameters": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"properties": {
|
|
141
|
+
"endpoint": {
|
|
142
|
+
"type": "string",
|
|
143
|
+
"description": "API endpoint to call"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"required": ["endpoint"]
|
|
147
|
+
},
|
|
148
|
+
"dependencies": {
|
|
149
|
+
"dotenv": "^16.0.0"
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**3. Register with environment variables**
|
|
155
|
+
|
|
156
|
+
Using a .env file path:
|
|
157
|
+
```typescript
|
|
158
|
+
await manager.createTool(
|
|
159
|
+
'api-client',
|
|
160
|
+
'./api-client.ts',
|
|
161
|
+
true,
|
|
162
|
+
'./api-metadata.json',
|
|
163
|
+
'./config/.env' // Path to .env file
|
|
164
|
+
);
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Or using direct .env content:
|
|
168
|
+
|
|
169
|
+
```typescript
|
|
170
|
+
await manager.createTool(
|
|
171
|
+
'api-client',
|
|
172
|
+
'./api-client.ts',
|
|
173
|
+
true,
|
|
174
|
+
'./api-metadata.json',
|
|
175
|
+
'API_KEY=your-key-here\nAPI_URL=https://api.example.com' // Direct content
|
|
176
|
+
);
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**4. Use the tool**
|
|
180
|
+
```typescript
|
|
181
|
+
const result = await manager.executeTool('api-client', {
|
|
182
|
+
endpoint: '/users/123'
|
|
183
|
+
});
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Without environment variables
|
|
187
|
+
|
|
188
|
+
For tools that don't need environment variables, simply omit the last parameter:
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
await manager.createTool(
|
|
192
|
+
'calculator',
|
|
193
|
+
'./calculator.ts',
|
|
194
|
+
true,
|
|
195
|
+
'./calculator-metadata.json'
|
|
196
|
+
// No .env parameter needed
|
|
197
|
+
);
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
The `.env` file will be automatically placed in the tool's execution directory, making it immediately available when the tool runs.
|
|
201
|
+
|
|
96
202
|
## Using with Local LLMs
|
|
97
203
|
|
|
98
204
|
Ishikawa-toolkit works seamlessly with local LLM servers like vLLM. Here's how to set up function calling with a local model:
|
|
@@ -155,7 +261,7 @@ let input = [
|
|
|
155
261
|
let response = await client.responses.create({
|
|
156
262
|
model: "gpt-oss-20b",
|
|
157
263
|
tools: toolsMetadata,
|
|
158
|
-
input,
|
|
264
|
+
input: input,
|
|
159
265
|
});
|
|
160
266
|
|
|
161
267
|
// console.log("Response 1:", response);
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { LoadedTool } from "./modules/module.js";
|
|
|
2
2
|
export declare class ToolManager {
|
|
3
3
|
private cache;
|
|
4
4
|
constructor();
|
|
5
|
-
createTool(name: string, code_path: string, auto_install: boolean, json_llm: string): Promise<void>;
|
|
5
|
+
createTool(name: string, code_path: string, auto_install: boolean, json_llm: string, env_file?: string): Promise<void>;
|
|
6
6
|
getTool(name: string, forceReload?: boolean): Promise<LoadedTool>;
|
|
7
7
|
listTools(): Promise<string[]>;
|
|
8
8
|
loadAll(): Promise<Map<string, LoadedTool>>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAErF,qBAAa,WAAW;IACpB,OAAO,CAAC,KAAK,CAAsC;;IAI7C,UAAU,CACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAErF,qBAAa,WAAW;IACpB,OAAO,CAAC,KAAK,CAAsC;;IAI7C,UAAU,CACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM;IAMf,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAW/D,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9B,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAY3C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAMvD,eAAe,CAAC,IAAI,EAAE,MAAM;IAKlC,UAAU,IAAI,IAAI;IAKlB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAOzC"}
|
package/dist/index.js
CHANGED
|
@@ -2,8 +2,8 @@ import { ToolRegister, ToolLoader, ToolList } from "./modules/module.js";
|
|
|
2
2
|
export class ToolManager {
|
|
3
3
|
cache = new Map();
|
|
4
4
|
constructor() { }
|
|
5
|
-
async createTool(name, code_path, auto_install, json_llm) {
|
|
6
|
-
await ToolRegister(name, code_path, auto_install, json_llm);
|
|
5
|
+
async createTool(name, code_path, auto_install, json_llm, env_file) {
|
|
6
|
+
await ToolRegister(name, code_path, auto_install, json_llm, env_file);
|
|
7
7
|
console.log(`Tool "${name}" registered`);
|
|
8
8
|
}
|
|
9
9
|
async getTool(name, forceReload = false) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAc,MAAM,qBAAqB,CAAC;AAErF,MAAM,OAAO,WAAW;IACZ,KAAK,GAA4B,IAAI,GAAG,EAAE,CAAC;IAEnD,gBAAe,CAAC;IAEhB,KAAK,CAAC,UAAU,CACZ,IAAY,EACZ,SAAiB,EACjB,YAAqB,EACrB,QAAgB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAc,MAAM,qBAAqB,CAAC;AAErF,MAAM,OAAO,WAAW;IACZ,KAAK,GAA4B,IAAI,GAAG,EAAE,CAAC;IAEnD,gBAAe,CAAC;IAEhB,KAAK,CAAC,UAAU,CACZ,IAAY,EACZ,SAAiB,EACjB,YAAqB,EACrB,QAAgB,EAChB,QAAiB;QAEjB,MAAM,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,cAAc,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,WAAW,GAAG,KAAK;QAC3C,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACjC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,SAAS;QACX,OAAO,MAAM,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAEzC,MAAM,OAAO,CAAC,GAAG,CACb,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAC5C,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,GAAG,IAAW;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,eAAe,CAAC,IAAY;QAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,UAAU;QACN,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACtC,CAAC;IAED,eAAe,CAAC,IAAY;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,sBAAsB,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ"}
|
package/dist/modules/module.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface LoadedTool {
|
|
|
10
10
|
execute: (...args: any[]) => Promise<any>;
|
|
11
11
|
path: string;
|
|
12
12
|
}
|
|
13
|
-
export declare function ToolRegister(name: string, code_path: string, auto_install: boolean, json_llm: string): Promise<void>;
|
|
13
|
+
export declare function ToolRegister(name: string, code_path: string, auto_install: boolean, json_llm: string, env_file?: string): Promise<void>;
|
|
14
14
|
export declare function ToolLoader(name: string): Promise<LoadedTool>;
|
|
15
15
|
export declare function ToolList(): Promise<string[]>;
|
|
16
16
|
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/modules/module.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/modules/module.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,iBA6BpB;AAyDD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAyDlE;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAclD"}
|
package/dist/modules/module.js
CHANGED
|
@@ -9,7 +9,7 @@ const execAsync = promisify(exec);
|
|
|
9
9
|
const paths = envPaths('Ishikawa-Toolkit', { suffix: '' });
|
|
10
10
|
const TOOLS_BASE_DIR = paths.data;
|
|
11
11
|
await mkdir(TOOLS_BASE_DIR, { recursive: true });
|
|
12
|
-
export async function ToolRegister(name, code_path, auto_install, json_llm) {
|
|
12
|
+
export async function ToolRegister(name, code_path, auto_install, json_llm, env_file) {
|
|
13
13
|
const metadata = await parseJsonInput(json_llm);
|
|
14
14
|
const toolPath = join(TOOLS_BASE_DIR, 'tools', name);
|
|
15
15
|
await mkdir(toolPath, { recursive: true });
|
|
@@ -17,6 +17,12 @@ export async function ToolRegister(name, code_path, auto_install, json_llm) {
|
|
|
17
17
|
await copyFile(code_path, targetCodePath);
|
|
18
18
|
const metadataPath = join(toolPath, 'function.json');
|
|
19
19
|
await writeFile(metadataPath, JSON.stringify(metadata, null, 2));
|
|
20
|
+
if (env_file) {
|
|
21
|
+
const envContent = await parseEnvInput(env_file);
|
|
22
|
+
const distPath = join(toolPath, 'dist');
|
|
23
|
+
const targetEnvPath = join(distPath, '.env');
|
|
24
|
+
await writeFile(targetEnvPath, envContent);
|
|
25
|
+
}
|
|
20
26
|
await createPackageJson(toolPath, name, metadata.dependencies || {});
|
|
21
27
|
if (auto_install) {
|
|
22
28
|
await installDependencies(toolPath);
|
|
@@ -38,6 +44,18 @@ async function parseJsonInput(input) {
|
|
|
38
44
|
}
|
|
39
45
|
}
|
|
40
46
|
}
|
|
47
|
+
async function parseEnvInput(input) {
|
|
48
|
+
if (input.includes('=') && !input.includes('/') && !input.includes('\\')) {
|
|
49
|
+
return input;
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const fileContent = await readFile(input, 'utf-8');
|
|
53
|
+
return fileContent;
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
return input;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
41
59
|
async function createPackageJson(toolPath, name, dependencies) {
|
|
42
60
|
const packageJson = {
|
|
43
61
|
name: `tool-${name}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/modules/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3D,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;AAClC,MAAM,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAgBjD,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,IAAY,EACZ,SAAiB,EACjB,YAAqB,EACrB,QAAgB;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/modules/module.ts"],"names":[],"mappings":"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"}
|