nolo-cli 0.1.39 → 0.1.41

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 (438) hide show
  1. package/README.md +4 -4
  2. package/agent-runtime/dialogWritePlan.ts +39 -0
  3. package/agent-runtime/hostAdapter.ts +4 -0
  4. package/agent-runtime/hybridRecordStore.ts +5 -3
  5. package/agent-runtime/index.ts +15 -0
  6. package/agent-runtime/localLoop.ts +87 -7
  7. package/agent-runtime/localToolPolicy.ts +2 -13
  8. package/agent-runtime/localWorkspaceTools.ts +42 -110
  9. package/agent-runtime/runtimeToolPolicy.ts +2 -11
  10. package/agent-runtime/runtimeToolSurface.ts +198 -0
  11. package/agent-runtime/types.ts +1 -0
  12. package/agentAliases.ts +2 -1
  13. package/agentRunCommand.ts +10 -32
  14. package/agentRuntimeLocal.ts +1 -0
  15. package/ai/agent/_executeModel.ts +146 -0
  16. package/ai/agent/agentSlice.ts +556 -1
  17. package/ai/agent/appWorkingMemory.ts +126 -0
  18. package/ai/agent/buildEditingContext.ts +378 -0
  19. package/ai/agent/buildSystemPrompt.ts +585 -0
  20. package/ai/agent/canvasEditingContext.ts +49 -0
  21. package/ai/agent/cleanAgentMessages.ts +140 -0
  22. package/ai/agent/cliChatClient.ts +153 -0
  23. package/ai/agent/cliExecutor.ts +314 -40
  24. package/ai/agent/contextCompiler.ts +107 -0
  25. package/ai/agent/contextLayerContract.ts +44 -0
  26. package/ai/agent/createAgentSchema.ts +272 -0
  27. package/ai/agent/currentTimeContext.ts +65 -0
  28. package/ai/agent/executeToolCall.ts +58 -0
  29. package/ai/agent/fetchAgentContexts.ts +42 -0
  30. package/ai/agent/generatePrompt.ts +3 -0
  31. package/ai/agent/getFullChatContextKeys.ts +168 -0
  32. package/ai/agent/guidedCreation/capabilities.ts +84 -0
  33. package/ai/agent/guidedCreation/types.ts +38 -0
  34. package/ai/agent/isLiveAudioOnlyAgent.ts +26 -0
  35. package/ai/agent/liveAudioModel.ts +2 -0
  36. package/ai/agent/pageBuilderHandoffRules.ts +75 -0
  37. package/ai/agent/persistMessageWithFixedId.ts +37 -0
  38. package/ai/agent/planSlice.ts +259 -0
  39. package/ai/agent/referenceUtils.ts +229 -0
  40. package/ai/agent/runAgentBackground.ts +310 -0
  41. package/ai/agent/runAgentClientLoop.ts +164 -0
  42. package/ai/agent/runtimeGuidance.ts +116 -0
  43. package/ai/agent/serverOrigin.ts +7 -0
  44. package/ai/agent/startParallelAgentStreams.ts +424 -0
  45. package/ai/agent/startupProtocol.ts +53 -0
  46. package/ai/agent/streamAgentChatTurn.ts +2001 -0
  47. package/ai/agent/streamAgentChatTurnUtils.ts +860 -0
  48. package/ai/agent/toolFailureGuard.ts +99 -0
  49. package/ai/agent/types.ts +73 -0
  50. package/ai/agent/utils/imageOutput.ts +37 -0
  51. package/ai/agent/utils/publicImageAgentMode.ts +26 -0
  52. package/ai/ai.locale.ts +1095 -0
  53. package/ai/chat/accumulateToolCallChunks.ts +126 -0
  54. package/ai/chat/fetchUtils.ts +143 -0
  55. package/ai/chat/inlineImageUrlsForCustomProvider.ts +117 -0
  56. package/ai/chat/parseApiError.ts +67 -0
  57. package/ai/chat/parseMultilineSSE.ts +95 -0
  58. package/ai/chat/sendOpenAICompletionsRequest.ts +897 -0
  59. package/ai/chat/sendOpenAIResponseRequest.ts +720 -0
  60. package/ai/chat/serverProxyRetry.ts +102 -0
  61. package/ai/chat/shouldUseServerProxy.ts +18 -0
  62. package/ai/chat/streamRetry.ts +46 -0
  63. package/ai/chat/updateTotalUsage.ts +89 -0
  64. package/ai/context/buildReferenceContext.ts +437 -0
  65. package/ai/context/retention.ts +165 -0
  66. package/ai/context/tokenUtils.ts +78 -0
  67. package/ai/llm/agentCapabilities.ts +74 -0
  68. package/ai/llm/deepinfra.ts +79 -0
  69. package/ai/llm/fireworks.ts +68 -0
  70. package/ai/llm/generateRequestBody.ts +165 -0
  71. package/ai/llm/getModelContextWindow.ts +93 -0
  72. package/ai/llm/getPricing.ts +252 -0
  73. package/ai/llm/imagePricing.ts +66 -0
  74. package/ai/llm/isResponseAPIModel.ts +13 -0
  75. package/ai/llm/kimi.ts +23 -0
  76. package/ai/llm/mimo.ts +99 -0
  77. package/ai/llm/mistral.ts +21 -0
  78. package/ai/llm/models.ts +45 -0
  79. package/ai/llm/openrouterModels.ts +6 -0
  80. package/ai/llm/providers.ts +313 -0
  81. package/ai/llm/reasoningModels.ts +27 -0
  82. package/ai/llm/types.ts +82 -0
  83. package/ai/llm/usageRequestOptions.ts +59 -0
  84. package/ai/memory/queryShared.ts +161 -0
  85. package/ai/memory/recentRelationshipRecap.ts +247 -0
  86. package/ai/memory/remember.ts +167 -0
  87. package/ai/memory/store.ts +20 -0
  88. package/ai/memory/storeShared.ts +76 -0
  89. package/ai/memory/types.ts +46 -0
  90. package/ai/memory/understanding.ts +349 -0
  91. package/ai/memory/understandingGreeting.ts +264 -0
  92. package/ai/policy/personalizationDialog.ts +333 -0
  93. package/ai/policy/runtimePolicy.ts +454 -0
  94. package/ai/policy/selfUpdateFields.ts +48 -0
  95. package/ai/policy/types.ts +64 -0
  96. package/ai/skills/referenceRuntime.ts +274 -0
  97. package/ai/skills/skillDiagnostics.ts +251 -0
  98. package/ai/skills/skillDocBuilder.ts +139 -0
  99. package/ai/skills/skillSummaryMarker.ts +26 -0
  100. package/ai/token/calculatePrice.ts +576 -0
  101. package/ai/token/missingUsageEstimate.ts +42 -0
  102. package/ai/token/normalizeUsage.ts +124 -0
  103. package/ai/token/openaiImageGenerationUsage.ts +56 -0
  104. package/ai/token/prepareTokenUsageData.ts +93 -0
  105. package/ai/token/resolveBillingTarget.ts +52 -0
  106. package/ai/token/saveTokenRecord.ts +53 -0
  107. package/ai/token/types.ts +103 -0
  108. package/ai/tools/agent/agentTools.ts +235 -0
  109. package/ai/tools/agent/agentUpdateShared.ts +311 -0
  110. package/ai/tools/agent/callAgentTool.ts +139 -0
  111. package/ai/tools/agent/createAgentTool.ts +512 -0
  112. package/ai/tools/agent/createDialogTool.ts +69 -0
  113. package/ai/tools/agent/createSkillAgentTool.ts +62 -0
  114. package/ai/tools/agent/parallelBudget.ts +221 -0
  115. package/ai/tools/agent/prepareAgentDraftTool.ts +159 -0
  116. package/ai/tools/agent/presets/appBuilderPreset.ts +154 -0
  117. package/ai/tools/agent/runLlmTool.ts +96 -0
  118. package/ai/tools/agent/runStreamingAgentTool.ts +73 -0
  119. package/ai/tools/agent/skillAgentArgs.ts +106 -0
  120. package/ai/tools/agent/startAgentDialogTool.ts +53 -0
  121. package/ai/tools/agent/streamParallelAgentsTool.ts +123 -0
  122. package/ai/tools/agent/updateAgentTool.ts +96 -0
  123. package/ai/tools/agent/updateSelfTool.ts +113 -0
  124. package/ai/tools/amazonProductScraperTool.ts +86 -0
  125. package/ai/tools/apifyActorClient.ts +45 -0
  126. package/ai/tools/appEditGuard.ts +372 -0
  127. package/ai/tools/appReadSnapshot.ts +153 -0
  128. package/ai/tools/appTools.ts +1549 -0
  129. package/ai/tools/applyEditTool.ts +259 -0
  130. package/ai/tools/applyLineEditsTool.ts +315 -0
  131. package/ai/tools/browserTools/click.ts +33 -0
  132. package/ai/tools/browserTools/closeSession.ts +29 -0
  133. package/ai/tools/browserTools/common.ts +27 -0
  134. package/ai/tools/browserTools/openSession.ts +48 -0
  135. package/ai/tools/browserTools/readContent.ts +38 -0
  136. package/ai/tools/browserTools/selectOption.ts +46 -0
  137. package/ai/tools/browserTools/typeText.ts +42 -0
  138. package/ai/tools/category/createCategoryTool.ts +66 -0
  139. package/ai/tools/category/queryContentsByCategoryTool.ts +69 -0
  140. package/ai/tools/category/updateContentCategoryTool.ts +75 -0
  141. package/ai/tools/cfBrowserTools.ts +319 -0
  142. package/ai/tools/cfSpeechToTextTool.ts +49 -0
  143. package/ai/tools/checkEnvTool.ts +102 -0
  144. package/ai/tools/cloudflareCrawlTool.ts +289 -0
  145. package/ai/tools/codeSearchTool.ts +123 -0
  146. package/ai/tools/codeTools.ts +101 -0
  147. package/ai/tools/convertMarxistsBookTool.ts +103 -0
  148. package/ai/tools/createDocTool.ts +132 -0
  149. package/ai/tools/createSkillDocTool.ts +155 -0
  150. package/ai/tools/createWorkflowTool.ts +154 -0
  151. package/ai/tools/delayTool.ts +31 -0
  152. package/ai/tools/deleteSpacesTool.ts +325 -0
  153. package/ai/tools/deleteSpacesToolModel.ts +159 -0
  154. package/ai/tools/devReloadUtils.ts +29 -0
  155. package/ai/tools/dialogMessageSearch.ts +137 -0
  156. package/ai/tools/doctorSkillTool.ts +72 -0
  157. package/ai/tools/ecommerceScraperTool.ts +86 -0
  158. package/ai/tools/emailTools.ts +549 -0
  159. package/ai/tools/evalSkillTool.ts +92 -0
  160. package/ai/tools/exaSearchTool.ts +63 -0
  161. package/ai/tools/execShellTool.ts +266 -0
  162. package/ai/tools/executeSqlTool.ts +192 -0
  163. package/ai/tools/fetchWebpageSupport.ts +333 -0
  164. package/ai/tools/fetchWebpageTool.ts +97 -0
  165. package/ai/tools/geminiImagePreviewTool.ts +386 -0
  166. package/ai/tools/generateDocxTool.ts +215 -0
  167. package/ai/tools/googleSearchScraperTool.ts +106 -0
  168. package/ai/tools/importDataTool.ts +133 -0
  169. package/ai/tools/importSkillTool.ts +162 -0
  170. package/ai/tools/index.ts +2308 -0
  171. package/ai/tools/jdProductScraperTool.ts +821 -0
  172. package/ai/tools/listUserSpacesTool.ts +113 -0
  173. package/ai/tools/localFilesTool.ts +276 -0
  174. package/ai/tools/marxistsOfflineBook.ts +253 -0
  175. package/ai/tools/modelUsageTools.ts +206 -0
  176. package/ai/tools/noloWorkspaceReadTools.ts +467 -0
  177. package/ai/tools/olmOcrTool.ts +33 -0
  178. package/ai/tools/openaiImageTool.ts +267 -0
  179. package/ai/tools/prepareTools.ts +23 -0
  180. package/ai/tools/readDocTool.ts +88 -0
  181. package/ai/tools/readFileTool.ts +214 -0
  182. package/ai/tools/readTool.ts +194 -0
  183. package/ai/tools/readXPostTool.ts +229 -0
  184. package/ai/tools/readXhsProfileTool.ts +627 -0
  185. package/ai/tools/rememberMemoryTool.ts +84 -0
  186. package/ai/tools/remotionVideoTool.ts +151 -0
  187. package/ai/tools/searchDialogMessagesTool.ts +222 -0
  188. package/ai/tools/searchWorkspaceTool.ts +259 -0
  189. package/ai/tools/skillFollowup.ts +86 -0
  190. package/ai/tools/surfWeatherTool.ts +169 -0
  191. package/ai/tools/table/addTableRowTool.ts +217 -0
  192. package/ai/tools/table/createTableTool.ts +315 -0
  193. package/ai/tools/table/rowTools.ts +386 -0
  194. package/ai/tools/table/schemaTools.ts +244 -0
  195. package/ai/tools/table/shareTableTool.ts +148 -0
  196. package/ai/tools/table/toolShared.ts +129 -0
  197. package/ai/tools/taobaoTmallProductScraperTool.ts +49 -0
  198. package/ai/tools/toolApiClient.ts +279 -0
  199. package/ai/tools/toolResultError.ts +42 -0
  200. package/ai/tools/toolRunSlice.ts +303 -0
  201. package/ai/tools/toolSchemaCompatibility.ts +53 -0
  202. package/ai/tools/uiAskChoiceTool.ts +104 -0
  203. package/ai/tools/updateContentTitleTool.ts +84 -0
  204. package/ai/tools/updateDocTool.ts +105 -0
  205. package/ai/tools/updateUserPreferenceProfileTool.ts +153 -0
  206. package/ai/tools/wereadGatewayTool.ts +152 -0
  207. package/ai/tools/whisperTool.ts +76 -0
  208. package/ai/tools/writeFileTool.ts +213 -0
  209. package/ai/tools/youtubeScraperTool.ts +116 -0
  210. package/ai/tools/ziweiChartTool.ts +678 -0
  211. package/ai/types.ts +55 -0
  212. package/ai/workflow/workflowExecutor.ts +323 -0
  213. package/ai/workflow/workflowSlice.ts +73 -0
  214. package/ai/workflow/workflowTypes.ts +106 -0
  215. package/app/actions/syncAppRecord.ts +73 -0
  216. package/app/constants/animationSets.ts +21 -0
  217. package/app/constants/appEditor.ts +99 -0
  218. package/app/favorite/favoriteSlice.ts +690 -0
  219. package/app/favorite/type.ts +43 -0
  220. package/app/hooks/deleteDbKey.ts +233 -0
  221. package/app/i18n/client.ts +13 -0
  222. package/app/i18n/i18n.base.ts +14 -0
  223. package/app/i18n/i18n.config.ts +77 -0
  224. package/app/i18n/index.ts +15 -0
  225. package/app/i18n/mapLanguage.ts +11 -0
  226. package/app/i18n/translations/appBuilder.locale.ts +453 -0
  227. package/app/i18n/translations/error.locale.ts +246 -0
  228. package/app/i18n/translations/interface.locale.ts +2174 -0
  229. package/app/i18n/translations/pricing.locale.ts +397 -0
  230. package/app/i18n/translations/privacy.locale.ts +168 -0
  231. package/app/i18n/translations/seo.locale.ts +129 -0
  232. package/app/i18n/translations/terms.locale.ts +124 -0
  233. package/app/i18n/types.ts +6 -0
  234. package/app/notifications/model.ts +77 -0
  235. package/app/notifications/notificationSlice.ts +141 -0
  236. package/app/reducer.ts +36 -0
  237. package/app/settings/dbActionThunks.ts +34 -0
  238. package/app/settings/defaultSpacePreference.ts +87 -0
  239. package/app/settings/settingSlice.tsx +1212 -0
  240. package/app/settings/settingsRecord.ts +8 -0
  241. package/app/stateViews/runtime.ts +90 -0
  242. package/app/store.ts +55 -0
  243. package/app/theme/colors.ts +280 -0
  244. package/app/theme/fontPreference.ts +77 -0
  245. package/app/theme/theme.config.ts +120 -0
  246. package/app/theme/themeModeBootstrap.ts +123 -0
  247. package/app/types/appSummary.ts +114 -0
  248. package/app/types.ts +358 -0
  249. package/app/utils/appKeys.ts +55 -0
  250. package/app/utils/async.ts +28 -0
  251. package/app/utils/desktopAgentRuntimeTurnClient.ts +73 -0
  252. package/app/utils/env.ts +17 -0
  253. package/app/utils/fileUtils.ts +229 -0
  254. package/app/utils/imageUtils.ts +274 -0
  255. package/app/utils/myContentItems.ts +289 -0
  256. package/app/utils/retryAfter.ts +36 -0
  257. package/app/utils/retryFetch.ts +61 -0
  258. package/app/utils/toast.ts +3 -0
  259. package/auth/action/signUpAction.ts +227 -0
  260. package/auth/adminPermissions.ts +18 -0
  261. package/auth/authSlice.ts +531 -0
  262. package/auth/client/loginRequest.ts +14 -0
  263. package/auth/resetAuthScopedClientState.ts +27 -0
  264. package/auth/routes.ts +178 -0
  265. package/auth/token.ts +63 -0
  266. package/auth/types.ts +40 -0
  267. package/chat/chat.locale.ts +813 -0
  268. package/chat/dialog/actions/addCybotAction.ts +52 -0
  269. package/chat/dialog/actions/addReferenceKeysAction.ts +62 -0
  270. package/chat/dialog/actions/builtinDialogLlm.ts +35 -0
  271. package/chat/dialog/actions/cleanupCliSession.ts +40 -0
  272. package/chat/dialog/actions/createDialogAction.ts +379 -0
  273. package/chat/dialog/actions/createScheduledTaskAction.ts +78 -0
  274. package/chat/dialog/actions/handleSendMessageAction.ts +197 -0
  275. package/chat/dialog/actions/handleSendMessageResolver.ts +27 -0
  276. package/chat/dialog/actions/removeCybotAction.ts +6 -0
  277. package/chat/dialog/actions/removeDialogAgentAction.ts +44 -0
  278. package/chat/dialog/actions/replacePrimaryCybotAction.ts +6 -0
  279. package/chat/dialog/actions/setPrimaryDialogAgentAction.ts +52 -0
  280. package/chat/dialog/actions/updateDialogSummaryAction.ts +430 -0
  281. package/chat/dialog/actions/updateDialogTitleAction.ts +151 -0
  282. package/chat/dialog/actions/updateDialogTitlePolicy.ts +30 -0
  283. package/chat/dialog/actions/updateTokensAction.ts +233 -0
  284. package/chat/dialog/dialogAgents.ts +72 -0
  285. package/chat/dialog/dialogSlice.ts +872 -0
  286. package/chat/dialog/dialogTitle.ts +81 -0
  287. package/chat/dialog/dialogTokenStats.ts +12 -0
  288. package/chat/dialog/dialogUrl.ts +6 -0
  289. package/chat/dialog/goal.ts +108 -0
  290. package/chat/dialog/objectAssistantRegistry.ts +286 -0
  291. package/chat/dialog/schedule.ts +17 -0
  292. package/chat/messages/fetchAndCacheMessages.ts +119 -0
  293. package/chat/messages/fetchConvMsgs.ts +51 -0
  294. package/chat/messages/fileUrl.ts +13 -0
  295. package/chat/messages/messageAgent.ts +8 -0
  296. package/chat/messages/messageContent.ts +199 -0
  297. package/chat/messages/messageContract.ts +88 -0
  298. package/chat/messages/messageSlice.ts +1367 -0
  299. package/chat/messages/toolThunks.ts +625 -0
  300. package/cli/agentAliases.ts +2 -1
  301. package/cli/agentRunCommand.ts +10 -32
  302. package/cli/agentRuntimeLocal.ts +1 -0
  303. package/cli/client/agentRun.ts +67 -95
  304. package/cli/client/localRuntimeAdapter.ts +323 -54
  305. package/cli/commandRegistry.ts +2 -2
  306. package/cli/machineWsRunDispatch.ts +51 -6
  307. package/cli/offlineMarxistsAgentCommand.ts +6 -4
  308. package/client/agentConfigResolver.test.ts +2 -2
  309. package/client/agentRun.test.ts +175 -57
  310. package/client/agentRun.ts +67 -95
  311. package/client/localRuntimeAdapter.test.ts +682 -37
  312. package/client/localRuntimeAdapter.ts +323 -54
  313. package/client/localRuntimeDryRun.test.ts +23 -9
  314. package/client/localToolPolicy.test.ts +4 -4
  315. package/commandRegistry.ts +2 -2
  316. package/core/builtinAgents.ts +209 -0
  317. package/core/config.ts +15 -0
  318. package/core/crypto.ts +51 -0
  319. package/core/generateKeyPairFromSeedV1.ts +15 -0
  320. package/core/generateMainKey.ts +22 -0
  321. package/core/init.ts +41 -0
  322. package/core/localOrigins.ts +8 -0
  323. package/core/password.ts +13 -0
  324. package/core/prefix.ts +23 -0
  325. package/create/editor/transforms/fromMarkdown/index.ts +260 -0
  326. package/create/editor/transforms/fromMarkdown/inline.ts +285 -0
  327. package/create/editor/transforms/fromMarkdown/table.ts +130 -0
  328. package/create/editor/transforms/markdownToSlate.ts +24 -0
  329. package/create/editor/transforms/slateToRenderMarkdown.ts +218 -0
  330. package/create/editor/transforms/slateToSimplifiedMarkdown.ts +224 -0
  331. package/create/editor/transforms/slateToText.ts +33 -0
  332. package/create/editor/utils/slateUtils.ts +233 -0
  333. package/create/space/addSpaceAction.ts +193 -0
  334. package/create/space/category/categoryActions.ts +427 -0
  335. package/create/space/changeSpaceAction.ts +36 -0
  336. package/create/space/constants.ts +8 -0
  337. package/create/space/content/addContentAction.ts +116 -0
  338. package/create/space/content/contentThunks.ts +90 -0
  339. package/create/space/content/deleteContentFromSpaceAction.ts +187 -0
  340. package/create/space/content/deleteMultipleContentAction.ts +112 -0
  341. package/create/space/content/moveContentAction.ts +285 -0
  342. package/create/space/content/updateContentCategoryAction.ts +154 -0
  343. package/create/space/content/updateContentTitleAction.ts +151 -0
  344. package/create/space/content/uploadAndAddFileToSpaceAction.ts +98 -0
  345. package/create/space/contentKeyUtils.ts +117 -0
  346. package/create/space/deleteSpaceAction.ts +276 -0
  347. package/create/space/fetchSpaceAction.ts +70 -0
  348. package/create/space/fetchSpaceSidebarStateAction.ts +26 -0
  349. package/create/space/loadDefaultSpaceAction.ts +57 -0
  350. package/create/space/member/addMemberAction.ts +79 -0
  351. package/create/space/member/fetchUserSpaceMembershipsAction.ts +386 -0
  352. package/create/space/member/memberThunks.ts +47 -0
  353. package/create/space/member/removeMemberAction.ts +67 -0
  354. package/create/space/resolvePreferredSpaceId.ts +113 -0
  355. package/create/space/sidebarVisibleTypes.ts +241 -0
  356. package/create/space/space.locale.ts +1087 -0
  357. package/create/space/spaceAccess.ts +182 -0
  358. package/create/space/spaceCollapsedState.ts +54 -0
  359. package/create/space/spaceKeys.ts +65 -0
  360. package/create/space/spaceSlice.ts +328 -0
  361. package/create/space/spaceThunks.ts +410 -0
  362. package/create/space/types.ts +27 -0
  363. package/create/space/updateSpaceAction.ts +107 -0
  364. package/create/space/utils/permissions.ts +47 -0
  365. package/create/types.ts +21 -0
  366. package/database/actions/agentReadResolution.ts +33 -0
  367. package/database/actions/common.ts +243 -0
  368. package/database/actions/deleteFile.ts +40 -0
  369. package/database/actions/fileContent.ts +125 -0
  370. package/database/actions/patch.ts +155 -0
  371. package/database/actions/read.ts +358 -0
  372. package/database/actions/readAndWait.ts +260 -0
  373. package/database/actions/readRequestManager.ts +120 -0
  374. package/database/actions/readResolution.ts +125 -0
  375. package/database/actions/remove.ts +94 -0
  376. package/database/actions/replication.ts +477 -0
  377. package/database/actions/upload.ts +186 -0
  378. package/database/actions/upsert.ts +56 -0
  379. package/database/actions/write.ts +146 -0
  380. package/database/authority/ownerKey.ts +80 -0
  381. package/database/authority/recordAuthority.ts +67 -0
  382. package/database/authority/userAuthorityRegistry.ts +54 -0
  383. package/database/client/fetchUserData.ts +61 -0
  384. package/database/dbActionThunks.ts +1 -0
  385. package/database/dbSlice.ts +149 -0
  386. package/database/fileRing.ts +51 -0
  387. package/database/fileStorage.ts +232 -0
  388. package/database/fileUrl.ts +34 -0
  389. package/database/keys.ts +767 -0
  390. package/database/queryPrefixes.ts +14 -0
  391. package/database/requests.ts +443 -0
  392. package/database/runtimeServerContext.ts +54 -0
  393. package/database/server/levelAuthorityStore.ts +20 -1
  394. package/database/tenantPlacement.ts +57 -0
  395. package/database/userPreferenceRegister.ts +131 -0
  396. package/database/utils/ulid.ts +1 -0
  397. package/integrations/anthropic/anthropicModels.ts +47 -0
  398. package/integrations/deepseek/models.ts +37 -0
  399. package/integrations/google/models.ts +341 -0
  400. package/integrations/openai/chatCompletionStreamMode.ts +10 -0
  401. package/integrations/openai/filterAndCleanMessages.ts +284 -0
  402. package/integrations/openai/flexTier.ts +102 -0
  403. package/integrations/openai/generateOpenAIRequestBody.ts +274 -0
  404. package/integrations/openai/generateResponseRequestBody.ts +77 -0
  405. package/integrations/openai/models.ts +271 -0
  406. package/integrations/openai/providerBodyCompatibility.ts +23 -0
  407. package/integrations/openai/responsesHelpers.ts +297 -0
  408. package/integrations/x-reader/types.ts +109 -0
  409. package/integrations/xai/models.ts +13 -0
  410. package/integrations/xhs-reader/analyze/profileAnalyzer.ts +205 -0
  411. package/integrations/xhs-reader/backends/playwrightProfileCollector.ts +624 -0
  412. package/integrations/xhs-reader/bridge/readXhsProfileWithBridge.ts +227 -0
  413. package/integrations/xhs-reader/client/xhsWebApiClient.ts +229 -0
  414. package/integrations/xhs-reader/normalize.ts +390 -0
  415. package/integrations/xhs-reader/orchestrator.ts +178 -0
  416. package/integrations/xhs-reader/redaction.ts +68 -0
  417. package/integrations/xhs-reader/types.ts +244 -0
  418. package/integrations/xhs-reader/url.ts +57 -0
  419. package/machineWsRunDispatch.ts +51 -6
  420. package/offlineMarxistsAgentCommand.ts +6 -4
  421. package/package.json +430 -3
  422. package/render/page/createPageAction.ts +183 -0
  423. package/render/page/docSlice.ts +468 -0
  424. package/render/page/types.ts +17 -0
  425. package/render/table/createTableAction.ts +270 -0
  426. package/render/table/deleteTableAction.ts +193 -0
  427. package/render/table/fetchAndCacheTableRows.ts +174 -0
  428. package/render/table/tableSlice.ts +1106 -0
  429. package/render/table/toolValueUtils.ts +363 -0
  430. package/render/table/types.ts +252 -0
  431. package/render/table/utils/tableSerialization.ts +50 -0
  432. package/server/handlers/agentRun/types.ts +104 -0
  433. package/share/action.ts +225 -0
  434. package/share/helpers.ts +302 -0
  435. package/share/keys.ts +243 -0
  436. package/share/publicSharePolicy.ts +27 -0
  437. package/share/shareSlice.ts +53 -0
  438. package/share/types.ts +100 -0
