@mmnto/cli 0.42.0 → 0.44.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/dist/assets/universal-baseline.d.ts +23 -0
- package/dist/assets/universal-baseline.d.ts.map +1 -0
- package/dist/assets/universal-baseline.js +329 -0
- package/dist/assets/universal-baseline.js.map +1 -0
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +9 -9
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/bridge.d.ts.map +1 -1
- package/dist/commands/bridge.js +2 -1
- package/dist/commands/bridge.js.map +1 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +3 -5
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/docs.d.ts +1 -1
- package/dist/commands/docs.d.ts.map +1 -1
- package/dist/commands/docs.js +10 -17
- package/dist/commands/docs.js.map +1 -1
- package/dist/commands/docs.test.js +4 -0
- package/dist/commands/docs.test.js.map +1 -1
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +5 -5
- package/dist/commands/extract.js.map +1 -1
- package/dist/commands/extract.test.js +1 -1
- package/dist/commands/extract.test.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +4 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/init.test.js +30 -20
- package/dist/commands/init.test.js.map +1 -1
- package/dist/commands/link.d.ts +11 -0
- package/dist/commands/link.d.ts.map +1 -0
- package/dist/commands/link.js +90 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +2 -1
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +2 -2
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/shield.d.ts.map +1 -1
- package/dist/commands/shield.js +4 -3
- package/dist/commands/shield.js.map +1 -1
- package/dist/commands/spec.d.ts.map +1 -1
- package/dist/commands/spec.js +2 -2
- package/dist/commands/spec.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +2 -2
- package/dist/commands/sync.js.map +1 -1
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +5 -4
- package/dist/git.js.map +1 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/orchestrators/anthropic-orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/anthropic-orchestrator.js +4 -5
- package/dist/orchestrators/anthropic-orchestrator.js.map +1 -1
- package/dist/orchestrators/gemini-orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/gemini-orchestrator.js +4 -6
- package/dist/orchestrators/gemini-orchestrator.js.map +1 -1
- package/dist/orchestrators/ollama-orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/ollama-orchestrator.js +8 -11
- package/dist/orchestrators/ollama-orchestrator.js.map +1 -1
- package/dist/orchestrators/ollama-orchestrator.test.js +13 -3
- package/dist/orchestrators/ollama-orchestrator.test.js.map +1 -1
- package/dist/orchestrators/openai-orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/openai-orchestrator.js +4 -6
- package/dist/orchestrators/openai-orchestrator.js.map +1 -1
- package/dist/orchestrators/orchestrator.d.ts.map +1 -1
- package/dist/orchestrators/orchestrator.js +5 -7
- package/dist/orchestrators/orchestrator.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +11 -14
- package/dist/utils.js.map +1 -1
- package/dist/utils.test.js +9 -2
- package/dist/utils.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Universal Baseline Lessons — battle-tested traps extracted from
|
|
3
|
+
* PR reviews in vercel/next.js, facebook/react, trpc/trpc,
|
|
4
|
+
* prisma/prisma, tailwindlabs/tailwindcss, and drizzle-team/drizzle-orm.
|
|
5
|
+
*
|
|
6
|
+
* These ship with `totem init` to give every project immediate value.
|
|
7
|
+
* Each lesson was born from real pain, not theory.
|
|
8
|
+
*
|
|
9
|
+
* @see .strategy/baselines/candidate-prs.md for source PRs
|
|
10
|
+
* @see proposal 028 (mining public baselines)
|
|
11
|
+
*/
|
|
12
|
+
export declare const UNIVERSAL_BASELINE_MARKER = "<!-- totem:universal-baseline -->";
|
|
13
|
+
export declare const UNIVERSAL_BASELINE_LESSONS: Array<{
|
|
14
|
+
heading: string;
|
|
15
|
+
tags: string[];
|
|
16
|
+
body: string;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Pre-rendered markdown string for writing to `.totem/lessons/baseline.md`.
|
|
20
|
+
* Format matches `parseLessonsFile()` expectations so lessons index correctly.
|
|
21
|
+
*/
|
|
22
|
+
export declare const UNIVERSAL_BASELINE_MARKDOWN: string;
|
|
23
|
+
//# sourceMappingURL=universal-baseline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"universal-baseline.d.ts","sourceRoot":"","sources":["../../src/assets/universal-baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,yBAAyB,sCAAsC,CAAC;AAE7E,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CA2TA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAM1B,CAAC"}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Universal Baseline Lessons — battle-tested traps extracted from
|
|
3
|
+
* PR reviews in vercel/next.js, facebook/react, trpc/trpc,
|
|
4
|
+
* prisma/prisma, tailwindlabs/tailwindcss, and drizzle-team/drizzle-orm.
|
|
5
|
+
*
|
|
6
|
+
* These ship with `totem init` to give every project immediate value.
|
|
7
|
+
* Each lesson was born from real pain, not theory.
|
|
8
|
+
*
|
|
9
|
+
* @see .strategy/baselines/candidate-prs.md for source PRs
|
|
10
|
+
* @see proposal 028 (mining public baselines)
|
|
11
|
+
*/
|
|
12
|
+
export const UNIVERSAL_BASELINE_MARKER = '<!-- totem:universal-baseline -->';
|
|
13
|
+
export const UNIVERSAL_BASELINE_LESSONS = [
|
|
14
|
+
// ─── Async & Promises ─────────────────────────────
|
|
15
|
+
{
|
|
16
|
+
heading: 'Unhandled promise rejections crash Node processes',
|
|
17
|
+
tags: ['async', 'node', 'universal'],
|
|
18
|
+
body: 'Every async function called without await, and every Promise without a .catch(), is a potential unhandled rejection that crashes the process in Node 15+. Always handle rejections at the call site or use a global handler. Source: vercel/next.js#15049.',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
heading: 'Synchronous assumptions in async boundaries',
|
|
22
|
+
tags: ['async', 'api', 'universal'],
|
|
23
|
+
body: 'Functions that accept callbacks or return values synchronously but are consumed in async contexts (fetch wrappers, middleware, headers) create subtle timing bugs. If a function CAN be async, treat it as async everywhere. Source: trpc/trpc#902.',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
heading: 'Missing state transitions in async lifecycles',
|
|
27
|
+
tags: ['async', 'state', 'universal'],
|
|
28
|
+
body: 'WebSocket connections, database pools, and HTTP clients have distinct states (connecting, open, closing, closed). Skipping a state transition (e.g., marking a connection as "open" without going through "connecting") causes race conditions in reconnection logic. Source: trpc/trpc#5119.',
|
|
29
|
+
},
|
|
30
|
+
// ─── React & Hooks ────────────────────────────────
|
|
31
|
+
{
|
|
32
|
+
heading: 'Stale closure from missing effect dependencies',
|
|
33
|
+
tags: ['react', 'hooks', 'universal'],
|
|
34
|
+
body: 'useEffect and useCallback capture variables from their closure scope. If a dependency is omitted from the array, the callback uses a stale value from a previous render. This causes bugs that are invisible in dev but corrupt state in production. Source: facebook/react#29705.',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
heading: 'Effects must clean up subscriptions and timers',
|
|
38
|
+
tags: ['react', 'hooks', 'universal'],
|
|
39
|
+
body: 'Every useEffect that creates a subscription, timer, or event listener MUST return a cleanup function. Without cleanup, effects leak memory and cause "setState on unmounted component" warnings. React StrictMode double-invokes effects specifically to catch this. Source: facebook/react#30954.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
heading: 'Impure effects break in StrictMode and Concurrent Mode',
|
|
43
|
+
tags: ['react', 'hooks', 'universal'],
|
|
44
|
+
body: 'Effects that mutate external state (DOM, global variables, network) without idempotency will produce double side-effects when React double-invokes them in development. Design every effect to be safe to run twice. Source: facebook/react#19523.',
|
|
45
|
+
},
|
|
46
|
+
// ─── Server/Client Boundaries ─────────────────────
|
|
47
|
+
{
|
|
48
|
+
heading: 'Server-only code leaking into client bundles',
|
|
49
|
+
tags: ['nextjs', 'ssr', 'universal'],
|
|
50
|
+
body: 'Importing server-side constants, database clients, or API keys in shared modules causes them to be bundled into the client. Move server-only code to dedicated files and use "use server" or "server-only" guards. Source: vercel/next.js#59239.',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
heading: 'Hydration mismatch from environment-dependent rendering',
|
|
54
|
+
tags: ['nextjs', 'ssr', 'universal'],
|
|
55
|
+
body: 'Any rendering that differs between server and client (Date.now(), window checks, random values) causes hydration mismatches. Use useEffect for client-only rendering, not conditional checks in the render body. Source: vercel/next.js#44857.',
|
|
56
|
+
},
|
|
57
|
+
// ─── Environment & Config ─────────────────────────
|
|
58
|
+
{
|
|
59
|
+
heading: 'Runtime crashes from missing environment variables',
|
|
60
|
+
tags: ['config', 'env', 'universal'],
|
|
61
|
+
body: 'Accessing process.env.MY_VAR without validation causes undefined-as-string bugs that surface only in production. Validate ALL required environment variables at build time using a schema (Zod, envalid) and fail fast. Source: t3-oss/create-t3-app#147.',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
heading: 'Build-time vs runtime env var confusion',
|
|
65
|
+
tags: ['config', 'env', 'universal'],
|
|
66
|
+
body: 'Environment variables inlined at build time (NEXT_PUBLIC_, VITE_) are frozen into the bundle. Variables needed at runtime must be read from the server environment, not from the build. Mixing these up causes secrets to leak into client bundles or values to be stale. Source: vercel/next.js#6212.',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
heading: 'Hardcoded localhost URLs in production code',
|
|
70
|
+
tags: ['config', 'url', 'universal'],
|
|
71
|
+
body: 'WebSocket connections, API endpoints, and asset URLs that hardcode localhost or 127.0.0.1 work in dev but break in production. Always derive URLs from configuration or the request context. Source: vercel/next.js#30632.',
|
|
72
|
+
},
|
|
73
|
+
// ─── TypeScript & Types ───────────────────────────
|
|
74
|
+
{
|
|
75
|
+
heading: 'Dropped generic arguments in wrapper functions',
|
|
76
|
+
tags: ['typescript', 'generics', 'universal'],
|
|
77
|
+
body: 'When wrapping a generic function, failing to forward the type parameter narrows the return type to the default. This silently loses type safety for all callers. Always propagate generics through wrapper layers. Source: vercel/next.js#52498.',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
heading: 'Type assertions (as) bypass safety checks',
|
|
81
|
+
tags: ['typescript', 'safety', 'universal'],
|
|
82
|
+
body: '"as unknown as X" and "as any" suppress TypeScript errors without fixing the underlying type mismatch. Every type assertion is a potential runtime crash. Use type guards or schema validation (Zod) at system boundaries instead.',
|
|
83
|
+
},
|
|
84
|
+
// ─── Database & ORM ───────────────────────────────
|
|
85
|
+
{
|
|
86
|
+
heading: 'Schema drift between migrations and actual database',
|
|
87
|
+
tags: ['database', 'migration', 'universal'],
|
|
88
|
+
body: 'The migration history in version control can diverge from the actual database schema if migrations are applied manually or out of order. Always diff the expected schema against the live database before deploying. Source: prisma/prisma#11440.',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
heading: 'Destructive operations without baseline validation',
|
|
92
|
+
tags: ['database', 'safety', 'universal'],
|
|
93
|
+
body: 'Database reset, seed, or migration commands that operate without first validating the current state can destroy production data. Always snapshot or validate state before destructive operations. Source: prisma/prisma#16098.',
|
|
94
|
+
},
|
|
95
|
+
// ─── Performance & Resources ──────────────────────
|
|
96
|
+
{
|
|
97
|
+
heading: 'Synchronous work blocking the main thread',
|
|
98
|
+
tags: ['performance', 'browser', 'universal'],
|
|
99
|
+
body: 'CPU-intensive operations (parsing, sorting, encryption) on the main thread freeze the UI. Use requestIdleCallback, Web Workers, or async chunking for non-critical work. Source: vercel/next.js#14580.',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
heading: 'Unbounded payload sizes in state mechanisms',
|
|
103
|
+
tags: ['performance', 'security', 'universal'],
|
|
104
|
+
body: 'Cookies, headers, localStorage, and URL params have size limits. Storing unbounded data (user preferences, preview data, session state) without size validation causes silent truncation or server errors. Source: vercel/next.js#10831.',
|
|
105
|
+
},
|
|
106
|
+
// ─── CSS & Styling ────────────────────────────────
|
|
107
|
+
{
|
|
108
|
+
heading: 'CSS config changes require full rebuild',
|
|
109
|
+
tags: ['css', 'tailwind', 'universal'],
|
|
110
|
+
body: 'Changes to Tailwind config, PostCSS plugins, or CSS-in-JS theme tokens are not picked up by HMR. The dev server must be restarted. Fail to document this and developers waste hours debugging "why my styles aren\'t updating." Source: tailwindlabs/tailwindcss.',
|
|
111
|
+
},
|
|
112
|
+
// ─── Error Handling ───────────────────────────────
|
|
113
|
+
{
|
|
114
|
+
heading: 'Empty catch blocks hide critical failures',
|
|
115
|
+
tags: ['error-handling', 'universal'],
|
|
116
|
+
body: 'catch (e) {} swallows the error silently. The operation appears to succeed but downstream code operates on undefined or stale data. At minimum, log the error. Better: re-throw or return a typed error result.',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
heading: 'Dev tooling modifying execution paths incorrectly',
|
|
120
|
+
tags: ['dx', 'tooling', 'universal'],
|
|
121
|
+
body: 'Development overlays or debuggers that inject elements or modify the component tree must defer execution until after initial hydration. Injecting UI too early causes position-dependent hooks (like useId) to generate inconsistent values between server and client. Source: vercel/next.js#75199.',
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
heading: 'Environment-specific URL handling leaking across boundaries',
|
|
125
|
+
tags: ['config', 'url', 'universal'],
|
|
126
|
+
body: 'Local development often uses specialized protocols (e.g., file:// or turbopack://) that do not exist in production environments. Code handling source maps, static assets, or metadata must normalize these URIs at the environment boundary to prevent broken paths when deployed. Source: vercel/next.js#71489.',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
heading: 'Regex/Matcher divergence between dev and prod runtimes',
|
|
130
|
+
tags: ['routing', 'regex', 'universal'],
|
|
131
|
+
body: 'Middleware matchers or routing regular expressions that rely on environment-specific syntax or Node.js features may fail silently when compiled for Edge or V8 runtimes in production. Always test complex matchers in the target execution environment. Source: vercel/next.js#69602.',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
heading: 'Swallowing critical errors during SSR',
|
|
135
|
+
tags: ['ssr', 'error-handling', 'universal'],
|
|
136
|
+
body: 'Hydration errors or SSR mismatches should not be caught and silenced by generic error boundaries without explicit logging. Masking these errors during development leads to unstable UI state and broken interactive elements in production. Source: vercel/next.js#44857.',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
heading: 'Compiler transforms breaking CSS-in-JS injection',
|
|
140
|
+
tags: ['compiler', 'css', 'universal'],
|
|
141
|
+
body: 'Custom AST transformations or compiler plugins (like SWC/Babel) can inadvertently strip or reorder the styled-component injection tags required by CSS-in-JS libraries. Always ensure CSS extraction logic is preserved during AST compilation. Source: vercel/next.js#34687.',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
heading: 'Internal modules establishing cyclic dependencies on ambient type declarations',
|
|
145
|
+
tags: ['typescript', 'types', 'universal'],
|
|
146
|
+
body: "Internal framework code should never import directly from auto-generated ambient type declaration files (e.g., next-env.d.ts). This creates a cyclic dependency where the framework relies on the user's generated types to compile. Source: vercel/next.js#34394.",
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
heading: 'Context flags misaligned during edge compilation',
|
|
150
|
+
tags: ['compiler', 'edge', 'universal'],
|
|
151
|
+
body: 'When compiling code for Edge runtimes, standard environmental flags (like isServer or isClient) must be explicitly handled. Assuming Edge is purely "client" or purely "server" leads to incorrectly stripping required polyfills or exposing sensitive logic. Source: vercel/next.js#30242.',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
heading: 'FS watchers failing to handle atomic file renames',
|
|
155
|
+
tags: ['fs', 'tooling', 'universal'],
|
|
156
|
+
body: 'When building file-system watchers, do not assume files are only "created" or "modified". Editors and OS operations frequently use atomic renames (moving a temp file over an existing file). Failure to handle the "rename" event leads to stale caches and missed updates. Source: vercel/next.js#10351.',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
heading: 'Style injection breaking modular chunk loading',
|
|
160
|
+
tags: ['css', 'bundler', 'universal'],
|
|
161
|
+
body: "Injecting global CSS script tags directly into granular, dynamically loaded JavaScript chunks can cause race conditions or duplicate style definitions. CSS should be extracted and managed by the bundler's dedicated style loader, not inline scripts. Source: vercel/next.js#9306.",
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
heading: 'Hardcoding third-party SDK dependencies into core logic',
|
|
165
|
+
tags: ['architecture', 'coupling', 'universal'],
|
|
166
|
+
body: 'Core routing or state management logic should never directly import third-party SDKs (e.g., Auth0, Stripe). Abstract these behind provider interfaces. Hardcoding them prevents replacing the vendor and breaks the application if the SDK is unavailable. Source: vercel/next.js#8802.',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
heading: 'Leaking proprietary rendering logic into generic component trees',
|
|
170
|
+
tags: ['architecture', 'react', 'universal'],
|
|
171
|
+
body: 'Framework-specific rendering paradigms (like AMP or specific SSR wrappers) should not leak down into generic, reusable UI components. Passing framework-specific props deeply into the tree prevents those components from being used in other contexts. Source: vercel/next.js#7669.',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
heading: 'Hook rules violation inside memoization callbacks',
|
|
175
|
+
tags: ['react', 'hooks', 'universal'],
|
|
176
|
+
body: 'Never call a React Hook (useContext, useState) inside the callback function passed to useMemo, useCallback, or React.memo. This breaks the fundamental rule of hooks (call order) because the memoized function is executed unpredictably. Source: facebook/react#14608.',
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
heading: 'Race conditions during batched state updates',
|
|
180
|
+
tags: ['react', 'state', 'universal'],
|
|
181
|
+
body: 'When deriving state from props (e.g., getDerivedStateFromProps), assume that multiple state updates might be batched together. Relying on the intermediate state synchronously before the batch completes will result in torn UI or dropped updates. Source: facebook/react#12408.',
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
heading: 'Swallowing nested errors across rendering boundaries',
|
|
185
|
+
tags: ['react', 'error-handling', 'universal'],
|
|
186
|
+
body: 'When building error boundaries or guarded execution callbacks, ensure that an error thrown in a deeply nested renderer (like a portal or a custom renderer) correctly bubbles up to the primary boundary. Swallowing cross-boundary errors masks fatal crashes. Source: facebook/react#10270.',
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
heading: 'Monolithic structures containing untestable generic utilities',
|
|
190
|
+
tags: ['architecture', 'testing', 'universal'],
|
|
191
|
+
body: 'Do not hide generic, pure utility functions (e.g., string formatting, math calculations) inside massive, stateful class components or UI modules. Extract them into separate files so they can be unit tested in isolation without mocking the DOM. Source: facebook/react#9658.',
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
heading: 'Insufficient context in error logging for dynamically typed inputs',
|
|
195
|
+
tags: ['error-handling', 'dx', 'universal'],
|
|
196
|
+
body: 'When throwing errors about invalid inputs (e.g., "Expected a string, got object"), always include a stack trace or the specific key/component name that caused the error. Generic type errors without context are impossible to debug in large trees. Source: facebook/react#8495.',
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
heading: 'Silent failures in static lifecycle methods',
|
|
200
|
+
tags: ['react', 'error-handling', 'universal'],
|
|
201
|
+
body: 'Errors thrown inside static lifecycle methods (like getDerivedStateFromProps) can sometimes fail silently if the framework does not explicitly wrap them in a logging boundary, as they execute outside the standard render flow. Always log exceptions at the boundary. Source: facebook/react#15797.',
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
heading: 'Serialization failures when passing complex objects to devtools',
|
|
205
|
+
tags: ['tooling', 'serialization', 'universal'],
|
|
206
|
+
body: 'When exposing internal state to DevTools or logger overlays, ensure the payload is serializable. Passing complex objects with circular references, functions, or Symbols will crash the DevTools bridge. Use useDebugValue with a formatter. Source: facebook/react#18070.',
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
heading: 'Bypassing standard synthetic event systems for performance',
|
|
210
|
+
tags: ['react', 'events', 'universal'],
|
|
211
|
+
body: "Bypassing the framework's synthetic event system (e.g., attaching raw DOM event listeners) to gain performance often breaks event pooling, batching, and cross-platform compatibility (like React Native). Only bypass the event system when absolutely necessary and document the trade-off. Source: facebook/react#23232.",
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
heading: 'Compiler transforms invalidating internal context tracking',
|
|
215
|
+
tags: ['compiler', 'react', 'universal'],
|
|
216
|
+
body: 'When writing AST transforms or compiler optimizations, do not rewrite or reorder calls to `useContext` or other hooks that rely on internal fiber state tracking. Moving a hook call outside of its expected execution context breaks the React runtime. Source: facebook/react#30612.',
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
heading: 'Memory leaks caused by calling setState on unmounted components',
|
|
220
|
+
tags: ['react', 'memory', 'universal'],
|
|
221
|
+
body: 'Always cancel active asynchronous requests (fetch, setTimeout) when a component unmounts. Calling `setState` after the component is destroyed causes memory leaks and React warnings. Use AbortController or a mounted flag ref. Source: facebook/react#12531.',
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
heading: 'Leaking heavy development-only assertions into production bundles',
|
|
225
|
+
tags: ['performance', 'bundler', 'universal'],
|
|
226
|
+
body: 'Costly validation logic, deep object comparisons, and verbose error strings must be wrapped in `if (__DEV__)` or `if (process.env.NODE_ENV !== "production")` blocks so the bundler can strip them out via Dead Code Elimination. Source: facebook/react#10316.',
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
heading: 'Assuming `setState` is synchronous',
|
|
230
|
+
tags: ['react', 'state', 'universal'],
|
|
231
|
+
body: 'Never read `this.state` or a state variable immediately after calling `setState`. State updates are batched and asynchronous. If the next state depends on the previous state, use the updater function form: `setState((prev) => prev + 1)`. Source: facebook/react#9329.',
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
heading: 'Evaluating defaultProps before lazy component resolution',
|
|
235
|
+
tags: ['react', 'lazy', 'universal'],
|
|
236
|
+
body: 'When using lazy loading or dynamic imports, do not attempt to merge or evaluate `defaultProps` before the underlying module has fully resolved. This causes synchronous crashes. Defer prop resolution until the render phase. Source: facebook/react#14112.',
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
heading: 'Connection pooling leaks in underlying HTTP clients',
|
|
240
|
+
tags: ['database', 'network', 'universal'],
|
|
241
|
+
body: 'When initializing database clients or ORMs (like Prisma), ensure the underlying HTTP client (e.g., undici or node-fetch) has strict timeouts and connection pool limits. Infinite keep-alive connections will exhaust server sockets under load. Source: prisma/prisma#8831.',
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
heading: 'Type loss across SQL aggregate boundaries',
|
|
245
|
+
tags: ['database', 'typescript', 'universal'],
|
|
246
|
+
body: 'When executing raw SQL or aggregate functions (`count`, `sum`) in a type-safe ORM, ensure the return type is explicitly cast or parsed. SQL drivers often return aggregates as strings (e.g., "10" instead of 10) to prevent precision loss, breaking TS assumptions. Source: drizzle-team/drizzle-orm#1487.',
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
heading: 'Lateral joins breaking query builder schema resolution',
|
|
250
|
+
tags: ['database', 'sql', 'universal'],
|
|
251
|
+
body: 'Advanced SQL features like `LATERAL` joins introduce dynamic scoping where subqueries reference columns from preceding tables. Query builders must correctly resolve these scope chains, or they will generate invalid SQL or lose type safety. Source: drizzle-team/drizzle-orm#1079.',
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
heading: 'Driver-specific adapters leaking into core query logic',
|
|
255
|
+
tags: ['database', 'architecture', 'universal'],
|
|
256
|
+
body: 'Keep SQL query generation strictly separated from driver-specific execution (e.g., Postgres vs MySQL vs SQLite). Passing driver connection objects deep into the query builder tightly couples the ORM to a specific database vendor. Source: drizzle-team/drizzle-orm#5222.',
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
heading: 'Desync between .env templates and validation schemas',
|
|
260
|
+
tags: ['config', 'env', 'universal'],
|
|
261
|
+
body: 'If you maintain a `.env.example` file and a Zod schema for environment variables, they must be kept in perfect sync. Adding a variable to one without the other causes either failing builds or confusing onboarding experiences. Source: t3-oss/create-t3-app#430.',
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
heading: 'Incomplete database lifecycles in scaffolding templates',
|
|
265
|
+
tags: ['database', 'tooling', 'universal'],
|
|
266
|
+
body: 'When providing scripts to setup a project, ensure the database lifecycle is complete: generation, migration, and seeding. Providing a `db:generate` script without a `db:migrate` script leaves the developer in a broken state upon initial launch. Source: t3-oss/create-t3-app#1893.',
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
heading: 'Side-effect imports executing out of order due to lack of sorting',
|
|
270
|
+
tags: ['javascript', 'imports', 'universal'],
|
|
271
|
+
body: 'If modules rely on side-effects (e.g., polyfills, global CSS, or environment initializers), the import order is critical. Use an automated tool (like Prettier plugin or ESLint) to deterministically sort imports to prevent fragile execution orders. Source: t3-oss/create-t3-app#1392.',
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
heading: 'Hardcoded component logic inside top-level layout files',
|
|
275
|
+
tags: ['architecture', 'react', 'universal'],
|
|
276
|
+
body: 'Root `_app.tsx` or `layout.tsx` files should be as thin as possible, containing only context providers and structure. Hardcoding complex UI logic (like splash screens or modals) directly in the layout makes it impossible to reuse or test. Extract to components. Source: t3-oss/create-t3-app#178.',
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
heading: 'Scaffolding scripts failing to respect existing .git states',
|
|
280
|
+
tags: ['tooling', 'git', 'universal'],
|
|
281
|
+
body: 'CLI tools that generate projects (like `create-t3-app` or `totem init`) must check if a `.git` directory already exists before attempting to run `git init`. Blindly initializing git can corrupt an existing repository or submodule structure. Source: t3-oss/create-t3-app#4.',
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
heading: 'Specificity overrides breaking AST/string serialization',
|
|
285
|
+
tags: ['css', 'compiler', 'universal'],
|
|
286
|
+
body: 'When parsing or generating CSS (e.g., adding `!important`), ensure the AST formatter correctly handles the spacing and placement of the token. Appending `!important` without respecting the original declaration structure leads to malformed CSS strings. Source: tailwindlabs/tailwindcss#14611.',
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
heading: 'Implicit ordering dependencies in CSS cascade generation',
|
|
290
|
+
tags: ['css', 'architecture', 'universal'],
|
|
291
|
+
body: 'When generating utility classes (like Tailwind), the final output order determines the CSS cascade specificity. Do not rely on the implicit order of object keys in JavaScript. Use explicit directives (`@layer`, `@tailwind`) to guarantee the cascade order. Source: tailwindlabs/tailwindcss#88.',
|
|
292
|
+
},
|
|
293
|
+
// ─── AI-Assisted Workflows (Solo Dev / Cursor Guardrails) ─────────
|
|
294
|
+
{
|
|
295
|
+
heading: 'Isolation of localized component changes',
|
|
296
|
+
tags: ['workflow', 'ai-agent', 'universal'],
|
|
297
|
+
body: 'When asked to implement a local feature (e.g., adding a button state), DO NOT rewrite the surrounding layout, change the CSS framework, or refactor sibling components unless explicitly instructed. Isolate the state change locally to prevent cascading breakages.',
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
heading: 'Premature abstraction of duplicated code',
|
|
301
|
+
tags: ['architecture', 'ai-agent', 'universal'],
|
|
302
|
+
body: 'Do not abstract repetitive code (like fetch calls or UI wrappers) into complex generic utilities until the exact pattern has been duplicated at least three times in separate domains (The Rule of Three). Premature generic abstraction ruins prototyping velocity.',
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
heading: 'Silent failures and "TODO" placeholders',
|
|
306
|
+
tags: ['workflow', 'dx', 'universal'],
|
|
307
|
+
body: 'If a requested feature cannot be fully implemented due to missing context or complexity, you MUST throw an explicit error or insert a highly visible UI warning (e.g., `<div style="color:red">NOT IMPLEMENTED</div>`). Never fail silently by returning null or leaving a hidden `// TODO` comment.',
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
heading: 'Monolithic file generation',
|
|
311
|
+
tags: ['architecture', 'ai-agent', 'universal'],
|
|
312
|
+
body: 'When generating new features, actively resist dumping all logic into a single 500+ line file. If a file grows beyond a single distinct responsibility, you must immediately extract its sub-components or utilities into sibling files before proceeding with the feature.',
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
heading: 'Destructive architectural refactoring without permission',
|
|
316
|
+
tags: ['workflow', 'safety', 'universal'],
|
|
317
|
+
body: 'Never alter the fundamental architecture of the project (e.g., switching from App Router to Pages Router, changing the ORM paradigm, or moving directories) as a side-effect of fulfilling a smaller feature request. Architectural shifts require explicit human approval.',
|
|
318
|
+
},
|
|
319
|
+
];
|
|
320
|
+
/**
|
|
321
|
+
* Pre-rendered markdown string for writing to `.totem/lessons/baseline.md`.
|
|
322
|
+
* Format matches `parseLessonsFile()` expectations so lessons index correctly.
|
|
323
|
+
*/
|
|
324
|
+
export const UNIVERSAL_BASELINE_MARKDOWN = [
|
|
325
|
+
UNIVERSAL_BASELINE_MARKER,
|
|
326
|
+
'',
|
|
327
|
+
...UNIVERSAL_BASELINE_LESSONS.map((l) => `## Lesson — ${l.heading}\n\n**Tags:** ${l.tags.join(', ')}\n\n${l.body}`),
|
|
328
|
+
].join('\n\n');
|
|
329
|
+
//# sourceMappingURL=universal-baseline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"universal-baseline.js","sourceRoot":"","sources":["../../src/assets/universal-baseline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAgB1E,kGAAkG;AAClG,eAAO,MAAM,2BAA2B,SAAU,CAAC;AAEnD,kDAAkD;AAClD,QAAA,MAAM,aAAa,qDAAsD,CAAC;AAC1E,KAAK,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAIlD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA0CD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAmCrD;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAgB1E,kGAAkG;AAClG,eAAO,MAAM,2BAA2B,SAAU,CAAC;AAEnD,kDAAkD;AAClD,QAAA,MAAM,aAAa,qDAAsD,CAAC;AAC1E,KAAK,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAIlD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA0CD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAmCrD;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAkEnE;AAWD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,CAStE;AASD,wBAAsB,eAAe,CACnC,SAAS,EAAE,aAAa,EAAE,EAC1B,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACvC,OAAO,CAAC,aAAa,EAAE,CAAC,CA0C1B;AAuBD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,aAAa,EAAE,EAC1B,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,MAAM,EAAE,CAQV;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,CAiEzF;AAID,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAS5E;AAmCD,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqHvE"}
|
package/dist/commands/audit.js
CHANGED
|
@@ -3,7 +3,7 @@ import * as fs from 'node:fs';
|
|
|
3
3
|
import * as os from 'node:os';
|
|
4
4
|
import * as path from 'node:path';
|
|
5
5
|
import { isCancel, multiselect } from '@clack/prompts';
|
|
6
|
-
import { sanitize } from '@mmnto/totem';
|
|
6
|
+
import { sanitize, TotemConfigError, TotemParseError } from '@mmnto/totem';
|
|
7
7
|
import { ghExec } from '../adapters/gh-utils.js';
|
|
8
8
|
import { log } from '../ui.js';
|
|
9
9
|
import { getSystemPrompt, loadConfig, loadEnv, resolveConfigPath, runOrchestrator, wrapXml, writeOutput, } from '../utils.js';
|
|
@@ -84,33 +84,33 @@ export function loadStrategicDocs(cwd) {
|
|
|
84
84
|
export function parseAuditResponse(content) {
|
|
85
85
|
const match = content.match(/<audit_proposals>([\s\S]*?)<\/audit_proposals>/);
|
|
86
86
|
if (!match) {
|
|
87
|
-
throw new
|
|
87
|
+
throw new TotemParseError('LLM response missing <audit_proposals> wrapper.', 'Re-run the command or check the audit prompt template.');
|
|
88
88
|
}
|
|
89
89
|
let parsed;
|
|
90
90
|
try {
|
|
91
91
|
parsed = JSON.parse(match[1]);
|
|
92
92
|
}
|
|
93
93
|
catch {
|
|
94
|
-
throw new
|
|
94
|
+
throw new TotemParseError('Failed to parse audit proposals as JSON.', 'Re-run the command. The LLM may have produced malformed output.');
|
|
95
95
|
}
|
|
96
96
|
if (!Array.isArray(parsed)) {
|
|
97
|
-
throw new
|
|
97
|
+
throw new TotemParseError('Audit proposals must be a JSON array.', 'Re-run the command. The LLM returned an object instead of an array.');
|
|
98
98
|
}
|
|
99
99
|
const VALID_TIERS = ['tier-1', 'tier-2', 'tier-3'];
|
|
100
100
|
return parsed.map((item, i) => {
|
|
101
101
|
if (typeof item.number !== 'number') {
|
|
102
|
-
throw new
|
|
102
|
+
throw new TotemParseError(`Invalid or missing "number" for proposal ${i}.`, 'Re-run the command. Each proposal must include a numeric "number" field.');
|
|
103
103
|
}
|
|
104
104
|
const action = String(item.action ?? '').toUpperCase();
|
|
105
105
|
if (!VALID_ACTIONS.includes(action)) {
|
|
106
|
-
throw new
|
|
106
|
+
throw new TotemParseError(`Invalid action "${item.action}" for proposal ${i}. Must be one of: ${VALID_ACTIONS.join(', ')}`, 'Re-run the command. The LLM produced an unrecognized action value.');
|
|
107
107
|
}
|
|
108
108
|
if (action === 'MERGE' && typeof item.mergeInto !== 'number') {
|
|
109
|
-
throw new
|
|
109
|
+
throw new TotemParseError(`Invalid or missing "mergeInto" for MERGE proposal ${i}.`, 'Re-run the command. MERGE proposals must include a numeric "mergeInto" field.');
|
|
110
110
|
}
|
|
111
111
|
if (action === 'REPRIORITIZE' &&
|
|
112
112
|
(typeof item.newTier !== 'string' || !VALID_TIERS.includes(item.newTier))) {
|
|
113
|
-
throw new
|
|
113
|
+
throw new TotemParseError(`Invalid "newTier" for REPRIORITIZE proposal ${i}. Must be one of: ${VALID_TIERS.join(', ')}.`, 'Re-run the command. REPRIORITIZE proposals must include a valid "newTier" value.');
|
|
114
114
|
}
|
|
115
115
|
return {
|
|
116
116
|
number: item.number,
|
|
@@ -155,7 +155,7 @@ export async function selectProposals(proposals, opts) {
|
|
|
155
155
|
return actionable;
|
|
156
156
|
}
|
|
157
157
|
if (!opts.isTTY) {
|
|
158
|
-
throw new
|
|
158
|
+
throw new TotemConfigError('Refusing to modify issues in non-interactive mode.', 'Use --yes to bypass confirmation, or run in an interactive terminal.', 'CONFIG_INVALID');
|
|
159
159
|
}
|
|
160
160
|
const result = await multiselect({
|
|
161
161
|
message: `Select proposals to execute (${actionable.length} actionable):`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/commands/bridge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/commands/bridge.ts"],"names":[],"mappings":"AAgBA,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CA6BvF;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAsB1D"}
|
package/dist/commands/bridge.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
+
import { TotemGitError } from '@mmnto/totem';
|
|
3
4
|
import { getGitBranch, getGitStatus } from '../git.js';
|
|
4
5
|
import { log } from '../ui.js';
|
|
5
6
|
import { writeOutput } from '../utils.js';
|
|
@@ -33,7 +34,7 @@ export function assembleBridge(branch, status, message) {
|
|
|
33
34
|
export function bridgeCommand(options) {
|
|
34
35
|
const cwd = process.cwd();
|
|
35
36
|
if (!fs.existsSync(path.join(cwd, '.git'))) {
|
|
36
|
-
throw new
|
|
37
|
+
throw new TotemGitError('Not a git repository.', 'Run `totem bridge` from a project with git initialized.');
|
|
37
38
|
}
|
|
38
39
|
log.info(TAG, 'Capturing workspace state...');
|
|
39
40
|
const branch = getGitBranch(cwd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/commands/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,2DAA2D;AAE3D,MAAM,GAAG,GAAG,QAAQ,CAAC;AACrB,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,2DAA2D;AAE3D,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,MAAc,EAAE,OAAgB;IAC7E,MAAM,QAAQ,GAAa,CAAC,kBAAkB,CAAC,CAAC;IAEhD,QAAQ,CAAC,IAAI,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;IAEvC,2BAA2B;IAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,OAAO,GACX,KAAK,CAAC,MAAM,GAAG,gBAAgB;YAC7B,CAAC,CAAC,GAAG,QAAQ,aAAa,KAAK,CAAC,MAAM,GAAG,gBAAgB,aAAa,KAAK,CAAC,MAAM,GAAG,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;YACxH,CAAC,CAAC,QAAQ,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC5D,CAAC;IAED,qBAAqB;IACrB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAC;QAC5E,QAAQ,CAAC,IAAI,CAAC,mCAAmC,SAAS,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,QAAQ,CAAC,IAAI,CACX,uIAAuI,CACxI,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AASD,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/commands/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AA8GA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAsM3E"}
|
package/dist/commands/compile.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TotemConfigError, TotemError } from '@mmnto/totem';
|
|
1
2
|
// ─── Constants ──────────────────────────────────────
|
|
2
3
|
const TAG = 'Compile';
|
|
3
4
|
const COMPILED_RULES_FILE = 'compiled-rules.json';
|
|
@@ -132,9 +133,7 @@ export async function compileCommand(options) {
|
|
|
132
133
|
}
|
|
133
134
|
}
|
|
134
135
|
if (lessons.length === 0) {
|
|
135
|
-
|
|
136
|
-
err.name = 'NoLessonsError';
|
|
137
|
-
throw err;
|
|
136
|
+
throw new TotemError('NO_LESSONS', 'No lessons found. Nothing to compile.', 'Add lessons with `totem extract <pr>` or create .totem/lessons/*.md files manually.');
|
|
138
137
|
}
|
|
139
138
|
log.info(TAG, `Found ${lessons.length} lessons`); // totem-ignore
|
|
140
139
|
// ─── Phase 1: Regex compilation (requires orchestrator) ──
|
|
@@ -236,8 +235,7 @@ export async function compileCommand(options) {
|
|
|
236
235
|
}
|
|
237
236
|
}
|
|
238
237
|
else if (!options.export) {
|
|
239
|
-
throw new
|
|
240
|
-
'Use --export to export lessons to AI config files without an orchestrator.');
|
|
238
|
+
throw new TotemConfigError('No orchestrator configured. Regex compilation requires a Full-tier config.', 'Use --export to export lessons to AI config files without an orchestrator.', 'CONFIG_MISSING');
|
|
241
239
|
}
|
|
242
240
|
// ─── Phase 2: Export to AI config files (deterministic, no LLM) ──
|
|
243
241
|
if (options.export) {
|