@mean-weasel/lineage 0.1.22 → 0.1.23

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 (219) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/MANUAL_INSTALL_DOGFOOD.md +1 -0
  3. package/README.md +8 -5
  4. package/dist/cli/lineage-dev.js +27 -21
  5. package/dist/cli/lineage-dev.js.map +3 -3
  6. package/dist/cli/lineage-preview.js +27 -21
  7. package/dist/cli/lineage-preview.js.map +3 -3
  8. package/dist/cli/lineage.js +27 -21
  9. package/dist/cli/lineage.js.map +3 -3
  10. package/dist/docs-site/404.html +41 -0
  11. package/dist/docs-site/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.BcSo_yiZ.js +1 -0
  12. package/dist/docs-site/_astro/Search.astro_astro_type_script_index_0_lang.x2pVooPA.js +1 -0
  13. package/dist/docs-site/_astro/TableOfContents.astro_astro_type_script_index_0_lang.Csloo1VZ.js +1 -0
  14. package/dist/docs-site/_astro/common.DarLW4Vf.css +3 -0
  15. package/dist/docs-site/_astro/ec.0vx5m.js +3 -0
  16. package/dist/docs-site/_astro/ec.w36nc.css +1 -0
  17. package/dist/docs-site/_astro/page.LAbJoB63.js +1 -0
  18. package/dist/docs-site/_astro/print.ehPL0gv-.css +1 -0
  19. package/dist/docs-site/_astro/starlight-toc.CTCQXEge.js +1 -0
  20. package/dist/docs-site/_astro/ui-core.DWIqd25E.js +2 -0
  21. package/dist/docs-site/concepts/agent-claims-handoffs/index.html +99 -0
  22. package/dist/docs-site/concepts/attempts-current-version/index.html +86 -0
  23. package/dist/docs-site/concepts/branches-vs-rerolls/index.html +114 -0
  24. package/dist/docs-site/concepts/projects-workspaces-assets/index.html +89 -0
  25. package/dist/docs-site/concepts/selections-next-variations/index.html +86 -0
  26. package/dist/docs-site/index.html +92 -0
  27. package/dist/docs-site/integrations/cloud-storage/index.html +92 -0
  28. package/dist/docs-site/integrations/image-generation/index.html +93 -0
  29. package/dist/docs-site/integrations/index.html +112 -0
  30. package/dist/docs-site/integrations/social-scheduling/index.html +89 -0
  31. package/dist/docs-site/operations/backup-recovery/index.html +87 -0
  32. package/dist/docs-site/operations/channels/index.html +88 -0
  33. package/dist/docs-site/operations/local-first-data/index.html +90 -0
  34. package/dist/docs-site/operations/profiles-database-identity/index.html +90 -0
  35. package/dist/docs-site/operations/troubleshooting/index.html +89 -0
  36. package/dist/docs-site/pagefind/fragment/en_1126abb.pf_fragment +0 -0
  37. package/dist/docs-site/pagefind/fragment/en_19b3f6c.pf_fragment +0 -0
  38. package/dist/docs-site/pagefind/fragment/en_31aa611.pf_fragment +0 -0
  39. package/dist/docs-site/pagefind/fragment/en_38817cc.pf_fragment +0 -0
  40. package/dist/docs-site/pagefind/fragment/en_4184ad1.pf_fragment +0 -0
  41. package/dist/docs-site/pagefind/fragment/en_41db543.pf_fragment +0 -0
  42. package/dist/docs-site/pagefind/fragment/en_469f895.pf_fragment +0 -0
  43. package/dist/docs-site/pagefind/fragment/en_4db923b.pf_fragment +0 -0
  44. package/dist/docs-site/pagefind/fragment/en_56e45b6.pf_fragment +0 -0
  45. package/dist/docs-site/pagefind/fragment/en_56fe7ca.pf_fragment +0 -0
  46. package/dist/docs-site/pagefind/fragment/en_581a7cb.pf_fragment +0 -0
  47. package/dist/docs-site/pagefind/fragment/en_5be5e44.pf_fragment +0 -0
  48. package/dist/docs-site/pagefind/fragment/en_603c2be.pf_fragment +0 -0
  49. package/dist/docs-site/pagefind/fragment/en_66b3118.pf_fragment +0 -0
  50. package/dist/docs-site/pagefind/fragment/en_6a19c31.pf_fragment +0 -0
  51. package/dist/docs-site/pagefind/fragment/en_74e9307.pf_fragment +0 -0
  52. package/dist/docs-site/pagefind/fragment/en_7c9d5a2.pf_fragment +0 -0
  53. package/dist/docs-site/pagefind/fragment/en_818744b.pf_fragment +0 -0
  54. package/dist/docs-site/pagefind/fragment/en_8269752.pf_fragment +0 -0
  55. package/dist/docs-site/pagefind/fragment/en_88b38c1.pf_fragment +0 -0
  56. package/dist/docs-site/pagefind/fragment/en_8c1c735.pf_fragment +0 -0
  57. package/dist/docs-site/pagefind/fragment/en_98d9b16.pf_fragment +0 -0
  58. package/dist/docs-site/pagefind/fragment/en_a3d636e.pf_fragment +0 -0
  59. package/dist/docs-site/pagefind/fragment/en_b15ecf0.pf_fragment +0 -0
  60. package/dist/docs-site/pagefind/fragment/en_bcc29c5.pf_fragment +0 -0
  61. package/dist/docs-site/pagefind/fragment/en_bfb13e9.pf_fragment +0 -0
  62. package/dist/docs-site/pagefind/fragment/en_d0fca9e.pf_fragment +0 -0
  63. package/dist/docs-site/pagefind/fragment/en_d49ed00.pf_fragment +0 -0
  64. package/dist/docs-site/pagefind/fragment/en_e0786b9.pf_fragment +0 -0
  65. package/dist/docs-site/pagefind/fragment/en_e298dee.pf_fragment +0 -0
  66. package/dist/docs-site/pagefind/fragment/en_f6179a8.pf_fragment +0 -0
  67. package/dist/docs-site/pagefind/index/en_f279b04.pf_index +0 -0
  68. package/dist/docs-site/pagefind/pagefind-component-ui.css +1509 -0
  69. package/dist/docs-site/pagefind/pagefind-component-ui.js +56 -0
  70. package/dist/docs-site/pagefind/pagefind-entry.json +1 -0
  71. package/dist/docs-site/pagefind/pagefind-highlight.js +1070 -0
  72. package/dist/docs-site/pagefind/pagefind-modular-ui.css +214 -0
  73. package/dist/docs-site/pagefind/pagefind-modular-ui.js +8 -0
  74. package/dist/docs-site/pagefind/pagefind-ui.css +1 -0
  75. package/dist/docs-site/pagefind/pagefind-ui.js +2 -0
  76. package/dist/docs-site/pagefind/pagefind-worker.js +6 -0
  77. package/dist/docs-site/pagefind/pagefind.en_74951c3ca7.pf_meta +0 -0
  78. package/dist/docs-site/pagefind/pagefind.js +6 -0
  79. package/dist/docs-site/pagefind/wasm.en.pagefind +0 -0
  80. package/dist/docs-site/pagefind/wasm.unknown.pagefind +0 -0
  81. package/dist/docs-site/reference/cli/index.html +86 -0
  82. package/dist/docs-site/reference/interface-guide/index.html +86 -0
  83. package/dist/docs-site/reference/release-notes/index.html +80 -0
  84. package/dist/docs-site/reference/settings/index.html +86 -0
  85. package/dist/docs-site/reference/terminology/index.html +94 -0
  86. package/dist/docs-site/sitemap-0.xml +1 -0
  87. package/dist/docs-site/sitemap-index.xml +1 -0
  88. package/dist/docs-site/start-here/example-projects/index.html +88 -0
  89. package/dist/docs-site/start-here/first-workspace/index.html +91 -0
  90. package/dist/docs-site/start-here/installation-first-run/index.html +86 -0
  91. package/dist/docs-site/start-here/what-is-lineage/index.html +96 -0
  92. package/dist/docs-site/workflows/back-up-approved-assets/index.html +88 -0
  93. package/dist/docs-site/workflows/content-batches/index.html +88 -0
  94. package/dist/docs-site/workflows/continue-new-agent-session/index.html +89 -0
  95. package/dist/docs-site/workflows/create-grow-lineage/index.html +89 -0
  96. package/dist/docs-site/workflows/generate-import-variations/index.html +92 -0
  97. package/dist/docs-site/workflows/restore-earlier-attempt/index.html +87 -0
  98. package/dist/docs-site/workflows/review-approve-assets/index.html +87 -0
  99. package/dist/pages/.nojekyll +0 -0
  100. package/dist/pages/assets/agent-shared-state-DOfpTLiw.webp +0 -0
  101. package/dist/pages/assets/agent-to-canvas-DtIu_cPq.mp4 +0 -0
  102. package/dist/pages/assets/app-B-fAyNsU.css +1 -0
  103. package/dist/{web/assets/app-D-7R33Mc.js → pages/assets/app-DdU93vp2.js} +36 -2
  104. package/dist/pages/assets/attempt-history-D6wdic6n.webp +0 -0
  105. package/dist/pages/assets/branching-tree-B8I5_S6D.png +0 -0
  106. package/dist/pages/assets/canvas-cli-DHBacq7r.png +0 -0
  107. package/dist/pages/assets/hero-agent-sync-D8ibW83E.mp4 +0 -0
  108. package/dist/pages/assets/hero-agent-sync-poster-zBB3KpbO.png +0 -0
  109. package/dist/pages/assets/hero-board-DG3ED4AW.webp +0 -0
  110. package/dist/pages/assets/hero-lineage-growth-Bsl9tiq-.mp4 +0 -0
  111. package/dist/pages/assets/hero-trace-connections-Bb52ABBc.mp4 +0 -0
  112. package/dist/pages/assets/human-selection-BdDBDE-I.webp +0 -0
  113. package/dist/pages/assets/human-to-agent-D1z92ZO9.mp4 +0 -0
  114. package/dist/pages/assets/jsx-runtime-DAFSxiwi.js +8 -0
  115. package/dist/pages/assets/landing-MwOFmHoi.js +2 -0
  116. package/dist/pages/assets/landing-wy4L-yBm.css +1 -0
  117. package/dist/pages/assets/reroll-history-DQcEH42R.mp4 +0 -0
  118. package/dist/pages/docs/404.html +41 -0
  119. package/dist/pages/docs/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.BcSo_yiZ.js +1 -0
  120. package/dist/pages/docs/_astro/Search.astro_astro_type_script_index_0_lang.x2pVooPA.js +1 -0
  121. package/dist/pages/docs/_astro/TableOfContents.astro_astro_type_script_index_0_lang.Csloo1VZ.js +1 -0
  122. package/dist/pages/docs/_astro/common.DarLW4Vf.css +3 -0
  123. package/dist/pages/docs/_astro/ec.0vx5m.js +3 -0
  124. package/dist/pages/docs/_astro/ec.w36nc.css +1 -0
  125. package/dist/pages/docs/_astro/page.LAbJoB63.js +1 -0
  126. package/dist/pages/docs/_astro/print.ehPL0gv-.css +1 -0
  127. package/dist/pages/docs/_astro/starlight-toc.CTCQXEge.js +1 -0
  128. package/dist/pages/docs/_astro/ui-core.DWIqd25E.js +2 -0
  129. package/dist/pages/docs/concepts/agent-claims-handoffs/index.html +99 -0
  130. package/dist/pages/docs/concepts/attempts-current-version/index.html +86 -0
  131. package/dist/pages/docs/concepts/branches-vs-rerolls/index.html +114 -0
  132. package/dist/pages/docs/concepts/projects-workspaces-assets/index.html +89 -0
  133. package/dist/pages/docs/concepts/selections-next-variations/index.html +86 -0
  134. package/dist/pages/docs/index.html +92 -0
  135. package/dist/pages/docs/integrations/cloud-storage/index.html +92 -0
  136. package/dist/pages/docs/integrations/image-generation/index.html +93 -0
  137. package/dist/pages/docs/integrations/index.html +112 -0
  138. package/dist/pages/docs/integrations/social-scheduling/index.html +89 -0
  139. package/dist/pages/docs/operations/backup-recovery/index.html +87 -0
  140. package/dist/pages/docs/operations/channels/index.html +88 -0
  141. package/dist/pages/docs/operations/local-first-data/index.html +90 -0
  142. package/dist/pages/docs/operations/profiles-database-identity/index.html +90 -0
  143. package/dist/pages/docs/operations/troubleshooting/index.html +89 -0
  144. package/dist/pages/docs/pagefind/fragment/en_1126abb.pf_fragment +0 -0
  145. package/dist/pages/docs/pagefind/fragment/en_19b3f6c.pf_fragment +0 -0
  146. package/dist/pages/docs/pagefind/fragment/en_31aa611.pf_fragment +0 -0
  147. package/dist/pages/docs/pagefind/fragment/en_38817cc.pf_fragment +0 -0
  148. package/dist/pages/docs/pagefind/fragment/en_4184ad1.pf_fragment +0 -0
  149. package/dist/pages/docs/pagefind/fragment/en_41db543.pf_fragment +0 -0
  150. package/dist/pages/docs/pagefind/fragment/en_469f895.pf_fragment +0 -0
  151. package/dist/pages/docs/pagefind/fragment/en_4db923b.pf_fragment +0 -0
  152. package/dist/pages/docs/pagefind/fragment/en_56e45b6.pf_fragment +0 -0
  153. package/dist/pages/docs/pagefind/fragment/en_56fe7ca.pf_fragment +0 -0
  154. package/dist/pages/docs/pagefind/fragment/en_581a7cb.pf_fragment +0 -0
  155. package/dist/pages/docs/pagefind/fragment/en_5be5e44.pf_fragment +0 -0
  156. package/dist/pages/docs/pagefind/fragment/en_603c2be.pf_fragment +0 -0
  157. package/dist/pages/docs/pagefind/fragment/en_66b3118.pf_fragment +0 -0
  158. package/dist/pages/docs/pagefind/fragment/en_6a19c31.pf_fragment +0 -0
  159. package/dist/pages/docs/pagefind/fragment/en_74e9307.pf_fragment +0 -0
  160. package/dist/pages/docs/pagefind/fragment/en_7c9d5a2.pf_fragment +0 -0
  161. package/dist/pages/docs/pagefind/fragment/en_818744b.pf_fragment +0 -0
  162. package/dist/pages/docs/pagefind/fragment/en_8269752.pf_fragment +0 -0
  163. package/dist/pages/docs/pagefind/fragment/en_88b38c1.pf_fragment +0 -0
  164. package/dist/pages/docs/pagefind/fragment/en_8c1c735.pf_fragment +0 -0
  165. package/dist/pages/docs/pagefind/fragment/en_98d9b16.pf_fragment +0 -0
  166. package/dist/pages/docs/pagefind/fragment/en_a3d636e.pf_fragment +0 -0
  167. package/dist/pages/docs/pagefind/fragment/en_b15ecf0.pf_fragment +0 -0
  168. package/dist/pages/docs/pagefind/fragment/en_bcc29c5.pf_fragment +0 -0
  169. package/dist/pages/docs/pagefind/fragment/en_bfb13e9.pf_fragment +0 -0
  170. package/dist/pages/docs/pagefind/fragment/en_d0fca9e.pf_fragment +0 -0
  171. package/dist/pages/docs/pagefind/fragment/en_d49ed00.pf_fragment +0 -0
  172. package/dist/pages/docs/pagefind/fragment/en_e0786b9.pf_fragment +0 -0
  173. package/dist/pages/docs/pagefind/fragment/en_e298dee.pf_fragment +0 -0
  174. package/dist/pages/docs/pagefind/fragment/en_f6179a8.pf_fragment +0 -0
  175. package/dist/pages/docs/pagefind/index/en_f279b04.pf_index +0 -0
  176. package/dist/pages/docs/pagefind/pagefind-component-ui.css +1509 -0
  177. package/dist/pages/docs/pagefind/pagefind-component-ui.js +56 -0
  178. package/dist/pages/docs/pagefind/pagefind-entry.json +1 -0
  179. package/dist/pages/docs/pagefind/pagefind-highlight.js +1070 -0
  180. package/dist/pages/docs/pagefind/pagefind-modular-ui.css +214 -0
  181. package/dist/pages/docs/pagefind/pagefind-modular-ui.js +8 -0
  182. package/dist/pages/docs/pagefind/pagefind-ui.css +1 -0
  183. package/dist/pages/docs/pagefind/pagefind-ui.js +2 -0
  184. package/dist/pages/docs/pagefind/pagefind-worker.js +6 -0
  185. package/dist/pages/docs/pagefind/pagefind.en_74951c3ca7.pf_meta +0 -0
  186. package/dist/pages/docs/pagefind/pagefind.js +6 -0
  187. package/dist/pages/docs/pagefind/wasm.en.pagefind +0 -0
  188. package/dist/pages/docs/pagefind/wasm.unknown.pagefind +0 -0
  189. package/dist/pages/docs/reference/cli/index.html +86 -0
  190. package/dist/pages/docs/reference/interface-guide/index.html +86 -0
  191. package/dist/pages/docs/reference/release-notes/index.html +80 -0
  192. package/dist/pages/docs/reference/settings/index.html +86 -0
  193. package/dist/pages/docs/reference/terminology/index.html +94 -0
  194. package/dist/pages/docs/sitemap-0.xml +1 -0
  195. package/dist/pages/docs/sitemap-index.xml +1 -0
  196. package/dist/pages/docs/start-here/example-projects/index.html +88 -0
  197. package/dist/pages/docs/start-here/first-workspace/index.html +91 -0
  198. package/dist/pages/docs/start-here/installation-first-run/index.html +86 -0
  199. package/dist/pages/docs/start-here/what-is-lineage/index.html +96 -0
  200. package/dist/pages/docs/workflows/back-up-approved-assets/index.html +88 -0
  201. package/dist/pages/docs/workflows/content-batches/index.html +88 -0
  202. package/dist/pages/docs/workflows/continue-new-agent-session/index.html +89 -0
  203. package/dist/pages/docs/workflows/create-grow-lineage/index.html +89 -0
  204. package/dist/pages/docs/workflows/generate-import-variations/index.html +92 -0
  205. package/dist/pages/docs/workflows/restore-earlier-attempt/index.html +87 -0
  206. package/dist/pages/docs/workflows/review-approve-assets/index.html +87 -0
  207. package/dist/pages/index.html +42 -0
  208. package/dist/pages/landing/index.html +42 -0
  209. package/dist/pages/lineage-showcase-cover-16x9.png +0 -0
  210. package/dist/runtime-build.json +5 -5
  211. package/dist/server.js +73 -24
  212. package/dist/server.js.map +4 -4
  213. package/dist/web/assets/app-DdU93vp2.js +50 -0
  214. package/dist/web/assets/landing-MwOFmHoi.js +2 -0
  215. package/dist/web/index.html +3 -3
  216. package/dist/web/landing/index.html +26 -3
  217. package/dist/web/lineage-showcase-cover-16x9.png +0 -0
  218. package/package.json +10 -2
  219. package/dist/web/assets/landing-DIjBBL33.js +0 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ ## 0.1.23
