@tea-agent/loop-agent 0.43.0-next.5 → 0.43.0-next.7

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 (83) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/build-stamp.json +3 -3
  3. package/dist/executors/dag-pi-executor.js +15 -195
  4. package/dist/executors/pi-sdk-executor.js +3 -1
  5. package/dist/worker/console/chat/browser-policy.js +143 -0
  6. package/dist/worker/console/chat/browser-routes.js +148 -0
  7. package/dist/worker/console/chat/routes.js +5 -0
  8. package/dist/worker/console/chat/scm-routes.js +25 -1
  9. package/dist/worker/console/chat/scm-service.js +30 -0
  10. package/dist/worker/console/chat/session-catalog.js +31 -0
  11. package/dist/worker/console/chat/session-mode-view.js +3 -3
  12. package/dist/worker/console/server.js +2 -28
  13. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-BuyrlONK.js → abnfDiagram-N423BO3Z-0z1FF_Mr.js} +1 -1
  14. package/dist/worker/console/static/assets/{arc-BvCl_wpi.js → arc-5Rtc6XV_.js} +1 -1
  15. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-BkBpBaRq.js → architectureDiagram-T3A2C74G-BkywIxBo.js} +1 -1
  16. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-yve4Mcb_.js → blockDiagram-VBNYF7ZC-g1wALcrC.js} +1 -1
  17. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-9yLGboBx.js → c4Diagram-5PPSVZJV-CtFfJvWJ.js} +1 -1
  18. package/dist/worker/console/static/assets/channel-Ln3PalCI.js +1 -0
  19. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-BKP69b8r.js → chunk-2GRJ4B5K-D5PQz8yM.js} +1 -1
  20. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-NWFRnXju.js → chunk-2Q5K7J3B-DgV_JJPi.js} +1 -1
  21. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-BiweqLEc.js → chunk-5RXB4S5H-xwfF7A20.js} +1 -1
  22. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-CP9GHmRY.js → chunk-5VM5RSS4-CGqPeDdw.js} +1 -1
  23. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-BiGDkBtj.js → chunk-6Q2QTUOP-0wVqzhBr.js} +1 -1
  24. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-DkJ4ZjQS.js → chunk-GF5L2VYU-CMbMHcFc.js} +1 -1
  25. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-B5jjn7zq.js → chunk-JWPE2WC7-BHizoNTm.js} +1 -1
  26. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-C6KoK9O0.js → chunk-KBJHAD2P-PS3GrTTl.js} +1 -1
  27. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-BvNIfyn-.js → chunk-RYQCIY6F-igvsougt.js} +1 -1
  28. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-BZ33iX4W.js → chunk-XXDRQBXY-DtyvbRKY.js} +1 -1
  29. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-BwEIBfqD.js +1 -0
  30. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-BwEIBfqD.js +1 -0
  31. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-CP8eIuZd.js → cose-bilkent-JH36ORCC-Y3cTrz6x.js} +1 -1
  32. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-DZECjpOe.js → cynefin-VYW2F7L2-CNz317P7.js} +1 -1
  33. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-CvVJoFqf.js → cynefinDiagram-MW4NZA55-CqJD0Eda.js} +1 -1
  34. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-D_JTqdAn.js → dagre-VZM6K2ZE-DB9xkqs_.js} +1 -1
  35. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-Db7AQ0z0.js → diagram-7IWD3JNH-BvMd4WO1.js} +1 -1
  36. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-AZPVo5CZ.js → diagram-B4RE2ZJO-kzIbfP-r.js} +1 -1
  37. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-BgXqI3E6.js → diagram-LBJQPF4R-D7DuDLA1.js} +1 -1
  38. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-BYjFn3Ba.js → diagram-Q27KOJAE-DWYiiEqR.js} +1 -1
  39. package/dist/worker/console/static/assets/{diagram-UB23O5K3-B4rJgGGO.js → diagram-UB23O5K3-BRnBFo_0.js} +1 -1
  40. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-C6XWZhpw.js → ebnfDiagram-BXEA7PRR-DeTE8_JP.js} +1 -1
  41. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-1YdQRIQW.js → erDiagram-JOGREHBK-DJIc6Ji-.js} +1 -1
  42. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-l3a0AwN0.js → flowDiagram-UKHOOZJN-DHYWItNm.js} +1 -1
  43. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-CQL96F2Z.js → ganttDiagram-PKOTCBZU-BtwhbiNv.js} +1 -1
  44. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-BxCvafRb.js → gitGraphDiagram-DS77QQ5N-R21xagUM.js} +1 -1
  45. package/dist/worker/console/static/assets/index-Bf7dxfm-.css +1 -0
  46. package/dist/worker/console/static/assets/index-DHrt_6jk.js +468 -0
  47. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-BUipIeDO.js → infoDiagram-6WML65LV-xn9vhN0g.js} +1 -1
  48. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-CRfomVMX.js → ishikawaDiagram-WSZJBQD7-B1MMrk5S.js} +1 -1
  49. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-_UFvyviX.js → journeyDiagram-NVQOT4AX-Bt_eha4U.js} +1 -1
  50. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-CKIRoqKv.js → kanban-definition-27J2QSJJ-CPIEKJzB.js} +1 -1
  51. package/dist/worker/console/static/assets/{linear-CjttJDCM.js → linear-CT6doEH4.js} +1 -1
  52. package/dist/worker/console/static/assets/{mermaid.core-DPvHX155.js → mermaid.core-_8ilrIeK.js} +5 -5
  53. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-Qmj-qwBe.js → mindmap-definition-FAOFIHXS-xzLuFnQq.js} +1 -1
  54. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-Auw6DRgq.js → pegDiagram-VL7TDLO6-BUK6JRUg.js} +1 -1
  55. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-CqMrfD4c.js → pieDiagram-7S7Q4E2Y-ChFOxDhD.js} +1 -1
  56. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-BAddeggH.js → quadrantDiagram-CIZ2JOQS-BeoCJ_wm.js} +1 -1
  57. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-DG1JuOu2.js → railroadDiagram-AXF67PYL-CaSV6rVf.js} +1 -1
  58. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-DLYGMKlC.js → requirementDiagram-LRYGKXZP-CogY5162.js} +1 -1
  59. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-g68SbLM9.js → sankeyDiagram-W5VNT64P-CmTAqVmS.js} +1 -1
  60. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-CmszLKv8.js → sequenceDiagram-SI44F4Z6-DtmgJPSM.js} +1 -1
  61. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-D2tEKUCj.js → sizeCapture-X5ZJPWSS-DY-e-ucu.js} +1 -1
  62. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-Syc5E_Jf.js → stateDiagram-OKZ733FA-C0GKqasS.js} +1 -1
  63. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BmOaJuhY.js +1 -0
  64. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-Ibn0IRCa.js → swimlanes-SLNWSIFB-CHwJlgUA.js} +2 -2
  65. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-DOCjPMNz.js +8 -0
  66. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-2ZW9W3iS.js → timeline-definition-Z64GVDOM-leVMWmSe.js} +1 -1
  67. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-v50HsKUh.js → vennDiagram-T6HMQDX7-Dh-LA6pq.js} +1 -1
  68. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-DqCXEoDH.js → wardleyDiagram-T6FBY63Y-jBwm-krQ.js} +1 -1
  69. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-vIP8Vo9d.js → xychartDiagram-ELKLHX3M-CFkAWroq.js} +1 -1
  70. package/dist/worker/console/static/index.html +2 -2
  71. package/dist/worker/console/static-src/operator-chat/useChatSessions.js +12 -15
  72. package/dist/workflows/dag/frontend-implementation-contract.js +4 -0
  73. package/dist/workflows/dag/frontend-plan-completeness.js +186 -0
  74. package/dist/workflows/dag/frontend-plan-recovery-policy.js +18 -0
  75. package/dist/workflows/dag/frontend-review-scopes.js +32 -10
  76. package/package.json +1 -1
  77. package/dist/worker/console/static/assets/channel-BRahIhjw.js +0 -1
  78. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-GOC80mhq.js +0 -1
  79. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-GOC80mhq.js +0 -1
  80. package/dist/worker/console/static/assets/index-4wCGsXuU.js +0 -465
  81. package/dist/worker/console/static/assets/index-CiF9WBoR.css +0 -1
  82. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-CwWwuPI-.js +0 -1
  83. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-A7fqemr6.js +0 -8
