@thallylabs/migrate 0.2.38 → 0.2.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,6 +15,42 @@ SVG validator, or `@thallylabs/migrate/url-migration` for the URL runner, render
15
15
  and their types. These independent entries avoid tracing repository cloning and
16
16
  filesystem discovery into application routes. The root entry remains compatible.
17
17
 
18
+ `inferUrlMigrationScope` identifies a documentation mount from same-origin declared
19
+ indexes and sidebar evidence. New URL runs infer this boundary before discovery;
20
+ an explicit `scopePath` remains authoritative. Deep article seeds do not widen a
21
+ mounted documentation tree to its marketing origin. Mintlify configuration page
22
+ IDs resolve against that mount, while ordinary HTML links keep URL semantics.
23
+
24
+ Query strings remain part of page identity. A query URL becomes an article alias
25
+ only after independent captures prove identical article, metadata, deferred source
26
+ and alternative-state content. A section query must name an observed anchor;
27
+ query-selected versions, locales and different articles remain separate pages.
28
+ The alias keeps its own capture evidence and checked section destination.
29
+
30
+ Self-contained inline SVGs become passive, hash-addressed assets. An optional
31
+ trusted `rasterizeSvg` host callback can replace rejected SVG with bounded PNG;
32
+ the engine still checks PNG MIME/signature and records the original SVG digest.
33
+ It never relaxes the SVG allowlist or supplies a browser. Hosts must enforce an
34
+ isolated, credential-free renderer with no network or page JavaScript.
35
+
36
+ Complete ARIA-linked tab panels preserve labels and source order, including
37
+ surrounding authored content. For known embedded article-source contracts, literal
38
+ missing code panels and explicit languages may be recovered only when the source
39
+ is referenced by the article and matches its headings, prose, visible examples
40
+ and tab labels. Embedded imports and expressions never execute. Unreferenced,
41
+ conflicting, incomplete or unsupported alternatives remain review blockers.
42
+
43
+ The Fumadocs adapter reads bounded JSON-only React Flight frames reachable from
44
+ the response's root record. It supports article-owned copy-source references and
45
+ literal `Tabs`/`Tab`/`Accordion` children, including loaded disclosure prose,
46
+ examples, tables and theme-specific images. It renders a fixed set of static
47
+ elements; unknown components, executable markup and unresolved references keep
48
+ their review requirement. Languages come only from explicit source declarations;
49
+ examples without that metadata remain unlabeled. Source heading IDs and known
50
+ Shiki display annotations are recognized for matching while captured code stays
51
+ unchanged. A capture provider can supply complete rendered alternatives when a
52
+ publisher does not expose a supported inert data contract.
53
+
18
54
  The returned `checkpoint` is JSON-safe. `onRecord` lets a host persist a completed
19
55
  page before acknowledging it; `onCheckpoint` emits bounded deltas, including
20
56
  pending discoveries and checkpoint identity fields. Merge delta records by URL,
@@ -27,7 +63,7 @@ capture and returns committed progress. Failed pages retry on resume by default.
27
63
  Page limits support 1–10,000 pages (default 1,000). This interface limit does not
28
64
  establish that an arbitrary site can be imported completely. Every inventory
29
65
  entry has an explicit outcome; pending/failed pages, missing anchors, technical
30
- payload differences, unavailable assets and unsupported interactive components
66
+ payload differences, failed asset acquisition and unsupported interactive components
31
67
  make validation partial. Raster/PDF assets require matching MIME and signatures;
32
68
  SVG must pass the exported `isPassiveSvg` policy: static drawing elements with
33
69
  only in-document references, no scripts, external resources, styles or animations.
@@ -36,7 +72,26 @@ Responsive `picture`/`source`/`img` choices retain their descriptors, media
36
72
  conditions, sizing and literal alt text. Every candidate is localized; shared
37
73
  asset URLs are fetched once and identical payloads count once toward the byte
38
74
  budget, including resumed journals. Complete static tab panels are preserved as
