@tea-agent/loop-agent 0.44.0-next.5 → 0.44.0-next.7
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/CHANGELOG.md +299 -445
- package/dist/build-stamp.json +3 -3
- package/dist/executors/pi-sdk-executor.js +7 -7
- package/dist/infrastructure/console/operation-store.js +46 -14
- package/dist/shared/git-workspace-status.js +2 -0
- package/dist/shared/wizard-local-telemetry.js +2 -1
- package/dist/worker/console/chat/assistant-content.js +5 -34
- package/dist/worker/console/chat/chat-event-store.js +27 -10
- package/dist/worker/console/chat/db-connections.js +72 -8
- package/dist/worker/console/chat/pi-runtime/custom-tools/sql-tools.js +52 -24
- package/dist/worker/console/chat/pi-runtime.js +251 -18
- package/dist/worker/console/chat/repo-browser.js +49 -0
- package/dist/worker/console/chat/routes.js +215 -66
- package/dist/worker/console/chat/session-store.js +147 -19
- package/dist/worker/console/chat/turn-process.js +69 -23
- package/dist/worker/console/chat/user-turn-outline.js +19 -0
- package/dist/worker/console/console-update-runtime.js +2 -2
- package/dist/worker/console/operator-user-error.js +28 -1
- package/dist/worker/console/pi-readiness.js +4 -4
- package/dist/worker/console/recovery-cta.js +14 -14
- package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-BHuhGM1e.js → abnfDiagram-N423BO3Z-DTuku_-7.js} +1 -1
- package/dist/worker/console/static/assets/{arc-CKh5E_sr.js → arc-CQbCsSqb.js} +1 -1
- package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-DizhiBEv.js → architectureDiagram-T3A2C74G-C-xUntTR.js} +1 -1
- package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-3Neea-Z-.js → blockDiagram-VBNYF7ZC-DhNlwGAl.js} +1 -1
- package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-BCP_Qrgi.js → c4Diagram-5PPSVZJV-B7j3nx8o.js} +1 -1
- package/dist/worker/console/static/assets/channel-5_os7t_x.js +1 -0
- package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-C_wydftK.js → chunk-2GRJ4B5K-BCrcxEh2.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-jRPXZbzx.js → chunk-2Q5K7J3B-CsaePDb3.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5RXB4S5H-BLQf2OYO.js → chunk-5RXB4S5H--SRQc1rN.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5VM5RSS4-0qRq64rI.js → chunk-5VM5RSS4-C5BFY2Po.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-ClMg8xmV.js → chunk-6Q2QTUOP-Caso6uN7.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-GF5L2VYU-Coop2FlL.js → chunk-GF5L2VYU-AY2ZSAx2.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-JWPE2WC7-CDdO-jPJ.js → chunk-JWPE2WC7-DiMqZQ_8.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-KBJHAD2P-D8Gkppjl.js → chunk-KBJHAD2P-gpvvriOp.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-RYQCIY6F-DA9HIySf.js → chunk-RYQCIY6F-CUdyoJhI.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-XXDRQBXY-DZNDRX1k.js → chunk-XXDRQBXY-Bp1xW3T4.js} +1 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-loz0n18W.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-loz0n18W.js +1 -0
- package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-CZ1zGyjq.js → cose-bilkent-JH36ORCC-D-JIcOIT.js} +1 -1
- package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-B8u1_FtM.js → cynefin-VYW2F7L2-C-NKFflx.js} +1 -1
- package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-CPBB6lfo.js → cynefinDiagram-MW4NZA55-CSOcvOAA.js} +1 -1
- package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-CG3Eov3E.js → dagre-VZM6K2ZE-BQSBltMy.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-7IWD3JNH-ycI-dOjh.js → diagram-7IWD3JNH-B0LVC45G.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-Bx_GyQ7Y.js → diagram-B4RE2ZJO-Cypg3nqy.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-LBJQPF4R-m0G6mP4d.js → diagram-LBJQPF4R-BBDU88XJ.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-Q27KOJAE-DTDJkqcJ.js → diagram-Q27KOJAE-BZusLqSb.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-UB23O5K3-BCfFrG-p.js → diagram-UB23O5K3-Cfolotcr.js} +1 -1
- package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-BIkTNPpp.js → ebnfDiagram-BXEA7PRR-CjfyUy0m.js} +1 -1
- package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DTcMWrd2.js → erDiagram-JOGREHBK-DJdz7txE.js} +1 -1
- package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-BqzDaNQ7.js → flowDiagram-UKHOOZJN-CQqgPO6y.js} +1 -1
- package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-BSl_vGFe.js → ganttDiagram-PKOTCBZU-BOpGfS2m.js} +1 -1
- package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-DCA5HXM6.js → gitGraphDiagram-DS77QQ5N-C6UCu0qx.js} +1 -1
- package/dist/worker/console/static/assets/index-CUT440A8.css +1 -0
- package/dist/worker/console/static/assets/index-DWKejNVJ.js +486 -0
- package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-DvqT18ge.js → infoDiagram-6WML65LV-BWeaVEUB.js} +1 -1
- package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-B6zGKrQ3.js → ishikawaDiagram-WSZJBQD7-C8gmlBbk.js} +1 -1
- package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-BpLQPI9C.js → journeyDiagram-NVQOT4AX-DF3bm8Bp.js} +1 -1
- package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-CzIz_-Lt.js → kanban-definition-27J2QSJJ-D2fG2Vxi.js} +1 -1
- package/dist/worker/console/static/assets/{linear-CMQ8Jpp-.js → linear-BGKgMc2T.js} +1 -1
- package/dist/worker/console/static/assets/{mermaid.core-BdAMrTf7.js → mermaid.core-DF6mMPJ9.js} +5 -5
- package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-hSwF6sOq.js → mindmap-definition-FAOFIHXS-AMhePheC.js} +1 -1
- package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DZdv509B.js → pegDiagram-VL7TDLO6-DN1Cl0W0.js} +1 -1
- package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-CmD4-b0K.js → pieDiagram-7S7Q4E2Y-Cx9ngUeN.js} +1 -1
- package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-DtKxNxlS.js → quadrantDiagram-CIZ2JOQS-BcYPTQJb.js} +1 -1
- package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-D48iIoiS.js → railroadDiagram-AXF67PYL-BqHUZWnH.js} +1 -1
- package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-C3N0K-2p.js → requirementDiagram-LRYGKXZP-CmqWZ0-B.js} +1 -1
- package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-CACWR-Xs.js → sankeyDiagram-W5VNT64P--4YetH1y.js} +1 -1
- package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-g_QgugvZ.js → sequenceDiagram-SI44F4Z6-DGD4VMfD.js} +1 -1
- package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-DqLoRPGK.js → sizeCapture-X5ZJPWSS-QVw9q7rh.js} +1 -1
- package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-ES59VgMG.js → stateDiagram-OKZ733FA-CuemV9pe.js} +1 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BdlGdIJw.js +1 -0
- package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-fjyLVNWo.js → swimlanes-SLNWSIFB-C7oKzZKs.js} +2 -2
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-DjjbHbde.js +8 -0
- package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-Cd5-biKv.js → timeline-definition-Z64GVDOM-C2Of60nT.js} +1 -1
- package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-CZTu6mPf.js → vennDiagram-T6HMQDX7-DHtpQHyL.js} +1 -1
- package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-DR01jjbe.js → wardleyDiagram-T6FBY63Y-COi9OhSy.js} +1 -1
- package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-iZcuGVGa.js → xychartDiagram-ELKLHX3M-DPHQfRrt.js} +1 -1
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/app/console-types.js +9 -1
- package/dist/worker/console/static-src/operator-chat/chat-link.js +20 -0
- package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +58 -3
- package/dist/worker/console/static-src/operator-chat/details-rail-surfaces.js +98 -0
- package/dist/worker/console/static-src/operator-chat/file-palette-nav.js +81 -0
- package/dist/worker/console/static-src/operator-chat/process-label.js +19 -6
- package/dist/worker/console/static-src/operator-chat/transcript-mode.js +21 -0
- package/dist/worker/console/static-src/operator-chat/turn-group-equality.js +2 -0
- package/dist/worker/console/static-src/operator-chat/turn-process-disclosure.js +13 -5
- package/dist/worker/console/static-src/operator-chat/turn-state-projection.js +166 -0
- package/dist/worker/console/static-src/operator-chat/turn-stream-controller.js +56 -2
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +202 -41
- package/dist/worker/console/static-src/operator-chat/useChatStream.js +78 -23
- package/dist/worker/console/static-src/operator-chat/useChatThread.js +55 -18
- package/dist/worker/console/static-src/operator-chat/useComposer.js +80 -6
- package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +13 -3
- package/dist/worker/console/static-src/operator-chat/useRuntimeControls.js +36 -17
- package/dist/worker/console/static-src/operator-chat/useRuntimeSnapshot.js +18 -0
- package/dist/worker/console/static-src/operator-chat/useWorkspaceBrowserGate.js +4 -0
- package/dist/worker/console/static-src/shell/console-update-reload.js +1 -1
- package/dist/worker/console/workspace-initialization.js +3 -3
- package/dist/worker/observability/read-model.js +23 -2
- package/dist/worker/scheduler/scheduled-goal-dispatch.js +3 -2
- package/dist/worker/scheduler/scheduled-goal-evidence.js +6 -1
- package/docs/templates/backend-test-dag.json +1 -0
- package/package.json +4 -4
- package/dist/worker/console/static/assets/channel-DxgzA1GF.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-BZcm7fs6.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-BZcm7fs6.js +0 -1
- package/dist/worker/console/static/assets/index-BAEDjTbD.css +0 -1
- package/dist/worker/console/static/assets/index-wKEJUaP5.js +0 -482
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DyCIq6jx.js +0 -1
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-CsKtO34q.js +0 -8
|
@@ -2176,6 +2176,12 @@ function isExecutedNodeStatus(status) {
|
|
|
2176
2176
|
return false;
|
|
2177
2177
|
return EXECUTED_NODE_STATUSES.has(status.toLowerCase());
|
|
2178
2178
|
}
|
|
2179
|
+
/**
|
|
2180
|
+
* Node statuses that have not reached a terminal outcome. A live node's last
|
|
2181
|
+
* recorded attempt can be a failure that is already being retried, so history
|
|
2182
|
+
* copy must not present it as the final result.
|
|
2183
|
+
*/
|
|
2184
|
+
const LIVE_NODE_STATUSES = new Set(["running", "started", "paused"]);
|
|
2179
2185
|
const PASS_SUCCESS_STATUSES = new Set([
|
|
2180
2186
|
"finished",
|
|
2181
2187
|
"completed",
|
|
@@ -2221,12 +2227,21 @@ export function projectExecutionSummary(options) {
|
|
|
2221
2227
|
const recovered = totalAttemptCount > 1 &&
|
|
2222
2228
|
firstOutcome === "failure" &&
|
|
2223
2229
|
finalOutcome === "success";
|
|
2230
|
+
// A node that is still live (running/started/paused) has not reached a
|
|
2231
|
+
// final outcome: its last *recorded* attempt may have failed while a
|
|
2232
|
+
// retry is already queued. Labelling that "最终失败" told the operator
|
|
2233
|
+
// the run was over when it was still working, so keep the attempt count
|
|
2234
|
+
// and mark the last attempt instead of the node.
|
|
2235
|
+
const stillRunning = options.status !== undefined &&
|
|
2236
|
+
LIVE_NODE_STATUSES.has(options.status.toLowerCase());
|
|
2224
2237
|
// 一次就成功/失败:卡片不展示 historyLabel;Inspector 仍可拿 attempts 元数据。
|
|
2225
2238
|
const historyLabel = totalAttemptCount <= 1
|
|
2226
2239
|
? undefined
|
|
2227
2240
|
: recovered
|
|
2228
2241
|
? `${totalAttemptCount} 次 · 先失败后成功`
|
|
2229
|
-
:
|
|
2242
|
+
: stillRunning && finalOutcome === "failure"
|
|
2243
|
+
? `${totalAttemptCount} 次 · 最近一次失败,仍在重试`
|
|
2244
|
+
: `${totalAttemptCount} 次 · 最终${finalOutcome === "success" ? "成功" : "失败"}`;
|
|
2230
2245
|
return {
|
|
2231
2246
|
totalAttemptCount,
|
|
2232
2247
|
...(recovered ? { recovered: true } : {}),
|
|
@@ -2266,12 +2281,18 @@ export function projectExecutionSummary(options) {
|
|
|
2266
2281
|
}
|
|
2267
2282
|
// 仅一轮 pass 时不在卡片展示(无叙事价值);多轮才展示中文「修复轮次 N」
|
|
2268
2283
|
// 主文案,裸 P1/P2 编号不再作为主标题(原始编号仅 hover/title/诊断)。
|
|
2284
|
+
// 与 attempt 分支同理:节点仍在运行时,最后一个已记录 pass 的失败只是
|
|
2285
|
+
// 阶段性事实,不能当作最终结论。
|
|
2286
|
+
const livePasses = options.status !== undefined &&
|
|
2287
|
+
LIVE_NODE_STATUSES.has(options.status.toLowerCase());
|
|
2269
2288
|
const historyLabel = passes.length <= 1
|
|
2270
2289
|
? undefined
|
|
2271
2290
|
: `修复轮次 ${passes.join(",")}${finalOutcome === "success"
|
|
2272
2291
|
? " · 最终成功"
|
|
2273
2292
|
: finalOutcome === "failure"
|
|
2274
|
-
?
|
|
2293
|
+
? livePasses
|
|
2294
|
+
? " · 最近一轮失败,仍在重试"
|
|
2295
|
+
: " · 最终失败"
|
|
2275
2296
|
: ""}`;
|
|
2276
2297
|
return {
|
|
2277
2298
|
totalAttemptCount: passes.length,
|
|
@@ -69,10 +69,11 @@ export async function prepareScheduledGoalDraft(input, client) {
|
|
|
69
69
|
if (!assessment.ok)
|
|
70
70
|
throw new Error(`scheduled goal ineligible: ${assessment.reason}`);
|
|
71
71
|
const digest = (bytes) => createHash("sha256").update(bytes).digest("hex");
|
|
72
|
+
const repositoryPath = (file) => path.relative(root, file).split(path.sep).join("/");
|
|
72
73
|
return scheduledGoalDraftSchema.parse({ ...parsed, controllerRef: identity.packageFingerprint.value,
|
|
73
74
|
prepared: { gateToken: `${snapshot.gate.id}:${snapshot.gate.digest}`,
|
|
74
|
-
dagPath:
|
|
75
|
-
contractPath:
|
|
75
|
+
dagPath: repositoryPath(paths.dagDraftPath), dagHash: digest(dagBytes),
|
|
76
|
+
contractPath: repositoryPath(paths.taskConfigPath), contractHash: digest(configBytes) }, });
|
|
76
77
|
}
|
|
77
78
|
/** Materialize only contract/runtime inputs; execution remains owned by the operation host. */
|
|
78
79
|
export async function prepareDerivedScheduledGoalTask(goalId, ownerToken, goals, client) {
|
|
@@ -201,8 +201,13 @@ export async function captureScheduledGoalTree(worktree, base, allowedPaths, for
|
|
|
201
201
|
}
|
|
202
202
|
else if (stat.isFile()) {
|
|
203
203
|
const bytes = await readFile(target);
|
|
204
|
-
files.push({ name, kind: "file", hash: sha256(bytes), executable: Boolean(stat.mode & 0o111) });
|
|
205
204
|
actualId = normalizedIds.get(name) ?? blobId(bytes);
|
|
205
|
+
files.push({
|
|
206
|
+
name,
|
|
207
|
+
kind: "file",
|
|
208
|
+
hash: sha256(`${objectFormat}:${actualId}`),
|
|
209
|
+
executable: Boolean(stat.mode & 0o111),
|
|
210
|
+
});
|
|
206
211
|
actualMode = stat.mode & 0o111 ? "100755" : "100644";
|
|
207
212
|
}
|
|
208
213
|
else
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tea-agent/loop-agent",
|
|
3
|
-
"version": "0.44.0-next.
|
|
3
|
+
"version": "0.44.0-next.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"loop-agent": "bin/loop-agent.js",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"prepack": "npm run build",
|
|
59
59
|
"prepublishOnly": "node scripts/check-npm-publish-policy.mjs && npm run typecheck && npm run test:full && npm run build",
|
|
60
60
|
"lint": "npm run typecheck",
|
|
61
|
-
"typecheck": "tsc --noEmit && npm run console:typecheck",
|
|
61
|
+
"typecheck": "node --max-old-space-size=4096 ./node_modules/typescript/bin/tsc --noEmit && npm run console:typecheck",
|
|
62
62
|
"test": "node scripts/run-tests.mjs",
|
|
63
63
|
"test:full": "node scripts/run-tests.mjs --full",
|
|
64
64
|
"dogfood:backend": "tsx scripts/backend-dogfood-campaign.ts",
|
|
@@ -77,8 +77,8 @@
|
|
|
77
77
|
"@deepseek-ai/cordis": "4.0.1",
|
|
78
78
|
"@deepseek-ai/dsh-host-directory-picker-native": "0.1.1-rc.2",
|
|
79
79
|
"@deepseek-ai/dsh-invariants": "0.1.1-rc.2",
|
|
80
|
-
"@earendil-works/pi-ai": "0.
|
|
81
|
-
"@earendil-works/pi-coding-agent": "0.
|
|
80
|
+
"@earendil-works/pi-ai": "0.84.4",
|
|
81
|
+
"@earendil-works/pi-coding-agent": "0.84.4",
|
|
82
82
|
"@xterm/addon-fit": "^0.11.0",
|
|
83
83
|
"@xterm/xterm": "^6.0.0",
|
|
84
84
|
"commander": "^12.1.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ag as o,ah as n}from"./mermaid.core-BdAMrTf7.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-GF5L2VYU-Coop2FlL.js";import{_ as i}from"./mermaid.core-BdAMrTf7.js";import"./chunk-5VM5RSS4-0qRq64rI.js";import"./chunk-XXDRQBXY-DZNDRX1k.js";import"./chunk-KBJHAD2P-D8Gkppjl.js";import"./chunk-2GRJ4B5K-C_wydftK.js";import"./index-wKEJUaP5.js";var n={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{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-GF5L2VYU-Coop2FlL.js";import{_ as i}from"./mermaid.core-BdAMrTf7.js";import"./chunk-5VM5RSS4-0qRq64rI.js";import"./chunk-XXDRQBXY-DZNDRX1k.js";import"./chunk-KBJHAD2P-D8Gkppjl.js";import"./chunk-2GRJ4B5K-C_wydftK.js";import"./index-wKEJUaP5.js";var n={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{n as diagram};
|