@mastra/server 1.1.0-alpha.0 → 1.1.0-alpha.1

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 (76) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/{chunk-S4SLHUJ7.cjs → chunk-4UNYZYBB.cjs} +4 -4
  3. package/dist/{chunk-S4SLHUJ7.cjs.map → chunk-4UNYZYBB.cjs.map} +1 -1
  4. package/dist/{chunk-RW66MHXI.js → chunk-5P2VGES5.js} +49 -23
  5. package/dist/chunk-5P2VGES5.js.map +1 -0
  6. package/dist/{chunk-EKFYZUPC.cjs → chunk-6DHJKQLP.cjs} +4 -4
  7. package/dist/{chunk-EKFYZUPC.cjs.map → chunk-6DHJKQLP.cjs.map} +1 -1
  8. package/dist/{chunk-3QUACCLU.js → chunk-7YCFHDWX.js} +3 -3
  9. package/dist/{chunk-3QUACCLU.js.map → chunk-7YCFHDWX.js.map} +1 -1
  10. package/dist/{chunk-JLFFAYTC.cjs → chunk-AO7LIZRK.cjs} +60 -34
  11. package/dist/chunk-AO7LIZRK.cjs.map +1 -0
  12. package/dist/{chunk-3OIJLD3O.js → chunk-BWINB344.js} +3 -3
  13. package/dist/{chunk-3OIJLD3O.js.map → chunk-BWINB344.js.map} +1 -1
  14. package/dist/{chunk-QXDNFBJQ.js → chunk-GDWZ2R7I.js} +4 -4
  15. package/dist/{chunk-QXDNFBJQ.js.map → chunk-GDWZ2R7I.js.map} +1 -1
  16. package/dist/{chunk-2HAVULC2.cjs → chunk-H4VFL22H.cjs} +6 -6
  17. package/dist/{chunk-2HAVULC2.cjs.map → chunk-H4VFL22H.cjs.map} +1 -1
  18. package/dist/{chunk-WHC6S3VY.cjs → chunk-I3CJUT6J.cjs} +4 -4
  19. package/dist/{chunk-WHC6S3VY.cjs.map → chunk-I3CJUT6J.cjs.map} +1 -1
  20. package/dist/{chunk-GUG6KRAJ.js → chunk-JUGGEWCR.js} +3 -3
  21. package/dist/{chunk-GUG6KRAJ.js.map → chunk-JUGGEWCR.js.map} +1 -1
  22. package/dist/{chunk-DD7LYNHB.js → chunk-KPHPNRVH.js} +117 -62
  23. package/dist/chunk-KPHPNRVH.js.map +1 -0
  24. package/dist/{chunk-TGDBGIDA.cjs → chunk-L6AKFVEX.cjs} +117 -62
  25. package/dist/chunk-L6AKFVEX.cjs.map +1 -0
  26. package/dist/{chunk-6KC345IN.cjs → chunk-QRPQWZZU.cjs} +41 -41
  27. package/dist/{chunk-6KC345IN.cjs.map → chunk-QRPQWZZU.cjs.map} +1 -1
  28. package/dist/{chunk-3AZY5AWI.js → chunk-QWOQET2T.js} +3 -3
  29. package/dist/{chunk-3AZY5AWI.js.map → chunk-QWOQET2T.js.map} +1 -1
  30. package/dist/{chunk-VNHOYZ56.cjs → chunk-VXPVROQJ.cjs} +5 -5
  31. package/dist/{chunk-VNHOYZ56.cjs.map → chunk-VXPVROQJ.cjs.map} +1 -1
  32. package/dist/{chunk-QOVLJFLX.cjs → chunk-WWVDNKEF.cjs} +6 -6
  33. package/dist/{chunk-QOVLJFLX.cjs.map → chunk-WWVDNKEF.cjs.map} +1 -1
  34. package/dist/{chunk-FQX5SQO7.js → chunk-XXBURIYX.js} +3 -3
  35. package/dist/{chunk-FQX5SQO7.js.map → chunk-XXBURIYX.js.map} +1 -1
  36. package/dist/{chunk-FCPLBTHB.js → chunk-ZFHZRI6C.js} +3 -3
  37. package/dist/{chunk-FCPLBTHB.js.map → chunk-ZFHZRI6C.js.map} +1 -1
  38. package/dist/docs/README.md +1 -1
  39. package/dist/docs/SKILL.md +1 -1
  40. package/dist/docs/SOURCE_MAP.json +1 -1
  41. package/dist/server/handlers/a2a.cjs +9 -9
  42. package/dist/server/handlers/a2a.js +1 -1
  43. package/dist/server/handlers/agent-versions.cjs +14 -14
  44. package/dist/server/handlers/agent-versions.d.ts +153 -175
  45. package/dist/server/handlers/agent-versions.d.ts.map +1 -1
  46. package/dist/server/handlers/agent-versions.js +1 -1
  47. package/dist/server/handlers/agents.cjs +31 -31
  48. package/dist/server/handlers/agents.d.ts +2 -2
  49. package/dist/server/handlers/agents.js +1 -1
  50. package/dist/server/handlers/scores.cjs +7 -7
  51. package/dist/server/handlers/scores.js +1 -1
  52. package/dist/server/handlers/stored-agents.cjs +6 -6
  53. package/dist/server/handlers/stored-agents.d.ts +32 -23
  54. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  55. package/dist/server/handlers/stored-agents.js +1 -1
  56. package/dist/server/handlers/tools.cjs +6 -6
  57. package/dist/server/handlers/tools.js +1 -1
  58. package/dist/server/handlers/voice.cjs +8 -8
  59. package/dist/server/handlers/voice.js +1 -1
  60. package/dist/server/handlers/workspace.cjs +19 -19
  61. package/dist/server/handlers/workspace.d.ts +8 -8
  62. package/dist/server/handlers/workspace.js +1 -1
  63. package/dist/server/handlers.cjs +10 -10
  64. package/dist/server/handlers.js +5 -5
  65. package/dist/server/schemas/agent-versions.d.ts +564 -1137
  66. package/dist/server/schemas/agent-versions.d.ts.map +1 -1
  67. package/dist/server/schemas/stored-agents.d.ts +234 -82
  68. package/dist/server/schemas/stored-agents.d.ts.map +1 -1
  69. package/dist/server/schemas/workspace.d.ts +34 -34
  70. package/dist/server/server-adapter/index.cjs +67 -67
  71. package/dist/server/server-adapter/index.js +8 -8
  72. package/package.json +4 -4
  73. package/dist/chunk-DD7LYNHB.js.map +0 -1
  74. package/dist/chunk-JLFFAYTC.cjs.map +0 -1
  75. package/dist/chunk-RW66MHXI.js.map +0 -1
  76. package/dist/chunk-TGDBGIDA.cjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkS4SLHUJ7_cjs = require('./chunk-S4SLHUJ7.cjs');
3
+ var chunk4UNYZYBB_cjs = require('./chunk-4UNYZYBB.cjs');
4
4
  var chunkSUKFO7UM_cjs = require('./chunk-SUKFO7UM.cjs');
5
5
  var chunk4LVJBXI2_cjs = require('./chunk-4LVJBXI2.cjs');
6
6
  var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
