chainlesschain 0.166.41 → 0.166.42
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/package.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-CK9AMSXc.js → AIOps-CdsAAOAu.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-B_PARoec.js → ActionButton-B8x5S-3u.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-kB2GmWlI.js → Analytics-C1eOGwSM.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-SnniLCL6.js → AppLayout-CdnpAzuo.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-C30LufT9.js → Artifacts-B0tiKn2i.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-Dx477PoD.js → Audit-DzGqTUvG.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-ClvsCYCT.js → BackgroundAgents-CMXYcy56.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-Bx9uCsgt.js → Backup-DrN3N1_7.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-Br_ecv7G.js → BaseInput-BC9aoifZ.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-Dzr-d6NV.js → Chat-F3Z9p0vk.js} +5 -5
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-BQ7pUK2c.js → ChatBubbleRenderer-LMGrVg9Z.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-C9O-E90A.js → Checkbox-CDXlouzl.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-CTRBkb29.js → Codegen-9c0RpaYc.js} +1 -1
- package/src/assets/web-panel/assets/{Col--50unLLP.js → Col-C-60iGia.js} +1 -1
- package/src/assets/web-panel/assets/{Community-CFtrKGE_.js → Community-DXE04H2M.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DFoxxofh.js → Compact-B4jEuBmH.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CTpxqxpc.js → Compliance-uf13-dcK.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Dr-56gcV.js → Cowork-D6hpxLI4.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-B4xZgO5G.js → Cron-CSJobmkN.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-Da7BQ7f3.js → Crosschain-B0_rTlsi.js} +1 -1
- package/src/assets/web-panel/assets/{DID-DRsk74D5.js → DID-D49FQsiZ.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-DqtAeCxK.js → Dashboard-BvjvIYfC.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-CvWZp7Kk.js → Dropdown-BYe1gODU.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-D2gWVD3O.js → EmailListRenderer-CJ6znfiH.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-BFrROP-5.js → FamilyGuardDashboard-BnoKDllh.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-CNMTv4_n.js → Federation-AqhVFmd4.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-Ct_saU8n.js → FormItemContext-CNVYBpNg.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-CrBn2s3P.js → GenericCardRenderer-BbdYCfjH.js} +1 -1
- package/src/assets/web-panel/assets/{Git-CufnJCrr.js → Git-B_xClOR0.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-DKS1J5P5.js → Governance-CIKCDF9F.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CxB7n-T4.js → Inference-BdRSc0oa.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-uaO_yOid.js → KnowledgeGraph-DknpIQPx.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-DnR-CXn3.js → Logs-BcCPhMaZ.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-H_GkKEp-.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-ePcCe7m1.js → Marketplace-DEMNuvwO.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CAR6PCH2.js → McpTools-D-tg9wfq.js} +2 -2
- package/src/assets/web-panel/assets/{Memory-Bl_H1aqs.js → Memory-BqCLu-X9.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-BjMD_o0K.js → MobileBridge-bN6vwbZc.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-BTM0-1MZ.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-DxN4oBCy.js → Mtc-CcGXXyEn.js} +6 -6
- package/src/assets/web-panel/assets/{MtcAudit-CZg_CONT.js → MtcAudit-B2Z5wPnM.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-D3nrsJvN.js → Multisig-DNW7dKam.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-DfffM-fH.js → NLProgramming-Ciz-g5G3.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-QE3VQe9j.js → Notes-CeiEA6yF.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-CYGciq5y.js → NotificationSettings-DgeiEPwB.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-Cx5IwZLp.js → OrderTableRenderer-D9DjubGK.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-C8RQZUBu.js → Organization-CeA2EC_G.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Dg6cVFza.js → Overflow-DT40ig7t.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DjRkujm6.js → P2P-K4H13K3M.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-CMpEtOjE.js → PdhVaultBrowser-CF7TzZmx.js} +5 -5
- package/src/assets/web-panel/assets/{Permissions-jOoYkoQU.js → Permissions-DYQogL6r.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-CfArs3Fo.js → PersonalDataHub-DXhXVHar.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-DBaHyX1b.js → Pipeline-DQMdn5Ij.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-Wv2VD4nl.js → Privacy-BiF1thop.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CiJPc1_A.js → ProjectInit-C2ptWEn7.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-Dw1cWjEG.js → ProjectSettings-B5WCiDZD.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-CWtB5sqm.js → Projects-BNH6LKU6.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DSn6SDyz.js → Providers-CgRJ8ZT1.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-ft3b2Qpr.js → QrScannerModal-B3tuNJ3V.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-GE6AQSq7.js → QuickAsk-D9CO1SNI.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DMSEq8uY.js → Recommend-BGmwHY_U.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-Uu-HSEai.js → RemoteSession-CliYaolm.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-CIcpi3_V.js → Reputation-sCiX2kmm.js} +1 -1
- package/src/assets/web-panel/assets/{Row-UVMeD3Wm.js → Row-DXHx_bk0.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CD4MNI1l.js → RssFeed-Bg79mIxI.js} +3 -3
- package/src/assets/web-panel/assets/{Search-AlxcFL5q.js → Search-CnKDYqyS.js} +1 -1
- package/src/assets/web-panel/assets/{Security-Du5J0dDR.js → Security-c-0QOrC2.js} +4 -4
- package/src/assets/web-panel/assets/{Services-CGDVJAoN.js → Services-BBBTb4YA.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CCQDNIXk.js → Skeleton-CtL_5fJe.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-4BRwqGQe.js → Skills-DvqrC2_v.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-CgG0JuJh.js → Sla-C5LGNImz.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-qgkTz2pO.js → SpeechSettings-Btx0KgwX.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-DRTuKcuZ.js → SyncSettings-DFLNSWuu.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-BfOq9EqX.js → Tasks-Btkyo0G7.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-d78d-BZI.js → Templates-CIIt_k5J.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-XwKmfX8F.js → Tenant-Nqo1PA2a.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-Wqr2Kcev.js → Terminal-CGwV9hW9.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-BjzPNKDr.js → TimelineRenderer-Bu3xrXyf.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-DWRgtMpW.js → Tokens-3bC3zrYj.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-BCDWY1I7.js → Trigger-DG84V7Xf.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-CI47nsTZ.js → Trust-rPhNXoYJ.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-BxxUVNJf.js → UkeySign-CamNxeAp.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-K6atXnE3.js → VideoEditing-CkIuH4Gm.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-DALnM69L.js → Wallet-SD5W5uHT.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-DiDAUHrG.js → WebAuthn--A4Sddxn.js} +3 -3
- package/src/assets/web-panel/assets/{WorkflowEditor-CCYTnfUH.js → WorkflowEditor-Ca7qvch8.js} +1 -1
- package/src/assets/web-panel/assets/{chat-0oQNEtRw.js → chat-i8OBdjCB.js} +1 -1
- package/src/assets/web-panel/assets/{colors-C1A1ekPG.js → colors-BeYbJKQ8.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-Bm5w8Q--.js → compact-item-BqpF-Sya.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-VzW0CVyb.js → createContext-qXTb29t3.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-DATyiD_X.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-B8u-fCyP.js → hasIn-DOfL0KSW.js} +1 -1
- package/src/assets/web-panel/assets/{index-NzJz9-49.js → index--TQi5102.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dj0yOalO.js → index-0OxY_Nsh.js} +1 -1
- package/src/assets/web-panel/assets/{index-DcmUqRug.js → index-B00rNoIx.js} +1 -1
- package/src/assets/web-panel/assets/{index-DOrjt98B.js → index-B177TAO-.js} +1 -1
- package/src/assets/web-panel/assets/{index-DV_Pfu-b.js → index-BD386d6M.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bg-LBQME.js → index-BKd03Rn4.js} +1 -1
- package/src/assets/web-panel/assets/{index-k5exH2qO.js → index-BOwR6mHU.js} +1 -1
- package/src/assets/web-panel/assets/{index-BicVNOi5.js → index-BYzQaGnV.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dxx4WU96.js → index-BdbrE-hz.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dy85cPQr.js → index-BmzmjSGb.js} +1 -1
- package/src/assets/web-panel/assets/{index-jMjP2tFO.js → index-Bt7Ua7EC.js} +1 -1
- package/src/assets/web-panel/assets/{index-DcLZlcMA.js → index-BuzGZOAK.js} +1 -1
- package/src/assets/web-panel/assets/{index-CtMiuJK-.js → index-ByHZkqj5.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5LAh2pw.js → index-Byn_IHXR.js} +1 -1
- package/src/assets/web-panel/assets/{index-CzTQseVr.js → index-C-P0NHi4.js} +1 -1
- package/src/assets/web-panel/assets/{index-D7q2TsaJ.js → index-C13IM9lj.js} +1 -1
- package/src/assets/web-panel/assets/{index-CX4GAKgB.js → index-C4_8KnUt.js} +1 -1
- package/src/assets/web-panel/assets/{index-BbFi-5C6.js → index-CH7mHJoh.js} +1 -1
- package/src/assets/web-panel/assets/{index-C4_ABRMS.js → index-CLrDyxeZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-C0m5PpMV.js → index-CXXeOim8.js} +1 -1
- package/src/assets/web-panel/assets/{index-BEQNF8dD.js → index-CebShwk1.js} +1 -1
- package/src/assets/web-panel/assets/{index-SmhdgbaR.js → index-Cvig0IjN.js} +1 -1
- package/src/assets/web-panel/assets/{index-BdhglNFh.js → index-Cy8WApMp.js} +1 -1
- package/src/assets/web-panel/assets/{index-CflXFLrN.js → index-D8c3Ctj4.js} +1 -1
- package/src/assets/web-panel/assets/{index-KCmGGWAT.js → index-DCcXU9HN.js} +3 -3
- package/src/assets/web-panel/assets/{index-D6ou7QIj.js → index-DIikgsI1.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVcRk2yF.js → index-DWLxMPZ_.js} +1 -1
- package/src/assets/web-panel/assets/{index-BIYC0OR5.js → index-Dio2mTWq.js} +1 -1
- package/src/assets/web-panel/assets/index-DmzMCELP.js +1 -0
- package/src/assets/web-panel/assets/{index-CpZdwtCH.js → index-GGEsF-NA.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfKBL8PY.js → index-JxyF4KNw.js} +1 -1
- package/src/assets/web-panel/assets/{index-DW-aGHSh.js → index-TAvlGp5l.js} +1 -1
- package/src/assets/web-panel/assets/index-TlPg2Jz6.js +1 -0
- package/src/assets/web-panel/assets/{index-lE4Q1Goz.js → index-X8TXf9Bb.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBE3blUA.js → index-czHvbhS0.js} +1 -1
- package/src/assets/web-panel/assets/{index-CXEOVGeZ.js → index-nl9IxLfv.js} +1 -1
- package/src/assets/web-panel/assets/{index-5dKHibv1.js → index-rdW8KX_7.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjMG0Vw9.js → index-vNYrAXO6.js} +1 -1
- package/src/assets/web-panel/assets/{index-CicT_guC.js → index-zmvw3Ptl.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DbZ3dIR7.js → initDefaultProps-BKpYiODg.js} +1 -1
- package/src/assets/web-panel/assets/{motion-ATVJwqzT.js → motion-DJ2p-V-R.js} +1 -1
- package/src/assets/web-panel/assets/{move-Bxj0ZywY.js → move-CmA2ejm5.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-0j7iOj1h.js → mtc-parser-CAIGxQzN.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DsAzx9jL.js → omit-DJlnhA7K.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-CIyAoQIB.js → pickAttrs-CZPrJyhF.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-KU51oLwW.js → placementArrow-CXy74okE.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CCmx1m3K.js → responsiveObserve-DexkLtci.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CoxSb_UP.js → slide-BzjBJbPV.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-B-3-3uWm.js → statusUtils-gnHIXw2X.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-BT1IFFpw.js → styleChecker-DHBjT1Gk.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-CEKYnxGt.js → useFlexGapSupport-BmMStW87.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-B_UyzZK-.js → useFs-BcV5VGA2.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-B7fGu-O1.js → usePersonalDataHub-DBxxRRY2.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-BLOmOgkK.js → vnode-Bt5yp9hj.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-8yzckhp-.js → zoom-CMdUkOfw.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/data/changelog.json +13 -0
- package/src/lib/pr-investigation-policy.js +42 -0
- package/src/lib/read-file-loop-guard.js +20 -0
- package/src/lib/remote-read-loop-guard.js +52 -6
- package/src/lib/task-progress-tracker.js +62 -3
- package/src/runtime/agent-core.js +126 -23
- package/src/assets/web-panel/assets/MarkdownRenderer-DdkDiGUd.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects--CKxaWJC.js +0 -1
- package/src/assets/web-panel/assets/devWarning-BuusI785.js +0 -1
- package/src/assets/web-panel/assets/index-BiH_a1Cv.js +0 -1
- package/src/assets/web-panel/assets/index-t3MTPSt6.js +0 -1
|
@@ -22,6 +22,12 @@ import {
|
|
|
22
22
|
} from "../lib/read-file-page.js";
|
|
23
23
|
import { ReadFileLoopGuard } from "../lib/read-file-loop-guard.js";
|
|
24
24
|
import { RemoteReadLoopGuard } from "../lib/remote-read-loop-guard.js";
|
|
25
|
+
import {
|
|
26
|
+
isPrActionRequest,
|
|
27
|
+
PR_ACTION_GUIDANCE,
|
|
28
|
+
PR_INVESTIGATION_LIMIT,
|
|
29
|
+
PR_INVESTIGATION_EXIT_GUIDANCE,
|
|
30
|
+
} from "../lib/pr-investigation-policy.js";
|
|
25
31
|
import {
|
|
26
32
|
findExplicitPrCloseIntent,
|
|
27
33
|
prCloseActionDirective,
|
|
@@ -13936,6 +13942,7 @@ export async function* agentLoop(messages, options) {
|
|
|
13936
13942
|
let emptyThinkingReprompted = false;
|
|
13937
13943
|
const readFileLoopGuard = new ReadFileLoopGuard();
|
|
13938
13944
|
const remoteReadLoopGuard = new RemoteReadLoopGuard();
|
|
13945
|
+
const prActionTask = isPrActionRequest(messages);
|
|
13939
13946
|
// Keep an explicit user-requested PR close action alive even if the
|
|
13940
13947
|
// conversation is compacted down to tool evidence. It is guidance only;
|
|
13941
13948
|
// the ordinary execution approval remains mandatory for every close.
|
|
@@ -14550,8 +14557,15 @@ export async function* agentLoop(messages, options) {
|
|
|
14550
14557
|
const newProgressIntervention =
|
|
14551
14558
|
progressIntervention &&
|
|
14552
14559
|
progressIntervention.key !== lastTaskProgressIntervention;
|
|
14553
|
-
|
|
14554
|
-
|
|
14560
|
+
// Warnings are deduplicated, recovery is not. A search or failed command
|
|
14561
|
+
// must not restore broad discovery on the very next model request.
|
|
14562
|
+
const taskRecoveryTurn = progressIntervention?.recovery === true;
|
|
14563
|
+
const prInvestigationExhausted =
|
|
14564
|
+
prActionTask &&
|
|
14565
|
+
taskProgressTracker.explorationCalls >= PR_INVESTIGATION_LIMIT;
|
|
14566
|
+
const taskRecoveryTools = TASK_RECOVERY_TOOLS.filter(
|
|
14567
|
+
(tool) => tool !== "read_file" || !readFileLoopGuard.hasUnreadPages,
|
|
14568
|
+
);
|
|
14555
14569
|
if (newProgressIntervention) {
|
|
14556
14570
|
lastTaskProgressIntervention = progressIntervention.key;
|
|
14557
14571
|
// Reuse the existing warning event so CLI, REPL and IDE clients all show
|
|
@@ -14561,24 +14575,31 @@ export async function* agentLoop(messages, options) {
|
|
|
14561
14575
|
message:
|
|
14562
14576
|
progressIntervention.message +
|
|
14563
14577
|
(taskRecoveryTurn
|
|
14564
|
-
? " Broad reading and new delegation
|
|
14578
|
+
? " Broad reading, web discovery and new delegation remain paused until an actionable tool outcome."
|
|
14565
14579
|
: ""),
|
|
14566
14580
|
};
|
|
14567
14581
|
}
|
|
14568
|
-
const
|
|
14569
|
-
readRecoveryTurn
|
|
14570
|
-
|
|
14571
|
-
|
|
14572
|
-
|
|
14573
|
-
|
|
14574
|
-
|
|
14575
|
-
|
|
14576
|
-
|
|
14577
|
-
|
|
14578
|
-
|
|
14579
|
-
|
|
14580
|
-
|
|
14581
|
-
|
|
14582
|
+
const pausedTools = new Set([
|
|
14583
|
+
...(readRecoveryTurn ? ["read_file"] : []),
|
|
14584
|
+
...(taskRecoveryTurn ? taskRecoveryTools : []),
|
|
14585
|
+
...remoteRecoveryTools,
|
|
14586
|
+
...(prInvestigationExhausted
|
|
14587
|
+
? getEffectiveToolDefinitions(effectiveToolOptions).map(
|
|
14588
|
+
(tool) => tool.function.name,
|
|
14589
|
+
)
|
|
14590
|
+
: []),
|
|
14591
|
+
]);
|
|
14592
|
+
const iterationToolOptions = pausedTools.size
|
|
14593
|
+
? {
|
|
14594
|
+
...effectiveToolOptions,
|
|
14595
|
+
disabledTools: [
|
|
14596
|
+
...new Set([
|
|
14597
|
+
...(effectiveToolOptions.disabledTools || []),
|
|
14598
|
+
...pausedTools,
|
|
14599
|
+
]),
|
|
14600
|
+
],
|
|
14601
|
+
}
|
|
14602
|
+
: effectiveToolOptions;
|
|
14582
14603
|
const readContext = [
|
|
14583
14604
|
readFileLoopGuard.findingsHint,
|
|
14584
14605
|
readFileLoopGuard.progressHint,
|
|
@@ -14628,7 +14649,20 @@ export async function* agentLoop(messages, options) {
|
|
|
14628
14649
|
}
|
|
14629
14650
|
}
|
|
14630
14651
|
const contextMemoryTrustedSystemIndexes = [];
|
|
14631
|
-
if (
|
|
14652
|
+
if (prActionTask && !prInvestigationExhausted) {
|
|
14653
|
+
callMessages = [
|
|
14654
|
+
...callMessages,
|
|
14655
|
+
{
|
|
14656
|
+
role: "system",
|
|
14657
|
+
content: PR_ACTION_GUIDANCE,
|
|
14658
|
+
},
|
|
14659
|
+
];
|
|
14660
|
+
contextMemoryTrustedSystemIndexes.push(callMessages.length - 1);
|
|
14661
|
+
}
|
|
14662
|
+
if (
|
|
14663
|
+
!prInvestigationExhausted &&
|
|
14664
|
+
(remoteReadLoopGuard.recoveryHint || remoteReadLoopGuard.workflowHint)
|
|
14665
|
+
) {
|
|
14632
14666
|
callMessages = [
|
|
14633
14667
|
...callMessages,
|
|
14634
14668
|
{
|
|
@@ -14643,14 +14677,14 @@ export async function* agentLoop(messages, options) {
|
|
|
14643
14677
|
];
|
|
14644
14678
|
contextMemoryTrustedSystemIndexes.push(callMessages.length - 1);
|
|
14645
14679
|
}
|
|
14646
|
-
if (prCloseDirective) {
|
|
14680
|
+
if (prCloseDirective && !prInvestigationExhausted) {
|
|
14647
14681
|
callMessages = [
|
|
14648
14682
|
...callMessages,
|
|
14649
14683
|
{ role: "system", content: prCloseDirective },
|
|
14650
14684
|
];
|
|
14651
14685
|
contextMemoryTrustedSystemIndexes.push(callMessages.length - 1);
|
|
14652
14686
|
}
|
|
14653
|
-
if (progressIntervention) {
|
|
14687
|
+
if (progressIntervention && !prInvestigationExhausted) {
|
|
14654
14688
|
callMessages = [
|
|
14655
14689
|
...callMessages,
|
|
14656
14690
|
{
|
|
@@ -14658,13 +14692,13 @@ export async function* agentLoop(messages, options) {
|
|
|
14658
14692
|
content:
|
|
14659
14693
|
progressIntervention.guidance +
|
|
14660
14694
|
(taskRecoveryTurn
|
|
14661
|
-
?
|
|
14695
|
+
? ` Recovery remains active: ${taskRecoveryTools.join(", ")} are omitted until an actionable tool outcome. Only unfinished, already-started file scans may continue; new whole-file discovery is paused. Focused search, authorized changes and verification remain available.`
|
|
14662
14696
|
: ""),
|
|
14663
14697
|
},
|
|
14664
14698
|
];
|
|
14665
14699
|
contextMemoryTrustedSystemIndexes.push(callMessages.length - 1);
|
|
14666
14700
|
}
|
|
14667
|
-
if (readRecoveryTurn) {
|
|
14701
|
+
if (readRecoveryTurn && !prInvestigationExhausted) {
|
|
14668
14702
|
callMessages = [
|
|
14669
14703
|
...callMessages,
|
|
14670
14704
|
{
|
|
@@ -14675,7 +14709,7 @@ export async function* agentLoop(messages, options) {
|
|
|
14675
14709
|
];
|
|
14676
14710
|
contextMemoryTrustedSystemIndexes.push(callMessages.length - 1);
|
|
14677
14711
|
}
|
|
14678
|
-
if (readFileLoopGuard.recoveryHint) {
|
|
14712
|
+
if (readFileLoopGuard.recoveryHint && !prInvestigationExhausted) {
|
|
14679
14713
|
callMessages = [
|
|
14680
14714
|
...callMessages,
|
|
14681
14715
|
{ role: "system", content: readFileLoopGuard.recoveryHint },
|
|
@@ -14705,6 +14739,14 @@ export async function* agentLoop(messages, options) {
|
|
|
14705
14739
|
}
|
|
14706
14740
|
}
|
|
14707
14741
|
|
|
14742
|
+
if (prInvestigationExhausted) {
|
|
14743
|
+
callMessages = [
|
|
14744
|
+
...callMessages,
|
|
14745
|
+
{ role: "system", content: PR_INVESTIGATION_EXIT_GUIDANCE },
|
|
14746
|
+
];
|
|
14747
|
+
contextMemoryTrustedSystemIndexes.push(callMessages.length - 1);
|
|
14748
|
+
}
|
|
14749
|
+
|
|
14708
14750
|
// Per-span unified ids (P2 observability): the run-level default attributes
|
|
14709
14751
|
// stamp session/agent/workflow ids on every span, but turn/prompt ids are
|
|
14710
14752
|
// per-iteration. A "turn" is one model iteration of the run; "prompt" is the
|
|
@@ -14930,6 +14972,38 @@ export async function* agentLoop(messages, options) {
|
|
|
14930
14972
|
}
|
|
14931
14973
|
|
|
14932
14974
|
const toolCalls = msg.tool_calls;
|
|
14975
|
+
if (prInvestigationExhausted) {
|
|
14976
|
+
// Exactly one synthesis request, even if the provider ignores the empty
|
|
14977
|
+
// tool set or a Stop hook normally asks to continue. Settle usage first;
|
|
14978
|
+
// do not insert unexecuted calls or turn a safety stop into completion.
|
|
14979
|
+
await _awaitBackgroundUsageSettlement(
|
|
14980
|
+
backgroundSubAgents,
|
|
14981
|
+
backgroundUsageFailureState,
|
|
14982
|
+
);
|
|
14983
|
+
yield* _drainSubAgentUsage(subAgentUsageSink);
|
|
14984
|
+
if (toolCalls?.length) {
|
|
14985
|
+
const error = new Error(
|
|
14986
|
+
"PR investigation stopped after repeated exploration without an actionable outcome; the task is incomplete. " +
|
|
14987
|
+
"The model requested more tools after the final synthesis instruction. Retained evidence: " +
|
|
14988
|
+
(
|
|
14989
|
+
taskProgressTracker.checkpointFor(runId) ||
|
|
14990
|
+
remoteReadLoopGuard.findingsHint ||
|
|
14991
|
+
"No verified findings."
|
|
14992
|
+
).slice(0, 2000),
|
|
14993
|
+
);
|
|
14994
|
+
error.code = "CC_AGENT_PR_INVESTIGATION_STALLED";
|
|
14995
|
+
throw error;
|
|
14996
|
+
}
|
|
14997
|
+
yield {
|
|
14998
|
+
type: "response-complete",
|
|
14999
|
+
content:
|
|
15000
|
+
"PR investigation stopped without completing the task.\n\n" +
|
|
15001
|
+
(msg.content ||
|
|
15002
|
+
"No actionable outcome was produced; use the retained findings to identify the missing prerequisite."),
|
|
15003
|
+
};
|
|
15004
|
+
yield { type: "run-ended", runId, reason: "pr-investigation-stalled" };
|
|
15005
|
+
return;
|
|
15006
|
+
}
|
|
14933
15007
|
if (Array.isArray(toolCalls) && toolCalls.length > 0) {
|
|
14934
15008
|
// Allocate missing provider IDs once, before transcript insertion and
|
|
14935
15009
|
// any evidence or execution boundary. This is only local correlation,
|
|
@@ -15132,11 +15206,13 @@ export async function* agentLoop(messages, options) {
|
|
|
15132
15206
|
// falls through to the strictly sequential loop below.
|
|
15133
15207
|
const parallelReads =
|
|
15134
15208
|
options.parallelReadOnlyTools !== false &&
|
|
15209
|
+
!taskRecoveryTurn &&
|
|
15135
15210
|
toolCalls.length > 1 &&
|
|
15136
15211
|
!toolContext.permissionConfirm &&
|
|
15137
15212
|
toolCalls.every(
|
|
15138
15213
|
(c) =>
|
|
15139
15214
|
typeof c?.function?.name === "string" &&
|
|
15215
|
+
!pausedTools.has(c.function.name) &&
|
|
15140
15216
|
_CHECKPOINT_READ_ONLY.has(c.function.name),
|
|
15141
15217
|
);
|
|
15142
15218
|
if (parallelReads) {
|
|
@@ -15363,9 +15439,36 @@ export async function* agentLoop(messages, options) {
|
|
|
15363
15439
|
// hook, or observationally stronger `tool-executing` event. The same
|
|
15364
15440
|
// preflight runs again inside executeTool to prevent call-site drift.
|
|
15365
15441
|
const earlyAuthorityDenial =
|
|
15442
|
+
(pausedTools.has(toolName) ||
|
|
15443
|
+
(taskRecoveryTurn &&
|
|
15444
|
+
toolName === "read_file" &&
|
|
15445
|
+
!(
|
|
15446
|
+
typeof toolArgs?.path === "string" &&
|
|
15447
|
+
readFileLoopGuard.canContinue(
|
|
15448
|
+
path.resolve(toolContext.cwd || process.cwd(), toolArgs.path),
|
|
15449
|
+
toolArgs,
|
|
15450
|
+
)
|
|
15451
|
+
))
|
|
15452
|
+
? {
|
|
15453
|
+
success: false,
|
|
15454
|
+
code: "CC_TOOL_RECOVERY_PAUSED",
|
|
15455
|
+
error: `${toolName} is paused for loop recovery and was not executed. Use retained findings for an authorized action or report the specific blocker; do not repeat or disguise this call.`,
|
|
15456
|
+
}
|
|
15457
|
+
: null) ||
|
|
15366
15458
|
explicitPrCloseActionGuard.admission(toolName, toolArgs) ||
|
|
15367
15459
|
preflightToolExecutionAuthority(toolName, toolArgs, toolContext);
|
|
15368
15460
|
if (earlyAuthorityDenial) {
|
|
15461
|
+
remoteReadLoopGuard.record(toolName, earlyAuthorityDenial, toolArgs);
|
|
15462
|
+
readFileLoopGuard.record(
|
|
15463
|
+
toolName,
|
|
15464
|
+
earlyAuthorityDenial,
|
|
15465
|
+
taskProgressTracker.record(
|
|
15466
|
+
toolName,
|
|
15467
|
+
earlyAuthorityDenial,
|
|
15468
|
+
toolArgs,
|
|
15469
|
+
runId,
|
|
15470
|
+
),
|
|
15471
|
+
);
|
|
15369
15472
|
const resultStr = capToolResultString(
|
|
15370
15473
|
safeStringifyToolResult(earlyAuthorityDenial),
|
|
15371
15474
|
);
|
|
@@ -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-KCmGGWAT.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-BPNCIX/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{w as M};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as n,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as b}from"./vendor-Bn1JzzAn.js";import{_ as v,b as m}from"./index-KCmGGWAT.js";import{a8 as y,M as B}from"./icons-DG5UD-6K.js";const M={__name:"MobileProjects",setup(p,{expose:i}){i();const c=u(),{t:e}=m();function a(){c.push("/projects")}function _(){c.push("/mobile-bridge")}const s={router:c,t:e,goToProjects:a,goToMobileBridge:_,get useRouter(){return u},get useI18n(){return m},get MobileOutlined(){return B},get FolderOutlined(){return y}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},x={class:"mobile-projects-placeholder"},O={class:"title"},k={class:"subtitle"},w={class:"explainer"};function T(p,i,c,e,a,_){const s=n("a-alert"),d=n("a-button"),f=n("a-space"),P=n("a-empty"),j=n("a-card");return h(),g("div",x,[l(j,null,{default:r(()=>[l(P,{description:!1},{image:r(()=>[l(e.MobileOutlined,{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:r(()=>[o("h2",O,t(e.t("mobileProjects.title")),1),o("p",k,t(e.t("mobileProjects.subtitle")),1),l(s,{message:e.t("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),o("div",w,[o("h3",null,t(e.t("mobileProjects.currentDirection")),1),o("p",null,t(e.t("mobileProjects.currentDirectionBody")),1),o("ul",null,[o("li",null,t(e.t("mobileProjects.stepPhone")),1),o("li",null,t(e.t("mobileProjects.stepTap")),1),o("li",null,t(e.t("mobileProjects.stepPull")),1)]),o("h3",null,t(e.t("mobileProjects.reverseDirection")),1),o("p",null,t(e.t("mobileProjects.reverseDirectionBody")),1)]),l(f,{class:"actions"},{default:r(()=>[l(d,{type:"primary",onClick:e.goToProjects},{default:r(()=>[l(e.FolderOutlined),b(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),b(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(M,[["render",T],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-BPNCIX/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as r}from"./index-KCmGGWAT.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-UVMeD3Wm.js";import{a0 as t}from"./index-KCmGGWAT.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-CCmx1m3K.js";import"./useFlexGapSupport-CEKYnxGt.js";import"./styleChecker-BT1IFFpw.js";import"./index-D6ou7QIj.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col--50unLLP.js";import{a0 as t}from"./index-KCmGGWAT.js";import"./vendor-Bn1JzzAn.js";import"./index-D6ou7QIj.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
|