@pasosdejesus/m 0.29.0 → 0.30.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 CHANGED
@@ -32,7 +32,7 @@ credentials). The `usdt` payment engine lives in `@pasosdejesus/usdt`.
32
32
  |------|----------|
33
33
  | Scaffolding | `m:create`, `m:update` |
34
34
  | Database (PostgreSQL + Kysely) | `db:create`, `db:migrate`, `db:rollback`, `db:dump`, `db:restore`, `db:structure:dump/load`, `db:console`, `db:test`, `db:seed` |
35
- | Wallet (replaces `cast` on OpenBSD) | `wallet:generate`, `wallet:import`, `wallet:list`, `wallet:balance`, `wallet:send`, `wallet:approve`, `wallet:call`, `wallet:sign`, `wallet:broadcast`, `wallet:keccak`, `wallet:derive` — keys in `~/.m/wallets/` with `chmod 600` |
35
+ | Wallet (replaces `cast` on OpenBSD) | `eng:opwallet:generate`, `eng:opwallet:import`, `eng:opwallet:list`, `eng:opwallet:balance`, `eng:opwallet:send`, `eng:opwallet:approve`, `eng:opwallet:call`, `eng:opwallet:sign`, `eng:opwallet:broadcast`, `eng:opwallet:keccak`, `eng:opwallet:derive` — keys in `~/.m/wallets/` with `chmod 600` |
36
36
  | Contracts | `contract:test` (EVM via `@pasosdejesus/edr`, no native binaries) |
37
37
  | AI tooling | `ai:context`, `ai:readfile`, `ai:writefile`, `ai:edit`, `ai:grep`, `ai:glob` |
38
38
  | Requirements | `req:list`, `req:show`, `req:cross`, `req:compare`, `req:sync-from-repo`, `req:sync-to-repo`, `req:list-repo`, `req:create`, `req:close` |
package/dist/CHANGELOG.md CHANGED
@@ -2,6 +2,68 @@
2
2
 
3
3
  All notable changes to `@pasosdejesus/m` are documented in this file.
4
4
 