@@ -25,7 +25,7 @@ function sendJson(res, status, body) {
25
25
  res.end(JSON.stringify(body));
26
26
  }
27
27
  function mapScmError(res, error) {
28
- const status = error.code === "NO_PATHS" || error.code === "EMPTY_MESSAGE" || error.code === "INVALID_NAME"
28
+ const status = error.code === "NO_PATHS" || error.code === "EMPTY_MESSAGE" || error.code === "INVALID_NAME" || error.code === "INVALID_HASH"
29
29
  ? 400
30
30
  : error.code === "GIT_TIMEOUT"
31
31
  ? 504
@@ -89,6 +89,30 @@ export async function handleScmRequest(req, res, deps, pathname) {
89
89
  sendJson(res, 200, { ok: true, data: r });
90
90
  return true;
91
91
  }
92
+ if (method === "GET" && sub === "commit-diff" && parts.length === 1) {
93
+ const hash = url.searchParams.get("hash") ?? "";
94
+ if (!hash) {
95
+ sendJson(res, 400, { ok: false, error: { code: "INVALID_INPUT", message: "hash is required" } });
96
+ return true;
97
+ }
98
+ const r = await deps.scm.commitDiff(hash);
99
+ if (!r.ok)
100
+ return mapScmError(res, r), true;
101
+ sendJson(res, 200, { ok: true, data: r });
102
+ return true;
103
+ }
104
+ if (method === "GET" && sub === "untracked-diff" && parts.length === 1) {
105
+ const path = url.searchParams.get("path") ?? "";
106
+ if (!path) {
107
+ sendJson(res, 400, { ok: false, error: { code: "NO_PATHS", message: "path is required" } });
108
+ return true;
109
+ }
110
+ const r = await deps.scm.untrackedDiff(path);
111
+ if (!r.ok)
112
+ return mapScmError(res, r), true;
113
+ sendJson(res, 200, { ok: true, data: r });
114
+ return true;
115
+ }
92
116
  if (method === "GET" && sub === "log" && parts.length === 1) {
93
117
  const limit = Number(url.searchParams.get("limit") ?? 30);
94
118
  const r = await deps.scm.log(Number.isFinite(limit) ? Math.min(Math.max(limit, 1), 200) : 30);
@@ -53,6 +53,9 @@ export class ScmService {
53
53
  ? `git ${args[0]} timed out`
54
54
  : err.message ?? String(e),
55
55
  stderr: typeof err.stderr === "string" ? err.stderr.slice(0, 2000) : undefined,
56
+ // `git diff --no-index` exits 1 when a diff exists; callers that
57
+ // expect that carry the partial stdout through.
58
+ stdout: typeof err.stdout === "string" ? err.stdout : undefined,
56
59
  };
57
60
  }
58
61
  }
