@diagrammo/dgmo 0.85.0 → 0.86.0

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 (95) hide show
  1. package/dist/advanced.d.ts +63 -9
  2. package/dist/advanced.js +69 -51
  3. package/dist/block.js +8 -8
  4. package/dist/chart-meta.js +3 -3
  5. package/dist/{chunk-LRNIYQ6Y.js → chunk-33FQ6HNV.js} +1 -1
  6. package/dist/{chunk-REUEU5PU.js → chunk-3CQS3CIO.js} +2 -2
  7. package/dist/{chunk-LQSNWE3W.js → chunk-4ELXLATB.js} +1 -1
  8. package/dist/{chunk-ADAGWVWJ.js → chunk-4YA5XW43.js} +39 -39
  9. package/dist/{chunk-23RWHHI5.js → chunk-5NU7NII2.js} +14 -2
  10. package/dist/{chunk-HMWZQ53A.js → chunk-7WGCQE2E.js} +1 -1
  11. package/dist/{chunk-NSS2EF5B.js → chunk-AAMCXQPP.js} +1 -1
  12. package/dist/{chunk-XD7XL3SF.js → chunk-AGO3PFGS.js} +1 -1
  13. package/dist/{chunk-JVRDKR5R.js → chunk-AQIBKTPG.js} +1 -1
  14. package/dist/{chunk-ITLPDLBH.js → chunk-BF7JAFJI.js} +1 -1
  15. package/dist/{chunk-RMAJIB6S.js → chunk-BHZE36F7.js} +3 -3
  16. package/dist/{chunk-6HOVLE3H.js → chunk-BT2WH2XT.js} +1 -1
  17. package/dist/{chunk-3MXJMZAN.js → chunk-BV6PKJUS.js} +105 -28
  18. package/dist/{chunk-PSH5DT26.js → chunk-C6FZZFYD.js} +2 -2
  19. package/dist/{chunk-7256EOAE.js → chunk-CFBY77QJ.js} +129 -10
  20. package/dist/{chunk-OZTDXMRQ.js → chunk-D4M25W6R.js} +1 -1
  21. package/dist/{chunk-A4PHPKNR.js → chunk-DAX42XVH.js} +1 -1
  22. package/dist/{chunk-V3LJIPS4.js → chunk-E6S2K6O2.js} +1 -1
  23. package/dist/{chunk-BIQYWWJ2.js → chunk-ERYHC4KJ.js} +1 -1
  24. package/dist/{chunk-JLGN6S4B.js → chunk-EWSESGC2.js} +32 -3
  25. package/dist/{chunk-MIZ46MOF.js → chunk-GYORDNOM.js} +1 -1
  26. package/dist/{chunk-D7D5YK4J.js → chunk-H6AFNCN3.js} +14 -2
  27. package/dist/{chunk-PEFPTQ3Z.js → chunk-HUMQIRJK.js} +1 -1
  28. package/dist/{chunk-XXAZ5C4K.js → chunk-IJ27L3R4.js} +1 -1
  29. package/dist/{chunk-VDMG3MM4.js → chunk-JD4RHBNX.js} +1 -1
  30. package/dist/{chunk-J2ICADUM.js → chunk-LHBMQJC3.js} +1 -1
  31. package/dist/{chunk-Y7FTHOMD.js → chunk-LIYWJ6DV.js} +32 -223
  32. package/dist/{chunk-HATTVAWX.js → chunk-LJFXC3IP.js} +1 -1
  33. package/dist/{chunk-T327J6CE.js → chunk-MSXRNVHB.js} +2 -2
  34. package/dist/{chunk-2QIGN7KL.js → chunk-MYHPRQHR.js} +6 -2
  35. package/dist/{chunk-UJRMARNX.js → chunk-NJIGYGZS.js} +19 -1
  36. package/dist/{chunk-RYZNNXUV.js → chunk-PKXKWHDW.js} +1 -1
  37. package/dist/{chunk-C5FEPGSJ.js → chunk-QJFT5MAH.js} +1 -1
  38. package/dist/{chunk-ULCB4BLF.js → chunk-QPE646M2.js} +1 -1
  39. package/dist/{chunk-UNSN56OJ.js → chunk-R2K5L4UA.js} +1 -1
  40. package/dist/{chunk-SLMAAJPE.js → chunk-RGI64U3A.js} +1 -1
  41. package/dist/chunk-TW6WMZFW.js +287 -0
  42. package/dist/{chunk-ZUUNTOMG.js → chunk-UIUXIDBX.js} +1 -1
  43. package/dist/{chunk-XIYVGO24.js → chunk-UMRZPRAN.js} +3 -3
  44. package/dist/{chunk-67USWFFE.js → chunk-UY6TEJJH.js} +1 -1
  45. package/dist/{chunk-YWHGWLY6.js → chunk-VEE777MD.js} +3 -3
  46. package/dist/{chunk-UGYZ5Q5Y.js → chunk-VJ2KROJ5.js} +1 -1
  47. package/dist/{chunk-OGKP2XGJ.js → chunk-VPVWG2GH.js} +1 -1
  48. package/dist/{chunk-IIEI7VK5.js → chunk-XCKNFFKM.js} +2 -0
  49. package/dist/{chunk-NJS62BAG.js → chunk-XFMQSFS4.js} +1 -1
  50. package/dist/cloud-reference.d.ts +11 -1
  51. package/dist/cloud-reference.js +1 -1
  52. package/dist/{dgmo-router-VILEOWQ2.js → dgmo-router-F2DSURTR.js} +4 -4
  53. package/dist/{dimensions-F3Y5T54V.js → dimensions-6QAWEGIR.js} +2 -2
  54. package/dist/{flowchart-renderer-TGQL4S4L.js → flowchart-renderer-H72L7BEC.js} +2 -2
  55. package/dist/index.js +8 -8
  56. package/dist/{layout-WZCXK7DF.js → layout-5NPBHV5F.js} +2 -2
  57. package/dist/{layout-WXVGMSI3.js → layout-5VSMZPMG.js} +2 -2
  58. package/dist/{layout-K6NI4VCS.js → layout-CUFA7XJD.js} +2 -2
  59. package/dist/{layout-NB7TKAWN.js → layout-LUQKAGGT.js} +2 -2
  60. package/dist/{layout-CFTB7GKV.js → layout-QIPCNUSB.js} +2 -2
  61. package/dist/{layout-PT7IKVCV.js → layout-QX5T6ZNE.js} +2 -2
  62. package/dist/layout-T6TAB5OI.js +10 -0
  63. package/dist/{layout-search-GRJEBAUF.js → layout-search-AW5VBDCV.js} +13 -8
  64. package/dist/live-link-resolve.d.ts +21 -3
  65. package/dist/live-link-resolve.js +47 -17
  66. package/dist/{parser-6TXNMXNB.js → parser-XYY5NHP4.js} +2 -2
  67. package/dist/{renderer-FXX3XSNW.js → renderer-2BWRW23Z.js} +2 -2
  68. package/dist/{renderer-OV3GUJRR.js → renderer-36JH4OMC.js} +4 -4
  69. package/dist/{renderer-EU27D4S6.js → renderer-425QUIYO.js} +2 -2
  70. package/dist/{renderer-HV6ZYJMC.js → renderer-4NZZ5J2F.js} +2 -2
  71. package/dist/{renderer-UGA5DGKR.js → renderer-5JVVJBAS.js} +2 -2
  72. package/dist/{renderer-YSH5EX54.js → renderer-AI2MD52D.js} +1 -1
  73. package/dist/{renderer-HWEGM72C.js → renderer-BICLPGAH.js} +2 -2
  74. package/dist/{renderer-XS42HEXW.js → renderer-CZJ4AMYV.js} +2 -2
  75. package/dist/{renderer-WUDVV363.js → renderer-E7WF75GY.js} +2 -2
  76. package/dist/{renderer-3XRDFNYF.js → renderer-EWJS2RAZ.js} +3 -3
  77. package/dist/{renderer-5YOF2AHJ.js → renderer-JEEGPLMM.js} +2 -2
  78. package/dist/{renderer-OXSLLQQC.js → renderer-KVAQE7PQ.js} +2 -2
  79. package/dist/{renderer-TF3NTKP3.js → renderer-NX4YKWCJ.js} +2 -2
  80. package/dist/{renderer-P7LQBDU2.js → renderer-QM23SWAM.js} +2 -2
  81. package/dist/{renderer-FBAFYSIQ.js → renderer-RAATRF6W.js} +3 -3
  82. package/dist/{renderer-X4KFEKUK.js → renderer-RH4U3UVM.js} +3 -3
  83. package/dist/{renderer-G72GMBKA.js → renderer-RLSR7N6I.js} +4 -4
  84. package/dist/{renderer-3F4K2X57.js → renderer-RMGN3Q7D.js} +2 -2
  85. package/dist/{renderer-OVDVFPAI.js → renderer-RUGMKHX5.js} +3 -3
  86. package/dist/{renderer-DRLLZZ6P.js → renderer-UUWR7NGF.js} +2 -2
  87. package/dist/{renderer-J3O2KVTL.js → renderer-V6LLASGN.js} +2 -2
  88. package/dist/{renderer-FQAZ3KNU.js → renderer-VKAJ52UO.js} +2 -2
  89. package/dist/{renderer-WRWVFEX7.js → renderer-XRALFCIN.js} +6 -4
  90. package/dist/{renderer-5A6VWIVX.js → renderer-YIZ7G4HU.js} +5 -5
  91. package/dist/{state-renderer-B4ZF6ESS.js → state-renderer-DDVJ43HR.js} +2 -2
  92. package/docs/language-reference.md +12 -12
  93. package/package.json +2 -2
  94. package/dist/chunk-WTTIODDV.js +0 -9
  95. package/dist/layout-JQ3IPJYR.js +0 -9
