@vertesia/tools-sdk 1.0.0-dev.20260203.130115Z → 1.0.0-dev.20260227.112605Z

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 (171) hide show
  1. package/lib/cjs/ContentTypesCollection.js +43 -0
  2. package/lib/cjs/ContentTypesCollection.js.map +1 -0
  3. package/lib/cjs/InteractionCollection.js +43 -0
  4. package/lib/cjs/InteractionCollection.js.map +1 -0
  5. package/lib/cjs/RenderingTemplateCollection.js +43 -0
  6. package/lib/cjs/RenderingTemplateCollection.js.map +1 -0
  7. package/lib/cjs/SkillCollection.js +384 -0
  8. package/lib/cjs/SkillCollection.js.map +1 -0
  9. package/lib/cjs/ToolCollection.js +221 -0
  10. package/lib/cjs/ToolCollection.js.map +1 -0
  11. package/lib/cjs/ToolRegistry.js +95 -0
  12. package/lib/cjs/ToolRegistry.js.map +1 -0
  13. package/lib/cjs/auth.js +131 -0
  14. package/lib/cjs/auth.js.map +1 -0
  15. package/lib/cjs/build/validate.js +7 -0
  16. package/lib/cjs/build/validate.js.map +1 -0
  17. package/lib/cjs/copy-assets.js +84 -0
  18. package/lib/cjs/copy-assets.js.map +1 -0
  19. package/lib/cjs/index.js +33 -0
  20. package/lib/cjs/index.js.map +1 -0
  21. package/lib/cjs/package.json +3 -0
  22. package/lib/cjs/server/app-package.js +141 -0
  23. package/lib/cjs/server/app-package.js.map +1 -0
  24. package/lib/cjs/server/content-types.js +73 -0
  25. package/lib/cjs/server/content-types.js.map +1 -0
  26. package/lib/cjs/server/interactions.js +89 -0
  27. package/lib/cjs/server/interactions.js.map +1 -0
  28. package/lib/cjs/server/mcp.js +45 -0
  29. package/lib/cjs/server/mcp.js.map +1 -0
  30. package/lib/cjs/server/site.js +42 -0
  31. package/lib/cjs/server/site.js.map +1 -0
  32. package/lib/cjs/server/skills.js +114 -0
  33. package/lib/cjs/server/skills.js.map +1 -0
  34. package/lib/cjs/server/templates.js +67 -0
  35. package/lib/cjs/server/templates.js.map +1 -0
  36. package/lib/cjs/server/tools.js +87 -0
  37. package/lib/cjs/server/tools.js.map +1 -0
  38. package/lib/cjs/server/types.js +3 -0
  39. package/lib/cjs/server/types.js.map +1 -0
  40. package/lib/cjs/server/widgets.js +27 -0
  41. package/lib/cjs/server/widgets.js.map +1 -0
  42. package/lib/cjs/server.js +139 -0
  43. package/lib/cjs/server.js.map +1 -0
  44. package/lib/cjs/site/styles.js +692 -0
  45. package/lib/cjs/site/styles.js.map +1 -0
  46. package/lib/cjs/site/templates.js +1185 -0
  47. package/lib/cjs/site/templates.js.map +1 -0
  48. package/lib/cjs/types.js +3 -0
  49. package/lib/cjs/types.js.map +1 -0
  50. package/lib/cjs/utils.js +44 -0
  51. package/lib/cjs/utils.js.map +1 -0
  52. package/lib/esm/ContentTypesCollection.js +39 -0
  53. package/lib/esm/ContentTypesCollection.js.map +1 -0
  54. package/lib/esm/InteractionCollection.js +39 -0
  55. package/lib/esm/InteractionCollection.js.map +1 -0
  56. package/lib/esm/RenderingTemplateCollection.js +39 -0
  57. package/lib/esm/RenderingTemplateCollection.js.map +1 -0
  58. package/lib/esm/SkillCollection.js +377 -0
  59. package/lib/esm/SkillCollection.js.map +1 -0
  60. package/lib/esm/ToolCollection.js +183 -0
  61. package/lib/esm/ToolCollection.js.map +1 -0
  62. package/lib/esm/ToolRegistry.js +90 -0
  63. package/lib/esm/ToolRegistry.js.map +1 -0
  64. package/lib/esm/auth.js +124 -0
  65. package/lib/esm/auth.js.map +1 -0
  66. package/lib/esm/build/validate.js +4 -0
  67. package/lib/esm/build/validate.js.map +1 -0
  68. package/lib/esm/copy-assets.js +81 -0
  69. package/lib/esm/copy-assets.js.map +1 -0
  70. package/lib/esm/index.js +13 -0
  71. package/lib/esm/index.js.map +1 -0
  72. package/lib/esm/server/app-package.js +138 -0
  73. package/lib/esm/server/app-package.js.map +1 -0
  74. package/lib/esm/server/content-types.js +70 -0
  75. package/lib/esm/server/content-types.js.map +1 -0
  76. package/lib/esm/server/interactions.js +86 -0
  77. package/lib/esm/server/interactions.js.map +1 -0
  78. package/lib/esm/server/mcp.js +42 -0
  79. package/lib/esm/server/mcp.js.map +1 -0
  80. package/lib/esm/server/site.js +39 -0
  81. package/lib/esm/server/site.js.map +1 -0
  82. package/lib/esm/server/skills.js +111 -0
  83. package/lib/esm/server/skills.js.map +1 -0
  84. package/lib/esm/server/templates.js +64 -0
  85. package/lib/esm/server/templates.js.map +1 -0
  86. package/lib/esm/server/tools.js +84 -0
  87. package/lib/esm/server/tools.js.map +1 -0
  88. package/lib/esm/server/types.js +2 -0
  89. package/lib/esm/server/types.js.map +1 -0
  90. package/lib/esm/server/widgets.js +24 -0
  91. package/lib/esm/server/widgets.js.map +1 -0
  92. package/lib/esm/server.js +135 -0
  93. package/lib/esm/server.js.map +1 -0
  94. package/lib/esm/site/styles.js +689 -0
  95. package/lib/esm/site/styles.js.map +1 -0
  96. package/lib/esm/site/templates.js +1170 -0
  97. package/lib/esm/site/templates.js.map +1 -0
  98. package/lib/esm/types.js +2 -0
  99. package/lib/esm/types.js.map +1 -0
  100. package/lib/esm/utils.js +38 -0
  101. package/lib/esm/utils.js.map +1 -0
  102. package/lib/types/ContentTypesCollection.d.ts +18 -0
  103. package/lib/types/ContentTypesCollection.d.ts.map +1 -0
  104. package/lib/types/InteractionCollection.d.ts +18 -0
  105. package/lib/types/InteractionCollection.d.ts.map +1 -0
  106. package/lib/types/RenderingTemplateCollection.d.ts +17 -0
  107. package/lib/types/RenderingTemplateCollection.d.ts.map +1 -0
  108. package/lib/types/SkillCollection.d.ts +119 -0
  109. package/lib/types/SkillCollection.d.ts.map +1 -0
  110. package/lib/types/ToolCollection.d.ts +67 -0
  111. package/lib/types/ToolCollection.d.ts.map +1 -0
  112. package/lib/types/ToolRegistry.d.ts +22 -0
  113. package/lib/types/ToolRegistry.d.ts.map +1 -0
  114. package/lib/types/auth.d.ts +32 -0
  115. package/lib/types/auth.d.ts.map +1 -0
  116. package/lib/types/build/validate.d.ts +2 -0
  117. package/lib/types/build/validate.d.ts.map +1 -0
  118. package/lib/types/copy-assets.d.ts +14 -0
  119. package/lib/types/copy-assets.d.ts.map +1 -0
  120. package/lib/types/index.d.ts +13 -0
  121. package/lib/types/index.d.ts.map +1 -0
  122. package/lib/types/server/app-package.d.ts +4 -0
  123. package/lib/types/server/app-package.d.ts.map +1 -0
  124. package/lib/types/server/content-types.d.ts +4 -0
  125. package/lib/types/server/content-types.d.ts.map +1 -0
  126. package/lib/types/server/interactions.d.ts +4 -0
  127. package/lib/types/server/interactions.d.ts.map +1 -0
  128. package/lib/types/server/mcp.d.ts +4 -0
  129. package/lib/types/server/mcp.d.ts.map +1 -0
  130. package/lib/types/server/site.d.ts +4 -0
  131. package/lib/types/server/site.d.ts.map +1 -0
  132. package/lib/types/server/skills.d.ts +4 -0
  133. package/lib/types/server/skills.d.ts.map +1 -0
  134. package/lib/types/server/templates.d.ts +4 -0
  135. package/lib/types/server/templates.d.ts.map +1 -0
  136. package/lib/types/server/tools.d.ts +4 -0
  137. package/lib/types/server/tools.d.ts.map +1 -0
  138. package/lib/types/server/types.d.ts +93 -0
  139. package/lib/types/server/types.d.ts.map +1 -0
  140. package/lib/types/server/widgets.d.ts +4 -0
  141. package/lib/types/server/widgets.d.ts.map +1 -0
  142. package/lib/types/server.d.ts +27 -0
  143. package/lib/types/server.d.ts.map +1 -0
  144. package/lib/types/site/styles.d.ts +5 -0
  145. package/lib/types/site/styles.d.ts.map +1 -0
  146. package/lib/types/site/templates.d.ts +71 -0
  147. package/lib/types/site/templates.d.ts.map +1 -0
  148. package/lib/types/types.d.ts +294 -0
  149. package/lib/types/types.d.ts.map +1 -0
  150. package/lib/types/utils.d.ts +10 -0
  151. package/lib/types/utils.d.ts.map +1 -0
  152. package/package.json +4 -4
  153. package/src/ContentTypesCollection.ts +8 -8
  154. package/src/RenderingTemplateCollection.ts +51 -0
  155. package/src/SkillCollection.ts +11 -2
  156. package/src/ToolCollection.ts +9 -18
  157. package/src/ToolRegistry.ts +17 -56
  158. package/src/auth.ts +27 -0
  159. package/src/index.ts +1 -0
  160. package/src/server/app-package.ts +101 -43
  161. package/src/server/{conyent-types.ts → content-types.ts} +29 -11
  162. package/src/server/interactions.ts +11 -6
  163. package/src/server/site.ts +9 -0
  164. package/src/server/templates.ts +80 -0
  165. package/src/server/tools.ts +3 -22
  166. package/src/server/types.ts +14 -1
  167. package/src/server/widgets.ts +2 -6
  168. package/src/server.ts +5 -1
  169. package/src/site/templates.ts +179 -2
  170. package/src/types.ts +38 -1
  171. package/src/utils.ts +15 -1
