@zettelgeist/cli 0.1.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 (189) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +64 -0
  3. package/dist/bin.js +2211 -0
  4. package/dist/bin.js.map +7 -0
  5. package/dist/templates/export.html +27 -0
  6. package/dist/templates/skill/SKILL.md +220 -0
  7. package/dist/viewer-bundle/architecture-YZFGNWBL-W2K3EQOM.js +14 -0
  8. package/dist/viewer-bundle/architecture-YZFGNWBL-W2K3EQOM.js.map +7 -0
  9. package/dist/viewer-bundle/architectureDiagram-Q4EWVU46-LCGRUEWT.js +8884 -0
  10. package/dist/viewer-bundle/architectureDiagram-Q4EWVU46-LCGRUEWT.js.map +7 -0
  11. package/dist/viewer-bundle/base.css +248 -0
  12. package/dist/viewer-bundle/blockDiagram-DXYQGD6D-KAM7BOAP.js +3777 -0
  13. package/dist/viewer-bundle/blockDiagram-DXYQGD6D-KAM7BOAP.js.map +7 -0
  14. package/dist/viewer-bundle/board.css +370 -0
  15. package/dist/viewer-bundle/c4Diagram-AHTNJAMY-C3FIQYXA.js +2596 -0
  16. package/dist/viewer-bundle/c4Diagram-AHTNJAMY-C3FIQYXA.js.map +7 -0
  17. package/dist/viewer-bundle/chunk-2QXGXAO5.js +68 -0
  18. package/dist/viewer-bundle/chunk-2QXGXAO5.js.map +7 -0
  19. package/dist/viewer-bundle/chunk-5PZT7VUU.js +67 -0
  20. package/dist/viewer-bundle/chunk-5PZT7VUU.js.map +7 -0
  21. package/dist/viewer-bundle/chunk-5YJCJF2C.js +112 -0
  22. package/dist/viewer-bundle/chunk-5YJCJF2C.js.map +7 -0
  23. package/dist/viewer-bundle/chunk-6LYV7PBV.js +1011 -0
  24. package/dist/viewer-bundle/chunk-6LYV7PBV.js.map +7 -0
  25. package/dist/viewer-bundle/chunk-6VW7D5WX.js +48 -0
  26. package/dist/viewer-bundle/chunk-6VW7D5WX.js.map +7 -0
  27. package/dist/viewer-bundle/chunk-76C5OSD4.js +2048 -0
  28. package/dist/viewer-bundle/chunk-76C5OSD4.js.map +7 -0
  29. package/dist/viewer-bundle/chunk-7NZMPQDX.js +6957 -0
  30. package/dist/viewer-bundle/chunk-7NZMPQDX.js.map +7 -0
  31. package/dist/viewer-bundle/chunk-A634GTZN.js +122 -0
  32. package/dist/viewer-bundle/chunk-A634GTZN.js.map +7 -0
  33. package/dist/viewer-bundle/chunk-AJQJUKMU.js +133 -0
  34. package/dist/viewer-bundle/chunk-AJQJUKMU.js.map +7 -0
  35. package/dist/viewer-bundle/chunk-BM2KPNFW.js +5556 -0
  36. package/dist/viewer-bundle/chunk-BM2KPNFW.js.map +7 -0
  37. package/dist/viewer-bundle/chunk-CIDUOCCG.js +25 -0
  38. package/dist/viewer-bundle/chunk-CIDUOCCG.js.map +7 -0
  39. package/dist/viewer-bundle/chunk-CZHJHAOR.js +6397 -0
  40. package/dist/viewer-bundle/chunk-CZHJHAOR.js.map +7 -0
  41. package/dist/viewer-bundle/chunk-D5RLIWY4.js +125 -0
  42. package/dist/viewer-bundle/chunk-D5RLIWY4.js.map +7 -0
  43. package/dist/viewer-bundle/chunk-DI52DQAC.js +44 -0
  44. package/dist/viewer-bundle/chunk-DI52DQAC.js.map +7 -0
  45. package/dist/viewer-bundle/chunk-EXJQLTIV.js +51 -0
  46. package/dist/viewer-bundle/chunk-EXJQLTIV.js.map +7 -0
  47. package/dist/viewer-bundle/chunk-G3PPZWPW.js +96 -0
  48. package/dist/viewer-bundle/chunk-G3PPZWPW.js.map +7 -0
  49. package/dist/viewer-bundle/chunk-GTW4IDD4.js +30297 -0
  50. package/dist/viewer-bundle/chunk-GTW4IDD4.js.map +7 -0
  51. package/dist/viewer-bundle/chunk-GVE7OA3Z.js +59 -0
  52. package/dist/viewer-bundle/chunk-GVE7OA3Z.js.map +7 -0
  53. package/dist/viewer-bundle/chunk-JBUVKVPY.js +2042 -0
  54. package/dist/viewer-bundle/chunk-JBUVKVPY.js.map +7 -0
  55. package/dist/viewer-bundle/chunk-JQLVOAQB.js +20 -0
  56. package/dist/viewer-bundle/chunk-JQLVOAQB.js.map +7 -0
  57. package/dist/viewer-bundle/chunk-LQMQSYLO.js +101 -0
  58. package/dist/viewer-bundle/chunk-LQMQSYLO.js.map +7 -0
  59. package/dist/viewer-bundle/chunk-MBFAQ3IK.js +34 -0
  60. package/dist/viewer-bundle/chunk-MBFAQ3IK.js.map +7 -0
  61. package/dist/viewer-bundle/chunk-N7G7IIKG.js +25 -0
  62. package/dist/viewer-bundle/chunk-N7G7IIKG.js.map +7 -0
  63. package/dist/viewer-bundle/chunk-NW4YG3NS.js +171 -0
  64. package/dist/viewer-bundle/chunk-NW4YG3NS.js.map +7 -0
  65. package/dist/viewer-bundle/chunk-ODEP5TKB.js +61 -0
  66. package/dist/viewer-bundle/chunk-ODEP5TKB.js.map +7 -0
  67. package/dist/viewer-bundle/chunk-OGKINV23.js +1050 -0
  68. package/dist/viewer-bundle/chunk-OGKINV23.js.map +7 -0
  69. package/dist/viewer-bundle/chunk-OGMSNDVH.js +1994 -0
  70. package/dist/viewer-bundle/chunk-OGMSNDVH.js.map +7 -0
  71. package/dist/viewer-bundle/chunk-QJVSDNAW.js +25 -0
  72. package/dist/viewer-bundle/chunk-QJVSDNAW.js.map +7 -0
  73. package/dist/viewer-bundle/chunk-RBTT26R4.js +2721 -0
  74. package/dist/viewer-bundle/chunk-RBTT26R4.js.map +7 -0
  75. package/dist/viewer-bundle/chunk-RQIPIIE2.js +48 -0
  76. package/dist/viewer-bundle/chunk-RQIPIIE2.js.map +7 -0
  77. package/dist/viewer-bundle/chunk-SRTYTXTX.js +22 -0
  78. package/dist/viewer-bundle/chunk-SRTYTXTX.js.map +7 -0
  79. package/dist/viewer-bundle/chunk-TRL7YIZG.js +1663 -0
  80. package/dist/viewer-bundle/chunk-TRL7YIZG.js.map +7 -0
  81. package/dist/viewer-bundle/chunk-U5T7X4BV.js +172 -0
  82. package/dist/viewer-bundle/chunk-U5T7X4BV.js.map +7 -0
  83. package/dist/viewer-bundle/chunk-UCAW6C6C.js +48 -0
  84. package/dist/viewer-bundle/chunk-UCAW6C6C.js.map +7 -0
  85. package/dist/viewer-bundle/chunk-UEAG4BJQ.js +93 -0
  86. package/dist/viewer-bundle/chunk-UEAG4BJQ.js.map +7 -0
  87. package/dist/viewer-bundle/chunk-UVRE3R6A.js +1039 -0
  88. package/dist/viewer-bundle/chunk-UVRE3R6A.js.map +7 -0
  89. package/dist/viewer-bundle/chunk-VODO7SV4.js +25029 -0
  90. package/dist/viewer-bundle/chunk-VODO7SV4.js.map +7 -0
  91. package/dist/viewer-bundle/chunk-YEU62MVS.js +682 -0
  92. package/dist/viewer-bundle/chunk-YEU62MVS.js.map +7 -0
  93. package/dist/viewer-bundle/chunk-YFQT7PPW.js +987 -0
  94. package/dist/viewer-bundle/chunk-YFQT7PPW.js.map +7 -0
  95. package/dist/viewer-bundle/chunk-Z4G7FG27.js +48 -0
  96. package/dist/viewer-bundle/chunk-Z4G7FG27.js.map +7 -0
  97. package/dist/viewer-bundle/chunk-ZW4Y7DIF.js +2044 -0
  98. package/dist/viewer-bundle/chunk-ZW4Y7DIF.js.map +7 -0
  99. package/dist/viewer-bundle/classDiagram-6PBFFD2Q-7VKYXLUX.js +46 -0
  100. package/dist/viewer-bundle/classDiagram-6PBFFD2Q-7VKYXLUX.js.map +7 -0
  101. package/dist/viewer-bundle/classDiagram-v2-HSJHXN6E-ACCNN7EN.js +46 -0
  102. package/dist/viewer-bundle/classDiagram-v2-HSJHXN6E-ACCNN7EN.js.map +7 -0
  103. package/dist/viewer-bundle/cose-bilkent-S5V4N54A-MUJHAA34.js +5009 -0
  104. package/dist/viewer-bundle/cose-bilkent-S5V4N54A-MUJHAA34.js.map +7 -0
  105. package/dist/viewer-bundle/dagre-KV5264BT-YC5VV3WF.js +739 -0
  106. package/dist/viewer-bundle/dagre-KV5264BT-YC5VV3WF.js.map +7 -0
  107. package/dist/viewer-bundle/dark.css +13 -0
  108. package/dist/viewer-bundle/detail.css +539 -0
  109. package/dist/viewer-bundle/diagram-5BDNPKRD-RXFPVFYK.js +214 -0
  110. package/dist/viewer-bundle/diagram-5BDNPKRD-RXFPVFYK.js.map +7 -0
  111. package/dist/viewer-bundle/diagram-G4DWMVQ6-KN7CBNBQ.js +578 -0
  112. package/dist/viewer-bundle/diagram-G4DWMVQ6-KN7CBNBQ.js.map +7 -0
  113. package/dist/viewer-bundle/diagram-MMDJMWI5-ZN6TQ7ZC.js +345 -0
  114. package/dist/viewer-bundle/diagram-MMDJMWI5-ZN6TQ7ZC.js.map +7 -0
  115. package/dist/viewer-bundle/diagram-TYMM5635-MMTUJ4KA.js +255 -0
  116. package/dist/viewer-bundle/diagram-TYMM5635-MMTUJ4KA.js.map +7 -0
  117. package/dist/viewer-bundle/docs.css +88 -0
  118. package/dist/viewer-bundle/edit-modal-BEGC2AO6.js +176 -0
  119. package/dist/viewer-bundle/edit-modal-BEGC2AO6.js.map +7 -0
  120. package/dist/viewer-bundle/erDiagram-SMLLAGMA-TBHMLD2E.js +1349 -0
  121. package/dist/viewer-bundle/erDiagram-SMLLAGMA-TBHMLD2E.js.map +7 -0
  122. package/dist/viewer-bundle/flowDiagram-DWJPFMVM-BZHLK6QB.js +2501 -0
  123. package/dist/viewer-bundle/flowDiagram-DWJPFMVM-BZHLK6QB.js.map +7 -0
  124. package/dist/viewer-bundle/ganttDiagram-T4ZO3ILL-YBARPTQR.js +2654 -0
  125. package/dist/viewer-bundle/ganttDiagram-T4ZO3ILL-YBARPTQR.js.map +7 -0
  126. package/dist/viewer-bundle/gitGraph-7Q5UKJZL-HENKIQDX.js +14 -0
  127. package/dist/viewer-bundle/gitGraph-7Q5UKJZL-HENKIQDX.js.map +7 -0
  128. package/dist/viewer-bundle/gitGraphDiagram-UUTBAWPF-M4VV3YVA.js +1946 -0
  129. package/dist/viewer-bundle/gitGraphDiagram-UUTBAWPF-M4VV3YVA.js.map +7 -0
  130. package/dist/viewer-bundle/index.html +28 -0
  131. package/dist/viewer-bundle/info-OMHHGYJF-E773USRS.js +14 -0
  132. package/dist/viewer-bundle/info-OMHHGYJF-E773USRS.js.map +7 -0
  133. package/dist/viewer-bundle/infoDiagram-42DDH7IO-C7JGUXKK.js +59 -0
  134. package/dist/viewer-bundle/infoDiagram-42DDH7IO-C7JGUXKK.js.map +7 -0
  135. package/dist/viewer-bundle/ishikawaDiagram-UXIWVN3A-YBC4X4VB.js +1012 -0
  136. package/dist/viewer-bundle/ishikawaDiagram-UXIWVN3A-YBC4X4VB.js.map +7 -0
  137. package/dist/viewer-bundle/journeyDiagram-VCZTEJTY-6WKVEOOO.js +1303 -0
  138. package/dist/viewer-bundle/journeyDiagram-VCZTEJTY-6WKVEOOO.js.map +7 -0
  139. package/dist/viewer-bundle/kanban-definition-6JOO6SKY-URTTHHO4.js +1131 -0
  140. package/dist/viewer-bundle/kanban-definition-6JOO6SKY-URTTHHO4.js.map +7 -0
  141. package/dist/viewer-bundle/katex-QN5266ZE.js +14318 -0
  142. package/dist/viewer-bundle/katex-QN5266ZE.js.map +7 -0
  143. package/dist/viewer-bundle/light.css +15 -0
  144. package/dist/viewer-bundle/main.js +4816 -0
  145. package/dist/viewer-bundle/main.js.map +7 -0
  146. package/dist/viewer-bundle/mermaid.core-AEBXU2JK.js +1708 -0
  147. package/dist/viewer-bundle/mermaid.core-AEBXU2JK.js.map +7 -0
  148. package/dist/viewer-bundle/mindmap-definition-QFDTVHPH-KUMAMRSF.js +1277 -0
  149. package/dist/viewer-bundle/mindmap-definition-QFDTVHPH-KUMAMRSF.js.map +7 -0
  150. package/dist/viewer-bundle/packet-4T2RLAQJ-IRYWWA66.js +14 -0
  151. package/dist/viewer-bundle/packet-4T2RLAQJ-IRYWWA66.js.map +7 -0
  152. package/dist/viewer-bundle/pico.classless.min.css +4 -0
  153. package/dist/viewer-bundle/pie-ZZUOXDRM-JYO4VL5N.js +14 -0
  154. package/dist/viewer-bundle/pie-ZZUOXDRM-JYO4VL5N.js.map +7 -0
  155. package/dist/viewer-bundle/pieDiagram-DEJITSTG-QOEHQN3N.js +238 -0
  156. package/dist/viewer-bundle/pieDiagram-DEJITSTG-QOEHQN3N.js.map +7 -0
  157. package/dist/viewer-bundle/prompt-modal-C4LHI7BS.js +12 -0
  158. package/dist/viewer-bundle/prompt-modal-C4LHI7BS.js.map +7 -0
  159. package/dist/viewer-bundle/quadrantDiagram-34T5L4WZ-SJNPUU5N.js +1409 -0
  160. package/dist/viewer-bundle/quadrantDiagram-34T5L4WZ-SJNPUU5N.js.map +7 -0
  161. package/dist/viewer-bundle/radar-PYXPWWZC-45BRYQSB.js +14 -0
  162. package/dist/viewer-bundle/radar-PYXPWWZC-45BRYQSB.js.map +7 -0
  163. package/dist/viewer-bundle/reason-modal-MK34MQ73.js +68 -0
  164. package/dist/viewer-bundle/reason-modal-MK34MQ73.js.map +7 -0
  165. package/dist/viewer-bundle/requirementDiagram-MS252O5E-UOMT3FCC.js +1311 -0
  166. package/dist/viewer-bundle/requirementDiagram-MS252O5E-UOMT3FCC.js.map +7 -0
  167. package/dist/viewer-bundle/sankeyDiagram-XADWPNL6-LAVJ5C6A.js +1263 -0
  168. package/dist/viewer-bundle/sankeyDiagram-XADWPNL6-LAVJ5C6A.js.map +7 -0
  169. package/dist/viewer-bundle/sequenceDiagram-FGHM5R23-3IWTOUNQ.js +4655 -0
  170. package/dist/viewer-bundle/sequenceDiagram-FGHM5R23-3IWTOUNQ.js.map +7 -0
  171. package/dist/viewer-bundle/stateDiagram-FHFEXIEX-S2OVQQON.js +495 -0
  172. package/dist/viewer-bundle/stateDiagram-FHFEXIEX-S2OVQQON.js.map +7 -0
  173. package/dist/viewer-bundle/stateDiagram-v2-QKLJ7IA2-XNZ3XXSV.js +44 -0
  174. package/dist/viewer-bundle/stateDiagram-v2-QKLJ7IA2-XNZ3XXSV.js.map +7 -0
  175. package/dist/viewer-bundle/timeline-definition-GMOUNBTQ-FHVZ7MHE.js +1646 -0
  176. package/dist/viewer-bundle/timeline-definition-GMOUNBTQ-FHVZ7MHE.js.map +7 -0
  177. package/dist/viewer-bundle/treeView-SZITEDCU-RXZXNYAM.js +14 -0
  178. package/dist/viewer-bundle/treeView-SZITEDCU-RXZXNYAM.js.map +7 -0
  179. package/dist/viewer-bundle/treemap-W4RFUUIX-2IGOFSJM.js +14 -0
  180. package/dist/viewer-bundle/treemap-W4RFUUIX-2IGOFSJM.js.map +7 -0
  181. package/dist/viewer-bundle/vennDiagram-DHZGUBPP-HEAOEXEZ.js +2544 -0
  182. package/dist/viewer-bundle/vennDiagram-DHZGUBPP-HEAOEXEZ.js.map +7 -0
  183. package/dist/viewer-bundle/wardley-RL74JXVD-VSPCLOX2.js +14 -0
  184. package/dist/viewer-bundle/wardley-RL74JXVD-VSPCLOX2.js.map +7 -0
  185. package/dist/viewer-bundle/wardleyDiagram-NUSXRM2D-EBY4FG3X.js +938 -0
  186. package/dist/viewer-bundle/wardleyDiagram-NUSXRM2D-EBY4FG3X.js.map +7 -0
  187. package/dist/viewer-bundle/xychartDiagram-5P7HB3ND-SSMUQEXK.js +1952 -0
  188. package/dist/viewer-bundle/xychartDiagram-5P7HB3ND-SSMUQEXK.js.map +7 -0
  189. package/package.json +51 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/.pnpm/mermaid@11.14.0/node_modules/mermaid/dist/chunks/mermaid.core/diagram-TYMM5635.mjs"],
