@vertesia/tools-sdk 1.0.0-dev.20260225.024852Z → 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 (59) hide show
  1. package/lib/cjs/RenderingTemplateCollection.js +43 -0
  2. package/lib/cjs/RenderingTemplateCollection.js.map +1 -0
  3. package/lib/cjs/auth.js +27 -0
  4. package/lib/cjs/auth.js.map +1 -1
  5. package/lib/cjs/index.js +1 -0
  6. package/lib/cjs/index.js.map +1 -1
  7. package/lib/cjs/server/app-package.js +11 -0
  8. package/lib/cjs/server/app-package.js.map +1 -1
  9. package/lib/cjs/server/site.js +7 -1
  10. package/lib/cjs/server/site.js.map +1 -1
  11. package/lib/cjs/server/templates.js +67 -0
  12. package/lib/cjs/server/templates.js.map +1 -0
  13. package/lib/cjs/server.js +4 -1
  14. package/lib/cjs/server.js.map +1 -1
  15. package/lib/cjs/site/templates.js +173 -2
  16. package/lib/cjs/site/templates.js.map +1 -1
  17. package/lib/esm/RenderingTemplateCollection.js +39 -0
  18. package/lib/esm/RenderingTemplateCollection.js.map +1 -0
  19. package/lib/esm/auth.js +27 -0
  20. package/lib/esm/auth.js.map +1 -1
  21. package/lib/esm/index.js +1 -0
  22. package/lib/esm/index.js.map +1 -1
  23. package/lib/esm/server/app-package.js +11 -0
  24. package/lib/esm/server/app-package.js.map +1 -1
  25. package/lib/esm/server/site.js +8 -2
  26. package/lib/esm/server/site.js.map +1 -1
  27. package/lib/esm/server/templates.js +64 -0
  28. package/lib/esm/server/templates.js.map +1 -0
  29. package/lib/esm/server.js +4 -1
  30. package/lib/esm/server.js.map +1 -1
  31. package/lib/esm/site/templates.js +171 -2
  32. package/lib/esm/site/templates.js.map +1 -1
  33. package/lib/types/RenderingTemplateCollection.d.ts +17 -0
  34. package/lib/types/RenderingTemplateCollection.d.ts.map +1 -0
  35. package/lib/types/auth.d.ts.map +1 -1
  36. package/lib/types/index.d.ts +1 -0
  37. package/lib/types/index.d.ts.map +1 -1
  38. package/lib/types/server/app-package.d.ts.map +1 -1
  39. package/lib/types/server/site.d.ts.map +1 -1
  40. package/lib/types/server/templates.d.ts +4 -0
  41. package/lib/types/server/templates.d.ts.map +1 -0
  42. package/lib/types/server/types.d.ts +5 -0
  43. package/lib/types/server/types.d.ts.map +1 -1
  44. package/lib/types/server.d.ts.map +1 -1
  45. package/lib/types/site/templates.d.ts +12 -1
  46. package/lib/types/site/templates.d.ts.map +1 -1
  47. package/lib/types/types.d.ts +2 -1
  48. package/lib/types/types.d.ts.map +1 -1
  49. package/package.json +4 -4
  50. package/src/RenderingTemplateCollection.ts +51 -0
  51. package/src/auth.ts +27 -0
  52. package/src/index.ts +1 -0
  53. package/src/server/app-package.ts +13 -0
  54. package/src/server/site.ts +9 -0
  55. package/src/server/templates.ts +80 -0
  56. package/src/server/types.ts +5 -0
  57. package/src/server.ts +4 -0
  58. package/src/site/templates.ts +179 -2
  59. package/src/types.ts +5 -1
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RenderingTemplateCollection = void 0;
4
+ const utils_js_1 = require("./utils.js");
5
+ class RenderingTemplateCollection {
6
+ templates;
7
+ name;
8
+ title;
9
+ icon;
10
+ description;
11
+ constructor({ name, title, icon, description, templates }) {
12
+ this.name = name;
13
+ this.title = title || (0, utils_js_1.kebabCaseToTitle)(name);
14
+ this.icon = icon;
15
+ this.description = description;
16
+ this.templates = templates;
17
+ }
18
+ getTemplateDefinitions() {
19
+ return this.templates;
20
+ }
21
+ getTemplate(name) {
22
+ return this.templates.find(t => t.name === name);
23
+ }
24
+ [Symbol.iterator]() {
25
+ let index = 0;
26
+ const templates = this.templates;
27
+ return {
28
+ next() {
29
+ if (index < templates.length) {
30
+ return { value: templates[index++], done: false };
31
+ }
32
+ else {
33
+ return { done: true, value: undefined };
34
+ }
35
+ }
36
+ };
37
+ }
38
+ map(callback) {
39
+ return this.templates.map(callback);
40
+ }
41
+ }
42
+ exports.RenderingTemplateCollection = RenderingTemplateCollection;
43
+ //# sourceMappingURL=RenderingTemplateCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderingTemplateCollection.js","sourceRoot":"","sources":["../../src/RenderingTemplateCollection.ts"],"names":[],"mappings":";;;AACA,yCAA8C;AAM9C,MAAa,2BAA2B;IACpC,SAAS,CAAgC;IACzC,IAAI,CAAS;IACb,KAAK,CAAU;IACf,IAAI,CAAU;IACd,WAAW,CAAU;IAErB,YAAY,EACR,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EACV;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAA,2BAAgB,EAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,sBAAsB;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACb,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,OAAO;YACH,IAAI;gBACA,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;oBAC3B,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACJ,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;gBAC5C,CAAC;YACL,CAAC;SACJ,CAAC;IACN,CAAC;IAED,GAAG,CAAI,QAAqE;QACxE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;CACJ;AA3CD,kEA2CC"}
package/lib/cjs/auth.js CHANGED
@@ -54,11 +54,14 @@ async function authorize(ctx, endpointOverrides, toolContext) {
54
54
  }
