@rashidee/co2 1.3.1 → 1.3.3

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 (65) hide show
  1. package/dist/index.js +43 -6
  2. package/package.json +1 -1
  3. package/plugin/SKILLS.md +6 -3
  4. package/plugin/skills/conductor-feature-prepare/SKILL.md +29 -3
  5. package/static/assets/{abnfDiagram-VRR7QNED-pIypz8mS.js → abnfDiagram-VRR7QNED-BwxjNDj8.js} +1 -1
  6. package/static/assets/{arc-DzTLPg59.js → arc-Bf00Zylw.js} +1 -1
  7. package/static/assets/{architectureDiagram-ZJ3FMSHR-CuC9-Bft.js → architectureDiagram-ZJ3FMSHR-CRUg8Wt3.js} +1 -1
  8. package/static/assets/{blockDiagram-677ZJIJ3-DcerPwn1.js → blockDiagram-677ZJIJ3-Dy-JP_0N.js} +1 -1
  9. package/static/assets/{c4Diagram-LMCZKHZV-aH--jsPu.js → c4Diagram-LMCZKHZV-obM4PBxI.js} +1 -1
  10. package/static/assets/channel-BeHa2ubV.js +1 -0
  11. package/static/assets/{chunk-2Q5K7J3B-6kmvWwD5.js → chunk-2Q5K7J3B-DoXzquQ1.js} +1 -1
  12. package/static/assets/{chunk-32BRIVSS-Dgk5Y2Hd.js → chunk-32BRIVSS-B6VgB7K8.js} +1 -1
  13. package/static/assets/{chunk-5VM5RSS4-DISUWWIg.js → chunk-5VM5RSS4-BmZS0Ftn.js} +1 -1
  14. package/static/assets/{chunk-EX3LRPZG-CptcVUzS.js → chunk-EX3LRPZG-DdOLrDUP.js} +1 -1
  15. package/static/assets/{chunk-JWPE2WC7-DpOM2Td1.js → chunk-JWPE2WC7-RVdgT8k5.js} +1 -1
  16. package/static/assets/{chunk-MOJQB5TN-D0mE8XQJ.js → chunk-MOJQB5TN-BbMHSSXk.js} +1 -1
  17. package/static/assets/{chunk-RYQCIY6F-6tMpp_wE.js → chunk-RYQCIY6F-CBOyejV-.js} +1 -1
  18. package/static/assets/{chunk-V7JOEXUC-DlhAClLX.js → chunk-V7JOEXUC-DVvl5ZDu.js} +1 -1
  19. package/static/assets/{chunk-VR4S4FIN-CnRRTJhL.js → chunk-VR4S4FIN-TKs-_Nin.js} +1 -1
  20. package/static/assets/{chunk-XXDRQBXY-BjHtDhhp.js → chunk-XXDRQBXY-BuwUqVAV.js} +1 -1
  21. package/static/assets/classDiagram-OUVF2IWQ-B0BHpjWc.js +1 -0
  22. package/static/assets/classDiagram-v2-EOCWNBFH-B0BHpjWc.js +1 -0
  23. package/static/assets/{cose-bilkent-JH36ORCC-ywkSH5WV.js → cose-bilkent-JH36ORCC-bVLOVjVk.js} +1 -1
  24. package/static/assets/{cynefin-VYW2F7L2-rNCSrA_M.js → cynefin-VYW2F7L2-B7HPqh-Z.js} +1 -1
  25. package/static/assets/{cynefinDiagram-TSTJHNR4-CTO-xyj0.js → cynefinDiagram-TSTJHNR4-0d2yxXQG.js} +1 -1
  26. package/static/assets/{dagre-VKFMJZFB-DXWjc-x2.js → dagre-VKFMJZFB-D7ErrCay.js} +1 -1
  27. package/static/assets/{diagram-FQU43EPY-B6Yg08kE.js → diagram-FQU43EPY-C36bU8jh.js} +1 -1
  28. package/static/assets/{diagram-G47NLZAW-FdzgI0QA.js → diagram-G47NLZAW-BzaLh10R.js} +1 -1
  29. package/static/assets/{diagram-NH7WQ7WH-C7MRGBLI.js → diagram-NH7WQ7WH-v-Zsf5gF.js} +1 -1
  30. package/static/assets/{diagram-OA4YK3LP-xpJMJx9r.js → diagram-OA4YK3LP-CRbJBq_k.js} +1 -1
  31. package/static/assets/{diagram-WEI45ONY-D5PmiZy-.js → diagram-WEI45ONY-8fV5Plo4.js} +1 -1
  32. package/static/assets/{ebnfDiagram-CCIWWBDH-DJzkD6Lj.js → ebnfDiagram-CCIWWBDH-5gIe63LE.js} +1 -1
  33. package/static/assets/{erDiagram-Q63AITRT-D24quzu9.js → erDiagram-Q63AITRT-C3IcAHjG.js} +1 -1
  34. package/static/assets/{flowDiagram-23GEKE2U-2wLf_cAi.js → flowDiagram-23GEKE2U-KQjlOZK9.js} +1 -1
  35. package/static/assets/{ganttDiagram-NO4QXBWP-hjpg1Ww8.js → ganttDiagram-NO4QXBWP-Dq3c2GZf.js} +1 -1
  36. package/static/assets/{gitGraphDiagram-IHSO6WYX-Zm2bxgq8.js → gitGraphDiagram-IHSO6WYX-BYtnaU27.js} +1 -1
  37. package/static/assets/{index-CMSll7Xn.js → index-CgNepcKp.js} +138 -138
  38. package/static/assets/{infoDiagram-FWYZ7A6U-5eq5DfJX.js → infoDiagram-FWYZ7A6U-CxqBig2C.js} +1 -1
  39. package/static/assets/{ishikawaDiagram-FXEZZL3T-BqBn7GDQ.js → ishikawaDiagram-FXEZZL3T-0HfzC1wj.js} +1 -1
  40. package/static/assets/{journeyDiagram-5HDEW3XC-C6AceyMG.js → journeyDiagram-5HDEW3XC-umkaBeJl.js} +1 -1
  41. package/static/assets/{kanban-definition-HUTT4EX6-BeQ_o04F.js → kanban-definition-HUTT4EX6-DsBos3y7.js} +1 -1
  42. package/static/assets/{linear-CX49V_yy.js → linear-DtNdgaOB.js} +1 -1
  43. package/static/assets/{mindmap-definition-LN4V7U3C-CVzByupH.js → mindmap-definition-LN4V7U3C-BThlwYQu.js} +1 -1
  44. package/static/assets/{pegDiagram-2B236MQR-GuHmU0j3.js → pegDiagram-2B236MQR-DoxrNvw3.js} +1 -1
  45. package/static/assets/{pieDiagram-ENE6RG2P-BKOiteQS.js → pieDiagram-ENE6RG2P-BqCJUG4Q.js} +1 -1
  46. package/static/assets/{quadrantDiagram-ABIIQ3AL-CNtd5BPA.js → quadrantDiagram-ABIIQ3AL-4GVp_BSP.js} +1 -1
  47. package/static/assets/{railroadDiagram-RFXS5EU6-D4gIQQiY.js → railroadDiagram-RFXS5EU6-CU341ElP.js} +1 -1
  48. package/static/assets/{requirementDiagram-TGXJPOKE-BYokGs63.js → requirementDiagram-TGXJPOKE-DoBSr-cX.js} +1 -1
  49. package/static/assets/{sankeyDiagram-HTMAVEWB-5RLXfMzy.js → sankeyDiagram-HTMAVEWB-CJ__IqT6.js} +1 -1
  50. package/static/assets/{sequenceDiagram-DBY2YBRQ-DugFTncH.js → sequenceDiagram-DBY2YBRQ-BkNwP7Io.js} +1 -1
  51. package/static/assets/{sizeCapture-X5ZJPWSS-cCLHi08w.js → sizeCapture-X5ZJPWSS-B-2Xu5n9.js} +1 -1
  52. package/static/assets/{stateDiagram-2N3HPSRC-DQnxouNu.js → stateDiagram-2N3HPSRC-DPbpX5_5.js} +1 -1
  53. package/static/assets/stateDiagram-v2-6OUMAXLB-1Opbis3l.js +1 -0
  54. package/static/assets/{swimlanes-5IMT3BWC-CET7P2RH.js → swimlanes-5IMT3BWC-CnBZNoN8.js} +2 -2
  55. package/static/assets/swimlanesDiagram-G3AALYLV-aoTIjn7w.js +8 -0
  56. package/static/assets/{timeline-definition-FHXFAJF6-49T4daxW.js → timeline-definition-FHXFAJF6-iVUc1pZx.js} +1 -1
  57. package/static/assets/{vennDiagram-L72KCM5P-FqAF-S_r.js → vennDiagram-L72KCM5P-CL66_DTK.js} +1 -1
  58. package/static/assets/{wardleyDiagram-EHGQE667-C9Du1lj9.js → wardleyDiagram-EHGQE667-DQHcCKUc.js} +1 -1
  59. package/static/assets/{xychartDiagram-FW5EYKEG-CY-hJxel.js → xychartDiagram-FW5EYKEG-B8thIce8.js} +1 -1
  60. package/static/index.html +1 -1
  61. package/static/assets/channel-2AGSySJb.js +0 -1
  62. package/static/assets/classDiagram-OUVF2IWQ-DfuKvXel.js +0 -1
  63. package/static/assets/classDiagram-v2-EOCWNBFH-DfuKvXel.js +0 -1
  64. package/static/assets/stateDiagram-v2-6OUMAXLB-BsTf558I.js +0 -1
  65. package/static/assets/swimlanesDiagram-G3AALYLV-Crsci1-o.js +0 -8
