pi-outpost 0.9.0 → 0.10.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 (106) hide show
  1. package/dist/contract/README.md +34 -0
  2. package/dist/contract/conformance/index.json +18 -0
  3. package/dist/contract/conformance/invalid/table-row-object-column-mismatch.json +18 -0
  4. package/dist/contract/conformance/invalid/table-row-unknown-role.json +17 -0
  5. package/dist/contract/conformance/invalid/table-row-without-cells.json +14 -0
  6. package/dist/contract/conformance/valid/table-rows-partly-roled.json +29 -0
  7. package/dist/contract/conformance/valid/table-rows-with-roles.json +45 -0
  8. package/dist/contract/schemas/structured-exchange-1.json +38 -11
  9. package/dist/contract/validate-structured-exchange.mjs +45 -14
  10. package/dist/pi-outpost.mjs +125 -93
  11. package/dist/pi-outpost.sea.mjs +125 -93
  12. package/dist/sea-prep.blob +0 -0
  13. package/dist/skills/structured-exchange/SKILL.md +28 -1
  14. package/dist/skills/structured-exchange/structured-exchange-1.json +38 -11
  15. package/dist/web/assets/{PdfViewer-CEAp6biY.js → PdfViewer-DL928k-s.js} +2 -2
  16. package/dist/web/assets/{abnfDiagram-N423BO3Z-BE4AMXSH.js → abnfDiagram-N423BO3Z-DbxX-0Kj.js} +1 -1
  17. package/dist/web/assets/architecture-TIHT7OUA-CxgGNTsk.js +1 -0
  18. package/dist/web/assets/{architectureDiagram-T3A2C74G-tjG-eidb.js → architectureDiagram-T3A2C74G-BMX346um.js} +1 -1
  19. package/dist/web/assets/{blockDiagram-VBNYF7ZC-Bwzla1cD.js → blockDiagram-VBNYF7ZC-ChV86tmC.js} +1 -1
  20. package/dist/web/assets/browser-BoWduoKG.js +19 -0
  21. package/dist/web/assets/{c4Diagram-5PPSVZJV-BbNH9mqH.js → c4Diagram-5PPSVZJV-C-zTSE0y.js} +1 -1
  22. package/dist/web/assets/channel-D-LTlrLf.js +1 -0
  23. package/dist/web/assets/{chunk-2GRJ4B5K-BTjPaaWT.js → chunk-2GRJ4B5K-W04su_X7.js} +1 -1
  24. package/dist/web/assets/{chunk-3NCLNEKW-DfGGO5Az.js → chunk-3NCLNEKW-DY4xKOXA.js} +1 -1
  25. package/dist/web/assets/{chunk-4I5QYGJK-Bajr_p-3.js → chunk-4I5QYGJK-DXYX0vFa.js} +1 -1
  26. package/dist/web/assets/{chunk-5RXB4S5H-CbDXtSwX.js → chunk-5RXB4S5H-Du7kbrqX.js} +1 -1
  27. package/dist/web/assets/{chunk-6Q2QTUOP-Cj5IB9-q.js → chunk-6Q2QTUOP-BfJd7VYB.js} +1 -1
  28. package/dist/web/assets/{chunk-7Z6QIM7H-BIsTfYEd.js → chunk-7Z6QIM7H-BY1Y6LJS.js} +1 -1
  29. package/dist/web/assets/{chunk-GF5L2VYU-CYLPBeKA.js → chunk-GF5L2VYU-CsEEcYjl.js} +1 -1
  30. package/dist/web/assets/{chunk-I66GZJ75-BjZt7BZl.js → chunk-I66GZJ75-DPBfauyP.js} +3 -3
  31. package/dist/web/assets/{chunk-J7OUQ5F2-B3gViRUp.js → chunk-J7OUQ5F2-CdpH0vwJ.js} +2 -2
  32. package/dist/web/assets/{chunk-JQJVKLGR-Dg177seh.js → chunk-JQJVKLGR-CdyovfRR.js} +1 -1
  33. package/dist/web/assets/{chunk-KBJHAD2P-B_2jByMg.js → chunk-KBJHAD2P-DmmiNkBn.js} +1 -1
  34. package/dist/web/assets/{chunk-NSK5VX7P-B5w-3_Ed.js → chunk-NSK5VX7P-BQQH6IYd.js} +1 -1
  35. package/dist/web/assets/{chunk-QR6OTTB3-DCJRxmQT.js → chunk-QR6OTTB3-DWTPlePZ.js} +1 -1
  36. package/dist/web/assets/{chunk-UBXNYLIW-DBuIxFzr.js → chunk-UBXNYLIW-CXboJ2bm.js} +1 -1
  37. package/dist/web/assets/{chunk-W5SLKNZC-B-cGIOQF.js → chunk-W5SLKNZC-CaOM1dXh.js} +1 -1
  38. package/dist/web/assets/{chunk-WRU74C26-CLOxZV1w.js → chunk-WRU74C26-DRizKOyu.js} +1 -1
  39. package/dist/web/assets/classDiagram-JCYQIIEL-DHVDyqvh.js +1 -0
  40. package/dist/web/assets/classDiagram-v2-OCEON4UE-DHVDyqvh.js +1 -0
  41. package/dist/web/assets/{cynefin-VYW2F7L2-Bk96SN7L.js → cynefin-VYW2F7L2-CD-nMJrn.js} +1 -1
  42. package/dist/web/assets/{cynefinDiagram-MW4NZA55-ooeswKGp.js → cynefinDiagram-MW4NZA55-Ig6qnUj1.js} +1 -1
  43. package/dist/web/assets/{dagre-VZM6K2ZE-CSwH_rTA.js → dagre-VZM6K2ZE-CxSxgcwX.js} +1 -1
  44. package/dist/web/assets/{diagram-7IWD3JNH-DVtrh_uV.js → diagram-7IWD3JNH-CB2xc-gJ.js} +1 -1
  45. package/dist/web/assets/{diagram-B4RE2ZJO-CYE5VmiD.js → diagram-B4RE2ZJO-5cmS8UzR.js} +1 -1
  46. package/dist/web/assets/{diagram-LBJQPF4R-BYOlHlmg.js → diagram-LBJQPF4R-B80eqvld.js} +1 -1
  47. package/dist/web/assets/{diagram-Q27KOJAE-DJWxpvu9.js → diagram-Q27KOJAE-DHwyKZTY.js} +1 -1
  48. package/dist/web/assets/{diagram-UB23O5K3-B1g-vwj0.js → diagram-UB23O5K3-dDfTtdVR.js} +1 -1
  49. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-BX8Jv2Vd.js → ebnfDiagram-BXEA7PRR-BycgjimL.js} +1 -1
  50. package/dist/web/assets/{erDiagram-JOGREHBK-9hxklGu2.js → erDiagram-JOGREHBK-BeCSU7rz.js} +1 -1
  51. package/dist/web/assets/eventmodeling-45OFAUF4-neKvK6DT.js +1 -0
  52. package/dist/web/assets/flowDiagram-UKHOOZJN-CAZkXvN7.js +1 -0
  53. package/dist/web/assets/{ganttDiagram-PKOTCBZU-D0kAnvoM.js → ganttDiagram-PKOTCBZU-Bazy8cgV.js} +1 -1
  54. package/dist/web/assets/{gitGraph-TEB2WS4Q-C9UMPCgj.js → gitGraph-TEB2WS4Q-DcGskfJN.js} +1 -1
  55. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-6tPgqwE6.js → gitGraphDiagram-DS77QQ5N-Z6jvA444.js} +1 -1
  56. package/dist/web/assets/{index-De86t3J_.js → index-B-cfhDrI.js} +13 -12
  57. package/dist/web/assets/index-Dz7YkDhP.css +2 -0
  58. package/dist/web/assets/{info-DKCQHKI2-BBV4qqmE.js → info-DKCQHKI2-DJ49CwmK.js} +1 -1
  59. package/dist/web/assets/{infoDiagram-6WML65LV-Bmhc86CN.js → infoDiagram-6WML65LV-YqZl8Nm2.js} +1 -1
  60. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-5wn4Yv2C.js → ishikawaDiagram-WSZJBQD7-iBNItVc-.js} +1 -1
  61. package/dist/web/assets/{journeyDiagram-NVQOT4AX-DJLLpQlS.js → journeyDiagram-NVQOT4AX-EwTx3T1Q.js} +1 -1
  62. package/dist/web/assets/{kanban-definition-27J2QSJJ-7h9EMbUW.js → kanban-definition-27J2QSJJ-DtdE2AjM.js} +1 -1
  63. package/dist/web/assets/{line-Uu7s3CmK.js → line-Cbqxb04I.js} +1 -1
  64. package/dist/web/assets/{mermaid-parser.core-DwpLoctN.js → mermaid-parser.core-rv6CQBy8.js} +3 -3
  65. package/dist/web/assets/{mermaid.core-CRSZr8Y7.js → mermaid.core-DXHLsEfO.js} +3 -3
  66. package/dist/web/assets/{mindmap-definition-FAOFIHXS-DPic1KLK.js → mindmap-definition-FAOFIHXS-CaiyLb0a.js} +1 -1
  67. package/dist/web/assets/{packet-7NZHBO7P-CMRjleUu.js → packet-7NZHBO7P-ByIsiWdp.js} +1 -1
  68. package/dist/web/assets/{pdf-DGJrgWix.js → pdf-BmZiCqYN.js} +1 -1
  69. package/dist/web/assets/{pegDiagram-VL7TDLO6-CdECC4cs.js → pegDiagram-VL7TDLO6-B-6_sex6.js} +1 -1
  70. package/dist/web/assets/{pie-RZYD4A2V-C5X4oGn0.js → pie-RZYD4A2V-BD8R7sOm.js} +1 -1
  71. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-Bvs4Q2O-.js → pieDiagram-7S7Q4E2Y-C-a2vyAv.js} +1 -1
  72. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-FsUrYDg7.js → quadrantDiagram-CIZ2JOQS-DNnBJnEd.js} +1 -1
  73. package/dist/web/assets/{radar-I7S5WNFK-tvx7HrZO.js → radar-I7S5WNFK-kEFklpqR.js} +1 -1
  74. package/dist/web/assets/{railroad-3IZDKUUU-DBks1QD-.js → railroad-3IZDKUUU-DVRWY3AC.js} +1 -1
  75. package/dist/web/assets/railroad-abnf-AHOZXSZD-BjQiPTbu.js +1 -0
  76. package/dist/web/assets/railroad-ebnf-EBAXGLYW-iJlInGQn.js +1 -0
  77. package/dist/web/assets/railroad-peg-LSFZ7HO6-DbABHd8A.js +1 -0
  78. package/dist/web/assets/{railroadDiagram-AXF67PYL-CBvFYCmN.js → railroadDiagram-AXF67PYL-DBXx-64f.js} +1 -1
  79. package/dist/web/assets/{requirementDiagram-LRYGKXZP-C-rumttI.js → requirementDiagram-LRYGKXZP-FKSCWatA.js} +1 -1
  80. package/dist/web/assets/{sankeyDiagram-W5VNT64P-ClOK2cdj.js → sankeyDiagram-W5VNT64P-BIsqrSkd.js} +1 -1
  81. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-B0pKllVj.js → sequenceDiagram-SI44F4Z6-O_YBlsgm.js} +1 -1
  82. package/dist/web/assets/{stateDiagram-OKZ733FA-BoAWywzk.js → stateDiagram-OKZ733FA-CQpPvMSw.js} +1 -1
  83. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-BD_nJJ8M.js +1 -0
  84. package/dist/web/assets/{swimlanes-SLNWSIFB-cdgjeXSf.js → swimlanes-SLNWSIFB-DVWLKMSf.js} +1 -1
  85. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-B9QwBXcD.js +8 -0
  86. package/dist/web/assets/{timeline-definition-Z64GVDOM-ByMPGIEh.js → timeline-definition-Z64GVDOM-D08L6QQ6.js} +1 -1
  87. package/dist/web/assets/{treeView-QDETBFTQ-zBqwQF47.js → treeView-QDETBFTQ-DmuKTQhG.js} +1 -1
  88. package/dist/web/assets/{treemap-6X3UGDF4-C2U9S2di.js → treemap-6X3UGDF4-CFwpXcZR.js} +1 -1
  89. package/dist/web/assets/{vennDiagram-T6HMQDX7-CyJfOcB0.js → vennDiagram-T6HMQDX7-Df5-OwXn.js} +1 -1
  90. package/dist/web/assets/{wardley-OPB4EBWU-CDxzQuvF.js → wardley-OPB4EBWU-e2h7ylSU.js} +1 -1
  91. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-IO8_CDTG.js → wardleyDiagram-T6FBY63Y-pZ4HlA6p.js} +1 -1
  92. package/dist/web/assets/{xychartDiagram-ELKLHX3M-UUfxFEDc.js → xychartDiagram-ELKLHX3M-Byk049lP.js} +1 -1
  93. package/dist/web/index.html +2 -2
  94. package/package.json +1 -1
  95. package/dist/web/assets/architecture-TIHT7OUA-DgTbwInB.js +0 -1
  96. package/dist/web/assets/channel-CXbqHDJA.js +0 -1
  97. package/dist/web/assets/classDiagram-JCYQIIEL-lv93WkUc.js +0 -1
  98. package/dist/web/assets/classDiagram-v2-OCEON4UE-lv93WkUc.js +0 -1
  99. package/dist/web/assets/eventmodeling-45OFAUF4-CSvMsqcO.js +0 -1
  100. package/dist/web/assets/flowDiagram-UKHOOZJN-CPmAOaGQ.js +0 -1
  101. package/dist/web/assets/index-CZwzQTfU.css +0 -2
  102. package/dist/web/assets/railroad-abnf-AHOZXSZD-BnvB29Nv.js +0 -1
  103. package/dist/web/assets/railroad-ebnf-EBAXGLYW-BUSDQ0vn.js +0 -1
  104. package/dist/web/assets/railroad-peg-LSFZ7HO6-CZV0givf.js +0 -1
  105. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CHrsco-w.js +0 -1
  106. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-DPjAUQdL.js +0 -8