@@ -0,0 +1,84 @@
1
+ import { Hono } from "hono";
2
+ import { HTTPException } from "hono/http-exception";
3
+ export function createToolsRoute(app, basePath, config) {
4
+ const { tools = [] } = config;
5
+ // Build a map of tool name -> collection for routing
6
+ const toolToCollection = new Map();
7
+ for (const coll of tools) {
8
+ for (const toolDef of coll.getToolDefinitions()) {
9
+ toolToCollection.set(toolDef.name, coll);
10
+ }
11
+ }
12
+ // GET /api/tools - Returns all tools from all collections
13
+ // Query params:
14
+ // - defaultOnly=true: Only return tools with default !== false
15
+ // - unlocked=tool1,tool2: Comma-separated list of unlocked tool names
16
+ app.get(basePath, (c) => {
17
+ const url = new URL(c.req.url);
18
+ const allTools = [];
19
+ for (const coll of tools) {
20
+ allTools.push(...coll.getToolDefinitions());
21
+ }
22
+ return c.json({
23
+ src: `${url.origin}${url.pathname}`,
24
+ title: 'All Tools',
25
+ description: 'All available tools across all collections',
26
+ tools: allTools,
27
+ collections: tools.map(t => ({
28
+ name: t.name,
29
+ title: t.title,
30
+ description: t.description,
31
+ })),
32
+ });
33
+ });
34
+ // POST /api/tools - Route to the correct collection based on tool_name
35
+ app.post(basePath, async (c) => {
36
+ const ctx = c;
37
+ // Payload is already parsed and validated by middleware
38
+ if (!ctx.payload) {
39
+ throw new HTTPException(400, {
40
+ message: 'Invalid or missing tool execution payload. Expected { tool_use: { id, tool_name, tool_input? }, metadata? }'
41
+ });
42
+ }
43
+ const toolName = ctx.payload.tool_use.tool_name;
44
+ // Find the collection for this tool
45
+ const collection = toolToCollection.get(toolName);
46
+ if (!collection) {
47
+ throw new HTTPException(404, {
48
+ message: `Tool not found: ${toolName}. Available tools: ${Array.from(toolToCollection.keys()).join(', ')}`
49
+ });
50
+ }
51
+ // Delegate to the collection's execute method with pre-parsed payload
52
+ return collection.execute(c, ctx.payload);
53
+ });
54
+ // Create tool collection endpoints
55
+ for (const coll of tools) {
56
+ app.route(`${basePath}/${coll.name}`, createToolEndpoints(coll));
57
+ }
58
+ }
59
+ function createToolEndpoints(coll) {
60
+ const endpoint = new Hono();
61
+ endpoint.post('/', (c) => {
62
+ return coll.execute(c);
63
+ });
64
+ // GET /api/tools/{collection}
65
+ // Query params:
66
+ // - import: Return import source URL instead of API URL
67
+ // - defaultOnly=true: Only return tools with default !== false
68
+ // - unlocked=tool1,tool2: Comma-separated list of unlocked tool names
69
+ endpoint.get('/', (c) => {
70
+ const importSourceUrl = c.req.query('import') != null;
71
+ const url = new URL(c.req.url);
72
+ const response = {
73
+ src: importSourceUrl
74
+ ? `${url.origin}/libs/vertesia-tools-${coll.name}.js`
75
+ : `${url.origin}${url.pathname}`,
76
+ title: coll.title || coll.name,
77
+ description: coll.description || '',
78
+ tools: coll.getToolDefinitions()
79
+ };
80
+ return c.json(response);
81
+ });
82
+ return endpoint;
83
+ }
84
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/server/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ export function createWidgetsRoute(app, basePath, config) {
2
+ const { skills = [] } = config;
3
+ // GET /api/widgets - Returns all widgets from all skill collections
4
+ app.get(basePath, (c) => {
5
+ const url = new URL(c.req.url);
6
+ const widgets = {};
7
+ for (const coll of skills) {
8
+ const collWidgets = coll.getWidgets();
9
+ for (const widget of collWidgets) {
10
+ widgets[widget.name] = {
11
+ collection: coll.name,
12
+ skill: widget.skill,
13
+ url: `${url.origin}/widgets/${widget.name}.js`,
14
+ };
15
+ }
16
+ }
17
+ return c.json({
18
+ title: 'All Widgets',
19
+ description: 'All available widgets across all skill collections',
20
+ widgets,
21
+ });
22
+ });
23
+ }
24
+ //# sourceMappingURL=widgets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widgets.js","sourceRoot":"","sources":["../../../src/server/widgets.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,kBAAkB,CAAC,GAAS,EAAE,QAAgB,EAAE,MAAwB;IAEpF,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IAE/B,oEAAoE;IACpE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;QACpB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/B,MAAM,OAAO,GAAkC,EAAE,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;oBACnB,UAAU,EAAE,IAAI,CAAC,IAAI;oBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,YAAY,MAAM,CAAC,IAAI,KAAK;iBACjD,CAAA;YACL,CAAC;QACL,CAAC;QAED,OAAO,CAAC,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,oDAAoD;YACjE,OAAO;SACV,CAAC,CAAC;IAEP,CAAC,CAAC,CAAC;AAEP,CAAC"}
@@ -0,0 +1,135 @@
1
+ import { Hono } from "hono";
2
+ import { cors } from "hono/cors";
3
+ import { HTTPException } from "hono/http-exception";
4
+ import { z } from "zod";
5
+ import { createInteractionsRoute } from "./server/interactions.js";
6
+ import { createMcpRoute } from "./server/mcp.js";
7
+ import { createSiteRoute } from "./server/site.js";
8
+ import { createSkillsRoute } from "./server/skills.js";
9
+ import { createToolsRoute } from "./server/tools.js";
10
+ import { createTemplatesRoute } from "./server/templates.js";
11
+ import { createWidgetsRoute } from "./server/widgets.js";
12
+ import { createPackageRoute } from "./server/app-package.js";
13
+ import { createContentTypesRoute } from "./server/content-types.js";
14
+ // Schema for tool execution payload
15
+ const ToolExecutionPayloadSchema = z.object({
16
+ tool_use: z.object({
17
+ id: z.string(),
18
+ tool_name: z.string(),
19
+ tool_input: z.record(z.string(), z.any()).default({}),
20
+ }),
21
+ metadata: z.record(z.string(), z.any()).optional(),
22
+ });
23
+ /**
24
+ * Create a Hono server for tools, interactions, and skills.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * import { createToolServer, ToolCollection, SkillCollection } from "@vertesia/tools-sdk";
29
+ *
30
+ * const server = createToolServer({
31
+ * tools: [myToolCollection],
32
+ * skills: [mySkillCollection],
33
+ * });
34
+ *
35
+ * export default server;
36
+ * ```
37
+ */
38
+ export function createToolServer(config) {
39
+ const { prefix = '/api', tools = [], interactions = [], skills = [], templates = [], mcpProviders = [], disableHtml = false, } = config;
40
+ const app = new Hono();
41
+ // Add CORS middleware globally
42
+ app.use('*', cors({ origin: '*', allowMethods: ['GET', 'POST', 'OPTIONS'] }));
43
+ // Middleware to parse and validate body, store on context for reuse
44
+ app.use('*', async (c, next) => {
45
+ const ctx = c;
46
+ if (c.req.method === 'POST') {
47
+ try {
48
+ const text = await c.req.text();
49
+ const body = JSON.parse(text);
50
+ const result = ToolExecutionPayloadSchema.safeParse(body);
51
+ if (result.success) {
52
+ ctx.payload = result.data;
53
+ ctx.toolUseId = result.data.tool_use.id;
54
+ ctx.toolName = result.data.tool_use.tool_name;
55
+ }
56
+ // If validation fails, still store raw body for error reporting
57
+ // but don't set payload - handlers will return validation error
58
+ }
59
+ catch {
60
+ // Ignore parsing errors - body might not be JSON
61
+ }
62
+ }
63
+ await next();
64
+ });
65
+ // HTML pages (unless disabled)
66
+ if (!disableHtml) {
67
+ createSiteRoute(app, '', config);
68
+ }
69
+ // Add base API route
70
+ app.get(prefix, (c) => {
71
+ // Skills are exposed as tools, so include them in the tools list
72
+ const allToolEndpoints = [
73
+ ...tools.map(col => `${prefix}/tools/${col.name}`),
74
+ ...skills.map(col => `${prefix}/skills/${col.name}`),
75
+ ];
76
+ return c.json({
77
+ message: 'Vertesia Tools API',
78
+ version: '1.0.0',
79
+ endpoints: {
80
+ tools: allToolEndpoints,
81
+ interactions: interactions.map(col => `${prefix}/interactions/${col.name}`),
82
+ templates: templates.map(col => `${prefix}/templates/${col.name}`),
83
+ mcp: mcpProviders.map(p => `${prefix}/mcp/${p.name}`),
84
+ }
85
+ });
86
+ });
87
+ createPackageRoute(app, `${prefix}/package`, config);
88
+ createToolsRoute(app, `${prefix}/tools`, config);
89
+ createSkillsRoute(app, `${prefix}/skills`, config);
90
+ createWidgetsRoute(app, `${prefix}/widgets`, config);
91
+ createInteractionsRoute(app, `${prefix}/interactions`, config);
92
+ createTemplatesRoute(app, `${prefix}/templates`, config);
93
+ createContentTypesRoute(app, `${prefix}/types`, config);
94
+ createMcpRoute(app, `${prefix}/mcp`, config);
95
+ // Global error handler - returns ToolExecutionResponseError format
96
+ app.onError((err, c) => {
97
+ const ctx = c;
98
+ const status = err instanceof HTTPException ? err.status : 500;
99
+ const errorMessage = err instanceof HTTPException ? err.message : 'Internal Server Error';
100
+ if (!(err instanceof HTTPException)) {
101
+ console.error('Uncaught Error:', err);
102
+ }
103
+ return c.json({
104
+ tool_use_id: ctx.toolUseId || 'unknown',
105
+ status,
106
+ error: errorMessage,
107
+ data: ctx.toolName ? { tool_name: ctx.toolName } : undefined,
108
+ }, status);
109
+ });
110
+ // Not found handler - returns ToolExecutionResponseError format
111
+ app.notFound((c) => {
112
+ const ctx = c;
113
+ return c.json({
114
+ tool_use_id: ctx.toolUseId || 'unknown',
115
+ status: 404,
116
+ error: `Not found: ${c.req.method} ${c.req.path}`,
117
+ data: ctx.toolName ? { tool_name: ctx.toolName } : undefined,
118
+ }, 404);
119
+ });
120
+ return app;
121
+ }
122
+ // ================== Server Utilities ==================
123
+ /**
124
+ * Simple development server with static fimesale handling
125
+ *
126
+ * @deprecated Use tools server template
127
+ */
128
+ export function createDevServer(config) {
129
+ const app = createToolServer(config);
130
+ if (config.staticHandler) {
131
+ app.use('*', config.staticHandler);
132
+ }
133
+ return app;
134
+ }
135
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}