nolo-cli 0.47.0-alpha.3 → 0.47.0-alpha.4
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-5PG6CUWD.js → _executeModel-4NLFAYUJ.js} +14 -12
- package/{agentDeleteCommand-SHSPQZHI.js → agentDeleteCommand-O5XR2A7X.js} +2 -2
- package/{agentEmailCommands-TNFWV6XO.js → agentEmailCommands-QXG4VPDL.js} +15 -12
- package/{agentListCommands-5QTNEYMQ.js → agentListCommands-NF75BYVM.js} +2 -2
- package/{agentMachineCommands-OENA64ZO.js → agentMachineCommands-KGOXL5IA.js} +6 -5
- package/{agentRecordCommands-JLN2EWGC.js → agentRecordCommands-MV6RBJU2.js} +15 -12
- package/{agentRunCommand-CQM7DINV.js → agentRunCommand-PGKXK34X.js} +15 -12
- package/{agentRuntimeLocal-ZKXYFLXI.js → agentRuntimeLocal-O6X4KCUS.js} +2 -2
- package/{agentSlice-NKFLP3RI.js → agentSlice-HM5KSZIO.js} +1 -1
- package/{appDeleteCommands-XYGAZIJX.js → appDeleteCommands-SZTC24KA.js} +2 -2
- package/{appDeployCommands-7T5CABRB.js → appDeployCommands-EAUHYRPF.js} +2 -2
- package/{appDeployStatusCommands-KTFQMRPZ.js → appDeployStatusCommands-K3AKGODG.js} +2 -2
- package/{appGetCommands-HOX2ULSV.js → appGetCommands-L56BQOH5.js} +2 -2
- package/{appListCommands-3SLCEHND.js → appListCommands-WTZKJM4T.js} +2 -2
- package/{chatQueueReduxAdapter-WMMBQK3Y.js → chatQueueReduxAdapter-Z7GK6NWM.js} +2 -2
- package/{chunk-RQSOAMPJ.js → chunk-3L2WKC3W.js} +12 -7
- package/{chunk-4ZNDBDWG.js → chunk-4RUHYZLJ.js} +2 -2
- package/chunk-5XTOKQLW.js +121 -0
- package/{chunk-5OUK7FZE.js → chunk-65NEZURC.js} +1 -1
- package/{chunk-IWUPQUWA.js → chunk-6H5FASZ4.js} +1 -1
- package/{chunk-MQRZ5QUH.js → chunk-ALXHV7NK.js} +4 -2
- package/{chunk-WPFNAEIW.js → chunk-B75HVLQU.js} +1 -1
- package/{chunk-MUIJYGYW.js → chunk-BPRFPWWC.js} +1 -1
- package/{chunk-G46DB6KG.js → chunk-BPYHNK6B.js} +2 -2
- package/{chunk-YNOGNUBC.js → chunk-CXCSIBWY.js} +73 -27
- package/{chunk-XMI3APSU.js → chunk-E5HL3EXN.js} +6 -6
- package/chunk-EADNWBAZ.js +59 -0
- package/{chunk-H2JQB6B6.js → chunk-EPSE5WQL.js} +2 -2
- package/{chunk-3N2KFW63.js → chunk-EUG45QJR.js} +43 -20
- package/{chunk-GYXN23QE.js → chunk-GEGFB75V.js} +15 -176
- package/{chunk-5BPZLBFB.js → chunk-KMWZ2MEG.js} +8 -6
- package/chunk-NF64D32W.js +8 -0
- package/{chunk-XLIHNL4X.js → chunk-T4P5XHZZ.js} +10 -8
- package/{chunk-FAWK6DBF.js → chunk-UVEH34NR.js} +8 -8
- package/{chunk-6LYUN76O.js → chunk-V7FV73B7.js} +3 -3
- package/{chunk-5PPFYHU2.js → chunk-WQDU7TFJ.js} +2 -2
- package/{chunk-5TNI2BMD.js → chunk-XXS34H5T.js} +3 -3
- package/{createAgentAutomationAction-ENDNA3Q4.js → createAgentAutomationAction-QWWQTQ2Q.js} +3 -3
- package/{createDialogAction-2KNX6S2D.js → createDialogAction-XDMNGRXN.js} +4 -4
- package/{createPageAction-SNBCYPK6.js → createPageAction-74TUIHWA.js} +3 -3
- package/{dialogCommands-COU5C635.js → dialogCommands-WPG6I2ZR.js} +6 -3
- package/{dialogSlice-RTPOD6EW.js → dialogSlice-YUVIK53X.js} +2 -2
- package/{docCreateCommands-JWY25UFB.js → docCreateCommands-3T6427C5.js} +2 -2
- package/{docDeleteCommands-BPJOCSX4.js → docDeleteCommands-6ZXYJWUC.js} +2 -2
- package/{docReadCommands-BSEZCYTQ.js → docReadCommands-3VVYJYXK.js} +2 -2
- package/{docStore-TYHVLU7G.js → docStore-4J3GA3JF.js} +4 -4
- package/{docUpdateCommands-S2IE2VV4.js → docUpdateCommands-Z3RO54Y7.js} +2 -2
- package/{handleSendMessageAction-QYXDQXGH.js → handleSendMessageAction-5H53O6P2.js} +2 -2
- package/index.js +40 -40
- package/{machineCommands-MHKXEUGC.js → machineCommands-3L465LNQ.js} +16 -13
- package/{machineWsRunDispatch-ZV736PJZ.js → machineWsRunDispatch-YOHDI23Y.js} +15 -12
- package/package.json +1 -1
- package/{readlineWorkspace-L3IFOIIV.js → readlineWorkspace-SQMRU5UF.js} +16 -13
- package/{runAgentClientLoop-GBLDVBT5.js → runAgentClientLoop-4Z2U3Y4R.js} +12 -10
- package/{spaceCommands-XOLPJMRK.js → spaceCommands-BH3JJ5NE.js} +2 -2
- package/{spaceSlice-OQPAGQDP.js → spaceSlice-R23R5VKL.js} +3 -3
- package/{streamAgentChatTurn-SN5XJJ7U.js → streamAgentChatTurn-L2NUEMDF.js} +13 -11
- package/{tools-Y65Y3CI4.js → tools-W7X3QSN2.js} +9 -7
- package/{updateDialogTitleAction-OAOP7CCE.js → updateDialogTitleAction-Y3NM74D7.js} +3 -3
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isGatewayHttpStatus
|
|
3
|
+
} from "./chunk-NF64D32W.js";
|
|
1
4
|
import {
|
|
2
5
|
CORE_DRAIN_REASON,
|
|
3
|
-
isGatewayHttpStatus,
|
|
4
6
|
parseRetryAfterHeaderMs
|
|
5
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3L2WKC3W.js";
|
|
6
8
|
import {
|
|
7
9
|
asTrimmedLowercaseString
|
|
8
10
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -170,7 +170,7 @@ var MENU_USAGE_INSTRUCTIONS = `--- \u4EA4\u4E92\u8BF4\u660E ---
|
|
|
170
170
|
var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
|
|
171
171
|
\u7528 startAgentRun \u542F\u52A8\u5B50 Agent\uFF08wait:false \u5F02\u6B65 fork+exec \u8FD4\u56DE runId\uFF1Bwait:true \u540C\u6B65\u7B49\u7ED3\u679C\uFF09\uFF0C\u7528 controlAgentRun \u89C2\u5BDF/\u505C\u6B62\uFF08wait/signal/proc \u8BED\u4E49\uFF09\u3002\u4F55\u65F6\u6D3E\u53D1\u89C1\u300C\u591A Agent \u534F\u4F5C\u300D\u6BB5\uFF1B\u672C\u6BB5\u53EA\u8BB2\u6D3E\u53D1\u4E4B\u540E\u600E\u4E48\u76EF\u3001\u600E\u4E48\u6392\u9519\u3002
|
|
172
172
|
|
|
173
|
-
1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \
|
|
173
|
+
1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \u963B\u585E\u7B49\u5F85\uFF08startAgentRun wait:true / controlAgentRun wait\uFF09\u7684\u771F\u5B9E\u4EE3\u4EF7\u662F\u51BB\u7ED3\u5BF9\u8BDD\u2014\u2014\u7528\u6237\u5728\u7B49\u5F85\u671F\u95F4\u65E0\u6CD5\u63D2\u8BDD\uFF0C\u7F16\u6392\u8005\u4E5F\u65E0\u6CD5\u5E76\u884C\u63A8\u8FDB\u5176\u4ED6\u5DE5\u4F5C\uFF0C\u56E0\u6B64\u963B\u585E\u7B49\u5F85\u4EC5\u9650\u4E09\u79CD\u60C5\u51B5\uFF1A\u2460 \u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\u7684\u5B50\u4EFB\u52A1\uFF1B\u2461 \u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\u6216\u6B63\u5728\u4E0E\u8BE5\u5B50\u4EFB\u52A1\u5BF9\u8BDD\uFF1B\u2462 \u73AF\u5883\u4E0D\u652F\u6301\u7EC8\u6001\u5524\u9192\uFF0C\u4E14\u5F53\u524D\u6CA1\u6709\u53EF\u5E76\u884C\u63A8\u8FDB\u7684\u5176\u4ED6\u5DE5\u4F5C\uFF08\u6B64\u65F6 startAgentRun \u76F4\u63A5 wait:true\uFF0C\u5DF2\u5F02\u6B65\u6D3E\u51FA\u7684\u7528 controlAgentRun(action:"wait", runId) \u963B\u585E\u5230\u7EC8\u6001\uFF09\u3002\u652F\u6301\u7EC8\u6001\u5524\u9192\u7684\u73AF\u5883\uFF08\u684C\u9762 TUI / web\uFF09\uFF1A\u591A\u5206\u949F\u7EA7 run \u4E00\u5F8B\u5F02\u6B65\u6D3E\u53D1\u5E76\u7ACB\u5373\u6536\u5C3E\u7ED3\u675F\u56DE\u5408\uFF08\u4E00\u53E5\u8BDD\u8BF4\u660E\u540E\u7EED\u52A8\u4F5C\u5373\u53EF\uFF09\uFF0C\u7EC8\u6001\u81EA\u52A8\u6458\u8981\u5524\u9192\u540E\u7EE7\u7EED\uFF1B\u4E32\u884C\u4F9D\u8D56\uFF08\u6267\u884C\u2192\u5BA1\u67E5\u2192\u96C6\u6210\uFF09\u4E0D\u662F\u963B\u585E\u5BF9\u8BDD\u7684\u7406\u7531\u2014\u2014\u9760 wake \u63A5\u529B\u5373\u53EF\u3002\u6CA1\u6709\u7EC8\u6001\u5524\u9192\u7684\u73AF\u5883\uFF08\u88F8 CLI\u3001\u670D\u52A1\u7AEF runtime\uFF09\u624D\u7528 wait \u963B\u585E\uFF0C\u540C\u6837\u4E0D\u8981\u81EA\u5DF1\u5FAA\u73AF\u67E5\u3002
|
|
174
174
|
2. \u7B49\u5F85/\u7981\u6B62\u8F6E\u8BE2/\u7981\u7A7A\u8F6C/\u522B\u590D\u8FF0 status \u7684\u8BED\u4E49\u4EE5 startAgentRun \u4E0E controlAgentRun \u5DE5\u5177\u63CF\u8FF0\u4E3A\u51C6\u3002controlAgentRun \u53EA\u5728\u300C\u7B54\u6848\u4F1A\u6539\u53D8\u4F60\u4E0B\u4E00\u6B65\u52A8\u4F5C\u300D\u65F6\u7528\uFF08\u80FD\u5426\u6C47\u603B\u3001\u8981\u4E0D\u8981\u53EB\u505C/\u8865\u6D3E\uFF09\uFF1B\u4E00\u6B21\u6027\u6B7B\u6D3B\u68C0\u67E5\u7528 status(runId, tailLines:0)\u3002\u5E76\u884C\uFF1A\u591A\u4E2A\u72EC\u7ACB\u5B50\u4EFB\u52A1\u4E00\u6B21\u6D3E\u5B8C\uFF0C\u4E4B\u540E\u7B49\u5404\u81EA\u7EC8\u6001\u9010\u4E2A\u6C47\u603B\u3002\u65E0\u6587\u4EF6\u4EA4\u96C6\u3001\u65E0\u771F\u5B9E\u6570\u636E\u4F9D\u8D56\u7684\u4EFB\u52A1\u9ED8\u8BA4\u5E76\u53D1\u6D3E\u53D1\u2014\u2014\u4E0D\u8981\u56E0\u5B83\u4EEC\u6070\u597D\u5171\u7528\u540C\u4E00\u6267\u884C agent/\u901A\u9053\u800C\u81EA\u884C\u52A0\u300C\u901A\u9053\u4E32\u884C\u300D\u7684\u4FDD\u5B88\u5047\u8BBE\uFF08\u540C\u901A\u9053\u5141\u8BB8\u5E76\u53D1 fork \u591A\u5B9E\u4F8B\uFF0C\u5B9E\u4F8B\u95F4\u65E0\u4E0A\u4E0B\u6587\u5171\u4EAB\uFF09\uFF1B\u53EA\u6709\u4EFB\u52A1\u95F4\u5B58\u5728\u771F\u5B9E\u6587\u4EF6/\u6570\u636E\u4F9D\u8D56\u6216 brief \u660E\u793A\u51B2\u7A81\u9762\u65F6\u624D\u4E32\u884C\u3002
|
|
175
175
|
3. \u6392\u9519\uFF1A\u5148\u5206\u8BCA\u518D\u4E0B\u7ED3\u8BBA\u3002\u2460 \u590D\u6838 agentKey \u662F\u5426\u7167\u6284\u81EA listAgents\uFF08\u4E0D\u662F\u5C31\u5148\u4FEE key\uFF0C\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B\u2461 \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\u2462 \u540C\u4E00\u5DF2\u9A8C\u8BC1 key \u4E0A\u4ECD\u5931\u8D25\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u2192 \u624D\u8BB0\u4E3A\u901A\u9053\u6545\u969C\u3002
|
|
176
176
|
4. \u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u524D\uFF0C\u81F3\u5C11\u5BF9 2 \u4E2A\u4E0D\u540C\u5019\u9009\u5404\u5B8C\u6210\u300C\u5DF2\u9A8C\u8BC1 key + \u4E00\u6B21\u771F\u5B9E\u6D3E\u53D1\u300D\uFF1B\u5019\u9009\u4E0D\u8DB3 2 \u4E2A\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\u53EA\u6709 status=failed/\u8D85\u65F6\u6216 progress \u957F\u65F6\u95F4\u6BEB\u65E0\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\u624D\u62C9 tailLines:30 \u770B\u65E5\u5FD7\uFF1Bstop \u4E4B\u524D\u5148\u770B\u65E5\u5FD7\u786E\u8BA4\u662F\u771F\u5361\u6B7B\uFF0C\u5E76\u7528 list/status \u786E\u8BA4 run \u771F\u5B9E\u5B58\u5728\u4E14\u975E\u7EC8\u6001\u2014\u2014\u522B\u5047\u8BBE\u300C\u6D3E\u53D1\u4E86\u5C31\u5728\u8DD1\u300D\u3002`;
|
|
@@ -185,7 +185,7 @@ var AGENT_COLLABORATION_INSTRUCTIONS = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C
|
|
|
185
185
|
|
|
186
186
|
**\u6D3E\u53D1\u901A\u9053**\uFF1A
|
|
187
187
|
- \u76EE\u6807\u8BB0\u5F55\u5DF2\u58F0\u660E delegation.serverBase / runtimeServerBase \u2192 \u5DE5\u5177\u81EA\u52A8\u8DEF\u7531\u5230\u5BF9\u5E94 nolo server\uFF0C\u65E0\u9700\u91CD\u590D\u586B serverBase\uFF1B\u7528\u6237\u7ED9\u51FA\u53EF\u8BBF\u95EE\u7684 server origin \u65F6\u53EF\u4F20 serverBase \u8986\u76D6\u81EA\u52A8\u8DEF\u7531\uFF0C\u52FF\u81C6\u9020\u5730\u5740\u3001\u52FF\u628A localhost \u5F53\u8FDC\u7AEF\u673A\u5668\u3002
|
|
188
|
-
- \u901A\u9053\u8BED\u4E49\uFF1AstartAgentRun \u5F02\u6B65\uFF08wait:false\uFF09\u53EA\u8868\u793A\u5DF2\u542F\u52A8/\u6392\u961F\uFF0C**\u4E0D\u8868\u793A\u4EFB\u52A1\u5B8C\u6210**\uFF1Bdone/failed \u540E\u7CFB\u7EDF\u7528 terminal wake \u7EE7\u7EED\u7236\u5BF9\u8BDD\uFF0C\u4F60\u518D\u8BFB child evidence \u51B3\u5B9A\u4E0B\u4E00\u6B65\u3002\u8981\
|
|
188
|
+
- \u901A\u9053\u8BED\u4E49\uFF1AstartAgentRun \u5F02\u6B65\uFF08wait:false\uFF09\u53EA\u8868\u793A\u5DF2\u542F\u52A8/\u6392\u961F\uFF0C**\u4E0D\u8868\u793A\u4EFB\u52A1\u5B8C\u6210**\uFF1Bdone/failed \u540E\u7CFB\u7EDF\u7528 terminal wake \u7EE7\u7EED\u7236\u5BF9\u8BDD\uFF0C\u4F60\u518D\u8BFB child evidence \u51B3\u5B9A\u4E0B\u4E00\u6B65\u3002\u4EC5\u5F53\u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\u3001\u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\uFF08\u6216\u6B63\u5728\u4E0E\u8BE5\u5B50\u4EFB\u52A1\u5BF9\u8BDD\uFF09\u3001\u6216\u73AF\u5883\u4E0D\u652F\u6301\u7EC8\u6001\u5524\u9192\u4E14\u65E0\u5E76\u884C\u5DE5\u4F5C\u65F6\uFF0C\u624D\u7528 wait:true \u540C\u6B65\u7B49\uFF08\u963B\u585E\u4F1A\u51BB\u7ED3\u5BF9\u8BDD\uFF09\uFF1B\u5426\u5219\u4E00\u5F8B\u5F02\u6B65\u6D3E\u53D1\uFF0C\u9760\u7EC8\u6001\u5524\u9192\u63A5\u529B\u3002\u8981\u8BA9\u7528\u6237\u524D\u53F0\u5B9E\u65F6\u770B\u5230\u53D1\u8A00\uFF0C\u7528 runStreamingAgent\u3002
|
|
189
189
|
- \u591A Agent \u534F\u4F5C\u4E0D\u9650\u4E8E\u4EE3\u7801\u4EFB\u52A1\uFF1A\u6E38\u620F\u8BBE\u8BA1\u3001\u7535\u5F71\u7B56\u5212\u3001\u5199\u4F5C\u3001\u8FD0\u8425\u3001\u7814\u7A76\u7B49\u5F02\u6B65\u5206\u5DE5\u573A\u666F\u540C\u6837\u9002\u7528\u3002
|
|
190
190
|
|
|
191
191
|
**\u53D1\u6563 / \u4F1A\u5546\uFF08\u7CFB\u7EDF\u7EA7\u51B3\u7B56\u673A\u5236\uFF09**\uFF1A
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
fetchWithTransientRetry
|
|
3
|
+
} from "./chunk-5XTOKQLW.js";
|
|
4
|
+
import {
|
|
5
|
+
isGatewayHttpStatus
|
|
6
|
+
} from "./chunk-NF64D32W.js";
|
|
1
7
|
import {
|
|
2
8
|
CORE_DRAIN_REASON,
|
|
3
9
|
DRAIN_EXHAUSTED_USER_MESSAGE,
|
|
4
|
-
|
|
10
|
+
isDrainExhaustedResponse,
|
|
5
11
|
normalizeNonNegativeMs,
|
|
6
12
|
parseRetryAfterHeaderMs
|
|
7
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-3L2WKC3W.js";
|
|
8
14
|
import {
|
|
9
15
|
omitNullishAgentSummaryFields,
|
|
10
16
|
sortSafeAgentSummaries,
|
|
@@ -37,7 +43,7 @@ import {
|
|
|
37
43
|
} from "./chunk-INZZJSQF.js";
|
|
38
44
|
import {
|
|
39
45
|
createDocState
|
|
40
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-WQDU7TFJ.js";
|
|
41
47
|
import {
|
|
42
48
|
ToolApiError,
|
|
43
49
|
buildToolRequestHeaders,
|
|
@@ -64,7 +70,7 @@ import {
|
|
|
64
70
|
buildBuiltinObjectSkillDbKey,
|
|
65
71
|
buildBuiltinObjectSkillPageContent,
|
|
66
72
|
createDialogAction
|
|
67
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-4RUHYZLJ.js";
|
|
68
74
|
import {
|
|
69
75
|
addCategory,
|
|
70
76
|
addContentToSpace,
|
|
@@ -84,7 +90,7 @@ import {
|
|
|
84
90
|
loadTableRows,
|
|
85
91
|
updateContentCategory,
|
|
86
92
|
updateContentTitle
|
|
87
|
-
} from "./chunk-
|
|
93
|
+
} from "./chunk-EPSE5WQL.js";
|
|
88
94
|
import {
|
|
89
95
|
normalizeAppRouteId,
|
|
90
96
|
resolveDialogRuntimeAgentKey,
|
|
@@ -94,13 +100,13 @@ import {
|
|
|
94
100
|
selectMsgById,
|
|
95
101
|
uiAskChoiceFunc,
|
|
96
102
|
uiAskChoiceFunctionSchema
|
|
97
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-UVEH34NR.js";
|
|
98
104
|
import {
|
|
99
105
|
createAgent,
|
|
100
106
|
runLlm,
|
|
101
107
|
streamAgentChatTurn,
|
|
102
108
|
updateAgent
|
|
103
|
-
} from "./chunk-
|
|
109
|
+
} from "./chunk-V7FV73B7.js";
|
|
104
110
|
import {
|
|
105
111
|
getActiveDialogKey,
|
|
106
112
|
require_react,
|
|
@@ -15038,22 +15044,41 @@ var getRuntime2 = (thunkApi) => {
|
|
|
15038
15044
|
return state ? selectRuntimeSnapshot(state) : null;
|
|
15039
15045
|
};
|
|
15040
15046
|
var authHeaders2 = (token) => token ? { Authorization: `Bearer ${token}` } : {};
|
|
15047
|
+
var DrainExhaustedError = class extends Error {
|
|
15048
|
+
constructor() {
|
|
15049
|
+
super(DRAIN_EXHAUSTED_USER_MESSAGE);
|
|
15050
|
+
this.name = "DrainExhaustedError";
|
|
15051
|
+
}
|
|
15052
|
+
};
|
|
15053
|
+
function isDrainExhaustedError(error) {
|
|
15054
|
+
return error instanceof DrainExhaustedError;
|
|
15055
|
+
}
|
|
15056
|
+
async function throwIfDrainExhausted(response) {
|
|
15057
|
+
if (await isDrainExhaustedResponse(response)) {
|
|
15058
|
+
throw new DrainExhaustedError();
|
|
15059
|
+
}
|
|
15060
|
+
}
|
|
15041
15061
|
async function readRemoteRecord2(args) {
|
|
15042
15062
|
const serverBase = normalizeServerOrigin(args.serverBase);
|
|
15043
15063
|
if (!serverBase || !args.token) return null;
|
|
15044
15064
|
const query = args.includeDeleted ? "?includeDeleted=true" : "";
|
|
15045
|
-
const response = await
|
|
15065
|
+
const response = await fetchWithTransientRetry(
|
|
15066
|
+
fetch,
|
|
15046
15067
|
`${serverBase}/api/v1/db/read/${encodeURIComponent(args.dbKey)}${query}`,
|
|
15047
15068
|
{ headers: authHeaders2(args.token) }
|
|
15048
15069
|
);
|
|
15049
|
-
if (!response.ok)
|
|
15070
|
+
if (!response.ok) {
|
|
15071
|
+
await throwIfDrainExhausted(response);
|
|
15072
|
+
return null;
|
|
15073
|
+
}
|
|
15050
15074
|
const payload = await response.json().catch(() => null);
|
|
15051
15075
|
return payload?.data ?? payload;
|
|
15052
15076
|
}
|
|
15053
15077
|
async function queryRemoteUserRecords(args) {
|
|
15054
15078
|
const serverBase = normalizeServerOrigin(args.serverBase);
|
|
15055
15079
|
if (!serverBase || !args.token || !args.userId) return [];
|
|
15056
|
-
const response = await
|
|
15080
|
+
const response = await fetchWithTransientRetry(
|
|
15081
|
+
fetch,
|
|
15057
15082
|
`${serverBase}/api/v1/db/query/${encodeURIComponent(args.userId)}?limit=${args.limit}`,
|
|
15058
15083
|
{
|
|
15059
15084
|
method: "POST",
|
|
@@ -15067,7 +15092,10 @@ async function queryRemoteUserRecords(args) {
|
|
|
15067
15092
|
})
|
|
15068
15093
|
}
|
|
15069
15094
|
);
|
|
15070
|
-
if (!response.ok)
|
|
15095
|
+
if (!response.ok) {
|
|
15096
|
+
await throwIfDrainExhausted(response);
|
|
15097
|
+
return [];
|
|
15098
|
+
}
|
|
15071
15099
|
const payload = await response.json().catch(() => null);
|
|
15072
15100
|
return Array.isArray(payload?.data?.data) ? payload.data.data : Array.isArray(payload?.data) ? payload.data : [];
|
|
15073
15101
|
}
|
|
@@ -15079,7 +15107,10 @@ async function queryBestRecords(thunkApi, type, limit) {
|
|
|
15079
15107
|
userId: runtime?.currentUserId,
|
|
15080
15108
|
type,
|
|
15081
15109
|
limit
|
|
15082
|
-
}).catch(() =>
|
|
15110
|
+
}).catch((error) => {
|
|
15111
|
+
if (isDrainExhaustedError(error)) throw error;
|
|
15112
|
+
return [];
|
|
15113
|
+
});
|
|
15083
15114
|
return remoteRecords;
|
|
15084
15115
|
}
|
|
15085
15116
|
async function readBestRecord(thunkApi, dbKey, includeDeleted = false) {
|
|
@@ -15089,7 +15120,10 @@ async function readBestRecord(thunkApi, dbKey, includeDeleted = false) {
|
|
|
15089
15120
|
token: runtime?.currentToken,
|
|
15090
15121
|
dbKey,
|
|
15091
15122
|
includeDeleted
|
|
15092
|
-
}).catch(() =>
|
|
15123
|
+
}).catch((error) => {
|
|
15124
|
+
if (isDrainExhaustedError(error)) throw error;
|
|
15125
|
+
return null;
|
|
15126
|
+
});
|
|
15093
15127
|
}
|
|
15094
15128
|
var listDialogsFunctionSchema = {
|
|
15095
15129
|
name: "listDialogs",
|
|
@@ -15249,7 +15283,7 @@ async function readDialogFunc(args, thunkApi) {
|
|
|
15249
15283
|
let messages = [];
|
|
15250
15284
|
const serverBase = normalizeServerOrigin(runtime?.currentServer);
|
|
15251
15285
|
if (serverBase && runtime?.currentToken) {
|
|
15252
|
-
const response = await fetch
|
|
15286
|
+
const response = await fetchWithTransientRetry(fetch, `${serverBase}/rpc/getConvMsgs`, {
|
|
15253
15287
|
method: "POST",
|
|
15254
15288
|
headers: {
|
|
15255
15289
|
"Content-Type": "application/json",
|
|
@@ -15260,6 +15294,8 @@ async function readDialogFunc(args, thunkApi) {
|
|
|
15260
15294
|
if (response?.ok) {
|
|
15261
15295
|
const payload = await response.json().catch(() => []);
|
|
15262
15296
|
messages = Array.isArray(payload) ? payload : [];
|
|
15297
|
+
} else if (response) {
|
|
15298
|
+
await throwIfDrainExhausted(response);
|
|
15263
15299
|
}
|
|
15264
15300
|
}
|
|
15265
15301
|
return {
|
|
@@ -15349,7 +15385,7 @@ async function deleteDialogsFunc(args, thunkApi) {
|
|
|
15349
15385
|
const deletedDialogIds = [];
|
|
15350
15386
|
const deletedDialogKeys = [];
|
|
15351
15387
|
const failures = [];
|
|
15352
|
-
const { deleteDialog } = await import("./dialogSlice-
|
|
15388
|
+
const { deleteDialog } = await import("./dialogSlice-YUVIK53X.js");
|
|
15353
15389
|
for (const target of targets) {
|
|
15354
15390
|
try {
|
|
15355
15391
|
await thunkApi.dispatch(deleteDialog(target.dbKey)).unwrap();
|
|
@@ -15380,7 +15416,7 @@ async function fetchUserFavoriteAgentMap(thunkApi) {
|
|
|
15380
15416
|
try {
|
|
15381
15417
|
const serverBase = normalizeServerOrigin(runtime.currentServer);
|
|
15382
15418
|
if (!serverBase) return {};
|
|
15383
|
-
const response = await fetch
|
|
15419
|
+
const response = await fetchWithTransientRetry(fetch, `${serverBase}/rpc/listFavorites`, {
|
|
15384
15420
|
method: "POST",
|
|
15385
15421
|
headers: {
|
|
15386
15422
|
"Content-Type": "application/json",
|
|
@@ -15388,7 +15424,10 @@ async function fetchUserFavoriteAgentMap(thunkApi) {
|
|
|
15388
15424
|
},
|
|
15389
15425
|
body: JSON.stringify({ targetType: "agent" })
|
|
15390
15426
|
}).catch(() => null);
|
|
15391
|
-
if (!response || !response.ok)
|
|
15427
|
+
if (!response || !response.ok) {
|
|
15428
|
+
if (response) await throwIfDrainExhausted(response);
|
|
15429
|
+
return {};
|
|
15430
|
+
}
|
|
15392
15431
|
const data = await response.json().catch(() => ({}));
|
|
15393
15432
|
const favoritedAtByKey = {};
|
|
15394
15433
|
const items = Array.isArray(data?.items) ? data.items : [];
|
|
@@ -15405,7 +15444,8 @@ async function fetchUserFavoriteAgentMap(thunkApi) {
|
|
|
15405
15444
|
}
|
|
15406
15445
|
}
|
|
15407
15446
|
return favoritedAtByKey;
|
|
15408
|
-
} catch {
|
|
15447
|
+
} catch (error) {
|
|
15448
|
+
if (isDrainExhaustedError(error)) throw error;
|
|
15409
15449
|
return {};
|
|
15410
15450
|
}
|
|
15411
15451
|
}
|
|
@@ -15454,7 +15494,10 @@ async function listAgentsFunc(args, thunkApi) {
|
|
|
15454
15494
|
(record) => record?.dbKey === favKey || record?.id === favKey || record?.publicKey === favKey || `agent-pub-${record?.id}` === favKey
|
|
15455
15495
|
);
|
|
15456
15496
|
if (!isAlreadyPresent) {
|
|
15457
|
-
const favRecord = await readBestRecord(thunkApi, favKey).catch(() =>
|
|
15497
|
+
const favRecord = await readBestRecord(thunkApi, favKey).catch((error) => {
|
|
15498
|
+
if (isDrainExhaustedError(error)) throw error;
|
|
15499
|
+
return null;
|
|
15500
|
+
});
|
|
15458
15501
|
if (favRecord) {
|
|
15459
15502
|
const key = favRecord?.dbKey || favRecord?.id || favKey;
|
|
15460
15503
|
recordsMap.set(key, favRecord);
|
|
@@ -15544,7 +15587,7 @@ async function listSpacesFunc(_args, thunkApi) {
|
|
|
15544
15587
|
const runtime = getRuntime2(thunkApi);
|
|
15545
15588
|
const serverBase = normalizeServerOrigin(runtime?.currentServer);
|
|
15546
15589
|
if (serverBase && runtime?.currentToken && runtime?.currentUserId) {
|
|
15547
|
-
const response = await fetch
|
|
15590
|
+
const response = await fetchWithTransientRetry(fetch, `${serverBase}/rpc/getUserSpaceMemberships`, {
|
|
15548
15591
|
method: "POST",
|
|
15549
15592
|
headers: {
|
|
15550
15593
|
"Content-Type": "application/json",
|
|
@@ -15569,6 +15612,9 @@ async function listSpacesFunc(_args, thunkApi) {
|
|
|
15569
15612
|
};
|
|
15570
15613
|
}
|
|
15571
15614
|
}
|
|
15615
|
+
if (response) {
|
|
15616
|
+
await throwIfDrainExhausted(response);
|
|
15617
|
+
}
|
|
15572
15618
|
}
|
|
15573
15619
|
throw new Error("listSpaces requires a signed-in user and reachable Nolo server.");
|
|
15574
15620
|
}
|
|
@@ -23221,7 +23267,7 @@ var runAgentBackground = createAsyncThunk("agent/runBackground", async (args, {
|
|
|
23221
23267
|
// packages/ai/tools/agent/startAgentRunTool.ts
|
|
23222
23268
|
var startAgentRunFunctionSchema = {
|
|
23223
23269
|
name: "startAgentRun",
|
|
23224
|
-
description: "\u542F\u52A8\u4E00\u4E2A Agent \u6267\u884C\u5B50\u4EFB\u52A1\u3002\u9ED8\u8BA4\u5F02\u6B65\uFF08Unix fork+exec\uFF09\uFF1A\u7ACB\u5373\u8FD4\u56DE runId\uFF0C\u4E0D\u963B\u585E\u5F53\u524D\u5BF9\u8BDD\uFF0C\u4E4B\u540E\u7528 controlAgentRun \u89C2\u5BDF/\u505C\u6B62\uFF1B\u5F02\u6B65\u6D3E\u53D1\u540E\u7981\u6B62\u8F6E\u8BE2\u67E5\u8BE2\u2014\u2014\u4E0D\u8981\u53CD\u590D\u8C03 status \u7B49\u7ED3\u679C\uFF0C\u7528\u6237\u754C\u9762\u5DF2\u5728\u5B9E\u65F6\u663E\u793A\u6BCF\u6761 run \u7684\u72B6\u6001\u3002\u8981\u540C\u6B65\u7ED3\u679C\u76F4\u63A5\u4F20 wait:true\uFF1A\u8BA2\u9605 SSE \u7B49 done/failed \u5E76\u76F4\u63A5\u8FD4\u56DE\u5B50\u4EFB\u52A1\u7ED3\u679C\
|
|
23270
|
+
description: "\u542F\u52A8\u4E00\u4E2A Agent \u6267\u884C\u5B50\u4EFB\u52A1\u3002\u9ED8\u8BA4\u5F02\u6B65\uFF08Unix fork+exec\uFF09\uFF1A\u7ACB\u5373\u8FD4\u56DE runId\uFF0C\u4E0D\u963B\u585E\u5F53\u524D\u5BF9\u8BDD\uFF0C\u4E4B\u540E\u7528 controlAgentRun \u89C2\u5BDF/\u505C\u6B62\uFF1B\u5F02\u6B65\u6D3E\u53D1\u540E\u7981\u6B62\u8F6E\u8BE2\u67E5\u8BE2\u2014\u2014\u4E0D\u8981\u53CD\u590D\u8C03 status \u7B49\u7ED3\u679C\uFF0C\u7528\u6237\u754C\u9762\u5DF2\u5728\u5B9E\u65F6\u663E\u793A\u6BCF\u6761 run \u7684\u72B6\u6001\u3002\u8981\u540C\u6B65\u7ED3\u679C\u76F4\u63A5\u4F20 wait:true\uFF1A\u8BA2\u9605 SSE \u7B49 done/failed \u5E76\u76F4\u63A5\u8FD4\u56DE\u5B50\u4EFB\u52A1\u7ED3\u679C\u3002\u963B\u585E\u7B49\u5F85\u4F1A\u51BB\u7ED3\u5BF9\u8BDD\uFF0C\u4EC5\u9650\u4E09\u79CD\u60C5\u51B5\uFF1A<100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\uFF1B\u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\u6216\u6B63\u5728\u4E0E\u8BE5\u5B50\u4EFB\u52A1\u5BF9\u8BDD\uFF1B\u73AF\u5883\u4E0D\u652F\u6301\u7EC8\u6001\u5524\u9192\u4E14\u65E0\u5E76\u884C\u5DE5\u4F5C\uFF08\u8BE6\u89C1 wait \u53C2\u6570\u63CF\u8FF0\uFF09\u3002wait:true \u65F6\u53EF\u7528 resultMode \u63A7\u5236\u8FD4\u56DE\u5185\u5BB9\uFF1Afull=\u8FD4\u56DE\u5B8C\u6574\u8F93\u51FA\uFF1Bsummary=\u53EA\u8FD4\u56DE\u5934\u5C3E\u603B\u7ED3\uFF08\u622A\u65AD\u4E2D\u95F4\uFF0C\u9632\u957F\u8F93\u51FA\u6491\u7206\u4E0A\u4E0B\u6587\uFF09\u3002\u9002\u5408\u957F\u4EFB\u52A1\u3001\u5E76\u884C\u5B50\u4EFB\u52A1\u3001\u9700\u8981\u4E2D\u9014\u89C2\u5BDF\u6216\u53EB\u505C\u7684\u573A\u666F\u3002",
|
|
23225
23271
|
parameters: {
|
|
23226
23272
|
type: "object",
|
|
23227
23273
|
properties: {
|
|
@@ -23254,7 +23300,7 @@ var startAgentRunFunctionSchema = {
|
|
|
23254
23300
|
},
|
|
23255
23301
|
wait: {
|
|
23256
23302
|
type: "boolean",
|
|
23257
|
-
description: "\u53EF\u9009\u3002\u4E3A true \u65F6\u540C\u6B65\u7B49\u5F85\u5B50\u4EFB\u52A1\u5B8C\u6210\u5E76\u76F4\u63A5\u8FD4\u56DE\u7ED3\u679C\uFF08\u8BA2\u9605 SSE \u7B49 done/failed\uFF09\uFF0C\u4E0D\u8FD4\u56DE runId \u8BA9\u8C03\u7528\u65B9\u8F6E\u8BE2\
|
|
23303
|
+
description: "\u53EF\u9009\u3002\u4E3A true \u65F6\u540C\u6B65\u7B49\u5F85\u5B50\u4EFB\u52A1\u5B8C\u6210\u5E76\u76F4\u63A5\u8FD4\u56DE\u7ED3\u679C\uFF08\u8BA2\u9605 SSE \u7B49 done/failed\uFF09\uFF0C\u4E0D\u8FD4\u56DE runId \u8BA9\u8C03\u7528\u65B9\u8F6E\u8BE2\u3002\u963B\u585E\u7B49\u5F85\u4F1A\u51BB\u7ED3\u5F53\u524D\u5BF9\u8BDD\uFF08\u7528\u6237\u65E0\u6CD5\u63D2\u8BDD\u3001\u7F16\u6392\u8005\u4E5F\u65E0\u6CD5\u5E76\u884C\u63A8\u8FDB\u5176\u4ED6\u5DE5\u4F5C\uFF09\uFF0C\u4EC5\u9650\u4E09\u79CD\u60C5\u51B5\uFF1A\u2460 \u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\uFF1B\u2461 \u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\u6216\u6B63\u5728\u4E0E\u8BE5\u5B50\u4EFB\u52A1\u5BF9\u8BDD\uFF1B\u2462 \u73AF\u5883\u4E0D\u652F\u6301\u7EC8\u6001\u5524\u9192\u4E14\u5F53\u524D\u6CA1\u6709\u53EF\u5E76\u884C\u63A8\u8FDB\u7684\u5176\u4ED6\u5DE5\u4F5C\u3002\u9ED8\u8BA4 false\uFF08\u5F02\u6B65 fork+exec\uFF0C\u8FD4\u56DE runId \u540E\u7528 controlAgentRun \u89C2\u5BDF\uFF09\u3002",
|
|
23258
23304
|
default: false
|
|
23259
23305
|
},
|
|
23260
23306
|
resultMode: {
|
|
@@ -23349,14 +23395,14 @@ ${text.slice(-SUMMARY_TAIL_CHARS)}`;
|
|
|
23349
23395
|
// packages/ai/tools/agent/controlAgentRunTool.ts
|
|
23350
23396
|
var controlAgentRunFunctionSchema = {
|
|
23351
23397
|
name: "controlAgentRun",
|
|
23352
|
-
description: "\u89C2\u5BDF\u548C\u63A7\u5236\u540E\u53F0 agent run\u3002\u4E00\u4E2A\u5DE5\u5177\u4E94\u4E2A\u6838\u5FC3 action\uFF1Alist\uFF08\u5217\u51FA run\uFF0C\u652F\u6301\u6309\u6279\u6B21/\u72B6\u6001\u8FC7\u6EE4\u4E0E\u5206\u9875\uFF09\u3001status\uFF08\u67E5\u5355\u6761 + \u53EF\u9009\u65E5\u5FD7\uFF09\u3001stop\uFF08\u53D6\u6D88 run\uFF09\u3001append\uFF08\u5411\u8FD0\u884C\u4E2D\u6216\u7EC8\u6001\u4EFB\u52A1\u8FFD\u52A0\u65B0\u6307\u4EE4/\u7EA0\u504F\uFF09\u3001wait\uFF08\
|
|
23398
|
+
description: "\u89C2\u5BDF\u548C\u63A7\u5236\u540E\u53F0 agent run\u3002\u4E00\u4E2A\u5DE5\u5177\u4E94\u4E2A\u6838\u5FC3 action\uFF1Alist\uFF08\u5217\u51FA run\uFF0C\u652F\u6301\u6309\u6279\u6B21/\u72B6\u6001\u8FC7\u6EE4\u4E0E\u5206\u9875\uFF09\u3001status\uFF08\u67E5\u5355\u6761 + \u53EF\u9009\u65E5\u5FD7\uFF09\u3001stop\uFF08\u53D6\u6D88 run\uFF09\u3001append\uFF08\u5411\u8FD0\u884C\u4E2D\u6216\u7EC8\u6001\u4EFB\u52A1\u8FFD\u52A0\u65B0\u6307\u4EE4/\u7EA0\u504F\uFF09\u3001wait\uFF08\u53D7\u9650\u7684\u7EC8\u6001\u963B\u585E\u7B49\u5F85\uFF1A\u963B\u585E\u5230 run \u7EC8\u6001\u5E76\u8FD4\u56DE\u7ED3\u679C\uFF0C\u4E0D\u662F\u8F6E\u8BE2\uFF1B\u53E6\u6709 todo \u67E5\u8BE2 runtime todo\uFF09\u3002\u76F8\u5F53\u4E8E Unix \u7684 wait + signal + /proc + write\u3002\u7528 startAgentRun \u62FF\u5230 runId \u540E\uFF0C\u7528\u672C\u5DE5\u5177\u8DDF\u8FDB\u5EA6\u3001\u7B49\u7ED3\u679C\u3001\u8FFD\u52A0\u6307\u4EE4\u6216\u53EB\u505C\u3002\u5F02\u6B65\u6D3E\u53D1\u540E\u7981\u6B62\u8F6E\u8BE2\u67E5\u8BE2\u2014\u2014\u4E0D\u8981\u53CD\u590D\u8C03 status \u7B49\u7ED3\u679C\uFF0C\u7528\u6237\u754C\u9762\u5DF2\u5728\u5B9E\u65F6\u663E\u793A\u6BCF\u6761 run \u7684\u72B6\u6001\uFF1B\u963B\u585E\u7B49\u5F85\uFF08startAgentRun wait:true \u6216\u672C\u5DE5\u5177 wait action\uFF09\u4F1A\u51BB\u7ED3\u5F53\u524D\u5BF9\u8BDD\uFF0C\u4EC5\u9650\u4E09\u79CD\u60C5\u51B5\uFF1A\u2460 \u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\uFF1B\u2461 \u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\u6216\u6B63\u5728\u4E0E\u8BE5\u5B50\u4EFB\u52A1\u5BF9\u8BDD\uFF1B\u2462 \u73AF\u5883\u4E0D\u652F\u6301\u7EC8\u6001\u5524\u9192\u4E14\u5F53\u524D\u6CA1\u6709\u53EF\u5E76\u884C\u63A8\u8FDB\u7684\u5176\u4ED6\u5DE5\u4F5C\u2014\u2014\u4E32\u884C\u4F9D\u8D56\u4E0D\u662F\u963B\u585E\u5BF9\u8BDD\u7684\u7406\u7531\uFF0C\u652F\u6301\u7EC8\u6001\u5524\u9192\u7684\u73AF\u5883\uFF08\u684C\u9762 TUI / web\uFF09\u591A\u5206\u949F\u7EA7 run \u4E00\u5F8B\u5F02\u6B65\u6D3E\u53D1\u5E76\u7ACB\u5373\u6536\u5C3E\u3002list \u9ED8\u8BA4\u53EA\u8FD4\u56DE\u6700\u8FD1 20 \u6761\uFF0C\u907F\u514D\u5168\u91CF\u51B2\u7206\u4E0A\u4E0B\u6587\uFF1B\u7528 status/batchId/limit/offset \u53D6\u6240\u9700\u5206\u9875\u3002\u6CE8\u610F\uFF1A\u7528\u6237\u754C\u9762\u5DF2\u7ECF\u5728\u72EC\u7ACB\u5B9E\u65F6\u663E\u793A\u6BCF\u6761 run \u7684\u72B6\u6001\uFF0C\u672C\u5DE5\u5177\u662F\u7ED9\u4F60\u81EA\u5DF1\u505A\u51B3\u7B56\u7528\u7684\uFF0C\u4E0D\u662F\u7528\u6765\u7ED9\u7528\u6237\u6C47\u62A5\u8FDB\u5EA6\u7684\u2014\u2014\u4E0D\u5FC5\u4E3A\u4E86\u300C\u8BA9\u7528\u6237\u770B\u5230\u72B6\u6001\u300D\u800C\u8F6E\u8BE2\uFF0C\u4E5F\u4E0D\u8981\u628A\u8FD4\u56DE\u503C\u590D\u8FF0\u7ED9\u7528\u6237\u3002",
|
|
23353
23399
|
parameters: {
|
|
23354
23400
|
type: "object",
|
|
23355
23401
|
properties: {
|
|
23356
23402
|
action: {
|
|
23357
23403
|
type: "string",
|
|
23358
23404
|
enum: ["list", "status", "stop", "todo", "wait", "append"],
|
|
23359
|
-
description: "\u8981\u6267\u884C\u7684\u64CD\u4F5C\uFF1Alist=\u5217\u51FA run\uFF08\u7701\u7565 runId\uFF09\uFF1Bstatus=\u67E5\u5355\u6761 run \u72B6\u6001 + \u53EF\u9009\u65E5\u5FD7\uFF1Bstop=\u53D6\u6D88 run\uFF1Bappend=\u5411\u4EFB\u52A1\u8FFD\u52A0\u6307\u4EE4\uFF08\u8FD0\u884C\u4E2D\u5165\u961F\uFF0C\u7EC8\u6001 continuation\uFF09\uFF1Bwait=\
|
|
23405
|
+
description: "\u8981\u6267\u884C\u7684\u64CD\u4F5C\uFF1Alist=\u5217\u51FA run\uFF08\u7701\u7565 runId\uFF09\uFF1Bstatus=\u67E5\u5355\u6761 run \u72B6\u6001 + \u53EF\u9009\u65E5\u5FD7\uFF1Bstop=\u53D6\u6D88 run\uFF1Bappend=\u5411\u4EFB\u52A1\u8FFD\u52A0\u6307\u4EE4\uFF08\u8FD0\u884C\u4E2D\u5165\u961F\uFF0C\u7EC8\u6001 continuation\uFF09\uFF1Bwait=\u53D7\u9650\u7684\u7EC8\u6001\u963B\u585E\u7B49\u5F85\uFF08\u4E0D\u662F\u8F6E\u8BE2\uFF09\uFF1A\u5BA2\u6237\u7AEF\u8BA2\u9605\u8BE5 dialog \u7684 SSE \u4E8B\u4EF6\u6D41\u7B49 done/failed\uFF0C\u5DF2\u7EC8\u6001\u7ACB\u5373\u8FD4\u56DE\u3002\u963B\u585E\u7B49\u5F85\u4F1A\u51BB\u7ED3\u5F53\u524D\u5BF9\u8BDD\uFF0C\u4EC5\u9650\u4E09\u79CD\u60C5\u51B5\uFF1A\u2460 \u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\uFF1B\u2461 \u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\u6216\u6B63\u5728\u4E0E\u8BE5\u5B50\u4EFB\u52A1\u5BF9\u8BDD\uFF1B\u2462 \u73AF\u5883\u4E0D\u652F\u6301\u7EC8\u6001\u5524\u9192\u4E14\u65E0\u5E76\u884C\u5DE5\u4F5C\uFF1Btodo=\u5217\u51FA runtime todo\uFF08\u7531 startAgentRun \u7684 batchId/trackTodo \u4EA7\u751F\uFF0C\u72B6\u6001\u7531\u5173\u8054 run \u63A8\u5BFC\uFF09\u3002"
|
|
23360
23406
|
},
|
|
23361
23407
|
runId: {
|
|
23362
23408
|
type: "string",
|
|
@@ -24911,7 +24957,7 @@ var executeToolRun = createAsyncThunk(
|
|
|
24911
24957
|
if (!executionInput) {
|
|
24912
24958
|
throw new Error(`ToolRun ${id} has no input to execute with.`);
|
|
24913
24959
|
}
|
|
24914
|
-
const { findToolExecutor: findToolExecutor2 } = await import("./tools-
|
|
24960
|
+
const { findToolExecutor: findToolExecutor2 } = await import("./tools-W7X3QSN2.js");
|
|
24915
24961
|
const { executor } = findToolExecutor2(run.toolName);
|
|
24916
24962
|
toolRunStarted({
|
|
24917
24963
|
id: run.id,
|
|
@@ -24935,7 +24981,7 @@ var executeToolRun = createAsyncThunk(
|
|
|
24935
24981
|
const latestState = thunkApi.getState();
|
|
24936
24982
|
const userId = latestState.auth?.currentUser?.userId;
|
|
24937
24983
|
if (userId) {
|
|
24938
|
-
const { fetchUserSpaceMemberships } = await import("./spaceSlice-
|
|
24984
|
+
const { fetchUserSpaceMemberships } = await import("./spaceSlice-R23R5VKL.js");
|
|
24939
24985
|
await thunkApi.dispatch(fetchUserSpaceMemberships(userId));
|
|
24940
24986
|
}
|
|
24941
24987
|
}
|
|
@@ -27418,7 +27464,7 @@ async function updateDocFunc(args, thunkApi) {
|
|
|
27418
27464
|
updated_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
27419
27465
|
};
|
|
27420
27466
|
await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
|
|
27421
|
-
const { getDocState, applyExternalDocUpdate } = await import("./docStore-
|
|
27467
|
+
const { getDocState, applyExternalDocUpdate } = await import("./docStore-4J3GA3JF.js");
|
|
27422
27468
|
if (getDocState().pageKey === id) {
|
|
27423
27469
|
applyExternalDocUpdate({
|
|
27424
27470
|
slateData: finalSlateData,
|
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
inlineImageUrlsForCustomProvider,
|
|
6
6
|
prepareTools,
|
|
7
7
|
shouldInlineImageUrlsForAgent
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6H5FASZ4.js";
|
|
9
9
|
import {
|
|
10
10
|
INVALID_TOOL_ARGS_REPLACEMENT,
|
|
11
11
|
buildInvalidToolCallSelfHealResult,
|
|
12
12
|
parseToolCallArguments,
|
|
13
13
|
performFetchRequest,
|
|
14
14
|
sanitizeOutboundMessages
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-KMWZ2MEG.js";
|
|
16
16
|
import {
|
|
17
17
|
createSSEParser,
|
|
18
18
|
createToolRunId,
|
|
@@ -23,22 +23,22 @@ import {
|
|
|
23
23
|
toolRunSetPending,
|
|
24
24
|
toolRunStarted,
|
|
25
25
|
toolRunSucceeded
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-CXCSIBWY.js";
|
|
27
27
|
import {
|
|
28
28
|
getPublicImageAgentMode
|
|
29
29
|
} from "./chunk-VIDPVFP3.js";
|
|
30
30
|
import {
|
|
31
31
|
getCurrentSpaceId
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-EPSE5WQL.js";
|
|
33
33
|
import {
|
|
34
34
|
addToolMessage,
|
|
35
35
|
messageStreamEnd,
|
|
36
36
|
messageStreaming,
|
|
37
37
|
updateToolMessage
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-UVEH34NR.js";
|
|
39
39
|
import {
|
|
40
40
|
streamAgentChatTurn
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-V7FV73B7.js";
|
|
42
42
|
import {
|
|
43
43
|
addActiveController,
|
|
44
44
|
removeActiveController,
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// packages/cli/client/localRuntimeFetchRetry.ts
|
|
2
|
+
import { request as httpRequest } from "node:http";
|
|
3
|
+
import { request as httpsRequest } from "node:https";
|
|
4
|
+
function toNodeRequestBody(body) {
|
|
5
|
+
if (typeof body === "string") return Buffer.from(body);
|
|
6
|
+
if (body instanceof Uint8Array) return Buffer.from(body);
|
|
7
|
+
if (body instanceof ArrayBuffer) return Buffer.from(body);
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
async function defaultLoopbackRequest(input, init) {
|
|
11
|
+
const target = typeof input === "string" || input instanceof URL ? new URL(String(input)) : new URL(input.url);
|
|
12
|
+
const headers = new Headers(init?.headers);
|
|
13
|
+
const body = toNodeRequestBody(init?.body);
|
|
14
|
+
if (body && !headers.has("Content-Length")) {
|
|
15
|
+
headers.set("Content-Length", String(body.byteLength));
|
|
16
|
+
}
|
|
17
|
+
return await new Promise((resolve, reject) => {
|
|
18
|
+
const requestImpl = target.protocol === "https:" ? httpsRequest : httpRequest;
|
|
19
|
+
const req = requestImpl(
|
|
20
|
+
target,
|
|
21
|
+
{
|
|
22
|
+
method: init?.method ?? "GET",
|
|
23
|
+
headers: Object.fromEntries(headers.entries())
|
|
24
|
+
},
|
|
25
|
+
(res) => {
|
|
26
|
+
const chunks = [];
|
|
27
|
+
res.on(
|
|
28
|
+
"data",
|
|
29
|
+
(chunk) => chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk))
|
|
30
|
+
);
|
|
31
|
+
res.on("end", () => {
|
|
32
|
+
resolve(
|
|
33
|
+
new Response(Buffer.concat(chunks), {
|
|
34
|
+
status: res.statusCode ?? 500,
|
|
35
|
+
headers: res.headers
|
|
36
|
+
})
|
|
37
|
+
);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
req.on("error", reject);
|
|
42
|
+
init?.signal?.addEventListener(
|
|
43
|
+
"abort",
|
|
44
|
+
() => {
|
|
45
|
+
req.destroy(
|
|
46
|
+
init.signal?.reason instanceof Error ? init.signal?.reason : new Error("request aborted")
|
|
47
|
+
);
|
|
48
|
+
reject(init.signal?.reason ?? new Error("request aborted"));
|
|
49
|
+
},
|
|
50
|
+
{ once: true }
|
|
51
|
+
);
|
|
52
|
+
if (body) req.write(body);
|
|
53
|
+
req.end();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export {
|
|
58
|
+
defaultLoopbackRequest
|
|
59
|
+
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
deleteDialog,
|
|
3
3
|
toast
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UVEH34NR.js";
|
|
5
5
|
import {
|
|
6
6
|
deleteServerSyncedCredential
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-V7FV73B7.js";
|
|
8
8
|
import {
|
|
9
9
|
require_date_fns
|
|
10
10
|
} from "./chunk-M76ECQRD.js";
|
|
@@ -8,6 +8,13 @@ import {
|
|
|
8
8
|
readDbRecordFromServers,
|
|
9
9
|
readLiveDbRecordAfterTombstoneMerge
|
|
10
10
|
} from "./chunk-Q24S4NDF.js";
|
|
11
|
+
import {
|
|
12
|
+
fetchWithTransientRetry
|
|
13
|
+
} from "./chunk-5XTOKQLW.js";
|
|
14
|
+
import {
|
|
15
|
+
DRAIN_EXHAUSTED_USER_MESSAGE,
|
|
16
|
+
isDrainExhaustedResponse
|
|
17
|
+
} from "./chunk-3L2WKC3W.js";
|
|
11
18
|
import {
|
|
12
19
|
buildDialogAttachmentPlan,
|
|
13
20
|
extractFileContentIds
|
|
@@ -4892,6 +4899,13 @@ function deriveToolErrors(toolMessages) {
|
|
|
4892
4899
|
}
|
|
4893
4900
|
return uniq(errors);
|
|
4894
4901
|
}
|
|
4902
|
+
async function describeReadFailureStatus(res) {
|
|
4903
|
+
if (res.status !== 503) return `HTTP ${res.status}`;
|
|
4904
|
+
if (await isDrainExhaustedResponse(res)) {
|
|
4905
|
+
return `HTTP 503\uFF08${DRAIN_EXHAUSTED_USER_MESSAGE}\uFF09`;
|
|
4906
|
+
}
|
|
4907
|
+
return "HTTP 503";
|
|
4908
|
+
}
|
|
4895
4909
|
async function readDialogOverHttp(args) {
|
|
4896
4910
|
const authHeaders = {
|
|
4897
4911
|
Authorization: `Bearer ${args.authToken}`,
|
|
@@ -4899,17 +4913,21 @@ async function readDialogOverHttp(args) {
|
|
|
4899
4913
|
};
|
|
4900
4914
|
const buildGetConvMsgsBody = () => JSON.stringify({ dialogId: args.dialogId, dialogKey: args.dialogKey, limit: args.limit });
|
|
4901
4915
|
const readViaBridge = async () => {
|
|
4902
|
-
const bridgeRes = await
|
|
4903
|
-
|
|
4904
|
-
|
|
4905
|
-
|
|
4906
|
-
|
|
4907
|
-
|
|
4908
|
-
|
|
4909
|
-
|
|
4910
|
-
|
|
4916
|
+
const bridgeRes = await fetchWithTransientRetry(
|
|
4917
|
+
args.fetchImpl,
|
|
4918
|
+
`${args.base}/api/dialog-read`,
|
|
4919
|
+
{
|
|
4920
|
+
method: "POST",
|
|
4921
|
+
headers: authHeaders,
|
|
4922
|
+
body: JSON.stringify({
|
|
4923
|
+
dialogKey: args.dialogKey,
|
|
4924
|
+
dialogId: args.dialogId,
|
|
4925
|
+
limit: args.limit
|
|
4926
|
+
})
|
|
4927
|
+
}
|
|
4928
|
+
);
|
|
4911
4929
|
if (!bridgeRes.ok) {
|
|
4912
|
-
throw Object.assign(new Error(`dialog read bridge failed:
|
|
4930
|
+
throw Object.assign(new Error(`dialog read bridge failed: ${await describeReadFailureStatus(bridgeRes)}`), {
|
|
4913
4931
|
status: bridgeRes.status,
|
|
4914
4932
|
base: args.base
|
|
4915
4933
|
});
|
|
@@ -4928,40 +4946,45 @@ async function readDialogOverHttp(args) {
|
|
|
4928
4946
|
};
|
|
4929
4947
|
};
|
|
4930
4948
|
if (args.messagesOnly) {
|
|
4931
|
-
const msgsOnlyRes = await
|
|
4932
|
-
|
|
4933
|
-
|
|
4934
|
-
|
|
4935
|
-
|
|
4949
|
+
const msgsOnlyRes = await fetchWithTransientRetry(
|
|
4950
|
+
args.fetchImpl,
|
|
4951
|
+
`${args.base}/rpc/getConvMsgs`,
|
|
4952
|
+
{
|
|
4953
|
+
method: "POST",
|
|
4954
|
+
headers: authHeaders,
|
|
4955
|
+
body: buildGetConvMsgsBody()
|
|
4956
|
+
}
|
|
4957
|
+
);
|
|
4936
4958
|
if (!msgsOnlyRes.ok) {
|
|
4937
4959
|
if (msgsOnlyRes.status === 401 || msgsOnlyRes.status === 403) return readViaBridge();
|
|
4938
|
-
throw Object.assign(new Error(`read dialog messages failed:
|
|
4960
|
+
throw Object.assign(new Error(`read dialog messages failed: ${await describeReadFailureStatus(msgsOnlyRes)}`), {
|
|
4939
4961
|
status: msgsOnlyRes.status,
|
|
4940
4962
|
base: args.base
|
|
4941
4963
|
});
|
|
4942
4964
|
}
|
|
4943
4965
|
return { meta: null, msgs: await msgsOnlyRes.json(), source: "http" };
|
|
4944
4966
|
}
|
|
4945
|
-
const metaRes = await
|
|
4967
|
+
const metaRes = await fetchWithTransientRetry(
|
|
4968
|
+
args.fetchImpl,
|
|
4946
4969
|
`${args.base}/api/v1/db/read/${encodeURIComponent(args.dialogKey)}`,
|
|
4947
4970
|
{ headers: { Authorization: `Bearer ${args.authToken}` } }
|
|
4948
4971
|
);
|
|
4949
4972
|
if (!metaRes.ok) {
|
|
4950
4973
|
if (metaRes.status === 401 || metaRes.status === 403) return readViaBridge();
|
|
4951
|
-
throw Object.assign(new Error(`read dialog meta failed:
|
|
4974
|
+
throw Object.assign(new Error(`read dialog meta failed: ${await describeReadFailureStatus(metaRes)}`), {
|
|
4952
4975
|
status: metaRes.status,
|
|
4953
4976
|
base: args.base
|
|
4954
4977
|
});
|
|
4955
4978
|
}
|
|
4956
4979
|
const meta = await metaRes.json();
|
|
4957
|
-
const msgsRes = await args.fetchImpl
|
|
4980
|
+
const msgsRes = await fetchWithTransientRetry(args.fetchImpl, `${args.base}/rpc/getConvMsgs`, {
|
|
4958
4981
|
method: "POST",
|
|
4959
4982
|
headers: authHeaders,
|
|
4960
4983
|
body: buildGetConvMsgsBody()
|
|
4961
4984
|
});
|
|
4962
4985
|
if (!msgsRes.ok) {
|
|
4963
4986
|
if (msgsRes.status === 401 || msgsRes.status === 403) return readViaBridge();
|
|
4964
|
-
throw Object.assign(new Error(`read dialog messages failed:
|
|
4987
|
+
throw Object.assign(new Error(`read dialog messages failed: ${await describeReadFailureStatus(msgsRes)}`), {
|
|
4965
4988
|
status: msgsRes.status,
|
|
4966
4989
|
base: args.base
|
|
4967
4990
|
});
|