@tea-agent/loop-agent 0.44.0-next.1 → 0.44.0-next.3
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 +178 -175
- package/dist/build-stamp.json +3 -3
- package/dist/executors/pi-sdk-executor.js +29 -1
- package/dist/shared/wizard-local-telemetry.js +50 -0
- package/dist/worker/console/chat/chat-event-store.js +3 -0
- package/dist/worker/console/chat/db-connections.js +790 -0
- package/dist/worker/console/chat/pi-runtime/custom-tools/operator-tools.js +1 -1
- package/dist/worker/console/chat/pi-runtime/custom-tools/sql-tools.js +627 -0
- package/dist/worker/console/chat/pi-runtime.js +66 -6
- package/dist/worker/console/chat/routes.js +154 -3
- package/dist/worker/console/chat/sdd-data-alignment.js +8 -31
- package/dist/worker/console/chat/timeline-message-order.js +22 -0
- package/dist/worker/console/chat/tools.js +34 -0
- package/dist/worker/console/chat/turn-process.js +43 -39
- package/dist/worker/console/dag-confirmation.js +3 -0
- package/dist/worker/console/dag-execution-receipt.js +3 -0
- package/dist/worker/console/operator-actions.js +32 -2
- package/dist/worker/console/server.js +5 -1
- package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-8-j6y-sd.js → abnfDiagram-N423BO3Z-COQlLTI7.js} +1 -1
- package/dist/worker/console/static/assets/{arc-eoQiMvuk.js → arc-zN3QkNaV.js} +1 -1
- package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-C4A3uMcI.js → architectureDiagram-T3A2C74G-Pyoyj5f2.js} +1 -1
- package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-D4zD2F-Q.js → blockDiagram-VBNYF7ZC-BNppA5WW.js} +1 -1
- package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-j1RkJziL.js → c4Diagram-5PPSVZJV-lyxL8nTx.js} +1 -1
- package/dist/worker/console/static/assets/channel-CgLPkTw2.js +1 -0
- package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-YBHmhik1.js → chunk-2GRJ4B5K-0hgjcdK4.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-COfWyo9P.js → chunk-2Q5K7J3B-D63N9d4i.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5RXB4S5H-I99OUkHY.js → chunk-5RXB4S5H-CUw2AyB5.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5VM5RSS4-XKxoJNJ4.js → chunk-5VM5RSS4-Q_kwZT30.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-DLT_cYx1.js → chunk-6Q2QTUOP-C7vMiKcw.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-GF5L2VYU-CxcKZ9mV.js → chunk-GF5L2VYU-T9GbV5Hz.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-JWPE2WC7-V1EqXdjY.js → chunk-JWPE2WC7-D8nUSUJI.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-KBJHAD2P-DebTtdFp.js → chunk-KBJHAD2P-BCH2ewdp.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-RYQCIY6F-B-ivNRDf.js → chunk-RYQCIY6F-BTdDuDBN.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-XXDRQBXY-DC_Ds11b.js → chunk-XXDRQBXY-Cqm2RcKF.js} +1 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-CuSD1Mhb.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-CuSD1Mhb.js +1 -0
- package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-sWEqKwIb.js → cose-bilkent-JH36ORCC-pjwfpVu4.js} +1 -1
- package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-BXa_dcu4.js → cynefin-VYW2F7L2-BvalptKA.js} +1 -1
- package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-C-Mle84F.js → cynefinDiagram-MW4NZA55-BU4qJ6d7.js} +1 -1
- package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-CXPDBITe.js → dagre-VZM6K2ZE-DVTpq8J9.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-7IWD3JNH-CC-WJQfa.js → diagram-7IWD3JNH-B8s1W6Fc.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-CDAV5Vs4.js → diagram-B4RE2ZJO-DPrFk9yH.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-LBJQPF4R-CmFiAcNz.js → diagram-LBJQPF4R-CnQIQsHC.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-Q27KOJAE-DPBZHuyn.js → diagram-Q27KOJAE-op0DEpCv.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-UB23O5K3-jUlm_Ds3.js → diagram-UB23O5K3-DXQamm4T.js} +1 -1
- package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-DWhQ3mfY.js → ebnfDiagram-BXEA7PRR-b1ad2C0r.js} +1 -1
- package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-Tr2gMqet.js → erDiagram-JOGREHBK-B4cD-ZFJ.js} +1 -1
- package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-DJjVQHPA.js → flowDiagram-UKHOOZJN-CrgGjlQ1.js} +1 -1
- package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-D74dQ4u0.js → ganttDiagram-PKOTCBZU-DovmXQNV.js} +1 -1
- package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-DwW0tZ0X.js → gitGraphDiagram-DS77QQ5N-DpFyu2Jn.js} +1 -1
- package/dist/worker/console/static/assets/index-DHBWEwz_.css +1 -0
- package/dist/worker/console/static/assets/index-JRfTUgP7.js +478 -0
- package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-ILCbxJyb.js → infoDiagram-6WML65LV-D3MoQZIl.js} +1 -1
- package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-DeuWBQ89.js → ishikawaDiagram-WSZJBQD7-Ci6C1yjS.js} +1 -1
- package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-CF5ih8Fk.js → journeyDiagram-NVQOT4AX-BWMo2lIP.js} +1 -1
- package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-C7yOSuRO.js → kanban-definition-27J2QSJJ-BdthIAg3.js} +1 -1
- package/dist/worker/console/static/assets/{linear-BDZ9riWi.js → linear-DuFAlSOj.js} +1 -1
- package/dist/worker/console/static/assets/{mermaid.core-7pKqYtpZ.js → mermaid.core-Dqz3Slj9.js} +5 -5
- package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-LeJDybSU.js → mindmap-definition-FAOFIHXS-DNVTrD09.js} +1 -1
- package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-BJvT3pMD.js → pegDiagram-VL7TDLO6-CgfZPfBh.js} +1 -1
- package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-_rGqpMan.js → pieDiagram-7S7Q4E2Y-ClM9P7yo.js} +1 -1
- package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-DPcSv5aA.js → quadrantDiagram-CIZ2JOQS-DwnEak2J.js} +1 -1
- package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-Drxx4hkJ.js → railroadDiagram-AXF67PYL-rK4hxt9P.js} +1 -1
- package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-BCTUdU4z.js → requirementDiagram-LRYGKXZP-Cjqa6vo3.js} +1 -1
- package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-B6wzbZmB.js → sankeyDiagram-W5VNT64P-D3Fa250Z.js} +1 -1
- package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-BGt8d3QQ.js → sequenceDiagram-SI44F4Z6-2PdrNajj.js} +1 -1
- package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-7nlhJKo7.js → sizeCapture-X5ZJPWSS-BBcuGeZn.js} +1 -1
- package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-Cv2stqMA.js → stateDiagram-OKZ733FA-CSJX9X6s.js} +1 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-Cqskj0zt.js +1 -0
- package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-qDAo4Yc1.js → swimlanes-SLNWSIFB-pOUU1bic.js} +2 -2
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-CM0ZIhNP.js +8 -0
- package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-CKbDNKTr.js → timeline-definition-Z64GVDOM-CAeqfQn0.js} +1 -1
- package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-DI-9EHic.js → vennDiagram-T6HMQDX7-DYPLOMVO.js} +1 -1
- package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-BrzzRDpX.js → wardleyDiagram-T6FBY63Y-Dy2V0Cha.js} +1 -1
- package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-BclH5hGh.js → xychartDiagram-ELKLHX3M-Dj9o7jrn.js} +1 -1
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +33 -1
- package/dist/worker/console/static-src/operator-chat/chat-stream-continuity.js +101 -0
- package/dist/worker/console/static-src/operator-chat/compaction-message.js +18 -3
- package/dist/worker/console/static-src/operator-chat/pending-user-message.js +17 -3
- package/dist/worker/console/static-src/operator-chat/tools-catalog.js +16 -7
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +15 -7
- package/dist/worker/console/static-src/operator-chat/useChatStream.js +47 -5
- package/dist/worker/console/static-src/operator-chat/useChatThread.js +24 -2
- package/dist/worker/console/workspace-context.js +2 -0
- package/dist/worker/observe/static/console-theme.css +174 -0
- package/dist/worker/observe/static/console-theme.js +36 -0
- package/dist/worker/observe/static/operator-chrome.css +85 -0
- package/dist/worker/observe/static/operator-chrome.js +51 -0
- package/dist/worker/scheduler/scheduled-goal-evidence.js +60 -2
- package/dist/worker/scheduler/scheduled-goal-store.js +10 -0
- package/package.json +3 -1
- package/dist/worker/console/static/assets/channel-ChE7y-cx.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-C01TCf2X.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-C01TCf2X.js +0 -1
- package/dist/worker/console/static/assets/index-BWkIfcrK.css +0 -1
- package/dist/worker/console/static/assets/index-Cdkvw_H6.js +0 -469
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DC7V5vcq.js +0 -1
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-Bwy4QUTO.js +0 -8
package/dist/build-stamp.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "0.44.0-next.
|
|
4
|
-
"gitSha": "
|
|
5
|
-
"builtAt": "2026-09-
|
|
3
|
+
"version": "0.44.0-next.3",
|
|
4
|
+
"gitSha": "2bc5338a83fc147e9ac1a201797b3d04f5617bbe",
|
|
5
|
+
"builtAt": "2026-09-15T12:05:43.839Z"
|
|
6
6
|
}
|
|
@@ -9,9 +9,32 @@ import { BoundedTextPreview, classifyPiFailure, createPiJsonlStreamCollector, DE
|
|
|
9
9
|
import { serializeSessionEvent } from "./pi-event-serializer.js";
|
|
10
10
|
import { PI_RECOMMENDED_COMPACTION, PI_RECOMMENDED_RETRY, } from "../shared/pi-retry-settings.js";
|
|
11
11
|
import { createCompactionController, createContextPressureExtension, createSiftBridgeState, inMemoryCompactionSettings, isDagSiftEnabled, parseCompactionPolicy, parseSiftBridgeConfig, SIFT_RETRIEVE_TOOL_NAME, } from "../shared/pi-context-pressure/index.js";
|
|
12
|
+
import { DAG_TELEMETRY_SESSION_ID_ENV, injectWizardLocalTelemetryHeaders, isTelemetrySessionId, } from "../shared/wizard-local-telemetry.js";
|
|
12
13
|
/** Maximum number of same-session continuations after provider output truncation. */
|
|
13
14
|
export const PI_SDK_OUTPUT_LIMIT_CONTINUE_MAX = 3;
|
|
14
15
|
export const PI_SDK_OUTPUT_LIMIT_CONTINUE_PROMPT = "继续。上一轮因输出长度上限(stopReason=length)截断;当前会话、工具与已完成工作仍保留。只完成尚未完成的部分,不重做已成功的写入或事实提交。";
|
|
16
|
+
export function createDagWizardLocalTelemetryHeadersExtension(telemetrySessionId) {
|
|
17
|
+
if (!isTelemetrySessionId(telemetrySessionId))
|
|
18
|
+
return undefined;
|
|
19
|
+
return {
|
|
20
|
+
name: "dag-wizard-local-telemetry-headers",
|
|
21
|
+
hidden: true,
|
|
22
|
+
factory: (api) => {
|
|
23
|
+
api.on("before_provider_headers", async (rawEvent, context) => {
|
|
24
|
+
if (!context ||
|
|
25
|
+
!rawEvent.headers ||
|
|
26
|
+
typeof rawEvent.headers !== "object") {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
await injectWizardLocalTelemetryHeaders({
|
|
30
|
+
headers: rawEvent.headers,
|
|
31
|
+
context,
|
|
32
|
+
telemetrySessionId,
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
15
38
|
/** Wrap the actual stream seam: tool turns, retries and compaction all await it. */
|
|
16
39
|
export async function installPiProviderRequestBudget(session, reserve, onFailure, capacity) {
|
|
17
40
|
const agent = session.agent;
|
|
@@ -290,6 +313,8 @@ async function createSdkSession(sdk, input, shared) {
|
|
|
290
313
|
controller,
|
|
291
314
|
sift,
|
|
292
315
|
});
|
|
316
|
+
const telemetryExtension = createDagWizardLocalTelemetryHeadersExtension(input.telemetrySessionId);
|
|
317
|
+
const extensionFactories = [pressureExtension, telemetryExtension].filter((extension) => Boolean(extension));
|
|
293
318
|
const loader = new DefaultResourceLoader({
|
|
294
319
|
cwd: input.cwd,
|
|
295
320
|
agentDir,
|
|
@@ -299,7 +324,7 @@ async function createSdkSession(sdk, input, shared) {
|
|
|
299
324
|
...(input.additionalExtensionPaths && input.additionalExtensionPaths.length > 0
|
|
300
325
|
? { additionalExtensionPaths: input.additionalExtensionPaths }
|
|
301
326
|
: {}),
|
|
302
|
-
...(
|
|
327
|
+
...(extensionFactories.length > 0 ? { extensionFactories } : {}),
|
|
303
328
|
...(settingsManager ? { settingsManager } : {}),
|
|
304
329
|
appendSystemPromptOverride: (base) => [
|
|
305
330
|
...base,
|
|
@@ -718,6 +743,9 @@ async function executeSingleSdkAttemptInternal(options) {
|
|
|
718
743
|
provider: modelConfig.provider,
|
|
719
744
|
model: modelConfig.model,
|
|
720
745
|
thinking: modelConfig.thinking,
|
|
746
|
+
telemetrySessionId: isTelemetrySessionId(process.env[DAG_TELEMETRY_SESSION_ID_ENV])
|
|
747
|
+
? process.env[DAG_TELEMETRY_SESSION_ID_ENV]
|
|
748
|
+
: undefined,
|
|
721
749
|
...(Array.isArray(writerCustomTools) && writerCustomTools.length > 0
|
|
722
750
|
? { customTools: writerCustomTools }
|
|
723
751
|
: {}),
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export const DAG_TELEMETRY_SESSION_ID_ENV = "LOOP_AGENT_DAG_TELEMETRY_SESSION_ID";
|
|
2
|
+
export const WIZARD_LOCAL_DEFAULT_USER_AGENT = "Builder/OpenCode ai-sdk/provider-utils/4.0.21 runtime/bun/1.3.11";
|
|
3
|
+
export function isTelemetrySessionId(value) {
|
|
4
|
+
return (typeof value === "string" &&
|
|
5
|
+
/^ses_[0-9A-Za-z]{10,128}$/.test(value));
|
|
6
|
+
}
|
|
7
|
+
function deleteHeaderCaseInsensitive(headers, name) {
|
|
8
|
+
for (const key of Object.keys(headers)) {
|
|
9
|
+
if (key.toLowerCase() === name.toLowerCase())
|
|
10
|
+
delete headers[key];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function configuredHeader(headers, name) {
|
|
14
|
+
const key = Object.keys(headers ?? {}).find((entry) => entry.toLowerCase() === name.toLowerCase());
|
|
15
|
+
return key ? headers?.[key] : undefined;
|
|
16
|
+
}
|
|
17
|
+
function setStaticHeader(headers, configured, name, defaultValue) {
|
|
18
|
+
deleteHeaderCaseInsensitive(headers, name);
|
|
19
|
+
headers[name] = configuredHeader(configured, name) ?? defaultValue;
|
|
20
|
+
}
|
|
21
|
+
/** Apply the shared reporting identity without changing Pi's internal session. */
|
|
22
|
+
export async function injectWizardLocalTelemetryHeaders(options) {
|
|
23
|
+
const model = options.context.model;
|
|
24
|
+
if (model?.provider !== "wizard-local" ||
|
|
25
|
+
!model.id ||
|
|
26
|
+
!isTelemetrySessionId(options.telemetrySessionId)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const modelRegistry = options.context.modelRegistry;
|
|
30
|
+
if (!modelRegistry?.getApiKeyAndHeaders)
|
|
31
|
+
return;
|
|
32
|
+
// Keep the call attached because ModelRegistry reads private runtime state via `this`.
|
|
33
|
+
const auth = await modelRegistry.getApiKeyAndHeaders(model);
|
|
34
|
+
if (!auth.ok || typeof auth.apiKey !== "string" || !auth.apiKey)
|
|
35
|
+
return;
|
|
36
|
+
setStaticHeader(options.headers, auth.headers, "client-code", "OpenCode");
|
|
37
|
+
setStaticHeader(options.headers, auth.headers, "User-Agent", WIZARD_LOCAL_DEFAULT_USER_AGENT);
|
|
38
|
+
for (const name of [
|
|
39
|
+
"x-api-key",
|
|
40
|
+
"X-Session-Id",
|
|
41
|
+
"X-Model-Id",
|
|
42
|
+
"ws-auth",
|
|
43
|
+
"ws-sign",
|
|
44
|
+
]) {
|
|
45
|
+
deleteHeaderCaseInsensitive(options.headers, name);
|
|
46
|
+
}
|
|
47
|
+
options.headers["x-api-key"] = auth.apiKey;
|
|
48
|
+
options.headers["X-Session-Id"] = options.telemetrySessionId;
|
|
49
|
+
options.headers["X-Model-Id"] = model.id;
|
|
50
|
+
}
|
|
@@ -1074,6 +1074,9 @@ export function createChatEventStore(options) {
|
|
|
1074
1074
|
epoch(sessionId) {
|
|
1075
1075
|
return ringFor(sessionId).epoch;
|
|
1076
1076
|
},
|
|
1077
|
+
latestSeq(sessionId) {
|
|
1078
|
+
return ringFor(sessionId).nextSeq - 1;
|
|
1079
|
+
},
|
|
1077
1080
|
snapshot(sessionId) {
|
|
1078
1081
|
const ring = rings.get(sessionId) ?? loadRing(sessionId);
|
|
1079
1082
|
if (ring)
|