chainlesschain 0.166.0 → 0.166.1

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 (159) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/assets/{AIOps-D5_pwQ7M.js → AIOps-DwdhBUBc.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-DgoYO32D.js → ActionButton-Dd1lBEeo.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-BIpoZ4QH.js → Analytics-DuGuuI36.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-BJ3XrCEe.js → AppLayout-CvHpSs3M.js} +5 -5
  6. package/src/assets/web-panel/assets/{Artifacts-DUFs_izZ.js → Artifacts-BU9F3wJh.js} +1 -1
  7. package/src/assets/web-panel/assets/{Audit-BZdPwwfL.js → Audit-DK_n_WFm.js} +1 -1
  8. package/src/assets/web-panel/assets/{BackgroundAgents-DK9Fn-8B.js → BackgroundAgents-qKsxF5tv.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-Bd6bOhV_.js → Backup-JS58pSyV.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-CRnWlXrd.js → BaseInput-gGl6Ray1.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-D1G_yEl6.js → Chat-B2FZNq3U.js} +5 -5
  12. package/src/assets/web-panel/assets/{ChatBubbleRenderer-DDAlEtm-.js → ChatBubbleRenderer-CZS_bLAr.js} +1 -1
  13. package/src/assets/web-panel/assets/{Checkbox-CP35SH7R.js → Checkbox-tsI0TE22.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-DugeL4pj.js → Codegen-D5kqhfAr.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-DPuJsvKg.js → Col-DdN1TrqS.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-CZqNjNNp.js → Community-DgbEeh6V.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-eeyIPEAb.js → Compact-FIm-fRB_.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-MGzTw87k.js → Compliance-B-N0pudf.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-D3goVIA5.js → Cowork-CuMafBpi.js} +2 -2
  20. package/src/assets/web-panel/assets/{Cron-9HA8hLLG.js → Cron-BTwzNFHR.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-DCSOX3l6.js → Crosschain-DRoYbLOd.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-ji3lN5Bc.js → DID-CPhnNkz_.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-DlZvF1E5.js → Dashboard-DJQftix2.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-2FyZcow9.js → Dropdown-PSAH1Kfy.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-qH2bSpSY.js → EmailListRenderer-PVRqeMiZ.js} +1 -1
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-Bfx47wZj.js → FamilyGuardDashboard-CYtnjqjl.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-DhGcZbIv.js → Federation-_-53kTDz.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-BMgi9_YQ.js → FormItemContext-DTQ4qGuE.js} +1 -1
  29. package/src/assets/web-panel/assets/{GenericCardRenderer-DugMac-4.js → GenericCardRenderer-ON_NfX8k.js} +1 -1
  30. package/src/assets/web-panel/assets/{Git-D943BpH-.js → Git-DUc3w_Bf.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-DZ66a8Aa.js → Governance-CktsJ2ku.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-B00Mp2tN.js → Inference-4wUHQvju.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-BdwXXO2Q.js → KnowledgeGraph-Dq4saPnZ.js} +1 -1
  34. package/src/assets/web-panel/assets/Logs-Btb50m5s.js +2 -0
  35. package/src/assets/web-panel/assets/MarkdownRenderer-Cre8P8HG.js +1 -0
  36. package/src/assets/web-panel/assets/{Marketplace-CxeHRsnO.js → Marketplace-D3rSncxx.js} +1 -1
  37. package/src/assets/web-panel/assets/{McpTools-BOieTxZ4.js → McpTools-Bc6Mori_.js} +3 -3
  38. package/src/assets/web-panel/assets/{Memory-BQD26CM3.js → Memory-C-ottUdN.js} +2 -2
  39. package/src/assets/web-panel/assets/{MobileBridge-CPJ8ZlvR.js → MobileBridge-C0DITBmP.js} +1 -1
  40. package/src/assets/web-panel/assets/{MobileProjects-D7qRVu0y.js → MobileProjects-O6cr0Nal.js} +1 -1
  41. package/src/assets/web-panel/assets/{Mtc-BOyndGuk.js → Mtc-B_MXKXvY.js} +2 -2
  42. package/src/assets/web-panel/assets/{MtcAudit-CXQ_8ZoR.js → MtcAudit-BDkUqWIT.js} +5 -5
  43. package/src/assets/web-panel/assets/{Multisig-32Oh9KbH.js → Multisig-BaxNWm8c.js} +3 -3
  44. package/src/assets/web-panel/assets/{NLProgramming-CFAd00CX.js → NLProgramming-UD2GndZc.js} +1 -1
  45. package/src/assets/web-panel/assets/{Notes-BBCY_qJA.js → Notes-pU7wtMwB.js} +3 -3
  46. package/src/assets/web-panel/assets/{NotificationSettings-uaQ0PdmW.js → NotificationSettings-BIs6ULr3.js} +1 -1
  47. package/src/assets/web-panel/assets/{OrderTableRenderer-kpBxJ-SG.js → OrderTableRenderer-0NuumnfG.js} +1 -1
  48. package/src/assets/web-panel/assets/{Organization-CmFn7Oeo.js → Organization-C9o-n2lq.js} +4 -4
  49. package/src/assets/web-panel/assets/{Overflow-R_avat3a.js → Overflow-CEvMXxCS.js} +1 -1
  50. package/src/assets/web-panel/assets/{P2P-BIhLFmkY.js → P2P-C3gQMTK3.js} +2 -2
  51. package/src/assets/web-panel/assets/{PdhVaultBrowser-DTJjk-_i.js → PdhVaultBrowser-D1LVpBOr.js} +3 -3
  52. package/src/assets/web-panel/assets/{Permissions-CkzYv8Yb.js → Permissions-Dj5nIi0Y.js} +3 -3
  53. package/src/assets/web-panel/assets/{PersonalDataHub--0QvN2Nz.js → PersonalDataHub-uiLYuFcu.js} +6 -6
  54. package/src/assets/web-panel/assets/{Pipeline-Bfw5gQCH.js → Pipeline-CIrmF89x.js} +1 -1
  55. package/src/assets/web-panel/assets/{Privacy-DicjKfax.js → Privacy-B3K1CUBa.js} +1 -1
  56. package/src/assets/web-panel/assets/{ProjectInit-DUl_ykBp.js → ProjectInit-C_wCZ0zW.js} +2 -2
  57. package/src/assets/web-panel/assets/{ProjectSettings-CPYDvN8a.js → ProjectSettings-iCitfuNJ.js} +2 -2
  58. package/src/assets/web-panel/assets/{Projects-DnZ9_fAr.js → Projects-BwimeXkW.js} +1 -1
  59. package/src/assets/web-panel/assets/{Providers-BX1jP31w.js → Providers-BLpepgr6.js} +1 -1
  60. package/src/assets/web-panel/assets/{QrScannerModal-COab5qUl.js → QrScannerModal-DPy8tjXV.js} +1 -1
  61. package/src/assets/web-panel/assets/{QuickAsk-CdKQ_JZ0.js → QuickAsk-CRq8VhID.js} +1 -1
  62. package/src/assets/web-panel/assets/{Recommend-BPFHg8pK.js → Recommend-CirlWIiK.js} +1 -1
  63. package/src/assets/web-panel/assets/{RemoteSession-CqrfTJvO.js → RemoteSession-nlnJlKXO.js} +3 -3
  64. package/src/assets/web-panel/assets/{Reputation-DM-l8Pb3.js → Reputation-B5aaxee5.js} +1 -1
  65. package/src/assets/web-panel/assets/{Row-CKGBTeCw.js → Row-lzsTQZlq.js} +1 -1
  66. package/src/assets/web-panel/assets/{RssFeed-Wb0YHIkc.js → RssFeed-C41AzjgC.js} +3 -3
  67. package/src/assets/web-panel/assets/{Search-DiBjxKv-.js → Search-1Hxx3TZ3.js} +1 -1
  68. package/src/assets/web-panel/assets/{Security-BAVEmbWP.js → Security-8VqwRxAp.js} +4 -4
  69. package/src/assets/web-panel/assets/{Services-A_a3TIRn.js → Services-DCm0HHAD.js} +2 -2
  70. package/src/assets/web-panel/assets/{Skeleton-CloHJ-I7.js → Skeleton-D6w5gpmW.js} +1 -1
  71. package/src/assets/web-panel/assets/{Skills-CkvV5hKa.js → Skills-Bw_pUTJB.js} +1 -1
  72. package/src/assets/web-panel/assets/{Sla-BYozxxsV.js → Sla-BkMj8Dxu.js} +1 -1
  73. package/src/assets/web-panel/assets/{SpeechSettings-CWianiZF.js → SpeechSettings-BOmLqW44.js} +1 -1
  74. package/src/assets/web-panel/assets/{SyncSettings-BR4G75do.js → SyncSettings-2xKSqFDO.js} +2 -2
  75. package/src/assets/web-panel/assets/{Tasks-D6gyUVrM.js → Tasks-BPAnzVau.js} +1 -1
  76. package/src/assets/web-panel/assets/{Templates-DbfYIRzT.js → Templates-CcOGWgZz.js} +1 -1
  77. package/src/assets/web-panel/assets/{Tenant-BHutvukT.js → Tenant-CAyzzQWN.js} +1 -1
  78. package/src/assets/web-panel/assets/{Terminal-CYEiy2wJ.js → Terminal-Daagerkm.js} +2 -2
  79. package/src/assets/web-panel/assets/{TimelineRenderer-D9s1AxfE.js → TimelineRenderer-1jGbMj7I.js} +1 -1
  80. package/src/assets/web-panel/assets/{Tokens-ij9vxnoy.js → Tokens-CYQ-FQju.js} +1 -1
  81. package/src/assets/web-panel/assets/{Trigger-Dq_DCVeQ.js → Trigger-C70zRwuR.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trust-Bs6wdfoH.js → Trust-CeqXfiX_.js} +1 -1
  83. package/src/assets/web-panel/assets/{UkeySign-CLazyr5t.js → UkeySign-D0j6m1bU.js} +1 -1
  84. package/src/assets/web-panel/assets/{VideoEditing-viWotIHA.js → VideoEditing-DFHpM7Yd.js} +1 -1
  85. package/src/assets/web-panel/assets/{Wallet-DlZ-A78d.js → Wallet-BVC2J0Yx.js} +4 -4
  86. package/src/assets/web-panel/assets/{WebAuthn-DSmOND3Y.js → WebAuthn-BceIN2Gn.js} +3 -3
  87. package/src/assets/web-panel/assets/{WorkflowEditor-BempLOJi.js → WorkflowEditor-Bgeb-i-S.js} +1 -1
  88. package/src/assets/web-panel/assets/{chat-CyJzf4JI.js → chat-BmMBqgvz.js} +1 -1
  89. package/src/assets/web-panel/assets/{colors-C62q7WrL.js → colors-sjRzwnyw.js} +1 -1
  90. package/src/assets/web-panel/assets/{compact-item-7dYM1KW3.js → compact-item-DNt6m2bM.js} +1 -1
  91. package/src/assets/web-panel/assets/{createContext-CYTy7z2Q.js → createContext-DELaLit3.js} +1 -1
  92. package/src/assets/web-panel/assets/devWarning-Ct8o3bu_.js +1 -0
  93. package/src/assets/web-panel/assets/{hasIn-DHoclUqm.js → hasIn-dfwk9O8x.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-BMxvWauP.js → index-1w7dha_a.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-DNLD3nZY.js → index-6bjBUhoH.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-DAYanuSk.js → index-B0wkOqE9.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-Dyq9tK5u.js → index-B4Z4HZcf.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-CjeViaU-.js → index-B7qiZc2Z.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-Bzz0aJ86.js → index-BLbvXsxf.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-lHfNxiB5.js → index-BMnvNNEd.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DA-_807C.js → index-BSB9Gin8.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-C5YWYlW9.js → index-BXJ68ObJ.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-DKdv8cju.js → index-Bs-mWOWt.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-QXtrdrub.js → index-BvIQ9sZa.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-2C8Xx2UO.js → index-BzddvOOb.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-CZRBvN6i.js → index-C2Sxf7yC.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DJzZaPlb.js → index-CAIn5cS9.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-DYKwGrAn.js → index-CLSqyAcE.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DkczsbiP.js → index-Cbu3-zFd.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-BghdJ87W.js → index-Clrqtycd.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DOFAwpUK.js → index-CpVt6M_8.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DHgSRimK.js → index-CtfYPnsY.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-3pI7AfmD.js → index-CujMHspH.js} +1 -1
  114. package/src/assets/web-panel/assets/index-D685kO6L.js +1 -0
  115. package/src/assets/web-panel/assets/{index-BMRmxFU_.js → index-DC6FlHlP.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DghnbMlY.js → index-DFOYbzg-.js} +1 -1
  117. package/src/assets/web-panel/assets/index-DTlIRMqX.js +1 -0
  118. package/src/assets/web-panel/assets/{index-DvEtHpLc.js → index-DV8q_Hki.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CnEZ4ZHj.js → index-DX3wwu3G.js} +3 -3
  120. package/src/assets/web-panel/assets/{index-CW86F2Zw.js → index-DY2G1Th2.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-D6BC4mmz.js → index-DlYL8VP8.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-C2efftJb.js → index-DnQOc5wo.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-94ktimZG.js → index-Du62m6pG.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-4gWv-Ubg.js → index-LMfsEdLk.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-LK1MZoBj.js → index-OC3qYV4-.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-XrsAHHQN.js → index-Rt-fym5b.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-NuNCstRO.js → index-WpEDoyTv.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DhJjifZe.js → index-aj9ObF2R.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-DK84lAS0.js → index-dAF9qRVa.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-CVTnruDt.js → index-dpDeFZNt.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-9uR7rc9a.js → index-fNwu9CU_.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-ZXYp76IB.js → index-vCQ3l6DX.js} +1 -1
  133. package/src/assets/web-panel/assets/{initDefaultProps-CwCl5sFQ.js → initDefaultProps-DUt9Xj8y.js} +1 -1
  134. package/src/assets/web-panel/assets/{motion-BFJFy70N.js → motion-DdiFPnv7.js} +1 -1
  135. package/src/assets/web-panel/assets/{move-ByrtVGq8.js → move-BJ2VH7Y2.js} +1 -1
  136. package/src/assets/web-panel/assets/{mtc-parser-BFiH1mT3.js → mtc-parser-BCnX6oOJ.js} +1 -1
  137. package/src/assets/web-panel/assets/{omit-bdvgpivj.js → omit-CyHxlDLV.js} +1 -1
  138. package/src/assets/web-panel/assets/{pickAttrs-BlfuuE3s.js → pickAttrs-BJiGW3bY.js} +1 -1
  139. package/src/assets/web-panel/assets/{placementArrow-t2SC3DMy.js → placementArrow-DhJ9Rhx8.js} +1 -1
  140. package/src/assets/web-panel/assets/{responsiveObserve-CoEXv2Li.js → responsiveObserve-C6zpL9bC.js} +1 -1
  141. package/src/assets/web-panel/assets/{slide-BfXCf0Fu.js → slide-DCbMFRF-.js} +1 -1
  142. package/src/assets/web-panel/assets/{statusUtils-DNsdyOuS.js → statusUtils-CNtVLsIq.js} +1 -1
  143. package/src/assets/web-panel/assets/{styleChecker-9aHukmoG.js → styleChecker-Z078OtUc.js} +1 -1
  144. package/src/assets/web-panel/assets/{useFlexGapSupport-dTkPxzHN.js → useFlexGapSupport-w4RVmcGs.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFs-DINwfItP.js → useFs-D4Xw1XRt.js} +1 -1
  146. package/src/assets/web-panel/assets/{usePersonalDataHub-Bj_RriBV.js → usePersonalDataHub-Bnbd1PgY.js} +1 -1
  147. package/src/assets/web-panel/assets/{vnode-BzRAZrTc.js → vnode-DSOQxMFN.js} +1 -1
  148. package/src/assets/web-panel/assets/{zoom-CamPjkeK.js → zoom-DNPE1Wca.js} +1 -1
  149. package/src/assets/web-panel/index.html +1 -1
  150. package/src/data/changelog.json +13 -0
  151. package/src/generated/cc-agent-protocol.schema.json +49 -0
  152. package/src/lib/graph-kernel/compiler.js +548 -16
  153. package/src/lib/graph-kernel/runtime.js +1158 -30
  154. package/src/lib/graph-kernel/trace-reducer.js +101 -7
  155. package/src/assets/web-panel/assets/Logs-_MVXyYWc.js +0 -2
  156. package/src/assets/web-panel/assets/MarkdownRenderer-hOTeNyi7.js +0 -1
  157. package/src/assets/web-panel/assets/devWarning-BdTg_AMF.js +0 -1
  158. package/src/assets/web-panel/assets/index-B6WvFV4N.js +0 -1
  159. package/src/assets/web-panel/assets/index-BKgfptzA.js +0 -1
