paperclip-plugin-autopilot-ops 0.1.30 → 0.1.32

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/dist/manifest.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/manifest.ts
2
2
  var PLUGIN_ID = "alephoo.autopilot-ops";
3
- var PLUGIN_VERSION = "0.1.30";
3
+ var PLUGIN_VERSION = "0.1.32";
4
4
  var DB_NAMESPACE_SLUG = "autopilot_ops";
5
5
  var PAGE_ROUTE = "autopilot";
6
6
  var TOOL_NAMES = {
@@ -9,11 +9,16 @@ var TOOL_NAMES = {
9
9
  abrirCaso: "ops_abrir_caso",
10
10
  transicionar: "ops_transicionar",
11
11
  registrarAccion: "ops_registrar_accion",
12
+ reservarEscritura: "ops_reservar_escritura",
13
+ confirmarEscritura: "ops_confirmar_escritura",
14
+ cerrarEscritura: "ops_cerrar_escritura",
15
+ verificarEscritura: "ops_verificar_escritura",
12
16
  consultarIndicador: "ops_consultar_indicador",
13
17
  publicarTablero: "ops_publicar_tablero",
14
18
  listarTableros: "ops_listar_tableros",
15
19
  listarReglas: "ops_listar_reglas",
16
- informarPruebaRegla: "ops_informar_prueba_regla"
20
+ informarPruebaRegla: "ops_informar_prueba_regla",
21
+ evaluarRentabilidad: "ops_evaluar_rentabilidad"
17
22
  };
18
23
  var DATA_KEYS = {
19
24
  tablero: "tablero",
@@ -100,6 +105,16 @@ var manifest = {
100
105
  required: ["reglaId", "alcanza"]
101
106
  }
102
107
  },
108
+ {
109
+ name: TOOL_NAMES.evaluarRentabilidad,
110
+ displayName: "Evaluar rentabilidad",
111
+ description: "Calcula la rentabilidad de muchas pr\xE1cticas de una vez, sin abrir casos: para cada lectura (pr\xE1ctica y financiador, como la devuelve leer-rentabilidad.mjs) devuelve el valor del convenio, el honorario (rango por profesional), los insumos, el margen y la clase (perdida, margen_bajo, rentable o datos_incompletos) con las opciones de la instituci\xF3n. Sirve para el tablero completo y para saber qu\xE9 casos abrir. Solo lectura.",
112
+ parametersSchema: {
113
+ type: "object",
114
+ properties: { lecturas: { type: "array", items: { type: "object" } } },
115
+ required: ["lecturas"]
116
+ }
117
+ },
103
118
  {
104
119
  name: TOOL_NAMES.leerCaso,
105
120
  displayName: "Leer caso",
@@ -161,6 +176,58 @@ var manifest = {
161
176
  required: ["casoId", "tipo", "conector", "objetivo", "resultado"]
162
177
  }
163
178
  },
179
+ {
180
+ name: TOOL_NAMES.reservarEscritura,
181
+ displayName: "Reservar una escritura en el HIS",
182
+ description: "Paso 1 de toda escritura en el HIS: antes de tocarlo, dec\xED qu\xE9 vas a escribir (clave de negocio \xFAnica, p. ej. turno:2026-10-20T10:00|prof:15|sol:8812), sobre qu\xE9 registro (p. ej. solicitud:8812) y qu\xE9 le\xEDste de ese registro reci\xE9n (leido). El plugin la rechaza si el freno est\xE1 puesto, fuera de horario, si se pas\xF3 el tope del d\xEDa, si esa escritura ya se hizo o qued\xF3 dudosa, o si otro trabajo escribe el mismo registro. Devuelve el id de la reserva (vence en 15 minutos).",
183
+ parametersSchema: {
184
+ type: "object",
185
+ properties: {
186
+ casoId: { type: "string" },
187
+ clave: { type: "string", description: "Identifica la escritura de negocio: la misma clave no se escribe dos veces." },
188
+ registro: { type: "string", description: "El registro del HIS que se toca (tipo:id)." },
189
+ conector: { type: "string", enum: ["api", "pantalla", "archivo"] },
190
+ objetivo: { type: "string", description: "Qu\xE9 pantalla, endpoint o archivo." },
191
+ leido: { type: "object", description: "Lo que le\xEDste del registro ahora (campos y valores); se compara justo antes de guardar." }
192
+ },
193
+ required: ["casoId", "clave", "registro", "conector", "objetivo", "leido"]
194
+ }
195
+ },
196
+ {
197
+ name: TOOL_NAMES.confirmarEscritura,
198
+ displayName: "Confirmar antes de guardar",
199
+ description: "Paso 2 (solo si la funci\xF3n lo exige, sobre sistemas que no validan por s\xED mismos): justo antes de guardar, volv\xE9 a leer el registro y mand\xE1 lo le\xEDdo con los mismos campos. Si cambi\xF3 desde la reserva (lo toc\xF3 una persona), la escritura se descarta: no guardes y volv\xE9 a proponer.",
200
+ parametersSchema: {
201
+ type: "object",
202
+ properties: { accionId: { type: "string" }, leido: { type: "object" } },
203
+ required: ["accionId", "leido"]
204
+ }
205
+ },
206
+ {
207
+ name: TOOL_NAMES.cerrarEscritura,
208
+ displayName: "Cerrar una escritura",
209
+ description: "Paso 3: c\xF3mo sali\xF3 la escritura. ok (qued\xF3 escrita; si la funci\xF3n exige confirmar, solo despu\xE9s de confirmarla), error (no se escribi\xF3 nada) o incierta (no sab\xE9s si qued\xF3 escrita: no reintentes; verificala con ops_verificar_escritura). Con 3 fallas seguidas la funci\xF3n se frena sola.",
210
+ parametersSchema: {
211
+ type: "object",
212
+ properties: {
213
+ accionId: { type: "string" },
214
+ resultado: { type: "string", enum: ["ok", "error", "incierta"] },
215
+ evidencia: { type: "object" },
216
+ detalle: { type: "string" }
217
+ },
218
+ required: ["accionId", "resultado"]
219
+ }
220
+ },
221
+ {
222
+ name: TOOL_NAMES.verificarEscritura,
223
+ displayName: "Verificar una escritura dudosa",
224
+ description: "Para una escritura que qued\xF3 incierta: rele\xE9 el HIS y dec\xED si qued\xF3 escrita (quedo true: se da por hecha y segu\xEDs), si no qued\xF3 (quedo false: se puede reintentar) o si no lo pod\xE9s saber (quedo null: despu\xE9s de 2 intentos o una hora pasa a una persona). Mand\xE1 en leido lo que rele\xEDste.",
225
+ parametersSchema: {
226
+ type: "object",
227
+ properties: { accionId: { type: "string" }, quedo: { type: ["boolean", "null"] }, leido: { type: "object" }, detalle: { type: "string" } },
228
+ required: ["accionId", "quedo", "leido"]
229
+ }
230
+ },
164
231
  {
165
232
  name: TOOL_NAMES.consultarIndicador,
166
233
  displayName: "Consultar indicador",
@@ -386,6 +453,22 @@ var manifest = {
386
453
  capability: "api.routes.register",
387
454
  companyResolution: { from: "body", key: "companyId" }
388
455
  },
456
+ {
457
+ routeKey: "insumos-practica",
458
+ method: "GET",
459
+ path: "/insumos-practica",
460
+ auth: "board",
461
+ capability: "api.routes.register",
462
+ companyResolution: { from: "query", key: "companyId" }
463
+ },
464
+ {
465
+ routeKey: "guardar-insumos-practica",
466
+ method: "POST",
467
+ path: "/insumos-practica",
468
+ auth: "board",
469
+ capability: "api.routes.register",
470
+ companyResolution: { from: "body", key: "companyId" }
471
+ },
389
472
  {
390
473
  routeKey: "contactos",
391
474
  method: "GET",
package/dist/ui/index.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
 
9
9
  // src/manifest.ts
10
10
  var PLUGIN_ID = "alephoo.autopilot-ops";
11
- var PLUGIN_VERSION = "0.1.30";
11
+ var PLUGIN_VERSION = "0.1.32";
12
12
  var DB_NAMESPACE_SLUG = "autopilot_ops";
13
13
  var PAGE_ROUTE = "autopilot";
14
14
  var TOOL_NAMES = {
@@ -17,11 +17,16 @@ var TOOL_NAMES = {
17
17
  abrirCaso: "ops_abrir_caso",
18
18
  transicionar: "ops_transicionar",
19
19
  registrarAccion: "ops_registrar_accion",
20
+ reservarEscritura: "ops_reservar_escritura",
21
+ confirmarEscritura: "ops_confirmar_escritura",
22
+ cerrarEscritura: "ops_cerrar_escritura",
23
+ verificarEscritura: "ops_verificar_escritura",
20
24
  consultarIndicador: "ops_consultar_indicador",
21
25
  publicarTablero: "ops_publicar_tablero",
22
26
  listarTableros: "ops_listar_tableros",
23
27
  listarReglas: "ops_listar_reglas",
24
- informarPruebaRegla: "ops_informar_prueba_regla"
28
+ informarPruebaRegla: "ops_informar_prueba_regla",
29
+ evaluarRentabilidad: "ops_evaluar_rentabilidad"
25
30
  };
26
31
  var DATA_KEYS = {
27
32
  tablero: "tablero",
@@ -108,6 +113,16 @@ var manifest = {
108
113
  required: ["reglaId", "alcanza"]
109
114
  }
110
115
  },
116
+ {
117
+ name: TOOL_NAMES.evaluarRentabilidad,
118
+ displayName: "Evaluar rentabilidad",
119
+ description: "Calcula la rentabilidad de muchas pr\xE1cticas de una vez, sin abrir casos: para cada lectura (pr\xE1ctica y financiador, como la devuelve leer-rentabilidad.mjs) devuelve el valor del convenio, el honorario (rango por profesional), los insumos, el margen y la clase (perdida, margen_bajo, rentable o datos_incompletos) con las opciones de la instituci\xF3n. Sirve para el tablero completo y para saber qu\xE9 casos abrir. Solo lectura.",
120
+ parametersSchema: {
121
+ type: "object",
122
+ properties: { lecturas: { type: "array", items: { type: "object" } } },
123
+ required: ["lecturas"]
124
+ }
125
+ },
111
126
  {
112
127
  name: TOOL_NAMES.leerCaso,
113
128
  displayName: "Leer caso",
@@ -169,6 +184,58 @@ var manifest = {
169
184
  required: ["casoId", "tipo", "conector", "objetivo", "resultado"]
170
185
  }
171
186
  },
187
+ {
188
+ name: TOOL_NAMES.reservarEscritura,
189
+ displayName: "Reservar una escritura en el HIS",
190
+ description: "Paso 1 de toda escritura en el HIS: antes de tocarlo, dec\xED qu\xE9 vas a escribir (clave de negocio \xFAnica, p. ej. turno:2026-10-20T10:00|prof:15|sol:8812), sobre qu\xE9 registro (p. ej. solicitud:8812) y qu\xE9 le\xEDste de ese registro reci\xE9n (leido). El plugin la rechaza si el freno est\xE1 puesto, fuera de horario, si se pas\xF3 el tope del d\xEDa, si esa escritura ya se hizo o qued\xF3 dudosa, o si otro trabajo escribe el mismo registro. Devuelve el id de la reserva (vence en 15 minutos).",
191
+ parametersSchema: {
192
+ type: "object",
193
+ properties: {
194
+ casoId: { type: "string" },
195
+ clave: { type: "string", description: "Identifica la escritura de negocio: la misma clave no se escribe dos veces." },
196
+ registro: { type: "string", description: "El registro del HIS que se toca (tipo:id)." },
197
+ conector: { type: "string", enum: ["api", "pantalla", "archivo"] },
198
+ objetivo: { type: "string", description: "Qu\xE9 pantalla, endpoint o archivo." },
199
+ leido: { type: "object", description: "Lo que le\xEDste del registro ahora (campos y valores); se compara justo antes de guardar." }
200
+ },
201
+ required: ["casoId", "clave", "registro", "conector", "objetivo", "leido"]
202
+ }
203
+ },
204
+ {
205
+ name: TOOL_NAMES.confirmarEscritura,
206
+ displayName: "Confirmar antes de guardar",
207
+ description: "Paso 2 (solo si la funci\xF3n lo exige, sobre sistemas que no validan por s\xED mismos): justo antes de guardar, volv\xE9 a leer el registro y mand\xE1 lo le\xEDdo con los mismos campos. Si cambi\xF3 desde la reserva (lo toc\xF3 una persona), la escritura se descarta: no guardes y volv\xE9 a proponer.",
208
+ parametersSchema: {
209
+ type: "object",
210
+ properties: { accionId: { type: "string" }, leido: { type: "object" } },
211
+ required: ["accionId", "leido"]
212
+ }
213
+ },
214
+ {
215
+ name: TOOL_NAMES.cerrarEscritura,
216
+ displayName: "Cerrar una escritura",
217
+ description: "Paso 3: c\xF3mo sali\xF3 la escritura. ok (qued\xF3 escrita; si la funci\xF3n exige confirmar, solo despu\xE9s de confirmarla), error (no se escribi\xF3 nada) o incierta (no sab\xE9s si qued\xF3 escrita: no reintentes; verificala con ops_verificar_escritura). Con 3 fallas seguidas la funci\xF3n se frena sola.",
218
+ parametersSchema: {
219
+ type: "object",
220
+ properties: {
221
+ accionId: { type: "string" },
222
+ resultado: { type: "string", enum: ["ok", "error", "incierta"] },
223
+ evidencia: { type: "object" },
224
+ detalle: { type: "string" }
225
+ },
226
+ required: ["accionId", "resultado"]
227
+ }
228
+ },
229
+ {
230
+ name: TOOL_NAMES.verificarEscritura,
231
+ displayName: "Verificar una escritura dudosa",
232
+ description: "Para una escritura que qued\xF3 incierta: rele\xE9 el HIS y dec\xED si qued\xF3 escrita (quedo true: se da por hecha y segu\xEDs), si no qued\xF3 (quedo false: se puede reintentar) o si no lo pod\xE9s saber (quedo null: despu\xE9s de 2 intentos o una hora pasa a una persona). Mand\xE1 en leido lo que rele\xEDste.",
233
+ parametersSchema: {
234
+ type: "object",
235
+ properties: { accionId: { type: "string" }, quedo: { type: ["boolean", "null"] }, leido: { type: "object" }, detalle: { type: "string" } },
236
+ required: ["accionId", "quedo", "leido"]
237
+ }
238
+ },
172
239
  {
173
240
  name: TOOL_NAMES.consultarIndicador,
174
241
  displayName: "Consultar indicador",
@@ -394,6 +461,22 @@ var manifest = {
394
461
  capability: "api.routes.register",
395
462
  companyResolution: { from: "body", key: "companyId" }
396
463
  },
464
+ {
465
+ routeKey: "insumos-practica",
466
+ method: "GET",
467
+ path: "/insumos-practica",
468
+ auth: "board",
469
+ capability: "api.routes.register",
470
+ companyResolution: { from: "query", key: "companyId" }
471
+ },
472
+ {
473
+ routeKey: "guardar-insumos-practica",
474
+ method: "POST",
475
+ path: "/insumos-practica",
476
+ auth: "board",
477
+ capability: "api.routes.register",
478
+ companyResolution: { from: "body", key: "companyId" }
479
+ },
397
480
  {
398
481
  routeKey: "contactos",
399
482
  method: "GET",