@@ -41,7 +41,7 @@ var LIST_WORKSPACES_ROUTE = chunk4LVJBXI2_cjs.createRoute({
41
41
  method: "GET",
42
42
  path: "/workspaces",
43
43
  responseType: "json",
44
- responseSchema: chunkS4SLHUJ7_cjs.listWorkspacesResponseSchema,
44
+ responseSchema: chunk4UNYZYBB_cjs.listWorkspacesResponseSchema,
45
45
  summary: "List all workspaces",
46
46
  description: "Returns all workspaces from both Mastra instance and agents",
47
47
  tags: ["Workspace"],
@@ -113,8 +113,8 @@ var GET_WORKSPACE_ROUTE = chunk4LVJBXI2_cjs.createRoute({
113
113
  method: "GET",
114
114
  path: "/workspaces/:workspaceId",
115
115
  responseType: "json",
116
- pathParamSchema: chunkS4SLHUJ7_cjs.workspaceIdPathParams,
117
- responseSchema: chunkS4SLHUJ7_cjs.workspaceInfoResponseSchema,
116
+ pathParamSchema: chunk4UNYZYBB_cjs.workspaceIdPathParams,
117
+ responseSchema: chunk4UNYZYBB_cjs.workspaceInfoResponseSchema,
118
118
  summary: "Get workspace info",
119
119
  description: "Returns information about a specific workspace and its capabilities",
120
120
  tags: ["Workspace"],
@@ -152,9 +152,9 @@ var WORKSPACE_FS_READ_ROUTE = chunk4LVJBXI2_cjs.createRoute({
152
152
  method: "GET",
153
153
  path: "/workspaces/:workspaceId/fs/read",
154
154
  responseType: "json",
155
- pathParamSchema: chunkS4SLHUJ7_cjs.workspaceIdPathParams,
156
- queryParamSchema: chunkS4SLHUJ7_cjs.fsReadQuerySchema,
157
- responseSchema: chunkS4SLHUJ7_cjs.fsReadResponseSchema,
155
+ pathParamSchema: chunk4UNYZYBB_cjs.workspaceIdPathParams,
156
+ queryParamSchema: chunk4UNYZYBB_cjs.fsReadQuerySchema,
157
+ responseSchema: chunk4UNYZYBB_cjs.fsReadResponseSchema,
158
158
  summary: "Read file content",
159
159
  description: "Returns the content of a file at the specified path",
160
160
  tags: ["Workspace"],
@@ -189,9 +189,9 @@ var WORKSPACE_FS_WRITE_ROUTE = chunk4LVJBXI2_cjs.createRoute({
189
189
  method: "POST",
190
190
  path: "/workspaces/:workspaceId/fs/write",
191
191
  responseType: "json",
192
- pathParamSchema: chunkS4SLHUJ7_cjs.workspaceIdPathParams,
193
- bodySchema: chunkS4SLHUJ7_cjs.fsWriteBodySchema,
194
- responseSchema: chunkS4SLHUJ7_cjs.fsWriteResponseSchema,
192
+ pathParamSchema: chunk4UNYZYBB_cjs.workspaceIdPathParams,
193
+ bodySchema: chunk4UNYZYBB_cjs.fsWriteBodySchema,
194
+ responseSchema: chunk4UNYZYBB_cjs.fsWriteResponseSchema,
195
195
  summary: "Write file content",
196
196
  description: "Writes content to a file at the specified path. Supports base64 encoding for binary files.",
197
197
  tags: ["Workspace"],
@@ -227,9 +227,9 @@ var WORKSPACE_FS_LIST_ROUTE = chunk4LVJBXI2_cjs.createRoute({
227
227
  method: "GET",
228
228
  path: "/workspaces/:workspaceId/fs/list",
229
229
  responseType: "json",
230
- pathParamSchema: chunkS4SLHUJ7_cjs.workspaceIdPathParams,
231
- queryParamSchema: chunkS4SLHUJ7_cjs.fsListQuerySchema,
232
- responseSchema: chunkS4SLHUJ7_cjs.fsListResponseSchema,
230
+ pathParamSchema: chunk4UNYZYBB_cjs.workspaceIdPathParams,
231
+ queryParamSchema: chunk4UNYZYBB_cjs.fsListQuerySchema,
232
+ responseSchema: chunk4UNYZYBB_cjs.fsListResponseSchema,
233
233
  summary: "List directory contents",
234
234
  description: "Returns a list of files and directories at the specified path",
235
235
  tags: ["Workspace"],
@@ -269,9 +269,9 @@ var WORKSPACE_FS_DELETE_ROUTE = chunk4LVJBXI2_cjs.createRoute({
269
269
  method: "DELETE",
270
270
  path: "/workspaces/:workspaceId/fs/delete",
271
271
  responseType: "json",
272
- pathParamSchema: chunkS4SLHUJ7_cjs.workspaceIdPathParams,
273
- queryParamSchema: chunkS4SLHUJ7_cjs.fsDeleteQuerySchema,
274
- responseSchema: chunkS4SLHUJ7_cjs.fsDeleteResponseSchema,
272
+ pathParamSchema: chunk4UNYZYBB_cjs.workspaceIdPathParams,
273
+ queryParamSchema: chunk4UNYZYBB_cjs.fsDeleteQuerySchema,
274
+ responseSchema: chunk4UNYZYBB_cjs.fsDeleteResponseSchema,
275
275
  summary: "Delete file or directory",
276
276
  description: "Deletes a file or directory at the specified path",
277
277
  tags: ["Workspace"],
@@ -313,9 +313,9 @@ var WORKSPACE_FS_MKDIR_ROUTE = chunk4LVJBXI2_cjs.createRoute({
313
313
  method: "POST",
314
314
  path: "/workspaces/:workspaceId/fs/mkdir",
315
315
  responseType: "json",
316
- pathParamSchema: chunkS4SLHUJ7_cjs.workspaceIdPathParams,
317
- bodySchema: chunkS4SLHUJ7_cjs.fsMkdirBodySchema,
318
- responseSchema: chunkS4SLHUJ7_cjs.fsMkdirResponseSchema,
316
+ pathParamSchema: chunk4UNYZYBB_cjs.workspaceIdPathParams,
317
+ bodySchema: chunk4UNYZYBB_cjs.fsMkdirBodySchema,
318
+ responseSchema: chunk4UNYZYBB_cjs.fsMkdirResponseSchema,
319
319
  summary: "Create directory",
320
320
  description: "Creates a directory at the specified path",
321
321
  tags: ["Workspace"],
@@ -347,9 +347,9 @@ var WORKSPACE_FS_STAT_ROUTE = chunk4LVJBXI2_cjs.createRoute({
347
347
  method: "GET",
348
348
  path: "/workspaces/:workspaceId/fs/stat",
349
349
  responseType: "json",
350
- pathParamSchema: chunkS4SLHUJ7_cjs.workspaceIdPathParams,
351
- queryParamSchema: chunkS4SLHUJ7_cjs.fsStatQuerySchema,
352
- responseSchema: chunkS4SLHUJ7_cjs.fsStatResponseSchema,
350
+ pathParamSchema: chunk4UNYZYBB_cjs.workspaceIdPathParams,
351
+ queryParamSchema: chunk4UNYZYBB_cjs.fsStatQuerySchema,
352
+ responseSchema: chunk4UNYZYBB_cjs.fsStatResponseSchema,
353
353
  summary: "Get file/directory info",
354
354
  description: "Returns metadata about a file or directory",
355
355
  tags: ["Workspace"],
@@ -385,9 +385,9 @@ var WORKSPACE_SEARCH_ROUTE = chunk4LVJBXI2_cjs.createRoute({
385
385
  method: "GET",
386
386
  path: "/workspaces/:workspaceId/search",
387
387
  responseType: "json",
388
- pathParamSchema: chunkS4SLHUJ7_cjs.workspaceIdPathParams,
389
- queryParamSchema: chunkS4SLHUJ7_cjs.searchQuerySchema,
390
- responseSchema: chunkS4SLHUJ7_cjs.searchResponseSchema,
388
+ pathParamSchema: chunk4UNYZYBB_cjs.workspaceIdPathParams,
389
+ queryParamSchema: chunk4UNYZYBB_cjs.searchQuerySchema,
390
+ responseSchema: chunk4UNYZYBB_cjs.searchResponseSchema,
391
391
  summary: "Search workspace content",
392
392
  description: "Searches across indexed workspace content using BM25, vector, or hybrid search",
393
393
  tags: ["Workspace"],
@@ -448,9 +448,9 @@ var WORKSPACE_INDEX_ROUTE = chunk4LVJBXI2_cjs.createRoute({
448
448
  method: "POST",
449
449
  path: "/workspaces/:workspaceId/index",
450
450
  responseType: "json",
451
- pathParamSchema: chunkS4SLHUJ7_cjs.workspaceIdPathParams,
452
- bodySchema: chunkS4SLHUJ7_cjs.indexBodySchema,
453
- responseSchema: chunkS4SLHUJ7_cjs.indexResponseSchema,
451
+ pathParamSchema: chunk4UNYZYBB_cjs.workspaceIdPathParams,
452
+ bodySchema: chunk4UNYZYBB_cjs.indexBodySchema,
453
+ responseSchema: chunk4UNYZYBB_cjs.indexResponseSchema,
454
454
  summary: "Index content for search",
455
455
  description: "Indexes content for later search operations",
456
456
  tags: ["Workspace"],
@@ -482,8 +482,8 @@ var WORKSPACE_LIST_SKILLS_ROUTE = chunk4LVJBXI2_cjs.createRoute({
482
482
  method: "GET",
483
483
  path: "/workspaces/:workspaceId/skills",
484
484
  responseType: "json",
485
- pathParamSchema: chunkS4SLHUJ7_cjs.workspaceIdPathParams,
486
- responseSchema: chunkS4SLHUJ7_cjs.listSkillsResponseSchema,
485
+ pathParamSchema: chunk4UNYZYBB_cjs.workspaceIdPathParams,
486
+ responseSchema: chunk4UNYZYBB_cjs.listSkillsResponseSchema,
487
487
  summary: "List all skills",
488
488
  description: "Returns a list of all discovered skills with their metadata",
489
489
  tags: ["Workspace", "Skills"],
@@ -515,8 +515,8 @@ var WORKSPACE_GET_SKILL_ROUTE = chunk4LVJBXI2_cjs.createRoute({
515
515
  method: "GET",
516
516
  path: "/workspaces/:workspaceId/skills/:skillName",
517
517
  responseType: "json",
518
- pathParamSchema: chunkS4SLHUJ7_cjs.skillNamePathParams,
519
- responseSchema: chunkS4SLHUJ7_cjs.getSkillResponseSchema,
518
+ pathParamSchema: chunk4UNYZYBB_cjs.skillNamePathParams,
519
+ responseSchema: chunk4UNYZYBB_cjs.getSkillResponseSchema,
520
520
  summary: "Get skill details",
521
521
  description: "Returns the full details of a specific skill including instructions and file lists",
522
522
  tags: ["Workspace", "Skills"],
@@ -557,8 +557,8 @@ var WORKSPACE_LIST_SKILL_REFERENCES_ROUTE = chunk4LVJBXI2_cjs.createRoute({
557
557
  method: "GET",
558
558
  path: "/workspaces/:workspaceId/skills/:skillName/references",
559
559
  responseType: "json",
560
- pathParamSchema: chunkS4SLHUJ7_cjs.skillNamePathParams,
561
- responseSchema: chunkS4SLHUJ7_cjs.listReferencesResponseSchema,
560
+ pathParamSchema: chunk4UNYZYBB_cjs.skillNamePathParams,
561
+ responseSchema: chunk4UNYZYBB_cjs.listReferencesResponseSchema,
562
562
  summary: "List skill references",
563
563
  description: "Returns a list of all reference file paths for a skill",
564
564
  tags: ["Workspace", "Skills"],
@@ -591,8 +591,8 @@ var WORKSPACE_GET_SKILL_REFERENCE_ROUTE = chunk4LVJBXI2_cjs.createRoute({
591
591
  method: "GET",
592
592
  path: "/workspaces/:workspaceId/skills/:skillName/references/:referencePath",
593
593
  responseType: "json",
594
- pathParamSchema: chunkS4SLHUJ7_cjs.skillReferencePathParams,
595
- responseSchema: chunkS4SLHUJ7_cjs.skillReferenceResponseSchema,
594
+ pathParamSchema: chunk4UNYZYBB_cjs.skillReferencePathParams,
595
+ responseSchema: chunk4UNYZYBB_cjs.skillReferenceResponseSchema,
596
596
  summary: "Get skill reference content",
597
597
  description: "Returns the content of a specific reference file from a skill",
598
598
  tags: ["Workspace", "Skills"],
@@ -626,9 +626,9 @@ var WORKSPACE_SEARCH_SKILLS_ROUTE = chunk4LVJBXI2_cjs.createRoute({
626
626
  method: "GET",
627
627
  path: "/workspaces/:workspaceId/skills/search",
628
628
  responseType: "json",
629
- pathParamSchema: chunkS4SLHUJ7_cjs.workspaceIdPathParams,
630
- queryParamSchema: chunkS4SLHUJ7_cjs.searchSkillsQuerySchema,
631
- responseSchema: chunkS4SLHUJ7_cjs.searchSkillsResponseSchema,
629
+ pathParamSchema: chunk4UNYZYBB_cjs.workspaceIdPathParams,
630
+ queryParamSchema: chunk4UNYZYBB_cjs.searchSkillsQuerySchema,
631
+ responseSchema: chunk4UNYZYBB_cjs.searchSkillsResponseSchema,
632
632
  summary: "Search skills",
633
633
  description: "Searches across all skills content using BM25 keyword search",
634
634
  tags: ["Workspace", "Skills"],
@@ -704,5 +704,5 @@ exports.WORKSPACE_SEARCH_ROUTE = WORKSPACE_SEARCH_ROUTE;
704
704
  exports.WORKSPACE_SEARCH_ROUTES = WORKSPACE_SEARCH_ROUTES;
705
705
  exports.WORKSPACE_SEARCH_SKILLS_ROUTE = WORKSPACE_SEARCH_SKILLS_ROUTE;
706
706
  exports.WORKSPACE_SKILLS_ROUTES = WORKSPACE_SKILLS_ROUTES;
707
- //# sourceMappingURL=chunk-6KC345IN.cjs.map
708
- //# sourceMappingURL=chunk-6KC345IN.cjs.map
707
+ //# sourceMappingURL=chunk-QRPQWZZU.cjs.map
708
+ //# sourceMappingURL=chunk-QRPQWZZU.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/workspace.ts"],"names":["coreFeatures","HTTPException","createRoute","listWorkspacesResponseSchema","handleError","workspaceIdPathParams","workspaceInfoResponseSchema","fsReadQuerySchema","fsReadResponseSchema","fsWriteBodySchema","fsWriteResponseSchema","fsListQuerySchema","fsListResponseSchema","fsDeleteQuerySchema","fsDeleteResponseSchema","fsMkdirBodySchema","fsMkdirResponseSchema","fsStatQuerySchema","fsStatResponseSchema","searchQuerySchema","searchResponseSchema","indexBodySchema","indexResponseSchema","listSkillsResponseSchema","skillNamePathParams","getSkillResponseSchema","listReferencesResponseSchema","skillReferencePathParams","skillReferenceResponseSchema","searchSkillsQuerySchema","searchSkillsResponseSchema"],"mappings":"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","file":"chunk-6KC345IN.cjs","sourcesContent":["/**\n * Workspace Handlers\n *\n * Unified handlers for workspace operations including:\n * - Filesystem operations (read, write, list, delete, mkdir, stat)\n * - Search operations (search, index)\n * - Skills operations (list, get, search, references)\n */\n\nimport { coreFeatures } from '@mastra/core/features';\nimport type { Workspace, WorkspaceSkills } from '@mastra/core/workspace';\nimport { HTTPException } from '../http-exception';\nimport {\n // Workspace info\n workspaceInfoResponseSchema,\n listWorkspacesResponseSchema,\n workspaceIdPathParams,\n // Filesystem schemas\n fsReadQuerySchema,\n fsListQuerySchema,\n fsStatQuerySchema,\n fsDeleteQuerySchema,\n fsWriteBodySchema,\n fsMkdirBodySchema,\n fsReadResponseSchema,\n fsWriteResponseSchema,\n fsListResponseSchema,\n fsDeleteResponseSchema,\n fsMkdirResponseSchema,\n fsStatResponseSchema,\n // Search schemas\n searchQuerySchema,\n searchResponseSchema,\n indexBodySchema,\n indexResponseSchema,\n // Skills schemas\n skillNamePathParams,\n skillReferencePathParams,\n searchSkillsQuerySchema,\n listSkillsResponseSchema,\n getSkillResponseSchema,\n skillReferenceResponseSchema,\n listReferencesResponseSchema,\n searchSkillsResponseSchema,\n} from '../schemas/workspace';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\n/**\n * Throws if workspace v1 is not supported by the current version of @mastra/core.\n */\nfunction requireWorkspaceV1Support(): void {\n if (!coreFeatures.has('workspaces-v1')) {\n throw new HTTPException(501, {\n message: 'Workspace v1 not supported by this version of @mastra/core. Please upgrade to a newer version.',\n });\n }\n}\n\n/**\n * Get a workspace by ID from Mastra or agents.\n * If no workspaceId is provided, returns the global workspace.\n */\nasync function getWorkspaceById(mastra: any, workspaceId?: string): Promise<Workspace | undefined> {\n requireWorkspaceV1Support();\n const globalWorkspace = mastra.getWorkspace?.();\n\n // If no workspaceId specified, return global workspace\n if (!workspaceId) {\n return globalWorkspace;\n }\n\n // Check if it's the global workspace\n if (globalWorkspace?.id === workspaceId) {\n return globalWorkspace;\n }\n\n // Search through agents for the workspace\n const agents = mastra.listAgents?.() ?? {};\n for (const agent of Object.values(agents)) {\n if ((agent as any).hasOwnWorkspace?.()) {\n const agentWorkspace = await (agent as any).getWorkspace?.();\n if (agentWorkspace?.id === workspaceId) {\n return agentWorkspace;\n }\n }\n }\n\n return undefined;\n}\n\n/**\n * Get skills from a specific workspace by ID.\n * If no workspaceId is provided, returns skills from the global workspace.\n * Note: getWorkspaceById already checks for workspace v1 support.\n */\nasync function getSkillsById(mastra: any, workspaceId?: string): Promise<WorkspaceSkills | undefined> {\n const workspace = await getWorkspaceById(mastra, workspaceId);\n return workspace?.skills;\n}\n\n// =============================================================================\n// List All Workspaces Route\n// =============================================================================\n\nexport const LIST_WORKSPACES_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces',\n responseType: 'json',\n responseSchema: listWorkspacesResponseSchema,\n summary: 'List all workspaces',\n description: 'Returns all workspaces from both Mastra instance and agents',\n tags: ['Workspace'],\n handler: async ({ mastra }) => {\n try {\n requireWorkspaceV1Support();\n\n const workspaces: Array<{\n id: string;\n name: string;\n status: string;\n source: 'mastra' | 'agent';\n agentId?: string;\n agentName?: string;\n capabilities: {\n hasFilesystem: boolean;\n hasSandbox: boolean;\n canBM25: boolean;\n canVector: boolean;\n canHybrid: boolean;\n hasSkills: boolean;\n };\n safety: {\n readOnly: boolean;\n };\n }> = [];\n\n const seenIds = new Set<string>();\n\n // Get workspace from Mastra instance\n const globalWorkspace = mastra.getWorkspace?.();\n if (globalWorkspace) {\n seenIds.add(globalWorkspace.id);\n workspaces.push({\n id: globalWorkspace.id,\n name: globalWorkspace.name,\n status: globalWorkspace.status,\n source: 'mastra',\n capabilities: {\n hasFilesystem: !!globalWorkspace.fs,\n hasSandbox: !!globalWorkspace.sandbox,\n canBM25: globalWorkspace.canBM25,\n canVector: globalWorkspace.canVector,\n canHybrid: globalWorkspace.canHybrid,\n hasSkills: !!globalWorkspace.skills,\n },\n safety: {\n readOnly: globalWorkspace.filesystem?.readOnly ?? false,\n },\n });\n }\n\n // Get workspaces from agents\n const agents = mastra.listAgents?.() ?? {};\n for (const [agentId, agent] of Object.entries(agents)) {\n if (agent.hasOwnWorkspace?.()) {\n try {\n const agentWorkspace = await agent.getWorkspace?.();\n if (agentWorkspace && !seenIds.has(agentWorkspace.id)) {\n seenIds.add(agentWorkspace.id);\n workspaces.push({\n id: agentWorkspace.id,\n name: agentWorkspace.name,\n status: agentWorkspace.status,\n source: 'agent',\n agentId,\n agentName: agent.name,\n capabilities: {\n hasFilesystem: !!agentWorkspace.fs,\n hasSandbox: !!agentWorkspace.sandbox,\n canBM25: agentWorkspace.canBM25,\n canVector: agentWorkspace.canVector,\n canHybrid: agentWorkspace.canHybrid,\n hasSkills: !!agentWorkspace.skills,\n },\n safety: {\n readOnly: agentWorkspace.filesystem?.readOnly ?? false,\n },\n });\n }\n } catch {\n // Skip agents with dynamic workspaces that fail without thread context\n continue;\n }\n }\n }\n\n return { workspaces };\n } catch (error) {\n return handleError(error, 'Error listing workspaces');\n }\n },\n});\n\n// =============================================================================\n// Get Workspace Route\n// =============================================================================\n\nexport const GET_WORKSPACE_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n responseSchema: workspaceInfoResponseSchema,\n summary: 'Get workspace info',\n description: 'Returns information about a specific workspace and its capabilities',\n tags: ['Workspace'],\n handler: async ({ mastra, workspaceId }) => {\n try {\n const workspace = await getWorkspaceById(mastra, workspaceId);\n\n if (!workspace) {\n return {\n isWorkspaceConfigured: false,\n };\n }\n\n return {\n isWorkspaceConfigured: true,\n id: workspace.id,\n name: workspace.name,\n status: workspace.status,\n capabilities: {\n hasFilesystem: !!workspace.fs,\n hasSandbox: !!workspace.sandbox,\n canBM25: workspace.canBM25,\n canVector: workspace.canVector,\n canHybrid: workspace.canHybrid,\n hasSkills: !!workspace.skills,\n },\n safety: {\n readOnly: workspace.filesystem?.readOnly ?? false,\n },\n };\n } catch (error) {\n return handleError(error, 'Error getting workspace info');\n }\n },\n});\n\n// =============================================================================\n// Filesystem Routes\n// =============================================================================\n\nexport const WORKSPACE_FS_READ_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/fs/read',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: fsReadQuerySchema,\n responseSchema: fsReadResponseSchema,\n summary: 'Read file content',\n description: 'Returns the content of a file at the specified path',\n tags: ['Workspace'],\n handler: async ({ mastra, path, encoding, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path) {\n throw new HTTPException(400, { message: 'Path is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n\n const decodedPath = decodeURIComponent(path);\n\n // Check if path exists\n if (!(await workspace.fs.exists(decodedPath))) {\n throw new HTTPException(404, { message: `Path \"${decodedPath}\" not found` });\n }\n\n // Read file content\n const content = await workspace.fs.readFile(decodedPath, {\n encoding: (encoding as BufferEncoding) || 'utf-8',\n });\n\n return {\n path: decodedPath,\n content: typeof content === 'string' ? content : content.toString('utf-8'),\n type: 'file' as const,\n };\n } catch (error) {\n return handleError(error, 'Error reading file');\n }\n },\n});\n\nexport const WORKSPACE_FS_WRITE_ROUTE = createRoute({\n method: 'POST',\n path: '/workspaces/:workspaceId/fs/write',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n bodySchema: fsWriteBodySchema,\n responseSchema: fsWriteResponseSchema,\n summary: 'Write file content',\n description: 'Writes content to a file at the specified path. Supports base64 encoding for binary files.',\n tags: ['Workspace'],\n handler: async ({ mastra, path, content, encoding, recursive, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path || content === undefined) {\n throw new HTTPException(400, { message: 'Path and content are required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n\n if (workspace.filesystem?.readOnly) {\n throw new HTTPException(403, { message: 'Workspace is in read-only mode' });\n }\n\n const decodedPath = decodeURIComponent(path);\n\n // Handle base64-encoded content for binary files\n let fileContent: string | Buffer = content;\n if (encoding === 'base64') {\n fileContent = Buffer.from(content, 'base64');\n }\n\n await workspace.fs.writeFile(decodedPath, fileContent, { recursive: recursive ?? true });\n\n return {\n success: true,\n path: decodedPath,\n };\n } catch (error) {\n return handleError(error, 'Error writing file');\n }\n },\n});\n\nexport const WORKSPACE_FS_LIST_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/fs/list',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: fsListQuerySchema,\n responseSchema: fsListResponseSchema,\n summary: 'List directory contents',\n description: 'Returns a list of files and directories at the specified path',\n tags: ['Workspace'],\n handler: async ({ mastra, path, recursive, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path) {\n throw new HTTPException(400, { message: 'Path is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n return {\n path: decodeURIComponent(path),\n entries: [],\n error: 'No workspace filesystem configured',\n };\n }\n\n const decodedPath = decodeURIComponent(path);\n\n // Check if path exists\n if (!(await workspace.fs.exists(decodedPath))) {\n throw new HTTPException(404, { message: `Path \"${decodedPath}\" not found` });\n }\n\n const entries = await workspace.fs.readdir(decodedPath, { recursive });\n\n return {\n path: decodedPath,\n entries: entries.map(entry => ({\n name: entry.name,\n type: entry.type,\n size: entry.size,\n })),\n };\n } catch (error) {\n return handleError(error, 'Error listing directory');\n }\n },\n});\n\nexport const WORKSPACE_FS_DELETE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/workspaces/:workspaceId/fs/delete',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: fsDeleteQuerySchema,\n responseSchema: fsDeleteResponseSchema,\n summary: 'Delete file or directory',\n description: 'Deletes a file or directory at the specified path',\n tags: ['Workspace'],\n handler: async ({ mastra, path, recursive, force, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path) {\n throw new HTTPException(400, { message: 'Path is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n\n if (workspace.filesystem?.readOnly) {\n throw new HTTPException(403, { message: 'Workspace is in read-only mode' });\n }\n\n const decodedPath = decodeURIComponent(path);\n\n // Check if path exists (unless force is true)\n const exists = await workspace.fs.exists(decodedPath);\n if (!exists && !force) {\n throw new HTTPException(404, { message: `Path \"${decodedPath}\" not found` });\n }\n\n if (exists) {\n // Try to delete as file first, then as directory\n try {\n await workspace.fs.deleteFile(decodedPath, { force });\n } catch {\n await workspace.fs.rmdir(decodedPath, { recursive, force });\n }\n }\n\n return {\n success: true,\n path: decodedPath,\n };\n } catch (error) {\n return handleError(error, 'Error deleting path');\n }\n },\n});\n\nexport const WORKSPACE_FS_MKDIR_ROUTE = createRoute({\n method: 'POST',\n path: '/workspaces/:workspaceId/fs/mkdir',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n bodySchema: fsMkdirBodySchema,\n responseSchema: fsMkdirResponseSchema,\n summary: 'Create directory',\n description: 'Creates a directory at the specified path',\n tags: ['Workspace'],\n handler: async ({ mastra, path, recursive, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path) {\n throw new HTTPException(400, { message: 'Path is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n\n if (workspace.filesystem?.readOnly) {\n throw new HTTPException(403, { message: 'Workspace is in read-only mode' });\n }\n\n const decodedPath = decodeURIComponent(path);\n\n await workspace.fs.mkdir(decodedPath, { recursive: recursive ?? true });\n\n return {\n success: true,\n path: decodedPath,\n };\n } catch (error) {\n return handleError(error, 'Error creating directory');\n }\n },\n});\n\nexport const WORKSPACE_FS_STAT_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/fs/stat',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: fsStatQuerySchema,\n responseSchema: fsStatResponseSchema,\n summary: 'Get file/directory info',\n description: 'Returns metadata about a file or directory',\n tags: ['Workspace'],\n handler: async ({ mastra, path, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path) {\n throw new HTTPException(400, { message: 'Path is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n\n const decodedPath = decodeURIComponent(path);\n\n // Check if path exists\n if (!(await workspace.fs.exists(decodedPath))) {\n throw new HTTPException(404, { message: `Path \"${decodedPath}\" not found` });\n }\n\n const stat = await workspace.fs.stat(decodedPath);\n\n return {\n path: stat.path,\n type: stat.type,\n size: stat.size,\n createdAt: stat.createdAt?.toISOString(),\n modifiedAt: stat.modifiedAt?.toISOString(),\n mimeType: stat.mimeType,\n };\n } catch (error) {\n return handleError(error, 'Error getting file info');\n }\n },\n});\n\n// =============================================================================\n// Search Routes\n// =============================================================================\n\nexport const WORKSPACE_SEARCH_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/search',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: searchQuerySchema,\n responseSchema: searchResponseSchema,\n summary: 'Search workspace content',\n description: 'Searches across indexed workspace content using BM25, vector, or hybrid search',\n tags: ['Workspace'],\n handler: async ({ mastra, query, topK, mode, minScore, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!query) {\n throw new HTTPException(400, { message: 'Search query is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace) {\n return {\n results: [],\n query,\n mode: mode || 'bm25',\n };\n }\n\n // Check search capabilities\n const canSearch = workspace.canBM25 || workspace.canVector;\n if (!canSearch) {\n return {\n results: [],\n query,\n mode: mode || 'bm25',\n };\n }\n\n // Determine search mode based on capabilities\n let searchMode = mode;\n if (!searchMode) {\n if (workspace.canHybrid) {\n searchMode = 'hybrid';\n } else if (workspace.canVector) {\n searchMode = 'vector';\n } else {\n searchMode = 'bm25';\n }\n }\n\n const results = await workspace.search(query, {\n topK: topK || 5,\n mode: searchMode,\n minScore,\n });\n\n return {\n results: results.map(r => ({\n id: r.id,\n content: r.content,\n score: r.score,\n lineRange: r.lineRange,\n scoreDetails: r.scoreDetails,\n })),\n query,\n mode: searchMode,\n };\n } catch (error) {\n return handleError(error, 'Error searching workspace');\n }\n },\n});\n\nexport const WORKSPACE_INDEX_ROUTE = createRoute({\n method: 'POST',\n path: '/workspaces/:workspaceId/index',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n bodySchema: indexBodySchema,\n responseSchema: indexResponseSchema,\n summary: 'Index content for search',\n description: 'Indexes content for later search operations',\n tags: ['Workspace'],\n handler: async ({ mastra, path, content, metadata, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path || content === undefined) {\n throw new HTTPException(400, { message: 'Path and content are required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace) {\n throw new HTTPException(404, { message: 'No workspace configured' });\n }\n\n const canSearch = workspace.canBM25 || workspace.canVector;\n if (!canSearch) {\n throw new HTTPException(400, { message: 'Workspace does not have search configured' });\n }\n\n await workspace.index(path, content, { metadata });\n\n return {\n success: true,\n path,\n };\n } catch (error) {\n return handleError(error, 'Error indexing content');\n }\n },\n});\n\n// =============================================================================\n// Skills Routes (under /workspaces/:workspaceId/skills)\n// =============================================================================\n\nexport const WORKSPACE_LIST_SKILLS_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/skills',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n responseSchema: listSkillsResponseSchema,\n summary: 'List all skills',\n description: 'Returns a list of all discovered skills with their metadata',\n tags: ['Workspace', 'Skills'],\n handler: async ({ mastra, workspaceId, requestContext }) => {\n try {\n requireWorkspaceV1Support();\n\n const skills = await getSkillsById(mastra, workspaceId);\n if (!skills) {\n return { skills: [], isSkillsConfigured: false };\n }\n\n // Refresh skills with request context (handles dynamic skill resolvers)\n await skills.maybeRefresh({ requestContext });\n\n const skillsList = await skills.list();\n\n return {\n skills: skillsList.map(skill => ({\n name: skill.name,\n description: skill.description,\n license: skill.license,\n compatibility: skill.compatibility,\n metadata: skill.metadata,\n })),\n isSkillsConfigured: true,\n };\n } catch (error) {\n return handleError(error, 'Error listing skills');\n }\n },\n});\n\nexport const WORKSPACE_GET_SKILL_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/skills/:skillName',\n responseType: 'json',\n pathParamSchema: skillNamePathParams,\n responseSchema: getSkillResponseSchema,\n summary: 'Get skill details',\n description: 'Returns the full details of a specific skill including instructions and file lists',\n tags: ['Workspace', 'Skills'],\n handler: async ({ mastra, skillName, workspaceId, requestContext }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!skillName) {\n throw new HTTPException(400, { message: 'Skill name is required' });\n }\n\n const skills = await getSkillsById(mastra, workspaceId);\n if (!skills) {\n throw new HTTPException(404, { message: 'No workspace with skills configured' });\n }\n\n // Refresh skills with request context (handles dynamic skill resolvers)\n await skills.maybeRefresh({ requestContext });\n\n const skill = await skills.get(skillName);\n if (!skill) {\n throw new HTTPException(404, { message: `Skill \"${skillName}\" not found` });\n }\n\n return {\n name: skill.name,\n description: skill.description,\n license: skill.license,\n compatibility: skill.compatibility,\n metadata: skill.metadata,\n path: skill.path,\n instructions: skill.instructions,\n source: skill.source,\n references: skill.references,\n scripts: skill.scripts,\n assets: skill.assets,\n };\n } catch (error) {\n return handleError(error, 'Error getting skill');\n }\n },\n});\n\nexport const WORKSPACE_LIST_SKILL_REFERENCES_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/skills/:skillName/references',\n responseType: 'json',\n pathParamSchema: skillNamePathParams,\n responseSchema: listReferencesResponseSchema,\n summary: 'List skill references',\n description: 'Returns a list of all reference file paths for a skill',\n tags: ['Workspace', 'Skills'],\n handler: async ({ mastra, skillName, workspaceId, requestContext }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!skillName) {\n throw new HTTPException(400, { message: 'Skill name is required' });\n }\n\n const skills = await getSkillsById(mastra, workspaceId);\n if (!skills) {\n throw new HTTPException(404, { message: 'No workspace with skills configured' });\n }\n\n // Refresh skills with request context (handles dynamic skill resolvers)\n await skills.maybeRefresh({ requestContext });\n\n const hasSkill = await skills.has(skillName);\n if (!hasSkill) {\n throw new HTTPException(404, { message: `Skill \"${skillName}\" not found` });\n }\n\n const references = await skills.listReferences(skillName);\n\n return {\n skillName,\n references,\n };\n } catch (error) {\n return handleError(error, 'Error listing skill references');\n }\n },\n});\n\nexport const WORKSPACE_GET_SKILL_REFERENCE_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/skills/:skillName/references/:referencePath',\n responseType: 'json',\n pathParamSchema: skillReferencePathParams,\n responseSchema: skillReferenceResponseSchema,\n summary: 'Get skill reference content',\n description: 'Returns the content of a specific reference file from a skill',\n tags: ['Workspace', 'Skills'],\n handler: async ({ mastra, skillName, referencePath, workspaceId, requestContext }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!skillName || !referencePath) {\n throw new HTTPException(400, { message: 'Skill name and reference path are required' });\n }\n\n const skills = await getSkillsById(mastra, workspaceId);\n if (!skills) {\n throw new HTTPException(404, { message: 'No workspace with skills configured' });\n }\n\n // Refresh skills with request context (handles dynamic skill resolvers)\n await skills.maybeRefresh({ requestContext });\n\n // Decode the reference path (it may be URL encoded)\n const decodedPath = decodeURIComponent(referencePath);\n\n const content = await skills.getReference(skillName, decodedPath);\n if (content === null) {\n throw new HTTPException(404, { message: `Reference \"${decodedPath}\" not found in skill \"${skillName}\"` });\n }\n\n return {\n skillName,\n referencePath: decodedPath,\n content,\n };\n } catch (error) {\n return handleError(error, 'Error getting skill reference');\n }\n },\n});\n\nexport const WORKSPACE_SEARCH_SKILLS_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/skills/search',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: searchSkillsQuerySchema,\n responseSchema: searchSkillsResponseSchema,\n summary: 'Search skills',\n description: 'Searches across all skills content using BM25 keyword search',\n tags: ['Workspace', 'Skills'],\n handler: async ({ mastra, query, topK, minScore, skillNames, includeReferences, workspaceId, requestContext }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!query) {\n throw new HTTPException(400, { message: 'Search query is required' });\n }\n\n const skills = await getSkillsById(mastra, workspaceId);\n if (!skills) {\n return {\n results: [],\n query,\n };\n }\n\n // Refresh skills with request context (handles dynamic skill resolvers)\n await skills.maybeRefresh({ requestContext });\n\n // Parse comma-separated skill names if provided\n const skillNamesList = skillNames ? skillNames.split(',').map((s: string) => s.trim()) : undefined;\n\n const results = await skills.search(query, {\n topK: topK || 5,\n minScore,\n skillNames: skillNamesList,\n includeReferences: includeReferences ?? true,\n });\n\n return {\n results: results.map(r => ({\n skillName: r.skillName,\n source: r.source,\n content: r.content,\n score: r.score,\n lineRange: r.lineRange,\n scoreDetails: r.scoreDetails,\n })),\n query,\n };\n } catch (error) {\n return handleError(error, 'Error searching skills');\n }\n },\n});\n\n// =============================================================================\n// Route Collections\n// =============================================================================\n\nexport const WORKSPACE_FS_ROUTES = [\n WORKSPACE_FS_READ_ROUTE,\n WORKSPACE_FS_WRITE_ROUTE,\n WORKSPACE_FS_LIST_ROUTE,\n WORKSPACE_FS_DELETE_ROUTE,\n WORKSPACE_FS_MKDIR_ROUTE,\n WORKSPACE_FS_STAT_ROUTE,\n];\n\nexport const WORKSPACE_SEARCH_ROUTES = [WORKSPACE_SEARCH_ROUTE, WORKSPACE_INDEX_ROUTE];\n\n// IMPORTANT: Search route must come before the parameterized routes\n// to avoid /api/workspace/skills/search being matched as /api/workspace/skills/:skillName\nexport const WORKSPACE_SKILLS_ROUTES = [\n WORKSPACE_SEARCH_SKILLS_ROUTE,\n WORKSPACE_LIST_SKILLS_ROUTE,\n WORKSPACE_GET_SKILL_ROUTE,\n WORKSPACE_LIST_SKILL_REFERENCES_ROUTE,\n WORKSPACE_GET_SKILL_REFERENCE_ROUTE,\n];\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/workspace.ts"],"names":["coreFeatures","HTTPException","createRoute","listWorkspacesResponseSchema","handleError","workspaceIdPathParams","workspaceInfoResponseSchema","fsReadQuerySchema","fsReadResponseSchema","fsWriteBodySchema","fsWriteResponseSchema","fsListQuerySchema","fsListResponseSchema","fsDeleteQuerySchema","fsDeleteResponseSchema","fsMkdirBodySchema","fsMkdirResponseSchema","fsStatQuerySchema","fsStatResponseSchema","searchQuerySchema","searchResponseSchema","indexBodySchema","indexResponseSchema","listSkillsResponseSchema","skillNamePathParams","getSkillResponseSchema","listReferencesResponseSchema","skillReferencePathParams","skillReferenceResponseSchema","searchSkillsQuerySchema","searchSkillsResponseSchema"],"mappings":";;;;;;;;AAuDA,SAAS,yBAAA,GAAkC;AACzC,EAAA,IAAI,CAACA,qBAAA,CAAa,GAAA,CAAI,eAAe,CAAA,EAAG;AACtC,IAAA,MAAM,IAAIC,gCAAc,GAAA,EAAK;AAAA,MAC3B,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AACF;AAMA,eAAe,gBAAA,CAAiB,QAAa,WAAA,EAAsD;AACjG,EAAA,yBAAA,EAA0B;AAC1B,EAAA,MAAM,eAAA,GAAkB,OAAO,YAAA,IAAe;AAG9C,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,eAAA;AAAA,EACT;AAGA,EAAA,IAAI,eAAA,EAAiB,OAAO,WAAA,EAAa;AACvC,IAAA,OAAO,eAAA;AAAA,EACT;AAGA,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,UAAA,IAAa,IAAK,EAAC;AACzC,EAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA,EAAG;AACzC,IAAA,IAAK,KAAA,CAAc,mBAAkB,EAAG;AACtC,MAAA,MAAM,cAAA,GAAiB,MAAO,KAAA,CAAc,YAAA,IAAe;AAC3D,MAAA,IAAI,cAAA,EAAgB,OAAO,WAAA,EAAa;AACtC,QAAA,OAAO,cAAA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAOA,eAAe,aAAA,CAAc,QAAa,WAAA,EAA4D;AACpG,EAAA,MAAM,SAAA,GAAY,MAAM,gBAAA,CAAiB,MAAA,EAAQ,WAAW,CAAA;AAC5D,EAAA,OAAO,SAAA,EAAW,MAAA;AACpB;AAMO,IAAM,wBAAwBC,6BAAA,CAAY;AAAA,EAC/C,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,aAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,cAAA,EAAgBC,8CAAA;AAAA,EAChB,OAAA,EAAS,qBAAA;AAAA,EACT,WAAA,EAAa,6DAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,MAAM,aAkBD,EAAC;AAEN,MAAA,MAAM,OAAA,uBAAc,GAAA,EAAY;AAGhC,MAAA,MAAM,eAAA,GAAkB,OAAO,YAAA,IAAe;AAC9C,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,OAAA,CAAQ,GAAA,CAAI,gBAAgB,EAAE,CAAA;AAC9B,QAAA,UAAA,CAAW,IAAA,CAAK;AAAA,UACd,IAAI,eAAA,CAAgB,EAAA;AAAA,UACpB,MAAM,eAAA,CAAgB,IAAA;AAAA,UACtB,QAAQ,eAAA,CAAgB,MAAA;AAAA,UACxB,MAAA,EAAQ,QAAA;AAAA,UACR,YAAA,EAAc;AAAA,YACZ,aAAA,EAAe,CAAC,CAAC,eAAA,CAAgB,EAAA;AAAA,YACjC,UAAA,EAAY,CAAC,CAAC,eAAA,CAAgB,OAAA;AAAA,YAC9B,SAAS,eAAA,CAAgB,OAAA;AAAA,YACzB,WAAW,eAAA,CAAgB,SAAA;AAAA,YAC3B,WAAW,eAAA,CAAgB,SAAA;AAAA,YAC3B,SAAA,EAAW,CAAC,CAAC,eAAA,CAAgB;AAAA,WAC/B;AAAA,UACA,MAAA,EAAQ;AAAA,YACN,QAAA,EAAU,eAAA,CAAgB,UAAA,EAAY,QAAA,IAAY;AAAA;AACpD,SACD,CAAA;AAAA,MACH;AAGA,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,UAAA,IAAa,IAAK,EAAC;AACzC,MAAA,KAAA,MAAW,CAAC,OAAA,EAAS,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AACrD,QAAA,IAAI,KAAA,CAAM,mBAAkB,EAAG;AAC7B,UAAA,IAAI;AACF,YAAA,MAAM,cAAA,GAAiB,MAAM,KAAA,CAAM,YAAA,IAAe;AAClD,YAAA,IAAI,kBAAkB,CAAC,OAAA,CAAQ,GAAA,CAAI,cAAA,CAAe,EAAE,CAAA,EAAG;AACrD,cAAA,OAAA,CAAQ,GAAA,CAAI,eAAe,EAAE,CAAA;AAC7B,cAAA,UAAA,CAAW,IAAA,CAAK;AAAA,gBACd,IAAI,cAAA,CAAe,EAAA;AAAA,gBACnB,MAAM,cAAA,CAAe,IAAA;AAAA,gBACrB,QAAQ,cAAA,CAAe,MAAA;AAAA,gBACvB,MAAA,EAAQ,OAAA;AAAA,gBACR,OAAA;AAAA,gBACA,WAAW,KAAA,CAAM,IAAA;AAAA,gBACjB,YAAA,EAAc;AAAA,kBACZ,aAAA,EAAe,CAAC,CAAC,cAAA,CAAe,EAAA;AAAA,kBAChC,UAAA,EAAY,CAAC,CAAC,cAAA,CAAe,OAAA;AAAA,kBAC7B,SAAS,cAAA,CAAe,OAAA;AAAA,kBACxB,WAAW,cAAA,CAAe,SAAA;AAAA,kBAC1B,WAAW,cAAA,CAAe,SAAA;AAAA,kBAC1B,SAAA,EAAW,CAAC,CAAC,cAAA,CAAe;AAAA,iBAC9B;AAAA,gBACA,MAAA,EAAQ;AAAA,kBACN,QAAA,EAAU,cAAA,CAAe,UAAA,EAAY,QAAA,IAAY;AAAA;AACnD,eACD,CAAA;AAAA,YACH;AAAA,UACF,CAAA,CAAA,MAAQ;AAEN,YAAA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,MAAA,OAAO,EAAE,UAAA,EAAW;AAAA,IACtB,SAAS,KAAA,EAAO;AACd,MAAA,OAAOC,6BAAA,CAAY,OAAO,0BAA0B,CAAA;AAAA,IACtD;AAAA,EACF;AACF,CAAC;AAMM,IAAM,sBAAsBF,6BAAA,CAAY;AAAA,EAC7C,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,0BAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBG,uCAAA;AAAA,EACjB,cAAA,EAAgBC,6CAAA;AAAA,EAChB,OAAA,EAAS,oBAAA;AAAA,EACT,WAAA,EAAa,qEAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,aAAY,KAAM;AAC1C,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,GAAY,MAAM,gBAAA,CAAiB,MAAA,EAAQ,WAAW,CAAA;AAE5D,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,OAAO;AAAA,UACL,qBAAA,EAAuB;AAAA,SACzB;AAAA,MACF;AAEA,MAAA,OAAO;AAAA,QACL,qBAAA,EAAuB,IAAA;AAAA,QACvB,IAAI,SAAA,CAAU,EAAA;AAAA,QACd,MAAM,SAAA,CAAU,IAAA;AAAA,QAChB,QAAQ,SAAA,CAAU,MAAA;AAAA,QAClB,YAAA,EAAc;AAAA,UACZ,aAAA,EAAe,CAAC,CAAC,SAAA,CAAU,EAAA;AAAA,UAC3B,UAAA,EAAY,CAAC,CAAC,SAAA,CAAU,OAAA;AAAA,UACxB,SAAS,SAAA,CAAU,OAAA;AAAA,UACnB,WAAW,SAAA,CAAU,SAAA;AAAA,UACrB,WAAW,SAAA,CAAU,SAAA;AAAA,UACrB,SAAA,EAAW,CAAC,CAAC,SAAA,CAAU;AAAA,SACzB;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,QAAA,EAAU,SAAA,CAAU,UAAA,EAAY,QAAA,IAAY;AAAA;AAC9C,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOF,6BAAA,CAAY,OAAO,8BAA8B,CAAA;AAAA,IAC1D;AAAA,EACF;AACF,CAAC;AAMM,IAAM,0BAA0BF,6BAAA,CAAY;AAAA,EACjD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,kCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBG,uCAAA;AAAA,EACjB,gBAAA,EAAkBE,mCAAA;AAAA,EAClB,cAAA,EAAgBC,sCAAA;AAAA,EAChB,OAAA,EAAS,mBAAA;AAAA,EACT,WAAA,EAAa,qDAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,SAAS,OAAO,EAAE,QAAQ,IAAA,EAAM,QAAA,EAAU,aAAY,KAAM;AAC1D,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAIP,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,SAAA,GAAY,MAAM,gBAAA,CAAiB,MAAA,EAAQ,WAAW,CAAA;AAC5D,MAAA,IAAI,CAAC,WAAW,EAAA,EAAI;AAClB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,sCAAsC,CAAA;AAAA,MAChF;AAEA,MAAA,MAAM,WAAA,GAAc,mBAAmB,IAAI,CAAA;AAG3C,MAAA,IAAI,CAAE,MAAM,SAAA,CAAU,EAAA,CAAG,MAAA,CAAO,WAAW,CAAA,EAAI;AAC7C,QAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,MAAA,EAAS,WAAW,eAAe,CAAA;AAAA,MAC7E;AAGA,MAAA,MAAM,OAAA,GAAU,MAAM,SAAA,CAAU,EAAA,CAAG,SAAS,WAAA,EAAa;AAAA,QACvD,UAAW,QAAA,IAA+B;AAAA,OAC3C,CAAA;AAED,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,WAAA;AAAA,QACN,SAAS,OAAO,OAAA,KAAY,WAAW,OAAA,GAAU,OAAA,CAAQ,SAAS,OAAO,CAAA;AAAA,QACzE,IAAA,EAAM;AAAA,OACR;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,oBAAoB,CAAA;AAAA,IAChD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,2BAA2BF,6BAAA,CAAY;AAAA,EAClD,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,mCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBG,uCAAA;AAAA,EACjB,UAAA,EAAYI,mCAAA;AAAA,EACZ,cAAA,EAAgBC,uCAAA;AAAA,EAChB,OAAA,EAAS,oBAAA;AAAA,EACT,WAAA,EAAa,4FAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,MAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,WAAA,EAAY,KAAM;AAC9E,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,IAAA,IAAQ,OAAA,KAAY,MAAA,EAAW;AAClC,QAAA,MAAM,IAAIT,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,iCAAiC,CAAA;AAAA,MAC3E;AAEA,MAAA,MAAM,SAAA,GAAY,MAAM,gBAAA,CAAiB,MAAA,EAAQ,WAAW,CAAA;AAC5D,MAAA,IAAI,CAAC,WAAW,EAAA,EAAI;AAClB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,sCAAsC,CAAA;AAAA,MAChF;AAEA,MAAA,IAAI,SAAA,CAAU,YAAY,QAAA,EAAU;AAClC,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,kCAAkC,CAAA;AAAA,MAC5E;AAEA,MAAA,MAAM,WAAA,GAAc,mBAAmB,IAAI,CAAA;AAG3C,MAAA,IAAI,WAAA,GAA+B,OAAA;AACnC,MAAA,IAAI,aAAa,QAAA,EAAU;AACzB,QAAA,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,QAAQ,CAAA;AAAA,MAC7C;AAEA,MAAA,MAAM,SAAA,CAAU,GAAG,SAAA,CAAU,WAAA,EAAa,aAAa,EAAE,SAAA,EAAW,SAAA,IAAa,IAAA,EAAM,CAAA;AAEvF,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,IAAA;AAAA,QACT,IAAA,EAAM;AAAA,OACR;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,oBAAoB,CAAA;AAAA,IAChD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,0BAA0BF,6BAAA,CAAY;AAAA,EACjD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,kCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBG,uCAAA;AAAA,EACjB,gBAAA,EAAkBM,mCAAA;AAAA,EAClB,cAAA,EAAgBC,sCAAA;AAAA,EAChB,OAAA,EAAS,yBAAA;AAAA,EACT,WAAA,EAAa,+DAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,SAAS,OAAO,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,aAAY,KAAM;AAC3D,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAIX,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,SAAA,GAAY,MAAM,gBAAA,CAAiB,MAAA,EAAQ,WAAW,CAAA;AAC5D,MAAA,IAAI,CAAC,WAAW,EAAA,EAAI;AAClB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,mBAAmB,IAAI,CAAA;AAAA,UAC7B,SAAS,EAAC;AAAA,UACV,KAAA,EAAO;AAAA,SACT;AAAA,MACF;AAEA,MAAA,MAAM,WAAA,GAAc,mBAAmB,IAAI,CAAA;AAG3C,MAAA,IAAI,CAAE,MAAM,SAAA,CAAU,EAAA,CAAG,MAAA,CAAO,WAAW,CAAA,EAAI;AAC7C,QAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,MAAA,EAAS,WAAW,eAAe,CAAA;AAAA,MAC7E;AAEA,MAAA,MAAM,OAAA,GAAU,MAAM,SAAA,CAAU,EAAA,CAAG,QAAQ,WAAA,EAAa,EAAE,WAAW,CAAA;AAErE,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,MAAU;AAAA,UAC7B,MAAM,KAAA,CAAM,IAAA;AAAA,UACZ,MAAM,KAAA,CAAM,IAAA;AAAA,UACZ,MAAM,KAAA,CAAM;AAAA,SACd,CAAE;AAAA,OACJ;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,yBAAyB,CAAA;AAAA,IACrD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,4BAA4BF,6BAAA,CAAY;AAAA,EACnD,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,oCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBG,uCAAA;AAAA,EACjB,gBAAA,EAAkBQ,qCAAA;AAAA,EAClB,cAAA,EAAgBC,wCAAA;AAAA,EAChB,OAAA,EAAS,0BAAA;AAAA,EACT,WAAA,EAAa,mDAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,MAAM,SAAA,EAAW,KAAA,EAAO,aAAY,KAAM;AAClE,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAIb,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,SAAA,GAAY,MAAM,gBAAA,CAAiB,MAAA,EAAQ,WAAW,CAAA;AAC5D,MAAA,IAAI,CAAC,WAAW,EAAA,EAAI;AAClB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,sCAAsC,CAAA;AAAA,MAChF;AAEA,MAAA,IAAI,SAAA,CAAU,YAAY,QAAA,EAAU;AAClC,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,kCAAkC,CAAA;AAAA,MAC5E;AAEA,MAAA,MAAM,WAAA,GAAc,mBAAmB,IAAI,CAAA;AAG3C,MAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAU,EAAA,CAAG,OAAO,WAAW,CAAA;AACpD,MAAA,IAAI,CAAC,MAAA,IAAU,CAAC,KAAA,EAAO;AACrB,QAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,MAAA,EAAS,WAAW,eAAe,CAAA;AAAA,MAC7E;AAEA,MAAA,IAAI,MAAA,EAAQ;AAEV,QAAA,IAAI;AACF,UAAA,MAAM,UAAU,EAAA,CAAG,UAAA,CAAW,WAAA,EAAa,EAAE,OAAO,CAAA;AAAA,QACtD,CAAA,CAAA,MAAQ;AACN,UAAA,MAAM,UAAU,EAAA,CAAG,KAAA,CAAM,aAAa,EAAE,SAAA,EAAW,OAAO,CAAA;AAAA,QAC5D;AAAA,MACF;AAEA,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,IAAA;AAAA,QACT,IAAA,EAAM;AAAA,OACR;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,qBAAqB,CAAA;AAAA,IACjD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,2BAA2BF,6BAAA,CAAY;AAAA,EAClD,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,mCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBG,uCAAA;AAAA,EACjB,UAAA,EAAYU,mCAAA;AAAA,EACZ,cAAA,EAAgBC,uCAAA;AAAA,EAChB,OAAA,EAAS,kBAAA;AAAA,EACT,WAAA,EAAa,2CAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,SAAS,OAAO,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,aAAY,KAAM;AAC3D,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAIf,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,SAAA,GAAY,MAAM,gBAAA,CAAiB,MAAA,EAAQ,WAAW,CAAA;AAC5D,MAAA,IAAI,CAAC,WAAW,EAAA,EAAI;AAClB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,sCAAsC,CAAA;AAAA,MAChF;AAEA,MAAA,IAAI,SAAA,CAAU,YAAY,QAAA,EAAU;AAClC,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,kCAAkC,CAAA;AAAA,MAC5E;AAEA,MAAA,MAAM,WAAA,GAAc,mBAAmB,IAAI,CAAA;AAE3C,MAAA,MAAM,SAAA,CAAU,GAAG,KAAA,CAAM,WAAA,EAAa,EAAE,SAAA,EAAW,SAAA,IAAa,MAAM,CAAA;AAEtE,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,IAAA;AAAA,QACT,IAAA,EAAM;AAAA,OACR;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,0BAA0B,CAAA;AAAA,IACtD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,0BAA0BF,6BAAA,CAAY;AAAA,EACjD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,kCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBG,uCAAA;AAAA,EACjB,gBAAA,EAAkBY,mCAAA;AAAA,EAClB,cAAA,EAAgBC,sCAAA;AAAA,EAChB,OAAA,EAAS,yBAAA;AAAA,EACT,WAAA,EAAa,4CAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,SAAS,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,aAAY,KAAM;AAChD,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAIjB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,SAAA,GAAY,MAAM,gBAAA,CAAiB,MAAA,EAAQ,WAAW,CAAA;AAC5D,MAAA,IAAI,CAAC,WAAW,EAAA,EAAI;AAClB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,sCAAsC,CAAA;AAAA,MAChF;AAEA,MAAA,MAAM,WAAA,GAAc,mBAAmB,IAAI,CAAA;AAG3C,MAAA,IAAI,CAAE,MAAM,SAAA,CAAU,EAAA,CAAG,MAAA,CAAO,WAAW,CAAA,EAAI;AAC7C,QAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,MAAA,EAAS,WAAW,eAAe,CAAA;AAAA,MAC7E;AAEA,MAAA,MAAM,IAAA,GAAO,MAAM,SAAA,CAAU,EAAA,CAAG,KAAK,WAAW,CAAA;AAEhD,MAAA,OAAO;AAAA,QACL,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,SAAA,EAAW,IAAA,CAAK,SAAA,EAAW,WAAA,EAAY;AAAA,QACvC,UAAA,EAAY,IAAA,CAAK,UAAA,EAAY,WAAA,EAAY;AAAA,QACzC,UAAU,IAAA,CAAK;AAAA,OACjB;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,yBAAyB,CAAA;AAAA,IACrD;AAAA,EACF;AACF,CAAC;AAMM,IAAM,yBAAyBF,6BAAA,CAAY;AAAA,EAChD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,iCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBG,uCAAA;AAAA,EACjB,gBAAA,EAAkBc,mCAAA;AAAA,EAClB,cAAA,EAAgBC,sCAAA;AAAA,EAChB,OAAA,EAAS,0BAAA;AAAA,EACT,WAAA,EAAa,gFAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,WAAA,EAAY,KAAM;AACvE,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,MAAM,IAAInB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4BAA4B,CAAA;AAAA,MACtE;AAEA,MAAA,MAAM,SAAA,GAAY,MAAM,gBAAA,CAAiB,MAAA,EAAQ,WAAW,CAAA;AAC5D,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,OAAO;AAAA,UACL,SAAS,EAAC;AAAA,UACV,KAAA;AAAA,UACA,MAAM,IAAA,IAAQ;AAAA,SAChB;AAAA,MACF;AAGA,MAAA,MAAM,SAAA,GAAY,SAAA,CAAU,OAAA,IAAW,SAAA,CAAU,SAAA;AACjD,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,OAAO;AAAA,UACL,SAAS,EAAC;AAAA,UACV,KAAA;AAAA,UACA,MAAM,IAAA,IAAQ;AAAA,SAChB;AAAA,MACF;AAGA,MAAA,IAAI,UAAA,GAAa,IAAA;AACjB,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,IAAI,UAAU,SAAA,EAAW;AACvB,UAAA,UAAA,GAAa,QAAA;AAAA,QACf,CAAA,MAAA,IAAW,UAAU,SAAA,EAAW;AAC9B,UAAA,UAAA,GAAa,QAAA;AAAA,QACf,CAAA,MAAO;AACL,UAAA,UAAA,GAAa,MAAA;AAAA,QACf;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,MAAM,SAAA,CAAU,MAAA,CAAO,KAAA,EAAO;AAAA,QAC5C,MAAM,IAAA,IAAQ,CAAA;AAAA,QACd,IAAA,EAAM,UAAA;AAAA,QACN;AAAA,OACD,CAAA;AAED,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAA,MAAM;AAAA,UACzB,IAAI,CAAA,CAAE,EAAA;AAAA,UACN,SAAS,CAAA,CAAE,OAAA;AAAA,UACX,OAAO,CAAA,CAAE,KAAA;AAAA,UACT,WAAW,CAAA,CAAE,SAAA;AAAA,UACb,cAAc,CAAA,CAAE;AAAA,SAClB,CAAE,CAAA;AAAA,QACF,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,OACR;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,2BAA2B,CAAA;AAAA,IACvD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,wBAAwBF,6BAAA,CAAY;AAAA,EAC/C,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,gCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBG,uCAAA;AAAA,EACjB,UAAA,EAAYgB,iCAAA;AAAA,EACZ,cAAA,EAAgBC,qCAAA;AAAA,EAChB,OAAA,EAAS,0BAAA;AAAA,EACT,WAAA,EAAa,6CAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,EAClB,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,MAAM,OAAA,EAAS,QAAA,EAAU,aAAY,KAAM;AACnE,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,IAAA,IAAQ,OAAA,KAAY,MAAA,EAAW;AAClC,QAAA,MAAM,IAAIrB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,iCAAiC,CAAA;AAAA,MAC3E;AAEA,MAAA,MAAM,SAAA,GAAY,MAAM,gBAAA,CAAiB,MAAA,EAAQ,WAAW,CAAA;AAC5D,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,2BAA2B,CAAA;AAAA,MACrE;AAEA,MAAA,MAAM,SAAA,GAAY,SAAA,CAAU,OAAA,IAAW,SAAA,CAAU,SAAA;AACjD,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6CAA6C,CAAA;AAAA,MACvF;AAEA,MAAA,MAAM,UAAU,KAAA,CAAM,IAAA,EAAM,OAAA,EAAS,EAAE,UAAU,CAAA;AAEjD,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,IAAA;AAAA,QACT;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,wBAAwB,CAAA;AAAA,IACpD;AAAA,EACF;AACF,CAAC;AAMM,IAAM,8BAA8BF,6BAAA,CAAY;AAAA,EACrD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,iCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBG,uCAAA;AAAA,EACjB,cAAA,EAAgBkB,0CAAA;AAAA,EAChB,OAAA,EAAS,iBAAA;AAAA,EACT,WAAA,EAAa,6DAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAA,EAAa,QAAQ,CAAA;AAAA,EAC5B,SAAS,OAAO,EAAE,MAAA,EAAQ,WAAA,EAAa,gBAAe,KAAM;AAC1D,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,MAAM,MAAA,GAAS,MAAM,aAAA,CAAc,MAAA,EAAQ,WAAW,CAAA;AACtD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,OAAO,EAAE,MAAA,EAAQ,EAAC,EAAG,oBAAoB,KAAA,EAAM;AAAA,MACjD;AAGA,MAAA,MAAM,MAAA,CAAO,YAAA,CAAa,EAAE,cAAA,EAAgB,CAAA;AAE5C,MAAA,MAAM,UAAA,GAAa,MAAM,MAAA,CAAO,IAAA,EAAK;AAErC,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,UAAA,CAAW,GAAA,CAAI,CAAA,KAAA,MAAU;AAAA,UAC/B,MAAM,KAAA,CAAM,IAAA;AAAA,UACZ,aAAa,KAAA,CAAM,WAAA;AAAA,UACnB,SAAS,KAAA,CAAM,OAAA;AAAA,UACf,eAAe,KAAA,CAAM,aAAA;AAAA,UACrB,UAAU,KAAA,CAAM;AAAA,SAClB,CAAE,CAAA;AAAA,QACF,kBAAA,EAAoB;AAAA,OACtB;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOnB,6BAAA,CAAY,OAAO,sBAAsB,CAAA;AAAA,IAClD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,4BAA4BF,6BAAA,CAAY;AAAA,EACnD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,4CAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBsB,qCAAA;AAAA,EACjB,cAAA,EAAgBC,wCAAA;AAAA,EAChB,OAAA,EAAS,mBAAA;AAAA,EACT,WAAA,EAAa,oFAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAA,EAAa,QAAQ,CAAA;AAAA,EAC5B,SAAS,OAAO,EAAE,QAAQ,SAAA,EAAW,WAAA,EAAa,gBAAe,KAAM;AACrE,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,MAAM,IAAIxB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,0BAA0B,CAAA;AAAA,MACpE;AAEA,MAAA,MAAM,MAAA,GAAS,MAAM,aAAA,CAAc,MAAA,EAAQ,WAAW,CAAA;AACtD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,uCAAuC,CAAA;AAAA,MACjF;AAGA,MAAA,MAAM,MAAA,CAAO,YAAA,CAAa,EAAE,cAAA,EAAgB,CAAA;AAE5C,MAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,GAAA,CAAI,SAAS,CAAA;AACxC,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,OAAA,EAAU,SAAS,eAAe,CAAA;AAAA,MAC5E;AAEA,MAAA,OAAO;AAAA,QACL,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,aAAa,KAAA,CAAM,WAAA;AAAA,QACnB,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,eAAe,KAAA,CAAM,aAAA;AAAA,QACrB,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,cAAc,KAAA,CAAM,YAAA;AAAA,QACpB,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,QAAQ,KAAA,CAAM;AAAA,OAChB;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,qBAAqB,CAAA;AAAA,IACjD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,wCAAwCF,6BAAA,CAAY;AAAA,EAC/D,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,uDAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBsB,qCAAA;AAAA,EACjB,cAAA,EAAgBE,8CAAA;AAAA,EAChB,OAAA,EAAS,uBAAA;AAAA,EACT,WAAA,EAAa,wDAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAA,EAAa,QAAQ,CAAA;AAAA,EAC5B,SAAS,OAAO,EAAE,QAAQ,SAAA,EAAW,WAAA,EAAa,gBAAe,KAAM;AACrE,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,MAAM,IAAIzB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,0BAA0B,CAAA;AAAA,MACpE;AAEA,MAAA,MAAM,MAAA,GAAS,MAAM,aAAA,CAAc,MAAA,EAAQ,WAAW,CAAA;AACtD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,uCAAuC,CAAA;AAAA,MACjF;AAGA,MAAA,MAAM,MAAA,CAAO,YAAA,CAAa,EAAE,cAAA,EAAgB,CAAA;AAE5C,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,GAAA,CAAI,SAAS,CAAA;AAC3C,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,OAAA,EAAU,SAAS,eAAe,CAAA;AAAA,MAC5E;AAEA,MAAA,MAAM,UAAA,GAAa,MAAM,MAAA,CAAO,cAAA,CAAe,SAAS,CAAA;AAExD,MAAA,OAAO;AAAA,QACL,SAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,gCAAgC,CAAA;AAAA,IAC5D;AAAA,EACF;AACF,CAAC;AAEM,IAAM,sCAAsCF,6BAAA,CAAY;AAAA,EAC7D,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,sEAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiByB,0CAAA;AAAA,EACjB,cAAA,EAAgBC,8CAAA;AAAA,EAChB,OAAA,EAAS,6BAAA;AAAA,EACT,WAAA,EAAa,+DAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAA,EAAa,QAAQ,CAAA;AAAA,EAC5B,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,WAAW,aAAA,EAAe,WAAA,EAAa,gBAAe,KAAM;AACpF,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,SAAA,IAAa,CAAC,aAAA,EAAe;AAChC,QAAA,MAAM,IAAI3B,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,8CAA8C,CAAA;AAAA,MACxF;AAEA,MAAA,MAAM,MAAA,GAAS,MAAM,aAAA,CAAc,MAAA,EAAQ,WAAW,CAAA;AACtD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,uCAAuC,CAAA;AAAA,MACjF;AAGA,MAAA,MAAM,MAAA,CAAO,YAAA,CAAa,EAAE,cAAA,EAAgB,CAAA;AAG5C,MAAA,MAAM,WAAA,GAAc,mBAAmB,aAAa,CAAA;AAEpD,MAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,YAAA,CAAa,WAAW,WAAW,CAAA;AAChE,MAAA,IAAI,YAAY,IAAA,EAAM;AACpB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,cAAc,WAAW,CAAA,sBAAA,EAAyB,SAAS,CAAA,CAAA,CAAA,EAAK,CAAA;AAAA,MAC1G;AAEA,MAAA,OAAO;AAAA,QACL,SAAA;AAAA,QACA,aAAA,EAAe,WAAA;AAAA,QACf;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,+BAA+B,CAAA;AAAA,IAC3D;AAAA,EACF;AACF,CAAC;AAEM,IAAM,gCAAgCF,6BAAA,CAAY;AAAA,EACvD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,wCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBG,uCAAA;AAAA,EACjB,gBAAA,EAAkBwB,yCAAA;AAAA,EAClB,cAAA,EAAgBC,4CAAA;AAAA,EAChB,OAAA,EAAS,eAAA;AAAA,EACT,WAAA,EAAa,8DAAA;AAAA,EACb,IAAA,EAAM,CAAC,WAAA,EAAa,QAAQ,CAAA;AAAA,EAC5B,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,QAAA,EAAU,UAAA,EAAY,iBAAA,EAAmB,WAAA,EAAa,cAAA,EAAe,KAAM;AAChH,IAAA,IAAI;AACF,MAAA,yBAAA,EAA0B;AAE1B,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,MAAM,IAAI7B,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4BAA4B,CAAA;AAAA,MACtE;AAEA,MAAA,MAAM,MAAA,GAAS,MAAM,aAAA,CAAc,MAAA,EAAQ,WAAW,CAAA;AACtD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,OAAO;AAAA,UACL,SAAS,EAAC;AAAA,UACV;AAAA,SACF;AAAA,MACF;AAGA,MAAA,MAAM,MAAA,CAAO,YAAA,CAAa,EAAE,cAAA,EAAgB,CAAA;AAG5C,MAAA,MAAM,cAAA,GAAiB,UAAA,GAAa,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAc,CAAA,CAAE,IAAA,EAAM,CAAA,GAAI,MAAA;AAEzF,MAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO;AAAA,QACzC,MAAM,IAAA,IAAQ,CAAA;AAAA,QACd,QAAA;AAAA,QACA,UAAA,EAAY,cAAA;AAAA,QACZ,mBAAmB,iBAAA,IAAqB;AAAA,OACzC,CAAA;AAED,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAA,MAAM;AAAA,UACzB,WAAW,CAAA,CAAE,SAAA;AAAA,UACb,QAAQ,CAAA,CAAE,MAAA;AAAA,UACV,SAAS,CAAA,CAAE,OAAA;AAAA,UACX,OAAO,CAAA,CAAE,KAAA;AAAA,UACT,WAAW,CAAA,CAAE,SAAA;AAAA,UACb,cAAc,CAAA,CAAE;AAAA,SAClB,CAAE,CAAA;AAAA,QACF;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOG,6BAAA,CAAY,OAAO,wBAAwB,CAAA;AAAA,IACpD;AAAA,EACF;AACF,CAAC;AAMM,IAAM,mBAAA,GAAsB;AAAA,EACjC,uBAAA;AAAA,EACA,wBAAA;AAAA,EACA,uBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA;AACF;AAEO,IAAM,uBAAA,GAA0B,CAAC,sBAAA,EAAwB,qBAAqB;AAI9E,IAAM,uBAAA,GAA0B;AAAA,EACrC,6BAAA;AAAA,EACA,2BAAA;AAAA,EACA,yBAAA;AAAA,EACA,qCAAA;AAAA,EACA;AACF","file":"chunk-QRPQWZZU.cjs","sourcesContent":["/**\n * Workspace Handlers\n *\n * Unified handlers for workspace operations including:\n * - Filesystem operations (read, write, list, delete, mkdir, stat)\n * - Search operations (search, index)\n * - Skills operations (list, get, search, references)\n */\n\nimport { coreFeatures } from '@mastra/core/features';\nimport type { Workspace, WorkspaceSkills } from '@mastra/core/workspace';\nimport { HTTPException } from '../http-exception';\nimport {\n // Workspace info\n workspaceInfoResponseSchema,\n listWorkspacesResponseSchema,\n workspaceIdPathParams,\n // Filesystem schemas\n fsReadQuerySchema,\n fsListQuerySchema,\n fsStatQuerySchema,\n fsDeleteQuerySchema,\n fsWriteBodySchema,\n fsMkdirBodySchema,\n fsReadResponseSchema,\n fsWriteResponseSchema,\n fsListResponseSchema,\n fsDeleteResponseSchema,\n fsMkdirResponseSchema,\n fsStatResponseSchema,\n // Search schemas\n searchQuerySchema,\n searchResponseSchema,\n indexBodySchema,\n indexResponseSchema,\n // Skills schemas\n skillNamePathParams,\n skillReferencePathParams,\n searchSkillsQuerySchema,\n listSkillsResponseSchema,\n getSkillResponseSchema,\n skillReferenceResponseSchema,\n listReferencesResponseSchema,\n searchSkillsResponseSchema,\n} from '../schemas/workspace';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\n/**\n * Throws if workspace v1 is not supported by the current version of @mastra/core.\n */\nfunction requireWorkspaceV1Support(): void {\n if (!coreFeatures.has('workspaces-v1')) {\n throw new HTTPException(501, {\n message: 'Workspace v1 not supported by this version of @mastra/core. Please upgrade to a newer version.',\n });\n }\n}\n\n/**\n * Get a workspace by ID from Mastra or agents.\n * If no workspaceId is provided, returns the global workspace.\n */\nasync function getWorkspaceById(mastra: any, workspaceId?: string): Promise<Workspace | undefined> {\n requireWorkspaceV1Support();\n const globalWorkspace = mastra.getWorkspace?.();\n\n // If no workspaceId specified, return global workspace\n if (!workspaceId) {\n return globalWorkspace;\n }\n\n // Check if it's the global workspace\n if (globalWorkspace?.id === workspaceId) {\n return globalWorkspace;\n }\n\n // Search through agents for the workspace\n const agents = mastra.listAgents?.() ?? {};\n for (const agent of Object.values(agents)) {\n if ((agent as any).hasOwnWorkspace?.()) {\n const agentWorkspace = await (agent as any).getWorkspace?.();\n if (agentWorkspace?.id === workspaceId) {\n return agentWorkspace;\n }\n }\n }\n\n return undefined;\n}\n\n/**\n * Get skills from a specific workspace by ID.\n * If no workspaceId is provided, returns skills from the global workspace.\n * Note: getWorkspaceById already checks for workspace v1 support.\n */\nasync function getSkillsById(mastra: any, workspaceId?: string): Promise<WorkspaceSkills | undefined> {\n const workspace = await getWorkspaceById(mastra, workspaceId);\n return workspace?.skills;\n}\n\n// =============================================================================\n// List All Workspaces Route\n// =============================================================================\n\nexport const LIST_WORKSPACES_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces',\n responseType: 'json',\n responseSchema: listWorkspacesResponseSchema,\n summary: 'List all workspaces',\n description: 'Returns all workspaces from both Mastra instance and agents',\n tags: ['Workspace'],\n handler: async ({ mastra }) => {\n try {\n requireWorkspaceV1Support();\n\n const workspaces: Array<{\n id: string;\n name: string;\n status: string;\n source: 'mastra' | 'agent';\n agentId?: string;\n agentName?: string;\n capabilities: {\n hasFilesystem: boolean;\n hasSandbox: boolean;\n canBM25: boolean;\n canVector: boolean;\n canHybrid: boolean;\n hasSkills: boolean;\n };\n safety: {\n readOnly: boolean;\n };\n }> = [];\n\n const seenIds = new Set<string>();\n\n // Get workspace from Mastra instance\n const globalWorkspace = mastra.getWorkspace?.();\n if (globalWorkspace) {\n seenIds.add(globalWorkspace.id);\n workspaces.push({\n id: globalWorkspace.id,\n name: globalWorkspace.name,\n status: globalWorkspace.status,\n source: 'mastra',\n capabilities: {\n hasFilesystem: !!globalWorkspace.fs,\n hasSandbox: !!globalWorkspace.sandbox,\n canBM25: globalWorkspace.canBM25,\n canVector: globalWorkspace.canVector,\n canHybrid: globalWorkspace.canHybrid,\n hasSkills: !!globalWorkspace.skills,\n },\n safety: {\n readOnly: globalWorkspace.filesystem?.readOnly ?? false,\n },\n });\n }\n\n // Get workspaces from agents\n const agents = mastra.listAgents?.() ?? {};\n for (const [agentId, agent] of Object.entries(agents)) {\n if (agent.hasOwnWorkspace?.()) {\n try {\n const agentWorkspace = await agent.getWorkspace?.();\n if (agentWorkspace && !seenIds.has(agentWorkspace.id)) {\n seenIds.add(agentWorkspace.id);\n workspaces.push({\n id: agentWorkspace.id,\n name: agentWorkspace.name,\n status: agentWorkspace.status,\n source: 'agent',\n agentId,\n agentName: agent.name,\n capabilities: {\n hasFilesystem: !!agentWorkspace.fs,\n hasSandbox: !!agentWorkspace.sandbox,\n canBM25: agentWorkspace.canBM25,\n canVector: agentWorkspace.canVector,\n canHybrid: agentWorkspace.canHybrid,\n hasSkills: !!agentWorkspace.skills,\n },\n safety: {\n readOnly: agentWorkspace.filesystem?.readOnly ?? false,\n },\n });\n }\n } catch {\n // Skip agents with dynamic workspaces that fail without thread context\n continue;\n }\n }\n }\n\n return { workspaces };\n } catch (error) {\n return handleError(error, 'Error listing workspaces');\n }\n },\n});\n\n// =============================================================================\n// Get Workspace Route\n// =============================================================================\n\nexport const GET_WORKSPACE_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n responseSchema: workspaceInfoResponseSchema,\n summary: 'Get workspace info',\n description: 'Returns information about a specific workspace and its capabilities',\n tags: ['Workspace'],\n handler: async ({ mastra, workspaceId }) => {\n try {\n const workspace = await getWorkspaceById(mastra, workspaceId);\n\n if (!workspace) {\n return {\n isWorkspaceConfigured: false,\n };\n }\n\n return {\n isWorkspaceConfigured: true,\n id: workspace.id,\n name: workspace.name,\n status: workspace.status,\n capabilities: {\n hasFilesystem: !!workspace.fs,\n hasSandbox: !!workspace.sandbox,\n canBM25: workspace.canBM25,\n canVector: workspace.canVector,\n canHybrid: workspace.canHybrid,\n hasSkills: !!workspace.skills,\n },\n safety: {\n readOnly: workspace.filesystem?.readOnly ?? false,\n },\n };\n } catch (error) {\n return handleError(error, 'Error getting workspace info');\n }\n },\n});\n\n// =============================================================================\n// Filesystem Routes\n// =============================================================================\n\nexport const WORKSPACE_FS_READ_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/fs/read',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: fsReadQuerySchema,\n responseSchema: fsReadResponseSchema,\n summary: 'Read file content',\n description: 'Returns the content of a file at the specified path',\n tags: ['Workspace'],\n handler: async ({ mastra, path, encoding, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path) {\n throw new HTTPException(400, { message: 'Path is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n\n const decodedPath = decodeURIComponent(path);\n\n // Check if path exists\n if (!(await workspace.fs.exists(decodedPath))) {\n throw new HTTPException(404, { message: `Path \"${decodedPath}\" not found` });\n }\n\n // Read file content\n const content = await workspace.fs.readFile(decodedPath, {\n encoding: (encoding as BufferEncoding) || 'utf-8',\n });\n\n return {\n path: decodedPath,\n content: typeof content === 'string' ? content : content.toString('utf-8'),\n type: 'file' as const,\n };\n } catch (error) {\n return handleError(error, 'Error reading file');\n }\n },\n});\n\nexport const WORKSPACE_FS_WRITE_ROUTE = createRoute({\n method: 'POST',\n path: '/workspaces/:workspaceId/fs/write',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n bodySchema: fsWriteBodySchema,\n responseSchema: fsWriteResponseSchema,\n summary: 'Write file content',\n description: 'Writes content to a file at the specified path. Supports base64 encoding for binary files.',\n tags: ['Workspace'],\n handler: async ({ mastra, path, content, encoding, recursive, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path || content === undefined) {\n throw new HTTPException(400, { message: 'Path and content are required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n\n if (workspace.filesystem?.readOnly) {\n throw new HTTPException(403, { message: 'Workspace is in read-only mode' });\n }\n\n const decodedPath = decodeURIComponent(path);\n\n // Handle base64-encoded content for binary files\n let fileContent: string | Buffer = content;\n if (encoding === 'base64') {\n fileContent = Buffer.from(content, 'base64');\n }\n\n await workspace.fs.writeFile(decodedPath, fileContent, { recursive: recursive ?? true });\n\n return {\n success: true,\n path: decodedPath,\n };\n } catch (error) {\n return handleError(error, 'Error writing file');\n }\n },\n});\n\nexport const WORKSPACE_FS_LIST_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/fs/list',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: fsListQuerySchema,\n responseSchema: fsListResponseSchema,\n summary: 'List directory contents',\n description: 'Returns a list of files and directories at the specified path',\n tags: ['Workspace'],\n handler: async ({ mastra, path, recursive, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path) {\n throw new HTTPException(400, { message: 'Path is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n return {\n path: decodeURIComponent(path),\n entries: [],\n error: 'No workspace filesystem configured',\n };\n }\n\n const decodedPath = decodeURIComponent(path);\n\n // Check if path exists\n if (!(await workspace.fs.exists(decodedPath))) {\n throw new HTTPException(404, { message: `Path \"${decodedPath}\" not found` });\n }\n\n const entries = await workspace.fs.readdir(decodedPath, { recursive });\n\n return {\n path: decodedPath,\n entries: entries.map(entry => ({\n name: entry.name,\n type: entry.type,\n size: entry.size,\n })),\n };\n } catch (error) {\n return handleError(error, 'Error listing directory');\n }\n },\n});\n\nexport const WORKSPACE_FS_DELETE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/workspaces/:workspaceId/fs/delete',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: fsDeleteQuerySchema,\n responseSchema: fsDeleteResponseSchema,\n summary: 'Delete file or directory',\n description: 'Deletes a file or directory at the specified path',\n tags: ['Workspace'],\n handler: async ({ mastra, path, recursive, force, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path) {\n throw new HTTPException(400, { message: 'Path is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n\n if (workspace.filesystem?.readOnly) {\n throw new HTTPException(403, { message: 'Workspace is in read-only mode' });\n }\n\n const decodedPath = decodeURIComponent(path);\n\n // Check if path exists (unless force is true)\n const exists = await workspace.fs.exists(decodedPath);\n if (!exists && !force) {\n throw new HTTPException(404, { message: `Path \"${decodedPath}\" not found` });\n }\n\n if (exists) {\n // Try to delete as file first, then as directory\n try {\n await workspace.fs.deleteFile(decodedPath, { force });\n } catch {\n await workspace.fs.rmdir(decodedPath, { recursive, force });\n }\n }\n\n return {\n success: true,\n path: decodedPath,\n };\n } catch (error) {\n return handleError(error, 'Error deleting path');\n }\n },\n});\n\nexport const WORKSPACE_FS_MKDIR_ROUTE = createRoute({\n method: 'POST',\n path: '/workspaces/:workspaceId/fs/mkdir',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n bodySchema: fsMkdirBodySchema,\n responseSchema: fsMkdirResponseSchema,\n summary: 'Create directory',\n description: 'Creates a directory at the specified path',\n tags: ['Workspace'],\n handler: async ({ mastra, path, recursive, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path) {\n throw new HTTPException(400, { message: 'Path is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n\n if (workspace.filesystem?.readOnly) {\n throw new HTTPException(403, { message: 'Workspace is in read-only mode' });\n }\n\n const decodedPath = decodeURIComponent(path);\n\n await workspace.fs.mkdir(decodedPath, { recursive: recursive ?? true });\n\n return {\n success: true,\n path: decodedPath,\n };\n } catch (error) {\n return handleError(error, 'Error creating directory');\n }\n },\n});\n\nexport const WORKSPACE_FS_STAT_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/fs/stat',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: fsStatQuerySchema,\n responseSchema: fsStatResponseSchema,\n summary: 'Get file/directory info',\n description: 'Returns metadata about a file or directory',\n tags: ['Workspace'],\n handler: async ({ mastra, path, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path) {\n throw new HTTPException(400, { message: 'Path is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace?.fs) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n\n const decodedPath = decodeURIComponent(path);\n\n // Check if path exists\n if (!(await workspace.fs.exists(decodedPath))) {\n throw new HTTPException(404, { message: `Path \"${decodedPath}\" not found` });\n }\n\n const stat = await workspace.fs.stat(decodedPath);\n\n return {\n path: stat.path,\n type: stat.type,\n size: stat.size,\n createdAt: stat.createdAt?.toISOString(),\n modifiedAt: stat.modifiedAt?.toISOString(),\n mimeType: stat.mimeType,\n };\n } catch (error) {\n return handleError(error, 'Error getting file info');\n }\n },\n});\n\n// =============================================================================\n// Search Routes\n// =============================================================================\n\nexport const WORKSPACE_SEARCH_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/search',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: searchQuerySchema,\n responseSchema: searchResponseSchema,\n summary: 'Search workspace content',\n description: 'Searches across indexed workspace content using BM25, vector, or hybrid search',\n tags: ['Workspace'],\n handler: async ({ mastra, query, topK, mode, minScore, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!query) {\n throw new HTTPException(400, { message: 'Search query is required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace) {\n return {\n results: [],\n query,\n mode: mode || 'bm25',\n };\n }\n\n // Check search capabilities\n const canSearch = workspace.canBM25 || workspace.canVector;\n if (!canSearch) {\n return {\n results: [],\n query,\n mode: mode || 'bm25',\n };\n }\n\n // Determine search mode based on capabilities\n let searchMode = mode;\n if (!searchMode) {\n if (workspace.canHybrid) {\n searchMode = 'hybrid';\n } else if (workspace.canVector) {\n searchMode = 'vector';\n } else {\n searchMode = 'bm25';\n }\n }\n\n const results = await workspace.search(query, {\n topK: topK || 5,\n mode: searchMode,\n minScore,\n });\n\n return {\n results: results.map(r => ({\n id: r.id,\n content: r.content,\n score: r.score,\n lineRange: r.lineRange,\n scoreDetails: r.scoreDetails,\n })),\n query,\n mode: searchMode,\n };\n } catch (error) {\n return handleError(error, 'Error searching workspace');\n }\n },\n});\n\nexport const WORKSPACE_INDEX_ROUTE = createRoute({\n method: 'POST',\n path: '/workspaces/:workspaceId/index',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n bodySchema: indexBodySchema,\n responseSchema: indexResponseSchema,\n summary: 'Index content for search',\n description: 'Indexes content for later search operations',\n tags: ['Workspace'],\n handler: async ({ mastra, path, content, metadata, workspaceId }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!path || content === undefined) {\n throw new HTTPException(400, { message: 'Path and content are required' });\n }\n\n const workspace = await getWorkspaceById(mastra, workspaceId);\n if (!workspace) {\n throw new HTTPException(404, { message: 'No workspace configured' });\n }\n\n const canSearch = workspace.canBM25 || workspace.canVector;\n if (!canSearch) {\n throw new HTTPException(400, { message: 'Workspace does not have search configured' });\n }\n\n await workspace.index(path, content, { metadata });\n\n return {\n success: true,\n path,\n };\n } catch (error) {\n return handleError(error, 'Error indexing content');\n }\n },\n});\n\n// =============================================================================\n// Skills Routes (under /workspaces/:workspaceId/skills)\n// =============================================================================\n\nexport const WORKSPACE_LIST_SKILLS_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/skills',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n responseSchema: listSkillsResponseSchema,\n summary: 'List all skills',\n description: 'Returns a list of all discovered skills with their metadata',\n tags: ['Workspace', 'Skills'],\n handler: async ({ mastra, workspaceId, requestContext }) => {\n try {\n requireWorkspaceV1Support();\n\n const skills = await getSkillsById(mastra, workspaceId);\n if (!skills) {\n return { skills: [], isSkillsConfigured: false };\n }\n\n // Refresh skills with request context (handles dynamic skill resolvers)\n await skills.maybeRefresh({ requestContext });\n\n const skillsList = await skills.list();\n\n return {\n skills: skillsList.map(skill => ({\n name: skill.name,\n description: skill.description,\n license: skill.license,\n compatibility: skill.compatibility,\n metadata: skill.metadata,\n })),\n isSkillsConfigured: true,\n };\n } catch (error) {\n return handleError(error, 'Error listing skills');\n }\n },\n});\n\nexport const WORKSPACE_GET_SKILL_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/skills/:skillName',\n responseType: 'json',\n pathParamSchema: skillNamePathParams,\n responseSchema: getSkillResponseSchema,\n summary: 'Get skill details',\n description: 'Returns the full details of a specific skill including instructions and file lists',\n tags: ['Workspace', 'Skills'],\n handler: async ({ mastra, skillName, workspaceId, requestContext }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!skillName) {\n throw new HTTPException(400, { message: 'Skill name is required' });\n }\n\n const skills = await getSkillsById(mastra, workspaceId);\n if (!skills) {\n throw new HTTPException(404, { message: 'No workspace with skills configured' });\n }\n\n // Refresh skills with request context (handles dynamic skill resolvers)\n await skills.maybeRefresh({ requestContext });\n\n const skill = await skills.get(skillName);\n if (!skill) {\n throw new HTTPException(404, { message: `Skill \"${skillName}\" not found` });\n }\n\n return {\n name: skill.name,\n description: skill.description,\n license: skill.license,\n compatibility: skill.compatibility,\n metadata: skill.metadata,\n path: skill.path,\n instructions: skill.instructions,\n source: skill.source,\n references: skill.references,\n scripts: skill.scripts,\n assets: skill.assets,\n };\n } catch (error) {\n return handleError(error, 'Error getting skill');\n }\n },\n});\n\nexport const WORKSPACE_LIST_SKILL_REFERENCES_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/skills/:skillName/references',\n responseType: 'json',\n pathParamSchema: skillNamePathParams,\n responseSchema: listReferencesResponseSchema,\n summary: 'List skill references',\n description: 'Returns a list of all reference file paths for a skill',\n tags: ['Workspace', 'Skills'],\n handler: async ({ mastra, skillName, workspaceId, requestContext }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!skillName) {\n throw new HTTPException(400, { message: 'Skill name is required' });\n }\n\n const skills = await getSkillsById(mastra, workspaceId);\n if (!skills) {\n throw new HTTPException(404, { message: 'No workspace with skills configured' });\n }\n\n // Refresh skills with request context (handles dynamic skill resolvers)\n await skills.maybeRefresh({ requestContext });\n\n const hasSkill = await skills.has(skillName);\n if (!hasSkill) {\n throw new HTTPException(404, { message: `Skill \"${skillName}\" not found` });\n }\n\n const references = await skills.listReferences(skillName);\n\n return {\n skillName,\n references,\n };\n } catch (error) {\n return handleError(error, 'Error listing skill references');\n }\n },\n});\n\nexport const WORKSPACE_GET_SKILL_REFERENCE_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/skills/:skillName/references/:referencePath',\n responseType: 'json',\n pathParamSchema: skillReferencePathParams,\n responseSchema: skillReferenceResponseSchema,\n summary: 'Get skill reference content',\n description: 'Returns the content of a specific reference file from a skill',\n tags: ['Workspace', 'Skills'],\n handler: async ({ mastra, skillName, referencePath, workspaceId, requestContext }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!skillName || !referencePath) {\n throw new HTTPException(400, { message: 'Skill name and reference path are required' });\n }\n\n const skills = await getSkillsById(mastra, workspaceId);\n if (!skills) {\n throw new HTTPException(404, { message: 'No workspace with skills configured' });\n }\n\n // Refresh skills with request context (handles dynamic skill resolvers)\n await skills.maybeRefresh({ requestContext });\n\n // Decode the reference path (it may be URL encoded)\n const decodedPath = decodeURIComponent(referencePath);\n\n const content = await skills.getReference(skillName, decodedPath);\n if (content === null) {\n throw new HTTPException(404, { message: `Reference \"${decodedPath}\" not found in skill \"${skillName}\"` });\n }\n\n return {\n skillName,\n referencePath: decodedPath,\n content,\n };\n } catch (error) {\n return handleError(error, 'Error getting skill reference');\n }\n },\n});\n\nexport const WORKSPACE_SEARCH_SKILLS_ROUTE = createRoute({\n method: 'GET',\n path: '/workspaces/:workspaceId/skills/search',\n responseType: 'json',\n pathParamSchema: workspaceIdPathParams,\n queryParamSchema: searchSkillsQuerySchema,\n responseSchema: searchSkillsResponseSchema,\n summary: 'Search skills',\n description: 'Searches across all skills content using BM25 keyword search',\n tags: ['Workspace', 'Skills'],\n handler: async ({ mastra, query, topK, minScore, skillNames, includeReferences, workspaceId, requestContext }) => {\n try {\n requireWorkspaceV1Support();\n\n if (!query) {\n throw new HTTPException(400, { message: 'Search query is required' });\n }\n\n const skills = await getSkillsById(mastra, workspaceId);\n if (!skills) {\n return {\n results: [],\n query,\n };\n }\n\n // Refresh skills with request context (handles dynamic skill resolvers)\n await skills.maybeRefresh({ requestContext });\n\n // Parse comma-separated skill names if provided\n const skillNamesList = skillNames ? skillNames.split(',').map((s: string) => s.trim()) : undefined;\n\n const results = await skills.search(query, {\n topK: topK || 5,\n minScore,\n skillNames: skillNamesList,\n includeReferences: includeReferences ?? true,\n });\n\n return {\n results: results.map(r => ({\n skillName: r.skillName,\n source: r.source,\n content: r.content,\n score: r.score,\n lineRange: r.lineRange,\n scoreDetails: r.scoreDetails,\n })),\n query,\n };\n } catch (error) {\n return handleError(error, 'Error searching skills');\n }\n },\n});\n\n// =============================================================================\n// Route Collections\n// =============================================================================\n\nexport const WORKSPACE_FS_ROUTES = [\n WORKSPACE_FS_READ_ROUTE,\n WORKSPACE_FS_WRITE_ROUTE,\n WORKSPACE_FS_LIST_ROUTE,\n WORKSPACE_FS_DELETE_ROUTE,\n WORKSPACE_FS_MKDIR_ROUTE,\n WORKSPACE_FS_STAT_ROUTE,\n];\n\nexport const WORKSPACE_SEARCH_ROUTES = [WORKSPACE_SEARCH_ROUTE, WORKSPACE_INDEX_ROUTE];\n\n// IMPORTANT: Search route must come before the parameterized routes\n// to avoid /api/workspace/skills/search being matched as /api/workspace/skills/:skillName\nexport const WORKSPACE_SKILLS_ROUTES = [\n WORKSPACE_SEARCH_SKILLS_ROUTE,\n WORKSPACE_LIST_SKILLS_ROUTE,\n WORKSPACE_GET_SKILL_ROUTE,\n WORKSPACE_LIST_SKILL_REFERENCES_ROUTE,\n WORKSPACE_GET_SKILL_REFERENCE_ROUTE,\n];\n"]}
@@ -1,4 +1,4 @@
1
- import { listWorkspacesResponseSchema, workspaceInfoResponseSchema, workspaceIdPathParams, fsReadResponseSchema, fsReadQuerySchema, fsWriteResponseSchema, fsWriteBodySchema, fsListResponseSchema, fsListQuerySchema, fsDeleteResponseSchema, fsDeleteQuerySchema, fsMkdirResponseSchema, fsMkdirBodySchema, fsStatResponseSchema, fsStatQuerySchema, searchResponseSchema, searchQuerySchema, indexResponseSchema, indexBodySchema, listSkillsResponseSchema, getSkillResponseSchema, skillNamePathParams, listReferencesResponseSchema, skillReferenceResponseSchema, skillReferencePathParams, searchSkillsResponseSchema, searchSkillsQuerySchema } from './chunk-QXDNFBJQ.js';
1
+ import { listWorkspacesResponseSchema, workspaceInfoResponseSchema, workspaceIdPathParams, fsReadResponseSchema, fsReadQuerySchema, fsWriteResponseSchema, fsWriteBodySchema, fsListResponseSchema, fsListQuerySchema, fsDeleteResponseSchema, fsDeleteQuerySchema, fsMkdirResponseSchema, fsMkdirBodySchema, fsStatResponseSchema, fsStatQuerySchema, searchResponseSchema, searchQuerySchema, indexResponseSchema, indexBodySchema, listSkillsResponseSchema, getSkillResponseSchema, skillNamePathParams, listReferencesResponseSchema, skillReferenceResponseSchema, skillReferencePathParams, searchSkillsResponseSchema, searchSkillsQuerySchema } from './chunk-GDWZ2R7I.js';
2
2
  import { handleError } from './chunk-ONN5EA7E.js';
3
3
  import { createRoute } from './chunk-D5VCL56B.js';
4
4
  import { HTTPException } from './chunk-6QWQZI4Q.js';
@@ -685,5 +685,5 @@ var WORKSPACE_SKILLS_ROUTES = [
685
685
  ];
686
686
 
687
687
  export { GET_WORKSPACE_ROUTE, LIST_WORKSPACES_ROUTE, WORKSPACE_FS_DELETE_ROUTE, WORKSPACE_FS_LIST_ROUTE, WORKSPACE_FS_MKDIR_ROUTE, WORKSPACE_FS_READ_ROUTE, WORKSPACE_FS_ROUTES, WORKSPACE_FS_STAT_ROUTE, WORKSPACE_FS_WRITE_ROUTE, WORKSPACE_GET_SKILL_REFERENCE_ROUTE, WORKSPACE_GET_SKILL_ROUTE, WORKSPACE_INDEX_ROUTE, WORKSPACE_LIST_SKILLS_ROUTE, WORKSPACE_LIST_SKILL_REFERENCES_ROUTE, WORKSPACE_SEARCH_ROUTE, WORKSPACE_SEARCH_ROUTES, WORKSPACE_SEARCH_SKILLS_ROUTE, WORKSPACE_SKILLS_ROUTES };
688
- //# sourceMappingURL=chunk-3AZY5AWI.js.map
689
- //# sourceMappingURL=chunk-3AZY5AWI.js.map
688
+ //# sourceMappingURL=chunk-QWOQET2T.js.map
689
+ //# sourceMappingURL=chunk-QWOQET2T.js.map