@tea-agent/loop-agent 0.43.0-next.13 → 0.43.0-next.14

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 (77) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/dist/build-stamp.json +3 -3
  3. package/dist/worker/console/console-update-and-init.js +1 -19
  4. package/dist/worker/console/console-update-runtime.js +5 -20
  5. package/dist/worker/console/operator-actions.js +13 -1
  6. package/dist/worker/console/routes.js +8 -0
  7. package/dist/worker/console/server.js +8 -0
  8. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-BEg5712w.js → abnfDiagram-N423BO3Z-1TicK2v3.js} +1 -1
  9. package/dist/worker/console/static/assets/{arc-CkQvaBGZ.js → arc-BI-61Wnq.js} +1 -1
  10. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-BrdwFNJ7.js → architectureDiagram-T3A2C74G-BrGzCbLC.js} +1 -1
  11. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-M_LjP2kx.js → blockDiagram-VBNYF7ZC-C0E6CBWK.js} +1 -1
  12. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-Bwr5Dtjc.js → c4Diagram-5PPSVZJV-D6Pnh39e.js} +1 -1
  13. package/dist/worker/console/static/assets/channel-D-RWoPS8.js +1 -0
  14. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-CDc44stW.js → chunk-2GRJ4B5K-DRhQr5iF.js} +1 -1
  15. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-DZELwsTt.js → chunk-2Q5K7J3B-MNS7POMD.js} +1 -1
  16. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-D7YI6SWX.js → chunk-5RXB4S5H-DPBI_81g.js} +1 -1
  17. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-Bc46bEyj.js → chunk-5VM5RSS4-DduCRUsX.js} +1 -1
  18. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-Bj4vc-Dp.js → chunk-6Q2QTUOP-BQv9BtIQ.js} +1 -1
  19. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-DRi-0nDX.js → chunk-GF5L2VYU-CzpgRwNH.js} +1 -1
  20. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-Dr-wFY60.js → chunk-JWPE2WC7-Dv4_KVRW.js} +1 -1
  21. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-CqIHE_D7.js → chunk-KBJHAD2P-D1qcnmuz.js} +1 -1
  22. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-C-Dl8wzk.js → chunk-RYQCIY6F-CBK8NJN0.js} +1 -1
  23. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CV4Mydz3.js → chunk-XXDRQBXY-DAIeiODy.js} +1 -1
  24. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-Cb0d0EM1.js +1 -0
  25. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-Cb0d0EM1.js +1 -0
  26. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-C3MamSMJ.js → cose-bilkent-JH36ORCC-dnp2bs3S.js} +1 -1
  27. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-zo_Jy2sf.js → cynefin-VYW2F7L2-O1uTYY7b.js} +1 -1
  28. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-BB2PN1AG.js → cynefinDiagram-MW4NZA55-BTDfSvDI.js} +1 -1
  29. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-BimYueoi.js → dagre-VZM6K2ZE-y_dIbZ9q.js} +1 -1
  30. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-Di1ObJRS.js → diagram-7IWD3JNH-JH8pTYhg.js} +1 -1
  31. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-C83l-IJx.js → diagram-B4RE2ZJO-nN7RP6Lm.js} +1 -1
  32. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-B3S3fOpm.js → diagram-LBJQPF4R-Dch4i7JV.js} +1 -1
  33. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-urW_Zhe7.js → diagram-Q27KOJAE-eKV1Psgk.js} +1 -1
  34. package/dist/worker/console/static/assets/{diagram-UB23O5K3-nvIbCwF6.js → diagram-UB23O5K3-CQDYSqC9.js} +1 -1
  35. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-DG6O3KpP.js → ebnfDiagram-BXEA7PRR-Dy-884eA.js} +1 -1
  36. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DpXdtdsj.js → erDiagram-JOGREHBK-DLIrOwXv.js} +1 -1
  37. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-DvXWHrND.js → flowDiagram-UKHOOZJN-DxkodKPO.js} +1 -1
  38. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-6F7SbvUS.js → ganttDiagram-PKOTCBZU-CH_tTUOi.js} +1 -1
  39. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-D1tZnFec.js → gitGraphDiagram-DS77QQ5N-BW962oLZ.js} +1 -1
  40. package/dist/worker/console/static/assets/{index-CWarwRqc.js → index-BGEQmIg4.js} +94 -94
  41. package/dist/worker/console/static/assets/{index-SAANIK8g.css → index-CHRd_RC2.css} +1 -1
  42. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-HN4qwJ2M.js → infoDiagram-6WML65LV-B7JBGEiN.js} +1 -1
  43. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-OJ4qwDRo.js → ishikawaDiagram-WSZJBQD7-DExVPf4a.js} +1 -1
  44. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-CJZ6giQk.js → journeyDiagram-NVQOT4AX-MghtTQAI.js} +1 -1
  45. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-co60m19S.js → kanban-definition-27J2QSJJ-CWDeFtqL.js} +1 -1
  46. package/dist/worker/console/static/assets/{linear-D1KeFqZY.js → linear-B63gdAma.js} +1 -1
  47. package/dist/worker/console/static/assets/{mermaid.core-i7dDGqov.js → mermaid.core-BQZRRvZf.js} +5 -5
  48. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-1SkQxBh1.js → mindmap-definition-FAOFIHXS-CQlHR1EK.js} +1 -1
  49. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-B10dhI-Y.js → pegDiagram-VL7TDLO6-DuCCddHv.js} +1 -1
  50. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-CiUKUo6j.js → pieDiagram-7S7Q4E2Y-BxVL551q.js} +1 -1
  51. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-C5vH4LXZ.js → quadrantDiagram-CIZ2JOQS-DBeUEA3G.js} +1 -1
  52. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-5nlWOCEj.js → railroadDiagram-AXF67PYL-AJJHzuXc.js} +1 -1
  53. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-CILd6QS3.js → requirementDiagram-LRYGKXZP-_bO2feg5.js} +1 -1
  54. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-Dfp18ZO2.js → sankeyDiagram-W5VNT64P-CXw0ti4x.js} +1 -1
  55. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-B9pkswBi.js → sequenceDiagram-SI44F4Z6-Bco8ah7u.js} +1 -1
  56. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-C1-eSgx4.js → sizeCapture-X5ZJPWSS-DypMl6A8.js} +1 -1
  57. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-COJsOoAF.js → stateDiagram-OKZ733FA-C4_BnD96.js} +1 -1
  58. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-CxDH0BMP.js +1 -0
  59. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-Dv5NXJUM.js → swimlanes-SLNWSIFB-DZTjbssU.js} +2 -2
  60. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-CkWiKV_L.js +8 -0
  61. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-DRdrZ7eR.js → timeline-definition-Z64GVDOM-GdMEc1qP.js} +1 -1
  62. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-0-2TlwCj.js → vennDiagram-T6HMQDX7-BrAoL9sU.js} +1 -1
  63. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-3-o3q92P.js → wardleyDiagram-T6FBY63Y-Cg8QnF-d.js} +1 -1
  64. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-DSgOgdUi.js → xychartDiagram-ELKLHX3M-GXQPakaZ.js} +1 -1
  65. package/dist/worker/console/static/index.html +2 -2
  66. package/dist/worker/console/static-src/operator-chat/chat-scroll-position.js +24 -0
  67. package/dist/worker/console/static-src/operator-chat/useChatSessions.js +14 -3
  68. package/dist/worker/console/static-src/operator-chat/useChatThread.js +36 -50
  69. package/dist/worker/console/workspace-context.js +2 -0
  70. package/dist/worker/console/workspace-initialization.js +174 -0
  71. package/package.json +1 -3
  72. package/dist/task/contract/validate-draft.js +0 -106
  73. package/dist/worker/console/static/assets/channel-CKmyKgY-.js +0 -1
  74. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-D8Wc3jJP.js +0 -1
  75. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-D8Wc3jJP.js +0 -1
  76. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-Bpfb0q5s.js +0 -1
  77. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-BEwGGabW.js +0 -8