4
+ "sourcesContent": ["import {\n selectSvgElement\n} from \"./chunk-426QAEUC.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n cleanAndMerge\n} from \"./chunk-5PVQY5BW.mjs\";\nimport {\n clear,\n configureSvgSize,\n defaultConfig_default,\n getAccDescription,\n getAccTitle,\n getConfig,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle\n} from \"./chunk-ICPOFSXX.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/packet/db.ts\nvar DEFAULT_PACKET_CONFIG = defaultConfig_default.packet;\nvar PacketDB = class {\n constructor() {\n this.packet = [];\n this.setAccTitle = setAccTitle;\n this.getAccTitle = getAccTitle;\n this.setDiagramTitle = setDiagramTitle;\n this.getDiagramTitle = getDiagramTitle;\n this.getAccDescription = getAccDescription;\n this.setAccDescription = setAccDescription;\n }\n static {\n __name(this, \"PacketDB\");\n }\n getConfig() {\n const config = cleanAndMerge({\n ...DEFAULT_PACKET_CONFIG,\n ...getConfig().packet\n });\n if (config.showBits) {\n config.paddingY += 10;\n }\n return config;\n }\n getPacket() {\n return this.packet;\n }\n pushWord(word) {\n if (word.length > 0) {\n this.packet.push(word);\n }\n }\n clear() {\n clear();\n this.packet = [];\n }\n};\n\n// src/diagrams/packet/parser.ts\nimport { parse } from \"@mermaid-js/parser\";\nvar maxPacketSize = 1e4;\nvar populate = /* @__PURE__ */ __name((ast, db) => {\n populateCommonDb(ast, db);\n let lastBit = -1;\n let word = [];\n let row = 1;\n const { bitsPerRow } = db.getConfig();\n for (let { start, end, bits, label } of ast.blocks) {\n if (start !== void 0 && end !== void 0 && end < start) {\n throw new Error(`Packet block ${start} - ${end} is invalid. End must be greater than start.`);\n }\n start ??= lastBit + 1;\n if (start !== lastBit + 1) {\n throw new Error(\n `Packet block ${start} - ${end ?? start} is not contiguous. It should start from ${lastBit + 1}.`\n );\n }\n if (bits === 0) {\n throw new Error(`Packet block ${start} is invalid. Cannot have a zero bit field.`);\n }\n end ??= start + (bits ?? 1) - 1;\n bits ??= end - start + 1;\n lastBit = end;\n log.debug(`Packet block ${start} - ${lastBit} with label ${label}`);\n while (word.length <= bitsPerRow + 1 && db.getPacket().length < maxPacketSize) {\n const [block, nextBlock] = getNextFittingBlock({ start, end, bits, label }, row, bitsPerRow);\n word.push(block);\n if (block.end + 1 === row * bitsPerRow) {\n db.pushWord(word);\n word = [];\n row++;\n }\n if (!nextBlock) {\n break;\n }\n ({ start, end, bits, label } = nextBlock);\n }\n }\n db.pushWord(word);\n}, \"populate\");\nvar getNextFittingBlock = /* @__PURE__ */ __name((block, row, bitsPerRow) => {\n if (block.start === void 0) {\n throw new Error(\"start should have been set during first phase\");\n }\n if (block.end === void 0) {\n throw new Error(\"end should have been set during first phase\");\n }\n if (block.start > block.end) {\n throw new Error(`Block start ${block.start} is greater than block end ${block.end}.`);\n }\n if (block.end + 1 <= row * bitsPerRow) {\n return [block, void 0];\n }\n const rowEnd = row * bitsPerRow - 1;\n const rowStart = row * bitsPerRow;\n return [\n {\n start: block.start,\n end: rowEnd,\n label: block.label,\n bits: rowEnd - block.start\n },\n {\n start: rowStart,\n end: block.end,\n label: block.label,\n bits: block.end - rowStart\n }\n ];\n}, \"getNextFittingBlock\");\nvar parser = {\n // @ts-expect-error - PacketDB is not assignable to DiagramDB\n parser: { yy: void 0 },\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"packet\", input);\n const db = parser.parser?.yy;\n if (!(db instanceof PacketDB)) {\n throw new Error(\n \"parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.\"\n );\n }\n log.debug(ast);\n populate(ast, db);\n }, \"parse\")\n};\n\n// src/diagrams/packet/renderer.ts\nvar draw = /* @__PURE__ */ __name((_text, id, _version, diagram2) => {\n const db = diagram2.db;\n const config = db.getConfig();\n const { rowHeight, paddingY, bitWidth, bitsPerRow } = config;\n const words = db.getPacket();\n const title = db.getDiagramTitle();\n const totalRowHeight = rowHeight + paddingY;\n const svgHeight = totalRowHeight * (words.length + 1) - (title ? 0 : rowHeight);\n const svgWidth = bitWidth * bitsPerRow + 2;\n const svg = selectSvgElement(id);\n svg.attr(\"viewBox\", `0 0 ${svgWidth} ${svgHeight}`);\n configureSvgSize(svg, svgHeight, svgWidth, config.useMaxWidth);\n for (const [word, packet] of words.entries()) {\n drawWord(svg, packet, word, config);\n }\n svg.append(\"text\").text(title).attr(\"x\", svgWidth / 2).attr(\"y\", svgHeight - totalRowHeight / 2).attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").attr(\"class\", \"packetTitle\");\n}, \"draw\");\nvar drawWord = /* @__PURE__ */ __name((svg, word, rowNumber, { rowHeight, paddingX, paddingY, bitWidth, bitsPerRow, showBits }) => {\n const group = svg.append(\"g\");\n const wordY = rowNumber * (rowHeight + paddingY) + paddingY;\n for (const block of word) {\n const blockX = block.start % bitsPerRow * bitWidth + 1;\n const width = (block.end - block.start + 1) * bitWidth - paddingX;\n group.append(\"rect\").attr(\"x\", blockX).attr(\"y\", wordY).attr(\"width\", width).attr(\"height\", rowHeight).attr(\"class\", \"packetBlock\");\n group.append(\"text\").attr(\"x\", blockX + width / 2).attr(\"y\", wordY + rowHeight / 2).attr(\"class\", \"packetLabel\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").text(block.label);\n if (!showBits) {\n continue;\n }\n const isSingleBlock = block.end === block.start;\n const bitNumberY = wordY - 2;\n group.append(\"text\").attr(\"x\", blockX + (isSingleBlock ? width / 2 : 0)).attr(\"y\", bitNumberY).attr(\"class\", \"packetByte start\").attr(\"dominant-baseline\", \"auto\").attr(\"text-anchor\", isSingleBlock ? \"middle\" : \"start\").text(block.start);\n if (!isSingleBlock) {\n group.append(\"text\").attr(\"x\", blockX + width).attr(\"y\", bitNumberY).attr(\"class\", \"packetByte end\").attr(\"dominant-baseline\", \"auto\").attr(\"text-anchor\", \"end\").text(block.end);\n }\n }\n}, \"drawWord\");\nvar renderer = { draw };\n\n// src/diagrams/packet/styles.ts\nvar defaultPacketStyleOptions = {\n byteFontSize: \"10px\",\n startByteColor: \"black\",\n endByteColor: \"black\",\n labelColor: \"black\",\n labelFontSize: \"12px\",\n titleColor: \"black\",\n titleFontSize: \"14px\",\n blockStrokeColor: \"black\",\n blockStrokeWidth: \"1\",\n blockFillColor: \"#efefef\"\n};\nvar styles = /* @__PURE__ */ __name(({ packet } = {}) => {\n const options = cleanAndMerge(defaultPacketStyleOptions, packet);\n return `\n\t.packetByte {\n\t\tfont-size: ${options.byteFontSize};\n\t}\n\t.packetByte.start {\n\t\tfill: ${options.startByteColor};\n\t}\n\t.packetByte.end {\n\t\tfill: ${options.endByteColor};\n\t}\n\t.packetLabel {\n\t\tfill: ${options.labelColor};\n\t\tfont-size: ${options.labelFontSize};\n\t}\n\t.packetTitle {\n\t\tfill: ${options.titleColor};\n\t\tfont-size: ${options.titleFontSize};\n\t}\n\t.packetBlock {\n\t\tstroke: ${options.blockStrokeColor};\n\t\tstroke-width: ${options.blockStrokeWidth};\n\t\tfill: ${options.blockFillColor};\n\t}\n\t`;\n}, \"styles\");\n\n// src/diagrams/packet/diagram.ts\nvar diagram = {\n parser,\n get db() {\n return new PacketDB();\n },\n renderer,\n styles\n};\nexport {\n diagram\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,88 @@
1
+ .zg-docs {
2
+ display: grid;
3
+ grid-template-columns: 220px 1fr;
4
+ gap: 1rem;
5
+ align-items: start;
6
+ }
7
+
8
+ .zg-docs-sidebar {
9
+ background: var(--pico-card-background-color, #f5f5f5);
10
+ padding: 0.75rem;
11
+ border-radius: 0.375rem;
12
+ position: sticky;
13
+ top: 1rem;
14
+ }
15
+
16
+ .zg-docs-sidebar h3 {
17
+ font-size: 0.875rem;
18
+ text-transform: uppercase;
19
+ margin: 0 0 0.5rem 0;
20
+ }
21
+
22
+ .zg-docs-list {
23
+ list-style: none;
24
+ padding: 0;
25
+ margin: 0;
26
+ }
27
+
28
+ .zg-docs-list li {
29
+ padding: 0.25rem 0;
30
+ }
31
+
32
+ .zg-docs-list-item {
33
+ display: flex;
34
+ align-items: center;
35
+ gap: 0.25rem;
36
+ }
37
+
38
+ .zg-docs-list a {
39
+ text-decoration: none;
40
+ font-size: 0.875rem;
41
+ display: block;
42
+ padding: 0.25rem 0.5rem;
43
+ border-radius: 0.25rem;
44
+ flex: 1;
45
+ min-width: 0;
46
+ }
47
+
48
+ button.zg-docs-rename {
49
+ flex: 0 0 auto;
50
+ width: auto;
51
+ background: transparent;
52
+ border: none;
53
+ cursor: pointer;
54
+ font-size: 0.85rem;
55
+ line-height: 1;
56
+ padding: 0.25rem 0.4rem;
57
+ margin: 0;
58
+ color: var(--zg-btn-fg, #57606a);
59
+ border-radius: 0.25rem;
60
+ transition: color 0.15s, background 0.15s;
61
+ }
62
+ button.zg-docs-rename:hover,
63
+ button.zg-docs-rename:focus-visible {
64
+ color: var(--zg-btn-fg-hover, #1095c1);
65
+ background: var(--pico-background-color, transparent);
66
+ }
67
+
68
+ .zg-docs-list a:hover {
69
+ background: var(--pico-muted-border-color, #ddd);
70
+ }
71
+
72
+ .zg-docs-list a.active {
73
+ background: var(--pico-primary, #1095c1);
74
+ color: white;
75
+ }
76
+
77
+ .zg-docs-main {
78
+ min-width: 0;
79
+ }
80
+
81
+ @media (max-width: 768px) {
82
+ .zg-docs {
83
+ grid-template-columns: 1fr;
84
+ }
85
+ .zg-docs-sidebar {
86
+ position: static;
87
+ }
88
+ }
@@ -0,0 +1,176 @@
1
+ import "./chunk-DI52DQAC.js";
2
+
3
+ // src/components/edit-modal.ts
4
+ var STATUS_OPTIONS = [
5
+ { value: "", label: "(auto \u2014 derived)" },
6
+ { value: "draft", label: "Draft" },
7
+ { value: "planned", label: "Planned" },
8
+ { value: "in-progress", label: "In Progress" },
9
+ { value: "in-review", label: "In Review" },
10
+ { value: "done", label: "Done" },
11
+ { value: "blocked", label: "Blocked" },
12
+ { value: "cancelled", label: "Cancelled" }
13
+ ];
14
+ function showEditModal({ spec }) {
15
+ return new Promise((resolve) => {
16
+ const overlay = document.createElement("div");
17
+ overlay.className = "zg-modal-overlay";
18
+ const dialog = document.createElement("div");
19
+ dialog.className = "zg-modal zg-modal-wide";
20
+ const heading = document.createElement("h3");
21
+ heading.textContent = `Edit "${spec.name}"`;
22
+ dialog.appendChild(heading);
23
+ const form = document.createElement("form");
24
+ form.className = "zg-edit-form";
25
+ form.addEventListener("submit", (e) => e.preventDefault());
26
+ const statusField = field("Status (override)", () => {
27
+ const sel = document.createElement("select");
28
+ sel.className = "zg-edit-input";
29
+ for (const opt of STATUS_OPTIONS) {
30
+ const o = document.createElement("option");
31
+ o.value = opt.value;
32
+ o.textContent = opt.label;
33
+ sel.appendChild(o);
34
+ }
35
+ sel.value = spec.frontmatterStatus ?? "";
36
+ return sel;
37
+ });
38
+ const blockedByField = field("Blocked by (reason)", () => {
39
+ const ta = document.createElement("textarea");
40
+ ta.className = "zg-edit-input";
41
+ ta.rows = 2;
42
+ ta.value = spec.blockedBy ?? "";
43
+ return ta;
44
+ });
45
+ const prField = field("PR URL", () => {
46
+ const input = document.createElement("input");
47
+ input.type = "url";
48
+ input.className = "zg-edit-input";
49
+ input.placeholder = "https://github.com/org/repo/pull/123";
50
+ input.value = spec.pr ?? "";
51
+ return input;
52
+ });
53
+ const branchField = field("Branch", () => {
54
+ const input = document.createElement("input");
55
+ input.type = "text";
56
+ input.className = "zg-edit-input";
57
+ input.placeholder = "feat/foo";
58
+ input.value = spec.branch ?? "";
59
+ return input;
60
+ });
61
+ const worktreeField = field("Worktree path", () => {
62
+ const input = document.createElement("input");
63
+ input.type = "text";
64
+ input.className = "zg-edit-input";
65
+ input.placeholder = "../zg-foo";
66
+ input.value = spec.worktree ?? "";
67
+ return input;
68
+ });
69
+ form.append(
70
+ statusField.row,
71
+ blockedByField.row,
72
+ prField.row,
73
+ branchField.row,
74
+ worktreeField.row
75
+ );
76
+ const statusSelect = statusField.input;
77
+ const blockedByTextarea = blockedByField.input;
78
+ const prInput = prField.input;
79
+ const branchInput = branchField.input;
80
+ const worktreeInput = worktreeField.input;
81
+ function updateBlockedByVisibility() {
82
+ blockedByField.row.style.display = statusSelect.value === "blocked" ? "" : "none";
83
+ }
84
+ statusSelect.addEventListener("change", updateBlockedByVisibility);
85
+ updateBlockedByVisibility();
86
+ const error = document.createElement("p");
87
+ error.className = "zg-modal-error";
88
+ error.style.display = "none";
89
+ form.appendChild(error);
90
+ const buttons = document.createElement("div");
91
+ buttons.className = "zg-modal-buttons";
92
+ const cancelBtn = document.createElement("button");
93
+ cancelBtn.type = "button";
94
+ cancelBtn.className = "zg-modal-cancel";
95
+ cancelBtn.textContent = "Cancel";
96
+ const saveBtn = document.createElement("button");
97
+ saveBtn.type = "submit";
98
+ saveBtn.className = "zg-modal-confirm";
99
+ saveBtn.textContent = "Save";
100
+ buttons.appendChild(cancelBtn);
101
+ buttons.appendChild(saveBtn);
102
+ form.appendChild(buttons);
103
+ dialog.appendChild(form);
104
+ overlay.appendChild(dialog);
105
+ document.body.appendChild(overlay);
106
+ function close(saved) {
107
+ overlay.remove();
108
+ resolve(saved);
109
+ }
110
+ cancelBtn.addEventListener("click", () => close(false));
111
+ overlay.addEventListener("click", (e) => {
112
+ if (e.target === overlay) close(false);
113
+ });
114
+ saveBtn.addEventListener("click", async () => {
115
+ const newStatus = statusSelect.value || null;
116
+ const newBlockedBy = blockedByTextarea.value.trim();
117
+ const newPr = prInput.value.trim();
118
+ const newBranch = branchInput.value.trim();
119
+ const newWorktree = worktreeInput.value.trim();
120
+ if (newStatus === "blocked" && !newBlockedBy) {
121
+ error.textContent = "Blocked status requires a reason.";
122
+ error.style.display = "";
123
+ blockedByTextarea.focus();
124
+ return;
125
+ }
126
+ saveBtn.disabled = true;
127
+ cancelBtn.disabled = true;
128
+ try {
129
+ const backend = window.zettelgeistBackend;
130
+ const patch = {};
131
+ diffField(patch, "pr", spec.pr, newPr);
132
+ diffField(patch, "branch", spec.branch, newBranch);
133
+ diffField(patch, "worktree", spec.worktree, newWorktree);
134
+ if (Object.keys(patch).length > 0) {
135
+ await backend.patchFrontmatter(spec.name, patch);
136
+ }
137
+ const statusChanged = newStatus !== spec.frontmatterStatus;
138
+ const reasonChanged = newStatus === "blocked" && (spec.blockedBy ?? "") !== newBlockedBy;
139
+ if (statusChanged || reasonChanged) {
140
+ await backend.setStatus(
141
+ spec.name,
142
+ newStatus,
143
+ newStatus === "blocked" ? newBlockedBy : void 0
144
+ );
145
+ }
146
+ close(true);
147
+ } catch (err) {
148
+ error.textContent = err.message;
149
+ error.style.display = "";
150
+ saveBtn.disabled = false;
151
+ cancelBtn.disabled = false;
152
+ }
153
+ });
154
+ statusSelect.focus();
155
+ });
156
+ }
157
+ function field(labelText, mkInput) {
158
+ const row = document.createElement("label");
159
+ row.className = "zg-edit-row";
160
+ const span = document.createElement("span");
161
+ span.className = "zg-edit-label";
162
+ span.textContent = labelText;
163
+ const input = mkInput();
164
+ row.appendChild(span);
165
+ row.appendChild(input);
166
+ return { row, input };
167
+ }
168
+ function diffField(patch, key, oldVal, newVal) {
169
+ const o = oldVal ?? "";
170
+ if (o === newVal) return;
171
+ patch[key] = newVal === "" ? null : newVal;
172
+ }
173
+ export {
174
+ showEditModal
175
+ };
176
+ //# sourceMappingURL=edit-modal-BEGC2AO6.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/edit-modal.ts"],
4
+ "sourcesContent": ["import type { SpecSummary, Status } from '../backend.js';\n\nconst STATUS_OPTIONS: Array<{ value: Status | ''; label: string }> = [\n { value: '', label: '(auto \u2014 derived)' },\n { value: 'draft', label: 'Draft' },\n { value: 'planned', label: 'Planned' },\n { value: 'in-progress', label: 'In Progress' },\n { value: 'in-review', label: 'In Review' },\n { value: 'done', label: 'Done' },\n { value: 'blocked', label: 'Blocked' },\n { value: 'cancelled', label: 'Cancelled' },\n];\n\nexport interface EditModalInput {\n spec: SpecSummary;\n}\n\n/**\n * Quick-edit modal for a spec card. Editable fields: status (override),\n * blocked_by (only if status=blocked), pr URL, branch, worktree path.\n *\n * On save, mutates spec via:\n * - setStatus(name, statusValue, reason) \u2014 drives derived state + override\n * - patchFrontmatter(name, { pr, branch, worktree }) \u2014 free-form fields\n *\n * Returns true if any change was committed, false on cancel.\n */\nexport function showEditModal({ spec }: EditModalInput): Promise<boolean> {\n return new Promise((resolve) => {\n const overlay = document.createElement('div');\n overlay.className = 'zg-modal-overlay';\n\n const dialog = document.createElement('div');\n dialog.className = 'zg-modal zg-modal-wide';\n\n const heading = document.createElement('h3');\n heading.textContent = `Edit \"${spec.name}\"`;\n dialog.appendChild(heading);\n\n const form = document.createElement('form');\n form.className = 'zg-edit-form';\n form.addEventListener('submit', (e) => e.preventDefault());\n\n const statusField = field('Status (override)', () => {\n const sel = document.createElement('select');\n sel.className = 'zg-edit-input';\n for (const opt of STATUS_OPTIONS) {\n const o = document.createElement('option');\n o.value = opt.value;\n o.textContent = opt.label;\n sel.appendChild(o);\n }\n sel.value = spec.frontmatterStatus ?? '';\n return sel;\n });\n\n const blockedByField = field('Blocked by (reason)', () => {\n const ta = document.createElement('textarea');\n ta.className = 'zg-edit-input';\n ta.rows = 2;\n ta.value = spec.blockedBy ?? '';\n return ta;\n });\n\n const prField = field('PR URL', () => {\n const input = document.createElement('input');\n input.type = 'url';\n input.className = 'zg-edit-input';\n input.placeholder = 'https://github.com/org/repo/pull/123';\n input.value = spec.pr ?? '';\n return input;\n });\n\n const branchField = field('Branch', () => {\n const input = document.createElement('input');\n input.type = 'text';\n input.className = 'zg-edit-input';\n input.placeholder = 'feat/foo';\n input.value = spec.branch ?? '';\n return input;\n });\n\n const worktreeField = field('Worktree path', () => {\n const input = document.createElement('input');\n input.type = 'text';\n input.className = 'zg-edit-input';\n input.placeholder = '../zg-foo';\n input.value = spec.worktree ?? '';\n return input;\n });\n\n form.append(\n statusField.row,\n blockedByField.row,\n prField.row,\n branchField.row,\n worktreeField.row,\n );\n\n const statusSelect = statusField.input as HTMLSelectElement;\n const blockedByTextarea = blockedByField.input as HTMLTextAreaElement;\n const prInput = prField.input as HTMLInputElement;\n const branchInput = branchField.input as HTMLInputElement;\n const worktreeInput = worktreeField.input as HTMLInputElement;\n\n function updateBlockedByVisibility(): void {\n blockedByField.row.style.display = statusSelect.value === 'blocked' ? '' : 'none';\n }\n statusSelect.addEventListener('change', updateBlockedByVisibility);\n updateBlockedByVisibility();\n\n const error = document.createElement('p');\n error.className = 'zg-modal-error';\n error.style.display = 'none';\n form.appendChild(error);\n\n const buttons = document.createElement('div');\n buttons.className = 'zg-modal-buttons';\n\n const cancelBtn = document.createElement('button');\n cancelBtn.type = 'button';\n cancelBtn.className = 'zg-modal-cancel';\n cancelBtn.textContent = 'Cancel';\n\n const saveBtn = document.createElement('button');\n saveBtn.type = 'submit';\n saveBtn.className = 'zg-modal-confirm';\n saveBtn.textContent = 'Save';\n\n buttons.appendChild(cancelBtn);\n buttons.appendChild(saveBtn);\n form.appendChild(buttons);\n\n dialog.appendChild(form);\n overlay.appendChild(dialog);\n document.body.appendChild(overlay);\n\n function close(saved: boolean): void {\n overlay.remove();\n resolve(saved);\n }\n\n cancelBtn.addEventListener('click', () => close(false));\n overlay.addEventListener('click', (e) => {\n if (e.target === overlay) close(false);\n });\n\n saveBtn.addEventListener('click', async () => {\n const newStatus = (statusSelect.value || null) as Status | null;\n const newBlockedBy = blockedByTextarea.value.trim();\n const newPr = prInput.value.trim();\n const newBranch = branchInput.value.trim();\n const newWorktree = worktreeInput.value.trim();\n\n if (newStatus === 'blocked' && !newBlockedBy) {\n error.textContent = 'Blocked status requires a reason.';\n error.style.display = '';\n blockedByTextarea.focus();\n return;\n }\n\n saveBtn.disabled = true;\n cancelBtn.disabled = true;\n\n try {\n const backend = window.zettelgeistBackend;\n\n const patch: Record<string, unknown> = {};\n diffField(patch, 'pr', spec.pr, newPr);\n diffField(patch, 'branch', spec.branch, newBranch);\n diffField(patch, 'worktree', spec.worktree, newWorktree);\n if (Object.keys(patch).length > 0) {\n await backend.patchFrontmatter(spec.name, patch);\n }\n\n const statusChanged = newStatus !== spec.frontmatterStatus;\n const reasonChanged = newStatus === 'blocked' && (spec.blockedBy ?? '') !== newBlockedBy;\n if (statusChanged || reasonChanged) {\n await backend.setStatus(\n spec.name,\n newStatus,\n newStatus === 'blocked' ? newBlockedBy : undefined,\n );\n }\n\n close(true);\n } catch (err) {\n error.textContent = (err as Error).message;\n error.style.display = '';\n saveBtn.disabled = false;\n cancelBtn.disabled = false;\n }\n });\n\n statusSelect.focus();\n });\n}\n\nfunction field(labelText: string, mkInput: () => HTMLElement): { row: HTMLElement; input: HTMLElement } {\n const row = document.createElement('label');\n row.className = 'zg-edit-row';\n const span = document.createElement('span');\n span.className = 'zg-edit-label';\n span.textContent = labelText;\n const input = mkInput();\n row.appendChild(span);\n row.appendChild(input);\n return { row, input };\n}\n\nfunction diffField(patch: Record<string, unknown>, key: string, oldVal: string | null, newVal: string): void {\n const o = oldVal ?? '';\n if (o === newVal) return;\n patch[key] = newVal === '' ? null : newVal;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }