@pasosdejesus/m 0.31.1 → 0.32.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.
Files changed (40) hide show
  1. package/dist/CHANGELOG.md +78 -0
  2. package/dist/compose/layout.d.ts +30 -0
  3. package/dist/compose/layout.d.ts.map +1 -0
  4. package/dist/compose/layout.js +289 -0
  5. package/dist/compose/layout.js.map +1 -0
  6. package/dist/i18n/locales/cli.d.ts.map +1 -1
  7. package/dist/i18n/locales/cli.js +2 -0
  8. package/dist/i18n/locales/cli.js.map +1 -1
  9. package/dist/m.js +9 -2
  10. package/dist/m.js.map +1 -1
  11. package/dist/tasks/check.d.ts +9 -0
  12. package/dist/tasks/check.d.ts.map +1 -0
  13. package/dist/tasks/check.js +197 -0
  14. package/dist/tasks/check.js.map +1 -0
  15. package/dist/tasks/e2e.d.ts +12 -0
  16. package/dist/tasks/e2e.d.ts.map +1 -1
  17. package/dist/tasks/e2e.js +34 -12
  18. package/dist/tasks/e2e.js.map +1 -1
  19. package/dist/templates/Makefile +5 -1
  20. package/dist/templates/README.md.hbs +2 -2
  21. package/dist/templates/apps/contracts/bin/MusdtVerification +0 -0
  22. package/dist/templates/apps/contracts/bin/approveDepositOwner +0 -0
  23. package/dist/templates/apps/contracts/bin/contractVerification +0 -0
  24. package/dist/templates/apps/contracts/bin/deployMockUSDT +0 -0
  25. package/dist/templates/apps/contracts/bin/prepadJ.sh +0 -0
  26. package/dist/templates/apps/contracts/bin/verifyMockUSDT +0 -0
  27. package/dist/templates/apps/contracts/sync-abis.mjs +0 -0
  28. package/dist/templates/package.json.hbs +1 -1
  29. package/dist/templates/pnpm-workspace.yaml.hbs +2 -1
  30. package/dist/util/pnpm-workspace.d.ts +17 -0
  31. package/dist/util/pnpm-workspace.d.ts.map +1 -0
  32. package/dist/util/pnpm-workspace.js +138 -0
  33. package/dist/util/pnpm-workspace.js.map +1 -0
  34. package/dist/wba/routes/summary.d.ts +4 -0
  35. package/dist/wba/routes/summary.d.ts.map +1 -1
  36. package/dist/wba/routes/summary.js +4 -0
  37. package/dist/wba/routes/summary.js.map +1 -1
  38. package/package.json +3 -3
  39. package/src/tasks/README.md +1 -0
  40. package/src/wba/README.md +48 -3
package/dist/CHANGELOG.md CHANGED
@@ -2,6 +2,84 @@
2
2
 
3
3
  All notable changes to `@pasosdejesus/m` are documented in this file.
4
4
 
