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 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
- > Puedes encontrar la ruta completa de tu archivo `tui.json` ejecutando `opencode debug tui-path`.
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
- Una vez guardado el archivo, reinicia OpenCode para que el plugin se cargue.
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
- - El plugin descargará automáticamente la versión más reciente desde NPM al iniciar el attach.
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á el nombre exacto `opencode-flema-engram-sidebar`.
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"}