@@ -59,15 +59,33 @@ interface LiveLinkFetchOptions {
59
59
  * the response — 429 and 5xx are the server saying "not right now", which is
60
60
  * different from "no". Anything beyond one retry is a host's patience budget:
61
61
  * set 0 when a person is waiting.
62
+ *
63
+ * 🔴 "Not right now" is never answered by asking again right now. A retry
64
+ * waits out the server's `Retry-After` when that fits inside `timeoutMs`, and
65
+ * gives up without asking again when it does not; with no `Retry-After` it
66
+ * waits a jittered `LIVE_LINK_RETRY_DELAY_MS`, doubling per attempt. Until
67
+ * 2026-09-14 the retry went out back-to-back, so every reader of a page
68
+ * doubled the traffic of an API that was shedding load (#804).
62
69
  */
63
70
  retries?: number;
64
71
  }
72
+ /**
73
+ * Base wait before a retry the server gave no `Retry-After` for. The actual
74
+ * wait is between half and all of it, doubling per attempt — the jitter is so a
75
+ * page of readers who all failed together does not all return together.
76
+ */
77
+ declare const LIVE_LINK_RETRY_DELAY_MS = 1000;
65
78
  /**
66
79
  * Ask the Cloud for a live link's current source, and say what came back.
67
80
  *
68
- * Never throws: every way this can fail is one of the four outcomes, because a
69
- * caller that has to tell a rejected promise from a 410 will get it wrong.
81
+ * Never throws for anything the Cloud or the network does: every way the fetch
82
+ * can fail is one of the four outcomes, because a caller that has to tell a
83
+ * rejected promise from a 410 will get it wrong.
84
+ *
85
+ * 🔴 The one rejection is a `ref` whose id is not an id (`referenceSourceUrl`
86
+ * throws). No parser produces one, so only a caller that built the reference by
87
+ * hand can reach it, and the rejection's stack names that caller (#772).
70
88
  */
71
89
  declare function fetchLiveLink(ref: CloudReference, options?: LiveLinkFetchOptions): Promise<LiveLinkFetch>;
72
90
 
73
- export { DEFAULT_LIVE_LINK_TIMEOUT_MS, type LiveLinkFetch, type LiveLinkFetchOptions, fetchLiveLink };
91
+ export { DEFAULT_LIVE_LINK_TIMEOUT_MS, LIVE_LINK_RETRY_DELAY_MS, type LiveLinkFetch, type LiveLinkFetchOptions, fetchLiveLink };
@@ -1,10 +1,22 @@
1
1
  import {
2
2
  referenceSourceUrl
3
- } from "./chunk-23RWHHI5.js";
3
+ } from "./chunk-5NU7NII2.js";
4
4
  import "./chunk-5WRI5ZAA.js";
