opencode-flema-engram-sidebar 0.1.8 → 0.2.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.md +94 -8
- package/dist/maintenance/cli.d.ts +21 -0
- package/dist/maintenance/cli.d.ts.map +1 -0
- package/dist/maintenance/cli.js +571 -0
- package/dist/maintenance/cli.js.map +1 -0
- package/dist/maintenance.d.ts +3 -0
- package/dist/maintenance.d.ts.map +1 -0
- package/dist/maintenance.js +4 -0
- package/dist/maintenance.js.map +1 -0
- package/dist/sidebar/hooks/use-engram.d.ts +1 -0
- package/dist/sidebar/hooks/use-engram.d.ts.map +1 -1
- package/dist/sidebar/hooks/use-engram.js +1 -1
- package/dist/sidebar/hooks/use-engram.js.map +1 -1
- package/dist/sidebar/plugin.d.ts +63 -2
- package/dist/sidebar/plugin.d.ts.map +1 -1
- package/dist/sidebar/plugin.js +140 -104
- package/dist/sidebar/plugin.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -36,18 +36,58 @@ Configuración mínima:
|
|
|
36
36
|
```json
|
|
37
37
|
{
|
|
38
38
|
"$schema": "https://opencode.ai/tui.json",
|
|
39
|
-
"plugin": ["opencode-flema-engram-sidebar"]
|
|
39
|
+
"plugin": ["opencode-flema-engram-sidebar@0.2.0"]
|
|
40
40
|
}
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
Fijá una versión exacta. OpenCode 1.18.x conserva paquetes npm en caché y una entrada
|
|
44
|
+
sin versión o con `@latest` puede seguir resolviendo una release anterior después de
|
|
45
|
+
que npm publique otra. El plugin no puede actualizarse a sí mismo porque OpenCode lo
|
|
46
|
+
resuelve e importa antes de ejecutar su código.
|
|
44
47
|
|
|
45
|
-
|
|
48
|
+
Para ubicar el archivo global, ejecutá `opencode debug paths` y abrí `tui.json` dentro
|
|
49
|
+
de la ruta `config`. Una vez guardado, cerrá completamente OpenCode y abrí un proceso
|
|
50
|
+
nuevo para que el plugin se cargue.
|
|
51
|
+
|
|
52
|
+
#### Diagnosticar y actualizar una instalación
|
|
53
|
+
|
|
54
|
+
La CLI de mantenimiento consulta las rutas que informa OpenCode, inspecciona la
|
|
55
|
+
configuración y compara los wrappers de caché con npm sin mostrar opciones del plugin:
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
npx --yes --package opencode-flema-engram-sidebar@latest flema-engram doctor
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Previsualizá siempre la actualización. `--dry-run` no cambia archivos:
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
npx --yes --package opencode-flema-engram-sidebar@latest \
|
|
65
|
+
flema-engram update --dry-run
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Luego cerrá OpenCode y aplicá el mismo plan:
|
|
69
|
+
|
|
70
|
+
```sh
|
|
71
|
+
npx --yes --package opencode-flema-engram-sidebar@latest \
|
|
72
|
+
flema-engram update
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
La CLI pide una confirmación, respalda `tui.json`, invoca el instalador oficial con
|
|
76
|
+
la versión npm exacta y un límite de 60 segundos, elimina solamente wrappers obsoletos
|
|
77
|
+
que conservan el mismo manifiesto observado en el preview y verifica el resultado. Si
|
|
78
|
+
el instalador agota ese límite, la CLI lo detiene por la fuerza e informa la ruta
|
|
79
|
+
exacta del backup retenido. Para automatización
|
|
80
|
+
controlada, `flema-engram update --yes` omite únicamente la pregunta: conserva el
|
|
81
|
+
preview, las validaciones y el backup. `--json` produce una salida estructurada.
|
|
82
|
+
|
|
83
|
+
OpenCode 1.18.x no actualiza confiablemente una entrada sin versión o con `@latest`.
|
|
84
|
+
OpenCode 2 dispone además de `opencode plugin check` y `opencode plugin update`; la
|
|
85
|
+
CLI usa la sintaxis nativa correspondiente a la versión detectada.
|
|
46
86
|
|
|
47
87
|
#### Usando `opencode attach`
|
|
48
88
|
Si vas a conectarte a una instancia remota de OpenCode mediante `opencode attach <url>`, el plugin funcionará siempre que:
|
|
49
89
|
- El servicio Engram en la máquina remota sea accesible en el puerto 7437 (por defecto solo escucha en 127.0.0.1; se recomienda crear un puente TCP como se describe en los documentos internos o usar `engram-bridge.service`).
|
|
50
|
-
-
|
|
90
|
+
- Usá una versión exacta del plugin y actualizala explícitamente; `opencode attach` puede reutilizar una copia npm ya resuelta en la caché local.
|
|
51
91
|
- La detección automática usa el host recibido por `opencode attach`; si el puente de Engram usa otra URL, configurá `baseUrl` explícitamente en `tui.json`.
|
|
52
92
|
- Verás en el sidebar la línea `🔌 Target: Local=<host>:7437 | Cloud=<URL>` para confirmar a qué endpoints se está conectando.
|
|
53
93
|
|
|
@@ -108,7 +148,7 @@ Usá la forma `[plugin, options]` solamente cuando necesites opciones:
|
|
|
108
148
|
"$schema": "https://opencode.ai/tui.json",
|
|
109
149
|
"plugin": [
|
|
110
150
|
[
|
|
111
|
-
"opencode-flema-engram-sidebar",
|
|
151
|
+
"opencode-flema-engram-sidebar@0.2.0",
|
|
112
152
|
{
|
|
113
153
|
"enabled": true,
|
|
114
154
|
"project": "mi-proyecto",
|
|
@@ -263,7 +303,7 @@ Si Engram conoce `mi-proyecto`, el sidebar valida ese nombre y carga sus memoria
|
|
|
263
303
|
{
|
|
264
304
|
"$schema": "https://opencode.ai/tui.json",
|
|
265
305
|
"plugin": [
|
|
266
|
-
["opencode-flema-engram-sidebar", { "project": "backend-api" }]
|
|
306
|
+
["opencode-flema-engram-sidebar@0.2.0", { "project": "backend-api" }]
|
|
267
307
|
]
|
|
268
308
|
}
|
|
269
309
|
```
|
|
@@ -277,7 +317,7 @@ Engram. El valor debe coincidir; una configuración incorrecta queda como `unres
|
|
|
277
317
|
{
|
|
278
318
|
"$schema": "https://opencode.ai/tui.json",
|
|
279
319
|
"plugin": [
|
|
280
|
-
["opencode-flema-engram-sidebar", { "pollInterval": 60000 }]
|
|
320
|
+
["opencode-flema-engram-sidebar@0.2.0", { "pollInterval": 60000 }]
|
|
281
321
|
]
|
|
282
322
|
}
|
|
283
323
|
```
|
|
@@ -358,11 +398,57 @@ Preservá el resto de tus plugins y opciones al fusionar la configuración.
|
|
|
358
398
|
- Cerrá y reiniciá OpenCode después de cambiar `tui.json`.
|
|
359
399
|
- Validá el JSON y la ruta del plugin.
|
|
360
400
|
- Confirmá Node.js 22+ y OpenCode 1.18.25+.
|
|
361
|
-
- Para npm, usá
|
|
401
|
+
- Para npm, usá `opencode-flema-engram-sidebar@<version>` con una versión publicada exacta.
|
|
362
402
|
- Para fuente local, ejecutá `npm install` y comprobá que la ruta termine en
|
|
363
403
|
`src/sidebar/plugin.tsx`.
|
|
364
404
|
- Revisá la salida de arranque de OpenCode. El plugin no crea archivos de log propios.
|
|
365
405
|
|
|
406
|
+
### El sidebar muestra una versión anterior
|
|
407
|
+
|
|
408
|
+
1. Cerrá todos los procesos OpenCode.
|
|
409
|
+
2. Ejecutá `opencode debug paths` y anotá las rutas `config` y `cache`.
|
|
410
|
+
3. Confirmá que `config/tui.json` use `opencode-flema-engram-sidebar@<version>`.
|
|
411
|
+
4. Instalá de nuevo esa versión exacta:
|
|
412
|
+
|
|
413
|
+
```sh
|
|
414
|
+
opencode plugin opencode-flema-engram-sidebar@<version> --force --global
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
5. Si el sidebar todavía muestra la release anterior, inspeccioná dentro de
|
|
418
|
+
`cache/packages` los wrappers `opencode-flema-engram-sidebar@*`. Eliminá solamente
|
|
419
|
+
el wrapper obsoleto `opencode-flema-engram-sidebar@latest` después de confirmar que
|
|
420
|
+
su `node_modules/opencode-flema-engram-sidebar/package.json` contiene la versión
|
|
421
|
+
vieja. Conservá el wrapper exacto y repetí el comando anterior.
|
|
422
|
+
6. Abrí un proceso OpenCode nuevo; los procesos existentes no recargan plugins.
|
|
423
|
+
|
|
424
|
+
En PowerShell, reemplazá `<old-version>` por la versión anterior que esperás borrar.
|
|
425
|
+
El comando se niega a eliminar el wrapper si su manifiesto contiene otro valor:
|
|
426
|
+
|
|
427
|
+
```powershell
|
|
428
|
+
$cache = (opencode debug paths | Select-String '^cache\s+').Line -replace '^cache\s+', ''
|
|
429
|
+
$stale = Join-Path $cache 'packages\opencode-flema-engram-sidebar@latest'
|
|
430
|
+
$manifest = Join-Path $stale 'node_modules\opencode-flema-engram-sidebar\package.json'
|
|
431
|
+
$staleVersion = (Get-Content -LiteralPath $manifest -Raw | ConvertFrom-Json).version
|
|
432
|
+
if ($staleVersion -ne '<old-version>') { throw "Refusing to remove wrapper: found $staleVersion" }
|
|
433
|
+
Remove-Item -LiteralPath $stale -Recurse -Force
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
En shells POSIX, reemplazá `<cache>` y `<old-version>` por los valores confirmados:
|
|
437
|
+
|
|
438
|
+
```sh
|
|
439
|
+
stale='<cache>/packages/opencode-flema-engram-sidebar@latest'
|
|
440
|
+
manifest="$stale/node_modules/opencode-flema-engram-sidebar/package.json"
|
|
441
|
+
stale_version="$(node -e 'const fs = require("node:fs"); console.log(JSON.parse(fs.readFileSync(process.argv[1], "utf8")).version)' "$manifest")"
|
|
442
|
+
[ "$stale_version" = '<old-version>' ] || {
|
|
443
|
+
printf 'Refusing to remove wrapper: found %s\n' "$stale_version" >&2
|
|
444
|
+
exit 1
|
|
445
|
+
}
|
|
446
|
+
rm -rf -- "$stale"
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
No borres el directorio completo de caché: puede contener otros plugins, servidores de
|
|
450
|
+
lenguaje y modelos descargados.
|
|
451
|
+
|
|
366
452
|
### OpenCode no encuentra el export del paquete
|
|
367
453
|
|
|
368
454
|
- Confirmá que la versión instalada tiene un export raíz por defecto con `id` y `tui`.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface MaintenanceCommandResult {
|
|
2
|
+
code: number;
|
|
3
|
+
stdout: string;
|
|
4
|
+
stderr: string;
|
|
5
|
+
}
|
|
6
|
+
export interface MaintenanceCommandOptions {
|
|
7
|
+
signal?: AbortSignal;
|
|
8
|
+
}
|
|
9
|
+
export type MaintenanceCommandRunner = (command: string, args: string[], options?: MaintenanceCommandOptions) => Promise<MaintenanceCommandResult>;
|
|
10
|
+
export interface MaintenanceCliDependencies {
|
|
11
|
+
cwd?: string;
|
|
12
|
+
runCommand?: MaintenanceCommandRunner;
|
|
13
|
+
fetchLatestVersion?: () => Promise<string>;
|
|
14
|
+
confirm?: (message: string) => Promise<boolean>;
|
|
15
|
+
now?: () => Date;
|
|
16
|
+
installerTimeoutMs?: number;
|
|
17
|
+
stdout?: (text: string) => void;
|
|
18
|
+
stderr?: (text: string) => void;
|
|
19
|
+
}
|
|
20
|
+
export declare function runMaintenanceCli(argv: string[], dependencies?: MaintenanceCliDependencies): Promise<number>;
|
|
21
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/maintenance/cli.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,yBAAyB,KAChC,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAEvC,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AA6dD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EAAE,EACd,YAAY,GAAE,0BAA+B,GAC5C,OAAO,CAAC,MAAM,CAAC,CA6IjB"}
|