@narumitw/pi-sync 0.50.0 → 0.50.1

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 (44) hide show
  1. package/dist/chunks/attention-widget-Z7G3SYYJ.ts +9 -0
  2. package/dist/chunks/attention-widget-Z7G3SYYJ.ts.map +7 -0
  3. package/dist/chunks/{chunk-YKJHPTGO.ts → chunk-4CHTZMEO.ts} +2 -2
  4. package/dist/chunks/{chunk-JSYMGJQQ.ts → chunk-CCSN3F47.ts} +4 -4
  5. package/dist/chunks/{chunk-GWMHAQG4.ts → chunk-ETTRJDNP.ts} +2 -2
  6. package/dist/chunks/{chunk-X5OM6GXT.ts → chunk-G4RNQQZS.ts} +2 -2
  7. package/dist/chunks/{chunk-AXXS2BPA.ts → chunk-IJ6FJFA5.ts} +2 -2
  8. package/dist/chunks/{chunk-OUHGBFYF.ts → chunk-KW7YQEZN.ts} +4 -4
  9. package/dist/chunks/{chunk-6UHKGALE.ts → chunk-S7YBZR42.ts} +25 -13
  10. package/dist/chunks/chunk-S7YBZR42.ts.map +7 -0
  11. package/dist/chunks/{chunk-XBX4HBLG.ts → chunk-SZWBGPID.ts} +5 -5
  12. package/dist/chunks/{chunk-L7TBO32M.ts → chunk-T2B5IU74.ts} +3 -3
  13. package/dist/chunks/{git-backend-OQW46G2X.ts → git-backend-GMVS4PD4.ts} +8 -8
  14. package/dist/chunks/{manager-result-dispatcher-U23ODD32.ts → manager-result-dispatcher-FKIBM3GO.ts} +4 -4
  15. package/dist/chunks/{manager-ui-ABATHC36.ts → manager-ui-R3XPUFFS.ts} +18 -18
  16. package/dist/chunks/{remote-selection-ui-ZE3TY67S.ts → remote-selection-ui-D7RBRJNL.ts} +3 -3
  17. package/dist/chunks/{s3-backend-3P33LQHU.ts → s3-backend-66O4FGBH.ts} +6 -6
  18. package/dist/chunks/{setup-wizard-VB3VDOV5.ts → setup-wizard-IUB6ESEU.ts} +3 -3
  19. package/dist/chunks/{sync-inspection-FEP4L5TR.ts → sync-inspection-CST2KL65.ts} +5 -5
  20. package/dist/chunks/{sync-operations-ONJ27QRL.ts → sync-operations-LBX3GKCM.ts} +23 -23
  21. package/dist/index.ts +20 -20
  22. package/dist/index.ts.map +2 -2
  23. package/package.json +1 -1
  24. package/src/commands/command-handler.ts +2 -2
  25. package/src/sync/startup-check.ts +1 -1
  26. package/src/ui/attention-widget.ts +1 -0
  27. package/src/ui/sync-attention.ts +30 -12
  28. package/dist/chunks/chunk-6UHKGALE.ts.map +0 -7
  29. /package/dist/chunks/{chunk-YKJHPTGO.ts.map → chunk-4CHTZMEO.ts.map} +0 -0
  30. /package/dist/chunks/{chunk-JSYMGJQQ.ts.map → chunk-CCSN3F47.ts.map} +0 -0
  31. /package/dist/chunks/{chunk-GWMHAQG4.ts.map → chunk-ETTRJDNP.ts.map} +0 -0
  32. /package/dist/chunks/{chunk-X5OM6GXT.ts.map → chunk-G4RNQQZS.ts.map} +0 -0
  33. /package/dist/chunks/{chunk-AXXS2BPA.ts.map → chunk-IJ6FJFA5.ts.map} +0 -0
  34. /package/dist/chunks/{chunk-OUHGBFYF.ts.map → chunk-KW7YQEZN.ts.map} +0 -0
  35. /package/dist/chunks/{chunk-XBX4HBLG.ts.map → chunk-SZWBGPID.ts.map} +0 -0
  36. /package/dist/chunks/{chunk-L7TBO32M.ts.map → chunk-T2B5IU74.ts.map} +0 -0
  37. /package/dist/chunks/{git-backend-OQW46G2X.ts.map → git-backend-GMVS4PD4.ts.map} +0 -0
  38. /package/dist/chunks/{manager-result-dispatcher-U23ODD32.ts.map → manager-result-dispatcher-FKIBM3GO.ts.map} +0 -0
  39. /package/dist/chunks/{manager-ui-ABATHC36.ts.map → manager-ui-R3XPUFFS.ts.map} +0 -0
  40. /package/dist/chunks/{remote-selection-ui-ZE3TY67S.ts.map → remote-selection-ui-D7RBRJNL.ts.map} +0 -0
  41. /package/dist/chunks/{s3-backend-3P33LQHU.ts.map → s3-backend-66O4FGBH.ts.map} +0 -0
  42. /package/dist/chunks/{setup-wizard-VB3VDOV5.ts.map → setup-wizard-IUB6ESEU.ts.map} +0 -0
  43. /package/dist/chunks/{sync-inspection-FEP4L5TR.ts.map → sync-inspection-CST2KL65.ts.map} +0 -0
  44. /package/dist/chunks/{sync-operations-ONJ27QRL.ts.map → sync-operations-LBX3GKCM.ts.map} +0 -0