6
+
7
+ - Make missing Codex CLI failures explain how to restore `PATH`, verify `npx` and Codex prerequisites explicitly, and gate releases on compatibility with the independently published plugin installer.
8
+ - Add a reusable Lineage showcase cover and refine its presentation without browser text-selection artifacts.
9
+ - Show absolute local paths in asset details while preserving safe relative paths in persisted lineage data.
10
+ - Add the public documentation hub, freshness checks, CI routing, and GitHub Pages deployment workflow.
11
+ - Refresh vulnerable transitive dependencies for `brace-expansion`, `postcss`, and `nanoid`.
12
+
3
13
  ## 0.1.22
4
14
 
5
15
  - Harden the landing page, README, and packaged manual dogfood guide with fail-fast first-run commands that complete the post-initialization runtime, profile, database, and service identity gate.
@@ -72,6 +72,7 @@ Record the prerequisites and registry selection:
72
72
  ```bash
73
73
  run_lineage_dogfood node --version
74
74
  run_lineage_dogfood npm --version
75
+ run_lineage_dogfood npx --version
75
76
  run_lineage_dogfood codex --version
76
77
  run_lineage_dogfood npm view @mean-weasel/lineage dist-tags version engines --json
77
78
  ```
package/README.md CHANGED
@@ -59,14 +59,17 @@ Before installing anything, verify the tools used by the path you choose:
59
59
  ```bash
60
60
  node --version
61
61
  npm --version
62
+ npx --version
62
63
  make --version
63
64
  ```
