@narumitw/pi-sync 0.57.8 → 0.57.10

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 (151) hide show
  1. package/CHANGELOG.md +306 -0
  2. package/README.md +2 -0
  3. package/dist/chunks/{agent-candidate-GNEYR225.ts → agent-candidate-EYB35AGL.ts} +12 -9
  4. package/dist/chunks/{agent-plan-3L7CRFDM.ts → agent-plan-KO43GTOR.ts} +22 -18
  5. package/dist/chunks/{agent-plan-3L7CRFDM.ts.map → agent-plan-KO43GTOR.ts.map} +1 -1
  6. package/dist/chunks/{agent-refusal-retry-AH7TXOQT.ts → agent-refusal-retry-C2HQROTP.ts} +12 -9
  7. package/dist/chunks/{agent-refusal-retry-AH7TXOQT.ts.map → agent-refusal-retry-C2HQROTP.ts.map} +1 -1
  8. package/dist/chunks/{agent-store-55CZOCPX.ts → agent-store-UT52DS7B.ts} +12 -11
  9. package/dist/chunks/{agent-store-55CZOCPX.ts.map → agent-store-UT52DS7B.ts.map} +1 -1
  10. package/dist/chunks/agent-sync-VM3TXWA3.ts +22 -0
  11. package/dist/chunks/{chunk-N5TFMPB5.ts → chunk-2VSN3MFX.ts} +71 -63
  12. package/dist/chunks/{chunk-N5TFMPB5.ts.map → chunk-2VSN3MFX.ts.map} +1 -1
  13. package/dist/chunks/{chunk-PG7NMFP2.ts → chunk-4RLATUP4.ts} +7 -7
  14. package/dist/chunks/chunk-5SFMBY5P.ts +26 -0
  15. package/dist/chunks/chunk-5SFMBY5P.ts.map +7 -0
  16. package/dist/chunks/chunk-5WJQ6XOW.ts +27 -0
  17. package/dist/chunks/chunk-5WJQ6XOW.ts.map +7 -0
  18. package/dist/chunks/{chunk-GNH73BJ5.ts → chunk-66GAUVDL.ts} +7 -7
  19. package/dist/chunks/{chunk-UPNVIUBN.ts → chunk-73MDIVYJ.ts} +3 -3
  20. package/dist/chunks/{chunk-CRKTAPSL.ts → chunk-AAPAHANE.ts} +24 -29
  21. package/dist/chunks/chunk-AAPAHANE.ts.map +7 -0
  22. package/dist/chunks/{chunk-S7QS4AWK.ts → chunk-AO6EDUA6.ts} +5 -5
  23. package/dist/chunks/chunk-AR2DGDUI.ts +55 -0
  24. package/dist/chunks/chunk-AR2DGDUI.ts.map +7 -0
  25. package/dist/chunks/{chunk-JCH3VXIO.ts → chunk-BJXSCGQK.ts} +9 -9
  26. package/dist/chunks/{chunk-IWZH5KYS.ts → chunk-CDQGSZL3.ts} +7 -7
  27. package/dist/chunks/chunk-DFJGTVPX.ts +319 -0
  28. package/dist/chunks/chunk-DFJGTVPX.ts.map +7 -0
  29. package/dist/chunks/chunk-DO55XUNU.ts +104 -0
  30. package/dist/chunks/chunk-DO55XUNU.ts.map +7 -0
  31. package/dist/chunks/{chunk-ED3TYIVW.ts → chunk-DOJRPBQU.ts} +5 -5
  32. package/dist/chunks/{chunk-5QAE3G3K.ts → chunk-IMMMZUFC.ts} +6 -6
  33. package/dist/chunks/{chunk-B4QZBDBT.ts → chunk-JXWTEJS5.ts} +3 -3
  34. package/dist/chunks/{chunk-BDB4IDM3.ts → chunk-JY2RVOUL.ts} +8 -6
  35. package/dist/chunks/{chunk-BDB4IDM3.ts.map → chunk-JY2RVOUL.ts.map} +1 -1
  36. package/dist/chunks/{chunk-5XZOC7FD.ts → chunk-KHBPED6W.ts} +4 -1
  37. package/dist/chunks/chunk-KHBPED6W.ts.map +7 -0
  38. package/dist/chunks/{chunk-P7DD5PWZ.ts → chunk-M5IV3KL2.ts} +3 -3
  39. package/dist/chunks/{chunk-AAEEHR7H.ts → chunk-MDUORMCK.ts} +2 -2
  40. package/dist/chunks/{chunk-UBV24CG4.ts → chunk-MRIPZGPR.ts} +3 -3
  41. package/dist/chunks/{chunk-WD6FJHCK.ts → chunk-ODF2M4RF.ts} +5 -5
  42. package/dist/chunks/chunk-PHANBTVM.ts +348 -0
  43. package/dist/chunks/chunk-PHANBTVM.ts.map +7 -0
  44. package/dist/chunks/{chunk-GP5DU62N.ts → chunk-PWA3YN5Z.ts} +2 -2
  45. package/dist/chunks/{chunk-YK52VDXG.ts → chunk-QWV3XKNJ.ts} +10 -8
  46. package/dist/chunks/{chunk-YK52VDXG.ts.map → chunk-QWV3XKNJ.ts.map} +1 -1
  47. package/dist/chunks/{chunk-ORGBI36T.ts → chunk-RAMHGOX2.ts} +4 -4
  48. package/dist/chunks/{chunk-QO333NM4.ts → chunk-RX3WGWVL.ts} +5 -5
  49. package/dist/chunks/chunk-RX3WGWVL.ts.map +7 -0
  50. package/dist/chunks/{chunk-PQW6GS4J.ts → chunk-STVQQ5KG.ts} +12 -10
  51. package/dist/chunks/{chunk-PQW6GS4J.ts.map → chunk-STVQQ5KG.ts.map} +1 -1
  52. package/dist/chunks/{chunk-76NB4R7U.ts → chunk-TO2GMX3K.ts} +2 -2
  53. package/dist/chunks/{chunk-GSNPASKB.ts → chunk-U77DWNRH.ts} +6 -6
  54. package/dist/chunks/{chunk-U3XRI2HF.ts → chunk-UCD7TQDT.ts} +11 -11
  55. package/dist/chunks/{chunk-A6HU4ERM.ts → chunk-UGSSZWQ6.ts} +6 -23
  56. package/dist/chunks/chunk-UGSSZWQ6.ts.map +7 -0
  57. package/dist/chunks/chunk-X7R6DCVF.ts +28 -0
  58. package/dist/chunks/chunk-X7R6DCVF.ts.map +7 -0
  59. package/dist/chunks/{chunk-HUZ5CR4W.ts → chunk-YZ5BQNRZ.ts} +2 -51
  60. package/dist/chunks/{chunk-HUZ5CR4W.ts.map → chunk-YZ5BQNRZ.ts.map} +4 -4
  61. package/dist/chunks/{chunk-UOHR7LRO.ts → chunk-Z5O2TLNF.ts} +9 -21
  62. package/dist/chunks/chunk-Z5O2TLNF.ts.map +7 -0
  63. package/dist/chunks/command-handler-FO6F2APH.ts +543 -0
  64. package/dist/chunks/command-handler-FO6F2APH.ts.map +7 -0
  65. package/dist/chunks/{config-KGIYTTXQ.ts → config-B37W7FXW.ts} +5 -6
  66. package/dist/chunks/{conflict-artifacts-FXFIIBCB.ts → conflict-artifacts-6XGSSU5S.ts} +13 -9
  67. package/dist/chunks/{conflict-review-UC5AGVER.ts → conflict-review-BQSHSJB3.ts} +32 -26
  68. package/dist/chunks/{conflict-review-UC5AGVER.ts.map → conflict-review-BQSHSJB3.ts.map} +1 -1
  69. package/dist/chunks/{continuous-record-SQJ47CXN.ts → continuous-record-4DQ2EAZS.ts} +8 -7
  70. package/dist/chunks/{continuous-sync-POEQXR25.ts → continuous-sync-ZT3UEQLK.ts} +33 -28
  71. package/dist/chunks/{continuous-sync-POEQXR25.ts.map → continuous-sync-ZT3UEQLK.ts.map} +1 -1
  72. package/dist/chunks/{file-selection-3JJYOVNR.ts → file-selection-FBLKM25V.ts} +12 -10
  73. package/dist/chunks/{file-selection-3JJYOVNR.ts.map → file-selection-FBLKM25V.ts.map} +1 -1
  74. package/dist/chunks/{git-backend-NYKSG5X6.ts → git-backend-7PCWECRN.ts} +16 -12
  75. package/dist/chunks/{git-backend-NYKSG5X6.ts.map → git-backend-7PCWECRN.ts.map} +1 -1
  76. package/dist/chunks/{local-fields-6DGYOOIK.ts → local-fields-B6JWLPAE.ts} +10 -5
  77. package/dist/chunks/manager-result-dispatcher-NODX3KKH.ts +28 -0
  78. package/dist/chunks/{manager-ui-26LEINEX.ts → manager-ui-DGRTG76I.ts} +47 -41
  79. package/dist/chunks/{manager-ui-26LEINEX.ts.map → manager-ui-DGRTG76I.ts.map} +1 -1
  80. package/dist/chunks/{merge-baseline-store-RFCAH7KL.ts → merge-baseline-store-HL3VLMAM.ts} +6 -5
  81. package/dist/chunks/{remote-selection-ui-YFPGYGNE.ts → remote-selection-ui-OHMIQ32X.ts} +14 -10
  82. package/dist/chunks/{s3-backend-F7PR5FB3.ts → s3-backend-CJXBEWWU.ts} +21 -17
  83. package/dist/chunks/{s3-backend-F7PR5FB3.ts.map → s3-backend-CJXBEWWU.ts.map} +1 -1
  84. package/dist/chunks/{setup-switch-E7PHKI6J.ts → setup-switch-66GWMBNH.ts} +6 -7
  85. package/dist/chunks/{setup-wizard-OVHZYXNW.ts → setup-wizard-OHZXJVQZ.ts} +8 -9
  86. package/dist/chunks/{setup-wizard-OVHZYXNW.ts.map → setup-wizard-OHZXJVQZ.ts.map} +1 -1
  87. package/dist/chunks/{snapshot-THS5EY2L.ts → snapshot-VRHNAUUH.ts} +11 -6
  88. package/dist/chunks/snapshot-transaction-EUGA4VX6.ts +24 -0
  89. package/dist/chunks/sync-inspection-4WFQEJOE.ts +25 -0
  90. package/dist/chunks/sync-inspection-4WFQEJOE.ts.map +7 -0
  91. package/dist/chunks/{sync-operations-ZHA6HQDB.ts → sync-operations-X4AOXMBT.ts} +66 -57
  92. package/dist/chunks/{sync-operations-ZHA6HQDB.ts.map → sync-operations-X4AOXMBT.ts.map} +1 -1
  93. package/dist/chunks/{sync-state-CFL4RRRB.ts → sync-state-SWLSMK4G.ts} +9 -5
  94. package/dist/chunks/sync-state-SWLSMK4G.ts.map +7 -0
  95. package/dist/chunks/{webdav-backend-TGFUH3SF.ts → webdav-backend-2Q5ZEBST.ts} +16 -12
  96. package/dist/chunks/{webdav-backend-TGFUH3SF.ts.map → webdav-backend-2Q5ZEBST.ts.map} +1 -1
  97. package/dist/index.ts +54 -537
  98. package/dist/index.ts.map +3 -3
  99. package/package.json +5 -4
  100. package/src/settings/config.ts +1 -1
  101. package/src/settings/settings-validation.ts +1 -1
  102. package/src/snapshot/snapshot-transaction-directory.ts +16 -0
  103. package/src/snapshot/snapshot-transaction.ts +1 -12
  104. package/src/sync/automatic-sync.ts +12 -6
  105. package/src/sync/local-field-policy.ts +29 -0
  106. package/src/sync/local-fields.ts +3 -29
  107. package/src/sync/mutation-owner.ts +22 -0
  108. package/src/sync/startup-check.ts +3 -2
  109. package/src/sync/sync-loaders.ts +4 -0
  110. package/src/sync/sync-local.ts +2 -19
  111. package/src/sync-extension.ts +7 -2
  112. package/src/ui/sync-confirmation.ts +3 -0
  113. package/dist/chunks/chunk-5XZOC7FD.ts.map +0 -7
  114. package/dist/chunks/chunk-A6HU4ERM.ts.map +0 -7
  115. package/dist/chunks/chunk-CRKTAPSL.ts.map +0 -7
  116. package/dist/chunks/chunk-QO333NM4.ts.map +0 -7
  117. package/dist/chunks/chunk-QOFMXPM5.ts +0 -735
  118. package/dist/chunks/chunk-QOFMXPM5.ts.map +0 -7
  119. package/dist/chunks/chunk-UOHR7LRO.ts.map +0 -7
  120. package/dist/chunks/manager-result-dispatcher-HOCM2GDA.ts +0 -24
  121. package/dist/chunks/sync-inspection-J25EEKZK.ts +0 -21
  122. /package/dist/chunks/{agent-candidate-GNEYR225.ts.map → agent-candidate-EYB35AGL.ts.map} +0 -0
  123. /package/dist/chunks/{config-KGIYTTXQ.ts.map → agent-sync-VM3TXWA3.ts.map} +0 -0
  124. /package/dist/chunks/{chunk-PG7NMFP2.ts.map → chunk-4RLATUP4.ts.map} +0 -0
  125. /package/dist/chunks/{chunk-GNH73BJ5.ts.map → chunk-66GAUVDL.ts.map} +0 -0
  126. /package/dist/chunks/{chunk-UPNVIUBN.ts.map → chunk-73MDIVYJ.ts.map} +0 -0
  127. /package/dist/chunks/{chunk-S7QS4AWK.ts.map → chunk-AO6EDUA6.ts.map} +0 -0
  128. /package/dist/chunks/{chunk-JCH3VXIO.ts.map → chunk-BJXSCGQK.ts.map} +0 -0
  129. /package/dist/chunks/{chunk-IWZH5KYS.ts.map → chunk-CDQGSZL3.ts.map} +0 -0
  130. /package/dist/chunks/{chunk-ED3TYIVW.ts.map → chunk-DOJRPBQU.ts.map} +0 -0
  131. /package/dist/chunks/{chunk-5QAE3G3K.ts.map → chunk-IMMMZUFC.ts.map} +0 -0
  132. /package/dist/chunks/{chunk-B4QZBDBT.ts.map → chunk-JXWTEJS5.ts.map} +0 -0
  133. /package/dist/chunks/{chunk-P7DD5PWZ.ts.map → chunk-M5IV3KL2.ts.map} +0 -0
  134. /package/dist/chunks/{chunk-AAEEHR7H.ts.map → chunk-MDUORMCK.ts.map} +0 -0
  135. /package/dist/chunks/{chunk-UBV24CG4.ts.map → chunk-MRIPZGPR.ts.map} +0 -0
  136. /package/dist/chunks/{chunk-WD6FJHCK.ts.map → chunk-ODF2M4RF.ts.map} +0 -0
  137. /package/dist/chunks/{chunk-GP5DU62N.ts.map → chunk-PWA3YN5Z.ts.map} +0 -0
  138. /package/dist/chunks/{chunk-ORGBI36T.ts.map → chunk-RAMHGOX2.ts.map} +0 -0
  139. /package/dist/chunks/{chunk-76NB4R7U.ts.map → chunk-TO2GMX3K.ts.map} +0 -0
  140. /package/dist/chunks/{chunk-GSNPASKB.ts.map → chunk-U77DWNRH.ts.map} +0 -0
  141. /package/dist/chunks/{chunk-U3XRI2HF.ts.map → chunk-UCD7TQDT.ts.map} +0 -0
  142. /package/dist/chunks/{conflict-artifacts-FXFIIBCB.ts.map → config-B37W7FXW.ts.map} +0 -0
  143. /package/dist/chunks/{continuous-record-SQJ47CXN.ts.map → conflict-artifacts-6XGSSU5S.ts.map} +0 -0
  144. /package/dist/chunks/{local-fields-6DGYOOIK.ts.map → continuous-record-4DQ2EAZS.ts.map} +0 -0
  145. /package/dist/chunks/{manager-result-dispatcher-HOCM2GDA.ts.map → local-fields-B6JWLPAE.ts.map} +0 -0
  146. /package/dist/chunks/{merge-baseline-store-RFCAH7KL.ts.map → manager-result-dispatcher-NODX3KKH.ts.map} +0 -0
  147. /package/dist/chunks/{remote-selection-ui-YFPGYGNE.ts.map → merge-baseline-store-HL3VLMAM.ts.map} +0 -0
  148. /package/dist/chunks/{setup-switch-E7PHKI6J.ts.map → remote-selection-ui-OHMIQ32X.ts.map} +0 -0
  149. /package/dist/chunks/{snapshot-THS5EY2L.ts.map → setup-switch-66GWMBNH.ts.map} +0 -0
  150. /package/dist/chunks/{sync-inspection-J25EEKZK.ts.map → snapshot-VRHNAUUH.ts.map} +0 -0
  151. /package/dist/chunks/{sync-state-CFL4RRRB.ts.map → snapshot-transaction-EUGA4VX6.ts.map} +0 -0
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/ui/file-selection.ts"],
4
4
  "sourcesContent": ["import fs from \"node:fs/promises\";\nimport type { ExtensionCommandContext } from \"@earendil-works/pi-coding-agent\";\nimport { defineMenu, runMenu } from \"@narumitw/pi-tui-kit\";\nimport { loadConfig } from \"../settings/config.js\";\nimport { localConfigPath } from \"../settings/config-file.js\";\nimport { updateSyncSetup } from \"../settings/settings-management.js\";\nimport { agentDir } from \"../snapshot/session-paths.js\";\nimport {\n BUILT_IN_SYNC_ROOTS,\n isSafeCustomIncludePath,\n normalizeSyncInclude,\n syncIncludeSelection,\n} from \"../sync/sync-policy.js\";\n\nconst BUILT_IN_PREFIX = \"builtin:\";\nconst CUSTOM_PREFIX = \"custom:\";\nconst SESSIONS_ID = \"sessions\";\nconst ADD_CUSTOM_ID = \"add-custom\";\n\ninterface SelectionDraft {\n builtIns: Set<string>;\n custom: Set<string>;\n sessions: boolean;\n}\n\nexport async function showFileSelection(ctx: ExtensionCommandContext, setupName?: string, signal?: AbortSignal) {\n const config = await loadConfig(setupName);\n if (signal?.aborted) return;\n const selection = syncIncludeSelection(config.include);\n const original: SelectionDraft = {\n builtIns: new Set(selection.builtIns),\n custom: new Set(selection.custom),\n sessions: selection.sessions,\n };\n const draft = cloneDraft(original);\n const customCandidates = await listCustomCandidates(draft.custom);\n\n if (ctx.mode !== \"tui\") {\n ctx.ui.notify(\n [\n `pi-sync included content for sync setup ${safeTerminalText(config.setupName)}:`,\n `include: ${config.include.map(safeTerminalText).join(\", \") || \"none\"}`,\n `Edit sync.include in ${safeTerminalText(localConfigPath())}.`,\n ].join(\"\\n\"),\n \"info\",\n );\n return;\n }\n\n while (!signal?.aborted) {\n await showDraftEditor(ctx, config.setupName, draft, customCandidates, signal);\n if (signal?.aborted || sameDraft(original, draft)) return;\n const choice = await showDraftReview(ctx, original, draft, signal);\n if (signal?.aborted) return;\n if (choice === \"Continue editing\") continue;\n if (choice !== \"Save changes\") {\n ctx.ui.notify(\"Included-content changes discarded.\", \"info\");\n return;\n }\n try {\n if (!original.sessions && draft.sessions) {\n const acknowledged = await ctx.ui.confirm(\n \"Include session conversations?\",\n \"Session JSONL may contain prompts, tool output, file paths, images, and secrets. Continue only with storage you trust.\",\n { signal },\n );\n if (signal?.aborted) return;\n if (!acknowledged) {\n ctx.ui.notify(\"Session inclusion was not saved.\", \"info\");\n return;\n }\n }\n const include = [\n ...BUILT_IN_SYNC_ROOTS.filter((candidate) => draft.builtIns.has(candidate)),\n ...draft.custom,\n ...(draft.sessions ? [\"sessions\"] : []),\n ];\n if (signal?.aborted) return;\n await updateSyncSetup(\n config.setupName,\n (setup) => ({\n ...setup,\n sync: { ...setup.sync, include },\n }),\n { expectedInclude: config.include, signal },\n );\n if (signal?.aborted) return;\n ctx.ui.notify(\n `Saved included content for sync setup \u201C${safeTerminalText(config.setupName)}\u201D. It applies to the next manual or automatic sync.`,\n \"info\",\n );\n } catch (error) {\n if (signal?.aborted) return;\n ctx.ui.notify(\n `Could not save pi-sync file selection: ${safeTerminalText(error instanceof Error ? error.message : String(error))}`,\n \"error\",\n );\n }\n return;\n }\n}\n\nasync function showDraftEditor(\n ctx: ExtensionCommandContext,\n setupName: string,\n draft: SelectionDraft,\n customCandidates: string[],\n signal?: AbortSignal,\n) {\n const menu = defineMenu<undefined, \"editor\", \"toggle\" | \"addCustom\", ExtensionCommandContext>({\n start: \"editor\",\n screens: {\n editor: () => ({\n kind: \"multiSelect\",\n title: `Included Content \u00B7 ${safeTerminalText(setupName)}`,\n lines: [\"Draft only \u00B7 leaving this screen opens Save, Discard, or Continue editing.\"],\n viewportSize: 12,\n items: [\n ...BUILT_IN_SYNC_ROOTS.map((relativePath) => ({\n id: `${BUILT_IN_PREFIX}${relativePath}`,\n label: relativePath,\n description: relativePath.includes(\".\")\n ? `Sync the top-level ${relativePath} file when present.`\n : `Recursively sync every safe file under ${relativePath}/.`,\n selected: draft.builtIns.has(relativePath),\n })),\n ...customCandidates.map((relativePath) => ({\n id: `${CUSTOM_PREFIX}${relativePath}`,\n label: safeTerminalText(relativePath),\n description: \"Additional safe agent-relative file or directory.\",\n selected: draft.custom.has(relativePath),\n })),\n {\n id: SESSIONS_ID,\n label: \"sessions\",\n description:\n \"Session JSONL may contain prompts, tool output, paths, images, and secrets. Sync only to storage you trust.\",\n selected: draft.sessions,\n },\n ],\n action: \"toggle\",\n actions: [\n {\n id: ADD_CUSTOM_ID,\n label: \"Add custom path\u2026\",\n description: \"Include an agent-relative file or directory even when it exists only remotely.\",\n action: \"addCustom\",\n },\n ],\n hint: \"close\",\n doneLabel: \"Review changes\",\n }),\n },\n actions: {\n toggle: async ({ itemId, selected }) => {\n updateDraft(draft, itemId, selected === true);\n return { kind: \"stay\" };\n },\n addCustom: async ({ ctx: actionCtx, signal: actionSignal }) => {\n const entered = await actionCtx.ui.input(\n \"Add included content\",\n \"Agent-relative path, for example custom.toml or snippets\",\n { signal: actionSignal },\n );\n if (actionSignal.aborted) return { kind: \"stay\" };\n const requested = entered?.trim();\n if (!requested) return { kind: \"stay\" };\n const existing = customCandidates.find((candidate) => candidate.toLowerCase() === requested.toLowerCase());\n const relativePath = existing ?? requested;\n if (draft.custom.has(relativePath)) return { kind: \"stay\" };\n try {\n if (!isSafeCustomIncludePath(relativePath)) {\n throw new Error(\"Enter a safe agent-relative file or directory path.\");\n }\n normalizeSyncInclude([\n ...draft.builtIns,\n ...draft.custom,\n ...(draft.sessions ? [\"sessions\"] : []),\n relativePath,\n ]);\n } catch (error) {\n if (actionSignal.aborted) return { kind: \"stay\" };\n actionCtx.ui.notify(\n `Could not add included content: ${safeTerminalText(error instanceof Error ? error.message : String(error))}`,\n \"error\",\n );\n return { kind: \"stay\" };\n }\n if (!existing) {\n customCandidates.push(relativePath);\n customCandidates.sort((left, right) => left.localeCompare(right));\n }\n draft.custom.add(relativePath);\n return { kind: \"stay\" };\n },\n },\n });\n await runMenu(ctx, menu, {\n getState: () => undefined,\n signal,\n isCurrent: () => !signal?.aborted,\n });\n}\n\nasync function showDraftReview(\n ctx: ExtensionCommandContext,\n original: SelectionDraft,\n draft: SelectionDraft,\n signal?: AbortSignal,\n) {\n let choice: \"Save changes\" | \"Discard changes\" | \"Continue editing\" | undefined;\n const menu = defineMenu<undefined, \"review\", \"choose\", ExtensionCommandContext>({\n start: \"review\",\n screens: {\n review: () => ({\n kind: \"actions\",\n title: \"Review included-content changes\",\n lines: formatDraftPreview(original, draft).split(\"\\n\").slice(2),\n items: [\n { id: \"save\", label: \"Save changes\", action: \"choose\" },\n { id: \"discard\", label: \"Discard changes\", action: \"choose\" },\n { id: \"continue\", label: \"Continue editing\", action: \"choose\" },\n ],\n hint: \"close\",\n }),\n },\n actions: {\n choose: async ({ itemId }) => {\n choice = itemId === \"save\" ? \"Save changes\" : itemId === \"continue\" ? \"Continue editing\" : \"Discard changes\";\n return { kind: \"close\" };\n },\n },\n });\n await runMenu(ctx, menu, {\n getState: () => undefined,\n signal,\n isCurrent: () => !signal?.aborted,\n });\n return choice;\n}\n\nfunction updateDraft(draft: SelectionDraft, id: string, included: boolean) {\n if (id.startsWith(BUILT_IN_PREFIX)) return updateSet(draft.builtIns, id.slice(BUILT_IN_PREFIX.length), included);\n if (id.startsWith(CUSTOM_PREFIX)) return updateSet(draft.custom, id.slice(CUSTOM_PREFIX.length), included);\n if (id === SESSIONS_ID) {\n draft.sessions = included;\n return;\n }\n throw new Error(`Unknown file selection: ${id}`);\n}\n\nfunction updateSet(set: Set<string>, value: string, included: boolean) {\n if (included) set.add(value);\n else set.delete(value);\n}\n\nfunction formatDraftPreview(original: SelectionDraft, draft: SelectionDraft) {\n const lines = [\"Review included-content changes\", \"\"];\n for (const item of new Set([...original.builtIns, ...draft.builtIns, ...original.custom, ...draft.custom])) {\n const before = original.builtIns.has(item) || original.custom.has(item);\n const after = draft.builtIns.has(item) || draft.custom.has(item);\n if (before !== after) lines.push(`${after ? \"Include\" : \"Exclude\"}: ${safeTerminalText(item)}`);\n }\n if (original.sessions !== draft.sessions) lines.push(`${draft.sessions ? \"Include\" : \"Exclude\"}: sessions`);\n lines.push(\"\", \"Saving does not start a network sync.\");\n return lines.join(\"\\n\");\n}\n\nasync function listCustomCandidates(configured: Set<string>) {\n const candidates = new Map([...configured].map((item) => [item.toLowerCase(), item]));\n try {\n for (const entry of await fs.readdir(agentDir(), { withFileTypes: true })) {\n if ((!entry.isFile() && !entry.isDirectory()) || !isSafeCustomIncludePath(entry.name)) continue;\n if (!candidates.has(entry.name.toLowerCase())) candidates.set(entry.name.toLowerCase(), entry.name);\n }\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;\n }\n return [...candidates.values()].sort((left, right) => left.localeCompare(right));\n}\n\nfunction cloneDraft(value: SelectionDraft): SelectionDraft {\n return {\n builtIns: new Set(value.builtIns),\n custom: new Set(value.custom),\n sessions: value.sessions,\n };\n}\n\nfunction sameDraft(left: SelectionDraft, right: SelectionDraft) {\n return (\n left.sessions === right.sessions && sameSet(left.builtIns, right.builtIns) && sameSet(left.custom, right.custom)\n );\n}\n\nfunction sameSet(left: Set<string>, right: Set<string>) {\n return left.size === right.size && [...left].every((item) => right.has(item));\n}\n\nfunction safeTerminalText(value: string) {\n // biome-ignore lint/suspicious/noControlCharactersInRegex: Escape untrusted terminal controls.\n return value.replace(/[\\u0000-\\u001f\\u007f-\\u009f]/gu, \"?\");\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -3,23 +3,16 @@
3
3
  import {
4
4
  syncErrorGuidance
5
5
  } from "./chunk-G4RUXRWZ.ts";
6
- import "./chunk-7D5SF7P3.ts";
7
6
  import {
8
7
  sameLocalFields,
9
8
  validatePortableSnapshot,
10
9
  validateSnapshotFieldPolicy
11
- } from "./chunk-A6HU4ERM.ts";
12
- import {
13
- SyncBackendConflictError,
14
- SyncBackendPublicationOutcomeUnknownError
15
- } from "./chunk-YDVQYUHE.ts";
10
+ } from "./chunk-UGSSZWQ6.ts";
11
+ import "./chunk-7D5SF7P3.ts";
12
+ import "./chunk-X7R6DCVF.ts";
16
13
  import {
17
14
  throwIfAborted
18
15
  } from "./chunk-PWMWOJP4.ts";
