@lyrra/mcp-server 1.1.3 → 1.1.7

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 (108) hide show
  1. package/README.md +80 -250
  2. package/dist/auth-session.js +171 -0
  3. package/dist/eduflow-block-docs.js +438 -0
  4. package/dist/http-incoming-auth.js +48 -0
  5. package/dist/http-main.js +104 -0
  6. package/dist/index.js +16 -12
  7. package/dist/lyrra-http.js +80 -0
  8. package/dist/lyrra-mcp-core.js +174 -0
  9. package/dist/openapi-parse.js +61 -0
  10. package/dist/register-eduflow-block-tools.js +31 -0
  11. package/package.json +41 -13
  12. package/Dockerfile +0 -16
  13. package/dist/client.d.ts +0 -23
  14. package/dist/client.d.ts.map +0 -1
  15. package/dist/client.js +0 -92
  16. package/dist/client.js.map +0 -1
  17. package/dist/config.d.ts +0 -8
  18. package/dist/config.d.ts.map +0 -1
  19. package/dist/config.js +0 -8
  20. package/dist/config.js.map +0 -1
  21. package/dist/http-server.d.ts +0 -8
  22. package/dist/http-server.d.ts.map +0 -1
  23. package/dist/http-server.js +0 -481
  24. package/dist/http-server.js.map +0 -1
  25. package/dist/index.d.ts +0 -3
  26. package/dist/index.d.ts.map +0 -1
  27. package/dist/index.js.map +0 -1
  28. package/dist/resources/block-types.d.ts +0 -318
  29. package/dist/resources/block-types.d.ts.map +0 -1
  30. package/dist/resources/block-types.js +0 -297
  31. package/dist/resources/block-types.js.map +0 -1
  32. package/dist/resources/flow-schema.d.ts +0 -147
  33. package/dist/resources/flow-schema.d.ts.map +0 -1
  34. package/dist/resources/flow-schema.js +0 -143
  35. package/dist/resources/flow-schema.js.map +0 -1
  36. package/dist/server-factory.d.ts +0 -8
  37. package/dist/server-factory.d.ts.map +0 -1
  38. package/dist/server-factory.js +0 -82
  39. package/dist/server-factory.js.map +0 -1
  40. package/dist/tools/admin.d.ts +0 -265
  41. package/dist/tools/admin.d.ts.map +0 -1
  42. package/dist/tools/admin.js +0 -118
  43. package/dist/tools/admin.js.map +0 -1
  44. package/dist/tools/ai-designer.d.ts +0 -297
  45. package/dist/tools/ai-designer.d.ts.map +0 -1
  46. package/dist/tools/ai-designer.js +0 -89
  47. package/dist/tools/ai-designer.js.map +0 -1
  48. package/dist/tools/analytics.d.ts +0 -95
  49. package/dist/tools/analytics.d.ts.map +0 -1
  50. package/dist/tools/analytics.js +0 -44
  51. package/dist/tools/analytics.js.map +0 -1
  52. package/dist/tools/auth.d.ts +0 -61
  53. package/dist/tools/auth.d.ts.map +0 -1
  54. package/dist/tools/auth.js +0 -36
  55. package/dist/tools/auth.js.map +0 -1
  56. package/dist/tools/blocks.d.ts +0 -457
  57. package/dist/tools/blocks.d.ts.map +0 -1
  58. package/dist/tools/blocks.js +0 -173
  59. package/dist/tools/blocks.js.map +0 -1
  60. package/dist/tools/connections.d.ts +0 -173
  61. package/dist/tools/connections.d.ts.map +0 -1
  62. package/dist/tools/connections.js +0 -81
  63. package/dist/tools/connections.js.map +0 -1
  64. package/dist/tools/eduflow.d.ts +0 -409
  65. package/dist/tools/eduflow.d.ts.map +0 -1
  66. package/dist/tools/eduflow.js +0 -139
  67. package/dist/tools/eduflow.js.map +0 -1
  68. package/dist/tools/participants.d.ts +0 -221
  69. package/dist/tools/participants.d.ts.map +0 -1
  70. package/dist/tools/participants.js +0 -70
  71. package/dist/tools/participants.js.map +0 -1
  72. package/dist/tools/presentation.d.ts +0 -233
  73. package/dist/tools/presentation.d.ts.map +0 -1
  74. package/dist/tools/presentation.js +0 -57
  75. package/dist/tools/presentation.js.map +0 -1
  76. package/dist/tools/projects.d.ts +0 -131
  77. package/dist/tools/projects.d.ts.map +0 -1
  78. package/dist/tools/projects.js +0 -55
  79. package/dist/tools/projects.js.map +0 -1
  80. package/dist/tools/resources.d.ts +0 -93
  81. package/dist/tools/resources.d.ts.map +0 -1
  82. package/dist/tools/resources.js +0 -37
  83. package/dist/tools/resources.js.map +0 -1
  84. package/dist/tools/store.d.ts +0 -125
  85. package/dist/tools/store.d.ts.map +0 -1
  86. package/dist/tools/store.js +0 -66
  87. package/dist/tools/store.js.map +0 -1
  88. package/mcp-config.example.json +0 -14
  89. package/src/client.ts +0 -106
  90. package/src/config.ts +0 -7
  91. package/src/http-server.ts +0 -591
  92. package/src/index.ts +0 -23
  93. package/src/resources/block-types.ts +0 -298
  94. package/src/resources/flow-schema.ts +0 -148
  95. package/src/server-factory.ts +0 -109
  96. package/src/tools/admin.ts +0 -128
  97. package/src/tools/ai-designer.ts +0 -97
  98. package/src/tools/analytics.ts +0 -49
  99. package/src/tools/auth.ts +0 -39
  100. package/src/tools/blocks.ts +0 -186
  101. package/src/tools/connections.ts +0 -83
  102. package/src/tools/eduflow.ts +0 -150
  103. package/src/tools/participants.ts +0 -77
  104. package/src/tools/presentation.ts +0 -61
  105. package/src/tools/projects.ts +0 -61
  106. package/src/tools/resources.ts +0 -41
  107. package/src/tools/store.ts +0 -67
  108. package/tsconfig.json +0 -19