5
5
 
6
6
  // src/live-link/resolve.ts
7
7
  var DEFAULT_LIVE_LINK_TIMEOUT_MS = 1e4;
8
+ var LIVE_LINK_RETRY_DELAY_MS = 1e3;
9
+ function parseRetryAfter(value) {
10
+ if (!value) return void 0;
11
+ const seconds = Number(value);
12
+ if (Number.isFinite(seconds) && seconds >= 0) return seconds * 1e3;
13
+ const at = Date.parse(value);
14
+ if (!Number.isFinite(at)) return void 0;
15
+ return Math.max(0, at - Date.now());
16
+ }
17
+ function sleep(ms) {
18
+ return new Promise((resolve) => setTimeout(resolve, ms));
19
+ }
8
20
  function resolveOptions(options) {
9
21
  return {
10
22
  base: options.base,
@@ -24,40 +36,58 @@ async function fetchOnce(ref, opts) {
24
36
  signal: AbortSignal.timeout(opts.timeoutMs),
25
37
  headers: { accept: "application/json" }
26
38
  });
27
- if (res.status === 410) return { kind: "gone" };
28
- if (res.status === 404) return { kind: "missing" };
39
+ if (res.status === 410) return { result: { kind: "gone" } };
40
+ if (res.status === 404) return { result: { kind: "missing" } };
29
41
  if (!res.ok) {
30
- return { kind: "unavailable", reason: `HTTP ${String(res.status)}` };
42
+ const retryAfterMs = parseRetryAfter(res.headers.get("retry-after"));
43
+ return {
44
+ result: { kind: "unavailable", reason: `HTTP ${String(res.status)}` },
45
+ ...retryAfterMs === void 0 ? {} : { retryAfterMs }
46
+ };
31
47
  }
32
48
  const body = await res.json();
33
49
  if (typeof body.source !== "string") {
34
- return { kind: "unavailable", reason: "malformed response" };
50
+ return { result: { kind: "unavailable", reason: "malformed response" } };
35
51
  }
36
52
  return {
37
- kind: "ok",
38
- entry: {
39
- id: ref.id,
40
- source: body.source,
41
- dgmoVersion: typeof body.dgmoVersion === "string" ? body.dgmoVersion : "",
42
- updatedAt: typeof body.updatedAt === "number" ? body.updatedAt : 0
53
+ result: {
54
+ kind: "ok",
55
+ entry: {
56
+ id: ref.id,
57
+ source: body.source,
58
+ dgmoVersion: typeof body.dgmoVersion === "string" ? body.dgmoVersion : "",
59
+ updatedAt: typeof body.updatedAt === "number" ? body.updatedAt : 0
60
+ }
43
61
  }
44
62
  };
45
63
  } catch (err) {
46
64
  return {
47
- kind: "unavailable",
48
- reason: err instanceof Error ? err.message : String(err)
65
+ result: {
66
+ kind: "unavailable",
67
+ reason: err instanceof Error ? err.message : String(err)
68
+ }
49
69
  };
50
70
  }
51
71
  }