19
- import {
20
- portableSnapshotSelection,
21
- snapshotSelectionInclude
22
- } from "./chunk-QOFMXPM5.ts";
23
16
  import "./chunk-ZW5ZLGBI.ts";
24
17
  import {
25
18
  stateDir
@@ -31,9 +24,20 @@ import {
31
24
  normalizeGitRemoteIdentity,
32
25
  validateGitNamespace
33
26
  } from "./chunk-T2SJD3N7.ts";
27
+ import "./chunk-PHANBTVM.ts";
28
+ import {
29
+ portableSnapshotSelection,
30
+ snapshotSelectionInclude
31
+ } from "./chunk-DFJGTVPX.ts";
32
+ import "./chunk-DO55XUNU.ts";
33
+ import "./chunk-AR2DGDUI.ts";
34
34
  import {
35
35
  posixJoin
36
- } from "./chunk-HUZ5CR4W.ts";
36
+ } from "./chunk-YZ5BQNRZ.ts";
37
+ import {
38
+ SyncBackendConflictError,
39
+ SyncBackendPublicationOutcomeUnknownError
40
+ } from "./chunk-YDVQYUHE.ts";
37
41
 
38
42
  // src/backends/git/git-backend.ts
39
43
  import { createHash as createHash2, randomUUID } from "node:crypto";
@@ -1071,4 +1075,4 @@ export {
1071
1075
  gitBackendIdentity,
1072
1076
  isSupportedGitVersion
1073
1077
  };
