@animus-ui/next-plugin 0.1.6 → 0.1.8

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.
@@ -35,15 +35,18 @@ export declare class ExtractionSession {
35
35
  /** Physical asset files registered with the host watcher. */
36
36
  assetDependencyPaths: Set<string>;
37
37
  private assetDependencyKeys;
38
- /** When set (Turbopack orchestration), every analysis also persists
39
- * `.animus/analysis-inputs.json` so isolated loader workers can hydrate.
40
- * Webpack mode leaves this off — its loader shares the process. */
41
- persistAnalysisInputs: boolean;
42
38
  /** Emitter identity override for the system-props module id. Webpack mode
43
39
  * (null) injects the absolute `.animus/system-props.js` path, resolved by
44
40
  * NormalModuleReplacement; Turbopack rejects absolute-path imports, so
45
41
  * its driver sets the virtual id that `resolveAlias` maps to disk. */
46
42
  systemPropsModuleId: string | null;
43
+ /** Whether the analysis-inputs hydration corpus is serialized + written.
44
+ * False (webpack mode): the loader shares the pipeline process and reads
45
+ * the manifest from memory — the corpus is never persisted. True is set
46
+ * by the Turbopack orchestration driver, whose isolated loader workers
47
+ * replay it (spec: next-turbopack-integration, "Manifest disk artifact" /
48
+ * "Webpack mode skips the hydration corpus"). */
49
+ persistAnalysisInputs: boolean;
47
50
  /** Absolute directory prefixes for external DS packages (loader allowlisting). */
48
51
  externalPackageDirs: string[];
49
52
  /** Absolute package dir → owning specifier (cross-source correlation). */
@@ -52,6 +55,42 @@ export declare class ExtractionSession {
52
55
  private externalFileOwners;
53
56
  /** External package specifier → absolute source entry path. */
54
57
  externalSourceEntries: Map<string, string>;
58
+ /** SourceId derivation authority for the current generation (openspec:
59
+ * external-source-watch-ingestion, design D2) — canonical roots
60
+ * realpath'd once per full pipeline; alias→SourceId associations
61
+ * recorded while files exist so deletion resolves through the cache. */
62
+ private sourceIdentity;
63
+ /** Canonical admitted external root → declared specifiers (set-valued
64
+ * ownership, design D2; duplicate specifiers resolving to one canonical
65
+ * root share it). Engine watch wiring and tests read this. */
66
+ externalRootOwners: Map<string, Set<string>>;
67
+ /** Canonical admitted external watch roots — the engine-side watch
68
+ * surface (webpack contextDependencies / Turbopack watchers). */
69
+ externalWatchRoots: string[];
70
+ /** Canonical external root → (raw sourceKey → {raw content hash, recorded
71
+ * abs spelling}): the previous-generation inventory a dirty-root rewalk
72
+ * diffs against (design D3). Raw hashes — MDX preprocessing never skews
73
+ * the diff; the recorded abs path is a registered deletion alias, so a
74
+ * reconstructed deletion always resolves through cached identity. */
75
+ private externalInventory;
76
+ /** Sticky diagnostics (design D5/D7): stable key → message, re-surfaced
77
+ * on every full pipeline until the underlying condition clears. */
78
+ readonly stickyDiagnostics: Map<string, string>;
79
+ /** Volume-membership predicate for the cross-volume gate (design D5).
80
+ * Injected seam: the shared predicate only discriminates on Windows
81
+ * (win32 semantics are unit-tested via path.win32), so runtime tests
82
+ * drive the gate through this. */
83
+ sharesProjectVolume: (projectRoot: string, externalRoot: string) => boolean;
84
+ /** Orchestrator seams (openspec: external-source-watch-ingestion, design
85
+ * D4). `onExternalRootResolved` fires per volume-admitted external root
86
+ * DURING collection — after resolution, BEFORE that root's sources are
87
+ * walked — so a watching host can open its handle with no blind gap
88
+ * between scan and watch. `onExternalRootsCommitted` fires once after a
89
+ * successful full-pipeline publication with the complete admitted
90
+ * canonical root set (the host's promote/replay/close-old phase; a
91
+ * failed pipeline never fires it, so the host rolls back). */
92
+ onExternalRootResolved: ((canonicalRoot: string) => void) | null;
93
+ onExternalRootsCommitted: ((canonicalRoots: string[]) => void) | null;
55
94
  private readonly options;
56
95
  private readonly staticCssJson;
57
96
  private system;
@@ -65,26 +104,68 @@ export declare class ExtractionSession {
65
104
  /** Loader-reported dependency paths for bundler watch registration. */
66
105
  systemDependencyPaths: string[];
67
106
  private systemDependencyHashes;
68
- private lastCssHash;
69
107
  private lastSystemPropsHash;
70
- private lastManifestHash;
71
- private lastAnalysisInputsHash;
108
+ /** Per-payload write guards: payloadHash gates rewrites (byte-identical
109
+ * payloads leave disk untouched); diskHash is the hash of the CURRENT
110
+ * disk bytes (envelope included) recorded in the analysis-commit. null =
111
+ * not yet seeded (first publication reads the artifact's envelope so a
112
+ * same-session restart never rewrites byte-identical artifacts). */
113
+ private artifactRecords;
114
+ /** Last written analysis-commit; null = seeded from disk on first use. */
115
+ private lastCommit;
116
+ /** Session identity — claimed once per PROCESS (one Next invocation),
117
+ * adopted by every subsequent session instance so all compilers share
118
+ * one artifact tree (design D2: `next dev`/`next build` co-writing are
119
+ * separate processes and therefore separate sessions). */
120
+ readonly sessionId: string;
121
+ /** Epoch value of the last published analysis; null = not yet known
122
+ * (seeded from the session dir's artifact on first publication so a
123
+ * same-session restart with unchanged plans never rewrites bytes). */
124
+ private lastEpochValue;
125
+ /** Watcher debounce ceiling feeding status deadlines (design D3). */
126
+ debounceCeilingMs: number;
127
+ /** Test seam: observes every session-artifact write (name, content)
128
+ * post-rename — write ORDER is part of the transaction contract. */
129
+ onArtifactWrite: ((name: string, content: string) => void) | null;
130
+ /** Status attempt bookkeeping (design D3). */
131
+ private statusAttemptId;
132
+ private statusAttemptOpen;
133
+ /** Debounce-window observations pending analysis (sourceKey → hash). */
134
+ private debouncePending;
135
+ /** Session-start hygiene (pruning + legacy cleanup) runs once. */
136
+ private sessionStartHygieneDone;
72
137
  private lcssTargets;
73
138
  constructor(options: AnimusNextOptions);
139
+ /** This session's artifact directory. Requires `rootDir` to be set. */
140
+ get sessionDir(): string;
74
141
  get verbose(): boolean;
75
142
  private log;
76
143
  private warn;
77
144
  private now;
78
145
  private elapsed;
146
+ /** Lazily-computed scan config (options are constructor-fixed, so the
147
+ * derivation is stable for the session's lifetime). */
148
+ private scanConfigMemo;
79
149
  /** Resolve the scan configuration from options — the single source of the
80
150
  * exclude/extension policy shared by the full and incremental pipelines. */
81
151
  private resolveScanConfig;
152
+ /**
153
+ * Watch entry point: one single-flight analysis transaction per event
154
+ * batch (openspec: next-webpack-served-transform-coherence, design D3).
155
+ * The first entering session runs the transaction; every concurrent
156
+ * entry — same session re-entered, or another compiler's session
157
+ * (client/server/RSC each hold their own instance) — joins the in-flight
158
+ * promise, so no compiler proceeds against a generation older than the
159
+ * one the transaction publishes. A rejected transaction rejects every
160
+ * joiner; the gate always clears.
161
+ */
162
+ handleWatchUpdate(changes: WatchChanges): Promise<void>;
82
163
  /**
83
164
  * Incremental watch pass: geological reset when the system file changed,
84
165
  * otherwise content-hash diffing restricted to the watcher's change sets
85
166
  * (falling back to a full discovery walk when no sets are provided).
86
167
  */
87
- handleWatchUpdate(changes: WatchChanges): Promise<void>;
168
+ private processWatchUpdate;
88
169
  /**
89
170
  * Preprocess one `.mdx` entry into scanner-consumable tsx. Returns the
90
171
  * rewritten source plus the `relPath + '.tsx'` path on success, or null
@@ -96,11 +177,42 @@ export declare class ExtractionSession {
96
177
  * `missingDepFlag` holder, and every time for a preprocessing error.
97
178
  */
98
179
  private preprocessMdxEntry;
99
- runFullPipeline(): Promise<void>;
180
+ runFullPipeline(pending?: Array<[string, string]>): Promise<void>;
100
181
  /**
101
- * Reset analysis state for HMR geological reset.
182
+ * Reset analysis state for HMR geological reset. Payload write guards go
183
+ * back to null so the next publication reseeds them from the disk
184
+ * envelopes — a byte-identical post-reset artifact is still not
185
+ * rewritten.
102
186
  */
103
187
  resetForHmr(): void;
188
+ /**
189
+ * The (sourceKey, observedSourceHash) pairs of a watch batch — cheap
190
+ * evidence for the status file's pending set on the geological-reset
191
+ * path, where the batch's component edits ride along with the system
192
+ * edit (design D3: loaders wait only on observed inputs).
193
+ */
194
+ private pendingFromBatch;
195
+ /**
196
+ * Root-dirty inventory reconciliation (design D3): partition the
197
+ * watcher's change sets into explicit FILE events and external ROOT hits
198
+ * (a reported path that IS an admitted root, or a directory inside one),
199
+ * rewalk each dirty root through the shared discovery policy, diff the
200
+ * SourceId+raw-hash inventory against the previous generation, and merge
201
+ * the reconstructed created/edited/deleted deltas with the explicit
202
+ * events (identity-level dedup happens downstream at the cache gate).
203
+ * Deletion falls out of the inventory diff — webpack may report only the
204
+ * directory (probe-proven).
205
+ */
206
+ private reconcileExternalRoots;
207
+ /**
208
+ * Route one watcher-reported path (design D1/D2): a project-root member
209
+ * (lexical containment — existing local semantics preserved; consumer
210
+ * exclude patterns apply) or an admitted external member (identity
211
+ * resolution with symlink-escape rejection; package-relative excludes
212
+ * mirror the collection walk's filters — guardrail G1, one policy).
213
+ * Returns null for dropped paths.
214
+ */
215
+ private classifyWatchPath;
104
216
  /**
105
217
  * Build file entries from cache: every cached file rides with full source.
106
218
  * The v2 engine has NO Rust-side cache (arch-extract-v2-spine: uncached
@@ -129,30 +241,108 @@ export declare class ExtractionSession {
129
241
  * - `true` (HMR): skips the report log, and guards the system-props.js
130
242
  * write by lastSystemPropsHash.
131
243
  *
132
- * The styles.css write guard (lastCssHash) is identical on both paths.
244
+ * The disk artifacts land under the session directory in transaction
245
+ * order (design D1): manifest → analysis-inputs (Turbopack orchestration
246
+ * only) → styles.css → system-props → analysis-commit →
247
+ * replacements-epoch (last, only when moved). The analysis-status file walks starting → analyzing →
248
+ * committing → idle around the attempt, landing in `failed` (with the
249
+ * diagnostic) on any throw (design D3).
133
250
  */
134
251
  private analyzeAndEmit;
135
- /** Content hash of an existing `.animus/` artifact, or null when absent or
136
- * unreadable. Seeds a null write guard so a FRESH session never rewrites a
137
- * byte-identical artifact (spec: next-turbopack-integration — a rewrite
138
- * changes mtime/inode and needlessly re-keys Turbopack loader-worker
139
- * hydration). */
140
- private diskArtifactHash;
141
- /** Ensure `.animus/` exists and write one generated artifact into it.
252
+ private analyzeAndEmitAttempt;
253
+ /** Open a status attempt (attemptId increments once per burst — a
254
+ * debouncing pre-write and the analysis that follows share one id). */
255
+ private beginStatusAttempt;
256
+ /** Write the session's analysis-status artifact (design D3). Terminal
257
+ * states (idle/failed) close the attempt. */
258
+ private writeAnalysisStatus;
259
+ /**
260
+ * Orchestrator seam (Turbopack watcher): record watch events observed
261
+ * during the debounce window so a loader running ahead of the analysis
262
+ * has positive evidence to wait on (design D3 'debouncing'). Paths are
263
+ * filtered by the scan config and hashed at observation time.
264
+ */
265
+ noteDebouncedWatchEvents(absPaths: Iterable<string>): void;
266
+ /** One pending microtask flushes a burst of debounce observations. */
267
+ private debounceStatusWriteScheduled;
268
+ /**
269
+ * Write one payload artifact into the session directory, enveloped with
270
+ * `{sessionId, generation, replacementEpoch, payloadHash}` and rewritten
271
+ * only when the PAYLOAD bytes changed (byte-identical re-analyses leave
272
+ * disk untouched — spec: "Unchanged manifest is not rewritten"). The
273
+ * recorded diskHash (hash of the enveloped bytes) feeds the
274
+ * analysis-commit.
275
+ */
276
+ private publishPayloadArtifact;
277
+ /** Reconstruct a payload write guard from the on-disk artifact's envelope
278
+ * (same-session restart: a byte-identical payload must not rewrite). */
279
+ private seedPayloadRecord;
280
+ /** Last analysis-commit persisted in this session's directory, or null. */
281
+ private seedCommitFromDisk;
282
+ /**
283
+ * Publish the analysis-commit — the transaction identity (design D1).
284
+ * Written AFTER every payload and BEFORE the epoch; skipped entirely when
285
+ * the payload set (disk hashes) and epoch are unchanged, so a no-op
286
+ * re-analysis neither re-keys loader-worker hydration nor burns a
287
+ * generation.
288
+ */
289
+ private publishAnalysisCommit;
290
+ /**
291
+ * Publish the canonical replacement epoch: maintain the session-scoped
292
+ * disk witness `{schema, sessionId, epoch}`, rewritten ONLY when the
293
+ * epoch VALUE changes so style-only analyses and same-session restarts
294
+ * leave bytes and mtime untouched, then expose the value through the
295
+ * singleton for the plugin's needBuild fan-out and the loader's catch-up
296
+ * re-check. Every VALUE move also reconciles sibling sessions' epoch
297
+ * artifacts (below) — the webpack cold-cache validity witness.
298
+ */
299
+ private publishReplacementEpoch;
300
+ /**
301
+ * Sibling epoch reconciliation — the cross-session half of the webpack
302
+ * persistent-cache witness (spec: dev-served-transform-coherence,
303
+ * "Offline change invalidates restored modules"). Restored-module
304
+ * snapshots reference the epoch artifact of the session that BUILT them;
305
+ * with session-scoped trees that file would otherwise sit untouched
306
+ * forever, keeping stale snapshots valid. Whenever this session's epoch
307
+ * value moves, delete every sibling epoch artifact that disagrees (their
308
+ * snapshots must invalidate — restore-on-demand then rebuilds from the
309
+ * current generation) and leave agreeing siblings byte-untouched (warm
310
+ * restores stay valid). Deleting a stale artifact is pruning, not a
311
+ * foreign-session write; races with concurrent sessions are tolerated
312
+ * (S14).
313
+ */
314
+ /** Sibling ids already reconciled away (artifact deleted or absent) —
315
+ * nothing left to invalidate for them on later moves. */
316
+ private reconciledSiblingIds;
317
+ /** sessions-root listing memo, keyed by the root dir's mtime — a new or
318
+ * pruned sibling DIRECTORY moves it; agreeing siblings stay listed. */
319
+ private siblingListing;
320
+ private reconcileSiblingEpochs;
321
+ /** Epoch value held by this session's on-disk artifact, or null when
322
+ * absent, unreadable, or not the expected schema. */
323
+ private diskEpochValue;
324
+ /** Session-start hygiene (design D2): delete legacy flat artifacts
325
+ * (unreachable by session-scoped loaders) and prune sibling session
326
+ * directories older than the retention window — never the own dir,
327
+ * tolerating races with concurrently-pruning sessions (S14). */
328
+ private runSessionStartHygiene;
329
+ /** Ensure the session directory exists and write one artifact into it.
142
330
  * Write-then-rename so cross-process readers (Turbopack loader workers)
143
331
  * can never observe a torn half-written file. The tmp name carries the
144
332
  * pid — Next dev evaluates the config in more than one process, and two
145
333
  * sessions writing the same artifact must not race on one tmp path. */
146
- private writeAnimusFile;
334
+ private writeSessionArtifact;
147
335
  /**
148
336
  * asset() placeholder substitution (global-styles-system): resolve each
149
- * referenced specifier through Node resolution, copy the bytes into
150
- * `.animus/assets/` under a content-hashed name, and substitute a
151
- * RELATIVE url. `.animus/styles.css` is processed by Next's own CSS
152
- * pipeline (webpack and Turbopack alike), which applies its native asset
153
- * handling — publicPath and output hashing — to relative url()
154
- * references. Unsubstitutable specifiers warn and emit literally in
155
- * non-strict mode, fail the build under `strict: true`.
337
+ * referenced specifier through Node resolution, copy the bytes into the
338
+ * session directory's `assets/` under a content-hashed name, and
339
+ * substitute a RELATIVE url — relative to the session-scoped styles.css,
340
+ * which sits beside `assets/`, so the emitted `./assets/<file>` form is
341
+ * unchanged. The stylesheet is processed by Next's own CSS pipeline
342
+ * (webpack and Turbopack alike), which applies its native asset handling
343
+ * — publicPath and output hashing — to relative url() references.
344
+ * Unsubstitutable specifiers warn and emit literally in non-strict mode,
345
+ * fail the build under `strict: true`.
156
346
  */
157
347
  private substituteAssetReferences;
158
348
  private trackAssetDependency;
@@ -1 +1 @@
1
- {"version":3,"file":"extraction-session.d.ts","sourceRoot":"","sources":["../src/extraction-session.ts"],"names":[],"mappings":"AAkDA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAQjD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAczD,qEAAqE;AACrE,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,iBAAiB;IAC5B,kDAAkD;IAClD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC9B,6EAA6E;IAC7E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IAItC,OAAO,CAAC,cAAc,CASlB;IACJ,6DAA6D;IAC7D,oBAAoB,cAAqB;IACzC,OAAO,CAAC,mBAAmB,CAAqB;IAChD;;wEAEoE;IACpE,qBAAqB,UAAS;IAC9B;;;2EAGuE;IACvE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE1C,kFAAkF;IAClF,mBAAmB,EAAE,MAAM,EAAE,CAAM;IACnC,0EAA0E;IAC1E,OAAO,CAAC,iBAAiB,CAA8B;IACvD,4EAA4E;IAC5E,OAAO,CAAC,kBAAkB,CAA8B;IACxD,+DAA+D;IAC/D,qBAAqB,sBAA6B;IAElD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,MAAM,CAA6B;IAC3C,+EAA+E;IAC/E,OAAO,CAAC,4BAA4B,CAA4B;IAChE;iFAC6E;IAC7E,OAAO,CAAC,cAAc,CAA8B;IAGpD,OAAO,CAAC,SAAS,CAAuD;IAMxE,OAAO,CAAC,oBAAoB,CAA0B;IAEtD,uEAAuE;IACvE,qBAAqB,EAAE,MAAM,EAAE,CAAM;IAKrC,OAAO,CAAC,sBAAsB,CAAkC;IAChE,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,sBAAsB,CAAuB;IAGrD,OAAO,CAAC,WAAW,CAAiC;IAEpD,YAAY,OAAO,EAAE,iBAAiB,EAKrC;IAED,IAAI,OAAO,IAAI,OAAO,CAMrB;IAED,OAAO,CAAC,GAAG;IAMX,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,GAAG;IAGX,OAAO,CAAC,OAAO;IAIf;iFAC6E;IAC7E,OAAO,CAAC,iBAAiB;IAezB;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA8J5D;IAED;;;;;;;;;OASG;YACW,kBAAkB;IA2B1B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAiMrC;IAED;;OAEG;IACH,WAAW,IAAI,IAAI,CAOlB;IAED;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAQjC;;;OAGG;YACW,sBAAsB;IAmBpC;;;;;;;;;;;;;;;;;OAiBG;YACW,cAAc;IA4K5B;;;;sBAIkB;IAClB,OAAO,CAAC,gBAAgB;IAUxB;;;;4EAIwE;IACxE,OAAO,CAAC,eAAe;IAUvB;;;;;;;;;OASG;IACH,OAAO,CAAC,yBAAyB;IA2EjC,OAAO,CAAC,oBAAoB;IAK5B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;CA0B9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC5B,IAAI,CAgBN"}
1
+ {"version":3,"file":"extraction-session.d.ts","sourceRoot":"","sources":["../src/extraction-session.ts"],"names":[],"mappings":"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"}