package/CHANGELOG.md CHANGED
@@ -10,6 +10,8 @@
10
10
 
11
11
  ### 改进
12
12
 
13
+ - Console 将全局「更新程序」与当前工作区初始化分开:添加或切换工作区后只读检查并提示,设置中展示仓库路径、初始化状态、待处理文件和操作进度;首次初始化显式选择可用模型,安全更新仅作用于当前仓库,冲突保留并提示处理。
14
+
13
15
  - Operator Chat 内置内部 provider 瞬态异常恢复:即使目标仓库未执行 `loop-agent init`,也能识别完整或被裁剪的 `UnknownError` / `TypeValidationError` / `LLMRequestError` / 502 / 中文「网络波动、模型处理超时」响应,将其规范化后交给 Pi 原生有界重试;Console 缺省使用 loop-agent 推荐重试参数,项目显式字段优先于用户全局字段,用户配置优先于推荐默认值。共享纯分类器同时生成 OpenCode 插件谓词,overflow、认证、权限、配额、取消和业务错误继续 fail-fast。
14
16
 
15
17
  - Operator Chat 浏览器面板默认以完整权限运行(去掉 iframe 沙箱与「临时解锁」状态条),并放开本机回环地址限制——`localhost` / `127.0.0.1` / `::1` 等本地开发服务器可直接在面板内浏览;地址栏仍仅放行 http/https,`javascript:` / `data:` / `file:` 等危险协议继续拦截,拒绝嵌入站点(X-Frame-Options / frame-ancestors)的解释面板与出口保持不变。