1074
- //# sourceMappingURL=git-backend-NYKSG5X6.ts.map
1078
+ //# sourceMappingURL=git-backend-7PCWECRN.ts.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/backends/git/git-backend.ts", "../../src/backends/git/git-runner.ts", "../../src/backends/git/git-storage.ts"],
4
4
  "sourcesContent": ["import { createHash, randomUUID } from \"node:crypto\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { posixJoin } from \"../../paths.js\";\nimport type { Snapshot, SnapshotFile } from \"../../snapshot/snapshot-types.js\";\nimport { stateDir } from \"../../state/state-directory.js\";\nimport { throwIfAborted } from \"../../sync/signals.js\";\nimport { syncErrorGuidance } from \"../../sync/sync-error-guidance.js\";\nimport type { ResolvedGitBackend } from \"../backend-types.js\";\nimport {\n type BackendDiagnostic,\n type ExpectedRemoteHead,\n type PublishSnapshotOptions,\n type PublishSnapshotResult,\n type RemoteHead,\n type RemoteHistoryEntry,\n type SyncBackend,\n SyncBackendConflictError,\n SyncBackendPublicationOutcomeUnknownError,\n} from \"../sync-backend.js\";\nimport {\n normalizeGitBranch,\n normalizeGitDirectory,\n normalizeGitRemote,\n normalizeGitRemoteIdentity,\n validateGitNamespace,\n} from \"./git-config.js\";\nimport { GitCommandError, readGitBlobs, runGit } from \"./git-runner.js\";\nimport {\n GIT_MANIFEST_VERSION,\n type GitManifest,\n MAX_GIT_MANIFEST_BYTES,\n MAX_GIT_TREE_OUTPUT_BYTES,\n type PreparedGitFile,\n parseGitTree,\n prepareGitSnapshot,\n requireGitManifest,\n validateGitPublicationTree,\n validateGitSnapshot,\n} from \"./git-storage.js\";\n\nconst COMMAND_TIMEOUT_MS = 30_000;\nconst POST_COMMIT_TIMEOUT_MS = 45_000;\nconst gitCacheMutationQueues = new Map<string, Promise<void>>();\n\nexport interface GitBackendOptions {\n cacheRoot?: string;\n allowLocalRemotes?: boolean;\n commandTimeoutMs?: number;\n postCommitTimeoutMs?: number;\n /** Deterministic fault injection used only by the local backend test suite. */\n afterPushForTest?: () => void | Promise<void>;\n afterLsRemoteForTest?: () => void | Promise<void>;\n afterPayloadWriteForTest?: () => void | Promise<void>;\n}\n\nexport class GitSyncBackend implements SyncBackend {\n readonly identity: string;\n readonly destination: string;\n readonly capability = \"lease-protected\" as const;\n private readonly cacheRoot: string;\n private readonly cacheDir: string;\n private readonly allowLocalRemotes: boolean;\n private readonly commandTimeoutMs: number;\n private readonly postCommitTimeoutMs: number;\n private readonly afterPushForTest?: () => void | Promise<void>;\n private readonly afterLsRemoteForTest?: () => void | Promise<void>;\n private readonly afterPayloadWriteForTest?: () => void | Promise<void>;\n private cacheReady?: Promise<void>;\n\n constructor(\n private readonly config: ResolvedGitBackend,\n options: GitBackendOptions = {},\n ) {\n assertGitDestination(config);\n this.allowLocalRemotes = options.allowLocalRemotes === true;\n if (!this.allowLocalRemotes) assertProductionRemote(config.profile.remote);\n this.identity = gitBackendIdentity(config);\n this.destination = gitDestination(config);\n this.cacheRoot = path.resolve(options.cacheRoot ?? path.join(stateDir(), \"git\"));\n this.cacheDir = path.join(this.cacheRoot, this.identity.slice(\"git:\".length), \"repository.git\");\n this.commandTimeoutMs = options.commandTimeoutMs ?? COMMAND_TIMEOUT_MS;\n this.postCommitTimeoutMs = options.postCommitTimeoutMs ?? POST_COMMIT_TIMEOUT_MS;\n this.afterPushForTest = options.afterPushForTest;\n this.afterLsRemoteForTest = options.afterLsRemoteForTest;\n this.afterPayloadWriteForTest = options.afterPayloadWriteForTest;\n }\n\n sameRevision(left: string, right: string) {\n return decodeRevision(left, this.identity) === decodeRevision(right, this.identity);\n }\n\n async readHead(signal?: AbortSignal): Promise<RemoteHead | undefined> {\n const sha = await this.fetchRemoteHead(signal);\n if (!sha) return undefined;\n const { manifest } = await this.readPublication(sha, signal);\n return remoteHead(sha, manifest, this.identity);\n }\n\n async readSnapshot(reference: string, signal?: AbortSignal): Promise<Snapshot> {\n const head = await this.fetchRemoteHead(signal);\n if (!head) throw new Error(`Git snapshot publication was not found: ${reference}`);\n const commit = await this.resolveSnapshotReference(reference, head, signal);\n try {\n await this.git([\"cat-file\", \"-e\", `${commit}^{commit}`], { signal });\n await this.git([\"merge-base\", \"--is-ancestor\", commit, head], { signal });\n } catch (error) {\n throw new Error(`Git snapshot publication was not found: ${reference}`, { cause: error });\n }\n const { manifest, payloadEntries } = await this.readPublication(commit, signal);\n let blobs: Buffer[];\n try {\n blobs = await readGitBlobs(\n payloadEntries.map((entry) => entry.object),\n {\n gitDir: this.cacheDir,\n signal,\n timeoutMs: this.commandTimeoutMs,\n allowFileProtocol: this.allowLocalRemotes,\n maxOutputBytes: manifest.files.reduce((total, file) => total + file.size, 0),\n },\n );\n } catch (error) {\n if (error instanceof Error && /exceeds/u.test(error.message)) {\n throw new Error(\"Git snapshot file content exceeds its manifest size.\", { cause: error });\n }\n throw this.redactedError(error);\n }\n throwIfAborted(signal);\n const files: SnapshotFile[] = manifest.files.map((file, index) => {\n const content = blobs[index];\n if (!content || content.byteLength !== file.size || sha256(content) !== file.sha256) {\n throw new Error(`Git snapshot file checksum or size mismatch: ${file.path}`);\n }\n return { path: file.path, contentBase64: content.toString(\"base64\"), sha256: file.sha256 };\n });\n const snapshot: Snapshot = {\n version: manifest.snapshotVersion,\n id: manifest.snapshotId,\n createdAt: manifest.createdAt,\n machine: manifest.machine,\n profile: manifest.profile,\n ...(manifest.snapshotSyncSessions === undefined ? {} : { syncSessions: manifest.snapshotSyncSessions }),\n ...(manifest.selection === undefined ? {} : { selection: manifest.selection }),\n ...(manifest.localFields === undefined ? {} : { localFields: manifest.localFields }),\n files,\n };\n validateGitSnapshot(snapshot, manifest, this.config.destination.namespace);\n return snapshot;\n }\n\n async publishSnapshot(\n snapshot: Snapshot,\n expected: ExpectedRemoteHead,\n options: PublishSnapshotOptions = {},\n ): Promise<PublishSnapshotResult> {\n throwIfAborted(options.signal);\n const files = prepareGitSnapshot(snapshot, this.config.destination.namespace);\n const observed = await this.fetchRemoteHead(options.signal);\n if (!matchesExpected(observed, expected, this.identity)) {\n throw new SyncBackendConflictError(\n \"Git remote changed while preparing publication. Run /sync status and retry.\",\n { currentHead: observed ? await this.headForSha(observed, options.signal) : undefined },\n );\n }\n throwIfAborted(options.signal);\n const manifest: GitManifest = {\n version: GIT_MANIFEST_VERSION,\n snapshotVersion: snapshot.version,\n snapshotId: snapshot.id,\n createdAt: snapshot.createdAt,\n machine: snapshot.machine,\n profile: snapshot.profile,\n syncSessions: snapshot.syncSessions === true || snapshot.files.some((file) => file.path.startsWith(\"sessions/\")),\n ...(snapshot.syncSessions === undefined ? {} : { snapshotSyncSessions: snapshot.syncSessions }),\n ...(snapshot.selection === undefined ? {} : { selection: snapshot.selection }),\n ...(snapshot.localFields === undefined ? {} : { localFields: snapshot.localFields }),\n files: files.map(({ path: filePath, sha256: fileSha, size }) => ({\n path: filePath,\n sha256: fileSha,\n size,\n })),\n };\n let candidate: string;\n try {\n candidate = await this.createCommit(snapshot, files, manifest, observed, options.signal);\n } catch (error) {\n throw this.redactedError(error);\n }\n throwIfAborted(options.signal);\n options.onCommit?.();\n\n const ref = this.remoteRef();\n const lease = `--force-with-lease=${ref}:${observed ?? \"\"}`;\n let pushError: unknown;\n try {\n await this.git([\"push\", \"--porcelain\", \"--no-verify\", lease, this.config.profile.remote, `${candidate}:${ref}`], {\n timeoutMs: this.postCommitTimeoutMs,\n });\n await this.afterPushForTest?.();\n } catch (error) {\n pushError = error;\n }\n\n let current: string | undefined;\n try {\n current = await this.fetchRemoteHead(AbortSignal.timeout(this.postCommitTimeoutMs));\n } catch (error) {\n throw new SyncBackendPublicationOutcomeUnknownError(\n `Git publication outcome is unknown: ${this.safeError(pushError ?? error)}`,\n { cause: pushError ?? error },\n );\n }\n if (current !== candidate) {\n if (pushError && current === observed) {\n throw new Error(`Git publication failed without updating the owned branch: ${this.safeError(pushError)}`, {\n cause: pushError,\n });\n }\n throw new SyncBackendConflictError(\n pushError\n ? `Git publication lease was rejected: ${this.safeError(pushError)}`\n : \"Git remote changed immediately after publication.\",\n {\n phase: \"after-commit\",\n currentHead: current ? await this.headForSha(current) : undefined,\n candidateMayHaveBeenActive: true,\n cause: pushError instanceof Error ? pushError : undefined,\n },\n );\n }\n const head = await this.headForSha(candidate);\n return { head, warnings: [] };\n }\n\n async listHistory(signal?: AbortSignal): Promise<RemoteHistoryEntry[]> {\n const sha = await this.fetchRemoteHead(signal);\n if (!sha) return [];\n const result = await this.git([\"rev-list\", \"--first-parent\", \"--reverse\", \"--max-count=100\", sha], { signal });\n const commits = result.stdout.toString(\"utf8\").trim().split(\"\\n\").filter(Boolean);\n const entries: RemoteHistoryEntry[] = [];\n for (const commit of commits) {\n const { manifest } = await this.readPublication(commit, signal);\n entries.push({\n snapshotRef: commit,\n snapshotId: manifest.snapshotId,\n createdAt: manifest.createdAt,\n machine: manifest.machine,\n syncSessions: manifest.syncSessions,\n });\n }\n return entries;\n }\n\n async diagnose(signal?: AbortSignal): Promise<BackendDiagnostic[]> {\n const diagnostics: BackendDiagnostic[] = [\n {\n key: \"git-scope\",\n level: \"info\",\n message: \"git check scope: read remote snapshots and inspect the local cache. Write access is not tested.\",\n },\n ];\n try {\n const version = await runGit([\"--version\"], {\n signal,\n timeoutMs: this.commandTimeoutMs,\n });\n const versionText = version.stdout.toString(\"utf8\").trim();\n const supported = isSupportedGitVersion(versionText);\n diagnostics.push({\n key: \"git-version\",\n level: supported ? \"info\" : \"error\",\n message: supported\n ? versionText\n : `${versionText || \"unknown Git version\"}; pi-sync requires Git 2.30 or newer`,\n });\n } catch (error) {\n return [\n {\n key: \"git-version\",\n level: \"error\",\n message: syncErrorGuidance(new Error(this.safeError(error))),\n },\n ];\n }\n try {\n const head = await this.readHead(signal);\n if (head) await this.readSnapshot(head.snapshotRef, signal);\n diagnostics.push({\n key: \"git-remote\",\n level: \"info\",\n message: head\n ? `git remote: reachable; owned branch ${this.config.destination.branch} is valid`\n : `git remote: reachable; owned branch ${this.config.destination.branch} is not created yet`,\n });\n diagnostics.push({\n key: \"git-cache\",\n level: \"info\",\n message: \"git cache: private bare repository is healthy\",\n });\n } catch (error) {\n diagnostics.push({\n key: \"git-remote\",\n level: \"error\",\n message: `git remote: ${syncErrorGuidance(new Error(this.safeError(error)))}`,\n });\n }\n return diagnostics;\n }\n\n private async resolveSnapshotReference(reference: string, head: string, signal?: AbortSignal) {\n if (isCommitSha(reference) || /^[0-9a-f]{64}$/u.test(reference)) {\n requireCommitSha(reference);\n return reference;\n }\n if (!reference || reference.length > 512 || !/^[A-Za-z0-9._-]+$/u.test(reference)) {\n throw new Error(\"Invalid Git publication reference.\");\n }\n const result = await this.git([\"rev-list\", \"--first-parent\", \"--max-count=100\", head], {\n signal,\n });\n const commits = result.stdout.toString(\"utf8\").trim().split(\"\\n\").filter(Boolean);\n const matches: string[] = [];\n for (const commit of commits) {\n const { manifest } = await this.readPublication(commit, signal);\n if (manifest.snapshotId === reference) matches.push(commit);\n }\n if (matches.length === 0) {\n throw new Error(`Git snapshot publication was not found: ${reference}`);\n }\n if (matches.length > 1) {\n throw new Error(`Git snapshot id is ambiguous; use a commit reference from /sync history: ${reference}`);\n }\n return matches[0] as string;\n }\n\n private async headForSha(sha: string, signal?: AbortSignal) {\n const { manifest } = await this.readPublication(sha, signal);\n return remoteHead(sha, manifest, this.identity);\n }\n\n private async fetchRemoteHead(signal?: AbortSignal) {\n await this.ensureCache(signal);\n const result = await this.git([\"ls-remote\", \"--refs\", this.config.profile.remote, this.remoteRef()], { signal });\n const line = result.stdout.toString(\"utf8\").trim();\n if (!line) return undefined;\n const [sha, ref, ...extra] = line.split(/\\s+/u);\n if (extra.length > 0 || ref !== this.remoteRef() || !sha) {\n throw new Error(\"Git remote returned a malformed owned-ref response.\");\n }\n requireCommitSha(sha);\n await this.afterLsRemoteForTest?.();\n return withGitCacheMutation(\n this.cacheDir,\n async () => {\n const localRef = `refs/pisync/fetch/${process.pid}-${randomUUID()}`;\n try {\n await this.git(\n [\"fetch\", \"--no-tags\", \"--force\", this.config.profile.remote, `${this.remoteRef()}:${localRef}`],\n { signal },\n );\n const fetched = (await this.git([\"rev-parse\", \"--verify\", localRef], { signal })).stdout\n .toString(\"utf8\")\n .trim();\n requireCommitSha(fetched);\n return fetched;\n } finally {\n await this.git([\"update-ref\", \"-d\", localRef], { timeoutMs: 5_000 }).catch(() => undefined);\n }\n },\n signal,\n );\n }\n\n private async readManifest(commit: string, signal?: AbortSignal): Promise<GitManifest> {\n requireCommitSha(commit);\n const bytes = await this.showFile(commit, this.manifestPath(), signal, MAX_GIT_MANIFEST_BYTES);\n let parsed: unknown;\n try {\n parsed = JSON.parse(bytes.toString(\"utf8\"));\n } catch (error) {\n throw new Error(\"Git publication manifest is malformed.\", { cause: error });\n }\n return requireGitManifest(parsed);\n }\n\n private showFile(commit: string, filePath: string, signal?: AbortSignal, maxOutputBytes?: number) {\n return this.git([\"show\", `${commit}:${filePath}`], { signal, maxOutputBytes }).then((result) => result.stdout);\n }\n\n private async createCommit(\n snapshot: Snapshot,\n files: PreparedGitFile[],\n manifest: GitManifest,\n parent: string | undefined,\n signal?: AbortSignal,\n ) {\n const manifestBytes = Buffer.from(`${JSON.stringify(manifest)}\\n`, \"utf8\");\n if (manifestBytes.byteLength > MAX_GIT_MANIFEST_BYTES) {\n throw new Error(`Git publication manifest exceeds the ${MAX_GIT_MANIFEST_BYTES}-byte limit.`);\n }\n await this.ensureCache(signal);\n const temporaryDirectory = await fs.mkdtemp(path.join(path.dirname(this.cacheDir), \".index-\"));\n const indexPath = path.join(temporaryDirectory, \"index\");\n const payloadDirectory = path.join(temporaryDirectory, \"payloads\");\n const env = { GIT_INDEX_FILE: indexPath };\n try {\n await fs.mkdir(payloadDirectory, { mode: 0o700 });\n const uniqueFiles = [...new Map(files.map((file) => [file.sha256, file])).values()].sort((left, right) =>\n left.sha256.localeCompare(right.sha256),\n );\n for (const file of uniqueFiles) {\n throwIfAborted(signal);\n await fs.writeFile(path.join(payloadDirectory, file.sha256), file.content, {\n flag: \"wx\",\n mode: 0o600,\n });\n }\n await this.afterPayloadWriteForTest?.();\n throwIfAborted(signal);\n const hashed = await this.git([\"hash-object\", \"-w\", \"--no-filters\", \"--stdin-paths\"], {\n cwd: payloadDirectory,\n input: uniqueFiles.map((file) => file.sha256).join(\"\\n\") + (uniqueFiles.length ? \"\\n\" : \"\"),\n signal,\n maxOutputBytes: Math.max(1024, uniqueFiles.length * 64),\n });\n const objectIds = hashed.stdout.toString(\"utf8\").trim().split(\"\\n\").filter(Boolean);\n if (objectIds.length !== uniqueFiles.length || objectIds.some((id) => !isCommitSha(id))) {\n throw new Error(\"Git hash-object returned a malformed payload response.\");\n }\n const objectsBySha256 = new Map(uniqueFiles.map((file, index) => [file.sha256, objectIds[index] as string]));\n const manifestBlob = (await this.git([\"hash-object\", \"-w\", \"--stdin\"], { input: manifestBytes, signal })).stdout\n .toString(\"utf8\")\n .trim();\n if (!isCommitSha(manifestBlob)) throw new Error(\"Git returned an invalid manifest blob id.\");\n await this.git([\"read-tree\", \"--empty\"], { env, signal });\n const indexLines = [\n `100644 ${manifestBlob}\\t${this.manifestPath()}`,\n ...files.map((file) => {\n const object = objectsBySha256.get(file.sha256);\n if (!object) throw new Error(\"Git payload object is missing after hashing.\");\n return `100644 ${object}\\t${this.filePath(file.path)}`;\n }),\n ];\n await this.git([\"update-index\", \"-z\", \"--index-info\"], {\n env,\n signal,\n input: Buffer.from(`${indexLines.join(\"\\0\")}\\0`, \"utf8\"),\n });\n const tree = (await this.git([\"write-tree\"], { env, signal })).stdout.toString(\"utf8\").trim();\n const date = Number.isNaN(Date.parse(snapshot.createdAt)) ? new Date().toISOString() : snapshot.createdAt;\n const commit = await this.git([\"commit-tree\", tree, ...(parent ? [\"-p\", parent] : []), \"-F\", \"-\"], {\n signal,\n input: `pi-sync snapshot ${snapshot.id}\\n`,\n env: {\n GIT_AUTHOR_NAME: \"pi-sync\",\n GIT_AUTHOR_EMAIL: \"pi-sync@localhost\",\n GIT_COMMITTER_NAME: \"pi-sync\",\n GIT_COMMITTER_EMAIL: \"pi-sync@localhost\",\n GIT_AUTHOR_DATE: date,\n GIT_COMMITTER_DATE: date,\n },\n });\n const sha = commit.stdout.toString(\"utf8\").trim();\n requireCommitSha(sha);\n return sha;\n } finally {\n await fs.rm(temporaryDirectory, { recursive: true, force: true });\n }\n }\n\n private ensureCache(signal?: AbortSignal) {\n if (!this.cacheReady) {\n const operation = withGitCacheMutation(this.cacheDir, () => this.initializeCache(signal), signal);\n const wrapped = operation.catch((error) => {\n if (this.cacheReady === wrapped) this.cacheReady = undefined;\n throw this.redactedError(error);\n });\n this.cacheReady = wrapped;\n }\n return this.cacheReady;\n }\n\n private async initializeCache(signal?: AbortSignal) {\n const version = await runGit([\"--version\"], {\n signal,\n timeoutMs: this.commandTimeoutMs,\n });\n const versionText = version.stdout.toString(\"utf8\").trim();\n if (!isSupportedGitVersion(versionText)) {\n throw new Error(`${versionText || \"Unknown Git version\"}; pi-sync requires Git 2.30 or newer.`);\n }\n const parent = path.dirname(this.cacheDir);\n const cacheParent = path.dirname(this.cacheRoot);\n await assertNotSymlink(cacheParent, \"Git cache parent\");\n await assertNotSymlink(this.cacheRoot, \"Git cache root\");\n await fs.mkdir(this.cacheRoot, { recursive: true, mode: 0o700 });\n await assertNotSymlink(cacheParent, \"Git cache parent\");\n await assertNotSymlink(this.cacheRoot, \"Git cache root\");\n await assertNotSymlink(parent, \"Git cache identity directory\");\n await fs.mkdir(parent, { recursive: true, mode: 0o700 });\n await assertNotSymlink(parent, \"Git cache identity directory\");\n let recreate = false;\n try {\n const stat = await fs.lstat(this.cacheDir);\n if (stat.isSymbolicLink()) throw new Error(\"Refusing symlinked Git cache.\");\n if (!stat.isDirectory()) recreate = true;\n else {\n try {\n recreate = !(await this.cacheUsesSha1(signal));\n } catch {\n throwIfAborted(signal);\n recreate = true;\n }\n }\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;\n }\n throwIfAborted(signal);\n if (recreate) await fs.rm(this.cacheDir, { recursive: true, force: true });\n try {\n await fs.access(this.cacheDir);\n } catch {\n try {\n await runGit([\"init\", \"--bare\", \"--object-format=sha1\", this.cacheDir], {\n signal,\n timeoutMs: this.commandTimeoutMs,\n allowFileProtocol: this.allowLocalRemotes,\n });\n } catch (initError) {\n const concurrent = await this.cacheUsesSha1(signal).catch(() => false);\n if (!concurrent) throw initError;\n }\n }\n if (process.platform !== \"win32\") await fs.chmod(parent, 0o700);\n }\n\n private async cacheUsesSha1(signal?: AbortSignal) {\n const result = await this.git([\"rev-parse\", \"--is-bare-repository\", \"--show-object-format\"], {\n signal,\n });\n return result.stdout.toString(\"utf8\").trim() === \"true\\nsha1\";\n }\n\n private git(\n args: string[],\n options: {\n cwd?: string;\n input?: Buffer | string;\n env?: NodeJS.ProcessEnv;\n signal?: AbortSignal;\n timeoutMs?: number;\n maxOutputBytes?: number;\n } = {},\n ) {\n return runGit(args, {\n gitDir: this.cacheDir,\n allowFileProtocol: this.allowLocalRemotes,\n timeoutMs: options.timeoutMs ?? this.commandTimeoutMs,\n ...options,\n }).catch((error) => {\n throw this.redactedError(error);\n });\n }\n\n private remoteRef() {\n return `refs/heads/${this.config.destination.branch}`;\n }\n\n private publicationPath() {\n return this.config.destination.directory === \"./\" ? \"\" : this.config.destination.directory;\n }\n\n private manifestPath() {\n return posixJoin(this.publicationPath(), \"manifest.json\");\n }\n\n private filePath(filePath: string) {\n return posixJoin(this.publicationPath(), \"files\", filePath);\n }\n\n private async readPublication(commit: string, signal?: AbortSignal) {\n const manifest = await this.readManifest(commit, signal);\n const entries = await this.readPublicationTree(commit, signal);\n const payloadEntries = validateGitPublicationTree(entries, manifest, this.manifestPath(), (filePath) =>\n this.filePath(filePath),\n );\n return { manifest, payloadEntries };\n }\n\n private async readPublicationTree(commit: string, signal?: AbortSignal) {\n const result = await this.git([\"ls-tree\", \"-r\", \"-z\", commit], {\n signal,\n maxOutputBytes: MAX_GIT_TREE_OUTPUT_BYTES,\n });\n return parseGitTree(result.stdout);\n }\n\n private redactedError(error: unknown) {\n if (error instanceof Error && error.name === \"AbortError\") return error;\n return new Error(this.safeError(error));\n }\n\n private safeError(error: unknown) {\n const raw =\n error instanceof GitCommandError\n ? error.stderr || error.message\n : error instanceof Error\n ? error.message\n : String(error);\n return redactGitError(raw, this.config.profile.remote, this.cacheDir);\n }\n}\n\nexport function gitBackendIdentity(config: ResolvedGitBackend) {\n let remoteIdentity: string;\n try {\n remoteIdentity = normalizeGitRemoteIdentity(config.profile.remote);\n } catch {\n remoteIdentity = config.profile.remote;\n }\n const canonical = JSON.stringify([remoteIdentity, config.destination.branch, config.destination.directory]);\n return `git:${sha256(Buffer.from(canonical))}`;\n}\n\nfunction gitDestination(config: ResolvedGitBackend) {\n let host = \"Git remote\";\n const remote = config.profile.remote;\n if (remote.includes(\"://\")) {\n try {\n host = new URL(remote).host;\n } catch {\n host = \"Git remote\";\n }\n } else {\n const match = /^(?:[^@]+@)?(?<host>\\[[^\\]]+\\]|[^:]+):/u.exec(remote);\n if (match?.groups?.host) host = match.groups.host;\n }\n return `${host} \u00B7 ${config.destination.branch}:${config.destination.directory}`;\n}\n\nfunction remoteHead(sha: string, manifest: GitManifest, identity: string): RemoteHead {\n return {\n snapshotRef: sha,\n snapshotId: manifest.snapshotId,\n revision: `${identity}:${sha}`,\n createdAt: manifest.createdAt,\n machine: manifest.machine,\n syncSessions: manifest.syncSessions,\n ...(manifest.selection === undefined ? {} : { selection: manifest.selection }),\n };\n}\n\nfunction matchesExpected(current: string | undefined, expected: ExpectedRemoteHead, identity: string) {\n if (expected.kind === \"missing\") return current === undefined;\n try {\n return current === decodeRevision(expected.revision, identity);\n } catch {\n return false;\n }\n}\n\nfunction decodeRevision(revision: string, identity: string) {\n const prefix = `${identity}:`;\n const sha = revision.startsWith(prefix) ? revision.slice(prefix.length) : \"\";\n if (!/^[0-9a-f]{40}$/u.test(sha)) throw new Error(\"Invalid Git remote revision.\");\n return sha;\n}\n\nfunction isCommitSha(value: string) {\n return /^[0-9a-f]{40}$/u.test(value);\n}\n\nfunction requireCommitSha(value: string) {\n if (/^[0-9a-f]{64}$/u.test(value)) {\n throw new Error(\"Unsupported Git SHA-256 repository; pi-sync currently requires SHA-1 refs.\");\n }\n if (!/^[0-9a-f]{40}$/u.test(value)) throw new Error(\"Invalid Git publication reference.\");\n}\n\nexport function isSupportedGitVersion(value: string) {\n const match = /git version (\\d+)\\.(\\d+)/u.exec(value);\n if (!match) return false;\n const major = Number(match[1]);\n const minor = Number(match[2]);\n return major > 2 || (major === 2 && minor >= 30);\n}\n\nfunction assertGitDestination(config: ResolvedGitBackend) {\n try {\n if (\n normalizeGitBranch(config.destination.branch) !== config.destination.branch ||\n normalizeGitDirectory(config.destination.directory) !== config.destination.directory\n ) {\n throw new Error(\"Git storage location is not normalized.\");\n }\n validateGitNamespace(config.destination.namespace);\n } catch (error) {\n throw new Error(\"Invalid Git storage location.\", { cause: error });\n }\n}\n\nfunction assertProductionRemote(remote: string) {\n let normalized: string | undefined;\n try {\n normalized = normalizeGitRemote(remote);\n } catch (error) {\n throw new Error(error instanceof Error ? error.message : \"Invalid Git remote.\", {\n cause: error,\n });\n }\n if (!normalized || normalized !== remote) throw new Error(\"Invalid or non-normalized Git remote.\");\n}\n\nasync function withGitCacheMutation<T>(cacheDir: string, run: () => Promise<T>, signal?: AbortSignal): Promise<T> {\n const previous = gitCacheMutationQueues.get(cacheDir) ?? Promise.resolve();\n let started = false;\n const operation = previous\n .catch(() => undefined)\n .then(() => {\n throwIfAborted(signal);\n started = true;\n return run();\n });\n const tail = operation.then(\n () => undefined,\n () => undefined,\n );\n gitCacheMutationQueues.set(cacheDir, tail);\n void tail.then(() => {\n if (gitCacheMutationQueues.get(cacheDir) === tail) gitCacheMutationQueues.delete(cacheDir);\n });\n if (!signal) return operation;\n throwIfAborted(signal);\n let rejectAbort: ((reason: unknown) => void) | undefined;\n const aborted = new Promise<never>((_resolve, reject) => {\n rejectAbort = reject;\n });\n const onAbort = () => rejectAbort?.(abortReason(signal));\n signal.addEventListener(\"abort\", onAbort, { once: true });\n if (signal.aborted) onAbort();\n try {\n return await Promise.race([operation, aborted]);\n } catch (error) {\n // A queued job can cancel immediately, but a running job owns a child/cache\n // mutation. Drain its bounded cleanup before releasing outer sync guards.\n if (started) await tail;\n throw error;\n } finally {\n signal.removeEventListener(\"abort\", onAbort);\n }\n}\n\nasync function assertNotSymlink(target: string, label: string) {\n try {\n const stat = await fs.lstat(target);\n if (stat.isSymbolicLink()) throw new Error(`Refusing symlinked ${label}.`);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;\n }\n}\n\nfunction redactGitError(value: string, remote: string, cacheDir: string) {\n return (\n value\n .replaceAll(remote, \"<git-remote>\")\n .replaceAll(cacheDir, \"<git-cache>\")\n .replace(/https:\\/\\/[^/@\\s]+@/gu, \"https://<credentials>@\")\n .replace(/\\b(password|token|authorization)=\\S+/giu, \"$1=<redacted>\")\n .replace(/\\bBearer\\s+\\S+/giu, \"Bearer <redacted>\")\n // biome-ignore lint/suspicious/noControlCharactersInRegex: sanitize untrusted process output.\n .replace(/[\\u0000-\\u001f\\u007f-\\u009f]/gu, \" \")\n .trim()\n .slice(0, 4096)\n );\n}\n\nfunction sha256(value: Buffer) {\n return createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nfunction abortReason(signal: AbortSignal) {\n return signal.reason instanceof Error ? signal.reason : new DOMException(\"The operation was aborted\", \"AbortError\");\n}\n", "import { spawn } from \"node:child_process\";\nimport process from \"node:process\";\nimport { throwIfAborted } from \"../../sync/signals.js\";\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_OUTPUT_LIMIT = 1024 * 1024;\n\nexport interface GitRunOptions {\n gitDir?: string;\n cwd?: string;\n input?: Buffer | string;\n env?: NodeJS.ProcessEnv;\n signal?: AbortSignal;\n timeoutMs?: number;\n maxOutputBytes?: number;\n allowFileProtocol?: boolean;\n}\n\nexport interface GitRunResult {\n stdout: Buffer;\n stderr: Buffer;\n}\n\nexport class GitCommandError extends Error {\n readonly code = \"GIT_COMMAND_FAILED\";\n constructor(\n message: string,\n readonly exitCode: number | null,\n readonly stderr: string,\n options?: ErrorOptions,\n ) {\n super(message, options);\n this.name = \"GitCommandError\";\n }\n}\n\nexport async function runGit(args: string[], options: GitRunOptions = {}): Promise<GitRunResult> {\n throwIfAborted(options.signal);\n const hooksPath = process.platform === \"win32\" ? \"NUL\" : \"/dev/null\";\n const protocolArgs = [\n \"-c\",\n `core.hooksPath=${hooksPath}`,\n \"-c\",\n \"gc.auto=0\",\n \"-c\",\n \"maintenance.auto=false\",\n \"-c\",\n \"protocol.allow=never\",\n \"-c\",\n \"protocol.https.allow=always\",\n \"-c\",\n \"protocol.ssh.allow=always\",\n ];\n if (options.allowFileProtocol) protocolArgs.push(\"-c\", \"protocol.file.allow=always\");\n const commandArgs = [...(options.gitDir ? [`--git-dir=${options.gitDir}`] : []), ...protocolArgs, ...args];\n const inheritedEnvironment = Object.fromEntries(\n Object.entries(process.env).filter(\n ([key]) =>\n !key.startsWith(\"GIT_\") &&\n key !== \"PAGER\" &&\n key !== \"EDITOR\" &&\n key !== \"VISUAL\" &&\n key !== \"SSH_ASKPASS\" &&\n key !== \"SSH_ASKPASS_REQUIRE\",\n ),\n );\n const allowedGitOverrides = new Set([\n \"GIT_INDEX_FILE\",\n \"GIT_AUTHOR_NAME\",\n \"GIT_AUTHOR_EMAIL\",\n \"GIT_AUTHOR_DATE\",\n \"GIT_COMMITTER_NAME\",\n \"GIT_COMMITTER_EMAIL\",\n \"GIT_COMMITTER_DATE\",\n ]);\n const suppliedEnvironment = Object.fromEntries(\n Object.entries(options.env ?? {}).filter(([key]) => !key.startsWith(\"GIT_\") || allowedGitOverrides.has(key)),\n );\n const env: NodeJS.ProcessEnv = {\n ...inheritedEnvironment,\n ...suppliedEnvironment,\n LC_ALL: \"C\",\n LANG: \"C\",\n GIT_CONFIG_NOSYSTEM: \"1\",\n GIT_TERMINAL_PROMPT: \"0\",\n GCM_INTERACTIVE: \"Never\",\n GIT_PAGER: \"cat\",\n PAGER: \"cat\",\n GIT_EDITOR: \"true\",\n EDITOR: \"true\",\n VISUAL: \"true\",\n GIT_ASKPASS: \"\",\n SSH_ASKPASS: \"\",\n SSH_ASKPASS_REQUIRE: \"never\",\n GIT_SSH_COMMAND: \"ssh -oBatchMode=yes\",\n };\n const child = spawn(\"git\", commandArgs, {\n cwd: options.cwd,\n env,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n detached: process.platform !== \"win32\",\n windowsHide: true,\n });\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n let total = 0;\n let settled = false;\n let terminationError: Error | undefined;\n let escalationTimer: NodeJS.Timeout | undefined;\n const limit = options.maxOutputBytes ?? DEFAULT_OUTPUT_LIMIT;\n\n const terminate = (error: Error) => {\n if (settled || terminationError) return;\n terminationError = error;\n if (child.pid && process.platform !== \"win32\") {\n try {\n process.kill(-child.pid, \"SIGTERM\");\n } catch {\n child.kill(\"SIGTERM\");\n }\n } else {\n child.kill(\"SIGTERM\");\n if (child.pid && process.platform === \"win32\") {\n const killer = spawn(\"taskkill\", [\"/pid\", String(child.pid), \"/t\", \"/f\"], {\n stdio: \"ignore\",\n windowsHide: true,\n });\n killer.on(\"error\", () => undefined);\n killer.unref();\n }\n }\n escalationTimer = setTimeout(() => {\n if (settled) return;\n if (child.pid && process.platform !== \"win32\") {\n try {\n process.kill(-child.pid, \"SIGKILL\");\n } catch {\n child.kill(\"SIGKILL\");\n }\n } else {\n child.kill(\"SIGKILL\");\n }\n }, 2_000);\n };\n const collect = (target: Buffer[]) => (chunk: Buffer) => {\n total += chunk.byteLength;\n if (total > limit) {\n terminate(new Error(`Git output exceeds the ${limit}-byte limit.`));\n return;\n }\n target.push(Buffer.from(chunk));\n };\n child.stdout.on(\"data\", collect(stdout));\n child.stderr.on(\"data\", collect(stderr));\n child.stdin.on(\"error\", () => undefined);\n child.stdin.end(options.input);\n const onAbort = () =>\n terminate(\n options.signal?.reason instanceof Error\n ? options.signal.reason\n : new DOMException(\"The operation was aborted\", \"AbortError\"),\n );\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n const timer = setTimeout(\n () => terminate(new Error(`Git command timed out after ${options.timeoutMs ?? DEFAULT_TIMEOUT_MS}ms.`)),\n options.timeoutMs ?? DEFAULT_TIMEOUT_MS,\n );\n\n let result: GitRunResult;\n try {\n result = await new Promise<GitRunResult>((resolve, reject) => {\n child.once(\"error\", reject);\n child.once(\"close\", (code) => {\n settled = true;\n if (escalationTimer) clearTimeout(escalationTimer);\n const stdoutBuffer = Buffer.concat(stdout);\n const stderrBuffer = Buffer.concat(stderr);\n if (terminationError) {\n reject(terminationError);\n return;\n }\n if (code !== 0) {\n const stderrText = stderrBuffer.toString(\"utf8\").trim();\n reject(new GitCommandError(stderrText || `Git exited with status ${code ?? \"unknown\"}.`, code, stderrText));\n return;\n }\n resolve({ stdout: stdoutBuffer, stderr: stderrBuffer });\n });\n });\n } finally {\n clearTimeout(timer);\n if (escalationTimer) clearTimeout(escalationTimer);\n options.signal?.removeEventListener(\"abort\", onAbort);\n }\n return result;\n}\n\nexport function parseGitBlobBatch(output: Buffer, expectedCount: number, maxContentBytes: number) {\n if (!Number.isSafeInteger(expectedCount) || expectedCount < 0) {\n throw new Error(\"Invalid Git batch object count.\");\n }\n if (!Number.isSafeInteger(maxContentBytes) || maxContentBytes < 0) {\n throw new Error(\"Invalid Git batch content limit.\");\n }\n const blobs: Buffer[] = [];\n let offset = 0;\n let contentBytes = 0;\n for (let index = 0; index < expectedCount; index += 1) {\n const headerEnd = output.indexOf(0x0a, offset);\n if (headerEnd < 0) throw new Error(\"Git cat-file batch response is truncated.\");\n const header = output.subarray(offset, headerEnd).toString(\"utf8\");\n if (header.endsWith(\" missing\")) throw new Error(\"Git cat-file batch object is missing.\");\n const match = /^(?<object>[0-9a-f]{40}) blob (?<size>0|[1-9][0-9]*)$/u.exec(header);\n if (!match?.groups) throw new Error(\"Git cat-file batch response is malformed.\");\n const size = Number(match.groups.size);\n if (!Number.isSafeInteger(size)) throw new Error(\"Git cat-file batch size is malformed.\");\n contentBytes += size;\n if (contentBytes > maxContentBytes) {\n throw new Error(`Git cat-file batch content exceeds the ${maxContentBytes}-byte limit.`);\n }\n const contentStart = headerEnd + 1;\n const contentEnd = contentStart + size;\n if (contentEnd >= output.length) throw new Error(\"Git cat-file batch response is truncated.\");\n if (output[contentEnd] !== 0x0a) {\n throw new Error(\"Git cat-file batch response is malformed.\");\n }\n blobs.push(Buffer.from(output.subarray(contentStart, contentEnd)));\n offset = contentEnd + 1;\n }\n if (offset !== output.length) throw new Error(\"Git cat-file batch response has trailing data.\");\n return blobs;\n}\n\nexport async function readGitBlobs(\n objects: string[],\n options: Omit<GitRunOptions, \"input\" | \"maxOutputBytes\"> & { maxOutputBytes: number },\n) {\n if (objects.length === 0) return [];\n if (!Number.isSafeInteger(options.maxOutputBytes) || options.maxOutputBytes < 0) {\n throw new Error(\"Invalid Git batch output limit.\");\n }\n if (objects.some((object) => !/^[0-9a-f]{40}$/u.test(object))) {\n throw new Error(\"Invalid Git blob object id.\");\n }\n const protocolOverhead = objects.length * 96;\n if (!Number.isSafeInteger(protocolOverhead + options.maxOutputBytes)) {\n throw new Error(\"Invalid Git batch output limit.\");\n }\n const result = await runGit([\"cat-file\", \"--batch\"], {\n ...options,\n input: `${objects.join(\"\\n\")}\\n`,\n maxOutputBytes: options.maxOutputBytes + protocolOverhead,\n });\n return parseGitBlobBatch(result.stdout, objects.length, options.maxOutputBytes);\n}\n", "import { createHash } from \"node:crypto\";\nimport type { Snapshot, SnapshotSelection } from \"../../snapshot/snapshot-types.js\";\nimport { sameLocalFields, validatePortableSnapshot, validateSnapshotFieldPolicy } from \"../../sync/local-fields.js\";\nimport { portableSnapshotSelection, snapshotSelectionInclude } from \"../../sync/sync-policy.js\";\n\nexport const GIT_MANIFEST_VERSION = 2;\nexport const MAX_GIT_MANIFEST_BYTES = 1024 * 1024;\nexport const MAX_GIT_TREE_OUTPUT_BYTES = 16 * 1024 * 1024;\nexport const MAX_GIT_PAYLOAD_BYTES = 100 * 1024 * 1024;\nexport const MAX_GIT_SNAPSHOT_BYTES = 512 * 1024 * 1024;\n\nexport interface GitManifestFile {\n path: string;\n sha256: string;\n size: number;\n}\n\nexport interface GitManifest {\n version: number;\n snapshotVersion: number;\n snapshotId: string;\n createdAt: string;\n machine: string;\n profile: string;\n syncSessions: boolean;\n snapshotSyncSessions?: boolean;\n selection?: SnapshotSelection;\n localFields?: string[];\n files: GitManifestFile[];\n}\n\nexport interface PreparedGitFile extends GitManifestFile {\n content: Buffer;\n}\n\nexport interface GitTreeEntry {\n mode: string;\n type: string;\n object: string;\n path: string;\n}\n\nexport function isGitPayloadSizeAllowed(size: number) {\n return Number.isSafeInteger(size) && size >= 0 && size <= MAX_GIT_PAYLOAD_BYTES;\n}\n\nexport function requireGitManifest(value: unknown): GitManifest {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(\"Git publication manifest is malformed.\");\n }\n const manifest = value as Partial<GitManifest>;\n if (manifest.version === 1) {\n throw new Error(\n \"Git publication uses the unsupported pre-release gzip format; recreate this pi-sync-owned test branch.\",\n );\n }\n if (\n manifest.version !== GIT_MANIFEST_VERSION ||\n (manifest.snapshotVersion !== 1 && manifest.snapshotVersion !== 2 && manifest.snapshotVersion !== 3) ||\n typeof manifest.snapshotId !== \"string\" ||\n manifest.snapshotId.length > 512 ||\n !/^[A-Za-z0-9._-]+$/u.test(manifest.snapshotId) ||\n typeof manifest.createdAt !== \"string\" ||\n manifest.createdAt.length > 64 ||\n hasControlCharacter(manifest.createdAt) ||\n Number.isNaN(Date.parse(manifest.createdAt)) ||\n typeof manifest.machine !== \"string\" ||\n manifest.machine.length > 256 ||\n hasControlCharacter(manifest.machine) ||\n typeof manifest.profile !== \"string\" ||\n manifest.profile.length === 0 ||\n manifest.profile.length > 256 ||\n hasControlCharacter(manifest.profile) ||\n typeof manifest.syncSessions !== \"boolean\" ||\n (manifest.snapshotSyncSessions !== undefined && typeof manifest.snapshotSyncSessions !== \"boolean\") ||\n !Array.isArray(manifest.files) ||\n !hasExactKeys(manifest as Record<string, unknown>, [\n \"version\",\n \"snapshotVersion\",\n \"snapshotId\",\n \"createdAt\",\n \"machine\",\n \"profile\",\n \"syncSessions\",\n ...(manifest.snapshotSyncSessions === undefined ? [] : [\"snapshotSyncSessions\"]),\n ...(manifest.selection === undefined ? [] : [\"selection\"]),\n ...(manifest.localFields === undefined ? [] : [\"localFields\"]),\n \"files\",\n ])\n ) {\n throw new Error(\"Git publication manifest is malformed.\");\n }\n validateSnapshotFieldPolicy({ version: manifest.snapshotVersion, localFields: manifest.localFields });\n if (manifest.selection !== undefined) portableSnapshotSelection(manifest.selection);\n let total = 0;\n const paths = new Set<string>();\n for (const rawFile of manifest.files) {\n if (!rawFile || typeof rawFile !== \"object\" || Array.isArray(rawFile)) {\n throw new Error(\"Git publication manifest file is malformed.\");\n }\n const file = rawFile as Partial<GitManifestFile>;\n if (\n !hasExactKeys(file as Record<string, unknown>, [\"path\", \"sha256\", \"size\"]) ||\n !isSafeSnapshotPath(file.path) ||\n typeof file.sha256 !== \"string\" ||\n !/^[0-9a-f]{64}$/u.test(file.sha256) ||\n typeof file.size !== \"number\" ||\n !isGitPayloadSizeAllowed(file.size) ||\n paths.has(file.path)\n ) {\n throw new Error(\"Git publication manifest file is malformed.\");\n }\n total += file.size;\n if (!Number.isSafeInteger(total) || total > MAX_GIT_SNAPSHOT_BYTES) {\n throw new Error(`Git snapshot content exceeds the ${MAX_GIT_SNAPSHOT_BYTES}-byte limit.`);\n }\n paths.add(file.path);\n }\n assertNoPathConflicts([...paths]);\n return manifest as GitManifest;\n}\n\nexport function validateGitSnapshot(snapshot: Snapshot, manifest: GitManifest, namespace: string) {\n const prepared = prepareGitSnapshot(snapshot, namespace);\n const syncSessions =\n snapshot.syncSessions === true || snapshot.files.some((file) => file.path.startsWith(\"sessions/\"));\n if (\n snapshot.version !== manifest.snapshotVersion ||\n !sameLocalFields(snapshot.localFields, manifest.localFields) ||\n snapshot.id !== manifest.snapshotId ||\n snapshot.createdAt !== manifest.createdAt ||\n snapshot.machine !== manifest.machine ||\n snapshot.profile !== manifest.profile ||\n snapshot.syncSessions !== manifest.snapshotSyncSessions ||\n syncSessions !== manifest.syncSessions ||\n !sameOptionalInclude(\n snapshotSelectionInclude(snapshot),\n manifest.selection === undefined ? undefined : portableSnapshotSelection(manifest.selection).include,\n ) ||\n prepared.length !== manifest.files.length ||\n prepared.some((file, index) => {\n const expected = manifest.files[index];\n return !expected || file.path !== expected.path || file.sha256 !== expected.sha256 || file.size !== expected.size;\n })\n ) {\n throw new Error(\"Git snapshot identity does not match its publication manifest.\");\n }\n}\n\nexport function prepareGitSnapshot(snapshot: Snapshot, namespace: string) {\n snapshotSelectionInclude(snapshot);\n validatePortableSnapshot(snapshot);\n if (\n typeof snapshot.id !== \"string\" ||\n !snapshot.id ||\n snapshot.id.length > 512 ||\n !/^[A-Za-z0-9._-]+$/u.test(snapshot.id) ||\n snapshot.profile !== namespace ||\n !Array.isArray(snapshot.files) ||\n typeof snapshot.createdAt !== \"string\" ||\n !snapshot.createdAt ||\n snapshot.createdAt.length > 64 ||\n hasControlCharacter(snapshot.createdAt) ||\n Number.isNaN(Date.parse(snapshot.createdAt)) ||\n typeof snapshot.machine !== \"string\" ||\n snapshot.machine.length > 256 ||\n hasControlCharacter(snapshot.machine)\n ) {\n throw new Error(\"Invalid Git snapshot publication.\");\n }\n const paths = new Set<string>();\n const prepared: PreparedGitFile[] = [];\n let total = 0;\n for (const file of snapshot.files) {\n if (\n !isSafeSnapshotPath(file.path) ||\n typeof file.contentBase64 !== \"string\" ||\n typeof file.sha256 !== \"string\" ||\n !/^[0-9a-f]{64}$/u.test(file.sha256) ||\n paths.has(file.path)\n ) {\n throw new Error(\"Invalid Git snapshot file.\");\n }\n const content = Buffer.from(file.contentBase64, \"base64\");\n if (content.toString(\"base64\") !== file.contentBase64 || sha256(content) !== file.sha256) {\n throw new Error(\"Git snapshot file checksum mismatch.\");\n }\n if (!isGitPayloadSizeAllowed(content.byteLength)) {\n throw new Error(\n `Git snapshot file exceeds GitHub's ${MAX_GIT_PAYLOAD_BYTES}-byte regular-Git limit: ${file.path}`,\n );\n }\n total += content.byteLength;\n if (!Number.isSafeInteger(total) || total > MAX_GIT_SNAPSHOT_BYTES) {\n throw new Error(`Git snapshot content exceeds the ${MAX_GIT_SNAPSHOT_BYTES}-byte limit.`);\n }\n paths.add(file.path);\n prepared.push({ path: file.path, sha256: file.sha256, size: content.byteLength, content });\n }\n assertNoPathConflicts([...paths]);\n return prepared;\n}\n\nexport function parseGitTree(output: Buffer): GitTreeEntry[] {\n if (output.byteLength === 0) return [];\n if (output.at(-1) !== 0) throw new Error(\"Git publication tree response is malformed.\");\n return output\n .subarray(0, -1)\n .toString(\"utf8\")\n .split(\"\\0\")\n .map((line) => {\n const match = /^(?<mode>[0-9]{6}) (?<type>blob|tree|commit) (?<object>[0-9a-f]{40})\\t(?<path>.+)$/u.exec(line);\n if (!match?.groups || hasControlCharacter(match.groups.path)) {\n throw new Error(\"Git publication tree response is malformed.\");\n }\n return {\n mode: match.groups.mode,\n type: match.groups.type,\n object: match.groups.object,\n path: match.groups.path,\n };\n });\n}\n\nexport function validateGitPublicationTree(\n entries: GitTreeEntry[],\n manifest: GitManifest,\n manifestPath: string,\n filePath: (path: string) => string,\n) {\n const byPath = new Map<string, GitTreeEntry>();\n for (const entry of entries) {\n if (byPath.has(entry.path)) throw new Error(\"Git publication tree contains duplicate paths.\");\n byPath.set(entry.path, entry);\n }\n const expectedPaths = [manifestPath, ...manifest.files.map((file) => filePath(file.path))];\n if (entries.length !== expectedPaths.length || expectedPaths.some((path) => !byPath.has(path))) {\n throw new Error(\"Git publication tree has missing or extra files.\");\n }\n for (const expectedPath of expectedPaths) {\n const entry = byPath.get(expectedPath);\n if (entry?.mode !== \"100644\" || entry.type !== \"blob\") {\n throw new Error(`Git publication tree contains a non-regular file: ${expectedPath}`);\n }\n }\n return manifest.files.map((file) => byPath.get(filePath(file.path)) as GitTreeEntry);\n}\n\nfunction sameOptionalInclude(left: string[] | undefined, right: string[] | undefined) {\n if (!left || !right) return left === right;\n return left.length === right.length && left.every((item, index) => item === right[index]);\n}\n\nfunction isSafeSnapshotPath(value: unknown): value is string {\n return (\n typeof value === \"string\" &&\n value.length > 0 &&\n value.length <= 4096 &&\n !value.startsWith(\"/\") &&\n !value.includes(\"\\\\\") &&\n !hasControlCharacter(value) &&\n value\n .split(\"/\")\n .every((segment) => segment && segment !== \".\" && segment !== \"..\" && segment.toLowerCase() !== \".git\")\n );\n}\n\nfunction hasExactKeys(value: Record<string, unknown>, expected: string[]) {\n const keys = Object.keys(value).sort();\n const expectedKeys = [...expected].sort();\n return keys.length === expectedKeys.length && keys.every((key, index) => key === expectedKeys[index]);\n}\n\nfunction assertNoPathConflicts(paths: string[]) {\n const sorted = [...paths].sort();\n for (let index = 1; index < sorted.length; index += 1) {\n const parent = sorted[index - 1];\n const child = sorted[index];\n if (parent && child?.startsWith(`${parent}/`)) {\n throw new Error(`Git snapshot file path conflict: ${parent} and ${child}`);\n }\n }\n}\n\nfunction sha256(value: Buffer) {\n return createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nfunction hasControlCharacter(value: string) {\n // biome-ignore lint/suspicious/noControlCharactersInRegex: Reject untrusted terminal/ref controls.\n return /[\\u0000-\\u001f\\u007f-\\u009f]/u.test(value);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,cAAAA,aAAY,kBAAkB;AACvC,OAAO,QAAQ;AACf,OAAO,UAAU;;;ACFjB,SAAS,aAAa;AACtB,OAAOC,cAAa;AAGpB,IAAM,qBAAqB;AAC3B,IAAM,uBAAuB,OAAO;AAkB7B,IAAM,kBAAN,cAA8B,MAAM;AAAA,EAEzC,YACE,SACS,UACA,QACT,SACA;AACA,UAAM,SAAS,OAAO;AAJb;AACA;AAIT,SAAK,OAAO;AAAA,EACd;AAAA,EANW;AAAA,EACA;AAAA,EAJF,OAAO;AAUlB;AAEA,eAAsB,OAAO,MAAgB,UAAyB,CAAC,GAA0B;AAC/F,iBAAe,QAAQ,MAAM;AAC7B,QAAM,YAAYC,SAAQ,aAAa,UAAU,QAAQ;AACzD,QAAM,eAAe;AAAA,IACnB;AAAA,IACA,kBAAkB,SAAS;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,QAAQ,kBAAmB,cAAa,KAAK,MAAM,4BAA4B;AACnF,QAAM,cAAc,CAAC,GAAI,QAAQ,SAAS,CAAC,aAAa,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAI,GAAG,cAAc,GAAG,IAAI;AACzG,QAAM,uBAAuB,OAAO;AAAA,IAClC,OAAO,QAAQA,SAAQ,GAAG,EAAE;AAAA,MAC1B,CAAC,CAAC,GAAG,MACH,CAAC,IAAI,WAAW,MAAM,KACtB,QAAQ,WACR,QAAQ,YACR,QAAQ,YACR,QAAQ,iBACR,QAAQ;AAAA,IACZ;AAAA,EACF;AACA,QAAM,sBAAsB,oBAAI,IAAI;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,sBAAsB,OAAO;AAAA,IACjC,OAAO,QAAQ,QAAQ,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,WAAW,MAAM,KAAK,oBAAoB,IAAI,GAAG,CAAC;AAAA,EAC7G;AACA,QAAM,MAAyB;AAAA,IAC7B,GAAG;AAAA,IACH,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,qBAAqB;AAAA,IACrB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,aAAa;AAAA,IACb,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AACA,QAAM,QAAQ,MAAM,OAAO,aAAa;AAAA,IACtC,KAAK,QAAQ;AAAA,IACb;AAAA,IACA,OAAO,CAAC,QAAQ,QAAQ,MAAM;AAAA,IAC9B,UAAUA,SAAQ,aAAa;AAAA,IAC/B,aAAa;AAAA,EACf,CAAC;AACD,QAAM,SAAmB,CAAC;AAC1B,QAAM,SAAmB,CAAC;AAC1B,MAAI,QAAQ;AACZ,MAAI,UAAU;AACd,MAAI;AACJ,MAAI;AACJ,QAAM,QAAQ,QAAQ,kBAAkB;AAExC,QAAM,YAAY,CAAC,UAAiB;AAClC,QAAI,WAAW,iBAAkB;AACjC,uBAAmB;AACnB,QAAI,MAAM,OAAOA,SAAQ,aAAa,SAAS;AAC7C,UAAI;AACF,QAAAA,SAAQ,KAAK,CAAC,MAAM,KAAK,SAAS;AAAA,MACpC,QAAQ;AACN,cAAM,KAAK,SAAS;AAAA,MACtB;AAAA,IACF,OAAO;AACL,YAAM,KAAK,SAAS;AACpB,UAAI,MAAM,OAAOA,SAAQ,aAAa,SAAS;AAC7C,cAAM,SAAS,MAAM,YAAY,CAAC,QAAQ,OAAO,MAAM,GAAG,GAAG,MAAM,IAAI,GAAG;AAAA,UACxE,OAAO;AAAA,UACP,aAAa;AAAA,QACf,CAAC;AACD,eAAO,GAAG,SAAS,MAAM,MAAS;AAClC,eAAO,MAAM;AAAA,MACf;AAAA,IACF;AACA,sBAAkB,WAAW,MAAM;AACjC,UAAI,QAAS;AACb,UAAI,MAAM,OAAOA,SAAQ,aAAa,SAAS;AAC7C,YAAI;AACF,UAAAA,SAAQ,KAAK,CAAC,MAAM,KAAK,SAAS;AAAA,QACpC,QAAQ;AACN,gBAAM,KAAK,SAAS;AAAA,QACtB;AAAA,MACF,OAAO;AACL,cAAM,KAAK,SAAS;AAAA,MACtB;AAAA,IACF,GAAG,GAAK;AAAA,EACV;AACA,QAAM,UAAU,CAAC,WAAqB,CAAC,UAAkB;AACvD,aAAS,MAAM;AACf,QAAI,QAAQ,OAAO;AACjB,gBAAU,IAAI,MAAM,0BAA0B,KAAK,cAAc,CAAC;AAClE;AAAA,IACF;AACA,WAAO,KAAK,OAAO,KAAK,KAAK,CAAC;AAAA,EAChC;AACA,QAAM,OAAO,GAAG,QAAQ,QAAQ,MAAM,CAAC;AACvC,QAAM,OAAO,GAAG,QAAQ,QAAQ,MAAM,CAAC;AACvC,QAAM,MAAM,GAAG,SAAS,MAAM,MAAS;AACvC,QAAM,MAAM,IAAI,QAAQ,KAAK;AAC7B,QAAM,UAAU,MACd;AAAA,IACE,QAAQ,QAAQ,kBAAkB,QAC9B,QAAQ,OAAO,SACf,IAAI,aAAa,6BAA6B,YAAY;AAAA,EAChE;AACF,UAAQ,QAAQ,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AACjE,QAAM,QAAQ;AAAA,IACZ,MAAM,UAAU,IAAI,MAAM,+BAA+B,QAAQ,aAAa,kBAAkB,KAAK,CAAC;AAAA,IACtG,QAAQ,aAAa;AAAA,EACvB;AAEA,MAAI;AACJ,MAAI;AACF,aAAS,MAAM,IAAI,QAAsB,CAAC,SAAS,WAAW;AAC5D,YAAM,KAAK,SAAS,MAAM;AAC1B,YAAM,KAAK,SAAS,CAAC,SAAS;AAC5B,kBAAU;AACV,YAAI,gBAAiB,cAAa,eAAe;AACjD,cAAM,eAAe,OAAO,OAAO,MAAM;AACzC,cAAM,eAAe,OAAO,OAAO,MAAM;AACzC,YAAI,kBAAkB;AACpB,iBAAO,gBAAgB;AACvB;AAAA,QACF;AACA,YAAI,SAAS,GAAG;AACd,gBAAM,aAAa,aAAa,SAAS,MAAM,EAAE,KAAK;AACtD,iBAAO,IAAI,gBAAgB,cAAc,0BAA0B,QAAQ,SAAS,KAAK,MAAM,UAAU,CAAC;AAC1G;AAAA,QACF;AACA,gBAAQ,EAAE,QAAQ,cAAc,QAAQ,aAAa,CAAC;AAAA,MACxD,CAAC;AAAA,IACH,CAAC;AAAA,EACH,UAAE;AACA,iBAAa,KAAK;AAClB,QAAI,gBAAiB,cAAa,eAAe;AACjD,YAAQ,QAAQ,oBAAoB,SAAS,OAAO;AAAA,EACtD;AACA,SAAO;AACT;AAEO,SAAS,kBAAkB,QAAgB,eAAuB,iBAAyB;AAChG,MAAI,CAAC,OAAO,cAAc,aAAa,KAAK,gBAAgB,GAAG;AAC7D,UAAM,IAAI,MAAM,iCAAiC;AAAA,EACnD;AACA,MAAI,CAAC,OAAO,cAAc,eAAe,KAAK,kBAAkB,GAAG;AACjE,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACA,QAAM,QAAkB,CAAC;AACzB,MAAI,SAAS;AACb,MAAI,eAAe;AACnB,WAAS,QAAQ,GAAG,QAAQ,eAAe,SAAS,GAAG;AACrD,UAAM,YAAY,OAAO,QAAQ,IAAM,MAAM;AAC7C,QAAI,YAAY,EAAG,OAAM,IAAI,MAAM,2CAA2C;AAC9E,UAAM,SAAS,OAAO,SAAS,QAAQ,SAAS,EAAE,SAAS,MAAM;AACjE,QAAI,OAAO,SAAS,UAAU,EAAG,OAAM,IAAI,MAAM,uCAAuC;AACxF,UAAM,QAAQ,yDAAyD,KAAK,MAAM;AAClF,QAAI,CAAC,OAAO,OAAQ,OAAM,IAAI,MAAM,2CAA2C;AAC/E,UAAM,OAAO,OAAO,MAAM,OAAO,IAAI;AACrC,QAAI,CAAC,OAAO,cAAc,IAAI,EAAG,OAAM,IAAI,MAAM,uCAAuC;AACxF,oBAAgB;AAChB,QAAI,eAAe,iBAAiB;AAClC,YAAM,IAAI,MAAM,0CAA0C,eAAe,cAAc;AAAA,IACzF;AACA,UAAM,eAAe,YAAY;AACjC,UAAM,aAAa,eAAe;AAClC,QAAI,cAAc,OAAO,OAAQ,OAAM,IAAI,MAAM,2CAA2C;AAC5F,QAAI,OAAO,UAAU,MAAM,IAAM;AAC/B,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC7D;AACA,UAAM,KAAK,OAAO,KAAK,OAAO,SAAS,cAAc,UAAU,CAAC,CAAC;AACjE,aAAS,aAAa;AAAA,EACxB;AACA,MAAI,WAAW,OAAO,OAAQ,OAAM,IAAI,MAAM,gDAAgD;AAC9F,SAAO;AACT;AAEA,eAAsB,aACpB,SACA,SACA;AACA,MAAI,QAAQ,WAAW,EAAG,QAAO,CAAC;AAClC,MAAI,CAAC,OAAO,cAAc,QAAQ,cAAc,KAAK,QAAQ,iBAAiB,GAAG;AAC/E,UAAM,IAAI,MAAM,iCAAiC;AAAA,EACnD;AACA,MAAI,QAAQ,KAAK,CAAC,WAAW,CAAC,kBAAkB,KAAK,MAAM,CAAC,GAAG;AAC7D,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AACA,QAAM,mBAAmB,QAAQ,SAAS;AAC1C,MAAI,CAAC,OAAO,cAAc,mBAAmB,QAAQ,cAAc,GAAG;AACpE,UAAM,IAAI,MAAM,iCAAiC;AAAA,EACnD;AACA,QAAM,SAAS,MAAM,OAAO,CAAC,YAAY,SAAS,GAAG;AAAA,IACnD,GAAG;AAAA,IACH,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAC;AAAA;AAAA,IAC5B,gBAAgB,QAAQ,iBAAiB;AAAA,EAC3C,CAAC;AACD,SAAO,kBAAkB,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,cAAc;AAChF;;;AC9PA,SAAS,kBAAkB;AAKpB,IAAM,uBAAuB;AAC7B,IAAM,yBAAyB,OAAO;AACtC,IAAM,4BAA4B,KAAK,OAAO;AAC9C,IAAM,wBAAwB,MAAM,OAAO;AAC3C,IAAM,yBAAyB,MAAM,OAAO;AAiC5C,SAAS,wBAAwB,MAAc;AACpD,SAAO,OAAO,cAAc,IAAI,KAAK,QAAQ,KAAK,QAAQ;AAC5D;AAEO,SAAS,mBAAmB,OAA6B;AAC9D,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AAC/D,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AACA,QAAM,WAAW;AACjB,MAAI,SAAS,YAAY,GAAG;AAC1B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,MACE,SAAS,YAAY,wBACpB,SAAS,oBAAoB,KAAK,SAAS,oBAAoB,KAAK,SAAS,oBAAoB,KAClG,OAAO,SAAS,eAAe,YAC/B,SAAS,WAAW,SAAS,OAC7B,CAAC,qBAAqB,KAAK,SAAS,UAAU,KAC9C,OAAO,SAAS,cAAc,YAC9B,SAAS,UAAU,SAAS,MAC5B,oBAAoB,SAAS,SAAS,KACtC,OAAO,MAAM,KAAK,MAAM,SAAS,SAAS,CAAC,KAC3C,OAAO,SAAS,YAAY,YAC5B,SAAS,QAAQ,SAAS,OAC1B,oBAAoB,SAAS,OAAO,KACpC,OAAO,SAAS,YAAY,YAC5B,SAAS,QAAQ,WAAW,KAC5B,SAAS,QAAQ,SAAS,OAC1B,oBAAoB,SAAS,OAAO,KACpC,OAAO,SAAS,iBAAiB,aAChC,SAAS,yBAAyB,UAAa,OAAO,SAAS,yBAAyB,aACzF,CAAC,MAAM,QAAQ,SAAS,KAAK,KAC7B,CAAC,aAAa,UAAqC;AAAA,IACjD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,SAAS,yBAAyB,SAAY,CAAC,IAAI,CAAC,sBAAsB;AAAA,IAC9E,GAAI,SAAS,cAAc,SAAY,CAAC,IAAI,CAAC,WAAW;AAAA,IACxD,GAAI,SAAS,gBAAgB,SAAY,CAAC,IAAI,CAAC,aAAa;AAAA,IAC5D;AAAA,EACF,CAAC,GACD;AACA,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AACA,8BAA4B,EAAE,SAAS,SAAS,iBAAiB,aAAa,SAAS,YAAY,CAAC;AACpG,MAAI,SAAS,cAAc,OAAW,2BAA0B,SAAS,SAAS;AAClF,MAAI,QAAQ;AACZ,QAAM,QAAQ,oBAAI,IAAY;AAC9B,aAAW,WAAW,SAAS,OAAO;AACpC,QAAI,CAAC,WAAW,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG;AACrE,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AACA,UAAM,OAAO;AACb,QACE,CAAC,aAAa,MAAiC,CAAC,QAAQ,UAAU,MAAM,CAAC,KACzE,CAAC,mBAAmB,KAAK,IAAI,KAC7B,OAAO,KAAK,WAAW,YACvB,CAAC,kBAAkB,KAAK,KAAK,MAAM,KACnC,OAAO,KAAK,SAAS,YACrB,CAAC,wBAAwB,KAAK,IAAI,KAClC,MAAM,IAAI,KAAK,IAAI,GACnB;AACA,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AACA,aAAS,KAAK;AACd,QAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,wBAAwB;AAClE,YAAM,IAAI,MAAM,oCAAoC,sBAAsB,cAAc;AAAA,IAC1F;AACA,UAAM,IAAI,KAAK,IAAI;AAAA,EACrB;AACA,wBAAsB,CAAC,GAAG,KAAK,CAAC;AAChC,SAAO;AACT;AAEO,SAAS,oBAAoB,UAAoB,UAAuB,WAAmB;AAChG,QAAM,WAAW,mBAAmB,UAAU,SAAS;AACvD,QAAM,eACJ,SAAS,iBAAiB,QAAQ,SAAS,MAAM,KAAK,CAAC,SAAS,KAAK,KAAK,WAAW,WAAW,CAAC;AACnG,MACE,SAAS,YAAY,SAAS,mBAC9B,CAAC,gBAAgB,SAAS,aAAa,SAAS,WAAW,KAC3D,SAAS,OAAO,SAAS,cACzB,SAAS,cAAc,SAAS,aAChC,SAAS,YAAY,SAAS,WAC9B,SAAS,YAAY,SAAS,WAC9B,SAAS,iBAAiB,SAAS,wBACnC,iBAAiB,SAAS,gBAC1B,CAAC;AAAA,IACC,yBAAyB,QAAQ;AAAA,IACjC,SAAS,cAAc,SAAY,SAAY,0BAA0B,SAAS,SAAS,EAAE;AAAA,EAC/F,KACA,SAAS,WAAW,SAAS,MAAM,UACnC,SAAS,KAAK,CAAC,MAAM,UAAU;AAC7B,UAAM,WAAW,SAAS,MAAM,KAAK;AACrC,WAAO,CAAC,YAAY,KAAK,SAAS,SAAS,QAAQ,KAAK,WAAW,SAAS,UAAU,KAAK,SAAS,SAAS;AAAA,EAC/G,CAAC,GACD;AACA,UAAM,IAAI,MAAM,gEAAgE;AAAA,EAClF;AACF;AAEO,SAAS,mBAAmB,UAAoB,WAAmB;AACxE,2BAAyB,QAAQ;AACjC,2BAAyB,QAAQ;AACjC,MACE,OAAO,SAAS,OAAO,YACvB,CAAC,SAAS,MACV,SAAS,GAAG,SAAS,OACrB,CAAC,qBAAqB,KAAK,SAAS,EAAE,KACtC,SAAS,YAAY,aACrB,CAAC,MAAM,QAAQ,SAAS,KAAK,KAC7B,OAAO,SAAS,cAAc,YAC9B,CAAC,SAAS,aACV,SAAS,UAAU,SAAS,MAC5B,oBAAoB,SAAS,SAAS,KACtC,OAAO,MAAM,KAAK,MAAM,SAAS,SAAS,CAAC,KAC3C,OAAO,SAAS,YAAY,YAC5B,SAAS,QAAQ,SAAS,OAC1B,oBAAoB,SAAS,OAAO,GACpC;AACA,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACrD;AACA,QAAM,QAAQ,oBAAI,IAAY;AAC9B,QAAM,WAA8B,CAAC;AACrC,MAAI,QAAQ;AACZ,aAAW,QAAQ,SAAS,OAAO;AACjC,QACE,CAAC,mBAAmB,KAAK,IAAI,KAC7B,OAAO,KAAK,kBAAkB,YAC9B,OAAO,KAAK,WAAW,YACvB,CAAC,kBAAkB,KAAK,KAAK,MAAM,KACnC,MAAM,IAAI,KAAK,IAAI,GACnB;AACA,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AACA,UAAM,UAAU,OAAO,KAAK,KAAK,eAAe,QAAQ;AACxD,QAAI,QAAQ,SAAS,QAAQ,MAAM,KAAK,iBAAiB,OAAO,OAAO,MAAM,KAAK,QAAQ;AACxF,YAAM,IAAI,MAAM,sCAAsC;AAAA,IACxD;AACA,QAAI,CAAC,wBAAwB,QAAQ,UAAU,GAAG;AAChD,YAAM,IAAI;AAAA,QACR,sCAAsC,qBAAqB,4BAA4B,KAAK,IAAI;AAAA,MAClG;AAAA,IACF;AACA,aAAS,QAAQ;AACjB,QAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,wBAAwB;AAClE,YAAM,IAAI,MAAM,oCAAoC,sBAAsB,cAAc;AAAA,IAC1F;AACA,UAAM,IAAI,KAAK,IAAI;AACnB,aAAS,KAAK,EAAE,MAAM,KAAK,MAAM,QAAQ,KAAK,QAAQ,MAAM,QAAQ,YAAY,QAAQ,CAAC;AAAA,EAC3F;AACA,wBAAsB,CAAC,GAAG,KAAK,CAAC;AAChC,SAAO;AACT;AAEO,SAAS,aAAa,QAAgC;AAC3D,MAAI,OAAO,eAAe,EAAG,QAAO,CAAC;AACrC,MAAI,OAAO,GAAG,EAAE,MAAM,EAAG,OAAM,IAAI,MAAM,6CAA6C;AACtF,SAAO,OACJ,SAAS,GAAG,EAAE,EACd,SAAS,MAAM,EACf,MAAM,IAAI,EACV,IAAI,CAAC,SAAS;AACb,UAAM,QAAQ,sFAAsF,KAAK,IAAI;AAC7G,QAAI,CAAC,OAAO,UAAU,oBAAoB,MAAM,OAAO,IAAI,GAAG;AAC5D,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AACA,WAAO;AAAA,MACL,MAAM,MAAM,OAAO;AAAA,MACnB,MAAM,MAAM,OAAO;AAAA,MACnB,QAAQ,MAAM,OAAO;AAAA,MACrB,MAAM,MAAM,OAAO;AAAA,IACrB;AAAA,EACF,CAAC;AACL;AAEO,SAAS,2BACd,SACA,UACA,cACA,UACA;AACA,QAAM,SAAS,oBAAI,IAA0B;AAC7C,aAAW,SAAS,SAAS;AAC3B,QAAI,OAAO,IAAI,MAAM,IAAI,EAAG,OAAM,IAAI,MAAM,gDAAgD;AAC5F,WAAO,IAAI,MAAM,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,gBAAgB,CAAC,cAAc,GAAG,SAAS,MAAM,IAAI,CAAC,SAAS,SAAS,KAAK,IAAI,CAAC,CAAC;AACzF,MAAI,QAAQ,WAAW,cAAc,UAAU,cAAc,KAAK,CAACC,UAAS,CAAC,OAAO,IAAIA,KAAI,CAAC,GAAG;AAC9F,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AACA,aAAW,gBAAgB,eAAe;AACxC,UAAM,QAAQ,OAAO,IAAI,YAAY;AACrC,QAAI,OAAO,SAAS,YAAY,MAAM,SAAS,QAAQ;AACrD,YAAM,IAAI,MAAM,qDAAqD,YAAY,EAAE;AAAA,IACrF;AAAA,EACF;AACA,SAAO,SAAS,MAAM,IAAI,CAAC,SAAS,OAAO,IAAI,SAAS,KAAK,IAAI,CAAC,CAAiB;AACrF;AAEA,SAAS,oBAAoB,MAA4B,OAA6B;AACpF,MAAI,CAAC,QAAQ,CAAC,MAAO,QAAO,SAAS;AACrC,SAAO,KAAK,WAAW,MAAM,UAAU,KAAK,MAAM,CAAC,MAAM,UAAU,SAAS,MAAM,KAAK,CAAC;AAC1F;AAEA,SAAS,mBAAmB,OAAiC;AAC3D,SACE,OAAO,UAAU,YACjB,MAAM,SAAS,KACf,MAAM,UAAU,QAChB,CAAC,MAAM,WAAW,GAAG,KACrB,CAAC,MAAM,SAAS,IAAI,KACpB,CAAC,oBAAoB,KAAK,KAC1B,MACG,MAAM,GAAG,EACT,MAAM,CAAC,YAAY,WAAW,YAAY,OAAO,YAAY,QAAQ,QAAQ,YAAY,MAAM,MAAM;AAE5G;AAEA,SAAS,aAAa,OAAgC,UAAoB;AACxE,QAAM,OAAO,OAAO,KAAK,KAAK,EAAE,KAAK;AACrC,QAAM,eAAe,CAAC,GAAG,QAAQ,EAAE,KAAK;AACxC,SAAO,KAAK,WAAW,aAAa,UAAU,KAAK,MAAM,CAAC,KAAK,UAAU,QAAQ,aAAa,KAAK,CAAC;AACtG;AAEA,SAAS,sBAAsB,OAAiB;AAC9C,QAAM,SAAS,CAAC,GAAG,KAAK,EAAE,KAAK;AAC/B,WAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AACrD,UAAM,SAAS,OAAO,QAAQ,CAAC;AAC/B,UAAM,QAAQ,OAAO,KAAK;AAC1B,QAAI,UAAU,OAAO,WAAW,GAAG,MAAM,GAAG,GAAG;AAC7C,YAAM,IAAI,MAAM,oCAAoC,MAAM,QAAQ,KAAK,EAAE;AAAA,IAC3E;AAAA,EACF;AACF;AAEA,SAAS,OAAO,OAAe;AAC7B,SAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AACxD;AAEA,SAAS,oBAAoB,OAAe;AAE1C,SAAO,gCAAgC,KAAK,KAAK;AACnD;;;AF1PA,IAAM,qBAAqB;AAC3B,IAAM,yBAAyB;AAC/B,IAAM,yBAAyB,oBAAI,IAA2B;AAavD,IAAM,iBAAN,MAA4C;AAAA,EAcjD,YACmB,QACjB,UAA6B,CAAC,GAC9B;AAFiB;AAGjB,yBAAqB,MAAM;AAC3B,SAAK,oBAAoB,QAAQ,sBAAsB;AACvD,QAAI,CAAC,KAAK,kBAAmB,wBAAuB,OAAO,QAAQ,MAAM;AACzE,SAAK,WAAW,mBAAmB,MAAM;AACzC,SAAK,cAAc,eAAe,MAAM;AACxC,SAAK,YAAY,KAAK,QAAQ,QAAQ,aAAa,KAAK,KAAK,SAAS,GAAG,KAAK,CAAC;AAC/E,SAAK,WAAW,KAAK,KAAK,KAAK,WAAW,KAAK,SAAS,MAAM,OAAO,MAAM,GAAG,gBAAgB;AAC9F,SAAK,mBAAmB,QAAQ,oBAAoB;AACpD,SAAK,sBAAsB,QAAQ,uBAAuB;AAC1D,SAAK,mBAAmB,QAAQ;AAChC,SAAK,uBAAuB,QAAQ;AACpC,SAAK,2BAA2B,QAAQ;AAAA,EAC1C;AAAA,EAfmB;AAAA,EAdV;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACT;AAAA,EAoBR,aAAa,MAAc,OAAe;AACxC,WAAO,eAAe,MAAM,KAAK,QAAQ,MAAM,eAAe,OAAO,KAAK,QAAQ;AAAA,EACpF;AAAA,EAEA,MAAM,SAAS,QAAuD;AACpE,UAAM,MAAM,MAAM,KAAK,gBAAgB,MAAM;AAC7C,QAAI,CAAC,IAAK,QAAO;AACjB,UAAM,EAAE,SAAS,IAAI,MAAM,KAAK,gBAAgB,KAAK,MAAM;AAC3D,WAAO,WAAW,KAAK,UAAU,KAAK,QAAQ;AAAA,EAChD;AAAA,EAEA,MAAM,aAAa,WAAmB,QAAyC;AAC7E,UAAM,OAAO,MAAM,KAAK,gBAAgB,MAAM;AAC9C,QAAI,CAAC,KAAM,OAAM,IAAI,MAAM,2CAA2C,SAAS,EAAE;AACjF,UAAM,SAAS,MAAM,KAAK,yBAAyB,WAAW,MAAM,MAAM;AAC1E,QAAI;AACF,YAAM,KAAK,IAAI,CAAC,YAAY,MAAM,GAAG,MAAM,WAAW,GAAG,EAAE,OAAO,CAAC;AACnE,YAAM,KAAK,IAAI,CAAC,cAAc,iBAAiB,QAAQ,IAAI,GAAG,EAAE,OAAO,CAAC;AAAA,IAC1E,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,2CAA2C,SAAS,IAAI,EAAE,OAAO,MAAM,CAAC;AAAA,IAC1F;AACA,UAAM,EAAE,UAAU,eAAe,IAAI,MAAM,KAAK,gBAAgB,QAAQ,MAAM;AAC9E,QAAI;AACJ,QAAI;AACF,cAAQ,MAAM;AAAA,QACZ,eAAe,IAAI,CAAC,UAAU,MAAM,MAAM;AAAA,QAC1C;AAAA,UACE,QAAQ,KAAK;AAAA,UACb;AAAA,UACA,WAAW,KAAK;AAAA,UAChB,mBAAmB,KAAK;AAAA,UACxB,gBAAgB,SAAS,MAAM,OAAO,CAAC,OAAO,SAAS,QAAQ,KAAK,MAAM,CAAC;AAAA,QAC7E;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,UAAI,iBAAiB,SAAS,WAAW,KAAK,MAAM,OAAO,GAAG;AAC5D,cAAM,IAAI,MAAM,wDAAwD,EAAE,OAAO,MAAM,CAAC;AAAA,MAC1F;AACA,YAAM,KAAK,cAAc,KAAK;AAAA,IAChC;AACA,mBAAe,MAAM;AACrB,UAAM,QAAwB,SAAS,MAAM,IAAI,CAAC,MAAM,UAAU;AAChE,YAAM,UAAU,MAAM,KAAK;AAC3B,UAAI,CAAC,WAAW,QAAQ,eAAe,KAAK,QAAQC,QAAO,OAAO,MAAM,KAAK,QAAQ;AACnF,cAAM,IAAI,MAAM,gDAAgD,KAAK,IAAI,EAAE;AAAA,MAC7E;AACA,aAAO,EAAE,MAAM,KAAK,MAAM,eAAe,QAAQ,SAAS,QAAQ,GAAG,QAAQ,KAAK,OAAO;AAAA,IAC3F,CAAC;AACD,UAAM,WAAqB;AAAA,MACzB,SAAS,SAAS;AAAA,MAClB,IAAI,SAAS;AAAA,MACb,WAAW,SAAS;AAAA,MACpB,SAAS,SAAS;AAAA,MAClB,SAAS,SAAS;AAAA,MAClB,GAAI,SAAS,yBAAyB,SAAY,CAAC,IAAI,EAAE,cAAc,SAAS,qBAAqB;AAAA,MACrG,GAAI,SAAS,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,SAAS,UAAU;AAAA,MAC5E,GAAI,SAAS,gBAAgB,SAAY,CAAC,IAAI,EAAE,aAAa,SAAS,YAAY;AAAA,MAClF;AAAA,IACF;AACA,wBAAoB,UAAU,UAAU,KAAK,OAAO,YAAY,SAAS;AACzE,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,gBACJ,UACA,UACA,UAAkC,CAAC,GACH;AAChC,mBAAe,QAAQ,MAAM;AAC7B,UAAM,QAAQ,mBAAmB,UAAU,KAAK,OAAO,YAAY,SAAS;AAC5E,UAAM,WAAW,MAAM,KAAK,gBAAgB,QAAQ,MAAM;AAC1D,QAAI,CAAC,gBAAgB,UAAU,UAAU,KAAK,QAAQ,GAAG;AACvD,YAAM,IAAI;AAAA,QACR;AAAA,QACA,EAAE,aAAa,WAAW,MAAM,KAAK,WAAW,UAAU,QAAQ,MAAM,IAAI,OAAU;AAAA,MACxF;AAAA,IACF;AACA,mBAAe,QAAQ,MAAM;AAC7B,UAAM,WAAwB;AAAA,MAC5B,SAAS;AAAA,MACT,iBAAiB,SAAS;AAAA,MAC1B,YAAY,SAAS;AAAA,MACrB,WAAW,SAAS;AAAA,MACpB,SAAS,SAAS;AAAA,MAClB,SAAS,SAAS;AAAA,MAClB,cAAc,SAAS,iBAAiB,QAAQ,SAAS,MAAM,KAAK,CAAC,SAAS,KAAK,KAAK,WAAW,WAAW,CAAC;AAAA,MAC/G,GAAI,SAAS,iBAAiB,SAAY,CAAC,IAAI,EAAE,sBAAsB,SAAS,aAAa;AAAA,MAC7F,GAAI,SAAS,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,SAAS,UAAU;AAAA,MAC5E,GAAI,SAAS,gBAAgB,SAAY,CAAC,IAAI,EAAE,aAAa,SAAS,YAAY;AAAA,MAClF,OAAO,MAAM,IAAI,CAAC,EAAE,MAAM,UAAU,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC/D,MAAM;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,MACF,EAAE;AAAA,IACJ;AACA,QAAI;AACJ,QAAI;AACF,kBAAY,MAAM,KAAK,aAAa,UAAU,OAAO,UAAU,UAAU,QAAQ,MAAM;AAAA,IACzF,SAAS,OAAO;AACd,YAAM,KAAK,cAAc,KAAK;AAAA,IAChC;AACA,mBAAe,QAAQ,MAAM;AAC7B,YAAQ,WAAW;AAEnB,UAAM,MAAM,KAAK,UAAU;AAC3B,UAAM,QAAQ,sBAAsB,GAAG,IAAI,YAAY,EAAE;AACzD,QAAI;AACJ,QAAI;AACF,YAAM,KAAK,IAAI,CAAC,QAAQ,eAAe,eAAe,OAAO,KAAK,OAAO,QAAQ,QAAQ,GAAG,SAAS,IAAI,GAAG,EAAE,GAAG;AAAA,QAC/G,WAAW,KAAK;AAAA,MAClB,CAAC;AACD,YAAM,KAAK,mBAAmB;AAAA,IAChC,SAAS,OAAO;AACd,kBAAY;AAAA,IACd;AAEA,QAAI;AACJ,QAAI;AACF,gBAAU,MAAM,KAAK,gBAAgB,YAAY,QAAQ,KAAK,mBAAmB,CAAC;AAAA,IACpF,SAAS,OAAO;AACd,YAAM,IAAI;AAAA,QACR,uCAAuC,KAAK,UAAU,aAAa,KAAK,CAAC;AAAA,QACzE,EAAE,OAAO,aAAa,MAAM;AAAA,MAC9B;AAAA,IACF;AACA,QAAI,YAAY,WAAW;AACzB,UAAI,aAAa,YAAY,UAAU;AACrC,cAAM,IAAI,MAAM,6DAA6D,KAAK,UAAU,SAAS,CAAC,IAAI;AAAA,UACxG,OAAO;AAAA,QACT,CAAC;AAAA,MACH;AACA,YAAM,IAAI;AAAA,QACR,YACI,uCAAuC,KAAK,UAAU,SAAS,CAAC,KAChE;AAAA,QACJ;AAAA,UACE,OAAO;AAAA,UACP,aAAa,UAAU,MAAM,KAAK,WAAW,OAAO,IAAI;AAAA,UACxD,4BAA4B;AAAA,UAC5B,OAAO,qBAAqB,QAAQ,YAAY;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AACA,UAAM,OAAO,MAAM,KAAK,WAAW,SAAS;AAC5C,WAAO,EAAE,MAAM,UAAU,CAAC,EAAE;AAAA,EAC9B;AAAA,EAEA,MAAM,YAAY,QAAqD;AACrE,UAAM,MAAM,MAAM,KAAK,gBAAgB,MAAM;AAC7C,QAAI,CAAC,IAAK,QAAO,CAAC;AAClB,UAAM,SAAS,MAAM,KAAK,IAAI,CAAC,YAAY,kBAAkB,aAAa,mBAAmB,GAAG,GAAG,EAAE,OAAO,CAAC;AAC7G,UAAM,UAAU,OAAO,OAAO,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,OAAO,OAAO;AAChF,UAAM,UAAgC,CAAC;AACvC,eAAW,UAAU,SAAS;AAC5B,YAAM,EAAE,SAAS,IAAI,MAAM,KAAK,gBAAgB,QAAQ,MAAM;AAC9D,cAAQ,KAAK;AAAA,QACX,aAAa;AAAA,QACb,YAAY,SAAS;AAAA,QACrB,WAAW,SAAS;AAAA,QACpB,SAAS,SAAS;AAAA,QAClB,cAAc,SAAS;AAAA,MACzB,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SAAS,QAAoD;AACjE,UAAM,cAAmC;AAAA,MACvC;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF;AACA,QAAI;AACF,YAAM,UAAU,MAAM,OAAO,CAAC,WAAW,GAAG;AAAA,QAC1C;AAAA,QACA,WAAW,KAAK;AAAA,MAClB,CAAC;AACD,YAAM,cAAc,QAAQ,OAAO,SAAS,MAAM,EAAE,KAAK;AACzD,YAAM,YAAY,sBAAsB,WAAW;AACnD,kBAAY,KAAK;AAAA,QACf,KAAK;AAAA,QACL,OAAO,YAAY,SAAS;AAAA,QAC5B,SAAS,YACL,cACA,GAAG,eAAe,qBAAqB;AAAA,MAC7C,CAAC;AAAA,IACH,SAAS,OAAO;AACd,aAAO;AAAA,QACL;AAAA,UACE,KAAK;AAAA,UACL,OAAO;AAAA,UACP,SAAS,kBAAkB,IAAI,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC;AAAA,QAC7D;AAAA,MACF;AAAA,IACF;AACA,QAAI;AACF,YAAM,OAAO,MAAM,KAAK,SAAS,MAAM;AACvC,UAAI,KAAM,OAAM,KAAK,aAAa,KAAK,aAAa,MAAM;AAC1D,kBAAY,KAAK;AAAA,QACf,KAAK;AAAA,QACL,OAAO;AAAA,QACP,SAAS,OACL,uCAAuC,KAAK,OAAO,YAAY,MAAM,cACrE,uCAAuC,KAAK,OAAO,YAAY,MAAM;AAAA,MAC3E,CAAC;AACD,kBAAY,KAAK;AAAA,QACf,KAAK;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA,MACX,CAAC;AAAA,IACH,SAAS,OAAO;AACd,kBAAY,KAAK;AAAA,QACf,KAAK;AAAA,QACL,OAAO;AAAA,QACP,SAAS,eAAe,kBAAkB,IAAI,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,CAAC;AAAA,MAC7E,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,yBAAyB,WAAmB,MAAc,QAAsB;AAC5F,QAAI,YAAY,SAAS,KAAK,kBAAkB,KAAK,SAAS,GAAG;AAC/D,uBAAiB,SAAS;AAC1B,aAAO;AAAA,IACT;AACA,QAAI,CAAC,aAAa,UAAU,SAAS,OAAO,CAAC,qBAAqB,KAAK,SAAS,GAAG;AACjF,YAAM,IAAI,MAAM,oCAAoC;AAAA,IACtD;AACA,UAAM,SAAS,MAAM,KAAK,IAAI,CAAC,YAAY,kBAAkB,mBAAmB,IAAI,GAAG;AAAA,MACrF;AAAA,IACF,CAAC;AACD,UAAM,UAAU,OAAO,OAAO,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,OAAO,OAAO;AAChF,UAAM,UAAoB,CAAC;AAC3B,eAAW,UAAU,SAAS;AAC5B,YAAM,EAAE,SAAS,IAAI,MAAM,KAAK,gBAAgB,QAAQ,MAAM;AAC9D,UAAI,SAAS,eAAe,UAAW,SAAQ,KAAK,MAAM;AAAA,IAC5D;AACA,QAAI,QAAQ,WAAW,GAAG;AACxB,YAAM,IAAI,MAAM,2CAA2C,SAAS,EAAE;AAAA,IACxE;AACA,QAAI,QAAQ,SAAS,GAAG;AACtB,YAAM,IAAI,MAAM,4EAA4E,SAAS,EAAE;AAAA,IACzG;AACA,WAAO,QAAQ,CAAC;AAAA,EAClB;AAAA,EAEA,MAAc,WAAW,KAAa,QAAsB;AAC1D,UAAM,EAAE,SAAS,IAAI,MAAM,KAAK,gBAAgB,KAAK,MAAM;AAC3D,WAAO,WAAW,KAAK,UAAU,KAAK,QAAQ;AAAA,EAChD;AAAA,EAEA,MAAc,gBAAgB,QAAsB;AAClD,UAAM,KAAK,YAAY,MAAM;AAC7B,UAAM,SAAS,MAAM,KAAK,IAAI,CAAC,aAAa,UAAU,KAAK,OAAO,QAAQ,QAAQ,KAAK,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;AAC/G,UAAM,OAAO,OAAO,OAAO,SAAS,MAAM,EAAE,KAAK;AACjD,QAAI,CAAC,KAAM,QAAO;AAClB,UAAM,CAAC,KAAK,KAAK,GAAG,KAAK,IAAI,KAAK,MAAM,MAAM;AAC9C,QAAI,MAAM,SAAS,KAAK,QAAQ,KAAK,UAAU,KAAK,CAAC,KAAK;AACxD,YAAM,IAAI,MAAM,qDAAqD;AAAA,IACvE;AACA,qBAAiB,GAAG;AACpB,UAAM,KAAK,uBAAuB;AAClC,WAAO;AAAA,MACL,KAAK;AAAA,MACL,YAAY;AACV,cAAM,WAAW,qBAAqB,QAAQ,GAAG,IAAI,WAAW,CAAC;AACjE,YAAI;AACF,gBAAM,KAAK;AAAA,YACT,CAAC,SAAS,aAAa,WAAW,KAAK,OAAO,QAAQ,QAAQ,GAAG,KAAK,UAAU,CAAC,IAAI,QAAQ,EAAE;AAAA,YAC/F,EAAE,OAAO;AAAA,UACX;AACA,gBAAM,WAAW,MAAM,KAAK,IAAI,CAAC,aAAa,YAAY,QAAQ,GAAG,EAAE,OAAO,CAAC,GAAG,OAC/E,SAAS,MAAM,EACf,KAAK;AACR,2BAAiB,OAAO;AACxB,iBAAO;AAAA,QACT,UAAE;AACA,gBAAM,KAAK,IAAI,CAAC,cAAc,MAAM,QAAQ,GAAG,EAAE,WAAW,IAAM,CAAC,EAAE,MAAM,MAAM,MAAS;AAAA,QAC5F;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,aAAa,QAAgB,QAA4C;AACrF,qBAAiB,MAAM;AACvB,UAAM,QAAQ,MAAM,KAAK,SAAS,QAAQ,KAAK,aAAa,GAAG,QAAQ,sBAAsB;AAC7F,QAAI;AACJ,QAAI;AACF,eAAS,KAAK,MAAM,MAAM,SAAS,MAAM,CAAC;AAAA,IAC5C,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,0CAA0C,EAAE,OAAO,MAAM,CAAC;AAAA,IAC5E;AACA,WAAO,mBAAmB,MAAM;AAAA,EAClC;AAAA,EAEQ,SAAS,QAAgB,UAAkB,QAAsB,gBAAyB;AAChG,WAAO,KAAK,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,QAAQ,EAAE,GAAG,EAAE,QAAQ,eAAe,CAAC,EAAE,KAAK,CAAC,WAAW,OAAO,MAAM;AAAA,EAC/G;AAAA,EAEA,MAAc,aACZ,UACA,OACA,UACA,QACA,QACA;AACA,UAAM,gBAAgB,OAAO,KAAK,GAAG,KAAK,UAAU,QAAQ,CAAC;AAAA,GAAM,MAAM;AACzE,QAAI,cAAc,aAAa,wBAAwB;AACrD,YAAM,IAAI,MAAM,wCAAwC,sBAAsB,cAAc;AAAA,IAC9F;AACA,UAAM,KAAK,YAAY,MAAM;AAC7B,UAAM,qBAAqB,MAAM,GAAG,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK,QAAQ,GAAG,SAAS,CAAC;AAC7F,UAAM,YAAY,KAAK,KAAK,oBAAoB,OAAO;AACvD,UAAM,mBAAmB,KAAK,KAAK,oBAAoB,UAAU;AACjE,UAAM,MAAM,EAAE,gBAAgB,UAAU;AACxC,QAAI;AACF,YAAM,GAAG,MAAM,kBAAkB,EAAE,MAAM,IAAM,CAAC;AAChD,YAAM,cAAc,CAAC,GAAG,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;AAAA,QAAK,CAAC,MAAM,UAC9F,KAAK,OAAO,cAAc,MAAM,MAAM;AAAA,MACxC;AACA,iBAAW,QAAQ,aAAa;AAC9B,uBAAe,MAAM;AACrB,cAAM,GAAG,UAAU,KAAK,KAAK,kBAAkB,KAAK,MAAM,GAAG,KAAK,SAAS;AAAA,UACzE,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,YAAM,KAAK,2BAA2B;AACtC,qBAAe,MAAM;AACrB,YAAM,SAAS,MAAM,KAAK,IAAI,CAAC,eAAe,MAAM,gBAAgB,eAAe,GAAG;AAAA,QACpF,KAAK;AAAA,QACL,OAAO,YAAY,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,KAAK,IAAI,KAAK,YAAY,SAAS,OAAO;AAAA,QACxF;AAAA,QACA,gBAAgB,KAAK,IAAI,MAAM,YAAY,SAAS,EAAE;AAAA,MACxD,CAAC;AACD,YAAM,YAAY,OAAO,OAAO,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,OAAO,OAAO;AAClF,UAAI,UAAU,WAAW,YAAY,UAAU,UAAU,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG;AACvF,cAAM,IAAI,MAAM,wDAAwD;AAAA,MAC1E;AACA,YAAM,kBAAkB,IAAI,IAAI,YAAY,IAAI,CAAC,MAAM,UAAU,CAAC,KAAK,QAAQ,UAAU,KAAK,CAAW,CAAC,CAAC;AAC3G,YAAM,gBAAgB,MAAM,KAAK,IAAI,CAAC,eAAe,MAAM,SAAS,GAAG,EAAE,OAAO,eAAe,OAAO,CAAC,GAAG,OACvG,SAAS,MAAM,EACf,KAAK;AACR,UAAI,CAAC,YAAY,YAAY,EAAG,OAAM,IAAI,MAAM,2CAA2C;AAC3F,YAAM,KAAK,IAAI,CAAC,aAAa,SAAS,GAAG,EAAE,KAAK,OAAO,CAAC;AACxD,YAAM,aAAa;AAAA,QACjB,UAAU,YAAY,IAAK,KAAK,aAAa,CAAC;AAAA,QAC9C,GAAG,MAAM,IAAI,CAAC,SAAS;AACrB,gBAAM,SAAS,gBAAgB,IAAI,KAAK,MAAM;AAC9C,cAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,8CAA8C;AAC3E,iBAAO,UAAU,MAAM,IAAK,KAAK,SAAS,KAAK,IAAI,CAAC;AAAA,QACtD,CAAC;AAAA,MACH;AACA,YAAM,KAAK,IAAI,CAAC,gBAAgB,MAAM,cAAc,GAAG;AAAA,QACrD;AAAA,QACA;AAAA,QACA,OAAO,OAAO,KAAK,GAAG,WAAW,KAAK,IAAI,CAAC,MAAM,MAAM;AAAA,MACzD,CAAC;AACD,YAAM,QAAQ,MAAM,KAAK,IAAI,CAAC,YAAY,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,OAAO,SAAS,MAAM,EAAE,KAAK;AAC5F,YAAM,OAAO,OAAO,MAAM,KAAK,MAAM,SAAS,SAAS,CAAC,KAAI,oBAAI,KAAK,GAAE,YAAY,IAAI,SAAS;AAChG,YAAM,SAAS,MAAM,KAAK,IAAI,CAAC,eAAe,MAAM,GAAI,SAAS,CAAC,MAAM,MAAM,IAAI,CAAC,GAAI,MAAM,GAAG,GAAG;AAAA,QACjG;AAAA,QACA,OAAO,oBAAoB,SAAS,EAAE;AAAA;AAAA,QACtC,KAAK;AAAA,UACH,iBAAiB;AAAA,UACjB,kBAAkB;AAAA,UAClB,oBAAoB;AAAA,UACpB,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,oBAAoB;AAAA,QACtB;AAAA,MACF,CAAC;AACD,YAAM,MAAM,OAAO,OAAO,SAAS,MAAM,EAAE,KAAK;AAChD,uBAAiB,GAAG;AACpB,aAAO;AAAA,IACT,UAAE;AACA,YAAM,GAAG,GAAG,oBAAoB,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,IAClE;AAAA,EACF;AAAA,EAEQ,YAAY,QAAsB;AACxC,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,YAAY,qBAAqB,KAAK,UAAU,MAAM,KAAK,gBAAgB,MAAM,GAAG,MAAM;AAChG,YAAM,UAAU,UAAU,MAAM,CAAC,UAAU;AACzC,YAAI,KAAK,eAAe,QAAS,MAAK,aAAa;AACnD,cAAM,KAAK,cAAc,KAAK;AAAA,MAChC,CAAC;AACD,WAAK,aAAa;AAAA,IACpB;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAc,gBAAgB,QAAsB;AAClD,UAAM,UAAU,MAAM,OAAO,CAAC,WAAW,GAAG;AAAA,MAC1C;AAAA,MACA,WAAW,KAAK;AAAA,IAClB,CAAC;AACD,UAAM,cAAc,QAAQ,OAAO,SAAS,MAAM,EAAE,KAAK;AACzD,QAAI,CAAC,sBAAsB,WAAW,GAAG;AACvC,YAAM,IAAI,MAAM,GAAG,eAAe,qBAAqB,uCAAuC;AAAA,IAChG;AACA,UAAM,SAAS,KAAK,QAAQ,KAAK,QAAQ;AACzC,UAAM,cAAc,KAAK,QAAQ,KAAK,SAAS;AAC/C,UAAM,iBAAiB,aAAa,kBAAkB;AACtD,UAAM,iBAAiB,KAAK,WAAW,gBAAgB;AACvD,UAAM,GAAG,MAAM,KAAK,WAAW,EAAE,WAAW,MAAM,MAAM,IAAM,CAAC;AAC/D,UAAM,iBAAiB,aAAa,kBAAkB;AACtD,UAAM,iBAAiB,KAAK,WAAW,gBAAgB;AACvD,UAAM,iBAAiB,QAAQ,8BAA8B;AAC7D,UAAM,GAAG,MAAM,QAAQ,EAAE,WAAW,MAAM,MAAM,IAAM,CAAC;AACvD,UAAM,iBAAiB,QAAQ,8BAA8B;AAC7D,QAAI,WAAW;AACf,QAAI;AACF,YAAM,OAAO,MAAM,GAAG,MAAM,KAAK,QAAQ;AACzC,UAAI,KAAK,eAAe,EAAG,OAAM,IAAI,MAAM,+BAA+B;AAC1E,UAAI,CAAC,KAAK,YAAY,EAAG,YAAW;AAAA,WAC/B;AACH,YAAI;AACF,qBAAW,CAAE,MAAM,KAAK,cAAc,MAAM;AAAA,QAC9C,QAAQ;AACN,yBAAe,MAAM;AACrB,qBAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,UAAK,MAAgC,SAAS,SAAU,OAAM;AAAA,IAChE;AACA,mBAAe,MAAM;AACrB,QAAI,SAAU,OAAM,GAAG,GAAG,KAAK,UAAU,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AACzE,QAAI;AACF,YAAM,GAAG,OAAO,KAAK,QAAQ;AAAA,IAC/B,QAAQ;AACN,UAAI;AACF,cAAM,OAAO,CAAC,QAAQ,UAAU,wBAAwB,KAAK,QAAQ,GAAG;AAAA,UACtE;AAAA,UACA,WAAW,KAAK;AAAA,UAChB,mBAAmB,KAAK;AAAA,QAC1B,CAAC;AAAA,MACH,SAAS,WAAW;AAClB,cAAM,aAAa,MAAM,KAAK,cAAc,MAAM,EAAE,MAAM,MAAM,KAAK;AACrE,YAAI,CAAC,WAAY,OAAM;AAAA,MACzB;AAAA,IACF;AACA,QAAI,QAAQ,aAAa,QAAS,OAAM,GAAG,MAAM,QAAQ,GAAK;AAAA,EAChE;AAAA,EAEA,MAAc,cAAc,QAAsB;AAChD,UAAM,SAAS,MAAM,KAAK,IAAI,CAAC,aAAa,wBAAwB,sBAAsB,GAAG;AAAA,MAC3F;AAAA,IACF,CAAC;AACD,WAAO,OAAO,OAAO,SAAS,MAAM,EAAE,KAAK,MAAM;AAAA,EACnD;AAAA,EAEQ,IACN,MACA,UAOI,CAAC,GACL;AACA,WAAO,OAAO,MAAM;AAAA,MAClB,QAAQ,KAAK;AAAA,MACb,mBAAmB,KAAK;AAAA,MACxB,WAAW,QAAQ,aAAa,KAAK;AAAA,MACrC,GAAG;AAAA,IACL,CAAC,EAAE,MAAM,CAAC,UAAU;AAClB,YAAM,KAAK,cAAc,KAAK;AAAA,IAChC,CAAC;AAAA,EACH;AAAA,EAEQ,YAAY;AAClB,WAAO,cAAc,KAAK,OAAO,YAAY,MAAM;AAAA,EACrD;AAAA,EAEQ,kBAAkB;AACxB,WAAO,KAAK,OAAO,YAAY,cAAc,OAAO,KAAK,KAAK,OAAO,YAAY;AAAA,EACnF;AAAA,EAEQ,eAAe;AACrB,WAAO,UAAU,KAAK,gBAAgB,GAAG,eAAe;AAAA,EAC1D;AAAA,EAEQ,SAAS,UAAkB;AACjC,WAAO,UAAU,KAAK,gBAAgB,GAAG,SAAS,QAAQ;AAAA,EAC5D;AAAA,EAEA,MAAc,gBAAgB,QAAgB,QAAsB;AAClE,UAAM,WAAW,MAAM,KAAK,aAAa,QAAQ,MAAM;AACvD,UAAM,UAAU,MAAM,KAAK,oBAAoB,QAAQ,MAAM;AAC7D,UAAM,iBAAiB;AAAA,MAA2B;AAAA,MAAS;AAAA,MAAU,KAAK,aAAa;AAAA,MAAG,CAAC,aACzF,KAAK,SAAS,QAAQ;AAAA,IACxB;AACA,WAAO,EAAE,UAAU,eAAe;AAAA,EACpC;AAAA,EAEA,MAAc,oBAAoB,QAAgB,QAAsB;AACtE,UAAM,SAAS,MAAM,KAAK,IAAI,CAAC,WAAW,MAAM,MAAM,MAAM,GAAG;AAAA,MAC7D;AAAA,MACA,gBAAgB;AAAA,IAClB,CAAC;AACD,WAAO,aAAa,OAAO,MAAM;AAAA,EACnC;AAAA,EAEQ,cAAc,OAAgB;AACpC,QAAI,iBAAiB,SAAS,MAAM,SAAS,aAAc,QAAO;AAClE,WAAO,IAAI,MAAM,KAAK,UAAU,KAAK,CAAC;AAAA,EACxC;AAAA,EAEQ,UAAU,OAAgB;AAChC,UAAM,MACJ,iBAAiB,kBACb,MAAM,UAAU,MAAM,UACtB,iBAAiB,QACf,MAAM,UACN,OAAO,KAAK;AACpB,WAAO,eAAe,KAAK,KAAK,OAAO,QAAQ,QAAQ,KAAK,QAAQ;AAAA,EACtE;AACF;AAEO,SAAS,mBAAmB,QAA4B;AAC7D,MAAI;AACJ,MAAI;AACF,qBAAiB,2BAA2B,OAAO,QAAQ,MAAM;AAAA,EACnE,QAAQ;AACN,qBAAiB,OAAO,QAAQ;AAAA,EAClC;AACA,QAAM,YAAY,KAAK,UAAU,CAAC,gBAAgB,OAAO,YAAY,QAAQ,OAAO,YAAY,SAAS,CAAC;AAC1G,SAAO,OAAOA,QAAO,OAAO,KAAK,SAAS,CAAC,CAAC;AAC9C;AAEA,SAAS,eAAe,QAA4B;AAClD,MAAI,OAAO;AACX,QAAM,SAAS,OAAO,QAAQ;AAC9B,MAAI,OAAO,SAAS,KAAK,GAAG;AAC1B,QAAI;AACF,aAAO,IAAI,IAAI,MAAM,EAAE;AAAA,IACzB,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF,OAAO;AACL,UAAM,QAAQ,0CAA0C,KAAK,MAAM;AACnE,QAAI,OAAO,QAAQ,KAAM,QAAO,MAAM,OAAO;AAAA,EAC/C;AACA,SAAO,GAAG,IAAI,SAAM,OAAO,YAAY,MAAM,IAAI,OAAO,YAAY,SAAS;AAC/E;AAEA,SAAS,WAAW,KAAa,UAAuB,UAA8B;AACpF,SAAO;AAAA,IACL,aAAa;AAAA,IACb,YAAY,SAAS;AAAA,IACrB,UAAU,GAAG,QAAQ,IAAI,GAAG;AAAA,IAC5B,WAAW,SAAS;AAAA,IACpB,SAAS,SAAS;AAAA,IAClB,cAAc,SAAS;AAAA,IACvB,GAAI,SAAS,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,SAAS,UAAU;AAAA,EAC9E;AACF;AAEA,SAAS,gBAAgB,SAA6B,UAA8B,UAAkB;AACpG,MAAI,SAAS,SAAS,UAAW,QAAO,YAAY;AACpD,MAAI;AACF,WAAO,YAAY,eAAe,SAAS,UAAU,QAAQ;AAAA,EAC/D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,eAAe,UAAkB,UAAkB;AAC1D,QAAM,SAAS,GAAG,QAAQ;AAC1B,QAAM,MAAM,SAAS,WAAW,MAAM,IAAI,SAAS,MAAM,OAAO,MAAM,IAAI;AAC1E,MAAI,CAAC,kBAAkB,KAAK,GAAG,EAAG,OAAM,IAAI,MAAM,8BAA8B;AAChF,SAAO;AACT;AAEA,SAAS,YAAY,OAAe;AAClC,SAAO,kBAAkB,KAAK,KAAK;AACrC;AAEA,SAAS,iBAAiB,OAAe;AACvC,MAAI,kBAAkB,KAAK,KAAK,GAAG;AACjC,UAAM,IAAI,MAAM,4EAA4E;AAAA,EAC9F;AACA,MAAI,CAAC,kBAAkB,KAAK,KAAK,EAAG,OAAM,IAAI,MAAM,oCAAoC;AAC1F;AAEO,SAAS,sBAAsB,OAAe;AACnD,QAAM,QAAQ,4BAA4B,KAAK,KAAK;AACpD,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,QAAQ,OAAO,MAAM,CAAC,CAAC;AAC7B,QAAM,QAAQ,OAAO,MAAM,CAAC,CAAC;AAC7B,SAAO,QAAQ,KAAM,UAAU,KAAK,SAAS;AAC/C;AAEA,SAAS,qBAAqB,QAA4B;AACxD,MAAI;AACF,QACE,mBAAmB,OAAO,YAAY,MAAM,MAAM,OAAO,YAAY,UACrE,sBAAsB,OAAO,YAAY,SAAS,MAAM,OAAO,YAAY,WAC3E;AACA,YAAM,IAAI,MAAM,yCAAyC;AAAA,IAC3D;AACA,yBAAqB,OAAO,YAAY,SAAS;AAAA,EACnD,SAAS,OAAO;AACd,UAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,MAAM,CAAC;AAAA,EACnE;AACF;AAEA,SAAS,uBAAuB,QAAgB;AAC9C,MAAI;AACJ,MAAI;AACF,iBAAa,mBAAmB,MAAM;AAAA,EACxC,SAAS,OAAO;AACd,UAAM,IAAI,MAAM,iBAAiB,QAAQ,MAAM,UAAU,uBAAuB;AAAA,MAC9E,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACA,MAAI,CAAC,cAAc,eAAe,OAAQ,OAAM,IAAI,MAAM,uCAAuC;AACnG;AAEA,eAAe,qBAAwB,UAAkB,KAAuB,QAAkC;AAChH,QAAM,WAAW,uBAAuB,IAAI,QAAQ,KAAK,QAAQ,QAAQ;AACzE,MAAI,UAAU;AACd,QAAM,YAAY,SACf,MAAM,MAAM,MAAS,EACrB,KAAK,MAAM;AACV,mBAAe,MAAM;AACrB,cAAU;AACV,WAAO,IAAI;AAAA,EACb,CAAC;AACH,QAAM,OAAO,UAAU;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACA,yBAAuB,IAAI,UAAU,IAAI;AACzC,OAAK,KAAK,KAAK,MAAM;AACnB,QAAI,uBAAuB,IAAI,QAAQ,MAAM,KAAM,wBAAuB,OAAO,QAAQ;AAAA,EAC3F,CAAC;AACD,MAAI,CAAC,OAAQ,QAAO;AACpB,iBAAe,MAAM;AACrB,MAAI;AACJ,QAAM,UAAU,IAAI,QAAe,CAAC,UAAU,WAAW;AACvD,kBAAc;AAAA,EAChB,CAAC;AACD,QAAM,UAAU,MAAM,cAAc,YAAY,MAAM,CAAC;AACvD,SAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AACxD,MAAI,OAAO,QAAS,SAAQ;AAC5B,MAAI;AACF,WAAO,MAAM,QAAQ,KAAK,CAAC,WAAW,OAAO,CAAC;AAAA,EAChD,SAAS,OAAO;AAGd,QAAI,QAAS,OAAM;AACnB,UAAM;AAAA,EACR,UAAE;AACA,WAAO,oBAAoB,SAAS,OAAO;AAAA,EAC7C;AACF;AAEA,eAAe,iBAAiB,QAAgB,OAAe;AAC7D,MAAI;AACF,UAAM,OAAO,MAAM,GAAG,MAAM,MAAM;AAClC,QAAI,KAAK,eAAe,EAAG,OAAM,IAAI,MAAM,sBAAsB,KAAK,GAAG;AAAA,EAC3E,SAAS,OAAO;AACd,QAAK,MAAgC,SAAS,SAAU,OAAM;AAAA,EAChE;AACF;AAEA,SAAS,eAAe,OAAe,QAAgB,UAAkB;AACvE,SACE,MACG,WAAW,QAAQ,cAAc,EACjC,WAAW,UAAU,aAAa,EAClC,QAAQ,yBAAyB,wBAAwB,EACzD,QAAQ,2CAA2C,eAAe,EAClE,QAAQ,qBAAqB,mBAAmB,EAEhD,QAAQ,kCAAkC,GAAG,EAC7C,KAAK,EACL,MAAM,GAAG,IAAI;AAEpB;AAEA,SAASA,QAAO,OAAe;AAC7B,SAAOC,YAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AACxD;AAEA,SAAS,YAAY,QAAqB;AACxC,SAAO,OAAO,kBAAkB,QAAQ,OAAO,SAAS,IAAI,aAAa,6BAA6B,YAAY;AACpH;",
5
+ "mappings": "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",
6
6
  "names": ["createHash", "process", "process", "path", "sha256", "createHash"]
7
7
  }