Binary file
@@ -50,7 +50,8 @@ refused, never corrected — correcting it would produce a document you did not
50
50
  ```
51
51
 
52
52
  `kind` is `graph`, `sequence`, or `table`. A table is a projection: it can be shown
53
- and reasoned about, never proposed.
53
+ and reasoned about, never proposed — though its rows may report what a change did
54
+ to them (see **Roles on a table's rows**).
54
55
 
55
56
  Each carries its own `data`:
56
57
 
@@ -71,6 +72,32 @@ Each carries its own `data`:
71
72
  A message declares a `label` and no `kind` — the label *is* what is being sent.
72
73
  Message order is the order you write them in; nothing sorts them for you.
73
74
 
75
+ ## Roles on a table's rows
76
+
77
+ A table cannot be proposed, but it can *report* on a change it projects. Any row
78
+ may say what it plays, and the interface colours it the way it colours an added or
79
+ changed element in a graph:
80
+
81
+ ```jsonc
82
+ "data": {
83
+ "columns": ["id", "requirement", "status"],
84
+ "rows": [
85
+ { "role": "added", "cells": ["REQ-5", "Log every actuation.", "draft"] },
86
+ { "role": "changed", "cells": ["REQ-2", "Signal a fault within 200 ms.", "in review"] },
87
+ { "role": "removed", "cells": ["REQ-3", "Read battery voltage at 10 Hz.", "withdrawn"] },
88
+ { "cells": ["REQ-1", "Stop the vehicle within 40 m.", "approved"] } // context
89
+ ]
90
+ }
91
+ ```
92
+
93
+ `role` is one of `added`, `changed`, `context`, `removed`. A row that declares none
94
+ reads as context when any other row declares one. Both row forms are accepted, so
95
+ `["REQ-1", "…"]` and `{ "cells": ["REQ-1", "…"] }` are the same row, and a table
96
+ that declares no role anywhere is rendered exactly as before roles existed.
97
+
98
+ Declare the role — do not put it in a column and expect the colours. A `status`
99
+ column is your data and is rendered as data; nothing infers a role from it.
100
+
74
101
  ## Grouping: containers
75
102
 
76
103
  A graph or a sequence may declare **containers** — subsystems, layers, teams,
@@ -236,6 +236,19 @@
236
236
  "$ref": "#/$defs/label"
237
237
  }
238
238
  }
239
+ },
240
+ "cells": {
241
+ "type": "array",
242
+ "items": {
243
+ "type": [
244
+ "string",
245
+ "number",
246
+ "boolean",
247
+ "null"
248
+ ],
249
+ "maxLength": 1000
250
+ },
251
+ "maxItems": 50
239
252
  }
240
253
  },
241
254
  "properties": {
@@ -347,17 +360,31 @@
347
360
  "type": "array",
348
361
  "maxItems": 5000,
349
362
  "items": {
350
- "type": "array",
351
- "items": {
352
- "type": [
353
- "string",
354
- "number",
355
- "boolean",
356
- "null"
357
- ],
358
- "maxLength": 1000
359
- },
360
- "maxItems": 50
363
+ "oneOf": [
364
+ {
365
+ "$ref": "#/$defs/cells"
366
+ },
367
+ {
368
+ "type": "object",
369
+ "additionalProperties": false,
370
+ "required": [
371
+ "cells"
372
+ ],
373
+ "properties": {
374
+ "cells": {
375
+ "$ref": "#/$defs/cells"
376
+ },
377
+ "role": {
378
+ "enum": [
379
+ "added",
380
+ "changed",
381
+ "context",
382
+ "removed"
383
+ ]
384
+ }
385
+ }
386
+ }
387
+ ]
361
388
  }
362
389
  }
363
390
  }
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pdf-DGJrgWix.js","assets/index-De86t3J_.js","assets/rolldown-runtime-QTnfLwEv.js","assets/index-CZwzQTfU.css"])))=>i.map(i=>d[i]);
2
- import{a as e,i as t,n,r}from"./index-De86t3J_.js";var i=e(),a=r(),o=[.5,.75,1,1.25,1.5,2,3];function s(e){return e>=1024*1024?`${Math.round(e/(1024*1024))} MB`:`${Math.round(e/1024)} KB`}function c(e){switch(e.kind){case`too-large`:return e.limitBytes===void 0?`This PDF is larger than the server's PDF limit.`:`This PDF is larger than the ${s(e.limitBytes)} limit the server allows.`;case`encrypted`:return`This PDF is password-protected, so it cannot be displayed.`;case`not-found`:return`This file no longer exists.`;case`unauthorized`:return`This session is not authorized to read this file.`;case`unreadable`:return`This file could not be read as a PDF.`}}async function l(e,n,r){let i=await fetch(t(e,n,null),{headers:r?{Authorization:`Bearer ${r}`}:{}});if(!i.ok){if(i.status===413){let e=await i.json().catch(()=>({}));throw{kind:`too-large`,...typeof e.limit==`number`?{limitBytes:e.limit}:{}}}throw i.status===401||i.status===403?{kind:`unauthorized`}:i.status===404?{kind:`not-found`}:{kind:`unreadable`}}return new Uint8Array(await i.arrayBuffer())}async function u(e){let t=await n(()=>import(`./pdf-DGJrgWix.js`),__vite__mapDeps([0,1,2,3]));t.GlobalWorkerOptions.workerSrc=new URL(`/assets/pdf.worker.min-CHFwMXne.mjs`,``+import.meta.url).toString();let r=t.getDocument({data:e,useWorkerFetch:!1,isOffscreenCanvasSupported:!1});try{return{doc:await r.promise,task:r}}catch(e){throw await r.destroy().catch(()=>{}),{kind:(e instanceof Error?e.name:``)===`PasswordException`?`encrypted`:`unreadable`}}}async function d(e,t,r,i){if(!(r===null||e.streamTextContent===void 0)){r.replaceChildren();try{let a=await n(()=>import(`./pdf-DGJrgWix.js`),__vite__mapDeps([0,1,2,3]));r.style.setProperty(`--total-scale-factor`,String(i)),await new a.TextLayer({textContentSource:await e.streamTextContent(),container:r,viewport:t}).render()}catch{r.replaceChildren()}}}function f(e){try{e?.cancel()}catch{}}function p(e){return typeof e==`object`&&!!e&&typeof e.kind==`string`}var m=1;function h({doc:e,pageNumber:t,scale:n,baseSize:r,active:o,registerSlot:s}){let c=(0,i.useRef)(null),l=(0,i.useRef)(null),u=(0,i.useRef)(null),[p,m]=(0,i.useState)(!1),[h,g]=(0,i.useState)({width:r.width*n,height:r.height*n});return(0,i.useEffect)(()=>{g({width:r.width*n,height:r.height*n})},[r.width,r.height,n]),(0,i.useEffect)(()=>{if(!o)return;let r=!1,i=u.current;return f(i),(async()=>{try{let a=await e.getPage(t),o=a.getViewport({scale:n}),s=c.current;if(r||s===null||(await i?.promise.catch(()=>{}),r))return;g({width:o.width,height:o.height}),s.width=Math.floor(o.width),s.height=Math.floor(o.height);let f=a.render({canvas:s,viewport:o,annotationMode:0});if(u.current=f,await f.promise,r)return;await d(a,o,l.current,n),r||m(!1)}catch(e){let t=e instanceof Error?e.name:``;!r&&t!==`RenderingCancelledException`&&m(!0)}})(),()=>{r=!0,f(u.current)}},[e,t,n,o]),(0,a.jsx)(`div`,{ref:e=>s(t,e),"data-page":t,className:`relative mx-auto mb-4 bg-white shadow last:mb-0`,style:{width:h.width,height:h.height},children:p?(0,a.jsxs)(`p`,{className:`absolute inset-0 flex items-center justify-center p-4 text-center text-xs text-red-600 dark:text-red-400`,children:[`Page `,t,` could not be rendered.`]}):o?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(`canvas`,{ref:c,className:`block h-full w-full`}),(0,a.jsx)(`div`,{ref:l,className:`pdf-text-layer`,"aria-hidden":!0})]}):null})}function g({path:e,serverUrl:t=``,token:n=null,onLoaded:r}){let[s,d]=(0,i.useState)(null),[f,g]=(0,i.useState)(null),[_,v]=(0,i.useState)(1),[y,b]=(0,i.useState)(2),[x,S]=(0,i.useState)(null),C=(0,i.useRef)(null),w=(0,i.useRef)(new Map);(0,i.useEffect)(()=>{let i=!1,a=null;return d(null),g(null),v(1),S(null),(async()=>{try{let{doc:o,task:s}=await u(await l(t,e,n));if(a=s,i){await s.destroy().catch(()=>{});return}try{let e=(await o.getPage(1)).getViewport({scale:1});i||S({width:e.width,height:e.height})}catch{i||S({width:612,height:792})}if(i)return;d(o),r?.(e)}catch(e){i||g(p(e)?e:{kind:`unreadable`})}})(),()=>{i=!0,a?.destroy().catch(()=>{})}},[e,t,n]);let T=s?.numPages??0,E=(0,i.useCallback)((e,t)=>{t===null?w.current.delete(e):w.current.set(e,t)},[]);(0,i.useEffect)(()=>{if(s===null||typeof IntersectionObserver>`u`)return;let e=C.current;if(e===null)return;let t=new IntersectionObserver(e=>{for(let t of e){if(!t.isIntersecting)continue;let e=Number(t.target.dataset.page);Number.isFinite(e)&&v(e)}},{root:e,rootMargin:`-45% 0px -45% 0px`,threshold:0});for(let e of w.current.values())t.observe(e);return()=>t.disconnect()},[s,T]);let D=(0,i.useCallback)(e=>{e<1||e>T||(v(e),w.current.get(e)?.scrollIntoView({block:`start`}))},[T]);return f===null?s===null?(0,a.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,a.jsx)(`p`,{className:`text-sm text-zinc-500`,children:`Loading PDF…`})}):(0,a.jsxs)(`div`,{className:`flex h-full flex-col`,onKeyDown:e=>{if(e.key===`PageDown`||e.key===`ArrowRight`)D(_+1);else if(e.key===`PageUp`||e.key===`ArrowLeft`)D(_-1);else return;e.preventDefault()},children:[(0,a.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-zinc-200 px-3 py-2 text-xs dark:border-zinc-800`,children:[(0,a.jsx)(`button`,{type:`button`,onClick:()=>D(_-1),disabled:_<=1,"aria-label":`Previous page`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`‹`}),(0,a.jsxs)(`span`,{className:`tabular-nums text-zinc-600 dark:text-zinc-400`,children:[`Page `,_,` / `,T]}),(0,a.jsx)(`button`,{type:`button`,onClick:()=>D(_+1),disabled:_>=T,"aria-label":`Next page`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`›`}),(0,a.jsxs)(`span`,{className:`ml-auto flex items-center gap-1`,children:[(0,a.jsx)(`button`,{type:`button`,onClick:()=>b(e=>Math.max(0,e-1)),disabled:y===0,"aria-label":`Zoom out`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`−`}),(0,a.jsxs)(`span`,{className:`tabular-nums text-zinc-500`,children:[Math.round(o[y]*100),`%`]}),(0,a.jsx)(`button`,{type:`button`,onClick:()=>b(e=>Math.min(o.length-1,e+1)),disabled:y===o.length-1,"aria-label":`Zoom in`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`+`})]})]}),(0,a.jsx)(`div`,{ref:C,className:`flex-1 overflow-auto bg-zinc-100 p-4 dark:bg-zinc-950`,children:x!==null&&Array.from({length:T},(e,t)=>t+1).map(e=>(0,a.jsx)(h,{doc:s,pageNumber:e,scale:o[y],baseSize:x,active:Math.abs(e-_)<=m,registerSlot:E},e))})]}):(0,a.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,a.jsx)(`p`,{className:`max-w-md text-center text-sm text-zinc-600 dark:text-zinc-400`,children:c(f)})})}export{g as PdfViewer,g as default};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pdf-BmZiCqYN.js","assets/index-B-cfhDrI.js","assets/rolldown-runtime-QTnfLwEv.js","assets/index-Dz7YkDhP.css"])))=>i.map(i=>d[i]);
2
+ import{a as e,i as t,n,r}from"./index-B-cfhDrI.js";var i=e(),a=r(),o=[.5,.75,1,1.25,1.5,2,3];function s(e){return e>=1024*1024?`${Math.round(e/(1024*1024))} MB`:`${Math.round(e/1024)} KB`}function c(e){switch(e.kind){case`too-large`:return e.limitBytes===void 0?`This PDF is larger than the server's PDF limit.`:`This PDF is larger than the ${s(e.limitBytes)} limit the server allows.`;case`encrypted`:return`This PDF is password-protected, so it cannot be displayed.`;case`not-found`:return`This file no longer exists.`;case`unauthorized`:return`This session is not authorized to read this file.`;case`unreadable`:return`This file could not be read as a PDF.`}}async function l(e,n,r){let i=await fetch(t(e,n,null),{headers:r?{Authorization:`Bearer ${r}`}:{}});if(!i.ok){if(i.status===413){let e=await i.json().catch(()=>({}));throw{kind:`too-large`,...typeof e.limit==`number`?{limitBytes:e.limit}:{}}}throw i.status===401||i.status===403?{kind:`unauthorized`}:i.status===404?{kind:`not-found`}:{kind:`unreadable`}}return new Uint8Array(await i.arrayBuffer())}async function u(e){let t=await n(()=>import(`./pdf-BmZiCqYN.js`),__vite__mapDeps([0,1,2,3]));t.GlobalWorkerOptions.workerSrc=new URL(`/assets/pdf.worker.min-CHFwMXne.mjs`,``+import.meta.url).toString();let r=t.getDocument({data:e,useWorkerFetch:!1,isOffscreenCanvasSupported:!1});try{return{doc:await r.promise,task:r}}catch(e){throw await r.destroy().catch(()=>{}),{kind:(e instanceof Error?e.name:``)===`PasswordException`?`encrypted`:`unreadable`}}}async function d(e,t,r,i){if(!(r===null||e.streamTextContent===void 0)){r.replaceChildren();try{let a=await n(()=>import(`./pdf-BmZiCqYN.js`),__vite__mapDeps([0,1,2,3]));r.style.setProperty(`--total-scale-factor`,String(i)),await new a.TextLayer({textContentSource:await e.streamTextContent(),container:r,viewport:t}).render()}catch{r.replaceChildren()}}}function f(e){try{e?.cancel()}catch{}}function p(e){return typeof e==`object`&&!!e&&typeof e.kind==`string`}var m=1;function h({doc:e,pageNumber:t,scale:n,baseSize:r,active:o,registerSlot:s}){let c=(0,i.useRef)(null),l=(0,i.useRef)(null),u=(0,i.useRef)(null),[p,m]=(0,i.useState)(!1),[h,g]=(0,i.useState)({width:r.width*n,height:r.height*n});return(0,i.useEffect)(()=>{g({width:r.width*n,height:r.height*n})},[r.width,r.height,n]),(0,i.useEffect)(()=>{if(!o)return;let r=!1,i=u.current;return f(i),(async()=>{try{let a=await e.getPage(t),o=a.getViewport({scale:n}),s=c.current;if(r||s===null||(await i?.promise.catch(()=>{}),r))return;g({width:o.width,height:o.height}),s.width=Math.floor(o.width),s.height=Math.floor(o.height);let f=a.render({canvas:s,viewport:o,annotationMode:0});if(u.current=f,await f.promise,r)return;await d(a,o,l.current,n),r||m(!1)}catch(e){let t=e instanceof Error?e.name:``;!r&&t!==`RenderingCancelledException`&&m(!0)}})(),()=>{r=!0,f(u.current)}},[e,t,n,o]),(0,a.jsx)(`div`,{ref:e=>s(t,e),"data-page":t,className:`relative mx-auto mb-4 bg-white shadow last:mb-0`,style:{width:h.width,height:h.height},children:p?(0,a.jsxs)(`p`,{className:`absolute inset-0 flex items-center justify-center p-4 text-center text-xs text-red-600 dark:text-red-400`,children:[`Page `,t,` could not be rendered.`]}):o?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(`canvas`,{ref:c,className:`block h-full w-full`}),(0,a.jsx)(`div`,{ref:l,className:`pdf-text-layer`,"aria-hidden":!0})]}):null})}function g({path:e,serverUrl:t=``,token:n=null,onLoaded:r}){let[s,d]=(0,i.useState)(null),[f,g]=(0,i.useState)(null),[_,v]=(0,i.useState)(1),[y,b]=(0,i.useState)(2),[x,S]=(0,i.useState)(null),C=(0,i.useRef)(null),w=(0,i.useRef)(new Map);(0,i.useEffect)(()=>{let i=!1,a=null;return d(null),g(null),v(1),S(null),(async()=>{try{let{doc:o,task:s}=await u(await l(t,e,n));if(a=s,i){await s.destroy().catch(()=>{});return}try{let e=(await o.getPage(1)).getViewport({scale:1});i||S({width:e.width,height:e.height})}catch{i||S({width:612,height:792})}if(i)return;d(o),r?.(e)}catch(e){i||g(p(e)?e:{kind:`unreadable`})}})(),()=>{i=!0,a?.destroy().catch(()=>{})}},[e,t,n]);let T=s?.numPages??0,E=(0,i.useCallback)((e,t)=>{t===null?w.current.delete(e):w.current.set(e,t)},[]);(0,i.useEffect)(()=>{if(s===null||typeof IntersectionObserver>`u`)return;let e=C.current;if(e===null)return;let t=new IntersectionObserver(e=>{for(let t of e){if(!t.isIntersecting)continue;let e=Number(t.target.dataset.page);Number.isFinite(e)&&v(e)}},{root:e,rootMargin:`-45% 0px -45% 0px`,threshold:0});for(let e of w.current.values())t.observe(e);return()=>t.disconnect()},[s,T]);let D=(0,i.useCallback)(e=>{e<1||e>T||(v(e),w.current.get(e)?.scrollIntoView({block:`start`}))},[T]);return f===null?s===null?(0,a.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,a.jsx)(`p`,{className:`text-sm text-zinc-500`,children:`Loading PDF…`})}):(0,a.jsxs)(`div`,{className:`flex h-full flex-col`,onKeyDown:e=>{if(e.key===`PageDown`||e.key===`ArrowRight`)D(_+1);else if(e.key===`PageUp`||e.key===`ArrowLeft`)D(_-1);else return;e.preventDefault()},children:[(0,a.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-zinc-200 px-3 py-2 text-xs dark:border-zinc-800`,children:[(0,a.jsx)(`button`,{type:`button`,onClick:()=>D(_-1),disabled:_<=1,"aria-label":`Previous page`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`‹`}),(0,a.jsxs)(`span`,{className:`tabular-nums text-zinc-600 dark:text-zinc-400`,children:[`Page `,_,` / `,T]}),(0,a.jsx)(`button`,{type:`button`,onClick:()=>D(_+1),disabled:_>=T,"aria-label":`Next page`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`›`}),(0,a.jsxs)(`span`,{className:`ml-auto flex items-center gap-1`,children:[(0,a.jsx)(`button`,{type:`button`,onClick:()=>b(e=>Math.max(0,e-1)),disabled:y===0,"aria-label":`Zoom out`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`−`}),(0,a.jsxs)(`span`,{className:`tabular-nums text-zinc-500`,children:[Math.round(o[y]*100),`%`]}),(0,a.jsx)(`button`,{type:`button`,onClick:()=>b(e=>Math.min(o.length-1,e+1)),disabled:y===o.length-1,"aria-label":`Zoom in`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`+`})]})]}),(0,a.jsx)(`div`,{ref:C,className:`flex-1 overflow-auto bg-zinc-100 p-4 dark:bg-zinc-950`,children:x!==null&&Array.from({length:T},(e,t)=>t+1).map(e=>(0,a.jsx)(h,{doc:s,pageNumber:e,scale:o[y],baseSize:x,active:Math.abs(e-_)<=m,registerSlot:E},e))})]}):(0,a.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,a.jsx)(`p`,{className:`max-w-md text-center text-sm text-zinc-600 dark:text-zinc-400`,children:c(f)})})}export{g as PdfViewer,g as default};
@@ -1 +1 @@
1
- import{m as e,t}from"./mermaid-parser.core-DwpLoctN.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-_wZywoZs.js";import"./chunk-I66GZJ75-BjZt7BZl.js";import"./chunk-3NCLNEKW-DfGGO5Az.js";import{n as i,r as a,t as o}from"./chunk-6Q2QTUOP-Cj5IB9-q.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
1
+ import{m as e,t}from"./mermaid-parser.core-rv6CQBy8.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-_wZywoZs.js";import"./chunk-I66GZJ75-DPBfauyP.js";import"./chunk-3NCLNEKW-DY4xKOXA.js";import{n as i,r as a,t as o}from"./chunk-6Q2QTUOP-BfJd7VYB.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
@@ -0,0 +1 @@
1
+ import"./chunk-KEIR6QF5-BfrZ3jm6.js";import{M as e}from"./mermaid-parser.core-rv6CQBy8.js";export{e as createArchitectureServices};