@@ -0,0 +1,9 @@
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
+
4
+ // src/ui/attention-widget.ts
5
+ import { EditorStatusWidget } from "@narumitw/pi-tui-kit";
6
+ export {
7
+ EditorStatusWidget
8
+ };
9
+ //# sourceMappingURL=attention-widget-Z7G3SYYJ.ts.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/ui/attention-widget.ts"],
4
+ "sourcesContent": ["export { EditorStatusWidget } from \"@narumitw/pi-tui-kit\";\n"],
5
+ "mappings": ";;;;AAAA,SAAS,0BAA0B;",
6
+ "names": []
7
+ }
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-HUDQATCL.ts";
6
6
  import {
7
7
  createSyncBackend
8
- } from "./chunk-L7TBO32M.ts";
8
+ } from "./chunk-T2B5IU74.ts";
9
9
  import {
10
10
  safeTerminalText
11
11
  } from "./chunk-LTBWGSBV.ts";
@@ -620,4 +620,4 @@ export {
620
620
  runCancellableOperation,
621
621
  showRemoteSelectionReview
622
622
  };
623
- //# sourceMappingURL=chunk-YKJHPTGO.ts.map
623
+ //# sourceMappingURL=chunk-4CHTZMEO.ts.map
@@ -1,11 +1,11 @@
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
- stateDir
5
- } from "./chunk-ZI5MXMEX.ts";
6
3
  import {
7
4
  backendIdentityCoordinates
8
5
  } from "./chunk-6LP3MCR2.ts";
6
+ import {
7
+ stateDir
8
+ } from "./chunk-ZI5MXMEX.ts";
9
9
  import {
10
10
  readJsonIfExists,
11
11
  writeJson
@@ -48,4 +48,4 @@ export {
48
48
  lockPath,
49
49
  ensureStateDir
50
50
  };
51
- //# sourceMappingURL=chunk-JSYMGJQQ.ts.map
51
+ //# sourceMappingURL=chunk-CCSN3F47.ts.map
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  ensureStateDir,
5
5
  lockPath
6
- } from "./chunk-JSYMGJQQ.ts";
6
+ } from "./chunk-CCSN3F47.ts";
7
7
  import {
8
8
  LOCKFILE_FS_ADAPTER,
9
9
  LOCK_GUARD_STALE_MS,
@@ -256,4 +256,4 @@ export {
256
256
  isStaleLock,
257
257
  unlock
258
258
  };
259
- //# sourceMappingURL=chunk-GWMHAQG4.ts.map
259
+ //# sourceMappingURL=chunk-ETTRJDNP.ts.map
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  runCancellableOperation,
5
5
  showRemoteSelectionReview
6
- } from "./chunk-YKJHPTGO.ts";
6
+ } from "./chunk-4CHTZMEO.ts";
7
7
  import {
8
8
  safeTerminalText
9
9
  } from "./chunk-LTBWGSBV.ts";
@@ -212,4 +212,4 @@ async function dispatchManagerResult(ctx, initialResult, origin, runRoute, signa
212
212
  export {
213
213
  dispatchManagerResult
214
214
  };
215
- //# sourceMappingURL=chunk-X5OM6GXT.ts.map
215
+ //# sourceMappingURL=chunk-G4RNQQZS.ts.map
@@ -2,7 +2,7 @@
2
2
  // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
3
  import {
4
4
  withLock
5
- } from "./chunk-GWMHAQG4.ts";
5
+ } from "./chunk-ETTRJDNP.ts";
6
6
  import {
7
7
  stateDir
8
8
  } from "./chunk-ZI5MXMEX.ts";
@@ -200,4 +200,4 @@ export {
200
200
  recoverSnapshotTransactionsOnStartup,
201
201
  recoverPendingSnapshotTransactions
202
202
  };