@@ -25,20 +25,41 @@ function durationMs(attempt) {
25
25
  }
26
26
 
27
27
  function criticalPath(definition, attempts) {
28
- const nodes = new Map(definition.nodes.map((node) => [node.id, node]));
28
+ const compensationNodeIds = new Set(
29
+ [
30
+ ...definition.nodes.map((node) => node.compensationNodeId),
31
+ ...definition.edges
32
+ .filter((edge) => edge.kind === "compensation")
33
+ .map((edge) => edge.to),
34
+ ].filter((nodeId) => typeof nodeId === "string"),
35
+ );
36
+ const forwardNodes = definition.nodes.filter(
37
+ (node) => !compensationNodeIds.has(node.id),
38
+ );
39
+ const nodes = new Map(forwardNodes.map((node) => [node.id, node]));
29
40
  const duration = new Map(
30
- definition.nodes.map((node) => [
41
+ forwardNodes.map((node) => [
31
42
  node.id,
32
- Math.max(
33
- 0,
43
+ [
34
44
  ...attempts
35
45
  .filter((attempt) => attempt.nodeId === node.id)
36
- .map(durationMs),
37
- ),
46
+ .reduce((iterations, attempt) => {
47
+ const key = JSON.stringify(attempt.iterationPath || []);
48
+ iterations.set(
49
+ key,
50
+ Math.max(iterations.get(key) || 0, durationMs(attempt)),
51
+ );
52
+ return iterations;
53
+ }, new Map())
54
+ .values(),
55
+ ].reduce((total, value) => total + value, 0),
38
56
  ]),
39
57
  );
40
58
  const dependencies = new Map(
41
- definition.nodes.map((node) => [node.id, new Set(node.dependsOn)]),
59
+ forwardNodes.map((node) => [
60
+ node.id,
61
+ new Set(node.dependsOn.filter((nodeId) => nodes.has(nodeId))),
62
+ ]),
42
63
  );
43
64
  for (const edge of definition.edges) {
44
65
  if (
@@ -137,7 +158,34 @@ export function reduceGraphTrace(
137
158
  const handoffs = [...mapFromEntries(state.handoffs).values()];
138
159
  const humanTasks = [...mapFromEntries(state.humanTasks).values()];
139
160
  const agents = [...mapFromEntries(state.agents).values()];
161
+ const loopStates = [...mapFromEntries(state.loopStates).values()].sort(
162
+ (left, right) => left.regionId.localeCompare(right.regionId),
163
+ );
164
+ const iterationFrames = [
165
+ ...mapFromEntries(state.iterationFrames).values(),
166
+ ].sort(
167
+ (left, right) =>
168
+ left.regionId.localeCompare(right.regionId) ||
169
+ left.iterationPath.join(".").localeCompare(right.iterationPath.join(".")),
170
+ );
171
+ const subgraphRuns = [...mapFromEntries(state.subgraphRuns).values()].sort(
172
+ (left, right) => left.nodeId.localeCompare(right.nodeId),
173
+ );
140
174
  const definition = state.definition;
175
+ const compensationForNode = new Map([
176
+ ...definition.nodes
177
+ .filter((node) => node.compensationNodeId)
178
+ .map((node) => [node.compensationNodeId, node.id]),
179
+ ...definition.edges
180
+ .filter((edge) => edge.kind === "compensation")
181
+ .map((edge) => [edge.to, edge.from]),
182
+ ]);
183
+ const compensationByNode = new Map(
184
+ [...compensationForNode].map(([targetId, sourceId]) => [
185
+ sourceId,
186
+ targetId,
187
+ ]),
188
+ );
141
189
  const taskNodes = definition.nodes.map((node) => ({
142
190
  id: node.id,
143
191
  kind: node.kind,
@@ -145,8 +193,12 @@ export function reduceGraphTrace(
145
193
  blockedRoot: nodeStates.get(node.id)?.blockedRoot || null,
146
194
  acceptedAttemptId: nodeStates.get(node.id)?.acceptedAttemptId || null,
147
195
  attemptIds: nodeStates.get(node.id)?.attemptIds || [],
196
+ iterationPath: nodeStates.get(node.id)?.iterationPath || [],
148
197
  writeSet: node.writeSet || [],
149
198
  workspaceIsolation: node.workspaceIsolation || null,
199
+ compensationNodeId:
200
+ node.compensationNodeId || compensationByNode.get(node.id) || null,
201
+ compensationForNodeId: compensationForNode.get(node.id) || null,
150
202
  }));
151
203
  const dependencyEdges = [
152
204
  ...definition.nodes.flatMap((node) =>
@@ -160,6 +212,26 @@ export function reduceGraphTrace(
160
212
  ),
161
213
  ...definition.edges,
162
214
  ];
215
+ const compensationEdgeKeys = new Set(
216
+ dependencyEdges
217
+ .filter((edge) => edge.kind === "compensation")
218
+ .map((edge) => `${edge.from}\0${edge.to}`),
219
+ );
220
+ for (const node of definition.nodes) {
221
+ if (
222
+ !node.compensationNodeId ||
223
+ compensationEdgeKeys.has(`${node.id}\0${node.compensationNodeId}`)
224
+ ) {
225
+ continue;
226
+ }
227
+ dependencyEdges.push({
228
+ id: `compensation:${node.id}:${node.compensationNodeId}`,
229
+ from: node.id,
230
+ to: node.compensationNodeId,
231
+ kind: "compensation",
232
+ when: "always",
233
+ });
234
+ }
163
235
  const artifactEdges = artifacts.flatMap((artifact) => [
164
236
  {
165
237
  from: artifact.producerNodeId,
@@ -213,6 +285,7 @@ export function reduceGraphTrace(
213
285
  revisionDigest: state.revisionDigest,
214
286
  phase: state.phase,
215
287
  status: state.status,
288
+ compensation: clone(state.compensation || null),
216
289
  agentTree,
217
290
  taskGraph: { nodes: taskNodes, edges: dependencyEdges },
218
291
  artifactGraph: { artifacts, edges: artifactEdges },
@@ -221,6 +294,27 @@ export function reduceGraphTrace(
221
294
  attempts,
222
295
  handoffs,
223
296
  humanTasks,
297
+ iterationGraph: {
298
+ loops: loopStates,
299
+ frames: iterationFrames,
300
+ attempts: attempts.map((attempt) => ({
301
+ id: attempt.id,
302
+ nodeId: attempt.nodeId,
303
+ iterationPath: attempt.iterationPath || [],
304
+ attempt: attempt.attempt || 1,
305
+ status: attempt.status,
306
+ })),
307
+ },
308
+ subgraphGraph: {
309
+ runs: subgraphRuns,
310
+ edges: subgraphRuns.map((relation) => ({
311
+ from: relation.nodeId,
312
+ to: `run:${relation.childRunId}`,
313
+ kind: "subgraph_call",
314
+ revisionDigest: relation.revisionDigest,
315
+ status: relation.status,
316
+ })),
317
+ },
224
318
  criticalPath: criticalPath(definition, attempts),
225
319
  timeline,
226
320
  };
@@ -1,2 +0,0 @@
1
- import{I as s,J as g,U as d,c as o,K as _,V as k,S as V,R as S,F as W,Z as Q,w as M,n as C,o as R,b as T,r,P as p,Q as O,_ as U}from"./vendor-Bn1JzzAn.js";import{_ as E,u as K}from"./index-CnEZ4ZHj.js";import{R as P}from"./icons-DG5UD-6K.js";const j={__name:"Logs",setup(N,{expose:a}){a();const x=K(),e=r("status"),y=r(!1),v=r(""),i=r(""),c=r(""),f=r(!0),n=r(null),h={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},m=T(()=>i.value.split(`
2
- `)),b=T(()=>{if(!c.value)return m.value;const t=c.value.toLowerCase();return m.value.filter(u=>u.toLowerCase().includes(t))});function L(t){return t.includes("✖")||t.includes("error")||t.includes("Error")||t.includes("failed")?"line-error":t.includes("✔")||t.includes("✓")||t.includes("success")||t.includes("running")?"line-success":t.includes("warn")||t.includes("Warn")||t.includes("○")?"line-warn":t.startsWith(" ")||t.startsWith(" ")?"line-indent":""}function l(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function w(t){if(!c.value)return t;const u=c.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.replace(new RegExp(`(${u})`,"gi"),"<mark>$1</mark>")}async function B(){y.value=!0,v.value="",i.value="";const t=h[e.value]||"status";try{const{output:u}=await x.execute(t,3e4);i.value=u,f.value&&(await C(),n.value&&(n.value.scrollTop=n.value.scrollHeight))}catch(u){v.value=`执行失败: ${u.message}`,i.value=v.value}finally{y.value=!1}}M(b,async()=>{f.value&&(await C(),n.value&&(n.value.scrollTop=n.value.scrollHeight))}),R(B);const H={ws:x,activeTab:e,loading:y,error:v,rawOutput:i,searchQuery:c,autoScroll:f,logContainer:n,TAB_COMMANDS:h,allLines:m,filteredLines:b,lineClass:L,escapeHtml:l,highlightSearch:w,loadLog:B,ref:r,computed:T,watch:M,nextTick:C,onMounted:R,get ReloadOutlined(){return P},get useWsStore(){return K}};return Object.defineProperty(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}},q={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},z={style:{display:"flex",gap:"10px",margin:"12px 0"}},A={ref:"logContainer",class:"log-box"},D={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},F={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},I={key:2},J=["innerHTML"];function Z(N,a,x,e,y,v){const i=s("a-checkbox"),c=s("a-button"),f=s("a-space"),n=s("a-tab-pane"),h=s("a-tabs"),m=s("a-input-search"),b=s("a-tag"),L=s("a-spin");return p(),g("div",null,[d("div",q,[a[5]||(a[5]=d("div",null,[d("h2",{class:"page-title"},"日志查看"),d("p",{class:"page-sub"},"系统运行日志与诊断输出")],-1)),o(f,null,{default:_(()=>[o(i,{checked:e.autoScroll,"onUpdate:checked":a[0]||(a[0]=l=>e.autoScroll=l)},{default:_(()=>[...a[3]||(a[3]=[O("自动滚动",-1)])]),_:1},8,["checked"]),o(c,{type:"primary",ghost:"",loading:e.loading,onClick:e.loadLog},{icon:_(()=>[o(e.ReloadOutlined)]),default:_(()=>[a[4]||(a[4]=O(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),k(" Tab Selector "),o(h,{activeKey:e.activeTab,"onUpdate:activeKey":a[1]||(a[1]=l=>e.activeTab=l),onChange:e.loadLog,style:{"margin-bottom":"0"}},{default:_(()=>[o(n,{key:"status",tab:"系统状态"}),o(n,{key:"doctor",tab:"环境诊断"}),o(n,{key:"skill-sources",tab:"技能来源"}),o(n,{key:"llm-providers",tab:"LLM 提供商"})]),_:1},8,["activeKey"]),k(" Search Bar "),d("div",z,[o(m,{value:e.searchQuery,"onUpdate:value":a[2]||(a[2]=l=>e.searchQuery=l),placeholder:"搜索日志内容...","allow-clear":"",style:{flex:"1"}},null,8,["value"]),e.filteredLines.length!==e.allLines.length?(p(),V(b,{key:0,color:"blue"},{default:_(()=>[O(S(e.filteredLines.length)+" / "+S(e.allLines.length)+" 行 ",1)]),_:1})):k("v-if",!0)]),k(" Log Output "),d("div",A,[e.loading?(p(),g("div",D,[o(L,{size:"large"}),a[6]||(a[6]=d("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):e.filteredLines.length?(p(),g("div",I,[(p(!0),g(W,null,Q(e.filteredLines,(l,w)=>(p(),g("div",{key:w,class:U(["log-line",e.lineClass(l)]),innerHTML:e.highlightSearch(e.escapeHtml(l))},null,10,J))),128))])):(p(),g("div",F,S(e.error||"暂无日志内容,点击刷新加载"),1))],512)])}const $=E(j,[["render",Z],["__scopeId","data-v-8c2906e0"],["__file","/tmp/cc-web-panel-OP7nKs/repo/packages/web-panel/src/views/Logs.vue"]]);export{$ as default};
@@ -1 +0,0 @@
1
- import{P as c,J as p,b as s}from"./vendor-Bn1JzzAn.js";import{r as a}from"./markdown-Yo_c6Krv.js";import{_ as d}from"./index-CnEZ4ZHj.js";const _={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(t,{expose:o}){o();const e=t,r=s(()=>a(e.content||"")),n={props:e,rendered:r,computed:s,get renderMarkdown(){return a}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},i=["innerHTML"];function m(t,o,e,r,n,u){return c(),p("div",{class:"markdown-content",innerHTML:r.rendered},null,8,i)}const w=d(_,[["render",m],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-OP7nKs/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{w as M};
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-CnEZ4ZHj.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-DPuJsvKg.js";import{a0 as t}from"./index-CnEZ4ZHj.js";import"./vendor-Bn1JzzAn.js";import"./index-DkczsbiP.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-CKGBTeCw.js";import{a0 as t}from"./index-CnEZ4ZHj.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-CoEXv2Li.js";import"./useFlexGapSupport-dTkPxzHN.js";import"./styleChecker-9aHukmoG.js";import"./index-DkczsbiP.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};