39
- alternatives; empty/lazy panels still require a capture provider.
75
+ alternatives; empty/lazy panels without verified embedded source still require a capture provider. Complete local
76
+ OpenAPI operations can represent only their exact deferred API fields. A known
77
+ client-rendered request-example contract may use that registered operation to
78
+ regenerate standard language examples; the inline and sidebar slots must be uniquely owned and
79
+ captured panels must be complete. For the supported legacy selected-example
80
+ component, the selected source, title and language must agree with the exact
81
+ root-owned provider inventory. Every authored alternative, including inactive
82
+ same-language examples, is retained byte for byte in the registered specification
83
+ and rendered by the runtime generator. An unmatched or missing inventory remains
84
+ a review blocker. Ordinary language
85
+ pickers and ambiguous or unknown slots still require review. Every captured
86
+ response, including alternative states, receives the same completeness checks;
87
+ the presence of an unrelated state does not excuse a missing panel. Supported native video
88
+ and YouTube embeds retain their original public media URLs, recorded in source
89
+ warnings; videos are not downloaded. A trusted host may report an original asset
90
+ as already absent (HTTP 404/410): its absolute source URL and a warning are
91
+ preserved. Timeouts, unsafe downloads and other acquisition errors still block
92
+ validation. Observed external redirects remain navigation links; the engine does
93
+ not capture their destination sites. External sidebar entries are preserved as
94
+ portable sidebar shortcuts.
40
95
  Observed locale metadata and URL prefixes are projected onto the runtime layout:
41
96
  primary-language files are unprefixed and secondary-language files retain their
42
97
  locale prefix. A single-language localized site uses that language as primary.
@@ -44,7 +99,7 @@ Missing primary counterparts and projected path collisions require review; the
44
99
  engine does not invent translations. Fresh HTML captures also observe `html lang`; conflicting or unsupported
45
100
  language evidence requires review. Capture adapters can supply `locale` when
46
101
  no language is declared in HTML or identified by the scoped URL path.
47
- The `url-evidence-v2` converter rejects earlier journals: replay retained raw
102
+ The `url-evidence-v6` converter rejects earlier journals: replay retained raw
48
103
  captures into a new journal rather than relabelling previously hashed pages.
49
104
 
50
105
  `stopReason` distinguishes a resumable `capture-limit` from hard `page-limit`
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { M as MigrationPage, a as MigrationAsset, b as MigrationNavigationGroup, R as RenderedMigrationFile, c as MigrationWarning, d as MigrationFetcher, e as MigrationPlatform, f as MigrationBundle, g as MigrationDocsConfig } from './url-migration-peVzTLjL.js';
2
- export { h as MigrationCapture, i as MigrationCaptureProvider, j as MigrationCaptureState, k as MigrationCapturedAsset, l as MigrationEvidence, m as MigrationFetchRequest, n as MigrationFetchResponse, o as MigrationJournalAsset, p as MigrationNavigationOccurrence, q as MigrationNavigationTab, U as UrlMigrationCheckpoint, r as UrlMigrationCheckpointDelta, s as UrlMigrationIssue, t as UrlMigrationRecord, u as UrlMigrationRun, v as UrlMigrationRunOptions, w as UrlMigrationValidation, x as classifyMigrationResponse, y as mergeMigrationConfig, z as renderMigrationFiles, A as runUrlMigration, B as validateUrlMigration } from './url-migration-peVzTLjL.js';
1
+ import { M as MigrationPage, a as MigrationAsset, b as MigrationNavigationGroup, R as RenderedMigrationFile, c as MigrationWarning, d as MigrationFetcher, e as MigrationPlatform, f as MigrationBundle, g as MigrationDocsConfig } from './url-run-DFnoqEi-.js';
2
+ export { h as MigrationCapture, i as MigrationCaptureProvider, j as MigrationCaptureState, k as MigrationCapturedAsset, l as MigrationEvidence, m as MigrationFetchRequest, n as MigrationFetchResponse, o as MigrationJournalAsset, p as MigrationNavigationOccurrence, q as MigrationNavigationTab, U as UrlMigrationCheckpoint, r as UrlMigrationCheckpointDelta, s as UrlMigrationIssue, t as UrlMigrationRecord, u as UrlMigrationRun, v as UrlMigrationRunOptions, w as UrlMigrationValidation, x as classifyMigrationResponse, y as mergeMigrationConfig, z as renderMigrationFiles, A as runUrlMigration, B as validateUrlMigration } from './url-run-DFnoqEi-.js';
3
3
  export { isPassiveSvg } from './svg-policy.js';
4
4
 
5
5
  /**