@@ -1,16 +1,21 @@
1
1
  // @generated by scripts/build-runtime.mjs; do not edit.
2
2
  // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
3
  import {
4
- normalizeLocalFields,
5
4
  overlayLocalFields,
6
5
  portableSnapshot,
7
6
  sameLocalFields,
8
7
  validatePortableSnapshot,
9
8
  validateSnapshotFieldPolicy
10
- } from "./chunk-A6HU4ERM.ts";
11
- import "./chunk-QOFMXPM5.ts";
9
+ } from "./chunk-UGSSZWQ6.ts";
10
+ import {
11
+ normalizeLocalFields
12
+ } from "./chunk-X7R6DCVF.ts";
12
13
  import "./chunk-ZW5ZLGBI.ts";
13
- import "./chunk-HUZ5CR4W.ts";
14
+ import "./chunk-PHANBTVM.ts";
15
+ import "./chunk-DFJGTVPX.ts";
16
+ import "./chunk-DO55XUNU.ts";
17
+ import "./chunk-AR2DGDUI.ts";
18
+ import "./chunk-YZ5BQNRZ.ts";
14
19
  export {
15
20
  normalizeLocalFields,
16
21
  overlayLocalFields,
@@ -19,4 +24,4 @@ export {
19
24
  validatePortableSnapshot,
20
25
  validateSnapshotFieldPolicy
21
26
  };
22
- //# sourceMappingURL=local-fields-6DGYOOIK.ts.map
27
+ //# sourceMappingURL=local-fields-B6JWLPAE.ts.map
@@ -0,0 +1,28 @@
1
+ // @generated by scripts/build-runtime.mjs; do not edit.
2
+ // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
+ import {
4
+ dispatchManagerResult
5
+ } from "./chunk-M5IV3KL2.ts";
6
+ import "./chunk-BJXSCGQK.ts";
7
+ import "./chunk-QWV3XKNJ.ts";
8
+ import "./chunk-RAMHGOX2.ts";
9
+ import "./chunk-JXWTEJS5.ts";
10
+ import "./chunk-UGSSZWQ6.ts";
11
+ import "./chunk-AMJRUXFT.ts";
12
+ import "./chunk-K3RIEL6J.ts";
13
+ import "./chunk-7D5SF7P3.ts";
14
+ import "./chunk-RX3WGWVL.ts";
15
+ import "./chunk-X7R6DCVF.ts";
16
+ import "./chunk-PWMWOJP4.ts";
17
+ import "./chunk-ZW5ZLGBI.ts";
18
+ import "./chunk-2JZFHNLM.ts";
19
+ import "./chunk-T2SJD3N7.ts";
20
+ import "./chunk-PHANBTVM.ts";
21
+ import "./chunk-DFJGTVPX.ts";
22
+ import "./chunk-DO55XUNU.ts";
23
+ import "./chunk-AR2DGDUI.ts";
24
+ import "./chunk-YZ5BQNRZ.ts";
25
+ export {
26
+ dispatchManagerResult
27
+ };
28
+ //# sourceMappingURL=manager-result-dispatcher-NODX3KKH.ts.map
@@ -1,5 +1,12 @@
1
1
  // @generated by scripts/build-runtime.mjs; do not edit.
2
2
  // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
+ import {
4
+ SETUP_SWITCH_ACTION_OPTIONS,
5
+ saveOnSwitch,
6
+ setupSwitchActionFromLabel,
7
+ setupSwitchActionLabel,
8
+ useSyncSetup
9
+ } from "./chunk-PWA3YN5Z.ts";
3
10
  import {
4
11
  applyS3CredentialUpdate,
5
12
  chooseS3CredentialUpdate,
@@ -19,43 +26,41 @@ import {
19
26
  showEditS3Target,
20
27
  showEditWebDavStorageProfile,
21
28
  showEditWebDavTarget
22
- } from "./chunk-U3XRI2HF.ts";
29
+ } from "./chunk-UCD7TQDT.ts";
30
+ import {
31
+ automaticSyncSummary
32
+ } from "./chunk-ECYCNZOE.ts";
23
33
  import {
24
34
  dispatchManagerResult
25
- } from "./chunk-P7DD5PWZ.ts";
35
+ } from "./chunk-M5IV3KL2.ts";
26
36
  import {
27
37
  runCancellableOperation
28
- } from "./chunk-JCH3VXIO.ts";
29
- import "./chunk-YK52VDXG.ts";
30
- import "./chunk-ORGBI36T.ts";
31
- import {
32
- SETUP_SWITCH_ACTION_OPTIONS,
33
- saveOnSwitch,
34
- setupSwitchActionFromLabel,
35
- setupSwitchActionLabel,
36
- useSyncSetup
37
- } from "./chunk-GP5DU62N.ts";
38
+ } from "./chunk-BJXSCGQK.ts";
39
+ import "./chunk-QWV3XKNJ.ts";
40
+ import "./chunk-RAMHGOX2.ts";
38
41
  import {
39
42
  confirmMergeReview
40
- } from "./chunk-5XZOC7FD.ts";
43
+ } from "./chunk-KHBPED6W.ts";
44
+ import "./chunk-Z5O2TLNF.ts";
41
45
  import {
42
46
  addStorageConnection,
43
47
  removeStorageConnection,
44
48
  removeSyncSetup,
45
49
  updateStorageConnection,
46
50
  updateSyncSetup
47
- } from "./chunk-B4QZBDBT.ts";
51
+ } from "./chunk-JXWTEJS5.ts";
52
+ import "./chunk-MRIPZGPR.ts";
53
+ import {
54
+ syncErrorGuidance
55
+ } from "./chunk-G4RUXRWZ.ts";
56
+ import {
57
+ sameLocalFields
58
+ } from "./chunk-UGSSZWQ6.ts";
48
59
  import {
49
60
  observationMatchesConfig,
50
61
  observationSummary,
51
62
  syncAttentionMatchesConfig
52
- } from "./chunk-GSNPASKB.ts";
53
- import {
54
- automaticSyncSummary
55
- } from "./chunk-ECYCNZOE.ts";
56
- import {
57
- configureSyncStatus
58
- } from "./chunk-K3RIEL6J.ts";
63
+ } from "./chunk-U77DWNRH.ts";
59
64
  import {
60
65
  AUTOMATIC_SYNC_DESCRIPTION,
61
66
  STARTUP_TRANSFER_DESCRIPTION,
@@ -63,14 +68,13 @@ import {
63
68
  } from "./chunk-NLWS55B6.ts";
64
69
  import {
65
70
  captureMutationOwner
66
- } from "./chunk-UOHR7LRO.ts";
71
+ } from "./chunk-5WJQ6XOW.ts";
67
72
  import {
68
73
  safeTerminalText
69
74
  } from "./chunk-AMJRUXFT.ts";
