nolo-cli 0.16.0 → 0.18.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/{_executeModel-AVCA2NAV.js → _executeModel-X5PCIZN6.js} +50 -44
- package/{action-F5JACQBG.js → action-LT7BRFLK.js} +10 -9
- package/{addContentAction-AQXEYRBE.js → addContentAction-PL3KKBDH.js} +9 -8
- package/{addDialogAgentAction-EJHHJZWW.js → addDialogAgentAction-FCMSKYAF.js} +8 -7
- package/{agentDeleteCommand-QW5PUMDQ.js → agentDeleteCommand-2BZDQV36.js} +32 -29
- package/{agentEmailCommands-4ORVLGVQ.js → agentEmailCommands-2QJDGRMB.js} +62 -56
- package/{agentListCommands-YWBYRTYC.js → agentListCommands-6VEPTKBI.js} +31 -28
- package/{agentMachineCommands-JSQW4FOA.js → agentMachineCommands-NVVHNWYI.js} +30 -27
- package/{agentPullCommand-6HWUT3SW.js → agentPullCommand-ZZGU5KOY.js} +4 -4
- package/{agentRecordCommands-AASIWOBT.js → agentRecordCommands-4GGRDMD4.js} +57 -51
- package/{agentRunCommand-TB5BHXUH.js → agentRunCommand-XOLQNKBZ.js} +63 -54
- package/{agentRunControl-6ADXVYMR.js → agentRunControl-Y5AFH5PQ.js} +24 -1
- package/{agentRuntimeLocal-QNPNJRVH.js → agentRuntimeLocal-7WYWCGL4.js} +25 -22
- package/{agentSlice-RUNXC62Y.js → agentSlice-EAXPGEYV.js} +9 -8
- package/appDeleteCommands-77KR2RJ4.js +127 -0
- package/appDeployCommands-K7CAHGBI.js +166 -0
- package/appDeployStatusCommands-4OEKLTBT.js +147 -0
- package/appGetCommands-VM2WDLAZ.js +122 -0
- package/appListCommands-GX6BBA6U.js +125 -0
- package/{authCommand-YFTR3347.js → authCommand-DY6UUL6O.js} +16 -9
- package/{authCommands-YXGOXNBZ.js → authCommands-XTBV7OFZ.js} +6 -5
- package/{chunk-DPAB4FQ7.js → chunk-23FZYPLC.js} +1608 -212
- package/{chunk-LPEUV5RE.js → chunk-34WPV75U.js} +23 -2
- package/{chunk-XPC5C7BK.js → chunk-3ND52WIL.js} +2 -2
- package/{chunk-SOTZ6RDN.js → chunk-3Q7WHGCB.js} +1 -1
- package/{chunk-3OIRVWXA.js → chunk-3ZX7PERL.js} +10 -1
- package/{chunk-KKY4B2Q2.js → chunk-4PWB7JRR.js} +4 -1
- package/{chunk-6N4KODMN.js → chunk-4T5F7YZQ.js} +1 -1
- package/chunk-7BUYEZ6U.js +671 -0
- package/{chunk-AS3ZQ3O2.js → chunk-7OBMZCRD.js} +1 -1
- package/{chunk-IGXREZW2.js → chunk-AHCY2S2I.js} +1 -1
- package/{chunk-QLUFR47U.js → chunk-AL2V7U3E.js} +1 -1
- package/{chunk-MTU75CZ2.js → chunk-B5TOXZAK.js} +1 -1
- package/{chunk-AUURUT6L.js → chunk-BV4VEE3W.js} +264 -424
- package/{chunk-FRV6A633.js → chunk-CZ6NYQTV.js} +13 -4
- package/{chunk-PCTUYVUM.js → chunk-DFCFMCY6.js} +10 -3
- package/{chunk-JTMNCCWF.js → chunk-DKZFOK24.js} +16 -87
- package/chunk-DL6EPNIK.js +50 -0
- package/{chunk-ZQBL7LIC.js → chunk-EDV7EBOI.js} +317 -216
- package/{chunk-IWLUTMYX.js → chunk-ELT65PZW.js} +2 -2
- package/chunk-FQZZLA3C.js +223 -0
- package/{chunk-55NSNCFM.js → chunk-FXUSIQC2.js} +1 -1
- package/{chunk-MR6ISAGB.js → chunk-G5U6LDLG.js} +6 -6
- package/chunk-GFUIQ4RY.js +136 -0
- package/{chunk-NVEWUJVX.js → chunk-HEGV7BH3.js} +1 -1
- package/{chunk-BEBNFWDU.js → chunk-HWW2M4SN.js} +3 -3
- package/{chunk-4L2OJPCU.js → chunk-I2ZJKTG5.js} +58 -8
- package/{chunk-Z5JQNBNY.js → chunk-IYEXFJPC.js} +34 -15
- package/{setDialogExtraReferencesAction-LR6MSIXO.js → chunk-JLA4FXYC.js} +2 -17
- package/chunk-KFEVY3ST.js +255 -0
- package/{chunk-4FX6NVDW.js → chunk-L4F3I4SR.js} +3 -136
- package/{chunk-XBS2WYJ2.js → chunk-LLWKHDG4.js} +1 -1
- package/{chunk-3WGLLTK4.js → chunk-LSFAWXKC.js} +100 -3
- package/{chunk-6EVITP2G.js → chunk-MHSGJW4Z.js} +2 -251
- package/{chunk-O6W2O2DA.js → chunk-MKA6QE5E.js} +6 -2
- package/{chunk-DGEYDWEZ.js → chunk-MPVYDS7I.js} +3 -3
- package/{chunk-KFHN5NGJ.js → chunk-MVQ4TBSD.js} +1 -1
- package/{chunk-AVVZUXXC.js → chunk-N54HIJVJ.js} +34 -13
- package/{chunk-EHLHSX7R.js → chunk-OK6YSWLH.js} +9 -2
- package/{chunk-33BJUVK4.js → chunk-PIZYJVHQ.js} +5 -5
- package/{chunk-RLCXU7A5.js → chunk-PJSV3IZ5.js} +1 -1
- package/{chunk-7UKFVQ5W.js → chunk-R35XMF6F.js} +126 -41
- package/{chunk-OOSFSFMA.js → chunk-R5V5G73M.js} +2 -0
- package/{chunk-S2LXHNHG.js → chunk-REA4JLBH.js} +6 -6
- package/chunk-RQN4SEKL.js +107 -0
- package/{chunk-EABWT43X.js → chunk-RVOUXDFU.js} +5 -5
- package/{chunk-NSCHQQPU.js → chunk-SCTYAHYK.js} +470 -325
- package/{chunk-JTINRTBT.js → chunk-SKDNBYZK.js} +2 -2
- package/{chunk-M43KDE25.js → chunk-SWDPIPOY.js} +2 -8
- package/{chunk-KMQPSTMJ.js → chunk-TRT4I4UD.js} +2 -2
- package/{chunk-66X4VSRC.js → chunk-UAIVG4J6.js} +42 -2
- package/{chunk-3663CXZN.js → chunk-UBHAWFQ6.js} +143 -31
- package/{chunk-YJKXGHJ6.js → chunk-UGUW3FHG.js} +4 -4
- package/{chunk-P3RIAYGG.js → chunk-V3ED5AWK.js} +3 -3
- package/chunk-V5R4NZP2.js +78 -0
- package/{chunk-4IJYA27C.js → chunk-VDXCXCXH.js} +1 -1
- package/{chunk-MYMMNKYL.js → chunk-VNAEBGDK.js} +156 -6
- package/{chunk-FY233ZFU.js → chunk-VYHDJEQD.js} +110 -192
- package/{chunk-W4NVOSFF.js → chunk-WFHXMLHZ.js} +1 -1
- package/{chunk-H33743XH.js → chunk-WJRJDX2W.js} +1 -1
- package/chunk-X4Q4UZEY.js +26 -0
- package/{chunk-RPDGJO4D.js → chunk-XHG22OEX.js} +4 -4
- package/{chunk-DVRHHFEA.js → chunk-XMLRJUU5.js} +1 -1
- package/{chunk-3S2VOMIF.js → chunk-XRZJGPFI.js} +7 -7
- package/{chunk-GSINCD4P.js → chunk-YGW4G5W5.js} +25 -12
- package/chunk-ZZ2MH7LE.js +84 -0
- package/{cliExecutor-K3F7DMRO.js → cliExecutor-DNE7TCC4.js} +2 -2
- package/codingSkills-36KN5NQT.js +48 -0
- package/{createAgentAutomationAction-FNHPSKKO.js → createAgentAutomationAction-GNFF524X.js} +20 -19
- package/{createDialogAction-TZCVQ3NU.js → createDialogAction-RB55KCLO.js} +22 -21
- package/{createPageAction-EIGZ3BKT.js → createPageAction-Y7343GLU.js} +26 -25
- package/{db-HCJ5PRB5.js → db-W3O47YGF.js} +38 -12
- package/{dbSlice-7KQH6GOU.js → dbSlice-CGSRFJN3.js} +8 -7
- package/{deleteFile-WPWVZE4B.js → deleteFile-WDZ3VM7B.js} +3 -3
- package/{dialogCommands-FO77J5DQ.js → dialogCommands-IAZK6YHQ.js} +30 -27
- package/{dialogSlice-MM5U4KE2.js → dialogSlice-UQAXF23P.js} +20 -19
- package/{docCreateCommands-I3BS3AZI.js → docCreateCommands-I2EWZGCI.js} +33 -28
- package/{docDeleteCommands-Q2OPV52P.js → docDeleteCommands-IZ45UZKG.js} +32 -27
- package/{docReadCommands-YOOFACYZ.js → docReadCommands-R6Z4QJYU.js} +31 -26
- package/{docStore-NGYQ2JTR.js → docStore-5HOJ4D7D.js} +21 -20
- package/{docUpdateCommands-2B32ITHN.js → docUpdateCommands-2LRBKQPY.js} +32 -27
- package/{fetchMessages-KTNM7QAR.js → fetchMessages-BMGVZVSE.js} +4 -3
- package/{getPricing-P4XRJRZB.js → getPricing-G7DLAST6.js} +3 -3
- package/{handleSendMessageAction-JRZWWBKP.js → handleSendMessageAction-Q4HY35WX.js} +21 -20
- package/index.js +95 -64
- package/{localDialogRead-2VRI24F4.js → localDialogRead-4H3QJFLW.js} +2 -2
- package/{localRuntimeDb-LGDF6FQP.js → localRuntimeDb-THJZGAOJ.js} +1 -1
- package/{machineCommands-WRWF2ICZ.js → machineCommands-PKBPQKTY.js} +63 -57
- package/{machineWsRunDispatch-ZX7Q3TWZ.js → machineWsRunDispatch-UZAW4OXJ.js} +55 -49
- package/{models-WQ5N4OJM.js → models-DJFSJ7SW.js} +2 -2
- package/package.json +1 -1
- package/queryRunOverlay-O4LOMMPO.js +161 -0
- package/{read-CN3TNXIP.js → read-3FMPZPER.js} +3 -3
- package/{readDocTool-WF3675ED.js → readDocTool-VSYHKK3V.js} +1 -1
- package/{readlineWorkspace-ZTGRGW46.js → readlineWorkspace-Y2RDOFZG.js} +762 -218
- package/{removeDialogAgentAction-YDHBFEGI.js → removeDialogAgentAction-OAGA2G3U.js} +10 -9
- package/{runAgentClientLoop-JZCOP7LG.js → runAgentClientLoop-NBPIKJ6J.js} +44 -38
- package/runOverlayPresentation-ZO4VCWEU.js +11 -0
- package/{runtimeDoctorCommands-THIHX2SY.js → runtimeDoctorCommands-E2OUORHK.js} +6 -6
- package/setDialogExtraReferencesAction-JZEXA5SL.js +27 -0
- package/{setPrimaryDialogAgentAction-IIVDCY5C.js → setPrimaryDialogAgentAction-4ZUQQKDG.js} +26 -17
- package/{settingSlice-O23YDK2O.js → settingSlice-7MNKHZ6R.js} +9 -8
- package/{skillDiscovery-6M2BZUFN.js → skillDiscovery-KJWT7JBU.js} +3 -3
- package/{spaceCommands-VV4GTPQK.js → spaceCommands-DHCZ7J5I.js} +31 -28
- package/{spaceSlice-DRWWZJP7.js → spaceSlice-ZXLLG3CR.js} +20 -19
- package/{streamAgentChatTurn-Y6WGATQR.js → streamAgentChatTurn-L3YW6LSB.js} +98 -57
- package/{tableCommands-3P7MJ3PF.js → tableCommands-BEQAGE4I.js} +1 -1
- package/{tools-PUNBY3AH.js → tools-ECGXR5QF.js} +33 -28
- package/{tuiSummaryLlmCaller-F64WLSAF.js → tuiSummaryLlmCaller-OMSCNHXA.js} +6 -5
- package/types-ZSTJ7MPR.js +7 -0
- package/{updateDialogTitleAction-YSR4TCMB.js → updateDialogTitleAction-HQ2EUDFT.js} +23 -22
- package/{chunk-O4BU24WZ.js → chunk-6Y7A3OQQ.js} +3 -3
- package/{chunk-CMKUBIGW.js → chunk-X7W4TNB4.js} +3 -3
- package/{localRuntimeAuthority-TEGCOWX4.js → localRuntimeAuthority-4IXJCHZ7.js} +3 -3
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getRuntimeServerContext,
|
|
3
3
|
scheduleDeleteReplication
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-XMLRJUU5.js";
|
|
5
5
|
import {
|
|
6
6
|
fetchFromClientDb
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-R5V5G73M.js";
|
|
8
8
|
import {
|
|
9
9
|
buildTombstoneRecord
|
|
10
10
|
} from "./chunk-GBRG75BQ.js";
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildAgentRuntimeAgentLookupKeys,
|
|
3
3
|
shouldFetchAgentRuntimeRecordRemotely
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-R35XMF6F.js";
|
|
5
5
|
|
|
6
6
|
// packages/cli/client/localAgentRecords.ts
|
|
7
7
|
var buildLocalAgentLookupKeys = buildAgentRuntimeAgentLookupKeys;
|
|
8
8
|
var shouldReadAgentKeyRemotely = shouldFetchAgentRuntimeRecordRemotely;
|
|
9
9
|
|
|
10
|
-
// packages/core/agentHandle.ts
|
|
11
|
-
function normalizeAgentHandle(value) {
|
|
12
|
-
return typeof value === "string" && value.trim() ? value.trim().toLowerCase().replace(/\s+/g, " ") : void 0;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
10
|
export {
|
|
16
11
|
buildLocalAgentLookupKeys,
|
|
17
|
-
shouldReadAgentKeyRemotely
|
|
18
|
-
normalizeAgentHandle
|
|
12
|
+
shouldReadAgentKeyRemotely
|
|
19
13
|
};
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-6HYVJV7B.js";
|
|
4
4
|
import {
|
|
5
5
|
getDefaultCliLocalRuntimeDb
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-WJRJDX2W.js";
|
|
7
7
|
import {
|
|
8
8
|
buildCliRuntimeEnv,
|
|
9
9
|
clearProfileAuthToken,
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
createMemoryOwnerIndexKey,
|
|
24
24
|
createMemorySubjectKindIndexKey,
|
|
25
25
|
memoryOwnerRange
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-6Y7A3OQQ.js";
|
|
27
27
|
import {
|
|
28
28
|
asTrimmedNonEmptyStringArray
|
|
29
29
|
} from "./chunk-I42VC5KR.js";
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
platformHostedModels,
|
|
16
16
|
xaiModels,
|
|
17
17
|
zaiModels
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-MKA6QE5E.js";
|
|
19
19
|
import {
|
|
20
20
|
__export
|
|
21
21
|
} from "./chunk-4VNS5WPM.js";
|
|
@@ -78,6 +78,45 @@ var anthropicModels = [
|
|
|
78
78
|
}
|
|
79
79
|
];
|
|
80
80
|
|
|
81
|
+
// packages/integrations/anthropic/anthropicOAuthModels.ts
|
|
82
|
+
var oauthModel = ({ name, displayName, contextWindow, thinkingMode, maxOutputTokens }) => ({
|
|
83
|
+
name,
|
|
84
|
+
displayName,
|
|
85
|
+
hasVision: true,
|
|
86
|
+
description: `OAuth \u8BA2\u9605\u6A21\u578B\uFF08${displayName}\uFF0C${thinkingMode === "adaptive" ? "Adaptive thinking" : "Extended thinking"}\uFF09`,
|
|
87
|
+
contextWindow,
|
|
88
|
+
...maxOutputTokens ? { maxOutputTokens } : {},
|
|
89
|
+
supportsReasoningEffort: true,
|
|
90
|
+
price: { input: 0, output: 0 }
|
|
91
|
+
});
|
|
92
|
+
var anthropicOAuthModels = [
|
|
93
|
+
// 5 代(1M + Adaptive thinking always-on;官方 max output 128k)
|
|
94
|
+
oauthModel({ name: "claude-fable-5", displayName: "Claude Fable 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
|
|
95
|
+
oauthModel({ name: "claude-opus-5", displayName: "Claude Opus 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
|
|
96
|
+
oauthModel({ name: "claude-sonnet-5", displayName: "Claude Sonnet 5", contextWindow: 1e6, thinkingMode: "adaptive", maxOutputTokens: 128e3 }),
|
|
97
|
+
// 4.6/4.7/4.8 系(Adaptive thinking;context 官方未单列,参照 fuzzy claude-4.6→1M)
|
|
98
|
+
oauthModel({ name: "claude-opus-4-8", displayName: "Claude Opus 4.8", contextWindow: 1e6, thinkingMode: "adaptive" }),
|
|
99
|
+
oauthModel({ name: "claude-opus-4-7", displayName: "Claude Opus 4.7", contextWindow: 1e6, thinkingMode: "adaptive" }),
|
|
100
|
+
oauthModel({ name: "claude-sonnet-4-6", displayName: "Claude Sonnet 4.6", contextWindow: 1e6, thinkingMode: "adaptive" }),
|
|
101
|
+
oauthModel({ name: "claude-opus-4-6", displayName: "Claude Opus 4.6", contextWindow: 1e6, thinkingMode: "adaptive" }),
|
|
102
|
+
// 4.5 系(Extended thinking;官方发布规格 1M)
|
|
103
|
+
oauthModel({ name: "claude-opus-4-5-20251101", displayName: "Claude Opus 4.5", contextWindow: 1e6, thinkingMode: "extended" }),
|
|
104
|
+
oauthModel({ name: "claude-sonnet-4-5-20250929", displayName: "Claude Sonnet 4.5", contextWindow: 1e6, thinkingMode: "extended" }),
|
|
105
|
+
// haiku-4-5(官方明确 context=200k + Extended thinking)
|
|
106
|
+
oauthModel({ name: "claude-haiku-4-5-20251001", displayName: "Claude Haiku 4.5", contextWindow: 2e5, thinkingMode: "extended" })
|
|
107
|
+
];
|
|
108
|
+
var OAUTH_MODEL_THINKING_MODE = new Map(
|
|
109
|
+
anthropicOAuthModels.map((m) => [m.name, m.thinkingMode])
|
|
110
|
+
);
|
|
111
|
+
function isAdaptiveThinkingModelId(model) {
|
|
112
|
+
if (!model) return false;
|
|
113
|
+
const tableMode = OAUTH_MODEL_THINKING_MODE.get(model);
|
|
114
|
+
if (tableMode === "adaptive") return true;
|
|
115
|
+
if (tableMode === "extended") return false;
|
|
116
|
+
const n = model.toLowerCase();
|
|
117
|
+
return n.includes("fable-5") || n.includes("opus-5") || n.includes("sonnet-5") || n.includes("opus-4-8") || n.includes("opus-4-7") || n.includes("sonnet-4-6") || n.includes("opus-4-6");
|
|
118
|
+
}
|
|
119
|
+
|
|
81
120
|
// packages/integrations/qwen/models.ts
|
|
82
121
|
var qwenModels = [
|
|
83
122
|
// ── Qwen3 旗舰 ──
|
|
@@ -4683,7 +4722,7 @@ var MODEL_MAP = {
|
|
|
4683
4722
|
moonshot: moonshotAllModels
|
|
4684
4723
|
};
|
|
4685
4724
|
var MODEL_LOOKUP_MAP = {
|
|
4686
|
-
anthropic: anthropicModels,
|
|
4725
|
+
anthropic: [...anthropicModels, ...anthropicOAuthModels],
|
|
4687
4726
|
xai: xaiModels,
|
|
4688
4727
|
...MODEL_MAP
|
|
4689
4728
|
};
|
|
@@ -4892,6 +4931,7 @@ function getApiEndpoint(agent) {
|
|
|
4892
4931
|
}
|
|
4893
4932
|
|
|
4894
4933
|
export {
|
|
4934
|
+
isAdaptiveThinkingModelId,
|
|
4895
4935
|
isModelSupportReasoningEffort,
|
|
4896
4936
|
clampReasoningEffort,
|
|
4897
4937
|
MODEL_LOOKUP_MAP,
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
inlineImageUrlsForCustomProvider,
|
|
6
6
|
prepareTools,
|
|
7
7
|
shouldInlineImageUrlsForAgent
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-CZ6NYQTV.js";
|
|
9
9
|
import {
|
|
10
10
|
performFetchRequest
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-VYHDJEQD.js";
|
|
12
12
|
import {
|
|
13
13
|
createSSEParser,
|
|
14
14
|
createToolRunId,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
toolRunSetPending,
|
|
20
20
|
toolRunStarted,
|
|
21
21
|
toolRunSucceeded
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-EDV7EBOI.js";
|
|
23
23
|
import {
|
|
24
24
|
getPublicImageAgentMode
|
|
25
25
|
} from "./chunk-VIDPVFP3.js";
|
|
@@ -29,25 +29,31 @@ import {
|
|
|
29
29
|
messageStreaming,
|
|
30
30
|
selectCurrentSpaceId,
|
|
31
31
|
updateToolMessage
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-SCTYAHYK.js";
|
|
33
33
|
import {
|
|
34
34
|
streamAgentChatTurn
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-REA4JLBH.js";
|
|
36
36
|
import {
|
|
37
37
|
EMPTY_ASSISTANT_REPAIR_PROMPT
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-YGW4G5W5.js";
|
|
39
39
|
import {
|
|
40
40
|
accumulateToolCallDelta,
|
|
41
41
|
createThinkParserState,
|
|
42
|
+
createToolCallTextParserState,
|
|
42
43
|
flushThinkParser,
|
|
44
|
+
flushToolCallTextParserIntoCallback,
|
|
45
|
+
processContentChunkWithToolCallStripping,
|
|
43
46
|
processThinkChunk
|
|
44
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-LSFAWXKC.js";
|
|
45
48
|
import {
|
|
46
49
|
getModelInfo
|
|
47
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-I2ZJKTG5.js";
|
|
48
51
|
import {
|
|
49
52
|
getApiEndpoint
|
|
50
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-UAIVG4J6.js";
|
|
54
|
+
import {
|
|
55
|
+
toErrorMessage
|
|
56
|
+
} from "./chunk-HNMXYYJR.js";
|
|
51
57
|
import {
|
|
52
58
|
extractCustomId
|
|
53
59
|
} from "./chunk-DFFIZ25G.js";
|
|
@@ -56,27 +62,24 @@ import {
|
|
|
56
62
|
removeActiveController,
|
|
57
63
|
tokenUsageLiveUpdate
|
|
58
64
|
} from "./chunk-3ASDTTEI.js";
|
|
59
|
-
import {
|
|
60
|
-
toErrorMessage
|
|
61
|
-
} from "./chunk-HNMXYYJR.js";
|
|
62
65
|
import {
|
|
63
66
|
selectCurrentServer
|
|
64
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-RVOUXDFU.js";
|
|
65
68
|
import {
|
|
66
69
|
write
|
|
67
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-XRZJGPFI.js";
|
|
68
71
|
import {
|
|
69
72
|
createDialogMessageKeyAndId,
|
|
70
73
|
dialogMessageKey,
|
|
71
74
|
toTrimmedString
|
|
72
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-6Y7A3OQQ.js";
|
|
73
76
|
import {
|
|
74
77
|
createAsyncThunk,
|
|
75
78
|
selectIdentityToken
|
|
76
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-XMLRJUU5.js";
|
|
77
80
|
import {
|
|
78
81
|
isAbortError
|
|
79
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-R5V5G73M.js";
|
|
80
83
|
import {
|
|
81
84
|
asTrimmedString
|
|
82
85
|
} from "./chunk-3EUW3WEO.js";
|
|
@@ -504,7 +507,7 @@ var processToolData = createAsyncThunk(
|
|
|
504
507
|
...llmContext ? { llmContext } : {},
|
|
505
508
|
...activity ? { activity } : {}
|
|
506
509
|
};
|
|
507
|
-
const isUiAskChoice = canonicalName === "
|
|
510
|
+
const isUiAskChoice = canonicalName === "ask_user";
|
|
508
511
|
const blocking = typeof executionToolArgs?.blocking === "boolean" ? executionToolArgs.blocking : true;
|
|
509
512
|
const hasPendingInteraction = isUiAskChoice && blocking === true;
|
|
510
513
|
return {
|
|
@@ -1105,6 +1108,7 @@ function createInitialStreamState() {
|
|
|
1105
1108
|
accumulatedToolCalls: [],
|
|
1106
1109
|
reasoningBuffer: "",
|
|
1107
1110
|
thinkState: createThinkParserState(),
|
|
1111
|
+
toolCallTextState: createToolCallTextParserState(),
|
|
1108
1112
|
assistantToolCalls: void 0,
|
|
1109
1113
|
hasHandedOff: false,
|
|
1110
1114
|
hasProcessedToolCalls: false,
|
|
@@ -1219,6 +1223,7 @@ function applyDelta(state, delta) {
|
|
|
1219
1223
|
const reasoningChunk = delta.reasoning_content ?? delta.reasoning ?? "";
|
|
1220
1224
|
if (reasoningChunk) {
|
|
1221
1225
|
next.reasoningBuffer = (next.reasoningBuffer || "") + reasoningChunk;
|
|
1226
|
+
hasNewVisibleContent = true;
|
|
1222
1227
|
}
|
|
1223
1228
|
if (Array.isArray(delta.tool_calls) && delta.tool_calls.length > 0) {
|
|
1224
1229
|
const accumulated = accumulateToolCallChunks(
|
|
@@ -1248,10 +1253,23 @@ function applyDelta(state, delta) {
|
|
|
1248
1253
|
}
|
|
1249
1254
|
const contentChunk = delta.content || "";
|
|
1250
1255
|
if (contentChunk) {
|
|
1251
|
-
const
|
|
1256
|
+
const { cleanedContent, state: tcState } = processContentChunkWithToolCallStripping(
|
|
1257
|
+
contentChunk,
|
|
1258
|
+
next.toolCallTextState,
|
|
1259
|
+
(name, arguments_) => {
|
|
1260
|
+
next.accumulatedToolCalls = accumulateToolCallChunks(
|
|
1261
|
+
next.accumulatedToolCalls ?? [],
|
|
1262
|
+
[{ index: next.accumulatedToolCalls.length, type: "function", function: { name, arguments: arguments_ } }]
|
|
1263
|
+
);
|
|
1264
|
+
}
|
|
1265
|
+
);
|
|
1266
|
+
next.toolCallTextState = tcState;
|
|
1267
|
+
if (!cleanedContent) return { state: next, hasNewVisibleContent };
|
|
1268
|
+
const parsed = processThinkChunk(cleanedContent, next.thinkState);
|
|
1252
1269
|
next.thinkState = parsed.state;
|
|
1253
1270
|
if (parsed.reasoning) {
|
|
1254
1271
|
next.reasoningBuffer = (next.reasoningBuffer || "") + parsed.reasoning;
|
|
1272
|
+
hasNewVisibleContent = true;
|
|
1255
1273
|
}
|
|
1256
1274
|
if (parsed.content) {
|
|
1257
1275
|
next = {
|
|
@@ -1280,6 +1298,58 @@ function emitStreamingUpdate(hasNewVisibleContent, state, ctx) {
|
|
|
1280
1298
|
})
|
|
1281
1299
|
);
|
|
1282
1300
|
}
|
|
1301
|
+
function createStreamThrottler(emitUpdate, options) {
|
|
1302
|
+
let pendingState = null;
|
|
1303
|
+
let timerId = null;
|
|
1304
|
+
const defaultSchedule = (cb) => {
|
|
1305
|
+
if (typeof window !== "undefined" && typeof window.requestAnimationFrame === "function") {
|
|
1306
|
+
return window.requestAnimationFrame(cb);
|
|
1307
|
+
}
|
|
1308
|
+
return setTimeout(cb, 16);
|
|
1309
|
+
};
|
|
1310
|
+
const defaultCancel = (id) => {
|
|
1311
|
+
if (typeof window !== "undefined" && typeof window.cancelAnimationFrame === "function") {
|
|
1312
|
+
window.cancelAnimationFrame(id);
|
|
1313
|
+
return;
|
|
1314
|
+
}
|
|
1315
|
+
clearTimeout(id);
|
|
1316
|
+
};
|
|
1317
|
+
const scheduleFn = options?.schedule ?? defaultSchedule;
|
|
1318
|
+
const cancelFn = options?.cancel ?? defaultCancel;
|
|
1319
|
+
return {
|
|
1320
|
+
push(state) {
|
|
1321
|
+
pendingState = state;
|
|
1322
|
+
if (timerId === null) {
|
|
1323
|
+
timerId = scheduleFn(() => {
|
|
1324
|
+
timerId = null;
|
|
1325
|
+
if (pendingState !== null) {
|
|
1326
|
+
const stateToEmit = pendingState;
|
|
1327
|
+
pendingState = null;
|
|
1328
|
+
emitUpdate(stateToEmit);
|
|
1329
|
+
}
|
|
1330
|
+
});
|
|
1331
|
+
}
|
|
1332
|
+
},
|
|
1333
|
+
flush() {
|
|
1334
|
+
if (timerId !== null) {
|
|
1335
|
+
cancelFn(timerId);
|
|
1336
|
+
timerId = null;
|
|
1337
|
+
}
|
|
1338
|
+
if (pendingState !== null) {
|
|
1339
|
+
const stateToEmit = pendingState;
|
|
1340
|
+
pendingState = null;
|
|
1341
|
+
emitUpdate(stateToEmit);
|
|
1342
|
+
}
|
|
1343
|
+
},
|
|
1344
|
+
cancel() {
|
|
1345
|
+
if (timerId !== null) {
|
|
1346
|
+
cancelFn(timerId);
|
|
1347
|
+
timerId = null;
|
|
1348
|
+
}
|
|
1349
|
+
pendingState = null;
|
|
1350
|
+
}
|
|
1351
|
+
};
|
|
1352
|
+
}
|
|
1283
1353
|
function validateAndPartitionToolCalls(state) {
|
|
1284
1354
|
const validCalls = [];
|
|
1285
1355
|
const invalidCalls = [];
|
|
@@ -1438,15 +1508,26 @@ async function readStreamChunkWithTimeout(reader, signal) {
|
|
|
1438
1508
|
async function handleStreamCompletion(state, ctx, finalizeCtx) {
|
|
1439
1509
|
let hasHandedOff = false;
|
|
1440
1510
|
let hasPendingInteraction = false;
|
|
1511
|
+
const { residualContent, state: tcFlushState } = flushToolCallTextParserIntoCallback(
|
|
1512
|
+
state.toolCallTextState,
|
|
1513
|
+
(name, arguments_) => {
|
|
1514
|
+
state.accumulatedToolCalls = accumulateToolCallChunks(
|
|
1515
|
+
state.accumulatedToolCalls ?? [],
|
|
1516
|
+
[{ index: state.accumulatedToolCalls.length, type: "function", function: { name, arguments: arguments_ } }]
|
|
1517
|
+
);
|
|
1518
|
+
}
|
|
1519
|
+
);
|
|
1520
|
+
state.toolCallTextState = tcFlushState;
|
|
1441
1521
|
const flushed = flushThinkParser(state.thinkState);
|
|
1442
1522
|
state.thinkState = flushed.state;
|
|
1443
1523
|
if (flushed.reasoning) {
|
|
1444
1524
|
state.reasoningBuffer = (state.reasoningBuffer || "") + flushed.reasoning;
|
|
1445
1525
|
}
|
|
1446
|
-
|
|
1526
|
+
const combinedFlushContent = residualContent + (flushed.content ?? "");
|
|
1527
|
+
if (combinedFlushContent) {
|
|
1447
1528
|
state = {
|
|
1448
1529
|
...state,
|
|
1449
|
-
contentBuffer: appendTextChunk(state.contentBuffer,
|
|
1530
|
+
contentBuffer: appendTextChunk(state.contentBuffer, combinedFlushContent)
|
|
1450
1531
|
};
|
|
1451
1532
|
}
|
|
1452
1533
|
if (!state.hasProcessedToolCalls && state.accumulatedToolCalls.length > 0) {
|
|
@@ -1483,7 +1564,8 @@ var sendOpenAICompletionsRequest = async ({
|
|
|
1483
1564
|
parentMessageId,
|
|
1484
1565
|
messageMetadata,
|
|
1485
1566
|
disableToolsForThisRequest = false,
|
|
1486
|
-
quickChatPerfStartedAt
|
|
1567
|
+
quickChatPerfStartedAt,
|
|
1568
|
+
streamThrottlerOptions
|
|
1487
1569
|
}) => {
|
|
1488
1570
|
const { dispatch, getState, signal: thunkSignal } = thunkApi;
|
|
1489
1571
|
const dialogId = extractCustomId(dialogKey);
|
|
@@ -1530,6 +1612,16 @@ var sendOpenAICompletionsRequest = async ({
|
|
|
1530
1612
|
let lastFinishReason = null;
|
|
1531
1613
|
let activeMessageMetadata = messageMetadata;
|
|
1532
1614
|
let emptyCompletionRetryUsed = false;
|
|
1615
|
+
const throttler = createStreamThrottler((latestState) => {
|
|
1616
|
+
emitStreamingUpdate(true, latestState, {
|
|
1617
|
+
dispatch,
|
|
1618
|
+
agentConfig,
|
|
1619
|
+
messageId,
|
|
1620
|
+
msgKey,
|
|
1621
|
+
dialogId,
|
|
1622
|
+
messageMetadata: activeMessageMetadata
|
|
1623
|
+
});
|
|
1624
|
+
}, streamThrottlerOptions);
|
|
1533
1625
|
const buildMeta = () => ({
|
|
1534
1626
|
hasToolCalls: Array.isArray(streamState.assistantToolCalls) && streamState.assistantToolCalls.length > 0,
|
|
1535
1627
|
hasPendingInteraction: hasPendingInteractionOverall,
|
|
@@ -1568,7 +1660,23 @@ var sendOpenAICompletionsRequest = async ({
|
|
|
1568
1660
|
currentServer: selectCurrentServer(getState()),
|
|
1569
1661
|
signal,
|
|
1570
1662
|
token,
|
|
1571
|
-
dialogId
|
|
1663
|
+
dialogId,
|
|
1664
|
+
onRetry: (info) => {
|
|
1665
|
+
dispatch(
|
|
1666
|
+
messageStreaming({
|
|
1667
|
+
id: messageId,
|
|
1668
|
+
dialogId,
|
|
1669
|
+
dbKey: msgKey,
|
|
1670
|
+
content: "",
|
|
1671
|
+
role: "assistant",
|
|
1672
|
+
agentKey: agentConfig.dbKey,
|
|
1673
|
+
cybotKey: agentConfig.dbKey,
|
|
1674
|
+
...activeMessageMetadata ?? {},
|
|
1675
|
+
isStreaming: true,
|
|
1676
|
+
retryProgress: info
|
|
1677
|
+
})
|
|
1678
|
+
);
|
|
1679
|
+
}
|
|
1572
1680
|
});
|
|
1573
1681
|
logQuickChatPerfStage(quickChatPerfStartedAt, "openai-completions-fetch-response", {
|
|
1574
1682
|
ok: response.ok,
|
|
@@ -1621,6 +1729,7 @@ var sendOpenAICompletionsRequest = async ({
|
|
|
1621
1729
|
while (true) {
|
|
1622
1730
|
const { done, value } = await readStreamChunkWithTimeout(reader, signal);
|
|
1623
1731
|
if (done) {
|
|
1732
|
+
throttler.flush();
|
|
1624
1733
|
const producedNothing = streamState.contentBuffer.length === 0 && !streamState.reasoningBuffer.trim() && (streamState.assistantToolCalls?.length ?? 0) === 0;
|
|
1625
1734
|
if (producedNothing && !emptyCompletionRetryUsed && !streamState.hasHandedOff && !streamState.alreadyFinalized && !signal.aborted) {
|
|
1626
1735
|
emptyCompletionRetryUsed = true;
|
|
@@ -1640,6 +1749,7 @@ var sendOpenAICompletionsRequest = async ({
|
|
|
1640
1749
|
dialogId
|
|
1641
1750
|
});
|
|
1642
1751
|
if (retryResponse.ok && retryResponse.body) {
|
|
1752
|
+
throttler.cancel();
|
|
1643
1753
|
streamState = createInitialStreamState();
|
|
1644
1754
|
parseSSE = createSSEParser();
|
|
1645
1755
|
decoder = new TextDecoder();
|
|
@@ -1689,6 +1799,7 @@ var sendOpenAICompletionsRequest = async ({
|
|
|
1689
1799
|
continue;
|
|
1690
1800
|
}
|
|
1691
1801
|
if (data.error) {
|
|
1802
|
+
throttler.flush();
|
|
1692
1803
|
const errorMsg = `Error: ${formatStreamErrorMessage(data)}`;
|
|
1693
1804
|
streamState = {
|
|
1694
1805
|
...streamState,
|
|
@@ -1717,19 +1828,18 @@ var sendOpenAICompletionsRequest = async ({
|
|
|
1717
1828
|
{ dialogKey }
|
|
1718
1829
|
);
|
|
1719
1830
|
}
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
messageMetadata: activeMessageMetadata
|
|
1727
|
-
});
|
|
1831
|
+
if (hasNewVisibleContent) {
|
|
1832
|
+
throttler.push(streamState);
|
|
1833
|
+
}
|
|
1834
|
+
if (Array.isArray(delta.tool_calls) && delta.tool_calls.length > 0) {
|
|
1835
|
+
throttler.flush();
|
|
1836
|
+
}
|
|
1728
1837
|
const finishReason = choice.finish_reason;
|
|
1729
1838
|
if (finishReason) {
|
|
1730
1839
|
lastFinishReason = finishReason;
|
|
1731
1840
|
streamState.finishReason = finishReason;
|
|
1732
1841
|
if (finishReason === "tool_calls") {
|
|
1842
|
+
throttler.flush();
|
|
1733
1843
|
if (streamState.totalUsage) {
|
|
1734
1844
|
dispatch(tokenUsageLiveUpdate({
|
|
1735
1845
|
input_tokens: streamState.totalUsage.prompt_tokens ?? streamState.totalUsage.input_tokens,
|
|
@@ -1770,6 +1880,7 @@ var sendOpenAICompletionsRequest = async ({
|
|
|
1770
1880
|
}
|
|
1771
1881
|
}
|
|
1772
1882
|
} catch (error) {
|
|
1883
|
+
throttler.flush();
|
|
1773
1884
|
let errorText;
|
|
1774
1885
|
const isAbort = isAbortError(error);
|
|
1775
1886
|
if (isAbort) {
|
|
@@ -1791,6 +1902,7 @@ var sendOpenAICompletionsRequest = async ({
|
|
|
1791
1902
|
}
|
|
1792
1903
|
streamState = await finalizeStream(streamState, finalizeCtx);
|
|
1793
1904
|
} finally {
|
|
1905
|
+
throttler.cancel();
|
|
1794
1906
|
logQuickChatPerfStage(quickChatPerfStartedAt, "openai-completions-stream-finished", {
|
|
1795
1907
|
dialogKey
|
|
1796
1908
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
selectCurrentServer,
|
|
3
3
|
selectRemoteServers
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-RVOUXDFU.js";
|
|
5
5
|
import {
|
|
6
6
|
createUserKey,
|
|
7
7
|
extractAgentInfo,
|
|
@@ -10,16 +10,16 @@ import {
|
|
|
10
10
|
sanitizeShareData,
|
|
11
11
|
shareKey,
|
|
12
12
|
toNonEmptyString
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-6Y7A3OQQ.js";
|
|
14
14
|
import {
|
|
15
15
|
noloDeleteRequest,
|
|
16
16
|
noloWriteRequest,
|
|
17
17
|
selectIdentityUser,
|
|
18
18
|
selectIdentityUserId
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-XMLRJUU5.js";
|
|
20
20
|
import {
|
|
21
21
|
normalizeTimeFields
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-R5V5G73M.js";
|
|
23
23
|
|
|
24
24
|
// packages/share/action.ts
|
|
25
25
|
var generateToken = () => {
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
listUserRecordsFromServers,
|
|
8
8
|
readDbRecordFromServers,
|
|
9
9
|
readLiveDbRecordAfterTombstoneMerge
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-HEGV7BH3.js";
|
|
11
11
|
import {
|
|
12
12
|
buildDialogAttachmentPlan,
|
|
13
13
|
extractFileContentIds
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-B5TOXZAK.js";
|
|
15
15
|
import {
|
|
16
16
|
toErrorMessage
|
|
17
17
|
} from "./chunk-HNMXYYJR.js";
|
|
@@ -625,7 +625,7 @@ async function tryHttpDialogCandidates(args) {
|
|
|
625
625
|
throw Object.assign(new Error("All HTTP dialog reads failed"), { attempts });
|
|
626
626
|
}
|
|
627
627
|
async function readDialogFromLocalDb(dialogKey, dialogId, limit) {
|
|
628
|
-
const { readDialogFromLocalDb: readLocalDialog } = await import("./localDialogRead-
|
|
628
|
+
const { readDialogFromLocalDb: readLocalDialog } = await import("./localDialogRead-4H3QJFLW.js");
|
|
629
629
|
const result = await readLocalDialog({ dialogKey, dialogId, limit });
|
|
630
630
|
return {
|
|
631
631
|
...result,
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// packages/core/chat/runOverlayPresentation.ts
|
|
2
|
+
var STATUS_ORDER = [
|
|
3
|
+
"running",
|
|
4
|
+
"reviewing",
|
|
5
|
+
"testing",
|
|
6
|
+
"done",
|
|
7
|
+
"failed",
|
|
8
|
+
"cancelled",
|
|
9
|
+
"orphaned"
|
|
10
|
+
];
|
|
11
|
+
var STATUS_DISPLAY = {
|
|
12
|
+
running: { icon: "\u25B6", label: "\u6B63\u5728\u8FD0\u884C" },
|
|
13
|
+
reviewing: { icon: "\u{1F441}", label: "\u5F85 review" },
|
|
14
|
+
testing: { icon: "\u{1F9EA}", label: "\u5728\u6D4B\u8BD5" },
|
|
15
|
+
done: { icon: "\u2705", label: "\u5DF2\u5B8C\u6210" },
|
|
16
|
+
failed: { icon: "\u274C", label: "\u5931\u8D25" },
|
|
17
|
+
cancelled: { icon: "\u23F9", label: "\u5DF2\u53D6\u6D88" },
|
|
18
|
+
orphaned: { icon: "\u{1F47B}", label: "\u5B64\u513F" }
|
|
19
|
+
};
|
|
20
|
+
function statusLabel(status) {
|
|
21
|
+
return STATUS_DISPLAY[status]?.label ?? status;
|
|
22
|
+
}
|
|
23
|
+
function groupByStatus(runs) {
|
|
24
|
+
const buckets = /* @__PURE__ */ new Map();
|
|
25
|
+
for (const run of runs.values()) {
|
|
26
|
+
const arr = buckets.get(run.status);
|
|
27
|
+
if (arr) arr.push(run);
|
|
28
|
+
else buckets.set(run.status, [run]);
|
|
29
|
+
}
|
|
30
|
+
const grouped = [];
|
|
31
|
+
for (const status of STATUS_ORDER) {
|
|
32
|
+
const arr = buckets.get(status);
|
|
33
|
+
if (arr && arr.length > 0) grouped.push({ status, runs: arr });
|
|
34
|
+
}
|
|
35
|
+
return grouped;
|
|
36
|
+
}
|
|
37
|
+
function buildOverlayPresentation(state) {
|
|
38
|
+
if (state.runs.size === 0) return null;
|
|
39
|
+
const grouped = groupByStatus(state.runs);
|
|
40
|
+
const lines = [];
|
|
41
|
+
for (const { status, runs } of grouped) {
|
|
42
|
+
const { icon, label } = STATUS_DISPLAY[status];
|
|
43
|
+
lines.push(`${icon} ${runs.length} \u4E2A${label}`);
|
|
44
|
+
}
|
|
45
|
+
lines.push("");
|
|
46
|
+
lines.push("--- \u8BE6\u60C5 ---");
|
|
47
|
+
for (const { runs } of grouped) {
|
|
48
|
+
for (const run of runs) {
|
|
49
|
+
lines.push(detailLine(run));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return lines.join("\n");
|
|
53
|
+
}
|
|
54
|
+
function detailLine(run) {
|
|
55
|
+
const short = shortStatusLabel(run.status);
|
|
56
|
+
let suffix = short;
|
|
57
|
+
if (run.summary) suffix += ` \u2014 ${run.summary}`;
|
|
58
|
+
else if (run.status === "failed" && run.errorMessage) suffix += ` \u2014 ${run.errorMessage}`;
|
|
59
|
+
return `\u2022 ${run.runId} (${run.name}): ${suffix}`;
|
|
60
|
+
}
|
|
61
|
+
var SHORT_STATUS_LABEL = {
|
|
62
|
+
running: "\u8FD0\u884C\u4E2D",
|
|
63
|
+
reviewing: "\u5F85 review",
|
|
64
|
+
testing: "\u6D4B\u8BD5\u4E2D",
|
|
65
|
+
done: "\u5DF2\u5B8C\u6210",
|
|
66
|
+
failed: "\u5931\u8D25",
|
|
67
|
+
cancelled: "\u5DF2\u53D6\u6D88",
|
|
68
|
+
orphaned: "\u5B64\u513F"
|
|
69
|
+
};
|
|
70
|
+
function shortStatusLabel(status) {
|
|
71
|
+
return SHORT_STATUS_LABEL[status];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export {
|
|
75
|
+
statusLabel,
|
|
76
|
+
groupByStatus,
|
|
77
|
+
buildOverlayPresentation
|
|
78
|
+
};
|