@@ -0,0 +1,244 @@
1
+ // XHS Desktop Connector - Read-only types
2
+
3
+ export type XhsFailureCode =
4
+ | "not_logged_in"
5
+ | "login_required"
6
+ | "blocked"
7
+ | "empty_profile_state"
8
+ | "profile_not_found"
9
+ | "note_not_found"
10
+ | "rate_limited"
11
+ | "network_error"
12
+ | "parse_error"
13
+ | "comment_disabled"
14
+ | "unknown";
15
+
16
+ export type XhsReadFailure = {
17
+ ok: false;
18
+ code: XhsFailureCode;
19
+ message: string;
20
+ fetchedAt: string;
21
+ };
22
+
23
+ export type XhsReadSuccess<T> = {
24
+ ok: true;
25
+ data: T;
26
+ fetchedAt: string;
27
+ };
28
+
29
+ export type XhsReadResult<T> = XhsReadSuccess<T> | XhsReadFailure;
30
+
31
+ // --- Collector diagnostics (redacted, no secrets) ---
32
+
33
+ export type XhsCollectorDiagnostic = {
34
+ /** Why the collector returned empty or failed data. */
35
+ code: XhsFailureCode;
36
+ /** Human-readable explanation. */
37
+ message: string;
38
+ /** Page title at the time of collection (may be empty). */
39
+ pageTitle?: string;
40
+ /** Final page URL after navigation (may differ if redirected). */
41
+ finalUrl?: string;
42
+ /** Whether a login wall / prompt was detected on the page. */
43
+ loginDetected?: boolean;
44
+ /** Whether a captcha / verification wall was detected. */
45
+ captchaDetected?: boolean;
46
+ /** Whether __INITIAL_STATE__ was present and non-empty. */
47
+ initialStatePresent?: boolean;
48
+ /** Number of note-like keys found inside __INITIAL_STATE__. */
49
+ initialStateNoteCount?: number;
50
+ /** Number of user_posted API responses captured. */
51
+ capturedApiResponseCount?: number;
52
+ /** HTTP status of the first captured user_posted response (if any). */
53
+ firstApiResponseStatus?: number;
54
+ /** Whether the page URL after navigation looks like a redirect to login. */
55
+ redirectedToLogin?: boolean;
56
+ };
57
+
58
+ // --- Profile ---
59
+
60
+ export type XhsProfile = {
61
+ userId: string;
62
+ nickname: string;
63
+ redId?: string;
64
+ avatarUrl?: string;
65
+ desc?: string;
66
+ ipLocation?: string;
67
+ gender?: string; // "male" | "female" | "0" (unknown)
68
+ interactionCounts?: {
69
+ follows?: number;
70
+ fans?: number;
71
+ likesAndCollects?: number;
72
+ };
73
+ };
74
+
75
+ export type XhsNoteSummary = {
76
+ noteId: string;
77
+ title?: string;
78
+ coverUrl?: string;
79
+ type?: "normal" | "video";
80
+ likedCount?: number;
81
+ // kept from initial state / user_posted page
82
+ xsecToken?: string; // internal use only - must not appear in public exports
83
+ };
84
+
85
+ // --- Note Detail ---
86
+
87
+ export type XhsNoteDetail = {
88
+ noteId: string;
89
+ title: string;
90
+ desc: string;
91
+ type: "normal" | "video";
92
+ userId: string;
93
+ nickname: string;
94
+ avatarUrl?: string;
95
+ imageUrls?: string[];
96
+ videoUrl?: string;
97
+ tagList?: string[];
98
+ ipLocation?: string;
99
+ metrics: {
100
+ likedCount: number;
101
+ collectedCount: number;
102
+ commentCount: number;
103
+ shareCount: number;
104
+ };
105
+ createdAt?: string;
106
+ lastUpdateTime?: string;
107
+ };
108
+
109
+ // --- Comments ---
110
+
111
+ export type XhsComment = {
112
+ commentId: string;
113
+ userId: string;
114
+ nickname: string;
115
+ avatarUrl?: string;
116
+ content: string;
117
+ likeCount: number;
118
+ subCommentCount: number;
119
+ subComments?: XhsComment[]; // embedded samples only
120
+ ipLocation?: string;
121
+ createdAt?: string;
122
+ };
123
+
124
+ export type XhsCommentPage = {
125
+ comments: XhsComment[];
126
+ hasMore: boolean;
127
+ cursor?: string;
128
+ };
129
+
130
+ // --- Analyzed Result ---
131
+
132
+ export type XhsTopNote = {
133
+ noteId: string;
134
+ title?: string;
135
+ count: number;
136
+ };
137
+
138
+ export type XhsCommentBucket = {
139
+ label: string;
140
+ count: number;
141
+ sampleCommentIds: string[];
142
+ };
143
+
144
+ export type XhsProfileAnalysis = {
145
+ totalNotes: number;
146
+ highestLikedNote: XhsTopNote | null;
147
+ highestCommentedNote: XhsTopNote | null;
148
+ highestCollectedNote: XhsTopNote | null;
149
+ highestSharedNote: XhsTopNote | null;
150
+ commentBuckets: XhsCommentBucket[];
151
+ topLikedComments: XhsComment[];
152
+ };
153
+
154
+ // --- Collection Status (assisted mode) ---
155
+
156
+ export type XhsCollectionMode = "conservative" | "assisted";
157
+ export type XhsAssistedAction = "snapshot" | "read_more_notes" | "read_comments";
158
+
159
+ export type XhsNextSuggestedAction = {
160
+ action: "read_more_notes" | "read_comments" | "save_to_table" | "manual_login";
161
+ label: string;
162
+ reason: string;
163
+ };
164
+
165
+ export type XhsCollectionStatus = {
166
+ mode: XhsCollectionMode;
167
+ action: XhsAssistedAction;
168
+ extendedCollectionConsent: boolean;
169
+ assistedStepCount: number;
170
+ limits: {
171
+ maxAssistedSteps: number;
172
+ maxScrollPages: number;
173
+ maxCommentPagesPerNote: number;
174
+ includeComments: boolean;
175
+ };
176
+ nextSuggestedAction?: XhsNextSuggestedAction;
177
+ };
178
+
179
+ // --- Full collection result ---
180
+
181
+ export type XhsProfileCollection = {
182
+ profile: XhsProfile;
183
+ notes: XhsNoteSummary[];
184
+ noteDetails: XhsNoteDetail[];
185
+ commentsByNote: Record<string, XhsComment[]>;
186
+ analysis: XhsProfileAnalysis;
187
+ /** Present only when the collector detected an issue. Never contains secrets. */
188
+ diagnostic?: XhsCollectorDiagnostic;
189
+ /** Collection status for assisted automation mode. */
190
+ collectionStatus?: XhsCollectionStatus;
191
+ };
192
+
193
+ // --- URL parsing result ---
194
+
195
+ export type XhsParsedProfileUrl = {
196
+ userId: string;
197
+ canonicalUrl: string;
198
+ };
199
+
200
+ export type XhsParsedNoteUrl = {
201
+ noteId: string;
202
+ canonicalUrl: string;
203
+ xsecToken?: string; // preserved internally only
204
+ };
205
+
206
+ // --- Redaction ---
207
+
208
+ export type XhsConnectorOptions = {
209
+ profileUrl: string;
210
+ maxScrollPages?: number; // default 0
211
+ enrichDetails?: boolean; // default false
212
+ includeComments?: boolean; // default false
213
+ maxCommentPagesPerNote?: number; // default 1
214
+ headless?: boolean; // default true
215
+ cookieDir?: string;
216
+ fetchImpl?: typeof fetch;
217
+ /** Assisted mode: "conservative" (default) or "assisted" */
218
+ collectionMode?: XhsCollectionMode;
219
+ /** Which action to perform in assisted mode */
220
+ assistedAction?: XhsAssistedAction;
221
+ /** Max assisted steps (1..3), bounds scroll/comment pages */
222
+ maxAssistedSteps?: number;
223
+ };
224
+
225
+ // Helper to create failure
226
+ export function createXhsFailure(args: {
227
+ code: XhsFailureCode;
228
+ message: string;
229
+ }): XhsReadFailure {
230
+ return {
231
+ ok: false,
232
+ code: args.code,
233
+ message: args.message,
234
+ fetchedAt: new Date().toISOString(),
235
+ };
236
+ }
237
+
238
+ export function createXhsSuccess<T>(data: T): XhsReadSuccess<T> {
239
+ return {
240
+ ok: true,
241
+ data,
242
+ fetchedAt: new Date().toISOString(),
243
+ };
244
+ }
@@ -0,0 +1,57 @@
1
+ import type { XhsParsedProfileUrl, XhsParsedNoteUrl } from "./types";
2
+
3
+ const PROFILE_RE =
4
+ /(?:(?:https?:\/\/)?(?:www\.)?xiaohongshu\.com)?\/user\/profile\/([a-f0-9]{24})(?:\?[^#]*)?/i;
5
+
6
+ const NOTE_RE =
7
+ /(?:(?:https?:\/\/)?(?:www\.)?xiaohongshu\.com)?\/(?:explore|discovery\/item)\/([a-f0-9]{24})(?:\?[^#]*)?/i;
8
+
9
+ /**
10
+ * Parse a XHS profile URL and return userId + canonical URL.
11
+ * Accepts full URLs and path-only forms.
12
+ */
13
+ export function parseXhsProfileUrl(input: string): XhsParsedProfileUrl {
14
+ const match = input.match(PROFILE_RE);
15
+ if (!match) {
16
+ throw new Error(`Invalid XHS profile URL: ${input}`);
17
+ }
18
+ const userId = match[1];
19
+ return {
20
+ userId,
21
+ canonicalUrl: `https://www.xiaohongshu.com/user/profile/${userId}`,
22
+ };
23
+ }
24
+
25
+ /**
26
+ * Parse a XHS note URL and return noteId + canonical URL.
27
+ * The xsecToken query param is preserved in the result for internal use only.
28
+ */
29
+ export function parseXhsNoteUrl(input: string): XhsParsedNoteUrl {
30
+ const match = input.match(NOTE_RE);
31
+ if (!match) {
32
+ throw new Error(`Invalid XHS note URL: ${input}`);
33
+ }
34
+ const noteId = match[1];
35
+
36
+ // Extract xsec_token if present (internal use only)
37
+ let xsecToken: string | undefined;
38
+ try {
39
+ const urlObj = new URL(input.startsWith("http") ? input : `https://www.xiaohongshu.com${input}`);
40
+ xsecToken = urlObj.searchParams.get("xsec_token") ?? undefined;
41
+ } catch {
42
+ // ignore parse errors
43
+ }
44
+
45
+ return {
46
+ noteId,
47
+ canonicalUrl: `https://www.xiaohongshu.com/explore/${noteId}`,
48
+ xsecToken,
49
+ };
50
+ }
51
+
52
+ /**
53
+ * Validate that a string looks like a valid XHS note ID (24 hex chars).
54
+ */
55
+ export function isValidXhsId(id: string): boolean {
56
+ return /^[a-f0-9]{24}$/i.test(id);
57
+ }
@@ -20,9 +20,52 @@ type EnvLike = Record<string, string | undefined>;
20
20
  export type LocalCliExecutor = (
21
21
  provider: string,
22
22
  prompt: string,
23
- options: { model?: string; timeout?: number; cwd?: string; yolo?: boolean; env?: EnvLike }
23
+ options: {
24
+ model?: string;
25
+ timeout?: number;
26
+ cwd?: string;
27
+ yolo?: boolean;
28
+ env?: EnvLike;
29
+ imageInputs?: Array<{ source: string; materializedPath?: string }>;
30
+ }
24
31
  ) => Promise<{ text: string; raw?: string; elapsed?: number }>;
25
32
 
33
+ /**
34
+ * 从 connector payload 的 userInput 中提取 multimodal 内容。
35
+ * 如果 userInput 是字符串,直接返回 { text, imageUrls: [] }。
36
+ * 如果 userInput 是 multimodal content array(`[{ type: "text" }, { type: "image_url" }]`),
37
+ * 提取 text 和 image_url parts。
38
+ */
39
+ function extractMultimodalUserInput(userInput: unknown): {
40
+ text: string;
41
+ imageUrls: string[];
42
+ } {
43
+ if (typeof userInput === "string") {
44
+ return { text: userInput, imageUrls: [] };
45
+ }
46
+ if (!Array.isArray(userInput)) {
47
+ return { text: String(userInput ?? ""), imageUrls: [] };
48
+ }
49
+
50
+ const textParts: string[] = [];
51
+ const imageUrls: string[] = [];
52
+
53
+ for (const part of userInput) {
54
+ if (!part || typeof part !== "object") continue;
55
+ if ((part as any).type === "text" && typeof (part as any).text === "string") {
56
+ textParts.push((part as any).text);
57
+ } else if (
58
+ (part as any).type === "image_url" &&
59
+ typeof (part as any).image_url?.url === "string" &&
60
+ (part as any).image_url.url.trim()
61
+ ) {
62
+ imageUrls.push((part as any).image_url.url.trim());
63
+ }
64
+ }
65
+
66
+ return { text: textParts.join("\n"), imageUrls };
67
+ }
68
+
26
69
  type ConnectorRuntimePolicy = {
27
70
  runtimeTools?: string[];
28
71
  agentTools?: string[];
@@ -103,7 +146,6 @@ function summarizeRuntimePolicyForLogs(policy?: ConnectorRuntimePolicy) {
103
146
  workspaceMode: policy?.workspace?.mode ?? null,
104
147
  workspaceCwd: policy?.workspace?.cwd ?? null,
105
148
  shellEnabled: policy?.shell?.enabled ?? null,
106
- shellMode: policy?.shell?.mode ?? null,
107
149
  };
108
150
  }
109
151
 
@@ -188,13 +230,13 @@ function runtimeWorkspacePermissionPolicy(
188
230
  runtimeEnv: EnvLike,
189
231
  cwd: string
190
232
  ): PermissionPolicy | null {
233
+ void runtimeEnv;
191
234
  if (!requestsLocalWorkspaceRuntime(runtimePolicy)) return null;
192
235
  return {
193
236
  mode: "full_access",
194
237
  allowFilesystemRead: true,
195
238
  allowFilesystemWrite: true,
196
239
  allowShell:
197
- runtimeEnv.NOLO_LOCAL_SHELL_MODE === "worktree" &&
198
240
  Array.isArray(runtimePolicy?.runtimeTools) &&
199
241
  runtimePolicy.runtimeTools.includes("execShell"),
200
242
  writableRoots: [cwd],
@@ -332,8 +374,6 @@ async function defaultRunConnectorLocalRuntimeAgent(args: {
332
374
  requestId: args.parsed.requestId,
333
375
  agentKey,
334
376
  cwd: args.cwd,
335
- runtimeEnvShellModeBeforePolicy: args.runtimeEnv.NOLO_LOCAL_SHELL_MODE ?? null,
336
- runtimeEnvShellModeAfterPolicy: env.NOLO_LOCAL_SHELL_MODE ?? null,
337
377
  ...summarizeRuntimePolicyForLogs(policy),
338
378
  });
339
379
  const adapter = createCliLocalRuntimeAdapter({
@@ -454,7 +494,9 @@ export async function handleConnectorRunMessage(
454
494
  try {
455
495
  const machinePermissionPolicy = resolveMachineRunPermissionPolicy(agentConfig);
456
496
  const runtimePolicy = runtimePolicyFromConnectorPayload(parsed);
457
- const userInput = String(parsed.payload?.userInput ?? "");
497
+ const extractedInput = extractMultimodalUserInput(parsed.payload?.userInput);
498
+ const userInput = extractedInput.text;
499
+ const connectorImageUrls = extractedInput.imageUrls;
458
500
  const timeout = normalizeConnectorRunTimeoutMs(parsed.payload?.timeoutMs);
459
501
  let cwd = resolveConnectorRunCwd({ env: runtimeEnv, policy: machinePermissionPolicy });
460
502
  let runContent = "";
@@ -553,6 +595,9 @@ export async function handleConnectorRunMessage(
553
595
  effectiveRuntimeEnv.AUTH_TOKEN ||
554
596
  effectiveRuntimeEnv.AUTH,
555
597
  },
598
+ ...(connectorImageUrls.length > 0
599
+ ? { imageInputs: connectorImageUrls.map((url) => ({ source: url })) }
600
+ : {}),
556
601
  }).finally(() => clearInterval(heartbeat));
557
602
  logConnectorRun("agent.run.cli.result", {
558
603
  requestId: parsed.requestId,
@@ -40,15 +40,17 @@ function readFlagValue(args: string[], flag: string) {
40
40
  }
41
41
 
42
42
  function parseUserIdFromToken(token: string) {
43
- const payload = token.split(".")[0];
44
- if (!payload) return "";
43
+ const payload = token.split(".")[1];
44
+ if (!payload) return undefined;
45
45
  try {
46
46
  const normalized = payload.replace(/-/g, "+").replace(/_/g, "/");
47
47
  const padded = normalized + "=".repeat((4 - (normalized.length % 4)) % 4);
48
48
  const parsed = JSON.parse(Buffer.from(padded, "base64").toString("utf8"));
49
- return typeof parsed?.userId === "string" ? parsed.userId : "";
49
+ return typeof parsed?.userId === "string" && parsed.userId.trim()
50
+ ? parsed.userId.trim()
51
+ : undefined;
50
52
  } catch {
51
- return "";
53
+ return undefined;
52
54
  }
53
55
  }
54
56