akanjs 3.0.0-beta.2 → 3.0.0-beta.20
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/base/base.ts +6 -11
- package/base/baseEnv.ts +17 -11
- package/base/databaseModes.ts +75 -0
- package/base/index.ts +1 -0
- package/base/primitiveRegistry.ts +38 -47
- package/base/symbols.ts +1 -1
- package/base/types.ts +1 -1
- package/base/utils.ts +3 -6
- package/capacitor.base.config.ts +2 -3
- package/client/capacitor.ts +18 -63
- package/client/cn.ts +3 -13
- package/client/cookie.ts +6 -15
- package/client/createFont.ts +0 -2
- package/client/csrTypes.ts +6 -59
- package/client/decorators.ts +1 -1
- package/client/device.ts +52 -44
- package/client/frameConfig.ts +15 -26
- package/client/index.ts +0 -1
- package/client/makePageProto.tsx +3 -4
- package/client/route/RootLayoutDefinition.ts +0 -6
- package/client/route/RouteDefinition.ts +5 -30
- package/client/route/resolveRouteModule.ts +1 -5
- package/client/router.ts +35 -39
- package/client/rscNavigation.ts +4 -5
- package/client/sharedContext.ts +2 -19
- package/client/storage.ts +29 -38
- package/client/translator.ts +5 -6
- package/client/types.ts +0 -3
- package/common/CodeAgentClient.ts +91 -0
- package/common/CodeTranscript.ts +325 -0
- package/common/Logger.ts +9 -34
- package/common/TrustedProxy.ts +6 -34
- package/common/applyMixins.ts +13 -2
- package/common/authToken.ts +0 -11
- package/common/capitalize.ts +3 -4
- package/common/clamp.ts +0 -1
- package/common/clientAddress.ts +1 -15
- package/common/codeAgentProfile.ts +181 -0
- package/common/codeAgentWire.ts +305 -0
- package/{server/routing → common}/eventStream.ts +1 -6
- package/common/fileUpload.ts +1 -12
- package/common/formatNumber.ts +3 -12
- package/common/index.ts +104 -19
- package/common/interpolateTranslation.ts +1 -6
- package/common/isEmail.ts +0 -1
- package/common/isRecord.ts +2 -0
- package/common/isThenable.ts +1 -8
- package/common/isValidDate.ts +3 -5
- package/common/logContext.ts +1 -1
- package/{ui/Agent → common}/markdownBlocks.ts +0 -3
- package/common/markdownSpans.ts +47 -0
- package/{ui/Agent → common}/markdownTable.ts +1 -5
- package/common/mcpExposure.ts +4 -27
- package/common/objectPath.ts +67 -0
- package/common/objectify.ts +52 -0
- package/common/{isPhoneNumber.ts → phone.ts} +7 -1
- package/common/randomPick.ts +13 -0
- package/common/requestOrigin.ts +0 -17
- package/common/restClient.ts +8 -13
- package/common/round.ts +4 -0
- package/common/routeConvention.ts +21 -14
- package/common/sleep.ts +1 -8
- package/common/subRoute.ts +4 -7
- package/common/toError.ts +1 -0
- package/common/tunnelWire.ts +263 -0
- package/common/types.ts +6 -7
- package/common/{splitVersion.ts → version.ts} +3 -6
- package/common/{websocketBinaryFrame.ts → websocketContract.ts} +43 -9
- package/constant/cascadePaths.ts +6 -9
- package/constant/constantRegistry.ts +21 -57
- package/constant/crystalize.ts +2 -12
- package/constant/dateSlot.ts +0 -15
- package/constant/fieldInfo.ts +30 -109
- package/constant/fieldQueryMeta.ts +2 -10
- package/constant/getDefault.ts +16 -8
- package/constant/hydrationPlan.ts +1 -9
- package/constant/index.ts +0 -1
- package/constant/labelOf.ts +1 -6
- package/constant/mask.ts +36 -38
- package/constant/purify.ts +6 -14
- package/constant/serialize.ts +82 -5
- package/constant/textFieldPaths.ts +2 -3
- package/constant/types.ts +2 -6
- package/constant/via.ts +20 -60
- package/dictionary/DictionaryLookup.ts +1 -7
- package/dictionary/agent.dictionary.ts +43 -11
- package/dictionary/base.dictionary.ts +11 -0
- package/dictionary/dictInfo.ts +145 -626
- package/dictionary/dictShape.ts +54 -0
- package/dictionary/dictionary.ts +1 -2
- package/dictionary/dictionaryRegistry.ts +7 -28
- package/dictionary/locale.ts +24 -116
- package/dictionary/trans.ts +18 -56
- package/document/dataLoader.ts +77 -78
- package/document/database.ts +52 -56
- package/document/documentQuery.ts +32 -32
- package/document/documentSchema.ts +21 -26
- package/document/filterMeta.ts +11 -31
- package/document/index.ts +0 -1
- package/document/into.ts +8 -18
- package/document/loaderInfo.ts +28 -7
- package/document/noDocumentError.ts +2 -7
- package/document/queryEvaluator.ts +21 -43
- package/document/types.ts +0 -1
- package/fetch/client/fetchClient.ts +66 -105
- package/fetch/client/fetchHandle.ts +4 -12
- package/fetch/client/httpClient.ts +35 -68
- package/fetch/client/remoteError.ts +2 -8
- package/fetch/client/sliceInitHandle.ts +3 -6
- package/fetch/client/sliceQueryArgs.ts +11 -0
- package/fetch/client/wsClient.ts +75 -64
- package/fetch/fetchType/appliedReturn.type.ts +5 -24
- package/fetch/fetchType/buildFetch.type.ts +28 -1
- package/fetch/fetchType/index.ts +0 -1
- package/fetch/requestStorage.ts +7 -28
- package/fetch/types.ts +0 -1
- package/index.ts +31 -64
- package/package.json +19 -5
- package/server/akanApp.ts +138 -289
- package/server/akanAppHeaders.ts +2 -3
- package/server/akanOption.ts +25 -27
- package/server/akanServer.ts +98 -219
- package/server/animatedImage.ts +2 -11
- package/server/artifact/builderRpc.ts +24 -64
- package/server/artifact/index.ts +0 -1
- package/server/artifact/ipcTypes.ts +27 -30
- package/server/artifact/routeClientCache.ts +18 -37
- package/server/artifact/routeSeedIndexStore.ts +2 -35
- package/server/artifact/routesManifestStore.ts +13 -38
- package/server/binaryPubsub.ts +0 -9
- package/server/cachePolicy.ts +10 -44
- package/server/console.ts +12 -16
- package/server/consoleSession.ts +55 -12
- package/server/contentEncoding.ts +42 -27
- package/server/decorators.ts +4 -70
- package/server/devtools/constantSerializer.ts +2 -14
- package/server/devtools/depsSerializer.ts +14 -46
- package/server/devtools/devtoolsJson.ts +6 -18
- package/server/devtools/devtoolsRouter.ts +2 -12
- package/server/devtools/signalSerializer.ts +5 -44
- package/server/devtools/types.ts +0 -12
- package/server/di/diLifecycle.ts +141 -221
- package/server/di/predefinedAdaptor.ts +11 -5
- package/server/di/resolveHierarchy.ts +114 -5
- package/server/di/utils.ts +13 -29
- package/server/head.tsx +53 -0
- package/server/hmr/clientScript.ts +2 -8
- package/server/hmr/devHmrController.ts +28 -32
- package/server/hmr/wsHub.ts +9 -7
- package/server/imageOptimizer.ts +5 -26
- package/server/index.ts +1 -1
- package/server/lifecycle/portInUse.ts +1 -4
- package/server/lifecycle/runtimeDir.ts +0 -4
- package/server/lifecycle/shutdownManager.ts +4 -29
- package/server/logging/childOutputReader.ts +0 -12
- package/server/logging/hubFileSink.ts +10 -6
- package/server/logging/logControlSocket.ts +13 -7
- package/server/logging/logForwarder.ts +19 -22
- package/server/logging/logHub.ts +0 -0
- package/server/logging/logQuery.ts +4 -7
- package/server/logging/logStdoutWriter.ts +1 -11
- package/server/logging/logStreamRoute.ts +4 -21
- package/server/logging/logTailClient.ts +1 -8
- package/server/logging/rotatingLogWriter.ts +4 -6
- package/server/mcp/McpAuth.ts +5 -79
- package/server/mcp/McpDispatcher.ts +13 -90
- package/server/mcp/McpEventStream.ts +2 -12
- package/server/mcp/McpExecutionContext.ts +1 -42
- package/server/mcp/McpRateLimiter.ts +61 -30
- package/server/mcp/McpRouter.ts +49 -208
- package/server/mcp/PagePromptComposer.ts +7 -29
- package/server/memoryLimit.ts +1 -13
- package/server/oauth/OAuthAuthorize.ts +3 -7
- package/server/oauth/OAuthClientIdMetadata.ts +2 -27
- package/server/oauth/OAuthErrors.ts +0 -13
- package/server/oauth/OAuthMetadata.ts +1 -7
- package/server/oauth/OAuthPkce.ts +0 -2
- package/server/oauth/OAuthRedirect.ts +0 -9
- package/server/oauth/OAuthRegistration.ts +0 -2
- package/server/oauth/OAuthRevocation.ts +1 -11
- package/server/oauth/OAuthToken.ts +3 -14
- package/server/oauth/oauthTypes.ts +1 -2
- package/server/ops/ageEncryption.ts +317 -0
- package/server/ops/appInfo.ts +92 -0
- package/server/ops/opsCommand.ts +116 -0
- package/server/ops/opsRoute.ts +151 -0
- package/server/ops/opsToken.ts +93 -0
- package/server/ops/snapshotJobs.ts +133 -0
- package/server/ops/snapshotRestore.ts +118 -0
- package/server/ops/snapshotTypes.ts +52 -0
- package/server/ops/sqliteFiles.ts +20 -0
- package/server/ops/sqliteSnapshot.ts +149 -0
- package/server/processMetricsCollector.ts +12 -14
- package/server/proxy/hostBasePathWebProxy.ts +20 -13
- package/server/proxy/index.ts +2 -3
- package/server/proxy/localeWebProxy.ts +3 -17
- package/server/proxy/types.ts +14 -0
- package/server/proxy/webProxyRunner.ts +13 -1
- package/server/resolver/CascadeRunner.ts +7 -23
- package/server/resolver/database.resolver.ts +57 -123
- package/server/resolver/service.resolver.ts +9 -161
- package/server/resolver/signal.resolver.ts +73 -98
- package/server/routeElementComposer.tsx +23 -52
- package/server/routeState.ts +15 -34
- package/server/routeTreeBuilder.ts +24 -83
- package/server/routing/apiRouter.ts +17 -49
- package/server/routing/appWsData.ts +4 -28
- package/server/routing/soloAppRoutes.ts +5 -5
- package/server/rscClient.tsx +31 -37
- package/server/rscClientFetch.ts +7 -3
- package/server/rscClientPatch.ts +4 -25
- package/server/rscHttp.ts +1 -1
- package/server/rscNavigationState.ts +10 -25
- package/server/rscPagePrompts.ts +4 -24
- package/server/rscSegmentOutlet.tsx +1 -5
- package/server/rscWorker.tsx +146 -285
- package/server/rscWorkerCache.ts +74 -8
- package/server/rscWorkerHost.ts +45 -192
- package/server/semaphore.ts +1 -1
- package/server/sitemap.ts +1 -3
- package/server/ssrFromRscRenderer.tsx +31 -124
- package/server/ssrTypes.ts +3 -29
- package/server/staticPath.ts +0 -16
- package/server/systemPageDocument.tsx +65 -2
- package/server/systemPages.tsx +4 -2
- package/server/tunnel/TunnelAgent.ts +237 -0
- package/server/tunnel/TunnelDataSocket.ts +146 -0
- package/server/tunnel/TunnelHttpStream.ts +86 -0
- package/server/tunnel/TunnelTcpStream.ts +96 -0
- package/server/tunnel/TunnelWebsocketStream.ts +110 -0
- package/server/tunnel/index.ts +6 -0
- package/server/tunnel/tunnelStream.ts +32 -0
- package/server/types.tsx +2 -9
- package/server/webRouter.ts +88 -306
- package/service/agent.service.ts +66 -35
- package/service/injectInfo.ts +106 -75
- package/service/ipcTypes.ts +4 -1
- package/service/liveSyncHub.ts +4 -34
- package/service/predefinedAdaptor/anthropicLlm.ts +65 -75
- package/service/predefinedAdaptor/cache.adaptor.ts +257 -75
- package/service/predefinedAdaptor/database.adaptor.ts +366 -108
- package/service/predefinedAdaptor/documentTransfer.ts +89 -0
- package/service/predefinedAdaptor/index.ts +2 -1
- package/service/predefinedAdaptor/insightQuery.ts +89 -79
- package/service/predefinedAdaptor/llm.adaptor.ts +64 -54
- package/service/predefinedAdaptor/llmOverflow.ts +63 -0
- package/service/predefinedAdaptor/openaiDialect.ts +56 -64
- package/service/predefinedAdaptor/openaiLlm.ts +24 -27
- package/service/predefinedAdaptor/queue.adaptor.ts +41 -22
- package/service/predefinedAdaptor/schedule.adaptor.ts +69 -9
- package/service/predefinedAdaptor/searchIndex.ts +76 -325
- package/service/predefinedAdaptor/solidCache.adaptor.ts +135 -12
- package/service/predefinedAdaptor/solidPubsub.adaptor.ts +28 -16
- package/service/predefinedAdaptor/solidQueue.adaptor.ts +61 -10
- package/service/predefinedAdaptor/solidSqlite.ts +10 -16
- package/service/predefinedAdaptor/sql/PendingStoreEnsures.ts +1 -0
- package/service/predefinedAdaptor/sql/PostgresInsightSession.ts +113 -0
- package/service/predefinedAdaptor/sql/QueryCompiler.ts +50 -30
- package/service/predefinedAdaptor/sql/SqlDocumentStore.ts +290 -138
- package/service/predefinedAdaptor/sql/SqliteInsightSession.ts +85 -0
- package/service/predefinedAdaptor/sql/UpdateCompiler.ts +1 -7
- package/service/predefinedAdaptor/sql/dialect/postgres.ts +138 -53
- package/service/predefinedAdaptor/sql/dialect/sqlite.ts +18 -15
- package/service/predefinedAdaptor/sql/driver/bunSqlite.ts +31 -4
- package/service/predefinedAdaptor/sql/driver/libsql.ts +20 -12
- package/service/predefinedAdaptor/sql/driver/postgres.ts +13 -7
- package/service/predefinedAdaptor/sql/search/fts5.ts +249 -0
- package/service/predefinedAdaptor/sql/search/mirror.ts +76 -0
- package/service/predefinedAdaptor/sql/search/postgres.ts +453 -0
- package/service/predefinedAdaptor/sql/search/types.ts +50 -0
- package/service/predefinedAdaptor/sql/types.ts +76 -17
- package/service/predefinedAdaptor/sql/values.ts +40 -2
- package/service/predefinedAdaptor/sqlitePath.ts +12 -0
- package/service/predefinedAdaptor/sseData.ts +23 -0
- package/service/predefinedAdaptor/storage.adaptor.ts +19 -7
- package/service/predefinedAdaptor/websocket.adaptor.ts +154 -184
- package/service/serve.ts +1 -2
- package/service/serviceModule.ts +52 -70
- package/service/toolNames.ts +5 -22
- package/service/types.ts +3 -9
- package/signal/CrossSiteGuard.ts +5 -40
- package/signal/SignalFailure.ts +2 -15
- package/signal/agent/AgentCatalogue.ts +9 -55
- package/signal/agent.signal.ts +9 -6
- package/signal/agentMeter.ts +45 -0
- package/signal/agentTurnStream.ts +48 -46
- package/signal/endpoint.ts +12 -2
- package/signal/endpointCache.ts +59 -0
- package/signal/endpointInfo.ts +13 -27
- package/signal/exception.ts +3 -34
- package/signal/guard.ts +4 -21
- package/signal/guards.ts +2 -10
- package/signal/index.ts +1 -0
- package/signal/internal.ts +3 -7
- package/signal/internalArg.ts +10 -13
- package/signal/internalInfo.ts +1 -1
- package/signal/mcp/McpDocument.ts +21 -90
- package/signal/mcp/McpProgress.ts +6 -19
- package/signal/mcp/McpUriTemplate.ts +1 -27
- package/signal/mcp/Msg.ts +13 -122
- package/signal/mcp/mcpProtocol.ts +3 -26
- package/signal/mcp/pagePrompt.ts +3 -9
- package/signal/middleware.ts +15 -65
- package/signal/openapi/openapi.ts +0 -4
- package/signal/schema/JsonSchemaBuilder.ts +32 -46
- package/signal/serializer/fetch.serializer.ts +37 -43
- package/signal/serverSignal.ts +6 -8
- package/signal/signalContext.ts +70 -161
- package/signal/signalRegistry.ts +11 -17
- package/signal/slice.ts +6 -12
- package/signal/sliceInfo.ts +5 -30
- package/signal/trace.ts +11 -84
- package/signal/types.ts +27 -57
- package/store/SliceRequest.ts +1 -11
- package/store/action.ts +153 -395
- package/store/actionTag.ts +1 -10
- package/store/agent/AgentBridge.ts +3 -25
- package/store/agent/AgentContext.ts +2 -9
- package/store/agent/AgentCursor.ts +160 -0
- package/store/agent/AgentPrompts.ts +0 -15
- package/store/agent/AgentVisual.ts +152 -0
- package/store/agent/ScreenFlash.ts +67 -0
- package/store/agent/ScreenReader.ts +3 -52
- package/store/agent/ScreenSettle.ts +1 -13
- package/store/agent/ScreenTarget.ts +15 -32
- package/store/agent/StoreCatalogue.ts +12 -24
- package/store/agent/StoreSurfaceSource.ts +35 -65
- package/store/agent/index.ts +4 -4
- package/store/agentic/AgentValue.ts +9 -26
- package/store/agentic/StExposeBuilder.ts +3 -12
- package/store/agentic/StExposeDraft.ts +0 -6
- package/store/agentic/StStateBuilder.ts +3 -11
- package/store/agentic/StStateDraft.ts +0 -5
- package/store/agentic/StToolBuilder.ts +48 -41
- package/store/agentic/StToolDraft.ts +0 -7
- package/store/agentic/attachAgentic.ts +2 -10
- package/store/agentic/formFields.ts +8 -42
- package/store/agentic/index.ts +1 -1
- package/store/agentic/useAgentReference.ts +31 -0
- package/store/agentic/useFieldTool.ts +176 -58
- package/store/agentic/useFormTools.ts +4 -21
- package/store/agentic/useRelationFieldTool.ts +2 -15
- package/store/databaseStateNames.ts +0 -9
- package/store/draftStore.ts +4 -54
- package/store/formSetterNames.ts +2 -19
- package/store/hooks.ts +1 -1
- package/store/liveInsert.ts +1 -30
- package/store/sliceKeys.ts +37 -0
- package/store/sliceRole.ts +1 -10
- package/store/state.ts +4 -50
- package/store/stateBuilder.ts +1 -23
- package/store/storeInstance.ts +21 -114
- package/store/storeRegistry.ts +1 -8
- package/store/types.ts +1 -1
- package/test/conformance.ts +299 -0
- package/test/index.ts +2 -2
- package/test/sampleOf.ts +52 -28
- package/test/signalTestRuntime.ts +6 -10
- package/test/testServer.ts +66 -31
- package/types/base/base.d.ts +2 -3
- package/types/base/baseEnv.d.ts +7 -10
- package/types/base/databaseModes.d.ts +28 -0
- package/types/base/index.d.ts +1 -0
- package/types/base/primitiveRegistry.d.ts +23 -10
- package/types/base/symbols.d.ts +1 -1
- package/types/capacitor.base.config.d.ts +1 -1
- package/types/client/cn.d.ts +3 -13
- package/types/client/cookie.d.ts +3 -12
- package/types/client/csrTypes.d.ts +6 -57
- package/types/client/decorators.d.ts +1 -1
- package/types/client/device.d.ts +2 -1
- package/types/client/index.d.ts +0 -1
- package/types/client/route/RootLayoutDefinition.d.ts +0 -1
- package/types/client/route/RouteDefinition.d.ts +4 -16
- package/types/client/route/resolveRouteModule.d.ts +1 -5
- package/types/client/router.d.ts +8 -4
- package/types/client/rscNavigation.d.ts +4 -5
- package/types/client/sharedContext.d.ts +2 -19
- package/types/client/storage.d.ts +1 -1
- package/types/client/types.d.ts +0 -3
- package/types/common/CodeAgentClient.d.ts +20 -0
- package/types/common/CodeTranscript.d.ts +72 -0
- package/types/common/Logger.d.ts +4 -20
- package/types/common/TrustedProxy.d.ts +2 -28
- package/types/common/applyMixins.d.ts +3 -0
- package/types/common/authToken.d.ts +0 -11
- package/types/common/capitalize.d.ts +1 -1
- package/types/common/clamp.d.ts +0 -1
- package/types/common/clientAddress.d.ts +1 -15
- package/types/common/codeAgentProfile.d.ts +115 -0
- package/types/common/codeAgentWire.d.ts +279 -0
- package/types/{server/routing → common}/eventStream.d.ts +0 -5
- package/types/common/fileUpload.d.ts +6 -11
- package/types/common/index.d.ts +20 -19
- package/types/common/interpolateTranslation.d.ts +1 -6
- package/types/common/isEmail.d.ts +0 -1
- package/types/common/isRecord.d.ts +1 -0
- package/types/common/isThenable.d.ts +0 -8
- package/types/common/logContext.d.ts +1 -1
- package/types/{ui/Agent → common}/markdownBlocks.d.ts +0 -3
- package/types/common/markdownSpans.d.ts +30 -0
- package/types/{ui/Agent → common}/markdownTable.d.ts +0 -2
- package/types/common/mcpExposure.d.ts +3 -23
- package/types/common/objectPath.d.ts +10 -0
- package/types/common/objectify.d.ts +7 -0
- package/types/common/phone.d.ts +2 -0
- package/types/common/randomPick.d.ts +1 -0
- package/types/common/requestOrigin.d.ts +0 -17
- package/types/common/restClient.d.ts +0 -7
- package/types/common/round.d.ts +1 -0
- package/types/common/routeConvention.d.ts +2 -5
- package/types/common/sleep.d.ts +0 -1
- package/types/common/subRoute.d.ts +4 -6
- package/types/common/toError.d.ts +1 -0
- package/types/common/tunnelWire.d.ts +161 -0
- package/types/common/types.d.ts +7 -7
- package/types/common/version.d.ts +6 -0
- package/types/common/websocketContract.d.ts +41 -0
- package/types/constant/cascadePaths.d.ts +2 -5
- package/types/constant/constantRegistry.d.ts +4 -4
- package/types/constant/dateSlot.d.ts +0 -5
- package/types/constant/fieldInfo.d.ts +2 -21
- package/types/constant/fieldQueryMeta.d.ts +2 -10
- package/types/constant/getDefault.d.ts +5 -7
- package/types/constant/hydrationPlan.d.ts +0 -8
- package/types/constant/index.d.ts +0 -1
- package/types/constant/labelOf.d.ts +1 -6
- package/types/constant/mask.d.ts +11 -36
- package/types/constant/serialize.d.ts +10 -2
- package/types/constant/types.d.ts +2 -6
- package/types/constant/via.d.ts +0 -1
- package/types/dictionary/DictionaryLookup.d.ts +1 -7
- package/types/dictionary/agent.dictionary.d.ts +2 -1
- package/types/dictionary/base.dictionary.d.ts +1 -1
- package/types/dictionary/dictInfo.d.ts +25 -92
- package/types/dictionary/dictShape.d.ts +26 -0
- package/types/dictionary/dictionary.d.ts +9 -9
- package/types/dictionary/dictionaryRegistry.d.ts +1 -15
- package/types/dictionary/locale.d.ts +9 -28
- package/types/dictionary/trans.d.ts +5 -14
- package/types/document/dataLoader.d.ts +2 -2
- package/types/document/database.d.ts +21 -14
- package/types/document/documentQuery.d.ts +6 -1
- package/types/document/documentSchema.d.ts +3 -7
- package/types/document/filterMeta.d.ts +3 -8
- package/types/document/index.d.ts +0 -1
- package/types/document/into.d.ts +3 -2
- package/types/document/loaderInfo.d.ts +9 -4
- package/types/document/noDocumentError.d.ts +2 -7
- package/types/document/queryEvaluator.d.ts +7 -24
- package/types/document/types.d.ts +0 -1
- package/types/fetch/client/fetchClient.d.ts +6 -9
- package/types/fetch/client/fetchHandle.d.ts +3 -11
- package/types/fetch/client/httpClient.d.ts +5 -1
- package/types/fetch/client/remoteError.d.ts +2 -8
- package/types/fetch/client/sliceInitHandle.d.ts +2 -5
- package/types/fetch/client/sliceQueryArgs.d.ts +3 -0
- package/types/fetch/client/wsClient.d.ts +10 -15
- package/types/fetch/fetchType/appliedReturn.type.d.ts +5 -23
- package/types/fetch/fetchType/buildFetch.type.d.ts +15 -1
- package/types/fetch/fetchType/index.d.ts +0 -1
- package/types/fetch/requestStorage.d.ts +3 -16
- package/types/fetch/types.d.ts +0 -1
- package/types/index.d.ts +30 -64
- package/types/server/akanApp.d.ts +5 -28
- package/types/server/akanAppHeaders.d.ts +0 -1
- package/types/server/akanOption.d.ts +12 -24
- package/types/server/akanServer.d.ts +16 -56
- package/types/server/animatedImage.d.ts +0 -6
- package/types/server/artifact/builderRpc.d.ts +7 -30
- package/types/server/artifact/index.d.ts +0 -1
- package/types/server/artifact/ipcTypes.d.ts +22 -29
- package/types/server/artifact/routeClientCache.d.ts +3 -11
- package/types/server/artifact/routeSeedIndexStore.d.ts +0 -16
- package/types/server/artifact/routesManifestStore.d.ts +1 -1
- package/types/server/binaryPubsub.d.ts +0 -8
- package/types/server/cachePolicy.d.ts +2 -21
- package/types/server/console.d.ts +3 -6
- package/types/server/consoleSession.d.ts +2 -2
- package/types/server/contentEncoding.d.ts +6 -14
- package/types/server/decorators.d.ts +0 -12
- package/types/server/devtools/constantSerializer.d.ts +1 -6
- package/types/server/devtools/depsSerializer.d.ts +1 -7
- package/types/server/devtools/devtoolsJson.d.ts +1 -7
- package/types/server/devtools/devtoolsRouter.d.ts +2 -11
- package/types/server/devtools/signalSerializer.d.ts +1 -9
- package/types/server/devtools/types.d.ts +0 -11
- package/types/server/di/diLifecycle.d.ts +0 -36
- package/types/server/di/predefinedAdaptor.d.ts +3 -2
- package/types/server/di/resolveHierarchy.d.ts +22 -5
- package/types/server/di/utils.d.ts +4 -17
- package/types/server/head.d.ts +9 -0
- package/types/server/hmr/devHmrController.d.ts +0 -2
- package/types/server/hmr/wsHub.d.ts +6 -1
- package/types/server/index.d.ts +1 -1
- package/types/server/lifecycle/portInUse.d.ts +1 -4
- package/types/server/lifecycle/runtimeDir.d.ts +0 -4
- package/types/server/lifecycle/shutdownManager.d.ts +0 -9
- package/types/server/logging/childOutputReader.d.ts +0 -12
- package/types/server/logging/hubFileSink.d.ts +1 -5
- package/types/server/logging/logControlSocket.d.ts +2 -7
- package/types/server/logging/logForwarder.d.ts +3 -15
- package/types/server/logging/logHub.d.ts +1 -15
- package/types/server/logging/logQuery.d.ts +3 -6
- package/types/server/logging/logStdoutWriter.d.ts +0 -6
- package/types/server/logging/logStreamRoute.d.ts +0 -9
- package/types/server/logging/logTailClient.d.ts +0 -5
- package/types/server/mcp/McpAuth.d.ts +3 -71
- package/types/server/mcp/McpDispatcher.d.ts +0 -23
- package/types/server/mcp/McpEventStream.d.ts +1 -12
- package/types/server/mcp/McpExecutionContext.d.ts +0 -33
- package/types/server/mcp/McpRateLimiter.d.ts +10 -13
- package/types/server/mcp/McpRouter.d.ts +1 -47
- package/types/server/mcp/PagePromptComposer.d.ts +1 -13
- package/types/server/memoryLimit.d.ts +1 -13
- package/types/server/oauth/OAuthAuthorize.d.ts +1 -6
- package/types/server/oauth/OAuthClientIdMetadata.d.ts +2 -26
- package/types/server/oauth/OAuthErrors.d.ts +0 -13
- package/types/server/oauth/OAuthMetadata.d.ts +1 -7
- package/types/server/oauth/OAuthPkce.d.ts +0 -1
- package/types/server/oauth/OAuthRedirect.d.ts +0 -9
- package/types/server/oauth/OAuthRegistration.d.ts +0 -1
- package/types/server/oauth/OAuthRevocation.d.ts +1 -11
- package/types/server/oauth/OAuthToken.d.ts +1 -13
- package/types/server/oauth/oauthTypes.d.ts +1 -2
- package/types/server/ops/ageEncryption.d.ts +19 -0
- package/types/server/ops/appInfo.d.ts +36 -0
- package/types/server/ops/opsCommand.d.ts +5 -0
- package/types/server/ops/opsRoute.d.ts +24 -0
- package/types/server/ops/opsToken.d.ts +26 -0
- package/types/server/ops/snapshotJobs.d.ts +24 -0
- package/types/server/ops/snapshotRestore.d.ts +24 -0
- package/types/server/ops/snapshotTypes.d.ts +45 -0
- package/types/server/ops/sqliteFiles.d.ts +5 -0
- package/types/server/ops/sqliteSnapshot.d.ts +32 -0
- package/types/server/processMetricsCollector.d.ts +3 -1
- package/types/server/proxy/hostBasePathWebProxy.d.ts +7 -1
- package/types/server/proxy/index.d.ts +2 -3
- package/types/server/proxy/localeWebProxy.d.ts +1 -1
- package/types/server/proxy/types.d.ts +5 -0
- package/types/server/proxy/webProxyRunner.d.ts +1 -0
- package/types/server/resolver/CascadeRunner.d.ts +0 -4
- package/types/server/resolver/database.resolver.d.ts +1 -1
- package/types/server/resolver/service.resolver.d.ts +2 -2
- package/types/server/resolver/signal.resolver.d.ts +1 -15
- package/types/server/routeElementComposer.d.ts +2 -8
- package/types/server/routeState.d.ts +1 -1
- package/types/server/routing/apiRouter.d.ts +2 -20
- package/types/server/routing/appWsData.d.ts +0 -26
- package/types/server/routing/soloAppRoutes.d.ts +2 -6
- package/types/server/rscClient.d.ts +0 -9
- package/types/server/rscClientFetch.d.ts +6 -6
- package/types/server/rscClientPatch.d.ts +1 -1
- package/types/server/rscHttp.d.ts +1 -0
- package/types/server/rscNavigationState.d.ts +3 -2
- package/types/server/rscPagePrompts.d.ts +0 -9
- package/types/server/rscWorkerCache.d.ts +41 -3
- package/types/server/rscWorkerHost.d.ts +5 -61
- package/types/server/ssrFromRscRenderer.d.ts +0 -12
- package/types/server/ssrTypes.d.ts +2 -29
- package/types/server/staticPath.d.ts +0 -16
- package/types/server/systemPageDocument.d.ts +8 -0
- package/types/server/systemPages.d.ts +2 -3
- package/types/server/tunnel/TunnelAgent.d.ts +29 -0
- package/types/server/tunnel/TunnelDataSocket.d.ts +22 -0
- package/types/server/tunnel/TunnelHttpStream.d.ts +10 -0
- package/types/server/tunnel/TunnelTcpStream.d.ts +11 -0
- package/types/server/tunnel/TunnelWebsocketStream.d.ts +10 -0
- package/types/server/tunnel/index.d.ts +6 -0
- package/types/server/tunnel/tunnelStream.d.ts +19 -0
- package/types/server/tunnel.d.ts +1 -0
- package/types/server/types.d.ts +2 -9
- package/types/server/webRouter.d.ts +2 -19
- package/types/service/agent.service.d.ts +16 -29
- package/types/service/injectInfo.d.ts +26 -15
- package/types/service/ipcTypes.d.ts +6 -0
- package/types/service/liveSyncHub.d.ts +4 -22
- package/types/service/predefinedAdaptor/anthropicLlm.d.ts +20 -29
- package/types/service/predefinedAdaptor/cache.adaptor.d.ts +42 -12
- package/types/service/predefinedAdaptor/database.adaptor.d.ts +20 -16
- package/types/service/predefinedAdaptor/documentTransfer.d.ts +15 -0
- package/types/service/predefinedAdaptor/index.d.ts +2 -1
- package/types/service/predefinedAdaptor/insightQuery.d.ts +7 -30
- package/types/service/predefinedAdaptor/llm.adaptor.d.ts +54 -54
- package/types/service/predefinedAdaptor/llmOverflow.d.ts +16 -0
- package/types/service/predefinedAdaptor/openaiDialect.d.ts +19 -29
- package/types/service/predefinedAdaptor/openaiLlm.d.ts +9 -14
- package/types/service/predefinedAdaptor/queue.adaptor.d.ts +12 -7
- package/types/service/predefinedAdaptor/schedule.adaptor.d.ts +7 -2
- package/types/service/predefinedAdaptor/searchIndex.d.ts +17 -47
- package/types/service/predefinedAdaptor/solidCache.adaptor.d.ts +15 -6
- package/types/service/predefinedAdaptor/solidPubsub.adaptor.d.ts +6 -4
- package/types/service/predefinedAdaptor/solidSqlite.d.ts +2 -1
- package/types/service/predefinedAdaptor/sql/PostgresInsightSession.d.ts +20 -0
- package/types/service/predefinedAdaptor/sql/QueryCompiler.d.ts +9 -11
- package/types/service/predefinedAdaptor/sql/SqlDocumentStore.d.ts +11 -25
- package/types/service/predefinedAdaptor/sql/SqliteInsightSession.d.ts +15 -0
- package/types/service/predefinedAdaptor/sql/UpdateCompiler.d.ts +0 -4
- package/types/service/predefinedAdaptor/sql/dialect/postgres.d.ts +18 -10
- package/types/service/predefinedAdaptor/sql/dialect/sqlite.d.ts +5 -2
- package/types/service/predefinedAdaptor/sql/driver/bunSqlite.d.ts +9 -3
- package/types/service/predefinedAdaptor/sql/driver/libsql.d.ts +8 -5
- package/types/service/predefinedAdaptor/sql/driver/postgres.d.ts +4 -4
- package/types/service/predefinedAdaptor/sql/search/fts5.d.ts +28 -0
- package/types/service/predefinedAdaptor/sql/search/mirror.d.ts +20 -0
- package/types/service/predefinedAdaptor/sql/search/postgres.d.ts +53 -0
- package/types/service/predefinedAdaptor/sql/search/types.d.ts +45 -0
- package/types/service/predefinedAdaptor/sql/types.d.ts +69 -15
- package/types/service/predefinedAdaptor/sql/values.d.ts +8 -0
- package/types/service/predefinedAdaptor/sqlitePath.d.ts +1 -0
- package/types/service/predefinedAdaptor/sseData.d.ts +1 -0
- package/types/service/predefinedAdaptor/storage.adaptor.d.ts +3 -2
- package/types/service/predefinedAdaptor/websocket.adaptor.d.ts +26 -26
- package/types/service/serviceModule.d.ts +7 -7
- package/types/service/toolNames.d.ts +4 -21
- package/types/service/types.d.ts +3 -3
- package/types/signal/CrossSiteGuard.d.ts +3 -28
- package/types/signal/SignalFailure.d.ts +1 -15
- package/types/signal/agent/AgentCatalogue.d.ts +8 -54
- package/types/signal/agent.signal.d.ts +4 -1
- package/types/signal/agentMeter.d.ts +24 -0
- package/types/signal/agentTurnStream.d.ts +10 -11
- package/types/signal/endpoint.d.ts +0 -1
- package/types/signal/endpointCache.d.ts +5 -0
- package/types/signal/endpointInfo.d.ts +1 -9
- package/types/signal/exception.d.ts +1 -34
- package/types/signal/guard.d.ts +4 -15
- package/types/signal/guards.d.ts +2 -10
- package/types/signal/index.d.ts +1 -0
- package/types/signal/internal.d.ts +1 -5
- package/types/signal/internalArg.d.ts +7 -13
- package/types/signal/mcp/McpDocument.d.ts +5 -45
- package/types/signal/mcp/McpProgress.d.ts +6 -19
- package/types/signal/mcp/McpUriTemplate.d.ts +1 -19
- package/types/signal/mcp/Msg.d.ts +13 -70
- package/types/signal/mcp/mcpProtocol.d.ts +1 -26
- package/types/signal/mcp/pagePrompt.d.ts +3 -9
- package/types/signal/middleware.d.ts +0 -18
- package/types/signal/schema/JsonSchemaBuilder.d.ts +15 -43
- package/types/signal/serializer/fetch.serializer.d.ts +1 -6
- package/types/signal/serverSignal.d.ts +0 -1
- package/types/signal/signalContext.d.ts +14 -61
- package/types/signal/signalRegistry.d.ts +0 -1
- package/types/signal/slice.d.ts +3 -9
- package/types/signal/sliceInfo.d.ts +5 -30
- package/types/signal/trace.d.ts +2 -30
- package/types/signal/types.d.ts +27 -57
- package/types/store/SliceRequest.d.ts +1 -11
- package/types/store/action.d.ts +2 -6
- package/types/store/actionTag.d.ts +1 -10
- package/types/store/agent/AgentBridge.d.ts +3 -22
- package/types/store/agent/AgentContext.d.ts +1 -7
- package/types/store/agent/AgentCursor.d.ts +24 -0
- package/types/store/agent/AgentPrompts.d.ts +0 -5
- package/types/store/agent/AgentVisual.d.ts +25 -0
- package/types/store/agent/ScreenFlash.d.ts +23 -0
- package/types/store/agent/ScreenReader.d.ts +3 -26
- package/types/store/agent/ScreenSettle.d.ts +1 -12
- package/types/store/agent/ScreenTarget.d.ts +3 -23
- package/types/store/agent/StoreCatalogue.d.ts +12 -16
- package/types/store/agent/StoreSurfaceSource.d.ts +11 -23
- package/types/store/agent/index.d.ts +4 -3
- package/types/store/agentic/AgentValue.d.ts +3 -23
- package/types/store/agentic/StExposeBuilder.d.ts +2 -11
- package/types/store/agentic/StExposeDraft.d.ts +0 -6
- package/types/store/agentic/StStateBuilder.d.ts +1 -7
- package/types/store/agentic/StStateDraft.d.ts +0 -5
- package/types/store/agentic/StToolBuilder.d.ts +14 -37
- package/types/store/agentic/StToolDraft.d.ts +0 -7
- package/types/store/agentic/attachAgentic.d.ts +2 -10
- package/types/store/agentic/formFields.d.ts +5 -41
- package/types/store/agentic/index.d.ts +1 -1
- package/types/store/agentic/useAgentReference.d.ts +14 -0
- package/types/store/agentic/useFieldTool.d.ts +19 -16
- package/types/store/agentic/useFormTools.d.ts +1 -18
- package/types/store/agentic/useRelationFieldTool.d.ts +1 -14
- package/types/store/baseSt.d.ts +2 -2
- package/types/store/databaseStateNames.d.ts +0 -9
- package/types/store/draftStore.d.ts +4 -30
- package/types/store/formSetterNames.d.ts +0 -19
- package/types/store/hooks.d.ts +1 -1
- package/types/store/liveInsert.d.ts +0 -23
- package/types/store/sliceKeys.d.ts +31 -0
- package/types/store/sliceRole.d.ts +1 -10
- package/types/store/state.d.ts +2 -9
- package/types/store/stateBuilder.d.ts +0 -14
- package/types/store/storeInstance.d.ts +6 -20
- package/types/store/storeRegistry.d.ts +0 -2
- package/types/test/conformance.d.ts +73 -0
- package/types/test/index.d.ts +2 -2
- package/types/test/sampleOf.d.ts +17 -2
- package/types/test/signalTestRuntime.d.ts +1 -1
- package/types/test/testServer.d.ts +4 -3
- package/types/ui/Agent/Attach.d.ts +2 -2
- package/types/ui/Agent/Bubble.d.ts +3 -14
- package/types/ui/Agent/Chat.d.ts +31 -64
- package/types/ui/Agent/ChatCommands.d.ts +4 -14
- package/types/ui/Agent/Composer.d.ts +18 -5
- package/types/ui/Agent/Dock.d.ts +38 -10
- package/types/ui/Agent/Guide.d.ts +1 -5
- package/types/ui/Agent/History.d.ts +1 -18
- package/types/ui/Agent/Launcher.d.ts +2 -2
- package/types/ui/Agent/Markdown.d.ts +2 -6
- package/types/ui/Agent/MentionNode.d.ts +18 -0
- package/types/ui/Agent/Menu.d.ts +4 -4
- package/types/ui/Agent/Question.d.ts +1 -6
- package/types/ui/Agent/Queued.d.ts +1 -6
- package/types/ui/Agent/Refer.d.ts +9 -0
- package/types/ui/Agent/RichInput.d.ts +14 -0
- package/types/ui/Agent/Skip.d.ts +3 -15
- package/types/ui/Agent/Steps.d.ts +17 -0
- package/types/ui/Agent/ToolCard.d.ts +9 -0
- package/types/ui/Agent/Zone.d.ts +13 -30
- package/types/ui/Agent/agentSessionOf.d.ts +20 -16
- package/types/ui/Agent/attachment.d.ts +4 -38
- package/types/ui/Agent/fetchRunner.d.ts +1 -8
- package/types/ui/Agent/index.d.ts +2 -6
- package/types/ui/Agent/mentionDraft.d.ts +9 -0
- package/types/ui/Agent/tokenCount.d.ts +1 -5
- package/types/ui/Agent/useChatAttachments.d.ts +0 -5
- package/types/ui/Agent/useChatQueue.d.ts +3 -14
- package/types/ui/Agent/useChatReferences.d.ts +15 -0
- package/types/ui/Agent/useChatVoice.d.ts +0 -12
- package/types/ui/Agent/useDraftRecall.d.ts +0 -8
- package/types/ui/Agent/useKeyboardInset.d.ts +0 -7
- package/types/ui/Agent/useReferenceMenu.d.ts +35 -0
- package/types/ui/Agent/useSlashMenu.d.ts +0 -2
- package/types/ui/Agent/voice.d.ts +8 -42
- package/types/ui/Badge.d.ts +0 -1
- package/types/ui/BottomSheet.d.ts +2 -5
- package/types/ui/Button.d.ts +6 -23
- package/types/ui/ClientSide.d.ts +0 -2
- package/types/ui/Constant/schemaGraph.d.ts +0 -4
- package/types/ui/Copy.d.ts +2 -3
- package/types/ui/CsrImage.d.ts +2 -1
- package/types/ui/Data/Dashboard.d.ts +1 -4
- package/types/ui/Data/Item.d.ts +1 -1
- package/types/ui/Data/ListContainer.d.ts +1 -10
- package/types/ui/Data/Pagination.d.ts +0 -2
- package/types/ui/Data/QueryMaker.d.ts +0 -7
- package/types/ui/Data/RefPicker.d.ts +0 -7
- package/types/ui/DatePicker.d.ts +0 -11
- package/types/ui/Dialog/LegacyModal.d.ts +1 -4
- package/types/ui/Dialog/Provider.d.ts +37 -4
- package/types/ui/Dialog/index.d.ts +4 -4
- package/types/ui/Dropdown.d.ts +1 -9
- package/types/ui/Empty.d.ts +3 -10
- package/types/ui/Field/Collection.d.ts +1 -16
- package/types/ui/Field/Relation.d.ts +10 -37
- package/types/ui/Field/Text.d.ts +9 -66
- package/types/ui/Field/index.d.ts +0 -9
- package/types/ui/Field/lightRefCache.d.ts +11 -0
- package/types/ui/Field/useRelationOptions.d.ts +28 -0
- package/types/ui/Image.d.ts +8 -12
- package/types/ui/InfiniteScroll.d.ts +2 -6
- package/types/ui/Input.d.ts +8 -15
- package/types/ui/Layout/Role.d.ts +23 -0
- package/types/ui/Layout/Sider.d.ts +21 -0
- package/types/ui/Layout/TopInset.d.ts +5 -0
- package/types/ui/Layout/index.d.ts +7 -7
- package/types/ui/LegacyModal.d.ts +1 -12
- package/types/ui/Link/Action.d.ts +11 -0
- package/types/ui/Link/Anchor.d.ts +20 -0
- package/types/ui/Link/index.d.ts +4 -7
- package/types/ui/Load/Edit_Client.d.ts +1 -1
- package/types/ui/Load/Page.d.ts +3 -5
- package/types/ui/Load/Stream.d.ts +0 -12
- package/types/ui/Load/Units.d.ts +1 -1
- package/types/ui/Load/View.d.ts +2 -7
- package/types/ui/Loading/ProgressBar.d.ts +0 -4
- package/types/ui/Loading/Skeleton.d.ts +2 -0
- package/types/ui/Loading/Spin.d.ts +12 -2
- package/types/ui/Loading/index.d.ts +3 -8
- package/types/ui/Loading/index_.d.ts +3 -10
- package/types/ui/Menu.d.ts +0 -5
- package/types/ui/Modal.d.ts +0 -17
- package/types/ui/Model/AdminPanel.d.ts +1 -4
- package/types/ui/Model/DraftBar.d.ts +2 -7
- package/types/ui/Model/EditModal.d.ts +7 -22
- package/types/ui/Model/LoadStore.d.ts +18 -0
- package/types/ui/Model/Remove.d.ts +0 -2
- package/types/ui/Model/SureToRemove.d.ts +0 -3
- package/types/ui/Model/ViewEditModal.d.ts +0 -2
- package/types/ui/Model/draftScope.d.ts +0 -7
- package/types/ui/Model/index.d.ts +2 -2
- package/types/ui/Model/index_.d.ts +2 -2
- package/types/ui/Pagination.d.ts +4 -12
- package/types/ui/Popconfirm.d.ts +3 -17
- package/types/ui/Radio.d.ts +0 -4
- package/types/ui/RecentTime.d.ts +5 -9
- package/types/ui/Reference/Panel.d.ts +44 -6
- package/types/ui/Reference/Segmented.d.ts +0 -3
- package/types/ui/Reference/{style.d.ts → docUi.d.ts} +6 -2
- package/types/ui/Reference/index.d.ts +3 -7
- package/types/ui/Refresh.d.ts +1 -1
- package/types/ui/ScreenNavigator.d.ts +2 -2
- package/types/ui/Select.d.ts +4 -19
- package/types/ui/Signal/Endpoint.d.ts +43 -0
- package/types/ui/Signal/WebSocket.d.ts +23 -0
- package/types/ui/Signal/endpointEntries.d.ts +2 -4
- package/types/ui/Signal/index.d.ts +1 -3
- package/types/ui/Signal/style.d.ts +1 -2
- package/types/ui/Switch.d.ts +1 -5
- package/types/ui/System/CSR.d.ts +2 -2
- package/types/ui/System/Client.d.ts +2 -6
- package/types/ui/System/Common.d.ts +11 -22
- package/types/ui/System/Root.d.ts +1 -4
- package/types/ui/System/SSR.d.ts +2 -2
- package/types/ui/System/ThemeToggle.d.ts +1 -0
- package/types/ui/System/index.d.ts +1 -0
- package/types/ui/Tab/Provider.d.ts +24 -4
- package/types/ui/Tab/index.d.ts +3 -3
- package/types/ui/Table.d.ts +7 -23
- package/types/ui/Toast.d.ts +9 -16
- package/types/ui/ToggleSelect.d.ts +0 -5
- package/types/ui/Tooltip.d.ts +1 -2
- package/types/ui/UiOverride/{context.d.ts → UiOverride.d.ts} +24 -40
- package/types/ui/UiOverride/index.d.ts +2 -5
- package/types/ui/UiOverride/override.d.ts +2 -18
- package/types/ui/Unauthorized.d.ts +0 -6
- package/types/ui/agentAttrs.d.ts +4 -11
- package/types/ui/index.d.ts +9 -5
- package/types/ui/overlayLayer.d.ts +4 -24
- package/types/ui/overlayPosition.d.ts +0 -12
- package/types/ui/recipe/badgeRecipe.d.ts +2 -2
- package/types/ui/recipe/buttonRecipe.d.ts +2 -2
- package/types/ui/recipe/factory.d.ts +1 -21
- package/types/ui/recipe/index.d.ts +0 -14
- package/types/ui/recipe/inputRecipe.d.ts +3 -3
- package/types/ui/sliceNamesOf.d.ts +78 -0
- package/types/ui/triggerSlot.d.ts +2 -12
- package/types/vendor/use-agentic/AgentProgress.d.ts +12 -0
- package/types/vendor/use-agentic/AgentSession.d.ts +94 -2
- package/types/vendor/use-agentic/Compaction.d.ts +42 -5
- package/types/vendor/use-agentic/Reference.d.ts +56 -0
- package/types/vendor/use-agentic/ToolRunner.d.ts +31 -1
- package/types/vendor/use-agentic/Transcript.d.ts +4 -1
- package/types/vendor/use-agentic/index.d.ts +1 -0
- package/types/vendor/use-agentic/types.d.ts +109 -7
- package/types/webkit/RenderLayer.d.ts +11 -0
- package/types/webkit/index.d.ts +1 -2
- package/types/webkit/lazy.d.ts +3 -12
- package/types/webkit/{createRobotPage.d.ts → seoPages.d.ts} +4 -0
- package/types/webkit/useBodyScrollLock.d.ts +0 -1
- package/types/webkit/useCamera.d.ts +1 -1
- package/types/webkit/useContact.d.ts +1 -1
- package/types/webkit/useDebounce.d.ts +0 -1
- package/types/webkit/useEscapeKey.d.ts +1 -4
- package/types/webkit/useFetch.d.ts +1 -6
- package/types/webkit/useFrameRuntime.d.ts +1 -1
- package/types/webkit/useGeoLocation.d.ts +1 -1
- package/types/webkit/usePageTool.d.ts +2 -9
- package/types/webkit/usePurchase.d.ts +1 -4
- package/types/webkit/useScreenScope.d.ts +2 -13
- package/ui/Agent/Attach.tsx +5 -4
- package/ui/Agent/Bubble.tsx +51 -31
- package/ui/Agent/Chat.tsx +114 -102
- package/ui/Agent/ChatCommands.ts +5 -21
- package/ui/Agent/Composer.tsx +110 -28
- package/ui/Agent/Dock.tsx +176 -16
- package/ui/Agent/Guide.tsx +1 -5
- package/ui/Agent/History.tsx +1 -18
- package/ui/Agent/Launcher.tsx +2 -2
- package/ui/Agent/Markdown.tsx +40 -14
- package/ui/Agent/MentionNode.ts +54 -0
- package/ui/Agent/Menu.tsx +8 -5
- package/ui/Agent/Question.tsx +1 -6
- package/ui/Agent/Queued.tsx +3 -6
- package/ui/Agent/Refer.tsx +40 -0
- package/ui/Agent/RichInput.tsx +146 -0
- package/ui/Agent/Skip.tsx +3 -15
- package/ui/Agent/Steps.tsx +33 -0
- package/ui/Agent/ToolCard.tsx +32 -0
- package/ui/Agent/Zone.tsx +15 -31
- package/ui/Agent/agentSessionOf.ts +115 -15
- package/ui/Agent/attachment.ts +5 -42
- package/ui/Agent/fetchRunner.ts +3 -15
- package/ui/Agent/index.ts +1 -6
- package/ui/Agent/mentionDraft.ts +91 -0
- package/ui/Agent/tokenCount.ts +1 -5
- package/ui/Agent/useChatAttachments.ts +2 -9
- package/ui/Agent/useChatQueue.ts +12 -14
- package/ui/Agent/useChatReferences.ts +51 -0
- package/ui/Agent/useChatVoice.ts +2 -23
- package/ui/Agent/useDraftRecall.ts +0 -9
- package/ui/Agent/useKeyboardInset.ts +0 -7
- package/ui/Agent/useReferenceMenu.ts +93 -0
- package/ui/Agent/useSlashMenu.ts +0 -3
- package/ui/Agent/voice.ts +8 -43
- package/ui/Badge.tsx +0 -2
- package/ui/BottomSheet.tsx +2 -5
- package/ui/Button.tsx +9 -45
- package/ui/ClientSide.tsx +0 -2
- package/ui/Clipboard.tsx +0 -1
- package/ui/Constant/Doc.tsx +274 -265
- package/ui/Constant/Graph.tsx +11 -3
- package/ui/Constant/schemaGraph.ts +0 -9
- package/ui/Copy.tsx +2 -3
- package/ui/CsrImage.tsx +9 -9
- package/ui/Data/CardList.tsx +2 -17
- package/ui/Data/Dashboard.tsx +2 -5
- package/ui/Data/Item.tsx +2 -3
- package/ui/Data/ListContainer.tsx +15 -61
- package/ui/Data/Pagination.tsx +3 -22
- package/ui/Data/QueryMaker.tsx +1 -8
- package/ui/Data/RefPicker.tsx +1 -8
- package/ui/Data/TableList.tsx +2 -15
- package/ui/DatePicker.tsx +1 -12
- package/ui/Dialog/LegacyModal.tsx +3 -7
- package/ui/Dialog/Modal.tsx +3 -4
- package/ui/Dialog/Provider.tsx +85 -7
- package/ui/Dialog/index.tsx +1 -5
- package/ui/DraggableList.tsx +1 -4
- package/ui/Dropdown.tsx +4 -17
- package/ui/Empty.tsx +4 -12
- package/ui/Field/Choice.tsx +1 -1
- package/ui/Field/Collection.tsx +7 -29
- package/ui/Field/DateField.tsx +2 -7
- package/ui/Field/Label.tsx +0 -1
- package/ui/Field/NumberField.tsx +0 -1
- package/ui/Field/Relation.tsx +79 -199
- package/ui/Field/Text.tsx +25 -86
- package/ui/Field/index.tsx +0 -9
- package/ui/Field/lightRefCache.ts +61 -0
- package/ui/Field/useRelationOptions.ts +97 -0
- package/ui/Image.tsx +35 -65
- package/ui/InfiniteScroll.tsx +3 -21
- package/ui/Input.tsx +82 -174
- package/ui/Layout/Role.tsx +42 -0
- package/ui/Layout/Sider.tsx +82 -1
- package/ui/Layout/TopInset.tsx +23 -1
- package/ui/Layout/index.ts +3 -9
- package/ui/LegacyModal.tsx +1 -12
- package/ui/Link/Action.tsx +29 -0
- package/ui/Link/Anchor.tsx +118 -0
- package/ui/Link/index.tsx +7 -8
- package/ui/Load/Edit_Client.tsx +2 -37
- package/ui/Load/Page.tsx +3 -6
- package/ui/Load/Pagination.tsx +4 -19
- package/ui/Load/Stream.tsx +0 -12
- package/ui/Load/Units.tsx +13 -86
- package/ui/Load/View.tsx +4 -21
- package/ui/Loading/ProgressBar.tsx +0 -4
- package/ui/Loading/Skeleton.tsx +14 -0
- package/ui/Loading/Spin.tsx +34 -5
- package/ui/Loading/index.ts +0 -5
- package/ui/Loading/index_.tsx +2 -12
- package/ui/Menu.tsx +3 -21
- package/ui/Modal.tsx +0 -17
- package/ui/Model/AdminPanel.tsx +2 -5
- package/ui/Model/DraftBar.tsx +3 -14
- package/ui/Model/EditModal.tsx +11 -48
- package/ui/Model/EditWrapper.tsx +2 -3
- package/ui/Model/LoadStore.tsx +18 -0
- package/ui/Model/NewWrapper_Client.tsx +1 -1
- package/ui/Model/Remove.tsx +4 -12
- package/ui/Model/RemoveWrapper.tsx +2 -3
- package/ui/Model/SureToRemove.tsx +4 -13
- package/ui/Model/ViewEditModal.tsx +0 -6
- package/ui/Model/ViewModal.tsx +1 -5
- package/ui/Model/ViewWrapper.tsx +1 -2
- package/ui/Model/draftScope.ts +0 -7
- package/ui/Model/index_.tsx +2 -22
- package/ui/Pagination.tsx +4 -12
- package/ui/Popconfirm.tsx +3 -18
- package/ui/Portal.tsx +2 -3
- package/ui/Radio.tsx +1 -5
- package/ui/RecentTime.tsx +19 -31
- package/ui/Reference/Panel.tsx +102 -6
- package/ui/Reference/Segmented.tsx +5 -11
- package/ui/Reference/{style.ts → docUi.ts} +10 -2
- package/ui/Reference/index.ts +3 -7
- package/ui/Refresh.tsx +79 -13
- package/ui/ScreenNavigator.tsx +8 -13
- package/ui/Select.tsx +29 -37
- package/ui/Signal/Endpoint.tsx +154 -0
- package/ui/Signal/Listener.tsx +1 -4
- package/ui/Signal/Object.tsx +67 -73
- package/ui/Signal/RestApi.tsx +30 -76
- package/ui/Signal/WebSocket.tsx +253 -2
- package/ui/Signal/endpointEntries.ts +3 -5
- package/ui/Signal/index.ts +1 -3
- package/ui/Signal/style.ts +1 -2
- package/ui/Switch.tsx +1 -5
- package/ui/System/CSR.tsx +29 -109
- package/ui/System/Client.tsx +15 -19
- package/ui/System/Common.tsx +31 -22
- package/ui/System/Messages.tsx +2 -2
- package/ui/System/Reconnect.tsx +1 -6
- package/ui/System/Root.tsx +1 -4
- package/ui/System/SSR.tsx +10 -16
- package/ui/System/ThemeToggle.tsx +15 -0
- package/ui/System/index.tsx +2 -2
- package/ui/Tab/Provider.tsx +115 -7
- package/ui/Tab/index.tsx +1 -4
- package/ui/Table.tsx +7 -23
- package/ui/Toast.tsx +9 -16
- package/ui/ToggleSelect.tsx +10 -24
- package/ui/Tooltip.tsx +2 -8
- package/ui/UiOverride/{context.ts → UiOverride.tsx} +54 -42
- package/ui/UiOverride/index.ts +9 -6
- package/ui/UiOverride/override.ts +2 -18
- package/ui/Unauthorized.tsx +1 -8
- package/ui/agentAttrs.ts +9 -12
- package/ui/index.ts +20 -5
- package/ui/overlayLayer.ts +4 -25
- package/ui/overlayPosition.ts +2 -14
- package/ui/recipe/badgeRecipe.ts +1 -1
- package/ui/recipe/buttonRecipe.ts +4 -4
- package/ui/recipe/factory.ts +1 -22
- package/ui/recipe/index.ts +1 -14
- package/ui/recipe/inputRecipe.ts +2 -2
- package/ui/sliceNamesOf.ts +26 -0
- package/ui/styles.css +195 -1
- package/ui/triggerSlot.tsx +2 -12
- package/vendor/use-agentic/AgentProgress.ts +13 -1
- package/vendor/use-agentic/AgentSession.ts +313 -29
- package/vendor/use-agentic/AgenticSurface.ts +2 -0
- package/vendor/use-agentic/Compaction.ts +91 -9
- package/vendor/use-agentic/Reference.ts +99 -0
- package/vendor/use-agentic/ToolRunner.ts +77 -2
- package/vendor/use-agentic/Transcript.ts +15 -4
- package/vendor/use-agentic/WIRE.md +16 -2
- package/vendor/use-agentic/httpRunner.ts +19 -4
- package/vendor/use-agentic/index.ts +1 -1
- package/vendor/use-agentic/types.ts +121 -10
- package/webkit/RenderLayer.tsx +45 -0
- package/webkit/bootCsr.tsx +4 -57
- package/webkit/index.ts +1 -2
- package/webkit/lazy.tsx +3 -13
- package/webkit/{createRobotPage.ts → seoPages.ts} +5 -0
- package/webkit/useBodyScrollLock.tsx +0 -6
- package/webkit/useCamera.tsx +10 -28
- package/webkit/useCodepush.tsx +8 -31
- package/webkit/useContact.tsx +1 -8
- package/webkit/useCsrValues.ts +203 -428
- package/webkit/useDebounce.ts +0 -3
- package/webkit/useEscapeKey.tsx +1 -12
- package/webkit/useFetch.ts +7 -13
- package/webkit/useFrameRuntime.ts +5 -43
- package/webkit/useGeoLocation.tsx +1 -1
- package/webkit/useLocation.ts +5 -8
- package/webkit/usePageTool.tsx +2 -9
- package/webkit/usePurchase.tsx +17 -33
- package/webkit/useScreenScope.tsx +2 -13
- package/client/fetch.ts +0 -1
- package/client/frameDebug.ts +0 -29
- package/common/deepObjectify.ts +0 -42
- package/common/dynamicRecord.ts +0 -12
- package/common/formatPhone.ts +0 -7
- package/common/getAllPropertyDescriptors.ts +0 -13
- package/common/lowerlize.ts +0 -4
- package/common/mergeVersion.ts +0 -10
- package/common/pathGet.ts +0 -13
- package/common/pathGetLoose.ts +0 -31
- package/common/pathSet.ts +0 -28
- package/common/plainFieldsOf.ts +0 -13
- package/common/randomPicks.ts +0 -12
- package/common/websocketAuth.ts +0 -24
- package/constant/deserialize.ts +0 -98
- package/dictionary/agentTurn.dictionary.ts +0 -33
- package/document/schema.ts +0 -24
- package/fetch/fetchType/clientSignal.type.ts +0 -22
- package/local/apps/akan/akan-local.db +0 -0
- package/local/apps/akan/akan-local.db-shm +0 -0
- package/local/apps/akan/akan-local.db-wal +0 -0
- package/local/apps/akan/akan-local_solid.db +0 -0
- package/local/apps/akan/akan-local_solid.db-shm +0 -0
- package/local/apps/akan/akan-local_solid.db-wal +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db-wal +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-wal +0 -0
- package/server/artifact/manifestTypes.ts +0 -19
- package/server/assetEncoding.ts +0 -27
- package/server/consoleEvaluator.ts +0 -51
- package/server/di/index.ts +0 -4
- package/server/di/resolveAdaptorHierarchy.ts +0 -91
- package/server/di/resolveServiceHierarchy.ts +0 -47
- package/server/hmr/changeBatch.ts +0 -14
- package/server/hmr/index.ts +0 -4
- package/server/metadata.tsx +0 -198
- package/server/proxy/akanResponse.ts +0 -16
- package/server/proxy/bunRequestFields.ts +0 -12
- package/server/rscPartialCommit.ts +0 -3
- package/server/rscPatchSafety.ts +0 -57
- package/server/rscWorkerReplay.ts +0 -49
- package/server/subRouteIndexDocument.tsx +0 -61
- package/service/predefinedAdaptor/deepseekLlm.ts +0 -82
- package/service/predefinedAdaptor/sqlDescriptor.ts +0 -25
- package/store/agent/storeSurface.ts +0 -28
- package/store/agent/types.ts +0 -16
- package/store/agentic/useFileFieldTool.ts +0 -221
- package/store/stateInfo.ts +0 -66
- package/test/playwright.config.base.ts +0 -48
- package/test/playwright.pageAgent.ts +0 -41
- package/test/sample.ts +0 -19
- package/types/client/fetch.d.ts +0 -1
- package/types/client/frameDebug.d.ts +0 -3
- package/types/common/deepObjectify.d.ts +0 -6
- package/types/common/dynamicRecord.d.ts +0 -14
- package/types/common/formatPhone.d.ts +0 -2
- package/types/common/getAllPropertyDescriptors.d.ts +0 -5
- package/types/common/isPhoneNumber.d.ts +0 -2
- package/types/common/lowerlize.d.ts +0 -2
- package/types/common/mergeVersion.d.ts +0 -10
- package/types/common/pathGet.d.ts +0 -1
- package/types/common/pathGetLoose.d.ts +0 -8
- package/types/common/pathSet.d.ts +0 -3
- package/types/common/plainFieldsOf.d.ts +0 -6
- package/types/common/randomPicks.d.ts +0 -1
- package/types/common/splitVersion.d.ts +0 -11
- package/types/common/websocketAuth.d.ts +0 -19
- package/types/common/websocketBinaryFrame.d.ts +0 -17
- package/types/constant/deserialize.d.ts +0 -10
- package/types/dictionary/agentTurn.dictionary.d.ts +0 -1
- package/types/document/schema.d.ts +0 -5
- package/types/fetch/fetchType/clientSignal.type.d.ts +0 -16
- package/types/server/artifact/manifestTypes.d.ts +0 -16
- package/types/server/assetEncoding.d.ts +0 -7
- package/types/server/consoleEvaluator.d.ts +0 -2
- package/types/server/di/index.d.ts +0 -4
- package/types/server/di/resolveAdaptorHierarchy.d.ts +0 -21
- package/types/server/di/resolveServiceHierarchy.d.ts +0 -13
- package/types/server/di.d.ts +0 -1
- package/types/server/hmr/changeBatch.d.ts +0 -13
- package/types/server/hmr/index.d.ts +0 -4
- package/types/server/hmr.d.ts +0 -1
- package/types/server/metadata.d.ts +0 -22
- package/types/server/proxy/akanResponse.d.ts +0 -7
- package/types/server/proxy/bunRequestFields.d.ts +0 -1
- package/types/server/rscPartialCommit.d.ts +0 -1
- package/types/server/rscPatchSafety.d.ts +0 -8
- package/types/server/rscWorkerReplay.d.ts +0 -32
- package/types/server/subRouteIndexDocument.d.ts +0 -8
- package/types/service/predefinedAdaptor/deepseekLlm.d.ts +0 -19
- package/types/service/predefinedAdaptor/sqlDescriptor.d.ts +0 -5
- package/types/store/agent/storeSurface.d.ts +0 -14
- package/types/store/agent/types.d.ts +0 -15
- package/types/store/agentic/useFileFieldTool.d.ts +0 -41
- package/types/store/stateInfo.d.ts +0 -23
- package/types/test/playwright.config.base.d.ts +0 -9
- package/types/test/playwright.pageAgent.d.ts +0 -12
- package/types/test/sample.d.ts +0 -15
- package/types/ui/Agent/Context.d.ts +0 -13
- package/types/ui/Agent/Mic.d.ts +0 -8
- package/types/ui/Agent/Section.d.ts +0 -10
- package/types/ui/Agent/StateKey.d.ts +0 -16
- package/types/ui/Agent/Tool.d.ts +0 -15
- package/types/ui/Agent/Transcript.d.ts +0 -13
- package/types/ui/Agent/markdownSpans.d.ts +0 -2
- package/types/ui/Agent/sessionHistory.d.ts +0 -14
- package/types/ui/Agent/sessionView.d.ts +0 -15
- package/types/ui/Dialog/Action.d.ts +0 -5
- package/types/ui/Dialog/Close.d.ts +0 -6
- package/types/ui/Dialog/Content.d.ts +0 -6
- package/types/ui/Dialog/Title.d.ts +0 -5
- package/types/ui/Dialog/Trigger.d.ts +0 -6
- package/types/ui/Dialog/context.d.ts +0 -18
- package/types/ui/Layout/LeftSider.d.ts +0 -11
- package/types/ui/Layout/RightSider.d.ts +0 -12
- package/types/ui/Layout/Template.d.ts +0 -7
- package/types/ui/Layout/TopLeftAction.d.ts +0 -6
- package/types/ui/Layout/Unit.d.ts +0 -9
- package/types/ui/Layout/View.d.ts +0 -8
- package/types/ui/Layout/Zone.d.ts +0 -6
- package/types/ui/Link/Back.d.ts +0 -7
- package/types/ui/Link/Close.d.ts +0 -7
- package/types/ui/Link/CsrLink.d.ts +0 -2
- package/types/ui/Link/Lang.d.ts +0 -8
- package/types/ui/Link/SsrLink.d.ts +0 -2
- package/types/ui/Link/types.d.ts +0 -50
- package/types/ui/Loading/Area.d.ts +0 -9
- package/types/ui/Loading/Button.d.ts +0 -7
- package/types/ui/Loading/Input.d.ts +0 -7
- package/types/ui/Model/LoadInit.d.ts +0 -10
- package/types/ui/Model/LoadView.d.ts +0 -10
- package/types/ui/Reference/Collapse.d.ts +0 -11
- package/types/ui/Reference/Summary.d.ts +0 -13
- package/types/ui/Reference/Toolbar.d.ts +0 -21
- package/types/ui/Reference/dictText.d.ts +0 -6
- package/types/ui/Signal/Message.d.ts +0 -23
- package/types/ui/Signal/PubSub.d.ts +0 -24
- package/types/ui/Signal/Request.d.ts +0 -8
- package/types/ui/System/DevModeToggle.d.ts +0 -1
- package/types/ui/System/Gtag.d.ts +0 -4
- package/types/ui/System/frameCssVars.d.ts +0 -5
- package/types/ui/Tab/Menu.d.ts +0 -12
- package/types/ui/Tab/Menus.d.ts +0 -6
- package/types/ui/Tab/Panel.d.ts +0 -8
- package/types/ui/Tab/context.d.ts +0 -11
- package/types/ui/UiOverride/Provider.d.ts +0 -15
- package/types/ui/UiOverride/createOverridable.d.ts +0 -9
- package/types/ui/UiOverride/useUiOverride.d.ts +0 -7
- package/types/ui/UiOverride/useUiRecipe.d.ts +0 -8
- package/types/webkit/createSitemapPage.d.ts +0 -4
- package/ui/Agent/Context.tsx +0 -49
- package/ui/Agent/Mic.tsx +0 -27
- package/ui/Agent/Section.tsx +0 -24
- package/ui/Agent/StateKey.tsx +0 -46
- package/ui/Agent/Tool.tsx +0 -59
- package/ui/Agent/Transcript.tsx +0 -33
- package/ui/Agent/markdownSpans.tsx +0 -49
- package/ui/Agent/sessionHistory.ts +0 -62
- package/ui/Agent/sessionView.ts +0 -38
- package/ui/Dialog/Action.tsx +0 -15
- package/ui/Dialog/Close.tsx +0 -18
- package/ui/Dialog/Content.tsx +0 -11
- package/ui/Dialog/Title.tsx +0 -15
- package/ui/Dialog/Trigger.tsx +0 -18
- package/ui/Dialog/context.ts +0 -32
- package/ui/Layout/LeftSider.tsx +0 -43
- package/ui/Layout/RightSider.tsx +0 -47
- package/ui/Layout/Template.tsx +0 -11
- package/ui/Layout/TopLeftAction.tsx +0 -28
- package/ui/Layout/Unit.tsx +0 -19
- package/ui/Layout/View.tsx +0 -12
- package/ui/Layout/Zone.tsx +0 -10
- package/ui/Link/Back.tsx +0 -15
- package/ui/Link/Close.tsx +0 -20
- package/ui/Link/CsrLink.tsx +0 -46
- package/ui/Link/Lang.tsx +0 -16
- package/ui/Link/SsrLink.tsx +0 -72
- package/ui/Link/types.ts +0 -55
- package/ui/Loading/Area.tsx +0 -27
- package/ui/Loading/Button.tsx +0 -15
- package/ui/Loading/Input.tsx +0 -15
- package/ui/Model/LoadInit.tsx +0 -11
- package/ui/Model/LoadView.tsx +0 -11
- package/ui/Reference/Collapse.tsx +0 -26
- package/ui/Reference/Summary.tsx +0 -25
- package/ui/Reference/Toolbar.tsx +0 -44
- package/ui/Reference/dictText.ts +0 -9
- package/ui/Signal/Message.tsx +0 -215
- package/ui/Signal/PubSub.tsx +0 -201
- package/ui/Signal/Request.tsx +0 -11
- package/ui/System/DevModeToggle.tsx +0 -19
- package/ui/System/Gtag.tsx +0 -69
- package/ui/System/frameCssVars.ts +0 -25
- package/ui/Tab/Menu.tsx +0 -70
- package/ui/Tab/Menus.tsx +0 -13
- package/ui/Tab/Panel.tsx +0 -25
- package/ui/Tab/context.ts +0 -20
- package/ui/UiOverride/Provider.tsx +0 -26
- package/ui/UiOverride/createOverridable.tsx +0 -25
- package/ui/UiOverride/useUiOverride.ts +0 -15
- package/ui/UiOverride/useUiRecipe.ts +0 -15
- package/webkit/createSitemapPage.ts +0 -4
package/ui/Agent/attachment.ts
CHANGED
|
@@ -1,34 +1,19 @@
|
|
|
1
1
|
import type { MessageAttachment } from "../../vendor/use-agentic";
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/** `null` leaves the file to the built-in reader. */
|
|
4
4
|
export type AttachReader = (file: File) => Promise<MessageAttachment | null>;
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* Per-file ceiling for the composer. The bytes ride inside one turn's JSON request, so a file past this is not a
|
|
8
|
-
* slow attachment — it is a request the relay and the provider both refuse, and refusing it here is the only place
|
|
9
|
-
* the user learns which file it was.
|
|
10
|
-
*/
|
|
6
|
+
/** The bytes ride inside one turn's JSON request, which the relay and the provider both refuse past this. */
|
|
11
7
|
export const maxAttachmentBytes = 4 * 1024 * 1024;
|
|
12
8
|
|
|
13
|
-
/**
|
|
14
|
-
* Ceilings for one message rather than one file. The bytes ride inside a single turn's JSON, so what a provider
|
|
15
|
-
* refuses is the sum — and a count cap keeps a whole folder dropped onto the panel from becoming one request that
|
|
16
|
-
* cannot be sent and cannot be edited down without starting over.
|
|
17
|
-
*/
|
|
9
|
+
/** A provider refuses the sum of one turn's attachments, not each file. */
|
|
18
10
|
export const maxMessageAttachmentBytes = 8 * 1024 * 1024;
|
|
19
11
|
export const maxMessageAttachments = 5;
|
|
20
12
|
|
|
21
|
-
/**
|
|
22
|
-
* What the three ceilings above are for an app that knows better. They are a property of the provider the relay is
|
|
23
|
-
* configured with — a larger request limit, or a reader that attaches by `url` and pays none of it — so the
|
|
24
|
-
* defaults are the conservative answer rather than the only one.
|
|
25
|
-
*/
|
|
26
13
|
export interface AttachLimits {
|
|
27
|
-
/**
|
|
14
|
+
/** Measured on what the reader produced, not on the source file. */
|
|
28
15
|
perFileBytes?: number;
|
|
29
|
-
/** What every attachment on one message may cost together. */
|
|
30
16
|
perMessageBytes?: number;
|
|
31
|
-
/** How many attachments one message may carry. */
|
|
32
17
|
perMessageCount?: number;
|
|
33
18
|
}
|
|
34
19
|
|
|
@@ -37,18 +22,7 @@ export type AttachFailure = "tooLarge" | "unsupported";
|
|
|
37
22
|
const textMimes = new Set(["application/json", "application/xml", "application/x-yaml", "application/yaml"]);
|
|
38
23
|
|
|
39
24
|
export class Attachment {
|
|
40
|
-
|
|
41
|
-
* Reads what a browser can read on its own — an image as bytes, a text-ish file as text — and hands everything
|
|
42
|
-
* else to the app's own reader. That split is the layer boundary: a PDF needs a parser, so extracting one is the
|
|
43
|
-
* app's business (`attach`), while carrying the result is the framework's.
|
|
44
|
-
*
|
|
45
|
-
* The app's reader runs first so it can also replace the built-in handling, which is what downscaling an image
|
|
46
|
-
* before it costs a megabyte of prompt looks like — and it runs before the ceiling too, because the ceiling is
|
|
47
|
-
* what the attachment costs the request, which is what the reader decides. A reader that answers a `url` has
|
|
48
|
-
* already paid it; refusing its file on the source size would refuse it for a cost it does not incur. The
|
|
49
|
-
* built-in carriers are the file itself, so there the source size *is* the cost, and checking it up front is
|
|
50
|
-
* also what keeps a huge `arrayBuffer` from being read in order to be refused.
|
|
51
|
-
*/
|
|
25
|
+
|
|
52
26
|
static async read(
|
|
53
27
|
file: File,
|
|
54
28
|
attach?: AttachReader,
|
|
@@ -70,34 +44,23 @@ export class Attachment {
|
|
|
70
44
|
return typeof value === "string";
|
|
71
45
|
}
|
|
72
46
|
|
|
73
|
-
/** What this attachment costs the request: base64 carries three bytes per four characters, less its padding. */
|
|
74
47
|
static bytesOf(attachment: MessageAttachment): number {
|
|
75
48
|
const data = attachment.data ?? "";
|
|
76
49
|
const padding = data.endsWith("==") ? 2 : data.endsWith("=") ? 1 : 0;
|
|
77
50
|
return Math.max(0, Math.floor((data.length * 3) / 4) - padding) + (attachment.text?.length ?? 0);
|
|
78
51
|
}
|
|
79
52
|
|
|
80
|
-
/** Which message ceiling these would pass together, or null when one message can carry them all. */
|
|
81
53
|
static overflow(attachments: readonly MessageAttachment[], limits: AttachLimits = {}): "tooMany" | "tooMuch" | null {
|
|
82
54
|
if (attachments.length > (limits.perMessageCount ?? maxMessageAttachments)) return "tooMany";
|
|
83
55
|
const bytes = attachments.reduce((sum, one) => sum + Attachment.bytesOf(one), 0);
|
|
84
56
|
return bytes > (limits.perMessageBytes ?? maxMessageAttachmentBytes) ? "tooMuch" : null;
|
|
85
57
|
}
|
|
86
58
|
|
|
87
|
-
/**
|
|
88
|
-
* Same name and same size is the same file picked twice — the shape a re-drop or a double paste produces. A
|
|
89
|
-
* host that can name a file says so with `ref`, and then that is the answer: name and size collide for two
|
|
90
|
-
* crops of one export, which is a wrong `true` the heuristic cannot avoid and an id never reaches.
|
|
91
|
-
*/
|
|
92
59
|
static same(one: MessageAttachment, other: MessageAttachment): boolean {
|
|
93
60
|
if (one.ref || other.ref) return one.ref === other.ref;
|
|
94
61
|
return one.name === other.name && Attachment.bytesOf(one) === Attachment.bytesOf(other);
|
|
95
62
|
}
|
|
96
63
|
|
|
97
|
-
/**
|
|
98
|
-
* Chunked because `String.fromCharCode(...bytes)` spreads one argument per byte, and a megabyte of them is a
|
|
99
|
-
* RangeError rather than a slow call.
|
|
100
|
-
*/
|
|
101
64
|
static async #base64(file: File): Promise<string> {
|
|
102
65
|
const bytes = new Uint8Array(await file.arrayBuffer());
|
|
103
66
|
const chunk = 0x8000;
|
package/ui/Agent/fetchRunner.ts
CHANGED
|
@@ -2,28 +2,16 @@ import { getEnv } from "akanjs/base";
|
|
|
2
2
|
import { fetch, Translator } from "akanjs/client";
|
|
3
3
|
import { type AgentRunner, httpRunner, type RunnerEvent } from "../../vendor/use-agentic";
|
|
4
4
|
|
|
5
|
-
/** `<refName>.error.<key>` — the shape a domain `Err` puts on the wire, its dictionary text being the message. */
|
|
6
5
|
const errorKey = /^[a-zA-Z][A-Za-z0-9]*\.error\.[A-Za-z0-9_]+$/;
|
|
7
6
|
|
|
8
|
-
/**
|
|
9
|
-
* A server `Err` travels as its key, because the endpoint has no language to resolve it in — the chat does, so
|
|
10
|
-
* the resolving happens here, one step before the transcript. Anything else is already a sentence somebody wrote,
|
|
11
|
-
* and a key with no entry stays as it is rather than becoming a worse sentence.
|
|
12
|
-
*/
|
|
13
7
|
const readable = (event: RunnerEvent): RunnerEvent => {
|
|
14
8
|
if (event.type !== "error" || !errorKey.test(event.message)) return event;
|
|
15
9
|
const text = Translator.translateByLocale(Translator.getActiveLocale() ?? "en", event.message, event.data);
|
|
16
|
-
|
|
10
|
+
if (text === event.message) return event;
|
|
11
|
+
return { type: "error", message: text, ...(event.overflow ? { overflow: event.overflow } : {}) };
|
|
17
12
|
};
|
|
18
13
|
|
|
19
|
-
/**
|
|
20
|
-
* Runs each assistant turn against the app's own `runAgentTurn` route — service signals mount unprefixed, so the
|
|
21
|
-
* URL is `<serverHttpUri>/runAgentTurn` — through the shared `httpRunner`, which negotiates streaming via
|
|
22
|
-
* `accept`: a server that streams answers SSE and the text arrives as it is generated; one that does not answers
|
|
23
|
-
* the same JSON turn. The client runtime's fetch proxy is only probed for whether the endpoint exists (the util
|
|
24
|
-
* lib ships one) and for the signed-in JWT; cookies ride the same-origin request on their own. The endpoint is a
|
|
25
|
-
* stateless relay; the loop and every tool execution stay in this browser session.
|
|
26
|
-
*/
|
|
14
|
+
/** Runs each turn against `<serverHttpUri>/runAgentTurn` (service signals mount unprefixed) through `httpRunner`. */
|
|
27
15
|
export const fetchRunner = (options: { fetcher?: typeof globalThis.fetch } = {}): AgentRunner => ({
|
|
28
16
|
async *run(request) {
|
|
29
17
|
const client = fetch as { runAgentTurn?: unknown; instance?: { jwt?: string | null } };
|
package/ui/Agent/index.ts
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import { AgentScope } from "../../vendor/use-agentic";
|
|
2
|
-
import Context from "./
|
|
3
|
-
import { Dock } from "./Dock";
|
|
2
|
+
import { Context, Dock, Section, StateKey, Tool, Transcript } from "./Dock";
|
|
4
3
|
import { Guide } from "./Guide";
|
|
5
4
|
import { History } from "./History";
|
|
6
5
|
import { Chat } from "./index_";
|
|
7
|
-
import Section from "./Section";
|
|
8
6
|
import { Skip } from "./Skip";
|
|
9
|
-
import StateKey from "./StateKey";
|
|
10
|
-
import Tool from "./Tool";
|
|
11
|
-
import Transcript from "./Transcript";
|
|
12
7
|
import { Zone } from "./Zone";
|
|
13
8
|
|
|
14
9
|
export const Agent = {
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
$createLineBreakNode,
|
|
4
|
+
$createParagraphNode,
|
|
5
|
+
$createTextNode,
|
|
6
|
+
$getRoot,
|
|
7
|
+
$getSelection,
|
|
8
|
+
$isElementNode,
|
|
9
|
+
$isRangeSelection,
|
|
10
|
+
$isRootNode,
|
|
11
|
+
$isTextNode,
|
|
12
|
+
type LexicalNode,
|
|
13
|
+
} from "lexical";
|
|
14
|
+
import { Reference } from "../../vendor/use-agentic";
|
|
15
|
+
import { $createMentionNode, $isMentionNode } from "./MentionNode";
|
|
16
|
+
|
|
17
|
+
export class MentionDraft {
|
|
18
|
+
static read(): string {
|
|
19
|
+
return $getRoot().getTextContent();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static write(text: string, caretAt?: number) {
|
|
23
|
+
const paragraph = $createParagraphNode();
|
|
24
|
+
paragraph.append(...MentionDraft.nodesOf(text));
|
|
25
|
+
$getRoot().clear().append(paragraph);
|
|
26
|
+
MentionDraft.place(caretAt ?? text.length);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static nodesOf(text: string): LexicalNode[] {
|
|
30
|
+
const nodes: LexicalNode[] = [];
|
|
31
|
+
let at = 0;
|
|
32
|
+
|
|
33
|
+
const pattern = new RegExp(Reference.pattern.source, "g");
|
|
34
|
+
for (let match = pattern.exec(text); match; match = pattern.exec(text)) {
|
|
35
|
+
const [token, label, refName, refId, path] = match;
|
|
36
|
+
if (match.index > at) nodes.push(...MentionDraft.#plain(text.slice(at, match.index)));
|
|
37
|
+
nodes.push($createMentionNode({ refName, refId, label, ...(path ? { path } : {}) }));
|
|
38
|
+
at = match.index + token.length;
|
|
39
|
+
}
|
|
40
|
+
if (at < text.length) nodes.push(...MentionDraft.#plain(text.slice(at)));
|
|
41
|
+
return nodes;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static caret(): number | null {
|
|
45
|
+
const selection = $getSelection();
|
|
46
|
+
if (!$isRangeSelection(selection)) return null;
|
|
47
|
+
const anchor = selection.anchor;
|
|
48
|
+
const node = anchor.getNode();
|
|
49
|
+
if ($isTextNode(node)) {
|
|
50
|
+
|
|
51
|
+
const inner = $isMentionNode(node) ? (anchor.offset ? node.getTextContent().length : 0) : anchor.offset;
|
|
52
|
+
return MentionDraft.#before(node) + inner;
|
|
53
|
+
}
|
|
54
|
+
const children = $isElementNode(node) ? node.getChildren() : [];
|
|
55
|
+
const within = children.slice(0, anchor.offset).reduce((sum, child) => sum + child.getTextContent().length, 0);
|
|
56
|
+
return MentionDraft.#before(node) + within;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static place(at: number) {
|
|
60
|
+
const paragraph = $getRoot().getLastChild();
|
|
61
|
+
if (!$isElementNode(paragraph)) return;
|
|
62
|
+
let seen = 0;
|
|
63
|
+
for (const child of paragraph.getChildren()) {
|
|
64
|
+
const length = child.getTextContent().length;
|
|
65
|
+
if (at <= seen + length) {
|
|
66
|
+
|
|
67
|
+
if ($isTextNode(child) && !$isMentionNode(child)) child.select(at - seen, at - seen);
|
|
68
|
+
else if (at > seen) child.selectNext(0, 0);
|
|
69
|
+
else if (child.getPreviousSibling()) child.selectPrevious();
|
|
70
|
+
else paragraph.select(0, 0);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
seen += length;
|
|
74
|
+
}
|
|
75
|
+
paragraph.selectEnd();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
static #plain(text: string): LexicalNode[] {
|
|
79
|
+
return text
|
|
80
|
+
.split("\n")
|
|
81
|
+
.flatMap((line, idx) => [...(idx ? [$createLineBreakNode()] : []), ...(line ? [$createTextNode(line)] : [])]);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
static #before(node: LexicalNode): number {
|
|
85
|
+
let sum = 0;
|
|
86
|
+
for (let cursor = node.getPreviousSibling(); cursor; cursor = cursor.getPreviousSibling())
|
|
87
|
+
sum += cursor.getTextContent().length;
|
|
88
|
+
const parent = node.getParent();
|
|
89
|
+
return parent && !$isRootNode(parent) ? sum + MentionDraft.#before(parent) : sum;
|
|
90
|
+
}
|
|
91
|
+
}
|
package/ui/Agent/tokenCount.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* An estimated token count as a chat-sized label. Rounded hard on purpose: the estimate itself is four characters
|
|
3
|
-
* to a token, so a digit-exact figure would claim a precision it does not have — what a reader needs from it is
|
|
4
|
-
* whether a tool result cost a hundred tokens or a million.
|
|
5
|
-
*/
|
|
1
|
+
/** Rounded hard: the estimate is four characters to a token, so exact digits would claim false precision. */
|
|
6
2
|
export const tokenCount = (count: number): string => {
|
|
7
3
|
if (count < 1_000) return String(count);
|
|
8
4
|
if (count < 1_000_000) return `${Math.round(count / 100) / 10}k`;
|
|
@@ -16,18 +16,13 @@ interface ChatAttachmentsSetup {
|
|
|
16
16
|
l: (key: string, param?: Record<string, string | number>) => string;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
/**
|
|
20
|
-
* What the composer is holding, and the ceilings it holds it under. Staged files are mirrored in a ref because a
|
|
21
|
-
* multi-file drop reads them one at a time: the cap has to see what the previous file of the same drop added, and
|
|
22
|
-
* React state inside that loop is still the value the render started with.
|
|
23
|
-
*/
|
|
24
19
|
export const useChatAttachments = ({ session, attach, limits = {}, l }: ChatAttachmentsSetup) => {
|
|
25
20
|
const count = limits.perMessageCount ?? maxMessageAttachments;
|
|
26
21
|
const messageBytes = limits.perMessageBytes ?? maxMessageAttachmentBytes;
|
|
27
22
|
const [attached, setAttached] = useState<MessageAttachment[]>([]);
|
|
28
|
-
|
|
29
23
|
const [pending, setPending] = useState(0);
|
|
30
24
|
const [dragging, setDragging] = useState(false);
|
|
25
|
+
|
|
31
26
|
const staged = useRef<MessageAttachment[]>([]);
|
|
32
27
|
|
|
33
28
|
const depth = useRef(0);
|
|
@@ -40,7 +35,6 @@ export const useChatAttachments = ({ session, attach, limits = {}, l }: ChatAtta
|
|
|
40
35
|
depth.current = 0;
|
|
41
36
|
setDragging(false);
|
|
42
37
|
};
|
|
43
|
-
/** Staged one at a time so one unreadable file names itself instead of failing the whole drop silently. */
|
|
44
38
|
const add = async (files: File[]) => {
|
|
45
39
|
for (const file of files) {
|
|
46
40
|
if (staged.current.length >= count) {
|
|
@@ -81,13 +75,12 @@ export const useChatAttachments = ({ session, attach, limits = {}, l }: ChatAtta
|
|
|
81
75
|
onDrop: (event) => {
|
|
82
76
|
const files = [...event.dataTransfer.files];
|
|
83
77
|
rest();
|
|
84
|
-
|
|
78
|
+
|
|
85
79
|
if (!files.length) return;
|
|
86
80
|
event.preventDefault();
|
|
87
81
|
void add(files);
|
|
88
82
|
},
|
|
89
83
|
};
|
|
90
|
-
/** Stages files taken back from a parked message, ahead of what was picked since. False, noted, when they do not fit. */
|
|
91
84
|
const restore = (list: MessageAttachment[]): boolean => {
|
|
92
85
|
const next = [...list, ...staged.current];
|
|
93
86
|
const overflow = Attachment.overflow(next, limits);
|
package/ui/Agent/useChatQueue.ts
CHANGED
|
@@ -1,36 +1,29 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useEffect, useRef, useState } from "react";
|
|
3
|
-
import type { AgentSession, MessageAttachment } from "../../vendor/use-agentic";
|
|
3
|
+
import type { AgentSession, MessageAttachment, MessageReference } from "../../vendor/use-agentic";
|
|
4
|
+
import { Reference } from "../../vendor/use-agentic";
|
|
4
5
|
import { type AttachLimits, Attachment, maxMessageAttachments } from "./attachment";
|
|
5
6
|
|
|
6
|
-
/** What the composer held when it was sent: the shape a turn opens with, whether now or after the running one. */
|
|
7
7
|
export interface QueuedMessage {
|
|
8
8
|
text: string;
|
|
9
9
|
attachments: MessageAttachment[];
|
|
10
|
-
|
|
10
|
+
references: MessageReference[];
|
|
11
|
+
/** The ask came from the microphone, so its reply is read aloud. */
|
|
11
12
|
byVoice: boolean;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
interface ChatQueueSetup {
|
|
15
16
|
session: AgentSession;
|
|
16
17
|
limits?: AttachLimits;
|
|
17
|
-
/** The chat's own version snapshot — the turn ending is one of the changes it counts. */
|
|
18
18
|
version: number;
|
|
19
19
|
l: (key: string, param?: Record<string, string | number>) => string;
|
|
20
20
|
onFlush: (message: QueuedMessage) => void;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
/**
|
|
24
|
-
* One message parked while a turn runs, sent the moment the turn ends. One slot rather than a list: a second send
|
|
25
|
-
* joins the first, so what reaches the model is one user message and the user has one thing to take back or drop.
|
|
26
|
-
*
|
|
27
|
-
* Mirrored in a ref because the flush and the drop both race the turn's own wind-down: `/new` empties the slot
|
|
28
|
-
* and then aborts, and the abort's notify would otherwise read the state the render started with and send what
|
|
29
|
-
* was just dropped.
|
|
30
|
-
*/
|
|
31
23
|
export const useChatQueue = ({ session, limits = {}, version, l, onFlush }: ChatQueueSetup) => {
|
|
32
24
|
const count = limits.perMessageCount ?? maxMessageAttachments;
|
|
33
25
|
const [queued, setQueued] = useState<QueuedMessage | null>(null);
|
|
26
|
+
|
|
34
27
|
const held = useRef<QueuedMessage | null>(null);
|
|
35
28
|
const put = (next: QueuedMessage | null) => {
|
|
36
29
|
held.current = next;
|
|
@@ -44,7 +37,6 @@ export const useChatQueue = ({ session, limits = {}, version, l, onFlush }: Chat
|
|
|
44
37
|
}, [version]);
|
|
45
38
|
return {
|
|
46
39
|
queued,
|
|
47
|
-
/** Parks a message, joined onto one already waiting. False, with the reason noted, when the files would not fit. */
|
|
48
40
|
push: (message: QueuedMessage): boolean => {
|
|
49
41
|
const before = held.current;
|
|
50
42
|
const attachments = [...(before?.attachments ?? []), ...message.attachments];
|
|
@@ -56,11 +48,17 @@ export const useChatQueue = ({ session, limits = {}, version, l, onFlush }: Chat
|
|
|
56
48
|
put({
|
|
57
49
|
text: [before?.text, message.text].filter(Boolean).join("\n"),
|
|
58
50
|
attachments,
|
|
51
|
+
|
|
52
|
+
references: [
|
|
53
|
+
...message.references,
|
|
54
|
+
...(before?.references ?? []).filter(
|
|
55
|
+
(one) => !message.references.some((fresh) => Reference.keyOf(fresh) === Reference.keyOf(one)),
|
|
56
|
+
),
|
|
57
|
+
],
|
|
59
58
|
byVoice: !!before?.byVoice || message.byVoice,
|
|
60
59
|
});
|
|
61
60
|
return true;
|
|
62
61
|
},
|
|
63
|
-
/** Empties the slot and answers what was in it — the drop, and the first half of handing it back. */
|
|
64
62
|
take: (): QueuedMessage | null => {
|
|
65
63
|
const message = held.current;
|
|
66
64
|
if (message) put(null);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { type RefObject, useEffect, useMemo, useRef } from "react";
|
|
3
|
+
import { type AgentSession, type MessageReference, Reference } from "../../vendor/use-agentic";
|
|
4
|
+
import type { ComposerHandle } from "./Composer";
|
|
5
|
+
|
|
6
|
+
interface ChatReferencesSetup {
|
|
7
|
+
session: AgentSession;
|
|
8
|
+
draft: string;
|
|
9
|
+
version: number;
|
|
10
|
+
handleRef: RefObject<ComposerHandle | null>;
|
|
11
|
+
onDraft: (text: string) => void;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const useChatReferences = ({ session, draft, version, handleRef, onDraft }: ChatReferencesSetup) => {
|
|
15
|
+
const caret = useRef<number | null>(null);
|
|
16
|
+
|
|
17
|
+
useEffect(() => session.attachChat(), [session]);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
const pending = session.pendingInserts;
|
|
20
|
+
if (!pending.length) return;
|
|
21
|
+
const at = handleRef.current?.caret() ?? draft.length;
|
|
22
|
+
const head = draft.slice(0, at);
|
|
23
|
+
const tail = draft.slice(at);
|
|
24
|
+
const tokens = pending.map((one) => Reference.token(one)).join(" ");
|
|
25
|
+
|
|
26
|
+
const lead = head && !/\s$/.test(head) ? " " : "";
|
|
27
|
+
onDraft(`${head}${lead}${tokens} ${tail}`);
|
|
28
|
+
caret.current = head.length + lead.length + tokens.length + 1;
|
|
29
|
+
for (const one of pending) session.insertApplied(Reference.keyOf(one));
|
|
30
|
+
}, [version]);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
const at = caret.current;
|
|
33
|
+
if (at === null) return;
|
|
34
|
+
caret.current = null;
|
|
35
|
+
|
|
36
|
+
handleRef.current?.setCaret(at);
|
|
37
|
+
}, [draft]);
|
|
38
|
+
const references = useMemo<MessageReference[]>(() => {
|
|
39
|
+
const staged = new Map(session.staged.map((one) => [Reference.keyOf(one), one]));
|
|
40
|
+
return Reference.parse(draft).map(
|
|
41
|
+
(pointer) => staged.get(Reference.keyOf(pointer)) ?? { ...pointer, note: Reference.unstagedNote },
|
|
42
|
+
);
|
|
43
|
+
}, [draft, version]);
|
|
44
|
+
return {
|
|
45
|
+
references,
|
|
46
|
+
remove: (key: string) => {
|
|
47
|
+
onDraft(Reference.without(draft, key));
|
|
48
|
+
session.unstage(key);
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
};
|
package/ui/Agent/useChatVoice.ts
CHANGED
|
@@ -6,20 +6,11 @@ import { type VoiceEngine, type VoiceListener, VoiceReader } from "./voice";
|
|
|
6
6
|
interface ChatVoiceSetup {
|
|
7
7
|
session: AgentSession;
|
|
8
8
|
engine?: VoiceEngine;
|
|
9
|
-
/** The chat's own version snapshot — every transcript change re-runs the reading policy. */
|
|
10
9
|
version: number;
|
|
11
10
|
onTranscript: (text: string) => void;
|
|
12
11
|
onFailed: () => void;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
|
-
/**
|
|
16
|
-
* The chat's speech policy, which is the framework's and not the engine's: one utterance per press, the
|
|
17
|
-
* transcript landing in the composer to be corrected, barge-in on the next press or on Stop, and a reply read
|
|
18
|
-
* aloud **only when the ask arrived by voice** — a typed question never turns the speakers on.
|
|
19
|
-
*
|
|
20
|
-
* A question or an approval the loop parked on is read too, and only in that same case: the loop stops there,
|
|
21
|
-
* and a voice user staring at a card they were never told about is a conversation that simply ends.
|
|
22
|
-
*/
|
|
23
14
|
export const useChatVoice = ({ session, engine, version, onTranscript, onFailed }: ChatVoiceSetup) => {
|
|
24
15
|
const [listening, setListening] = useState(false);
|
|
25
16
|
|
|
@@ -28,11 +19,9 @@ export const useChatVoice = ({ session, engine, version, onTranscript, onFailed
|
|
|
28
19
|
const listener = useRef<VoiceListener | null>(null);
|
|
29
20
|
const reader = useRef<VoiceReader | null>(null);
|
|
30
21
|
reader.current ??= new VoiceReader(() => held.current);
|
|
31
|
-
/** Set while the draft came from the microphone, consumed by the send that carries it. */
|
|
32
22
|
const byVoice = useRef(false);
|
|
33
|
-
|
|
23
|
+
|
|
34
24
|
const spoken = useRef<{ at: number; from: number } | null>(null);
|
|
35
|
-
/** The parked card already announced, so a question is not re-read on every transcript change. */
|
|
36
25
|
const announced = useRef<string | null>(null);
|
|
37
26
|
const heard = useRef(0);
|
|
38
27
|
useEffect(() => {
|
|
@@ -56,7 +45,6 @@ export const useChatVoice = ({ session, engine, version, onTranscript, onFailed
|
|
|
56
45
|
(message, idx) => idx >= reading.from && message.role === "assistant" && !message.local && !!message.text,
|
|
57
46
|
);
|
|
58
47
|
if (at < 0) return;
|
|
59
|
-
|
|
60
48
|
if (at !== reading.at) {
|
|
61
49
|
speaker.reset();
|
|
62
50
|
reading.at = at;
|
|
@@ -75,7 +63,7 @@ export const useChatVoice = ({ session, engine, version, onTranscript, onFailed
|
|
|
75
63
|
},
|
|
76
64
|
[],
|
|
77
65
|
);
|
|
78
|
-
|
|
66
|
+
|
|
79
67
|
const endListening = () => {
|
|
80
68
|
const running = listener.current;
|
|
81
69
|
listener.current = null;
|
|
@@ -86,10 +74,6 @@ export const useChatVoice = ({ session, engine, version, onTranscript, onFailed
|
|
|
86
74
|
reader.current?.cancel();
|
|
87
75
|
spoken.current = null;
|
|
88
76
|
};
|
|
89
|
-
/**
|
|
90
|
-
* Whether the draft came from the microphone, cleared as it is read: the send consuming the draft takes it, and
|
|
91
|
-
* an ask parked behind a running turn carries it to the send that finally opens with it.
|
|
92
|
-
*/
|
|
93
77
|
const lift = () => {
|
|
94
78
|
const was = byVoice.current;
|
|
95
79
|
byVoice.current = false;
|
|
@@ -97,15 +81,12 @@ export const useChatVoice = ({ session, engine, version, onTranscript, onFailed
|
|
|
97
81
|
};
|
|
98
82
|
return {
|
|
99
83
|
listening,
|
|
100
|
-
/** A screen that cannot listen renders no microphone — the rule that publishes no tool for a missing control. */
|
|
101
84
|
canListen: !!engine && (engine.available?.() ?? true),
|
|
102
85
|
silence,
|
|
103
86
|
lift,
|
|
104
|
-
/** Puts a lifted flag back, for a parked ask that returned to the composer instead of opening a turn. */
|
|
105
87
|
hold: (spokenAsk: boolean) => {
|
|
106
88
|
byVoice.current ||= spokenAsk;
|
|
107
89
|
},
|
|
108
|
-
/** Called by the send that opens a turn: only an ask that arrived by voice is answered out loud. */
|
|
109
90
|
take: (spokenAsk = lift()) => {
|
|
110
91
|
|
|
111
92
|
spoken.current = spokenAsk ? { at: -1, from: session.messages.length } : null;
|
|
@@ -117,7 +98,6 @@ export const useChatVoice = ({ session, engine, version, onTranscript, onFailed
|
|
|
117
98
|
}
|
|
118
99
|
const voiceEngine = held.current;
|
|
119
100
|
if (!voiceEngine) return;
|
|
120
|
-
|
|
121
101
|
silence();
|
|
122
102
|
listener.current = voiceEngine.listen({
|
|
123
103
|
onInterim: onTranscript,
|
|
@@ -127,7 +107,6 @@ export const useChatVoice = ({ session, engine, version, onTranscript, onFailed
|
|
|
127
107
|
endListening();
|
|
128
108
|
},
|
|
129
109
|
onError: (message) => {
|
|
130
|
-
|
|
131
110
|
console.warn(`[akan] voice input failed: ${message}`);
|
|
132
111
|
onFailed();
|
|
133
112
|
endListening();
|
|
@@ -2,19 +2,11 @@
|
|
|
2
2
|
import { useRef, useState } from "react";
|
|
3
3
|
import type { ChatMessage } from "../../vendor/use-agentic";
|
|
4
4
|
|
|
5
|
-
/** What a restored transcript can still offer the arrows: the asks themselves, newest last. */
|
|
6
5
|
const asked = (messages: readonly ChatMessage[], cap: number) =>
|
|
7
6
|
messages
|
|
8
7
|
.flatMap((message) => (message.role === "user" && !message.summary && message.text ? [message.text] : []))
|
|
9
8
|
.slice(-cap);
|
|
10
9
|
|
|
11
|
-
/**
|
|
12
|
-
* ↑ walks back through what was sent, ↓ forward, and 0 is the draft it was walked away from. A single-line input
|
|
13
|
-
* does nothing of its own with the vertical arrows, so recall is free to take them.
|
|
14
|
-
*
|
|
15
|
-
* Seeded from the transcript rather than starting empty, because a persisted chat restores the conversation and
|
|
16
|
-
* losing only "what I just typed" across a reload is the one gap a user notices.
|
|
17
|
-
*/
|
|
18
10
|
export const useDraftRecall = (messages: readonly ChatMessage[]) => {
|
|
19
11
|
const cap = 30;
|
|
20
12
|
const sent = useRef<string[] | null>(null);
|
|
@@ -29,7 +21,6 @@ export const useDraftRecall = (messages: readonly ChatMessage[]) => {
|
|
|
29
21
|
if (history[history.length - 1] !== text) sent.current = [...history, text].slice(-cap);
|
|
30
22
|
setAt(0);
|
|
31
23
|
},
|
|
32
|
-
/** Answers the draft to show, or null when the walk cannot go that way. */
|
|
33
24
|
step: (delta: number, draft: string): string | null => {
|
|
34
25
|
const history = sent.current ?? [];
|
|
35
26
|
const next = Math.max(0, Math.min(at + delta, history.length));
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
* How much of the layout viewport the on-screen keyboard is covering.
|
|
6
|
-
*
|
|
7
|
-
* `visualViewport` is the only thing that reports it — `dvh` tracks the browser's own chrome and not the
|
|
8
|
-
* keyboard — and a full-screen chat whose composer sits under the keyboard is one nobody can type into. Answers
|
|
9
|
-
* 0 wherever the API is absent, which is every desktop case and the server.
|
|
10
|
-
*/
|
|
11
4
|
export const useKeyboardInset = () => {
|
|
12
5
|
const [inset, setInset] = useState(0);
|
|
13
6
|
useEffect(() => {
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { type AgentFieldType, AgentValue } from "akanjs/store";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { type AgentSession, Reference } from "../../vendor/use-agentic";
|
|
5
|
+
import type { MenuRow } from "./Menu";
|
|
6
|
+
|
|
7
|
+
export interface ReferenceCandidate {
|
|
8
|
+
refId: string;
|
|
9
|
+
label: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface ReferenceSource<T extends AgentFieldType = AgentFieldType> {
|
|
14
|
+
refName: string;
|
|
15
|
+
/** What this group of rows is called in the menu. */
|
|
16
|
+
label: string;
|
|
17
|
+
/** Masks what leaves the browser: name the class carrying the pointed-at fields, which a `Light<Model>` rarely is. */
|
|
18
|
+
type: T;
|
|
19
|
+
/** The signal aborts when the query moves on. */
|
|
20
|
+
search: (query: string, signal: AbortSignal) => Promise<ReferenceCandidate[]>;
|
|
21
|
+
/** Called once, when a row is picked. */
|
|
22
|
+
resolve: (refId: string) => Promise<unknown>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface ReferenceMenuSetup {
|
|
26
|
+
draft: string;
|
|
27
|
+
sources: readonly ReferenceSource[];
|
|
28
|
+
session: AgentSession;
|
|
29
|
+
l: (key: string, param?: Record<string, string | number>) => string;
|
|
30
|
+
onWrite: (text: string) => void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const atQuery = /(^|\s)@([^\s@[\]()]*)$/;
|
|
34
|
+
|
|
35
|
+
const searchDelay = 150;
|
|
36
|
+
|
|
37
|
+
export const useReferenceMenu = ({ draft, sources, session, l, onWrite }: ReferenceMenuSetup) => {
|
|
38
|
+
const [rows, setRows] = useState<MenuRow[]>([]);
|
|
39
|
+
const [cursor, setCursor] = useState(0);
|
|
40
|
+
const [hidden, setHidden] = useState(false);
|
|
41
|
+
|
|
42
|
+
const held = useRef(sources);
|
|
43
|
+
held.current = sources;
|
|
44
|
+
const match = hidden ? null : atQuery.exec(draft);
|
|
45
|
+
|
|
46
|
+
const query = match ? match[2] : null;
|
|
47
|
+
const write = (candidate: ReferenceCandidate, source: ReferenceSource) => {
|
|
48
|
+
const reference = { refName: source.refName, refId: candidate.refId, label: candidate.label };
|
|
49
|
+
onWrite(`${draft.slice(0, match?.index ?? 0)}${match?.[1] ?? ""}${Reference.token(reference)} `);
|
|
50
|
+
void source
|
|
51
|
+
.resolve(candidate.refId)
|
|
52
|
+
.then((value) => session.stage({ ...reference, value: AgentValue.serialize(source.type, value) }))
|
|
53
|
+
.catch(() => session.note(l("base.agentReferenceFailed", { label: candidate.label })));
|
|
54
|
+
};
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (query === null || !held.current.length) {
|
|
57
|
+
setRows([]);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const controller = new AbortController();
|
|
61
|
+
const timer = setTimeout(() => {
|
|
62
|
+
const current = held.current;
|
|
63
|
+
void Promise.all(
|
|
64
|
+
current.map((source) => source.search(query, controller.signal).catch(() => [] as ReferenceCandidate[])),
|
|
65
|
+
).then((found) => {
|
|
66
|
+
if (controller.signal.aborted) return;
|
|
67
|
+
setCursor(0);
|
|
68
|
+
setRows(
|
|
69
|
+
found.flatMap((candidates, at) =>
|
|
70
|
+
candidates.map((candidate) => ({
|
|
71
|
+
name: candidate.label,
|
|
72
|
+
description: candidate.description ?? current[at].label,
|
|
73
|
+
pick: () => write(candidate, current[at]),
|
|
74
|
+
})),
|
|
75
|
+
),
|
|
76
|
+
);
|
|
77
|
+
});
|
|
78
|
+
}, searchDelay);
|
|
79
|
+
return () => {
|
|
80
|
+
clearTimeout(timer);
|
|
81
|
+
controller.abort();
|
|
82
|
+
};
|
|
83
|
+
}, [query, draft]);
|
|
84
|
+
const selected = Math.min(cursor, Math.max(rows.length - 1, 0));
|
|
85
|
+
return {
|
|
86
|
+
rows: query === null ? [] : rows,
|
|
87
|
+
selected,
|
|
88
|
+
reopen: () => setHidden(false),
|
|
89
|
+
hide: () => setHidden(true),
|
|
90
|
+
move: (delta: number) => setCursor(Math.max(0, Math.min(selected + delta, rows.length - 1))),
|
|
91
|
+
at: () => (query === null ? undefined : rows[selected]),
|
|
92
|
+
};
|
|
93
|
+
};
|
package/ui/Agent/useSlashMenu.ts
CHANGED
|
@@ -9,10 +9,8 @@ interface SlashMenuSetup {
|
|
|
9
9
|
onCommand: (command: ChatCommand) => void;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
/** Only a bare `/name` opens the menu: once an argument is being typed, the list has nothing left to offer. */
|
|
13
12
|
const slashQuery = /^\/[A-Za-z0-9_-]*$/;
|
|
14
13
|
|
|
15
|
-
/** The `/` menu's rows — this chat's own commands — and which one the keys are on. */
|
|
16
14
|
export const useSlashMenu = ({ draft, l, onCommand }: SlashMenuSetup) => {
|
|
17
15
|
const [cursor, setCursor] = useState(0);
|
|
18
16
|
const [hidden, setHidden] = useState(false);
|
|
@@ -30,7 +28,6 @@ export const useSlashMenu = ({ draft, l, onCommand }: SlashMenuSetup) => {
|
|
|
30
28
|
return {
|
|
31
29
|
rows,
|
|
32
30
|
selected,
|
|
33
|
-
/** Reset when the draft is written to: a new query has a new first row, and Escape only hides the old one. */
|
|
34
31
|
reopen: () => {
|
|
35
32
|
setHidden(false);
|
|
36
33
|
setCursor(0);
|