203
- //# sourceMappingURL=chunk-AXXS2BPA.ts.map
203
+ //# sourceMappingURL=chunk-IJ6FJFA5.ts.map
@@ -6,9 +6,6 @@ import {
6
6
  import {
7
7
  setSyncSetupCompletions
8
8
  } from "./chunk-CHH26D4F.ts";
9
- import {
10
- syncErrorGuidance
11
- } from "./chunk-CPEHGXJV.ts";
12
9
  import {
13
10
  safeTerminalText
14
11
  } from "./chunk-LTBWGSBV.ts";
@@ -40,6 +37,9 @@ import {
40
37
  normalizeGitDirectory,
41
38
  normalizeGitRemote
42
39
  } from "./chunk-TEN2ZBJV.ts";
40
+ import {
41
+ syncErrorGuidance
42
+ } from "./chunk-CPEHGXJV.ts";
43
43
  import {
44
44
  errorMessage
45
45
  } from "./chunk-2B2ELUF5.ts";
@@ -1252,4 +1252,4 @@ export {
1252
1252
  showAddWebDavStorageProfile,
1253
1253
  showEditWebDavStorageProfile
1254
1254
  };
1255
- //# sourceMappingURL=chunk-OUHGBFYF.ts.map
1255
+ //# sourceMappingURL=chunk-KW7YQEZN.ts.map
@@ -22,14 +22,17 @@ function syncAttentionMatchesConfig(attention, config) {
22
22
  function createSyncAttentionController() {
23
23
  let state;
24
24
  let observation;
25
+ let generation = 0;
25
26
  return {
26
27
  observe(value) {
28
+ generation++;
27
29
  observation = value;
28
30
  },
29
31
  observation() {
30
32
  return observation;
31
33
  },
32
34
  clearObservation() {
35
+ generation++;
33
36
  observation = void 0;
34
37
  },
35
38
  notifyObservation(ctx) {
@@ -38,6 +41,7 @@ function createSyncAttentionController() {
38
41
  }
39
42
  },
40
43
  set(decision, origin) {
44
+ generation++;
41
45
  state = { decision, origin, offered: false };
42
46
  },
43
47
  current() {
@@ -49,15 +53,19 @@ function createSyncAttentionController() {
49
53
  return true;
50
54
  },
51
55
  clear(ctx) {
56
+ generation++;
52
57
  state = void 0;
53
58
  clearAttentionPresentation(ctx);
54
59
  },
55
60
  reset(ctx) {
61
+ generation++;
56
62
  state = void 0;
57
63
  observation = void 0;
58
64
  clearAttentionPresentation(ctx);
59
65
  },
60
- publish(ctx) {
66
+ async publish(ctx, signal) {
67
+ const currentGeneration = ++generation;
68
+ if (signal?.aborted) return;
61
69
  if (!state && (!observation || !observationNeedsAttention(observation))) {
62
70
  clearAttentionPresentation(ctx);
63
71
  return;
@@ -66,18 +74,22 @@ function createSyncAttentionController() {
66
74
  status: "changes to review",
67
75
  lines: observationLines(observation)
68
76
  };
77
+ if (ctx.mode !== "tui") {
78
+ ctx.ui.setStatus(STATUS_KEY, presentation.status);
79
+ return;
80
+ }
81
+ const { EditorStatusWidget } = await import("./attention-widget-Z7G3SYYJ.ts");
82
+ if (generation !== currentGeneration || signal?.aborted) return;
69
83
  ctx.ui.setStatus(STATUS_KEY, presentation.status);
70
- if (ctx.mode !== "tui") return;
71
- ctx.ui.setWidget(WIDGET_KEY, (_tui, theme) => ({
72
- render(width) {
73
- const safeWidth = Math.max(1, width);
74
- return presentation.lines.map(
75
- (line, index) => truncateToWidth(theme.fg(index === 0 ? "warning" : "muted", line), safeWidth, "\u2026")
76
- );
77
- },
78
- invalidate() {
79
- }
80
- }));
84
+ ctx.ui.setWidget(
85
+ WIDGET_KEY,
86
+ (_tui, theme) => new EditorStatusWidget({
87
+ theme,
88
+ renderBody: (width) => presentation.lines.map(
89
+ (line, index) => width === 0 ? "" : truncateToWidth(theme.fg(index === 0 ? "warning" : "muted", line), width, "\u2026")
90
+ )
91
+ })
92
+ );
81
93
  }
82
94
  };
83
95
  }
@@ -131,4 +143,4 @@ export {
131
143
  observationMatchesConfig,
132
144
  observationSummary
133
145
  };
134
- //# sourceMappingURL=chunk-6UHKGALE.ts.map
146
+ //# sourceMappingURL=chunk-S7YBZR42.ts.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/ui/sync-attention.ts"],
4
+ "sourcesContent": ["import type { ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { truncateToWidth } from \"@earendil-works/pi-tui\";\nimport { syncCheckConfigFingerprint, syncConfigReviewFingerprint } from \"../settings/config.js\";\nimport type { AnySyncConfig } from \"../settings/settings-types.js\";\nimport type { StartupObservation } from \"../sync/sync-inspection.js\";\nimport {\n\tcompareSyncInclude,\n\ttype RemoteSelectionDecision,\n\tsameSyncInclude,\n} from \"../sync/sync-policy.js\";\nimport { safeTerminalText } from \"./terminal-text.js\";\n\nconst STATUS_KEY = \"sync\";\nconst WIDGET_KEY = \"sync:attention\";\n\nexport type SyncAttentionOrigin = \"sync\" | \"pull\" | \"push\";\n\nexport interface SyncAttentionState {\n\tdecision: RemoteSelectionDecision;\n\torigin: SyncAttentionOrigin;\n\toffered: boolean;\n}\n\nexport function syncAttentionMatchesConfig(attention: SyncAttentionState, config: AnySyncConfig) {\n\treturn (\n\t\tattention.decision.setupName === config.setupName &&\n\t\tattention.decision.configIdentity === syncConfigReviewFingerprint(config) &&\n\t\tsameSyncInclude(attention.decision.localInclude, config.include)\n\t);\n}\n\nexport interface SyncAttentionController {\n\tobserve(observation: StartupObservation): void;\n\tobservation(): StartupObservation | undefined;\n\tclearObservation(): void;\n\tnotifyObservation(ctx: ExtensionContext): void;\n\tset(decision: RemoteSelectionDecision, origin: SyncAttentionOrigin): void;\n\tcurrent(): SyncAttentionState | undefined;\n\tmarkOffered(): boolean;\n\tclear(ctx: ExtensionContext): void;\n\treset(ctx: ExtensionContext): void;\n\tpublish(ctx: ExtensionContext, signal?: AbortSignal): Promise<void>;\n}\n\nexport function createSyncAttentionController(): SyncAttentionController {\n\tlet state: SyncAttentionState | undefined;\n\tlet observation: StartupObservation | undefined;\n\tlet generation = 0;\n\n\treturn {\n\t\tobserve(value) {\n\t\t\tgeneration++;\n\t\t\tobservation = value;\n\t\t},\n\t\tobservation() {\n\t\t\treturn observation;\n\t\t},\n\t\tclearObservation() {\n\t\t\tgeneration++;\n\t\t\tobservation = undefined;\n\t\t},\n\t\tnotifyObservation(ctx) {\n\t\t\tif (observation && observationNeedsAttention(observation)) {\n\t\t\t\tctx.ui.notify(observationLines(observation).join(\"\\n\"), \"warning\");\n\t\t\t}\n\t\t},\n\t\tset(decision, origin) {\n\t\t\tgeneration++;\n\t\t\tstate = { decision, origin, offered: false };\n\t\t},\n\t\tcurrent() {\n\t\t\treturn state;\n\t\t},\n\t\tmarkOffered() {\n\t\t\tif (!state || state.offered) return false;\n\t\t\tstate = { ...state, offered: true };\n\t\t\treturn true;\n\t\t},\n\t\tclear(ctx) {\n\t\t\tgeneration++;\n\t\t\tstate = undefined;\n\t\t\tclearAttentionPresentation(ctx);\n\t\t},\n\t\treset(ctx) {\n\t\t\tgeneration++;\n\t\t\tstate = undefined;\n\t\t\tobservation = undefined;\n\t\t\tclearAttentionPresentation(ctx);\n\t\t},\n\t\tasync publish(ctx, signal) {\n\t\t\tconst currentGeneration = ++generation;\n\t\t\tif (signal?.aborted) return;\n\t\t\tif (!state && (!observation || !observationNeedsAttention(observation))) {\n\t\t\t\tclearAttentionPresentation(ctx);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst presentation = state\n\t\t\t\t? attentionPresentation(state.decision)\n\t\t\t\t: {\n\t\t\t\t\t\tstatus: \"changes to review\",\n\t\t\t\t\t\tlines: observationLines(observation as StartupObservation),\n\t\t\t\t\t};\n\t\t\tif (ctx.mode !== \"tui\") {\n\t\t\t\tctx.ui.setStatus(STATUS_KEY, presentation.status);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep Kit outside the eager startup graph; module loading owns no cancellable resources.\n\t\t\tconst { EditorStatusWidget } = await import(\"./attention-widget.js\");\n\t\t\tif (generation !== currentGeneration || signal?.aborted) return;\n\t\t\tctx.ui.setStatus(STATUS_KEY, presentation.status);\n\t\t\tctx.ui.setWidget(\n\t\t\t\tWIDGET_KEY,\n\t\t\t\t(_tui, theme) =>\n\t\t\t\t\tnew EditorStatusWidget({\n\t\t\t\t\t\ttheme,\n\t\t\t\t\t\trenderBody: (width) =>\n\t\t\t\t\t\t\tpresentation.lines.map((line, index) =>\n\t\t\t\t\t\t\t\twidth === 0\n\t\t\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t\t\t: truncateToWidth(theme.fg(index === 0 ? \"warning\" : \"muted\", line), width, \"\u2026\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t};\n}\n\nfunction attentionPresentation(decision: RemoteSelectionDecision) {\n\tconst setupName = safeTerminalText(decision.setupName);\n\tconst comparison = compareSyncInclude(decision.localInclude, decision.remoteInclude);\n\tconst difference =\n\t\tcomparison.remoteOnly.length === 0 && comparison.localOnly.length === 0\n\t\t\t? \"Only list order differs\"\n\t\t\t: `Remote ${comparison.remoteOnly.length} \u00B7 Device ${comparison.localOnly.length}`;\n\treturn {\n\t\tstatus: \"review needed\",\n\t\tlines: [`Pi Sync needs review \u00B7 ${setupName}`, difference, \"No changes \u00B7 Run /sync to review\"],\n\t};\n}\n\nexport function observationMatchesConfig(observation: StartupObservation, config: AnySyncConfig) {\n\treturn observation.configIdentity === syncCheckConfigFingerprint(config);\n}\n\nexport function observationSummary(observation: StartupObservation) {\n\tconst result = observation.inspection;\n\tif (result.emptyInclude) return \"No included content selected\";\n\tif (result.selectionState?.kind === \"different\")\n\t\treturn \"Synced-content list differs; review needed\";\n\tif (result.firstSync)\n\t\treturn result.head\n\t\t\t? \"No sync baseline; review remote and local content\"\n\t\t\t: \"Remote empty; no sync baseline\";\n\tif (!result.head) return \"Remote snapshot missing; review needed\";\n\tif (result.localChanged && result.remoteChanged)\n\t\treturn \"Local and remote changed since last sync; review needed\";\n\tif (result.remoteChanged) return \"Remote changed since last sync\";\n\tif (result.localChanged) return \"Local content changed since last sync\";\n\tif (result.selectionState?.kind === \"legacy\")\n\t\treturn \"Legacy remote has no authoritative content list\";\n\treturn \"No changes detected since last sync\";\n}\n\nexport function observationNeedsAttention(observation: StartupObservation) {\n\tconst result = observation.inspection;\n\treturn (\n\t\tresult.emptyInclude ||\n\t\tresult.firstSync ||\n\t\t!result.head ||\n\t\tresult.localChanged ||\n\t\tresult.remoteChanged ||\n\t\tresult.selectionState?.kind !== \"same\"\n\t);\n}\n\nfunction observationLines(observation: StartupObservation) {\n\treturn [\n\t\t`Pi Sync check \u00B7 ${safeTerminalText(observation.setupName)}`,\n\t\tobservationSummary(observation),\n\t\t\"No startup transfer \u00B7 Run /sync to review\",\n\t];\n}\n\nfunction clearAttentionPresentation(ctx: ExtensionContext) {\n\tctx.ui.setStatus(STATUS_KEY, undefined);\n\tctx.ui.setWidget(WIDGET_KEY, undefined);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,5 +1,8 @@
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
+ createSyncBackend
5
+ } from "./chunk-T2B5IU74.ts";
3
6
  import {
4
7
  hasLocalChanges,
5
8
  remoteChangedSinceState
@@ -10,10 +13,7 @@ import {
10
13
  import {
11
14
  readStateForConfig,
12
15
  syncStateFingerprint
13
- } from "./chunk-JSYMGJQQ.ts";
14
- import {
15
- createSyncBackend
16
- } from "./chunk-L7TBO32M.ts";
16
+ } from "./chunk-CCSN3F47.ts";
17
17
  import {
18
18
  createSnapshot
19
19
  } from "./chunk-OEX4ABY6.ts";
@@ -54,4 +54,4 @@ async function inspectSync(config, options, signal, factory = createSyncBackend)
54
54
  export {
55
55
  inspectSync
56
56
  };
57
- //# sourceMappingURL=chunk-XBX4HBLG.ts.map
57
+ //# sourceMappingURL=chunk-SZWBGPID.ts.map
@@ -5,7 +5,7 @@
5
5
  var createSyncBackend = async (config) => {
6
6
  switch (config.backend.type) {
7
7
  case "s3": {
8
- const { S3SyncBackend } = await import("./s3-backend-3P33LQHU.ts");
8
+ const { S3SyncBackend } = await import("./s3-backend-66O4FGBH.ts");
9
9
  return new S3SyncBackend(config.backend);
10
10
  }
11
11
  case "webdav": {
@@ -13,7 +13,7 @@ var createSyncBackend = async (config) => {
13
13
  return new WebDavSyncBackend(config.backend);
14
14
  }
15
15
  case "git": {
16
- const { GitSyncBackend } = await import("./git-backend-OQW46G2X.ts");
16
+ const { GitSyncBackend } = await import("./git-backend-GMVS4PD4.ts");
17
17
  return new GitSyncBackend(config.backend);
18
18
  }
19
19
  }
@@ -22,4 +22,4 @@ var createSyncBackend = async (config) => {
22
22
  export {
23
23
  createSyncBackend
24
24
  };
25
- //# sourceMappingURL=chunk-L7TBO32M.ts.map
25
+ //# sourceMappingURL=chunk-T2B5IU74.ts.map
@@ -3,13 +3,6 @@
3
3
  import {
4
4
  stateDir
5
5
  } from "./chunk-ZI5MXMEX.ts";
6
- import {
7
- SyncBackendConflictError,
8
- SyncBackendPublicationOutcomeUnknownError
9
- } from "./chunk-D5X27LCA.ts";
10
- import {
11
- syncErrorGuidance
12
- } from "./chunk-CPEHGXJV.ts";
13
6
  import {
14
7
  normalizeGitBranch,
15
8
  normalizeGitDirectory,
@@ -17,6 +10,13 @@ import {
17
10
  normalizeGitRemoteIdentity,
18
11
  validateGitNamespace
19
12
  } from "./chunk-TEN2ZBJV.ts";
13
+ import {
14
+ SyncBackendConflictError,
15
+ SyncBackendPublicationOutcomeUnknownError
16
+ } from "./chunk-D5X27LCA.ts";
17
+ import {
18
+ syncErrorGuidance
19
+ } from "./chunk-CPEHGXJV.ts";
20
20
  import "./chunk-2B2ELUF5.ts";
21
21
  import {
22
22
  portableSnapshotSelection,
@@ -1126,4 +1126,4 @@ export {
1126
1126
  gitBackendIdentity,
1127
1127
  isSupportedGitVersion
1128
1128
  };
1129
- //# sourceMappingURL=git-backend-OQW46G2X.ts.map
1129
+ //# sourceMappingURL=git-backend-GMVS4PD4.ts.map
@@ -2,10 +2,10 @@
2
2
  // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
3
  import {
4
4
  dispatchManagerResult
5
- } from "./chunk-X5OM6GXT.ts";
6
- import "./chunk-YKJHPTGO.ts";
5
+ } from "./chunk-G4RNQQZS.ts";
6
+ import "./chunk-4CHTZMEO.ts";
7
7
  import "./chunk-HUDQATCL.ts";
8
- import "./chunk-L7TBO32M.ts";
8
+ import "./chunk-T2B5IU74.ts";
9
9
  import "./chunk-LTBWGSBV.ts";
10
10
  import "./chunk-LCRI3ABW.ts";
11
11
  import "./chunk-C7XY5NF5.ts";
@@ -19,4 +19,4 @@ import "./chunk-JAAKLL6M.ts";
19
19
  export {
20
20
  dispatchManagerResult
21
21
  };
22
- //# sourceMappingURL=manager-result-dispatcher-U23ODD32.ts.map
22
+ //# sourceMappingURL=manager-result-dispatcher-FKIBM3GO.ts.map
@@ -2,7 +2,10 @@
2
2
  // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
3
  import {
4
4
  dispatchManagerResult
5
- } from "./chunk-X5OM6GXT.ts";
5
+ } from "./chunk-G4RNQQZS.ts";
6
+ import {
7
+ runCancellableOperation
8
+ } from "./chunk-4CHTZMEO.ts";
6
9
  import {
7
10
  SETUP_SWITCH_ACTION_OPTIONS,
8
11
  saveOnSwitch,
@@ -10,20 +13,22 @@ import {
10
13
  setupSwitchActionLabel,
11
14
  useSyncSetup
12
15
  } from "./chunk-SL64RLXR.ts";
16
+ import "./chunk-HUDQATCL.ts";
17
+ import "./chunk-T2B5IU74.ts";
13
18
  import {
14
19
  observationMatchesConfig,
15
20
  observationSummary,
16
21
  syncAttentionMatchesConfig
17
- } from "./chunk-6UHKGALE.ts";
22
+ } from "./chunk-S7YBZR42.ts";
18
23
  import {
19
24
  inspectLock,
20
25
  isLockGuardHeld,
21
26
  isStaleLock
22
- } from "./chunk-GWMHAQG4.ts";
27
+ } from "./chunk-ETTRJDNP.ts";
23
28
  import {
24
29
  readStateForConfig,
25
30
  syncStateFingerprint
26
- } from "./chunk-JSYMGJQQ.ts";
31
+ } from "./chunk-CCSN3F47.ts";
27
32
  import {
28
33
  AUTOMATIC_SYNC_DESCRIPTION,
29
34
  applyS3CredentialUpdate,
@@ -44,20 +49,11 @@ import {
44
49
  showEditS3Target,
45
50
  showEditWebDavStorageProfile,
46
51
  showEditWebDavTarget
47
- } from "./chunk-OUHGBFYF.ts";
52
+ } from "./chunk-KW7YQEZN.ts";
48
53
  import {
49
54
  automaticSyncSummary
50
55
  } from "./chunk-Z4DQF6L3.ts";
51
56
  import "./chunk-CHH26D4F.ts";
52
- import "./chunk-ZI5MXMEX.ts";
53
- import {
54
- syncErrorGuidance
55
- } from "./chunk-CPEHGXJV.ts";
56
- import {
57
- runCancellableOperation
58
- } from "./chunk-YKJHPTGO.ts";
59
- import "./chunk-HUDQATCL.ts";
60
- import "./chunk-L7TBO32M.ts";
61
57
  import {
62
58
  safeTerminalText
63
59
  } from "./chunk-LTBWGSBV.ts";
@@ -82,7 +78,11 @@ import {
82
78
  updateLocalConfig
83
79
  } from "./chunk-C7XY5NF5.ts";
84
80
  import "./chunk-6LP3MCR2.ts";
81
+ import "./chunk-ZI5MXMEX.ts";
85
82
  import "./chunk-TEN2ZBJV.ts";
83
+ import {
84
+ syncErrorGuidance
85
+ } from "./chunk-CPEHGXJV.ts";
86
86
  import {
87
87
  errorMessage
88
88
  } from "./chunk-2B2ELUF5.ts";
@@ -164,7 +164,7 @@ function blockedSyncMenuItem(label, manager) {
164
164
  };
165
165
  }
166
166
  async function showManagerAttention(ctx, attention, runRoute, signal, onSelectionResolved) {
167
- const { showRemoteSelectionReview } = await import("./remote-selection-ui-ZE3TY67S.ts");
167
+ const { showRemoteSelectionReview } = await import("./remote-selection-ui-D7RBRJNL.ts");
168
168
  if (signal?.aborted) return "close";
169
169
  const review = await showRemoteSelectionReview(
170
170
  ctx,
@@ -767,7 +767,7 @@ async function showSyncSettings(ctx, runRoute, signal) {
767
767
  },
768
768
  "remote-include": async ({ signal: actionSignal }) => {
769
769
  const reviewSignal = signal ? AbortSignal.any([signal, actionSignal]) : actionSignal;
770
- const { showRemoteSelectionReview } = await import("./remote-selection-ui-ZE3TY67S.ts");
770
+ const { showRemoteSelectionReview } = await import("./remote-selection-ui-D7RBRJNL.ts");
771
771
  if (reviewSignal.aborted) return { kind: "rejected" };
772
772
  const review = await showRemoteSelectionReview(ctx, setupName, reviewSignal, void 0, {
773
773
  origin: "settings",
@@ -1452,7 +1452,7 @@ async function showSyncManager(ctx, runRoute, sessionSignal, options = {}) {
1452
1452
  if (!attention) {
1453
1453
  const observation = options.getObservation?.();
1454
1454
  if (!observation) return { kind: "stay" };
1455
- const { showRemoteSelectionReview } = await import("./remote-selection-ui-ZE3TY67S.ts");
1455
+ const { showRemoteSelectionReview } = await import("./remote-selection-ui-D7RBRJNL.ts");
1456
1456
  if (sessionSignal?.aborted) return { kind: "close" };
1457
1457
  const config = await loadConfig();
1458
1458
  if (sessionSignal?.aborted) return { kind: "close" };
@@ -1677,4 +1677,4 @@ function syncMainMenuItem(label) {
1677
1677
  export {
1678
1678
  showSyncManager
1679
1679
  };
1680
- //# sourceMappingURL=manager-ui-ABATHC36.ts.map
1680
+ //# sourceMappingURL=manager-ui-R3XPUFFS.ts.map
@@ -2,9 +2,9 @@
2
2
  // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
3
  import {
4
4
  showRemoteSelectionReview
5
- } from "./chunk-YKJHPTGO.ts";
5
+ } from "./chunk-4CHTZMEO.ts";
6
6
  import "./chunk-HUDQATCL.ts";
7
- import "./chunk-L7TBO32M.ts";
7
+ import "./chunk-T2B5IU74.ts";
8
8
  import "./chunk-LTBWGSBV.ts";
9
9
  import "./chunk-LCRI3ABW.ts";
10
10
  import "./chunk-C7XY5NF5.ts";
@@ -18,4 +18,4 @@ import "./chunk-JAAKLL6M.ts";
18
18
  export {
19
19
  showRemoteSelectionReview
20
20
  };
21
- //# sourceMappingURL=remote-selection-ui-ZE3TY67S.ts.map
21
+ //# sourceMappingURL=remote-selection-ui-D7RBRJNL.ts.map
@@ -1,9 +1,14 @@
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
+ sessionTokenWarnings
5
+ } from "./chunk-C7XY5NF5.ts";
6
+ import "./chunk-6LP3MCR2.ts";
3
7
  import {
4
8
  decodeSnapshot,
5
9
  encodeSnapshot
6
10
  } from "./chunk-Q2TUM5X6.ts";
11
+ import "./chunk-TEN2ZBJV.ts";
7
12
  import {
8
13
  SyncBackendConflictError,
9
14
  SyncBackendPublicationOutcomeUnknownError
@@ -11,11 +16,6 @@ import {
11
16
  import {
12
17
  syncErrorGuidance
13
18
  } from "./chunk-CPEHGXJV.ts";
14
- import {
15
- sessionTokenWarnings
16
- } from "./chunk-C7XY5NF5.ts";
17
- import "./chunk-6LP3MCR2.ts";
18
- import "./chunk-TEN2ZBJV.ts";
19
19
  import "./chunk-2B2ELUF5.ts";
20
20
  import {
21
21
  encodeKey,
@@ -755,4 +755,4 @@ export {
755
755
  snapshotKey,
756
756
  storageRoot
757
757
  };
758
- //# sourceMappingURL=s3-backend-3P33LQHU.ts.map
758
+ //# sourceMappingURL=s3-backend-66O4FGBH.ts.map
@@ -5,10 +5,9 @@ import {
5
5
  showGitSetup,
6
6
  showS3Setup,
7
7
  showWebDavSetup
8
- } from "./chunk-OUHGBFYF.ts";
8
+ } from "./chunk-KW7YQEZN.ts";
9
9
  import "./chunk-Z4DQF6L3.ts";
10
10
  import "./chunk-CHH26D4F.ts";
11
- import "./chunk-CPEHGXJV.ts";
12
11
  import {
13
12
  safeTerminalText
14
13
  } from "./chunk-LTBWGSBV.ts";
@@ -19,6 +18,7 @@ import {
19
18
  } from "./chunk-C7XY5NF5.ts";
20
19
  import "./chunk-6LP3MCR2.ts";
21
20
  import "./chunk-TEN2ZBJV.ts";
21
+ import "./chunk-CPEHGXJV.ts";
22
22
  import {
23
23
  errorMessage
24
24
  } from "./chunk-2B2ELUF5.ts";
@@ -86,4 +86,4 @@ async function showSetupWizard(ctx, signal) {
86
86
  export {
87
87
  showSetupWizard
88
88
  };
89
- //# sourceMappingURL=setup-wizard-VB3VDOV5.ts.map
89
+ //# sourceMappingURL=setup-wizard-IUB6ESEU.ts.map
@@ -2,13 +2,13 @@
2
2
  // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
3
  import {
4
4
  inspectSync
5
- } from "./chunk-XBX4HBLG.ts";
5
+ } from "./chunk-SZWBGPID.ts";
6
+ import "./chunk-T2B5IU74.ts";
6
7
  import "./chunk-AUSDLD6F.ts";
7
8
  import "./chunk-NJFUIVYL.ts";
8
- import "./chunk-JSYMGJQQ.ts";
9
- import "./chunk-ZI5MXMEX.ts";
10
- import "./chunk-L7TBO32M.ts";
9
+ import "./chunk-CCSN3F47.ts";
11
10
  import "./chunk-6LP3MCR2.ts";
11
+ import "./chunk-ZI5MXMEX.ts";
12
12
  import "./chunk-TEN2ZBJV.ts";
13
13
  import "./chunk-OEX4ABY6.ts";
14
14
  import "./chunk-THMF4BVL.ts";
@@ -17,4 +17,4 @@ import "./chunk-JAAKLL6M.ts";
17
17
  export {
18
18
  inspectSync
19
19
  };
20
- //# sourceMappingURL=sync-inspection-FEP4L5TR.ts.map
20
+ //# sourceMappingURL=sync-inspection-CST2KL65.ts.map
@@ -1,8 +1,17 @@
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
+ formatRemoteSelectionStatus,
5
+ readRemoteSnapshot,
6
+ readSnapshotForHead,
7
+ requireCompatibleRemoteSelection
8
+ } from "./chunk-HUDQATCL.ts";
3
9
  import {
4
10
  inspectSync
5
- } from "./chunk-XBX4HBLG.ts";
11
+ } from "./chunk-SZWBGPID.ts";
12
+ import {
13
+ createSyncBackend
14
+ } from "./chunk-T2B5IU74.ts";
6
15
  import {
7
16
  canPullRemoteSessionsOnFirstSync,
8
17
  canPullRemoteSettingsOnFirstSync,
@@ -19,38 +28,20 @@ import {
19
28
  import {
20
29
  applySnapshotTransaction,
21
30
  recoverPendingSnapshotTransactions
22
- } from "./chunk-AXXS2BPA.ts";
31
+ } from "./chunk-IJ6FJFA5.ts";
23
32
  import {
24
33
  inspectLock,
25
34
  isLockGuardHeld,
26
35
  isStaleLock,
27
36
  withLock
28
- } from "./chunk-GWMHAQG4.ts";
37
+ } from "./chunk-ETTRJDNP.ts";
29
38
  import {
30
39
  throwIfAborted
31
40
  } from "./chunk-NJFUIVYL.ts";
32
41
  import {
33
42
  readStateForConfig,
34
43
  writeStateForConfig
35
- } from "./chunk-JSYMGJQQ.ts";
36
- import {
37
- encodeSnapshot
38
- } from "./chunk-Q2TUM5X6.ts";
39
- import {
40
- stateDir
41
- } from "./chunk-ZI5MXMEX.ts";
42
- import {
43
- expectedRemoteHead
44
- } from "./chunk-D5X27LCA.ts";
45
- import {
46
- formatRemoteSelectionStatus,
47
- readRemoteSnapshot,
48
- readSnapshotForHead,
49
- requireCompatibleRemoteSelection
50
- } from "./chunk-HUDQATCL.ts";
51
- import {
52
- createSyncBackend
53
- } from "./chunk-L7TBO32M.ts";
44
+ } from "./chunk-CCSN3F47.ts";
54
45
  import {
55
46
  safeTerminalText
56
47
  } from "./chunk-LTBWGSBV.ts";
@@ -60,7 +51,16 @@ import {
60
51
  syncSessionsWarnings
61
52
  } from "./chunk-C7XY5NF5.ts";
62
53
  import "./chunk-6LP3MCR2.ts";
54
+ import {
55
+ encodeSnapshot
56
+ } from "./chunk-Q2TUM5X6.ts";
57
+ import {
58
+ stateDir
59
+ } from "./chunk-ZI5MXMEX.ts";
63
60
  import "./chunk-TEN2ZBJV.ts";
61
+ import {
62
+ expectedRemoteHead
63
+ } from "./chunk-D5X27LCA.ts";
64
64
  import {
65
65
  SyncDecisionRequiredError,
66
66
  errorMessage
@@ -1191,4 +1191,4 @@ export {
1191
1191
  status,
1192
1192
  syncBoth
1193
1193
  };
1194
- //# sourceMappingURL=sync-operations-ONJ27QRL.ts.map
1194
+ //# sourceMappingURL=sync-operations-LBX3GKCM.ts.map