nolo-cli 0.1.30 โ†’ 0.1.32

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.
Files changed (1133) hide show
  1. package/README.md +6 -0
  2. package/agent-runtime/agentRecordConfig.ts +0 -2
  3. package/agent-runtime/hostAdapter.ts +0 -1
  4. package/agent-runtime/hostRuntimeConfig.ts +86 -0
  5. package/agent-runtime/index.ts +13 -0
  6. package/agent-runtime/localToolPolicy.ts +13 -6
  7. package/agent-runtime/localWorkspaceTools.ts +333 -30
  8. package/agent-runtime/platformChatProvider.ts +4 -1
  9. package/agent-runtime/runtimeToolPolicy.ts +32 -47
  10. package/agentAliases.ts +72 -0
  11. package/agentCommandSupport.ts +4 -1
  12. package/agentInternalCommandEntries.ts +2 -0
  13. package/agentMachineCommands.ts +238 -16
  14. package/agentPullCommand.ts +46 -18
  15. package/agentRecordCommands.ts +1 -1
  16. package/agentRecordHelpers.ts +122 -16
  17. package/agentRunCommand.ts +72 -24
  18. package/agentRunParsing.ts +24 -5
  19. package/agentRuntimeLocal.ts +10 -0
  20. package/ai/agent/agentRunDialogLineage.ts +56 -0
  21. package/ai/agent/agentSlice.ts +1 -554
  22. package/ai/agent/cliExecutor.ts +330 -19
  23. package/ai/index.ts +1 -1
  24. package/authCommands.ts +36 -2
  25. package/buildPublish.ts +7 -2
  26. package/buildPublishArtifactAssembly.ts +514 -136
  27. package/buildPublishImportAnalysis.ts +21 -16
  28. package/chat/messages/types.ts +9 -0
  29. package/cli/agentAliases.ts +132 -0
  30. package/cli/agentCommandSupport.ts +80 -0
  31. package/cli/agentCreateCustomCommands.ts +278 -0
  32. package/cli/agentDialogsCommands.ts +227 -0
  33. package/cli/agentDoctorCommands.ts +203 -0
  34. package/cli/agentInternalCommandEntries.ts +45 -0
  35. package/cli/agentListCommands.ts +132 -0
  36. package/cli/agentListHelpers.ts +187 -0
  37. package/cli/agentMachineCommands.ts +698 -0
  38. package/cli/agentPullCommand.ts +167 -0
  39. package/cli/agentRecordCommands.ts +143 -0
  40. package/cli/agentRecordHelpers.ts +562 -0
  41. package/cli/agentRunCommand.ts +190 -0
  42. package/cli/agentRunLocalWorkspace.ts +182 -0
  43. package/cli/agentRunParsing.ts +298 -0
  44. package/cli/agentRuntimeLocal.ts +55 -0
  45. package/cli/agentSuperviseCommands.ts +8 -0
  46. package/cli/agentUnpublishCommands.ts +113 -0
  47. package/cli/authCommands.ts +264 -0
  48. package/cli/buildPublish.ts +138 -0
  49. package/cli/buildPublishArtifactAssembly.ts +724 -0
  50. package/cli/buildPublishImportAnalysis.ts +242 -0
  51. package/cli/cliCommandAdapters.ts +28 -0
  52. package/cli/cliCommandDispatch.ts +66 -0
  53. package/cli/cliCommandFactories.ts +66 -0
  54. package/cli/cliCommandTypes.ts +49 -0
  55. package/cli/cliEnvHelpers.ts +185 -0
  56. package/cli/cliIoTypes.ts +3 -0
  57. package/cli/cliRuntimeDoctorReport.ts +193 -0
  58. package/cli/client/agentConfigResolver.ts +1 -0
  59. package/cli/client/agentRun.ts +188 -0
  60. package/cli/client/agentRunInput.ts +10 -0
  61. package/cli/client/agentRunLocalExecution.ts +124 -0
  62. package/cli/client/agentRunLocalExecutor.ts +179 -0
  63. package/cli/client/agentRunRuntimeSelection.ts +145 -0
  64. package/cli/client/agentRunServerTransport.ts +397 -0
  65. package/cli/client/agentRunTaskRunRecorder.ts +176 -0
  66. package/cli/client/compactDialog.ts +222 -0
  67. package/cli/client/hybridRecordStore.ts +52 -0
  68. package/cli/client/localAgentRecords.ts +7 -0
  69. package/cli/client/localDialogRecords.ts +30 -0
  70. package/cli/client/localProviderResolver.ts +1 -0
  71. package/cli/client/localRuntimeAdapter.ts +676 -0
  72. package/cli/client/localToolPolicy.ts +8 -0
  73. package/cli/client/profileConfig.ts +101 -0
  74. package/cli/client/streamingOutput.ts +36 -0
  75. package/cli/client/taskRunPrompt.ts +10 -0
  76. package/cli/client/taskWorktree.ts +8 -0
  77. package/cli/client/workspaceSession.ts +11 -0
  78. package/cli/commandRegistry.ts +96 -0
  79. package/cli/connectorRunArtifact.ts +145 -0
  80. package/cli/connectorWebSocketTarget.ts +109 -0
  81. package/cli/customCodingAgentFlow.ts +208 -0
  82. package/cli/customCodingAgentRecord.ts +179 -0
  83. package/cli/defaultServer.ts +1 -0
  84. package/cli/dialogDataAccess.ts +186 -0
  85. package/cli/dialogInternalCommandEntries.ts +11 -0
  86. package/cli/dialogReadCommands.ts +180 -0
  87. package/cli/dialogReadHelpers.ts +226 -0
  88. package/cli/dialogStatusCommands.ts +123 -0
  89. package/cli/docInternalCommandEntries.ts +20 -0
  90. package/cli/hybridReadHelpers.ts +109 -0
  91. package/cli/internalCommandEntries.ts +20 -0
  92. package/cli/localRuntimeDb.ts +65 -0
  93. package/cli/machineCommandPrompts.ts +79 -0
  94. package/cli/machineCommandResolution.ts +43 -0
  95. package/cli/machineCommands.ts +324 -0
  96. package/cli/machineDaemonCommands.ts +29 -0
  97. package/cli/machineHeartbeatCommands.ts +29 -0
  98. package/cli/machineStatusCommands.ts +87 -0
  99. package/cli/machineWatchCommands.ts +41 -0
  100. package/cli/machineWsPromptMaterialization.ts +89 -0
  101. package/cli/machineWsRunDispatch.ts +635 -0
  102. package/cli/machineWsSession.ts +213 -0
  103. package/cli/noloReadBridgePrompt.ts +16 -0
  104. package/cli/pageCreateCommands.ts +219 -0
  105. package/cli/pageDeleteCommands.ts +167 -0
  106. package/cli/pageReadCommands.ts +151 -0
  107. package/cli/pageUpdateCommands.ts +249 -0
  108. package/cli/pageWriteHelpers.ts +209 -0
  109. package/cli/publishPackage.ts +36 -0
  110. package/cli/runtimeDoctorCommands.ts +67 -0
  111. package/cli/runtimeInternalCommandEntries.ts +15 -0
  112. package/cli/runtimeModeArgs.ts +33 -0
  113. package/cli/runtimePassthroughCommands.ts +22 -0
  114. package/cli/scriptCommandEntries.ts +31 -0
  115. package/cli/scriptPassthroughHelpers.ts +28 -0
  116. package/cli/secretScanHelpers.ts +31 -0
  117. package/cli/spaceAttachCommands.ts +134 -0
  118. package/cli/spaceCategoryCommands.ts +263 -0
  119. package/cli/spaceCommands.ts +295 -0
  120. package/cli/spaceDeleteCommands.ts +312 -0
  121. package/cli/spaceInternalCommandEntries.ts +21 -0
  122. package/cli/spaceMutationHelpers.ts +135 -0
  123. package/cli/spaceReadCommands.ts +323 -0
  124. package/cli/systemInternalCommandEntries.ts +65 -0
  125. package/cli/tableCommands.ts +118 -0
  126. package/cli/tableDataOutput.ts +41 -0
  127. package/cli/tableDataSafety.ts +26 -0
  128. package/cli/tableMetaCommands.ts +307 -0
  129. package/cli/tableMutationCommands.ts +266 -0
  130. package/cli/tableQueryParsing.ts +90 -0
  131. package/cli/tableQueryRequest.ts +53 -0
  132. package/cli/taskRunActions.ts +122 -0
  133. package/cli/taskRunCommand.ts +70 -0
  134. package/cli/taskRunParsing.ts +86 -0
  135. package/cli/taskRunPromptShared.ts +55 -0
  136. package/cli/tui/readlineWorkspace.ts +141 -0
  137. package/cli/tui/session.ts +50 -0
  138. package/cli/tui/tuiCatalog.ts +22 -0
  139. package/cli/tui/tuiCommandInterpreter.ts +253 -0
  140. package/cli/tui/tuiPresentation.ts +146 -0
  141. package/cli/updateCommands.ts +134 -0
  142. package/cli/workflowInternalCommandEntries.ts +31 -0
  143. package/cliEnvHelpers.ts +8 -0
  144. package/cliRuntimeDoctorReport.ts +193 -0
  145. package/client/agentConfigResolver.test.ts +0 -2
  146. package/client/agentRun.test.ts +208 -12
  147. package/client/agentRun.ts +44 -637
  148. package/client/agentRunInput.ts +10 -0
  149. package/client/agentRunLocalExecutor.ts +179 -0
  150. package/client/agentRunRuntimeSelection.test.ts +1 -0
  151. package/client/agentRunRuntimeSelection.ts +2 -12
  152. package/client/agentRunServerTransport.ts +397 -0
  153. package/client/agentRunTaskRunRecorder.ts +176 -0
  154. package/client/localRuntimeAdapter.test.ts +236 -9
  155. package/client/localRuntimeAdapter.ts +221 -23
  156. package/client/localToolPolicy.test.ts +28 -4
  157. package/commandRegistry.ts +1 -0
  158. package/connector-experimental/daemonLauncher.ts +38 -4
  159. package/connectorRunArtifact.ts +34 -10
  160. package/connectorWebSocketTarget.ts +70 -11
  161. package/database/server/authorityStoreTypes.ts +31 -0
  162. package/database/server/db.ts +15 -34
  163. package/database/server/legacyServerDb.ts +58 -0
  164. package/database/server/levelAuthorityStore.ts +75 -0
  165. package/database/server/memoryAuthorityStore.ts +133 -0
  166. package/database/server/serverStoreFactory.ts +124 -0
  167. package/localRuntimeDb.ts +39 -2
  168. package/machineCommandPrompts.ts +2 -0
  169. package/machineCommands.ts +199 -63
  170. package/machineWsRunDispatch.ts +81 -16
  171. package/machineWsSession.ts +65 -7
  172. package/noloReadBridgePrompt.ts +16 -0
  173. package/package.json +222 -62
  174. package/runtimeDoctorCommands.ts +15 -66
  175. package/spaceAttachCommands.ts +134 -0
  176. package/spaceInternalCommandEntries.ts +2 -0
  177. package/ai/agent/_executeModel.ts +0 -144
  178. package/ai/agent/appWorkingMemory.ts +0 -126
  179. package/ai/agent/avatarUtils.ts +0 -24
  180. package/ai/agent/buildEditingContext.ts +0 -378
  181. package/ai/agent/buildSystemPrompt.ts +0 -581
  182. package/ai/agent/canvasEditingContext.ts +0 -49
  183. package/ai/agent/cleanAgentMessages.ts +0 -140
  184. package/ai/agent/cliChatClient.ts +0 -153
  185. package/ai/agent/contextCompiler.ts +0 -107
  186. package/ai/agent/contextLayerContract.ts +0 -44
  187. package/ai/agent/createAgentSchema.ts +0 -236
  188. package/ai/agent/executeToolCall.ts +0 -59
  189. package/ai/agent/fetchAgentContexts.ts +0 -42
  190. package/ai/agent/generatePrompt.ts +0 -3
  191. package/ai/agent/getFullChatContextKeys.ts +0 -168
  192. package/ai/agent/guidedCreation/assistant.ts +0 -82
  193. package/ai/agent/guidedCreation/capabilities.ts +0 -84
  194. package/ai/agent/guidedCreation/draft.ts +0 -62
  195. package/ai/agent/guidedCreation/types.ts +0 -38
  196. package/ai/agent/hooks/fetchPublicAgents.ts +0 -133
  197. package/ai/agent/hooks/useAgentConfig.ts +0 -89
  198. package/ai/agent/hooks/useAgentDialog.ts +0 -35
  199. package/ai/agent/hooks/useAgentFormValidation.ts +0 -202
  200. package/ai/agent/hooks/usePublicAgents.ts +0 -479
  201. package/ai/agent/pageBuilderHandoffRules.ts +0 -75
  202. package/ai/agent/persistMessageWithFixedId.ts +0 -37
  203. package/ai/agent/planSlice.ts +0 -259
  204. package/ai/agent/referenceUtils.ts +0 -229
  205. package/ai/agent/runAgentBackground.ts +0 -238
  206. package/ai/agent/runAgentClientLoop.ts +0 -141
  207. package/ai/agent/runtimeGuidance.ts +0 -116
  208. package/ai/agent/runtimeServerBase.ts +0 -37
  209. package/ai/agent/server/fetchPublicAgents.ts +0 -183
  210. package/ai/agent/startParallelAgentStreams.ts +0 -424
  211. package/ai/agent/startupProtocol.ts +0 -53
  212. package/ai/agent/streamAgentChatTurn.ts +0 -1874
  213. package/ai/agent/streamAgentChatTurnUtils.ts +0 -782
  214. package/ai/agent/types.ts +0 -71
  215. package/ai/agent/utils/imageOutput.ts +0 -39
  216. package/ai/agent/utils/publicImageAgentMode.ts +0 -26
  217. package/ai/agent/utils/sortUtils.ts +0 -250
  218. package/ai/agent/web/referencePickerUtils.ts +0 -146
  219. package/ai/agent/web/useGuidedAgentCreation.ts +0 -238
  220. package/ai/ai.locale.ts +0 -1095
  221. package/ai/chat/accumulateToolCallChunks.ts +0 -126
  222. package/ai/chat/fetchUtils.native.ts +0 -278
  223. package/ai/chat/fetchUtils.ts +0 -155
  224. package/ai/chat/inlineImageUrlsForCustomProvider.ts +0 -117
  225. package/ai/chat/parseApiError.ts +0 -67
  226. package/ai/chat/parseMultilineSSE.ts +0 -95
  227. package/ai/chat/sendOpenAICompletionsRequest.native.ts +0 -695
  228. package/ai/chat/sendOpenAICompletionsRequest.ts +0 -805
  229. package/ai/chat/sendOpenAIResponseRequest.ts +0 -577
  230. package/ai/chat/shouldUseServerProxy.ts +0 -18
  231. package/ai/chat/sseClient.native.ts +0 -91
  232. package/ai/chat/sseClient.ts +0 -67
  233. package/ai/chat/streamReader.native.ts +0 -31
  234. package/ai/chat/streamReader.ts +0 -62
  235. package/ai/chat/updateTotalUsage.ts +0 -89
  236. package/ai/context/buildReferenceContext.ts +0 -437
  237. package/ai/context/calculateContextUsage.ts +0 -133
  238. package/ai/context/retention.ts +0 -165
  239. package/ai/context/tokenUtils.ts +0 -78
  240. package/ai/llm/agentCapabilities.ts +0 -74
  241. package/ai/llm/calculateGeminiImageTokens.ts +0 -57
  242. package/ai/llm/deepinfra.ts +0 -79
  243. package/ai/llm/fireworks.ts +0 -68
  244. package/ai/llm/generateRequestBody.ts +0 -165
  245. package/ai/llm/getModelContextWindow.ts +0 -84
  246. package/ai/llm/getNoloKey.ts +0 -37
  247. package/ai/llm/getPricing.ts +0 -252
  248. package/ai/llm/hooks/useModelPricing.ts +0 -75
  249. package/ai/llm/imagePricing.ts +0 -66
  250. package/ai/llm/isResponseAPIModel.ts +0 -13
  251. package/ai/llm/kimi.ts +0 -23
  252. package/ai/llm/mimo.ts +0 -71
  253. package/ai/llm/mistral.ts +0 -22
  254. package/ai/llm/modelAvatar.ts +0 -428
  255. package/ai/llm/models.ts +0 -45
  256. package/ai/llm/openrouterModels.ts +0 -6
  257. package/ai/llm/providers.ts +0 -311
  258. package/ai/llm/reasoningModels.ts +0 -29
  259. package/ai/llm/types.ts +0 -67
  260. package/ai/llm/usageRequestOptions.ts +0 -59
  261. package/ai/memory/capture.ts +0 -148
  262. package/ai/memory/consolidate.ts +0 -104
  263. package/ai/memory/delete.ts +0 -147
  264. package/ai/memory/overlay.ts +0 -84
  265. package/ai/memory/query.ts +0 -38
  266. package/ai/memory/queryShared.ts +0 -160
  267. package/ai/memory/rank.ts +0 -105
  268. package/ai/memory/recentRelationshipRecap.ts +0 -247
  269. package/ai/memory/remember.ts +0 -167
  270. package/ai/memory/runtime.ts +0 -76
  271. package/ai/memory/store.ts +0 -20
  272. package/ai/memory/storeShared.ts +0 -76
  273. package/ai/memory/types.ts +0 -46
  274. package/ai/memory/understanding.ts +0 -349
  275. package/ai/memory/understandingGreeting.ts +0 -264
  276. package/ai/messages/type.ts +0 -20
  277. package/ai/policy/personalizationDialog.ts +0 -333
  278. package/ai/policy/runtimePolicy.ts +0 -440
  279. package/ai/policy/selfUpdateFields.ts +0 -48
  280. package/ai/skills/referenceRuntime.ts +0 -274
  281. package/ai/skills/skillDiagnostics.ts +0 -251
  282. package/ai/skills/skillDocBuilder.ts +0 -139
  283. package/ai/skills/skillReferenceSummary.ts +0 -63
  284. package/ai/taskRun/taskRunProtocol.ts +0 -897
  285. package/ai/token/calculatePrice.ts +0 -576
  286. package/ai/token/db.ts +0 -98
  287. package/ai/token/externalToolCost.ts +0 -341
  288. package/ai/token/hooks/useRecords.ts +0 -65
  289. package/ai/token/missingUsageEstimate.ts +0 -42
  290. package/ai/token/modelUsageQuery.ts +0 -269
  291. package/ai/token/normalizeUsage.ts +0 -84
  292. package/ai/token/openaiImageGenerationUsage.ts +0 -56
  293. package/ai/token/prepareTokenUsageData.ts +0 -93
  294. package/ai/token/query.ts +0 -88
  295. package/ai/token/queryUserTokens.ts +0 -59
  296. package/ai/token/resolveBillingTarget.ts +0 -52
  297. package/ai/token/saveTokenRecord.ts +0 -53
  298. package/ai/token/serverDialogProjection.ts +0 -78
  299. package/ai/token/serverTokenWriter.ts +0 -145
  300. package/ai/token/stats.ts +0 -21
  301. package/ai/token/tokenThunks.ts +0 -24
  302. package/ai/token/types.ts +0 -93
  303. package/ai/tools/agent/agentTools.ts +0 -235
  304. package/ai/tools/agent/agentUpdateShared.ts +0 -311
  305. package/ai/tools/agent/callAgentTool.ts +0 -139
  306. package/ai/tools/agent/createAgentTool.ts +0 -512
  307. package/ai/tools/agent/createDialogTool.ts +0 -69
  308. package/ai/tools/agent/createSkillAgentTool.ts +0 -62
  309. package/ai/tools/agent/parallelBudget.ts +0 -221
  310. package/ai/tools/agent/prepareAgentDraftTool.ts +0 -173
  311. package/ai/tools/agent/presets/appBuilderPreset.ts +0 -154
  312. package/ai/tools/agent/runLlmTool.ts +0 -96
  313. package/ai/tools/agent/runStreamingAgentTool.ts +0 -73
  314. package/ai/tools/agent/skillAgentArgs.ts +0 -106
  315. package/ai/tools/agent/skillAgentPreset.ts +0 -89
  316. package/ai/tools/agent/startAgentDialogTool.ts +0 -53
  317. package/ai/tools/agent/streamParallelAgentsTool.ts +0 -123
  318. package/ai/tools/agent/updateAgentTool.ts +0 -96
  319. package/ai/tools/agent/updateSelfTool.ts +0 -113
  320. package/ai/tools/amazonProductScraperTool.ts +0 -86
  321. package/ai/tools/apifyActorClient.ts +0 -45
  322. package/ai/tools/appEditGuard.ts +0 -372
  323. package/ai/tools/appReadSnapshot.ts +0 -153
  324. package/ai/tools/appTools.ts +0 -1549
  325. package/ai/tools/applyEditTool.ts +0 -259
  326. package/ai/tools/applyLineEditsTool.ts +0 -315
  327. package/ai/tools/browserTools/click.ts +0 -33
  328. package/ai/tools/browserTools/closeSession.ts +0 -29
  329. package/ai/tools/browserTools/common.ts +0 -27
  330. package/ai/tools/browserTools/openSession.ts +0 -48
  331. package/ai/tools/browserTools/readContent.ts +0 -38
  332. package/ai/tools/browserTools/selectOption.ts +0 -46
  333. package/ai/tools/browserTools/typeText.ts +0 -42
  334. package/ai/tools/category/createCategoryTool.ts +0 -66
  335. package/ai/tools/category/queryContentsByCategoryTool.ts +0 -69
  336. package/ai/tools/category/updateContentCategoryTool.ts +0 -75
  337. package/ai/tools/cfBrowserTools.ts +0 -319
  338. package/ai/tools/cfSpeechToTextTool.ts +0 -49
  339. package/ai/tools/checkEnvTool.ts +0 -102
  340. package/ai/tools/cloudflareCrawlTool.ts +0 -289
  341. package/ai/tools/codeSearchTool.ts +0 -123
  342. package/ai/tools/codeTools.ts +0 -101
  343. package/ai/tools/convertMarxistsBookTool.ts +0 -103
  344. package/ai/tools/createDocTool.ts +0 -132
  345. package/ai/tools/createPlanTool.ts +0 -999
  346. package/ai/tools/createSkillDocTool.ts +0 -155
  347. package/ai/tools/createWorkflowTool.ts +0 -154
  348. package/ai/tools/deepseekOcrTool.ts +0 -34
  349. package/ai/tools/delayTool.ts +0 -31
  350. package/ai/tools/deleteSpacesTool.ts +0 -325
  351. package/ai/tools/deleteSpacesToolModel.ts +0 -159
  352. package/ai/tools/devReloadUtils.ts +0 -29
  353. package/ai/tools/dialogMessageSearch.ts +0 -137
  354. package/ai/tools/doctorSkillTool.ts +0 -72
  355. package/ai/tools/ecommerceScraperTool.ts +0 -86
  356. package/ai/tools/emailTools.ts +0 -549
  357. package/ai/tools/evalSkillTool.ts +0 -92
  358. package/ai/tools/exaSearchTool.ts +0 -64
  359. package/ai/tools/execShellTool.ts +0 -266
  360. package/ai/tools/executeSqlTool.ts +0 -192
  361. package/ai/tools/fetchWebpageSupport.ts +0 -333
  362. package/ai/tools/fetchWebpageTool.ts +0 -97
  363. package/ai/tools/geminiImagePreviewTool.ts +0 -361
  364. package/ai/tools/generateDocxTool.ts +0 -215
  365. package/ai/tools/googleSearchScraperTool.ts +0 -106
  366. package/ai/tools/importDataTool.ts +0 -133
  367. package/ai/tools/importSkillTool.ts +0 -162
  368. package/ai/tools/index.ts +0 -2132
  369. package/ai/tools/jdProductScraperTool.ts +0 -821
  370. package/ai/tools/listFilesTool.ts +0 -85
  371. package/ai/tools/listUserSpacesTool.ts +0 -113
  372. package/ai/tools/localFilesTool.ts +0 -276
  373. package/ai/tools/marxistsOfflineBook.ts +0 -253
  374. package/ai/tools/modelUsageTools.ts +0 -206
  375. package/ai/tools/olmOcrTool.ts +0 -34
  376. package/ai/tools/openaiImageTool.ts +0 -267
  377. package/ai/tools/prepareTools.ts +0 -23
  378. package/ai/tools/readDocTool.ts +0 -84
  379. package/ai/tools/readFileTool.ts +0 -214
  380. package/ai/tools/readTool.ts +0 -194
  381. package/ai/tools/readXPostTool.ts +0 -233
  382. package/ai/tools/rememberMemoryTool.ts +0 -84
  383. package/ai/tools/remotionVideoTool.ts +0 -151
  384. package/ai/tools/searchDialogMessagesTool.ts +0 -222
  385. package/ai/tools/searchRepoTool.ts +0 -118
  386. package/ai/tools/searchWorkspaceTool.ts +0 -259
  387. package/ai/tools/skillFollowup.ts +0 -86
  388. package/ai/tools/surfWeatherTool.ts +0 -169
  389. package/ai/tools/table/addTableRowTool.ts +0 -217
  390. package/ai/tools/table/createTableTool.ts +0 -315
  391. package/ai/tools/table/rowTools.ts +0 -371
  392. package/ai/tools/table/schemaTools.ts +0 -244
  393. package/ai/tools/table/shareTableTool.ts +0 -148
  394. package/ai/tools/table/toolShared.ts +0 -129
  395. package/ai/tools/taobaoTmallProductScraperTool.ts +0 -49
  396. package/ai/tools/toolApiClient.ts +0 -255
  397. package/ai/tools/toolNameAliases.ts +0 -70
  398. package/ai/tools/toolResultError.ts +0 -42
  399. package/ai/tools/toolRunSlice.ts +0 -303
  400. package/ai/tools/toolSchemaCompatibility.ts +0 -53
  401. package/ai/tools/toolVisibility.ts +0 -4
  402. package/ai/tools/types.ts +0 -20
  403. package/ai/tools/uiAskChoiceTool.ts +0 -104
  404. package/ai/tools/updateContentTitleTool.ts +0 -84
  405. package/ai/tools/updateDocTool.ts +0 -105
  406. package/ai/tools/updateUserPreferenceProfileTool.ts +0 -145
  407. package/ai/tools/wereadGatewayTool.ts +0 -152
  408. package/ai/tools/whisperTool.ts +0 -77
  409. package/ai/tools/writeFileTool.ts +0 -213
  410. package/ai/tools/youtubeScraperTool.ts +0 -116
  411. package/ai/tools/ziweiChartTool.ts +0 -678
  412. package/ai/types.ts +0 -55
  413. package/ai/workflow/workflowExecutor.ts +0 -323
  414. package/ai/workflow/workflowSlice.ts +0 -73
  415. package/ai/workflow/workflowTypes.ts +0 -106
  416. package/app/actions/syncAppRecord.ts +0 -73
  417. package/app/admin/adminPages.ts +0 -13
  418. package/app/colors.ts +0 -1
  419. package/app/constants/animationSets.ts +0 -21
  420. package/app/constants/appEditor.ts +0 -99
  421. package/app/constants/clientDownloads.ts +0 -54
  422. package/app/constants/desktopReleaseManifest.ts +0 -68
  423. package/app/constants/homeTabs.ts +0 -15
  424. package/app/constants/routePaths.ts +0 -15
  425. package/app/email/emailApiRoutes.ts +0 -14
  426. package/app/favorite/favoriteSlice.ts +0 -690
  427. package/app/favorite/type.ts +0 -43
  428. package/app/favorite/useAgentFavorite.ts +0 -43
  429. package/app/favorite/useContentFavorite.ts +0 -41
  430. package/app/fetchOwnedApps.ts +0 -269
  431. package/app/guide/quickStartGuide.ts +0 -128
  432. package/app/hooks/deleteDbKey.ts +0 -233
  433. package/app/hooks/index.ts +0 -4
  434. package/app/hooks/useAppDetail.ts +0 -208
  435. package/app/hooks/useAppVersions.ts +0 -52
  436. package/app/hooks/useAutoResizeTextarea.ts +0 -29
  437. package/app/hooks/useChatPageTitle.ts +0 -85
  438. package/app/hooks/useClipboardFiles.ts +0 -20
  439. package/app/hooks/useDesktopLocalConnectorAutostart.ts +0 -38
  440. package/app/hooks/useDragResize.ts +0 -91
  441. package/app/hooks/useElementSizeVar.ts +0 -24
  442. package/app/hooks/useFileDropZone.ts +0 -52
  443. package/app/hooks/useHasMounted.ts +0 -11
  444. package/app/hooks/useImageLoadFallback.ts +0 -19
  445. package/app/hooks/useIsMobile.ts +0 -46
  446. package/app/hooks/useMyApps.ts +0 -375
  447. package/app/hooks/useMyContentItems.ts +0 -91
  448. package/app/hooks/useNewMessageNotification.ts +0 -81
  449. package/app/hooks/usePageMeta.ts +0 -107
  450. package/app/hooks/useRecentlyOpened.ts +0 -84
  451. package/app/hooks/useUnifiedStore.ts +0 -11
  452. package/app/hooks/useUserNotifications.ts +0 -197
  453. package/app/hooks.ts +0 -55
  454. package/app/i18n/clientResources.ts +0 -65
  455. package/app/i18n/i18n.base.ts +0 -14
  456. package/app/i18n/i18n.config.ts +0 -62
  457. package/app/i18n/i18n.server.ts +0 -13
  458. package/app/i18n/index.ts +0 -15
  459. package/app/i18n/mapLanguage.ts +0 -11
  460. package/app/i18n/translations/appBuilder.locale.ts +0 -453
  461. package/app/i18n/translations/error.locale.ts +0 -246
  462. package/app/i18n/translations/interface.locale.ts +0 -2174
  463. package/app/i18n/translations/seo.locale.ts +0 -129
  464. package/app/i18n/types.ts +0 -6
  465. package/app/notifications/formatNotification.ts +0 -134
  466. package/app/notifications/model.ts +0 -77
  467. package/app/notifications/notificationSlice.ts +0 -141
  468. package/app/notifications/useNotificationActions.ts +0 -67
  469. package/app/pages/homeTabState.ts +0 -57
  470. package/app/pages/quickChatFlow.ts +0 -109
  471. package/app/pages/rechargeCheckout.ts +0 -23
  472. package/app/pages/usePageArt.ts +0 -91
  473. package/app/realtime/sharedSse.ts +0 -182
  474. package/app/reducer.ts +0 -36
  475. package/app/seo/pageMeta.ts +0 -123
  476. package/app/settings/config.ts +0 -54
  477. package/app/settings/dbActionThunks.ts +0 -34
  478. package/app/settings/defaultSpacePreference.ts +0 -87
  479. package/app/settings/navItems.ts +0 -73
  480. package/app/settings/prepareUserSetting.ts +0 -11
  481. package/app/settings/settingsRecord.ts +0 -8
  482. package/app/settings/web/chat-config/useAutoSaveGlobalPrompt.ts +0 -59
  483. package/app/settings/web/machineStatus.ts +0 -23
  484. package/app/settings/web/useSettingsStylesheet.ts +0 -28
  485. package/app/settings/web/userSecurityUtils.ts +0 -21
  486. package/app/stateViews/runtime.ts +0 -86
  487. package/app/store.ts +0 -53
  488. package/app/theme/colors.ts +0 -280
  489. package/app/theme/fontPreference.ts +0 -77
  490. package/app/theme/index.ts +0 -7
  491. package/app/theme/theme.config.ts +0 -120
  492. package/app/theme/themeModeBootstrap.ts +0 -123
  493. package/app/theme/useSystemTheme.ts +0 -33
  494. package/app/types/appSummary.ts +0 -114
  495. package/app/utils/appDeploySource.ts +0 -50
  496. package/app/utils/appKeys.ts +0 -55
  497. package/app/utils/appRuntimeUrl.ts +0 -51
  498. package/app/utils/async.ts +0 -28
  499. package/app/utils/asyncMapStatus.ts +0 -31
  500. package/app/utils/clipboard.ts +0 -86
  501. package/app/utils/credits.ts +0 -12
  502. package/app/utils/desktopAgentRuntimeStatusClient.ts +0 -42
  503. package/app/utils/desktopAgentRuntimeTurnClient.ts +0 -70
  504. package/app/utils/desktopLocalConnectorClient.ts +0 -83
  505. package/app/utils/env.ts +0 -12
  506. package/app/utils/excelToSlate.ts +0 -430
  507. package/app/utils/fileReaders.ts +0 -12
  508. package/app/utils/fileUtils.ts +0 -229
  509. package/app/utils/imageUtils.native.ts +0 -96
  510. package/app/utils/imageUtils.ts +0 -244
  511. package/app/utils/ime.ts +0 -43
  512. package/app/utils/myContentItems.ts +0 -290
  513. package/app/utils/processDateRange.ts +0 -30
  514. package/app/utils/retryFetch.ts +0 -61
  515. package/app/utils/slateToExcel.ts +0 -58
  516. package/app/utils/toast.native.ts +0 -42
  517. package/app/utils/toast.ts +0 -3
  518. package/app/web/spaceInitGuard.ts +0 -28
  519. package/auth/action/signOutAction.ts +0 -0
  520. package/auth/action/signUpAction.ts +0 -227
  521. package/auth/actor.ts +0 -16
  522. package/auth/authSlice.ts +0 -517
  523. package/auth/billing.ts +0 -130
  524. package/auth/client/deleteUserRequest.ts +0 -86
  525. package/auth/client/loginRequest.ts +0 -14
  526. package/auth/hooks/useAuth.ts +0 -9
  527. package/auth/hooks/useDeleteOwnAccount.ts +0 -50
  528. package/auth/hooks/useDeleteOwnAccountFlow.ts +0 -66
  529. package/auth/hooks/useDeleteUser.ts +0 -45
  530. package/auth/hooks/useEnableUser.ts +0 -50
  531. package/auth/hooks/useFetchUsers.ts +0 -77
  532. package/auth/hooks/useRechargeUser.ts +0 -82
  533. package/auth/index.ts +0 -1
  534. package/auth/invite.ts +0 -19
  535. package/auth/locale.ts +0 -84
  536. package/auth/resetAuthScopedClientState.ts +0 -27
  537. package/auth/rn/tokenManager.ts +0 -72
  538. package/auth/routes.ts +0 -127
  539. package/auth/server/accessActivity.ts +0 -143
  540. package/auth/server/billingFullChainSimulator.ts +0 -325
  541. package/auth/server/billingUsageReport.ts +0 -192
  542. package/auth/server/cliLogin.ts +0 -198
  543. package/auth/server/creatorEarningCreditConversion.ts +0 -515
  544. package/auth/server/creatorEarningsLedger.ts +0 -165
  545. package/auth/server/creatorEarningsReport.ts +0 -299
  546. package/auth/server/creatorSettlementLedger.ts +0 -386
  547. package/auth/server/creatorSettlementReport.ts +0 -442
  548. package/auth/server/creatorSplitConfig.ts +0 -191
  549. package/auth/server/deduct.ts +0 -270
  550. package/auth/server/delete.ts +0 -887
  551. package/auth/server/disable.ts +0 -61
  552. package/auth/server/emailAutomation.ts +0 -358
  553. package/auth/server/emailAutomationConfig.ts +0 -88
  554. package/auth/server/emailAutomationRules.ts +0 -94
  555. package/auth/server/emailAutomationTemplates.ts +0 -131
  556. package/auth/server/emailAutomationTypes.ts +0 -38
  557. package/auth/server/emailDbConfig.ts +0 -147
  558. package/auth/server/emailDelivery.ts +0 -960
  559. package/auth/server/emailDeliveryGuards.ts +0 -282
  560. package/auth/server/emailPolicy.ts +0 -43
  561. package/auth/server/emailPreferences.ts +0 -117
  562. package/auth/server/emailProvider.ts +0 -277
  563. package/auth/server/emailReport.ts +0 -439
  564. package/auth/server/emailRuntimeConfig.ts +0 -86
  565. package/auth/server/emailScenarioNotifications.ts +0 -340
  566. package/auth/server/enable.ts +0 -61
  567. package/auth/server/getRechargeHistory.ts +0 -110
  568. package/auth/server/getUser.ts +0 -71
  569. package/auth/server/inviteReward.ts +0 -295
  570. package/auth/server/inviteRewardEmail.ts +0 -1
  571. package/auth/server/ledger.ts +0 -422
  572. package/auth/server/ledgerAudit.ts +0 -424
  573. package/auth/server/ledgerWitness.ts +0 -472
  574. package/auth/server/listusers.ts +0 -154
  575. package/auth/server/locks.ts +0 -32
  576. package/auth/server/login.ts +0 -184
  577. package/auth/server/productBillingSplits.ts +0 -166
  578. package/auth/server/productEntitlements.ts +0 -139
  579. package/auth/server/productPurchase.ts +0 -382
  580. package/auth/server/recharge.ts +0 -284
  581. package/auth/server/revenueShareLedger.ts +0 -389
  582. package/auth/server/revenueShareReport.ts +0 -258
  583. package/auth/server/revenueSplitPolicy.ts +0 -119
  584. package/auth/server/revokeSessions.ts +0 -59
  585. package/auth/server/route.ts +0 -195
  586. package/auth/server/sendEmail.ts +0 -176
  587. package/auth/server/shared.ts +0 -51
  588. package/auth/server/signup.ts +0 -423
  589. package/auth/server/signupIpQuota.ts +0 -44
  590. package/auth/server/token.ts +0 -109
  591. package/auth/server/tokenUsageBilling.ts +0 -312
  592. package/auth/server/transfer.ts +0 -40
  593. package/auth/server/utils.ts +0 -200
  594. package/auth/sessionTokenVersion.ts +0 -38
  595. package/auth/token.ts +0 -63
  596. package/auth/tokenCookie.ts +0 -1
  597. package/auth/types.ts +0 -28
  598. package/auth/utils.ts +0 -108
  599. package/auth/web/bootstrapAuthState.ts +0 -60
  600. package/auth/web/tokenManager.ts +0 -61
  601. package/auth/web/useRegister.ts +0 -70
  602. package/chat/chat.locale.ts +0 -804
  603. package/chat/dialog/actions/addCybotAction.ts +0 -52
  604. package/chat/dialog/actions/addReferenceKeysAction.ts +0 -62
  605. package/chat/dialog/actions/builtinDialogLlm.ts +0 -35
  606. package/chat/dialog/actions/cleanupCliSession.ts +0 -40
  607. package/chat/dialog/actions/compactDialogAndForkAction.ts +0 -47
  608. package/chat/dialog/actions/createDialogAction.ts +0 -372
  609. package/chat/dialog/actions/createScheduledTaskAction.ts +0 -78
  610. package/chat/dialog/actions/handleSendMessageAction.ts +0 -197
  611. package/chat/dialog/actions/handleSendMessageResolver.ts +0 -29
  612. package/chat/dialog/actions/removeCybotAction.ts +0 -6
  613. package/chat/dialog/actions/removeDialogAgentAction.ts +0 -44
  614. package/chat/dialog/actions/replacePrimaryCybotAction.ts +0 -6
  615. package/chat/dialog/actions/setPrimaryDialogAgentAction.ts +0 -52
  616. package/chat/dialog/actions/updateDialogSummaryAction.ts +0 -405
  617. package/chat/dialog/actions/updateDialogTitleAction.ts +0 -151
  618. package/chat/dialog/actions/updateDialogTitlePolicy.ts +0 -30
  619. package/chat/dialog/actions/updateTokensAction.ts +0 -233
  620. package/chat/dialog/dialogAgents.ts +0 -54
  621. package/chat/dialog/dialogPageRenderMode.ts +0 -182
  622. package/chat/dialog/dialogSlice.ts +0 -872
  623. package/chat/dialog/dialogTitle.ts +0 -81
  624. package/chat/dialog/dialogTokenStats.ts +0 -12
  625. package/chat/dialog/dialogUrl.ts +0 -6
  626. package/chat/dialog/ensureDialogSpaceAction.ts +0 -208
  627. package/chat/dialog/goal.ts +0 -108
  628. package/chat/dialog/hooks/useStreamingSymbol.ts +0 -63
  629. package/chat/dialog/objectAssistantRegistry.ts +0 -286
  630. package/chat/dialog/schedule.ts +0 -17
  631. package/chat/dialog/useCreateDialog.ts +0 -52
  632. package/chat/hooks/sendPermissionResolver.ts +0 -128
  633. package/chat/hooks/useChatInput.ts +0 -99
  634. package/chat/hooks/useChatInputSeed.ts +0 -31
  635. package/chat/hooks/useMessageInteraction.ts +0 -412
  636. package/chat/hooks/useSendPermission.ts +0 -92
  637. package/chat/hooks/useThinkingVisibility.ts +0 -27
  638. package/chat/messages/browserImageUrl.ts +0 -48
  639. package/chat/messages/deleteMessages.ts +0 -47
  640. package/chat/messages/fetchAndCacheMessages.ts +0 -119
  641. package/chat/messages/fetchConvMsgs.ts +0 -51
  642. package/chat/messages/fileUrl.ts +0 -13
  643. package/chat/messages/generateMessageKey.ts +0 -21
  644. package/chat/messages/hooks/useBase64Migration.ts +0 -115
  645. package/chat/messages/messageAgent.ts +0 -8
  646. package/chat/messages/messageContent.ts +0 -199
  647. package/chat/messages/messageContract.ts +0 -88
  648. package/chat/messages/messageSlice.ts +0 -1191
  649. package/chat/messages/pendingAttachmentParts.ts +0 -117
  650. package/chat/messages/sendFirstMessage.ts +0 -193
  651. package/chat/messages/toolPresentation.ts +0 -212
  652. package/chat/messages/toolThunks.ts +0 -625
  653. package/chat/messages/web/ChatDisplayContext.ts +0 -14
  654. package/chat/messages/web/ToolMessageTypes.ts +0 -23
  655. package/chat/messages/web/diffViewerModel.ts +0 -61
  656. package/chat/messages/web/groupToolEntries.ts +0 -44
  657. package/chat/messages/web/groupToolMessages.ts +0 -35
  658. package/chat/messages/web/inlineReactArtifactParser.ts +0 -63
  659. package/chat/messages/web/toolDisplayName.ts +0 -22
  660. package/chat/messages/web/useLoopStopReason.ts +0 -43
  661. package/chat/messages/ziweiChartDoc.ts +0 -94
  662. package/chat/web/docxToSlate.ts +0 -597
  663. package/chat/web/fileProcessor.ts +0 -442
  664. package/chat/web/hooks/useProgressiveDisplayCount.ts +0 -102
  665. package/chat/web/messageInputAgentUi.ts +0 -189
  666. package/chat/web/messageInputKeyBehavior.ts +0 -53
  667. package/chat/web/messageInputMention.ts +0 -102
  668. package/chat/web/messageInputSendResolver.ts +0 -51
  669. package/chat/web/messageSlashCommands.ts +0 -10
  670. package/chat/web/pdfOcrProcessor.ts +0 -131
  671. package/chat/web/sidebar/allViewSearch.ts +0 -87
  672. package/chat/web/sidebar/types.ts +0 -12
  673. package/chat/web/sidebar/useChatSidebarFilteredData.ts +0 -141
  674. package/chat/web/sidebar/useSidebarDragAndDrop.ts +0 -56
  675. package/connector-experimental/index.ts +0 -5
  676. package/core/builtinAgents.ts +0 -58
  677. package/core/coin.ts +0 -42
  678. package/core/config.ts +0 -15
  679. package/core/crypto.ts +0 -51
  680. package/core/events/types.ts +0 -145
  681. package/core/generateKeyPairFromSeedV1.ts +0 -15
  682. package/core/generateMainKey.ts +0 -22
  683. package/core/init.ts +0 -41
  684. package/core/localOrigins.ts +0 -8
  685. package/core/password.ts +0 -13
  686. package/core/prefix.ts +0 -23
  687. package/create/editor/blockCommands.ts +0 -118
  688. package/create/editor/highlightExample.ts +0 -66
  689. package/create/editor/imageUpload.ts +0 -66
  690. package/create/editor/mark.ts +0 -15
  691. package/create/editor/plugins/normalizeChineseTypography.ts +0 -85
  692. package/create/editor/plugins/withBlockStructure.ts +0 -53
  693. package/create/editor/plugins/withChineseTypography.ts +0 -61
  694. package/create/editor/plugins/withLayout.ts +0 -30
  695. package/create/editor/plugins/withLinks.ts +0 -13
  696. package/create/editor/plugins/withMentions.ts +0 -15
  697. package/create/editor/plugins/withTables.ts +0 -52
  698. package/create/editor/tableCommands.ts +0 -270
  699. package/create/editor/theme/prism/default.ts +0 -145
  700. package/create/editor/theme/prism/githubDark.ts +0 -139
  701. package/create/editor/theme/prism/githubLight.ts +0 -139
  702. package/create/editor/theme/prism/index.ts +0 -23
  703. package/create/editor/theme/prism/okaidia.ts +0 -197
  704. package/create/editor/toolMentionOptions.ts +0 -19
  705. package/create/editor/transforms/fromMarkdown/index.ts +0 -260
  706. package/create/editor/transforms/fromMarkdown/inline.ts +0 -285
  707. package/create/editor/transforms/fromMarkdown/table.ts +0 -130
  708. package/create/editor/transforms/markdownToSlate.ts +0 -24
  709. package/create/editor/transforms/slateToRenderMarkdown.ts +0 -218
  710. package/create/editor/transforms/slateToSimplifiedMarkdown.ts +0 -224
  711. package/create/editor/transforms/slateToText.ts +0 -33
  712. package/create/editor/types.ts +0 -120
  713. package/create/editor/utils/editorFactory.ts +0 -54
  714. package/create/editor/utils/hasPlainCodeBlock.ts +0 -39
  715. package/create/editor/utils/linkCommands.ts +0 -63
  716. package/create/editor/utils/pdfToSlate.ts +0 -706
  717. package/create/editor/utils/slateUtils.ts +0 -233
  718. package/create/editor/utils/txtToSlate.ts +0 -40
  719. package/create/hooks/category.ts +0 -82
  720. package/create/routePaths.ts +0 -5
  721. package/create/space/addSpaceAction.ts +0 -193
  722. package/create/space/category/categoryActions.ts +0 -427
  723. package/create/space/changeSpaceAction.ts +0 -36
  724. package/create/space/constants.ts +0 -8
  725. package/create/space/content/addContentAction.ts +0 -116
  726. package/create/space/content/contentThunks.ts +0 -90
  727. package/create/space/content/deleteContentFromSpaceAction.ts +0 -187
  728. package/create/space/content/deleteMultipleContentAction.ts +0 -112
  729. package/create/space/content/moveContentAction.ts +0 -285
  730. package/create/space/content/updateContentCategoryAction.ts +0 -154
  731. package/create/space/content/updateContentTitleAction.ts +0 -106
  732. package/create/space/content/uploadAndAddFileToSpaceAction.ts +0 -98
  733. package/create/space/contentKeyUtils.ts +0 -117
  734. package/create/space/contentLabels.ts +0 -56
  735. package/create/space/contentTypeMeta.ts +0 -169
  736. package/create/space/deleteSpaceAction.ts +0 -276
  737. package/create/space/fetchSpaceAction.ts +0 -70
  738. package/create/space/fetchSpaceSidebarStateAction.ts +0 -26
  739. package/create/space/hooks/agentFetchRetry.ts +0 -19
  740. package/create/space/hooks/useAgentFetcher.ts +0 -149
  741. package/create/space/hooks/useGroupedContent.ts +0 -118
  742. package/create/space/hooks/useSpaceEvents.ts +0 -43
  743. package/create/space/initialSpace.ts +0 -78
  744. package/create/space/loadDefaultSpaceAction.ts +0 -57
  745. package/create/space/member/addMemberAction.ts +0 -79
  746. package/create/space/member/fetchUserSpaceMembershipsAction.ts +0 -386
  747. package/create/space/member/memberThunks.ts +0 -47
  748. package/create/space/member/removeMemberAction.ts +0 -67
  749. package/create/space/publicCatalogSpace.ts +0 -39
  750. package/create/space/resolvePreferredSpaceId.ts +0 -113
  751. package/create/space/sidebarVisibleTypes.ts +0 -214
  752. package/create/space/space.locale.ts +0 -981
  753. package/create/space/spaceAccess.ts +0 -182
  754. package/create/space/spaceCollapsedState.ts +0 -54
  755. package/create/space/spaceSlice.ts +0 -328
  756. package/create/space/spaceThunks.ts +0 -410
  757. package/create/space/types.ts +0 -27
  758. package/create/space/updateSpaceAction.ts +0 -107
  759. package/create/space/utils/permissions.ts +0 -47
  760. package/create/space/validateSpacePermission.ts +0 -38
  761. package/create/version/appVersionReplication.ts +0 -160
  762. package/create/version/versionApi.ts +0 -142
  763. package/database/actions/agentReadResolution.ts +0 -33
  764. package/database/actions/cacheMergedUserData.ts +0 -64
  765. package/database/actions/common.ts +0 -279
  766. package/database/actions/deleteFile.ts +0 -40
  767. package/database/actions/fetchUserData.ts +0 -16
  768. package/database/actions/fileContent.ts +0 -125
  769. package/database/actions/patch.ts +0 -155
  770. package/database/actions/read.ts +0 -376
  771. package/database/actions/readAndWait.ts +0 -192
  772. package/database/actions/readOutcome.ts +0 -45
  773. package/database/actions/readRequestManager.ts +0 -120
  774. package/database/actions/readResolution.ts +0 -102
  775. package/database/actions/remove.ts +0 -94
  776. package/database/actions/replication.ts +0 -366
  777. package/database/actions/upload.ts +0 -174
  778. package/database/actions/upsert.ts +0 -56
  779. package/database/actions/write.ts +0 -140
  780. package/database/client/db.native.ts +0 -73
  781. package/database/client/db.ts +0 -51
  782. package/database/client/fetchUserData.ts +0 -61
  783. package/database/client/handleError.ts +0 -19
  784. package/database/client/queryRequest.ts +0 -21
  785. package/database/dbActionThunks.ts +0 -1
  786. package/database/dbSlice.ts +0 -149
  787. package/database/email.ts +0 -42
  788. package/database/fileRing.ts +0 -51
  789. package/database/fileSharding.ts +0 -70
  790. package/database/fileStorage.native.ts +0 -92
  791. package/database/fileStorage.ts +0 -232
  792. package/database/fileUrl.ts +0 -34
  793. package/database/hooks/useUserData.ts +0 -495
  794. package/database/index.ts +0 -1
  795. package/database/queryPrefixes.ts +0 -14
  796. package/database/requests.ts +0 -443
  797. package/database/runtimeServerContext.ts +0 -35
  798. package/database/server/MemoryDB.ts +0 -76
  799. package/database/server/actorAccess.ts +0 -76
  800. package/database/server/agentDelegation.ts +0 -124
  801. package/database/server/coreDataOwnership.ts +0 -13
  802. package/database/server/coreDataProxy.ts +0 -93
  803. package/database/server/cybotReadonly.ts +0 -18
  804. package/database/server/dataHandlers.ts +0 -109
  805. package/database/server/delete.ts +0 -499
  806. package/database/server/emailRepository.ts +0 -1480
  807. package/database/server/fileRead.ts +0 -337
  808. package/database/server/fileService.ts +0 -436
  809. package/database/server/handleTransaction.ts +0 -86
  810. package/database/server/patch.ts +0 -290
  811. package/database/server/query.ts +0 -177
  812. package/database/server/read.ts +0 -311
  813. package/database/server/recordIdentity.ts +0 -100
  814. package/database/server/resourceAccess.ts +0 -211
  815. package/database/server/routes.ts +0 -110
  816. package/database/server/spaceMemberAuthority.ts +0 -67
  817. package/database/server/upload.ts +0 -159
  818. package/database/server/write.ts +0 -490
  819. package/database/server/writeAuthority.ts +0 -133
  820. package/database/sqliteDb.ts +0 -46
  821. package/database/table/deleteTable.ts +0 -120
  822. package/database/tenantPlacement.ts +0 -57
  823. package/database/userDataLoadDecision.ts +0 -17
  824. package/database/userDataMerge.ts +0 -95
  825. package/database/userPreferenceRegister.ts +0 -108
  826. package/database/utils/dbPath.ts +0 -47
  827. package/database/utils/ulid.native.ts +0 -6
  828. package/integrations/anthropic/anthropicModels.ts +0 -47
  829. package/integrations/anthropic/type.ts +0 -41
  830. package/integrations/deepseek/models.ts +0 -67
  831. package/integrations/google/models.ts +0 -298
  832. package/integrations/openai/chatCompletionStreamMode.ts +0 -10
  833. package/integrations/openai/filterAndCleanMessages.ts +0 -284
  834. package/integrations/openai/flexTier.ts +0 -102
  835. package/integrations/openai/generateOpenAIRequestBody.ts +0 -274
  836. package/integrations/openai/generateResponseRequestBody.ts +0 -77
  837. package/integrations/openai/models.ts +0 -271
  838. package/integrations/openai/providerBodyCompatibility.ts +0 -23
  839. package/integrations/openai/responsesHelpers.ts +0 -297
  840. package/integrations/postmark/index.ts +0 -57
  841. package/integrations/resend/index.ts +0 -353
  842. package/integrations/weather/getWeather.ts +0 -24
  843. package/integrations/weather/index.ts +0 -6
  844. package/integrations/weather/routes.ts +0 -31
  845. package/integrations/weather/weatherApi.ts +0 -27
  846. package/integrations/weather/weatherConstants.ts +0 -2
  847. package/integrations/weather/weatherI18n.ts +0 -50
  848. package/integrations/weather/weatherService.ts +0 -50
  849. package/integrations/weather/weatherTypes.ts +0 -140
  850. package/integrations/weather/weatherUtils.ts +0 -46
  851. package/integrations/x-reader/backends/localBrowser.ts +0 -215
  852. package/integrations/x-reader/backends/publicFallback.ts +0 -31
  853. package/integrations/x-reader/backends/rawCdp.ts +0 -218
  854. package/integrations/x-reader/bridge/chromeBridgeManager.ts +0 -235
  855. package/integrations/x-reader/bridge/readXPostWithBridge.ts +0 -73
  856. package/integrations/x-reader/fixtureParser.ts +0 -101
  857. package/integrations/x-reader/index.ts +0 -9
  858. package/integrations/x-reader/redaction.ts +0 -27
  859. package/integrations/x-reader/types.ts +0 -109
  860. package/integrations/x-reader/visibleTextParser.ts +0 -108
  861. package/integrations/xai/models.ts +0 -13
  862. package/render/canvas/canvasEditContext.ts +0 -127
  863. package/render/canvas/canvasRuntime.ts +0 -57
  864. package/render/canvas/canvasSnapshotParser.ts +0 -76
  865. package/render/canvas/canvasTree.ts +0 -308
  866. package/render/canvas/types.ts +0 -46
  867. package/render/layout/deleteBehavior.ts +0 -52
  868. package/render/layout/mainLayoutSidebar.ts +0 -17
  869. package/render/layout/mainLayoutViewMode.ts +0 -56
  870. package/render/layout/topbarUtils.ts +0 -87
  871. package/render/layout/useDevReloadPending.ts +0 -30
  872. package/render/page/createPageAction.ts +0 -183
  873. package/render/page/docSlice.ts +0 -468
  874. package/render/page/server/createPage.ts +0 -174
  875. package/render/page/server/handleCreatePage.ts +0 -91
  876. package/render/page/server/index.ts +0 -4
  877. package/render/page/types.ts +0 -17
  878. package/render/page/useKeyboardSave.ts +0 -48
  879. package/render/styles/zIndex.ts +0 -12
  880. package/render/surf/WeatherIconStyles.ts +0 -17
  881. package/render/surf/color.ts +0 -9
  882. package/render/surf/config.ts +0 -46
  883. package/render/surf/screens/style.ts +0 -1
  884. package/render/surf/styles/ToggleButtonStyles.ts +0 -8
  885. package/render/surf/utils/groupedWeatherData.ts +0 -32
  886. package/render/surf/weatherUtils.ts +0 -50
  887. package/render/table/createTableAction.ts +0 -270
  888. package/render/table/deleteTableAction.ts +0 -129
  889. package/render/table/fetchAndCacheTableRows.ts +0 -174
  890. package/render/table/tableSlice.ts +0 -1106
  891. package/render/table/tableView.ts +0 -289
  892. package/render/table/toolValueUtils.ts +0 -363
  893. package/render/table/types.ts +0 -252
  894. package/render/table/useCreateTable.ts +0 -72
  895. package/render/table/useTable.ts +0 -61
  896. package/render/table/utils/tableSerialization.ts +0 -50
  897. package/render/web/elements/artifactPreviewCode.ts +0 -43
  898. package/render/web/elements/artifactRuntimePreload.ts +0 -52
  899. package/render/web/elements/codeBlockAutoPreview.ts +0 -10
  900. package/render/web/elements/mermaidPreview.ts +0 -21
  901. package/render/web/ui/useInlineEdit.ts +0 -135
  902. package/server/agentEmailRegistrationRoutes.ts +0 -29
  903. package/server/agentRunRouteContract.ts +0 -9
  904. package/server/agentRunRoutes.ts +0 -10
  905. package/server/api/methods.ts +0 -333
  906. package/server/api/tableHandlers.ts +0 -55
  907. package/server/api/types.ts +0 -27
  908. package/server/apiContract.ts +0 -88
  909. package/server/apiRouteAdapter.ts +0 -218
  910. package/server/appBundler.ts +0 -90
  911. package/server/appRoutes.ts +0 -92
  912. package/server/artifactIconsRoute.ts +0 -89
  913. package/server/artifactRuntimeRoute.ts +0 -136
  914. package/server/authenticateToken.ts +0 -73
  915. package/server/billingLedgerRoutes.ts +0 -48
  916. package/server/cliChatRoutes.ts +0 -5
  917. package/server/cloudflareRoutes.ts +0 -35
  918. package/server/coreHeaders.ts +0 -29
  919. package/server/coreReadiness.ts +0 -39
  920. package/server/coreRoutes.ts +0 -65
  921. package/server/coreRuntime.ts +0 -93
  922. package/server/createResponse.ts +0 -68
  923. package/server/cryptoPaymentRoutes.ts +0 -8
  924. package/server/databaseRoutes.ts +0 -225
  925. package/server/desktopRuntimeRoutes.ts +0 -120
  926. package/server/devBuildInfo.ts +0 -51
  927. package/server/devReload.ts +0 -161
  928. package/server/devToolPathPolicy.ts +0 -59
  929. package/server/devToolRoutes.ts +0 -274
  930. package/server/email/cloudflareEmailProvider.ts +0 -119
  931. package/server/email/cloudflareInboundBridge.ts +0 -121
  932. package/server/email/cloudflareInboundWorker.ts +0 -28
  933. package/server/email/provider.ts +0 -149
  934. package/server/email/providerRegistry.ts +0 -22
  935. package/server/emailInboundRoutes.ts +0 -17
  936. package/server/entry.ts +0 -211
  937. package/server/handleRPCRequest.ts +0 -117
  938. package/server/handlers/activityStatsHandler.ts +0 -74
  939. package/server/handlers/agentEmailRegistrationE2EHandler.ts +0 -406
  940. package/server/handlers/agentEmailRegistrationE2ERoutes.ts +0 -6
  941. package/server/handlers/agentRun/agentLookup.ts +0 -77
  942. package/server/handlers/agentRun/autonomousRuntime.ts +0 -355
  943. package/server/handlers/agentRun/backgroundRunDialog.ts +0 -31
  944. package/server/handlers/agentRun/builtinAgents.ts +0 -347
  945. package/server/handlers/agentRun/continueDialogContext.ts +0 -90
  946. package/server/handlers/agentRun/debugContext.ts +0 -58
  947. package/server/handlers/agentRun/dialogLookup.ts +0 -67
  948. package/server/handlers/agentRun/foregroundStreamDialog.ts +0 -13
  949. package/server/handlers/agentRun/index.ts +0 -1630
  950. package/server/handlers/agentRun/inheritedDialogPrompt.ts +0 -111
  951. package/server/handlers/agentRun/localRuntimeBootstrap.ts +0 -69
  952. package/server/handlers/agentRun/loop.ts +0 -2210
  953. package/server/handlers/agentRun/machineConnector.ts +0 -235
  954. package/server/handlers/agentRun/machineRunAudit.ts +0 -49
  955. package/server/handlers/agentRun/modelUsageToolHandlers.ts +0 -368
  956. package/server/handlers/agentRun/referenceRuntime.ts +0 -50
  957. package/server/handlers/agentRun/requestContext.ts +0 -86
  958. package/server/handlers/agentRun/response.ts +0 -27
  959. package/server/handlers/agentRun/runBilling.ts +0 -108
  960. package/server/handlers/agentRun/runDialogPreparation.ts +0 -55
  961. package/server/handlers/agentRun/runtimeBinding.ts +0 -61
  962. package/server/handlers/agentRun/runtimeContext.ts +0 -143
  963. package/server/handlers/agentRun/runtimeExecutionContext.ts +0 -153
  964. package/server/handlers/agentRun/runtimePreparation.ts +0 -193
  965. package/server/handlers/agentRun/runtimeRouting.ts +0 -88
  966. package/server/handlers/agentRun/runtimeSystemMessages.ts +0 -165
  967. package/server/handlers/agentRun/saveDialog.ts +0 -1373
  968. package/server/handlers/agentRun/syncRunDialog.ts +0 -90
  969. package/server/handlers/agentRun/tableActivityProjection.ts +0 -132
  970. package/server/handlers/agentRun/taskRunControlPrompt.ts +0 -122
  971. package/server/handlers/agentRun/taskRunToolHandler.ts +0 -579
  972. package/server/handlers/agentRun/toolExecutor.ts +0 -2909
  973. package/server/handlers/agentRun/toolPolicyGuards.ts +0 -295
  974. package/server/handlers/agentRun/types.ts +0 -94
  975. package/server/handlers/agentRun/workspaceLease.ts +0 -58
  976. package/server/handlers/alphaTestRouteGuard.ts +0 -30
  977. package/server/handlers/apifyActorHandler.ts +0 -170
  978. package/server/handlers/appDeployFlow.ts +0 -876
  979. package/server/handlers/appDeployHandler.ts +0 -4
  980. package/server/handlers/appDeployMutationHandlers.ts +0 -133
  981. package/server/handlers/appDeployReadHandlers.ts +0 -321
  982. package/server/handlers/appDeployShared.ts +0 -230
  983. package/server/handlers/appDeployStatusStore.ts +0 -178
  984. package/server/handlers/appDomainHandler.ts +0 -476
  985. package/server/handlers/appLegacyInfraCleanup.ts +0 -7
  986. package/server/handlers/appSandboxHandler.ts +0 -1055
  987. package/server/handlers/appSourceReadiness.ts +0 -75
  988. package/server/handlers/appSpaceAccess.ts +0 -179
  989. package/server/handlers/applyEditHandler.ts +0 -544
  990. package/server/handlers/applyLineEditsHandler.ts +0 -1058
  991. package/server/handlers/billingLedgerAuditHandler.ts +0 -82
  992. package/server/handlers/billingLedgerWitnessHandler.ts +0 -161
  993. package/server/handlers/billingUsageReportHandler.ts +0 -90
  994. package/server/handlers/browserToolHandler.ts +0 -450
  995. package/server/handlers/cfTextToSpeechHandler.ts +0 -137
  996. package/server/handlers/cfWhisperHandler.ts +0 -206
  997. package/server/handlers/chatBillingSse.ts +0 -79
  998. package/server/handlers/chatHandler.ts +0 -797
  999. package/server/handlers/chatProxyRouting.ts +0 -404
  1000. package/server/handlers/chatUpstreamRetry.ts +0 -162
  1001. package/server/handlers/checkEnvHandler.ts +0 -250
  1002. package/server/handlers/cliChatHandler.ts +0 -266
  1003. package/server/handlers/cloudflareBrowserHandler.ts +0 -275
  1004. package/server/handlers/cloudflareCrawlHandler.ts +0 -260
  1005. package/server/handlers/codeSearchHandler.ts +0 -484
  1006. package/server/handlers/connector/connectorConnectionRegistry.ts +0 -192
  1007. package/server/handlers/connector/connectorWebSocket.ts +0 -117
  1008. package/server/handlers/creatorEarningsReportHandler.ts +0 -97
  1009. package/server/handlers/creatorSettlementReportHandler.ts +0 -98
  1010. package/server/handlers/deepseekOcrHandler.ts +0 -114
  1011. package/server/handlers/deleteMemoryHandler.ts +0 -115
  1012. package/server/handlers/desktopAgentRuntimeAdapter.ts +0 -307
  1013. package/server/handlers/desktopAgentRuntimeHostFacts.ts +0 -40
  1014. package/server/handlers/desktopAgentRuntimeStatusHandler.ts +0 -54
  1015. package/server/handlers/desktopAgentRuntimeTurnHandler.ts +0 -165
  1016. package/server/handlers/desktopAgentRuntimeTurnService.ts +0 -352
  1017. package/server/handlers/desktopClipboardHandler.ts +0 -104
  1018. package/server/handlers/desktopFiles/handler.ts +0 -159
  1019. package/server/handlers/desktopFiles/operations.ts +0 -202
  1020. package/server/handlers/desktopFiles/sandbox.ts +0 -62
  1021. package/server/handlers/desktopFiles/store.ts +0 -81
  1022. package/server/handlers/desktopLlamaRuntimeHandler.ts +0 -360
  1023. package/server/handlers/desktopLocalConnectorHandler.ts +0 -101
  1024. package/server/handlers/desktopUpdaterHandler.ts +0 -132
  1025. package/server/handlers/dialogEvents.ts +0 -10
  1026. package/server/handlers/emailInboundHandler.ts +0 -65
  1027. package/server/handlers/eventBus.ts +0 -160
  1028. package/server/handlers/exaSearchHandler.ts +0 -73
  1029. package/server/handlers/execShellHandler.ts +0 -661
  1030. package/server/handlers/favoriteHandlers.ts +0 -417
  1031. package/server/handlers/fetchWebpageHandler.ts +0 -117
  1032. package/server/handlers/fileOutlineHandler.ts +0 -107
  1033. package/server/handlers/geminiImagePreviewHandler.ts +0 -612
  1034. package/server/handlers/getDialogBillingHandler.ts +0 -151
  1035. package/server/handlers/getTransactionsHandler.ts +0 -107
  1036. package/server/handlers/googleNativeChat.ts +0 -572
  1037. package/server/handlers/listFilesHandler.ts +0 -139
  1038. package/server/handlers/machines/machineAuth.ts +0 -149
  1039. package/server/handlers/machines/machineBinding.ts +0 -59
  1040. package/server/handlers/machines/machineHandlers.ts +0 -279
  1041. package/server/handlers/machines/machineInstallAssets.ts +0 -563
  1042. package/server/handlers/machines/machineRegistry.ts +0 -89
  1043. package/server/handlers/notificationEmitter.ts +0 -189
  1044. package/server/handlers/notificationsHandler.ts +0 -91
  1045. package/server/handlers/olmOcrHandler.ts +0 -115
  1046. package/server/handlers/openaiImageHandler.ts +0 -500
  1047. package/server/handlers/providerHealthHandler.ts +0 -36
  1048. package/server/handlers/publicHandler.ts +0 -209
  1049. package/server/handlers/readFileHandler.ts +0 -300
  1050. package/server/handlers/readXPostHandler.ts +0 -180
  1051. package/server/handlers/rememberMemoryHandler.ts +0 -69
  1052. package/server/handlers/remotionRenderHandler.ts +0 -236
  1053. package/server/handlers/renderMarkdownHandler.ts +0 -66
  1054. package/server/handlers/revenueShareReportHandler.ts +0 -96
  1055. package/server/handlers/searchRepoHandler.ts +0 -159
  1056. package/server/handlers/tableAccess.ts +0 -34
  1057. package/server/handlers/tableToolHandlers.ts +0 -741
  1058. package/server/handlers/typecheckWorker.ts +0 -54
  1059. package/server/handlers/userEvents.ts +0 -6
  1060. package/server/handlers/userSecretsHandler.ts +0 -210
  1061. package/server/handlers/versionHandler.ts +0 -281
  1062. package/server/handlers/versionStore.ts +0 -176
  1063. package/server/handlers/wereadGatewayHandler.ts +0 -48
  1064. package/server/handlers/whisperHandler.ts +0 -158
  1065. package/server/handlers/writeFileHandler.ts +0 -168
  1066. package/server/html/desktopReleaseManifest.server.ts +0 -17
  1067. package/server/html/generateErrorResponse.ts +0 -22
  1068. package/server/html/serializeState.ts +0 -9
  1069. package/server/html/ssrPreload.ts +0 -247
  1070. package/server/html/template.ts +0 -275
  1071. package/server/httpCompression.ts +0 -102
  1072. package/server/index.ts +0 -0
  1073. package/server/liveReloadScript.ts +0 -105
  1074. package/server/luIconNames.ts +0 -14
  1075. package/server/machineRoutes.ts +0 -44
  1076. package/server/mediaRoutes.ts +0 -25
  1077. package/server/memoryRoutes.ts +0 -14
  1078. package/server/normalizedStatusRoutes.ts +0 -23
  1079. package/server/payments/crypto/cryptoUsdcBaseAddressPool.ts +0 -49
  1080. package/server/payments/crypto/cryptoUsdcBaseConfig.ts +0 -120
  1081. package/server/payments/crypto/cryptoUsdcBasePaymentProvider.ts +0 -134
  1082. package/server/payments/crypto/cryptoUsdcBaseScanner.ts +0 -267
  1083. package/server/payments/crypto/cryptoUsdcBaseWatcher.ts +0 -40
  1084. package/server/payments/crypto/cryptoUsdtTronAddressPool.ts +0 -49
  1085. package/server/payments/crypto/cryptoUsdtTronConfig.ts +0 -120
  1086. package/server/payments/crypto/cryptoUsdtTronPaymentProvider.ts +0 -132
  1087. package/server/payments/crypto/cryptoUsdtTronScanner.ts +0 -313
  1088. package/server/payments/crypto/cryptoUsdtTronWatcher.ts +0 -40
  1089. package/server/payments/paymentProvider.ts +0 -6
  1090. package/server/payments/paymentRoutes.ts +0 -27
  1091. package/server/payments/rechargeCredits.ts +0 -69
  1092. package/server/payments/waffo/waffoPaymentProvider.ts +0 -341
  1093. package/server/preview/previewCapability.ts +0 -90
  1094. package/server/preview/previewConfig.ts +0 -54
  1095. package/server/preview/previewGateway.ts +0 -71
  1096. package/server/preview/previewRealtime.ts +0 -33
  1097. package/server/providerHealthProbe.ts +0 -198
  1098. package/server/providerHealthRoutes.ts +0 -19
  1099. package/server/publicPaths.ts +0 -12
  1100. package/server/publicRequestHandler.ts +0 -15
  1101. package/server/reactAppBuilder.ts +0 -416
  1102. package/server/realtimeRoutes.ts +0 -69
  1103. package/server/renderStream.ts +0 -20
  1104. package/server/routeFactory.ts +0 -45
  1105. package/server/routes.ts +0 -125
  1106. package/server/safeTempFile.ts +0 -48
  1107. package/server/scheduler/scheduledTaskRuntime.ts +0 -228
  1108. package/server/scheduler/schedulerService.ts +0 -290
  1109. package/server/serverDrain.ts +0 -129
  1110. package/server/services/browserSessionManager.ts +0 -354
  1111. package/server/shareRoutes.ts +0 -86
  1112. package/server/sqliteRoutes.ts +0 -141
  1113. package/server/taskRunBridgeRoutes.ts +0 -95
  1114. package/server/tasks.ts +0 -113
  1115. package/server/waffoPaymentRoutes.ts +0 -5
  1116. package/server/webUtilityRoutes.ts +0 -50
  1117. package/server/workerValidator.ts +0 -224
  1118. package/share/action.ts +0 -225
  1119. package/share/clientTableReplication.ts +0 -160
  1120. package/share/link.ts +0 -40
  1121. package/share/loadOwnerShares.ts +0 -154
  1122. package/share/paidAccess.ts +0 -32
  1123. package/share/publicSharePolicy.ts +0 -27
  1124. package/share/server/fetchCommunityShares.ts +0 -45
  1125. package/share/server/helpers.ts +0 -202
  1126. package/share/server/importShare.ts +0 -148
  1127. package/share/server/listCommunityShares.ts +0 -167
  1128. package/share/server/purchaseDoc.ts +0 -224
  1129. package/share/server/readCommunityShareCover.ts +0 -73
  1130. package/share/server/readSharedTable.ts +0 -139
  1131. package/share/server/tableReplication.ts +0 -351
  1132. package/share/shareSlice.ts +0 -53
  1133. package/share/tableShareState.ts +0 -74