70
- import "./chunk-UBV24CG4.ts";
71
75
  import {
72
- syncErrorGuidance
73
- } from "./chunk-G4RUXRWZ.ts";
76
+ configureSyncStatus
77
+ } from "./chunk-K3RIEL6J.ts";
74
78
  import {
75
79
  errorMessage
76
80
  } from "./chunk-7D5SF7P3.ts";
@@ -88,32 +92,34 @@ import {
88
92
  syncCheckConfigFingerprint,
89
93
  syncConfigReviewIdentity,
90
94
  updateLocalConfig
91
- } from "./chunk-QO333NM4.ts";
95
+ } from "./chunk-RX3WGWVL.ts";
92
96
  import {
93
- normalizeLocalFields,
94
- sameLocalFields
95
- } from "./chunk-A6HU4ERM.ts";
97
+ normalizeLocalFields
98
+ } from "./chunk-X7R6DCVF.ts";
96
99
  import {
97
100
  inspectLock,
98
101
  isLockGuardHeld,
99
102
  isStaleLock
100
- } from "./chunk-AAEEHR7H.ts";
103
+ } from "./chunk-MDUORMCK.ts";
101
104
  import {
102
105
  throwIfAborted
103
106
  } from "./chunk-PWMWOJP4.ts";
104
- import {
105
- compareSyncInclude,
106
- syncIncludeSelection
107
- } from "./chunk-QOFMXPM5.ts";
108
107
  import "./chunk-ZW5ZLGBI.ts";
