dsh-sessions-manager 3.7.1 → 3.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1750,6 +1750,25 @@ function conflictError(message) {
1750
1750
  function failureText(e) {
1751
1751
  return `${e && e.name || ""} ${e && e.message || e}`;
1752
1752
  }
1753
+ function requiredFormatVersionFromError(e) {
1754
+ const m = /requires Session format v(\d+)/.exec(String(e && e.message || ""));
1755
+ return m ? Number(m[1]) : null;
1756
+ }
1757
+ var OFFICIAL_HEADER_FIELDS = ["id", "createdAt", "cwd", "isSeeded", "delegationDepth", "parentSession", "origin", "agentPreset"];
1758
+ async function createWithCompatibleHeader(sp, header, createOptions) {
1759
+ try {
1760
+ return await sp.create(header, createOptions);
1761
+ } catch (e) {
1762
+ const required = requiredFormatVersionFromError(e);
1763
+ if (required === null || header.version === required) throw e;
1764
+ const normalized = {};
1765
+ for (const key of OFFICIAL_HEADER_FIELDS) {
1766
+ if (Object.hasOwn(header, key)) normalized[key] = header[key];
1767
+ }
1768
+ normalized.version = required;
1769
+ return await sp.create(normalized, createOptions);
1770
+ }
1771
+ }
1753
1772
  function isAlreadyOwned(e) {
1754
1773
  return /already owned/i.test(failureText(e));
1755
1774
  }
@@ -1867,7 +1886,17 @@ async function moveSessionToCwd({ sp, sid, header, canonical, events = [], inher
1867
1886
  error.code = "DSM_SESSION_DUP_LOG";
1868
1887
  throw error;
1869
1888
  }
1870
- const newHeader = Object.assign({}, header, { cwd: canonical });
1889
+ const newHeaderBase = Object.assign({}, header, { cwd: canonical });
1890
+ let createHeader = newHeaderBase;
1891
+ if (typeof sp.stat === "function") {
1892
+ try {
1893
+ const fresh = await sp.stat(sid);
1894
+ if (fresh && fresh.header && fresh.header.id === sid) {
1895
+ createHeader = Object.assign({}, fresh.header, { cwd: canonical });
1896
+ }
1897
+ } catch (e) {
1898
+ }
1899
+ }
1871
1900
  const firstSeq = events.length ? Number(events[0].seq) : 0;
1872
1901
  const replay = firstSeq !== 0 ? events.map((event, index) => ({ ...event, seq: index })) : events;
1873
1902
  const createOptions = header.isSeeded && Number.isSafeInteger(inheritedEventCount) && inheritedEventCount > 0 ? { inheritedEventCount } : void 0;
@@ -1879,7 +1908,7 @@ async function moveSessionToCwd({ sp, sid, header, canonical, events = [], inher
1879
1908
  let writer = null;
1880
1909
  try {
1881
1910
  try {
1882
- writer = await sp.create(newHeader, createOptions);
1911
+ writer = await createWithCompatibleHeader(sp, createHeader, createOptions);
1883
1912
  for (let i = 0; i < replay.length; i += MOVE_BATCH) {
1884
1913
  await writer.append(replay.slice(i, i + MOVE_BATCH));
1885
1914
  }
@@ -1956,7 +1985,7 @@ function emptyScanCandidate(sizeBytes) {
1956
1985
  }
1957
1986
 
1958
1987
  // src/index.js
1959
- var BUILD_STAMP = true ? "3.7.1+1277c4b2" : "dev";
1988
+ var BUILD_STAMP = true ? "3.7.2+71b956b8" : "dev";
1960
1989
  var name = "dsh-sessions-manager";
1961
1990
  var inject = ["webServer", "workspaceRegistry", "sessionPersistence", "sessionQuery", "storageDomain"];
1962
1991
  var MAX_TITLE = 80;