5
+ ## [0.30.1] - 2026-10-14
6
+
7
+ ### Fixed — `eng:sync --vendor` de un motor **con vistas** (auditoría de learn.tg)
8
+
9
+ - **La copia vendorizada nace consumible:** el `package.json` **preserva los `exports` reales** del motor
10
+ (los subpaths `./next`/`./model` dejan de apuntar a rutas inexistentes), **puentea** los motores de los
11
+ que depende **por nombre** (`@pasosdejesus/<alias>` → `generated-<alias>`: sus `import` se reescriben al
12
+ nombre puente y se declaran como dependencia `*`, porque el nombre real es `private` y el consumidor
13
+ vendoriza esos motores como hermanos y añade `packages/generated/*` a su workspace; **sin** rutas
14
+ `file:../…`, que atarían la copia al layout de una máquina), **no** emite rangos `workspace:` (inválidos
15
+ fuera del workspace) y pone los peers (`react`/`react-dom`) como `peerDependencies` opcionales +
16
+ `devDependencies`.
17
+ - El `tsconfig` de la copia añade `jsx: react-jsx` y `lib` DOM, así que `tsc -b` compila motores con `.tsx`.
18
+
19
+ ## [0.30.0] - 2026-10-13
20
+
21
+ ### Changed (breaking) — [m/REQ/50](https://gitlab.com/pasosdeJesus/m/-/work_items/50) Fase 1
22
+
23
+ - **`wallet:*` → `eng:opwallet:*`:** los 11 comandos del **CLI de operador** (llaves del dispositivo en
24
+ `~/.m/wallets`, `chmod 600`: generate, import, list, balance, send, approve, call, sign, broadcast,
25
+ keccak, derive) pasan a la gramática `eng:*`, **sin alias**. La billetera **del usuario** no es esto:
26
+ se convertirá en el motor `wallet` (Fase 2). Actualiza scripts y docs
27
+ (`wallet:generate` → `eng:opwallet:generate`, …). Claves i18n `cmd.wallet_*` → `cmd.eng_opwallet_*`.
28
+
29
+ ### Added — [m/REQ/50](https://gitlab.com/pasosdeJesus/m/-/work_items/50) Fase 2 (motor `wallet`) y selección por columna
30
+
31
+ - **Motor `wallet`** (`packages/wallet`, `@pasosdejesus/wallet`, `private`): modelo propio
32
+ `billetera_usuario`/`billetera_invitada` (migraciones + `db/structure.sql`), `provides: ["auth","wallet"]`,
33
+ y compone `msip` sólo por `usuario`. El enlace billetera↔usuario (`wallet-link.ts`) **sale de `msip`** y
34
+ pasa a este motor (corte coordinado con learn.tg `R-#265`).
35
+ - **`engines.<motor>.columns`** (selección por columna): `eng:verify` valida que cada columna declarada
36
+ exista en la tabla del motor (`UNKNOWN_COLUMN`).
37
+ - **Controllers del motor `wallet`** (faceta C, `src/controllers.ts`): `inspectWallet`, `signInWallet`,
38
+ `linkSecondWallet`, `unlinkAccountWallet`, `inviteWalletToAccount`, `acceptWalletInvitation`,
39
+ `cancelAccountInvitation`. Framework-agnósticos; exigen que el **consumidor** afirme la verificación
40
+ SIWE/verificación (`WalletNotVerifiedError`).
41
+ - **Vistas del motor `wallet`** (`@pasosdejesus/wallet/next`, faceta V):
42
+ - `WalletConnect` — punto de entrada con el **modal de elección** (un botón «Conectar» → *in-app* o *externa*).
43
+ - `WalletPanel` — **panel completo**: cuenta (N billeteras), **saldos**, **recibir** (QR), **enviar**
44
+ (nativo/ERC20) y **coleccionables** (NFT). Secciones **deshabilitables** (`features`); auth-only = no
45
+ usar el panel. Config inyectada (tokens, red/explorer, clientes viem, `fetchNfts`).
46
+ - Sobrecargables (`renderBody`/`renderWallet`, D10); textos inyectables. `eng:sync` deriva `views.components`.
47
+ - Helpers puros portados de learn.tg (`wallet-amounts.ts`: `formatTokenAmount`, `parseTokenAmount`, `validateSend`, explorer, `normalizeNftImage`).
48
+ - `@pasosdejesus/wallet/next` **re-exporta** los primitivos de `@pasosdejesus/m/wallet/next` (transición);
49
+ `m` no obliga a ningún motor de billetera (composición **web2** con cero motores verificada).
50
+ - **Correcciones de la 2ª auditoría de learn.tg:** saldo desconocido ≠ insuficiente (con reintento),
51
+ rama de **iniciar sesión** en `WalletConnect` cuando la in-app está desbloqueada sin sesión,
52
+ `InvalidWalletAddressError`, error de invitación normalizado, imágenes NFT con `referrerPolicy`
53
+ y `loading="lazy"`, dirección validada en la URL del explorer, y `Máximo` no aplica si el saldo ≤ reserva
54
+ de gas; +pruebas de las rutas de dinero (ERC20, sin gas, bloqueada, saldo desconocido).
55
+
56
+ ### Changed (contrato) — modelo del motor `wallet` endurecido
57
+
58
+ - **`linkWallet`/`ensureWalletLink` rechazan** (`WalletOwnedByOtherError`) una billetera ya vinculada a
59
+ **otra** cuenta (antes devolvían el enlace ajeno); `acceptInvitation(db, dirección, usuarioId)` **rechaza**
60
+ si la dirección es de otra cuenta y **no** marca `used_at`.
61
+ - **Atomicidad:** `unlinkWallet` y `acceptInvitation` pasan a **una sentencia** (CTE en `acceptInvitation`);
62
+ `upsertUserByWallet` limpia el usuario huérfano en una carrera. Se valida la dirección (`0x` + 40 hex).
63
+ - **DDL según diseño:** `linked_at NOT NULL DEFAULT now()`, `linked_by varchar(60)`, `expires_at NOT NULL
64
+ DEFAULT now() + 30 días`; `listWallets` devuelve `linked_at`.
65
+ - Basado en la auditoría de learn.tg (`tmp/audita-wallet-desde-learn.tg.md`, 2026-10-13).
66
+
5
67
  ## [0.29.0] - 2026-10-13
6
68
 
7
69
  ### Added — [m/REQ/40](https://gitlab.com/pasosdeJesus/m/-/work_items/40) (glue genérico, fuentes y drift)
@@ -27,12 +27,22 @@ export declare const GENERATED_RELATIVE = "src/m-engine.generated.ts";
27
27
  * `m-engine.generated.ts` (el inventario completo de columnas/restricciones vive en el motor).
28
28
  */
29
29
  export declare function structureTables(sql: string): string[];