64
65
 
65
- Lineage requires Node.js 22.22.0 or newer and npm. Make is required only for
66
- the documented `make` shortcuts. A real Codex installation is optional for the
67
- app, but required to install and activate the Codex plugin; verify that
68
- additional prerequisite with `codex --version` before following the plugin
69
- step.
66
+ Lineage requires Node.js 22.22.0 or newer and npm, including the accompanying
67
+ `npx` command used by the plugin installer. Make is required only for the
68
+ documented `make` shortcuts. A real Codex installation is optional for the app,
69
+ but required to install and activate the Codex plugin; verify that additional
70
+ prerequisite with `codex --version` in the same shell before following the
71
+ plugin step. If either command is missing, restore its executable directory on
72
+ `PATH` before installing.
70
73
 
71
74
  On the minimum supported Node 22 line, foreground startup can print one
72
75
  `ExperimentalWarning` for Node's built-in SQLite module before the healthy
@@ -4,7 +4,7 @@
4
4
  import { existsSync as existsSync11, mkdirSync as mkdirSync6, readFileSync as readFileSync6, writeFileSync as writeFileSync4 } from "node:fs";
5
5
  import { randomUUID as randomUUID4 } from "node:crypto";
6
6
  import { homedir as homedir2, platform as platform2 } from "node:os";
