@runweave/server-linux-x64 0.1.14 → 0.1.17
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.
- package/manifest.json +189 -177
- package/native.tar.gz +0 -0
- package/package.json +1 -1
- package/payload/app-server/build-info.json +4 -4
- package/payload/app-server/configuration-compatibility.json +1 -1
- package/payload/app-server/index.cjs +1011 -637
- package/payload/app-server/index.cjs.map +1 -1
- package/payload/backend/activity-sqlite-worker.cjs +3 -1
- package/payload/backend/build-info.json +4 -4
- package/payload/backend/dev-resources/control.cjs +6 -2
- package/payload/backend/index.cjs +3307 -2163
- package/payload/backend/scheduled-tasks-sqlite-worker.cjs +14 -1
- package/payload/frontend/dist/assets/{_baseUniq-BqvkeJO_.js → _baseUniq-Rpr7ObZY.js} +1 -1
- package/payload/frontend/dist/assets/{access-DdS0UJde.js → access-BvxRY1pA.js} +1 -1
- package/payload/frontend/dist/assets/{advanced-BbcDBPNv.js → advanced-CZfrALGq.js} +1 -1
- package/payload/frontend/dist/assets/{appearance-BvmkpQdR.js → appearance-D0AwwNw_.js} +1 -1
- package/payload/frontend/dist/assets/{arc-C0XOrQvn.js → arc-BxzXVQYF.js} +1 -1
- package/payload/frontend/dist/assets/{architectureDiagram-Q4EWVU46-BPP9wqzx.js → architectureDiagram-Q4EWVU46-DTYJSSVX.js} +1 -1
- package/payload/frontend/dist/assets/{blockDiagram-DXYQGD6D-C-tmnyfm.js → blockDiagram-DXYQGD6D-DaIImc6U.js} +1 -1
- package/payload/frontend/dist/assets/{c4Diagram-AHTNJAMY-C6uI9h_3.js → c4Diagram-AHTNJAMY-DRS-zy_e.js} +1 -1
- package/payload/frontend/dist/assets/channel-hL0i3Xgx.js +1 -0
- package/payload/frontend/dist/assets/{chunk-4BX2VUAB-CCI-uz3D.js → chunk-4BX2VUAB-BxZHfjDE.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-4TB4RGXK-CqUM0_7D.js → chunk-4TB4RGXK-BbTiOq_d.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-55IACEB6-DDxrCLKB.js → chunk-55IACEB6-DSGNAzPL.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-EDXVE4YY-LwYMVaGh.js → chunk-EDXVE4YY-C3VoLWVy.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-FMBD7UC4-CQR_-5z5.js → chunk-FMBD7UC4-jgIQKRAn.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-OYMX7WX6-DQ0IiFt5.js → chunk-OYMX7WX6-CR1nxjr3.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-QZHKN3VN-BPX4TBXp.js → chunk-QZHKN3VN-BsZQAe-R.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-YZCP3GAM-DqZhVlNy.js → chunk-YZCP3GAM-C7hytF3a.js} +1 -1
- package/payload/frontend/dist/assets/classDiagram-6PBFFD2Q-Nr4qU3jt.js +1 -0
- package/payload/frontend/dist/assets/classDiagram-v2-HSJHXN6E-Nr4qU3jt.js +1 -0
- package/payload/frontend/dist/assets/clone-ePxKteP6.js +1 -0
- package/payload/frontend/dist/assets/{connection-ToakGqMm.js → connection-Brx3p6gD.js} +1 -1
- package/payload/frontend/dist/assets/{connections-DD38aD2_.js → connections-DV6_2T4t.js} +1 -1
- package/payload/frontend/dist/assets/{cose-bilkent-S5V4N54A-Bi6kn4wb.js → cose-bilkent-S5V4N54A-CrqquZt2.js} +1 -1
- package/payload/frontend/dist/assets/{dagre-KV5264BT-D7PPmb_h.js → dagre-KV5264BT-BOAEPW4D.js} +1 -1
- package/payload/frontend/dist/assets/{desktop-D80mAqEi.js → desktop-1i0ByIN_.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-5BDNPKRD-2Fg0LDFB.js → diagram-5BDNPKRD-NVdwMJnF.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-G4DWMVQ6-DDht1hGL.js → diagram-G4DWMVQ6-RKmkTTau.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-MMDJMWI5-_slCo5qd.js → diagram-MMDJMWI5-B0Or1DIY.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-TYMM5635-BibhtXBj.js → diagram-TYMM5635-CoJGPUQX.js} +1 -1
- package/payload/frontend/dist/assets/{erDiagram-SMLLAGMA-Tb9JdHm7.js → erDiagram-SMLLAGMA-DHK_lg3E.js} +1 -1
- package/payload/frontend/dist/assets/{flowDiagram-DWJPFMVM-DmV0VUHI.js → flowDiagram-DWJPFMVM-CzirUF-x.js} +1 -1
- package/payload/frontend/dist/assets/{ganttDiagram-T4ZO3ILL-boTSPZL8.js → ganttDiagram-T4ZO3ILL-DGY2KYoN.js} +1 -1
- package/payload/frontend/dist/assets/{gitGraphDiagram-UUTBAWPF-3Akku_ak.js → gitGraphDiagram-UUTBAWPF-BI5lNHKC.js} +1 -1
- package/payload/frontend/dist/assets/{graph-GAq0lcsb.js → graph-CxjgBe1N.js} +1 -1
- package/payload/frontend/dist/assets/{image-PejzD76r.js → image-LArOi_ON.js} +1 -1
- package/payload/frontend/dist/assets/{index-BBNE8InR.js → index-CLYrzd8Y.js} +5 -5
- package/payload/frontend/dist/assets/{infoDiagram-42DDH7IO-TrixGt-D.js → infoDiagram-42DDH7IO-DTRl6YSd.js} +1 -1
- package/payload/frontend/dist/assets/{ishikawaDiagram-UXIWVN3A-BYKU82ro.js → ishikawaDiagram-UXIWVN3A-DCnBRtVx.js} +1 -1
- package/payload/frontend/dist/assets/{journeyDiagram-VCZTEJTY-BL_50q1o.js → journeyDiagram-VCZTEJTY-ChVgjvDs.js} +1 -1
- package/payload/frontend/dist/assets/{kanban-definition-6JOO6SKY-Clxk3CDg.js → kanban-definition-6JOO6SKY-skToH2-J.js} +1 -1
- package/payload/frontend/dist/assets/{layout-BbxLzgiJ.js → layout-B4V_ctSo.js} +1 -1
- package/payload/frontend/dist/assets/{linear-DWemxXgm.js → linear-DYom329p.js} +1 -1
- package/payload/frontend/dist/assets/{main-BHwOPARZ.js → main-C_6tTN_b.js} +5 -5
- package/payload/frontend/dist/assets/{min-DIL93Hib.js → min-EMXbJh1s.js} +1 -1
- package/payload/frontend/dist/assets/{mindmap-definition-QFDTVHPH-DlfLczjR.js → mindmap-definition-QFDTVHPH-DLHGcrEw.js} +1 -1
- package/payload/frontend/dist/assets/{monitoring-B6pQ-P1J.js → monitoring-Bvfy9Q9G.js} +1 -1
- package/payload/frontend/dist/assets/{notifications-B9lXATqv.js → notifications-CdkYtTCy.js} +1 -1
- package/payload/frontend/dist/assets/{pieDiagram-DEJITSTG-BaU_H2x3.js → pieDiagram-DEJITSTG-LrDfLpSu.js} +1 -1
- package/payload/frontend/dist/assets/{quadrantDiagram-34T5L4WZ-D3nVMaXv.js → quadrantDiagram-34T5L4WZ-uV9sfVKm.js} +1 -1
- package/payload/frontend/dist/assets/{record-content-Dn6GE_dv.js → record-content-B3qVdcq-.js} +1 -1
- package/payload/frontend/dist/assets/{requirementDiagram-MS252O5E-C7J-xGnU.js → requirementDiagram-MS252O5E-Cf_SmlxS.js} +1 -1
- package/payload/frontend/dist/assets/{sankeyDiagram-XADWPNL6-BAkualMS.js → sankeyDiagram-XADWPNL6-DSLCPq2l.js} +1 -1
- package/payload/frontend/dist/assets/{sequenceDiagram-FGHM5R23-BYWAdS9C.js → sequenceDiagram-FGHM5R23-CAAjivQf.js} +1 -1
- package/payload/frontend/dist/assets/{stateDiagram-FHFEXIEX-C3qD8m-7.js → stateDiagram-FHFEXIEX-DNMUe2-F.js} +1 -1
- package/payload/frontend/dist/assets/stateDiagram-v2-QKLJ7IA2-Ca5k1Q3K.js +1 -0
- package/payload/frontend/dist/assets/{status-MDvjSQ51.js → status-BPA1tGcF.js} +1 -1
- package/payload/frontend/dist/assets/suiji-ZMTJOgTp.js +1 -0
- package/payload/frontend/dist/assets/{svg-C0XZL3qU.js → svg-BbHfpNxC.js} +1 -1
- package/payload/frontend/dist/assets/{tabs-Y-BEbPyW.js → tabs-DkuqaUwz.js} +1 -1
- package/payload/frontend/dist/assets/{timeline-definition-GMOUNBTQ-JER6Qyhn.js → timeline-definition-GMOUNBTQ-DNJNPFK4.js} +1 -1
- package/payload/frontend/dist/assets/{vennDiagram-DHZGUBPP-kRp3Wh4r.js → vennDiagram-DHZGUBPP-BycjIB3y.js} +1 -1
- package/payload/frontend/dist/assets/{wardley-RL74JXVD-Dnh_rEyA.js → wardley-RL74JXVD-Bq01rln7.js} +1 -1
- package/payload/frontend/dist/assets/{wardleyDiagram-NUSXRM2D-DxiIy5IP.js → wardleyDiagram-NUSXRM2D-D4_m8ewM.js} +1 -1
- package/payload/frontend/dist/assets/{xychartDiagram-5P7HB3ND-DcckHE39.js → xychartDiagram-5P7HB3ND-CovxGnwH.js} +1 -1
- package/payload/frontend/dist/build-info.json +4 -4
- package/payload/frontend/dist/companion.html +1 -1
- package/payload/frontend/dist/index.html +2 -2
- package/payload/packages/agent-bridge/src/install-pi.mjs +1 -0
- package/payload/plugins/pi/dist/bridge/runweave-hook-bridge.cjs +21 -4
- package/payload/plugins/pi/dist/bridge/runweave-hook-claude.cjs +68 -0
- package/payload/plugins/pi/dist/bridge/runweave-hook-completion.cjs +16 -4
- package/payload/plugins/pi/dist/bridge/runweave-hook-payload.cjs +1 -0
- package/payload/plugins/toolkit/.codex-plugin/plugin.json +1 -1
- package/payload/plugins/toolkit/hooks/runweave-hook-bridge.cjs +21 -4
- package/payload/plugins/toolkit/hooks/runweave-hook-claude.cjs +68 -0
- package/payload/plugins/toolkit/hooks/runweave-hook-completion.cjs +16 -4
- package/payload/plugins/toolkit/hooks/runweave-hook-payload.cjs +1 -0
- package/payload/plugins/toolkit-release.json +1 -1
- package/payload/pty-host/index.cjs +3 -1
- package/payload/server/index.cjs +5 -1
- package/payload/frontend/dist/assets/channel-DaIQFY7W.js +0 -1
- package/payload/frontend/dist/assets/classDiagram-6PBFFD2Q-TM6ckD19.js +0 -1
- package/payload/frontend/dist/assets/classDiagram-v2-HSJHXN6E-TM6ckD19.js +0 -1
- package/payload/frontend/dist/assets/clone-BoG338Z7.js +0 -1
- package/payload/frontend/dist/assets/stateDiagram-v2-QKLJ7IA2-C18IEkog.js +0 -1
- package/payload/frontend/dist/assets/suiji-B6w3AzG7.js +0 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
/* global fetch, module, require */
|
|
1
|
+
/* global fetch, module, require, AbortSignal */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
3
|
-
const { buildCompletionHookBody } = require("./runweave-hook-payload.cjs");
|
|
4
|
-
|
|
3
|
+
const { buildCompletionHookBody, extractUserPrompt, isFeishuAttentionHook, readNotificationType } = require("./runweave-hook-payload.cjs");
|
|
5
4
|
async function postCompletionHook({
|
|
6
5
|
endpoint,
|
|
7
6
|
token,
|
|
@@ -20,6 +19,18 @@ async function postCompletionHook({
|
|
|
20
19
|
rawEvent,
|
|
21
20
|
commandName,
|
|
22
21
|
});
|
|
22
|
+
if (source === "claude") {
|
|
23
|
+
if (!endpoint) return { accepted: false };
|
|
24
|
+
const instanceId = payload.claude?.instanceId;
|
|
25
|
+
if (!instanceId || payload.agent_id || payload.agent_transcript_path) return { accepted: false };
|
|
26
|
+
const notificationType = readNotificationType(payload);
|
|
27
|
+
const event = String(rawEvent).toLowerCase().replace(/[_\s-]/g, "");
|
|
28
|
+
body.claude = { instanceId, eventId: payload.runweaveHookEventId,
|
|
29
|
+
...(notificationType ? { notificationType } : {}),
|
|
30
|
+
...(event === "userpromptsubmit" ? { query: extractUserPrompt(payload) || "" } : {}) };
|
|
31
|
+
body.completionReason = event === "permissionrequest" ||
|
|
32
|
+
(notificationType !== "idle_prompt" && isFeishuAttentionHook(payload, source)) ? "notify" : "hook_stop";
|
|
33
|
+
}
|
|
23
34
|
try {
|
|
24
35
|
const response = await fetch(endpoint, {
|
|
25
36
|
method: "POST",
|
|
@@ -28,9 +39,10 @@ async function postCompletionHook({
|
|
|
28
39
|
"X-Runweave-Hook-Token": token,
|
|
29
40
|
},
|
|
30
41
|
body: JSON.stringify(body),
|
|
42
|
+
...(source === "claude" ? { signal: AbortSignal.timeout(5000), redirect: "error" } : {}),
|
|
31
43
|
});
|
|
32
44
|
const result = await response.json().catch(() => null);
|
|
33
|
-
return { ok: response.ok, status: response.status, accepted: Boolean(result?.event || result?.notificationId) && !result?.ignored, notificationId: result?.notificationId ?? (result?.event?.payload?.completionRevision ? String(result.event.payload.completionRevision) : undefined) };
|
|
45
|
+
return { summary: result?.event?.payload?.summary, ok: response.ok, status: response.status, accepted: Boolean(result?.event || result?.notificationId) && !result?.ignored, notificationId: result?.notificationId ?? (result?.event?.payload?.completionRevision ? String(result.event.payload.completionRevision) : undefined) };
|
|
34
46
|
} catch (error) {
|
|
35
47
|
return {
|
|
36
48
|
ok: false,
|
|
@@ -528,6 +528,7 @@ function buildAppServerBaseEvent({
|
|
|
528
528
|
payload: {
|
|
529
529
|
source,
|
|
530
530
|
...(source === "pi" && payload.pi ? { pi: payload.pi } : {}),
|
|
531
|
+
...(source === "claude" && payload.claude ? { claude: payload.claude } : {}),
|
|
531
532
|
threadId,
|
|
532
533
|
rawHookEvent: String(rawEvent || "Unknown"),
|
|
533
534
|
normalizedEvent,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "toolkit",
|
|
3
|
-
"version": "0.2.0+codex.
|
|
3
|
+
"version": "0.2.0+codex.1e1b247f9ff295236b4a62855f1ca6b63035bb43bd51b14a095e2aeee09a5fea",
|
|
4
4
|
"description": "Runweave Toolkit plugin for project-specific skills and automation extensions.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Runweave"
|
|
@@ -7,6 +7,7 @@ const { setTimeout } = require("node:timers");
|
|
|
7
7
|
const fs = require("node:fs");
|
|
8
8
|
const path = require("node:path");
|
|
9
9
|
const crypto = require("node:crypto");
|
|
10
|
+
const { readClaudeContext } = require("./runweave-hook-claude.cjs");
|
|
10
11
|
const { postCompletionHook } = require("./runweave-hook-completion.cjs");
|
|
11
12
|
const {
|
|
12
13
|
STOP_EVENTS,
|
|
@@ -221,10 +222,12 @@ async function postAgentHook({
|
|
|
221
222
|
activityEventId,
|
|
222
223
|
operationId,
|
|
223
224
|
pi,
|
|
225
|
+
claude,
|
|
224
226
|
}) {
|
|
225
227
|
let body = JSON.stringify({
|
|
226
228
|
activityEventId,
|
|
227
229
|
...(pi ? { pi } : {}),
|
|
230
|
+
...(claude ? { claude } : {}),
|
|
228
231
|
...(operationId ? { operationId } : {}),
|
|
229
232
|
terminalSessionId,
|
|
230
233
|
projectId: process.env.RUNWEAVE_PROJECT_ID || undefined,
|
|
@@ -322,8 +325,11 @@ async function main() {
|
|
|
322
325
|
}
|
|
323
326
|
const completionReason = normalizeReason(args.reason);
|
|
324
327
|
const threadId = readThreadId(payload);
|
|
325
|
-
|
|
326
|
-
|
|
328
|
+
payload.runweaveHookEventId = crypto.randomUUID();
|
|
329
|
+
if (source === "claude") payload.claude = readClaudeContext(payload, payload.runweaveHookEventId);
|
|
330
|
+
const stateHookEvent = source === "claude"
|
|
331
|
+
? (payload.claude ? toAgentHookStateEvent(normalizedEvent) || "AgentMetadata" : null)
|
|
332
|
+
: ["pi", "codex", "trae", "traecli", "traex"].includes(source)
|
|
327
333
|
? toAgentHookStateEvent(normalizedEvent)
|
|
328
334
|
: null;
|
|
329
335
|
// Compaction continues the turn; child CLIs do not own the parent terminal.
|
|
@@ -350,7 +356,9 @@ async function main() {
|
|
|
350
356
|
const effectiveCompletionReason = isTraexAttentionNotification
|
|
351
357
|
? "notify"
|
|
352
358
|
: completionReason;
|
|
353
|
-
|
|
359
|
+
// Claude Stop is only a candidate; its notification adapter waits for native
|
|
360
|
+
// idle confirmation and publishes through the Backend's canonical feed.
|
|
361
|
+
const shouldRecordCompletion = source !== "claude" && (source !== "pi" || payload.pi?.outcome === "completed") && (
|
|
354
362
|
isTraexAttentionNotification ||
|
|
355
363
|
effectiveCompletionReason !== "hook_stop" ||
|
|
356
364
|
STOP_EVENTS.has(normalizedEvent));
|
|
@@ -416,7 +424,6 @@ async function main() {
|
|
|
416
424
|
const summary = extractCompletionSummary(payload);
|
|
417
425
|
if (summary) payload.last_assistant_message = summary;
|
|
418
426
|
}
|
|
419
|
-
payload.runweaveHookEventId = crypto.randomUUID();
|
|
420
427
|
const appServerClient = await discoverAppServer();
|
|
421
428
|
if (!appServerClient) {
|
|
422
429
|
appendDebugLog("hook bridge app-server unavailable", {
|
|
@@ -482,6 +489,7 @@ async function main() {
|
|
|
482
489
|
: undefined,
|
|
483
490
|
activityEventId,
|
|
484
491
|
...(source === "pi" ? { pi: payload.pi } : {}),
|
|
492
|
+
...(source === "claude" ? { claude: payload.claude } : {}),
|
|
485
493
|
operationId: process.env.RUNWEAVE_TERMINAL_AGENT_OPERATION_ID || null,
|
|
486
494
|
});
|
|
487
495
|
appendDebugLog("hook bridge posted agent hook", {
|
|
@@ -492,6 +500,15 @@ async function main() {
|
|
|
492
500
|
});
|
|
493
501
|
}
|
|
494
502
|
|
|
503
|
+
if (source === "claude") {
|
|
504
|
+
const result = await postCompletionHook({ endpoint: completionEndpoint, token, terminalSessionId,
|
|
505
|
+
payload, source, completionReason, rawEvent, commandName });
|
|
506
|
+
if (result.accepted) notifyFeishu({ ...payload, hook_event_name: "Stop",
|
|
507
|
+
last_assistant_message: result.summary || "任务需要你确认或处理,请回到对应终端。",
|
|
508
|
+
feishuNotificationId: result.notificationId }, source, terminalSessionId, terminalPanelId);
|
|
509
|
+
return;
|
|
510
|
+
}
|
|
511
|
+
|
|
495
512
|
if (isFeishuAttentionHook(payload, source) && !shouldRecordCompletion && completionEndpoint) {
|
|
496
513
|
const attentionPayload = { ...payload, feishuNotificationOnly: true, last_assistant_message: "任务需要你确认或处理,请回到对应终端。" };
|
|
497
514
|
const result = await postCompletionHook({ endpoint: completionEndpoint, token, terminalSessionId,
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/* global module, process, require */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
3
|
+
const { spawnSync } = require("node:child_process");
|
|
4
|
+
const { performance } = require("node:perf_hooks");
|
|
5
|
+
const path = require("node:path");
|
|
6
|
+
|
|
7
|
+
// Use process birth, before stdin/network work, so delayed delivery cannot roll state back.
|
|
8
|
+
const observedAt = performance.timeOrigin;
|
|
9
|
+
|
|
10
|
+
function readClaudeIdentity() {
|
|
11
|
+
const options = { encoding: "utf8", timeout: 3000, maxBuffer: 4 * 1024 * 1024, windowsHide: true };
|
|
12
|
+
const processes = new Map();
|
|
13
|
+
if (process.platform === "win32") {
|
|
14
|
+
const script = 'Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,Name,@{Name="StartedAt";Expression={if ($_.CreationDate) {([DateTimeOffset]$_.CreationDate).ToUnixTimeMilliseconds()} else {0}}} | ConvertTo-Json -Compress';
|
|
15
|
+
const result = spawnSync("powershell.exe", ["-NoLogo", "-NoProfile", "-NonInteractive", "-Command", script], options);
|
|
16
|
+
if (result.error || result.status !== 0) return null;
|
|
17
|
+
try {
|
|
18
|
+
const rows = JSON.parse(String(result.stdout).replace(/^\uFEFF/, ""));
|
|
19
|
+
for (const row of Array.isArray(rows) ? rows : [rows]) {
|
|
20
|
+
processes.set(row.ProcessId, { parent: row.ParentProcessId,
|
|
21
|
+
command: String(row.Name).toLowerCase().replace(/\.(exe|cmd|bat)$/, ""), startedAt: row.StartedAt });
|
|
22
|
+
}
|
|
23
|
+
} catch { return null; }
|
|
24
|
+
} else {
|
|
25
|
+
const result = spawnSync("ps", ["-axo", "pid=,ppid=,comm="], options);
|
|
26
|
+
if (result.error || result.status !== 0) return null;
|
|
27
|
+
for (const line of String(result.stdout).split(/\r?\n/)) {
|
|
28
|
+
const match = /^\s*(\d+)\s+(\d+)\s+(.+?)\s*$/.exec(line);
|
|
29
|
+
if (match) processes.set(Number(match[1]), { parent: Number(match[2]), command: path.basename(match[3]) });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
let claudePid = null;
|
|
33
|
+
const visited = new Set();
|
|
34
|
+
for (let pid = process.ppid; pid > 1; ) {
|
|
35
|
+
if (visited.has(pid)) return null;
|
|
36
|
+
visited.add(pid);
|
|
37
|
+
const entry = processes.get(pid);
|
|
38
|
+
if (!entry) return null;
|
|
39
|
+
if (["claude", "codex", "trae", "traex", "traecli", "pi"].includes(entry.command)) {
|
|
40
|
+
if (claudePid || entry.command !== "claude") return null;
|
|
41
|
+
claudePid = pid;
|
|
42
|
+
}
|
|
43
|
+
pid = entry.parent;
|
|
44
|
+
}
|
|
45
|
+
if (!claudePid) return null;
|
|
46
|
+
let startedAt = processes.get(claudePid).startedAt;
|
|
47
|
+
if (process.platform !== "win32") {
|
|
48
|
+
const result = spawnSync("ps", ["-p", String(claudePid), "-o", "lstart="], {
|
|
49
|
+
...options, env: { TZ: "UTC", LC_ALL: "C" },
|
|
50
|
+
});
|
|
51
|
+
if (result.error || result.status !== 0) return null;
|
|
52
|
+
startedAt = Date.parse(`${String(result.stdout).trim()} UTC`);
|
|
53
|
+
}
|
|
54
|
+
if (!Number.isFinite(startedAt) || startedAt <= 0 || startedAt > observedAt) return null;
|
|
55
|
+
return { instanceId: `${claudePid}:${startedAt}`, startedAt };
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function readClaudeContext(payload, eventId) {
|
|
59
|
+
if (payload.agent_id || payload.agent_transcript_path || !payload.session_id) return null;
|
|
60
|
+
const identity = readClaudeIdentity();
|
|
61
|
+
if (!identity) return null;
|
|
62
|
+
return { version: 1, ...identity, observedAt, eventId, sessionId: payload.session_id,
|
|
63
|
+
event: String(payload.hook_event_name || "").toLowerCase().replace(/[_\s-]/g, ""),
|
|
64
|
+
...(payload.source ? { sessionSource: payload.source } : {}),
|
|
65
|
+
...(payload.notification_type ? { notificationType: payload.notification_type } : {}) };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
module.exports = { readClaudeContext };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
/* global fetch, module, require */
|
|
1
|
+
/* global fetch, module, require, AbortSignal */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
3
|
-
const { buildCompletionHookBody } = require("./runweave-hook-payload.cjs");
|
|
4
|
-
|
|
3
|
+
const { buildCompletionHookBody, extractUserPrompt, isFeishuAttentionHook, readNotificationType } = require("./runweave-hook-payload.cjs");
|
|
5
4
|
async function postCompletionHook({
|
|
6
5
|
endpoint,
|
|
7
6
|
token,
|
|
@@ -20,6 +19,18 @@ async function postCompletionHook({
|
|
|
20
19
|
rawEvent,
|
|
21
20
|
commandName,
|
|
22
21
|
});
|
|
22
|
+
if (source === "claude") {
|
|
23
|
+
if (!endpoint) return { accepted: false };
|
|
24
|
+
const instanceId = payload.claude?.instanceId;
|
|
25
|
+
if (!instanceId || payload.agent_id || payload.agent_transcript_path) return { accepted: false };
|
|
26
|
+
const notificationType = readNotificationType(payload);
|
|
27
|
+
const event = String(rawEvent).toLowerCase().replace(/[_\s-]/g, "");
|
|
28
|
+
body.claude = { instanceId, eventId: payload.runweaveHookEventId,
|
|
29
|
+
...(notificationType ? { notificationType } : {}),
|
|
30
|
+
...(event === "userpromptsubmit" ? { query: extractUserPrompt(payload) || "" } : {}) };
|
|
31
|
+
body.completionReason = event === "permissionrequest" ||
|
|
32
|
+
(notificationType !== "idle_prompt" && isFeishuAttentionHook(payload, source)) ? "notify" : "hook_stop";
|
|
33
|
+
}
|
|
23
34
|
try {
|
|
24
35
|
const response = await fetch(endpoint, {
|
|
25
36
|
method: "POST",
|
|
@@ -28,9 +39,10 @@ async function postCompletionHook({
|
|
|
28
39
|
"X-Runweave-Hook-Token": token,
|
|
29
40
|
},
|
|
30
41
|
body: JSON.stringify(body),
|
|
42
|
+
...(source === "claude" ? { signal: AbortSignal.timeout(5000), redirect: "error" } : {}),
|
|
31
43
|
});
|
|
32
44
|
const result = await response.json().catch(() => null);
|
|
33
|
-
return { ok: response.ok, status: response.status, accepted: Boolean(result?.event || result?.notificationId) && !result?.ignored, notificationId: result?.notificationId ?? (result?.event?.payload?.completionRevision ? String(result.event.payload.completionRevision) : undefined) };
|
|
45
|
+
return { summary: result?.event?.payload?.summary, ok: response.ok, status: response.status, accepted: Boolean(result?.event || result?.notificationId) && !result?.ignored, notificationId: result?.notificationId ?? (result?.event?.payload?.completionRevision ? String(result.event.payload.completionRevision) : undefined) };
|
|
34
46
|
} catch (error) {
|
|
35
47
|
return {
|
|
36
48
|
ok: false,
|
|
@@ -528,6 +528,7 @@ function buildAppServerBaseEvent({
|
|
|
528
528
|
payload: {
|
|
529
529
|
source,
|
|
530
530
|
...(source === "pi" && payload.pi ? { pi: payload.pi } : {}),
|
|
531
|
+
...(source === "claude" && payload.claude ? { claude: payload.claude } : {}),
|
|
531
532
|
threadId,
|
|
532
533
|
rawHookEvent: String(rawEvent || "Unknown"),
|
|
533
534
|
normalizedEvent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"0.2.0+codex.
|
|
1
|
+
{"version":"0.2.0+codex.1e1b247f9ff295236b4a62855f1ca6b63035bb43bd51b14a095e2aeee09a5fea","digest":"1e1b247f9ff295236b4a62855f1ca6b63035bb43bd51b14a095e2aeee09a5fea"}
|
|
@@ -14760,6 +14760,8 @@ var CONFIGURATION_FIELDS = [
|
|
|
14760
14760
|
{ "path": "services.feishu.legacyWebhook.transport", "type": "string", "domain": "services.feishu", "sensitive": false, "remote": true, "apply": "restart", "description": "\u65E7\u901A\u77E5 hook \u53D1\u9001\u65B9\u5F0F", "environmentKeys": ["FEISHU_NOTIFY_TRANSPORT"], "owner": "cli/feishu", "scope": "instance", "storage": "settings.yaml", "default": { "value": null }, "migrationSources": ["FEISHU_NOTIFY_TRANSPORT"] },
|
|
14761
14761
|
{ "path": "agents.codex.binary", "type": "string", "domain": "agents.codex", "sensitive": false, "remote": false, "apply": "restart", "description": "Codex \u53EF\u6267\u884C\u6587\u4EF6", "environmentKeys": ["CODEX_BIN", "RUNWEAVE_CODEX_BIN"], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u672A\u6307\u5B9A\u65F6\u901A\u8FC7 PATH / \u5E73\u53F0\u5B89\u88C5\u4F4D\u7F6E\u67E5\u627E codex\uFF1B\u663E\u5F0F\u914D\u7F6E\u6307\u5411\u540C\u4E00\u53EF\u6267\u884C\u7A0B\u5E8F\u3002" }, "migrationSources": ["CODEX_BIN", "RUNWEAVE_CODEX_BIN"] },
|
|
14762
14762
|
{ "path": "agents.traex.binary", "type": "string", "domain": "agents.traex", "sensitive": false, "remote": false, "apply": "restart", "description": "Trae \u53EF\u6267\u884C\u6587\u4EF6\uFF1B\u591A\u4E2A\u5165\u53E3\u7EDF\u4E00", "environmentKeys": ["TRAEX_BIN", "RUNWEAVE_TRAE_BIN"], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u672A\u6307\u5B9A\u65F6\u901A\u8FC7 PATH / \u5E73\u53F0\u5B89\u88C5\u4F4D\u7F6E\u67E5\u627E traex\uFF1B\u663E\u5F0F\u914D\u7F6E\u6307\u5411\u540C\u4E00\u53EF\u6267\u884C\u7A0B\u5E8F\u3002" }, "migrationSources": ["TRAEX_BIN", "RUNWEAVE_TRAE_BIN"] },
|
|
14763
|
+
{ "path": "agents.claude.binary", "type": "string", "domain": "agents.claude", "sensitive": false, "remote": false, "apply": "restart", "description": "Claude Code \u53EF\u6267\u884C\u6587\u4EF6\uFF1B\u4EC5\u9650\u7A0B\u5E8F\u540D\u6216\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u4E0D\u63A5\u53D7\u547D\u4EE4\u53C2\u6570", "environmentKeys": [], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u4F7F\u7528\u5F53\u524D Backend \u7684 PATH \u67E5\u627E claude\uFF1B\u4E0D\u6539\u53D8\u73B0\u6709\u9ED8\u8BA4 provider\u3002" }, "migrationSources": ["new-field:no-legacy-source"] },
|
|
14764
|
+
{ "path": "agents.claude.configDirectory", "type": "string", "domain": "agents.claude", "sensitive": false, "remote": false, "apply": "restart", "description": "Claude \u539F\u751F\u914D\u7F6E\u76EE\u5F55\u7684\u5916\u90E8\u5F15\u7528\uFF1B\u4F1A\u8BDD\u6839\u4E3A\u5176 projects \u5B50\u76EE\u5F55\uFF0C\u4E0D\u590D\u5236\u51ED\u636E", "environmentKeys": ["CLAUDE_CONFIG_DIR"], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u663E\u5F0F\u5B9E\u4F8B\u76EE\u5F55\u4F18\u5148\uFF0C\u5426\u5219\u5F15\u7528\u5916\u90E8 CLAUDE_CONFIG_DIR \u6216\u64CD\u4F5C\u7CFB\u7EDF\u7528\u6237\u76EE\u5F55\u4E0B .claude\uFF1B\u5FC5\u987B\u4E3A\u7EDD\u5BF9\u8DEF\u5F84\u3002" }, "migrationSources": ["CLAUDE_CONFIG_DIR"] },
|
|
14763
14765
|
{ "path": "agents.companion.binary", "type": "string", "domain": "agents.companion", "sensitive": false, "remote": false, "apply": "restart", "description": "\u4F34\u968F\u7A97\u53E3 Agent \u53EF\u6267\u884C\u6587\u4EF6", "environmentKeys": ["RUNWEAVE_COMPANION_AGENT_EXECUTABLE"], "owner": "electron/companion", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u4F7F\u7528\u5DF2\u5B89\u88C5 Codex App \u81EA\u5E26\u6267\u884C\u5165\u53E3\uFF1B\u663E\u5F0F\u503C\u5FC5\u987B\u53EF\u6267\u884C\u3002" }, "migrationSources": ["RUNWEAVE_COMPANION_AGENT_EXECUTABLE"] },
|
|
14764
14766
|
{ "path": "agents.codex.sessionsDirectory", "type": "string", "domain": "agents.codex", "sensitive": false, "remote": false, "apply": "restart", "description": "\u5916\u90E8 Codex \u4F1A\u8BDD\u76EE\u5F55\u5F15\u7528", "environmentKeys": ["RUNWEAVE_CODEX_SESSIONS_DIR"], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u5916\u90E8\u5DE5\u5177\u62E5\u6709\u7684 CODEX_HOME/sessions \u6216\u64CD\u4F5C\u7CFB\u7EDF\u7528\u6237\u76EE\u5F55\u4E0B .codex/sessions\uFF0C\u4EC5\u5F15\u7528\u3002" }, "migrationSources": ["RUNWEAVE_CODEX_SESSIONS_DIR"] },
|
|
14765
14767
|
{ "path": "agents.traex.sessionsDirectory", "type": "string", "domain": "agents.traex", "sensitive": false, "remote": false, "apply": "restart", "description": "\u5916\u90E8 Trae \u4F1A\u8BDD\u76EE\u5F55\u5F15\u7528", "environmentKeys": ["RUNWEAVE_TRAE_SESSIONS_DIR"], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u64CD\u4F5C\u7CFB\u7EDF\u7528\u6237\u76EE\u5F55\u4E0B .trae/cli/sessions\uFF0C\u4EC5\u5F15\u7528\u3002" }, "migrationSources": ["RUNWEAVE_TRAE_SESSIONS_DIR"] },
|
|
@@ -14887,7 +14889,7 @@ var CONFIGURATION_COMPATIBILITY = {
|
|
|
14887
14889
|
};
|
|
14888
14890
|
var APP_SERVER_CONFIGURATION_COMPATIBILITY = {
|
|
14889
14891
|
...CONFIGURATION_COMPATIBILITY,
|
|
14890
|
-
domainVersions: Object.fromEntries(["appServer", "agents.codex", "agents.traex"].map((domain) => [domain, [CONFIGURATION_DOMAIN_VERSIONS[domain]]]))
|
|
14892
|
+
domainVersions: Object.fromEntries(["appServer", "agents.codex", "agents.traex", "agents.claude"].map((domain) => [domain, [CONFIGURATION_DOMAIN_VERSIONS[domain]]]))
|
|
14891
14893
|
};
|
|
14892
14894
|
|
|
14893
14895
|
// packages/config-node/src/store.ts
|
package/payload/server/index.cjs
CHANGED
|
@@ -7633,6 +7633,8 @@ var CONFIGURATION_FIELDS = [
|
|
|
7633
7633
|
{ "path": "services.feishu.legacyWebhook.transport", "type": "string", "domain": "services.feishu", "sensitive": false, "remote": true, "apply": "restart", "description": "\u65E7\u901A\u77E5 hook \u53D1\u9001\u65B9\u5F0F", "environmentKeys": ["FEISHU_NOTIFY_TRANSPORT"], "owner": "cli/feishu", "scope": "instance", "storage": "settings.yaml", "default": { "value": null }, "migrationSources": ["FEISHU_NOTIFY_TRANSPORT"] },
|
|
7634
7634
|
{ "path": "agents.codex.binary", "type": "string", "domain": "agents.codex", "sensitive": false, "remote": false, "apply": "restart", "description": "Codex \u53EF\u6267\u884C\u6587\u4EF6", "environmentKeys": ["CODEX_BIN", "RUNWEAVE_CODEX_BIN"], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u672A\u6307\u5B9A\u65F6\u901A\u8FC7 PATH / \u5E73\u53F0\u5B89\u88C5\u4F4D\u7F6E\u67E5\u627E codex\uFF1B\u663E\u5F0F\u914D\u7F6E\u6307\u5411\u540C\u4E00\u53EF\u6267\u884C\u7A0B\u5E8F\u3002" }, "migrationSources": ["CODEX_BIN", "RUNWEAVE_CODEX_BIN"] },
|
|
7635
7635
|
{ "path": "agents.traex.binary", "type": "string", "domain": "agents.traex", "sensitive": false, "remote": false, "apply": "restart", "description": "Trae \u53EF\u6267\u884C\u6587\u4EF6\uFF1B\u591A\u4E2A\u5165\u53E3\u7EDF\u4E00", "environmentKeys": ["TRAEX_BIN", "RUNWEAVE_TRAE_BIN"], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u672A\u6307\u5B9A\u65F6\u901A\u8FC7 PATH / \u5E73\u53F0\u5B89\u88C5\u4F4D\u7F6E\u67E5\u627E traex\uFF1B\u663E\u5F0F\u914D\u7F6E\u6307\u5411\u540C\u4E00\u53EF\u6267\u884C\u7A0B\u5E8F\u3002" }, "migrationSources": ["TRAEX_BIN", "RUNWEAVE_TRAE_BIN"] },
|
|
7636
|
+
{ "path": "agents.claude.binary", "type": "string", "domain": "agents.claude", "sensitive": false, "remote": false, "apply": "restart", "description": "Claude Code \u53EF\u6267\u884C\u6587\u4EF6\uFF1B\u4EC5\u9650\u7A0B\u5E8F\u540D\u6216\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u4E0D\u63A5\u53D7\u547D\u4EE4\u53C2\u6570", "environmentKeys": [], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u4F7F\u7528\u5F53\u524D Backend \u7684 PATH \u67E5\u627E claude\uFF1B\u4E0D\u6539\u53D8\u73B0\u6709\u9ED8\u8BA4 provider\u3002" }, "migrationSources": ["new-field:no-legacy-source"] },
|
|
7637
|
+
{ "path": "agents.claude.configDirectory", "type": "string", "domain": "agents.claude", "sensitive": false, "remote": false, "apply": "restart", "description": "Claude \u539F\u751F\u914D\u7F6E\u76EE\u5F55\u7684\u5916\u90E8\u5F15\u7528\uFF1B\u4F1A\u8BDD\u6839\u4E3A\u5176 projects \u5B50\u76EE\u5F55\uFF0C\u4E0D\u590D\u5236\u51ED\u636E", "environmentKeys": ["CLAUDE_CONFIG_DIR"], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u663E\u5F0F\u5B9E\u4F8B\u76EE\u5F55\u4F18\u5148\uFF0C\u5426\u5219\u5F15\u7528\u5916\u90E8 CLAUDE_CONFIG_DIR \u6216\u64CD\u4F5C\u7CFB\u7EDF\u7528\u6237\u76EE\u5F55\u4E0B .claude\uFF1B\u5FC5\u987B\u4E3A\u7EDD\u5BF9\u8DEF\u5F84\u3002" }, "migrationSources": ["CLAUDE_CONFIG_DIR"] },
|
|
7636
7638
|
{ "path": "agents.companion.binary", "type": "string", "domain": "agents.companion", "sensitive": false, "remote": false, "apply": "restart", "description": "\u4F34\u968F\u7A97\u53E3 Agent \u53EF\u6267\u884C\u6587\u4EF6", "environmentKeys": ["RUNWEAVE_COMPANION_AGENT_EXECUTABLE"], "owner": "electron/companion", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u4F7F\u7528\u5DF2\u5B89\u88C5 Codex App \u81EA\u5E26\u6267\u884C\u5165\u53E3\uFF1B\u663E\u5F0F\u503C\u5FC5\u987B\u53EF\u6267\u884C\u3002" }, "migrationSources": ["RUNWEAVE_COMPANION_AGENT_EXECUTABLE"] },
|
|
7637
7639
|
{ "path": "agents.codex.sessionsDirectory", "type": "string", "domain": "agents.codex", "sensitive": false, "remote": false, "apply": "restart", "description": "\u5916\u90E8 Codex \u4F1A\u8BDD\u76EE\u5F55\u5F15\u7528", "environmentKeys": ["RUNWEAVE_CODEX_SESSIONS_DIR"], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u5916\u90E8\u5DE5\u5177\u62E5\u6709\u7684 CODEX_HOME/sessions \u6216\u64CD\u4F5C\u7CFB\u7EDF\u7528\u6237\u76EE\u5F55\u4E0B .codex/sessions\uFF0C\u4EC5\u5F15\u7528\u3002" }, "migrationSources": ["RUNWEAVE_CODEX_SESSIONS_DIR"] },
|
|
7638
7640
|
{ "path": "agents.traex.sessionsDirectory", "type": "string", "domain": "agents.traex", "sensitive": false, "remote": false, "apply": "restart", "description": "\u5916\u90E8 Trae \u4F1A\u8BDD\u76EE\u5F55\u5F15\u7528", "environmentKeys": ["RUNWEAVE_TRAE_SESSIONS_DIR"], "owner": "backend+app-server", "scope": "instance", "storage": "settings.yaml", "default": { "rule": "\u64CD\u4F5C\u7CFB\u7EDF\u7528\u6237\u76EE\u5F55\u4E0B .trae/cli/sessions\uFF0C\u4EC5\u5F15\u7528\u3002" }, "migrationSources": ["RUNWEAVE_TRAE_SESSIONS_DIR"] },
|
|
@@ -7760,7 +7762,7 @@ var CONFIGURATION_COMPATIBILITY = {
|
|
|
7760
7762
|
};
|
|
7761
7763
|
var APP_SERVER_CONFIGURATION_COMPATIBILITY = {
|
|
7762
7764
|
...CONFIGURATION_COMPATIBILITY,
|
|
7763
|
-
domainVersions: Object.fromEntries(["appServer", "agents.codex", "agents.traex"].map((domain) => [domain, [CONFIGURATION_DOMAIN_VERSIONS[domain]]]))
|
|
7765
|
+
domainVersions: Object.fromEntries(["appServer", "agents.codex", "agents.traex", "agents.claude"].map((domain) => [domain, [CONFIGURATION_DOMAIN_VERSIONS[domain]]]))
|
|
7764
7766
|
};
|
|
7765
7767
|
function supportsConfiguration(target, value) {
|
|
7766
7768
|
if (!target || typeof target !== "object") return false;
|
|
@@ -7963,6 +7965,8 @@ function validateDomains(value, context) {
|
|
|
7963
7965
|
if (["backend.taskSupervision.model", "terminal.defaultShell.command"].includes(key) && typeof entry === "string" && !entry.trim()) issue(key, "CONFIG_FIELD_VALUE_INVALID");
|
|
7964
7966
|
if (key === "terminal.defaultShell.command" && typeof entry === "string" && /[\\/]/.test(entry) && !import_node_path3.default.isAbsolute(entry.trim())) issue(key, "CONFIG_FIELD_VALUE_INVALID");
|
|
7965
7967
|
if (key.startsWith("terminal.defaultShell.") && (typeof entry === "string" ? entry.includes("\0") : Array.isArray(entry) && entry.some((item) => typeof item === "string" && item.includes("\0")))) issue(key, "CONFIG_FIELD_VALUE_INVALID");
|
|
7968
|
+
if (key === "agents.claude.binary" && typeof entry === "string" && (!entry.trim() || entry !== entry.trim() || [...entry].some((character) => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127) || !import_node_path3.default.isAbsolute(entry) && !/^[A-Za-z0-9_][A-Za-z0-9_.+-]*$/.test(entry))) issue(key, "CONFIG_FIELD_VALUE_INVALID");
|
|
7969
|
+
if (key === "agents.claude.configDirectory" && typeof entry === "string" && (!import_node_path3.default.isAbsolute(entry) || [...entry].some((character) => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127))) issue(key, "CONFIG_FIELD_VALUE_INVALID");
|
|
7966
7970
|
if (CONFIGURATION_ENUMS[key] && !CONFIGURATION_ENUMS[key].includes(String(entry))) issue(key, "CONFIG_FIELD_ENUM_INVALID");
|
|
7967
7971
|
if (configurationServiceOrigin(key) && typeof entry === "string") {
|
|
7968
7972
|
try {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{U as a,M as n}from"./index-BBNE8InR.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-CqUM0_7D.js";import{_ as i}from"./index-BBNE8InR.js";import"./chunk-FMBD7UC4-CQR_-5z5.js";import"./chunk-YZCP3GAM-DqZhVlNy.js";import"./chunk-55IACEB6-DDxrCLKB.js";import"./chunk-EDXVE4YY-LwYMVaGh.js";import"./main-BHwOPARZ.js";import"./index-D9-cSGu-.js";import"./record-content-Dn6GE_dv.js";var b={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{b as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-CqUM0_7D.js";import{_ as i}from"./index-BBNE8InR.js";import"./chunk-FMBD7UC4-CQR_-5z5.js";import"./chunk-YZCP3GAM-DqZhVlNy.js";import"./chunk-55IACEB6-DDxrCLKB.js";import"./chunk-EDXVE4YY-LwYMVaGh.js";import"./main-BHwOPARZ.js";import"./index-D9-cSGu-.js";import"./record-content-Dn6GE_dv.js";var b={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{b as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r}from"./graph-GAq0lcsb.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as r,b as e,a,S as s}from"./chunk-OYMX7WX6-DQ0IiFt5.js";import{_ as i}from"./index-BBNE8InR.js";import"./chunk-55IACEB6-DDxrCLKB.js";import"./chunk-EDXVE4YY-LwYMVaGh.js";import"./index-D9-cSGu-.js";import"./main-BHwOPARZ.js";import"./record-content-Dn6GE_dv.js";var n={parser:a,get db(){return new s(2)},renderer:e,styles:r,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as t}from"./index-D9-cSGu-.js";import o from"./connection-ToakGqMm.js";import"./main-BHwOPARZ.js";import"./record-content-Dn6GE_dv.js";function n(){return t.jsx(o,{accountOnly:!0})}export{n as default};
|