@tea-agent/loop-agent 0.39.0-next.8 → 0.39.0
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/AGENTS.md +4 -1
- package/CHANGELOG.md +264 -67
- package/README.md +11 -5
- package/bin/loop-agent.js +7 -3
- package/dist/application/dag/generate-task-dag.js +9 -0
- package/dist/application/task-lifecycle/advance.js +4 -0
- package/dist/build-stamp.json +3 -3
- package/dist/cli/command-definitions.js +16 -5
- package/dist/cli/program.js +16 -2
- package/dist/cli/update/notifier.js +2 -2
- package/dist/cli.js +2 -1
- package/dist/commands/dag-rerun.js +55 -1
- package/dist/commands/init-model-catalog.js +464 -0
- package/dist/commands/init-upgrade.js +265 -97
- package/dist/commands/init.js +428 -27
- package/dist/commands/inspect-next.js +8 -0
- package/dist/commands/task-advance.js +31 -0
- package/dist/executors/dag-pi-executor.js +124 -18
- package/dist/executors/pi-event-serializer.js +42 -1
- package/dist/executors/pi-executor.js +51 -0
- package/dist/executors/pi-extension-resolver.js +233 -0
- package/dist/executors/pi-playwright-cli-tool.js +74 -28
- package/dist/executors/pi-sdk-executor.js +187 -59
- package/dist/executors/shell-executor.js +554 -33
- package/dist/executors/shell-write-guard.js +7 -0
- package/dist/shared/dag-failure-category.js +138 -0
- package/dist/shared/dag-prompt-override.js +28 -0
- package/dist/shared/operator/capabilities.js +181 -27
- package/dist/shared/playwright-cli-command-policy.js +15 -0
- package/dist/shared/update/console-notifier.js +100 -0
- package/dist/{cli → shared}/update/npm-client.js +41 -8
- package/dist/{cli → shared}/update/state.js +41 -13
- package/dist/task/config-types.js +28 -0
- package/dist/task/contract/constants.js +1 -0
- package/dist/task/contract/diff.js +26 -0
- package/dist/task/contract/project.js +5 -0
- package/dist/task/contract/schema.js +6 -1
- package/dist/task/source-prepare/build-draft.js +15 -0
- package/dist/task/source-prepare/parse-intent.js +24 -4
- package/dist/worker/cli.js +31 -1
- package/dist/worker/console/chat/deferred-turn.js +91 -0
- package/dist/worker/console/chat/mcp-inventory.js +221 -0
- package/dist/worker/console/chat/operation-card.js +8 -1
- package/dist/worker/console/chat/pi-console-config.js +81 -10
- package/dist/worker/console/chat/pi-runtime.js +165 -83
- package/dist/worker/console/chat/repo-walk.js +10 -1
- package/dist/worker/console/chat/routes.js +480 -55
- package/dist/worker/console/chat/semantic-activity.js +20 -8
- package/dist/worker/console/chat/session-store.js +146 -2
- package/dist/worker/console/chat/turn-process.js +10 -10
- package/dist/worker/console/dag-execution-receipt.js +33 -0
- package/dist/worker/console/inspect-split.js +18 -0
- package/dist/worker/console/operation-run-facts.js +19 -3
- package/dist/worker/console/operator-actions.js +195 -4
- package/dist/worker/console/operator-user-error.js +2 -2
- package/dist/worker/console/pi-readiness.js +5 -4
- package/dist/worker/console/recovery-cta.js +4 -4
- package/dist/worker/console/recovery-error-copy.js +4 -4
- package/dist/worker/console/routes.js +43 -2
- package/dist/worker/console/security.js +63 -9
- package/dist/worker/console/server.js +42 -6
- package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-BLXFe4qI.js → abnfDiagram-N423BO3Z-Br92EGb7.js} +1 -1
- package/dist/worker/console/static/assets/{arc-7iOJeqho.js → arc-oulImtQq.js} +1 -1
- package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-CYoyj5K7.js → architectureDiagram-T3A2C74G-tyHc6aqO.js} +1 -1
- package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-fK01JNlR.js → blockDiagram-VBNYF7ZC-CY86BSpT.js} +1 -1
- package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-bzbw5D_Z.js → c4Diagram-5PPSVZJV-BKKsDmNs.js} +1 -1
- package/dist/worker/console/static/assets/channel-TY36zt-i.js +1 -0
- package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-Cf6hJFFG.js → chunk-2GRJ4B5K-CXZdjl3B.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-DSFXR-et.js → chunk-2Q5K7J3B-B-aIFDQ5.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5RXB4S5H-BagJechl.js → chunk-5RXB4S5H-BDgAW_B2.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5VM5RSS4-E7QNMFaW.js → chunk-5VM5RSS4-DABa4UPR.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-BG_eOBrC.js → chunk-6Q2QTUOP-aGbysVOx.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-GF5L2VYU-Bo42dqol.js → chunk-GF5L2VYU-B8MSZDVs.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-JWPE2WC7-dibM-87v.js → chunk-JWPE2WC7-CpelV73g.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-KBJHAD2P-Bytrp3Oe.js → chunk-KBJHAD2P-BE04ty3z.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-RYQCIY6F-DBABILrr.js → chunk-RYQCIY6F-BUxTkaaR.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-XXDRQBXY-DCUk5Pf9.js → chunk-XXDRQBXY-CYYBVKfX.js} +1 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-Dk7QCChM.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-Dk7QCChM.js +1 -0
- package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-BlGE9v6E.js → cose-bilkent-JH36ORCC-CEQF_xmQ.js} +1 -1
- package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-DGl5ewph.js → cynefin-VYW2F7L2-CqpxN5IT.js} +1 -1
- package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-DsJ_SVH_.js → cynefinDiagram-MW4NZA55-B3PzanVi.js} +1 -1
- package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-BIhjFdzv.js → dagre-VZM6K2ZE-BSUGCNx1.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-7IWD3JNH-Dmy1ctTb.js → diagram-7IWD3JNH-CdLevU5T.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-DYCtWUF3.js → diagram-B4RE2ZJO-BjpF_Kok.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-LBJQPF4R-BMZFHVd2.js → diagram-LBJQPF4R-C4I6NJny.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-Q27KOJAE-b_U8gfaO.js → diagram-Q27KOJAE-C8hecCr5.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-UB23O5K3-Dzy_bn-I.js → diagram-UB23O5K3-Daod6tOS.js} +1 -1
- package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-DJCiMNEI.js → ebnfDiagram-BXEA7PRR-BvvmazGv.js} +1 -1
- package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-28lD016B.js → erDiagram-JOGREHBK-DeN_vfV4.js} +1 -1
- package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-DGyHJmIw.js → flowDiagram-UKHOOZJN-D6dq1t9z.js} +1 -1
- package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-CzdwUjrO.js → ganttDiagram-PKOTCBZU-DziIdNY4.js} +1 -1
- package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-D9bGwuo8.js → gitGraphDiagram-DS77QQ5N-Dy4s5CXr.js} +1 -1
- package/dist/worker/console/static/assets/index-C3GgHg-g.css +1 -0
- package/dist/worker/console/static/assets/index-Ci8ksvBm.js +406 -0
- package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-LJgJUQFC.js → infoDiagram-6WML65LV-Czv5eYx2.js} +1 -1
- package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-98LaB8zb.js → ishikawaDiagram-WSZJBQD7-Bsk3nFRT.js} +1 -1
- package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-D-ISzwlQ.js → journeyDiagram-NVQOT4AX-DxGmNj5K.js} +1 -1
- package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-gfYOI-EL.js → kanban-definition-27J2QSJJ-CYCFqkO_.js} +1 -1
- package/dist/worker/console/static/assets/{linear-CyntZgKV.js → linear-B0YzRwrd.js} +1 -1
- package/dist/worker/console/static/assets/{mermaid.core-BBOR7dg0.js → mermaid.core-t3EZtIGh.js} +5 -5
- package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-CQAgwPMk.js → mindmap-definition-FAOFIHXS-BTXpTv0T.js} +1 -1
- package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DkMiZFuV.js → pegDiagram-VL7TDLO6-DU8UkKqA.js} +1 -1
- package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-DLNXa_0J.js → pieDiagram-7S7Q4E2Y-DP4y8ohp.js} +1 -1
- package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-Dc7bdzjm.js → quadrantDiagram-CIZ2JOQS-B07vNaYR.js} +1 -1
- package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-BxMB0QqW.js → railroadDiagram-AXF67PYL-xDWktb2i.js} +1 -1
- package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-FjumoKn4.js → requirementDiagram-LRYGKXZP-BLNMKqeS.js} +1 -1
- package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-CkhKc_E3.js → sankeyDiagram-W5VNT64P-n0adalxH.js} +1 -1
- package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-DoBWqTTH.js → sequenceDiagram-SI44F4Z6-BbnS-2DL.js} +1 -1
- package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-CQeh_YeE.js → sizeCapture-X5ZJPWSS-B4uPpCLu.js} +1 -1
- package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-LuHmFW-I.js → stateDiagram-OKZ733FA--MMbB0fX.js} +1 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BqOigMQ4.js +1 -0
- package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-CHwbDctY.js → swimlanes-SLNWSIFB-BXUgp2QY.js} +2 -2
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-Caxz9UA2.js +8 -0
- package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-CoMngk0X.js → timeline-definition-Z64GVDOM-CsaMxki7.js} +1 -1
- package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-CURYbtbO.js → vennDiagram-T6HMQDX7-C2IuG9iH.js} +1 -1
- package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-BdqSECjU.js → wardleyDiagram-T6FBY63Y-CmEWOXCW.js} +1 -1
- package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-DbMUYuAg.js → xychartDiagram-ELKLHX3M-D_9LE0MG.js} +1 -1
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/app/useOperatorActions.js +1 -1
- package/dist/worker/console/static-src/app/useRecoveryActions.js +2 -2
- package/dist/worker/console/static-src/app/useRecoveryConsole.js +38 -2
- package/dist/worker/console/static-src/app/useRunProgress.js +46 -0
- package/dist/worker/console/static-src/operator-chat/cards/failure-category-advice.js +25 -0
- package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +74 -26
- package/dist/worker/console/static-src/operator-chat/input-history.js +76 -0
- package/dist/worker/console/static-src/operator-chat/mutation-gate.js +1 -1
- package/dist/worker/console/static-src/operator-chat/open-preview-in-browser.js +328 -0
- package/dist/worker/console/static-src/operator-chat/resource-diagnostics.js +204 -0
- package/dist/worker/console/static-src/operator-chat/turn-stream-controller.js +8 -1
- package/dist/worker/console/static-src/operator-chat/turn-submission.js +54 -0
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +3 -0
- package/dist/worker/console/static-src/operator-chat/useChatStream.js +237 -11
- package/dist/worker/console/static-src/operator-chat/useChatThread.js +50 -22
- package/dist/worker/console/static-src/operator-chat/useComposer.js +32 -0
- package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +26 -1
- package/dist/worker/console/static-src/pages/tasks/run-id-resolution.js +79 -0
- package/dist/worker/console/static-src/pages/tasks/run-ownership-verify.js +23 -0
- package/dist/worker/console/static-src/pages/tasks/run-panel-progress.js +110 -0
- package/dist/worker/loop-agent/loop-agent-client.js +7 -3
- package/dist/worker/materialize/harness-task-lineage.js +5 -2
- package/dist/worker/observability/read-model.js +22 -0
- package/dist/worker/observe/node-input.js +74 -3
- package/dist/worker/observe/node-process.js +377 -0
- package/dist/worker/observe/routes.js +36 -3
- package/dist/worker/observe/shell-handler-keys.js +34 -0
- package/dist/worker/observe/static/api.js +66 -0
- package/dist/worker/observe/static/constants.js +8 -1
- package/dist/worker/observe/static/dag-history-labels.js +4 -0
- package/dist/worker/observe/static/format.js +23 -0
- package/dist/worker/observe/static/markdown-render.js +20 -1
- package/dist/worker/observe/static/operator-chrome.js +4 -0
- package/dist/worker/observe/static/state.js +13 -2
- package/dist/worker/observe/static/styles.css +73 -0
- package/dist/worker/observe/static/views/dag-inspector.js +612 -8
- package/dist/worker/observe/static/views/dag.js +8 -1
- package/dist/worker/observe/static/views/failures.js +5 -2
- package/dist/worker/observe/static/views/session-timeline.js +78 -9
- package/dist/workflows/dag/backend-test-case-coverage-analysis.js +827 -53
- package/dist/workflows/dag/backend-test-case-manifest.js +4 -0
- package/dist/workflows/dag/backend-test-execution-contract.js +18 -9
- package/dist/workflows/dag/backend-test-gap-fill.js +205 -0
- package/dist/workflows/dag/backend-test-intake-context.js +32 -0
- package/dist/workflows/dag/backend-test-layout.js +133 -0
- package/dist/workflows/dag/backend-test-markdown-workflow.js +167 -32
- package/dist/workflows/dag/backend-test-module-stem.js +5 -0
- package/dist/workflows/dag/backend-test-pytest-collection.js +368 -33
- package/dist/workflows/dag/backend-test-result-contract.js +1 -1
- package/dist/workflows/dag/backend-test-scenario-param.js +884 -140
- package/dist/workflows/dag/backend-test-scenario-partitions.js +321 -0
- package/dist/workflows/dag/backend-test-writer-completeness.js +100 -56
- package/dist/workflows/dag/contract-output-registry.js +15 -0
- package/dist/workflows/dag/contract-validator-registrations.js +3 -1
- package/dist/workflows/dag/convergence/controller.js +141 -0
- package/dist/workflows/dag/dynamic-runtime/loop-until.js +1 -1
- package/dist/workflows/dag/dynamic-runtime/map.js +25 -9
- package/dist/workflows/dag/dynamic-runtime/shared.js +1 -1
- package/dist/workflows/dag/failure-category.js +7 -116
- package/dist/workflows/dag/frontend-implementation-contract.js +377 -4
- package/dist/workflows/dag/frontend-plan-render.js +1 -1
- package/dist/workflows/dag/frontend-prewrite-gate.js +96 -84
- package/dist/workflows/dag/frontend-repair.js +14 -0
- package/dist/workflows/dag/frontend-risk.js +15 -2
- package/dist/workflows/dag/frontend-test-case-checklist.js +30 -4
- package/dist/workflows/dag/frontend-test-case-manifest.js +11 -4
- package/dist/workflows/dag/frontend-test-case-quality.js +11 -16
- package/dist/workflows/dag/frontend-test-environment-probe.js +230 -0
- package/dist/workflows/dag/frontend-test-html-report.js +3 -1
- package/dist/workflows/dag/frontend-test-l5-report.js +3 -1
- package/dist/workflows/dag/frontend-test-layout.js +159 -0
- package/dist/workflows/dag/frontend-test-markdown.js +61 -0
- package/dist/workflows/dag/frontend-test-result-contract.js +188 -42
- package/dist/workflows/dag/frontend-test-standard-scenarios.js +70 -0
- package/dist/workflows/dag/frontend-verification-trace.js +29 -4
- package/dist/workflows/dag/init-hybrid.js +894 -205
- package/dist/workflows/dag/node-execution.js +183 -15
- package/dist/workflows/dag/prompt.js +60 -1
- package/dist/workflows/dag/rerun-feedback.js +212 -0
- package/dist/workflows/dag/rerun-plan.js +224 -27
- package/dist/workflows/dag/rerun-run.js +61 -6
- package/dist/workflows/dag/rerun-task.js +61 -2
- package/dist/workflows/dag/retry-policy.js +109 -0
- package/dist/workflows/dag/structured-output-repair.js +712 -0
- package/dist/workflows/dag/types.js +143 -1
- package/dist/workflows/dag/validate.js +64 -20
- package/docs/init-surface.manifest.json +5 -0
- package/docs/operations/README.md +1 -1
- package/docs/operations/local-development-environment.md +1 -5
- package/docs/skills/vetted-skill-registry.md +14 -0
- package/docs/templates/README.md +1 -1
- package/docs/templates/agent-dag.schema.json +44 -0
- package/docs/templates/backend-test-dag.json +60 -35
- package/docs/templates/frontend-implementation-contract.schema.json +1 -1
- package/docs/templates/frontend-test-case-checklist.md +2 -2
- package/docs/templates/frontend-test-dag.json +8 -10
- package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +1 -1
- package/docs/templates/init-managed-agents.md +13 -3
- package/harness.json +6 -4
- package/package.json +12 -4
- package/scripts/next-info.mjs +356 -0
- package/scripts/next-publish-gate.mjs +238 -0
- package/scripts/release-source-binding.mjs +251 -0
- package/skills/analyze-product-requirements/SKILL.md +8 -5
- package/skills/analyze-product-requirements/references/acceptance-criteria.md +1 -1
- package/skills/analyze-product-requirements/references/clarification-and-knowledge.md +10 -6
- package/skills/analyze-product-requirements/references/example.md +50 -0
- package/skills/analyze-product-requirements/references/forward-test-cases.md +11 -7
- package/skills/analyze-product-requirements/references/kb-integration.md +5 -5
- package/skills/analyze-product-requirements/references/product-analysis-schema.md +8 -4
- package/skills/analyze-product-requirements/references/product-requirement-schema.md +2 -2
- package/skills/analyze-product-requirements/references/requirement-clarification-schema.md +1 -1
- package/skills/analyze-product-requirements/scripts/test-validators.mjs +11 -1
- package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +20 -1
- package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +9 -0
- package/skills/codebase-scout/SKILL.md +1 -1
- package/skills/fe-test-ui-scout/SKILL.md +65 -0
- package/skills/fe-test-ui-scout/references/ledger-schema.md +62 -0
- package/skills/fe-test-ui-scout/references/recon-protocol.md +54 -0
- package/skills/frontend-implementation/references/node-contracts.md +2 -2
- package/skills/improve-codebase-architecture/SKILL.md +81 -0
- package/skills/improve-codebase-architecture/deepening.md +37 -0
- package/skills/improve-codebase-architecture/html-report.md +123 -0
- package/skills/improve-codebase-architecture/interface-design.md +44 -0
- package/skills/improve-codebase-architecture/language.md +53 -0
- package/skills/loop-agent/references/command-reference.md +11 -4
- package/skills/playwright-cli/SKILL.md +23 -1
- package/skills/playwright-cli-case-generator/SKILL.md +29 -8
- package/dist/worker/console/static/assets/channel-BBOTJHvD.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-Cm8Yf8tD.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-Cm8Yf8tD.js +0 -1
- package/dist/worker/console/static/assets/index-B-qWGThd.js +0 -325
- package/dist/worker/console/static/assets/index-C-xRgY_0.css +0 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DZihfdKc.js +0 -1
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-CKnXCjHX.js +0 -8
|
@@ -53,7 +53,14 @@ export const UI_TEXT = {
|
|
|
53
53
|
inputError: "加载节点输入失败。",
|
|
54
54
|
inputFrozenLabel: "冻结 DAG 节点定义",
|
|
55
55
|
inputFingerprintNote: "仅保存 assembled prompt 指纹,全文未持久化",
|
|
56
|
-
noSessionEvents: "
|
|
56
|
+
noSessionEvents: "该 Pi 节点暂无过程日志(可能尚未执行、走 CLI 路径,或为历史 run)",
|
|
57
|
+
noShellProcess: "该 shell 节点尚未留下命令回执。",
|
|
58
|
+
noPresetProcess: "该内部处理器尚未留下过程回执。",
|
|
59
|
+
staticNoProcess: "静态节点没有逐步执行过程,请查看节点输出。",
|
|
60
|
+
processLoading: "正在加载执行过程…",
|
|
61
|
+
processError: "加载执行过程失败。",
|
|
62
|
+
shellCommandsHeading: "Shell 命令",
|
|
63
|
+
shellPresetHeading: "内部处理器",
|
|
57
64
|
noArtifacts: "暂无产物记录。",
|
|
58
65
|
noActiveCommand: "当前没有正在执行的命令。",
|
|
59
66
|
noFailures: "当前没有异常 Task。",
|
|
@@ -14,6 +14,10 @@ const ATTEMPT_FAILURE_LABELS = {
|
|
|
14
14
|
timeout: "执行超时",
|
|
15
15
|
"nonzero-exit": "命令执行失败",
|
|
16
16
|
"invalid-output": "输出格式无效",
|
|
17
|
+
"structured-output-truncated": "结构化输出被截断",
|
|
18
|
+
"output-too-large": "输出超出体积上限",
|
|
19
|
+
"structured-repair-exhausted": "结构化修复耗尽",
|
|
20
|
+
"governance-blocked": "治理规则阻断",
|
|
17
21
|
"empty-output": "输出为空",
|
|
18
22
|
auth: "认证失败",
|
|
19
23
|
quota: "额度或限流",
|
|
@@ -345,3 +345,26 @@ export function formatRepoPathDisplay(repoRoot) {
|
|
|
345
345
|
.replace(/^\/Users\/[^/]+/, "~")
|
|
346
346
|
.replace(/^\/home\/[^/]+/, "~");
|
|
347
347
|
}
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* If `text` is a complete JSON object or array, return pretty-printed JSON.
|
|
351
|
+
* Primitives, JSONL, truncated/invalid JSON, and markdown return null so
|
|
352
|
+
* callers can fall back to Markdown rendering.
|
|
353
|
+
*/
|
|
354
|
+
export function prettyJsonBlock(text) {
|
|
355
|
+
if (typeof text !== "string") return null;
|
|
356
|
+
const trimmed = text.trim();
|
|
357
|
+
if (trimmed.length < 2) return null;
|
|
358
|
+
const start = trimmed[0];
|
|
359
|
+
const end = trimmed[trimmed.length - 1];
|
|
360
|
+
if (!((start === "{" && end === "}") || (start === "[" && end === "]"))) {
|
|
361
|
+
return null;
|
|
362
|
+
}
|
|
363
|
+
try {
|
|
364
|
+
const value = JSON.parse(trimmed);
|
|
365
|
+
if (value === null || typeof value !== "object") return null;
|
|
366
|
+
return JSON.stringify(value, null, 2);
|
|
367
|
+
} catch {
|
|
368
|
+
return null;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/** Shared safe Markdown → DOM rendering for Observe UI. */
|
|
2
2
|
import { el } from "./dom.js";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
parseMarkdownBlocks,
|
|
5
|
+
markdownLinkHref,
|
|
6
|
+
prettyJsonBlock,
|
|
7
|
+
} from "./format.js";
|
|
4
8
|
|
|
5
9
|
export function appendInlineMarkdown(target, text) {
|
|
6
10
|
const tokenPattern = /(`[^`]*`|\*\*[^*]+\*\*|\*[^*]+\*|\[[^\]]+\]\([^)]+\))/g;
|
|
@@ -49,6 +53,21 @@ export function appendParagraphMarkdown(target, text) {
|
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
55
|
|
|
56
|
+
export function renderInspectorDocument(content) {
|
|
57
|
+
const pretty = prettyJsonBlock(content);
|
|
58
|
+
if (pretty != null) {
|
|
59
|
+
const article = el("article", "markdown-output json-output");
|
|
60
|
+
const pre = document.createElement("pre");
|
|
61
|
+
const code = document.createElement("code");
|
|
62
|
+
code.dataset.language = "json";
|
|
63
|
+
code.textContent = pretty;
|
|
64
|
+
pre.appendChild(code);
|
|
65
|
+
article.appendChild(pre);
|
|
66
|
+
return article;
|
|
67
|
+
}
|
|
68
|
+
return renderMarkdown(content);
|
|
69
|
+
}
|
|
70
|
+
|
|
52
71
|
export function renderMarkdown(content) {
|
|
53
72
|
const article = el("article", "markdown-output");
|
|
54
73
|
for (const block of parseMarkdownBlocks(content)) {
|
|
@@ -436,6 +436,10 @@ export function mountOperatorChrome(root, config = {}) {
|
|
|
436
436
|
const a = el("a", `och-mode-btn${btn.active ? " och-on" : ""}`);
|
|
437
437
|
a.href = btn.href;
|
|
438
438
|
a.dataset.mode = btn.id;
|
|
439
|
+
// 2026-08-22: inline-flex 布局下裸文本节点不参与 name-from-content,
|
|
440
|
+
// a11y snapshot 序列化为无名 link;显式 aria-label 保证「操作/观测」
|
|
441
|
+
// 对 find/读屏稳定可断言(frontend-test passed 权威依赖可见 find)。
|
|
442
|
+
a.setAttribute("aria-label", btn.label);
|
|
439
443
|
if (btn.active) a.setAttribute("aria-current", "page");
|
|
440
444
|
a.appendChild(makeIcon(btn.id === "operate" ? "zap" : "eye"));
|
|
441
445
|
a.appendChild(document.createTextNode(btn.label));
|
|
@@ -61,6 +61,12 @@ export const uiState = {
|
|
|
61
61
|
dagNodeInputData: null,
|
|
62
62
|
dagNodeInputError: null,
|
|
63
63
|
dagNodeInputLoading: false,
|
|
64
|
+
/** Node-process request identity ("<dagRunId>:<nodeId>:<key>#<seq>"). */
|
|
65
|
+
dagNodeProcessIdentity: null,
|
|
66
|
+
dagNodeProcessRequestSeq: 0,
|
|
67
|
+
dagNodeProcessData: null,
|
|
68
|
+
dagNodeProcessError: null,
|
|
69
|
+
dagNodeProcessLoading: false,
|
|
64
70
|
/**
|
|
65
71
|
* Execution-output request identity ("<dagRunId>:<nodeId>:<key>#<seq>").
|
|
66
72
|
* Stale async responses are rejected when this no longer matches.
|
|
@@ -76,8 +82,8 @@ export const uiState = {
|
|
|
76
82
|
dagNodeExecutionOutputLoading: false,
|
|
77
83
|
dagNodeExecutionOutputError: null,
|
|
78
84
|
dagNodeExecutionOutputKey: null,
|
|
79
|
-
/** When true,「执行过程」展开 message_start/end
|
|
80
|
-
sessionTimelineShowProtocol:
|
|
85
|
+
/** When true,「执行过程」展开 message_start/end 原始协议事件。默认展开,用户可点选隐藏。 */
|
|
86
|
+
sessionTimelineShowProtocol: true,
|
|
81
87
|
/** Open <details> keys restored across timeline re-renders. */
|
|
82
88
|
sessionTimelineOpenDetails: null,
|
|
83
89
|
lastSnapshot: null,
|
|
@@ -222,6 +228,11 @@ export function makeDagNodeInputIdentity(dagRunId, nodeId) {
|
|
|
222
228
|
return `${dagRunId}:${nodeId}#${uiState.dagNodeInputRequestSeq}`;
|
|
223
229
|
}
|
|
224
230
|
|
|
231
|
+
export function makeDagNodeProcessIdentity(dagRunId, nodeId, key) {
|
|
232
|
+
uiState.dagNodeProcessRequestSeq += 1;
|
|
233
|
+
return `${dagRunId}:${nodeId}:${key ?? "latest"}#${uiState.dagNodeProcessRequestSeq}`;
|
|
234
|
+
}
|
|
235
|
+
|
|
225
236
|
/** Build a fresh execution-output identity token (includes key). */
|
|
226
237
|
export function makeDagNodeExecutionOutputIdentity(dagRunId, nodeId, key) {
|
|
227
238
|
uiState.dagNodeExecutionOutputRequestSeq += 1;
|
|
@@ -2111,6 +2111,9 @@ body.is-resizing-dag-graph {
|
|
|
2111
2111
|
background: transparent;
|
|
2112
2112
|
color: inherit;
|
|
2113
2113
|
}
|
|
2114
|
+
.markdown-output.json-output pre {
|
|
2115
|
+
white-space: pre;
|
|
2116
|
+
}
|
|
2114
2117
|
.markdown-output a {
|
|
2115
2118
|
color: var(--orange-active);
|
|
2116
2119
|
text-decoration-color: var(--orange);
|
|
@@ -3565,3 +3568,73 @@ button.copy-command:focus-visible {
|
|
|
3565
3568
|
.custom-select-option.is-selected .custom-select-option-check {
|
|
3566
3569
|
opacity: 1;
|
|
3567
3570
|
}
|
|
3571
|
+
|
|
3572
|
+
/* Experimental prompt-override rerun tab (only rendered with the mutation token). */
|
|
3573
|
+
.prompt-restart-box {
|
|
3574
|
+
display: flex;
|
|
3575
|
+
flex-direction: column;
|
|
3576
|
+
gap: 0.75rem;
|
|
3577
|
+
padding: 0.5rem 0.25rem;
|
|
3578
|
+
}
|
|
3579
|
+
.prompt-restart-field {
|
|
3580
|
+
display: flex;
|
|
3581
|
+
flex-direction: column;
|
|
3582
|
+
gap: 0.35rem;
|
|
3583
|
+
}
|
|
3584
|
+
.prompt-restart-textarea {
|
|
3585
|
+
width: 100%;
|
|
3586
|
+
min-height: 8rem;
|
|
3587
|
+
resize: vertical;
|
|
3588
|
+
box-sizing: border-box;
|
|
3589
|
+
font-family: var(--mono-font, ui-monospace, SFMono-Regular, Menlo, monospace);
|
|
3590
|
+
font-size: 12.5px;
|
|
3591
|
+
line-height: 1.5;
|
|
3592
|
+
white-space: pre;
|
|
3593
|
+
overflow-wrap: normal;
|
|
3594
|
+
overflow-x: auto;
|
|
3595
|
+
}
|
|
3596
|
+
.prompt-restart-actions {
|
|
3597
|
+
display: flex;
|
|
3598
|
+
gap: 0.5rem;
|
|
3599
|
+
align-items: center;
|
|
3600
|
+
}
|
|
3601
|
+
.prompt-restart-submit {
|
|
3602
|
+
padding: 0.35rem 0.9rem;
|
|
3603
|
+
font-size: 13.5px;
|
|
3604
|
+
cursor: pointer;
|
|
3605
|
+
}
|
|
3606
|
+
.prompt-restart-submit:disabled {
|
|
3607
|
+
opacity: 0.55;
|
|
3608
|
+
cursor: wait;
|
|
3609
|
+
}
|
|
3610
|
+
.prompt-restart-status {
|
|
3611
|
+
margin: 0;
|
|
3612
|
+
font-size: 13px;
|
|
3613
|
+
min-height: 1.2em;
|
|
3614
|
+
white-space: pre-wrap;
|
|
3615
|
+
word-break: break-word;
|
|
3616
|
+
}
|
|
3617
|
+
.prompt-restart-status.prompt-restart-error {
|
|
3618
|
+
color: var(--red, #c0392b);
|
|
3619
|
+
}
|
|
3620
|
+
.prompt-restart-readonly {
|
|
3621
|
+
margin: 0;
|
|
3622
|
+
padding: 0.5rem 0.6rem;
|
|
3623
|
+
font-family: var(--mono-font, ui-monospace, SFMono-Regular, Menlo, monospace);
|
|
3624
|
+
font-size: 12.5px;
|
|
3625
|
+
line-height: 1.5;
|
|
3626
|
+
white-space: pre;
|
|
3627
|
+
overflow: auto;
|
|
3628
|
+
border: 1px solid var(--border-color, rgba(125, 125, 125, 0.35));
|
|
3629
|
+
border-radius: 6px;
|
|
3630
|
+
max-height: 60vh;
|
|
3631
|
+
}
|
|
3632
|
+
.prompt-restart-mode {
|
|
3633
|
+
display: flex;
|
|
3634
|
+
align-items: center;
|
|
3635
|
+
gap: 0.5rem;
|
|
3636
|
+
}
|
|
3637
|
+
.prompt-restart-mode-select {
|
|
3638
|
+
max-width: 100%;
|
|
3639
|
+
font-size: 13px;
|
|
3640
|
+
}
|