opencode-flema-engram-sidebar 0.3.0 → 0.4.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.
- package/README.md +110 -56
- package/dist/adapters/composite.d.ts +3 -0
- package/dist/adapters/composite.d.ts.map +1 -1
- package/dist/adapters/composite.js +35 -2
- package/dist/adapters/composite.js.map +1 -1
- package/dist/adapters/factory.d.ts +2 -0
- package/dist/adapters/factory.d.ts.map +1 -1
- package/dist/adapters/factory.js +15 -0
- package/dist/adapters/factory.js.map +1 -1
- package/dist/adapters/types.d.ts +2 -2
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/pi/sidebar.d.ts +49 -0
- package/dist/pi/sidebar.d.ts.map +1 -0
- package/dist/pi/sidebar.js +335 -0
- package/dist/pi/sidebar.js.map +1 -0
- package/dist/pi.d.ts +22 -0
- package/dist/pi.d.ts.map +1 -1
- package/dist/pi.js +133 -7
- package/dist/pi.js.map +1 -1
- package/dist/schemas/observation.d.ts +3 -3
- package/dist/schemas/observation.js +1 -1
- package/dist/schemas/observation.js.map +1 -1
- package/dist/schemas/project.d.ts +3 -3
- package/dist/schemas/project.js +1 -1
- package/dist/schemas/project.js.map +1 -1
- package/dist/schemas/session.d.ts +7 -7
- package/dist/utils/sdd-detector.d.ts.map +1 -1
- package/dist/utils/sdd-detector.js +6 -3
- package/dist/utils/sdd-detector.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://nodejs.org/)
|
|
6
6
|
[](https://github.com/oniricosistemas/flema-engram/blob/main/LICENSE)
|
|
7
7
|
|
|
8
|
-
Una integración local y de solo lectura que mantiene visible el contexto reciente de
|
|
8
|
+
Una integración local-first y de solo lectura que mantiene visible el contexto reciente de
|
|
9
9
|
[Engram](https://github.com/Gentleman-Programming/engram) mientras trabajás dentro de OpenCode o Pi/Gentle Shell.
|
|
10
10
|
|
|
11
11
|
La canción **“Y aún yo te recuerdo”** inspiró artísticamente la idea central: que la
|
|
@@ -18,15 +18,18 @@ sobre la obra.
|
|
|
18
18
|
> blockers, and ODD task progress by default. An MCP stdio adapter is included only as an optional
|
|
19
19
|
> integration path.
|
|
20
20
|
|
|
21
|
-
## Inicio rápido
|
|
21
|
+
## Inicio rápido — 0.4.0
|
|
22
|
+
|
|
23
|
+
Elegí el registro en `tui.json` para OpenCode o la [instalación Pi / Gentle Shell](#viewer-para-pi--gentle-shell).
|
|
24
|
+
No hace falta una instalación global npm para ninguno de los viewers.
|
|
22
25
|
|
|
23
26
|
### Requisitos
|
|
24
27
|
|
|
25
28
|
| Componente | Requisito |
|
|
26
29
|
| --- | --- |
|
|
27
30
|
| Node.js | 22 o posterior |
|
|
28
|
-
|
|
|
29
|
-
| Engram | Servicio HTTP
|
|
31
|
+
| Host visual | OpenCode 1.18.25+ **o** Pi con API de extensiones/UI compatible; Gentle Shell fullscreen para el rail lateral |
|
|
32
|
+
| Engram | Servicio HTTP accesible desde el proceso del viewer; por defecto `http://127.0.0.1:7437` |
|
|
30
33
|
| Proyecto | Alguna observación o sesión reciente que permita validar el nombre |
|
|
31
34
|
|
|
32
35
|
### 1. Registrá el sidebar en `tui.json`
|
|
@@ -36,7 +39,7 @@ Configuración mínima:
|
|
|
36
39
|
```json
|
|
37
40
|
{
|
|
38
41
|
"$schema": "https://opencode.ai/tui.json",
|
|
39
|
-
"plugin": ["opencode-flema-engram-sidebar@0.
|
|
42
|
+
"plugin": ["opencode-flema-engram-sidebar@0.4.0"]
|
|
40
43
|
}
|
|
41
44
|
```
|
|
42
45
|
|
|
@@ -85,11 +88,17 @@ OpenCode 2 dispone además de `opencode plugin check` y `opencode plugin update`
|
|
|
85
88
|
CLI usa la sintaxis nativa correspondiente a la versión detectada.
|
|
86
89
|
|
|
87
90
|
#### Usando `opencode attach`
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
La configuración incluye detección del host de `opencode attach <url>` para intentar
|
|
92
|
+
consultar Engram en el puerto 7437, pero no crea túneles ni expone el servicio remoto.
|
|
93
|
+
La conectividad debe existir desde el proceso que carga el viewer; el loopback remoto
|
|
94
|
+
no es accesible automáticamente desde otra máquina. Configurá `baseUrl` explícitamente
|
|
95
|
+
si la detección no representa tu endpoint y comprobá su `/health` desde ese proceso.
|
|
96
|
+
No se garantiza compatibilidad con todas las topologías attach, proxies o URLs.
|
|
97
|
+
|
|
98
|
+
Usá una versión exacta: attach también puede reutilizar paquetes en caché. La línea
|
|
99
|
+
`🔌 Target: Local=… | Cloud=…` informa los destinos configurados; no prueba una
|
|
100
|
+
sincronización ni garantiza que ambos respondan. No expongas el puerto de Engram sin
|
|
101
|
+
controles de acceso.
|
|
93
102
|
|
|
94
103
|
### 2. Iniciá Engram y abrí OpenCode en tu proyecto
|
|
95
104
|
|
|
@@ -98,28 +107,50 @@ predeterminada y permite refrescar manualmente con <kbd>Alt</kbd>+<kbd>R</kbd>.
|
|
|
98
107
|
|
|
99
108
|
## Viewer para Pi / Gentle Shell
|
|
100
109
|
|
|
101
|
-
El mismo paquete incluye una extensión Pi de solo lectura.
|
|
102
|
-
compatible con esta documentación:
|
|
110
|
+
El mismo paquete incluye una extensión Pi de solo lectura. Para Pi convencional,
|
|
111
|
+
instalá la versión exacta compatible con esta documentación:
|
|
112
|
+
|
|
113
|
+
```sh
|
|
114
|
+
pi install npm:opencode-flema-engram-sidebar@0.4.0
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Gentle Shell usa un home de paquetes aislado. Instalá allí la misma versión:
|
|
103
118
|
|
|
104
119
|
```sh
|
|
105
|
-
|
|
120
|
+
PI_CODING_AGENT_DIR="$HOME/.gentle-shell/agent" \
|
|
121
|
+
pi install npm:opencode-flema-engram-sidebar@0.4.0
|
|
106
122
|
```
|
|
107
123
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
`
|
|
124
|
+
En Gentle Shell fullscreen, la extensión participa del rail lateral sin reemplazar
|
|
125
|
+
el status existente. El panel empieza visible y expandido, con marco redondeado:
|
|
126
|
+
el borde usa el color semántico `border` y el título `accent` del theme activo.
|
|
127
|
+
Un clic izquierdo en el título colapsa o expande el panel, igual que el comando.
|
|
128
|
+
Muestra proyecto, salud, progreso ODD, bloqueos y actividad reciente. En Pi sin el
|
|
129
|
+
rail de Gentle Shell usa un overlay pasivo a la derecha cuando el terminal tiene
|
|
130
|
+
ancho suficiente. Los comandos de presentación son independientes:
|
|
111
131
|
|
|
112
132
|
```text
|
|
113
|
-
/engram-refresh
|
|
133
|
+
/engram-refresh # Refrescar datos y status; notificar el resultado
|
|
134
|
+
/engram-sidebar # Mostrar u ocultar el sidebar
|
|
135
|
+
/engram-sidebar-collapse # Colapsar o expandir el sidebar
|
|
136
|
+
/engram-widget # Mostrar u ocultar el widget debajo del editor
|
|
114
137
|
```
|
|
115
138
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
139
|
+
El widget compacto empieza oculto en cada sesión y su visibilidad no se persiste.
|
|
140
|
+
El sidebar y el widget refrescan al iniciar, reanudar o recargar una sesión y después
|
|
141
|
+
de que `mem_save` (o el alias `save_memory`) termina correctamente. Ocultar cualquiera
|
|
142
|
+
de las dos vistas no detiene el controller ni desactiva `/engram-refresh`.
|
|
119
143
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
144
|
+
No usa polling periódico y no agrega herramientas para escribir memorias. En modos
|
|
145
|
+
sin UI no consulta Engram ni intenta renderizar componentes terminales. En RPC no
|
|
146
|
+
monta el rail ni el overlay terminal.
|
|
147
|
+
|
|
148
|
+
Para el endpoint principal, definí `ENGRAM_URL` o `ENGRAM_BASE_URL`; sin configuración
|
|
149
|
+
se usa `http://127.0.0.1:7437` (el factory compartido también reconoce argumentos attach).
|
|
150
|
+
La configuración cloud compartida se describe en
|
|
151
|
+
[Seguridad y enfoque local-first](#seguridad-privacidad-y-enfoque-local-first).
|
|
152
|
+
`ENGRAM_PROJECT` puede fijar el candidato de proyecto; de lo contrario se valida el
|
|
153
|
+
nombre del directorio actual contra Engram. Los fallos de
|
|
123
154
|
inicialización se contienen en un estado `Engram unavailable` sin mostrar URLs,
|
|
124
155
|
tokens ni diagnósticos con credenciales.
|
|
125
156
|
|
|
@@ -135,9 +166,9 @@ pi --extension ./dist/pi.js
|
|
|
135
166
|
| Sí es | No es |
|
|
136
167
|
| --- | --- |
|
|
137
168
|
| Un plugin para `sidebar_content` de OpenCode y una extensión Pi | Una TUI independiente |
|
|
138
|
-
| Una vista local y de solo lectura sobre Engram | Un reemplazo de Engram |
|
|
139
|
-
|
|
|
140
|
-
| Un cliente
|
|
169
|
+
| Una vista local-first y de solo lectura sobre Engram | Un reemplazo de Engram |
|
|
170
|
+
| Contexto de proyecto, actividad y progreso ODD | Un editor o administrador de memorias |
|
|
171
|
+
| Un cliente HTTP de Engram | Un servicio cloud o de sincronización |
|
|
141
172
|
| Un paquete con un adaptador MCP stdio opcional | Un producto centrado en MCP |
|
|
142
173
|
|
|
143
174
|
Los viewers de OpenCode y Pi son las integraciones visuales principales. El comando
|
|
@@ -150,13 +181,13 @@ de los viewers.
|
|
|
150
181
|
2. El plugin resuelve un candidato de proyecto, lo prueba primero con una consulta
|
|
151
182
|
acotada por proyecto y conserva la enumeración reciente como fallback.
|
|
152
183
|
3. Consulta en paralelo salud, proyectos y observaciones del proyecto.
|
|
153
|
-
4.
|
|
154
|
-
|
|
184
|
+
4. Deriva tareas ODD desde espejos canónicos `odd/<feature>/tasks`, ordena la
|
|
185
|
+
actividad por actualización y reconoce bloqueos explícitos.
|
|
155
186
|
5. Renderiza texto dentro del sidebar de la sesión visible y conserva datos útiles
|
|
156
187
|
como `STALE` si una actualización posterior queda incompleta.
|
|
157
188
|
|
|
158
|
-
Las llamadas usan exclusivamente `GET` contra
|
|
159
|
-
|
|
189
|
+
Las llamadas usan exclusivamente `GET` contra los endpoints Engram configurados.
|
|
190
|
+
Los viewers no guardan, editan ni eliminan memorias.
|
|
160
191
|
|
|
161
192
|
### Endpoints utilizados
|
|
162
193
|
|
|
@@ -183,7 +214,7 @@ Usá la forma `[plugin, options]` solamente cuando necesites opciones:
|
|
|
183
214
|
"$schema": "https://opencode.ai/tui.json",
|
|
184
215
|
"plugin": [
|
|
185
216
|
[
|
|
186
|
-
"opencode-flema-engram-sidebar@0.
|
|
217
|
+
"opencode-flema-engram-sidebar@0.4.0",
|
|
187
218
|
{
|
|
188
219
|
"enabled": true,
|
|
189
220
|
"project": "mi-proyecto",
|
|
@@ -201,7 +232,7 @@ Usá la forma `[plugin, options]` solamente cuando necesites opciones:
|
|
|
201
232
|
| `enabled` | `boolean` | `false` evita que el plugin registre el sidebar. Por defecto está habilitado. |
|
|
202
233
|
| `project` | `string` | Nombre exacto de proyecto Engram. Tiene la prioridad más alta. |
|
|
203
234
|
| `pollInterval` | `number` | Intervalo automático en milisegundos; debe ser mayor que cero. Por defecto: `30000`. |
|
|
204
|
-
| `baseUrl` | `string` | Endpoint HTTP(S) de Engram
|
|
235
|
+
| `baseUrl` | `string` | Endpoint HTTP(S) principal de Engram. Gana sobre variables de entorno y detección por `opencode attach`. Por defecto: `http://127.0.0.1:7437`. |
|
|
205
236
|
| `timeoutMs` | `number` | Presupuesto común para requests locales y guards de etapas; debe ser finito y mayor que cero. Por defecto: `5000`. |
|
|
206
237
|
|
|
207
238
|
La precedencia del endpoint local es `baseUrl` explícito, `ENGRAM_URL`,
|
|
@@ -267,8 +298,9 @@ vacío explícito.
|
|
|
267
298
|
The sidebar derives ODD state from full feature-document mirrors whose `topic_key`
|
|
268
299
|
is `odd/<feature>/tasks`. Each feature shows explicit task counts: done out of total,
|
|
269
300
|
cancelled, in progress, blocked, and pending. Cancelled tasks are reported separately,
|
|
270
|
-
not counted as done. See [the ODD state contract](docs/odd-state-contract.md) for the
|
|
271
|
-
canonical checklist format and newest-valid-document selection.
|
|
301
|
+
not counted as done. See [the ODD state contract](https://github.com/oniricosistemas/flema-engram/blob/main/docs/odd-state-contract.md) for the
|
|
302
|
+
canonical checklist format and newest-valid-document selection. This shared ODD
|
|
303
|
+
contract also applies to Pi; the legacy workflow commands below are OpenCode-only.
|
|
272
304
|
|
|
273
305
|
This is a bounded recent-observation view (up to 20 canonical project observations),
|
|
274
306
|
not a complete project inventory. ODD derivation uses that entire window, not just
|
|
@@ -293,9 +325,12 @@ legacy opt-in described below.
|
|
|
293
325
|
|
|
294
326
|
### Bloqueos
|
|
295
327
|
|
|
296
|
-
Lista títulos de observaciones
|
|
297
|
-
explícitas como `status: blocked`, `blocker:`,
|
|
298
|
-
`
|
|
328
|
+
Lista títulos de observaciones de tipo `blocker`, o de otras observaciones con
|
|
329
|
+
`blocked` en el título o frases explícitas como `status: blocked`, `blocker:`,
|
|
330
|
+
`blocked by`, `depends on` o `waiting for`. Las observaciones `session_summary`
|
|
331
|
+
se excluyen de esas heurísticas de título y contenido: un resumen histórico no es
|
|
332
|
+
un bloqueo activo. Los registros de tipo `blocker` siguen contando. No infiere
|
|
333
|
+
bloqueos a partir de sentimiento o contexto ambiguo.
|
|
299
334
|
|
|
300
335
|
### Actividad reciente
|
|
301
336
|
|
|
@@ -309,7 +344,11 @@ reciente ocupa el primer lugar de **Recent Activity**. La vista muestra su títu
|
|
|
309
344
|
el contenido completo. Así mantiene presente la referencia más nueva sin convertir
|
|
310
345
|
el sidebar en un explorador de memorias.
|
|
311
346
|
|
|
312
|
-
### Refresh, carga y errores
|
|
347
|
+
### Refresh, carga y errores — OpenCode
|
|
348
|
+
|
|
349
|
+
Pi no usa este polling ni estos atajos: refresca por eventos y con
|
|
350
|
+
`/engram-refresh`, que actualiza el status y notifica `Engram refreshed` o
|
|
351
|
+
`Engram refresh incomplete`. Las reglas de vista acotada y datos `STALE` son compartidas.
|
|
313
352
|
|
|
314
353
|
- La primera carga se agenda una sola vez para el sidebar de la sesión visible.
|
|
315
354
|
- El polling automático usa `pollInterval` o 30 segundos.
|
|
@@ -338,7 +377,7 @@ Si Engram conoce `mi-proyecto`, el sidebar valida ese nombre y carga sus memoria
|
|
|
338
377
|
{
|
|
339
378
|
"$schema": "https://opencode.ai/tui.json",
|
|
340
379
|
"plugin": [
|
|
341
|
-
["opencode-flema-engram-sidebar@0.
|
|
380
|
+
["opencode-flema-engram-sidebar@0.4.0", { "project": "backend-api" }]
|
|
342
381
|
]
|
|
343
382
|
}
|
|
344
383
|
```
|
|
@@ -352,7 +391,7 @@ Engram. El valor debe coincidir; una configuración incorrecta queda como `unres
|
|
|
352
391
|
{
|
|
353
392
|
"$schema": "https://opencode.ai/tui.json",
|
|
354
393
|
"plugin": [
|
|
355
|
-
["opencode-flema-engram-sidebar@0.
|
|
394
|
+
["opencode-flema-engram-sidebar@0.4.0", { "pollInterval": 60000 }]
|
|
356
395
|
]
|
|
357
396
|
}
|
|
358
397
|
```
|
|
@@ -402,9 +441,9 @@ Preservá el resto de tus plugins y opciones al fusionar la configuración.
|
|
|
402
441
|
### Engram aparece offline
|
|
403
442
|
|
|
404
443
|
- Confirmá que Engram escuche en `127.0.0.1:7437` o en el endpoint declarado por `baseUrl`.
|
|
405
|
-
- Probá `<baseUrl>/health` desde
|
|
406
|
-
- Revisá firewalls
|
|
407
|
-
|
|
444
|
+
- Probá `<baseUrl>/health` desde el proceso o máquina que carga el viewer.
|
|
445
|
+
- Revisá firewalls, proxies y los destinos de `Target`. El cloud solo se consulta
|
|
446
|
+
si está configurado; no es una alternativa automática garantizada al endpoint local.
|
|
408
447
|
- Si una red o puente responde lentamente, aumentá `timeoutMs`; el mismo valor limita
|
|
409
448
|
requests HTTP y etapas del refresh.
|
|
410
449
|
- Una URL que no use `http:` o `https:` se rechaza dentro del sidebar con un diagnóstico
|
|
@@ -423,7 +462,8 @@ Preservá el resto de tus plugins y opciones al fusionar la configuración.
|
|
|
423
462
|
### Los datos parecen viejos
|
|
424
463
|
|
|
425
464
|
- Mirá si Health dice `STALE` y leé el detalle de etapa/endpoint.
|
|
426
|
-
-
|
|
465
|
+
- En OpenCode esperá el próximo polling o usá <kbd>Alt</kbd>+<kbd>R</kbd>;
|
|
466
|
+
en Pi usá `/engram-refresh` (no hay polling).
|
|
427
467
|
- Confirmá que la memoria pertenece exactamente al proyecto resuelto.
|
|
428
468
|
- El feed solo muestra cinco títulos y la consulta del sidebar está acotada a 20
|
|
429
469
|
observaciones.
|
|
@@ -544,9 +584,16 @@ La lista `files` permite publicar `dist`, `README.md` y `LICENSE`; npm agrega ad
|
|
|
544
584
|
la metadata obligatoria. El verificador exige, como mínimo:
|
|
545
585
|
|
|
546
586
|
- API raíz: `dist/index.js` y `dist/index.d.ts`;
|
|
547
|
-
- plugin: `dist/sidebar/plugin.js` y `dist/sidebar/plugin.d.ts`;
|
|
548
|
-
-
|
|
549
|
-
-
|
|
587
|
+
- plugin OpenCode (`./tui`): `dist/sidebar/plugin.js` y `dist/sidebar/plugin.d.ts`;
|
|
588
|
+
- controller compartido (`./core`): `dist/core.js` y `dist/core.d.ts`;
|
|
589
|
+
- extensión Pi (`./pi`): `dist/pi.js` y `dist/pi.d.ts`, registrada en `pi.extensions`;
|
|
590
|
+
- panel Pi: `dist/pi/sidebar.js` y `dist/pi/sidebar.d.ts`;
|
|
591
|
+
- CLI de mantenimiento `flema-engram`: `dist/maintenance.js`;
|
|
592
|
+
- MCP opcional `mcp-flema-engram`: `dist/stdio.js`;
|
|
593
|
+
- `README.md`, `LICENSE` y `package.json`.
|
|
594
|
+
|
|
595
|
+
`docs/` y `site/` no se incluyen en npm; las referencias de documentación apuntan al
|
|
596
|
+
repositorio público.
|
|
550
597
|
|
|
551
598
|
`prepublishOnly` ejecuta automáticamente:
|
|
552
599
|
|
|
@@ -592,7 +639,7 @@ Ejemplo de configuración local de OpenCode, equivalente a `opencode.example.jso
|
|
|
592
639
|
|
|
593
640
|
The server offers read-only MCP tools and resources for health, projects,
|
|
594
641
|
observations, sessions, ODD state, and explicit legacy SDD access. It uses the same
|
|
595
|
-
|
|
642
|
+
Engram HTTP configuration (loopback by default), without adding persistence or cloud synchronization.
|
|
596
643
|
|
|
597
644
|
### ODD-first project state and explicit legacy access
|
|
598
645
|
|
|
@@ -608,7 +655,7 @@ loaded exact-project observation window. Existing project metadata, observation
|
|
|
608
655
|
counts, explicit blockers, and recent activity remain available. Invalid mirrors
|
|
609
656
|
stay visible as diagnostics and never cause SDD fallback. Counts and derived
|
|
610
657
|
workflow state describe bounded recent observations, not an exhaustive inventory
|
|
611
|
-
or historical total. See [the ODD state contract](docs/odd-state-contract.md).
|
|
658
|
+
or historical total. See [the ODD state contract](https://github.com/oniricosistemas/flema-engram/blob/main/docs/odd-state-contract.md).
|
|
612
659
|
|
|
613
660
|
`includeLegacySdd` is an optional boolean, defaulting to `false`. By default the
|
|
614
661
|
tool does not derive legacy SDD or expose `changes`. To add legacy SDD changes to
|
|
@@ -628,24 +675,31 @@ behavior is unchanged.
|
|
|
628
675
|
|
|
629
676
|
## Seguridad, privacidad y enfoque local-first
|
|
630
677
|
|
|
631
|
-
-
|
|
632
|
-
-
|
|
678
|
+
- Por defecto el viewer consulta loopback; no requiere un servicio cloud ni telemetría.
|
|
679
|
+
- Un endpoint remoto explícito o detectado por attach implica tráfico de red: los
|
|
680
|
+
datos no están necesariamente limitados a esta máquina.
|
|
681
|
+
- El factory compartido puede agregar lecturas cloud si encuentra `ENGRAM_CLOUD_URL`
|
|
682
|
+
o configuración en `~/.engram/cloud.json`. Puede usar `ENGRAM_CLOUD_TOKEN` o
|
|
683
|
+
`ENGRAM_TOKEN` como Bearer token; revisá esa configuración antes de asumir un
|
|
684
|
+
runtime exclusivamente local.
|
|
633
685
|
- No ejecuta operaciones de escritura sobre memorias.
|
|
634
686
|
- No crea logs propios con contenido de observaciones.
|
|
635
687
|
- El contenido de memorias puede ser sensible: protegé el acceso al proceso y puerto
|
|
636
688
|
local de Engram como protegerías cualquier herramienta de desarrollo.
|
|
637
|
-
-
|
|
638
|
-
como instalar desde npm o abrir enlaces de documentación.
|
|
689
|
+
- Instalar desde npm y abrir documentación también puede requerir conexiones externas.
|
|
639
690
|
|
|
640
|
-
El
|
|
641
|
-
|
|
691
|
+
El adaptador cloud implementa lecturas HTTP y puede combinarse con el local; no es
|
|
692
|
+
un servicio alojado ni un mecanismo de sincronización. No se promete seguridad de
|
|
693
|
+
transporte para despliegues arbitrarios: el adaptador cloud permite certificados TLS
|
|
694
|
+
no verificados por defecto. Preferí loopback o una red controlada y no envíes tokens
|
|
695
|
+
a destinos no confiables.
|
|
642
696
|
|
|
643
697
|
## Roadmap y alcance diferido
|
|
644
698
|
|
|
645
699
|
Están explícitamente fuera del MVP actual:
|
|
646
700
|
|
|
647
701
|
- dashboard visual y acciones/atajos para abrirlo;
|
|
648
|
-
-
|
|
702
|
+
- túneles automáticos y compatibilidad garantizada con cualquier despliegue attach;
|
|
649
703
|
- selector manual de proyecto, navegación `j`/`k` y más atajos globales;
|
|
650
704
|
- sincronización cloud y edición de memorias.
|
|
651
705
|
|
|
@@ -3,8 +3,10 @@ export declare class CompositeEngramAdapter implements EngramAdapter {
|
|
|
3
3
|
private readonly adapters;
|
|
4
4
|
private readonly cache;
|
|
5
5
|
private readonly maxCacheSize;
|
|
6
|
+
private readonly fallbackOnEmpty;
|
|
6
7
|
constructor(adapters: EngramAdapter[], opts?: {
|
|
7
8
|
maxCacheSize?: number;
|
|
9
|
+
fallbackOnEmpty?: boolean;
|
|
8
10
|
});
|
|
9
11
|
describeTargets(): EngramTargets;
|
|
10
12
|
health(): Promise<HealthStatus>;
|
|
@@ -15,6 +17,7 @@ export declare class CompositeEngramAdapter implements EngramAdapter {
|
|
|
15
17
|
listSessions(opts?: ListSessionsOpts): Promise<Session[]>;
|
|
16
18
|
getSession(sessionId: string): Promise<Session | null>;
|
|
17
19
|
private invokeWithFallback;
|
|
20
|
+
private listProjectsAcrossAdapters;
|
|
18
21
|
clearCache(): void;
|
|
19
22
|
private cached;
|
|
20
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composite.d.ts","sourceRoot":"","sources":["../../src/adapters/composite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,OAAO,EACP,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,OAAO,EACP,gBAAgB,EACjB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"composite.d.ts","sourceRoot":"","sources":["../../src/adapters/composite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,OAAO,EACP,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,OAAO,EACP,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAepB,qBAAa,sBAAuB,YAAW,aAAa;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;gBAE9B,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE;IAclG,eAAe,IAAI,aAAa;IAY1B,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAoC/B,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMlC,gBAAgB,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOrE,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAMvD,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAO5E,YAAY,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YAM9C,kBAAkB;YAgClB,0BAA0B;IAuBxC,UAAU,IAAI,IAAI;YAIJ,MAAM;CAmBrB"}
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import { EngramUnavailable } from "../utils/errors.js";
|
|
2
2
|
const CACHE_TTL_MS = 30_000;
|
|
3
3
|
const DEFAULT_MAX_CACHE_SIZE = 100;
|
|
4
|
+
function isEmptyResult(value) {
|
|
5
|
+
return value === null || (Array.isArray(value) && value.length === 0);
|
|
6
|
+
}
|
|
4
7
|
export class CompositeEngramAdapter {
|
|
5
8
|
adapters;
|
|
6
9
|
cache = new Map();
|
|
7
10
|
maxCacheSize;
|
|
11
|
+
fallbackOnEmpty;
|
|
8
12
|
constructor(adapters, opts) {
|
|
9
13
|
const filtered = adapters.filter((a) => a != null);
|
|
10
14
|
if (filtered.length === 0) {
|
|
11
15
|
throw new Error("CompositeEngramAdapter requires at least one adapter");
|
|
12
16
|
}
|
|
13
17
|
this.adapters = filtered;
|
|
18
|
+
this.fallbackOnEmpty = opts?.fallbackOnEmpty ?? false;
|
|
14
19
|
const size = opts?.maxCacheSize ?? DEFAULT_MAX_CACHE_SIZE;
|
|
15
20
|
if (!Number.isFinite(size) || size <= 0) {
|
|
16
21
|
throw new Error(`Invalid maxCacheSize: ${size}`);
|
|
@@ -56,7 +61,9 @@ export class CompositeEngramAdapter {
|
|
|
56
61
|
};
|
|
57
62
|
}
|
|
58
63
|
async listProjects() {
|
|
59
|
-
return this.cached("listProjects", () => this.
|
|
64
|
+
return this.cached("listProjects", () => this.fallbackOnEmpty
|
|
65
|
+
? this.listProjectsAcrossAdapters()
|
|
66
|
+
: this.invokeWithFallback((adapter) => adapter.listProjects()));
|
|
60
67
|
}
|
|
61
68
|
async listObservations(opts) {
|
|
62
69
|
const key = `listObservations:${JSON.stringify(opts ?? {}, Object.keys(opts ?? {}).sort())}`;
|
|
@@ -83,7 +90,11 @@ export class CompositeEngramAdapter {
|
|
|
83
90
|
if (!adapter)
|
|
84
91
|
continue;
|
|
85
92
|
try {
|
|
86
|
-
|
|
93
|
+
const result = await call(adapter);
|
|
94
|
+
if (this.fallbackOnEmpty && isEmptyResult(result) && i < this.adapters.length - 1) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
return result;
|
|
87
98
|
}
|
|
88
99
|
catch (err) {
|
|
89
100
|
lastError = err instanceof Error ? err : new Error(String(err));
|
|
@@ -95,6 +106,28 @@ export class CompositeEngramAdapter {
|
|
|
95
106
|
}
|
|
96
107
|
throw new EngramUnavailable(`All adapters failed`, lastError);
|
|
97
108
|
}
|
|
109
|
+
async listProjectsAcrossAdapters() {
|
|
110
|
+
const projects = new Map();
|
|
111
|
+
let lastError;
|
|
112
|
+
let succeeded = false;
|
|
113
|
+
for (const adapter of this.adapters) {
|
|
114
|
+
try {
|
|
115
|
+
const adapterProjects = await adapter.listProjects();
|
|
116
|
+
succeeded = true;
|
|
117
|
+
for (const project of adapterProjects) {
|
|
118
|
+
if (!projects.has(project.name))
|
|
119
|
+
projects.set(project.name, project);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (!succeeded && lastError) {
|
|
127
|
+
throw new EngramUnavailable("All adapters failed", lastError);
|
|
128
|
+
}
|
|
129
|
+
return [...projects.values()].sort((left, right) => left.name.localeCompare(right.name));
|
|
130
|
+
}
|
|
98
131
|
clearCache() {
|
|
99
132
|
this.cache.clear();
|
|
100
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composite.js","sourceRoot":"","sources":["../../src/adapters/composite.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,sBAAsB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"composite.js","sourceRoot":"","sources":["../../src/adapters/composite.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AACxE,CAAC;AAOD,MAAM,OAAO,sBAAsB;IAChB,QAAQ,CAAkB;IAC1B,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtC,YAAY,CAAS;IACrB,eAAe,CAAU;IAE1C,YAAY,QAAyB,EAAE,IAA2D;QAChG,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QACvE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,IAAI,EAAE,eAAe,IAAI,KAAK,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,EAAE,YAAY,IAAI,sBAAsB,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,eAAe;QACb,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;gBAClD,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;gBACvC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ;oBAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACzE,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ;oBAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC3E,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CACjD,CAAC;QAEF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAC9B,CAAC,CAAC,EAA6C,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAC3E,CAAC;QAEF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAC7B,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAC3D,EAAE,MAAM,CAAC;YACV,MAAM,IAAI,iBAAiB,CAAC,kCAAkC,EAAE,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxH,CAAC;QAED,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,YAAgC,CAAC;QACrC,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC9B,cAAc,GAAG,IAAI,CAAC;gBACtB,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;oBAAE,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YACtE,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;gBAC/B,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE;YAC3D,KAAK,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe;YAC3D,CAAC,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACnC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAA2B;QAChD,MAAM,GAAG,GAAG,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7F,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAC3B,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,EAAE,GAAG,EAAE,CAC9C,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CACjE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,IAAiB;QACvD,MAAM,GAAG,GAAG,sBAAsB,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACxG,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAC3B,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAC9E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAuB;QACxC,MAAM,GAAG,GAAG,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACzF,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAC3B,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CACjE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,SAAS,EAAE,EAAE,GAAG,EAAE,CACjD,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CACpE,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,IAA4C;QAE5C,IAAI,SAA4B,CAAC;QAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClF,SAAS;gBACX,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChE,IAAI,CAAC,CAAC,GAAG,YAAY,iBAAiB,CAAC,EAAE,CAAC;oBACxC,MAAM,IAAI,iBAAiB,CACzB,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC1E,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CACvC,CAAC;gBACJ,CAAC;gBACD,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,EACrB,SAAS,CACV,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,0BAA0B;QACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC5C,IAAI,SAA4B,CAAC;QACjC,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;gBACrD,SAAS,GAAG,IAAI,CAAC;gBACjB,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;oBACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wBAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,MAAM,CAAI,GAAW,EAAE,EAAoB;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC,KAAqB,CAAC;QACrC,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,EAAE,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;QAErE,mDAAmD;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -16,4 +16,6 @@ export interface EngramTuiOptionsInput {
|
|
|
16
16
|
}
|
|
17
17
|
export declare function loadEngramConfig(options?: EngramTuiOptionsInput): ResolvedEngramConfig;
|
|
18
18
|
export declare function createConfiguredAdapter(options?: EngramTuiOptionsInput): EngramAdapter;
|
|
19
|
+
/** Pi resolves projects from cloud first, then falls back to its local Engram instance. */
|
|
20
|
+
export declare function createPiConfiguredAdapter(options?: EngramTuiOptionsInput): EngramAdapter;
|
|
19
21
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKhD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2BD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,oBAAoB,CAoCtF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,aAAa,CAgBtF"}
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKhD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2BD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,oBAAoB,CAoCtF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,aAAa,CAgBtF;AAED,2FAA2F;AAC3F,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,aAAa,CAcxF"}
|
package/dist/adapters/factory.js
CHANGED
|
@@ -81,6 +81,21 @@ export function createConfiguredAdapter(options) {
|
|
|
81
81
|
}
|
|
82
82
|
return localAdapter;
|
|
83
83
|
}
|
|
84
|
+
/** Pi resolves projects from cloud first, then falls back to its local Engram instance. */
|
|
85
|
+
export function createPiConfiguredAdapter(options) {
|
|
86
|
+
const config = loadEngramConfig(options);
|
|
87
|
+
const localAdapter = new LocalEngramAdapter({
|
|
88
|
+
baseUrl: config.localUrl,
|
|
89
|
+
timeoutMs: config.timeoutMs,
|
|
90
|
+
});
|
|
91
|
+
if (!config.cloudUrl)
|
|
92
|
+
return localAdapter;
|
|
93
|
+
const cloudAdapter = new CloudEngramAdapter({
|
|
94
|
+
baseUrl: config.cloudUrl,
|
|
95
|
+
token: config.token,
|
|
96
|
+
});
|
|
97
|
+
return new CompositeEngramAdapter([cloudAdapter, localAdapter], { fallbackOnEmpty: true });
|
|
98
|
+
}
|
|
84
99
|
function isPositiveFinite(value) {
|
|
85
100
|
return typeof value === "number" && Number.isFinite(value) && value > 0;
|
|
86
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/types.d.ts
CHANGED
|
@@ -38,14 +38,14 @@ export interface Observation {
|
|
|
38
38
|
topic_key: string;
|
|
39
39
|
content: string;
|
|
40
40
|
project: string;
|
|
41
|
-
scope: "project" | "personal";
|
|
41
|
+
scope: "project" | "personal" | "global";
|
|
42
42
|
updated_at: string;
|
|
43
43
|
created_at: string;
|
|
44
44
|
}
|
|
45
45
|
export interface ListObservationsOpts {
|
|
46
46
|
project?: string;
|
|
47
47
|
type?: string;
|
|
48
|
-
scope?: "project" | "personal";
|
|
48
|
+
scope?: "project" | "personal" | "global";
|
|
49
49
|
topic_key_prefix?: string;
|
|
50
50
|
since?: string;
|
|
51
51
|
until?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAChC,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,gBAAgB,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACxD,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7E,YAAY,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACvD,eAAe,CAAC,IAAI,aAAa,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,KAAK,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;CAChC;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { SidebarViewModel } from "../viewer/core.js";
|
|
2
|
+
export interface PiSidebarTheme {
|
|
3
|
+
fg: (token: string, text: string) => string;
|
|
4
|
+
bold?: (text: string) => string;
|
|
5
|
+
}
|
|
6
|
+
export interface PiSidebarRenderHost {
|
|
7
|
+
requestRender: () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface PiSidebarMouseEvent {
|
|
10
|
+
type: string;
|
|
11
|
+
button: string;
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
}
|
|
18
|
+
export interface PiSidebarMouseResult {
|
|
19
|
+
handled?: boolean;
|
|
20
|
+
render?: boolean;
|
|
21
|
+
[key: string]: unknown;
|
|
22
|
+
}
|
|
23
|
+
export interface PiSidebarPanel {
|
|
24
|
+
render: (width: number) => string[];
|
|
25
|
+
invalidate: () => void;
|
|
26
|
+
digest: () => string;
|
|
27
|
+
handleMouse?: (event: PiSidebarMouseEvent) => PiSidebarMouseResult | undefined;
|
|
28
|
+
setState: (state: SidebarViewModel) => void;
|
|
29
|
+
setCollapsed: (collapsed: boolean) => void;
|
|
30
|
+
isCollapsed: () => boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface PiSidebarTui extends PiSidebarRenderHost {
|
|
33
|
+
mode?: string;
|
|
34
|
+
terminal?: Record<symbol, unknown>;
|
|
35
|
+
}
|
|
36
|
+
export interface GentleShellRailAttachment {
|
|
37
|
+
isMounted: () => boolean;
|
|
38
|
+
isActive: () => boolean;
|
|
39
|
+
setVisible: (visible: boolean) => void;
|
|
40
|
+
invalidate: () => void;
|
|
41
|
+
dispose: () => void;
|
|
42
|
+
}
|
|
43
|
+
export declare const GENTLE_SHELL_SIDEBAR_STATE: unique symbol;
|
|
44
|
+
type RailComponent = Pick<PiSidebarPanel, "render" | "invalidate" | "digest" | "handleMouse">;
|
|
45
|
+
export declare function visibleTextWidth(value: string): number;
|
|
46
|
+
export declare function attachGentleShellRailPanel(tui: PiSidebarTui, component: RailComponent): GentleShellRailAttachment | undefined;
|
|
47
|
+
export declare function createPiSidebarPanel(tui: PiSidebarRenderHost, theme: PiSidebarTheme, initialState: SidebarViewModel, onCollapsedChange?: (collapsed: boolean) => void): PiSidebarPanel;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/pi/sidebar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,oBAAoB,GAAG,SAAS,CAAC;IAC/E,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,WAAW,EAAE,MAAM,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,0BAA0B,eAAqD,CAAC;AAG7F,KAAK,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,aAAa,CAAC,CAAC;AAoB9F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAStD;AAgLD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,aAAa,GACvB,yBAAyB,GAAG,SAAS,CAuDvC;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,gBAAgB,EAC9B,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GAC/C,cAAc,CAyFhB"}
|