nolo-cli 0.1.40 → 0.1.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -12
- package/agent-runtime/agentThread.ts +222 -0
- package/agent-runtime/agentThreadAdmission.ts +74 -0
- package/agent-runtime/dialogWritePlan.ts +42 -0
- package/agent-runtime/hostAdapter.ts +1 -0
- package/agent-runtime/hybridRecordStore.ts +5 -3
- package/agent-runtime/index.ts +43 -0
- package/agent-runtime/localLoop.ts +31 -2
- package/agent-runtime/localToolPolicy.ts +1 -0
- package/agent-runtime/localWorkspaceTools.ts +1258 -78
- package/agent-runtime/noloWorkspaceTools.ts +20 -1
- package/agent-runtime/runtimeToolPolicy.ts +1 -5
- package/agent-runtime/runtimeToolSurface.ts +1 -0
- package/agentAliases.ts +29 -9
- package/agentInternalCommandEntries.ts +11 -3
- package/agentMachineCommands.ts +1 -0
- package/agentRecordCommands.ts +2 -2
- package/agentRecordHelpers.ts +59 -6
- package/agentRunCommand.ts +84 -19
- package/ai/agent/_executeModel.ts +146 -0
- package/ai/agent/agentSlice.ts +556 -1
- package/ai/agent/appWorkingMemory.ts +126 -0
- package/ai/agent/buildEditingContext.ts +378 -0
- package/ai/agent/buildSystemPrompt.ts +599 -0
- package/ai/agent/canvasEditingContext.ts +49 -0
- package/ai/agent/cleanAgentMessages.ts +140 -0
- package/ai/agent/cliChatClient.ts +153 -0
- package/ai/agent/cliExecutor.ts +264 -46
- package/ai/agent/contextCompiler.ts +107 -0
- package/ai/agent/contextLayerContract.ts +44 -0
- package/ai/agent/createAgentSchema.ts +272 -0
- package/ai/agent/currentTimeContext.ts +65 -0
- package/ai/agent/executeToolCall.ts +58 -0
- package/ai/agent/fetchAgentContexts.ts +42 -0
- package/ai/agent/generatePrompt.ts +3 -0
- package/ai/agent/getFullChatContextKeys.ts +168 -0
- package/ai/agent/guidedCreation/capabilities.ts +84 -0
- package/ai/agent/guidedCreation/types.ts +38 -0
- package/ai/agent/isLiveAudioOnlyAgent.ts +26 -0
- package/ai/agent/liveAudioModel.ts +2 -0
- package/ai/agent/pageBuilderHandoffRules.ts +75 -0
- package/ai/agent/persistMessageWithFixedId.ts +37 -0
- package/ai/agent/planSlice.ts +259 -0
- package/ai/agent/referenceUtils.ts +229 -0
- package/ai/agent/runAgentBackground.ts +310 -0
- package/ai/agent/runAgentClientLoop.ts +164 -0
- package/ai/agent/runtimeGuidance.ts +116 -0
- package/ai/agent/serverOrigin.ts +7 -0
- package/ai/agent/startParallelAgentStreams.ts +424 -0
- package/ai/agent/startupProtocol.ts +53 -0
- package/ai/agent/streamAgentChatTurn.ts +2135 -0
- package/ai/agent/streamAgentChatTurnUtils.ts +923 -0
- package/ai/agent/toolFailureGuard.ts +99 -0
- package/ai/agent/types.ts +73 -0
- package/ai/agent/utils/imageOutput.ts +37 -0
- package/ai/agent/utils/publicImageAgentMode.ts +26 -0
- package/ai/ai.locale.ts +1165 -0
- package/ai/chat/accumulateToolCallChunks.ts +126 -0
- package/ai/chat/fetchUtils.ts +143 -0
- package/ai/chat/inlineImageUrlsForCustomProvider.ts +122 -0
- package/ai/chat/parseApiError.ts +67 -0
- package/ai/chat/parseMultilineSSE.ts +95 -0
- package/ai/chat/sendOpenAICompletionsRequest.ts +921 -0
- package/ai/chat/sendOpenAIResponseRequest.ts +720 -0
- package/ai/chat/serverProxyRetry.ts +102 -0
- package/ai/chat/shouldUseServerProxy.ts +18 -0
- package/ai/chat/streamRetry.ts +46 -0
- package/ai/chat/updateTotalUsage.ts +89 -0
- package/ai/context/buildReferenceContext.ts +437 -0
- package/ai/context/retention.ts +165 -0
- package/ai/context/tokenUtils.ts +78 -0
- package/ai/llm/agentCapabilities.ts +74 -0
- package/ai/llm/deepinfra.ts +79 -0
- package/ai/llm/fireworks.ts +68 -0
- package/ai/llm/generateRequestBody.ts +165 -0
- package/ai/llm/getModelContextWindow.ts +93 -0
- package/ai/llm/getPricing.ts +252 -0
- package/ai/llm/imagePricing.ts +66 -0
- package/ai/llm/isResponseAPIModel.ts +13 -0
- package/ai/llm/kimi.ts +22 -0
- package/ai/llm/mimo.ts +99 -0
- package/ai/llm/mistral.ts +21 -0
- package/ai/llm/models.ts +45 -0
- package/ai/llm/openrouterModels.ts +31 -0
- package/ai/llm/providers.ts +313 -0
- package/ai/llm/reasoningModels.ts +27 -0
- package/ai/llm/types.ts +82 -0
- package/ai/llm/usageRequestOptions.ts +59 -0
- package/ai/memory/policy.ts +49 -0
- package/ai/memory/queryShared.ts +167 -0
- package/ai/memory/recentRelationshipRecap.ts +251 -0
- package/ai/memory/remember.ts +111 -0
- package/ai/memory/scope.ts +74 -0
- package/ai/memory/store.ts +20 -0
- package/ai/memory/storeShared.ts +76 -0
- package/ai/memory/types.ts +52 -0
- package/ai/memory/understanding.ts +341 -0
- package/ai/memory/understandingGreeting.ts +264 -0
- package/ai/policy/personalizationDialog.ts +333 -0
- package/ai/policy/runtimePolicy.ts +526 -0
- package/ai/policy/selfUpdateFields.ts +48 -0
- package/ai/policy/types.ts +64 -0
- package/ai/skills/referenceRuntime.ts +274 -0
- package/ai/skills/skillDiagnostics.ts +251 -0
- package/ai/skills/skillDocBuilder.ts +139 -0
- package/ai/skills/skillSummaryMarker.ts +26 -0
- package/ai/token/calculatePrice.ts +576 -0
- package/ai/token/missingUsageEstimate.ts +42 -0
- package/ai/token/normalizeUsage.ts +124 -0
- package/ai/token/openaiImageGenerationUsage.ts +56 -0
- package/ai/token/prepareTokenUsageData.ts +93 -0
- package/ai/token/resolveBillingTarget.ts +52 -0
- package/ai/token/saveTokenRecord.ts +53 -0
- package/ai/token/types.ts +103 -0
- package/ai/tools/agent/agentTools.ts +214 -0
- package/ai/tools/agent/agentUpdateShared.ts +311 -0
- package/ai/tools/agent/callAgentTool.ts +139 -0
- package/ai/tools/agent/createAgentTool.ts +512 -0
- package/ai/tools/agent/createDialogTool.ts +69 -0
- package/ai/tools/agent/createSkillAgentTool.ts +62 -0
- package/ai/tools/agent/parallelBudget.ts +221 -0
- package/ai/tools/agent/prepareAgentDraftTool.ts +159 -0
- package/ai/tools/agent/presets/appBuilderPreset.ts +154 -0
- package/ai/tools/agent/runLlmTool.ts +96 -0
- package/ai/tools/agent/runStreamingAgentTool.ts +73 -0
- package/ai/tools/agent/skillAgentArgs.ts +106 -0
- package/ai/tools/agent/startAgentDialogTool.ts +54 -0
- package/ai/tools/agent/streamParallelAgentsTool.ts +123 -0
- package/ai/tools/agent/updateAgentTool.ts +96 -0
- package/ai/tools/agent/updateSelfTool.ts +113 -0
- package/ai/tools/amazonProductScraperTool.ts +86 -0
- package/ai/tools/apifyActorClient.ts +45 -0
- package/ai/tools/appEditGuard.ts +372 -0
- package/ai/tools/appReadSnapshot.ts +153 -0
- package/ai/tools/appTools.ts +1549 -0
- package/ai/tools/applyEditTool.ts +259 -0
- package/ai/tools/applyLineEditsTool.ts +315 -0
- package/ai/tools/browserTools/click.ts +33 -0
- package/ai/tools/browserTools/closeSession.ts +29 -0
- package/ai/tools/browserTools/common.ts +27 -0
- package/ai/tools/browserTools/openSession.ts +48 -0
- package/ai/tools/browserTools/readContent.ts +38 -0
- package/ai/tools/browserTools/selectOption.ts +46 -0
- package/ai/tools/browserTools/typeText.ts +42 -0
- package/ai/tools/category/createCategoryTool.ts +66 -0
- package/ai/tools/category/queryContentsByCategoryTool.ts +69 -0
- package/ai/tools/category/updateContentCategoryTool.ts +75 -0
- package/ai/tools/cfBrowserTools.ts +319 -0
- package/ai/tools/cfSpeechToTextTool.ts +49 -0
- package/ai/tools/checkEnvTool.ts +102 -0
- package/ai/tools/cloudflareCrawlTool.ts +289 -0
- package/ai/tools/codeSearchTool.ts +123 -0
- package/ai/tools/codeTools.ts +101 -0
- package/ai/tools/convertMarxistsBookTool.ts +103 -0
- package/ai/tools/createDocTool.ts +132 -0
- package/ai/tools/createSkillDocTool.ts +155 -0
- package/ai/tools/createWorkflowTool.ts +154 -0
- package/ai/tools/delayTool.ts +31 -0
- package/ai/tools/deleteSpacesTool.ts +325 -0
- package/ai/tools/deleteSpacesToolModel.ts +159 -0
- package/ai/tools/devReloadUtils.ts +29 -0
- package/ai/tools/dialogMessageSearch.ts +137 -0
- package/ai/tools/doctorSkillTool.ts +72 -0
- package/ai/tools/ecommerceScraperTool.ts +86 -0
- package/ai/tools/emailTools.ts +549 -0
- package/ai/tools/evalSkillTool.ts +92 -0
- package/ai/tools/exaSearchTool.ts +63 -0
- package/ai/tools/execShellTool.ts +266 -0
- package/ai/tools/executeSqlTool.ts +192 -0
- package/ai/tools/fetchWebpageSupport.ts +333 -0
- package/ai/tools/fetchWebpageTool.ts +97 -0
- package/ai/tools/geminiImagePreviewTool.ts +386 -0
- package/ai/tools/generateDocxTool.ts +215 -0
- package/ai/tools/googleSearchScraperTool.ts +106 -0
- package/ai/tools/importDataTool.ts +133 -0
- package/ai/tools/importSkillTool.ts +162 -0
- package/ai/tools/index.ts +2290 -0
- package/ai/tools/jdProductScraperTool.ts +821 -0
- package/ai/tools/listUserSpacesTool.ts +113 -0
- package/ai/tools/localFilesTool.ts +276 -0
- package/ai/tools/marxistsOfflineBook.ts +253 -0
- package/ai/tools/modelUsageTools.ts +206 -0
- package/ai/tools/noloWorkspaceReadTools.ts +467 -0
- package/ai/tools/olmOcrTool.ts +33 -0
- package/ai/tools/openaiImageTool.ts +267 -0
- package/ai/tools/prepareTools.ts +193 -0
- package/ai/tools/readDocTool.ts +88 -0
- package/ai/tools/readFileTool.ts +214 -0
- package/ai/tools/readTool.ts +194 -0
- package/ai/tools/readXPostTool.ts +229 -0
- package/ai/tools/readXhsProfileTool.ts +638 -0
- package/ai/tools/rememberMemoryTool.ts +84 -0
- package/ai/tools/remotionVideoTool.ts +151 -0
- package/ai/tools/searchDialogMessagesTool.ts +222 -0
- package/ai/tools/searchWorkspaceTool.ts +259 -0
- package/ai/tools/skillFollowup.ts +86 -0
- package/ai/tools/surfWeatherTool.ts +169 -0
- package/ai/tools/table/addTableRowTool.ts +217 -0
- package/ai/tools/table/createTableTool.ts +326 -0
- package/ai/tools/table/rowTools.ts +386 -0
- package/ai/tools/table/schemaTools.ts +244 -0
- package/ai/tools/table/shareTableTool.ts +148 -0
- package/ai/tools/table/toolShared.ts +129 -0
- package/ai/tools/taobaoTmallProductScraperTool.ts +49 -0
- package/ai/tools/toolApiClient.ts +279 -0
- package/ai/tools/toolPacks.ts +19 -0
- package/ai/tools/toolResultError.ts +42 -0
- package/ai/tools/toolRunSlice.ts +303 -0
- package/ai/tools/toolSchemaCompatibility.ts +53 -0
- package/ai/tools/uiAskChoiceTool.ts +104 -0
- package/ai/tools/updateContentTitleTool.ts +84 -0
- package/ai/tools/updateDocTool.ts +105 -0
- package/ai/tools/updateUserPreferenceProfileTool.ts +153 -0
- package/ai/tools/wereadGatewayTool.ts +152 -0
- package/ai/tools/whisperTool.ts +76 -0
- package/ai/tools/writeFileTool.ts +213 -0
- package/ai/tools/youtubeScraperTool.ts +116 -0
- package/ai/tools/ziweiChartTool.ts +678 -0
- package/ai/types.ts +58 -0
- package/ai/workflow/workflowExecutor.ts +323 -0
- package/ai/workflow/workflowSlice.ts +73 -0
- package/ai/workflow/workflowTypes.ts +106 -0
- package/app/actions/syncAppRecord.ts +73 -0
- package/app/constants/animationSets.ts +21 -0
- package/app/constants/appEditor.ts +99 -0
- package/app/favorite/deletedFavoriteProjection.ts +31 -0
- package/app/favorite/favoriteSlice.ts +690 -0
- package/app/favorite/type.ts +43 -0
- package/app/hooks/deleteDbKey.ts +254 -0
- package/app/i18n/client.ts +13 -0
- package/app/i18n/i18n.base.ts +14 -0
- package/app/i18n/i18n.config.ts +77 -0
- package/app/i18n/index.ts +15 -0
- package/app/i18n/mapLanguage.ts +11 -0
- package/app/i18n/translations/appBuilder.locale.ts +453 -0
- package/app/i18n/translations/error.locale.ts +246 -0
- package/app/i18n/translations/interface.locale.ts +2206 -0
- package/app/i18n/translations/pricing.locale.ts +397 -0
- package/app/i18n/translations/privacy.locale.ts +168 -0
- package/app/i18n/translations/seo.locale.ts +129 -0
- package/app/i18n/translations/terms.locale.ts +124 -0
- package/app/i18n/types.ts +6 -0
- package/app/notifications/model.ts +77 -0
- package/app/notifications/notificationSlice.ts +141 -0
- package/app/reducer.ts +36 -0
- package/app/settings/dbActionThunks.ts +34 -0
- package/app/settings/defaultSpacePreference.ts +87 -0
- package/app/settings/settingSlice.tsx +1212 -0
- package/app/settings/settingsRecord.ts +8 -0
- package/app/stateViews/runtime.ts +90 -0
- package/app/store.ts +55 -0
- package/app/theme/colors.ts +280 -0
- package/app/theme/fontPreference.ts +77 -0
- package/app/theme/theme.config.ts +120 -0
- package/app/theme/themeModeBootstrap.ts +123 -0
- package/app/types/appSummary.ts +118 -0
- package/app/types.ts +358 -0
- package/app/utils/appKeys.ts +55 -0
- package/app/utils/async.ts +28 -0
- package/app/utils/desktopAgentRuntimeTurnClient.ts +75 -0
- package/app/utils/env.ts +17 -0
- package/app/utils/fileUtils.ts +229 -0
- package/app/utils/imageUtils.ts +274 -0
- package/app/utils/myContentItems.ts +289 -0
- package/app/utils/retryAfter.ts +36 -0
- package/app/utils/retryFetch.ts +61 -0
- package/app/utils/toast.ts +3 -0
- package/auth/action/signUpAction.ts +227 -0
- package/auth/adminPermissions.ts +78 -0
- package/auth/authSlice.ts +531 -0
- package/auth/client/loginRequest.ts +14 -0
- package/auth/resetAuthScopedClientState.ts +27 -0
- package/auth/routes.ts +183 -0
- package/auth/token.ts +63 -0
- package/auth/types.ts +40 -0
- package/chat/chat.locale.ts +817 -0
- package/chat/dialog/actions/addCybotAction.ts +52 -0
- package/chat/dialog/actions/addReferenceKeysAction.ts +62 -0
- package/chat/dialog/actions/builtinDialogLlm.ts +35 -0
- package/chat/dialog/actions/cleanupCliSession.ts +40 -0
- package/chat/dialog/actions/createDialogAction.ts +379 -0
- package/chat/dialog/actions/createScheduledTaskAction.ts +78 -0
- package/chat/dialog/actions/handleSendMessageAction.ts +202 -0
- package/chat/dialog/actions/handleSendMessageResolver.ts +27 -0
- package/chat/dialog/actions/removeCybotAction.ts +6 -0
- package/chat/dialog/actions/removeDialogAgentAction.ts +44 -0
- package/chat/dialog/actions/replacePrimaryCybotAction.ts +6 -0
- package/chat/dialog/actions/setPrimaryDialogAgentAction.ts +52 -0
- package/chat/dialog/actions/updateDialogSummaryAction.ts +430 -0
- package/chat/dialog/actions/updateDialogTitleAction.ts +151 -0
- package/chat/dialog/actions/updateDialogTitlePolicy.ts +30 -0
- package/chat/dialog/actions/updateTokensAction.ts +233 -0
- package/chat/dialog/dialogAgents.ts +72 -0
- package/chat/dialog/dialogAttachmentCleanup.ts +135 -0
- package/chat/dialog/dialogSlice.ts +985 -0
- package/chat/dialog/dialogTitle.ts +81 -0
- package/chat/dialog/dialogTokenStats.ts +12 -0
- package/chat/dialog/dialogUrl.ts +6 -0
- package/chat/dialog/goal.ts +108 -0
- package/chat/dialog/objectAssistantRegistry.ts +286 -0
- package/chat/dialog/schedule.ts +17 -0
- package/chat/messages/activityCompletion.ts +97 -0
- package/chat/messages/fetchAndCacheMessages.ts +119 -0
- package/chat/messages/fetchConvMsgs.ts +51 -0
- package/chat/messages/fileUrl.ts +13 -0
- package/chat/messages/imagePayloadPersistence.ts +22 -0
- package/chat/messages/messageAgent.ts +8 -0
- package/chat/messages/messageContent.ts +203 -0
- package/chat/messages/messageContract.ts +88 -0
- package/chat/messages/messageSlice.ts +1386 -0
- package/chat/messages/toolThunks.ts +646 -0
- package/chat/messages/types.ts +8 -1
- package/chat/messages/web/toolDisplayName.ts +686 -0
- package/cli/agentAliases.ts +29 -9
- package/cli/agentInternalCommandEntries.ts +11 -3
- package/cli/agentMachineCommands.ts +1 -0
- package/cli/agentRecordCommands.ts +2 -2
- package/cli/agentRecordHelpers.ts +59 -6
- package/cli/agentRunCommand.ts +84 -19
- package/cli/client/agentRun.ts +92 -261
- package/cli/client/localRuntimeAdapter.ts +292 -50
- package/cli/commandRegistry.ts +7 -4
- package/cli/dialogAttachmentCleanup.ts +151 -0
- package/cli/dialogCommands.ts +163 -61
- package/cli/dialogInternalCommandEntries.ts +1 -1
- package/cli/docCreateCommands.ts +345 -0
- package/cli/docInternalCommandEntries.ts +11 -0
- package/cli/docPageHelpers.ts +80 -0
- package/cli/docSkillHelpers.ts +67 -0
- package/cli/docSpaceHelpers.ts +46 -0
- package/cli/internalCommandEntries.ts +4 -0
- package/cli/machineCommands.ts +18 -34
- package/cli/memoryCommands.ts +253 -0
- package/cli/memoryInternalCommandEntries.ts +9 -0
- package/cli/qoderUsageProbe.ts +252 -0
- package/cli/scriptCommandEntries.ts +0 -3
- package/cli/secretScan.ts +31 -0
- package/cli/tableCommands.ts +248 -13
- package/cli/workflowInternalCommandEntries.ts +2 -3
- package/client/agentRun.test.ts +119 -83
- package/client/agentRun.ts +92 -261
- package/client/localRuntimeAdapter.test.ts +894 -32
- package/client/localRuntimeAdapter.ts +292 -50
- package/commandRegistry.ts +7 -4
- package/connector-experimental/capabilities.ts +10 -9
- package/core/builtinAgents.ts +209 -0
- package/core/config.ts +15 -0
- package/core/crypto.ts +51 -0
- package/core/generateKeyPairFromSeedV1.ts +15 -0
- package/core/generateMainKey.ts +22 -0
- package/core/init.ts +41 -0
- package/core/localOrigins.ts +8 -0
- package/core/password.ts +13 -0
- package/core/prefix.ts +23 -0
- package/create/editor/transforms/fromMarkdown/index.ts +260 -0
- package/create/editor/transforms/fromMarkdown/inline.ts +285 -0
- package/create/editor/transforms/fromMarkdown/table.ts +130 -0
- package/create/editor/transforms/markdownToSlate.ts +24 -0
- package/create/editor/transforms/slateToRenderMarkdown.ts +218 -0
- package/create/editor/transforms/slateToSimplifiedMarkdown.ts +224 -0
- package/create/editor/transforms/slateToText.ts +33 -0
- package/create/editor/utils/slateUtils.ts +233 -0
- package/create/space/addSpaceAction.ts +193 -0
- package/create/space/category/categoryActions.ts +427 -0
- package/create/space/changeSpaceAction.ts +36 -0
- package/create/space/constants.ts +8 -0
- package/create/space/content/addContentAction.ts +116 -0
- package/create/space/content/contentThunks.ts +90 -0
- package/create/space/content/deleteContentFromSpaceAction.ts +187 -0
- package/create/space/content/deleteMultipleContentAction.ts +112 -0
- package/create/space/content/moveContentAction.ts +285 -0
- package/create/space/content/updateContentCategoryAction.ts +154 -0
- package/create/space/content/updateContentTitleAction.ts +151 -0
- package/create/space/content/uploadAndAddFileToSpaceAction.ts +98 -0
- package/create/space/contentKeyUtils.ts +117 -0
- package/create/space/deleteSpaceAction.ts +276 -0
- package/create/space/fetchSpaceAction.ts +70 -0
- package/create/space/fetchSpaceSidebarStateAction.ts +26 -0
- package/create/space/loadDefaultSpaceAction.ts +57 -0
- package/create/space/member/addMemberAction.ts +79 -0
- package/create/space/member/fetchUserSpaceMembershipsAction.ts +386 -0
- package/create/space/member/memberThunks.ts +47 -0
- package/create/space/member/removeMemberAction.ts +67 -0
- package/create/space/resolvePreferredSpaceId.ts +113 -0
- package/create/space/sidebarVisibleTypes.ts +260 -0
- package/create/space/space.locale.ts +1087 -0
- package/create/space/spaceAccess.ts +182 -0
- package/create/space/spaceCollapsedState.ts +54 -0
- package/create/space/spaceKeys.ts +65 -0
- package/create/space/spaceSlice.ts +328 -0
- package/create/space/spaceThunks.ts +410 -0
- package/create/space/types.ts +27 -0
- package/create/space/updateSpaceAction.ts +107 -0
- package/create/space/utils/permissions.ts +47 -0
- package/create/types.ts +21 -0
- package/database/actions/agentReadResolution.ts +33 -0
- package/database/actions/common.ts +243 -0
- package/database/actions/deleteFile.ts +40 -0
- package/database/actions/fileContent.ts +125 -0
- package/database/actions/patch.ts +155 -0
- package/database/actions/read.ts +358 -0
- package/database/actions/readAndWait.ts +260 -0
- package/database/actions/readRequestManager.ts +120 -0
- package/database/actions/readResolution.ts +125 -0
- package/database/actions/remove.ts +94 -0
- package/database/actions/replication.ts +477 -0
- package/database/actions/upload.ts +186 -0
- package/database/actions/upsert.ts +56 -0
- package/database/actions/write.ts +146 -0
- package/database/authority/ownerKey.ts +80 -0
- package/database/authority/recordAuthority.ts +67 -0
- package/database/authority/userAuthorityRegistry.ts +54 -0
- package/database/client/fetchUserData.ts +61 -0
- package/database/dbActionThunks.ts +1 -0
- package/database/dbSlice.ts +149 -0
- package/database/fileRing.ts +51 -0
- package/database/fileStorage.ts +232 -0
- package/database/fileUrl.ts +34 -0
- package/database/keys.ts +767 -0
- package/database/queryPrefixes.ts +14 -0
- package/database/requests.ts +443 -0
- package/database/runtimeServerContext.ts +54 -0
- package/database/tenantPlacement.ts +57 -0
- package/database/userPreferenceRegister.ts +131 -0
- package/database/utils/ulid.ts +1 -0
- package/dialogAttachmentCleanup.ts +151 -0
- package/dialogCommands.ts +163 -61
- package/dialogInternalCommandEntries.ts +1 -1
- package/docCreateCommands.ts +345 -0
- package/docInternalCommandEntries.ts +11 -0
- package/docPageHelpers.ts +80 -0
- package/docSkillHelpers.ts +67 -0
- package/docSpaceHelpers.ts +46 -0
- package/integrations/anthropic/anthropicModels.ts +47 -0
- package/integrations/deepseek/models.ts +37 -0
- package/integrations/google/models.ts +341 -0
- package/integrations/openai/chatCompletionStreamMode.ts +10 -0
- package/integrations/openai/filterAndCleanMessages.ts +284 -0
- package/integrations/openai/flexTier.ts +102 -0
- package/integrations/openai/generateOpenAIRequestBody.ts +271 -0
- package/integrations/openai/generateResponseRequestBody.ts +77 -0
- package/integrations/openai/models.ts +271 -0
- package/integrations/openai/providerBodyCompatibility.ts +23 -0
- package/integrations/openai/responsesHelpers.ts +297 -0
- package/integrations/x-reader/types.ts +109 -0
- package/integrations/xai/models.ts +13 -0
- package/integrations/xhs-reader/redaction.ts +68 -0
- package/integrations/xhs-reader/types.ts +277 -0
- package/integrations/xhs-reader/url.ts +80 -0
- package/internalCommandEntries.ts +4 -0
- package/machineCommands.ts +18 -34
- package/memoryCommands.ts +253 -0
- package/memoryInternalCommandEntries.ts +9 -0
- package/package.json +454 -9
- package/qoderUsageProbe.ts +252 -0
- package/render/contentIcon/types.ts +167 -0
- package/render/page/createPageAction.ts +183 -0
- package/render/page/docSlice.ts +495 -0
- package/render/page/types.ts +19 -0
- package/render/table/createTableAction.ts +274 -0
- package/render/table/deleteTableAction.ts +193 -0
- package/render/table/fetchAndCacheTableRows.ts +174 -0
- package/render/table/tableSlice.ts +1167 -0
- package/render/table/toolValueUtils.ts +363 -0
- package/render/table/types.ts +262 -0
- package/render/table/utils/tableSerialization.ts +50 -0
- package/scriptCommandEntries.ts +0 -3
- package/secretScan.ts +31 -0
- package/server/handlers/agentRun/types.ts +105 -0
- package/share/action.ts +225 -0
- package/share/helpers.ts +302 -0
- package/share/keys.ts +243 -0
- package/share/publicSharePolicy.ts +27 -0
- package/share/shareSlice.ts +53 -0
- package/share/types.ts +100 -0
- package/tableCommands.ts +248 -13
- package/workflowInternalCommandEntries.ts +2 -3
- package/ai/tools/agent/taskRunTool.ts +0 -112
- package/cli/client/taskRunPrompt.ts +0 -27
- package/cli/taskRunCommand.ts +0 -265
- package/client/taskRunPrompt.ts +0 -27
- package/taskRunCommand.ts +0 -265
|
@@ -42,8 +42,14 @@ import {
|
|
|
42
42
|
type HybridRecordStore,
|
|
43
43
|
} from "./hybridRecordStore";
|
|
44
44
|
import { executeLocalToolWithPolicy } from "./localToolPolicy";
|
|
45
|
-
import {
|
|
45
|
+
import { inferCaptureIntent } from "../../ai/policy/runtimePolicy";
|
|
46
|
+
import { TOOL_PACKS } from "../../ai/tools/toolPacks";
|
|
47
|
+
import { prepareTools } from "../../ai/tools/prepareTools";
|
|
46
48
|
import {
|
|
49
|
+
LOCAL_CODEX_AGENT_ID,
|
|
50
|
+
LOCAL_CODEX_AGENT_KEY,
|
|
51
|
+
LOCAL_QODER_AGENT_ID,
|
|
52
|
+
LOCAL_QODER_AGENT_KEY,
|
|
47
53
|
MIMO_MONTH_AGENT_KEY,
|
|
48
54
|
NOLO_DEFAULT_AGENT_ID,
|
|
49
55
|
NOLO_DEFAULT_AGENT_KEY,
|
|
@@ -56,6 +62,14 @@ import {
|
|
|
56
62
|
} from "../../agent-runtime/noloWorkspaceTools";
|
|
57
63
|
import { executeCli as defaultExecuteCli, type CliExecuteResult, type CliImageInput } from "../../ai/agent/cliExecutor";
|
|
58
64
|
import { buildCliPrompt } from "../../ai/agent/cliPrompt";
|
|
65
|
+
import {
|
|
66
|
+
readXhsProfileFunc,
|
|
67
|
+
readXhsProfileFunctionSchema,
|
|
68
|
+
} from "../../ai/tools/readXhsProfileTool";
|
|
69
|
+
import {
|
|
70
|
+
readXPostFunc,
|
|
71
|
+
readXPostFunctionSchema,
|
|
72
|
+
} from "../../ai/tools/readXPostTool";
|
|
59
73
|
|
|
60
74
|
type EnvLike = Record<string, string | undefined>;
|
|
61
75
|
type FetchInput = Parameters<typeof fetch>[0];
|
|
@@ -78,6 +92,14 @@ export const BUILTIN_NOLO_AGENT_ID = NOLO_DEFAULT_AGENT_ID;
|
|
|
78
92
|
export const BUILTIN_NOLO_AGENT_KEY = NOLO_DEFAULT_AGENT_KEY;
|
|
79
93
|
const CLI_DIR = dirname(fileURLToPath(import.meta.url));
|
|
80
94
|
const CLI_ENTRYPOINT = join(CLI_DIR, "..", "index.ts");
|
|
95
|
+
const LOCAL_SERVER_TABLE_TOOL_NAMES = [
|
|
96
|
+
"createTable",
|
|
97
|
+
"addTableRow",
|
|
98
|
+
"addTableRows",
|
|
99
|
+
"updateTableRow",
|
|
100
|
+
"updateTableRows",
|
|
101
|
+
] as const;
|
|
102
|
+
const LOCAL_SERVER_TABLE_TOOL_NAME_SET = new Set<string>(LOCAL_SERVER_TABLE_TOOL_NAMES);
|
|
81
103
|
|
|
82
104
|
export type CliLocalRuntimeDb = CliKvDb;
|
|
83
105
|
|
|
@@ -91,6 +113,8 @@ export type CliLocalRuntimeAdapterDeps = {
|
|
|
91
113
|
cwd?: string;
|
|
92
114
|
output?: { write(chunk: string): unknown };
|
|
93
115
|
localToolExecutors?: Record<string, (call: any) => Promise<{ content: string; metadata?: Record<string, unknown> }>>;
|
|
116
|
+
readXPost?: typeof readXPostFunc;
|
|
117
|
+
readXhsProfile?: typeof readXhsProfileFunc;
|
|
94
118
|
executeCli?: LocalCliExecutor;
|
|
95
119
|
sleep?: (ms: number) => Promise<void>;
|
|
96
120
|
loopbackRequest?: (input: FetchInput, init?: FetchInit) => Promise<Response>;
|
|
@@ -108,6 +132,55 @@ function resolveLocalUserId(env: EnvLike) {
|
|
|
108
132
|
return env.NOLO_LOCAL_USER_ID || env.NOLO_USER_ID || "local";
|
|
109
133
|
}
|
|
110
134
|
|
|
135
|
+
function resolveBuiltinLocalCliAgentConfig(agentRef: string, userId: string): AgentRuntimeAgentConfig | null {
|
|
136
|
+
const normalized = agentRef.trim();
|
|
137
|
+
if (normalized === LOCAL_CODEX_AGENT_KEY || normalized === LOCAL_CODEX_AGENT_ID) {
|
|
138
|
+
return {
|
|
139
|
+
key: LOCAL_CODEX_AGENT_KEY,
|
|
140
|
+
name: "Local Codex",
|
|
141
|
+
prompt: "You are a local Codex CLI coding agent. Use the workspace and dialog evidence available to you, keep changes scoped, run relevant checks, and report worktree, branch, commit or dirty diff, tests, and blockers.",
|
|
142
|
+
apiSource: "cli",
|
|
143
|
+
provider: "cli",
|
|
144
|
+
cliProvider: "codex",
|
|
145
|
+
toolNames: ["readFile", "searchFiles", "execShell"],
|
|
146
|
+
rawRecord: {
|
|
147
|
+
dbKey: LOCAL_CODEX_AGENT_KEY,
|
|
148
|
+
id: LOCAL_CODEX_AGENT_ID,
|
|
149
|
+
userId,
|
|
150
|
+
type: "agent",
|
|
151
|
+
name: "Local Codex",
|
|
152
|
+
apiSource: "cli",
|
|
153
|
+
provider: "cli",
|
|
154
|
+
cliProvider: "codex",
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
if (normalized === LOCAL_QODER_AGENT_KEY || normalized === LOCAL_QODER_AGENT_ID) {
|
|
159
|
+
return {
|
|
160
|
+
key: LOCAL_QODER_AGENT_KEY,
|
|
161
|
+
name: "Local Qoder",
|
|
162
|
+
prompt: "You are a local Qoder CLI coding agent. Use the workspace and dialog evidence available to you, keep changes scoped, run relevant checks, and report worktree, branch, commit or dirty diff, tests, and blockers.",
|
|
163
|
+
apiSource: "cli",
|
|
164
|
+
provider: "cli",
|
|
165
|
+
cliProvider: "qoder",
|
|
166
|
+
model: "Qwen3.7-Max",
|
|
167
|
+
toolNames: ["readFile", "searchFiles", "execShell"],
|
|
168
|
+
rawRecord: {
|
|
169
|
+
dbKey: LOCAL_QODER_AGENT_KEY,
|
|
170
|
+
id: LOCAL_QODER_AGENT_ID,
|
|
171
|
+
userId,
|
|
172
|
+
type: "agent",
|
|
173
|
+
name: "Local Qoder",
|
|
174
|
+
apiSource: "cli",
|
|
175
|
+
provider: "cli",
|
|
176
|
+
cliProvider: "qoder",
|
|
177
|
+
model: "Qwen3.7-Max",
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
|
|
111
184
|
function parseLocalToolBudgets(env: EnvLike) {
|
|
112
185
|
const raw = env.NOLO_LOCAL_TOOL_BUDGETS?.trim();
|
|
113
186
|
if (!raw) return {};
|
|
@@ -235,12 +308,14 @@ function buildRequestTimeoutSignal(timeoutMs?: number) {
|
|
|
235
308
|
if (typeof timeoutMs !== "number" || !Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
236
309
|
return undefined;
|
|
237
310
|
}
|
|
238
|
-
if (typeof AbortSignal !== "undefined" && typeof AbortSignal.timeout === "function") {
|
|
239
|
-
return AbortSignal.timeout(timeoutMs);
|
|
240
|
-
}
|
|
241
311
|
const controller = new AbortController();
|
|
242
|
-
setTimeout(() =>
|
|
243
|
-
|
|
312
|
+
const timeout = setTimeout(() => {
|
|
313
|
+
controller.abort(new Error(`request timed out after ${timeoutMs}ms`));
|
|
314
|
+
}, timeoutMs);
|
|
315
|
+
return {
|
|
316
|
+
signal: controller.signal,
|
|
317
|
+
clear: () => clearTimeout(timeout),
|
|
318
|
+
};
|
|
244
319
|
}
|
|
245
320
|
|
|
246
321
|
function summarizeEndpoint(value: unknown) {
|
|
@@ -353,6 +428,25 @@ function shouldExposeLocalPlatformTools(agentKey?: string) {
|
|
|
353
428
|
return agentKey !== MIMO_MONTH_AGENT_KEY;
|
|
354
429
|
}
|
|
355
430
|
|
|
431
|
+
function addDefaultLightWebToolsForConfiguredAgents(
|
|
432
|
+
toolNames: string[],
|
|
433
|
+
agentConfig?: AgentRuntimeAgentConfig | null,
|
|
434
|
+
) {
|
|
435
|
+
const explicitToolNames = Array.isArray((agentConfig as any)?.toolSurface?.explicitToolNames)
|
|
436
|
+
? (agentConfig as any).toolSurface.explicitToolNames
|
|
437
|
+
: agentConfig?.toolNames;
|
|
438
|
+
if (!Array.isArray(explicitToolNames) || explicitToolNames.length === 0) return toolNames;
|
|
439
|
+
const webCapable = explicitToolNames.some((toolName) =>
|
|
440
|
+
toolName === "fetchWebpage" ||
|
|
441
|
+
toolName === "exa_search" ||
|
|
442
|
+
toolName === "read_x_post" ||
|
|
443
|
+
toolName === "read_xhs_profile" ||
|
|
444
|
+
toolName.startsWith("browser_")
|
|
445
|
+
);
|
|
446
|
+
if (!webCapable) return toolNames;
|
|
447
|
+
return [...new Set([...toolNames, ...TOOL_PACKS.LIGHT_WEB])];
|
|
448
|
+
}
|
|
449
|
+
|
|
356
450
|
function buildOpenAiTools(args: { agentKey?: string; toolNames?: string[]; env: EnvLike }) {
|
|
357
451
|
const toolset = buildLocalWorkspaceToolsetForEnv(args);
|
|
358
452
|
const exposePlatformTools = shouldExposeLocalPlatformTools(args.agentKey);
|
|
@@ -360,6 +454,14 @@ function buildOpenAiTools(args: { agentKey?: string; toolNames?: string[]; env:
|
|
|
360
454
|
...buildLocalWorkspaceOpenAiTools({
|
|
361
455
|
toolNames: toolset.toolNames,
|
|
362
456
|
exposeShellTools: toolset.exposeShellTools,
|
|
457
|
+
listFilesDescriptionVariant: resolveListFilesDescriptionVariant(args.env),
|
|
458
|
+
listFilesParameterVariant: resolveListFilesParameterVariant(args.env),
|
|
459
|
+
readFileDescriptionVariant: resolveReadFileDescriptionVariant(args.env),
|
|
460
|
+
readFileParameterVariant: resolveReadFileParameterVariant(args.env),
|
|
461
|
+
globFilesDescriptionVariant: resolveGlobFilesDescriptionVariant(args.env),
|
|
462
|
+
globFilesParameterVariant: resolveGlobFilesParameterVariant(args.env),
|
|
463
|
+
searchFilesDescriptionVariant: resolveSearchFilesDescriptionVariant(args.env),
|
|
464
|
+
searchFilesParameterVariant: resolveSearchFilesParameterVariant(args.env),
|
|
363
465
|
}),
|
|
364
466
|
...(exposePlatformTools ? buildServerPlatformOpenAiTools({ toolNames: args.toolNames }) : []),
|
|
365
467
|
...(exposePlatformTools ? buildNoloWorkspaceOpenAiTools({ toolNames: args.toolNames }) : []),
|
|
@@ -367,35 +469,94 @@ function buildOpenAiTools(args: { agentKey?: string; toolNames?: string[]; env:
|
|
|
367
469
|
}
|
|
368
470
|
|
|
369
471
|
function buildLocalWorkspaceToolsetForEnv(args: { toolNames?: string[]; env: EnvLike }) {
|
|
370
|
-
void args.env;
|
|
371
472
|
const toolset = buildLocalWorkspaceToolset({
|
|
372
473
|
declaredToolNames: args.toolNames,
|
|
373
474
|
exposeShellTools: true,
|
|
475
|
+
useDeclaredToolNamesOnly: shouldUseDeclaredOnlyLocalWorkspaceTools(args.env),
|
|
374
476
|
});
|
|
375
477
|
return toolset;
|
|
376
478
|
}
|
|
377
479
|
|
|
378
480
|
function buildLocalPolicyToolNames(args: { toolNames?: string[]; env: EnvLike }) {
|
|
379
|
-
void args.env;
|
|
380
481
|
return [
|
|
381
482
|
...buildLocalWorkspacePolicyToolNames({
|
|
382
483
|
declaredToolNames: args.toolNames,
|
|
383
484
|
exposeShellTools: true,
|
|
485
|
+
useDeclaredToolNamesOnly: shouldUseDeclaredOnlyLocalWorkspaceTools(args.env),
|
|
384
486
|
}),
|
|
385
|
-
...((args.toolNames ?? []).includes("
|
|
487
|
+
...((args.toolNames ?? []).includes("read_x_post") ? ["read_x_post"] : []),
|
|
488
|
+
...((args.toolNames ?? []).includes("read_xhs_profile") ? ["read_xhs_profile"] : []),
|
|
489
|
+
...(args.toolNames ?? []).filter((name) => LOCAL_SERVER_TABLE_TOOL_NAME_SET.has(name)),
|
|
386
490
|
...filterNoloWorkspaceToolNames(args.toolNames),
|
|
387
491
|
];
|
|
388
492
|
}
|
|
389
493
|
|
|
494
|
+
function shouldUseDeclaredOnlyLocalWorkspaceTools(env: EnvLike) {
|
|
495
|
+
const value = env.NOLO_LOCAL_WORKSPACE_TOOLSET || env.NOLO_LOCAL_TOOLSET_MODE || "";
|
|
496
|
+
return value === "declared-only" || value === "declared";
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
function resolveGlobFilesDescriptionVariant(env: EnvLike) {
|
|
500
|
+
return resolveLocalWorkspaceDescriptionVariant(env.NOLO_GLOBFILES_DESCRIPTION_VARIANT);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
function resolveListFilesDescriptionVariant(env: EnvLike) {
|
|
504
|
+
return resolveLocalWorkspaceDescriptionVariant(env.NOLO_LISTFILES_DESCRIPTION_VARIANT);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
function resolveListFilesParameterVariant(env: EnvLike) {
|
|
508
|
+
return resolveLocalWorkspaceParameterVariant(env.NOLO_LISTFILES_PARAMETER_VARIANT);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
function resolveReadFileDescriptionVariant(env: EnvLike) {
|
|
512
|
+
return resolveLocalWorkspaceDescriptionVariant(env.NOLO_READFILE_DESCRIPTION_VARIANT);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
function resolveReadFileParameterVariant(env: EnvLike) {
|
|
516
|
+
return resolveLocalWorkspaceParameterVariant(env.NOLO_READFILE_PARAMETER_VARIANT);
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
function resolveGlobFilesParameterVariant(env: EnvLike) {
|
|
520
|
+
return resolveLocalWorkspaceParameterVariant(env.NOLO_GLOBFILES_PARAMETER_VARIANT);
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
function resolveSearchFilesDescriptionVariant(env: EnvLike) {
|
|
524
|
+
return resolveLocalWorkspaceDescriptionVariant(env.NOLO_SEARCHFILES_DESCRIPTION_VARIANT);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
function resolveSearchFilesParameterVariant(env: EnvLike) {
|
|
528
|
+
return resolveLocalWorkspaceParameterVariant(env.NOLO_SEARCHFILES_PARAMETER_VARIANT);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
function resolveLocalWorkspaceDescriptionVariant(value: string | undefined) {
|
|
532
|
+
return value === "brief" || value === "strategy" || value === "workflow" || value === "antiShell"
|
|
533
|
+
? value
|
|
534
|
+
: "strategy";
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
function resolveLocalWorkspaceParameterVariant(value: string | undefined) {
|
|
538
|
+
return value === "minimal" || value === "scoped" || value === "rich" ? value : "rich";
|
|
539
|
+
}
|
|
540
|
+
|
|
390
541
|
function buildServerPlatformOpenAiTools(args: { toolNames?: string[] }) {
|
|
391
542
|
const toolNames = new Set(args.toolNames ?? []);
|
|
543
|
+
const tableTools = prepareTools(
|
|
544
|
+
(args.toolNames ?? []).filter((name) => LOCAL_SERVER_TABLE_TOOL_NAME_SET.has(name)),
|
|
545
|
+
);
|
|
392
546
|
return [
|
|
393
|
-
...(toolNames.has("
|
|
547
|
+
...(toolNames.has("read_xhs_profile")
|
|
394
548
|
? [{
|
|
395
549
|
type: "function",
|
|
396
|
-
function:
|
|
550
|
+
function: readXhsProfileFunctionSchema,
|
|
397
551
|
}]
|
|
398
552
|
: []),
|
|
553
|
+
...(toolNames.has("read_x_post")
|
|
554
|
+
? [{
|
|
555
|
+
type: "function",
|
|
556
|
+
function: readXPostFunctionSchema,
|
|
557
|
+
}]
|
|
558
|
+
: []),
|
|
559
|
+
...tableTools,
|
|
399
560
|
];
|
|
400
561
|
}
|
|
401
562
|
|
|
@@ -467,30 +628,65 @@ function buildServerPlatformToolExecutors(args: {
|
|
|
467
628
|
env: EnvLike;
|
|
468
629
|
fetchImpl: typeof fetch;
|
|
469
630
|
}) {
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
631
|
+
const postServer = async (path: string, body: object) => {
|
|
632
|
+
const serverUrl = resolveRuntimeServerUrl(args.env);
|
|
633
|
+
const authToken = resolveRuntimeAuthToken(args.env);
|
|
634
|
+
if (!serverUrl) throw new Error("server platform tools require NOLO_SERVER_URL, NOLO_SERVER, or BASE_URL.");
|
|
635
|
+
if (!authToken) throw new Error("server platform tools require AUTH_TOKEN or NOLO_MACHINE_API_KEY.");
|
|
636
|
+
const response = await args.fetchImpl(`${serverUrl}${path}`, {
|
|
637
|
+
method: "POST",
|
|
638
|
+
headers: {
|
|
639
|
+
"Content-Type": "application/json",
|
|
640
|
+
Authorization: `Bearer ${authToken}`,
|
|
641
|
+
},
|
|
642
|
+
body: JSON.stringify(body),
|
|
643
|
+
});
|
|
644
|
+
const text = await response.text().catch(() => "");
|
|
645
|
+
if (!response.ok) {
|
|
646
|
+
throw new Error(`server platform tool bridge failed: HTTP ${response.status} ${text.slice(0, 500)}`);
|
|
647
|
+
}
|
|
648
|
+
return text;
|
|
649
|
+
};
|
|
650
|
+
const guardExplicitTableCapture = (call: any) => {
|
|
651
|
+
if (inferCaptureIntent(String(call.userInput ?? "")) === "strong") return null;
|
|
652
|
+
return JSON.stringify({
|
|
653
|
+
error: "knowledge_capture_requires_confirmation",
|
|
654
|
+
message:
|
|
655
|
+
"当前本地运行不允许自动写入表格。只有当用户在当前请求里明确要求保存、建表、写入 table 或做成数据集时,才能继续;否则请先询问用户。",
|
|
656
|
+
policy: {
|
|
657
|
+
capability: "knowledge_capture",
|
|
658
|
+
target: "table",
|
|
659
|
+
mode: "explicit-only-local",
|
|
660
|
+
},
|
|
661
|
+
});
|
|
493
662
|
};
|
|
663
|
+
const tableExecutors = Object.fromEntries(
|
|
664
|
+
LOCAL_SERVER_TABLE_TOOL_NAMES.map((toolName) => [
|
|
665
|
+
toolName,
|
|
666
|
+
async (call: any) => {
|
|
667
|
+
const blocked = guardExplicitTableCapture(call);
|
|
668
|
+
if (blocked) {
|
|
669
|
+
return {
|
|
670
|
+
content: blocked,
|
|
671
|
+
metadata: { serverPlatformTool: true, tableWriteBlocked: true },
|
|
672
|
+
};
|
|
673
|
+
}
|
|
674
|
+
const parsed = parseNoloWorkspaceToolArguments(call.arguments);
|
|
675
|
+
const path =
|
|
676
|
+
toolName === "createTable" ? "/api/table/create"
|
|
677
|
+
: toolName === "addTableRow" ? "/api/table/add-row"
|
|
678
|
+
: toolName === "addTableRows" ? "/api/table/add-rows"
|
|
679
|
+
: toolName === "updateTableRow" ? "/api/table/update-row"
|
|
680
|
+
: "/api/table/update-rows";
|
|
681
|
+
const content = await postServer(path, parsed);
|
|
682
|
+
return {
|
|
683
|
+
content,
|
|
684
|
+
metadata: { serverPlatformTool: true, tableWrite: true },
|
|
685
|
+
};
|
|
686
|
+
},
|
|
687
|
+
]),
|
|
688
|
+
);
|
|
689
|
+
return tableExecutors;
|
|
494
690
|
}
|
|
495
691
|
|
|
496
692
|
function buildLocalToolExecutors(args: {
|
|
@@ -498,6 +694,8 @@ function buildLocalToolExecutors(args: {
|
|
|
498
694
|
env: EnvLike;
|
|
499
695
|
fetchImpl: typeof fetch;
|
|
500
696
|
localToolExecutors?: CliLocalRuntimeAdapterDeps["localToolExecutors"];
|
|
697
|
+
readXPost?: CliLocalRuntimeAdapterDeps["readXPost"];
|
|
698
|
+
readXhsProfile?: CliLocalRuntimeAdapterDeps["readXhsProfile"];
|
|
501
699
|
commandTimeoutMs?: number;
|
|
502
700
|
commandOutputLimit?: number;
|
|
503
701
|
}) {
|
|
@@ -514,6 +712,38 @@ function buildLocalToolExecutors(args: {
|
|
|
514
712
|
...buildCliWorkspaceToolExecutors({
|
|
515
713
|
env: args.env,
|
|
516
714
|
}),
|
|
715
|
+
read_x_post: async (call: any) => {
|
|
716
|
+
const parsedArgs = (() => {
|
|
717
|
+
try { return JSON.parse(call.arguments || "{}"); } catch { return {}; }
|
|
718
|
+
})();
|
|
719
|
+
const result = await (args.readXPost ?? readXPostFunc)(
|
|
720
|
+
parsedArgs,
|
|
721
|
+
undefined,
|
|
722
|
+
);
|
|
723
|
+
return {
|
|
724
|
+
content: JSON.stringify(result.rawData),
|
|
725
|
+
metadata: {
|
|
726
|
+
xPostLocalBridge: true,
|
|
727
|
+
displayData: result.displayData,
|
|
728
|
+
},
|
|
729
|
+
};
|
|
730
|
+
},
|
|
731
|
+
read_xhs_profile: async (call: any) => {
|
|
732
|
+
const parsedArgs = (() => {
|
|
733
|
+
try { return JSON.parse(call.arguments || "{}"); } catch { return {}; }
|
|
734
|
+
})();
|
|
735
|
+
const result = await (args.readXhsProfile ?? readXhsProfileFunc)(
|
|
736
|
+
parsedArgs,
|
|
737
|
+
undefined,
|
|
738
|
+
);
|
|
739
|
+
return {
|
|
740
|
+
content: JSON.stringify(result.rawData),
|
|
741
|
+
metadata: {
|
|
742
|
+
xhsLocalBridge: true,
|
|
743
|
+
displayData: result.displayData,
|
|
744
|
+
},
|
|
745
|
+
};
|
|
746
|
+
},
|
|
517
747
|
...(args.localToolExecutors ?? {}),
|
|
518
748
|
};
|
|
519
749
|
}
|
|
@@ -599,6 +829,8 @@ export function createCliLocalRuntimeAdapter(
|
|
|
599
829
|
env: deps.env,
|
|
600
830
|
fetchImpl,
|
|
601
831
|
localToolExecutors: deps.localToolExecutors,
|
|
832
|
+
readXPost: deps.readXPost,
|
|
833
|
+
readXhsProfile: deps.readXhsProfile,
|
|
602
834
|
...runtimeToolExecutionLimits,
|
|
603
835
|
});
|
|
604
836
|
|
|
@@ -606,16 +838,22 @@ export function createCliLocalRuntimeAdapter(
|
|
|
606
838
|
host: "cli",
|
|
607
839
|
capabilities: ["leveldb-agent-config", "local-provider", "leveldb-persistence", "local-tools"],
|
|
608
840
|
loadAgentConfig: async (agentRef) => {
|
|
841
|
+
const storedAgentConfig = await readAgentFromStore({
|
|
842
|
+
agentRef,
|
|
843
|
+
store: await resolveStore(deps),
|
|
844
|
+
userId,
|
|
845
|
+
});
|
|
846
|
+
const fallbackLocalCliAgentConfig =
|
|
847
|
+
storedAgentConfig ? null : resolveBuiltinLocalCliAgentConfig(agentRef, userId);
|
|
609
848
|
const agentConfig = withResolvedRuntimeToolSurface(
|
|
610
|
-
|
|
611
|
-
agentRef,
|
|
612
|
-
store: await resolveStore(deps),
|
|
613
|
-
userId,
|
|
614
|
-
}),
|
|
849
|
+
storedAgentConfig ?? fallbackLocalCliAgentConfig,
|
|
615
850
|
deps.env
|
|
616
851
|
);
|
|
617
852
|
const requestedToolNames = agentConfig
|
|
618
|
-
?
|
|
853
|
+
? addDefaultLightWebToolsForConfiguredAgents(
|
|
854
|
+
resolveRequestedRuntimeToolNames({ agentConfig }),
|
|
855
|
+
agentConfig,
|
|
856
|
+
)
|
|
619
857
|
: [];
|
|
620
858
|
activeAgentToolNames = buildLocalPolicyToolNames({
|
|
621
859
|
toolNames: requestedToolNames,
|
|
@@ -629,6 +867,8 @@ export function createCliLocalRuntimeAdapter(
|
|
|
629
867
|
env: deps.env,
|
|
630
868
|
fetchImpl,
|
|
631
869
|
localToolExecutors: deps.localToolExecutors,
|
|
870
|
+
readXPost: deps.readXPost,
|
|
871
|
+
readXhsProfile: deps.readXhsProfile,
|
|
632
872
|
...runtimeToolExecutionLimits,
|
|
633
873
|
});
|
|
634
874
|
return agentConfig;
|
|
@@ -712,9 +952,10 @@ export function createCliLocalRuntimeAdapter(
|
|
|
712
952
|
return {
|
|
713
953
|
model: providerConfig.model,
|
|
714
954
|
complete: async (messages, options) => {
|
|
715
|
-
const requestedToolNames =
|
|
955
|
+
const requestedToolNames = addDefaultLightWebToolsForConfiguredAgents(
|
|
956
|
+
resolveRequestedRuntimeToolNames({ agentConfig }),
|
|
716
957
|
agentConfig,
|
|
717
|
-
|
|
958
|
+
);
|
|
718
959
|
const tools = buildOpenAiTools({
|
|
719
960
|
agentKey: agentConfig.key,
|
|
720
961
|
toolNames: requestedToolNames,
|
|
@@ -725,7 +966,7 @@ export function createCliLocalRuntimeAdapter(
|
|
|
725
966
|
messages,
|
|
726
967
|
tools,
|
|
727
968
|
});
|
|
728
|
-
const
|
|
969
|
+
const timeoutSignal = buildRequestTimeoutSignal(options?.timeoutMs);
|
|
729
970
|
logLocalRuntimeDiagnostic("provider.request.start", {
|
|
730
971
|
agentKey: agentConfig.key,
|
|
731
972
|
transport: "platform-proxy",
|
|
@@ -740,11 +981,11 @@ export function createCliLocalRuntimeAdapter(
|
|
|
740
981
|
});
|
|
741
982
|
const res = await fetchWithTransientRetry(fetchImpl, request.url, {
|
|
742
983
|
...request.init,
|
|
743
|
-
...(
|
|
984
|
+
...(timeoutSignal ? { signal: timeoutSignal.signal } : {}),
|
|
744
985
|
}, {
|
|
745
986
|
sleep: deps.sleep,
|
|
746
987
|
loopbackRequest,
|
|
747
|
-
});
|
|
988
|
+
}).finally(() => timeoutSignal?.clear());
|
|
748
989
|
const raw = await res.text().catch(() => "");
|
|
749
990
|
logLocalRuntimeDiagnostic("provider.request.result", {
|
|
750
991
|
agentKey: agentConfig.key,
|
|
@@ -785,9 +1026,10 @@ export function createCliLocalRuntimeAdapter(
|
|
|
785
1026
|
return {
|
|
786
1027
|
model: providerConfig.model,
|
|
787
1028
|
complete: async (messages, options) => {
|
|
788
|
-
const requestedToolNames =
|
|
1029
|
+
const requestedToolNames = addDefaultLightWebToolsForConfiguredAgents(
|
|
1030
|
+
resolveRequestedRuntimeToolNames({ agentConfig }),
|
|
789
1031
|
agentConfig,
|
|
790
|
-
|
|
1032
|
+
);
|
|
791
1033
|
const tools = buildOpenAiTools({
|
|
792
1034
|
agentKey: agentConfig.key,
|
|
793
1035
|
toolNames: requestedToolNames,
|
|
@@ -798,7 +1040,7 @@ export function createCliLocalRuntimeAdapter(
|
|
|
798
1040
|
messages,
|
|
799
1041
|
tools,
|
|
800
1042
|
});
|
|
801
|
-
const
|
|
1043
|
+
const timeoutSignal = buildRequestTimeoutSignal(options?.timeoutMs);
|
|
802
1044
|
logLocalRuntimeDiagnostic("provider.request.start", {
|
|
803
1045
|
agentKey: agentConfig.key,
|
|
804
1046
|
transport: "direct-openai-compatible",
|
|
@@ -812,11 +1054,11 @@ export function createCliLocalRuntimeAdapter(
|
|
|
812
1054
|
});
|
|
813
1055
|
const res = await fetchWithTransientRetry(fetchImpl, request.url, {
|
|
814
1056
|
...request.init,
|
|
815
|
-
...(
|
|
1057
|
+
...(timeoutSignal ? { signal: timeoutSignal.signal } : {}),
|
|
816
1058
|
}, {
|
|
817
1059
|
sleep: deps.sleep,
|
|
818
1060
|
loopbackRequest,
|
|
819
|
-
});
|
|
1061
|
+
}).finally(() => timeoutSignal?.clear());
|
|
820
1062
|
const raw = await res.text().catch(() => "");
|
|
821
1063
|
logLocalRuntimeDiagnostic("provider.request.result", {
|
|
822
1064
|
agentKey: agentConfig.key,
|
package/cli/commandRegistry.ts
CHANGED
|
@@ -14,6 +14,7 @@ export const COMMANDS: CommandEntry[] = [
|
|
|
14
14
|
];
|
|
15
15
|
|
|
16
16
|
export const GROUP_ORDER = [
|
|
17
|
+
"run",
|
|
17
18
|
"chat",
|
|
18
19
|
"doc",
|
|
19
20
|
"skill-doc",
|
|
@@ -21,9 +22,9 @@ export const GROUP_ORDER = [
|
|
|
21
22
|
"agent",
|
|
22
23
|
"doctor",
|
|
23
24
|
"dialog",
|
|
25
|
+
"memory",
|
|
24
26
|
"space",
|
|
25
27
|
"table",
|
|
26
|
-
"task-run",
|
|
27
28
|
"llama",
|
|
28
29
|
"model-runtime",
|
|
29
30
|
"dev",
|
|
@@ -55,23 +56,25 @@ export function renderHelpText() {
|
|
|
55
56
|
" nolo doctor",
|
|
56
57
|
" nolo doctor runtime",
|
|
57
58
|
" nolo update",
|
|
59
|
+
' nolo run "review this repository" # no Nolo login required; uses local Codex CLI',
|
|
58
60
|
' nolo doc create --title "Trip Notes" --body "hello" --sync local,us --dry-run',
|
|
59
61
|
' nolo skill-doc create --title "Agent Query Skill" --description "Inspect recent agent dialogs" --sync local,main,us',
|
|
60
62
|
" nolo agent list --json",
|
|
61
63
|
" nolo space list --json",
|
|
62
64
|
" nolo agent pull agent-pub-01APPBUILDER00000001YAII3I",
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
" nolo agent read agent-pub-01APPBUILDER00000001YAII3I",
|
|
66
|
+
" nolo agent usage qoder",
|
|
67
|
+
' nolo agent run frontend-implementer --msg "polish notifications"',
|
|
65
68
|
" nolo agent bind-current agent-user-1-agent-1",
|
|
66
69
|
" nolo agent runtime-doctor agent-user-1-agent-1",
|
|
67
70
|
' nolo agent smoke-current agent-user-1-agent-1 --msg "ping"',
|
|
68
71
|
' nolo chat --agent agent-pub-01APPBUILDER00000001YAII3I --msg "你好"',
|
|
72
|
+
" nolo memory delete --source-dialog 01ABC... --yes --json",
|
|
69
73
|
" nolo space read 01KKY77TT0DA9NY7TNW3R7255N --content-key page-user-id --brief",
|
|
70
74
|
" nolo space delete --name-prefix rn_owner_verify_0504 --yes",
|
|
71
75
|
" nolo table query --table 01ABCXYZ",
|
|
72
76
|
' nolo table query --table meta-0e95801d90-NOLOTASKBOARD --columns \'["title","status","owner","priority","codeStatus"]\' --no-base-fields --output items',
|
|
73
77
|
' nolo table update-row --table meta-0e95801d90-NOLOTASKBOARD --row 01ROWID --changes \'{"status":"已完成"}\'',
|
|
74
|
-
" nolo task-run read-context --row-dbkey row-user-table-row",
|
|
75
78
|
" nolo llama status",
|
|
76
79
|
];
|
|
77
80
|
|