@vertesia/tools-sdk 1.6.0-dev.20261004.085740Z → 1.6.0-dev.20261008.064737Z
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/lib/SkillCollection.d.ts +0 -18
- package/lib/SkillCollection.d.ts.map +1 -1
- package/lib/SkillCollection.js +0 -58
- package/lib/SkillCollection.js.map +1 -1
- package/lib/ToolCollection.d.ts +0 -18
- package/lib/ToolCollection.d.ts.map +1 -1
- package/lib/ToolCollection.js +0 -64
- package/lib/ToolCollection.js.map +1 -1
- package/lib/auth.d.ts +2 -0
- package/lib/auth.d.ts.map +1 -1
- package/lib/auth.js +13 -0
- package/lib/auth.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/node-loaders.d.ts +38 -0
- package/lib/node-loaders.d.ts.map +1 -0
- package/lib/node-loaders.js +122 -0
- package/lib/node-loaders.js.map +1 -0
- package/lib/sandbox.d.ts +29 -0
- package/lib/sandbox.d.ts.map +1 -0
- package/lib/sandbox.js +35 -0
- package/lib/sandbox.js.map +1 -0
- package/package.json +12 -8
- package/src/SkillCollection.ts +0 -63
- package/src/ToolCollection.ts +0 -68
- package/src/auth.ts +15 -0
- package/src/index.ts +1 -0
- package/src/node-loaders.ts +131 -0
- package/src/sandbox.ts +44 -0
package/lib/SkillCollection.d.ts
CHANGED
|
@@ -98,22 +98,4 @@ export declare function parseSkillFile(content: string, contentType: SkillConten
|
|
|
98
98
|
export declare function loadSkillFromFile(filePath: string, fs: {
|
|
99
99
|
readFile: (path: string, encoding: string) => Promise<string>;
|
|
100
100
|
}): Promise<SkillDefinition>;
|
|
101
|
-
/**
|
|
102
|
-
* Load all skills from a directory.
|
|
103
|
-
* Scans for subdirectories containing SKILL.md files.
|
|
104
|
-
*
|
|
105
|
-
* Directory structure:
|
|
106
|
-
* ```
|
|
107
|
-
* skills/
|
|
108
|
-
* nagare/
|
|
109
|
-
* fund-onboarding/
|
|
110
|
-
* SKILL.md
|
|
111
|
-
* monte-carlo/
|
|
112
|
-
* SKILL.md
|
|
113
|
-
* ```
|
|
114
|
-
*
|
|
115
|
-
* @param dirPath - Path to the skills collection directory
|
|
116
|
-
* @returns Array of parsed skill definitions
|
|
117
|
-
*/
|
|
118
|
-
export declare function loadSkillsFromDirectory(dirPath: string): SkillDefinition[];
|
|
119
101
|
//# sourceMappingURL=SkillCollection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkillCollection.d.ts","sourceRoot":"","sources":["../src/SkillCollection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SkillCollection.d.ts","sourceRoot":"","sources":["../src/SkillCollection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EACR,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,eAAe,EAEf,wBAAwB,EACxB,oBAAoB,EAEpB,cAAc,EACjB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACnE;;OAEG;IACH,MAAM,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,WAAW,CAAC,eAAe,CAAC;IAChE;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,MAAM,CAA+B;IAE7C,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,yBAAyB,EAMhF;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,eAAe,CAAC,CAE7C;IAED,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAElE;IAED;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAElD;IAED;;OAEG;IACH,mBAAmB,IAAI,eAAe,EAAE,CAEvC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,aAAa,CAAC,EAAE,cAAc,GAAG,mBAAmB,EAAE,CAkCxE;IAED;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,CAO7D;IAED,UAAU,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACjB,EAAE,CAgBF;IAED;;;;;;OAMG;IACG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA8EtF;IAED;;OAEG;YACW,WAAW;CAe5B;AAkBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,GAAG,eAAe,CA2D9F;AA0DD;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE;IAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,GACtE,OAAO,CAAC,eAAe,CAAC,CAI1B"}
|
package/lib/SkillCollection.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
1
|
import { HTTPException } from 'hono/http-exception';
|
|
4
2
|
import { kebabCaseToTitle } from './utils.js';
|
|
5
3
|
/**
|
|
@@ -335,60 +333,4 @@ export async function loadSkillFromFile(filePath, fs) {
|
|
|
335
333
|
const contentType = filePath.endsWith('.jst') ? 'jst' : 'md';
|
|
336
334
|
return parseSkillFile(content, contentType);
|
|
337
335
|
}
|
|
338
|
-
/**
|
|
339
|
-
* Load all skills from a directory.
|
|
340
|
-
* Scans for subdirectories containing SKILL.md files.
|
|
341
|
-
*
|
|
342
|
-
* Directory structure:
|
|
343
|
-
* ```
|
|
344
|
-
* skills/
|
|
345
|
-
* nagare/
|
|
346
|
-
* fund-onboarding/
|
|
347
|
-
* SKILL.md
|
|
348
|
-
* monte-carlo/
|
|
349
|
-
* SKILL.md
|
|
350
|
-
* ```
|
|
351
|
-
*
|
|
352
|
-
* @param dirPath - Path to the skills collection directory
|
|
353
|
-
* @returns Array of parsed skill definitions
|
|
354
|
-
*/
|
|
355
|
-
export function loadSkillsFromDirectory(dirPath) {
|
|
356
|
-
const skills = [];
|
|
357
|
-
let entries;
|
|
358
|
-
try {
|
|
359
|
-
entries = readdirSync(dirPath);
|
|
360
|
-
}
|
|
361
|
-
catch {
|
|
362
|
-
console.warn(`Could not read skills directory: ${dirPath}`);
|
|
363
|
-
return skills;
|
|
364
|
-
}
|
|
365
|
-
for (const entry of entries) {
|
|
366
|
-
const entryPath = join(dirPath, entry);
|
|
367
|
-
try {
|
|
368
|
-
const stat = statSync(entryPath);
|
|
369
|
-
if (!stat.isDirectory())
|
|
370
|
-
continue;
|
|
371
|
-
// Look for SKILL.md or SKILL.jst
|
|
372
|
-
const mdPath = join(entryPath, 'SKILL.md');
|
|
373
|
-
const jstPath = join(entryPath, 'SKILL.jst');
|
|
374
|
-
let content;
|
|
375
|
-
let contentType = 'md';
|
|
376
|
-
if (existsSync(mdPath)) {
|
|
377
|
-
content = readFileSync(mdPath, 'utf-8');
|
|
378
|
-
contentType = 'md';
|
|
379
|
-
}
|
|
380
|
-
else if (existsSync(jstPath)) {
|
|
381
|
-
content = readFileSync(jstPath, 'utf-8');
|
|
382
|
-
contentType = 'jst';
|
|
383
|
-
}
|
|
384
|
-
if (content) {
|
|
385
|
-
skills.push(parseSkillFile(content, contentType));
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
catch (err) {
|
|
389
|
-
console.warn(`Error loading skill from ${entryPath}:`, err);
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
return skills;
|
|
393
|
-
}
|
|
394
336
|
//# sourceMappingURL=SkillCollection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkillCollection.js","sourceRoot":"","sources":["../src/SkillCollection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SkillCollection.js","sourceRoot":"","sources":["../src/SkillCollection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAapD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAS9C;;;;GAIG;AACH,MAAM,OAAO,eAAe;IACxB;;OAEG;IACH,IAAI,CAAS;IACb;;OAEG;IACH,KAAK,CAAU;IACf;;OAEG;IACH,IAAI,CAAU;IACd;;OAEG;IACH,WAAW,CAAU;IACrB;;OAEG;IACK,MAAM,CAA+B;IAE7C,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAA6B;QAC7E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,GAAG,CAAI,QAAsD;QACzD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,mBAAmB;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,aAA8B;QAC7C,MAAM,aAAa,GAAmC;YAClD,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,OAAO,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2DAA2D;iBAC3E;aACJ;SACJ,CAAC;QAEF,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC7B,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnE,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,yDAAyD;YACzD,IAAI,WAAW,GAAG,WAAW,KAAK,CAAC,WAAW,kDAAkD,CAAC;YACjG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,WAAW,IAAI,mBAAmB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAChE,CAAC;YAED,OAAO;gBACH,GAAG,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE;gBAC1B,IAAI,EAAE,SAAS,KAAK,CAAC,IAAI,EAAE;gBAC3B,WAAW;gBACX,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,aAAa;gBACjD,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,IAAI,CAAC,IAAI;aACtB,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,OAAe;QAC/B,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,IAAI,CAAC,IAAI,EAAE;YACvD,GAAG,EAAE,GAAG,OAAO,eAAe,IAAI,CAAC,IAAI,EAAE;YACzC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE;SACnC,CAAC;IACN,CAAC;IAED,UAAU;QAIN,MAAM,GAAG,GAGH,EAAE,CAAC;QACT,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACjC,GAAG,CAAC,IAAI,CAAC;wBACL,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,KAAK,CAAC,IAAI;qBACpB,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,GAAY,EAAE,gBAAuC;QAC/D,MAAM,OAAO,GAAG,GAAkB,CAAC;QACnC,MAAM,OAAO,GAAG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;QACpD,IAAI,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE;oBACzB,OAAO,EACH,8GAA8G;iBACrH,CAAC,CAAC;YACP,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAE5C,wEAAwE;YACxE,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAE5F,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE;oBAC9C,UAAU,EAAE,IAAI,CAAC,IAAI;oBACrB,cAAc,EAAE,SAAS;oBACzB,QAAQ;oBACR,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;iBAClD,CAAC,CAAC;gBACH,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE;oBACzB,OAAO,EAAE,oBAAoB,SAAS,EAAE;iBAC3C,CAAC,CAAC;YACP,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC1C,MAAM,IAAI,GACN,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAChE,CAAC,CAAE,KAAiC;gBACpC,CAAC,CAAC,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEnD,mDAAmD;YAEnD,+BAA+B;YAC/B,OAAO,GAAG,CAAC,IAAI,CAAC;gBACZ,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAChC,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,MAAM,CAAC,YAAY;gBAC5B,IAAI,EAAE;oBACF,UAAU,EAAE,KAAK,CAAC,IAAI;oBACtB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC7B;aACoD,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,GAAG,YAAY,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/D,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;YAC7E,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3D,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;YAC9C,MAAM,SAAS,GAAG,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;YAExC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE;oBACtD,UAAU,EAAE,IAAI,CAAC,IAAI;oBACrB,KAAK,EAAE,QAAQ;oBACf,SAAS;oBACT,KAAK,EAAE,OAAO;oBACd,MAAM;oBACN,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;oBACxC,KAAK;iBACR,CAAC,CAAC;YACP,CAAC;YAED,OAAO,GAAG,CAAC,IAAI,CACX;gBACI,WAAW,EAAE,SAAS,IAAI,SAAS;gBACnC,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,OAAO;aACnB,EACD,MAAM,CACT,CAAC;QACN,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,KAAsB,EAAE,KAA8B;QAC5E,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAExC,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YAC/B,4CAA4C;YAC5C,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE;gBACzB,OAAO,EAAE,2EAA2E;aACvF,CAAC,CAAC;QACP,CAAC;QAED,OAAO;YACH,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY;SACf,CAAC;IACN,CAAC;CACJ;AAkBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,WAA6B;IACzE,yBAAyB;IACzB,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAE5E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,gBAAgB,CAAC;IAC/C,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEjC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,KAAK,GAAoB;QAC3B,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,YAAY;QACZ,YAAY,EAAE,WAAW;QACzB,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,SAAS;QACzC,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,SAAS;KAC5C,CAAC;IAEF,yBAAyB;IACzB,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;QACzE,KAAK,CAAC,gBAAgB,GAAG;YACrB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,UAAU,EAAE,WAAW,CAAC,KAAK;YAC7B,aAAa,EAAE,WAAW,CAAC,aAAa;SAC3C,CAAC;IACN,CAAC;IAED,yBAAyB;IACzB,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,CAAC,SAAS,GAAG;YACd,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,eAAe,EAAE,WAAW,CAAC,eAAe;SAC/C,CAAC;QAEF,qDAAqD;QACrD,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACzG,IAAI,cAAc,EAAE,CAAC;YACjB,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxD,CAAC;IACL,CAAC;IAED,iCAAiC;IACjC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACtC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAElD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,UAAU,KAAK,CAAC,CAAC;YAAE,SAAS;QAEhC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEjD,sCAAsC;QACtC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,KAAK;iBACd,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBACZ,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,2BAA2B;YAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;IACL,CAAC;IAED,OAAO;QACH,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QACzC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;QAClC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC;QAClD,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QACnC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC;QACtD,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC;KACzC,CAAC;AACN,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvG,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,QAAgB,EAChB,EAAqE;IAErE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,WAAW,GAAqB,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,OAAO,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC"}
|
package/lib/ToolCollection.d.ts
CHANGED
|
@@ -46,22 +46,4 @@ export declare class ToolCollection implements ICollection<Tool> {
|
|
|
46
46
|
*/
|
|
47
47
|
getToolDefinitions(context?: ToolUseContext): AgentToolDefinition[];
|
|
48
48
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Load all tools from a directory.
|
|
51
|
-
* Scans for .js files and imports tools that match naming convention.
|
|
52
|
-
*
|
|
53
|
-
* Directory structure:
|
|
54
|
-
* ```
|
|
55
|
-
* collection/
|
|
56
|
-
* tools/
|
|
57
|
-
* SearchFundsTool.js # exports SearchFundsTool
|
|
58
|
-
* GetFundDetailsTool.js # exports GetFundDetailsTool
|
|
59
|
-
* ```
|
|
60
|
-
*
|
|
61
|
-
* Naming convention: File should export a Tool with name matching *Tool pattern.
|
|
62
|
-
*
|
|
63
|
-
* @param toolsDir - Path to the tools directory (e.g., /path/to/collection/tools)
|
|
64
|
-
* @returns Promise resolving to array of Tool objects
|
|
65
|
-
*/
|
|
66
|
-
export declare function loadToolsFromDirectory(toolsDir: string): Promise<Tool[]>;
|
|
67
49
|
//# sourceMappingURL=ToolCollection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCollection.d.ts","sourceRoot":"","sources":["../src/ToolCollection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolCollection.d.ts","sourceRoot":"","sources":["../src/ToolCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EACR,oBAAoB,EACpB,WAAW,EACX,IAAI,EACJ,oBAAoB,EAGpB,cAAc,EACjB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IAClE;;OAEG;IACH,KAAK,EAAE,IAAI,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW,CAAC,IAAI,CAAC;IACpD;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,YAAY,CAAC;IAEpB,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,wBAAwB,EAO9E;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAalC;IAED,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAEtD;IAEK,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmDtF;IAED;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,mBAAmB,EAAE,CAElE;CACJ"}
|
package/lib/ToolCollection.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { pathToFileURL } from 'node:url';
|
|
4
1
|
import { HTTPException } from 'hono/http-exception';
|
|
5
2
|
import { authorize } from './auth.js';
|
|
6
3
|
import { ToolRegistry } from './ToolRegistry.js';
|
|
@@ -122,65 +119,4 @@ function readPayload(ctx) {
|
|
|
122
119
|
message: 'Invalid or missing tool execution payload. Expected { tool_use: { id, tool_name, tool_input? }, metadata? }',
|
|
123
120
|
});
|
|
124
121
|
}
|
|
125
|
-
/**
|
|
126
|
-
* Load all tools from a directory.
|
|
127
|
-
* Scans for .js files and imports tools that match naming convention.
|
|
128
|
-
*
|
|
129
|
-
* Directory structure:
|
|
130
|
-
* ```
|
|
131
|
-
* collection/
|
|
132
|
-
* tools/
|
|
133
|
-
* SearchFundsTool.js # exports SearchFundsTool
|
|
134
|
-
* GetFundDetailsTool.js # exports GetFundDetailsTool
|
|
135
|
-
* ```
|
|
136
|
-
*
|
|
137
|
-
* Naming convention: File should export a Tool with name matching *Tool pattern.
|
|
138
|
-
*
|
|
139
|
-
* @param toolsDir - Path to the tools directory (e.g., /path/to/collection/tools)
|
|
140
|
-
* @returns Promise resolving to array of Tool objects
|
|
141
|
-
*/
|
|
142
|
-
export async function loadToolsFromDirectory(toolsDir) {
|
|
143
|
-
const tools = [];
|
|
144
|
-
if (!existsSync(toolsDir)) {
|
|
145
|
-
console.warn(`Tools directory not found: ${toolsDir}`);
|
|
146
|
-
return tools;
|
|
147
|
-
}
|
|
148
|
-
let entries;
|
|
149
|
-
try {
|
|
150
|
-
entries = readdirSync(toolsDir);
|
|
151
|
-
}
|
|
152
|
-
catch {
|
|
153
|
-
console.warn(`Could not read tools directory: ${toolsDir}`);
|
|
154
|
-
return tools;
|
|
155
|
-
}
|
|
156
|
-
for (const entry of entries) {
|
|
157
|
-
// Only process .js and .ts files that end with Tool
|
|
158
|
-
if (!entry.endsWith('Tool.js') && !entry.endsWith('Tool.ts'))
|
|
159
|
-
continue;
|
|
160
|
-
if (entry.endsWith('.d.ts'))
|
|
161
|
-
continue;
|
|
162
|
-
const entryPath = join(toolsDir, entry);
|
|
163
|
-
try {
|
|
164
|
-
const stat = statSync(entryPath);
|
|
165
|
-
if (!stat.isFile())
|
|
166
|
-
continue;
|
|
167
|
-
// Dynamic import - need file:// URL for ESM
|
|
168
|
-
const fileUrl = pathToFileURL(entryPath).href;
|
|
169
|
-
const module = await import(fileUrl);
|
|
170
|
-
// Find exported Tool (named export matching filename or any Tool export)
|
|
171
|
-
const baseName = entry.replace(/\.(js|ts)$/, '');
|
|
172
|
-
const tool = module[baseName] || module.default;
|
|
173
|
-
if (tool && typeof tool.name === 'string' && typeof tool.run === 'function') {
|
|
174
|
-
tools.push(tool);
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
console.warn(`No valid Tool export found in ${entry}`);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
catch (err) {
|
|
181
|
-
console.warn(`Error loading tool from ${entry}:`, err);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
return tools;
|
|
185
|
-
}
|
|
186
122
|
//# sourceMappingURL=ToolCollection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCollection.js","sourceRoot":"","sources":["../src/ToolCollection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolCollection.js","sourceRoot":"","sources":["../src/ToolCollection.ts"],"names":[],"mappings":"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"}
|
package/lib/auth.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ export interface ToolContext {
|
|
|
15
15
|
toolUseId?: string;
|
|
16
16
|
runId?: string;
|
|
17
17
|
}
|
|
18
|
+
/** Sandbox authorization never accepts a credential supplied by the guest request. */
|
|
19
|
+
export declare function authorizeSandbox(ctx: Context, _endpointOverrides?: EndpointOverrides, _toolContext?: ToolContext): Promise<AuthSession>;
|
|
18
20
|
export declare function authorize(ctx: Context, endpointOverrides?: EndpointOverrides, toolContext?: ToolContext): Promise<AuthSession>;
|
|
19
21
|
export declare class AuthSession implements ToolExecutionContext {
|
|
20
22
|
token: string;
|
package/lib/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAoD,KAAK,eAAe,EAAa,MAAM,MAAM,CAAC;AACzG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIvD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,qEAgBxC;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,mIAU9C;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAoD,KAAK,eAAe,EAAa,MAAM,MAAM,CAAC;AACzG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIvD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,qEAgBxC;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,mIAU9C;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sFAAsF;AACtF,wBAAsB,gBAAgB,CAClC,GAAG,EAAE,OAAO,EACZ,kBAAkB,CAAC,EAAE,iBAAiB,EACtC,YAAY,CAAC,EAAE,WAAW,wBAK7B;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,WAAW,wBAoC7G;AAED,qBAAa,WAAY,YAAW,oBAAoB;IAUzC,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,gBAAgB;IAVpC,OAAO,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,SAAS,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,YACW,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,EAChC,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,WAAW,CAAC,EAAE,WAAW,EAU5B;IAEK,SAAS,4BAYd;CACJ"}
|
package/lib/auth.js
CHANGED
|
@@ -30,7 +30,20 @@ export async function verifyToken(token) {
|
|
|
30
30
|
const jwks = await getJwks(`${decodedJwt.iss}/.well-known/jwks`);
|
|
31
31
|
return await jwtVerify(token, jwks);
|
|
32
32
|
}
|
|
33
|
+
/** Sandbox authorization never accepts a credential supplied by the guest request. */
|
|
34
|
+
export async function authorizeSandbox(ctx, _endpointOverrides, _toolContext) {
|
|
35
|
+
const session = ctx.get('toolAuthSession');
|
|
36
|
+
if (!session)
|
|
37
|
+
throw new HTTPException(401, { message: 'Missing sandbox host session' });
|
|
38
|
+
return session;
|
|
39
|
+
}
|
|
33
40
|
export async function authorize(ctx, endpointOverrides, toolContext) {
|
|
41
|
+
if (ctx.get('toolAuthMode') === 'sandbox')
|
|
42
|
+
return authorizeSandbox(ctx);
|
|
43
|
+
// A sandbox host can bind a session in application middleware. HTTP headers cannot set this value.
|
|
44
|
+
const boundSession = ctx.get('toolAuthSession');
|
|
45
|
+
if (boundSession)
|
|
46
|
+
return boundSession;
|
|
34
47
|
const auth = ctx.req.header('Authorization');
|
|
35
48
|
if (!auth) {
|
|
36
49
|
throw new HTTPException(401, {
|
package/lib/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { AuthSession, authorize } from './auth.js';
|
|
|
3
3
|
export * from './ContentTypesCollection.js';
|
|
4
4
|
export { copyRuntimeAssets } from './copy-assets.js';
|
|
5
5
|
export * from './InteractionCollection.js';
|
|
6
|
+
export { loadSkillsFromDirectory, loadToolsFromDirectory } from './node-loaders.js';
|
|
6
7
|
export * from './RenderingTemplateCollection.js';
|
|
7
8
|
export * from './SkillCollection.js';
|
|
8
9
|
export type { BuildAppPackageOptions } from './server/app-package.js';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AACrC,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACpF,cAAc,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AACrC,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export { AuthSession, authorize } from './auth.js';
|
|
|
3
3
|
export * from './ContentTypesCollection.js';
|
|
4
4
|
export { copyRuntimeAssets } from './copy-assets.js';
|
|
5
5
|
export * from './InteractionCollection.js';
|
|
6
|
+
export { loadSkillsFromDirectory, loadToolsFromDirectory } from './node-loaders.js';
|
|
6
7
|
export * from './RenderingTemplateCollection.js';
|
|
7
8
|
export * from './SkillCollection.js';
|
|
8
9
|
export { buildAppPackage } from './server/app-package.js';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACpF,cAAc,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { SkillDefinition, Tool } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Load all tools from a directory.
|
|
4
|
+
* Scans for .js files and imports tools that match naming convention.
|
|
5
|
+
*
|
|
6
|
+
* Directory structure:
|
|
7
|
+
* ```
|
|
8
|
+
* collection/
|
|
9
|
+
* tools/
|
|
10
|
+
* SearchFundsTool.js # exports SearchFundsTool
|
|
11
|
+
* GetFundDetailsTool.js # exports GetFundDetailsTool
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* Naming convention: File should export a Tool with name matching *Tool pattern.
|
|
15
|
+
*
|
|
16
|
+
* @param toolsDir - Path to the tools directory (e.g., /path/to/collection/tools)
|
|
17
|
+
* @returns Promise resolving to array of Tool objects
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadToolsFromDirectory(toolsDir: string): Promise<Tool[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Load all skills from a directory.
|
|
22
|
+
* Scans for subdirectories containing SKILL.md files.
|
|
23
|
+
*
|
|
24
|
+
* Directory structure:
|
|
25
|
+
* ```
|
|
26
|
+
* skills/
|
|
27
|
+
* nagare/
|
|
28
|
+
* fund-onboarding/
|
|
29
|
+
* SKILL.md
|
|
30
|
+
* monte-carlo/
|
|
31
|
+
* SKILL.md
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @param dirPath - Path to the skills collection directory
|
|
35
|
+
* @returns Array of parsed skill definitions
|
|
36
|
+
*/
|
|
37
|
+
export declare function loadSkillsFromDirectory(dirPath: string): SkillDefinition[];
|
|
38
|
+
//# sourceMappingURL=node-loaders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-loaders.d.ts","sourceRoot":"","sources":["../src/node-loaders.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAoB,eAAe,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CA8C9E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CA0C1E"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { parseSkillFile } from './SkillCollection.js';
|
|
5
|
+
/**
|
|
6
|
+
* Load all tools from a directory.
|
|
7
|
+
* Scans for .js files and imports tools that match naming convention.
|
|
8
|
+
*
|
|
9
|
+
* Directory structure:
|
|
10
|
+
* ```
|
|
11
|
+
* collection/
|
|
12
|
+
* tools/
|
|
13
|
+
* SearchFundsTool.js # exports SearchFundsTool
|
|
14
|
+
* GetFundDetailsTool.js # exports GetFundDetailsTool
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* Naming convention: File should export a Tool with name matching *Tool pattern.
|
|
18
|
+
*
|
|
19
|
+
* @param toolsDir - Path to the tools directory (e.g., /path/to/collection/tools)
|
|
20
|
+
* @returns Promise resolving to array of Tool objects
|
|
21
|
+
*/
|
|
22
|
+
export async function loadToolsFromDirectory(toolsDir) {
|
|
23
|
+
const tools = [];
|
|
24
|
+
if (!existsSync(toolsDir)) {
|
|
25
|
+
console.warn(`Tools directory not found: ${toolsDir}`);
|
|
26
|
+
return tools;
|
|
27
|
+
}
|
|
28
|
+
let entries;
|
|
29
|
+
try {
|
|
30
|
+
entries = readdirSync(toolsDir);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
console.warn(`Could not read tools directory: ${toolsDir}`);
|
|
34
|
+
return tools;
|
|
35
|
+
}
|
|
36
|
+
for (const entry of entries) {
|
|
37
|
+
// Only process .js and .ts files that end with Tool
|
|
38
|
+
if (!entry.endsWith('Tool.js') && !entry.endsWith('Tool.ts'))
|
|
39
|
+
continue;
|
|
40
|
+
if (entry.endsWith('.d.ts'))
|
|
41
|
+
continue;
|
|
42
|
+
const entryPath = join(toolsDir, entry);
|
|
43
|
+
try {
|
|
44
|
+
const stat = statSync(entryPath);
|
|
45
|
+
if (!stat.isFile())
|
|
46
|
+
continue;
|
|
47
|
+
// Dynamic import - need file:// URL for ESM
|
|
48
|
+
const fileUrl = pathToFileURL(entryPath).href;
|
|
49
|
+
const module = await import(fileUrl);
|
|
50
|
+
// Find exported Tool (named export matching filename or any Tool export)
|
|
51
|
+
const baseName = entry.replace(/\.(js|ts)$/, '');
|
|
52
|
+
const tool = module[baseName] || module.default;
|
|
53
|
+
if (tool && typeof tool.name === 'string' && typeof tool.run === 'function') {
|
|
54
|
+
tools.push(tool);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
console.warn(`No valid Tool export found in ${entry}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
console.warn(`Error loading tool from ${entry}:`, err);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return tools;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Load all skills from a directory.
|
|
68
|
+
* Scans for subdirectories containing SKILL.md files.
|
|
69
|
+
*
|
|
70
|
+
* Directory structure:
|
|
71
|
+
* ```
|
|
72
|
+
* skills/
|
|
73
|
+
* nagare/
|
|
74
|
+
* fund-onboarding/
|
|
75
|
+
* SKILL.md
|
|
76
|
+
* monte-carlo/
|
|
77
|
+
* SKILL.md
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* @param dirPath - Path to the skills collection directory
|
|
81
|
+
* @returns Array of parsed skill definitions
|
|
82
|
+
*/
|
|
83
|
+
export function loadSkillsFromDirectory(dirPath) {
|
|
84
|
+
const skills = [];
|
|
85
|
+
let entries;
|
|
86
|
+
try {
|
|
87
|
+
entries = readdirSync(dirPath);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
console.warn(`Could not read skills directory: ${dirPath}`);
|
|
91
|
+
return skills;
|
|
92
|
+
}
|
|
93
|
+
for (const entry of entries) {
|
|
94
|
+
const entryPath = join(dirPath, entry);
|
|
95
|
+
try {
|
|
96
|
+
const stat = statSync(entryPath);
|
|
97
|
+
if (!stat.isDirectory())
|
|
98
|
+
continue;
|
|
99
|
+
// Look for SKILL.md or SKILL.jst
|
|
100
|
+
const mdPath = join(entryPath, 'SKILL.md');
|
|
101
|
+
const jstPath = join(entryPath, 'SKILL.jst');
|
|
102
|
+
let content;
|
|
103
|
+
let contentType = 'md';
|
|
104
|
+
if (existsSync(mdPath)) {
|
|
105
|
+
content = readFileSync(mdPath, 'utf-8');
|
|
106
|
+
contentType = 'md';
|
|
107
|
+
}
|
|
108
|
+
else if (existsSync(jstPath)) {
|
|
109
|
+
content = readFileSync(jstPath, 'utf-8');
|
|
110
|
+
contentType = 'jst';
|
|
111
|
+
}
|
|
112
|
+
if (content) {
|
|
113
|
+
skills.push(parseSkillFile(content, contentType));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
console.warn(`Error loading skill from ${entryPath}:`, err);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return skills;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=node-loaders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-loaders.js","sourceRoot":"","sources":["../src/node-loaders.ts"],"names":[],"mappings":"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"}
|
package/lib/sandbox.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AuthTokenPayload } from '@vertesia/common';
|
|
2
|
+
import { Hono } from 'hono';
|
|
3
|
+
import { AuthSession } from './auth.js';
|
|
4
|
+
import type { ToolServerConfig } from './server/types.js';
|
|
5
|
+
/** Browser-bundle entrypoint. Collections take bundled data; directory loaders are Node-only. */
|
|
6
|
+
export * from './ActivityCollection.js';
|
|
7
|
+
export { AuthSession, authorizeSandbox as authorize } from './auth.js';
|
|
8
|
+
export * from './ContentTypesCollection.js';
|
|
9
|
+
export * from './InteractionCollection.js';
|
|
10
|
+
export * from './RenderingTemplateCollection.js';
|
|
11
|
+
export * from './SkillCollection.js';
|
|
12
|
+
export type { BuildAppPackageOptions } from './server/app-package.js';
|
|
13
|
+
export { buildAppPackage } from './server/app-package.js';
|
|
14
|
+
export * from './server/types.js';
|
|
15
|
+
/** The host supplies non-secret claims; SDK HTTP goes through the sandbox's host-mediated fetch. */
|
|
16
|
+
export declare function createToolServer(config: ToolServerConfig): Hono<{
|
|
17
|
+
Bindings: {
|
|
18
|
+
sandboxSession?: AuthTokenPayload;
|
|
19
|
+
};
|
|
20
|
+
Variables: {
|
|
21
|
+
toolAuthSession: AuthSession;
|
|
22
|
+
toolAuthMode: 'sandbox';
|
|
23
|
+
};
|
|
24
|
+
}, import("hono/types").BlankSchema, "/">;
|
|
25
|
+
export * from './site/templates.js';
|
|
26
|
+
export * from './ToolCollection.js';
|
|
27
|
+
export * from './ToolRegistry.js';
|
|
28
|
+
export * from './types.js';
|
|
29
|
+
//# sourceMappingURL=sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,iGAAiG;AACjG,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,gBAAgB,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AACvE,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AACrC,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,cAAc,mBAAmB,CAAC;AAClC,oGAAoG;AACpG,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB;cAEvC;QAAE,cAAc,CAAC,EAAE,gBAAgB,CAAA;KAAE;eACpC;QAAE,eAAe,EAAE,WAAW,CAAC;QAAC,YAAY,EAAE,SAAS,CAAA;KAAE;0CAmB3E;AACD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
|
package/lib/sandbox.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { AuthSession } from './auth.js';
|
|
3
|
+
import { createToolServer as createBaseToolServer } from './server.js';
|
|
4
|
+
/** Browser-bundle entrypoint. Collections take bundled data; directory loaders are Node-only. */
|
|
5
|
+
export * from './ActivityCollection.js';
|
|
6
|
+
export { AuthSession, authorizeSandbox as authorize } from './auth.js';
|
|
7
|
+
export * from './ContentTypesCollection.js';
|
|
8
|
+
export * from './InteractionCollection.js';
|
|
9
|
+
export * from './RenderingTemplateCollection.js';
|
|
10
|
+
export * from './SkillCollection.js';
|
|
11
|
+
export { buildAppPackage } from './server/app-package.js';
|
|
12
|
+
export * from './server/types.js';
|
|
13
|
+
/** The host supplies non-secret claims; SDK HTTP goes through the sandbox's host-mediated fetch. */
|
|
14
|
+
export function createToolServer(config) {
|
|
15
|
+
const app = new Hono();
|
|
16
|
+
app.use('*', async (ctx, next) => {
|
|
17
|
+
ctx.set('toolAuthMode', 'sandbox');
|
|
18
|
+
const payload = ctx.env?.sandboxSession;
|
|
19
|
+
if (payload) {
|
|
20
|
+
ctx.set('toolAuthSession', new AuthSession('sandbox', payload, {
|
|
21
|
+
studio: 'https://platform.invalid/studio',
|
|
22
|
+
store: 'https://platform.invalid/store',
|
|
23
|
+
token: 'https://platform.invalid/token',
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
await next();
|
|
27
|
+
});
|
|
28
|
+
app.route('/', createBaseToolServer(config));
|
|
29
|
+
return app;
|
|
30
|
+
}
|
|
31
|
+
export * from './site/templates.js';
|
|
32
|
+
export * from './ToolCollection.js';
|
|
33
|
+
export * from './ToolRegistry.js';
|
|
34
|
+
export * from './types.js';
|
|
35
|
+
//# sourceMappingURL=sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEvE,iGAAiG;AACjG,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,gBAAgB,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AACvE,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,cAAc,mBAAmB,CAAC;AAClC,oGAAoG;AACpG,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAGhB,CAAC;IACL,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC7B,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACV,GAAG,CAAC,GAAG,CACH,iBAAiB,EACjB,IAAI,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE;gBAChC,MAAM,EAAE,iCAAiC;gBACzC,KAAK,EAAE,gCAAgC;gBACvC,KAAK,EAAE,gCAAgC;aAC1C,CAAC,CACL,CAAC;QACN,CAAC;QACD,MAAM,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC;AACf,CAAC;AACD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vertesia/tools-sdk",
|
|
3
|
-
"version": "1.6.0-dev.
|
|
3
|
+
"version": "1.6.0-dev.20261008.064737Z",
|
|
4
4
|
"description": "Tools SDK - utilities for building remote tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -15,21 +15,25 @@
|
|
|
15
15
|
".": {
|
|
16
16
|
"types": "./lib/index.d.ts",
|
|
17
17
|
"default": "./lib/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./sandbox": {
|
|
20
|
+
"types": "./lib/sandbox.d.ts",
|
|
21
|
+
"default": "./lib/sandbox.js"
|
|
18
22
|
}
|
|
19
23
|
},
|
|
20
24
|
"devDependencies": {
|
|
21
|
-
"@types/node": "^24.
|
|
25
|
+
"@types/node": "^24.19.0",
|
|
22
26
|
"@vertesia/tsconfig": "0.1.0",
|
|
23
27
|
"typescript": "7.0.2",
|
|
24
|
-
"vitest": "5.0.
|
|
28
|
+
"vitest": "5.0.2"
|
|
25
29
|
},
|
|
26
30
|
"peerDependencies": {
|
|
27
|
-
"hono": "^4.13.
|
|
31
|
+
"hono": "^4.13.13"
|
|
28
32
|
},
|
|
29
33
|
"dependencies": {
|
|
30
|
-
"@llumiverse/common": "1.6.0-dev.
|
|
31
|
-
"@vertesia/client": "1.6.0-dev.
|
|
32
|
-
"@vertesia/common": "1.6.0-dev.
|
|
34
|
+
"@llumiverse/common": "1.6.0-dev.20261008.064411Z",
|
|
35
|
+
"@vertesia/client": "1.6.0-dev.20261008.064737Z",
|
|
36
|
+
"@vertesia/common": "1.6.0-dev.20261008.064737Z",
|
|
33
37
|
"jose": "^6.2.12",
|
|
34
38
|
"zod": "4.6.5"
|
|
35
39
|
},
|
|
@@ -47,7 +51,7 @@
|
|
|
47
51
|
"agents",
|
|
48
52
|
"typescript"
|
|
49
53
|
],
|
|
50
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "8ee3a33e9a7c3dbcd13937e971cbdcc5fad56717",
|
|
51
55
|
"scripts": {
|
|
52
56
|
"lint": "biome lint src",
|
|
53
57
|
"test": "vitest run",
|
package/src/SkillCollection.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
1
|
import type { ToolDefinition } from '@llumiverse/common';
|
|
4
2
|
import type { AgentToolDefinition } from '@vertesia/common';
|
|
5
3
|
import type { Context } from 'hono';
|
|
@@ -427,64 +425,3 @@ export async function loadSkillFromFile(
|
|
|
427
425
|
const contentType: SkillContentType = filePath.endsWith('.jst') ? 'jst' : 'md';
|
|
428
426
|
return parseSkillFile(content, contentType);
|
|
429
427
|
}
|
|
430
|
-
|
|
431
|
-
/**
|
|
432
|
-
* Load all skills from a directory.
|
|
433
|
-
* Scans for subdirectories containing SKILL.md files.
|
|
434
|
-
*
|
|
435
|
-
* Directory structure:
|
|
436
|
-
* ```
|
|
437
|
-
* skills/
|
|
438
|
-
* nagare/
|
|
439
|
-
* fund-onboarding/
|
|
440
|
-
* SKILL.md
|
|
441
|
-
* monte-carlo/
|
|
442
|
-
* SKILL.md
|
|
443
|
-
* ```
|
|
444
|
-
*
|
|
445
|
-
* @param dirPath - Path to the skills collection directory
|
|
446
|
-
* @returns Array of parsed skill definitions
|
|
447
|
-
*/
|
|
448
|
-
export function loadSkillsFromDirectory(dirPath: string): SkillDefinition[] {
|
|
449
|
-
const skills: SkillDefinition[] = [];
|
|
450
|
-
|
|
451
|
-
let entries: string[];
|
|
452
|
-
try {
|
|
453
|
-
entries = readdirSync(dirPath);
|
|
454
|
-
} catch {
|
|
455
|
-
console.warn(`Could not read skills directory: ${dirPath}`);
|
|
456
|
-
return skills;
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
for (const entry of entries) {
|
|
460
|
-
const entryPath = join(dirPath, entry);
|
|
461
|
-
|
|
462
|
-
try {
|
|
463
|
-
const stat = statSync(entryPath);
|
|
464
|
-
if (!stat.isDirectory()) continue;
|
|
465
|
-
|
|
466
|
-
// Look for SKILL.md or SKILL.jst
|
|
467
|
-
const mdPath = join(entryPath, 'SKILL.md');
|
|
468
|
-
const jstPath = join(entryPath, 'SKILL.jst');
|
|
469
|
-
|
|
470
|
-
let content: string | undefined;
|
|
471
|
-
let contentType: SkillContentType = 'md';
|
|
472
|
-
|
|
473
|
-
if (existsSync(mdPath)) {
|
|
474
|
-
content = readFileSync(mdPath, 'utf-8');
|
|
475
|
-
contentType = 'md';
|
|
476
|
-
} else if (existsSync(jstPath)) {
|
|
477
|
-
content = readFileSync(jstPath, 'utf-8');
|
|
478
|
-
contentType = 'jst';
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
if (content) {
|
|
482
|
-
skills.push(parseSkillFile(content, contentType));
|
|
483
|
-
}
|
|
484
|
-
} catch (err) {
|
|
485
|
-
console.warn(`Error loading skill from ${entryPath}:`, err);
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
return skills;
|
|
490
|
-
}
|
package/src/ToolCollection.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { pathToFileURL } from 'node:url';
|
|
4
1
|
import type { AgentToolDefinition } from '@vertesia/common';
|
|
5
2
|
import type { Context } from 'hono';
|
|
6
3
|
import { HTTPException } from 'hono/http-exception';
|
|
@@ -158,68 +155,3 @@ function readPayload(ctx: Context): ToolExecutionPayload {
|
|
|
158
155
|
'Invalid or missing tool execution payload. Expected { tool_use: { id, tool_name, tool_input? }, metadata? }',
|
|
159
156
|
});
|
|
160
157
|
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Load all tools from a directory.
|
|
164
|
-
* Scans for .js files and imports tools that match naming convention.
|
|
165
|
-
*
|
|
166
|
-
* Directory structure:
|
|
167
|
-
* ```
|
|
168
|
-
* collection/
|
|
169
|
-
* tools/
|
|
170
|
-
* SearchFundsTool.js # exports SearchFundsTool
|
|
171
|
-
* GetFundDetailsTool.js # exports GetFundDetailsTool
|
|
172
|
-
* ```
|
|
173
|
-
*
|
|
174
|
-
* Naming convention: File should export a Tool with name matching *Tool pattern.
|
|
175
|
-
*
|
|
176
|
-
* @param toolsDir - Path to the tools directory (e.g., /path/to/collection/tools)
|
|
177
|
-
* @returns Promise resolving to array of Tool objects
|
|
178
|
-
*/
|
|
179
|
-
export async function loadToolsFromDirectory(toolsDir: string): Promise<Tool[]> {
|
|
180
|
-
const tools: Tool[] = [];
|
|
181
|
-
|
|
182
|
-
if (!existsSync(toolsDir)) {
|
|
183
|
-
console.warn(`Tools directory not found: ${toolsDir}`);
|
|
184
|
-
return tools;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
let entries: string[];
|
|
188
|
-
try {
|
|
189
|
-
entries = readdirSync(toolsDir);
|
|
190
|
-
} catch {
|
|
191
|
-
console.warn(`Could not read tools directory: ${toolsDir}`);
|
|
192
|
-
return tools;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
for (const entry of entries) {
|
|
196
|
-
// Only process .js and .ts files that end with Tool
|
|
197
|
-
if (!entry.endsWith('Tool.js') && !entry.endsWith('Tool.ts')) continue;
|
|
198
|
-
if (entry.endsWith('.d.ts')) continue;
|
|
199
|
-
|
|
200
|
-
const entryPath = join(toolsDir, entry);
|
|
201
|
-
|
|
202
|
-
try {
|
|
203
|
-
const stat = statSync(entryPath);
|
|
204
|
-
if (!stat.isFile()) continue;
|
|
205
|
-
|
|
206
|
-
// Dynamic import - need file:// URL for ESM
|
|
207
|
-
const fileUrl = pathToFileURL(entryPath).href;
|
|
208
|
-
const module = await import(fileUrl);
|
|
209
|
-
|
|
210
|
-
// Find exported Tool (named export matching filename or any Tool export)
|
|
211
|
-
const baseName = entry.replace(/\.(js|ts)$/, '');
|
|
212
|
-
const tool = module[baseName] || module.default;
|
|
213
|
-
|
|
214
|
-
if (tool && typeof tool.name === 'string' && typeof tool.run === 'function') {
|
|
215
|
-
tools.push(tool);
|
|
216
|
-
} else {
|
|
217
|
-
console.warn(`No valid Tool export found in ${entry}`);
|
|
218
|
-
}
|
|
219
|
-
} catch (err) {
|
|
220
|
-
console.warn(`Error loading tool from ${entry}:`, err);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
return tools;
|
|
225
|
-
}
|
package/src/auth.ts
CHANGED
|
@@ -49,7 +49,22 @@ export interface ToolContext {
|
|
|
49
49
|
runId?: string;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/** Sandbox authorization never accepts a credential supplied by the guest request. */
|
|
53
|
+
export async function authorizeSandbox(
|
|
54
|
+
ctx: Context,
|
|
55
|
+
_endpointOverrides?: EndpointOverrides,
|
|
56
|
+
_toolContext?: ToolContext,
|
|
57
|
+
) {
|
|
58
|
+
const session = ctx.get('toolAuthSession') as AuthSession | undefined;
|
|
59
|
+
if (!session) throw new HTTPException(401, { message: 'Missing sandbox host session' });
|
|
60
|
+
return session;
|
|
61
|
+
}
|
|
62
|
+
|
|
52
63
|
export async function authorize(ctx: Context, endpointOverrides?: EndpointOverrides, toolContext?: ToolContext) {
|
|
64
|
+
if (ctx.get('toolAuthMode') === 'sandbox') return authorizeSandbox(ctx);
|
|
65
|
+
// A sandbox host can bind a session in application middleware. HTTP headers cannot set this value.
|
|
66
|
+
const boundSession = ctx.get('toolAuthSession') as AuthSession | undefined;
|
|
67
|
+
if (boundSession) return boundSession;
|
|
53
68
|
const auth = ctx.req.header('Authorization');
|
|
54
69
|
if (!auth) {
|
|
55
70
|
throw new HTTPException(401, {
|
package/src/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { AuthSession, authorize } from './auth.js';
|
|
|
3
3
|
export * from './ContentTypesCollection.js';
|
|
4
4
|
export { copyRuntimeAssets } from './copy-assets.js';
|
|
5
5
|
export * from './InteractionCollection.js';
|
|
6
|
+
export { loadSkillsFromDirectory, loadToolsFromDirectory } from './node-loaders.js';
|
|
6
7
|
export * from './RenderingTemplateCollection.js';
|
|
7
8
|
export * from './SkillCollection.js';
|
|
8
9
|
export type { BuildAppPackageOptions } from './server/app-package.js';
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { parseSkillFile } from './SkillCollection.js';
|
|
5
|
+
import type { SkillContentType, SkillDefinition, Tool } from './types.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Load all tools from a directory.
|
|
9
|
+
* Scans for .js files and imports tools that match naming convention.
|
|
10
|
+
*
|
|
11
|
+
* Directory structure:
|
|
12
|
+
* ```
|
|
13
|
+
* collection/
|
|
14
|
+
* tools/
|
|
15
|
+
* SearchFundsTool.js # exports SearchFundsTool
|
|
16
|
+
* GetFundDetailsTool.js # exports GetFundDetailsTool
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* Naming convention: File should export a Tool with name matching *Tool pattern.
|
|
20
|
+
*
|
|
21
|
+
* @param toolsDir - Path to the tools directory (e.g., /path/to/collection/tools)
|
|
22
|
+
* @returns Promise resolving to array of Tool objects
|
|
23
|
+
*/
|
|
24
|
+
export async function loadToolsFromDirectory(toolsDir: string): Promise<Tool[]> {
|
|
25
|
+
const tools: Tool[] = [];
|
|
26
|
+
|
|
27
|
+
if (!existsSync(toolsDir)) {
|
|
28
|
+
console.warn(`Tools directory not found: ${toolsDir}`);
|
|
29
|
+
return tools;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
let entries: string[];
|
|
33
|
+
try {
|
|
34
|
+
entries = readdirSync(toolsDir);
|
|
35
|
+
} catch {
|
|
36
|
+
console.warn(`Could not read tools directory: ${toolsDir}`);
|
|
37
|
+
return tools;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
for (const entry of entries) {
|
|
41
|
+
// Only process .js and .ts files that end with Tool
|
|
42
|
+
if (!entry.endsWith('Tool.js') && !entry.endsWith('Tool.ts')) continue;
|
|
43
|
+
if (entry.endsWith('.d.ts')) continue;
|
|
44
|
+
|
|
45
|
+
const entryPath = join(toolsDir, entry);
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
const stat = statSync(entryPath);
|
|
49
|
+
if (!stat.isFile()) continue;
|
|
50
|
+
|
|
51
|
+
// Dynamic import - need file:// URL for ESM
|
|
52
|
+
const fileUrl = pathToFileURL(entryPath).href;
|
|
53
|
+
const module = await import(fileUrl);
|
|
54
|
+
|
|
55
|
+
// Find exported Tool (named export matching filename or any Tool export)
|
|
56
|
+
const baseName = entry.replace(/\.(js|ts)$/, '');
|
|
57
|
+
const tool = module[baseName] || module.default;
|
|
58
|
+
|
|
59
|
+
if (tool && typeof tool.name === 'string' && typeof tool.run === 'function') {
|
|
60
|
+
tools.push(tool);
|
|
61
|
+
} else {
|
|
62
|
+
console.warn(`No valid Tool export found in ${entry}`);
|
|
63
|
+
}
|
|
64
|
+
} catch (err) {
|
|
65
|
+
console.warn(`Error loading tool from ${entry}:`, err);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return tools;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Load all skills from a directory.
|
|
74
|
+
* Scans for subdirectories containing SKILL.md files.
|
|
75
|
+
*
|
|
76
|
+
* Directory structure:
|
|
77
|
+
* ```
|
|
78
|
+
* skills/
|
|
79
|
+
* nagare/
|
|
80
|
+
* fund-onboarding/
|
|
81
|
+
* SKILL.md
|
|
82
|
+
* monte-carlo/
|
|
83
|
+
* SKILL.md
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @param dirPath - Path to the skills collection directory
|
|
87
|
+
* @returns Array of parsed skill definitions
|
|
88
|
+
*/
|
|
89
|
+
export function loadSkillsFromDirectory(dirPath: string): SkillDefinition[] {
|
|
90
|
+
const skills: SkillDefinition[] = [];
|
|
91
|
+
|
|
92
|
+
let entries: string[];
|
|
93
|
+
try {
|
|
94
|
+
entries = readdirSync(dirPath);
|
|
95
|
+
} catch {
|
|
96
|
+
console.warn(`Could not read skills directory: ${dirPath}`);
|
|
97
|
+
return skills;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
for (const entry of entries) {
|
|
101
|
+
const entryPath = join(dirPath, entry);
|
|
102
|
+
|
|
103
|
+
try {
|
|
104
|
+
const stat = statSync(entryPath);
|
|
105
|
+
if (!stat.isDirectory()) continue;
|
|
106
|
+
|
|
107
|
+
// Look for SKILL.md or SKILL.jst
|
|
108
|
+
const mdPath = join(entryPath, 'SKILL.md');
|
|
109
|
+
const jstPath = join(entryPath, 'SKILL.jst');
|
|
110
|
+
|
|
111
|
+
let content: string | undefined;
|
|
112
|
+
let contentType: SkillContentType = 'md';
|
|
113
|
+
|
|
114
|
+
if (existsSync(mdPath)) {
|
|
115
|
+
content = readFileSync(mdPath, 'utf-8');
|
|
116
|
+
contentType = 'md';
|
|
117
|
+
} else if (existsSync(jstPath)) {
|
|
118
|
+
content = readFileSync(jstPath, 'utf-8');
|
|
119
|
+
contentType = 'jst';
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (content) {
|
|
123
|
+
skills.push(parseSkillFile(content, contentType));
|
|
124
|
+
}
|
|
125
|
+
} catch (err) {
|
|
126
|
+
console.warn(`Error loading skill from ${entryPath}:`, err);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return skills;
|
|
131
|
+
}
|
package/src/sandbox.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { AuthTokenPayload } from '@vertesia/common';
|
|
2
|
+
import { Hono } from 'hono';
|
|
3
|
+
import { AuthSession } from './auth.js';
|
|
4
|
+
import type { ToolServerConfig } from './server/types.js';
|
|
5
|
+
import { createToolServer as createBaseToolServer } from './server.js';
|
|
6
|
+
|
|
7
|
+
/** Browser-bundle entrypoint. Collections take bundled data; directory loaders are Node-only. */
|
|
8
|
+
export * from './ActivityCollection.js';
|
|
9
|
+
export { AuthSession, authorizeSandbox as authorize } from './auth.js';
|
|
10
|
+
export * from './ContentTypesCollection.js';
|
|
11
|
+
export * from './InteractionCollection.js';
|
|
12
|
+
export * from './RenderingTemplateCollection.js';
|
|
13
|
+
export * from './SkillCollection.js';
|
|
14
|
+
export type { BuildAppPackageOptions } from './server/app-package.js';
|
|
15
|
+
export { buildAppPackage } from './server/app-package.js';
|
|
16
|
+
export * from './server/types.js';
|
|
17
|
+
/** The host supplies non-secret claims; SDK HTTP goes through the sandbox's host-mediated fetch. */
|
|
18
|
+
export function createToolServer(config: ToolServerConfig) {
|
|
19
|
+
const app = new Hono<{
|
|
20
|
+
Bindings: { sandboxSession?: AuthTokenPayload };
|
|
21
|
+
Variables: { toolAuthSession: AuthSession; toolAuthMode: 'sandbox' };
|
|
22
|
+
}>();
|
|
23
|
+
app.use('*', async (ctx, next) => {
|
|
24
|
+
ctx.set('toolAuthMode', 'sandbox');
|
|
25
|
+
const payload = ctx.env?.sandboxSession;
|
|
26
|
+
if (payload) {
|
|
27
|
+
ctx.set(
|
|
28
|
+
'toolAuthSession',
|
|
29
|
+
new AuthSession('sandbox', payload, {
|
|
30
|
+
studio: 'https://platform.invalid/studio',
|
|
31
|
+
store: 'https://platform.invalid/store',
|
|
32
|
+
token: 'https://platform.invalid/token',
|
|
33
|
+
}),
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
await next();
|
|
37
|
+
});
|
|
38
|
+
app.route('/', createBaseToolServer(config));
|
|
39
|
+
return app;
|
|
40
|
+
}
|
|
41
|
+
export * from './site/templates.js';
|
|
42
|
+
export * from './ToolCollection.js';
|
|
43
|
+
export * from './ToolRegistry.js';
|
|
44
|
+
export * from './types.js';
|