52
72
  async function fetchLiveLink(ref, options = {}) {
53
73
  const opts = resolveOptions(options);
54
- let result = await fetchOnce(ref, opts);
55
- for (let i = 0; i < opts.retries && result.kind === "unavailable"; i++) {
56
- result = await fetchOnce(ref, opts);
74
+ let attempt = await fetchOnce(ref, opts);
75
+ for (let i = 0; i < opts.retries && attempt.result.kind === "unavailable"; i++) {
76
+ let wait;
77
+ if (attempt.retryAfterMs !== void 0) {
78
+ if (attempt.retryAfterMs > opts.timeoutMs) break;
79
+ wait = attempt.retryAfterMs;
80
+ } else {
81
+ const window = LIVE_LINK_RETRY_DELAY_MS * 2 ** i;
82
+ wait = window / 2 + Math.floor(Math.random() * (window / 2));
83
+ }
84
+ await sleep(wait);
85
+ attempt = await fetchOnce(ref, opts);
57
86
  }
58
- return result;
87
+ return attempt.result;
59
88
  }
60
89
  export {
61
90
  DEFAULT_LIVE_LINK_TIMEOUT_MS,
91
+ LIVE_LINK_RETRY_DELAY_MS,
62
92
  fetchLiveLink
63
93
  };
@@ -3,9 +3,9 @@ import {
3
3
  liveLinkPinnedRevision,
4
4
  parseLiveLink,
5
5
  resolveLiveLinkTarget
6
- } from "./chunk-HMWZQ53A.js";
6
+ } from "./chunk-7WGCQE2E.js";
7
7
  import "./chunk-44GP7PD5.js";
8
- import "./chunk-23RWHHI5.js";
8
+ import "./chunk-5NU7NII2.js";
9
9
  import "./chunk-2M4IGSCY.js";
10
10
  import "./chunk-BYU54C3S.js";
11
11
  import "./chunk-5WRI5ZAA.js";
@@ -3,11 +3,11 @@ import {
3
3
  renderPert,
4
4
  renderPertAnalysisBlock,
5
5
  renderPertForExport
6
- } from "./chunk-MIZ46MOF.js";
6
+ } from "./chunk-GYORDNOM.js";
7
7
  import "./chunk-MGBV4JEI.js";
8
8
  import "./chunk-N4XHXBDQ.js";
9
9
  import "./chunk-24YPR5EH.js";
10
- import "./chunk-IIEI7VK5.js";
10
+ import "./chunk-XCKNFFKM.js";
11
11
  import "./chunk-3DOQOXXI.js";
12
12
  import "./chunk-LD2JSKU3.js";
13
13
  import "./chunk-VLC6WNRD.js";
@@ -2,11 +2,11 @@ import {
2
2
  ancestorTrailReserve,
3
3
  renderOrg,
4
4
  renderOrgForExport
5
- } from "./chunk-XIYVGO24.js";
6
- import "./chunk-LRNIYQ6Y.js";
7
- import "./chunk-UNSN56OJ.js";
5
+ } from "./chunk-UMRZPRAN.js";
6
+ import "./chunk-33FQ6HNV.js";
7
+ import "./chunk-R2K5L4UA.js";
8
8
  import "./chunk-24YPR5EH.js";
9
- import "./chunk-IIEI7VK5.js";
9
+ import "./chunk-XCKNFFKM.js";
10
10
  import "./chunk-QFIXL3OK.js";
11
11
  import "./chunk-LD2JSKU3.js";
12
12
  import "./chunk-VLC6WNRD.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  renderCycle,
3
3
  renderCycleForExport
4
- } from "./chunk-C5FEPGSJ.js";
4
+ } from "./chunk-QJFT5MAH.js";
5
5
  import "./chunk-WMIKC5XO.js";
6
6
  import "./chunk-FWNJDD4U.js";
7
7
  import "./chunk-24YPR5EH.js";
8
- import "./chunk-IIEI7VK5.js";
8
+ import "./chunk-XCKNFFKM.js";
9
9
  import "./chunk-VLC6WNRD.js";
10
10
  import "./chunk-LHL6HDUL.js";
11
11
  import "./chunk-FM3WAVB6.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  renderFamily,
3
3
  renderFamilyForExport
4
- } from "./chunk-HATTVAWX.js";
4
+ } from "./chunk-LJFXC3IP.js";
5
5
  import "./chunk-IVKC4GID.js";
6
6
  import "./chunk-2CW5ZTNH.js";
7
- import "./chunk-IIEI7VK5.js";
7
+ import "./chunk-XCKNFFKM.js";
8
8
  import "./chunk-3DOQOXXI.js";
9
9
  import "./chunk-VLC6WNRD.js";
10
10
  import "./chunk-LHL6HDUL.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  renderClassDiagram,
3
3
  renderClassDiagramForExport
4
- } from "./chunk-J2ICADUM.js";
4
+ } from "./chunk-LHBMQJC3.js";
5
5
  import "./chunk-BP4BT5TH.js";
6
6
  import "./chunk-5JO443MB.js";
7
7
  import "./chunk-HBCAY3KR.js";
@@ -11,7 +11,7 @@ import "./chunk-5DH3KYFH.js";
11
11
  import "./chunk-WMIKC5XO.js";
12
12
  import "./chunk-FWNJDD4U.js";
13
13
  import "./chunk-24YPR5EH.js";
14
- import "./chunk-IIEI7VK5.js";
14
+ import "./chunk-XCKNFFKM.js";
15
15
  import "./chunk-QFIXL3OK.js";
16
16
  import "./chunk-3DOQOXXI.js";
17
17
  import "./chunk-LD2JSKU3.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  renderGoal,
3
3
  renderGoalForExport
4
- } from "./chunk-D7D5YK4J.js";
4
+ } from "./chunk-H6AFNCN3.js";
5
5
  import "./chunk-LNO3ASX5.js";
6
6
  import "./chunk-FWNJDD4U.js";
7
7
  import "./chunk-VLC6WNRD.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  renderVersionControl,
3
3
  renderVersionControlForExport