55
55
  try {
56
56
  const { payload } = await verifyToken(value);
57
+ assertAllowedOrg(payload);
57
58
  const session = new AuthSession(value, payload, endpointOverrides, toolContext);
58
59
  ctx.set("auth", session);
59
60
  return session;
60
61
  }
61
62
  catch (err) {
63
+ if (err instanceof http_exception_1.HTTPException)
64
+ throw err;
62
65
  throw new http_exception_1.HTTPException(401, {
63
66
  message: err.message,
64
67
  cause: err
@@ -101,4 +104,28 @@ exports.AuthSession = AuthSession;
101
104
  function isAllowedIssuer(iss) {
102
105
  return iss.endsWith(".vertesia.io") || iss.endsWith(".becomposable.com");
103
106
  }
107
+ /**
108
+ * If VERTESIA_ALLOWED_ORGS is set (comma-separated org IDs), restrict access
109
+ * to only those organizations. If not set, all authenticated orgs are allowed.
110
+ */
111
+ let _allowedOrgs;
112
+ function getAllowedOrgs() {
113
+ if (_allowedOrgs === undefined) {
114
+ const raw = process.env.VERTESIA_ALLOWED_ORGS;
115
+ _allowedOrgs = raw
116
+ ? new Set(raw.split(',').map(s => s.trim()).filter(Boolean))
117
+ : null;
118
+ }
119
+ return _allowedOrgs;
120
+ }
121
+ function assertAllowedOrg(payload) {
122
+ const allowed = getAllowedOrgs();
123
+ if (!allowed)
124
+ return;
125
+ if (!allowed.has(payload.account.id)) {
126
+ throw new http_exception_1.HTTPException(403, {
127
+ message: `Organization ${payload.account.name} is not authorized to access this server`,
128
+ });
129
+ }
130
+ }
104
131
  //# sourceMappingURL=auth.js.map
@@ -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/cjs/index.js CHANGED
@@ -19,6 +19,7 @@ var auth_js_1 = require("./auth.js");
19
19
  Object.defineProperty(exports, "authorize", { enumerable: true, get: function () { return auth_js_1.authorize; } });
20
20
  Object.defineProperty(exports, "AuthSession", { enumerable: true, get: function () { return auth_js_1.AuthSession; } });
21
21
  __exportStar(require("./ContentTypesCollection.js"), exports);
22
+ __exportStar(require("./RenderingTemplateCollection.js"), exports);
22
23
  var copy_assets_js_1 = require("./copy-assets.js");
23
24
  Object.defineProperty(exports, "copyRuntimeAssets", { enumerable: true, get: function () { return copy_assets_js_1.copyRuntimeAssets; } });
24
25
  __exportStar(require("./InteractionCollection.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAAmD;AAA1C,oGAAA,SAAS,OAAA;AAAE,sGAAA,WAAW,OAAA;AAC/B,8DAA4C;AAC5C,mDAAqD;AAA5C,mHAAA,iBAAiB,OAAA;AAC1B,6DAA2C;AAC3C,8CAA4B;AAC5B,oDAAkC;AAClC,sDAAoC;AACpC,uDAAqC;AACrC,sDAAoC;AACpC,oDAAkC;AAClC,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAAmD;AAA1C,oGAAA,SAAS,OAAA;AAAE,sGAAA,WAAW,OAAA;AAC/B,8DAA4C;AAC5C,mEAAiD;AACjD,mDAAqD;AAA5C,mHAAA,iBAAiB,OAAA;AAC1B,6DAA2C;AAC3C,8CAA4B;AAC5B,oDAAkC;AAClC,sDAAoC;AACpC,uDAAqC;AACrC,sDAAoC;AACpC,oDAAkC;AAClC,6CAA2B"}
@@ -52,6 +52,13 @@ const builders = {
52
52
  }
53
53
  pkg.types = allTypes;
54
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
+ },
55
62
  async widgets(pkg, config) {
56
63
  const { skills: skillCollections = [] } = config;
57
64
  const widgets = {};
@@ -93,6 +100,7 @@ async function handlePackageRequest(c, config) {
93
100
  await builders.tools(pkg, config, c);
94
101
  await builders.interactions(pkg, config, c);
95
102
  await builders.types(pkg, config, c);
103
+ await builders.templates(pkg, config, c);
96
104
  await builders.widgets(pkg, config, c);
97
105
  await builders.ui(pkg, config, c);
98
106
  await builders.settings(pkg, config, c);
@@ -107,6 +115,9 @@ async function handlePackageRequest(c, config) {
107
115
  if (scopes.has('types')) {
108
116
  await builders.types(pkg, config, c);
109
117
  }
118
+ if (scopes.has('templates')) {
119
+ await builders.templates(pkg, config, c);
120
+ }
110
121
  if (scopes.has('widgets')) {
111
122
  await builders.widgets(pkg, config, c);
112
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app-package.js","sourceRoot":"","sources":["../../../src/server/app-package.ts"],"names":[],"mappings":"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"}
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"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createSiteRoute = createSiteRoute;
4
4
  const templates_js_1 = require("../site/templates.js");
5
5
  function createSiteRoute(app, basePath, config) {
6
- const { tools = [], interactions = [], types = [], skills = [], } = config;
6
+ const { tools = [], interactions = [], types = [], skills = [], templates = [], } = config;
7
7
  // Index page
8
8
  app.get(`${basePath}/`, (c) => {
9
9
  return c.html((0, templates_js_1.indexPage)(config));
@@ -26,6 +26,12 @@ function createSiteRoute(app, basePath, config) {
26
26
  return c.html((0, templates_js_1.interactionCollectionPage)(coll));
27
27
  });
28
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
+ }
29
35
  // Content type collection pages
30
36
  for (const coll of types) {
31
37
  app.get(`${basePath}/types/${coll.name}`, (c) => {
@@ -1 +1 @@
1
- {"version":3,"file":"site.js","sourceRoot":"","sources":["../../../src/server/site.ts"],"names":[],"mappings":";;AAWA,0CAyCC;AAnDD,uDAM8B;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,GACd,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,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"}
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,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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"}
package/lib/cjs/server.js CHANGED
@@ -11,6 +11,7 @@ const mcp_js_1 = require("./server/mcp.js");
11
11
  const site_js_1 = require("./server/site.js");
12
12
  const skills_js_1 = require("./server/skills.js");
13
13
  const tools_js_1 = require("./server/tools.js");
14
+ const templates_js_1 = require("./server/templates.js");
14
15
  const widgets_js_1 = require("./server/widgets.js");
15
16
  const app_package_js_1 = require("./server/app-package.js");
16
17
  const content_types_js_1 = require("./server/content-types.js");
@@ -39,7 +40,7 @@ const ToolExecutionPayloadSchema = zod_1.z.object({
39
40
  * ```
40
41
  */
41
42
  function createToolServer(config) {
42
- const { prefix = '/api', tools = [], interactions = [], skills = [], mcpProviders = [], disableHtml = false, } = config;
43
+ const { prefix = '/api', tools = [], interactions = [], skills = [], templates = [], mcpProviders = [], disableHtml = false, } = config;
43
44
  const app = new hono_1.Hono();
44
45
  // Add CORS middleware globally
45
46
  app.use('*', (0, cors_1.cors)({ origin: '*', allowMethods: ['GET', 'POST', 'OPTIONS'] }));
@@ -82,6 +83,7 @@ function createToolServer(config) {
82
83
  endpoints: {
83
84
  tools: allToolEndpoints,
84
85
  interactions: interactions.map(col => `${prefix}/interactions/${col.name}`),
86
+ templates: templates.map(col => `${prefix}/templates/${col.name}`),
85
87
  mcp: mcpProviders.map(p => `${prefix}/mcp/${p.name}`),
86
88
  }
87
89
  });
@@ -91,6 +93,7 @@ function createToolServer(config) {
91
93
  (0, skills_js_1.createSkillsRoute)(app, `${prefix}/skills`, config);
92
94
  (0, widgets_js_1.createWidgetsRoute)(app, `${prefix}/widgets`, config);
93
95
  (0, interactions_js_1.createInteractionsRoute)(app, `${prefix}/interactions`, config);
96
+ (0, templates_js_1.createTemplatesRoute)(app, `${prefix}/templates`, config);
94
97
  (0, content_types_js_1.createContentTypesRoute)(app, `${prefix}/types`, config);
95
98
  (0, mcp_js_1.createMcpRoute)(app, `${prefix}/mcp`, config);
96
99
  // Global error handler - returns ToolExecutionResponseError format
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ exports.mcpProviderCard = mcpProviderCard;
6
6
  exports.toolDetailCard = toolDetailCard;
7
7
  exports.skillCard = skillCard;
8
8
  exports.skillDetailCard = skillDetailCard;
9
+ exports.templateDetailCard = templateDetailCard;
10
+ exports.templateCollectionPage = templateCollectionPage;
9
11
  exports.indexPage = indexPage;
10
12
  exports.toolCollectionPage = toolCollectionPage;
11
13
  exports.skillCollectionPage = skillCollectionPage;
@@ -24,6 +26,14 @@ const skillIcon = /*html*/ `
24
26
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
25
27
  <path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"/>
26
28
  </svg>`;
29
+ const templateIcon = /*html*/ `
30
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
31
+ <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
32
+ <polyline points="14 2 14 8 20 8"/>
33
+ <line x1="16" y1="13" x2="8" y2="13"/>
34
+ <line x1="16" y1="17" x2="8" y2="17"/>
35
+ <polyline points="10 9 9 9 8 9"/>
36
+ </svg>`;
27
37
  /**
28
38
  * Extended styles for detail pages
29
39
  */
@@ -246,6 +256,19 @@ ${styles_js_1.baseStyles}
246
256
  color: white;
247
257
  }
248
258
 
259
+ .template-type-badge {
260
+ background: #f59e0b;
261
+ color: white;
262
+ }
263
+
264
+ .template-type-badge.document {
265
+ background: #f59e0b;
266
+ }
267
+
268
+ .template-type-badge.presentation {
269
+ background: #8b5cf6;
270
+ }
271
+
249
272
  @media (prefers-color-scheme: dark) {
250
273
  .nav a {
251
274
  color: #9ca3af;
@@ -568,6 +591,135 @@ function skillDetailCard(skill, collection) {
568
591
  </div>
569
592
  </div>`;
570
593
  }
594
+ /**
595
+ * Render a template endpoint URL with copy button
596
+ */
597
+ function renderTemplateUrl(template, collectionName) {
598
+ const templatePath = `/api/templates/${collectionName}/${template.name}`;
599
+ return /*html*/ `<div class="script-item" style='display: flex; align-items: center; gap: 0.5rem; width:100%;justify-content: space-between;'><span class="script-name">${templatePath}</span>
600
+ <button class="copy-btn" onclick="navigator.clipboard.writeText(window.location.origin + '${templatePath}')" title="Copy endpoint URL">
601
+ ${copyIcon}
602
+ </button>
603
+ </div>`;
604
+ }
605
+ /**
606
+ * Render a tag list
607
+ */
608
+ function tagList(tags) {
609
+ if (!tags || tags.length === 0)
610
+ return '';
611
+ return /*html*/ `
612
+ <div class="detail-section">
613
+ <h4 class="detail-section-title">Tags</h4>
614
+ <div class="keyword-list">
615
+ ${tags.map(tag => `<span class="keyword-tag">${tag}</span>`).join('')}
616
+ </div>
617
+ </div>`;
618
+ }
619
+ /**
620
+ * Render an asset file list
621
+ */
622
+ function assetList(assets) {
623
+ if (assets.length === 0)
624
+ return '';
625
+ return /*html*/ `
626
+ <div class="detail-section">
627
+ <h4 class="detail-section-title">Assets</h4>
628
+ <div class="script-list">
629
+ ${assets.map(asset => /*html*/ `
630
+ <div class="script-item">
631
+ ${fileIcon}
632
+ <span class="script-name">${asset}</span>
633
+ </div>
634
+ `).join('')}
635
+ </div>
636
+ </div>`;
637
+ }
638
+ /**
639
+ * Render an instructions preview section
640
+ */
641
+ function instructionsPreview(instructions) {
642
+ return /*html*/ `
643
+ <div class="detail-section">
644
+ <h4 class="detail-section-title">Instructions Preview</h4>
645
+ <div class="instructions-preview">${escapeHtml(instructions.slice(0, 1000))}${instructions.length > 1000 ? '...' : ''}</div>
646
+ </div>`;
647
+ }
648
+ /**
649
+ * Render a detailed template card
650
+ */
651
+ function templateDetailCard(template, collection) {
652
+ return /*html*/ `
653
+ <div class="detail-card">
654
+ <div class="detail-header">
655
+ <div>
656
+ <h3 class="detail-title">${template.title || template.name}</h3>
657
+ <p class="detail-desc">${template.description || 'No description'}</p>
658
+ ${renderTemplateUrl(template, collection.name)}
659
+ </div>
660
+ <div class="detail-badges">
661
+ <span class="badge template-type-badge ${template.type}">${template.type}</span>
662
+ </div>
663
+ </div>
664
+ <div class="detail-body">
665
+ <div class="info-grid">
666
+ <div class="info-item">
667
+ <div class="info-label">Type</div>
668
+ <div class="info-value"><code>${template.type}</code></div>
669
+ </div>
670
+ <div class="info-item">
671
+ <div class="info-label">Assets</div>
672
+ <div class="info-value">${template.assets.length} file${template.assets.length !== 1 ? 's' : ''}</div>
673
+ </div>
674
+ </div>
675
+
676
+ ${tagList(template.tags)}
677
+ ${assetList(template.assets)}
678
+ ${instructionsPreview(template.instructions)}
679
+ </div>
680
+ </div>`;
681
+ }
682
+ /**
683
+ * Render a template collection detail page
684
+ */
685
+ function templateCollectionPage(collection) {
686
+ const templatesArray = Array.from(collection);
687
+ return /*html*/ `
688
+ <!DOCTYPE html>
689
+ <html lang="en">
690
+ <head>
691
+ <meta charset="UTF-8">
692
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
693
+ <title>${collection.title || collection.name} - Templates</title>
694
+ <style>${detailStyles}</style>
695
+ </head>
696
+ <body>
697
+ <nav class="nav">
698
+ <a href="/">${backArrow} Back to all collections</a>
699
+ </nav>
700
+
701
+ <div class="header">
702
+ <div class="header-icon">${collection.icon || templateIcon}</div>
703
+ <div>
704
+ <h1>${collection.title || collection.name}</h1>
705
+ <p style="color: #6b7280; margin: 0.25rem 0 0 0;">${collection.description || ''}</p>
706
+ <div class="endpoint-box">
707
+ <code>/api/templates/${collection.name}</code>
708
+ <button class="copy-btn" onclick="navigator.clipboard.writeText(window.location.origin + '/api/templates/${collection.name}')" title="Copy endpoint URL">
709
+ ${copyIcon}
710
+ </button>
711
+ </div>
712
+ </div>
713
+ </div>
714
+
715
+ <h2>${templatesArray.length} Template${templatesArray.length !== 1 ? 's' : ''}</h2>
716
+
717
+ ${templatesArray.length > 0 ?
718
+ templatesArray.map(template => templateDetailCard(template, collection)).join('') :
719
+ '<div class="empty-state">No templates in this collection</div>'}
720
+ </body>
721
+ </html>`;
722
+ }
571
723
  /**
572
724
  * Escape HTML for safe rendering
573
725
  */
@@ -637,9 +789,11 @@ function copyPluginUrl(btn) {
637
789
  * Note: The fourth argument is backward compatible:
638
790
  * - If a string is passed, it is treated as the title.
639
791
  * - If an array is passed, it is treated as MCP providers and the fifth argument (if any) is the title.
792
+ * @deprecated Static templates were replaced by a React site. Do not use them anymore.
793
+ * Will be removed.
640
794
  */
641
795
  function indexPage(config) {
642
- const { title = 'Tools Server', tools = [], interactions = [], skills = [], types = [], mcpProviders = [], hideUILinks = false, } = config;
796
+ const { title = 'Tools Server', tools = [], interactions = [], skills = [], templates = [], types = [], mcpProviders = [], hideUILinks = false, } = config;
643
797
  return /*html*/ `
644
798
  <!DOCTYPE html>
645
799
  <html lang="en">
@@ -667,6 +821,7 @@ function indexPage(config) {
667
821
  ${skills.length ? /*html*/ `<span><dot></dot> ${skills.length} skill collection${skills.length !== 1 ? 's' : ''}</span>` : ''}
668
822
  ${interactions.length ? /*html*/ `<span><dot></dot> ${interactions.length} interaction collection${interactions.length !== 1 ? 's' : ''}</span>` : ''}
669
823
  ${types.length ? /*html*/ `<span><dot></dot> ${types.length} content type collection${types.length !== 1 ? 's' : ''}</span>` : ''}
824
+ ${templates.length ? /*html*/ `<span><dot></dot> ${templates.length} template collection${templates.length !== 1 ? 's' : ''}</span>` : ''}
670
825
  ${mcpProviders.length ? /*html*/ `<span><dot></dot> ${mcpProviders.length} MCP provider${mcpProviders.length !== 1 ? 's' : ''}</span>` : ''}
671
826
  </div>
672
827
  ${hideUILinks ? '' : renderUILinks()}
@@ -694,7 +849,7 @@ function indexPage(config) {
694
849
  type="search"
695
850
  id="collection-search"
696
851
  class="search-input"
697
- placeholder="Search tools, skills, interactions, types..."
852
+ placeholder="Search tools, skills, interactions, types, templates..."
698
853
  aria-label="Search collections"
699
854
  autocomplete="off"
700
855
  />
@@ -763,6 +918,22 @@ function indexPage(config) {
763
918
  </section>
764
919
  ` : ''}
765
920
 
921
+ ${templates.length > 0 ? /*html*/ `
922
+ <section data-section="templates">
923
+ <hr>
924
+ <div class="section-header">
925
+ <h2>Rendering Template Collections</h2>
926
+ <p class="section-subtitle">Document and presentation templates for content generation.</p>
927
+ </div>
928
+ <div class="card-grid">
929
+ ${templates.map((t) => {
930
+ const count = t.getTemplateDefinitions().length;
931
+ return collectionCard(t, 'templates', `${count} template${count !== 1 ? 's' : ''}`);
932
+ }).join('')}
933
+ </div>
934
+ </section>
935
+ ` : ''}
936
+
766
937
  ${mcpProviders.length > 0 ? /*html*/ `
767
938
  <section data-section="mcp">
768
939
  <hr>