@@ -149,6 +152,33 @@ export class ScmService {
149
152
  return r;
150
153
  return { ok: true, diff: r.stdout };
151
154
  }
155
+ /** Full patch of one commit (`git show` without the commit header). */
156
+ async commitDiff(hash) {
157
+ if (!/^[0-9a-f]{4,40}$/i.test(hash)) {
158
+ return { ok: false, code: "INVALID_HASH", message: "invalid commit hash" };
159
+ }
160
+ const r = await this.git(["show", "--format=", "--no-color", hash]);
161
+ if (!r.ok)
162
+ return r;
163
+ return { ok: true, diff: r.stdout };
164
+ }
165
+ /**
166
+ * Untracked-file content as a full-addition diff (`git diff --no-index
167
+ * /dev/null <path>`): git diff never lists untracked files, and this
168
+ * renders them like any other change in the diff view.
169
+ */
170
+ async untrackedDiff(path) {
171
+ if (path.includes("\0") || path.includes("..")) {
172
+ return { ok: false, code: "NO_PATHS", message: "invalid path" };
173
+ }
174
+ const r = await this.git(["diff", "--no-index", "--no-color", "-U3", "--", "/dev/null", path]);
175
+ // `git diff --no-index` exits 1 when there IS a diff — carry stdout.
176
+ if (!r.ok && r.code === "GIT_FAILED")
177
+ return { ok: true, diff: r.stdout ?? "" };
178
+ if (!r.ok)
179
+ return r;
180
+ return { ok: true, diff: r.stdout };
181
+ }
152
182
  /** Stage paths (`git add --` / `git add -A --` for "."). */
