nolo-cli 0.204.0-alpha.3 → 0.205.0-alpha.2
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/{_executeModel-ZUESBV6T.js → _executeModel-U2XB3H4R.js} +17 -17
- package/{agentDeleteCommand-INOBZ3HP.js → agentDeleteCommand-PPB6JA5Y.js} +24 -24
- package/{agentEmailCommands-J6UTZBJC.js → agentEmailCommands-XHDV5OQ2.js} +26 -26
- package/{agentListCommands-6344UIVZ.js → agentListCommands-66ZCC36P.js} +16 -16
- package/{agentMachineCommands-TE6IRTIB.js → agentMachineCommands-XHM2USMU.js} +11 -11
- package/{agentProviderCommands-MEFUIECN.js → agentProviderCommands-SKW4L6NN.js} +2 -2
- package/{agentRecordCommands-34MHHVFX.js → agentRecordCommands-X5YU4AGX.js} +24 -24
- package/{agentRunCommand-7OMDQBRA.js → agentRunCommand-SINW3FLJ.js} +25 -25
- package/{agentRuntimeLocal-EO6WCTF2.js → agentRuntimeLocal-TLV4MITB.js} +9 -9
- package/{agentSlice-HUFGX25R.js → agentSlice-6XXGHTPP.js} +1 -1
- package/{appDeleteCommands-3DCLKVYC.js → appDeleteCommands-3WZVRCAN.js} +13 -13
- package/{appDeployCommands-X3MUBDOP.js → appDeployCommands-HQGQR2FV.js} +13 -13
- package/{appDeployStatusCommands-PXC3EHHS.js → appDeployStatusCommands-XWK7B6VD.js} +13 -13
- package/{appGetCommands-ETPPE6H7.js → appGetCommands-NR2SFXAG.js} +13 -13
- package/{appListCommands-OFIDLALN.js → appListCommands-UREKGWAC.js} +13 -13
- package/{authCommand-KPTIANH2.js → authCommand-NZC3H2EN.js} +62 -8
- package/{chromeOpsCommands-O4J346EQ.js → chromeOpsCommands-ECVS6CAO.js} +1 -1
- package/{chunk-YPYNRTWB.js → chunk-2GKUVGRT.js} +4 -4
- package/{chunk-77GDSGRM.js → chunk-3KUSLYEV.js} +31 -14
- package/{chunk-NGJWYWCF.js → chunk-4RERKW4Q.js} +5 -5
- package/{chunk-VXZ4YYNK.js → chunk-5EOHW7K3.js} +54 -39
- package/{chunk-33W4IFUU.js → chunk-5MXA4LWL.js} +1 -1
- package/{chunk-SXMTSDFS.js → chunk-5OJDQAJ2.js} +2 -2
- package/{chunk-E4KACSRR.js → chunk-5OV4MVQK.js} +2 -2
- package/{chunk-SZXJVQ7L.js → chunk-5XNUQGLF.js} +7 -7
- package/{chunk-IK6AAUGM.js → chunk-6AMR3AE6.js} +2 -2
- package/{chunk-QUJ3IHEK.js → chunk-767YOSGT.js} +2 -2
- package/{chunk-CJ37ZMCQ.js → chunk-7C45ONOU.js} +1 -1
- package/{chunk-RXX262QX.js → chunk-7LJEJV4F.js} +33 -6
- package/{chunk-CQHMBWZH.js → chunk-7NMNKOW5.js} +1 -1
- package/{chunk-EPJFGQYO.js → chunk-7T5TLIY4.js} +1 -1
- package/{chunk-266E37EL.js → chunk-CDGCIP2L.js} +3 -3
- package/{chunk-DQ7PCRZ6.js → chunk-DDERKP4L.js} +4 -4
- package/{chunk-UMIQZ7PX.js → chunk-DGCIYDMU.js} +4 -4
- package/{chunk-M43VXSMX.js → chunk-IAYMBPDZ.js} +2 -2
- package/{chunk-VCFU3BO5.js → chunk-JASKVAYJ.js} +2 -2
- package/{chunk-6I7ZP7KJ.js → chunk-JBWLZ3CB.js} +2 -2
- package/{chunk-SEEXRWNB.js → chunk-K7ZZPUNO.js} +27 -21
- package/{chunk-JH7KMNGT.js → chunk-L5FZUSB6.js} +2 -2
- package/{chunk-BC4UX4EZ.js → chunk-LDPZBAQK.js} +2 -2
- package/{chunk-G7RFM5QA.js → chunk-LKV5K7PW.js} +2 -2
- package/{chunk-4KPB3KWX.js → chunk-LTI5T3A6.js} +309 -82
- package/{chunk-MZXWSY4E.js → chunk-MNWKNN6V.js} +1 -1
- package/{chunk-3MXJWFLO.js → chunk-NUAQ3QHF.js} +1 -1
- package/{chunk-H7HWWNJB.js → chunk-PJILX6KS.js} +1 -1
- package/{chunk-E4LYPSYM.js → chunk-PPCUXO3E.js} +12 -0
- package/{chunk-KCYY5F2P.js → chunk-QSAUX2Q2.js} +2 -2
- package/{chunk-IZLXIV5L.js → chunk-SEOM7GLZ.js} +1 -1
- package/{chunk-6KWPMJ5C.js → chunk-TYKUYQDP.js} +6 -6
- package/{chunk-HAB2UDLT.js → chunk-W45PCJHS.js} +1 -1
- package/{chunk-P4YLK2OD.js → chunk-XNOILBHV.js} +1 -1
- package/{chunk-YR4MRACW.js → chunk-Y3ASVJWL.js} +3 -3
- package/{chunk-VEUSD6OF.js → chunk-YF4ZRVP3.js} +5 -1
- package/{chunk-JL3YTCPQ.js → chunk-YHT3ZONH.js} +2 -2
- package/{chunk-BER2RSTL.js → chunk-YJ6UWOO5.js} +2 -2
- package/{chunk-NTLJGRAT.js → chunk-YT65GYRP.js} +1 -1
- package/{chunk-HNO2SEYI.js → chunk-ZCKXJTCW.js} +8 -8
- package/{commandRegistry-XBZJWVTJ.js → commandRegistry-F5V2QBJ5.js} +59 -59
- package/{contentThunks-V5NBNTC5.js → contentThunks-IXBWQP4P.js} +3 -3
- package/{cooldownCommands-BLRMLW7Q.js → cooldownCommands-I4ETQ4AO.js} +3 -3
- package/{createAgentAutomationAction-4TXJ366P.js → createAgentAutomationAction-7O7PFPDO.js} +3 -3
- package/{createDialogAction-4SPT75DB.js → createDialogAction-DRHO4XCF.js} +4 -4
- package/{createPageAction-D4GMHUPC.js → createPageAction-TFGJRDZX.js} +3 -3
- package/{dialogCommands-6RRP5KUH.js → dialogCommands-X3GNU6DC.js} +13 -13
- package/{dialogSlice-IGPTWSPB.js → dialogSlice-CXIZ5UTI.js} +2 -2
- package/{docCreateCommands-7ODYDGRL.js → docCreateCommands-YDXECDNF.js} +12 -12
- package/{docDeleteCommands-OEIRM3CC.js → docDeleteCommands-DPMHSXK7.js} +13 -13
- package/{docReadCommands-W56GNAWP.js → docReadCommands-HH4TTBSR.js} +12 -12
- package/{docStore-HEAGW26W.js → docStore-5AHNSAEI.js} +1 -1
- package/{docUpdateCommands-33Q3SEG7.js → docUpdateCommands-74I6RA7U.js} +12 -12
- package/{handleSendMessageAction-R2E7VYHQ.js → handleSendMessageAction-SO3PD3YA.js} +10 -10
- package/index.js +7 -7
- package/{localRuntimeAdapter-J5GD66XZ.js → localRuntimeAdapter-5BG42C3L.js} +22 -22
- package/{machineCommands-AT7B4LFO.js → machineCommands-HOOU3DI7.js} +23 -23
- package/{machineWsRunDispatch-CRDELH46.js → machineWsRunDispatch-KUSLW2GE.js} +23 -23
- package/package.json +1 -1
- package/{providerPresetApply-HBBUUVJD.js → providerPresetApply-EQESXT6X.js} +1 -1
- package/{providerRegistry-5LK2NXYE.js → providerRegistry-PZ56P43E.js} +1 -1
- package/{readlineWorkspace-FPHZGNZP.js → readlineWorkspace-GBI2NFXY.js} +30 -30
- package/{runAgentClientLoop-6AAA5HNQ.js → runAgentClientLoop-ERVJ4LFY.js} +15 -15
- package/{secretCommands-S2DDPIQ4.js → secretCommands-RLIO3QK5.js} +1 -1
- package/{spaceCommands-LPKHBCPU.js → spaceCommands-SJJPZL7J.js} +11 -11
- package/{streamAgentChatTurn-WNNXYOLC.js → streamAgentChatTurn-2M4L7PF4.js} +19 -19
- package/{tools-QLURHFLS.js → tools-GINHFGST.js} +10 -10
- package/{tuiSummaryLlmCaller-73QO3HAD.js → tuiSummaryLlmCaller-CEIZAKUV.js} +4 -4
- package/{updateCommands-LEJRRVBB.js → updateCommands-N7K7TEU4.js} +3 -3
- package/{updateDialogTitleAction-5UVS3ADT.js → updateDialogTitleAction-4EIHKTKR.js} +3 -3
- package/{windowsSelfUpdate-LSSQLXVS.js → windowsSelfUpdate-SVJKL6VH.js} +2 -2
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-HS7MLR74.js";
|
|
4
4
|
import {
|
|
5
5
|
performServerProxyFetchWithRetry
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-YJ6UWOO5.js";
|
|
7
7
|
import {
|
|
8
8
|
fetchServerSyncedCredential
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-Y3ASVJWL.js";
|
|
10
10
|
import {
|
|
11
11
|
buildSkillGuidancePromptBlock
|
|
12
12
|
} from "./chunk-Y6M7KJOA.js";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
compileContextLayers,
|
|
24
24
|
detectDispatchIntentFromMessages,
|
|
25
25
|
resolveToolGuidedSections
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-6AMR3AE6.js";
|
|
27
27
|
import {
|
|
28
28
|
convertMessagesToResponsesInput,
|
|
29
29
|
getUsageRequestOptions,
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
import {
|
|
37
37
|
resolveAgentCallPlan,
|
|
38
38
|
resolveClientWire
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-XNOILBHV.js";
|
|
40
40
|
import {
|
|
41
41
|
createFileCredentialBroker
|
|
42
42
|
} from "./chunk-UIOEHFF6.js";
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
resolveRawAgentInput,
|
|
10
10
|
resolveServerUrl,
|
|
11
11
|
writeUsage
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-NUAQ3QHF.js";
|
|
13
13
|
import {
|
|
14
14
|
parsePositiveFiniteNumberOrFallback
|
|
15
15
|
} from "./chunk-Y5GCAMGP.js";
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
import {
|
|
20
20
|
readDbRecord,
|
|
21
21
|
resolveAgentRecordFromHybridStore
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-7C45ONOU.js";
|
|
23
23
|
import {
|
|
24
24
|
INSTABOX_RUN_CONFIG_ENV,
|
|
25
25
|
createCliLocalRuntimeAdapter,
|
|
@@ -38,12 +38,12 @@ import {
|
|
|
38
38
|
resolveFileWriteGateEnabled,
|
|
39
39
|
resolveLocalUserId,
|
|
40
40
|
validateInstaboxWorkspaceSelection
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-5EOHW7K3.js";
|
|
42
42
|
import {
|
|
43
43
|
clearCredentialAvailability,
|
|
44
44
|
readEffectiveCredentialEntry,
|
|
45
45
|
recordCredentialProbe
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-W45PCJHS.js";
|
|
47
47
|
import {
|
|
48
48
|
isLocalCliAgentKey
|
|
49
49
|
} from "./chunk-NBTY7YJF.js";
|
|
@@ -72,14 +72,14 @@ import {
|
|
|
72
72
|
} from "./chunk-BMQ2MJUK.js";
|
|
73
73
|
import {
|
|
74
74
|
resolveCliLocalRuntimeKeyCapability
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-K7ZZPUNO.js";
|
|
76
76
|
import {
|
|
77
77
|
isTransientFetchError
|
|
78
78
|
} from "./chunk-KFHREHUQ.js";
|
|
79
79
|
import {
|
|
80
80
|
parseUiCard,
|
|
81
81
|
uiCardFallback
|
|
82
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-QSAUX2Q2.js";
|
|
83
83
|
import {
|
|
84
84
|
isGatewayHttpStatus
|
|
85
85
|
} from "./chunk-NF64D32W.js";
|
|
@@ -88,7 +88,7 @@ import {
|
|
|
88
88
|
chooseMemoryOwners,
|
|
89
89
|
loadMemoryCandidatesFromDb,
|
|
90
90
|
resolveAgentMemoryPolicy
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-LKV5K7PW.js";
|
|
92
92
|
import {
|
|
93
93
|
API_REPORTED_COST_MULTIPLIER,
|
|
94
94
|
estimateMessagesTokens,
|
|
@@ -96,7 +96,7 @@ import {
|
|
|
96
96
|
resolveAgentContextWindow,
|
|
97
97
|
resolveOccupancy,
|
|
98
98
|
resolveOccupancyWindow
|
|
99
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-ZCKXJTCW.js";
|
|
100
100
|
import {
|
|
101
101
|
isCliAuthorityBrokerProtocolError,
|
|
102
102
|
isCliAuthorityBrokerTimeoutError,
|
|
@@ -116,10 +116,10 @@ import {
|
|
|
116
116
|
LOCAL_AGENT_CONFIG_MISSING_CODE,
|
|
117
117
|
LOCAL_TURN_ABORTED_CODE,
|
|
118
118
|
readActionGate
|
|
119
|
-
} from "./chunk-
|
|
119
|
+
} from "./chunk-TYKUYQDP.js";
|
|
120
120
|
import {
|
|
121
121
|
resolveAgentRuntimeConfigFromRecord
|
|
122
|
-
} from "./chunk-
|
|
122
|
+
} from "./chunk-MNWKNN6V.js";
|
|
123
123
|
import {
|
|
124
124
|
createThinkParserState,
|
|
125
125
|
flushThinkParser,
|
|
@@ -135,7 +135,7 @@ import {
|
|
|
135
135
|
mergeAvailabilityDeadline,
|
|
136
136
|
resolveCooldownGate,
|
|
137
137
|
resolveCredentialKeyWithFallback
|
|
138
|
-
} from "./chunk-
|
|
138
|
+
} from "./chunk-7LJEJV4F.js";
|
|
139
139
|
import {
|
|
140
140
|
ATTACHMENT_PART_TYPE,
|
|
141
141
|
ATTACHMENT_PART_VERSION,
|
|
@@ -178,7 +178,7 @@ import {
|
|
|
178
178
|
} from "./chunk-M2EJHDJP.js";
|
|
179
179
|
import {
|
|
180
180
|
isAntigravityOAuthAgent
|
|
181
|
-
} from "./chunk-
|
|
181
|
+
} from "./chunk-YF4ZRVP3.js";
|
|
182
182
|
import {
|
|
183
183
|
createRunActivityTracker,
|
|
184
184
|
createShellApprovalChild,
|
|
@@ -230,7 +230,7 @@ import {
|
|
|
230
230
|
t,
|
|
231
231
|
toolLabel,
|
|
232
232
|
toolLabelVariants
|
|
233
|
-
} from "./chunk-
|
|
233
|
+
} from "./chunk-PPCUXO3E.js";
|
|
234
234
|
import {
|
|
235
235
|
createMemoryKey
|
|
236
236
|
} from "./chunk-ECX3NKRD.js";
|
|
@@ -11412,7 +11412,7 @@ function isBalanceExhaustedError(error) {
|
|
|
11412
11412
|
|
|
11413
11413
|
// packages/cli/client/agentRun.ts
|
|
11414
11414
|
async function loadRunLocalAgentTurn() {
|
|
11415
|
-
const { runLocalAgentTurn } = await import("./agentRuntimeLocal-
|
|
11415
|
+
const { runLocalAgentTurn } = await import("./agentRuntimeLocal-TLV4MITB.js");
|
|
11416
11416
|
return runLocalAgentTurn;
|
|
11417
11417
|
}
|
|
11418
11418
|
var stripDebugNoise = (s) => s.replace(/\s*raw="[\s\S]*"/g, "").replace(/\s*raw=\S+/g, "").replace(/\s*headers=\[[^\]]*\]/g, "").replace(/\s*headers=\S+/g, "").trim();
|
|
@@ -11774,6 +11774,23 @@ function buildAuthFailure(ctx) {
|
|
|
11774
11774
|
\xB7 Start the connector on this machine: \`nolo connect --daemon\` (\`nolo machine status\` shows whether it is online and connected to the same server)
|
|
11775
11775
|
\xB7 Force a fully local run with --local (needs a local credential for this agent), or run on the server: --server
|
|
11776
11776
|
Detail: ${ctx.message} ${NO_FALLBACK} ${SERVER_FALLBACK_HINT}
|
|
11777
|
+
`;
|
|
11778
|
+
}
|
|
11779
|
+
if (ctx.status === 403 && ctx.message.includes("owner-required proxy failed") && /"code"\s*:\s*"owner_oauth_unavailable"/i.test(ctx.message)) {
|
|
11780
|
+
return `${RUN_UNAVAILABLE_PREFIX} (${ctx.where} returned HTTP ${ctx.status}, the agent owner's OAuth credential is unavailable on the server \u2014 \u5206\u4EAB\u8005\uFF08agent \u6240\u6709\u8005\uFF09\u7684 OAuth \u51ED\u636E\u5728\u670D\u52A1\u7AEF\u4E0D\u53EF\u7528; owner_oauth_unavailable).
|
|
11781
|
+
\xB7 Ask the agent owner to run \`nolo auth <provider> --sync-to-server\` (or re-authenticate) / \u8BF7 owner \u6267\u884C \`nolo auth <provider> --sync-to-server\`\uFF08\u6216\u91CD\u65B0\u6388\u6743\uFF09
|
|
11782
|
+
\xB7 Re-logging in on your local machine will not resolve this (the credential belongs to the agent owner, not this machine) / \u4F60\u672C\u673A\u91CD\u65B0\u767B\u5F55\u4E0D\u4F1A\u89E3\u51B3
|
|
11783
|
+
\xB7 Running with --server will not bypass this (server runs also require the owner's credential) / --server \u4E5F\u7ED5\u4E0D\u8FC7\uFF08\u670D\u52A1\u7AEF\u8DEF\u5F84\u540C\u6837\u8981\u7528 owner \u51ED\u636E\uFF09
|
|
11784
|
+
Detail: ${ctx.message} ${NO_FALLBACK} ${SERVER_FALLBACK_HINT}
|
|
11785
|
+
`;
|
|
11786
|
+
}
|
|
11787
|
+
if ((ctx.status === 403 || ctx.status === 401) && ctx.message.includes("owner-required proxy failed") && /"code"\s*:\s*"(?:owner_grant_denied|owner_grant_revoked)"/i.test(ctx.message)) {
|
|
11788
|
+
const codeMatch = /"code"\s*:\s*"(owner_grant_(?:denied|revoked))"/i.exec(ctx.message);
|
|
11789
|
+
const code = codeMatch ? codeMatch[1].toLowerCase() : "owner_grant_denied";
|
|
11790
|
+
return `${RUN_UNAVAILABLE_PREFIX} (${ctx.where} returned HTTP ${ctx.status}, no valid grant for this agent \u2014 \u4F60\u5BF9\u8FD9\u4E2A agent \u6CA1\u6709\u6709\u6548\u6388\u6743\uFF08\u5206\u4EAB\u672A\u751F\u6548\u6216\u5DF2\u88AB\u64A4\u9500\uFF09; ${code}).
|
|
11791
|
+
\xB7 Ask the agent owner to re-share or grant access to this agent / \u8BF7\u8054\u7CFB owner \u91CD\u65B0\u5206\u4EAB\u6216\u6388\u6743
|
|
11792
|
+
\xB7 Re-logging in on your local machine will not resolve this (the grant must come from the agent owner) / \u4F60\u672C\u673A\u91CD\u65B0\u767B\u5F55\u4E0D\u4F1A\u89E3\u51B3
|
|
11793
|
+
Detail: ${ctx.message} ${NO_FALLBACK} ${SERVER_FALLBACK_HINT}
|
|
11777
11794
|
`;
|
|
11778
11795
|
}
|
|
11779
11796
|
return `${RUN_UNAVAILABLE_PREFIX} (${ctx.where} returned HTTP ${ctx.status}, auth rejected). Detail: ${ctx.message} ${NO_FALLBACK} ${fix}, ${SERVER_FALLBACK_HINT}
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
mergeReferences,
|
|
8
8
|
resolveReferenceAssets,
|
|
9
9
|
resolveToolsFromKeys
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-YJ6UWOO5.js";
|
|
11
11
|
import {
|
|
12
12
|
UI_CARD_ENVELOPE_MAX_BYTES,
|
|
13
13
|
getAllToolRuns,
|
|
@@ -18,14 +18,14 @@ import {
|
|
|
18
18
|
selectSpaceContextLevel,
|
|
19
19
|
selectUserTonePreset,
|
|
20
20
|
uiCardFallback
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-QSAUX2Q2.js";
|
|
22
22
|
import {
|
|
23
23
|
resolveAgentRecommendedSkillNames,
|
|
24
24
|
resolveAgentRequiredPackIds
|
|
25
25
|
} from "./chunk-I5PBXF7O.js";
|
|
26
26
|
import {
|
|
27
27
|
getDocState
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-IAYMBPDZ.js";
|
|
29
29
|
import {
|
|
30
30
|
resolveToolBaseUrl
|
|
31
31
|
} from "./chunk-MYOH447Z.js";
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
} from "./chunk-A2ZMIRLN.js";
|
|
38
38
|
import {
|
|
39
39
|
getTableState
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-SEOM7GLZ.js";
|
|
41
41
|
import {
|
|
42
42
|
getCurrentSpaceIdRaw,
|
|
43
43
|
getViewMode
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
PERSONALIZATION_DIALOG_CATEGORY,
|
|
47
47
|
buildPersonalizationDialogPolicyContext,
|
|
48
48
|
selectAllMsgs
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-ZCKXJTCW.js";
|
|
50
50
|
import {
|
|
51
51
|
selectPendingFiles
|
|
52
52
|
} from "./chunk-OWYYDMGJ.js";
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
+
adoptRequiredClaudeCodeVersion,
|
|
2
3
|
anthropicRefresh,
|
|
3
4
|
cursorRefresh,
|
|
5
|
+
getClaudeCodeUserAgent,
|
|
4
6
|
refreshAntigravityOAuthToken,
|
|
5
7
|
refreshOpenAiCodexToken,
|
|
8
|
+
resolveClaudeCodeVersion,
|
|
6
9
|
resolveServerSyncConfig,
|
|
7
10
|
xaiRefresh
|
|
8
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-LTI5T3A6.js";
|
|
9
12
|
import {
|
|
10
13
|
defaultLoopbackRequest
|
|
11
14
|
} from "./chunk-VP3BINY7.js";
|
|
@@ -15,7 +18,7 @@ import {
|
|
|
15
18
|
readCredentialEntry,
|
|
16
19
|
readEffectiveCredentialEntry,
|
|
17
20
|
recordCredentialProbe
|
|
18
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-W45PCJHS.js";
|
|
19
22
|
import {
|
|
20
23
|
OAUTH_PROVIDER_REFS,
|
|
21
24
|
buildLocalAgentLookupKeys
|
|
@@ -68,7 +71,7 @@ import {
|
|
|
68
71
|
import {
|
|
69
72
|
inlineImageUrlsForCustomProvider,
|
|
70
73
|
prepareTools
|
|
71
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-LDPZBAQK.js";
|
|
72
75
|
import {
|
|
73
76
|
getServerProviderSecret
|
|
74
77
|
} from "./chunk-HS7MLR74.js";
|
|
@@ -90,7 +93,7 @@ import {
|
|
|
90
93
|
resolveCliLocalRuntimeKeyCapability,
|
|
91
94
|
resolveCliLocalSpawnDispatch,
|
|
92
95
|
resolveStartAgentRunCwd
|
|
93
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-K7ZZPUNO.js";
|
|
94
97
|
import {
|
|
95
98
|
fetchWithTransientRetry,
|
|
96
99
|
isTransientFetchError
|
|
@@ -98,7 +101,7 @@ import {
|
|
|
98
101
|
import {
|
|
99
102
|
deriveCredentialGroup,
|
|
100
103
|
deriveCustomProviderCredentialGroup
|
|
101
|
-
} from "./chunk-
|
|
104
|
+
} from "./chunk-L5FZUSB6.js";
|
|
102
105
|
import {
|
|
103
106
|
resolveAgentRequiredPackIds,
|
|
104
107
|
resolveUserEnabledSkills
|
|
@@ -111,14 +114,14 @@ import {
|
|
|
111
114
|
resolveBuiltinPlatformAgentConfig,
|
|
112
115
|
runKeyed,
|
|
113
116
|
validateAskChoiceInput
|
|
114
|
-
} from "./chunk-
|
|
117
|
+
} from "./chunk-ZCKXJTCW.js";
|
|
115
118
|
import {
|
|
116
119
|
BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL,
|
|
117
120
|
BUILTIN_TITLE_LLM_CONFIG
|
|
118
121
|
} from "./chunk-523DITKR.js";
|
|
119
122
|
import {
|
|
120
123
|
fetchServerSyncedCredential
|
|
121
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-Y3ASVJWL.js";
|
|
122
125
|
import {
|
|
123
126
|
getDefaultCliLocalRuntimeDb
|
|
124
127
|
} from "./chunk-P64WRQYV.js";
|
|
@@ -178,7 +181,7 @@ import {
|
|
|
178
181
|
runExecShellGates,
|
|
179
182
|
validateConfiguredRootExecutionLease,
|
|
180
183
|
verifyOwnerRouteAck
|
|
181
|
-
} from "./chunk-
|
|
184
|
+
} from "./chunk-TYKUYQDP.js";
|
|
182
185
|
import {
|
|
183
186
|
accumulateGeminiChunks,
|
|
184
187
|
buildGeminiGenerateContentRequest,
|
|
@@ -190,7 +193,7 @@ import {
|
|
|
190
193
|
resolveAntigravityFinishReason,
|
|
191
194
|
resolveGeminiModelQuirks,
|
|
192
195
|
shouldUseGeminiNativeToolRoute
|
|
193
|
-
} from "./chunk-
|
|
196
|
+
} from "./chunk-JASKVAYJ.js";
|
|
194
197
|
import {
|
|
195
198
|
PlatformStreamInterruptedError,
|
|
196
199
|
buildPlatformChatCompletionRequest,
|
|
@@ -201,20 +204,20 @@ import {
|
|
|
201
204
|
readPlatformChatSseCompletion,
|
|
202
205
|
resolvePlatformChatProviderConfig,
|
|
203
206
|
shouldUsePlatformChatProvider
|
|
204
|
-
} from "./chunk-
|
|
207
|
+
} from "./chunk-7NMNKOW5.js";
|
|
205
208
|
import {
|
|
206
209
|
readSseDataValues,
|
|
207
210
|
readSseFrames
|
|
208
211
|
} from "./chunk-HNUWUO75.js";
|
|
209
212
|
import {
|
|
210
213
|
resolveAgentRuntimeConfigFromRecord
|
|
211
|
-
} from "./chunk-
|
|
214
|
+
} from "./chunk-MNWKNN6V.js";
|
|
212
215
|
import {
|
|
213
216
|
resolveHistoricalToolContentCap
|
|
214
217
|
} from "./chunk-2WZXXAQD.js";
|
|
215
218
|
import {
|
|
216
219
|
resolveToolImagePolicy
|
|
217
|
-
} from "./chunk-
|
|
220
|
+
} from "./chunk-JBWLZ3CB.js";
|
|
218
221
|
import {
|
|
219
222
|
collectStablePromptPrefix,
|
|
220
223
|
convertMessagesToResponsesInput,
|
|
@@ -244,7 +247,7 @@ import {
|
|
|
244
247
|
resolveAvailabilityAction,
|
|
245
248
|
resolveCooldownGate,
|
|
246
249
|
resolveCredentialKeyWithFallback
|
|
247
|
-
} from "./chunk-
|
|
250
|
+
} from "./chunk-7LJEJV4F.js";
|
|
248
251
|
import {
|
|
249
252
|
buildDialogFallbackTitleFromUserInput,
|
|
250
253
|
normalizeDialogTitle
|
|
@@ -300,7 +303,7 @@ import {
|
|
|
300
303
|
} from "./chunk-LOEO7LRC.js";
|
|
301
304
|
import {
|
|
302
305
|
isAntigravityOAuthAgent
|
|
303
|
-
} from "./chunk-
|
|
306
|
+
} from "./chunk-YF4ZRVP3.js";
|
|
304
307
|
import {
|
|
305
308
|
ackRunRecord,
|
|
306
309
|
appendRunQueue,
|
|
@@ -384,7 +387,7 @@ import {
|
|
|
384
387
|
import {
|
|
385
388
|
agentRunCardLabels,
|
|
386
389
|
t
|
|
387
|
-
} from "./chunk-
|
|
390
|
+
} from "./chunk-PPCUXO3E.js";
|
|
388
391
|
import {
|
|
389
392
|
createTokenDialogIndexKey,
|
|
390
393
|
createTokenKey,
|
|
@@ -594,20 +597,12 @@ async function aggregateAnthropicMessageStream(body, onMeaningfulOutput, onTextD
|
|
|
594
597
|
var ANTHROPIC_MESSAGES_URL = "https://api.anthropic.com/v1/messages";
|
|
595
598
|
var ANTHROPIC_API_VERSION = "2023-06-01";
|
|
596
599
|
var ANTHROPIC_OAUTH_BETA = "oauth-2025-04-20";
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
if (!rawEnv) return DEFAULT_VERSION;
|
|
600
|
-
const trimmed = rawEnv.trim();
|
|
601
|
-
if (/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(trimmed)) {
|
|
602
|
-
return trimmed;
|
|
603
|
-
}
|
|
604
|
-
return DEFAULT_VERSION;
|
|
605
|
-
}
|
|
606
|
-
var CLAUDE_CODE_VERSION = resolveClaudeCodeVersion(
|
|
607
|
-
process.env.NOLO_CLAUDE_CODE_VERSION || process.env.CLAUDE_CODE_VERSION
|
|
608
|
-
);
|
|
609
|
-
var CLAUDE_CODE_USER_AGENT = `claude-cli/${CLAUDE_CODE_VERSION} (external, local-agent, agent-sdk/0.1.0)`;
|
|
600
|
+
var CLAUDE_CODE_VERSION = resolveClaudeCodeVersion();
|
|
601
|
+
var CLAUDE_CODE_USER_AGENT = getClaudeCodeUserAgent();
|
|
610
602
|
var ANTHROPIC_OAUTH_BETA_HEADER = `claude-code-20250219,${ANTHROPIC_OAUTH_BETA}`;
|
|
603
|
+
function buildAnthropicBetaHeader({ agentRequest }) {
|
|
604
|
+
return (agentRequest ? ["claude-code-20250219", ANTHROPIC_OAUTH_BETA] : [ANTHROPIC_OAUTH_BETA]).join(",");
|
|
605
|
+
}
|
|
611
606
|
var CLAUDE_CODE_SYSTEM_INSTRUCTION = "You are a Claude agent, built on Anthropic's Claude Agent SDK.";
|
|
612
607
|
var CLAUDE_CODE_IDENTITY_PATTERNS = [
|
|
613
608
|
CLAUDE_CODE_SYSTEM_INSTRUCTION,
|
|
@@ -1031,21 +1026,38 @@ async function fetchAnthropicMessagesCompletion(args) {
|
|
|
1031
1026
|
const upstreamStream = args.upstreamStream ?? resolveAnthropicUpstreamStream(process.env.NOLO_ANTHROPIC_STREAM);
|
|
1032
1027
|
const requestBody = buildAnthropicMessagesBody(args);
|
|
1033
1028
|
if (upstreamStream) requestBody.stream = true;
|
|
1034
|
-
const
|
|
1029
|
+
const isAgentRequest = Array.isArray(requestBody.tools) && requestBody.tools.length > 0;
|
|
1030
|
+
const buildHeaders = () => ({
|
|
1031
|
+
Authorization: `Bearer ${args.accessToken}`,
|
|
1032
|
+
"Content-Type": "application/json",
|
|
1033
|
+
Accept: upstreamStream ? "text/event-stream" : "application/json",
|
|
1034
|
+
"anthropic-version": ANTHROPIC_API_VERSION,
|
|
1035
|
+
"anthropic-beta": buildAnthropicBetaHeader({ agentRequest: isAgentRequest }),
|
|
1036
|
+
"User-Agent": getClaudeCodeUserAgent(),
|
|
1037
|
+
"x-app": "cli"
|
|
1038
|
+
});
|
|
1039
|
+
let response = await (args.fetchImpl ?? fetch)(ANTHROPIC_MESSAGES_URL, {
|
|
1035
1040
|
method: "POST",
|
|
1036
|
-
headers:
|
|
1037
|
-
Authorization: `Bearer ${args.accessToken}`,
|
|
1038
|
-
"Content-Type": "application/json",
|
|
1039
|
-
Accept: upstreamStream ? "text/event-stream" : "application/json",
|
|
1040
|
-
"anthropic-version": ANTHROPIC_API_VERSION,
|
|
1041
|
-
"anthropic-beta": ANTHROPIC_OAUTH_BETA_HEADER,
|
|
1042
|
-
"User-Agent": CLAUDE_CODE_USER_AGENT,
|
|
1043
|
-
"x-app": "cli"
|
|
1044
|
-
},
|
|
1041
|
+
headers: buildHeaders(),
|
|
1045
1042
|
body: JSON.stringify(requestBody),
|
|
1046
1043
|
signal: args.signal
|
|
1047
1044
|
});
|
|
1048
1045
|
let payload;
|
|
1046
|
+
if (response.status === 400) {
|
|
1047
|
+
const errorBody = await response.json().catch(async () => ({
|
|
1048
|
+
error: { message: await response.text().catch(() => response.statusText) }
|
|
1049
|
+
}));
|
|
1050
|
+
if (adoptRequiredClaudeCodeVersion(errorBody)) {
|
|
1051
|
+
response = await (args.fetchImpl ?? fetch)(ANTHROPIC_MESSAGES_URL, {
|
|
1052
|
+
method: "POST",
|
|
1053
|
+
headers: buildHeaders(),
|
|
1054
|
+
body: JSON.stringify(requestBody),
|
|
1055
|
+
signal: args.signal
|
|
1056
|
+
});
|
|
1057
|
+
} else {
|
|
1058
|
+
return { status: response.status, body: errorBody, headers: response.headers };
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
1049
1061
|
if (upstreamStream && response.ok) {
|
|
1050
1062
|
if (!response.body) {
|
|
1051
1063
|
return {
|
|
@@ -2971,11 +2983,14 @@ function buildOpenAiResponsesCustomNativeProvider(p) {
|
|
|
2971
2983
|
model,
|
|
2972
2984
|
complete: async (messages, options) => {
|
|
2973
2985
|
const responsesTools = toResponsesTools(tools);
|
|
2986
|
+
const maxOutputTokens = typeof options?.max_tokens === "number" ? options.max_tokens : typeof agentConfig.max_tokens === "number" ? agentConfig.max_tokens : void 0;
|
|
2987
|
+
const reasoningEffort = options?.reasoning_effort ?? agentConfig.reasoning_effort;
|
|
2974
2988
|
const body = {
|
|
2975
2989
|
model,
|
|
2976
2990
|
input: convertMessagesToResponsesInput(messages),
|
|
2977
2991
|
stream: true,
|
|
2978
|
-
...
|
|
2992
|
+
...maxOutputTokens !== void 0 ? { max_output_tokens: maxOutputTokens } : {},
|
|
2993
|
+
...reasoningEffort ? { reasoning: { effort: reasoningEffort } } : {},
|
|
2979
2994
|
...responsesTools?.length ? { tools: responsesTools, tool_choice: "auto" } : {}
|
|
2980
2995
|
};
|
|
2981
2996
|
log("provider.request.start", {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fetchReferenceContents,
|
|
3
3
|
resolveReferenceAssets
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-YJ6UWOO5.js";
|
|
5
5
|
import {
|
|
6
6
|
updateTokensAction
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ZCKXJTCW.js";
|
|
8
8
|
import {
|
|
9
9
|
applyUpdateTokensFulfilled
|
|
10
10
|
} from "./chunk-OWYYDMGJ.js";
|
|
@@ -15,10 +15,10 @@ import {
|
|
|
15
15
|
} from "./chunk-Y6ROFCZO.js";
|
|
16
16
|
import {
|
|
17
17
|
scheduleWindowsSelfUpdate
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-7T5TLIY4.js";
|
|
19
19
|
import {
|
|
20
20
|
t
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-PPCUXO3E.js";
|
|
22
22
|
|
|
23
23
|
// packages/cli/updateCommands.ts
|
|
24
24
|
import { existsSync, readFileSync, accessSync, constants } from "node:fs";
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
inlineImageUrlsForCustomProvider,
|
|
6
6
|
prepareTools,
|
|
7
7
|
shouldInlineImageUrlsForAgent
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-LDPZBAQK.js";
|
|
9
9
|
import {
|
|
10
10
|
CONFIRMATION_INPUT_KEYS,
|
|
11
11
|
INVALID_TOOL_ARGS_REPLACEMENT,
|
|
@@ -14,16 +14,16 @@ import {
|
|
|
14
14
|
performFetchRequest,
|
|
15
15
|
sanitizeOutboundMessages,
|
|
16
16
|
stripModelToolArgs
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-2GKUVGRT.js";
|
|
18
18
|
import {
|
|
19
19
|
findToolExecutor,
|
|
20
20
|
toolDefinitionsByName
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-K7ZZPUNO.js";
|
|
22
22
|
import {
|
|
23
23
|
classifyApiError,
|
|
24
24
|
classifyGenerationError,
|
|
25
25
|
extractErrorDiagnostics
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-YJ6UWOO5.js";
|
|
27
27
|
import {
|
|
28
28
|
createSSEParser,
|
|
29
29
|
createToolRunId,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
toolRunSetPending,
|
|
33
33
|
toolRunStarted,
|
|
34
34
|
toolRunSucceeded
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-QSAUX2Q2.js";
|
|
36
36
|
import {
|
|
37
37
|
getPublicImageAgentMode
|
|
38
38
|
} from "./chunk-VIDPVFP3.js";
|
|
@@ -46,10 +46,10 @@ import {
|
|
|
46
46
|
toast,
|
|
47
47
|
toolResultNeedsUserConfirmation,
|
|
48
48
|
updateToolMessage
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-ZCKXJTCW.js";
|
|
50
50
|
import {
|
|
51
51
|
streamAgentChatTurn
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-Y3ASVJWL.js";
|
|
53
53
|
import {
|
|
54
54
|
addActiveController,
|
|
55
55
|
getActiveDialogKey,
|
|
@@ -412,13 +412,13 @@ var TOOL_USE_GUIDANCE = `--- \u5DE5\u5177\u4F7F\u7528\u7EAA\u5F8B ---
|
|
|
412
412
|
- \u8F93\u51FA\u536B\u751F\uFF1A\u4E0D\u8981\u4E60\u60EF\u6027\u7528 2>&1 \u5408\u5E76\u9519\u8BEF\u6D41\uFF1B\u67E5\u8BE2\u7C7B\u547D\u4EE4\u4E3B\u52A8 2>/dev/null \u964D\u566A\uFF1B\u590D\u5408\u547D\u4EE4\u5BF9\u5173\u952E\u6B65\u9AA4\u5355\u72EC\u63A5\u9000\u51FA\u7801\uFF08echo rc=$?\uFF09\uFF1B\u6BCF\u6761\u547D\u4EE4\u5148\u626B\u8F93\u51FA\u4E2D\u7684\u9519\u8BEF\u5B57\u6837\uFF0C\u518D\u770B exitCode\uFF08exit 0 \u4E5F\u53EF\u80FD\u5E26\u9519\uFF09\u3002
|
|
413
413
|
- \u4E00\u6B21\u6027\u63A2\u9488/\u76D1\u63A7\u811A\u672C\u6309\u201C\u73AF\u5883\u4F1A\u53D8\u201D\u6765\u5199\uFF1A\u8BBE\u5907/\u8FDB\u7A0B\u53EF\u80FD\u4E2D\u9014\u6D88\u5931\uFF0C\u8BFB\u53D6\u5FAA\u73AF\u8981\u6709\u5F02\u5E38\u515C\u5E95\uFF0C\u907F\u514D\u672A\u6355\u83B7\u5F02\u5E38\u76F4\u63A5\u5D29\u6E83\u3002
|
|
414
414
|
- \u8C03\u7528\u5931\u8D25\u4E14\u539F\u56E0\u4E0D\u660E\u65F6\uFF0C\u5148\u68C0\u67E5\u526F\u4F5C\u7528\u4E0E\u72B6\u6001\u53D8\u5316\uFF0C\u518D\u51B3\u5B9A\u91CD\u8BD5\u6216\u56DE\u9000\u3002
|
|
415
|
-
- **\u7B49\u5F85\u5916\u90E8\u7CFB\u7EDF\u5230\u8FBE\u7EC8\u6001**\uFF08\u90E8\u7F72\u3001CI\u3001\u670D\u52A1\u5C31\u7EEA\u3001HTTP \u6761\u4EF6\uFF09\u65F6\uFF0C\u4E0D\u8981\u300C\u67E5\u4E00\u6B21 \u2192 \u7ED3\u675F\u56DE\u5408 \u2192 \u7B49\u7528\u6237\u8FFD\u95EE\u300D\uFF1A\u90A3\u4F1A\u8BA9\u4E8B\u60C5\u7684\u63A8\u8FDB\u6743\u843D\u5728\u7528\u6237\u8EAB\u4E0A\u3002\u5224\u636E\u662F\u300C\u7B49\u5F85\u5BF9\u8C61\u6709\u6CA1\u6709\u300E\u5B8C\u6210\u300F\u8FD9\u4EF6\u4E8B\u300D\uFF1A\u6709\u5C31\u7528 **execShell(background: true)** \u5305\u6210**\u81EA\u5E26\u8D85\u65F6\u9000\u51FA\u7684\u6709\u9650\u8F6E\u8BE2\u4EFB\u52A1**\uFF08\u63A2\u6D4B\u5230\u6EE1\u8DB3/\u5931\u8D25/\u8D85\u65F6\u5373 exit\uFF09\uFF0C\u9000\u51FA\u65F6\u7531\u5BBF\u4E3B\u81EA\u52A8\u5524\u9192\u5BF9\u8BDD\uFF1B**\u4E25\u7981\u7528 & \u6216 nohup \u540E\u53F0\u5316\u2014\u2014\u5E73\u53F0\u4E0D\u8FFD\u8E2A\u3001\u4E0D\u4F1A\u5524\u9192\uFF0C\u7B49\u4E8E\u6CA1\u7B49**\u3002\u6CA1\u6709\u7EC8\u6001\u624D\u662F\u771F\u9700\u8981\u4EBA\u6765\u51B3\u5B9A\u3002\u6CE8\u610F\u533A\u5206\uFF1A\u7B49 **agent run** \u7528 terminal wake\uFF08\u89C1\u300C\u591A Agent \u7F16\u6392\u300D\u6BB5\uFF0C\u90A3\u7C7B\u7981\u6B62\u8F6E\u8BE2\uFF09\uFF0C\u7B49**\u5916\u90E8\u7CFB\u7EDF**\u624D\u7528\u8FD9\u91CC\u7684\u5E26\u9000\u51FA\u6761\u4EF6\u7684\u540E\u53F0\u8F6E\u8BE2\uFF0C\u4E24\u8005\u4E0D\u8981\u6DF7\u3002`;
|
|
415
|
+
- **\u7B49\u5F85\u5916\u90E8\u7CFB\u7EDF\u5230\u8FBE\u7EC8\u6001**\uFF08\u90E8\u7F72\u3001CI\u3001\u670D\u52A1\u5C31\u7EEA\u3001HTTP \u6761\u4EF6\uFF09\u65F6\uFF0C\u4E0D\u8981\u300C\u67E5\u4E00\u6B21 \u2192 \u7ED3\u675F\u56DE\u5408 \u2192 \u7B49\u7528\u6237\u8FFD\u95EE\u300D\uFF1A\u90A3\u4F1A\u8BA9\u4E8B\u60C5\u7684\u63A8\u8FDB\u6743\u843D\u5728\u7528\u6237\u8EAB\u4E0A\u3002\u5224\u636E\u662F\u300C\u7B49\u5F85\u5BF9\u8C61\u6709\u6CA1\u6709\u300E\u5B8C\u6210\u300F\u8FD9\u4EF6\u4E8B\u300D\uFF1A\u6709\u5C31\u7528 **execShell(background: true)** \u5305\u6210**\u81EA\u5E26\u8D85\u65F6\u9000\u51FA\u7684\u6709\u9650\u8F6E\u8BE2\u4EFB\u52A1**\uFF08\u63A2\u6D4B\u5230\u6EE1\u8DB3/\u5931\u8D25/\u8D85\u65F6\u5373 exit\uFF09\uFF0C\u9000\u51FA\u65F6\u7531\u5BBF\u4E3B\u81EA\u52A8\u5524\u9192\u5BF9\u8BDD\uFF1B**\u4E25\u7981\u7528 & \u6216 nohup \u540E\u53F0\u5316\u2014\u2014\u5E73\u53F0\u4E0D\u8FFD\u8E2A\u3001\u4E0D\u4F1A\u5524\u9192\uFF0C\u7B49\u4E8E\u6CA1\u7B49**\u3002**\u4E25\u7981\u4F7F\u7528\u5355\u7EAF\u7684 \`sleep N\` \u6216 \`sleep N; echo ...\` \u5047\u88C5\u7B49\u5F85\u4EFB\u52A1**\uFF1A\u5B64\u7ACB sleep \u4E0D\u505A\u4EFB\u4F55\u72B6\u6001\u63A2\u6D4B\uFF0C\u4E14\u8D85\u8FC7 5 \u79D2\u5C31\u4F1A\u88AB\u7ACB\u5373 detach\uFF0C\u9020\u6210\u65E0\u610F\u4E49\u7684\u5B8C\u6210\u5524\u9192\u566A\u97F3\uFF1B\u8F6E\u8BE2\u4EFB\u52A1\u5FC5\u987B\u5305\u542B\u771F\u5B9E\u63A2\u9488\uFF08\u5982 \`while ! probe; do sleep 5; done\` \u6216\u8C03\u7528\u73B0\u6709 wait \u811A\u672C\uFF09\u3002\u6CA1\u6709\u7EC8\u6001\u624D\u662F\u771F\u9700\u8981\u4EBA\u6765\u51B3\u5B9A\u3002\u6CE8\u610F\u533A\u5206\uFF1A\u7B49 **agent run** \u7528 terminal wake\uFF08\u89C1\u300C\u591A Agent \u7F16\u6392\u300D\u6BB5\uFF0C\u90A3\u7C7B\u7981\u6B62\u8F6E\u8BE2\uFF09\uFF0C\u7B49**\u5916\u90E8\u7CFB\u7EDF**\u624D\u7528\u8FD9\u91CC\u7684\u5E26\u9000\u51FA\u6761\u4EF6\u7684\u540E\u53F0\u8F6E\u8BE2\uFF0C\u4E24\u8005\u4E0D\u8981\u6DF7\u3002`;
|
|
416
416
|
|
|
417
417
|
// packages/ai/agent/toolGuidedSections.ts
|
|
418
418
|
var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
|
|
419
419
|
\u7528 startAgentRun \u542F\u52A8\u5B50 Agent\uFF08\u5F02\u6B65 fork+exec \u8FD4\u56DE runId\uFF09\uFF0C\u7528 controlAgentRun \u63A7\u5236/\u8BCA\u65AD\u3002\u4F55\u65F6\u6D3E\u53D1\u89C1\u300C\u591A Agent \u534F\u4F5C\u300D\u6BB5\uFF1B\u672C\u6BB5\u53EA\u8BB2\u6D3E\u53D1\u4E4B\u540E\u7684\u76EF\u68A2\u4E0E\u6392\u9519\u3002
|
|
420
420
|
|
|
421
|
-
1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u5148\u63A8\u8FDB\u72EC\u7ACB\u5DF2\u6388\u6743\u5DE5\u4F5C\uFF0C\u53EA\u6709\u65E0\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u624D\u7ED3\u675F\u7B49\u5F85\u7EC8\u6001\u3002** \u5BF9\u7528\u6237\u627F\u8BFA\u300C\u4F1A\u901A\u77E5\u4F60\u300D\u4E4B\u524D\uFF0C\u5FC5\u987B\u5148\u786E\u8BA4\u8FD9\u4E2A\u7B49\u5F85\u4EFB\u52A1\u5728**\u5931\u8D25**\u65F6\u4E5F\u4F1A\u4EE5\u7EC8\u6001\u5524\u9192\uFF08tracked background\u3001\u6709\u754C\u8D85\u65F6\u3001\u5931\u8D25\u5373\u9000\u51FA\uFF09\uFF0C\u4E0D\u80FD\u53EA\u5728\u6210\u529F\u8DEF\u5F84\u4E0A\u6709\u901A\u77E5\uFF1B\u53D1\u5E03\u7B49\u5F85\u53EA\u80FD\u4F7F\u7528 \`scripts/ci/pushAndAwaitLive.ts\`\uFF0C\u7981\u6B62\u624B\u5199\u300Cpush + \u8F6E\u8BE2\u300D\u7684\u547D\u4EE4\u94FE\u3002\u4E32\u884C\u4F9D\u8D56\u4E0D\u662F\u963B\u585E\u5BF9\u8BDD\u7684\u7406\u7531\u3002\u7B49\u5F85\u65B9\u5F0F\u6309\u73AF\u5883\u5206\u4E09\u79CD\uFF1A\u2460 controlAgentRun \u6709 wait action \u2192 \u7528\u5B83\u963B\u585E\u5230\u7EC8\u6001\uFF08\u4EC5\u9650\u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\u7684\u573A\u666F\uFF0C\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\uFF09\uFF1B\u2461 \u65E0 wait action \u4F46\u5BBF\u4E3B\u6709 terminal wake \u2192 \u65E0\u5176\u4ED6\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u65F6\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u5230\u7EC8\u6001\u65F6\u5BBF\u4E3B\u81EA\u52A8\u628A\u7236\u5BF9\u8BDD\u63A5\u56DE\u6765\uFF0C\u4E0D\u9700\u8981\u4EFB\u4F55\u4E3B\u52A8\u7B49\u5F85\uFF1B\u2462 \u65E0 wait action \u4E14\u65E0 terminal wake \u2192 \u65E0\u5176\u4ED6\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u65F6\u540C\u6837\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u7ED3\u675F\u65F6\u4E0D\u4F1A\u88AB\u81EA\u52A8\u63A5\u56DE\u6765\uFF0C\u8FD9\u662F\u5BBF\u4E3B\u9650\u5236\uFF0C\u5E94\u5728\u56DE\u590D\u4E2D\u5982\u5B9E\u544A\u77E5\u7528\u6237\u300Crun \u5DF2\u5728\u540E\u53F0\u8FD0\u884C\uFF0C\u7ED3\u679C\u9700\u624B\u52A8\u67E5\u8BE2\u300D\uFF0C\u800C\u4E0D\u662F\u7528 execShell sleep \u8F6E\u8BE2\u7ED5\u8FC7\u3002**execShell sleep \u6C38\u8FDC\u4E0D\u662F\u7B49\u5F85 agent run \u7684\u6B63\u786E\u65B9\u5F0F**\uFF1A\u4EE5 \`sleep N\` \u5F00\u5934\u4E14 N>5s \u7684\u547D\u4EE4\u4F1A\u88AB**\u7ACB\u5373 detach**\uFF08\`IMMEDIATE_DETACH_SLEEP_THRESHOLD_SECONDS\`\uFF0C\u4E0E execShell \u5DE5\u5177\u63CF\u8FF0\u540C\u6E90\u3001\u7531\u4E00\u81F4\u6027\u6D4B\u8BD5\u9501\u5B9A\uFF09\uFF1B\u5176\u4F59\u547D\u4EE4\u5219\u8D85\u8FC7 \`NOLO_EXEC_SHELL_DETACH_MS\`\uFF08\u9ED8\u8BA4 120s\uFF09\u624D detach\u3002\u4E24\u6761\u8DEF\u5F84\u90FD\u4F1A\u8BA9\u6BCF\u4E2A\u5B8C\u6210\u4EA7\u751F\u4E00\u6761\u901A\u77E5\uFF0C\u5F62\u6210\u566A\u97F3\u4E14\u5B8C\u5168\u65E0\u6548\u3002
|
|
421
|
+
1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u5148\u63A8\u8FDB\u72EC\u7ACB\u5DF2\u6388\u6743\u5DE5\u4F5C\uFF0C\u53EA\u6709\u65E0\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u624D\u7ED3\u675F\u7B49\u5F85\u7EC8\u6001\u3002** \u5BF9\u7528\u6237\u627F\u8BFA\u300C\u4F1A\u901A\u77E5\u4F60\u300D\u4E4B\u524D\uFF0C\u5FC5\u987B\u5148\u786E\u8BA4\u8FD9\u4E2A\u7B49\u5F85\u4EFB\u52A1\u5728**\u5931\u8D25**\u65F6\u4E5F\u4F1A\u4EE5\u7EC8\u6001\u5524\u9192\uFF08tracked background\u3001\u6709\u754C\u8D85\u65F6\u3001\u5931\u8D25\u5373\u9000\u51FA\uFF09\uFF0C\u4E0D\u80FD\u53EA\u5728\u6210\u529F\u8DEF\u5F84\u4E0A\u6709\u901A\u77E5\uFF1B\u53D1\u5E03\u7B49\u5F85\u53EA\u80FD\u4F7F\u7528 \`scripts/ci/pushAndAwaitLive.ts\`\uFF0C\u7981\u6B62\u624B\u5199\u300Cpush + \u8F6E\u8BE2\u300D\u7684\u547D\u4EE4\u94FE\u3002\u4E32\u884C\u4F9D\u8D56\u4E0D\u662F\u963B\u585E\u5BF9\u8BDD\u7684\u7406\u7531\u3002\u7B49\u5F85\u65B9\u5F0F\u6309\u73AF\u5883\u5206\u4E09\u79CD\uFF1A\u2460 controlAgentRun \u6709 wait action \u2192 \u7528\u5B83\u963B\u585E\u5230\u7EC8\u6001\uFF08\u4EC5\u9650\u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\u7684\u573A\u666F\uFF0C\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\uFF09\uFF1B\u2461 \u65E0 wait action \u4F46\u5BBF\u4E3B\u6709 terminal wake \u2192 \u65E0\u5176\u4ED6\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u65F6\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u5230\u7EC8\u6001\u65F6\u5BBF\u4E3B\u81EA\u52A8\u628A\u7236\u5BF9\u8BDD\u63A5\u56DE\u6765\uFF0C\u4E0D\u9700\u8981\u4EFB\u4F55\u4E3B\u52A8\u7B49\u5F85\uFF1B\u2462 \u65E0 wait action \u4E14\u65E0 terminal wake \u2192 \u65E0\u5176\u4ED6\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u65F6\u540C\u6837\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u7ED3\u675F\u65F6\u4E0D\u4F1A\u88AB\u81EA\u52A8\u63A5\u56DE\u6765\uFF0C\u8FD9\u662F\u5BBF\u4E3B\u9650\u5236\uFF0C\u5E94\u5728\u56DE\u590D\u4E2D\u5982\u5B9E\u544A\u77E5\u7528\u6237\u300Crun \u5DF2\u5728\u540E\u53F0\u8FD0\u884C\uFF0C\u7ED3\u679C\u9700\u624B\u52A8\u67E5\u8BE2\u300D\uFF0C\u800C\u4E0D\u662F\u7528 execShell sleep \u8F6E\u8BE2\u7ED5\u8FC7\u3002**execShell sleep \u6C38\u8FDC\u4E0D\u662F\u7B49\u5F85\u4EFB\u4F55\u4E8B\u7269\uFF08\u65E0\u8BBA agent run\u3001\u540E\u53F0\u8FDB\u7A0B\u3001git hook \u8FD8\u662F\u5916\u90E8\u670D\u52A1\uFF09\u7684\u6B63\u786E\u65B9\u5F0F**\uFF1A\u4EE5 \`sleep N\` \u5F00\u5934\u4E14 N>5s \u7684\u547D\u4EE4\u4F1A\u88AB**\u7ACB\u5373 detach**\uFF08\`IMMEDIATE_DETACH_SLEEP_THRESHOLD_SECONDS\`\uFF0C\u4E0E execShell \u5DE5\u5177\u63CF\u8FF0\u540C\u6E90\u3001\u7531\u4E00\u81F4\u6027\u6D4B\u8BD5\u9501\u5B9A\uFF09\uFF1B\u5176\u4F59\u547D\u4EE4\u5219\u8D85\u8FC7 \`NOLO_EXEC_SHELL_DETACH_MS\`\uFF08\u9ED8\u8BA4 120s\uFF09\u624D detach\u3002\u4E24\u6761\u8DEF\u5F84\u90FD\u4F1A\u8BA9\u6BCF\u4E2A\u5B8C\u6210\u4EA7\u751F\u4E00\u6761\u901A\u77E5\uFF0C\u5F62\u6210\u566A\u97F3\u4E14\u5B8C\u5168\u65E0\u6548\u3002\u7B49\u5F85\u5916\u90E8\u7CFB\u7EDF\u8BF7\u4F7F\u7528\u6709\u5177\u4F53\u63A2\u6D4B\u9000\u51FA\u7684\u6709\u9650\u8F6E\u8BE2\u4EFB\u52A1\u6216\u4E13\u7528 wait \u811A\u672C\u3002
|
|
422
422
|
2. \u7981\u6B62\u8F6E\u8BE2\u3001\u7981\u7A7A\u8F6C\u3001\u522B\u590D\u8FF0 status\uFF1B\u8BED\u4E49\u4EE5\u5DE5\u5177\u63CF\u8FF0\u4E3A\u51C6\u3002status \u4EC5\u7528\u4E8E\u5F02\u5E38\u8BCA\u65AD\u2014\u2014\u6000\u7591\u5361\u6B7B\u3001failed \u540E\u770B\u8BE6\u60C5/\u65E5\u5FD7\u3001\u7528\u6237\u660E\u786E\u8BE2\u95EE\u6267\u884C\u7EC6\u8282\uFF08tailLines:0 \u53EA\u770B\u6458\u8981\uFF09\uFF1B\u5B83\u4E0D\u662F stop \u524D\u7684 preflight\u3002\u5E76\u884C\u6D3E\u53D1\u7EAA\u5F8B\uFF08\u9ED8\u8BA4\u5E76\u884C / \u53EA\u6709\u771F\u5B9E\u4F9D\u8D56\u624D\u4E32\u884C / \u7981\u6B62\u7684\u4E32\u884C\u501F\u53E3\uFF09\u7531\u7CFB\u7EDF\u5C42\u56FA\u5B9A\u5757\u300C\u5E76\u884C\u662F\u9ED8\u8BA4 \xB7 \u6D3E\u53D1\u7EAA\u5F8B\u300D\uFF08agent-runtime/parallelDispatchDefault.ts\uFF0C\u56DB\u6761\u88C5\u914D\u7EBF\u65E0\u6761\u4EF6\u6CE8\u5165\uFF09\u627F\u8F7D\u2014\u2014\u672C\u6BB5\u4E0D\u91CD\u590D\uFF0C\u907F\u514D\u4E24\u5904\u771F\u503C\u3002
|
|
423
423
|
3. \u6392\u9519\u5148\u5206\u8BCA\uFF1AagentKey \u6CA1\u7167\u6284 listAgents \u5C31\u5148\u4FEE key\uFF08\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B\u62A5\u9519\u542B not found / invalid ref / Local agent config not found \u2192 \u5148 readAgent \u590D\u6838\uFF0C**\u7981\u6B62**\u636E\u6B64\u63A8\u65AD\u51ED\u8BC1\u7F3A\u5931\u6216\u901A\u9053\u5168\u6302\uFF1B\u540C\u4E00\u5DF2\u9A8C\u8BC1 key \u4ECD\u5931\u8D25\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u624D\u8BB0\u4E3A\u901A\u9053\u6545\u969C\u3002\u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u9700 \u22652 \u4E2A\u4E0D\u540C\u5019\u9009\u5404\u81EA\u5B8C\u6210\u300C\u5DF2\u9A8C\u8BC1 key + \u4E00\u6B21\u771F\u5B9E\u6D3E\u53D1\u300D\u4E14\u5931\u8D25\uFF0C\u5019\u9009\u4E0D\u8DB3\u5C31\u5982\u5B9E\u62A5\u544A\u300C\u4EC5\u6B64\u5019\u9009\u4E14\u901A\u9053\u5931\u8D25\u300D\uFF0C\u4E0D\u5F97\u5938\u5927\u6210\u5168\u5E93\u4E0D\u53EF\u7528\u3002**orphaned \u6216\u8FDB\u7A0B\u7ACB\u5373\u9000\u51FA\uFF080 tool calls\uFF09\u65F6\uFF0C\u7B2C\u4E00\u6B65\u5FC5\u987B\u770B logTail \u7684 stderr**\uFF0C\u5148\u6392\u9664\u8BED\u6CD5\u9519\u8BEF\u3001\u4F9D\u8D56\u7F3A\u5931\u4E0E\u6784\u5EFA\u5D29\u6E83\u2014\u2014CLI \u542F\u52A8\u5931\u8D25\u65F6\u8BF7\u6C42\u6839\u672C\u672A\u53D1\u51FA\uFF0C\u8868\u73B0\u6613\u88AB\u8BEF\u5224\u4E3A\u901A\u9053\u6545\u969C\uFF0C\u76F2\u76EE\u91CD\u6D3E\u65E0\u6CD5\u89E3\u51B3\u3002
|
|
424
424
|
4. \u4EC5 status=failed\u3001\u8D85\u65F6\u6216 progress \u957F\u671F\u65E0\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\u624D\u62C9 tailLines:30 \u770B\u65E5\u5FD7\u3002**\u7EC8\u6001 run \u7ED3\u8BBA\u5FC5\u8BFB status \u91CC\u7684 resultFile\uFF08readFile \u539F\u6587\uFF09\uFF0C\u7981\u6B62\u7528\u5E26 ANSI \u7684 .log \u6216 2000 \u5B57 lastAssistantText \u6458\u8981\u4EE3\u66FF**\uFF1B\u4E2D\u65AD run \u6B63\u6587\u53EF\u80FD\u7559 dialog/.log\uFF0C\u4F46 resultFile \u7F3A\u5931\u6309\u300C\u65E0\u7ED3\u8BBA\u300D\u5904\u7406\u4E14\u4E0D\u5C5E\u5DE5\u5177\u6545\u969C\uFF0C\u4E0D\u64C5\u65AD\u7528\u6237\u4E2D\u65AD\uFF0C\u4EA6\u4E0D\u8981\u56DE\u5934\u5543\u65E5\u5FD7\u3002append \u53EF\u76F4\u63A5\u8C03\u7528\u2014\u2014not found/\u5DF2\u7EC8\u6001/\u8FD0\u884C\u4E2D\u5165\u961F\u7531 executor \u81EA\u8BC1\uFF1Bstop \u53EF\u76F4\u63A5\u8C03\u7528\uFF0Cnot found/\u8FD0\u884C\u4E2D/\u5DF2\u7EC8\u6001\u7531\u63A7\u5236\u5E73\u9762\u5904\u7406\uFF08\u5DF2\u7EC8\u6001\u539F\u6837\u8FD4\u56DE\u3001\u4E0D\u8986\u76D6\uFF09\u3002
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
listUserRecordsFromServers,
|
|
8
8
|
readDbRecordFromServers,
|
|
9
9
|
readLiveDbRecordAfterTombstoneMerge
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PJILX6KS.js";
|
|
11
11
|
import {
|
|
12
12
|
parsePositiveFiniteNumberOrFallback
|
|
13
13
|
} from "./chunk-Y5GCAMGP.js";
|
|
@@ -69,7 +69,7 @@ import {
|
|
|
69
69
|
} from "./chunk-4SN6J65J.js";
|
|
70
70
|
import {
|
|
71
71
|
t
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-PPCUXO3E.js";
|
|
73
73
|
import {
|
|
74
74
|
asNonEmptyStringArray,
|
|
75
75
|
asTrimmedNonEmptyStringArray
|
|
@@ -558,7 +558,7 @@ async function buildCreatedAgentRecord(args) {
|
|
|
558
558
|
const resolvedAgentInput = resolveCliAgentKeyInput(args.parsed.agentInput);
|
|
559
559
|
const agentKey = resolvedAgentInput.startsWith("agent-") ? resolvedAgentInput : createAgentKey.private(userId || "local", resolvedAgentInput);
|
|
560
560
|
if (args.parsed.presetId) {
|
|
561
|
-
const { resolveProviderPresetFields } = await import("./providerPresetApply-
|
|
561
|
+
const { resolveProviderPresetFields } = await import("./providerPresetApply-EQESXT6X.js");
|
|
562
562
|
const fields = resolveProviderPresetFields(args.parsed.presetId);
|
|
563
563
|
if (fields.kind === "manual") {
|
|
564
564
|
throw new Error(
|
|
@@ -79,13 +79,38 @@ function clampCooldownDeadline(at, now) {
|
|
|
79
79
|
const max = now + MAX_COOLDOWN_MS;
|
|
80
80
|
return Math.min(Math.max(at, min), max);
|
|
81
81
|
}
|
|
82
|
-
function
|
|
82
|
+
function parseQuotaWindowScope(scope) {
|
|
83
|
+
const matched = /^(gemini|3p)-(.+)$/.exec(scope);
|
|
84
|
+
return matched ? { family: matched[1], period: matched[2] } : { period: scope };
|
|
85
|
+
}
|
|
86
|
+
function resolveQuotaWindowFamily(model) {
|
|
87
|
+
if (typeof model !== "string" || !model.trim()) return void 0;
|
|
88
|
+
return /gemini/i.test(model) ? "gemini" : "3p";
|
|
89
|
+
}
|
|
90
|
+
function isWindowRelevantToFamily(scope, family) {
|
|
91
|
+
if (typeof scope !== "string") return true;
|
|
92
|
+
const scopeFamily = parseQuotaWindowScope(scope).family;
|
|
93
|
+
return scopeFamily === void 0 || family === void 0 || scopeFamily === family;
|
|
94
|
+
}
|
|
95
|
+
var SUBSCRIPTION_PERIODS = /* @__PURE__ */ new Set(["5h", "7d", "daily", "weekly", "monthly"]);
|
|
96
|
+
function isSubscriptionPeriodWindow(window) {
|
|
97
|
+
const { period } = parseQuotaWindowScope(window.scope);
|
|
98
|
+
return SUBSCRIPTION_PERIODS.has(period.trim().toLowerCase());
|
|
99
|
+
}
|
|
100
|
+
function isExhaustedWindow(window) {
|
|
101
|
+
return window.remaining === 0 || typeof window.utilization === "number" && window.utilization >= 0.95;
|
|
102
|
+
}
|
|
103
|
+
function shouldClearCooldownFromQuota(entry, quota, now, options) {
|
|
83
104
|
if (!(typeof entry.nextAvailableAt === "number" && entry.nextAvailableAt > now)) return false;
|
|
84
105
|
if (typeof entry.markedAt !== "number" || !Number.isFinite(entry.markedAt)) return false;
|
|
85
106
|
if (!quota || !(quota.observedAt > entry.markedAt)) return false;
|
|
86
|
-
const
|
|
107
|
+
const family = resolveQuotaWindowFamily(options?.model);
|
|
108
|
+
const relevantWindows = quota.windows.filter(
|
|
109
|
+
(window) => isWindowRelevantToFamily(window.scope, family)
|
|
110
|
+
);
|
|
111
|
+
const subscriptionWindows = relevantWindows.filter(isSubscriptionPeriodWindow);
|
|
87
112
|
if (subscriptionWindows.length === 0) return false;
|
|
88
|
-
if (
|
|
113
|
+
if (relevantWindows.some((window) => !isSubscriptionPeriodWindow(window) && isExhaustedWindow(window))) return false;
|
|
89
114
|
return subscriptionWindows.every((window) => {
|
|
90
115
|
const hasUtilization = typeof window.utilization === "number";
|
|
91
116
|
const hasRemaining = typeof window.remaining === "number";
|
|
@@ -114,16 +139,18 @@ function resolveAgentAvailability(agent, now = Date.now()) {
|
|
|
114
139
|
const quota = agent?.quota;
|
|
115
140
|
const isAdmissible = isAdmissibleQuotaSnapshot(quota, now);
|
|
116
141
|
const hasObservedAt = Boolean(quota) && typeof quota?.observedAt === "number" && Number.isFinite(quota.observedAt);
|
|
117
|
-
const
|
|
118
|
-
|
|
142
|
+
const family = resolveQuotaWindowFamily(agent?.model);
|
|
143
|
+
const relevantWindows = (quota?.windows ?? []).filter(
|
|
144
|
+
(window) => isWindowRelevantToFamily(window?.scope, family)
|
|
119
145
|
);
|
|
146
|
+
const hasWindows = relevantWindows.length > 0;
|
|
120
147
|
const hasValidQuota = isAdmissible && hasWindows;
|
|
121
148
|
if (hasValidQuota) {
|
|
122
149
|
let hasActiveRemainingZero = false;
|
|
123
150
|
let hasActiveUtilizationHigh = false;
|
|
124
151
|
let hasWindowResetPending = false;
|
|
125
152
|
let maxResetAt;
|
|
126
|
-
for (const w of
|
|
153
|
+
for (const w of relevantWindows) {
|
|
127
154
|
const inspected = inspectQuotaWindowExhaustion(w, now);
|
|
128
155
|
if (!inspected) continue;
|
|
129
156
|
if (inspected.resetAt !== void 0 && inspected.resetAt > now) {
|