termdock 1.4.117 → 1.4.119

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 (72) hide show
  1. package/dist/client/assets/{ModelPreview-W7h96fo0.js → ModelPreview-6FgWt8IX.js} +1 -1
  2. package/dist/client/assets/{abnfDiagram-VRR7QNED-Cu52A1NO.js → abnfDiagram-VRR7QNED-C2QyQJ9F.js} +1 -1
  3. package/dist/client/assets/{arc-DhoedXrI.js → arc-iJl6Z0rl.js} +1 -1
  4. package/dist/client/assets/{architectureDiagram-ZJ3FMSHR-D1HNxzqT.js → architectureDiagram-ZJ3FMSHR-B4CIf1XF.js} +1 -1
  5. package/dist/client/assets/{blockDiagram-677ZJIJ3-K3SQqeJd.js → blockDiagram-677ZJIJ3-DWWPStAh.js} +1 -1
  6. package/dist/client/assets/{c4Diagram-LMCZKHZV-MjfFtzxZ.js → c4Diagram-LMCZKHZV-B5tpwNht.js} +1 -1
  7. package/dist/client/assets/channel-uJbcbxEo.js +1 -0
  8. package/dist/client/assets/{chunk-2Q5K7J3B-Dw03ECAr.js → chunk-2Q5K7J3B-DObcmwOX.js} +1 -1
  9. package/dist/client/assets/{chunk-32BRIVSS-BNUkaz_y.js → chunk-32BRIVSS-Bw06pI_4.js} +1 -1
  10. package/dist/client/assets/{chunk-5VM5RSS4-CqVqdapS.js → chunk-5VM5RSS4-JEgkxONV.js} +1 -1
  11. package/dist/client/assets/{chunk-EX3LRPZG-BdcsV65P.js → chunk-EX3LRPZG-B69eFkKW.js} +1 -1
  12. package/dist/client/assets/{chunk-JWPE2WC7-eaQCNWA9.js → chunk-JWPE2WC7-DYpho4KG.js} +1 -1
  13. package/dist/client/assets/{chunk-MOJQB5TN-DuuCWE4b.js → chunk-MOJQB5TN-BbghBTgh.js} +1 -1
  14. package/dist/client/assets/{chunk-RYQCIY6F-BV4zVsjA.js → chunk-RYQCIY6F-P6Wodw29.js} +1 -1
  15. package/dist/client/assets/{chunk-V7JOEXUC-CgCvJDfW.js → chunk-V7JOEXUC-BG6B5RQU.js} +1 -1
  16. package/dist/client/assets/{chunk-VR4S4FIN-BfPxfJ9d.js → chunk-VR4S4FIN-CmBwOywp.js} +1 -1
  17. package/dist/client/assets/{chunk-XXDRQBXY-C64rSk_7.js → chunk-XXDRQBXY-ejYnTSZf.js} +1 -1
  18. package/dist/client/assets/classDiagram-OUVF2IWQ-By0eEdpV.js +1 -0
  19. package/dist/client/assets/classDiagram-v2-EOCWNBFH-By0eEdpV.js +1 -0
  20. package/dist/client/assets/{cose-bilkent-JH36ORCC-B5xp7AU3.js → cose-bilkent-JH36ORCC-Cxpor7NH.js} +1 -1
  21. package/dist/client/assets/{cynefin-VYW2F7L2-Dw5bR5WD.js → cynefin-VYW2F7L2-BsE69dfO.js} +1 -1
  22. package/dist/client/assets/{cynefinDiagram-TSTJHNR4-CeFANBHD.js → cynefinDiagram-TSTJHNR4-DIQr4U6B.js} +1 -1
  23. package/dist/client/assets/{dagre-VKFMJZFB-CmPKCEuD.js → dagre-VKFMJZFB-sr8aazoR.js} +1 -1
  24. package/dist/client/assets/{diagram-FQU43EPY-Cpjl_IB3.js → diagram-FQU43EPY-xj-gNfbi.js} +1 -1
  25. package/dist/client/assets/{diagram-G47NLZAW-DaX4bvHs.js → diagram-G47NLZAW-CW4ZP_gS.js} +1 -1
  26. package/dist/client/assets/{diagram-NH7WQ7WH-YRncSc2p.js → diagram-NH7WQ7WH-BHNnRWoH.js} +1 -1
  27. package/dist/client/assets/{diagram-OA4YK3LP-DRTRPkJu.js → diagram-OA4YK3LP-BwrIj-Al.js} +1 -1
  28. package/dist/client/assets/{diagram-WEI45ONY-bjvZGWud.js → diagram-WEI45ONY-BUWxEtEa.js} +1 -1
  29. package/dist/client/assets/{ebnfDiagram-CCIWWBDH-wqqFnfp_.js → ebnfDiagram-CCIWWBDH-ByqWwTZ3.js} +1 -1
  30. package/dist/client/assets/{erDiagram-Q63AITRT-C2pUy9lp.js → erDiagram-Q63AITRT-CHzYiy1H.js} +1 -1
  31. package/dist/client/assets/{flowDiagram-23GEKE2U-8d0Ji6fZ.js → flowDiagram-23GEKE2U-CRS9Yclw.js} +1 -1
  32. package/dist/client/assets/{ganttDiagram-NO4QXBWP-CxJ8EsFf.js → ganttDiagram-NO4QXBWP-CJhX6Y5z.js} +1 -1
  33. package/dist/client/assets/{gitGraphDiagram-IHSO6WYX-DakFTpAa.js → gitGraphDiagram-IHSO6WYX-B-iKd6O5.js} +1 -1
  34. package/dist/client/assets/index-CNzYLEOc.js +457 -0
  35. package/dist/client/assets/index-UhZwBu7l.css +1 -0
  36. package/dist/client/assets/{infoDiagram-FWYZ7A6U-vb3vXhZo.js → infoDiagram-FWYZ7A6U-Cwfv2g5L.js} +1 -1
  37. package/dist/client/assets/{ishikawaDiagram-FXEZZL3T-D0YW_NSE.js → ishikawaDiagram-FXEZZL3T-D0wqu-TN.js} +1 -1
  38. package/dist/client/assets/{journeyDiagram-5HDEW3XC-6Vq1kXPA.js → journeyDiagram-5HDEW3XC-DnB32Wtt.js} +1 -1
  39. package/dist/client/assets/{kanban-definition-HUTT4EX6-megxRFUG.js → kanban-definition-HUTT4EX6-CgmqFP3L.js} +1 -1
  40. package/dist/client/assets/{linear-c9CEw62L.js → linear-BsHsyXou.js} +1 -1
  41. package/dist/client/assets/{mermaid.core-CA8slCHp.js → mermaid.core-Cd5etby6.js} +4 -4
  42. package/dist/client/assets/{mindmap-definition-LN4V7U3C-Dt1TLZwX.js → mindmap-definition-LN4V7U3C-C49mJuNO.js} +1 -1
  43. package/dist/client/assets/{pegDiagram-2B236MQR-5ncHGh8h.js → pegDiagram-2B236MQR-DC3hpFeg.js} +1 -1
  44. package/dist/client/assets/{pieDiagram-ENE6RG2P-DyJnLtRW.js → pieDiagram-ENE6RG2P-CuCHUeEN.js} +1 -1
  45. package/dist/client/assets/{quadrantDiagram-ABIIQ3AL-CSBSlSdx.js → quadrantDiagram-ABIIQ3AL-BFbvIq3M.js} +1 -1
  46. package/dist/client/assets/{railroadDiagram-RFXS5EU6-BPuFl7M7.js → railroadDiagram-RFXS5EU6-5UH2vO71.js} +1 -1
  47. package/dist/client/assets/{requirementDiagram-TGXJPOKE-6B48kqoE.js → requirementDiagram-TGXJPOKE-i7w0tnzq.js} +1 -1
  48. package/dist/client/assets/{sankeyDiagram-HTMAVEWB-CItpWYSq.js → sankeyDiagram-HTMAVEWB-CdJHakqP.js} +1 -1
  49. package/dist/client/assets/{sequenceDiagram-DBY2YBRQ-COTh45K2.js → sequenceDiagram-DBY2YBRQ-DXZL-d3R.js} +1 -1
  50. package/dist/client/assets/{sizeCapture-X5ZJPWSS-DdJ_uDyl.js → sizeCapture-X5ZJPWSS-CebVoLf1.js} +1 -1
  51. package/dist/client/assets/{stateDiagram-2N3HPSRC-Cs_fzGQx.js → stateDiagram-2N3HPSRC-C_W_t_jG.js} +1 -1
  52. package/dist/client/assets/stateDiagram-v2-6OUMAXLB-DYldoJoy.js +1 -0
  53. package/dist/client/assets/{swimlanes-5IMT3BWC-ACA0ApQZ.js → swimlanes-5IMT3BWC-Bh92iW-e.js} +2 -2
  54. package/dist/client/assets/swimlanesDiagram-G3AALYLV-BBQoxysd.js +8 -0
  55. package/dist/client/assets/{timeline-definition-FHXFAJF6-DV2RVj3K.js → timeline-definition-FHXFAJF6-B73cyhmT.js} +1 -1
  56. package/dist/client/assets/{vennDiagram-L72KCM5P-CWby1zJt.js → vennDiagram-L72KCM5P-BTcXiYmJ.js} +1 -1
  57. package/dist/client/assets/{wardleyDiagram-EHGQE667-DfydZGpy.js → wardleyDiagram-EHGQE667-D3gKXQ8G.js} +1 -1
  58. package/dist/client/assets/{xychartDiagram-FW5EYKEG-CYrgADfb.js → xychartDiagram-FW5EYKEG-CVt025qS.js} +1 -1
  59. package/dist/client/index.html +2 -2
  60. package/dist/client/sw.js +1 -1
  61. package/dist/server/agent/collaborationPrompt.js +51 -0
  62. package/dist/server/cli.js +89 -2
  63. package/dist/server/routes/terminal.js +118 -19
  64. package/package.json +1 -1
  65. package/runtime-manifest.json +2 -2
  66. package/dist/client/assets/channel-Dh-rQuvK.js +0 -1
  67. package/dist/client/assets/classDiagram-OUVF2IWQ-aSOSNXz9.js +0 -1
  68. package/dist/client/assets/classDiagram-v2-EOCWNBFH-aSOSNXz9.js +0 -1
  69. package/dist/client/assets/index-CpRY32uJ.js +0 -457
  70. package/dist/client/assets/index-CsZ9UjAY.css +0 -1
  71. package/dist/client/assets/stateDiagram-v2-6OUMAXLB-rftSyqMa.js +0 -1
  72. package/dist/client/assets/swimlanesDiagram-G3AALYLV-7TuR3Wm7.js +0 -8
