@servicialo/mcp-server 0.7.0 → 0.8.0
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.
- package/README.en.md +392 -0
- package/README.md +315 -147
- package/dist/adapter-http.d.ts +51 -0
- package/dist/adapter-http.d.ts.map +1 -0
- package/dist/adapter-http.js +187 -0
- package/dist/adapter-http.js.map +1 -0
- package/dist/adapter.d.ts +42 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +42 -0
- package/dist/adapter.js.map +1 -0
- package/dist/client.d.ts +5 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +63 -59
- package/dist/index.js.map +1 -1
- package/dist/mandate.d.ts +321 -0
- package/dist/mandate.d.ts.map +1 -0
- package/dist/mandate.js +349 -0
- package/dist/mandate.js.map +1 -0
- package/dist/provider-profile.d.ts +985 -0
- package/dist/provider-profile.d.ts.map +1 -0
- package/dist/provider-profile.js +210 -0
- package/dist/provider-profile.js.map +1 -0
- package/dist/tools/authenticated/cerrar.d.ts +5 -5
- package/dist/tools/authenticated/cerrar.d.ts.map +1 -1
- package/dist/tools/authenticated/cerrar.js.map +1 -1
- package/dist/tools/authenticated/comprometer.d.ts +4 -4
- package/dist/tools/authenticated/comprometer.d.ts.map +1 -1
- package/dist/tools/authenticated/comprometer.js.map +1 -1
- package/dist/tools/authenticated/delivery.d.ts +4 -4
- package/dist/tools/authenticated/delivery.d.ts.map +1 -1
- package/dist/tools/authenticated/delivery.js.map +1 -1
- package/dist/tools/authenticated/entender.d.ts +3 -3
- package/dist/tools/authenticated/entender.d.ts.map +1 -1
- package/dist/tools/authenticated/entender.js.map +1 -1
- package/dist/tools/authenticated/lifecycle.d.ts +5 -5
- package/dist/tools/authenticated/lifecycle.d.ts.map +1 -1
- package/dist/tools/authenticated/lifecycle.js.map +1 -1
- package/dist/tools/authenticated/resolve-auth.d.ts +118 -0
- package/dist/tools/authenticated/resolve-auth.d.ts.map +1 -0
- package/dist/tools/authenticated/resolve-auth.js +62 -0
- package/dist/tools/authenticated/resolve-auth.js.map +1 -0
- package/dist/tools/authenticated/resource.d.ts +295 -0
- package/dist/tools/authenticated/resource.d.ts.map +1 -0
- package/dist/tools/authenticated/resource.js +125 -0
- package/dist/tools/authenticated/resource.js.map +1 -0
- package/dist/tools/public/a2a.d.ts +18 -0
- package/dist/tools/public/a2a.d.ts.map +1 -0
- package/dist/tools/public/a2a.js +15 -0
- package/dist/tools/public/a2a.js.map +1 -0
- package/dist/tools/public/availability.d.ts +2 -2
- package/dist/tools/public/availability.d.ts.map +1 -1
- package/dist/tools/public/availability.js.map +1 -1
- package/dist/tools/public/registry.d.ts +8 -3
- package/dist/tools/public/registry.d.ts.map +1 -1
- package/dist/tools/public/registry.js +8 -0
- package/dist/tools/public/registry.js.map +1 -1
- package/dist/tools/public/resolve.d.ts +60 -0
- package/dist/tools/public/resolve.d.ts.map +1 -0
- package/dist/tools/public/resolve.js +60 -0
- package/dist/tools/public/resolve.js.map +1 -0
- package/dist/tools/public/services.d.ts +2 -2
- package/dist/tools/public/services.d.ts.map +1 -1
- package/dist/tools/public/services.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const resolveAuthTools = {
|
|
3
|
+
'resolve.register': {
|
|
4
|
+
description: 'Registra una nueva organización en el resolver Servicialo con un orgSlug único global. ' +
|
|
5
|
+
'Requiere al menos un endpoint (MCP o REST). El slug es portable: si la org migra de ' +
|
|
6
|
+
'plataforma, conserva su slug y solo actualiza los endpoints.',
|
|
7
|
+
schema: z.object({
|
|
8
|
+
slug: z.string().describe('Identificador único (ej: clinica-dental-sur). 3-48 chars, lowercase, hyphens.'),
|
|
9
|
+
country: z.string().describe('País ISO 3166-1 alpha-2 (ej: cl, mx, ar)'),
|
|
10
|
+
name: z.string().describe('Nombre de la organización'),
|
|
11
|
+
mcp_url: z.string().optional().describe('URL del servidor MCP de la organización'),
|
|
12
|
+
rest_url: z.string().optional().describe('URL de la API REST de la organización'),
|
|
13
|
+
health_url: z.string().optional().describe('URL del health-check endpoint'),
|
|
14
|
+
legal_name: z.string().optional().describe('Nombre legal (si difiere del nombre comercial)'),
|
|
15
|
+
verticals: z.array(z.string()).optional().describe('Verticales de servicio (ej: ["salud", "dental"])'),
|
|
16
|
+
contact_email: z.string().optional().describe('Email de contacto'),
|
|
17
|
+
}),
|
|
18
|
+
handler: async (client, args) => {
|
|
19
|
+
return client.post('/api/servicialo/resolve/register', args);
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
'resolve.update_endpoint': {
|
|
23
|
+
description: 'Actualiza los endpoints de una organización en el resolver. Esta es la operación de ' +
|
|
24
|
+
'portabilidad: si la org migra de Coordinalo a otro CRM, actualiza sus URLs aquí y todos ' +
|
|
25
|
+
'los agentes la encuentran automáticamente en la nueva ubicación.',
|
|
26
|
+
schema: z.object({
|
|
27
|
+
org_slug: z.string().describe('Slug de la organización'),
|
|
28
|
+
country: z.string().default('cl').describe('País ISO 3166-1 alpha-2. Default: cl'),
|
|
29
|
+
mcp_url: z.string().optional().describe('Nueva URL del servidor MCP'),
|
|
30
|
+
rest_url: z.string().optional().describe('Nueva URL de la API REST'),
|
|
31
|
+
health_url: z.string().optional().describe('Nueva URL del health-check'),
|
|
32
|
+
}),
|
|
33
|
+
handler: async (client, args) => {
|
|
34
|
+
const country = args.country ?? 'cl';
|
|
35
|
+
const { org_slug: _slug, country: _country, ...body } = args;
|
|
36
|
+
return client.patch(`/api/servicialo/resolve/${country}/${args.org_slug}/endpoint`, body);
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
'telemetry.heartbeat': {
|
|
40
|
+
description: 'Envía un heartbeat al resolver Servicialo indicando que el nodo sigue activo. ' +
|
|
41
|
+
'Opcionalmente incluye métricas de uso. Los nodos sin heartbeat por 7+ días se marcan inactivos.',
|
|
42
|
+
schema: z.object({
|
|
43
|
+
org_slug: z.string().describe('Slug de la organización'),
|
|
44
|
+
country: z.string().default('cl').describe('País ISO 3166-1 alpha-2. Default: cl'),
|
|
45
|
+
metrics: z
|
|
46
|
+
.object({
|
|
47
|
+
services_active: z.number().optional().describe('Servicios activos actualmente'),
|
|
48
|
+
appointments_30d: z.number().optional().describe('Citas en los últimos 30 días'),
|
|
49
|
+
})
|
|
50
|
+
.optional()
|
|
51
|
+
.describe('Métricas opcionales de uso'),
|
|
52
|
+
}),
|
|
53
|
+
handler: async (client, args) => {
|
|
54
|
+
const country = args.country ?? 'cl';
|
|
55
|
+
return client.patch(`/api/servicialo/resolve/${country}/${args.org_slug}/endpoint`, {
|
|
56
|
+
heartbeat: true,
|
|
57
|
+
metrics: args.metrics,
|
|
58
|
+
});
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=resolve-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-auth.js","sourceRoot":"","sources":["../../../src/tools/authenticated/resolve-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ServicialoAdapter } from '../../adapter.js';
|
|
3
|
+
import { ActorSchema } from '../schemas.js';
|
|
4
|
+
export declare const resourceTools: {
|
|
5
|
+
'resource.list': {
|
|
6
|
+
description: string;
|
|
7
|
+
schema: z.ZodObject<{
|
|
8
|
+
organization_id: z.ZodString;
|
|
9
|
+
type: z.ZodOptional<z.ZodEnum<["room", "box", "chair", "equipment"]>>;
|
|
10
|
+
is_active: z.ZodOptional<z.ZodBoolean>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
organization_id: string;
|
|
13
|
+
type?: "room" | "box" | "chair" | "equipment" | undefined;
|
|
14
|
+
is_active?: boolean | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
organization_id: string;
|
|
17
|
+
type?: "room" | "box" | "chair" | "equipment" | undefined;
|
|
18
|
+
is_active?: boolean | undefined;
|
|
19
|
+
}>;
|
|
20
|
+
handler: (client: ServicialoAdapter, args: {
|
|
21
|
+
organization_id: string;
|
|
22
|
+
type?: string;
|
|
23
|
+
is_active?: boolean;
|
|
24
|
+
}) => Promise<unknown>;
|
|
25
|
+
};
|
|
26
|
+
'resource.get': {
|
|
27
|
+
description: string;
|
|
28
|
+
schema: z.ZodObject<{
|
|
29
|
+
resource_id: z.ZodString;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
resource_id: string;
|
|
32
|
+
}, {
|
|
33
|
+
resource_id: string;
|
|
34
|
+
}>;
|
|
35
|
+
handler: (client: ServicialoAdapter, args: {
|
|
36
|
+
resource_id: string;
|
|
37
|
+
}) => Promise<unknown>;
|
|
38
|
+
};
|
|
39
|
+
'resource.create': {
|
|
40
|
+
description: string;
|
|
41
|
+
schema: z.ZodObject<{
|
|
42
|
+
organization_id: z.ZodString;
|
|
43
|
+
name: z.ZodString;
|
|
44
|
+
type: z.ZodOptional<z.ZodEnum<["room", "box", "chair", "equipment"]>>;
|
|
45
|
+
capacity: z.ZodDefault<z.ZodNumber>;
|
|
46
|
+
buffer_minutes: z.ZodDefault<z.ZodNumber>;
|
|
47
|
+
equipment: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
48
|
+
location: z.ZodOptional<z.ZodString>;
|
|
49
|
+
rules: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
50
|
+
actor: z.ZodObject<{
|
|
51
|
+
type: z.ZodEnum<["client", "provider", "organization", "agent"]>;
|
|
52
|
+
id: z.ZodString;
|
|
53
|
+
on_behalf_of: z.ZodOptional<z.ZodObject<{
|
|
54
|
+
type: z.ZodString;
|
|
55
|
+
id: z.ZodString;
|
|
56
|
+
}, "strip", z.ZodTypeAny, {
|
|
57
|
+
type: string;
|
|
58
|
+
id: string;
|
|
59
|
+
}, {
|
|
60
|
+
type: string;
|
|
61
|
+
id: string;
|
|
62
|
+
}>>;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
65
|
+
id: string;
|
|
66
|
+
on_behalf_of?: {
|
|
67
|
+
type: string;
|
|
68
|
+
id: string;
|
|
69
|
+
} | undefined;
|
|
70
|
+
}, {
|
|
71
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
72
|
+
id: string;
|
|
73
|
+
on_behalf_of?: {
|
|
74
|
+
type: string;
|
|
75
|
+
id: string;
|
|
76
|
+
} | undefined;
|
|
77
|
+
}>;
|
|
78
|
+
}, "strip", z.ZodTypeAny, {
|
|
79
|
+
organization_id: string;
|
|
80
|
+
name: string;
|
|
81
|
+
capacity: number;
|
|
82
|
+
buffer_minutes: number;
|
|
83
|
+
actor: {
|
|
84
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
85
|
+
id: string;
|
|
86
|
+
on_behalf_of?: {
|
|
87
|
+
type: string;
|
|
88
|
+
id: string;
|
|
89
|
+
} | undefined;
|
|
90
|
+
};
|
|
91
|
+
location?: string | undefined;
|
|
92
|
+
type?: "room" | "box" | "chair" | "equipment" | undefined;
|
|
93
|
+
equipment?: string[] | undefined;
|
|
94
|
+
rules?: Record<string, unknown> | undefined;
|
|
95
|
+
}, {
|
|
96
|
+
organization_id: string;
|
|
97
|
+
name: string;
|
|
98
|
+
actor: {
|
|
99
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
100
|
+
id: string;
|
|
101
|
+
on_behalf_of?: {
|
|
102
|
+
type: string;
|
|
103
|
+
id: string;
|
|
104
|
+
} | undefined;
|
|
105
|
+
};
|
|
106
|
+
location?: string | undefined;
|
|
107
|
+
type?: "room" | "box" | "chair" | "equipment" | undefined;
|
|
108
|
+
equipment?: string[] | undefined;
|
|
109
|
+
capacity?: number | undefined;
|
|
110
|
+
buffer_minutes?: number | undefined;
|
|
111
|
+
rules?: Record<string, unknown> | undefined;
|
|
112
|
+
}>;
|
|
113
|
+
handler: (client: ServicialoAdapter, args: {
|
|
114
|
+
organization_id: string;
|
|
115
|
+
name: string;
|
|
116
|
+
type?: string;
|
|
117
|
+
capacity?: number;
|
|
118
|
+
buffer_minutes?: number;
|
|
119
|
+
equipment?: string[];
|
|
120
|
+
location?: string;
|
|
121
|
+
rules?: Record<string, unknown>;
|
|
122
|
+
actor: z.infer<typeof ActorSchema>;
|
|
123
|
+
}) => Promise<unknown>;
|
|
124
|
+
};
|
|
125
|
+
'resource.update': {
|
|
126
|
+
description: string;
|
|
127
|
+
schema: z.ZodObject<{
|
|
128
|
+
resource_id: z.ZodString;
|
|
129
|
+
name: z.ZodOptional<z.ZodString>;
|
|
130
|
+
type: z.ZodOptional<z.ZodEnum<["room", "box", "chair", "equipment"]>>;
|
|
131
|
+
capacity: z.ZodOptional<z.ZodNumber>;
|
|
132
|
+
buffer_minutes: z.ZodOptional<z.ZodNumber>;
|
|
133
|
+
equipment: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
134
|
+
location: z.ZodOptional<z.ZodString>;
|
|
135
|
+
rules: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
136
|
+
actor: z.ZodObject<{
|
|
137
|
+
type: z.ZodEnum<["client", "provider", "organization", "agent"]>;
|
|
138
|
+
id: z.ZodString;
|
|
139
|
+
on_behalf_of: z.ZodOptional<z.ZodObject<{
|
|
140
|
+
type: z.ZodString;
|
|
141
|
+
id: z.ZodString;
|
|
142
|
+
}, "strip", z.ZodTypeAny, {
|
|
143
|
+
type: string;
|
|
144
|
+
id: string;
|
|
145
|
+
}, {
|
|
146
|
+
type: string;
|
|
147
|
+
id: string;
|
|
148
|
+
}>>;
|
|
149
|
+
}, "strip", z.ZodTypeAny, {
|
|
150
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
151
|
+
id: string;
|
|
152
|
+
on_behalf_of?: {
|
|
153
|
+
type: string;
|
|
154
|
+
id: string;
|
|
155
|
+
} | undefined;
|
|
156
|
+
}, {
|
|
157
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
158
|
+
id: string;
|
|
159
|
+
on_behalf_of?: {
|
|
160
|
+
type: string;
|
|
161
|
+
id: string;
|
|
162
|
+
} | undefined;
|
|
163
|
+
}>;
|
|
164
|
+
}, "strip", z.ZodTypeAny, {
|
|
165
|
+
resource_id: string;
|
|
166
|
+
actor: {
|
|
167
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
168
|
+
id: string;
|
|
169
|
+
on_behalf_of?: {
|
|
170
|
+
type: string;
|
|
171
|
+
id: string;
|
|
172
|
+
} | undefined;
|
|
173
|
+
};
|
|
174
|
+
location?: string | undefined;
|
|
175
|
+
type?: "room" | "box" | "chair" | "equipment" | undefined;
|
|
176
|
+
name?: string | undefined;
|
|
177
|
+
equipment?: string[] | undefined;
|
|
178
|
+
capacity?: number | undefined;
|
|
179
|
+
buffer_minutes?: number | undefined;
|
|
180
|
+
rules?: Record<string, unknown> | undefined;
|
|
181
|
+
}, {
|
|
182
|
+
resource_id: string;
|
|
183
|
+
actor: {
|
|
184
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
185
|
+
id: string;
|
|
186
|
+
on_behalf_of?: {
|
|
187
|
+
type: string;
|
|
188
|
+
id: string;
|
|
189
|
+
} | undefined;
|
|
190
|
+
};
|
|
191
|
+
location?: string | undefined;
|
|
192
|
+
type?: "room" | "box" | "chair" | "equipment" | undefined;
|
|
193
|
+
name?: string | undefined;
|
|
194
|
+
equipment?: string[] | undefined;
|
|
195
|
+
capacity?: number | undefined;
|
|
196
|
+
buffer_minutes?: number | undefined;
|
|
197
|
+
rules?: Record<string, unknown> | undefined;
|
|
198
|
+
}>;
|
|
199
|
+
handler: (client: ServicialoAdapter, args: {
|
|
200
|
+
resource_id: string;
|
|
201
|
+
name?: string;
|
|
202
|
+
type?: string;
|
|
203
|
+
capacity?: number;
|
|
204
|
+
buffer_minutes?: number;
|
|
205
|
+
equipment?: string[];
|
|
206
|
+
location?: string;
|
|
207
|
+
rules?: Record<string, unknown>;
|
|
208
|
+
actor: z.infer<typeof ActorSchema>;
|
|
209
|
+
}) => Promise<unknown>;
|
|
210
|
+
};
|
|
211
|
+
'resource.delete': {
|
|
212
|
+
description: string;
|
|
213
|
+
schema: z.ZodObject<{
|
|
214
|
+
resource_id: z.ZodString;
|
|
215
|
+
actor: z.ZodObject<{
|
|
216
|
+
type: z.ZodEnum<["client", "provider", "organization", "agent"]>;
|
|
217
|
+
id: z.ZodString;
|
|
218
|
+
on_behalf_of: z.ZodOptional<z.ZodObject<{
|
|
219
|
+
type: z.ZodString;
|
|
220
|
+
id: z.ZodString;
|
|
221
|
+
}, "strip", z.ZodTypeAny, {
|
|
222
|
+
type: string;
|
|
223
|
+
id: string;
|
|
224
|
+
}, {
|
|
225
|
+
type: string;
|
|
226
|
+
id: string;
|
|
227
|
+
}>>;
|
|
228
|
+
}, "strip", z.ZodTypeAny, {
|
|
229
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
230
|
+
id: string;
|
|
231
|
+
on_behalf_of?: {
|
|
232
|
+
type: string;
|
|
233
|
+
id: string;
|
|
234
|
+
} | undefined;
|
|
235
|
+
}, {
|
|
236
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
237
|
+
id: string;
|
|
238
|
+
on_behalf_of?: {
|
|
239
|
+
type: string;
|
|
240
|
+
id: string;
|
|
241
|
+
} | undefined;
|
|
242
|
+
}>;
|
|
243
|
+
}, "strip", z.ZodTypeAny, {
|
|
244
|
+
resource_id: string;
|
|
245
|
+
actor: {
|
|
246
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
247
|
+
id: string;
|
|
248
|
+
on_behalf_of?: {
|
|
249
|
+
type: string;
|
|
250
|
+
id: string;
|
|
251
|
+
} | undefined;
|
|
252
|
+
};
|
|
253
|
+
}, {
|
|
254
|
+
resource_id: string;
|
|
255
|
+
actor: {
|
|
256
|
+
type: "client" | "provider" | "organization" | "agent";
|
|
257
|
+
id: string;
|
|
258
|
+
on_behalf_of?: {
|
|
259
|
+
type: string;
|
|
260
|
+
id: string;
|
|
261
|
+
} | undefined;
|
|
262
|
+
};
|
|
263
|
+
}>;
|
|
264
|
+
handler: (client: ServicialoAdapter, args: {
|
|
265
|
+
resource_id: string;
|
|
266
|
+
actor: z.infer<typeof ActorSchema>;
|
|
267
|
+
}) => Promise<unknown>;
|
|
268
|
+
};
|
|
269
|
+
'resource.get_availability': {
|
|
270
|
+
description: string;
|
|
271
|
+
schema: z.ZodObject<{
|
|
272
|
+
resource_id: z.ZodString;
|
|
273
|
+
date_from: z.ZodString;
|
|
274
|
+
date_to: z.ZodString;
|
|
275
|
+
timezone: z.ZodOptional<z.ZodString>;
|
|
276
|
+
}, "strip", z.ZodTypeAny, {
|
|
277
|
+
resource_id: string;
|
|
278
|
+
date_from: string;
|
|
279
|
+
date_to: string;
|
|
280
|
+
timezone?: string | undefined;
|
|
281
|
+
}, {
|
|
282
|
+
resource_id: string;
|
|
283
|
+
date_from: string;
|
|
284
|
+
date_to: string;
|
|
285
|
+
timezone?: string | undefined;
|
|
286
|
+
}>;
|
|
287
|
+
handler: (client: ServicialoAdapter, args: {
|
|
288
|
+
resource_id: string;
|
|
289
|
+
date_from: string;
|
|
290
|
+
date_to: string;
|
|
291
|
+
timezone?: string;
|
|
292
|
+
}) => Promise<unknown>;
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
//# sourceMappingURL=resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/tools/authenticated/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAA8C,MAAM,eAAe,CAAC;AAExF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;0BAWE,iBAAiB,QAAQ;YAAE,eAAe,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE;;;;;;;;;;;0BAexF,iBAAiB,QAAQ;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAyBhD,iBAAiB,QAAQ;YAC/C,eAAe,EAAE,MAAM,CAAC;YACxB,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;YACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;SACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAmCuB,iBAAiB,QAAQ;YAC/C,WAAW,EAAE,MAAM,CAAC;YACpB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;YACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;SACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAqBuB,iBAAiB,QAAQ;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;0BAiBpF,iBAAiB,QAAQ;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE;;CAQlI,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ActorSchema } from '../schemas.js';
|
|
3
|
+
export const resourceTools = {
|
|
4
|
+
'resource.list': {
|
|
5
|
+
description: '[Gestión de Recursos] Lista los recursos físicos de una organización (salas, boxes, sillas, equipamiento). Soporta filtros opcionales por tipo y estado activo.',
|
|
6
|
+
schema: z.object({
|
|
7
|
+
organization_id: z.string().describe('ID de la organización'),
|
|
8
|
+
type: z.enum(['room', 'box', 'chair', 'equipment']).optional()
|
|
9
|
+
.describe('Filtrar por tipo de recurso'),
|
|
10
|
+
is_active: z.boolean().optional()
|
|
11
|
+
.describe('Filtrar por estado activo/inactivo'),
|
|
12
|
+
}),
|
|
13
|
+
handler: async (client, args) => {
|
|
14
|
+
return client.get('/coordinalo/resources', {
|
|
15
|
+
organizationId: args.organization_id,
|
|
16
|
+
type: args.type,
|
|
17
|
+
isActive: args.is_active !== undefined ? String(args.is_active) : undefined,
|
|
18
|
+
});
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
'resource.get': {
|
|
22
|
+
description: '[Gestión de Recursos] Obtiene los detalles completos de un recurso físico, incluyendo sus bloques de disponibilidad recurrente (ResourceAvailability).',
|
|
23
|
+
schema: z.object({
|
|
24
|
+
resource_id: z.string().describe('ID del recurso'),
|
|
25
|
+
}),
|
|
26
|
+
handler: async (client, args) => {
|
|
27
|
+
return client.get(`/coordinalo/resources/${args.resource_id}`);
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
'resource.create': {
|
|
31
|
+
description: '[Gestión de Recursos] Crea un nuevo recurso físico para una organización. El recurso se crea activo por defecto. Valida todos los campos según el schema Resource (Dimensión 3.5b del protocolo).',
|
|
32
|
+
schema: z.object({
|
|
33
|
+
organization_id: z.string().describe('ID de la organización propietaria'),
|
|
34
|
+
name: z.string().describe('Nombre del recurso (ej: "Box 3", "Sala Principal")'),
|
|
35
|
+
type: z.enum(['room', 'box', 'chair', 'equipment']).optional()
|
|
36
|
+
.describe('Tipo de recurso físico'),
|
|
37
|
+
capacity: z.number().default(1)
|
|
38
|
+
.describe('Capacidad simultánea del recurso'),
|
|
39
|
+
buffer_minutes: z.number().default(0)
|
|
40
|
+
.describe('Minutos de preparación entre sesiones'),
|
|
41
|
+
equipment: z.array(z.string()).optional()
|
|
42
|
+
.describe('Equipamiento disponible en el recurso'),
|
|
43
|
+
location: z.string().optional()
|
|
44
|
+
.describe('Ubicación física del recurso dentro de la organización'),
|
|
45
|
+
rules: z.record(z.unknown()).optional()
|
|
46
|
+
.describe('Reglas específicas del recurso'),
|
|
47
|
+
actor: ActorSchema.describe('Quién realiza la acción'),
|
|
48
|
+
}),
|
|
49
|
+
handler: async (client, args) => {
|
|
50
|
+
return client.post('/coordinalo/resources', {
|
|
51
|
+
organizationId: args.organization_id,
|
|
52
|
+
name: args.name,
|
|
53
|
+
type: args.type,
|
|
54
|
+
capacity: args.capacity,
|
|
55
|
+
bufferMinutes: args.buffer_minutes,
|
|
56
|
+
equipment: args.equipment,
|
|
57
|
+
location: args.location,
|
|
58
|
+
rules: args.rules,
|
|
59
|
+
actor: args.actor,
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
'resource.update': {
|
|
64
|
+
description: '[Gestión de Recursos] Actualiza parcialmente un recurso físico existente (patch semantics). Solo se modifican los campos proporcionados; los demás permanecen sin cambio.',
|
|
65
|
+
schema: z.object({
|
|
66
|
+
resource_id: z.string().describe('ID del recurso a actualizar'),
|
|
67
|
+
name: z.string().optional().describe('Nuevo nombre del recurso'),
|
|
68
|
+
type: z.enum(['room', 'box', 'chair', 'equipment']).optional()
|
|
69
|
+
.describe('Nuevo tipo de recurso'),
|
|
70
|
+
capacity: z.number().optional()
|
|
71
|
+
.describe('Nueva capacidad simultánea'),
|
|
72
|
+
buffer_minutes: z.number().optional()
|
|
73
|
+
.describe('Nuevos minutos de preparación entre sesiones'),
|
|
74
|
+
equipment: z.array(z.string()).optional()
|
|
75
|
+
.describe('Nuevo equipamiento disponible'),
|
|
76
|
+
location: z.string().optional()
|
|
77
|
+
.describe('Nueva ubicación física'),
|
|
78
|
+
rules: z.record(z.unknown()).optional()
|
|
79
|
+
.describe('Nuevas reglas específicas'),
|
|
80
|
+
actor: ActorSchema.describe('Quién realiza la acción'),
|
|
81
|
+
}),
|
|
82
|
+
handler: async (client, args) => {
|
|
83
|
+
return client.patch(`/coordinalo/resources/${args.resource_id}`, {
|
|
84
|
+
name: args.name,
|
|
85
|
+
type: args.type,
|
|
86
|
+
capacity: args.capacity,
|
|
87
|
+
bufferMinutes: args.buffer_minutes,
|
|
88
|
+
equipment: args.equipment,
|
|
89
|
+
location: args.location,
|
|
90
|
+
rules: args.rules,
|
|
91
|
+
actor: args.actor,
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
'resource.delete': {
|
|
96
|
+
description: '[Gestión de Recursos] Desactiva un recurso físico (soft delete — establece is_active = false). El recurso nunca se elimina físicamente; solo se marca como inactivo y deja de aparecer en búsquedas y disponibilidad.',
|
|
97
|
+
schema: z.object({
|
|
98
|
+
resource_id: z.string().describe('ID del recurso a desactivar'),
|
|
99
|
+
actor: ActorSchema.describe('Quién realiza la acción'),
|
|
100
|
+
}),
|
|
101
|
+
handler: async (client, args) => {
|
|
102
|
+
return client.patch(`/coordinalo/resources/${args.resource_id}`, {
|
|
103
|
+
isActive: false,
|
|
104
|
+
actor: args.actor,
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
'resource.get_availability': {
|
|
109
|
+
description: '[Gestión de Recursos] Consulta la disponibilidad de un recurso físico en un rango de fechas. Retorna los slots disponibles del recurso independiente de cualquier servicio — es una consulta pura al calendario del recurso. Útil para planificación de capacidad y verificación de conflictos.',
|
|
110
|
+
schema: z.object({
|
|
111
|
+
resource_id: z.string().describe('ID del recurso'),
|
|
112
|
+
date_from: z.string().describe('Fecha de inicio del rango (ISO date, ej: 2026-03-15)'),
|
|
113
|
+
date_to: z.string().describe('Fecha de fin del rango (ISO date, ej: 2026-03-22)'),
|
|
114
|
+
timezone: z.string().optional().describe('Zona horaria IANA (ej: America/Santiago). Por defecto usa la del recurso.'),
|
|
115
|
+
}),
|
|
116
|
+
handler: async (client, args) => {
|
|
117
|
+
return client.get(`/coordinalo/resources/${args.resource_id}/availability`, {
|
|
118
|
+
dateFrom: args.date_from,
|
|
119
|
+
dateTo: args.date_to,
|
|
120
|
+
timezone: args.timezone,
|
|
121
|
+
});
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/tools/authenticated/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAA8C,MAAM,eAAe,CAAC;AAExF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,eAAe,EAAE;QACf,WAAW,EACT,iKAAiK;QACnK,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC7D,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;iBAC3D,QAAQ,CAAC,6BAA6B,CAAC;YAC1C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;iBAC9B,QAAQ,CAAC,oCAAoC,CAAC;SAClD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAAqE,EAAE,EAAE;YAClH,OAAO,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE;gBACzC,cAAc,EAAE,IAAI,CAAC,eAAe;gBACpC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;aAC5E,CAAC,CAAC;QACL,CAAC;KACF;IAED,cAAc,EAAE;QACd,WAAW,EACT,wJAAwJ;QAC1J,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SACnD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA6B,EAAE,EAAE;YAC1E,OAAO,MAAM,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACjE,CAAC;KACF;IAED,iBAAiB,EAAE;QACjB,WAAW,EACT,mMAAmM;QACrM,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACzE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YAC/E,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;iBAC3D,QAAQ,CAAC,wBAAwB,CAAC;YACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC5B,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;iBAClC,QAAQ,CAAC,uCAAuC,CAAC;YACpD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;iBACtC,QAAQ,CAAC,uCAAuC,CAAC;YACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBAC5B,QAAQ,CAAC,wDAAwD,CAAC;YACrE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;iBACpC,QAAQ,CAAC,gCAAgC,CAAC;YAC7C,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SACvD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAU1C,EAAE,EAAE;YACH,OAAO,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBAC1C,cAAc,EAAE,IAAI,CAAC,eAAe;gBACpC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,aAAa,EAAE,IAAI,CAAC,cAAc;gBAClC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;KACF;IAED,iBAAiB,EAAE;QACjB,WAAW,EACT,2KAA2K;QAC7K,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAChE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;iBAC3D,QAAQ,CAAC,uBAAuB,CAAC;YACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBAC5B,QAAQ,CAAC,4BAA4B,CAAC;YACzC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBAClC,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;iBACtC,QAAQ,CAAC,+BAA+B,CAAC;YAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBAC5B,QAAQ,CAAC,wBAAwB,CAAC;YACrC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;iBACpC,QAAQ,CAAC,2BAA2B,CAAC;YACxC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SACvD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAU1C,EAAE,EAAE;YACH,OAAO,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,WAAW,EAAE,EAAE;gBAC/D,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,aAAa,EAAE,IAAI,CAAC,cAAc;gBAClC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;KACF;IAED,iBAAiB,EAAE;QACjB,WAAW,EACT,uNAAuN;QACzN,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC/D,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SACvD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAAiE,EAAE,EAAE;YAC9G,OAAO,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,WAAW,EAAE,EAAE;gBAC/D,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;KACF;IAED,2BAA2B,EAAE;QAC3B,WAAW,EACT,iSAAiS;QACnS,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAClD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;YACtF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACjF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2EAA2E,CAAC;SACtH,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAAoF,EAAE,EAAE;YACjI,OAAO,MAAM,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,WAAW,eAAe,EAAE;gBAC1E,QAAQ,EAAE,IAAI,CAAC,SAAS;gBACxB,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ServicialoAdapter } from '../../adapter.js';
|
|
3
|
+
export declare const a2aTools: {
|
|
4
|
+
'a2a.get_agent_card': {
|
|
5
|
+
description: string;
|
|
6
|
+
schema: z.ZodObject<{
|
|
7
|
+
org_slug: z.ZodString;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
org_slug: string;
|
|
10
|
+
}, {
|
|
11
|
+
org_slug: string;
|
|
12
|
+
}>;
|
|
13
|
+
handler: (client: ServicialoAdapter, args: {
|
|
14
|
+
org_slug: string;
|
|
15
|
+
}) => Promise<unknown>;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=a2a.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../../src/tools/public/a2a.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,eAAO,MAAM,QAAQ;;;;;;;;;;0BAQO,iBAAiB,QAAQ;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE;;CAOxE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const a2aTools = {
|
|
3
|
+
'a2a.get_agent_card': {
|
|
4
|
+
description: 'Get the A2A Agent Card for a Servicialo-compatible organization. ' +
|
|
5
|
+
'Use this to discover booking capabilities before attempting to book.',
|
|
6
|
+
schema: z.object({
|
|
7
|
+
org_slug: z.string().describe('Organization slug (e.g. "clinica-dental-sur")'),
|
|
8
|
+
}),
|
|
9
|
+
handler: async (client, args) => {
|
|
10
|
+
const result = await client.pub.get(`/api/${args.org_slug}/.well-known/agent.json`);
|
|
11
|
+
return result;
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=a2a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../../src/tools/public/a2a.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,oBAAoB,EAAE;QACpB,WAAW,EACT,mEAAmE;YACnE,sEAAsE;QACxE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;SAC/E,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA0B,EAAE,EAAE;YACvE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CACjC,QAAQ,IAAI,CAAC,QAAQ,yBAAyB,CAC/C,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;KACF;CACF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ServicialoAdapter } from '../../adapter.js';
|
|
3
3
|
export declare const publicAvailabilityTools: {
|
|
4
4
|
'scheduling.check_availability': {
|
|
5
5
|
description: string;
|
|
@@ -25,7 +25,7 @@ export declare const publicAvailabilityTools: {
|
|
|
25
25
|
provider_id?: string | undefined;
|
|
26
26
|
resource_id?: string | undefined;
|
|
27
27
|
}>;
|
|
28
|
-
handler: (client:
|
|
28
|
+
handler: (client: ServicialoAdapter, args: {
|
|
29
29
|
org_slug: string;
|
|
30
30
|
service_id?: string;
|
|
31
31
|
provider_id?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"availability.d.ts","sourceRoot":"","sources":["../../../src/tools/public/availability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"availability.d.ts","sourceRoot":"","sources":["../../../src/tools/public/availability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;0BAWR,iBAAiB,QAAQ;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE;;CAU7K,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"availability.js","sourceRoot":"","sources":["../../../src/tools/public/availability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,+BAA+B,EAAE;QAC/B,WAAW,EAAE,oSAAoS;QACjT,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACxD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YACxE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC1E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iFAAiF,CAAC;YAC9H,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACzE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;SACrE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"availability.js","sourceRoot":"","sources":["../../../src/tools/public/availability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,+BAA+B,EAAE;QAC/B,WAAW,EAAE,oSAAoS;QACjT,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACxD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YACxE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC1E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iFAAiF,CAAC;YAC9H,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACzE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;SACrE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA+H,EAAE,EAAE;YAC5K,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,QAAQ,eAAe,EAAE;gBACrE,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,UAAU,EAAE,IAAI,CAAC,WAAW;gBAC5B,UAAU,EAAE,IAAI,CAAC,WAAW;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,EAAE,EAAE,IAAI,CAAC,OAAO;aACjB,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ServicialoAdapter } from '../../adapter.js';
|
|
3
3
|
export declare const registryTools: {
|
|
4
4
|
'registry.search': {
|
|
5
5
|
description: string;
|
|
@@ -19,13 +19,18 @@ export declare const registryTools: {
|
|
|
19
19
|
country?: string | undefined;
|
|
20
20
|
limit?: number | undefined;
|
|
21
21
|
}>;
|
|
22
|
-
handler: (client:
|
|
22
|
+
handler: (client: ServicialoAdapter, args: {
|
|
23
23
|
vertical: string;
|
|
24
24
|
location?: string;
|
|
25
25
|
country?: string;
|
|
26
26
|
limit?: number;
|
|
27
27
|
}) => Promise<unknown>;
|
|
28
28
|
};
|
|
29
|
+
'registry.manifest': {
|
|
30
|
+
description: string;
|
|
31
|
+
schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
32
|
+
handler: (client: ServicialoAdapter) => Promise<unknown>;
|
|
33
|
+
};
|
|
29
34
|
'registry.get_organization': {
|
|
30
35
|
description: string;
|
|
31
36
|
schema: z.ZodObject<{
|
|
@@ -38,7 +43,7 @@ export declare const registryTools: {
|
|
|
38
43
|
org_slug: string;
|
|
39
44
|
country?: string | undefined;
|
|
40
45
|
}>;
|
|
41
|
-
handler: (client:
|
|
46
|
+
handler: (client: ServicialoAdapter, args: {
|
|
42
47
|
org_slug: string;
|
|
43
48
|
country?: string;
|
|
44
49
|
}) => Promise<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/public/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/public/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;0BASE,iBAAiB,QAAQ;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;0BAclG,iBAAiB;;;;;;;;;;;;;;0BAYjB,iBAAiB,QAAQ;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE;;CAO1F,CAAC"}
|
|
@@ -18,6 +18,14 @@ export const registryTools = {
|
|
|
18
18
|
return result;
|
|
19
19
|
},
|
|
20
20
|
},
|
|
21
|
+
'registry.manifest': {
|
|
22
|
+
description: 'Obtiene el manifiesto del servidor Servicialo: versión del protocolo, nombre, descripción y endpoints disponibles',
|
|
23
|
+
schema: z.object({}),
|
|
24
|
+
handler: async (client) => {
|
|
25
|
+
const result = await client.pub.get('/api/servicialo/manifest');
|
|
26
|
+
return result;
|
|
27
|
+
},
|
|
28
|
+
},
|
|
21
29
|
'registry.get_organization': {
|
|
22
30
|
description: 'Obtiene el detalle público de una organización: servicios, profesionales y configuración de booking',
|
|
23
31
|
schema: z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/public/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,iBAAiB,EAAE;QACjB,WAAW,EAAE,sFAAsF;QACnG,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;YAC7F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YACnG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SACxE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/public/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,iBAAiB,EAAE;QACjB,WAAW,EAAE,sFAAsF;QACnG,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;YAC7F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YACnG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SACxE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA+E,EAAE,EAAE;YAC5H,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,0BAA0B,EAAE;gBAC9D,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;KACF;IAED,mBAAmB,EAAE;QACnB,WAAW,EAAE,mHAAmH;QAChI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAChE,OAAO,MAAM,CAAC;QAChB,CAAC;KACF;IAED,2BAA2B,EAAE;QAC3B,WAAW,EAAE,qGAAqG;QAClH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YACjF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC;SACpG,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA4C,EAAE,EAAE;YACzF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,QAAQ,WAAW,EAAE;gBAC/E,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;aAC9B,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;KACF;CACF,CAAC"}
|