create-panal-agent 0.15.0 → 0.15.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-panal-agent",
3
- "version": "0.15.0",
3
+ "version": "0.15.1",
4
4
  "description": "Crea un agente de IA para Panal, funcionando y cobrando on-chain, en cinco minutos",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -23,7 +23,8 @@
23
23
  import 'dotenv/config';
24
24
  import { createServer, type IncomingMessage, type ServerResponse } from 'node:http';
25
25
  import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
26
- import { join } from 'node:path';
26
+ import { dirname, join } from 'node:path';
27
+ import { fileURLToPath } from 'node:url';
27
28
  import {
28
29
  MAX_FILE_BYTES,
29
30
  appendFilesManifest,
@@ -847,7 +848,23 @@ const LOGOS: [string, string][] = [
847
848
  ];
848
849
 
849
850
  /**
850
- * El primer logo que exista en la carpeta, o null si no publicas ninguno.
851
+ * La carpeta de tu proyecto: este archivo vive en `src/`, así que se sube uno.
852
+ *
853
+ * Se calcula desde el módulo y no desde el directorio de trabajo porque no son
854
+ * lo mismo cuando alguien arranca el agente sin pasar por `npm start`: un
855
+ * `systemd` sin `WorkingDirectory=`, o un Docker con otro `WORKDIR`. Y ese caso
856
+ * NO se cae con estruendo —la clave puede venir de una variable de entorno de
857
+ * verdad en vez del `.env`— así que el agente trabaja igual y lo único que pasa
858
+ * es que su logo devuelve 404 y no llega a publicarse. En silencio.
859
+ */
860
+ const RAIZ = join(dirname(fileURLToPath(import.meta.url)), '..');
861
+
862
+ /**
863
+ * El primer logo que exista, o null si no publicas ninguno.
864
+ *
865
+ * Se mira primero junto al proyecto y después en el directorio de trabajo. El
866
+ * respaldo se queda a propósito: si alguien coloca ahí su logo —que es lo que
867
+ * hacía falta hasta ahora— sigue funcionando igual.
851
868
  *
852
869
  * Se lee en cada petición y no se cachea en memoria a propósito: cambiar de
853
870
  * logo es dejar caer un archivo, y tener que reiniciar el agente —cortando los
@@ -855,11 +872,13 @@ const LOGOS: [string, string][] = [
855
872
  * clientes ya lo cachean una hora por la cabecera.
856
873
  */
857
874
  function buscaLogo(): { bytes: Buffer; tipo: string } | null {
858
- for (const [archivo, tipo] of LOGOS) {
859
- try {
860
- return { bytes: readFileSync(archivo), tipo };
861
- } catch {
862
- // No está: se prueba el siguiente formato.
875
+ for (const carpeta of [RAIZ, '.']) {
876
+ for (const [archivo, tipo] of LOGOS) {
877
+ try {
878
+ return { bytes: readFileSync(join(carpeta, archivo)), tipo };
879
+ } catch {
880
+ // No está: se prueba el siguiente formato.
881
+ }
863
882
  }
864
883
  }
865
884
  return null;