@@ -26,6 +26,7 @@ import { AgentResumeHistoryStore } from '../agent/resumeHistory.js';
26
26
  import { AutomationStore, normalizeAutomationSchedule } from '../agent/automationStore.js';
27
27
  import { buildBracketedSubmitBytes, canDeliverPromptToAgent } from '../agent/promptDelivery.js';
28
28
  import { CollaborationStore } from '../agent/collaborationStore.js';
29
+ import { formatCollaborationDelivery } from '../agent/collaborationPrompt.js';
29
30
  import { SessionSearchStore } from '../agent/sessionSearchStore.js';
30
31
  import { listAllHookAgents, refreshStaleHooksAtLaunch, installHooksForSlug, uninstallHooksForSlug, } from '../agent/installers.js';
31
32
  import { loadPlugins, savePlugin, removePlugin, readPluginIcon, validateManifest, } from '../agent/plugins.js';
@@ -1303,9 +1304,6 @@ async function runAgentAutomation(automation, req) {
1303
1304
  throw error;
1304
1305
  }
1305
1306
  }
1306
- function collaborationMessageLabel(kind) {
1307
- return { message: '消息', ask: '问题', reply: '回复', task: '任务', handoff: '交接', done: '完成' }[kind];
1308
- }
1309
1307
  function resolveFrontendSessionId(input) {
1310
1308
  const sessionId = typeof input.sessionId === 'string' ? input.sessionId.trim() : '';
1311
1309
  if (sessionId && globalSessionState.sessions.some((record) => record.sessionId === sessionId))
@@ -1319,17 +1317,6 @@ function resolveFrontendSessionId(input) {
1319
1317
  const tmuxSessionName = typeof input.tmuxSessionName === 'string' ? input.tmuxSessionName.trim() : '';
1320
1318
  return globalSessionState.sessions.find((record) => record.tmuxSessionName === tmuxSessionName)?.sessionId ?? null;
1321
1319
  }
1322
- function formatCollaborationDelivery(targetSessionId, messages) {
1323
- const targetGroups = new Map(collaborationStore.groupsForSession(targetSessionId).map((group) => [group.id, group]));
1324
- const lines = messages.map((message) => {
1325
- const from = message.fromSessionId
1326
- ? globalSessionState.sessions.find((record) => record.sessionId === message.fromSessionId)?.name ?? message.fromSessionId
1327
- : '用户';
1328
- const group = targetGroups.get(message.groupId)?.name ?? '协作组';
1329
- return `- [${collaborationMessageLabel(message.kind)} #${message.id}] ${from} → ${group}: ${message.content}`;
1330
- });
1331
- return `[Termdock 协作收件箱]\n${lines.join('\n')}\n请处理这些消息。需要回复时运行:td collab reply <消息ID> "回复内容";查看成员和未读消息运行:td collab status / td collab inbox。`;
1332
- }
1333
1320
  function tryDeliverCollaborationInbox(frontendSessionId) {
1334
1321
  const record = globalSessionState.sessions.find((candidate) => candidate.sessionId === frontendSessionId);
1335
1322
  const session = record?.backendSessionId ? terminalSessions.get(record.backendSessionId) : null;
@@ -1339,10 +1326,60 @@ function tryDeliverCollaborationInbox(frontendSessionId) {
1339
1326
  if (!session || !canDeliverPromptToAgent(session) || pending.length === 0) {
1340
1327
  return { delivered: [], pending: pending.length };
1341
1328
  }
1342
- session.ptyProcess.write(buildBracketedSubmitBytes(formatCollaborationDelivery(frontendSessionId, pending)));
1329
+ const prompt = formatCollaborationDelivery({
1330
+ targetSessionId: frontendSessionId,
1331
+ messages: pending,
1332
+ groups: collaborationStore.groupsForSession(frontendSessionId),
1333
+ sessions: globalSessionState.sessions.map((candidate) => {
1334
+ const snapshot = orchestrationSessionSnapshot(candidate);
1335
+ return { sessionId: snapshot.sessionId, name: snapshot.name, status: snapshot.status };
1336
+ }),
1337
+ });
1338
+ session.ptyProcess.write(buildBracketedSubmitBytes(prompt));
1343
1339
  collaborationStore.markDelivered(pending.map((message) => message.id));
1344
1340
  return { delivered: pending.map((message) => message.id), pending: 0 };
1345
1341
  }
1342
+ async function spawnCollaborationAgentSession(req, group, sourceSessionId, input) {
1343
+ const agentSlug = typeof input.agentSlug === 'string' ? input.agentSlug.trim().toLowerCase() : '';
1344
+ const launchers = await listDetectedAgentLaunchers();
1345
+ const launcher = launchers.find((candidate) => candidate.slug === agentSlug);
1346
+ if (!launcher)
1347
+ throw new HttpStatusError(400, '所选 Agent 当前不可用', 'COLLAB_AGENT_UNAVAILABLE');
1348
+ const sourceRecord = sourceSessionId
1349
+ ? globalSessionState.sessions.find((candidate) => candidate.sessionId === sourceSessionId)
1350
+ : null;
1351
+ const fallbackRecord = sourceRecord
1352
+ ?? globalSessionState.sessions.find((candidate) => group.sessionIds.includes(candidate.sessionId))
1353
+ ?? null;
1354
+ const requestedName = typeof input.name === 'string' ? input.name.trim().slice(0, 120) : '';
1355
+ const requestedCwd = typeof input.cwd === 'string' ? input.cwd.trim() : '';
1356
+ const opened = await openInventorySession(req, {
1357
+ name: requestedName || `${launcher.displayName} · ${group.name}`,
1358
+ customName: true,
1359
+ mode: 'shell',
1360
+ cwd: requestedCwd || fallbackRecord?.cwd || undefined,
1361
+ });
1362
+ const frontendSessionId = opened.session.sessionId;
1363
+ const backend = terminalSessions.get(opened.terminalSession.sessionId);
1364
+ if (!backend)
1365
+ throw new HttpStatusError(500, 'Agent Session 创建失败', 'COLLAB_AGENT_SESSION_FAILED');
1366
+ const updatedGroup = collaborationStore.save({
1367
+ id: group.id,
1368
+ name: group.name,
1369
+ sessionIds: [...group.sessionIds, frontendSessionId],
1370
+ });
1371
+ writeTerminalInput(backend, `${launcher.command}\r`);
1372
+ const requestedTask = typeof input.task === 'string' ? input.task.trim().slice(0, 20_000) : '';
1373
+ collaborationStore.send({
1374
+ groupId: updatedGroup.id,
1375
+ fromSessionId: sourceSessionId,
1376
+ toSessionIds: [frontendSessionId],
1377
+ kind: 'handoff',
1378
+ content: requestedTask || `你已创建并加入协作组“${updatedGroup.name}”。请运行 td collab status 查看成员,并准备参与协作。`,
1379
+ });
1380
+ setTimeout(() => tryDeliverCollaborationInbox(frontendSessionId), 300).unref?.();
1381
+ return { group: updatedGroup, session: orchestrationSessionSnapshot(globalSessionState.sessions.find((candidate) => candidate.sessionId === frontendSessionId)) };
1382
+ }
1346
1383
  function getTmuxBinary() {
1347
1384
  if (process.env.TMUX_BIN)
1348
1385
  return process.env.TMUX_BIN;
@@ -5108,6 +5145,19 @@ router.post('/operations/collaboration-groups', (req, res) => {
5108
5145
  });
5109
5146
  res.json({ group });
5110
5147
  });
5148
+ router.post('/operations/collaboration-groups/:groupId/spawn', async (req, res) => {
5149
+ const group = collaborationStore.getGroup(req.params.groupId);
5150
+ if (!group)
5151
+ return res.status(404).json({ error: '协作组不存在' });
5152
+ try {
5153
+ res.json(await spawnCollaborationAgentSession(req, group, null, req.body ?? {}));
5154
+ }
5155
+ catch (error) {
5156
+ if (error instanceof HttpStatusError)
5157
+ return res.status(error.statusCode).json({ error: error.message, code: error.code });
5158
+ res.status(400).json({ error: getErrorMessage(error) });
5159
+ }
5160
+ });
5111
5161
  router.delete('/operations/collaboration-groups/:groupId', (req, res) => {
5112
5162
  if (!collaborationStore.remove(req.params.groupId))
5113
5163
  return res.status(404).json({ error: '协作组不存在' });
@@ -5152,14 +5202,60 @@ router.post('/operations/collaboration-groups/:groupId/messages', (req, res) =>
5152
5202
  res.status(400).json({ error: getErrorMessage(error) });
5153
5203
  }
5154
5204
  });
5155
- router.get('/operations/orchestration/peers', (req, res) => {
5205
+ router.get('/operations/orchestration/peers', async (req, res) => {
5156
5206
  const sourceSessionId = resolveFrontendSessionId(req.query);
5157
5207
  const source = globalSessionState.sessions.find((candidate) => candidate.sessionId === sourceSessionId);
5158
5208
  if (!source)
5159
5209
  return res.status(404).json({ error: '会话不存在' });
5160
5210
  const groups = collaborationStore.groupsForSession(source.sessionId);
5161
5211
  const peerIds = new Set(groups.flatMap((group) => group.sessionIds).filter((id) => id !== source.sessionId));
5162
- res.json({ source: orchestrationSessionSnapshot(source), groups, peers: globalSessionState.sessions.filter((record) => peerIds.has(record.sessionId)).map(orchestrationSessionSnapshot) });
5212
+ res.json({
5213
+ source: orchestrationSessionSnapshot(source),
5214
+ groups,
5215
+ peers: globalSessionState.sessions.filter((record) => peerIds.has(record.sessionId)).map(orchestrationSessionSnapshot),
5216
+ sessions: globalSessionState.sessions.map(orchestrationSessionSnapshot),
5217
+ agents: await listDetectedAgentLaunchers(),
5218
+ });
5219
+ });
5220
+ router.post('/operations/orchestration/members', (req, res) => {
5221
+ const sourceSessionId = resolveFrontendSessionId(req.body ?? {});
5222
+ const groupId = typeof req.body?.groupId === 'string' ? req.body.groupId.trim() : '';
5223
+ const targetSessionId = typeof req.body?.targetSessionId === 'string' ? req.body.targetSessionId.trim() : '';
5224
+ const action = req.body?.action === 'remove' ? 'remove' : req.body?.action === 'add' ? 'add' : null;
5225
+ const group = collaborationStore.getGroup(groupId);
5226
+ if (!sourceSessionId)
5227
+ return res.status(400).json({ error: '无法识别当前会话;请从 Termdock 会话内运行 td collab' });
5228
+ if (!group || !group.sessionIds.includes(sourceSessionId))
5229
+ return res.status(403).json({ error: '当前会话不在该协作组中' });
5230
+ if (!action)
5231
+ return res.status(400).json({ error: '成员操作无效' });
5232
+ if (!globalSessionState.sessions.some((candidate) => candidate.sessionId === targetSessionId)) {
5233
+ return res.status(404).json({ error: '目标会话不存在' });
5234
+ }
5235
+ const nextSessionIds = action === 'add'
5236
+ ? Array.from(new Set([...group.sessionIds, targetSessionId]))
5237
+ : group.sessionIds.filter((sessionId) => sessionId !== targetSessionId);
5238
+ if (nextSessionIds.length < 2)
5239
+ return res.status(400).json({ error: '协作组至少需要两个会话' });
5240
+ const updated = collaborationStore.save({ id: group.id, name: group.name, sessionIds: nextSessionIds });
5241
+ res.json({ ok: true, group: updated });
5242
+ });
5243
+ router.post('/operations/orchestration/spawn', async (req, res) => {
5244
+ const sourceSessionId = resolveFrontendSessionId(req.body ?? {});
5245
+ const groupId = typeof req.body?.groupId === 'string' ? req.body.groupId.trim() : '';
5246
+ const group = collaborationStore.getGroup(groupId);
5247
+ if (!sourceSessionId)
5248
+ return res.status(400).json({ error: '无法识别当前会话;请从 Termdock 会话内运行 td collab' });
5249
+ if (!group || !group.sessionIds.includes(sourceSessionId))
5250
+ return res.status(403).json({ error: '当前会话不在该协作组中' });
5251
+ try {
5252
+ res.json({ ok: true, ...await spawnCollaborationAgentSession(req, group, sourceSessionId, req.body ?? {}) });
5253
+ }
5254
+ catch (error) {
5255
+ if (error instanceof HttpStatusError)
5256
+ return res.status(error.statusCode).json({ error: error.message, code: error.code });
5257
+ res.status(400).json({ error: getErrorMessage(error) });
5258
+ }
5163
5259
  });
5164
5260
  router.post('/operations/orchestration/send', (req, res) => {
5165
5261
  const sourceSessionId = resolveFrontendSessionId(req.body ?? {});
@@ -5626,7 +5722,7 @@ router.put('/context-draft', (req, res) => {
5626
5722
  router.get('/agent-hooks', async (_req, res) => {
5627
5723
  res.json({ agents: await listAllHookAgents() });
5628
5724
  });
5629
- router.get('/agent-launchers', async (_req, res) => {
5725
+ async function listDetectedAgentLaunchers() {
5630
5726
  const pathEntries = buildAugmentedPath().split(path.delimiter).filter(Boolean);
5631
5727
  const executableExtensions = process.platform === 'win32'
5632
5728
  ? (process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM').split(';')
@@ -5665,7 +5761,10 @@ router.get('/agent-launchers', async (_req, res) => {
5665
5761
  });
5666
5762
  }
5667
5763
  }
5668
- res.json({ agents: detected });
5764
+ return detected;
5765
+ }
5766
+ router.get('/agent-launchers', async (_req, res) => {
5767
+ res.json({ agents: await listDetectedAgentLaunchers() });
5669
5768
  });
5670
5769
  router.get('/directory-suggestions', async (req, res) => {
5671
5770
  const rawQuery = typeof req.query.q === 'string' ? req.query.q.trim() : '';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termdock",
3
- "version": "1.4.117",
3
+ "version": "1.4.119",
4
4
  "description": "A complete web-based terminal application with modern UI",
5
5
  "type": "module",
6
6
  "main": ".desktop-dist/main.js",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "packageName": "termdock",
4
- "version": "1.4.117",
4
+ "version": "1.4.119",
5
5
  "runtimeProtocolVersion": 1,
6
6
  "minimumDesktopVersion": "1.4.46",
7
7
  "nodeMajor": 22,
8
8
  "dependencyHash": "sha256-3I9X7zF4J4BUYOvxi3lIuWSKfDy6S6GD61w8Ay95Ypw=",
9
- "serverBundleHash": "sha256-fIJAGb5/As0/Hnw2oLYaErYncFbAjzJ9FbKR07ntTds=",
9
+ "serverBundleHash": "sha256-4DiQ+SQaI4CdpeOrKGu2FVgmff+N4IrL14Dwx+uhwXA=",
10
10
  "entrypoint": "dist/server/cli.js",
11
11
  "clientEntrypoint": "dist/client/index.html"
12
12
  }
@@ -1 +0,0 @@
1
- import{U as a,C as n}from"./mermaid.core-CA8slCHp.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,a as s,c as t,C as e}from"./chunk-V7JOEXUC-CgCvJDfW.js";import{b as i}from"./mermaid.core-CA8slCHp.js";import"./chunk-5VM5RSS4-CqVqdapS.js";import"./chunk-XXDRQBXY-C64rSk_7.js";import"./chunk-VR4S4FIN-BfPxfJ9d.js";import"./chunk-32BRIVSS-BNUkaz_y.js";import"./purify.es-CC4Brkr_.js";import"./index-CpRY32uJ.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";var g={parser:t,get db(){return new e},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{g as diagram};
@@ -1 +0,0 @@
1
- import{s as a,a as s,c as t,C as e}from"./chunk-V7JOEXUC-CgCvJDfW.js";import{b as i}from"./mermaid.core-CA8slCHp.js";import"./chunk-5VM5RSS4-CqVqdapS.js";import"./chunk-XXDRQBXY-C64rSk_7.js";import"./chunk-VR4S4FIN-BfPxfJ9d.js";import"./chunk-32BRIVSS-BNUkaz_y.js";import"./purify.es-CC4Brkr_.js";import"./index-CpRY32uJ.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";var g={parser:t,get db(){return new e},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{g as diagram};