@@ -1,1549 +0,0 @@
1
- // packages/ai/tools/appTools.ts
2
- // Web ๅบ”็”จ้ƒจ็ฝฒ/็ฎก็†ๅทฅๅ…ท
3
- // ๅฝ“ๅ‰็ปŸไธ€ๅ‘ๅธƒๅˆฐๅนณๅฐๆ‰˜็ฎก่ฟ่กŒๆ—ถ
4
-
5
- import { toolRunUpdated, type ToolRunStep } from "./toolRunSlice";
6
- import { callToolApi, getToolRequestContext } from "./toolApiClient";
7
- import { syncAppRecord } from "../../app/actions/syncAppRecord";
8
- import { deleteDbKey } from "../../app/hooks/deleteDbKey";
9
- import { selectAllMsgs, selectCurrentDialogId } from "../../chat/messages/messageSlice";
10
- import { ToolResultError } from "./toolResultError";
11
- import {
12
- analyzeAppStyleSystem,
13
- buildAppReadSnapshotWarning,
14
- buildAppStyleSystemHint,
15
- classifyAppReadSnapshot,
16
- } from "./appReadSnapshot";
17
- import { evaluateSmallVisualEditGuard } from "./appEditGuard";
18
-
19
- type AppSourceFile = { name: string; code: string };
20
- type AppDeployFramework = "worker" | "react-spa";
21
-
22
- interface AppDeployArgs {
23
- name?: string;
24
- code?: string;
25
- files?: AppSourceFile[];
26
- pages?: AppSourceFile[];
27
- appId?: string;
28
- framework?: AppDeployFramework;
29
- spaceId?: string;
30
- }
31
-
32
- interface AppDeployApiResult {
33
- success: boolean;
34
- url: string;
35
- customUrl?: string;
36
- routeRegistered?: boolean;
37
- previewReady?: boolean;
38
- modifiedOn?: string;
39
- userFriendlyName: string;
40
- appId?: string;
41
- appKey?: string;
42
- appRecord?: Record<string, any> | null;
43
- bundleWarnings?: string[];
44
- deployMode?: "platform";
45
- framework?: AppDeployFramework;
46
- previewCheck?: {
47
- attempted: boolean;
48
- ready: boolean;
49
- status?: number;
50
- attempts: number;
51
- };
52
- }
53
-
54
- interface AppDeployStartResult {
55
- success: boolean;
56
- jobId: string;
57
- eventChannel?: string;
58
- status: "pending" | "running";
59
- summary?: string;
60
- steps?: ToolRunStep[];
61
- }
62
-
63
- interface AppDeployStatusResult {
64
- success: boolean;
65
- jobId: string;
66
- status: "pending" | "running" | "succeeded" | "failed";
67
- summary?: string;
68
- steps?: ToolRunStep[];
69
- result?: AppDeployApiResult;
70
- error?: {
71
- message?: string;
72
- code?: string;
73
- details?: unknown;
74
- };
75
- }
76
-
77
- interface AppPreflightIssue {
78
- code: string;
79
- message: string;
80
- file?: string;
81
- importSpecifier?: string;
82
- symbol?: string;
83
- suggestion?: string;
84
- }
85
-
86
- interface AppPreflightResult {
87
- success: boolean;
88
- ok: boolean;
89
- framework: AppDeployFramework;
90
- summary: string;
91
- issues: AppPreflightIssue[];
92
- warnings: string[];
93
- entryFile?: string;
94
- externalImports?: string[];
95
- }
96
-
97
- interface AppRepairPlanStep {
98
- action: string;
99
- reason: string;
100
- }
101
-
102
- interface AppRepairPlan {
103
- strategy: "targeted-repair";
104
- scope: "existing-files";
105
- mode: "preflight-first";
106
- summary: string;
107
- steps: AppRepairPlanStep[];
108
- issueCodes: string[];
109
- suggestedFiles?: string[];
110
- keepFiles?: string[];
111
- revertFiles?: string[];
112
- preferTokenFiles?: string[];
113
- targetStyleFields?: string[];
114
- targetElements?: string[];
115
- rerun: ["appPreflight", "appDeploy"];
116
- }
117
-
118
- interface AppStoplossPayload {
119
- success: false;
120
- ok: false;
121
- error: true;
122
- code:
123
- | "DEPLOY_TRANSPORT_FAILURE"
124
- | "PREFLIGHT_TRANSPORT_FAILURE";
125
- summary: string;
126
- framework: AppDeployFramework;
127
- stopReason: "invalid-json-response" | "html-response";
128
- retryable: false;
129
- responsePreview?: string;
130
- nextAction: string;
131
- }
132
-
133
- const normalizeOptionalString = (value: unknown): string | undefined => {
134
- if (typeof value !== "string") return undefined;
135
- const trimmed = value.trim();
136
- return trimmed ? trimmed : undefined;
137
- };
138
-
139
- export function decideAppDeploySpaceId(params: {
140
- explicitSpaceId?: string | null;
141
- currentSpaceId?: string | null;
142
- existingAppSpaceId?: string | null;
143
- }): string | undefined {
144
- const existingAppSpaceId = normalizeOptionalString(params.existingAppSpaceId);
145
- if (existingAppSpaceId) {
146
- return undefined;
147
- }
148
- return (
149
- normalizeOptionalString(params.explicitSpaceId) ??
150
- normalizeOptionalString(params.currentSpaceId)
151
- );
152
- }
153
-
154
- export async function resolveAppDeploySpaceId(
155
- args: AppDeployArgs,
156
- thunkApi: any
157
- ): Promise<string | undefined> {
158
- const currentSpaceId = normalizeOptionalString(
159
- thunkApi?.getState?.()?.space?.currentSpaceId
160
- );
161
-
162
- if (!args.appId) {
163
- return decideAppDeploySpaceId({
164
- explicitSpaceId: args.spaceId,
165
- currentSpaceId,
166
- });
167
- }
168
-
169
- try {
170
- const existing = await callToolApi<{
171
- success: boolean;
172
- spaceId?: string | null;
173
- }>(thunkApi, "/api/app/get", { appId: args.appId }, { withAuth: true });
174
-
175
- return decideAppDeploySpaceId({
176
- explicitSpaceId: args.spaceId,
177
- currentSpaceId,
178
- existingAppSpaceId: existing.spaceId,
179
- });
180
- } catch {
181
- return decideAppDeploySpaceId({
182
- explicitSpaceId: args.spaceId,
183
- currentSpaceId,
184
- });
185
- }
186
- }
187
-
188
- const TOOL_STEP_STATUS_RANK: Record<ToolRunStep["status"], number> = {
189
- pending: 0,
190
- running: 1,
191
- succeeded: 2,
192
- failed: 3,
193
- };
194
-
195
- function parseSseChunk(chunk: string): Array<Record<string, unknown>> {
196
- const results: Array<Record<string, unknown>> = [];
197
- for (const line of chunk.split("\n")) {
198
- const trimmed = line.trim();
199
- if (!trimmed.startsWith("data:")) continue;
200
- const json = trimmed.slice(5).trim();
201
- if (!json) continue;
202
- try {
203
- results.push(JSON.parse(json));
204
- } catch {
205
- // ignore malformed lines / heartbeat
206
- }
207
- }
208
- return results;
209
- }
210
-
211
- const APP_DEPLOY_STEP_LABELS: Record<string, string> = {
212
- prepare: "ๆ•ด็†้ƒจ็ฝฒๅ‚ๆ•ฐ",
213
- preflight: "้ข„ๆฃ€ไปฃ็ ",
214
- build: "ๆ‰“ๅŒ…ๅบ”็”จ",
215
- deploy: "ๅ‘ๅธƒ็ซ™็‚น",
216
- verify: "้ชŒ่ฏ่ฎฟ้—ฎ",
217
- };
218
-
219
- function buildDeploySteps(
220
- currentStepId: keyof typeof APP_DEPLOY_STEP_LABELS,
221
- currentStatus: ToolRunStep["status"],
222
- detail?: string
223
- ): ToolRunStep[] {
224
- const ids = Object.keys(APP_DEPLOY_STEP_LABELS) as Array<
225
- keyof typeof APP_DEPLOY_STEP_LABELS
226
- >;
227
- const currentIndex = ids.indexOf(currentStepId);
228
- return ids.map((id, index) => ({
229
- id,
230
- label: APP_DEPLOY_STEP_LABELS[id],
231
- status:
232
- index < currentIndex
233
- ? "succeeded"
234
- : index === currentIndex
235
- ? currentStatus
236
- : "pending",
237
- ...(index === currentIndex && detail ? { detail } : {}),
238
- }));
239
- }
240
-
241
- function updateDeployProgress(
242
- thunkApi: any,
243
- toolRunId: string | undefined,
244
- stepIdOrSteps: keyof typeof APP_DEPLOY_STEP_LABELS | ToolRunStep[],
245
- summary: string,
246
- currentStatus: ToolRunStep["status"] = "running",
247
- detail?: string
248
- ) {
249
- if (!toolRunId) return;
250
- thunkApi.dispatch(
251
- toolRunUpdated({
252
- id: toolRunId,
253
- outputSummary: summary,
254
- steps: Array.isArray(stepIdOrSteps)
255
- ? stepIdOrSteps
256
- : buildDeploySteps(stepIdOrSteps, currentStatus, detail),
257
- })
258
- );
259
- }
260
-
261
- function normalizeAppDeployArgs(args: AppDeployArgs) {
262
- const normalizedFiles = Array.isArray(args.files) && args.files.length > 0
263
- ? args.files
264
- : Array.isArray(args.pages) && args.pages.length > 0
265
- ? args.pages
266
- : undefined;
267
- return {
268
- ...args,
269
- files: normalizedFiles,
270
- };
271
- }
272
-
273
- function isLikelyReactWorkerMisuse(code: string | undefined): boolean {
274
- if (!code) return false;
275
- return /from\s+["']react["']|from\s+["']react-dom|react-icons\/lu|createRoot\s*\(|<\w+[^>]*>/.test(
276
- code
277
- );
278
- }
279
-
280
- function rewriteAppDeployError(errorMessage: string, args: AppDeployArgs): string {
281
- if (errorMessage.includes("React SPA ๆจกๅผๅฟ…้กปๆไพ› files ๅ‚ๆ•ฐ")) {
282
- return 'React SPA ้œ€่ฆไผ  `files`๏ผˆ่‡ณๅฐ‘ `main.tsx` + `App.tsx`๏ผ‰๏ผŒไธ่ƒฝๅชไผ  `code`ใ€‚ๅฆ‚ๆžœไฝ ็Žฐๅœจๆ‹ฟๅˆฐ็š„ๆ˜ฏๅคšๆ–‡ไปถๆบ็ ๏ผŒไนŸๅฏไปฅ็›ดๆŽฅไผ  `pages`๏ผŒ็ณป็ปŸไผš่‡ชๅŠจๅ…ผๅฎนไธบ `files`ใ€‚';
283
- }
284
- if (errorMessage.includes("้œ€่ฆๆไพ› code ๆˆ– files ๅ‚ๆ•ฐ")) {
285
- return "็ผบๅฐ‘ๅฏ้ƒจ็ฝฒๆบ็ ใ€‚่ฏทไผ  `code`๏ผˆๅ•ๆ–‡ไปถ Worker๏ผ‰ๆˆ– `files`๏ผˆๅคšๆ–‡ไปถ้กน็›ฎ๏ผ‰๏ผ›ๅฆ‚ๆžœไฝ ๆ‰‹ไธŠๅญ—ๆฎตๅๆ˜ฏ `pages`๏ผŒ็ŽฐๅœจไนŸๅฏไปฅ็›ดๆŽฅไผ ใ€‚";
286
- }
287
- if (
288
- errorMessage.includes("Bundle failed") &&
289
- args.framework !== "react-spa" &&
290
- isLikelyReactWorkerMisuse(args.code)
291
- ) {
292
- return 'ๆฃ€ๆต‹ๅˆฐไฝ ๆŠŠ React ็ป„ไปถไปฃ็ ๅฝ“ๆˆๅ•ๆ–‡ไปถ Worker ๅŽป้ƒจ็ฝฒไบ†ใ€‚่ฆๅšไบคไบ’็ฝ‘้กต๏ผŒ่ฏทๆ”น็”จ `framework: "react-spa"` ๅนถไผ  `files`๏ผˆ้€šๅธธๆ˜ฏ `main.tsx` + `App.tsx`๏ผ‰๏ผ›ๅฆ‚ๆžœไฝ ๅชๆƒณ่ฟ”ๅ›ž้™ๆ€ HTML๏ผŒ่ฏทๅŽปๆމ `react` / `react-dom` / `react-icons` importใ€‚';
293
- }
294
- return errorMessage;
295
- }
296
-
297
- function messageContentToText(content: unknown): string {
298
- if (typeof content === "string") return content;
299
- if (Array.isArray(content)) {
300
- return content
301
- .map((part) =>
302
- part && typeof part === "object" && "text" in part
303
- ? String((part as { text?: unknown }).text ?? "")
304
- : ""
305
- )
306
- .join("\n");
307
- }
308
- return "";
309
- }
310
-
311
- function getLatestUserInputFromThunk(thunkApi: any): string | undefined {
312
- try {
313
- const state = thunkApi?.getState?.();
314
- if (!state) return undefined;
315
- const dialogId = selectCurrentDialogId(state);
316
- const messages = selectAllMsgs(state, dialogId);
317
- for (let i = messages.length - 1; i >= 0; i -= 1) {
318
- const message = messages[i];
319
- if (message?.role !== "user") continue;
320
- const text = messageContentToText(message.content).trim();
321
- if (text) return text;
322
- }
323
- } catch {
324
- return undefined;
325
- }
326
- return undefined;
327
- }
328
-
329
- function formatPreflightIssues(issues: AppPreflightIssue[] | undefined): string {
330
- if (!Array.isArray(issues) || issues.length === 0) return "";
331
- return issues
332
- .slice(0, 6)
333
- .map((issue) => {
334
- const parts = [`- ${issue.message}`];
335
- if (issue.suggestion) parts.push(`ๅปบ่ฎฎๆ”นไธบ๏ผš${issue.suggestion}`);
336
- return parts.join("๏ผ›");
337
- })
338
- .join("\n");
339
- }
340
-
341
- function inferRepairSuggestedFiles(issues: AppPreflightIssue[] | undefined): string[] {
342
- const files = new Set<string>();
343
- for (const issue of issues ?? []) {
344
- if (issue.file) files.add(issue.file);
345
- if (issue.code === "missing-entry-file") {
346
- files.add("main.tsx");
347
- files.add("App.tsx");
348
- }
349
- }
350
- return [...files];
351
- }
352
-
353
- function buildRepairSteps(
354
- issues: AppPreflightIssue[] | undefined,
355
- framework: AppDeployFramework
356
- ): AppRepairPlanStep[] {
357
- const steps: AppRepairPlanStep[] = [];
358
- const seen = new Set<string>();
359
-
360
- const push = (action: string, reason: string) => {
361
- const key = `${action}::${reason}`;
362
- if (seen.has(key)) return;
363
- seen.add(key);
364
- steps.push({ action, reason });
365
- };
366
-
367
- for (const issue of issues ?? []) {
368
- switch (issue.code) {
369
- case "missing-files":
370
- push(
371
- framework === "react-spa"
372
- ? "่กฅ้ฝ React SPA ็š„ files ๆ•ฐ็ป„๏ผŒไธ่ฆๅชไผ  code"
373
- : "่กฅ้ฝๅฏ้ƒจ็ฝฒๆบ็ ๏ผŒ็กฎไฟ่‡ณๅฐ‘ไผ  code ๆˆ– files",
374
- issue.message
375
- );
376
- break;
377
- case "missing-entry-file":
378
- push("ๆ–ฐๅขžๅนถไฟ็•™็จณๅฎšๅ…ฅๅฃๆ–‡ไปถ main.tsx ไธŽ App.tsx", issue.message);
379
- break;
380
- case "invalid-file":
381
- case "invalid-file-path":
382
- push("ไฟฎๆญฃ้žๆณ•ๆ–‡ไปถๅๆˆ–็ฉบๆ–‡ไปถๅ†…ๅฎน๏ผŒๅชๆ”นๅ‡บ้—ฎ้ข˜็š„ๆ–‡ไปถ", issue.message);
383
- break;
384
- case "css-import-disallowed":
385
- push("็งป้™ค CSS import๏ผŒๆ”นๆˆๅ†…่”ๆ ทๅผใ€style ๅฏน่ฑกๆˆ–็ป„ไปถๅ†… style ๆ ‡็ญพ", issue.message);
386
- break;
387
- case "unsupported-import":
388
- push(
389
- issue.importSpecifier
390
- ? `็งป้™คๆˆ–ๆ›ฟๆขๆœชๆ”ฏๆŒไพ่ต– ${issue.importSpecifier}๏ผŒๅชไฟ็•™ๅนณๅฐ็™ฝๅๅ•ไพ่ต–`
391
- : "็งป้™คๆˆ–ๆ›ฟๆขๆœชๆ”ฏๆŒไพ่ต–๏ผŒๅชไฟ็•™ๅนณๅฐ็™ฝๅๅ•ไพ่ต–",
392
- issue.message
393
- );
394
- break;
395
- case "invalid-icon-import":
396
- push(
397
- issue.suggestion
398
- ? `ๆŠŠๆ— ๆ•ˆๅ›พๆ ‡ๆ›ฟๆขๆˆ ${issue.suggestion}`
399
- : "ๆŠŠๆ— ๆ•ˆๅ›พๆ ‡ๆ›ฟๆขๆˆ react-icons/lu ไธญ็œŸๅฎžๅญ˜ๅœจ็š„ๅ›พๆ ‡ๅ",
400
- issue.message
401
- );
402
- break;
403
- default:
404
- push("ๆ นๆฎ้ข„ๆฃ€้—ฎ้ข˜ๅšๅฑ€้ƒจไฟฎๅค๏ผŒไธ่ฆๆ•ด้กต้‡ๅ†™", issue.message);
405
- }
406
- }
407
-
408
- push("ไฟฎๅฎŒๅŽๅ…ˆ้‡ๆ–ฐ่ฐƒ็”จ appPreflight", "็กฎ่ฎคๅฝ“ๅ‰ issues ๅทฒๆถˆ้™ค");
409
- push("ๅชๆœ‰ preflight ้€š่ฟ‡ๅŽๅ†่ฐƒ็”จ appDeploy", "้ฟๅ…้‡ๅค่ฟ›ๅ…ฅๅคฑ่ดฅ้ƒจ็ฝฒ");
410
- return steps;
411
- }
412
-
413
- function buildAppRepairPlan(args: {
414
- summary: string;
415
- framework: AppDeployFramework;
416
- issues?: AppPreflightIssue[];
417
- }): AppRepairPlan {
418
- return {
419
- strategy: "targeted-repair",
420
- scope: "existing-files",
421
- mode: "preflight-first",
422
- summary: args.summary,
423
- steps: buildRepairSteps(args.issues, args.framework),
424
- issueCodes: [...new Set((args.issues ?? []).map((issue) => issue.code))],
425
- suggestedFiles: inferRepairSuggestedFiles(args.issues),
426
- rerun: ["appPreflight", "appDeploy"],
427
- };
428
- }
429
-
430
- function buildAppRepairPayload(args: {
431
- summary: string;
432
- framework: AppDeployFramework;
433
- issues?: AppPreflightIssue[];
434
- warnings?: string[];
435
- entryFile?: string;
436
- externalImports?: string[];
437
- code?: string;
438
- }): {
439
- success: false;
440
- ok: false;
441
- error: true;
442
- code: "PREFLIGHT_FAILED" | "DEPLOY_FAILED";
443
- summary: string;
444
- framework: AppDeployFramework;
445
- issues: AppPreflightIssue[];
446
- warnings?: string[];
447
- entryFile?: string;
448
- externalImports?: string[];
449
- repairPlan: AppRepairPlan;
450
- nextAction: string;
451
- } {
452
- const issues = args.issues ?? [];
453
- return {
454
- success: false,
455
- ok: false,
456
- error: true,
457
- code: issues.length > 0 ? "PREFLIGHT_FAILED" : "DEPLOY_FAILED",
458
- summary: args.summary,
459
- framework: args.framework,
460
- issues,
461
- ...(args.warnings?.length ? { warnings: args.warnings } : {}),
462
- ...(args.entryFile ? { entryFile: args.entryFile } : {}),
463
- ...(args.externalImports?.length ? { externalImports: args.externalImports } : {}),
464
- repairPlan: buildAppRepairPlan({
465
- summary: args.summary,
466
- framework: args.framework,
467
- issues,
468
- }),
469
- nextAction:
470
- "ๅชไฟฎๅคๅฝ“ๅ‰ issues ๅ‘ฝไธญ็š„ๆ–‡ไปถๅ’Œไพ่ต–๏ผŒ็„ถๅŽ้‡ๆ–ฐ่ฐƒ็”จ appPreflight๏ผ›ๅชๆœ‰้€š่ฟ‡ๅŽๅ† appDeployใ€‚",
471
- };
472
- }
473
-
474
- function formatRepairPlan(plan: AppRepairPlan | undefined): string {
475
- if (!plan) return "";
476
- return [
477
- "ไฟฎๅคๅปบ่ฎฎ๏ผš",
478
- ...plan.steps.slice(0, 6).map((step, index) => `${index + 1}. ${step.action}๏ผˆ${step.reason}๏ผ‰`),
479
- ...(plan.keepFiles?.length ? [`- ไฟ็•™ๆ–‡ไปถ๏ผš${plan.keepFiles.join(", ")}`] : []),
480
- ...(plan.revertFiles?.length ? [`- ๅ›ž้€€ๆ–‡ไปถ๏ผš${plan.revertFiles.join(", ")}`] : []),
481
- ...(plan.preferTokenFiles?.length
482
- ? [`- ไผ˜ๅ…ˆๆŠŠ่ง†่ง‰ไฟฎๆ”นๆ”ถๆ•›ๅˆฐ่ฟ™ไบ› token ๆ–‡ไปถ๏ผš${plan.preferTokenFiles.join(", ")}`]
483
- : []),
484
- ...(plan.targetStyleFields?.length
485
- ? [`- ไป…็ปง็ปญ่ฐƒๆ•ด่ฟ™ไบ›่ง†่ง‰ๅญ—ๆฎต๏ผš${plan.targetStyleFields.join(", ")}`]
486
- : []),
487
- ...(plan.targetElements?.length
488
- ? [`- ไป…็ปง็ปญ่ฐƒๆ•ด่ฟ™ไบ›ๅ…ƒ็ด ๏ผš${plan.targetElements.join(", ")}`]
489
- : []),
490
- "ไฟฎๅฎŒๅŽ๏ผšๅ…ˆ appPreflight๏ผŒๅ† appDeployใ€‚",
491
- ].join("\n");
492
- }
493
-
494
- function isTransportStoplossError(error: {
495
- code?: string;
496
- message?: string;
497
- details?: unknown;
498
- } | null | undefined): boolean {
499
- const code = error?.code ?? "";
500
- if (
501
- code === "HTML_RESPONSE" ||
502
- code === "INVALID_JSON_RESPONSE" ||
503
- code === "HTML_ERROR_RESPONSE" ||
504
- code === "NON_JSON_ERROR_RESPONSE"
505
- ) {
506
- return true;
507
- }
508
- const message = error?.message ?? "";
509
- return message.includes("Unexpected token '<'") || message.includes("<!DOCTYPE");
510
- }
511
-
512
- function buildAppStoplossPayload(args: {
513
- summary: string;
514
- framework: AppDeployFramework;
515
- stage: "deploy" | "preflight";
516
- error?: {
517
- code?: string;
518
- details?: unknown;
519
- message?: string;
520
- } | null;
521
- }): AppStoplossPayload {
522
- const details =
523
- args.error?.details && typeof args.error.details === "object"
524
- ? (args.error.details as { responsePreview?: string })
525
- : null;
526
- const errorCode = args.error?.code ?? "";
527
- const stopReason =
528
- errorCode.includes("HTML") || (args.error?.message ?? "").includes("<!DOCTYPE")
529
- ? "html-response"
530
- : "invalid-json-response";
531
- return {
532
- success: false,
533
- ok: false,
534
- error: true,
535
- code:
536
- args.stage === "preflight"
537
- ? "PREFLIGHT_TRANSPORT_FAILURE"
538
- : "DEPLOY_TRANSPORT_FAILURE",
539
- summary: args.summary,
540
- framework: args.framework,
541
- stopReason,
542
- retryable: false,
543
- ...(details?.responsePreview ? { responsePreview: details.responsePreview } : {}),
544
- nextAction:
545
- "่ฟ™ไธๆ˜ฏไปฃ็ ็บง issues๏ผŒ่€Œๆ˜ฏ้ƒจ็ฝฒ้€š้“่ฟ”ๅ›žไบ†ๅผ‚ๅธธๅ“ๅบ”ใ€‚ๅœๆญข่‡ชๅŠจ deploy / preflight ้‡่ฏ•๏ผŒๅ‘็”จๆˆท่ฏดๆ˜Žๅฝ“ๅ‰ๅนณๅฐๆŽฅๅฃๅผ‚ๅธธ๏ผŒ็ญ‰ๅพ…ๆœๅŠกๆขๅคๅŽๅ†็ปง็ปญใ€‚",
546
- };
547
- }
548
-
549
- function formatStoplossPlan(payload: AppStoplossPayload): string {
550
- return [
551
- payload.summary,
552
- payload.responsePreview ? `ๅ“ๅบ”้ข„่งˆ: ${payload.responsePreview}` : "",
553
- "ๅˆคๆ–ญ: ๅฝ“ๅ‰ๆ˜ฏ้ƒจ็ฝฒ/้ข„ๆฃ€้€š้“ๅผ‚ๅธธ๏ผŒไธๆ˜ฏๅบ”็”จไปฃ็ ้—ฎ้ข˜ใ€‚",
554
- "ไธ‹ไธ€ๆญฅ: ๅœๆญข่‡ชๅŠจ้‡่ฏ•๏ผŒๅ‘Š่ฏ‰็”จๆˆทๅฝ“ๅ‰ๅนณๅฐๆŽฅๅฃ่ฟ”ๅ›žๅผ‚ๅธธ๏ผŒ็จๅŽๅ†่ฏ•ใ€‚",
555
- ]
556
- .filter(Boolean)
557
- .join("\n");
558
- }
559
-
560
- const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
561
-
562
- async function pollAppDeployJob(
563
- thunkApi: any,
564
- args: AppDeployArgs,
565
- toolRunId: string | undefined,
566
- jobId: string,
567
- options?: {
568
- sharedState?: {
569
- done: boolean;
570
- result?: AppDeployApiResult;
571
- failure?: Error;
572
- error?: string;
573
- lastSteps: ToolRunStep[];
574
- };
575
- }
576
- ): Promise<AppDeployApiResult> {
577
- const sharedState = options?.sharedState;
578
- let lastSteps: ToolRunStep[] = sharedState?.lastSteps ?? [];
579
- try {
580
- for (let attempt = 0; attempt < 180; attempt += 1) {
581
- if (sharedState?.done) {
582
- if (sharedState.result) return sharedState.result;
583
- if (sharedState.failure) throw sharedState.failure;
584
- throw new Error(sharedState.error || "้ƒจ็ฝฒๅคฑ่ดฅ");
585
- }
586
- const statusData = await callToolApi<AppDeployStatusResult>(
587
- thunkApi,
588
- "/api/app/deploy/status",
589
- { jobId },
590
- { withAuth: true }
591
- );
592
-
593
- const nextSteps = Array.isArray(statusData.steps)
594
- ? statusData.steps.map((step) => {
595
- const previous = lastSteps.find((item) => item.id === step.id);
596
- if (
597
- previous &&
598
- TOOL_STEP_STATUS_RANK[step.status] < TOOL_STEP_STATUS_RANK[previous.status]
599
- ) {
600
- return previous;
601
- }
602
- return step;
603
- })
604
- : lastSteps;
605
- // Only advance lastSteps when server returns a non-empty steps array; this
606
- // preserves the last known UI state if the server briefly returns empty steps.
607
- if (nextSteps.length > 0) {
608
- lastSteps = nextSteps;
609
- if (sharedState) {
610
- sharedState.lastSteps = nextSteps;
611
- }
612
- }
613
-
614
- updateDeployProgress(
615
- thunkApi,
616
- toolRunId,
617
- lastSteps.length > 0 ? lastSteps : "prepare",
618
- statusData.summary ?? "ๆญฃๅœจๅŒๆญฅๆœๅŠก็ซฏ้ƒจ็ฝฒ็Šถๆ€โ€ฆ",
619
- statusData.status === "failed" ? "failed" : "running"
620
- );
621
-
622
- if (statusData.status === "succeeded" && statusData.result) {
623
- if (sharedState) {
624
- sharedState.done = true;
625
- sharedState.result = statusData.result;
626
- }
627
- return statusData.result;
628
- }
629
- if (statusData.status === "failed") {
630
- if (
631
- isTransportStoplossError({
632
- code: statusData.error?.code,
633
- details: statusData.error?.details,
634
- message: statusData.error?.message || statusData.summary,
635
- })
636
- ) {
637
- const payload = buildAppStoplossPayload({
638
- summary: "้ƒจ็ฝฒ็Šถๆ€ๆŽฅๅฃ่ฟ”ๅ›žไบ†ๅผ‚ๅธธๅ“ๅบ”๏ผŒๅทฒๅœๆญข่‡ชๅŠจ้‡่ฏ•ใ€‚",
639
- framework: args.framework ?? "worker",
640
- stage: "deploy",
641
- error: {
642
- code: statusData.error?.code,
643
- details: statusData.error?.details,
644
- message: statusData.error?.message || statusData.summary,
645
- },
646
- });
647
- const displayMessage = formatStoplossPlan(payload);
648
- const stoplossError = new ToolResultError(payload.summary, {
649
- code: payload.code,
650
- rawData: payload,
651
- displayData: displayMessage,
652
- retryable: false,
653
- });
654
- if (sharedState) {
655
- sharedState.done = true;
656
- sharedState.failure = stoplossError;
657
- sharedState.error = displayMessage;
658
- }
659
- updateDeployProgress(
660
- thunkApi,
661
- toolRunId,
662
- statusData.steps ?? "prepare",
663
- displayMessage,
664
- "failed"
665
- );
666
- throw stoplossError;
667
- }
668
- const rewrittenBase = rewriteAppDeployError(
669
- statusData.error?.message || statusData.summary || "้ƒจ็ฝฒๅคฑ่ดฅ",
670
- args
671
- );
672
- const issues =
673
- statusData.error?.code === "PREFLIGHT_FAILED"
674
- ? ((statusData.error?.details as { issues?: AppPreflightIssue[] } | undefined)?.issues ?? [])
675
- : [];
676
- const repairPayload = buildAppRepairPayload({
677
- summary: rewrittenBase,
678
- framework: args.framework ?? "worker",
679
- issues,
680
- });
681
- const rewritten = [
682
- rewrittenBase,
683
- formatPreflightIssues(issues),
684
- formatRepairPlan(repairPayload.repairPlan),
685
- ]
686
- .filter(Boolean)
687
- .join("\n");
688
- const repairError = new ToolResultError(rewrittenBase, {
689
- code: statusData.error?.code ?? repairPayload.code,
690
- rawData: repairPayload,
691
- displayData: rewritten,
692
- retryable: true,
693
- });
694
- if (sharedState) {
695
- sharedState.done = true;
696
- sharedState.failure = repairError;
697
- sharedState.error = rewritten;
698
- }
699
- updateDeployProgress(
700
- thunkApi,
701
- toolRunId,
702
- statusData.steps ?? "prepare",
703
- rewritten,
704
- "failed"
705
- );
706
- throw repairError;
707
- }
708
-
709
- await sleep(Math.min(400 + attempt * 50, 2000));
710
- }
711
-
712
- throw new Error("้ƒจ็ฝฒไปปๅŠกไปๅœจๆœๅŠก็ซฏๆ‰ง่กŒ๏ผŒ่ฏท็จๅŽ้‡่ฏ•ๆŸฅ็œ‹็ป“ๆžœใ€‚");
713
- } finally {
714
- // Ensure SSE subscriber always sees done=true so it can cancel the reader,
715
- // even when polling times out or throws an unexpected error.
716
- if (sharedState && !sharedState.done) {
717
- sharedState.done = true;
718
- }
719
- }
720
- }
721
-
722
- async function subscribeToDeployEvents(args: {
723
- thunkApi: any;
724
- deployArgs: AppDeployArgs;
725
- toolRunId?: string;
726
- jobId: string;
727
- eventChannel: string;
728
- sharedState: {
729
- done: boolean;
730
- result?: AppDeployApiResult;
731
- failure?: Error;
732
- error?: string;
733
- lastSteps: ToolRunStep[];
734
- };
735
- }): Promise<void> {
736
- const { thunkApi, deployArgs, toolRunId, jobId, eventChannel, sharedState } = args;
737
- const { baseUrl, token } = getToolRequestContext(thunkApi);
738
- if (!token) return;
739
-
740
- const res = await fetch(`${baseUrl}/api/events/${encodeURIComponent(eventChannel)}`, {
741
- method: "GET",
742
- headers: {
743
- Accept: "text/event-stream",
744
- Authorization: `Bearer ${token}`,
745
- },
746
- });
747
- if (!res.ok || !res.body) return;
748
-
749
- const reader = res.body.getReader();
750
- const decoder = new TextDecoder();
751
-
752
- try {
753
- while (true) {
754
- if (sharedState.done) {
755
- return;
756
- }
757
- const { done, value } = await reader.read();
758
- if (done) return;
759
- const chunk = decoder.decode(value, { stream: true });
760
- for (const event of parseSseChunk(chunk)) {
761
- if (event.type !== "app-deploy-progress" || event.jobId !== jobId) continue;
762
- const eventSteps = Array.isArray(event.steps)
763
- ? (event.steps as ToolRunStep[]).map((step) => {
764
- const previous = sharedState.lastSteps.find((item) => item.id === step.id);
765
- if (
766
- previous &&
767
- TOOL_STEP_STATUS_RANK[step.status] < TOOL_STEP_STATUS_RANK[previous.status]
768
- ) {
769
- return previous;
770
- }
771
- return step;
772
- })
773
- : sharedState.lastSteps;
774
- sharedState.lastSteps = eventSteps;
775
- const status = typeof event.status === "string" ? event.status : "running";
776
- const summary =
777
- typeof event.summary === "string" ? event.summary : "ๆญฃๅœจๆŽฅๆ”ถๆœๅŠก็ซฏ้ƒจ็ฝฒไบ‹ไปถโ€ฆ";
778
-
779
- updateDeployProgress(
780
- thunkApi,
781
- toolRunId,
782
- eventSteps.length > 0 ? eventSteps : "prepare",
783
- summary,
784
- status === "failed" ? "failed" : status === "succeeded" ? "succeeded" : "running"
785
- );
786
-
787
- if (status === "succeeded" && event.result) {
788
- sharedState.done = true;
789
- sharedState.result = event.result as AppDeployApiResult;
790
- return;
791
- }
792
- if (status === "failed") {
793
- if (
794
- isTransportStoplossError({
795
- code: (event.error as { code?: string } | undefined)?.code,
796
- details: (event.error as { details?: unknown } | undefined)?.details,
797
- message: (event.error as { message?: string } | undefined)?.message || summary,
798
- })
799
- ) {
800
- const payload = buildAppStoplossPayload({
801
- summary: "้ƒจ็ฝฒไบ‹ไปถๆต่ฟ”ๅ›žไบ†ๅผ‚ๅธธๅ“ๅบ”๏ผŒๅทฒๅœๆญข่‡ชๅŠจ้‡่ฏ•ใ€‚",
802
- framework: deployArgs.framework ?? "worker",
803
- stage: "deploy",
804
- error: {
805
- code: (event.error as { code?: string } | undefined)?.code,
806
- details: (event.error as { details?: unknown } | undefined)?.details,
807
- message: (event.error as { message?: string } | undefined)?.message || summary,
808
- },
809
- });
810
- const displayMessage = formatStoplossPlan(payload);
811
- const stoplossError = new ToolResultError(payload.summary, {
812
- code: payload.code,
813
- rawData: payload,
814
- displayData: displayMessage,
815
- retryable: false,
816
- });
817
- sharedState.done = true;
818
- sharedState.failure = stoplossError;
819
- sharedState.error = displayMessage;
820
- updateDeployProgress(
821
- thunkApi,
822
- toolRunId,
823
- eventSteps.length > 0 ? eventSteps : "prepare",
824
- displayMessage,
825
- "failed"
826
- );
827
- return;
828
- }
829
- const rewrittenBase = rewriteAppDeployError(
830
- (event.error as { message?: string } | undefined)?.message || summary || "้ƒจ็ฝฒๅคฑ่ดฅ",
831
- deployArgs
832
- );
833
- const issues =
834
- (event.error as { code?: string; details?: { issues?: AppPreflightIssue[] } } | undefined)?.code === "PREFLIGHT_FAILED"
835
- ? (((event.error as { details?: { issues?: AppPreflightIssue[] } } | undefined)?.details)
836
- ?.issues ?? [])
837
- : [];
838
- const repairPayload = buildAppRepairPayload({
839
- summary: rewrittenBase,
840
- framework: deployArgs.framework ?? "worker",
841
- issues,
842
- });
843
- const rewritten = [
844
- rewrittenBase,
845
- formatPreflightIssues(issues),
846
- formatRepairPlan(repairPayload.repairPlan),
847
- ]
848
- .filter(Boolean)
849
- .join("\n");
850
- const repairError = new ToolResultError(rewrittenBase, {
851
- code: (event.error as { code?: string } | undefined)?.code ?? repairPayload.code,
852
- rawData: repairPayload,
853
- displayData: rewritten,
854
- retryable: true,
855
- });
856
- sharedState.done = true;
857
- sharedState.failure = repairError;
858
- sharedState.error = rewritten;
859
- updateDeployProgress(
860
- thunkApi,
861
- toolRunId,
862
- eventSteps.length > 0 ? eventSteps : "prepare",
863
- rewritten,
864
- "failed"
865
- );
866
- return;
867
- }
868
- }
869
- }
870
- } finally {
871
- // Cancel the SSE reader on every exit path (success, failure, external done,
872
- // natural stream end) so the underlying HTTP connection is always released.
873
- try {
874
- await reader.cancel();
875
- } catch {}
876
- try {
877
- reader.releaseLock();
878
- } catch {}
879
- }
880
- }
881
-
882
- // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
883
- // appDeploy โ€” ้ƒจ็ฝฒๆˆ–ๆ›ดๆ–ฐไธ€ไธช Web ๅบ”็”จ
884
- // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
885
- export const appDeployFunctionSchema = {
886
- name: "appDeploy",
887
- description:
888
- "ๅฐ† JavaScript/TypeScript ไปฃ็ ้ƒจ็ฝฒไธบ Web ๅบ”็”จใ€‚" +
889
- "้ป˜่ฎค้ƒจ็ฝฒๅˆฐๅนณๅฐๆœๅŠกๅ™จ๏ผˆnolo.chat/apps/{appId}/๏ผ‰๏ผŒๆ— ้œ€็”จๆˆท้…็ฝฎไปปไฝ•้ขๅค–่ดฆๅท๏ผŒ็ซ‹ๅณๅฏ่ฎฟ้—ฎใ€‚" +
890
- "ไปฃ็ ๅฟ…้กปๆ˜ฏ ES Module ๆ ผๅผ๏ผˆexport default { fetch(req) {} }๏ผ‰ใ€‚" +
891
- "ๆ”ฏๆŒๅคšๆ–‡ไปถ้กน็›ฎ๏ผš้€š่ฟ‡ files ๆ•ฐ็ป„ไผ ๅ…ฅ๏ผŒๆœๅŠก็ซฏ่‡ชๅŠจๆ‰“ๅŒ…ใ€‚" +
892
- "ๆ–ฐๅปบๅบ”็”จๆ—ถไฝฟ็”จ name๏ผ›ๆ›ดๆ–ฐๅทฒๆœ‰ๅบ”็”จๆ—ถๅฟ…้กปไผ˜ๅ…ˆไผ  appId๏ผŒ้ฟๅ…ๅ› ไธบๅ็งฐ้‡ๅค่€Œ่ฏฏๅปบๆ–ฐๅบ”็”จใ€‚",
893
- parameters: {
894
- type: "object",
895
- properties: {
896
- name: {
897
- type: "string",
898
- description: "ๅบ”็”จๅ็งฐ๏ผŒๅชๅ…่ฎธๅญ—ๆฏใ€ๆ•ฐๅญ—ใ€่ฟžๅญ—็ฌฆ๏ผŒไพ‹ๅฆ‚ 'my-app' ๆˆ– 'bmi-calculator'ใ€‚ไป…็”จไบŽๆ–ฐๅปบๅบ”็”จ๏ผ›ๆ›ดๆ–ฐๅทฒๆœ‰ๅบ”็”จๆ—ถๅบ”ไผ˜ๅ…ˆไผ  appId๏ผŒๆœๅŠก็ซฏไผš่‡ชๅŠจๆฒฟ็”จๅކๅฒๅ็งฐใ€‚",
899
- },
900
- code: {
901
- type: "string",
902
- description:
903
- "ๅ•ๆ–‡ไปถๅบ”็”จไปฃ็ ๏ผŒๅฟ…้กปๆ˜ฏ ES Module ๆ ผๅผใ€‚ไธŽ files ไบŒ้€‰ไธ€ใ€‚" +
904
- "็คบไพ‹๏ผš\n" +
905
- "export default {\n" +
906
- " async fetch(request, env, ctx) {\n" +
907
- " return new Response('Hello World!');\n" +
908
- " }\n" +
909
- "};",
910
- },
911
- files: {
912
- type: "array",
913
- description: "ๅคšๆ–‡ไปถ้กน็›ฎ๏ผŒไธŽ code ไบŒ้€‰ไธ€ใ€‚ๆœๅŠก็ซฏ่‡ชๅŠจๆ‰“ๅŒ…ใ€‚ๆ™ฎ้€š Worker ๅ…ฅๅฃ็”จ index.ts/main.ts/worker.ts๏ผ›React SPA ๆŽจ่ main.tsx + App.tsxใ€‚",
914
- items: {
915
- type: "object",
916
- properties: {
917
- name: { type: "string", description: "ๆ–‡ไปถๅ๏ผŒๅฆ‚ 'index.ts' ๆˆ– 'utils/helper.ts'" },
918
- code: { type: "string", description: "ๆ–‡ไปถๅ†…ๅฎน" },
919
- },
920
- required: ["name", "code"],
921
- },
922
- },
923
- pages: {
924
- type: "array",
925
- description: "ๅ…ผๅฎนๅˆซๅ๏ผŒ็ญ‰ๅŒไบŽ filesใ€‚่‹ฅไธŠๆธธ็”Ÿๆˆ็š„ๆ˜ฏ pages ๅญ—ๆฎต๏ผŒ็ณป็ปŸไผš่‡ชๅŠจๆŒ‰ files ๅค„็†ใ€‚",
926
- items: {
927
- type: "object",
928
- properties: {
929
- name: { type: "string", description: "ๆ–‡ไปถๅ๏ผŒๅฆ‚ 'App.tsx'" },
930
- code: { type: "string", description: "ๆ–‡ไปถๅ†…ๅฎน" },
931
- },
932
- required: ["name", "code"],
933
- },
934
- },
935
- appId: {
936
- type: "string",
937
- description:
938
- "ๅบ”็”จ ID๏ผˆๆœๅŠกๅ™จ่ฟ”ๅ›ž็š„ ULID๏ผ‰ใ€‚" +
939
- "ๅˆ›ๅปบๆ–ฐๅบ”็”จๆ—ถไธ่ฆไผ ๆญคๅญ—ๆฎต๏ผŒๆœๅŠกๅ™จไผš่‡ชๅŠจ็”Ÿๆˆๅนถๅœจๅ“ๅบ”ไธญ่ฟ”ๅ›žใ€‚" +
940
- "ๆ›ดๆ–ฐๅทฒๆœ‰ๅบ”็”จๆ—ถ๏ผŒๅกซๅ…ฅไธŠๆฌก้ƒจ็ฝฒๅ“ๅบ”ไธญ่ฟ”ๅ›ž็š„ appId๏ผŒๅฎž็Žฐ่ฆ†็›–ๆ›ดๆ–ฐ่€Œ้žๆ–ฐๅปบใ€‚",
941
- },
942
- framework: {
943
- type: "string",
944
- enum: ["worker", "react-spa"],
945
- description:
946
- "ๅบ”็”จๆก†ๆžถใ€‚" +
947
- "'worker'๏ผˆ้ป˜่ฎค๏ผ‰๏ผš็›ดๆŽฅ้ƒจ็ฝฒ export default { fetch } ไปฃ็ ใ€‚" +
948
- "'react-spa'๏ผš้ƒจ็ฝฒๅคšๆ–‡ไปถ React ๅ•้กตๅบ”็”จ๏ผŒ้€‚ๅˆๅคๆ‚ไบคไบ’ใ€ๅ›พ่กจๅ’Œ็ป„ไปถๅŒ–้กต้ขใ€‚React SPA ๆจกๅผๅฟ…้กป้…ๅˆ files ไฝฟ็”จใ€‚",
949
- },
950
- spaceId: {
951
- type: "string",
952
- description:
953
- "ๅฏ้€‰็š„ Space IDใ€‚้ป˜่ฎคไผšไผ˜ๅ…ˆไฝฟ็”จๅฝ“ๅ‰ๆญฃๅœจ็ผ–่พ‘/ๅฏน่ฏ็š„็ฉบ้—ดใ€‚" +
954
- "ๅฆ‚ๆžœๆ˜ฏๅฐšๆœช็ป‘ๅฎš็ฉบ้—ด็š„ๆ—งๅบ”็”จ๏ผŒ้‡ๆ–ฐ้ƒจ็ฝฒๆ—ถไผšๆŠŠๅฎƒ็ป‘ๅฎšๅˆฐ่ฏฅ็ฉบ้—ด๏ผ›" +
955
- "ๅทฒ็ป็ป‘ๅฎš็ฉบ้—ด็š„ๅบ”็”จไธไผšๅ› ไธบ่ฟ™ไธชๅญ—ๆฎต่ขซ่ฟ็งปใ€‚",
956
- },
957
- },
958
- anyOf: [
959
- { required: ["name"] },
960
- { required: ["appId"] },
961
- ],
962
- // note: ๆ–ฐๅปบๅบ”็”จๆ—ถๅฟ…้กปๆ˜พๅผๆไพ› name๏ผ›ๆ›ดๆ–ฐๅทฒๆœ‰ๅบ”็”จๆ—ถๅ…่ฎธไป…ไผ  appId
963
- },
964
- };
965
-
966
- export const appPreflightFunctionSchema = {
967
- name: "appPreflight",
968
- description:
969
- "ๅœจ็œŸๆญฃ้ƒจ็ฝฒๅ‰ๅ…ˆๅšๅบ”็”จ้ข„ๆฃ€๏ผŒๆฃ€ๆŸฅ React SPA / Worker ็š„ๅ…ฅๅฃๆ–‡ไปถใ€็™ฝๅๅ•ไพ่ต–ใ€ๅ›พๆ ‡ๅใ€CSS import ๅ’Œๅธธ่ง้ƒจ็ฝฒ้”™่ฏฏใ€‚",
970
- parameters: {
971
- type: "object",
972
- properties: {
973
- name: {
974
- type: "string",
975
- description: "ๅบ”็”จๅ็งฐใ€‚ๆ–ฐๅปบๅบ”็”จๅปบ่ฎฎไผ ๏ผ›ๆ›ดๆ–ฐๅทฒๆœ‰ๅบ”็”จๆ—ถๅฏ้…ๅˆ appId ไธ€่ตทไผ ใ€‚",
976
- },
977
- code: {
978
- type: "string",
979
- description: "ๅ•ๆ–‡ไปถ Worker ไปฃ็ ๏ผŒไธŽ files ไบŒ้€‰ไธ€ใ€‚",
980
- },
981
- files: {
982
- type: "array",
983
- description: "ๅคšๆ–‡ไปถๆบ็ ๏ผŒไธŽ code ไบŒ้€‰ไธ€ใ€‚React SPA ๆŽจ่ main.tsx + App.tsxใ€‚",
984
- items: {
985
- type: "object",
986
- properties: {
987
- name: { type: "string" },
988
- code: { type: "string" },
989
- },
990
- required: ["name", "code"],
991
- },
992
- },
993
- pages: {
994
- type: "array",
995
- description: "ๅ…ผๅฎนๅˆซๅ๏ผŒ็ญ‰ๅŒไบŽ filesใ€‚",
996
- items: {
997
- type: "object",
998
- properties: {
999
- name: { type: "string" },
1000
- code: { type: "string" },
1001
- },
1002
- required: ["name", "code"],
1003
- },
1004
- },
1005
- appId: {
1006
- type: "string",
1007
- description: "ๅทฒๅญ˜ๅœจๅบ”็”จ็š„ appId๏ผ›็”จไบŽๆ›ดๆ–ฐๅ‰ๆ ก้ชŒใ€‚",
1008
- },
1009
- framework: {
1010
- type: "string",
1011
- enum: ["worker", "react-spa"],
1012
- },
1013
- spaceId: {
1014
- type: "string",
1015
- description: "ๅฏ้€‰ Space IDใ€‚",
1016
- },
1017
- },
1018
- anyOf: [{ required: ["name"] }, { required: ["appId"] }],
1019
- },
1020
- };
1021
-
1022
- export async function appPreflightFunc(
1023
- rawArgs: AppDeployArgs,
1024
- thunkApi: any
1025
- ): Promise<{ rawData: any; displayData: string }> {
1026
- const args = normalizeAppDeployArgs(rawArgs);
1027
- const deploySpaceId = await resolveAppDeploySpaceId(args, thunkApi);
1028
- const data = await callToolApi<AppPreflightResult>(
1029
- thunkApi,
1030
- "/api/app/preflight",
1031
- {
1032
- name: args.name,
1033
- code: args.code,
1034
- files: args.files,
1035
- appId: args.appId,
1036
- framework: args.framework,
1037
- ...(deploySpaceId ? { spaceId: deploySpaceId } : {}),
1038
- },
1039
- { withAuth: true }
1040
- );
1041
-
1042
- const lines = [
1043
- data.ok ? "โœ… ้ข„ๆฃ€้€š่ฟ‡" : "โŒ ้ข„ๆฃ€ๅคฑ่ดฅ",
1044
- `- ๆก†ๆžถ: ${data.framework}`,
1045
- `- ๆ‘˜่ฆ: ${data.summary}`,
1046
- ];
1047
- const repairPayload = data.ok
1048
- ? null
1049
- : buildAppRepairPayload({
1050
- summary: data.summary,
1051
- framework: data.framework,
1052
- issues: data.issues,
1053
- warnings: data.warnings,
1054
- entryFile: data.entryFile,
1055
- externalImports: data.externalImports,
1056
- });
1057
- if (data.entryFile) lines.push(`- ๅ…ฅๅฃๆ–‡ไปถ: ${data.entryFile}`);
1058
- if (data.issues?.length) {
1059
- lines.push(`\n้—ฎ้ข˜:\n${formatPreflightIssues(data.issues)}`);
1060
- }
1061
- if (repairPayload?.repairPlan) {
1062
- lines.push(`\n${formatRepairPlan(repairPayload.repairPlan)}`);
1063
- }
1064
- if (data.warnings?.length) {
1065
- lines.push(`\n่ญฆๅ‘Š:\n${data.warnings.map((warning) => `- ${warning}`).join("\n")}`);
1066
- }
1067
-
1068
- return {
1069
- rawData: repairPayload ?? data,
1070
- displayData: lines.join("\n"),
1071
- };
1072
- }
1073
-
1074
- export async function appDeployFunc(
1075
- rawArgs: AppDeployArgs,
1076
- thunkApi: any,
1077
- context?: { parentMessageId: string; toolRunId?: string; userInput?: string }
1078
- ): Promise<{ rawData: any; displayData: string }> {
1079
- const args = normalizeAppDeployArgs(rawArgs);
1080
- const { name, code, files, appId, framework } = args;
1081
- const deploySpaceId = await resolveAppDeploySpaceId(args, thunkApi);
1082
- const toolRunId = context?.toolRunId;
1083
- if (!name && !appId) throw new Error("ๅฟ…้กปๆไพ› name ๅ‚ๆ•ฐ๏ผˆๆ–ฐๅปบๅบ”็”จๆ—ถๅฟ…ๅกซ๏ผ›ๆ›ดๆ–ฐๅทฒๆœ‰ๅบ”็”จๆ—ถๅฏ็œ็•ฅ๏ผŒๆœๅŠก็ซฏไปŽ appId ่ฎฐๅฝ•ไธญ่‡ชๅŠจ่กฅๅ……๏ผ‰");
1084
- if (framework === "react-spa" && code && (!files || files.length === 0)) {
1085
- throw new Error('React SPA ้œ€่ฆไผ  `files`๏ผˆ่‡ณๅฐ‘ `main.tsx` + `App.tsx`๏ผ‰๏ผŒไธ่ƒฝๅชไผ  `code`ใ€‚');
1086
- }
1087
- if (!code && (!files || files.length === 0)) throw new Error("ๅฟ…้กปๆไพ› code ๆˆ– files ๅ‚ๆ•ฐ");
1088
- if ((rawArgs as { deployTarget?: string }).deployTarget && (rawArgs as { deployTarget?: string }).deployTarget !== "platform") {
1089
- throw new Error("ๅทฒไธๅ†ๆ”ฏๆŒ Cloudflare ้ƒจ็ฝฒ็›ฎๆ ‡๏ผŒ่ฏทไฝฟ็”จๅนณๅฐๆ‰˜็ฎกใ€‚");
1090
- }
1091
-
1092
- updateDeployProgress(
1093
- thunkApi,
1094
- toolRunId,
1095
- "prepare",
1096
- "ๆญฃๅœจๆ•ด็†้ƒจ็ฝฒๅ‚ๆ•ฐโ€ฆ",
1097
- "running",
1098
- framework === "react-spa" ? "ๅ‡†ๅค‡ React SPA ๅคšๆ–‡ไปถๆž„ๅปบ" : "ๅ‡†ๅค‡ๅ•ๆ–‡ไปถ Worker / ๅคšๆ–‡ไปถ Worker ้ƒจ็ฝฒ"
1099
- );
1100
-
1101
- const guardUserInput = context?.userInput ?? getLatestUserInputFromThunk(thunkApi);
1102
- if (appId && (code || (files && files.length > 0)) && guardUserInput) {
1103
- try {
1104
- const previousSource = await callToolApi<{
1105
- code?: string;
1106
- files?: AppSourceFile[];
1107
- }>(thunkApi, "/api/app/prepare-edit", { appId }, { withAuth: true });
1108
- const guardResult = evaluateSmallVisualEditGuard({
1109
- userInput: guardUserInput,
1110
- previousSource,
1111
- nextSource: { code, files },
1112
- });
1113
- if (!guardResult.ok) {
1114
- updateDeployProgress(
1115
- thunkApi,
1116
- toolRunId,
1117
- "prepare",
1118
- guardResult.summary,
1119
- "failed",
1120
- "ๆฃ€ๆต‹ๅˆฐๅฐ่ง†่ง‰ไฟฎๆ”น่ถ…ๅ‡บ่Œƒๅ›ด๏ผŒ่ฆๆฑ‚ๅ…ˆๆ”ถๆ•›ๆ”นๅŠจ"
1121
- );
1122
- throw new ToolResultError(guardResult.summary, {
1123
- code: guardResult.rawData.code,
1124
- rawData: guardResult.rawData,
1125
- displayData: guardResult.displayData,
1126
- retryable: true,
1127
- });
1128
- }
1129
- } catch (error: any) {
1130
- if (
1131
- error instanceof ToolResultError ||
1132
- error?.name === "ToolResultError" ||
1133
- error?.code === "SMALL_VISUAL_SCOPE_EXCEEDED"
1134
- ) {
1135
- throw error;
1136
- }
1137
- }
1138
- }
1139
-
1140
- let preflightData: AppPreflightResult;
1141
- try {
1142
- preflightData = await callToolApi<AppPreflightResult>(
1143
- thunkApi,
1144
- "/api/app/preflight",
1145
- {
1146
- name,
1147
- code,
1148
- files,
1149
- appId,
1150
- framework,
1151
- ...(deploySpaceId ? { spaceId: deploySpaceId } : {}),
1152
- },
1153
- { withAuth: true }
1154
- );
1155
- } catch (error: any) {
1156
- if (isTransportStoplossError(error)) {
1157
- const payload = buildAppStoplossPayload({
1158
- summary: "้ข„ๆฃ€ๆŽฅๅฃ่ฟ”ๅ›žไบ†ๅผ‚ๅธธๅ“ๅบ”๏ผŒๆš‚ๆ—ถๆ— ๆณ•ๅˆคๆ–ญไปฃ็ ้—ฎ้ข˜ใ€‚",
1159
- framework: framework ?? "worker",
1160
- stage: "preflight",
1161
- error,
1162
- });
1163
- const displayMessage = formatStoplossPlan(payload);
1164
- updateDeployProgress(
1165
- thunkApi,
1166
- toolRunId,
1167
- "preflight",
1168
- displayMessage,
1169
- "failed",
1170
- "ๆฃ€ๆต‹ๅˆฐ้ข„ๆฃ€้€š้“ๅผ‚ๅธธ๏ผŒๅทฒๅœๆญข่‡ชๅŠจ้‡่ฏ•"
1171
- );
1172
- throw new ToolResultError(payload.summary, {
1173
- code: payload.code,
1174
- rawData: payload,
1175
- displayData: displayMessage,
1176
- retryable: false,
1177
- });
1178
- }
1179
- const rewritten = rewriteAppDeployError(error?.message || String(error), args);
1180
- const issues = (error?.details as { issues?: AppPreflightIssue[] } | undefined)?.issues ?? [];
1181
- const repairPayload = buildAppRepairPayload({
1182
- summary: rewritten,
1183
- framework: framework ?? "worker",
1184
- issues,
1185
- });
1186
- const displayMessage = [
1187
- rewritten,
1188
- formatPreflightIssues(issues),
1189
- formatRepairPlan(repairPayload.repairPlan),
1190
- ]
1191
- .filter(Boolean)
1192
- .join("\n");
1193
- updateDeployProgress(
1194
- thunkApi,
1195
- toolRunId,
1196
- "preflight",
1197
- displayMessage,
1198
- "failed",
1199
- "้ข„ๆฃ€ๆŽฅๅฃๆ‰ง่กŒๅคฑ่ดฅ"
1200
- );
1201
- throw new ToolResultError(rewritten, {
1202
- code: error?.code ?? repairPayload.code,
1203
- rawData: repairPayload,
1204
- displayData: displayMessage,
1205
- retryable: true,
1206
- });
1207
- }
1208
-
1209
- if (!preflightData.ok) {
1210
- const repairPayload = buildAppRepairPayload({
1211
- summary: preflightData.summary,
1212
- framework: preflightData.framework,
1213
- issues: preflightData.issues,
1214
- warnings: preflightData.warnings,
1215
- entryFile: preflightData.entryFile,
1216
- externalImports: preflightData.externalImports,
1217
- });
1218
- const displayMessage = [
1219
- preflightData.summary,
1220
- formatPreflightIssues(preflightData.issues),
1221
- formatRepairPlan(repairPayload.repairPlan),
1222
- ]
1223
- .filter(Boolean)
1224
- .join("\n");
1225
- updateDeployProgress(
1226
- thunkApi,
1227
- toolRunId,
1228
- "preflight",
1229
- displayMessage,
1230
- "failed",
1231
- "่ฏทๅ…ˆไฟฎๅค้ข„ๆฃ€้—ฎ้ข˜๏ผŒๅ†้‡ๆ–ฐ้ƒจ็ฝฒ"
1232
- );
1233
- throw new ToolResultError(preflightData.summary, {
1234
- code: "PREFLIGHT_FAILED",
1235
- rawData: repairPayload,
1236
- displayData: displayMessage,
1237
- retryable: true,
1238
- });
1239
- }
1240
-
1241
- updateDeployProgress(
1242
- thunkApi,
1243
- toolRunId,
1244
- "preflight",
1245
- preflightData.summary || "้ข„ๆฃ€้€š่ฟ‡",
1246
- "succeeded",
1247
- preflightData.entryFile
1248
- ? `ๅ…ฅๅฃๆ–‡ไปถ๏ผš${preflightData.entryFile}`
1249
- : framework === "react-spa"
1250
- ? "React SPA ็บฆๆŸๆฃ€ๆŸฅ้€š่ฟ‡"
1251
- : "Worker ็บฆๆŸๆฃ€ๆŸฅ้€š่ฟ‡"
1252
- );
1253
-
1254
- let startData: AppDeployStartResult;
1255
- try {
1256
- startData = await callToolApi<AppDeployStartResult>(
1257
- thunkApi,
1258
- "/api/app/deploy",
1259
- {
1260
- name,
1261
- code,
1262
- files,
1263
- appId,
1264
- framework,
1265
- ...(deploySpaceId ? { spaceId: deploySpaceId } : {}),
1266
- },
1267
- { withAuth: true }
1268
- );
1269
- } catch (error: any) {
1270
- if (isTransportStoplossError(error)) {
1271
- const payload = buildAppStoplossPayload({
1272
- summary: "้ƒจ็ฝฒๆŽฅๅฃ่ฟ”ๅ›žไบ†ๅผ‚ๅธธๅ“ๅบ”๏ผŒๅฝ“ๅ‰ไธ่ƒฝ็ปง็ปญ่‡ชๅŠจ้ƒจ็ฝฒใ€‚",
1273
- framework: framework ?? "worker",
1274
- stage: "deploy",
1275
- error,
1276
- });
1277
- const displayMessage = formatStoplossPlan(payload);
1278
- updateDeployProgress(
1279
- thunkApi,
1280
- toolRunId,
1281
- framework === "react-spa" ? "build" : "prepare",
1282
- displayMessage,
1283
- "failed",
1284
- "ๆฃ€ๆต‹ๅˆฐ้ƒจ็ฝฒ้€š้“ๅผ‚ๅธธ๏ผŒๅทฒๅœๆญข่‡ชๅŠจ้‡่ฏ•"
1285
- );
1286
- throw new ToolResultError(payload.summary, {
1287
- code: payload.code,
1288
- rawData: payload,
1289
- displayData: displayMessage,
1290
- retryable: false,
1291
- });
1292
- }
1293
- const rewritten = rewriteAppDeployError(error?.message || String(error), args);
1294
- const issues = (error?.details as { issues?: AppPreflightIssue[] } | undefined)?.issues ?? [];
1295
- const repairPayload = buildAppRepairPayload({
1296
- summary: rewritten,
1297
- framework: framework ?? "worker",
1298
- issues,
1299
- });
1300
- const displayMessage = [
1301
- rewritten,
1302
- formatPreflightIssues(issues),
1303
- formatRepairPlan(repairPayload.repairPlan),
1304
- ]
1305
- .filter(Boolean)
1306
- .join("\n");
1307
- updateDeployProgress(
1308
- thunkApi,
1309
- toolRunId,
1310
- framework === "react-spa" ? "build" : "prepare",
1311
- displayMessage,
1312
- "failed",
1313
- "่ฏทๆ นๆฎๆ็คบ่ฐƒๆ•ดๅ‚ๆ•ฐๆˆ–ไปฃ็ ๅŽ้‡่ฏ•"
1314
- );
1315
- throw new ToolResultError(rewritten, {
1316
- code: error?.code ?? repairPayload.code,
1317
- rawData: repairPayload,
1318
- displayData: displayMessage,
1319
- retryable: true,
1320
- });
1321
- }
1322
-
1323
- updateDeployProgress(
1324
- thunkApi,
1325
- toolRunId,
1326
- startData.steps ?? "prepare",
1327
- startData.summary ?? "้ƒจ็ฝฒ่ฏทๆฑ‚ๅทฒๅ‘้€ๅˆฐๆœๅŠก็ซฏโ€ฆ",
1328
- "running"
1329
- );
1330
- const sharedState = {
1331
- done: false,
1332
- result: undefined as AppDeployApiResult | undefined,
1333
- failure: undefined as Error | undefined,
1334
- error: undefined as string | undefined,
1335
- lastSteps: Array.isArray(startData.steps) ? startData.steps : [],
1336
- };
1337
- const ssePromise = startData.eventChannel
1338
- ? subscribeToDeployEvents({
1339
- thunkApi,
1340
- deployArgs: args,
1341
- toolRunId,
1342
- jobId: startData.jobId,
1343
- eventChannel: startData.eventChannel,
1344
- sharedState,
1345
- }).catch(() => {
1346
- // SSE ไป…ไฝœไธบๅŠ ้€Ÿ้€š้“๏ผŒๅคฑ่ดฅๅŽ็”ฑ่ฝฎ่ฏขๅ…œๅบ•
1347
- })
1348
- : Promise.resolve();
1349
-
1350
- const data = await pollAppDeployJob(thunkApi, args, toolRunId, startData.jobId, {
1351
- sharedState,
1352
- });
1353
- void ssePromise;
1354
- const primaryUrl = data.customUrl ?? data.url;
1355
- const previewCheck = data.previewCheck;
1356
- const previewReady = data.previewReady ?? previewCheck?.ready;
1357
-
1358
- // ้ƒจ็ฝฒๆˆๅŠŸๅŽๅฐ† appRecord ๅŒๆญฅๅˆฐๆœฌๅœฐ DB ๅ’Œๆ‰€ๆœ‰ syncServers
1359
- if (data.appKey && data.appRecord) {
1360
- void thunkApi.dispatch(syncAppRecord(data.appKey, data.appRecord));
1361
- }
1362
-
1363
- const lines = [
1364
- `๐Ÿš€ ๅบ”็”จ้ƒจ็ฝฒๆˆๅŠŸ๏ผ`,
1365
- `- ๅ็งฐ: ${data.userFriendlyName}`,
1366
- ...(data.appId ? [`- appId: ${data.appId}`] : []),
1367
- `- ่ฎฟ้—ฎๅœฐๅ€: ${primaryUrl}`,
1368
- `- ๆ›ดๆ–ฐๆ—ถ้—ด: ${data.modifiedOn ?? "ๅˆšๅˆš"}`,
1369
- ];
1370
-
1371
- if (data.bundleWarnings?.length) {
1372
- lines.push(`\nโš ๏ธ ๆ‰“ๅŒ…่ญฆๅ‘Š:\n${data.bundleWarnings.join("\n")}`);
1373
- }
1374
- if (previewCheck?.attempted && previewReady === false) {
1375
- lines.push("\nโณ ็ซ™็‚นๅทฒๅ‘ๅธƒ๏ผŒไฝ†้ฆ–ๆฌกๅŠ ่ฝฝๅฏ่ƒฝ็จๆ…ข๏ผ›่Šๅคฉๅก็‰‡้‡Œไผš็ปง็ปญๆ˜พ็คบ้ข„่งˆๅŠ ่ฝฝ็Šถๆ€ใ€‚");
1376
- }
1377
- lines.push(`\nๅฏไปฅ็›ดๆŽฅ่ฎฟ้—ฎ ${primaryUrl} ๆต‹่ฏ•ๆ•ˆๆžœใ€‚`);
1378
-
1379
- return {
1380
- rawData: { ...data, appUrl: primaryUrl, previewCheck },
1381
- displayData: lines.join("\n"),
1382
- };
1383
- }
1384
-
1385
- // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1386
- // appList โ€” ๅˆ—ๅ‡บ็”จๆˆทๅทฒ้ƒจ็ฝฒ็š„ๆ‰€ๆœ‰ๅบ”็”จ
1387
- // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1388
- export const appListFunctionSchema = {
1389
- name: "appList",
1390
- description: "ๅˆ—ๅ‡บๅบ”็”จๅˆ—่กจใ€‚ไธไผ  spaceId ๆ—ถๅˆ—ๅ‡บๅฝ“ๅ‰็”จๆˆท่‡ชๅทฑ็š„ๅบ”็”จ๏ผ›ไผ ๅ…ฅ spaceId ๆ—ถๅˆ—ๅ‡บ่ฏฅ Space ไธ‹็š„ๅบ”็”จใ€‚",
1391
- parameters: {
1392
- type: "object",
1393
- properties: {
1394
- spaceId: {
1395
- type: "string",
1396
- description: "ๅฏ้€‰ใ€‚่‹ฅๆไพ›๏ผŒๅˆ™ๅชๅˆ—ๅ‡บ่ฏฅ Space ไธ‹็š„ๅบ”็”จใ€‚",
1397
- },
1398
- },
1399
- },
1400
- };
1401
-
1402
- export async function appListFunc(
1403
- args: { spaceId?: string },
1404
- thunkApi: any
1405
- ): Promise<{ rawData: any; displayData: string }> {
1406
- const data = await callToolApi<{
1407
- success: boolean;
1408
- workers: Array<{
1409
- userFriendlyName: string;
1410
- url: string;
1411
- customUrl?: string;
1412
- appId?: string;
1413
- modifiedOn: string;
1414
- }>;
1415
- }>(thunkApi, "/api/app/list", args?.spaceId ? { spaceId: args.spaceId } : {}, { withAuth: true });
1416
-
1417
- if (!data.workers.length) {
1418
- return {
1419
- rawData: data,
1420
- displayData: "๐Ÿ“ญ ไฝ ่ฟ˜ๆฒกๆœ‰้ƒจ็ฝฒไปปไฝ•ๅบ”็”จใ€‚",
1421
- };
1422
- }
1423
-
1424
- const list = data.workers
1425
- .map((w) => {
1426
- const url = w.customUrl ?? w.url;
1427
- const id = w.appId ? ` (appId: ${w.appId})` : "";
1428
- return `- **${w.userFriendlyName}**${id}: ${url} (ๆ›ดๆ–ฐ: ${w.modifiedOn?.slice(0, 10) ?? "-"})`;
1429
- })
1430
- .join("\n");
1431
-
1432
- return {
1433
- rawData: data,
1434
- displayData: `๐Ÿ“‹ ๅทฒ้ƒจ็ฝฒ็š„ๅบ”็”จ (${data.workers.length} ไธช):\n${list}`,
1435
- };
1436
- }
1437
-
1438
- // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1439
- // appDelete โ€” ๅˆ ้™คไธ€ไธชๅบ”็”จ
1440
- // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1441
- export const appDeleteFunctionSchema = {
1442
- name: "appDelete",
1443
- description: "ๅˆ ้™คไธ€ไธชๅทฒ้ƒจ็ฝฒ็š„ๅบ”็”จใ€‚ๅˆ ้™คๅŽ URL ็ซ‹ๅณๅคฑๆ•ˆ๏ผŒไธๅฏๆขๅคใ€‚",
1444
- parameters: {
1445
- type: "object",
1446
- properties: {
1447
- appId: {
1448
- type: "string",
1449
- description: "ๅบ”็”จ IDใ€‚ๅฟ…้กปๅ…ˆ็”จ appList / appDeploy / appRead ๆ‹ฟๅˆฐๅฎƒ๏ผŒๅ†ๆŒ‰ appId ๅˆ ้™คใ€‚",
1450
- },
1451
- },
1452
- required: ["appId"],
1453
- },
1454
- };
1455
-
1456
- export async function appDeleteFunc(
1457
- args: { appId: string },
1458
- thunkApi: any
1459
- ): Promise<{ rawData: any; displayData: string }> {
1460
- const { appId } = args;
1461
- if (!appId) throw new Error("ๅฟ…้กปๆไพ› appId ๅ‚ๆ•ฐ๏ผ›่ฏทๅ…ˆ่ฐƒ็”จ appList ๆˆ– appRead ่Žทๅ–็›ฎๆ ‡ๅบ”็”จ ID");
1462
-
1463
- // ๅ…ˆ่Žทๅ– appKey๏ผŒๅ†่ตฐๅ…จ server ๅˆ ้™ค่ทฏๅพ„
1464
- const appInfo = await callToolApi<{
1465
- appKey?: string;
1466
- appId?: string;
1467
- name?: string;
1468
- }>(thunkApi, "/api/app/get", { appId }, { withAuth: true });
1469
-
1470
- if (!appInfo.appKey) {
1471
- throw new Error("ๆ— ๆณ•่งฃๆž appKey๏ผŒๆ— ๆณ•ๆ‰ง่กŒ็ปŸไธ€ๅˆ ้™ค");
1472
- }
1473
-
1474
- await thunkApi.dispatch(deleteDbKey(appInfo.appKey));
1475
-
1476
- return {
1477
- rawData: { deleted: true },
1478
- displayData: `๐Ÿ—‘๏ธ ๅบ”็”จ "${appInfo.name ?? appId}" ๅทฒๆˆๅŠŸๅˆ ้™คใ€‚`,
1479
- };
1480
- }
1481
-
1482
- // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1483
- // appRead โ€” ่ฏปๅ–ๅบ”็”จๅฝ“ๅ‰ไปฃ็ ๏ผˆ็”จไบŽไฟฎๆ”นๅ‰่Žทๅ–็Žฐๆœ‰ๅ†…ๅฎน๏ผ‰
1484
- // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1485
- export const appReadFunctionSchema = {
1486
- name: "appRead",
1487
- description:
1488
- "่ฏปๅ–ๅทฒ้ƒจ็ฝฒๅบ”็”จ็š„ๅฝ“ๅ‰ไปฃ็ ใ€‚ๅœจไฟฎๆ”นๅบ”็”จ๏ผˆๅขžๅˆ ๅŠŸ่ƒฝใ€่ฐƒๆ•ดๆ ทๅผ็ญ‰๏ผ‰ไน‹ๅ‰๏ผŒๅฟ…้กปๅ…ˆ่ฐƒ็”จๆญคๅทฅๅ…ท่Žทๅ–็Žฐๆœ‰ไปฃ็ ๏ผŒๅ†ๅŸบไบŽ็Žฐๆœ‰ไปฃ็ ่ฟ›่กŒไฟฎๆ”นๅŽ้‡ๆ–ฐ้ƒจ็ฝฒใ€‚ๅฟ…้กปไผ  appId๏ผ›ๅฆ‚่ฟ˜ไธ็Ÿฅ้“ appId๏ผŒ่ฏทๅ…ˆ่ฐƒ็”จ appListใ€‚",
1489
- parameters: {
1490
- type: "object",
1491
- properties: {
1492
- appId: {
1493
- type: "string",
1494
- description: "ๅบ”็”จ ID๏ผˆไปŽ appList ๆˆ–ไน‹ๅ‰็š„ appRead/appDeploy ่ฟ”ๅ›ž็ป“ๆžœไธญ่Žทๅ–๏ผ‰ใ€‚ๆฏ” name ๆ›ด็ฒพ็กฎ๏ผŒๅŽ็ปญๆ›ดๆ–ฐ/ๅˆ ้™ค้ƒฝๅบ”ไผ˜ๅ…ˆไฝฟ็”จใ€‚",
1495
- },
1496
- },
1497
- required: ["appId"],
1498
- },
1499
- };
1500
-
1501
- export async function appReadFunc(
1502
- args: { appId: string },
1503
- thunkApi: any
1504
- ): Promise<{ rawData: any; displayData: string }> {
1505
- const { appId } = args;
1506
- if (!appId) throw new Error("ๅฟ…้กปๆไพ› appId ๅ‚ๆ•ฐ๏ผ›่ฏทๅ…ˆ่ฐƒ็”จ appList ่Žทๅ–็›ฎๆ ‡ๅบ”็”จ ID");
1507
-
1508
- const data = await callToolApi<{
1509
- success: boolean;
1510
- appId: string;
1511
- userFriendlyName: string;
1512
- url: string;
1513
- customUrl?: string;
1514
- code: string;
1515
- files?: Array<{ name: string; code: string }>;
1516
- framework?: "worker" | "react-spa";
1517
- }>(thunkApi, "/api/app/prepare-edit", { appId }, { withAuth: true });
1518
-
1519
- const primaryUrl = data.customUrl ?? data.url;
1520
- const displayBody = Array.isArray(data.files) && data.files.length > 0
1521
- ? data.files
1522
- .map((file) => `### ${file.name}\n\`\`\`${file.name.endsWith(".tsx") || file.name.endsWith(".ts") ? "typescript" : "javascript"}\n${file.code}\n\`\`\``)
1523
- .join("\n\n")
1524
- : "```javascript\n" + data.code + "\n```";
1525
- const snapshotWarning = buildAppReadSnapshotWarning(
1526
- classifyAppReadSnapshot(data)
1527
- );
1528
- const styleSystemAnalysis = analyzeAppStyleSystem(data);
1529
- const styleSystemHint = buildAppStyleSystemHint(styleSystemAnalysis);
1530
-
1531
- return {
1532
- rawData: {
1533
- ...data,
1534
- styleSystemStatus: styleSystemAnalysis.status,
1535
- legacyMigrationRecommended:
1536
- styleSystemAnalysis.legacyMigrationRecommended,
1537
- styleSystemEvidence: styleSystemAnalysis.evidence,
1538
- ...(styleSystemHint ? { styleSystemHint } : {}),
1539
- },
1540
- displayData:
1541
- `๐Ÿ“„ ๅบ”็”จ "${data.userFriendlyName}" ๅฝ“ๅ‰ไปฃ็ ๏ผš\n` +
1542
- `- appId: ${data.appId}\n` +
1543
- `- ่ฎฟ้—ฎๅœฐๅ€: ${primaryUrl}\n` +
1544
- (snapshotWarning ? `\n${snapshotWarning}\n` : "\n") +
1545
- (styleSystemHint ? `\n${styleSystemHint}\n` : "") +
1546
- "\n" +
1547
- displayBody,
1548
- };
1549
- }