package/dist/index.js CHANGED
@@ -6809,7 +6809,7 @@ var {
6809
6809
  // package.json
6810
6810
  var package_default = {
6811
6811
  name: "@rashidee/co2",
6812
- version: "1.3.1",
6812
+ version: "1.3.3",
6813
6813
  description: "Compound Context Studio \u2014 self-hosted team context authoring for CO2 projects",
6814
6814
  type: "module",
6815
6815
  license: "MIT",
@@ -21951,9 +21951,9 @@ function parseTrackingStatus(filePath) {
21951
21951
  return "unknown";
21952
21952
  }
21953
21953
  var activeWatchers = /* @__PURE__ */ new Map();
21954
- function pollConductorRun(db, runId, trackingFilePath, notifyUserId) {
21954
+ function pollConductorRun(db, runId, trackingFilePath, notifyUserId, opts = {}) {
21955
21955
  try {
21956
- if (existsSync11(trackingFilePath)) {
21956
+ if (!opts.ignoreStaleMtime && existsSync11(trackingFilePath)) {
21957
21957
  const createdAt = db.select({ createdAt: conductorRuns.createdAt }).from(conductorRuns).where(eq(conductorRuns.id, runId)).get()?.createdAt;
21958
21958
  if (createdAt && statSync3(trackingFilePath).mtimeMs < Date.parse(createdAt)) {
21959
21959
  return "unknown";
@@ -24792,7 +24792,9 @@ function rescanWorkflowRun(db, workspacePath, workflowMarkdownId, watcherInterva
24792
24792
  db.update(conductorRuns).set({ trackingFilePath: freshPath }).where(eq(conductorRuns.id, run.id)).run();
24793
24793
  }
24794
24794
  stopWatcher(run.id);
24795
- const status = pollConductorRun(db, run.id, freshPath, run.startedBy ?? 1);
24795
+ const status = pollConductorRun(db, run.id, freshPath, run.startedBy ?? 1, {
24796
+ ignoreStaleMtime: true
24797
+ });
24796
24798
  if (status === "COMPLETED") {
24797
24799
  lastArtifactSweepAt.delete(run.id);
24798
24800
  try {
@@ -24844,6 +24846,31 @@ function getWorkflowRunFileContent(db, workspacePath, workflowMarkdownId) {
24844
24846
  if (!existsSync18(absolute)) throw svcError14("FILE_NOT_FOUND", 404);
24845
24847
  return { filePath: wfm.filePath, content: readFileSync13(absolute, "utf-8") };
24846
24848
  }
24849
+ function getRunApplicationChangelog(db, workspacePath, workflowMarkdownId, appName) {
24850
+ const wfm = db.select().from(workflowMarkdowns).where(eq(workflowMarkdowns.id, workflowMarkdownId)).get();
24851
+ if (!wfm) throw svcError14("RUN_NOT_FOUND", 404);
24852
+ const project = db.select().from(projects).where(eq(projects.id, wfm.projectId)).get();
24853
+ if (!project) throw svcError14("PROJECT_NOT_FOUND", 404);
24854
+ let runAppNames;
24855
+ if (wfm.importedAppName) {
24856
+ runAppNames = [wfm.importedAppName];
24857
+ } else {
24858
+ const appIds = db.select({ applicationId: conductorRuns.applicationId }).from(conductorRuns).where(eq(conductorRuns.workflowMarkdownId, wfm.id)).all().map((r) => r.applicationId);
24859
+ runAppNames = appIds.length > 0 ? db.select({ name: applications.name }).from(applications).where(inArray(applications.id, appIds)).all().map((a) => a.name) : [];
24860
+ }
24861
+ if (!runAppNames.includes(appName)) throw svcError14("APP_NOT_IN_RUN", 404);
24862
+ const projectDir = resolve2(workspacePath, project.workspaceFolderName);
24863
+ const appFolder = resolveAppFolderName(projectDir, appName);
24864
+ const absolute = resolve2(projectDir, appFolder, "CHANGELOG.md");
24865
+ if (absolute !== projectDir && !absolute.startsWith(projectDir + sep))
24866
+ throw svcError14("INVALID_PATH", 400);
24867
+ if (!existsSync18(absolute)) throw svcError14("CHANGELOG_NOT_FOUND", 404);
24868
+ return {
24869
+ applicationName: appName,
24870
+ filePath: relative(workspacePath, absolute).replace(/\\/g, "/"),
24871
+ content: readFileSync13(absolute, "utf-8")
24872
+ };
24873
+ }
24847
24874
  function toDetail(db, projectFolder, wfm, workspacePath) {
24848
24875
  if (wfm.importedAppName) {
24849
24876
  return {
@@ -26056,6 +26083,17 @@ function workflowRoutes(db, workspacePath) {
26056
26083
  return errorResponse15(c, e);
26057
26084
  }
26058
26085
  });
26086
+ app.get("/runs/:id/changelog", (c) => {
26087
+ const id = Number(c.req.param("id"));
26088
+ if (Number.isNaN(id)) return c.json({ code: "INVALID_ID" }, 400);
26089
+ const appName = c.req.query("app");
26090
+ if (!appName) return c.json({ code: "APP_REQUIRED" }, 400);
26091
+ try {
26092
+ return c.json(getRunApplicationChangelog(db, workspacePath, id, appName));
26093
+ } catch (e) {
26094
+ return errorResponse15(c, e);
26095
+ }
26096
+ });
26059
26097
  app.post("/runs/:id/force-stop", (c) => {
26060
26098
  const id = Number(c.req.param("id"));
26061
26099
  if (Number.isNaN(id)) return c.json({ code: "INVALID_ID" }, 400);
@@ -26370,13 +26408,12 @@ function terminalRoutes(db) {
26370
26408
  const projectId = Number(c.req.param("projectId"));
26371
26409
  if (Number.isNaN(projectId)) return c.json({ code: "INVALID_ID" }, 400);
26372
26410
  const force = c.req.query("force") === "true";
26373
- const keepAlive = c.req.query("keepAlive") === "true" && !force;
26374
26411
  if (force && user.role !== "admin") {
26375
26412
  return c.json({ code: "FORBIDDEN", error: "Force-release requires Team Admin" }, 403);
26376
26413
  }
26377
26414
  try {
26378
26415
  const holderId = releaseTerminal(db, projectId, user.id, { force, actingUserId: user.id });
26379
- if (holderId !== null && !keepAlive) {
26416
+ if (holderId !== null) {
26380
26417
  closeTerminalSessions(
26381
26418
  projectId,
26382
26419
  force ? `Terminal force-released by ${user.displayName}` : "Terminal released"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rashidee/co2",
3
- "version": "1.3.1",
3
+ "version": "1.3.3",
4
4
  "description": "Compound Context Studio — self-hosted team context authoring for CO2 projects",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/plugin/SKILLS.md CHANGED
@@ -177,9 +177,12 @@ Skills belong to phases and generally must run in this order per application:
177
177
  "resume preparation".
178
178
  - **Prerequisites:** `PRD.md`, `CLAUDE.md`.
179
179
  - **Output:** the complete `context/` artifact tree — `model/`, `mockup/`, `specification/`
180
- and `test/` (each as described under its sub-skill below) — plus `CHANGELOG.md` entries per
181
- step and the `context/prepare/PREPARE_MASTER.md` progress tracker (inferred config, per-version
182
- × per-artifact status) for cross-session resumption.
180
+ and `test/` (each as described under its sub-skill below) — plus `CHANGELOG.md` entries: each
181
+ sub-skill appends its own row, and on completion the orchestrator appends an umbrella
182
+ `conductor-feature-prepare` summary row per version (one on top of the sub-skill rows,
183
+ matching `conductor-feature-develop` / `conductor-defect`). Also writes the
184
+ `context/prepare/PREPARE_MASTER.md` progress tracker (inferred config, per-version ×
185
+ per-artifact status) for cross-session resumption.
183
186
 
184
187
  ### `modelgen-relational`
185
188
  - **Invoke:** `/modelgen-relational <application> <version> [module:<m>]`
@@ -232,7 +232,13 @@ to understand what has already been completed.
232
232
  - Check `<app_folder>/context/test/` for test spec files
233
233
  4. If the tracker's top-level status is COMPLETED (all steps for all resolved versions done)
234
234
  AND the artifacts still exist:
235
- - Output `<promise>ALL ARTIFACTS GENERATED</promise>` and stop
235
+ - **First ensure the CHANGELOG umbrella row exists** (do NOT skip this on a resume): for each
236
+ resolved version, check `<app_folder>/CHANGELOG.md` for a `conductor-feature-prepare` row
237
+ under that version's `## {version}` section. If it is missing, append it now per the
238
+ **Phase 1 Completion** CHANGELOG rules below. A prior run may have marked the tracker
239
+ COMPLETED without writing the CHANGELOG (e.g. it was interrupted, or artifacts were already
240
+ present), so this back-fills the missing summary row instead of leaving it absent.
241
+ - Then output `<promise>ALL ARTIFACTS GENERATED</promise>` and stop
236
242
  5. If multiple versions were resolved, proceed to Phase 1 — the version loop will determine
237
243
  which versions still need processing (see Phase 1 Sequential Version Loop)
238
244
  6. Otherwise, proceed to Phase 1, starting from the first step not marked COMPLETED in the tracker
@@ -551,8 +557,28 @@ to already exist):
551
557
  1. Set the top-level `**Status**:` in `<app_folder>/context/prepare/PREPARE_MASTER.md` to
552
558
  `COMPLETED`, and verify every step and every version row is `COMPLETED` or `SKIPPED` (no
553
559
  `PENDING` / `IN PROGRESS` rows remain)
554
- 2. Output a summary of what was generated/skipped per version (sourced from PREPARE_MASTER.md)
555
- 3. Output `<promise>ALL ARTIFACTS GENERATED</promise>` to signal Ralph Loop completion
560
+ 2. Append an umbrella entry to `CHANGELOG.md` in the application folder
561
+ (`<app_folder>/CHANGELOG.md`) **one entry per version processed**. This is the
562
+ phase-level summary row (mirroring `conductor-feature-develop` / `conductor-defect`); the
563
+ individual sub-skills — `util-ustagger`, `modelgen-*`, `mockgen-*`, `specgen-*`,
564
+ `testgen-functional` — have already appended their own rows during the run, so this row sits
565
+ **on top of** them, it does not replace them:
566
+ - Read `<app_folder>/CHANGELOG.md`. If it does not exist, create it with the standard context
567
+ header (normally the sub-skills already created it earlier in the run).
568
+ - For EACH version in the resolved version list (ascending order):
569
+ - Search for a `## {version}` heading matching this version.
570
+ - If the section **exists**: append a new row to its table (it will exist — the sub-skills
571
+ created it).
572
+ - If the section **does not exist**: insert a new section after the `---` below the context
573
+ header and before any existing `## vX.Y.Z` section (newest-first ordering), with a new
574
+ table header and the first row.
575
+ - Row format: `| {YYYY-MM-DD} | {application_name} | conductor-feature-prepare | {module or "All"} | Prepared context artifacts (model, mockup, spec, test) for {version} — {count} modules |`
576
+ - `{count}` = the number of modules whose artifacts were generated/updated for this version
577
+ (from that version's Artifact Generation Status table in PREPARE_MASTER.md).
578
+ - `{module or "All"}` = the `module` filter if one was active for this run, else `All`.
579
+ - **Never modify or delete existing rows** (including the sub-skills' own rows).
580
+ 3. Output a summary of what was generated/skipped per version (sourced from PREPARE_MASTER.md)
581
+ 4. Output `<promise>ALL ARTIFACTS GENERATED</promise>` to signal Ralph Loop completion
556
582
 
557
583
  **IMPORTANT — Version loop completion**: The completion promise is ONLY output after the LAST
558
584
  version in the resolved list has been fully processed. Do NOT output it after completing an
@@ -1 +1 @@
1
- import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-D0mE8XQJ.js";import{p as f}from"./chunk-JWPE2WC7-DpOM2Td1.js";import{_ as n,l as o}from"./index-CMSll7Xn.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-rNCSrA_M.js";var v=d().RailroadAbnf.parser.LangiumParser,l=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),i=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:i,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=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 new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:l(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},w={parser:R,db:a,renderer:u,styles:p};export{w as diagram};
1
+ import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-BbMHSSXk.js";import{p as f}from"./chunk-JWPE2WC7-RVdgT8k5.js";import{_ as n,l as o}from"./index-CgNepcKp.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-B7HPqh-Z.js";var v=d().RailroadAbnf.parser.LangiumParser,l=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),i=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:i,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=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 new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:l(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},w={parser:R,db:a,renderer:u,styles:p};export{w as diagram};
@@ -1 +1 @@
1
- import{Y as ln,$ as an,a0 as y,a1 as tn,a2 as F,a3 as q,a4 as _,a5 as un,a6 as rn,a7 as J,a8 as o,a9 as j,aa as sn,ab as on,ac as fn}from"./index-CMSll7Xn.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(fn(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,B=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<rn)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(on((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{Y as ln,$ as an,a0 as y,a1 as tn,a2 as F,a3 as q,a4 as _,a5 as un,a6 as rn,a7 as J,a8 as o,a9 as j,aa as sn,ab as on,ac as fn}from"./index-CgNepcKp.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(fn(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,B=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<rn)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(on((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};