4
- } from "./chunk-67USWFFE.js";
5
- import "./chunk-IIEI7VK5.js";
4
+ } from "./chunk-UY6TEJJH.js";
5
+ import "./chunk-XCKNFFKM.js";
6
6
  import "./chunk-VLC6WNRD.js";
7
7
  import "./chunk-ICLB27PZ.js";
8
8
  import "./chunk-7HWY4QAJ.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  renderKanban,
3
3
  renderKanbanForExport
4
- } from "./chunk-OGKP2XGJ.js";
4
+ } from "./chunk-VPVWG2GH.js";
5
5
  import "./chunk-FWNJDD4U.js";
6
6
  import "./chunk-24YPR5EH.js";
7
- import "./chunk-IIEI7VK5.js";
7
+ import "./chunk-XCKNFFKM.js";
8
8
  import "./chunk-LD2JSKU3.js";
9
9
  import "./chunk-VLC6WNRD.js";
10
10
  import "./chunk-LHL6HDUL.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  renderJourneyMap,
3
3
  renderJourneyMapForExport
4
- } from "./chunk-V3LJIPS4.js";
4
+ } from "./chunk-E6S2K6O2.js";
5
5
  import "./chunk-DOXBS7F5.js";
6
6
  import "./chunk-ZGHV4QLK.js";
7
7
  import "./chunk-5DH3KYFH.js";
8
8
  import "./chunk-WMIKC5XO.js";
9
9
  import "./chunk-FWNJDD4U.js";
10
10
  import "./chunk-24YPR5EH.js";
11
- import "./chunk-IIEI7VK5.js";
11
+ import "./chunk-XCKNFFKM.js";
12
12
  import "./chunk-LD2JSKU3.js";
13
13
  import "./chunk-LHL6HDUL.js";
14
14
  import "./chunk-FM3WAVB6.js";
@@ -6,11 +6,11 @@ import {
6
6
  renderC4ContextForExport,
7
7
  renderC4Deployment,
8
8
  renderC4DeploymentForExport
9
- } from "./chunk-PSH5DT26.js";
10
- import "./chunk-A4PHPKNR.js";
9
+ } from "./chunk-C6FZZFYD.js";
10
+ import "./chunk-DAX42XVH.js";
11
11
  import "./chunk-XBJJP2HN.js";
12
12
  import "./chunk-FWNJDD4U.js";
13
- import "./chunk-IIEI7VK5.js";
13
+ import "./chunk-XCKNFFKM.js";
14
14
  import "./chunk-LD2JSKU3.js";
15
15
  import "./chunk-VLC6WNRD.js";
16
16
  import "./chunk-LHL6HDUL.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  renderERDiagram,
3
3
  renderERDiagramForExport
4
- } from "./chunk-PEFPTQ3Z.js";
4
+ } from "./chunk-HUMQIRJK.js";
5
5
  import "./chunk-FAV4RDVT.js";
6
6
  import "./chunk-5JO443MB.js";
7
7
  import "./chunk-HBCAY3KR.js";
@@ -11,7 +11,7 @@ import "./chunk-5DH3KYFH.js";
11
11
  import "./chunk-WMIKC5XO.js";
12
12
  import "./chunk-FWNJDD4U.js";
13
13
  import "./chunk-24YPR5EH.js";
14
- import "./chunk-IIEI7VK5.js";
14
+ import "./chunk-XCKNFFKM.js";
15
15
  import "./chunk-3DOQOXXI.js";
16
16
  import "./chunk-LD2JSKU3.js";
17
17
  import "./chunk-VLC6WNRD.js";
@@ -2,8 +2,8 @@ import {
2
2
  authoredCollapsedIds,
3
3
  renderBlock,
4
4
  renderBlockForExport
5
- } from "./chunk-SLMAAJPE.js";
6
- import "./chunk-IIEI7VK5.js";
5
+ } from "./chunk-RGI64U3A.js";
6
+ import "./chunk-XCKNFFKM.js";
7
7
  import "./chunk-3DOQOXXI.js";
8
8
  import "./chunk-VLC6WNRD.js";
9
9
  import "./chunk-LHL6HDUL.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  buildTagLaneRowList,
3
3
  renderGantt
4
- } from "./chunk-XD7XL3SF.js";
4
+ } from "./chunk-AGO3PFGS.js";
5
5
  import "./chunk-YRYKTYMQ.js";
6
6
  import "./chunk-24YPR5EH.js";
7
- import "./chunk-IIEI7VK5.js";
7
+ import "./chunk-XCKNFFKM.js";
8
8
  import "./chunk-3DOQOXXI.js";
9
9
  import "./chunk-VLC6WNRD.js";
10
10
  import "./chunk-LHL6HDUL.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  renderSwimlaneForExport
3
- } from "./chunk-6HOVLE3H.js";
3
+ } from "./chunk-BT2WH2XT.js";
4
4
  import "./chunk-XBJJP2HN.js";
5
- import "./chunk-IIEI7VK5.js";
5
+ import "./chunk-XCKNFFKM.js";
6
6
  import "./chunk-VLC6WNRD.js";
7
7
  import "./chunk-ICLB27PZ.js";
8
8
  import "./chunk-L5AFONQU.js";
@@ -2,11 +2,11 @@ import {
2
2
  renderSketch,
3
3
  renderSketchForExport,
4
4
  sketchEdgeGeometry
5
- } from "./chunk-7256EOAE.js";
5
+ } from "./chunk-CFBY77QJ.js";
6
6
  import "./chunk-XBJJP2HN.js";
7
- import "./chunk-UNSN56OJ.js";
7
+ import "./chunk-R2K5L4UA.js";
8
8
  import "./chunk-24YPR5EH.js";
9
- import "./chunk-IIEI7VK5.js";
9
+ import "./chunk-XCKNFFKM.js";
10
10
  import "./chunk-3DOQOXXI.js";
11
11
  import "./chunk-VLC6WNRD.js";
12
12
  import "./chunk-LHL6HDUL.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  renderMindmap,
3
3
  renderMindmapForExport
4
- } from "./chunk-REUEU5PU.js";
5
- import "./chunk-ZUUNTOMG.js";
4
+ } from "./chunk-3CQS3CIO.js";
5
+ import "./chunk-UIUXIDBX.js";
6
6
  import "./chunk-FWNJDD4U.js";
7
7
  import "./chunk-24YPR5EH.js";
8
- import "./chunk-IIEI7VK5.js";
8
+ import "./chunk-XCKNFFKM.js";
9
9
  import "./chunk-QFIXL3OK.js";
10
10
  import "./chunk-3DOQOXXI.js";
11
11
  import "./chunk-LD2JSKU3.js";
@@ -3,14 +3,14 @@ import {
3
3
  focusEventLine,
4
4
  renderEventLine,
5
5
  renderEventLineForExport
6
- } from "./chunk-YWHGWLY6.js";
6
+ } from "./chunk-VEE777MD.js";
7
7
  import "./chunk-WMIKC5XO.js";
8
- import "./chunk-UNSN56OJ.js";
8
+ import "./chunk-R2K5L4UA.js";
9
9
  import "./chunk-FWNJDD4U.js";
10
- import "./chunk-ULCB4BLF.js";
10
+ import "./chunk-QPE646M2.js";
11
11
  import "./chunk-YRYKTYMQ.js";
12
12
  import "./chunk-24YPR5EH.js";
13
- import "./chunk-IIEI7VK5.js";
13
+ import "./chunk-XCKNFFKM.js";
14
14
  import "./chunk-RE6TVIAV.js";
15
15
  import "./chunk-QFIXL3OK.js";
16
16
  import "./chunk-3DOQOXXI.js";
@@ -2,9 +2,9 @@ import {
2
2
  MARKER_LABELS,
3
3
  renderRaci,
4
4
  renderRaciForExport
5
- } from "./chunk-VDMG3MM4.js";
5
+ } from "./chunk-JD4RHBNX.js";
6
6
  import "./chunk-24YPR5EH.js";
7
- import "./chunk-IIEI7VK5.js";
7
+ import "./chunk-XCKNFFKM.js";
8
8
  import "./chunk-VLC6WNRD.js";
9
9
  import "./chunk-ICLB27PZ.js";
10
10
  import "./chunk-KAO7JL4I.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  renderSitemap,
3
3
  renderSitemapForExport
4
- } from "./chunk-RMAJIB6S.js";
5
- import "./chunk-UNSN56OJ.js";
4
+ } from "./chunk-BHZE36F7.js";
5
+ import "./chunk-R2K5L4UA.js";
6
6
  import "./chunk-FWNJDD4U.js";
7
7
  import "./chunk-24YPR5EH.js";
8
- import "./chunk-IIEI7VK5.js";
8
+ import "./chunk-XCKNFFKM.js";
9
9
  import "./chunk-3DOQOXXI.js";
10
10
  import "./chunk-LD2JSKU3.js";
11
11
  import "./chunk-VLC6WNRD.js";
@@ -7,14 +7,14 @@ import {
7
7
  groupMessagesBySection,
8
8
  renderSequenceDiagram,
9
9
  summarizeSectionParticipation
10
- } from "./chunk-NJS62BAG.js";
10
+ } from "./chunk-XFMQSFS4.js";
11
11
  import "./chunk-WMIKC5XO.js";
12
12
  import {
13
13
  parseInlineMarkdown,
14
14
  truncateBareUrl
15
15
  } from "./chunk-FWNJDD4U.js";
16
16
  import "./chunk-24YPR5EH.js";
17
- import "./chunk-IIEI7VK5.js";
17
+ import "./chunk-XCKNFFKM.js";
18
18
  import "./chunk-3DOQOXXI.js";
19
19
  import "./chunk-VLC6WNRD.js";
20
20
  import "./chunk-LHL6HDUL.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  renderBoxesAndLines,
3
3
  renderBoxesAndLinesForExport
4
- } from "./chunk-2QIGN7KL.js";
4
+ } from "./chunk-MYHPRQHR.js";
5
5
  import "./chunk-5JO443MB.js";
6
6
  import "./chunk-XBJJP2HN.js";
7
7
  import "./chunk-5DH3KYFH.js";
8
8
  import "./chunk-WMIKC5XO.js";
9
9
  import "./chunk-FWNJDD4U.js";
10
10
  import "./chunk-24YPR5EH.js";
11
- import "./chunk-IIEI7VK5.js";
11
+ import "./chunk-XCKNFFKM.js";
12
12
  import "./chunk-3DOQOXXI.js";
13
13
  import "./chunk-VLC6WNRD.js";
14
14
  import "./chunk-LHL6HDUL.js";
@@ -2,13 +2,13 @@ import {
2
2
  computeInfraLegendGroups,
3
3
  parseAndLayoutInfra,
4
4
  renderInfra
5
- } from "./chunk-BIQYWWJ2.js";
5
+ } from "./chunk-ERYHC4KJ.js";
6
6
  import "./chunk-ICZ7M6IZ.js";
7
7
  import "./chunk-3FCSOYN4.js";
8
8
  import "./chunk-XBJJP2HN.js";
9
9
  import "./chunk-FWNJDD4U.js";
10
10
  import "./chunk-24YPR5EH.js";
11
- import "./chunk-IIEI7VK5.js";
11
+ import "./chunk-XCKNFFKM.js";
12
12
  import "./chunk-3DOQOXXI.js";
13
13
  import "./chunk-VLC6WNRD.js";
14
14
  import "./chunk-LHL6HDUL.js";
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  renderMap,
3
- renderMapForExport
4
- } from "./chunk-UJRMARNX.js";
3
+ renderMapForExport,
4
+ renderMapLayout
5
+ } from "./chunk-NJIGYGZS.js";
5
6
  import "./chunk-ERNCPKD4.js";
6
- import "./chunk-3MXJMZAN.js";
7
+ import "./chunk-BV6PKJUS.js";
7
8
  import "./chunk-4QV26TEG.js";
8
9
  import "./chunk-WP2RLGDI.js";
9
10
  import "./chunk-A2RUBBVT.js";
@@ -22,5 +23,6 @@ import "./chunk-BYU54C3S.js";
22
23
  import "./chunk-5WRI5ZAA.js";
23
24
  export {
24
25
  renderMap,
25
- renderMapForExport
26
+ renderMapForExport,
27
+ renderMapLayout
26
28
  };
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  renderLiveLinkCard
3
3
  } from "./chunk-A6YINTY6.js";
4
- import "./chunk-OZTDXMRQ.js";
5
- import "./chunk-T327J6CE.js";
4
+ import "./chunk-D4M25W6R.js";
5
+ import "./chunk-MSXRNVHB.js";
6
6
  import "./chunk-EOYPX6SF.js";
7
7
  import "./chunk-WP2RLGDI.js";
8
8
  import "./chunk-A2RUBBVT.js";
@@ -41,11 +41,11 @@ import "./chunk-GUTZCRBT.js";
41
41
  import "./chunk-BAZT6CIF.js";
42
42
  import "./chunk-KAO7JL4I.js";
43
43
  import "./chunk-RE27AX7O.js";
44
- import "./chunk-JVRDKR5R.js";
44
+ import "./chunk-AQIBKTPG.js";
45
45
  import "./chunk-3RYBTEF5.js";
46
46
  import "./chunk-UNNJCSSQ.js";
47
47
  import "./chunk-3TYUXC7D.js";
48
- import "./chunk-HMWZQ53A.js";
48
+ import "./chunk-7WGCQE2E.js";
49
49
  import "./chunk-EQW6HOP4.js";
50
50
  import "./chunk-DAOFNU6J.js";
51
51
  import "./chunk-VPASQOR3.js";
@@ -67,7 +67,7 @@ import "./chunk-HSRQDWV7.js";
67
67
  import "./chunk-4WW3SGMH.js";
68
68
  import "./chunk-L5AFONQU.js";
69
69
  import "./chunk-44GP7PD5.js";
70
- import "./chunk-23RWHHI5.js";
70
+ import "./chunk-5NU7NII2.js";
71
71
  import "./chunk-IDJGV6VM.js";
72
72
  import "./chunk-7HWY4QAJ.js";
73
73
  import "./chunk-2M4IGSCY.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  renderState,
3
3
  renderStateForExport
4
- } from "./chunk-ITLPDLBH.js";
4
+ } from "./chunk-BF7JAFJI.js";
5
5
  import "./chunk-26EVL454.js";
6
6
  import "./chunk-PBEH52A2.js";
7
7
  import "./chunk-5JO443MB.js";
@@ -13,7 +13,7 @@ import "./chunk-WMIKC5XO.js";
13
13
  import "./chunk-FWNJDD4U.js";
14
14
  import "./chunk-EPDBWATV.js";
15
15
  import "./chunk-24YPR5EH.js";
16
- import "./chunk-IIEI7VK5.js";
16
+ import "./chunk-XCKNFFKM.js";
17
17
  import "./chunk-3DOQOXXI.js";
18
18
  import "./chunk-LD2JSKU3.js";
19
19
  import "./chunk-VLC6WNRD.js";
@@ -3864,7 +3864,7 @@ In the desktop app a block diagram is interactive: click a container header to c
3864
3864
 
3865
3865
  <!-- TIPS start -->
3866
3866
 
