@tea-agent/loop-agent 0.40.0-next.4 → 0.40.0-next.5

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 (132) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/build-stamp.json +3 -3
  3. package/dist/infrastructure/harness/atomic-write.js +23 -0
  4. package/dist/worker/console/chat/chat-event-store.js +62 -4
  5. package/dist/worker/console/chat/context-panel.js +7 -0
  6. package/dist/worker/console/chat/deferred-turn.js +12 -0
  7. package/dist/worker/console/chat/pi-runtime.js +264 -16
  8. package/dist/worker/console/chat/provider-error.js +98 -0
  9. package/dist/worker/console/chat/routes.js +292 -29
  10. package/dist/worker/console/chat/session-stats.js +179 -0
  11. package/dist/worker/console/chat/session-store.js +93 -63
  12. package/dist/worker/console/chat/todos.js +115 -0
  13. package/dist/worker/console/chat/tool-preview.js +42 -0
  14. package/dist/worker/console/chat/turn-process.js +20 -55
  15. package/dist/worker/console/chat/user-questions.js +266 -0
  16. package/dist/worker/console/chat/workspace-landing.js +14 -0
  17. package/dist/worker/console/native-directory-picker.js +13 -0
  18. package/dist/worker/console/routes.js +309 -1
  19. package/dist/worker/console/security.js +4 -4
  20. package/dist/worker/console/server.js +529 -186
  21. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-CTx1TrNa.js → abnfDiagram-N423BO3Z-CGZrpj0K.js} +1 -1
  22. package/dist/worker/console/static/assets/{arc-B4i9cVxX.js → arc-CwEyA8iq.js} +1 -1
  23. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-BAXE8_Rl.js → architectureDiagram-T3A2C74G-DLTkrEQ3.js} +1 -1
  24. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-C5Xh59at.js → blockDiagram-VBNYF7ZC-4w12zR3t.js} +1 -1
  25. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-B_asOzAu.js → c4Diagram-5PPSVZJV-BppqLAjk.js} +1 -1
  26. package/dist/worker/console/static/assets/channel-TzuwQha5.js +1 -0
  27. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-wRO_iRNc.js → chunk-2GRJ4B5K-DO6U26Pm.js} +1 -1
  28. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-ByOaSh_G.js → chunk-2Q5K7J3B-DC7YEdOy.js} +1 -1
  29. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-DjLzudan.js → chunk-5RXB4S5H-DtMYVQBw.js} +1 -1
  30. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-JCNGkXYT.js → chunk-5VM5RSS4-C5Ed-57N.js} +1 -1
  31. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-BhrPXXMZ.js → chunk-6Q2QTUOP-BUY4oIzT.js} +1 -1
  32. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-TJ5JuEBT.js → chunk-GF5L2VYU-VnWHALIV.js} +1 -1
  33. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-VVthn_mD.js → chunk-JWPE2WC7-COV-RQk4.js} +1 -1
  34. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-D60-Mny4.js → chunk-KBJHAD2P-dSnLtUiz.js} +1 -1
  35. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-zXv7aVye.js → chunk-RYQCIY6F-CX6FDzWh.js} +1 -1
  36. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-By9VQoi1.js → chunk-XXDRQBXY-D3mEgb6W.js} +1 -1
  37. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-DCu69b3S.js +1 -0
  38. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-DCu69b3S.js +1 -0
  39. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-C4zQLe-M.js → cose-bilkent-JH36ORCC-QQBMUnAf.js} +1 -1
  40. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-wh5N2ReN.js → cynefin-VYW2F7L2-BxSD-LVV.js} +1 -1
  41. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-Dlu5wIqs.js → cynefinDiagram-MW4NZA55-DxHNiNbk.js} +1 -1
  42. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-CrDgthc6.js → dagre-VZM6K2ZE-C83bYy8E.js} +1 -1
  43. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-zN1clg27.js → diagram-7IWD3JNH-BhtZu2YY.js} +1 -1
  44. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-BN-o7J7-.js → diagram-B4RE2ZJO-K0P_ntRE.js} +1 -1
  45. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-C8SuPt0d.js → diagram-LBJQPF4R-CXYy1Nib.js} +1 -1
  46. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-BoizuHbZ.js → diagram-Q27KOJAE-D-CtIFkU.js} +1 -1
  47. package/dist/worker/console/static/assets/{diagram-UB23O5K3-BzUzXixG.js → diagram-UB23O5K3-BEK9-_7c.js} +1 -1
  48. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-Ev3lA4Cf.js → ebnfDiagram-BXEA7PRR-L0EX-9wn.js} +1 -1
  49. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-GALUzRbs.js → erDiagram-JOGREHBK-9pt0fc_5.js} +1 -1
  50. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-CZJN65Sb.js → flowDiagram-UKHOOZJN-CZVeM_n1.js} +1 -1
  51. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-JLB9OESl.js → ganttDiagram-PKOTCBZU-DqUKkAZP.js} +1 -1
  52. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-CcvCr4GD.js → gitGraphDiagram-DS77QQ5N-BYUuXEgp.js} +1 -1
  53. package/dist/worker/console/static/assets/index-B0jGzQj6.js +407 -0
  54. package/dist/worker/console/static/assets/index-BiYbPiTw.css +1 -0
  55. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-HG5z7aVg.js → infoDiagram-6WML65LV-DNzKk7ah.js} +1 -1
  56. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-BHEu9chR.js → ishikawaDiagram-WSZJBQD7-Clbyg5IP.js} +1 -1
  57. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-Cp_Up8-a.js → journeyDiagram-NVQOT4AX-zDO_gZNO.js} +1 -1
  58. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-DvVeY-em.js → kanban-definition-27J2QSJJ-x3LpRYek.js} +1 -1
  59. package/dist/worker/console/static/assets/{linear-aGmcjgTn.js → linear-CTpwZqKR.js} +1 -1
  60. package/dist/worker/console/static/assets/{mermaid.core-Biyo-tqA.js → mermaid.core-D_WXK6C7.js} +5 -5
  61. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-DyxY2pIb.js → mindmap-definition-FAOFIHXS-CWK-OYP5.js} +1 -1
  62. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-CkdGuc50.js → pegDiagram-VL7TDLO6-B9gtUPsM.js} +1 -1
  63. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-NNQI9xVR.js → pieDiagram-7S7Q4E2Y-Dj2lzceR.js} +1 -1
  64. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-PAJkuz_G.js → quadrantDiagram-CIZ2JOQS-Nwljut7m.js} +1 -1
  65. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-ZwrQod0O.js → railroadDiagram-AXF67PYL-BY-KNt93.js} +1 -1
  66. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-D3ZfrzM2.js → requirementDiagram-LRYGKXZP-Vx0wvpPy.js} +1 -1
  67. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-DDGFmWk5.js → sankeyDiagram-W5VNT64P-B6grNXUk.js} +1 -1
  68. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-DO6mmXTA.js → sequenceDiagram-SI44F4Z6-CteidBvh.js} +1 -1
  69. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-DMbCQiJt.js → sizeCapture-X5ZJPWSS-Du4W8mFK.js} +1 -1
  70. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-Di_YUEfC.js → stateDiagram-OKZ733FA-jyI6Yh81.js} +1 -1
  71. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DyQblISl.js +1 -0
  72. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-Bn2PphNJ.js → swimlanes-SLNWSIFB-DYWs_fRv.js} +2 -2
  73. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-DiygmgYP.js +8 -0
  74. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-DPh8pRsp.js → timeline-definition-Z64GVDOM-DO5LLy47.js} +1 -1
  75. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-GMfl26pW.js → vennDiagram-T6HMQDX7-CLF2p1_L.js} +1 -1
  76. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-DTlmVrmF.js → wardleyDiagram-T6FBY63Y-AwTaYBxA.js} +1 -1
  77. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-YGBjKAS5.js → xychartDiagram-ELKLHX3M-DzbblQRw.js} +1 -1
  78. package/dist/worker/console/static/index.html +2 -2
  79. package/dist/worker/console/static-src/app/console-types.js +29 -4
  80. package/dist/worker/console/static-src/app/useConsoleShell.js +30 -12
  81. package/dist/worker/console/static-src/app/useOperatorActions.js +36 -6
  82. package/dist/worker/console/static-src/app/useRecoveryConsole.js +10 -11
  83. package/dist/worker/console/static-src/app/useRunProgress.js +2 -1
  84. package/dist/worker/console/static-src/app/useTaskWizard.js +2 -2
  85. package/dist/worker/console/static-src/night/useNightBoard.js +8 -5
  86. package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +140 -8
  87. package/dist/worker/console/static-src/operator-chat/details-dag-actions.js +122 -0
  88. package/dist/worker/console/static-src/operator-chat/refs.js +3 -0
  89. package/dist/worker/console/static-src/operator-chat/runtime-selection-labels.js +27 -0
  90. package/dist/worker/console/static-src/operator-chat/turn-submission.js +3 -2
  91. package/dist/worker/console/static-src/operator-chat/useChatSessions.js +168 -72
  92. package/dist/worker/console/static-src/operator-chat/useChatStream.js +78 -17
  93. package/dist/worker/console/static-src/operator-chat/useChatThread.js +184 -4
  94. package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +63 -9
  95. package/dist/worker/console/static-src/operator-chat/useWorkspaceBrowserGate.js +4 -0
  96. package/dist/worker/console/static-src/operator-chat/workspace-layout-mode.js +3 -3
  97. package/dist/worker/console/static-src/shell/useWorkspaces.js +299 -0
  98. package/dist/worker/console/static-src/shell/workspace-route.js +337 -0
  99. package/dist/worker/console/workspace-context.js +234 -0
  100. package/dist/worker/console/workspace-registry.js +214 -0
  101. package/dist/worker/observe/server.js +4 -0
  102. package/dist/worker/observe/static/api.js +26 -6
  103. package/dist/worker/observe/static/app.js +18 -70
  104. package/dist/worker/observe/static/index.html +1 -1
  105. package/dist/worker/observe/static/inspect-workspace.js +307 -0
  106. package/dist/worker/observe/static/operator-chrome.css +145 -20
  107. package/dist/worker/observe/static/operator-chrome.d.ts +20 -3
  108. package/dist/worker/observe/static/operator-chrome.js +330 -100
  109. package/dist/worker/observe/static/router.d.ts +46 -0
  110. package/dist/worker/observe/static/router.js +25 -1
  111. package/dist/worker/observe/static/state.d.ts +50 -0
  112. package/dist/worker/observe/static/state.js +172 -0
  113. package/dist/worker/observe/static/views/dag-inspector.js +3 -2
  114. package/dist/worker/observe/static/views/dag.js +2 -1
  115. package/dist/worker/observe/static/views/dashboard.js +6 -4
  116. package/dist/worker/observe/static/views/night.js +2 -2
  117. package/dist/worker/observe/static/views/pool.js +1 -0
  118. package/dist/worker/observe/static/views/run.js +3 -1
  119. package/dist/worker/observe/static/views/task.js +1 -1
  120. package/dist/workflows/dag/interrupt-request.js +3 -3
  121. package/dist/workflows/dag/lifecycle.js +3 -3
  122. package/docs/README.md +1 -0
  123. package/docs/operations/local-development-environment.md +21 -0
  124. package/harness.json +3 -3
  125. package/package.json +3 -1
  126. package/dist/worker/console/static/assets/channel-Dj_4Moei.js +0 -1
  127. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-C0YYAyCa.js +0 -1
  128. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-C0YYAyCa.js +0 -1
  129. package/dist/worker/console/static/assets/index-CW88Fjbw.js +0 -406
  130. package/dist/worker/console/static/assets/index-DP0ZJl39.css +0 -1
  131. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DrdDvela.js +0 -1
  132. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-DPkEAULl.js +0 -8