30
+ /**
31
+ * Columnas por tabla de una estructura de referencia (`pg_dump`): lee el cuerpo de
32
+ * cada `CREATE TABLE` y descarta las restricciones de tabla. Sirve para validar la
33
+ * **selección por columna** del consumidor (`engines.<motor>.columns`,
34
+ * [REQ/50](https://gitlab.com/pasosdeJesus/m/-/work_items/50) D9): declarar sólo las columnas que se usan (p. ej. `usuario` sin
35
+ * las de Devise).
36
+ */
37
+ export declare function structureColumns(sql: string): Record<string, string[]>;
30
38
  /**
31
39
  * Tables of a motor's own model, derived from its **reference structure**
32
40
  * (`db/structure.sql`), never from scanning all migrations (which have
33
41
  * `DROP`/`RENAME`). A motor with no structure has no model tables (`[]`).
34
42
  */
35
43
  export declare function deriveTables(dir: string): string[];
44
+ /** Columns per table of a motor's reference structure, or `{}` when it ships none. */
45
+ export declare function deriveColumns(dir: string): Record<string, string[]>;
36
46
  /** Migrations directory, by convention `db/migrations` when it exists. */
37
47
  export declare function deriveMigrations(dir: string): string | undefined;
38
48
  /** Solidity contract names, from `contracts/contracts/*.sol` (skipping `_`-prefixed mocks). */