109
108
  import {
110
109
  readStateForConfig,
111
110
  syncStateFingerprint
112
- } from "./chunk-UPNVIUBN.ts";
111
+ } from "./chunk-73MDIVYJ.ts";
113
112
  import "./chunk-SWRVXVFD.ts";
114
113
  import "./chunk-2JZFHNLM.ts";
115
114
  import "./chunk-T2SJD3N7.ts";
116
- import "./chunk-HUZ5CR4W.ts";
115
+ import "./chunk-PHANBTVM.ts";
116
+ import {
117
+ compareSyncInclude,
118
+ syncIncludeSelection
119
+ } from "./chunk-DFJGTVPX.ts";
120
+ import "./chunk-DO55XUNU.ts";
121
+ import "./chunk-AR2DGDUI.ts";
122
+ import "./chunk-YZ5BQNRZ.ts";
117
123
 
118
124
  // src/ui/manager-ui.ts
119
125
  import { defineMenu as defineMenu5, runMenu as runMenu5 } from "@narumitw/pi-tui-kit";
@@ -184,7 +190,7 @@ function blockedSyncMenuItem(label, manager) {
184
190
  };
185
191
  }
186
192
  async function showManagerAttention(ctx, attention, runRoute, signal, onSelectionResolved) {
187
- const { showRemoteSelectionReview } = await import("./remote-selection-ui-YFPGYGNE.ts");
193
+ const { showRemoteSelectionReview } = await import("./remote-selection-ui-OHMIQ32X.ts");
188
194
  if (signal?.aborted) return "close";
189
195
  const review = await showRemoteSelectionReview(ctx, attention.decision.setupName, signal, void 0, {
190
196
  decision: attention.decision,
@@ -554,7 +560,7 @@ async function describeManagerState(signal, attention, inspectOperation = inspec
554
560
  `Automatic sync: ${automaticSyncSummary(config.automatic)}`,
555
561
  `Startup transfer: ${startupTransferSummary(config)}`,
556
562
  `Agent mode: ${config.agentMode ? "On (experimental; autonomous merged sync)" : "Off"}`,
557
- ...config.continuous ? await (await import("./continuous-record-SQJ47CXN.ts")).continuousStatusLines(config) : [],
563
+ ...config.continuous ? await (await import("./continuous-record-4DQ2EAZS.ts")).continuousStatusLines(config) : [],
558
564
  `Last applied: ${lastAppliedSnapshot}`,
559
565
  ...noSyncedContent ? ["", "No included content is selected. Choose included content in Settings before syncing."] : [],
560
566
  "",
@@ -1797,7 +1803,7 @@ async function showSyncSettings(ctx, runRoute, signal) {
1797
1803
  },
1798
1804
  "remote-include": async ({ signal: actionSignal }) => {
1799
1805
  const reviewSignal = signal ? AbortSignal.any([signal, actionSignal]) : actionSignal;
1800
- const { showRemoteSelectionReview } = await import("./remote-selection-ui-YFPGYGNE.ts");
1806
+ const { showRemoteSelectionReview } = await import("./remote-selection-ui-OHMIQ32X.ts");
1801
1807
  if (reviewSignal.aborted) return { kind: "rejected" };
1802
1808
  const review = await showRemoteSelectionReview(ctx, setupName, reviewSignal, void 0, {
1803
1809
  origin: "settings",
@@ -1892,7 +1898,7 @@ async function showSyncManager(ctx, runRoute, sessionSignal, options = {}) {
1892
1898
  if (!attention) {
1893
1899
  const observation = options.getObservation?.();
1894
1900
  if (!observation) return { kind: "stay" };
1895
- const { showRemoteSelectionReview } = await import("./remote-selection-ui-YFPGYGNE.ts");
1901
+ const { showRemoteSelectionReview } = await import("./remote-selection-ui-OHMIQ32X.ts");
1896
1902
  if (sessionSignal?.aborted) return { kind: "close" };
1897
1903
  const config = await loadConfig();
1898
1904
  if (sessionSignal?.aborted) return { kind: "close" };
@@ -2131,4 +2137,4 @@ function syncMainMenuItem(label) {
2131
2137
  export {
2132
2138
  showSyncManager
2133
2139
  };
2134
- //# sourceMappingURL=manager-ui-26LEINEX.ts.map
2140
+ //# sourceMappingURL=manager-ui-DGRTG76I.ts.map