@@ -0,0 +1,98 @@
1
+ const MAX_RAW_CHARS = 8_000;
2
+ const MAX_MESSAGE_CHARS = 1_000;
3
+ function asRecord(value) {
4
+ return value !== null && typeof value === "object" && !Array.isArray(value)
5
+ ? value
6
+ : undefined;
7
+ }
8
+ function bounded(value, limit) {
9
+ return value.length <= limit ? value : `${value.slice(0, limit - 1)}…`;
10
+ }
11
+ function scrub(value) {
12
+ return value
13
+ .replace(/((?:authorization|api[-_]?key|access[-_]?token|refresh[-_]?token|secret)["']?\s*[:=]\s*["']?)([^"'\s,}]+)/gi, "$1[REDACTED]")
14
+ .replace(/\bBearer\s+[A-Za-z0-9._~+/=-]+/gi, "Bearer [REDACTED]");
15
+ }
16
+ function parseEnvelope(raw) {
17
+ const candidates = [raw];
18
+ const start = raw.indexOf("{");
19
+ const end = raw.lastIndexOf("}");
20
+ if (start >= 0 && end > start)
21
+ candidates.push(raw.slice(start, end + 1));
22
+ for (const candidate of candidates) {
23
+ try {
24
+ const record = asRecord(JSON.parse(candidate));
25
+ if (record)
26
+ return record;
27
+ }
28
+ catch {
29
+ // Plain text and HTTP-prefixed provider errors are expected here.
30
+ }
31
+ }
32
+ return undefined;
33
+ }
34
+ function stringField(record, key) {
35
+ const value = record?.[key];
36
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
37
+ }
38
+ function codeField(record) {
39
+ const value = record?.code ?? record?.status ?? record?.statusCode;
40
+ if (typeof value === "number" && Number.isFinite(value))
41
+ return value;
42
+ if (typeof value === "string" && value.trim()) {
43
+ const trimmed = value.trim();
44
+ return /^\d{3}$/.test(trimmed) ? Number(trimmed) : trimmed;
45
+ }
46
+ return undefined;
47
+ }
48
+ function classify(input) {
49
+ const haystack = `${input.message}\n${input.raw}`.toLowerCase();
50
+ const status = typeof input.code === "number" ? input.code : undefined;
51
+ if (status === 401 ||
52
+ status === 403 ||
53
+ /认证|鉴权|unauthori[sz]ed|forbidden|authentication|invalid api[-_ ]?key/.test(haystack))
54
+ return "authentication";
55
+ if (/请求上下文过大|上下文.{0,12}(?:过大|太大|过长|超限)|context_length_exceeded|maximum context|context.{0,24}(?:length|window|limit|large|long)|too many tokens/.test(haystack))
56
+ return "context-overflow";
57
+ if (status === 429 ||
58
+ /rate.?limit|too many requests|请求.{0,8}(?:频繁|过多)|限流/.test(haystack))
59
+ return "rate-limit";
60
+ return "provider";
61
+ }
62
+ /** Convert an SDK/provider error into a bounded durable timeline projection. */
63
+ export function parseProviderError(value) {
64
+ const source = typeof value === "string"
65
+ ? value
66
+ : value instanceof Error
67
+ ? value.message
68
+ : String(value ?? "Provider request failed");
69
+ const raw = bounded(scrub(source.trim()), MAX_RAW_CHARS);
70
+ const envelope = parseEnvelope(raw);
71
+ const nested = asRecord(envelope?.error);
72
+ const firstLine = raw.split(/\r?\n/, 1)[0]?.trim();
73
+ const message = bounded(stringField(nested, "message") ??
74
+ stringField(envelope, "message") ??
75
+ (firstLine || undefined) ??
76
+ "Provider request failed", MAX_MESSAGE_CHARS);
77
+ const code = codeField(nested) ?? codeField(envelope);
78
+ const type = stringField(nested, "type") ?? stringField(envelope, "type");
79
+ return {
80
+ message,
81
+ raw,
82
+ ...(code === undefined ? {} : { code }),
83
+ ...(type ? { type } : {}),
84
+ category: classify({ message, raw, code }),
85
+ };
86
+ }
87
+ export function providerErrorTitle(category) {
88
+ switch (category) {
89
+ case "authentication":
90
+ return "认证失败";
91
+ case "context-overflow":
92
+ return "上下文过大";
93
+ case "rate-limit":
94
+ return "请求过于频繁";
95
+ default:
96
+ return "Provider 请求失败";
97
+ }
98
+ }