@@ -22,6 +24,7 @@
22
24
 
23
25
  ### 修复
24
26
 
27
+ - 对话页修复用户消息在流式回复中漏显示或重复分组、加载历史后的滚动跳动,以及删除会话后旧请求恢复条目的问题;移除工作区后隐藏非选中的空白会话,并正确恢复删除失败的列表状态。
25
28
  - 修复 Operator Chat 的跨会话输入污染与快速重复提交:切换会话时立即撤销旧会话发送权,草稿、附件和 ↑ 输入历史按会话独立保存;发送、排队、撤回、编辑、插话、文件建议和图片读取的迟到结果只回写原会话。提交改用带快照的有界 attempt,相同内容的快速双 Enter/双击只产生一次请求,失败恢复或排队响应不再覆盖后来输入;流式更新和会话切换保持同一个 composer DOM,中文 IME 更稳定。同步修复 durable 用户消息确认后时间重排导致闪烁光标跑到用户消息上方的问题。
26
29
 
27
30
  - 前端设计审查的写入门禁只统计已提交的审批终态,避免审查范围、发现记录导致合法审批被误判为缺失或歧义;要求修改时保留具体审查意见,缺失、重复及冲突终态仍阻断写入。
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "0.43.0-next.13",
4
- "gitSha": "4e92f5b2b1c43bc8971d9c9e6c21f76fa557189d",
5
- "builtAt": "2026-09-11T00:55:37.486Z"
3
+ "version": "0.43.0-next.14",
4
+ "gitSha": "31d48ba3bc6eecc584ff9fe66f78c095dcf0ca2e",
5
+ "builtAt": "2026-09-11T02:21:26.141Z"
6
6
  }
@@ -67,29 +67,11 @@ export async function performConsoleUpdateAndInit(deps, channel = "latest") {
67
67
  return failed("INSTALL_VERIFICATION_FAILED", verified.reason, maintenance);
68
68
  }
69
69
  }
70
- const initResult = await deps.applySafeInit();
71
- maintenance.initialization = initResult.ok
72
- ? { status: "clean", pendingPaths: initResult.pendingPaths }
73
- : {
74
- status: "needs-reconcile",
75
- pendingPaths: initResult.pendingPaths,
76
- message: initResult.message,
77
- };
78
70
  if (!packageChanged) {
79
- return {
80
- state: initResult.ok ? "succeeded" : "needs-reconcile",
81
- maintenance,
82
- ...(initResult.ok
83
- ? {}
84
- : {
85
- errorCode: "INIT_NEEDS_RECONCILE",
86
- errorMessage: initResult.message,
87
- }),
88
- };
71
+ return { state: "succeeded", maintenance };
89
72
  }