7
- import { dirname as dirname6, join as join10, resolve as resolve8 } from "node:path";
7
+ import { dirname as dirname6, join as join10, resolve as resolve9 } from "node:path";
8
8
  import { spawn } from "node:child_process";
9
9
  import { fileURLToPath as fileURLToPath3 } from "node:url";
10
10
 
@@ -2810,7 +2810,7 @@ function validateAgentClaimForWrite(fields) {
2810
2810
  }
2811
2811
 
2812
2812
  // src/server/assetLineage.ts
2813
- import { join as join7 } from "node:path";
2813
+ import { isAbsolute as isAbsolute2, join as join7, resolve as resolve5 } from "node:path";
2814
2814
 
2815
2815
  // src/server/assetLineageSelection.ts
2816
2816
  function selectedRows(database, project, root) {
@@ -3515,6 +3515,11 @@ function collectAssets(project, source) {
3515
3515
  }
3516
3516
  return assets;
3517
3517
  }
3518
+ function absoluteLocalPath(localPath) {
3519
+ if (!localPath) return void 0;
3520
+ if (isAbsolute2(localPath)) return localPath;
3521
+ return resolve5(repoRoot, ".asset-scratch", localPath);
3522
+ }
3518
3523
  function upsertProject(database, project) {
3519
3524
  const timestamp = nowIso();
3520
3525
  database.prepare(`
@@ -3929,6 +3934,7 @@ function getLineageSnapshot(project, assetId) {
3929
3934
  const lineageTasks = lineageTasksByNode.get(row.asset_id);
3930
3935
  return {
3931
3936
  ...node,
3937
+ absolute_path: absoluteLocalPath(row.local_path),
3932
3938
  attempt_count: attempts.length,
3933
3939
  current_attempt: currentAttempt,
3934
3940
  is_latest: !childIds.has(row.asset_id),
@@ -4361,7 +4367,7 @@ function linkSelectedLineageChild(project, fields) {
4361
4367
 
4362
4368
  // src/server/generationReceipts.ts
4363
4369
  import { existsSync as existsSync8, realpathSync as realpathSync2, statSync as statSync4 } from "node:fs";
4364
- import { relative as relative3, resolve as resolve5 } from "node:path";
4370
+ import { relative as relative3, resolve as resolve6 } from "node:path";
4365
4371
  import { randomUUID as randomUUID3 } from "node:crypto";
4366
4372
 
4367
4373
  // src/shared/generationOutputManifest.ts
@@ -4896,8 +4902,8 @@ function isPathInside(child, parent) {
4896
4902
  return Boolean(rel) && !rel.startsWith("..") && !rel.startsWith("/");
4897
4903
  }
4898
4904
  function scratchCandidate(file) {
4899
- const scratchRoot = resolve5(repoRoot, ".asset-scratch");
4900
- const candidate = file.startsWith(".asset-scratch/") || resolve5(file).startsWith(scratchRoot) ? resolve5(repoRoot, file) : resolve5(scratchRoot, file);
4905
+ const scratchRoot = resolve6(repoRoot, ".asset-scratch");
4906
+ const candidate = file.startsWith(".asset-scratch/") || resolve6(file).startsWith(scratchRoot) ? resolve6(repoRoot, file) : resolve6(scratchRoot, file);
4901
4907
  if (!isPathInside(candidate, scratchRoot)) throw new GenerationReceiptError(`Import file must be under .asset-scratch: ${file}`);
4902
4908
  return { candidate, scratchRoot };
4903
4909
  }
@@ -5152,7 +5158,7 @@ function importImageRerollOutput(project = defaultProject, fields) {
5152
5158
  // src/server/lineageSelectionPacket.ts
5153
5159
  import { createHash as createHash5 } from "node:crypto";
5154
5160
  import { existsSync as existsSync9, statSync as statSync5 } from "node:fs";
5155
- import { isAbsolute as isAbsolute2, resolve as resolve6 } from "node:path";
5161
+ import { isAbsolute as isAbsolute3, resolve as resolve7 } from "node:path";
5156
5162
  var LineageSelectionPacketError = class extends Error {
5157
5163
  constructor(message, warnings = [], errors = [], diagnostics = []) {
5158
5164
  super(message);
@@ -5198,10 +5204,10 @@ function resolveWorkspace(project, options) {
5198
5204
  }
5199
5205
  function resolveLocalReference(reference) {
5200
5206
  if (!reference) return void 0;
5201
- if (isAbsolute2(reference)) return reference;
5202
- const repoRelative = resolve6(repoRoot, reference);
5207
+ if (isAbsolute3(reference)) return reference;
5208
+ const repoRelative = resolve7(repoRoot, reference);
5203
5209
  if (existsSync9(repoRelative)) return repoRelative;
5204
- return resolve6(repoRoot, ".asset-scratch", reference);
5210
+ return resolve7(repoRoot, ".asset-scratch", reference);
5205
5211
  }
5206
5212
  function fileSize(path) {
5207
5213
  if (!path || !existsSync9(path)) return void 0;
@@ -5656,7 +5662,7 @@ function getLineageSelectionPacket(project, options = {}) {
5656
5662
  import { createHash as createHash6 } from "node:crypto";
5657
5663
  import { spawnSync as spawnSync2 } from "node:child_process";
5658
5664
  import { existsSync as existsSync10, lstatSync as lstatSync3, readFileSync as readFileSync5, readdirSync as readdirSync3, readlinkSync, realpathSync as realpathSync3, statSync as statSync6 } from "node:fs";
5659
- import { dirname as dirname5, isAbsolute as isAbsolute3, join as join9, resolve as resolve7 } from "node:path";
5665
+ import { dirname as dirname5, isAbsolute as isAbsolute4, join as join9, resolve as resolve8 } from "node:path";
5660
5666
  import { fileURLToPath as fileURLToPath2 } from "node:url";
5661
5667
 
5662
5668
  // src/shared/runtimeInfoTypes.ts
@@ -5675,7 +5681,7 @@ function isLineagePackageRoot(root) {
5675
5681
  }
5676
5682
  function executingCodeRoot() {
5677
5683
  const moduleDirectory = dirname5(fileURLToPath2(import.meta.url));
5678
- const candidates = [resolve7(moduleDirectory, "../.."), resolve7(moduleDirectory, "..")];
5684
+ const candidates = [resolve8(moduleDirectory, "../.."), resolve8(moduleDirectory, "..")];
5679
5685
  const root = candidates.find(isLineagePackageRoot);
5680
5686
  if (!root) throw new Error(`Unable to derive Lineage code root from executing module ${fileURLToPath2(import.meta.url)}`);
5681
5687
  return canonicalRoot(root);
@@ -5688,7 +5694,7 @@ function canonicalRoot(root) {
5688
5694
  try {
5689
5695
  return realpathSync3(root);
5690
5696
  } catch {
5691
- return resolve7(root);
5697
+ return resolve8(root);
5692
5698
  }
5693
5699
  }
5694
5700
  function packageInfo(root = codeRoot) {
@@ -5788,7 +5794,7 @@ function readInstallReceipt(path, errors) {
5788
5794
  return void 0;
5789
5795
  }
5790
5796
  let receipt;
5791
- const receiptPath = resolve7(path);
5797
+ const receiptPath = resolve8(path);
5792
5798
  try {
5793
5799
  receipt = JSON.parse(readFileSync5(receiptPath, "utf8"));
5794
5800
  } catch (error) {
@@ -5796,7 +5802,7 @@ function readInstallReceipt(path, errors) {
5796
5802
  return void 0;
5797
5803
  }
5798
5804
  if (receipt.schema_version !== lineageRuntimeInstallSchemaVersion) errors.push(`Unsupported runtime install receipt schema: ${String(receipt.schema_version)}`);
5799
- if (!isAbsolute3(receipt.package_root || "")) errors.push("Runtime install receipt package_root must be absolute");
5805
+ if (!isAbsolute4(receipt.package_root || "")) errors.push("Runtime install receipt package_root must be absolute");
5800
5806
  if (!receipt.package_integrity?.startsWith("sha512-")) errors.push("Runtime install receipt package integrity is invalid");
5801
5807
  if (receipt.package_source !== "registry" && receipt.package_source !== "local") errors.push("Runtime install receipt package source is invalid");
5802
5808
  if (typeof receipt.package_spec !== "string" || !receipt.package_spec) errors.push("Runtime install receipt package spec is invalid");
@@ -6074,7 +6080,7 @@ var signalExitCodes = {
6074
6080
  SIGTERM: 143
6075
6081
  };
6076
6082
  function packageRoot2() {
6077
- return resolve8(dirname6(fileURLToPath3(import.meta.url)), "..", "..");
6083
+ return resolve9(dirname6(fileURLToPath3(import.meta.url)), "..", "..");
6078
6084
  }
6079
6085
  function packageVersion() {
6080
6086
  try {
@@ -6113,7 +6119,7 @@ function readOptions(args, name) {
6113
6119
  }
6114
6120
  function readJsonFile(path, label) {
6115
6121
  try {
6116
- return JSON.parse(readFileSync6(resolve8(path), "utf8"));
6122
+ return JSON.parse(readFileSync6(resolve9(path), "utf8"));
6117
6123
  } catch (error) {
6118
6124
  throw new Error(`${label} must be a readable JSON file: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
6119
6125
  }
@@ -6157,7 +6163,7 @@ function resolveStartOptions(config, args) {
6157
6163
  };
6158
6164
  }