3867
- **Styling tips:** Sketch is a GUI-authored format — the desktop and web canvas editors generate this markup, so hand-writing it is the exception. If you generate it anyway: keep it SMALL (sketches read best under ~15 shapes), and either omit `at:` everywhere (shapes flow into rows) or use integer half-slot coordinates with shapes **at least 3 half-slots apart** on one axis (a footprint spans 2 half-units and the mandatory gap adds 1 more, so each shape claims a 3×3 block; 2 apart overlaps). A `[Box]` may hold another `[Box]`, to **depth 2** — a third level is refused and its shapes join the box above it. Alias any shape an edge references (`as con`). Never write `size:`, colors, fonts, or a `shape:` outside the closed set (database, queue, cloud, person, document, note). In sketch, `~` dashed means secondary emphasis, NOT async. Categorize with a tag group instead of reaching for more shape kinds — kind-of-thing is meaning, and meaning lives in tags. Reach for `sketch` when the drawing itself is the content; reach for `boxes-and-lines` when topology should auto-lay-out.
3867
+ **Styling tips:** Sketch is a GUI-authored format — the desktop and web canvas editors generate this markup, so hand-writing it is the exception. If you generate it anyway: keep it SMALL (sketches read best under ~15 shapes), and either omit `at:` everywhere (shapes flow into rows) or use integer half-slot coordinates with shapes **at least 3 half-slots apart** on one axis (a footprint spans 2 half-units and the mandatory gap adds 1 more, so each shape claims a 3×3 block; 2 apart overlaps). A `[Box]` may hold another `[Box]`, to **depth 2** — a third level is refused and its shapes join the box above it. Alias any shape an edge references (`as con`). Never write `size:`, colors, fonts, or a `shape:` outside the closed set (database, queue, person, document, note). In sketch, `~` dashed means secondary emphasis, NOT async. Categorize with a tag group instead of reaching for more shape kinds — kind-of-thing is meaning, and meaning lives in tags. Reach for `sketch` when the drawing itself is the content; reach for `boxes-and-lines` when topology should auto-lay-out.
3868
3868
 
3869
3869
  <!-- TIPS end -->
3870
3870
 
@@ -3885,7 +3885,7 @@ tag Crew
3885
3885
  Deck
3886
3886
  Hold
3887
3887
 
3888
- Spyglass Feed shape: cloud, at: 0 0, crew: Deck
3888
+ Spyglass Feed at: 0 0, crew: Deck
3889
3889
  -sightings-> con
3890
3890
  Captain's Console as con at: 2 0, crew: Deck
3891
3891
  -orders-> bq
@@ -3902,7 +3902,7 @@ Divvy Service as dvy at: 4 0, crew: Hold
3902
3902
 
3903
3903
  ### Shapes
3904
3904
 
3905
- One top-level line = one shape — a **bare name** plus same-line `key: value` metadata. `shape:` morphs from the default rectangle: `database`, `queue`, `cloud`, `person`, `document`, `note` (rectangle is never written; unknown values warn and fall back). `note` renders as a sticky-style card with smaller left-aligned multiline text. Duplicate labels are legal **when aliased** (`Cache as c1` / `Cache as c2`); unaliased duplicates merge (standard dgmo semantics).
3905
+ One top-level line = one shape — a **bare name** plus same-line `key: value` metadata. `shape:` morphs from the default rectangle: `database`, `queue`, `person`, `document`, `note` (rectangle is never written; unknown values warn and fall back). `note` renders as a sticky-style card with smaller left-aligned multiline text. Duplicate labels are legal **when aliased** (`Cache as c1` / `Cache as c2`); unaliased duplicates merge (standard dgmo semantics).
3906
3906
 
3907
3907
  ### Coordinates — `at: C R`
3908
3908
 
@@ -3918,12 +3918,12 @@ Indented under the source shape, targeting an alias (or an unambiguous bare labe
3918
3918
 
3919
3919
  ### Node Metadata
3920
3920
 
3921
- | Key | Type | Default | Description |
3922
- | ----------- | -------------- | ----------------------- | --------------------------------------------------------------- |
3923
- | `shape` | closed set | rectangle | `database` / `queue` / `cloud` / `person` / `document` / `note` |
3924
- | `at` | `C R` integers | flow-placed | Half-slot position (origin-normalized) |
3925
- | `collapsed` | flag | — | Box only — start folded (collapse-bar) |
3926
- | `<tag>` | declared value | untagged (neutral gray) | Tag value (cascades from box; edge tails color the line) |
3921
+ | Key | Type | Default | Description |
3922
+ | ----------- | -------------- | ----------------------- | -------------------------------------------------------- |
3923
+ | `shape` | closed set | rectangle | `database` / `queue` / `person` / `document` / `note` |
3924
+ | `at` | `C R` integers | flow-placed | Half-slot position (origin-normalized) |
3925
+ | `collapsed` | flag | — | Box only — start folded (collapse-bar) |
3926
+ | `<tag>` | declared value | untagged (neutral gray) | Tag value (cascades from box; edge tails color the line) |
3927
3927
 
3928
3928
  ### Directives
3929
3929
 
@@ -4509,14 +4509,14 @@ A pointer to a diagram published at Diagrammo Cloud — the file holds no drawin
4509
4509
  Two forms. The titled form names the diagram and carries a `url` directive:
4510
4510
 
4511
4511
  ```
4512
- live-link Platform architecture
4513
- url https://online.diagrammo.app/d/dgm_7f2a91
4512
+ live-link A Cabin Boy's First Voyage
4513
+ url https://online.diagrammo.app/d/dgm_01M1JBN56CAVS728HPWDACVNMC
4514
4514
  ```
4515
4515
 
4516
4516
  The shorthand form is one line, and is what a docs-site fence contains:
4517
4517
 
4518
4518
  ```
4519
- live-link dgm_7f2a91
4519
+ live-link dgm_01M1JBN56CAVS728HPWDACVNMC
4520
4520
  ```
4521
4521
 
4522
4522
  `url` takes a full Diagrammo link (`/d/<id>`, `/view/<id>`, or the public source endpoint) or a bare diagram id. A link carrying `?at=` is an error — a live link always shows the current version, and silently serving the latest to a document that asked to be frozen is the one outcome pinning existed to prevent.