5
+ ## [0.32.0] - 2026-10-18
6
+
7
+ ### Changed — pnpm 11 across the repo, the template and CI
8
+
9
+ - `packageManager` is now **`pnpm@11.28.6`** in the root and every package, and `.gitlab-ci.yml`
10
+ uses pnpm 11. Measured on OpenBSD/adJ: build, typecheck, `dist-check`, unit suites, integration
11
+ suite, `m:create` plus the generated project, and the consumers `sivel3`, `learn.tg` and
12
+ `stable-sl` (REQ/54).
13
+ - **Settings moved**: `pnpm.overrides` lives in `pnpm-workspace.yaml` (pnpm 11 ignores the field in
14
+ `package.json`), `onlyBuiltDependencies`/`trustedDependencies` became `allowBuilds`, and
15
+ `packageManagerStrict*` was removed (no longer recognized).
16
+ - **`allowBuilds` is mandatory**: pnpm 11 fails with `ERR_PNPM_IGNORED_BUILDS` when a dependency
17
+ with an install script is missing (`@pasosdejesus/m`, `secp256k1`, `esbuild`, …). `secp256k1@4.0.5`
18
+ compiles natively on OpenBSD.
19
+ - **Supply-chain policy**: `minimumReleaseAge` (24 h) rejects a lockfile containing freshly published
20
+ packages, even with `--frozen-lockfile`; consumers that update right after a release need
21
+ `minimumReleaseAgeExclude: ['@pasosdejesus/*']` (validated in `learn.tg` and `stable-sl`).
22
+ - The **template** and the test project generate a pnpm 11 workspace (same `apps/*` layout and
23
+ `catalog:`); `apps/hardhat`/`apps/nextjs` were already renamed in `0.31.0`.
24
+ - **Docs**: `doc/pnpm.md` describes v11 and the settings that changed; `packages/mpdj/SKILL.md` no
25
+ longer claims that v11 breaks React; the template README installs `pnpm@11`.
26
+
27
+
28
+ ### Changed — `@pasosdejesus/wallet` panel: locked send
29
+
30
+ - The **Send** tab now always states why it cannot send. A locked wallet shows the
31
+ `needWallet` reason plus an **Unlock wallet** button (`onRequestUnlock`); a locked
32
+ panel no longer shows the generic "invalid address" while the real cause is the
33
+ lock. Terminal reason is still `validateSend()`.
34
+ - **Diagnostics**: the panel logs to `@pasosdejesus/m/debug` (tag `wallet-panel`)
35
+ its open state (address, tokens), whether a signer is available, blocked /
36
+ started / failed sends with the `validateSend()` reason and the error
37
+ code/message, per-token balance failures, and refused `Max` presses. They are
38
+ console output always and DebugConsole output when enabled.
39
+
40
+ ### Documentation — `@pasosdejesus/m/wba`
41
+
42
+ - `wba/README.md` now documents the **connection lifecycle**: `makeEventHandler` and
43
+ `makeSummaryHandler` never destroy the Kysely client (the factory owns the pool), a shared `pg.Pool`
44
+ must be a module-level singleton preserved through hot reload and bounded with `max`, and
45
+ `destroy()` is only for the code that created and owns the pool (CLI or migration scripts). The
46
+ previous example called `db.destroy()`, which would end a shared pool for every later request
47
+ ("Cannot use a pool after calling end on the pool"). `makeSummaryHandler`'s docblock says the same.
48
+
49
+ ## [0.31.2] - 2026-10-17
50
+
51
+ ### Added — `m:check` (project layout verification)
52
+
53
+ - **`bin/m m:check`** verifies the layout recommended in
54
+ [REQ/53](https://gitlab.com/pasosdeJesus/m/-/work_items/53): workspace root, `apps/web`,
55
+ `apps/contracts` and `catalog:`. It reports 15 finding codes with severities, reusing the
56
+ `eng:verify`/`eng:check` output style, and walks up to the project root (works from `apps/web`
57
+ or `apps/web/tests`). Flags: `--json`, `--strict`, `--root`, `--from`, `--fix` (only reversible
58
+ edits: move the legacy `pnpm` field into `pnpm-workspace.yaml` and switch exact catalog matches to
59
+ `"catalog:"`) and `--list-codes`. Documented in `doc/m-check.md`
60
+ ([REQ/56](https://gitlab.com/pasosdeJesus/m/-/work_items/56)); `make check` in the template.
61
+
62
+ ### Fixed — `test:e2e --retry` never retried when the flag came first
63
+
64
+ - `bin/m test:e2e --retry 2` duplicated the argument (`['--retry','--retry','2']`), parsed `NaN` and
65
+ ran **zero** retries while reporting "Still failing after 0 retry(ies)". The parsing now lives in
66
+ `parseE2eArgs` (never duplicates the flag, treats a flag without value as 0, keeps `E2E_RETRIES`
67
+ only when `--retry` is absent) and the summary reports the retries **executed**
68
+ ([REQ/59](https://gitlab.com/pasosdeJesus/m/-/work_items/59)).
69
+
70
+ ### Fixed — `@pasosdejesus/wallet` (engine, not published): scrollable tabs
71
+
72
+ - `WalletPanel` no longer uses a fixed equal-column grid for its tabs: `Collectibles`/`Coleccionables`
73
+ overflowed its cell and overlapped the next tab on mobile, and short labels (`Send`) looked wider
74
+ than the rest. Tabs now keep their natural width with the same padding and the bar scrolls
75
+ horizontally. Engine `wallet` stays at `0.1.0`; consumers pick the change up when they re-vendor.
76
+
77
+ ### Changed — documentation and collaboration policy
78
+
79
+ - `CONTRIBUTING.md` gains a **Language policy** section (English for code, commits, `CHANGELOG.md`,
80
+ `README.md`, `API.md` and public `doc/`; Spanish for `REQ/*.md` and `AGENTS.md`, with a
81
+ `## Summary (EN)` when a REQ matters outside the ecosystem); `AGENTS.md` points to it.
82
+
5
83
  ## [0.31.1] - 2026-10-16
6
84
 
7
85
  ### Fixed — descubrimiento EIP-6963 del mock E2E (`@pasosdejesus/m/e2e`)
@@ -0,0 +1,30 @@
1
+ import { type PnpmWorkspaceConfig } from '../util/pnpm-workspace.js';
2
+ export type LayoutKind = 'recommended' | 'legacy' | 'app-only' | 'unknown';
3
+ export type LayoutSeverity = 'error' | 'warn' | 'info';
4
+ export type LayoutCode = 'ROOT_MISSING' | 'ROOT_PACKAGE' | 'NO_WORKSPACE' | 'WORKSPACE_GLOBS' | 'LEGACY_APP_DIR' | 'APP_WORKSPACE_FILE' | 'LOCKFILE_ROOT' | 'VERSION_NOT_CATALOG' | 'CATALOG_MISSING' | 'DUPLICATE_VERSION' | 'HARDHAT_YARN' | 'GENERATED_NOT_MEMBER' | 'MISSING_TEMPLATE_FILE' | 'PNPM_FIELD' | 'ALLOW_BUILDS';
5
+ export interface LayoutFinding {
6
+ code: LayoutCode;
7
+ severity: LayoutSeverity;
8
+ path?: string;
9
+ message: string;
10
+ fix?: string;
11
+ }
12
+ export interface LayoutReport {
13
+ layout: LayoutKind;
14
+ apps: {
15
+ web?: string;
16
+ contracts?: string;
17
+ };
18
+ findings: LayoutFinding[];
19
+ ok: boolean;
20
+ }
21
+ export declare const LAYOUT_CODES: ReadonlyArray<{
22
+ code: LayoutCode;
23
+ severity: LayoutSeverity;
24
+ verifies: string;
25
+ }>;
26
+ export declare function checkLayout(root: string, options?: {
27
+ template?: boolean;
28
+ }): LayoutReport;
29
+ export declare function workspaceConfig(root: string): PnpmWorkspaceConfig | null;
30
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/compose/layout.ts"],"names":[],"mappings":"AAQA,OAAO,EAAqB,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAEvF,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;AAE1E,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAEtD,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,gBAAgB,GAChB,oBAAoB,GACpB,eAAe,GACf,qBAAqB,GACrB,iBAAiB,GACjB,mBAAmB,GACnB,cAAc,GACd,sBAAsB,GACtB,uBAAuB,GACvB,YAAY,GACZ,cAAc,CAAA;AAElB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1C,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,EAAE,EAAE,OAAO,CAAA;CACZ;AA2BD,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAgBxG,CAAA;AAwCD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,YAAY,CAyM5F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAExE"}
@@ -0,0 +1,289 @@
1
+ // Reglas de `m:check` (https://gitlab.com/pasosdeJesus/m/-/work_items/56):
2
+ // detecta el layout del consumidor (raíz + apps/web + apps/contracts) y reporta
3
+ // hallazgos con código y severidad. Es puro sobre el sistema de archivos: no
4
+ // escribe ni ejecuta nada (los arreglos viven en `tasks/check.ts`).
5
+ import { existsSync, readFileSync, statSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { readWorkspaceYaml } from '../util/pnpm-workspace.js';
8
+ const WORKSPACE_GLOBS = ['apps/*', 'packages/*', 'packages/generated/*'];
9
+ const NATIVE_BUILD_PACKAGES = [
10
+ '@firebase/util',
11
+ '@parcel/watcher',
12
+ '@swc/core',
13
+ 'blake-hash',
14
+ 'bufferutil',
15
+ 'esbuild',
16
+ 'keccak',
17
+ 'protobufjs',
18
+ 'secp256k1',
19
+ 'sharp',
20
+ 'unrs-resolver',
21
+ 'utf-8-validate',
22
+ ];
23
+ const CORE_ROOT_FILES = ['Makefile'];
24
+ const CORE_WEB_FILES = ['bin/m', 'Makefile'];
25
+ const CORE_CONTRACTS_FILES = ['Makefile', 'tsconfig.json'];
26
+ export const LAYOUT_CODES = [
27
+ { code: 'ROOT_MISSING', severity: 'error', verifies: 'no hay package.json en la raíz' },
28
+ { code: 'ROOT_PACKAGE', severity: 'error', verifies: 'raíz sin private, packageManager o scripts -r' },
29
+ { code: 'NO_WORKSPACE', severity: 'error', verifies: 'falta pnpm-workspace.yaml en la raíz' },
30
+ { code: 'WORKSPACE_GLOBS', severity: 'error', verifies: 'el workspace no incluye apps/*, packages/* y packages/generated/*' },
31
+ { code: 'LEGACY_APP_DIR', severity: 'warn', verifies: 'apps/nextjs o apps/hardhat (se esperan web/contracts)' },
32
+ { code: 'APP_WORKSPACE_FILE', severity: 'error', verifies: 'workspace o lockfile dentro de una app' },
33
+ { code: 'LOCKFILE_ROOT', severity: 'error', verifies: 'falta pnpm-lock.yaml en la raíz' },
34
+ { code: 'VERSION_NOT_CATALOG', severity: 'warn', verifies: 'dependencia con versión literal que ya está en catalog' },
35
+ { code: 'CATALOG_MISSING', severity: 'warn', verifies: 'dependencia compartida por las apps que no está en catalog' },
36
+ { code: 'DUPLICATE_VERSION', severity: 'error', verifies: 'misma dependencia con versiones distintas entre apps' },
37
+ { code: 'HARDHAT_YARN', severity: 'warn', verifies: 'packageManager yarn o scripts yarn en una app' },
38
+ { code: 'GENERATED_NOT_MEMBER', severity: 'warn', verifies: 'packages/generated consumido con link: en vez de ser miembro' },
39
+ { code: 'MISSING_TEMPLATE_FILE', severity: 'warn', verifies: 'falta un archivo núcleo que la plantilla sí trae' },
40
+ { code: 'PNPM_FIELD', severity: 'warn', verifies: 'campo pnpm en package.json (pnpm 11 lo ignora)' },
41
+ { code: 'ALLOW_BUILDS', severity: 'warn', verifies: 'paquete con script de instalación fuera de allowBuilds' },
42
+ ];
43
+ function readJson(file) {
44
+ if (!existsSync(file))
45
+ return null;
46
+ try {
47
+ return JSON.parse(readFileSync(file, 'utf-8'));
48
+ }
49
+ catch {
50
+ return null;
51
+ }
52
+ }
53
+ function isDirectory(dir) {
54
+ try {
55
+ return statSync(dir).isDirectory();
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
61
+ function dependencyEntries(pkg) {
62
+ if (!pkg)
63
+ return [];
64
+ const result = [];
65
+ for (const field of ['dependencies', 'devDependencies', 'optionalDependencies', 'peerDependencies']) {
66
+ const deps = pkg[field];
67
+ if (!deps || typeof deps !== 'object')
68
+ continue;
69
+ for (const [name, version] of Object.entries(deps)) {
70
+ if (typeof version === 'string')
71
+ result.push([name, version]);
72
+ }
73
+ }
74
+ return result;
75
+ }
76
+ function findApp(root, preferred, legacy) {
77
+ for (const name of [preferred, legacy]) {
78
+ const relative = join('apps', name);
79
+ if (isDirectory(join(root, relative)))
80
+ return relative;
81
+ }
82
+ return undefined;
83
+ }
84
+ export function checkLayout(root, options = {}) {
85
+ const findings = [];
86
+ const add = (finding) => {
87
+ findings.push(finding);
88
+ };
89
+ const appsDir = join(root, 'apps');
90
+ if (!isDirectory(appsDir)) {
91
+ return { layout: 'unknown', apps: {}, findings: [], ok: true };
92
+ }
93
+ const web = findApp(root, 'web', 'nextjs');
94
+ const contracts = findApp(root, 'contracts', 'hardhat');
95
+ const workspacePath = join(root, 'pnpm-workspace.yaml');
96
+ const workspace = readWorkspaceYaml(workspacePath);
97
+ const rootPkg = readJson(join(root, 'package.json'));
98
+ const layout = workspace && web === 'apps/web' && contracts === 'apps/contracts'
99
+ ? 'recommended'
100
+ : workspace
101
+ ? 'legacy'
102
+ : web
103
+ ? 'app-only'
104
+ : 'unknown';
105
+ if (!rootPkg) {
106
+ add({ code: 'ROOT_MISSING', severity: 'error', path: 'package.json', message: 'falta package.json en la raíz' });
107
+ }
108
+ else {
109
+ if (rootPkg.private !== true) {
110
+ add({
111
+ code: 'ROOT_PACKAGE', severity: 'error', path: 'package.json',
112
+ message: 'la raíz debe declarar "private": true',
113
+ });
114
+ }
115
+ const packageManager = typeof rootPkg.packageManager === 'string' ? rootPkg.packageManager : '';
116
+ if (!packageManager.startsWith('pnpm@')) {
117
+ add({
118
+ code: 'ROOT_PACKAGE', severity: 'error', path: 'package.json',
119
+ message: 'la raíz debe fijar "packageManager": "pnpm@<versión>"',
120
+ fix: 'npx pnpm@11.28.6 --version # y fijarlo en package.json',
121
+ });
122
+ }
123
+ const scripts = (rootPkg.scripts ?? {});
124
+ for (const script of ['build', 'test', 'typecheck']) {
125
+ const value = typeof scripts[script] === 'string' ? scripts[script] : '';
126
+ if (!value.includes('-r')) {
127
+ add({
128
+ code: 'ROOT_PACKAGE', severity: 'error', path: 'package.json',
129
+ message: `el script "${script}" debe ejecutar en todo el workspace (pnpm -r …)`,
130
+ });
131
+ }
132
+ }
133
+ if (rootPkg.pnpm) {
134
+ add({
135
+ code: 'PNPM_FIELD', severity: 'warn', path: 'package.json',
136
+ message: 'el campo "pnpm" ya no lo lee pnpm 11 (mover a pnpm-workspace.yaml)',
137
+ fix: 'bin/m m:check --fix',
138
+ });
139
+ }
140
+ }
141
+ if (!workspace) {
142
+ add({
143
+ code: 'NO_WORKSPACE', severity: 'error', path: 'pnpm-workspace.yaml',
144
+ message: 'falta pnpm-workspace.yaml en la raíz',
145
+ fix: 'bin/m m:check --fix # o copiarlo de packages/m/templates/pnpm-workspace.yaml',
146
+ });
147
+ }
148
+ else {
149
+ const generatedDir = existsSync(join(root, 'packages', 'generated'));
150
+ const missing = WORKSPACE_GLOBS.filter((glob) => {
151
+ if (workspace.packages.includes(glob))
152
+ return false;
153
+ if (glob === 'packages/generated/*' && !generatedDir)
154
+ return false;
155
+ return true;
156
+ });
157
+ for (const glob of missing) {
158
+ add({
159
+ code: 'WORKSPACE_GLOBS', severity: 'error', path: 'pnpm-workspace.yaml',
160
+ message: `falta el glob "${glob}" en packages:`,
161
+ });
162
+ }
163
+ }
164
+ if (!existsSync(join(root, 'pnpm-lock.yaml'))) {
165
+ add({
166
+ code: 'LOCKFILE_ROOT', severity: 'error', path: 'pnpm-lock.yaml',
167
+ message: 'falta el lockfile único en la raíz',
168
+ fix: 'npx pnpm@11.28.6 install # en la raíz del proyecto',
169
+ });
170
+ }
171
+ for (const app of [web, contracts].filter((value) => Boolean(value))) {
172
+ if (!app.endsWith('web') && !app.endsWith('contracts')) {
173
+ add({
174
+ code: 'LEGACY_APP_DIR', severity: 'warn', path: app,
175
+ message: `"${app}" es el nombre legado; se espera apps/${app.endsWith('nextjs') ? 'web' : 'contracts'}`,
176
+ fix: `git mv ${app} apps/${app.endsWith('nextjs') ? 'web' : 'contracts'}`,
177
+ });
178
+ }
179
+ for (const file of ['pnpm-workspace.yaml', 'pnpm-lock.yaml']) {
180
+ if (existsSync(join(root, app, file))) {
181
+ add({
182
+ code: 'APP_WORKSPACE_FILE', severity: 'error', path: join(app, file),
183
+ message: 'un workspace de app impide el lockfile único',
184
+ fix: `git rm ${join(app, file)} # y volver a instalar en la raíz`,
185
+ });
186
+ }
187
+ }
188
+ }
189
+ const appPackages = [];
190
+ for (const app of [web, contracts].filter((value) => Boolean(value))) {
191
+ const pkg = readJson(join(root, app, 'package.json'));
192
+ appPackages.push({ dir: app, deps: dependencyEntries(pkg) });
193
+ const packageManager = typeof pkg?.packageManager === 'string' ? pkg.packageManager : '';
194
+ const scripts = (pkg?.scripts ?? {});
195
+ const usesYarn = packageManager.startsWith('yarn@')
196
+ || Object.values(scripts).some((value) => typeof value === 'string' && /\byarn\b/.test(value));
197
+ if (usesYarn) {
198
+ add({
199
+ code: 'HARDHAT_YARN', severity: 'warn', path: join(app, 'package.json'),
200
+ message: 'la app todavía usa yarn; el workspace espera pnpm',
201
+ fix: 'reemplazar yarn por pnpm en scripts y quitar "packageManager" de la app',
202
+ });
203
+ }
204
+ for (const [name, version] of dependencyEntries(pkg)) {
205
+ if (version.startsWith('link:') && version.includes('packages/generated')) {
206
+ add({
207
+ code: 'GENERATED_NOT_MEMBER', severity: 'warn', path: join(app, 'package.json'),
208
+ message: `${name} se consume con link:; en un workspace debe ser miembro (packages/generated/*)`,
209
+ fix: 'declarar "packages/generated/*" en pnpm-workspace.yaml y usar la versión del paquete',
210
+ });
211
+ }
212
+ }
213
+ }
214
+ const catalog = workspace?.catalog ?? {};
215
+ for (const { dir, deps } of appPackages) {
216
+ for (const [name, version] of deps) {
217
+ if (version === 'catalog:' || version.startsWith('link:') || version.startsWith('file:') || version.startsWith('workspace:'))
218
+ continue;
219
+ if (!catalog[name])
220
+ continue;
221
+ add({
222
+ code: 'VERSION_NOT_CATALOG', severity: 'warn', path: join(dir, 'package.json'),
223
+ message: `${name} repite la versión del catálogo; usar "catalog:"`,
224
+ fix: 'bin/m m:check --fix',
225
+ });
226
+ }
227
+ }
228
+ if (appPackages.length === 2) {
229
+ const [first, second] = appPackages;
230
+ const firstDeps = new Map(first.deps);
231
+ for (const [name, version] of second.deps) {
232
+ const other = firstDeps.get(name);
233
+ if (other === undefined)
234
+ continue;
235
+ const shared = version === other;
236
+ if (!shared && version !== 'catalog:' && other !== 'catalog:') {
237
+ add({
238
+ code: 'DUPLICATE_VERSION', severity: 'error', path: join(second.dir, 'package.json'),
239
+ message: `${name} tiene ${other} en ${first.dir} y ${version} en ${second.dir}`,
240
+ fix: 'unificar en catalog: y usar "catalog:" en las dos apps',
241
+ });
242
+ }
243
+ else if (shared && !catalog[name]) {
244
+ add({
245
+ code: 'CATALOG_MISSING', severity: 'warn', path: join(second.dir, 'package.json'),
246
+ message: `${name} está en las dos apps con ${version} y no está en catalog`,
247
+ fix: 'agregar la entrada en catalog: y usar "catalog:" en ambas apps',
248
+ });
249
+ }
250
+ }
251
+ }
252
+ if (workspace && existsSync(join(root, 'pnpm-lock.yaml'))) {
253
+ const lockfile = readFileSync(join(root, 'pnpm-lock.yaml'), 'utf-8');
254
+ for (const name of NATIVE_BUILD_PACKAGES) {
255
+ if (!lockfile.includes(`${name}@`))
256
+ continue;
257
+ if (workspace.allowBuilds[name])
258
+ continue;
259
+ add({
260
+ code: 'ALLOW_BUILDS', severity: 'warn', path: 'pnpm-workspace.yaml',
261
+ message: `${name} tiene script de instalación y no está en allowBuilds`,
262
+ fix: 'agregar "allowBuilds: { <paquete>: true }" en pnpm-workspace.yaml',
263
+ });
264
+ }
265
+ }
266
+ if (options.template !== false) {
267
+ const core = CORE_ROOT_FILES.map((file) => ({ path: file, label: file }));
268
+ core.push({ path: join('apps', '.env.example'), label: 'apps/.env.example' });
269
+ if (web)
270
+ core.push(...CORE_WEB_FILES.map((file) => ({ path: join(web, file), label: `${web}/${file}` })));
271
+ if (contracts)
272
+ core.push(...CORE_CONTRACTS_FILES.map((file) => ({ path: join(contracts, file), label: `${contracts}/${file}` })));
273
+ for (const entry of core) {
274
+ if (existsSync(join(root, entry.path)))
275
+ continue;
276
+ add({
277
+ code: 'MISSING_TEMPLATE_FILE', severity: 'warn', path: entry.path,
278
+ message: `falta ${entry.label}, que la plantilla de m:create sí trae`,
279
+ fix: 'copiarlo desde packages/m/templates/',
280
+ });
281
+ }
282
+ }
283
+ const ok = !findings.some((finding) => finding.severity === 'error');
284
+ return { layout, apps: { ...(web ? { web } : {}), ...(contracts ? { contracts } : {}) }, findings, ok };
285
+ }
286
+ export function workspaceConfig(root) {
287
+ return readWorkspaceYaml(join(root, 'pnpm-workspace.yaml'));
288
+ }
289
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/compose/layout.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,eAAe,EAAE,cAiN7B,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,eAAe,EAAE,cAmN7B,CAAC"}
@@ -30,6 +30,7 @@ export const cliTranslations = {
30
30
  'cmd.contract_deploy_description': 'Deploys Smart Contracts',
31
31
  'cmd.create_description': 'Creates a new project',
32
32
  'cmd.update_description': 'Synchronizes the current project with template improvements (interactive)',
33
+ 'cmd.m_check_description': 'Checks the project layout (workspace, apps/web, apps/contracts, catalog) and reports findings (--json, --strict, --fix)',
33
34
  'cmd.ai_framework_description': 'Shows a manifest of christian alignment (randomly chosen)',
34
35
  'cmd.ai_verify_description': 'Generates a christological verification question',
35
36
  'cmd.ai_verify_answer_description': 'Responds to the christological verification question',
@@ -134,6 +135,7 @@ export const cliTranslations = {
134
135
  'cmd.contract_deploy_description': 'Despliega los Contratos Inteligentes',
135
136
  'cmd.create_description': 'Crea un nuevo proyecto',
136
137
  'cmd.update_description': 'Sincroniza el proyecto actual con las mejoras de las plantillas (interactivo)',
138
+ 'cmd.m_check_description': 'Verifica la estructura del proyecto (workspace, apps/web, apps/contracts, catalog) y reporta hallazgos (--json, --strict, --fix)',
137
139
  'cmd.ai_framework_description': 'Muestra un manifiesto de alineación cristiana (aleatorio)',
138
140
  'cmd.ai_verify_description': 'Genera una pregunta de verificación cristológica',
139
141
  'cmd.ai_verify_answer_description': 'Responde a la pregunta de verificación cristológica',
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/i18n/locales/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/i18n/locales/cli.ts"],"names":[],"mappings":"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"}
package/dist/m.js CHANGED
@@ -237,6 +237,13 @@ async function main() {
237
237
  },
238
238
  description: cliT('cmd.update_description')
239
239
  },
240
+ 'm:check': {
241
+ handler: async () => {
242
+ const { runMCheck } = await import('./tasks/check.js');
243
+ await runMCheck(process.argv.slice(3));
244
+ },
245
+ description: cliT('cmd.m_check_description'), argOptional: true, argName: '--json|--strict|--fix'
246
+ },
240
247
  'req:list': {
241
248
  handler: async () => { await runReqList(); },
242
249
  description: cliT('cmd.req_list_description')
@@ -327,7 +334,7 @@ async function main() {
327
334
  const hasE2eDir = fs.existsSync(path.join(CWD, 'e2e'));
328
335
  if (hasE2eDir) {
329
336
  commands['test:e2e'] = {
330
- handler: async (arg) => { await runE2e(arg, process.argv.slice(3)); },
337
+ handler: async (arg) => { await runE2e(arg, process.argv.slice(4)); },
331
338
  description: cliT('cmd.e2e_description'), argOptional: true,
332
339
  };
333
340
  }
@@ -382,7 +389,7 @@ async function main() {
382
389
  const categories = {
383
390
  'AI': ['ai:context', 'ai:edit', 'ai:readfile', 'ai:writefile', 'ai:grep', 'ai:glob'],
384
391
  'ENV': ['env:diff'],
385
- 'Project': ['m:create', 'm:update'],
392
+ 'Project': ['m:create', 'm:update', 'm:check'],
386
393
  'Test': ['test:e2e', 'test:e2e:summary', 'warmup'],
387
394
  };
388
395
  if (hasHardhat)