@@ -1 +1 @@
1
- {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/compose/derive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5C,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,+EAA0E,CAAA;AAEvG,kCAAkC;AAClC,eAAO,MAAM,kBAAkB,0BAA0B,CAAA;AAEzD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,8BAA8B,CAAA;AAK7D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAIrD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAOlD;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAOrD;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYzD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAWpD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAc7F;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAExD;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAWzD"}
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/compose/derive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5C,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,+EAA0E,CAAA;AAEvG,kCAAkC;AAClC,eAAO,MAAM,kBAAkB,0BAA0B,CAAA;AAEzD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,8BAA8B,CAAA;AAK7D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAIrD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAgBtE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAOlD;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAOnE;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAOrD;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYzD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAWpD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAc7F;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAExD;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAWzD"}
@@ -35,6 +35,32 @@ export function structureTables(sql) {
35
35
  found.add(match[1]);
36
36
  return [...found].sort();
37
37
  }
38
+ /**
39
+ * Columnas por tabla de una estructura de referencia (`pg_dump`): lee el cuerpo de
40
+ * cada `CREATE TABLE` y descarta las restricciones de tabla. Sirve para validar la
41
+ * **selección por columna** del consumidor (`engines.<motor>.columns`,
42
+ * [REQ/50](https://gitlab.com/pasosdeJesus/m/-/work_items/50) D9): declarar sólo las columnas que se usan (p. ej. `usuario` sin
43
+ * las de Devise).
44
+ */
45
+ export function structureColumns(sql) {
46
+ const result = {};
47
+ const tableRe = /^CREATE TABLE (?:ONLY )?public\.(\w+) \(\r?\n([\s\S]*?)^\);/gm;
48
+ for (const match of sql.matchAll(tableRe)) {
49
+ const [, table, body] = match;
50
+ const columns = [];
51
+ for (const line of body.split('\n')) {
52
+ const trimmed = line.trim();
53
+ if (!trimmed)
54
+ continue;
55
+ const first = trimmed.split(/\s+/)[0];
56
+ if (/^(CONSTRAINT|PRIMARY|FOREIGN|UNIQUE|CHECK|EXCLUDE|LIKE)$/i.test(first))
57
+ continue;
58
+ columns.push(first.replace(/^"|"$/g, ''));
59
+ }
60
+ result[table] = columns;
61
+ }
62
+ return result;
63
+ }
38
64
  /**
39
65
  * Tables of a motor's own model, derived from its **reference structure**
40
66
  * (`db/structure.sql`), never from scanning all migrations (which have
@@ -49,6 +75,16 @@ export function deriveTables(dir) {
49
75
  }
50
76
  return [];
51
77
  }
78
+ /** Columns per table of a motor's reference structure, or `{}` when it ships none. */
79
+ export function deriveColumns(dir) {
80
+ for (const candidate of STRUCTURE_CANDIDATES) {
81
+ const file = join(dir, candidate);
82
+ if (!existsSync(file))
83
+ continue;
84
+ return structureColumns(readFileSync(file, 'utf-8'));
85
+ }
86
+ return {};
87
+ }
52
88
  /** Migrations directory, by convention `db/migrations` when it exists. */
53
89
  export function deriveMigrations(dir) {
54
90
  return existsSync(join(dir, 'db', 'migrations')) ? 'db/migrations' : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"derive.js","sourceRoot":"","sources":["../../src/compose/derive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"derive.js","sourceRoot":"","sources":["../../src/compose/derive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC,iEAAiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,uEAAuE,CAAA;AAEvG,kCAAkC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAA;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,EAAE,CAAA;AAE7D,0FAA0F;AAC1F,MAAM,oBAAoB,GAAG,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAA;AAElE;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACxG,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,MAAM,GAA6B,EAAE,CAAA;IAC3C,MAAM,OAAO,GAAG,+DAA+D,CAAA;IAC/E,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAA;QAC7B,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAC3B,IAAI,CAAC,OAAO;gBAAE,SAAQ;YACtB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACrC,IAAI,2DAA2D,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,SAAQ;YACrF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;QAC3C,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;IACzB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,KAAK,MAAM,SAAS,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC/B,OAAO,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IACrD,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,KAAK,MAAM,SAAS,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC/B,OAAO,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAA;AAChF,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;IACxD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAA;IACxC,OAAO,WAAW,CAAC,YAAY,CAAC;SAC7B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAChE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SACzC,IAAI,EAAE,CAAA;AACX,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;QAC1C,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC;aACvB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;aAC1C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC;aAClC,IAAI,EAAE;QACX,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IACrE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IACxD,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,QAAQ,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC;SAChD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAC9B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACnC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAA;IACxB,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,qDAAqD,CAAC,EAAE,CAAC;QACzF,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACrB,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,IAAY,EAAE,OAAe,EAAE,GAAa;IAClF,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACxC,MAAM,OAAO,GAAY;QACvB,IAAI;QACJ,OAAO;QACP,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;KAC5E,CAAA;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;IACvD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IACpC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACpD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,KAAK;QAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;IAChC,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO,GAAG,gBAAgB,2BAA2B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,cAAc,CAAA;AACrG,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAA;IAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAClC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACxE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAY,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -8,11 +8,11 @@
8
8
  * "Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23)
9
9
  */
10
10
  export type { Intention, Derived, DerivedModel, DerivedViews, EngineManifest, EngineMount, EngineRef, Finding, FindingCode, SyncResult, VerifyResult, } from './manifest.js';
11
- export { deriveFrom, deriveTables, deriveMigrations, deriveContracts, deriveViews, deriveCommands, structureTables, renderGenerated, readGenerated, GENERATED_FILENAME, GENERATED_RELATIVE, GENERATED_HEADER, } from './derive.js';
11
+ export { deriveFrom, deriveTables, deriveColumns, deriveMigrations, deriveContracts, deriveViews, deriveCommands, structureTables, structureColumns, renderGenerated, readGenerated, GENERATED_FILENAME, GENERATED_RELATIVE, GENERATED_HEADER, } from './derive.js';
12
12
  export { discoverEngines, readEngineManifest, readIntention, readPackageJson, engineClosure, } from './discover.js';
13
13
  export { sync } from './sync.js';
14
14
  export { verify } from './verify.js';
15
- export { vendor, unvendor, drift, readProvenance, structureSha, type Provenance, type DriftFinding, type DriftCode, type DriftReason, type GitOrigin, } from './vendor.js';
15
+ export { vendor, unvendor, drift, readProvenance, structureSha, enginePackages, rewriteEngineImports, type Provenance, type DriftFinding, type DriftCode, type DriftReason, type GitOrigin, } from './vendor.js';
16
16
  export { parseFromGit, materializeGit, motorInCheckout, gitCheckoutDir, gitAvailable, gitCacheRoot, } from './git.js';
17
17
  export { motorMigrationDir, motorMigrationFiles, planMigrationCopy, motorSeedFile, type MigrationPlan, } from './data.js';
18
18
  export { tablesUsed, declaredUsage, usageReport, projectSources, type DeclaredUsage, type UsageReport, } from './usage.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compose/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EACV,SAAS,EACT,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,SAAS,EACT,OAAO,EACP,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EACL,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EACrD,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,GACrF,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,GAC1F,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EACxE,KAAK,aAAa,GACnB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EACtD,KAAK,aAAa,EAAE,KAAK,WAAW,GACrC,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compose/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EACV,SAAS,EACT,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,SAAS,EACT,OAAO,EACP,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EACL,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAC3F,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,GACrF,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,GAC1F,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EACxE,KAAK,aAAa,GACnB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EACtD,KAAK,aAAa,EAAE,KAAK,WAAW,GACrC,MAAM,YAAY,CAAA"}
@@ -7,11 +7,11 @@
7
7
  *
8
8
  * "Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23)
9
9
  */
10
- export { deriveFrom, deriveTables, deriveMigrations, deriveContracts, deriveViews, deriveCommands, structureTables, renderGenerated, readGenerated, GENERATED_FILENAME, GENERATED_RELATIVE, GENERATED_HEADER, } from './derive.js';
10
+ export { deriveFrom, deriveTables, deriveColumns, deriveMigrations, deriveContracts, deriveViews, deriveCommands, structureTables, structureColumns, renderGenerated, readGenerated, GENERATED_FILENAME, GENERATED_RELATIVE, GENERATED_HEADER, } from './derive.js';
11
11
  export { discoverEngines, readEngineManifest, readIntention, readPackageJson, engineClosure, } from './discover.js';
12
12
  export { sync } from './sync.js';
13
13
  export { verify } from './verify.js';
14
- export { vendor, unvendor, drift, readProvenance, structureSha, } from './vendor.js';
14
+ export { vendor, unvendor, drift, readProvenance, structureSha, enginePackages, rewriteEngineImports, } from './vendor.js';
15
15
  export { parseFromGit, materializeGit, motorInCheckout, gitCheckoutDir, gitAvailable, gitCacheRoot, } from './git.js';
16
16
  export { motorMigrationDir, motorMigrationFiles, planMigrationCopy, motorSeedFile, } from './data.js';
17
17
  export { tablesUsed, declaredUsage, usageReport, projectSources, } from './usage.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compose/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EACL,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,GAEtD,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,GAC1F,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,GAEzE,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,GAEvD,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compose/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EACL,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,GAE5F,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,GAC1F,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,GAEzE,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,GAEvD,MAAM,YAAY,CAAA"}
@@ -69,12 +69,13 @@ export interface EngineManifest extends Intention, Derived {
69
69
  dir: string;
70
70
  }
71
71
  /** Grado de un hallazgo de verificación (análogo a los grados D6 de conformidad). */
72
- export type FindingCode = 'GENERATED_MISSING' | 'GENERATED_STALE' | 'MISSING_ENGINE' | 'UNKNOWN_TABLE' | 'BROKEN_REFERENCE';
72
+ export type FindingCode = 'GENERATED_MISSING' | 'GENERATED_STALE' | 'MISSING_ENGINE' | 'UNKNOWN_TABLE' | 'UNKNOWN_COLUMN' | 'BROKEN_REFERENCE';
73
73
  export interface Finding {
74
74
  code: FindingCode;
75
75
  message: string;
76
76
  motor?: string;
77
77
  table?: string;
78
+ column?: string;
78
79
  }
79
80
  /** Resultado de `eng:sync`. */
80
81
  export interface SyncResult {
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/compose/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wFAAwF;AACxF,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,oHAAoH;IACpH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CACpC;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,4DAA4D;AAC5D,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,YAAY,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,YAAY,CAAA;CACrB;AAED,2EAA2E;AAC3E,MAAM,WAAW,cAAe,SAAQ,SAAS,EAAE,OAAO;IACxD,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,qFAAqF;AACrF,MAAM,MAAM,WAAW,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,kBAAkB,CAAA;AAEtB,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,+BAA+B;AAC/B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/compose/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wFAAwF;AACxF,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,oHAAoH;IACpH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CACpC;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,4DAA4D;AAC5D,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,YAAY,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,YAAY,CAAA;CACrB;AAED,2EAA2E;AAC3E,MAAM,WAAW,cAAe,SAAQ,SAAS,EAAE,OAAO;IACxD,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,qFAAqF;AACrF,MAAM,MAAM,WAAW,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,gBAAgB,GAChB,kBAAkB,CAAA;AAEtB,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,+BAA+B;AAC/B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB"}
@@ -36,8 +36,37 @@ export declare function structureSha(dir: string): string | null;
36
36
  * consumidor (mismo criterio que sus paquetes de motor, p. ej. `gdcluster`).
37
37
  */
38
38
  export declare function vendoredTsconfig(): string;
39
- /** `package.json` de la copia vendorizada: paquete propio, compilable por separado. */
39
+ /**
40
+ * `package.json` de la copia vendorizada: paquete propio, compilable por separado.
41
+ *
42
+ * La copia debe **nacer consumible** (auditoría de learn.tg, 2026-10-14):
43
+ * - **Preserva los `exports` reales del motor** (p. ej. `./next` → `dist/components/index.js`),
44
+ * no un `./*` genérico que rompe los subpaths.
45
+ * - **Puentea los motores de los que depende** por **nombre** (`generated-<alias>`): sus `import` se
46
+ * reescriben en la copia (ver `rewriteEngineImports`) y se declaran como dependencia `*` (el
47
+ * consumidor añade `packages/generated/*` a su workspace). **Sin rutas `file:../…`**: atarían la
48
+ * copia al layout de una máquina.
49
+ * - No emite rangos `workspace:`; los `peerDependencies` van como peers (opcionales) **y** como
50
+ * `devDependencies` para que la copia **compile**.
51
+ */
40
52
  export declare function vendoredPackageJson(motorDir: string, pkg: PackageJson | null): string;
53
+ /**
54
+ * Motores de los que depende `motorDir`, según su intención: `Map<nombre-de-paquete, alias>`.
55
+ * `engines.<alias>.package` da el nombre real; si falta, se asume `@pasosdejesus/<alias>`.
56
+ * Es la materia prima del **puente por nombre** (`rewriteEngineImports`).
57
+ */
58
+ export declare function enginePackages(motorDir: string): Map<string, string>;
59
+ /**
60
+ * Reescribe los `import` de la copia a los motores de los que depende, **por nombre**:
61
+ * `@pasosdejesus/<alias>` (o el `package` declarado) → `generated-<alias>`, conservando el
62
+ * subpath (`@pasosdejesus/msip/model` → `generated-msip/model`). El consumidor vendoriza esos
63
+ * motores como hermanos en `packages/generated/*` y añade el glob a su workspace. **Sin rutas
64
+ * `file:../…`**: atarían la copia al layout de una máquina (auditoría de learn.tg, 2026-10-14).
65
+ *
66
+ * No toca el nombre propio del motor ni los paquetes que no declara (p. ej. `@pasosdejesus/m`,
67
+ * que sí es publicable).
68
+ */
69
+ export declare function rewriteEngineImports(destDir: string, engines: Map<string, string>): void;
41
70
  /**
42
71
  * Motor original con el que medir el drift de una copia vendorizada: el `--from`
43
72
  * (la carpeta del motor, o un checkout donde vive en `packages/<motor>`), y si no
@@ -1 +1 @@
1
- {"version":3,"file":"vendor.d.ts","sourceRoot":"","sources":["../../src/compose/vendor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAkC,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACtB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,iFAAiF;AACjF,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAmBzC;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CAwBrF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS9G;AAED,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,CA2B1F;AAED,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAQhE;AAED,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAIhD;AAED,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEjD,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE9C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CAoBvE"}
1
+ {"version":3,"file":"vendor.d.ts","sourceRoot":"","sources":["../../src/compose/vendor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAkC,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACtB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,iFAAiF;AACjF,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAoBzC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CA+CrF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAMpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAqBxF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS9G;AAED,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,CA6B1F;AAED,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAQhE;AAED,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAIhD;AAED,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEjD,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE9C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CAoBvE"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * "Porque ¿quién de vosotros, queriendo edificar una torre, no se sienta primero y calcula los gastos…?" (Lucas 14:28)
8
8
  */
9
- import { cpSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
9
+ import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
10
10
  import { createHash } from 'node:crypto';
11
11
  import { basename, join } from 'node:path';
12
12
  import { readIntention, readPackageJson } from './discover.js';
@@ -30,7 +30,8 @@ export function vendoredTsconfig() {
30
30
  target: 'ES2022',
31
31
  module: 'NodeNext',
32
32
  moduleResolution: 'NodeNext',
33
- lib: ['ES2022'],
33
+ lib: ['ES2022', 'DOM', 'DOM.Iterable'],
34
+ jsx: 'react-jsx',
34
35
  rootDir: './src',
35
36
  outDir: './dist',
36
37
  declaration: true,
@@ -44,11 +45,41 @@ export function vendoredTsconfig() {
44
45
  exclude: ['node_modules', 'dist'],
45
46
  }, null, 2)}\n`;
46
47
  }
47
- /** `package.json` de la copia vendorizada: paquete propio, compilable por separado. */
48
+ /**
49
+ * `package.json` de la copia vendorizada: paquete propio, compilable por separado.
50
+ *
51
+ * La copia debe **nacer consumible** (auditoría de learn.tg, 2026-10-14):
52
+ * - **Preserva los `exports` reales del motor** (p. ej. `./next` → `dist/components/index.js`),
53
+ * no un `./*` genérico que rompe los subpaths.
54
+ * - **Puentea los motores de los que depende** por **nombre** (`generated-<alias>`): sus `import` se
55
+ * reescriben en la copia (ver `rewriteEngineImports`) y se declaran como dependencia `*` (el
56
+ * consumidor añade `packages/generated/*` a su workspace). **Sin rutas `file:../…`**: atarían la
57
+ * copia al layout de una máquina.
58
+ * - No emite rangos `workspace:`; los `peerDependencies` van como peers (opcionales) **y** como
59
+ * `devDependencies` para que la copia **compile**.
60
+ */
48
61
  export function vendoredPackageJson(motorDir, pkg) {
49
62
  const name = `generated-${basename(motorDir)}`;
50
63
  const version = pkg?.version ?? '0.0.0';
51
- const dependencies = { ...(pkg?.dependencies ?? {}), ...(pkg?.peerDependencies ?? {}) };
64
+ const engines = enginePackages(motorDir);
65
+ const dependencies = {};
66
+ for (const [dep, range] of Object.entries(pkg?.dependencies ?? {})) {
67
+ const sibling = engines.get(dep);
68
+ if (sibling)
69
+ dependencies[`generated-${sibling}`] = '*';
70
+ else
71
+ dependencies[dep] = range.startsWith('workspace:') ? '*' : range;
72
+ }
73
+ const peerDependencies = {};
74
+ const peerDependenciesMeta = {};
75
+ const devDependencies = {};
76
+ for (const [dep, range] of Object.entries(pkg?.peerDependencies ?? {})) {
77
+ const sibling = engines.get(dep);
78
+ const resolved = sibling ? `generated-${sibling}` : range.startsWith('workspace:') ? '*' : range;
79
+ peerDependencies[dep] = resolved;
80
+ peerDependenciesMeta[dep] = { optional: true };
81
+ devDependencies[dep] = resolved;
82
+ }
52
83
  const manifest = {
53
84
  name,
54
85
  version,
@@ -57,7 +88,7 @@ export function vendoredPackageJson(motorDir, pkg) {
57
88
  description: `Copia vendorizada de ${pkg?.name ?? name} v${version}, generada por \`bin/m eng:sync --vendor\`; no editar a mano.`,
58
89
  main: 'dist/index.js',
59
90
  types: 'dist/index.d.ts',
60
- exports: {
91
+ exports: pkg?.exports ?? {
61
92
  '.': { import: './dist/index.js', types: './dist/index.d.ts' },
62
93
  './*': { import: './dist/*.js', types: './dist/*.d.ts' },
63
94
  },
@@ -69,8 +100,61 @@ export function vendoredPackageJson(motorDir, pkg) {
69
100
  };
70
101
  if (Object.keys(dependencies).length > 0)
71
102
  manifest.dependencies = dependencies;
103
+ if (Object.keys(peerDependencies).length > 0) {
104
+ manifest.peerDependencies = peerDependencies;
105
+ manifest.peerDependenciesMeta = peerDependenciesMeta;
106
+ }
107
+ if (Object.keys(devDependencies).length > 0)
108
+ manifest.devDependencies = devDependencies;
72
109
  return `${JSON.stringify(manifest, null, 2)}\n`;
73
110
  }
111
+ /**
112
+ * Motores de los que depende `motorDir`, según su intención: `Map<nombre-de-paquete, alias>`.
113
+ * `engines.<alias>.package` da el nombre real; si falta, se asume `@pasosdejesus/<alias>`.
114
+ * Es la materia prima del **puente por nombre** (`rewriteEngineImports`).
115
+ */
116
+ export function enginePackages(motorDir) {
117
+ const map = new Map();
118
+ for (const [alias, ref] of Object.entries(readIntention(motorDir)?.engines ?? {})) {
119
+ map.set(ref.package ?? `@pasosdejesus/${alias}`, alias);
120
+ }
121
+ return map;
122
+ }
123
+ /**
124
+ * Reescribe los `import` de la copia a los motores de los que depende, **por nombre**:
125
+ * `@pasosdejesus/<alias>` (o el `package` declarado) → `generated-<alias>`, conservando el
126
+ * subpath (`@pasosdejesus/msip/model` → `generated-msip/model`). El consumidor vendoriza esos
127
+ * motores como hermanos en `packages/generated/*` y añade el glob a su workspace. **Sin rutas
128
+ * `file:../…`**: atarían la copia al layout de una máquina (auditoría de learn.tg, 2026-10-14).
129
+ *
130
+ * No toca el nombre propio del motor ni los paquetes que no declara (p. ej. `@pasosdejesus/m`,
131
+ * que sí es publicable).
132
+ */
133
+ export function rewriteEngineImports(destDir, engines) {
134
+ if (engines.size === 0 || !existsSync(destDir))
135
+ return;
136
+ const pairs = [...engines.entries()].map(([name, alias]) => [name, `generated-${alias}`]);
137
+ const walk = (dir) => {
138
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
139
+ const full = join(dir, entry.name);
140
+ if (entry.isDirectory()) {
141
+ walk(full);
142
+ continue;
143
+ }
144
+ if (!/\.tsx?$/.test(entry.name))
145
+ continue;
146
+ const source = readFileSync(full, 'utf-8');
147
+ let rewritten = source;
148
+ for (const [from, to] of pairs) {
149
+ const escaped = from.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
150
+ rewritten = rewritten.replace(new RegExp(`(['"\`])${escaped}(?=[/'"\`])`, 'g'), `$1${to}`);
151
+ }
152
+ if (rewritten !== source)
153
+ writeFileSync(full, rewritten);
154
+ }
155
+ };
156
+ walk(destDir);
157
+ }
74
158
  /**
75
159
  * Motor original con el que medir el drift de una copia vendorizada: el `--from`
76
160
  * (la carpeta del motor, o un checkout donde vive en `packages/<motor>`), y si no
@@ -101,6 +185,8 @@ export function vendor(motorDir, outDir, gitOrigin) {
101
185
  if (existsSync(from))
102
186
  cpSync(from, join(outDir, entry), { recursive: true, filter: keep });
103
187
  }
188
+ // Puente por nombre: la copia importa `generated-<alias>`, no `@pasosdejesus/<alias>` (private).
189
+ rewriteEngineImports(join(outDir, 'src'), enginePackages(motorDir));
104
190
  // Paquete propio + tsconfig autónomo: cada copia se compila por separado (`tsc -b`).
105
191
  writeFileSync(join(outDir, 'package.json'), vendoredPackageJson(motorDir, pkg));
106
192
  writeFileSync(join(outDir, 'tsconfig.json'), vendoredTsconfig());
@@ -1 +1 @@
1
- {"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../src/compose/vendor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../src/compose/vendor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/compose/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAW,cAAc,EAAW,YAAY,EAAE,MAAM,eAAe,CAAA;AAMnF,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAa,GACtD,YAAY,CA0Dd"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/compose/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAW,cAAc,EAAW,YAAY,EAAE,MAAM,eAAe,CAAA;AAMnF,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAa,GACtD,YAAY,CA4Fd"}
@@ -7,7 +7,7 @@
7
7
  * "Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23)
8
8
  */
9
9
  import { basename } from 'node:path';
10
- import { deriveFrom, readGenerated } from './derive.js';
10
+ import { deriveColumns, deriveFrom, readGenerated } from './derive.js';
11
11
  import { readIntention, readPackageJson } from './discover.js';
12
12
  function sameDerived(a, b) {
13
13
  return JSON.stringify(a) === JSON.stringify(b);
@@ -37,8 +37,17 @@ export function verify(dir, byName = new Map()) {
37
37
  message: `m-engine.generated.ts no longer matches the sources; run \`eng:sync\``,
38
38
  });
39
39
  }
40
+ const columnsCache = new Map();
41
+ const knownColumns = (motorDir) => {
42
+ let cached = columnsCache.get(motorDir);
43
+ if (!cached) {
44
+ cached = deriveColumns(motorDir);
45
+ columnsCache.set(motorDir, cached);
46
+ }
47
+ return cached;
48
+ };
40
49
  for (const [motor, ref] of Object.entries(intention.engines ?? {})) {
41
- const dependency = byName.get(motor);
50
+ const dependency = (ref.package ? byName.get(ref.package) : undefined) ?? byName.get(motor);
42
51
  if (!dependency) {
43
52
  findings.push({
44
53
  code: 'MISSING_ENGINE',
@@ -68,6 +77,32 @@ export function verify(dir, byName = new Map()) {
68
77
  });
69
78
  }
70
79
  }
80
+ // Selección por columna (REQ/50 D9): cada columna declarada debe existir en la tabla del motor.
81
+ for (const [table, columns] of Object.entries(ref.columns ?? {})) {
82
+ if (!dependency.model.tables.includes(table)) {
83
+ findings.push({
84
+ code: 'UNKNOWN_TABLE',
85
+ motor,
86
+ table,
87
+ message: `engine "${motor}" does not own table "${table}"`,
88
+ });
89
+ continue;
90
+ }
91
+ const tableColumns = knownColumns(dependency.dir)[table];
92
+ if (!tableColumns)
93
+ continue; // sin estructura de referencia: no se puede validar
94
+ for (const column of columns) {
95
+ if (tableColumns.includes(column))
96
+ continue;
97
+ findings.push({
98
+ code: 'UNKNOWN_COLUMN',
99
+ motor,
100
+ table,
101
+ column,
102
+ message: `engine "${motor}" table "${table}" has no column "${column}"`,
103
+ });
104
+ }
105
+ }
71
106
  }
72
107
  return { ok: findings.length === 0, findings };
73
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/compose/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/compose/verify.ts"],"names":[],"mappings":"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"}