@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,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPackageRoute = createPackageRoute;
4
+ function getRequestPayload(c) {
5
+ return c.req.method === "POST" ? c.req.json() : Promise.resolve(undefined);
6
+ }
7
+ const builders = {
8
+ async tools(pkg, config, c) {
9
+ const { tools: toolCollections = [], skills: skillCollections = [] } = config;
10
+ const filterContext = await getRequestPayload(c);
11
+ // Aggregate all tools from all collections
12
+ const allTools = toolCollections.flatMap(collection => collection.getToolDefinitions(filterContext));
13
+ // same for skills
14
+ const allSkills = skillCollections.flatMap(collection => collection.getToolDefinitions(filterContext));
15
+ // Deduplicate by tool name (skills listed first take priority)
16
+ const seen = new Set();
17
+ const combined = allSkills.concat(allTools);
18
+ pkg.tools = combined.filter(tool => {
19
+ if (seen.has(tool.name)) {
20
+ console.warn(`[app-package] Duplicate tool name "${tool.name}", skipping`);
21
+ return false;
22
+ }
23
+ seen.add(tool.name);
24
+ return true;
25
+ });
26
+ },
27
+ async interactions(pkg, config) {
28
+ const allInteractions = [];
29
+ for (const coll of (config.interactions || [])) {
30
+ for (const inter of coll.interactions) {
31
+ allInteractions.push({
32
+ type: "app",
33
+ id: coll.name + ":" + inter.name,
34
+ name: inter.name,
35
+ title: inter.title || inter.name,
36
+ description: inter.description,
37
+ tags: inter.tags || [],
38
+ });
39
+ }
40
+ }
41
+ pkg.interactions = allInteractions;
42
+ },
43
+ async types(pkg, config) {
44
+ const allTypes = [];
45
+ for (const coll of config.types || []) {
46
+ for (const type of coll.types) {
47
+ allTypes.push({
48
+ ...type,
49
+ id: coll.name + ":" + type.name
50
+ });
51
+ }
52
+ }
53
+ pkg.types = allTypes;
54
+ },
55
+ async templates(pkg, config) {
56
+ const basePath = `${config.prefix || '/api'}/templates`;
57
+ pkg.templates = (config.templates || []).flatMap(coll => coll.templates.map(({ instructions: _, ...ref }) => ({
58
+ ...ref,
59
+ path: `${basePath}/${coll.name}/${ref.name}`,
60
+ })));
61
+ },
62
+ async widgets(pkg, config) {
63
+ const { skills: skillCollections = [] } = config;
64
+ const widgets = {};
65
+ for (const coll of skillCollections) {
66
+ for (const skill of coll.getSkillDefinitions()) {
67
+ if (skill.widgets && skill.widgets.length > 0) {
68
+ widgets[skill.name] = {
69
+ skill: skill.name,
70
+ collection: coll.name,
71
+ url: `/widgets/${skill.widgets[0]}.js`
72
+ };
73
+ }
74
+ }
75
+ }
76
+ pkg.widgets = widgets;
77
+ },
78
+ async ui(pkg, config, c) {
79
+ if (config.uiConfig) {
80
+ pkg.ui = { ...config.uiConfig };
81
+ const origin = new URL(c.req.url).origin;
82
+ pkg.ui.src = new URL(pkg.ui.src, origin).toString();
83
+ if (!pkg.ui.isolation) {
84
+ pkg.ui.isolation = "shadow";
85
+ }
86
+ }
87
+ },
88
+ async settings(pkg, config) {
89
+ if (config.settings) {
90
+ pkg.settings_schema = { ...config.settings };
91
+ }
92
+ },
93
+ };
94
+ async function handlePackageRequest(c, config) {
95
+ const scope = c.req.query('scope') || 'all';
96
+ const pkg = {};
97
+ const scopes = new Set(scope.split(','));
98
+ // TODO build pkg based on the query param scope
99
+ if (scopes.has('all')) {
100
+ await builders.tools(pkg, config, c);
101
+ await builders.interactions(pkg, config, c);
102
+ await builders.types(pkg, config, c);
103
+ await builders.templates(pkg, config, c);
104
+ await builders.widgets(pkg, config, c);
105
+ await builders.ui(pkg, config, c);
106
+ await builders.settings(pkg, config, c);
107
+ }
108
+ else {
109
+ if (scopes.has('tools')) {
110
+ await builders.tools(pkg, config, c);
111
+ }
112
+ if (scopes.has('interactions')) {
113
+ await builders.interactions(pkg, config, c);
114
+ }
115
+ if (scopes.has('types')) {
116
+ await builders.types(pkg, config, c);
117
+ }
118
+ if (scopes.has('templates')) {
119
+ await builders.templates(pkg, config, c);
120
+ }
121
+ if (scopes.has('widgets')) {
122
+ await builders.widgets(pkg, config, c);
123
+ }
124
+ if (scopes.has('ui')) {
125
+ await builders.ui(pkg, config, c);
126
+ }
127
+ if (scopes.has('settings')) {
128
+ builders.settings(pkg, config, c);
129
+ }
130
+ }
131
+ return c.json(pkg);
132
+ }
133
+ function createPackageRoute(app, basePath, config) {
134
+ app.get(basePath, (c) => {
135
+ return handlePackageRequest(c, config);
136
+ });
137
+ app.post(basePath, (c) => {
138
+ return handlePackageRequest(c, config);
139
+ });
140
+ }
141
+ //# sourceMappingURL=app-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-package.js","sourceRoot":"","sources":["../../../src/server/app-package.ts"],"names":[],"mappings":";;AAqJA,gDAUC;AA1JD,SAAS,iBAAiB,CAAI,CAAU;IACpC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,QAAQ,GAAsH;IAChI,KAAK,CAAC,KAAK,CAAC,GAAe,EAAE,MAAwB,EAAE,CAAU;QAC7D,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,EAAE,EAAE,MAAM,EAAE,gBAAgB,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;QAE9E,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAiB,CAAC,CAAC,CAAC;QAEjE,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAClD,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAC/C,CAAC;QAEF,kBAAkB;QAClB,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CACpD,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAC/C,CAAC;QAEF,+DAA+D;QAC/D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;gBAC3E,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,GAAe,EAAE,MAAwB;QACxD,MAAM,eAAe,GAA4B,EAAE,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpC,eAAe,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,KAAK;oBACX,EAAE,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI;oBAChC,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI;oBAChC,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;iBACzB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,GAAG,CAAC,YAAY,GAAG,eAAe,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,GAAe,EAAE,MAAwB;QACjD,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC;oBACV,GAAG,IAAI;oBACP,EAAE,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI;iBAClC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;IACzB,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,GAAe,EAAE,MAAwB;QACrD,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,YAAY,CAAC;QACxD,GAAG,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CACpD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YACjD,GAAG,GAAG;YACN,IAAI,EAAE,GAAG,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;SAC/C,CAAC,CAAC,CACN,CAAC;IACN,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,GAAe,EAAE,MAAwB;QACnD,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;QACjD,MAAM,OAAO,GAAkC,EAAE,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;YAClC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC7C,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;wBAClB,KAAK,EAAE,KAAK,CAAC,IAAI;wBACjB,UAAU,EAAE,IAAI,CAAC,IAAI;wBACrB,GAAG,EAAE,YAAY,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;qBACjB,CAAC;gBAC9B,CAAC;YACL,CAAC;QACL,CAAC;QACD,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC;IACD,KAAK,CAAC,EAAE,CAAC,GAAe,EAAE,MAAwB,EAAE,CAAU;QAC1D,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACzC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;gBACpB,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,QAAQ,CAAC;YAChC,CAAC;QACL,CAAC;IACL,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,GAAe,EAAE,MAAwB;QACpD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACjD,CAAC;IACL,CAAC;CACJ,CAAA;AAGD,KAAK,UAAU,oBAAoB,CAAC,CAAU,EAAE,MAAwB;IACpE,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;IAC5C,MAAM,GAAG,GAAe,EAAE,CAAC;IAE3B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAkB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC,CAAC;IAC/E,gDAAgD;IAChD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACJ,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7B,MAAM,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1B,MAAM,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAgB,kBAAkB,CAAC,GAAS,EAAE,QAAgB,EAAE,MAAwB;IAEpF,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAU,EAAE,EAAE;QAC7B,OAAO,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAU,EAAE,EAAE;QAC9B,OAAO,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AAEP,CAAC"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ // ================== Content Type Endpoints ==================
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createContentTypesRoute = createContentTypesRoute;
5
+ const hono_1 = require("hono");
6
+ const http_exception_1 = require("hono/http-exception");
7
+ const utils_js_1 = require("../utils.js");
8
+ function createContentTypesRoute(app, basePath, config) {
9
+ const { types = [] } = config;
10
+ // GET /api/types - Returns all interactions from all collections
11
+ app.get(basePath, (c) => {
12
+ const allTypes = [];
13
+ for (const coll of types) {
14
+ for (const type of coll.types) {
15
+ allTypes.push({ ...type, id: coll.name + ":" + (0, utils_js_1.toPathName)(type.name) });
16
+ }
17
+ }
18
+ return c.json({
19
+ title: 'All Content Types',
20
+ description: 'All available content types across all collections',
21
+ types: allTypes,
22
+ collections: types.map(i => ({
23
+ name: i.name,
24
+ title: i.title,
25
+ description: i.description,
26
+ })),
27
+ });
28
+ });
29
+ // Create interaction collection endpoints
30
+ for (const coll of types) {
31
+ app.route(`${basePath}/${coll.name}`, createContentTypeEndpoints(coll));
32
+ }
33
+ // GET /api/types/:name - Direct access to content type
34
+ app.get(`${basePath}/:name`, async (c) => {
35
+ const name = c.req.param('name');
36
+ const parts = name.split(':');
37
+ if (parts.length !== 2) {
38
+ throw new http_exception_1.HTTPException(400, {
39
+ message: "Invalid content type name. Expected format 'collection:type'"
40
+ });
41
+ }
42
+ const collName = parts[0];
43
+ const typeName = (0, utils_js_1.toPathName)(parts[1]);
44
+ const ctype = types.find(t => t.name === collName)?.getTypeByName(typeName);
45
+ if (ctype) {
46
+ return c.json({ ...ctype, id: collName + ":" + typeName });
47
+ }
48
+ throw new http_exception_1.HTTPException(404, {
49
+ message: "No content type found with name: " + name
50
+ });
51
+ });
52
+ }
53
+ function createContentTypeEndpoints(coll) {
54
+ const endpoint = new hono_1.Hono();
55
+ endpoint.get('/', (c) => {
56
+ return c.json(coll.types.map(t => ({ ...t, id: coll.name + ":" + (0, utils_js_1.toPathName)(t.name) })));
57
+ });
58
+ endpoint.get('/:name', (c) => {
59
+ const name = c.req.param('name');
60
+ const ctype = coll.types.find(t => (0, utils_js_1.toPathName)(t.name) === name);
61
+ if (!ctype) {
62
+ throw new http_exception_1.HTTPException(404, {
63
+ message: "No content type found with name: " + name
64
+ });
65
+ }
66
+ return c.json({
67
+ ...ctype,
68
+ id: coll.name + ":" + (0, utils_js_1.toPathName)(ctype.name)
69
+ });
70
+ });
71
+ return endpoint;
72
+ }
73
+ //# sourceMappingURL=content-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-types.js","sourceRoot":"","sources":["../../../src/server/content-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ // ================== Interaction Endpoints ==================
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createInteractionsRoute = createInteractionsRoute;
5
+ const hono_1 = require("hono");
6
+ const http_exception_1 = require("hono/http-exception");
7
+ const auth_js_1 = require("../auth.js");
8
+ function createInteractionsRoute(app, basePath, config) {
9
+ const { interactions = [] } = config;
10
+ // GET /api/interactions - Returns all interactions from all collections
11
+ app.get(basePath, (c) => {
12
+ const allInteractions = [];
13
+ for (const coll of interactions) {
14
+ for (const inter of coll.interactions) {
15
+ allInteractions.push({
16
+ type: "app",
17
+ id: coll.name + ":" + inter.name,
18
+ name: inter.name,
19
+ title: inter.title || inter.name,
20
+ description: inter.description,
21
+ tags: inter.tags || [],
22
+ });
23
+ }
24
+ }
25
+ return c.json({
26
+ title: 'All Interactions',
27
+ description: 'All available interactions across all collections',
28
+ interactions: allInteractions,
29
+ collections: interactions.map(i => ({
30
+ name: i.name,
31
+ title: i.title,
32
+ description: i.description,
33
+ })),
34
+ });
35
+ });
36
+ // Create interaction collection endpoints
37
+ for (const coll of interactions) {
38
+ app.route(`${basePath}/${coll.name}`, createInteractionEndpoints(coll));
39
+ }
40
+ // GET /api/interactions/:name - Direct access to interaction by name (searches all collections)
41
+ app.get(`${basePath}/:name`, async (c) => {
42
+ await (0, auth_js_1.authorize)(c);
43
+ const name = c.req.param('name');
44
+ const parts = name.split(':');
45
+ if (parts.length !== 2) {
46
+ throw new http_exception_1.HTTPException(400, {
47
+ message: "Invalid interaction name. Expected format 'collection:interaction'"
48
+ });
49
+ }
50
+ const collName = parts[0];
51
+ const interName = parts[1];
52
+ const inter = interactions.find(t => t.name === collName)?.getInteractionByName(interName);
53
+ if (inter) {
54
+ return c.json({ ...inter, id: collName + ":" + interName });
55
+ }
56
+ throw new http_exception_1.HTTPException(404, {
57
+ message: "No interaction found with name: " + name
58
+ });
59
+ });
60
+ }
61
+ function createInteractionEndpoints(coll) {
62
+ const endpoint = new hono_1.Hono();
63
+ endpoint.get('/', (c) => {
64
+ return c.json(coll.interactions.map(inter => ({
65
+ type: "app",
66
+ id: coll.name + ":" + inter.name,
67
+ name: inter.name,
68
+ title: inter.title || inter.name,
69
+ description: inter.description,
70
+ tags: inter.tags || [],
71
+ })));
72
+ });
73
+ endpoint.get('/:name', async (c) => {
74
+ await (0, auth_js_1.authorize)(c);
75
+ const name = c.req.param('name');
76
+ const inter = coll.getInteractionByName(name);
77
+ if (!inter) {
78
+ throw new http_exception_1.HTTPException(404, {
79
+ message: "No interaction found with name: " + name
80
+ });
81
+ }
82
+ return c.json({
83
+ ...inter,
84
+ id: coll.name + ":" + inter.name,
85
+ });
86
+ });
87
+ return endpoint;
88
+ }
89
+ //# sourceMappingURL=interactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactions.js","sourceRoot":"","sources":["../../../src/server/interactions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ // ================== MCP Endpoints ==================
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createMcpRoute = createMcpRoute;
5
+ const hono_1 = require("hono");
6
+ const http_exception_1 = require("hono/http-exception");
7
+ const auth_js_1 = require("../auth.js");
8
+ function createMcpRoute(app, basePath, config) {
9
+ const { mcpProviders = [] } = config;
10
+ // Create MCP provider endpoints
11
+ if (mcpProviders.length > 0) {
12
+ app.route(basePath, createMCPEndpoints(mcpProviders));
13
+ }
14
+ }
15
+ function createMCPEndpoints(providers) {
16
+ const endpoint = new hono_1.Hono();
17
+ for (const p of providers) {
18
+ endpoint.post(`/${p.name}`, async (c) => {
19
+ const session = await (0, auth_js_1.authorize)(c);
20
+ const config = await readJsonBody(c);
21
+ const info = await p.createMCPConnection(session, config);
22
+ return c.json(info);
23
+ });
24
+ endpoint.get(`/${p.name}`, (c) => c.json({
25
+ name: p.name,
26
+ description: p.description,
27
+ }));
28
+ }
29
+ return endpoint;
30
+ }
31
+ async function readJsonBody(ctx) {
32
+ try {
33
+ const text = await ctx.req.text();
34
+ const jsonContent = text?.trim() || '';
35
+ if (!jsonContent)
36
+ return {};
37
+ return JSON.parse(jsonContent);
38
+ }
39
+ catch (err) {
40
+ throw new http_exception_1.HTTPException(400, {
41
+ message: "Failed to parse JSON body: " + err.message
42
+ });
43
+ }
44
+ }
45
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/server/mcp.ts"],"names":[],"mappings":";AAAA,sDAAsD;;AAUtD,wCAOC;AAfD,+BAAqC;AACrC,wDAAoD;AACpD,wCAAuC;AAMvC,SAAgB,cAAc,CAAC,GAAS,EAAE,QAAgB,EAAE,MAAwB;IAChF,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IACrC,gCAAgC;IAChC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1D,CAAC;AAEL,CAAC;AAED,SAAS,kBAAkB,CAAC,SAA8B;IACtD,MAAM,QAAQ,GAAG,IAAI,WAAI,EAAE,CAAC;IAE5B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAS,EAAC,CAAC,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1D,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;SAC7B,CAAC,CAAC,CAAC;IACR,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAY;IACpC,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAwB,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,MAAM,IAAI,8BAAa,CAAC,GAAG,EAAE;YACzB,OAAO,EAAE,6BAA6B,GAAG,GAAG,CAAC,OAAO;SACvD,CAAC,CAAC;IACP,CAAC;AACL,CAAC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSiteRoute = createSiteRoute;
4
+ const templates_js_1 = require("../site/templates.js");
5
+ function createSiteRoute(app, basePath, config) {
6
+ const { tools = [], interactions = [], types = [], skills = [], templates = [], } = config;
7
+ // Index page
8
+ app.get(`${basePath}/`, (c) => {
9
+ return c.html((0, templates_js_1.indexPage)(config));
10
+ });
11
+ // Tool collection pages
12
+ for (const coll of tools) {
13
+ app.get(`${basePath}/tools/${coll.name}`, (c) => {
14
+ return c.html((0, templates_js_1.toolCollectionPage)(coll));
15
+ });
16
+ }
17
+ // Skill collection pages
18
+ for (const coll of skills) {
19
+ app.get(`${basePath}/skills/${coll.name}`, (c) => {
20
+ return c.html((0, templates_js_1.skillCollectionPage)(coll));
21
+ });
22
+ }
23
+ // Interaction collection pages
24
+ for (const coll of interactions) {
25
+ app.get(`${basePath}/interactions/${coll.name}`, (c) => {
26
+ return c.html((0, templates_js_1.interactionCollectionPage)(coll));
27
+ });
28
+ }
29
+ // Template collection pages
30
+ for (const coll of templates) {
31
+ app.get(`${basePath}/templates/${coll.name}`, (c) => {
32
+ return c.html((0, templates_js_1.templateCollectionPage)(coll));
33
+ });
34
+ }
35
+ // Content type collection pages
36
+ for (const coll of types) {
37
+ app.get(`${basePath}/types/${coll.name}`, (c) => {
38
+ return c.html((0, templates_js_1.contentTypeCollectionPage)(coll));
39
+ });
40
+ }
41
+ }
42
+ //# sourceMappingURL=site.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site.js","sourceRoot":"","sources":["../../../src/server/site.ts"],"names":[],"mappings":";;AAYA,0CAiDC;AA5DD,uDAO8B;AAI9B,SAAgB,eAAe,CAAC,GAAS,EAAE,QAAgB,EAAE,MAAwB;IACjF,MAAM,EACF,KAAK,GAAG,EAAE,EACV,YAAY,GAAG,EAAE,EACjB,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,EAAE,EACX,SAAS,GAAG,EAAE,GACjB,GAAG,MAAM,CAAC;IAEX,aAAa;IACb,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1B,OAAO,CAAC,CAAC,IAAI,CAAC,IAAA,wBAAS,EAAC,MAAM,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,UAAU,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAC5C,OAAO,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAkB,EAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC;IAED,yBAAyB;IACzB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QACxB,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,WAAW,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAC7C,OAAO,CAAC,CAAC,IAAI,CAAC,IAAA,kCAAmB,EAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC;IAED,+BAA+B;IAC/B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,iBAAiB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YACnD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAA,wCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4BAA4B;IAC5B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,cAAc,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAChD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAA,qCAAsB,EAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gCAAgC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,UAAU,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAC5C,OAAO,CAAC,CAAC,IAAI,CAAC,IAAA,wCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC;AAEL,CAAC"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ // ================== Skill Endpoints ==================
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createSkillsRoute = createSkillsRoute;
5
+ const hono_1 = require("hono");
6
+ const http_exception_1 = require("hono/http-exception");
7
+ const utils_js_1 = require("../utils.js");
8
+ function createSkillsRoute(app, basePath, config) {
9
+ const { skills = [] } = config;
10
+ // Build a map of skill name -> collection for routing
11
+ const skillToCollection = new Map();
12
+ for (const coll of skills) {
13
+ for (const skill of coll.getSkillDefinitions()) {
14
+ skillToCollection.set(skill.name, coll);
15
+ // Also map the learn_ prefixed name
16
+ skillToCollection.set(`learn_${skill.name}`, coll);
17
+ }
18
+ }
19
+ // GET /api/skills - Returns all skills from all collections
20
+ app.get(basePath, (c) => {
21
+ const url = new URL(c.req.url);
22
+ const allSkills = [];
23
+ for (const coll of skills) {
24
+ allSkills.push(...coll.getToolDefinitions());
25
+ }
26
+ return c.json({
27
+ src: `${url.origin}${url.pathname}`,
28
+ title: 'All Skills',
29
+ description: 'All available skills across all collections',
30
+ tools: allSkills,
31
+ collections: skills.map(s => ({
32
+ name: s.name,
33
+ title: s.title,
34
+ description: s.description,
35
+ })),
36
+ });
37
+ });
38
+ // POST /api/skills - Route to the correct collection based on tool_name
39
+ app.post(basePath, async (c) => {
40
+ const ctx = c;
41
+ // Payload is already parsed and validated by middleware
42
+ if (!ctx.payload) {
43
+ throw new http_exception_1.HTTPException(400, {
44
+ message: 'Invalid or missing skill execution payload. Expected { tool_use: { id, tool_name, tool_input? }, metadata? }'
45
+ });
46
+ }
47
+ const toolName = ctx.payload.tool_use.tool_name;
48
+ // Find the collection for this skill
49
+ const collection = skillToCollection.get(toolName);
50
+ if (!collection) {
51
+ // Extract skill name for better error message
52
+ const skillName = toolName.startsWith('learn_') ? toolName.slice(6) : toolName;
53
+ throw new http_exception_1.HTTPException(404, {
54
+ message: `Skill not found: ${skillName}. Available skills: ${Array.from(skillToCollection.keys()).filter(k => !k.startsWith('learn_')).join(', ')}`
55
+ });
56
+ }
57
+ // Delegate to the collection's execute method with pre-parsed payload
58
+ return collection.execute(c, ctx.payload);
59
+ });
60
+ // Create skill collection endpoints (exposed as tools)
61
+ for (const coll of skills) {
62
+ app.route(`${basePath}/${coll.name}`, createSkillEndpoints(coll));
63
+ }
64
+ }
65
+ function createSkillEndpoints(coll) {
66
+ const endpoint = new hono_1.Hono();
67
+ // List skills as tool definitions (tool collection format)
68
+ // This allows skills to be used exactly like tools
69
+ endpoint.get('/', (c) => {
70
+ const url = new URL(c.req.url);
71
+ return c.json({
72
+ src: `${url.origin}${url.pathname}`,
73
+ title: coll.title || coll.name,
74
+ description: coll.description || '',
75
+ tools: coll.getToolDefinitions()
76
+ });
77
+ });
78
+ // Get scripts for a specific skill
79
+ // Returns all scripts bundled with the skill
80
+ endpoint.get('/:name/scripts', (c) => {
81
+ const name = c.req.param('name');
82
+ const skillName = name.startsWith('learn_') ? name.slice(6) : name;
83
+ const skill = coll.getSkill(skillName);
84
+ if (!skill) {
85
+ throw new http_exception_1.HTTPException(404, {
86
+ message: `Skill not found: ${skillName}`
87
+ });
88
+ }
89
+ const url = new URL(c.req.url);
90
+ return c.json({
91
+ skill_name: skill.name,
92
+ scripts: skill.scripts ? skill.scripts.map(s => (0, utils_js_1.makeScriptUrl)(url.origin, s)) : []
93
+ });
94
+ });
95
+ // Get a specific skill by name
96
+ endpoint.get('/:name', (c) => {
97
+ const name = c.req.param('name');
98
+ // Handle both "learn_name" and "name" formats
99
+ const skillName = name.startsWith('learn_') ? name.slice(6) : name;
100
+ const skill = coll.getSkill(skillName);
101
+ if (!skill) {
102
+ throw new http_exception_1.HTTPException(404, {
103
+ message: `Skill not found: ${skillName}`
104
+ });
105
+ }
106
+ return c.json(skill);
107
+ });
108
+ // Execute skill (standard tool execution format)
109
+ endpoint.post('/', (c) => {
110
+ return coll.execute(c);
111
+ });
112
+ return endpoint;
113
+ }
114
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/server/skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ // ================== Template Endpoints ==================
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createTemplatesRoute = createTemplatesRoute;
5
+ const hono_1 = require("hono");
6
+ const http_exception_1 = require("hono/http-exception");
7
+ function toRef(basePath, collectionName, { instructions: _, ...ref }) {
8
+ return { ...ref, path: `${basePath}/${collectionName}/${ref.name}` };
9
+ }
10
+ function createTemplatesRoute(app, basePath, config) {
11
+ const { templates = [] } = config;
12
+ // GET /api/templates - Returns all templates from all collections (without instructions)
13
+ app.get(basePath, (c) => {
14
+ const allTemplates = templates.flatMap(coll => coll.templates.map(t => toRef(basePath, coll.name, t)));
15
+ return c.json({
16
+ title: 'All Templates',
17
+ description: 'All available templates across all collections',
18
+ templates: allTemplates,
19
+ collections: templates.map(t => ({
20
+ name: t.name,
21
+ title: t.title,
22
+ description: t.description,
23
+ })),
24
+ });
25
+ });
26
+ // Create template collection endpoints
27
+ for (const coll of templates) {
28
+ app.route(`${basePath}/${coll.name}`, createTemplateEndpoints(basePath, coll));
29
+ }
30
+ // GET /api/templates/:name - Direct access by "collection:name" id format
31
+ app.get(`${basePath}/:id`, async (c) => {
32
+ const id = c.req.param('id');
33
+ const parts = id.split(':');
34
+ if (parts.length !== 2) {
35
+ throw new http_exception_1.HTTPException(400, {
36
+ message: "Invalid template id. Expected format 'collection:name'"
37
+ });
38
+ }
39
+ const collName = parts[0];
40
+ const templateName = parts[1];
41
+ const template = templates.find(t => t.name === collName)?.getTemplate(templateName);
42
+ if (template) {
43
+ return c.json(template);
44
+ }
45
+ throw new http_exception_1.HTTPException(404, {
46
+ message: "No template found with id: " + id
47
+ });
48
+ });
49
+ }
50
+ function createTemplateEndpoints(basePath, coll) {
51
+ const endpoint = new hono_1.Hono();
52
+ endpoint.get('/', (c) => {
53
+ return c.json(coll.templates.map(t => toRef(basePath, coll.name, t)));
54
+ });
55
+ endpoint.get('/:name', (c) => {
56
+ const name = c.req.param('name');
57
+ const template = coll.templates.find(t => t.name === name);
58
+ if (!template) {
59
+ throw new http_exception_1.HTTPException(404, {
60
+ message: "No template found with name: " + name
61
+ });
62
+ }
63
+ return c.json(template);
64
+ });
65
+ return endpoint;
66
+ }
67
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/server/templates.ts"],"names":[],"mappings":"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"}