6159
6165
  function resolveCliAssetRoot(args) {
6160
- return resolve8(readOption(args, "--asset-root") || process.env.LINEAGE_ASSET_ROOT || packageRoot);
6166
+ return resolve9(readOption(args, "--asset-root") || process.env.LINEAGE_ASSET_ROOT || packageRoot);
6161
6167
  }
6162
6168
  function configureCliAssetRoot(args) {
6163
6169
  const assetRoot = resolveCliAssetRoot(args);
@@ -6189,10 +6195,10 @@ function prepareCliProfile(config, args) {
6189
6195
  if (hasOption(args, "--db")) throw new Error("A named profile cannot be combined with --db");
6190
6196
  if (hasOption(args, "--asset-root")) throw new Error("A named profile cannot be combined with --asset-root");
6191
6197
  const profile = resolveLineageProfile(selector);
6192
- if (process.env.LINEAGE_DB && resolve8(process.env.LINEAGE_DB) !== profile.database_path) {
6198
+ if (process.env.LINEAGE_DB && resolve9(process.env.LINEAGE_DB) !== profile.database_path) {
6193
6199
  throw new Error(`Profile ${profile.profile_id} database_path conflicts with LINEAGE_DB`);
6194
6200
  }
6195
- if (process.env.LINEAGE_ASSET_ROOT && resolve8(process.env.LINEAGE_ASSET_ROOT) !== profile.asset_root) {
6201
+ if (process.env.LINEAGE_ASSET_ROOT && resolve9(process.env.LINEAGE_ASSET_ROOT) !== profile.asset_root) {
6196
6202
  throw new Error(`Profile ${profile.profile_id} asset_root conflicts with LINEAGE_ASSET_ROOT`);
6197
6203
  }
6198
6204
  assertProfileChannel(profile, config.channel);
@@ -6293,7 +6299,7 @@ function lineageServiceIdentityErrors(runtime, expected) {
6293
6299
  if (runtime.channel !== expected.channel) errors.push(`channel ${runtime.channel} != ${expected.channel}`);
6294
6300
  if (!runtime.code?.verified) errors.push("service code identity is not verified");
6295
6301
  if (runtime.code?.fingerprint !== expected.code_fingerprint) errors.push(`code fingerprint ${runtime.code?.fingerprint || "missing"} != ${expected.code_fingerprint}`);
6296
- if (resolve8(runtime.database.path) !== resolve8(expected.database_path)) errors.push(`database ${runtime.database.path} != ${expected.database_path}`);
6302
+ if (resolve9(runtime.database.path) !== resolve9(expected.database_path)) errors.push(`database ${runtime.database.path} != ${expected.database_path}`);
6297
6303
  if (runtime.service?.instance_id !== expected.instance_id) errors.push(`service instance ${runtime.service?.instance_id || "missing"} != ${expected.instance_id}`);
6298
6304
  if (runtime.service?.launcher_pid !== expected.launcher_pid) errors.push(`launcher pid ${runtime.service?.launcher_pid || "missing"} != ${expected.launcher_pid}`);
6299
6305
  if (expected.profile) {
@@ -6388,7 +6394,7 @@ function runLineageDataCommand(command, args) {
6388
6394
  });
6389
6395
  const out = readOption(args, "--out");
6390
6396
  if (out) {
6391
- const outPath = resolve8(out);
6397
+ const outPath = resolve9(out);
6392
6398
  mkdirSync6(dirname6(outPath), { recursive: true });
6393
6399
  writeFileSync4(outPath, `${JSON.stringify(packet, null, 2)}
6394
6400
  `);