@@ -1,147 +0,0 @@
1
- export declare const FLOW_SCHEMA_RESOURCE: {
2
- uri: string;
3
- name: string;
4
- description: string;
5
- mimeType: string;
6
- content: {
7
- overview: string;
8
- construction_steps: {
9
- step: number;
10
- title: string;
11
- description: string;
12
- tool: string;
13
- }[];
14
- connection_rules: {
15
- general: string[];
16
- by_block_type: {
17
- start: {
18
- incoming: number;
19
- outgoing: string;
20
- notes: string;
21
- };
22
- end: {
23
- incoming: string;
24
- outgoing: number;
25
- notes: string;
26
- };
27
- text: {
28
- incoming: string;
29
- outgoing: string;
30
- notes: string;
31
- };
32
- audio: {
33
- incoming: string;
34
- outgoing: string;
35
- notes: string;
36
- };
37
- video: {
38
- incoming: string;
39
- outgoing: string;
40
- notes: string;
41
- };
42
- pdf: {
43
- incoming: string;
44
- outgoing: string;
45
- notes: string;
46
- };
47
- image: {
48
- incoming: string;
49
- outgoing: string;
50
- notes: string;
51
- };
52
- quiz: {
53
- incoming: string;
54
- outgoing: string;
55
- notes: string;
56
- };
57
- evaluation: {
58
- incoming: string;
59
- outgoing: string;
60
- notes: string;
61
- };
62
- form: {
63
- incoming: string;
64
- outgoing: string;
65
- notes: string;
66
- };
67
- split: {
68
- incoming: string;
69
- outgoing: string;
70
- notes: string;
71
- };
72
- merge: {
73
- incoming: string;
74
- outgoing: string;
75
- notes: string;
76
- };
77
- loop: {
78
- incoming: string;
79
- outgoing: string;
80
- notes: string;
81
- };
82
- timer: {
83
- incoming: string;
84
- outgoing: string;
85
- notes: string;
86
- };
87
- subflow: {
88
- incoming: string;
89
- outgoing: string;
90
- notes: string;
91
- };
92
- certification: {
93
- incoming: string;
94
- outgoing: string;
95
- notes: string;
96
- };
97
- email: {
98
- incoming: string;
99
- outgoing: string;
100
- notes: string;
101
- };
102
- };
103
- };
104
- positioning: {
105
- description: string;
106
- recommendations: string[];
107
- };
108
- patterns: {
109
- linear: {
110
- name: string;
111
- description: string;
112
- usage: string;
113
- };
114
- branching: {
115
- name: string;
116
- description: string;
117
- usage: string;
118
- };
119
- parallel: {
120
- name: string;
121
- description: string;
122
- usage: string;
123
- };
124
- loop_pattern: {
125
- name: string;
126
- description: string;
127
- usage: string;
128
- };
129
- certification_pattern: {
130
- name: string;
131
- description: string;
132
- usage: string;
133
- };
134
- };
135
- gamification: {
136
- description: string;
137
- options: {
138
- badges: string;
139
- missions: string;
140
- leaderboard: string;
141
- certifications: string;
142
- };
143
- };
144
- best_practices: string[];
145
- };
146
- };
147
- //# sourceMappingURL=flow-schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flow-schema.d.ts","sourceRoot":"","sources":["../../src/resources/flow-schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmJhC,CAAC"}
@@ -1,143 +0,0 @@
1
- export const FLOW_SCHEMA_RESOURCE = {
2
- uri: 'lyrra://flow-construction-guide',
3
- name: 'Guide de construction d\'un parcours EduFlow',
4
- description: 'Guide complet pour construire un parcours pédagogique dans LYRRA Studio : logique de construction, règles de connexion, bonnes pratiques.',
5
- mimeType: 'application/json',
6
- content: {
7
- overview: `Un parcours EduFlow est un graphe orienté composé de blocs (nœuds) reliés par des edges (connexions).
8
- Le parcours définit le chemin que suivra l'apprenant, avec possibilité de branchements conditionnels.`,
9
- construction_steps: [
10
- {
11
- step: 1,
12
- title: 'Créer le parcours',
13
- description: 'Utiliser eduflow_create avec un titre et une description. Un bloc "start" et un bloc "end" sont automatiquement créés.',
14
- tool: 'eduflow_create',
15
- },
16
- {
17
- step: 2,
18
- title: 'Ajouter des blocs de contenu',
19
- description: 'Créer des blocs entre start et end : text, video, audio, quiz, etc. Utiliser block_create pour chaque bloc.',
20
- tool: 'block_create',
21
- },
22
- {
23
- step: 3,
24
- title: 'Connecter les blocs',
25
- description: 'Relier les blocs avec connection_add. Chaque connexion va de source vers target.',
26
- tool: 'connection_add',
27
- },
28
- {
29
- step: 4,
30
- title: 'Configurer les objectifs',
31
- description: 'Définir les objectifs pédagogiques avec ai_generate_objectives ou ai_save_objectives.',
32
- tool: 'ai_generate_objectives',
33
- },
34
- {
35
- step: 5,
36
- title: 'Créer la page de présentation',
37
- description: 'Configurer la page publique avec presentation_update et presentation_toggle.',
38
- tool: 'presentation_update',
39
- },
40
- {
41
- step: 6,
42
- title: 'Publier',
43
- description: 'Changer le statut en "published" avec eduflow_change_status pour rendre le parcours accessible.',
44
- tool: 'eduflow_change_status',
45
- },
46
- ],
47
- connection_rules: {
48
- general: [
49
- 'Le graphe doit être connexe : chaque bloc doit être atteignable depuis le bloc start',
50
- 'Pas de boucles infinies sans condition de sortie',
51
- 'Chaque chemin doit mener à au moins un bloc end',
52
- ],
53
- by_block_type: {
54
- start: {
55
- incoming: 0,
56
- outgoing: '1+',
57
- notes: 'Exactement 1 par parcours. Point d\'entrée unique.',
58
- },
59
- end: {
60
- incoming: '1+',
61
- outgoing: 0,
62
- notes: 'Peut avoir plusieurs blocs end pour différentes fins.',
63
- },
64
- text: { incoming: '1+', outgoing: '1', notes: 'Flux linéaire.' },
65
- audio: { incoming: '1+', outgoing: '1', notes: 'Flux linéaire.' },
66
- video: { incoming: '1+', outgoing: '1', notes: 'Flux linéaire.' },
67
- pdf: { incoming: '1+', outgoing: '1', notes: 'Flux linéaire.' },
68
- image: { incoming: '1+', outgoing: '1', notes: 'Flux linéaire.' },
69
- quiz: {
70
- incoming: '1+',
71
- outgoing: '1-N',
72
- notes: 'Sans branchement: 1 sortie. binary: 2 sorties (correct/incorrect). per-answer: N sorties.',
73
- },
74
- evaluation: { incoming: '1+', outgoing: '1-2', notes: '1 sortie (toujours) ou 2 (réussite/échec).' },
75
- form: { incoming: '1+', outgoing: '1-N', notes: 'Peut avoir des règles conditionnelles.' },
76
- split: { incoming: '1', outgoing: '2+', notes: 'Crée des branches parallèles.' },
77
- merge: { incoming: '2+', outgoing: '1', notes: 'Rejoint les branches. Correspond à un split.' },
78
- loop: { incoming: '1+', outgoing: '2', notes: '1 sortie "continuer" + 1 sortie "quitter la boucle".' },
79
- timer: { incoming: '1+', outgoing: '1-2', notes: '1 sortie normale + 1 sortie timeout (optionnel).' },
80
- subflow: { incoming: '1+', outgoing: '1', notes: 'Le sous-parcours s\'exécute entièrement puis continue.' },
81
- certification: { incoming: '1+', outgoing: '1', notes: 'Génère le certificat puis continue.' },
82
- email: { incoming: '1+', outgoing: '1', notes: 'Envoie l\'email puis continue.' },
83
- },
84
- },
85
- positioning: {
86
- description: 'Les blocs ont des coordonnées X/Y pour l\'éditeur visuel.',
87
- recommendations: [
88
- 'Espacer horizontalement de 300px entre les blocs séquentiels',
89
- 'Espacer verticalement de 150px pour les branches parallèles',
90
- 'Le bloc start en position (100, 300)',
91
- 'Flux de gauche à droite',
92
- ],
93
- },
94
- patterns: {
95
- linear: {
96
- name: 'Parcours linéaire',
97
- description: 'start → text → video → quiz → end',
98
- usage: 'Parcours simple sans branchement.',
99
- },
100
- branching: {
101
- name: 'Parcours avec branchement',
102
- description: 'start → quiz → [correct: text_avancé → end] [incorrect: text_revision → quiz]',
103
- usage: 'Adaptation au niveau de l\'apprenant.',
104
- },
105
- parallel: {
106
- name: 'Parcours parallèle',
107
- description: 'start → split → [branche1: text+video] [branche2: audio+pdf] → merge → end',
108
- usage: 'L\'apprenant choisit son parcours.',
109
- },
110
- loop_pattern: {
111
- name: 'Boucle d\'apprentissage',
112
- description: 'start → text → quiz → [échec: loop → text] [succès: end]',
113
- usage: 'Répétition jusqu\'à maîtrise.',
114
- },
115
- certification_pattern: {
116
- name: 'Parcours certifiant',
117
- description: 'start → text → evaluation → [réussi: certification → email → end] [échoué: end]',
118
- usage: 'Parcours avec certificat de réussite.',
119
- },
120
- },
121
- gamification: {
122
- description: 'Configuration optionnelle pour engager les apprenants.',
123
- options: {
124
- badges: 'Badges débloqués par des actions (complétion, score parfait, etc.)',
125
- missions: 'Objectifs à atteindre avec récompenses',
126
- leaderboard: 'Classement entre participants',
127
- certifications: 'Certificats PDF personnalisés',
128
- },
129
- },
130
- best_practices: [
131
- 'Commencer par définir les objectifs pédagogiques avant de créer les blocs',
132
- 'Alterner les types de blocs (texte → vidéo → quiz) pour maintenir l\'engagement',
133
- 'Utiliser des quiz formatifs (sans score) entre les blocs de contenu',
134
- 'Limiter à 15-20 blocs par parcours pour ne pas surcharger',
135
- 'Toujours avoir un message d\'accueil dans le bloc start',
136
- 'Toujours avoir un message de félicitations dans le bloc end',
137
- 'Utiliser les labels sur les connexions pour les branchements (ex: "Bonne réponse")',
138
- 'Créer une version avant chaque modification majeure',
139
- 'Tester le parcours avec un participant test avant de publier',
140
- ],
141
- },
142
- };
143
- //# sourceMappingURL=flow-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flow-schema.js","sourceRoot":"","sources":["../../src/resources/flow-schema.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { LyrraClient } from './client.js';
3
- /**
4
- * Create and configure an MCP server with all tools registered.
5
- * @param client - LyrraClient to use for API calls. If not provided, uses default (env vars).
6
- */
7
- export declare function createMcpServer(client?: LyrraClient): McpServer;
8
- //# sourceMappingURL=server-factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-factory.d.ts","sourceRoot":"","sources":["../src/server-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiD1C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAsD/D"}
@@ -1,82 +0,0 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { LyrraClient } from './client.js';
3
- // Tool factory functions
4
- import { createAuthTools } from './tools/auth.js';
5
- import { createEduflowTools } from './tools/eduflow.js';
6
- import { createBlocksTools } from './tools/blocks.js';
7
- import { createConnectionsTools } from './tools/connections.js';
8
- import { createParticipantsTools } from './tools/participants.js';
9
- import { createAnalyticsTools } from './tools/analytics.js';
10
- import { createAiDesignerTools } from './tools/ai-designer.js';
11
- import { createPresentationTools } from './tools/presentation.js';
12
- import { createStoreTools } from './tools/store.js';
13
- import { createProjectsTools } from './tools/projects.js';
14
- import { createResourcesTools } from './tools/resources.js';
15
- import { createAdminTools } from './tools/admin.js';
16
- // Resources
17
- import { BLOCK_TYPES_RESOURCE } from './resources/block-types.js';
18
- import { FLOW_SCHEMA_RESOURCE } from './resources/flow-schema.js';
19
- function registerToolsOnServer(server, tools) {
20
- for (const [name, tool] of Object.entries(tools)) {
21
- server.tool(name, tool.description, tool.inputSchema.shape
22
- ? Object.fromEntries(Object.entries(tool.inputSchema.shape).map(([key, schema]) => [key, schema]))
23
- : {}, async (args) => {
24
- try {
25
- const result = await tool.handler(args);
26
- return {
27
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
28
- };
29
- }
30
- catch (error) {
31
- return {
32
- content: [{ type: 'text', text: `Erreur: ${error.message}` }],
33
- isError: true,
34
- };
35
- }
36
- });
37
- }
38
- }
39
- /**
40
- * Create and configure an MCP server with all tools registered.
41
- * @param client - LyrraClient to use for API calls. If not provided, uses default (env vars).
42
- */
43
- export function createMcpServer(client) {
44
- const c = client || new LyrraClient();
45
- const server = new McpServer({
46
- name: 'lyrra-studio',
47
- version: '1.0.0',
48
- description: 'Serveur MCP pour piloter LYRRA Studio - Plateforme EdTech de création de parcours pédagogiques, conversion PDF→Audio, et store d\'audiobooks.',
49
- });
50
- const allTools = {
51
- ...createAuthTools(c),
52
- ...createEduflowTools(c),
53
- ...createBlocksTools(c),
54
- ...createConnectionsTools(c),
55
- ...createParticipantsTools(c),
56
- ...createAnalyticsTools(c),
57
- ...createAiDesignerTools(c),
58
- ...createPresentationTools(c),
59
- ...createStoreTools(c),
60
- ...createProjectsTools(c),
61
- ...createResourcesTools(c),
62
- ...createAdminTools(c),
63
- };
64
- registerToolsOnServer(server, allTools);
65
- // Resources
66
- server.resource('block-types', BLOCK_TYPES_RESOURCE.uri, { description: BLOCK_TYPES_RESOURCE.description, mimeType: BLOCK_TYPES_RESOURCE.mimeType }, async () => ({
67
- contents: [{
68
- uri: BLOCK_TYPES_RESOURCE.uri,
69
- mimeType: BLOCK_TYPES_RESOURCE.mimeType,
70
- text: JSON.stringify(BLOCK_TYPES_RESOURCE.content, null, 2),
71
- }],
72
- }));
73
- server.resource('flow-construction-guide', FLOW_SCHEMA_RESOURCE.uri, { description: FLOW_SCHEMA_RESOURCE.description, mimeType: FLOW_SCHEMA_RESOURCE.mimeType }, async () => ({
74
- contents: [{
75
- uri: FLOW_SCHEMA_RESOURCE.uri,
76
- mimeType: FLOW_SCHEMA_RESOURCE.mimeType,
77
- text: JSON.stringify(FLOW_SCHEMA_RESOURCE.content, null, 2),
78
- }],
79
- }));
80
- return server;
81
- }
82
- //# sourceMappingURL=server-factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-factory.js","sourceRoot":"","sources":["../src/server-factory.ts"],"names":[],"mappings":"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"}
@@ -1,265 +0,0 @@
1
- import { z } from 'zod';
2
- import { LyrraClient } from '../client.js';
3
- export declare function createAdminTools(c: LyrraClient): {
4
- version_list: {
5
- description: string;
6
- inputSchema: z.ZodObject<{
7
- flowId: z.ZodString;
8
- }, "strip", z.ZodTypeAny, {
9
- flowId: string;
10
- }, {
11
- flowId: string;
12
- }>;
13
- handler: ({ flowId }: {
14
- flowId: string;
15
- }) => Promise<any>;
16
- };
17
- version_create: {
18
- description: string;
19
- inputSchema: z.ZodObject<{
20
- flowId: z.ZodString;
21
- versionLabel: z.ZodOptional<z.ZodString>;
22
- }, "strip", z.ZodTypeAny, {
23
- flowId: string;
24
- versionLabel?: string | undefined;
25
- }, {
26
- flowId: string;
27
- versionLabel?: string | undefined;
28
- }>;
29
- handler: ({ flowId, versionLabel }: any) => Promise<any>;
30
- };
31
- version_activate: {
32
- description: string;
33
- inputSchema: z.ZodObject<{
34
- flowId: z.ZodString;
35
- versionId: z.ZodString;
36
- }, "strip", z.ZodTypeAny, {
37
- flowId: string;
38
- versionId: string;
39
- }, {
40
- flowId: string;
41
- versionId: string;
42
- }>;
43
- handler: ({ flowId, versionId }: {
44
- flowId: string;
45
- versionId: string;
46
- }) => Promise<any>;
47
- };
48
- gamification_stats: {
49
- description: string;
50
- inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
51
- handler: () => Promise<any>;
52
- };
53
- gamification_objectives: {
54
- description: string;
55
- inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
56
- handler: () => Promise<any>;
57
- };
58
- activity_history: {
59
- description: string;
60
- inputSchema: z.ZodObject<{
61
- page: z.ZodOptional<z.ZodNumber>;
62
- limit: z.ZodOptional<z.ZodNumber>;
63
- }, "strip", z.ZodTypeAny, {
64
- page?: number | undefined;
65
- limit?: number | undefined;
66
- }, {
67
- page?: number | undefined;
68
- limit?: number | undefined;
69
- }>;
70
- handler: ({ page, limit }: any) => Promise<any>;
71
- };
72
- activity_stats: {
73
- description: string;
74
- inputSchema: z.ZodObject<{
75
- period: z.ZodOptional<z.ZodEnum<["day", "week", "month"]>>;
76
- }, "strip", z.ZodTypeAny, {
77
- period?: "day" | "week" | "month" | undefined;
78
- }, {
79
- period?: "day" | "week" | "month" | undefined;
80
- }>;
81
- handler: ({ period }: {
82
- period?: string;
83
- }) => Promise<any>;
84
- };
85
- webhook_list: {
86
- description: string;
87
- inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
88
- handler: () => Promise<any>;
89
- };
90
- webhook_create: {
91
- description: string;
92
- inputSchema: z.ZodObject<{
93
- url: z.ZodString;
94
- events: z.ZodArray<z.ZodString, "many">;
95
- name: z.ZodOptional<z.ZodString>;
96
- }, "strip", z.ZodTypeAny, {
97
- url: string;
98
- events: string[];
99
- name?: string | undefined;
100
- }, {
101
- url: string;
102
- events: string[];
103
- name?: string | undefined;
104
- }>;
105
- handler: (data: any) => Promise<any>;
106
- };
107
- webhook_delete: {
108
- description: string;
109
- inputSchema: z.ZodObject<{
110
- webhookId: z.ZodString;
111
- }, "strip", z.ZodTypeAny, {
112
- webhookId: string;
113
- }, {
114
- webhookId: string;
115
- }>;
116
- handler: ({ webhookId }: {
117
- webhookId: string;
118
- }) => Promise<any>;
119
- };
120
- webhook_test: {
121
- description: string;
122
- inputSchema: z.ZodObject<{
123
- webhookId: z.ZodString;
124
- }, "strip", z.ZodTypeAny, {
125
- webhookId: string;
126
- }, {
127
- webhookId: string;
128
- }>;
129
- handler: ({ webhookId }: {
130
- webhookId: string;
131
- }) => Promise<any>;
132
- };
133
- };
134
- export declare const adminTools: {
135
- version_list: {
136
- description: string;
137
- inputSchema: z.ZodObject<{
138
- flowId: z.ZodString;
139
- }, "strip", z.ZodTypeAny, {
140
- flowId: string;
141
- }, {
142
- flowId: string;
143
- }>;
144
- handler: ({ flowId }: {
145
- flowId: string;
146
- }) => Promise<any>;
147
- };
148
- version_create: {
149
- description: string;
150
- inputSchema: z.ZodObject<{
151
- flowId: z.ZodString;
152
- versionLabel: z.ZodOptional<z.ZodString>;
153
- }, "strip", z.ZodTypeAny, {
154
- flowId: string;
155
- versionLabel?: string | undefined;
156
- }, {
157
- flowId: string;
158
- versionLabel?: string | undefined;
159
- }>;
160
- handler: ({ flowId, versionLabel }: any) => Promise<any>;
161
- };
162
- version_activate: {
163
- description: string;
164
- inputSchema: z.ZodObject<{
165
- flowId: z.ZodString;
166
- versionId: z.ZodString;
167
- }, "strip", z.ZodTypeAny, {
168
- flowId: string;
169
- versionId: string;
170
- }, {
171
- flowId: string;
172
- versionId: string;
173
- }>;
174
- handler: ({ flowId, versionId }: {
175
- flowId: string;
176
- versionId: string;
177
- }) => Promise<any>;
178
- };
179
- gamification_stats: {
180
- description: string;
181
- inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
182
- handler: () => Promise<any>;
183
- };
184
- gamification_objectives: {
185
- description: string;
186
- inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
187
- handler: () => Promise<any>;
188
- };
189
- activity_history: {
190
- description: string;
191
- inputSchema: z.ZodObject<{
192
- page: z.ZodOptional<z.ZodNumber>;
193
- limit: z.ZodOptional<z.ZodNumber>;
194
- }, "strip", z.ZodTypeAny, {
195
- page?: number | undefined;
196
- limit?: number | undefined;
197
- }, {
198
- page?: number | undefined;
199
- limit?: number | undefined;
200
- }>;
201
- handler: ({ page, limit }: any) => Promise<any>;
202
- };
203
- activity_stats: {
204
- description: string;
205
- inputSchema: z.ZodObject<{
206
- period: z.ZodOptional<z.ZodEnum<["day", "week", "month"]>>;
207
- }, "strip", z.ZodTypeAny, {
208
- period?: "day" | "week" | "month" | undefined;
209
- }, {
210
- period?: "day" | "week" | "month" | undefined;
211
- }>;
212
- handler: ({ period }: {
213
- period?: string;
214
- }) => Promise<any>;
215
- };
216
- webhook_list: {
217
- description: string;
218
- inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
219
- handler: () => Promise<any>;
220
- };
221
- webhook_create: {
222
- description: string;
223
- inputSchema: z.ZodObject<{
224
- url: z.ZodString;
225
- events: z.ZodArray<z.ZodString, "many">;
226
- name: z.ZodOptional<z.ZodString>;
227
- }, "strip", z.ZodTypeAny, {
228
- url: string;
229
- events: string[];
230
- name?: string | undefined;
231
- }, {
232
- url: string;
233
- events: string[];
234
- name?: string | undefined;
235
- }>;
236
- handler: (data: any) => Promise<any>;
237
- };
238
- webhook_delete: {
239
- description: string;
240
- inputSchema: z.ZodObject<{
241
- webhookId: z.ZodString;
242
- }, "strip", z.ZodTypeAny, {
243
- webhookId: string;
244
- }, {
245
- webhookId: string;
246
- }>;
247
- handler: ({ webhookId }: {
248
- webhookId: string;
249
- }) => Promise<any>;
250
- };
251
- webhook_test: {
252
- description: string;
253
- inputSchema: z.ZodObject<{
254
- webhookId: z.ZodString;
255
- }, "strip", z.ZodTypeAny, {
256
- webhookId: string;
257
- }, {
258
- webhookId: string;
259
- }>;
260
- handler: ({ webhookId }: {
261
- webhookId: string;
262
- }) => Promise<any>;
263
- };
264
- };
265
- //# sourceMappingURL=admin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/tools/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW;;;;;;;;;;8BAQf;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;4CAWJ,GAAG;;;;;;;;;;;;;;yCAWN;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;mCA6B3C,GAAG;;;;;;;;;;;8BAcR;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;wBAsBzB,GAAG;;;;;;;;;;;iCAUM;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;iCAUrB;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE;;EAKvD;AAGD,eAAO,MAAM,UAAU;;;;;;;;;;8BAnHS;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;4CAWJ,GAAG;;;;;;;;;;;;;;yCAWN;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;mCA6B3C,GAAG;;;;;;;;;;;8BAcR;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;wBAsBzB,GAAG;;;;;;;;;;;iCAUM;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;iCAUrB;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE;;CAQC,CAAC"}