90
73
  const handoff = await deps.requestHandoff({
91
74
  targetVersion: target.version,
92
- initResult,
93
75
  });
94
76
  if (!handoff.ok) {
95
77
  maintenance.handoff = {
@@ -28,14 +28,13 @@ export function createConsoleUpdateExecutor(input) {
28
28
  return performConsoleUpdateAndInit({
29
29
  currentVersion,
30
30
  preflight: async () => {
31
- const [activity, operations] = await Promise.all([
32
- readInitRuntimeActivity(input.repoRoot),
33
- input.operations.list(),
34
- ]);
35
- if (activity.workerProjectionError ||
31
+ const scopes = await input.workspaceActivity?.() ?? [input];
32
+ const activities = await Promise.all(scopes.map(scope => readInitRuntimeActivity(scope.repoRoot)));
33
+ const operations = (await Promise.all(scopes.map(scope => scope.operations.list()))).flat();
34
+ if (activities.some(activity => activity.workerProjectionError ||
36
35
  activity.activeDagRunIds.length > 0 ||
37
36
  activity.activeWorkerTasks > 0 ||
38
- activity.activeWorkerBatches > 0) {
37
+ activity.activeWorkerBatches > 0)) {
39
38
  return {
40
39
  ok: false,
41
40
  code: "ACTIVE_RUNTIME",
@@ -64,20 +63,6 @@ export function createConsoleUpdateExecutor(input) {
64
63
  canAutoInstall: () => npm.canAutoInstall(),
65
64
  installExact: (version, selectedChannel) => npm.installExact(version, selectedChannel),
66
65
  verifyInstalled: (version) => npm.verifyInstalled(version),
67
- applySafeInit: async () => {
68
- const result = await input.client.runExternal("loop-agent", ["init", "update", "--apply-safe", "--repo-root", input.repoRoot], {
69
- cwd: input.repoRoot,
70
- artifactName: "console-update-safe-init",
71
- timeoutMs: 120_000,
72
- });
73
- return result.ok
74
- ? { ok: true, pendingPaths: [] }
75
- : {
76
- ok: false,
77
- message: result.stderr || result.stdout || "safe initialization failed",
78
- pendingPaths: [],
79
- };
80
- },
81
66
  requestHandoff: async ({ targetVersion }) => input.requestHandoff(targetVersion),
82
67
  }, channel);
83
68
  };
@@ -772,7 +772,7 @@ async function acceptConsoleUpdateAndInit(ctx, clientRequestId, channel) {
772
772
  at: new Date().toISOString(),
773
773
  kind: "state",
774
774
  state: "running",
775
- message: `checking runtime, npm ${channel}, and safe initialization`,
775
+ message: `checking runtime and npm ${channel}`,
776
776
  });
777
777
  try {
778
778
  const result = await ctx.consoleUpdateExecutor(channel);
@@ -849,6 +849,18 @@ export async function dispatchOperatorAction(ctx, req) {
849
849
  };
850
850
  }
851
851
  const p = paramsOf(req);
852
+ if (action === "workspaceInitialize") {
853
+ if (req.source !== "human-ui")
854
+ return { kind: "error", status: 403, body: operatorFailed({ command: action, outcome: "blocked", code: "HUMAN_UI_REQUIRED", message: "工作区初始化需要从界面显式发起" }) };
855
+ if (!req.clientRequestId?.trim() || Object.keys(p).some(key => key !== "model") || (p.model !== undefined && (typeof p.model !== "string" || p.model.length > 300)))
856
+ return invalid(action, "只接受 clientRequestId 和可选模型引用");
857
+ if (!ctx.workspaceInitialization)
858
+ return invalid(action, "工作区初始化服务不可用");
859
+ const created = await ctx.workspaceInitialization.start(req.clientRequestId, p.model);
860
+ if (created.kind === "conflict")
861
+ return { kind: "error", status: 409, body: operatorFailed({ command: action, outcome: "conflict", code: "REQUEST_ID_REUSE_CONFLICT", message: created.message }) };
862
+ return { kind: "accepted", status: 202, body: { operationId: created.operation.operationId, state: created.operation.state, clientRequestId: created.operation.clientRequestId, action } };
863
+ }
852
864
  if (action === "consoleUpdateAndInit") {
853
865
  if (req.source !== "human-ui") {
854
866
  return {
@@ -1130,6 +1130,14 @@ export async function handleConsoleOperatorRequest(req, res, ctx) {
1130
1130
  !pathname.startsWith("/api/session/")) {
1131
1131
  return false;
1132
1132
  }
1133
+ if (method === "GET" && pathname === "/api/operator/v1/workspace-initialization") {
1134
+ const service = ctx.operator?.actionContext.workspaceInitialization;
1135
+ if (!service)
1136
+ sendJson(res, 503, { ok: false, error: { code: "UNAVAILABLE", message: "工作区配置服务不可用" } });
1137
+ else
1138
+ sendJson(res, 200, { ok: true, initialization: await service.check(url.searchParams.get("refresh") === "1") });
1139
+ return true;
1140
+ }
1133
1141
  if (method === "GET" && pathname === "/api/operator/v1/readiness") {
1134
1142
  await handleReadiness(req, res, ctx);
1135
1143
  return true;
@@ -11,6 +11,7 @@ import { isLoopbackHost } from "./loopback.js";
11
11
  import { ChatSessionStore } from "./chat/session-store.js";
12
12
  import { ChatSessionCatalog, projectChatSessionCatalogListItem, } from "./chat/session-catalog.js";
13
13
  import { matchRepoHtmlPreviewRoute } from "./chat/repo-browser.js";
14
+ import { OperationStore } from "../../infrastructure/console/operation-store.js";
14
15
  import { handleConsoleHealthRequest, handleWorkspaceRoutes, sendJson, serveConsoleStatic, } from "./routes.js";
15
16
  import { issueBootCapabilityToken, injectConfirmationTokenScript, } from "./security.js";
16
17
  import { resolvePackageRootFromConsole } from "./sibling-controller.js";
@@ -235,6 +236,12 @@ export async function createConsoleServer(options) {
235
236
  packageRoot: resolvePackageRootFromConsole(),
236
237
  client: startup.client,
237
238
  operations: startup.operations,
239
+ workspaceActivity: async () => {
240
+ const records = new Map((await registry.snapshotVisible()).workspaces.map(record => [record.workspaceId, record]));
241
+ for (const context of workspaceContexts.values())
242
+ records.set(context.workspaceId, context.record);
243
+ return [...records.values()].map(record => ({ repoRoot: record.repoRoot, operations: workspaceContexts.get(record.workspaceId)?.operations ?? new OperationStore(openConsoleAppData({ repoRoot: record.repoRoot, appDataRoot: options.appDataRoot })) }));
244
+ },
238
245
  activeChatTurnCount: () => [...workspaceContexts.values()].reduce((total, context) => total + (context.chatRouteDeps.turnExecutions?.size() ?? 0), 0),
239
246
  requestHandoff: requestConsoleHandoff,
240
247
  });
@@ -687,6 +694,7 @@ export async function createConsoleServer(options) {
687
694
  if ((method === "GET" &&
688
695
  (pathname === "/api/operator/v1/readiness" ||
689
696
  pathname === "/api/operator/v1/recovery/candidates" ||
697
+ pathname === "/api/operator/v1/workspace-initialization" ||
690
698
  pathname === "/api/operator/v1/night-aux-ticker")) ||
691
699
  (method === "POST" &&
692
700
  pathname === "/api/operator/v1/night-aux-ticker")) {
@@ -1 +1 @@
1
- import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-Bj4vc-Dp.js";import{p as f}from"./chunk-JWPE2WC7-Dr-wFY60.js";import{_ as n,l as o}from"./mermaid.core-i7dDGqov.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-zo_Jy2sf.js";import"./index-CWarwRqc.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-BQv9BtIQ.js";import{p as f}from"./chunk-JWPE2WC7-Dv4_KVRW.js";import{_ as n,l as o}from"./mermaid.core-BQZRRvZf.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-O1uTYY7b.js";import"./index-BGEQmIg4.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-i7dDGqov.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-BQZRRvZf.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};