153
183
  async stage(paths, all = false) {
154
184
  if (!all && paths.length === 0) {
@@ -1,5 +1,36 @@
1
1
  import { isBlankChatSession } from "./session-store.js";
2
2
  import { projectDeferredTurnSummaries, projectDeferredTurnSummary, } from "./deferred-turn.js";
3
+ /** Sidebar / global GET /chat/sessions projection. Must include sessionMode. */
4
+ export function projectChatSessionCatalogListItem(entry, active) {
5
+ return {
6
+ sessionId: entry.sessionId,
7
+ ...(entry.workspaceId ? { workspaceId: entry.workspaceId } : {}),
8
+ state: entry.state,
9
+ createdAt: entry.createdAt,
10
+ updatedAt: entry.updatedAt,
11
+ ...(entry.title !== undefined ? { title: entry.title } : {}),
12
+ ...(entry.displayTitle !== undefined
13
+ ? { displayTitle: entry.displayTitle }
14
+ : {}),
15
+ ...(entry.modelProvider !== undefined
16
+ ? { modelProvider: entry.modelProvider }
17
+ : {}),
18
+ ...(entry.modelId !== undefined ? { modelId: entry.modelId } : {}),
19
+ ...(entry.thinkingLevel !== undefined
20
+ ? { thinkingLevel: entry.thinkingLevel }
21
+ : {}),
22
+ sessionMode: entry.sessionMode,
23
+ activeTurnId: active?.turnId,
24
+ turnPhase: active?.abortRequestedAt
25
+ ? "stopping"
26
+ : active
27
+ ? "running"
28
+ : "idle",
29
+ deferredTurn: entry.deferredTurn,
30
+ deferredTurns: entry.deferredTurns,
31
+ isBlank: entry.isBlank && !active,
32
+ };
33
+ }
3
34
  /**
4
35
  * Process-wide Session baseline, mirroring DSH's independent session.list.
5
36
  * Full records stay in their fingerprint-isolated stores; this catalog only
@@ -16,9 +16,9 @@ export const SESSION_MODE_COPY = {
16
16
  bannerTitle: "工作流",
17
17
  bannerBody: "用自然语言编排 loop-agent / agent-worker 的全部能力。这是 Operator 面:默认具备完整 Pi 工具与受策略约束的 operator action。软约束:大改与高风险变更优先走受治 DAG。",
18
18
  landingTitle: "开始一段新的对话",
19
- landingBody: "用自然语言编排 loop-agent:查询状态、诊断问题、创建与恢复任务。可先点选下方建议,或选择工作流 / Pi 模式新建会话。",
19
+ landingBody: "用自然语言编排 loop-agent:查询状态、诊断问题、创建与恢复任务。可先点选下方建议,或在输入框描述目标。工作流或 Pi 在输入框上方选择。",
20
20
  emptyTitle: "今天想推进什么?",
21
- emptyBody: "会话已就绪。点选建议快速开场,或在下方输入框直接描述目标。业务写入仍经受治理 DAG。",
21
+ emptyBody: "会话已就绪。输入框上方可切换工作区或工作流 / Pi。点选建议快速开场,或直接描述目标。业务写入仍经受治理 DAG。",
22
22
  },
23
23
  pi: {
24
24
  id: "pi",
@@ -31,7 +31,7 @@ export const SESSION_MODE_COPY = {
31
31
  landingTitle: "开始一段 Pi 协作",
32
32
  landingBody: "Pi 模式保留压缩、Explore、认证与 SDD 接入,取消工作流业务注入。适合有人监督的直接编码与调试。",
33
33
  emptyTitle: "直接协作编码",
34
- emptyBody: "会话已就绪。使用 Pi 工具读写仓库;Explore 负责只读深挖。本会话不加载任务 / DAG 工作流工具。",
34
+ emptyBody: "会话已就绪。输入框上方可切换工作区或模式。使用 Pi 工具读写仓库;Explore 负责只读深挖。本会话不加载任务 / DAG 工作流工具。",
35
35
  },
36
36
  };
37
37
  /** Slash actions that only exist in workflow sessions. Browser-safe: pure
@@ -9,7 +9,7 @@ import { DAG_ABSOLUTE_MAX_WALL_CLOCK_MS } from "../../shared/timeout-policy.js";
9
9
  import { openConsoleAppData } from "../../infrastructure/console/app-data.js";
10
10
  import { isLoopbackHost } from "./loopback.js";
11
11
  import { ChatSessionStore } from "./chat/session-store.js";
12
- import { ChatSessionCatalog } from "./chat/session-catalog.js";
12
+ import { ChatSessionCatalog, projectChatSessionCatalogListItem, } from "./chat/session-catalog.js";
13
13
  import { matchRepoHtmlPreviewRoute } from "./chat/repo-browser.js";
14
14
  import { handleConsoleHealthRequest, handleWorkspaceRoutes, sendJson, serveConsoleStatic, } from "./routes.js";
15
15
  import { issueBootCapabilityToken, injectConfirmationTokenScript, } from "./security.js";
@@ -430,33 +430,7 @@ export async function createConsoleServer(options) {
430
430
  .get(entry.workspaceId)
431
431
  ?.chatRouteDeps.events.getActiveTurn(entry.sessionId)
432
432
  : undefined;
433
- return {
434
- sessionId: entry.sessionId,
435
- ...(entry.workspaceId ? { workspaceId: entry.workspaceId } : {}),
436
- state: entry.state,
437
- createdAt: entry.createdAt,
438
- updatedAt: entry.updatedAt,
439
- ...(entry.title !== undefined ? { title: entry.title } : {}),
440
- ...(entry.displayTitle !== undefined
441
- ? { displayTitle: entry.displayTitle }
442
- : {}),
443
- ...(entry.modelProvider !== undefined
444
- ? { modelProvider: entry.modelProvider }
445
- : {}),
446
- ...(entry.modelId !== undefined ? { modelId: entry.modelId } : {}),
447
- ...(entry.thinkingLevel !== undefined
448
- ? { thinkingLevel: entry.thinkingLevel }
449
- : {}),
450
- activeTurnId: active?.turnId,
451
- turnPhase: active?.abortRequestedAt
452
- ? "stopping"
453
- : active
454
- ? "running"
455
- : "idle",
456
- deferredTurn: entry.deferredTurn,
457
- deferredTurns: entry.deferredTurns,
458
- isBlank: entry.isBlank && !active,
459
- };
433
+ return projectChatSessionCatalogListItem(entry, active);
460
434
  });
461
435
  sendJson(res, 200, {
462
436
  ok: true,
@@ -1 +1 @@
1
- import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-BiGDkBtj.js";import{p as f}from"./chunk-JWPE2WC7-B5jjn7zq.js";import{_ as n,l as o}from"./mermaid.core-DPvHX155.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-DZECjpOe.js";import"./index-4wCGsXuU.js";var v=d().RailroadAbnf.parser.LangiumParser,i=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("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,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 i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(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}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
1
+ import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-0wVqzhBr.js";import{p as f}from"./chunk-JWPE2WC7-BHizoNTm.js";import{_ as n,l as o}from"./mermaid.core-_8ilrIeK.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-CNz317P7.js";import"./index-DHrt_6jk.js";var v=d().RailroadAbnf.parser.LangiumParser,i=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("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,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 i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(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}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
@@ -1 +1 @@
1
- import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-DPvHX155.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(on(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)-un,c=A.apply(this,arguments)-un,B=rn(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=_(rn(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<an)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(fn((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-an/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 F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-_8ilrIeK.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(on(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)-un,c=A.apply(this,arguments)-un,B=rn(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=_(rn(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<an)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(fn((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-an/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};