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
|
@@ -19,11 +19,14 @@ import { baseDocumentColumns, documentQueryHelper, getFilterSortByKey, type Quer
|
|
|
19
19
|
import {
|
|
20
20
|
type AkanJob,
|
|
21
21
|
type AkanJobOptions,
|
|
22
|
+
type DocumentStore,
|
|
22
23
|
type InjectRegistry,
|
|
24
|
+
type LiveChange,
|
|
23
25
|
type LiveRegistry,
|
|
24
26
|
type WebsocketAdaptor,
|
|
25
27
|
WebsocketAdaptorRole,
|
|
26
28
|
} from "akanjs/service";
|
|
29
|
+
import { websocketRoomContract } from "../../common/websocketContract";
|
|
27
30
|
import { type Endpoint, type EndpointCls, sliceEndpoint } from "../../signal/endpoint";
|
|
28
31
|
import type { EndpointInfo } from "../../signal/endpointInfo";
|
|
29
32
|
import type { Internal, InternalCls } from "../../signal/internal";
|
|
@@ -42,20 +45,25 @@ import type {
|
|
|
42
45
|
} from "../../signal/types";
|
|
43
46
|
import type { HttpRoutes, LocalPublish, SignalRoutes, WebsocketRoutes } from "../types";
|
|
44
47
|
|
|
45
|
-
type HttpRouteHandler = (req: Bun.BunRequest) => Response | Promise<Response | undefined> | undefined;
|
|
46
48
|
type LiveChangeListener = (doc: unknown, type: unknown, previous?: unknown) => void;
|
|
47
|
-
type
|
|
49
|
+
type LiveRoute = (next: Record<string, unknown>, previous?: Record<string, unknown>) => Promise<LiveDelivery[]>;
|
|
50
|
+
interface LiveDelivery {
|
|
51
|
+
roomId: string;
|
|
52
|
+
payload: LiveEventPayload;
|
|
53
|
+
}
|
|
54
|
+
type HttpMethodRoutes = Record<string, (req: Bun.BunRequest) => Response | Promise<Response | undefined> | undefined>;
|
|
48
55
|
|
|
49
56
|
export class SignalResolver {
|
|
50
57
|
static logger = new Logger("SignalResolver");
|
|
51
58
|
|
|
52
59
|
static makeRoomId(key: string, args: unknown[]) {
|
|
53
|
-
return
|
|
60
|
+
return websocketRoomContract.idOf(key, args);
|
|
54
61
|
}
|
|
55
62
|
static #localPublish: LocalPublish = () => {
|
|
56
63
|
SignalResolver.logger.verbose(`Local publish is not initialized yet`);
|
|
57
64
|
};
|
|
58
65
|
static readonly #coalescingRooms = new Set<string>();
|
|
66
|
+
static readonly #liveRoutes = new Map<string, { store: DocumentStore; route: LiveRoute }>();
|
|
59
67
|
|
|
60
68
|
static coalescesRoom(roomId: string): boolean {
|
|
61
69
|
const separator = roomId.indexOf("-");
|
|
@@ -64,13 +72,26 @@ export class SignalResolver {
|
|
|
64
72
|
static setLocalPublish(localPublish: LocalPublish, websocket: WebsocketAdaptor, live?: LiveRegistry) {
|
|
65
73
|
SignalResolver.#localPublish = localPublish;
|
|
66
74
|
websocket.setEventHandler((roomId, data) => localPublish(roomId, data as object | object[] | Uint8Array));
|
|
67
|
-
|
|
75
|
+
|
|
68
76
|
websocket.onRecovered?.(() => {
|
|
69
77
|
for (const roomId of live?.syncHub.roomIds() ?? []) {
|
|
70
78
|
const payload: LiveEventPayload = { op: "invalidate", id: "" };
|
|
71
79
|
localPublish(roomId, payload);
|
|
72
80
|
}
|
|
73
81
|
});
|
|
82
|
+
websocket.onChange?.((change) => {
|
|
83
|
+
void SignalResolver.#routeChange(change, live).catch((error: unknown) =>
|
|
84
|
+
SignalResolver.logger.warn(`Live routing failed for ${change.refName}: ${String(error)}`),
|
|
85
|
+
);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
static async #routeChange({ refName, next, previous }: LiveChange, live?: LiveRegistry) {
|
|
89
|
+
const target = SignalResolver.#liveRoutes.get(refName);
|
|
90
|
+
if (!target || !live?.syncHub.roomCountOf(refName)) return;
|
|
91
|
+
await target.route(
|
|
92
|
+
target.store.deserialize(next) as Record<string, unknown>,
|
|
93
|
+
previous ? (target.store.deserialize(previous) as Record<string, unknown>) : undefined,
|
|
94
|
+
);
|
|
74
95
|
}
|
|
75
96
|
static resolveServerSignal(
|
|
76
97
|
serverSignalCls: ServerSignalCls,
|
|
@@ -81,7 +102,6 @@ export class SignalResolver {
|
|
|
81
102
|
const websocket = SignalResolver.#getWebsocket(registry);
|
|
82
103
|
Object.entries(endpointMeta).forEach(([key, endpointInfo]) => {
|
|
83
104
|
if (endpointInfo.type !== "pubsub") throw new Error(`Endpoint ${key} is not a pubsub endpoint`);
|
|
84
|
-
websocket.registerEndpoint(key, endpointInfo.returns.returnRef as Cls, endpointInfo.returns.arrDepth);
|
|
85
105
|
const isBinaryFrame = endpointInfo.returns.returnRef === Binary && !endpointInfo.returns.arrDepth;
|
|
86
106
|
if (isBinaryFrame && endpointInfo.signalOption.backpressure !== "queue") SignalResolver.#coalescingRooms.add(key);
|
|
87
107
|
let warnedRawBytes = false;
|
|
@@ -103,7 +123,7 @@ export class SignalResolver {
|
|
|
103
123
|
const roomId = SignalResolver.makeRoomId(key, roomArgs);
|
|
104
124
|
if (isBinaryFrame) {
|
|
105
125
|
const bytes = Binary._parse(resolvedData as Uint8Array) as Uint8Array;
|
|
106
|
-
websocket.publish(roomId, bytes);
|
|
126
|
+
websocket.publish(roomId, bytes, { coalesce: SignalResolver.coalescesRoom(roomId) });
|
|
107
127
|
SignalResolver.#localPublish(roomId, bytes);
|
|
108
128
|
return;
|
|
109
129
|
}
|
|
@@ -134,14 +154,7 @@ export class SignalResolver {
|
|
|
134
154
|
});
|
|
135
155
|
return serverSignalCls;
|
|
136
156
|
}
|
|
137
|
-
|
|
138
|
-
* Attaches the change listeners that feed live rooms, once per model that declares a `.live()` slice.
|
|
139
|
-
*
|
|
140
|
-
* Only the document write paths reach here. A query-level write — `updateManyByQuery`, the generated
|
|
141
|
-
* `update<Filter>` / `remove<Filter>`, `updateById` / `removeById` — is one atomic statement that fires no
|
|
142
|
-
* document hooks at all, exactly as it fires no cascade, so a model whose fields move that way will not push
|
|
143
|
-
* those moves to a live list. It is the same blind spot cascade has and it cannot be closed from here.
|
|
144
|
-
*/
|
|
157
|
+
|
|
145
158
|
static registerLiveSync(
|
|
146
159
|
sliceCls: SliceCls,
|
|
147
160
|
{ registry, live }: { registry: InjectRegistry; live: LiveRegistry },
|
|
@@ -155,18 +168,20 @@ export class SignalResolver {
|
|
|
155
168
|
.map(([key]) => `${refName}Live${capitalize(key)}`);
|
|
156
169
|
if (!liveKeys.length) return [];
|
|
157
170
|
const service = live.service.get(refName) as
|
|
158
|
-
| {
|
|
171
|
+
| {
|
|
172
|
+
listenPost: (type: "create" | "update" | "remove", listener: LiveChangeListener) => unknown;
|
|
173
|
+
__databaseModel: { __store: DocumentStore };
|
|
174
|
+
}
|
|
159
175
|
| undefined;
|
|
160
176
|
if (!service) throw new Error(`Live slice on "${refName}" has no service to listen to`);
|
|
177
|
+
const store = service.__databaseModel.__store;
|
|
161
178
|
const websocket = SignalResolver.#getWebsocket(registry);
|
|
162
|
-
|
|
163
|
-
for (const liveKey of liveKeys) websocket.registerEndpoint(liveKey, Any, 0);
|
|
164
|
-
const publish = async (next: Record<string, unknown>, previous?: Record<string, unknown>) => {
|
|
179
|
+
const route: LiveRoute = async (next, previous) => {
|
|
165
180
|
const targets = live.syncHub.route(refName, next, previous);
|
|
166
|
-
if (!targets.length) return;
|
|
181
|
+
if (!targets.length) return [];
|
|
167
182
|
const id = String(next.id);
|
|
168
183
|
const needsLight = targets.some((target) => !target.invalidate && target.payload === "light");
|
|
169
|
-
|
|
184
|
+
|
|
170
185
|
const light = needsLight
|
|
171
186
|
? ((await SignalContext.resolveReturn(next, {
|
|
172
187
|
signalContext: null,
|
|
@@ -177,15 +192,26 @@ export class SignalResolver {
|
|
|
177
192
|
})) as object)
|
|
178
193
|
: null;
|
|
179
194
|
const lightData = light ? (serialize(cnst.light, 0, light, "object", {}) as object | null) : null;
|
|
180
|
-
|
|
195
|
+
return targets.map((target) => {
|
|
181
196
|
const payload: LiveEventPayload = target.invalidate
|
|
182
197
|
? { op: "invalidate", id }
|
|
183
198
|
: { op: target.op, id, light: target.payload === "light" ? lightData : null };
|
|
184
|
-
websocket.publish(target.roomId, payload);
|
|
185
199
|
SignalResolver.#localPublish(target.roomId, payload);
|
|
186
|
-
|
|
200
|
+
return { roomId: target.roomId, payload };
|
|
201
|
+
});
|
|
187
202
|
};
|
|
188
|
-
|
|
203
|
+
SignalResolver.#liveRoutes.set(refName, { store, route });
|
|
204
|
+
const publish = async (next: Record<string, unknown>, previous?: Record<string, unknown>) => {
|
|
205
|
+
websocket.publishChange?.({
|
|
206
|
+
refName,
|
|
207
|
+
next: store.serialize(next),
|
|
208
|
+
previous: previous ? store.serialize(previous) : undefined,
|
|
209
|
+
});
|
|
210
|
+
const delivered = await route(next, previous);
|
|
211
|
+
|
|
212
|
+
if (!websocket.publishChange) for (const { roomId, payload } of delivered) websocket.publish(roomId, payload);
|
|
213
|
+
};
|
|
214
|
+
|
|
189
215
|
const listener: LiveChangeListener = (doc, _type, previous) => {
|
|
190
216
|
void publish(doc as Record<string, unknown>, previous as Record<string, unknown> | undefined).catch(
|
|
191
217
|
(error: unknown) => SignalResolver.logger.warn(`Live publish failed for ${refName}: ${String(error)}`),
|
|
@@ -208,7 +234,7 @@ export class SignalResolver {
|
|
|
208
234
|
case "process": {
|
|
209
235
|
if (!internalInfo.execFn) throw new Error(`Exec function is not set for ${key}`);
|
|
210
236
|
const execFn = internalInfo.execFn.bind(internal);
|
|
211
|
-
|
|
237
|
+
|
|
212
238
|
internal.queue.registerProcessWorker(
|
|
213
239
|
key,
|
|
214
240
|
SignalResolver.#traced(
|
|
@@ -222,6 +248,7 @@ export class SignalResolver {
|
|
|
222
248
|
internal.schedule.registerInit(
|
|
223
249
|
key,
|
|
224
250
|
SignalResolver.#traced(key, () => internalInfo.execFn?.bind(internal)()),
|
|
251
|
+
{ once: internalInfo.signalOption.once },
|
|
225
252
|
);
|
|
226
253
|
break;
|
|
227
254
|
case "destroy":
|
|
@@ -262,15 +289,11 @@ export class SignalResolver {
|
|
|
262
289
|
}
|
|
263
290
|
});
|
|
264
291
|
}
|
|
265
|
-
/**
|
|
266
|
-
* Every run of an internal is one `internal:<key>` trace, so the handler's own logs carry a traceId. The
|
|
267
|
-
* schedule adaptor's started/finished/error lines wrap this call from outside and stay uncorrelated.
|
|
268
|
-
*/
|
|
269
292
|
static #traced<A extends unknown[], R>(key: string, fn: (...args: A) => R) {
|
|
270
293
|
return async (...args: A) =>
|
|
271
294
|
await runTraced(SignalTrace.create(key, "internal", "internal"), async () => await fn(...args));
|
|
272
295
|
}
|
|
273
|
-
|
|
296
|
+
|
|
274
297
|
static getScheduleSkipReason(
|
|
275
298
|
internalInfo: InternalInfo,
|
|
276
299
|
serverMode: "federation" | "batch" | "all",
|
|
@@ -290,10 +313,6 @@ export class SignalResolver {
|
|
|
290
313
|
return null;
|
|
291
314
|
}
|
|
292
315
|
|
|
293
|
-
/**
|
|
294
|
-
* A `process` producer is installed on every server regardless of placement, so a skipped worker means this
|
|
295
|
-
* server can enqueue jobs that nothing here consumes. Surface that asymmetry instead of failing silently.
|
|
296
|
-
*/
|
|
297
316
|
static #warnMissingProcessWorker(
|
|
298
317
|
key: string,
|
|
299
318
|
internalInfo: InternalInfo,
|
|
@@ -305,7 +324,6 @@ export class SignalResolver {
|
|
|
305
324
|
else SignalResolver.logger.warn(message);
|
|
306
325
|
}
|
|
307
326
|
|
|
308
|
-
/** Maps a job payload back onto the internal's declared `msg` args, deserializing each to its declared type. */
|
|
309
327
|
static #getJobArgs(key: string, internalInfo: InternalInfo, job: AkanJob): unknown[] {
|
|
310
328
|
const data = Array.isArray(job.data) ? (job.data as unknown[]) : job.data === undefined ? [] : [job.data];
|
|
311
329
|
return internalInfo.args.map((arg, idx) =>
|
|
@@ -376,7 +394,7 @@ export class SignalResolver {
|
|
|
376
394
|
SignalResolver.#assertLiveSort(refName, key, sliceInfo);
|
|
377
395
|
SignalResolver.#assertLivePauseOn(refName, key, sliceInfo);
|
|
378
396
|
const liveKey = `${refName}Live${capitalizedKey}`;
|
|
379
|
-
|
|
397
|
+
|
|
380
398
|
const liveBuilder = (builder as any).pubsub(Any, {
|
|
381
399
|
...sliceInfo.signalOption,
|
|
382
400
|
mcp: false,
|
|
@@ -457,14 +475,7 @@ export class SignalResolver {
|
|
|
457
475
|
}) {}
|
|
458
476
|
return SliceEndpoint;
|
|
459
477
|
}
|
|
460
|
-
|
|
461
|
-
* The three things about a declared live sort that can be known without a request.
|
|
462
|
-
*
|
|
463
|
-
* A client places a new row itself only for a sort it can reproduce, so a sort key naming a field the row does
|
|
464
|
-
* not carry produces a list that is quietly in the wrong order — the one failure mode with no symptom. The
|
|
465
|
-
* `_doc` case is a warning rather than a refusal because it is the slice author's call: the two dialects order
|
|
466
|
-
* a JSON field differently from each other, so there is no single server answer to match.
|
|
467
|
-
*/
|
|
478
|
+
|
|
468
479
|
static #assertLiveSort(refName: string, key: string, sliceInfo: SliceInfo) {
|
|
469
480
|
const lightFields = (sliceInfo.light as unknown as { [FIELD_META]?: Record<string, unknown> })[FIELD_META] ?? {};
|
|
470
481
|
for (const sortKey of sliceInfo.liveOption?.sort ?? []) {
|
|
@@ -485,7 +496,6 @@ export class SignalResolver {
|
|
|
485
496
|
}
|
|
486
497
|
}
|
|
487
498
|
}
|
|
488
|
-
/** Refuses a subscribe carrying an argument the slice named in `pauseOn`, naming the argument it refused on. */
|
|
489
499
|
static #assertNotPaused(
|
|
490
500
|
key: string,
|
|
491
501
|
liveOption: LiveEndpointOption,
|
|
@@ -501,13 +511,6 @@ export class SignalResolver {
|
|
|
501
511
|
);
|
|
502
512
|
}
|
|
503
513
|
}
|
|
504
|
-
/**
|
|
505
|
-
* That every argument `pauseOn` names is one this slice has, and one that can actually be empty.
|
|
506
|
-
*
|
|
507
|
-
* A name that is not an argument would do nothing at all, and a `param` — which is never nullable, so it is
|
|
508
|
-
* present on every call — would switch the room off for good rather than while a box is filled. Both are the
|
|
509
|
-
* kind of mistake whose only symptom is a list that never updates, so neither is allowed to boot.
|
|
510
|
-
*/
|
|
511
514
|
static #assertLivePauseOn(refName: string, key: string, sliceInfo: SliceInfo) {
|
|
512
515
|
for (const name of sliceInfo.liveOption?.pauseOn ?? []) {
|
|
513
516
|
const arg = sliceInfo.args.find((candidate) => candidate.name === name);
|
|
@@ -523,10 +526,7 @@ export class SignalResolver {
|
|
|
523
526
|
);
|
|
524
527
|
}
|
|
525
528
|
}
|
|
526
|
-
|
|
527
|
-
* The model's field metadata, which membership routing reads for one thing: whether a path is an array, because
|
|
528
|
-
* a bare value on an array field means membership rather than equality.
|
|
529
|
-
*/
|
|
529
|
+
|
|
530
530
|
static #queryFieldsOf(live: LiveRegistry, refName: string): QueryFieldMap {
|
|
531
531
|
const sliceCls = live.sliceCls.get(refName);
|
|
532
532
|
const doc = sliceCls?.srv.db?.doc as { [FIELD_META]?: QueryFieldMap } | undefined;
|
|
@@ -536,11 +536,7 @@ export class SignalResolver {
|
|
|
536
536
|
Bun.ServerWebSocket<unknown>,
|
|
537
537
|
Map<string, SignalContext<WebSocketExecutionContext>>
|
|
538
538
|
>();
|
|
539
|
-
|
|
540
|
-
* Message contexts that registered a lifecycle handler. A message context is otherwise dropped the moment it
|
|
541
|
-
* answers, so `ws.on("disconnect", …)` from one would land in an object nothing reads again — a silent
|
|
542
|
-
* no-op beside the same call working from a pubsub subscribe.
|
|
543
|
-
*/
|
|
539
|
+
|
|
544
540
|
static #liveWsMessageCtx = new WeakMap<Bun.ServerWebSocket<unknown>, Set<SignalContext<WebSocketExecutionContext>>>();
|
|
545
541
|
static #retainWsContext(ws: Bun.ServerWebSocket<unknown>, context: SignalContext<WebSocketExecutionContext>) {
|
|
546
542
|
const wsCtx = context.getWebSocketContext();
|
|
@@ -549,13 +545,7 @@ export class SignalResolver {
|
|
|
549
545
|
contexts.add(context);
|
|
550
546
|
SignalResolver.#liveWsMessageCtx.set(ws, contexts);
|
|
551
547
|
}
|
|
552
|
-
|
|
553
|
-
* Cleanup handlers belong to the app, so one that throws must not take the rest of the teardown with it: a
|
|
554
|
-
* rejection here would skip `unregisterSocket` and leak the socket's room membership in Redis for good.
|
|
555
|
-
*
|
|
556
|
-
* A close ends both the subscription and the connection, so it passes both events — and a handler registered
|
|
557
|
-
* for both, the way a cleanup that must happen either way is written, runs once rather than twice.
|
|
558
|
-
*/
|
|
548
|
+
|
|
559
549
|
static async #runLifecycleHandlers(
|
|
560
550
|
contexts: Iterable<SignalContext<WebSocketExecutionContext>>,
|
|
561
551
|
events: ("unsubscribe" | "disconnect")[],
|
|
@@ -572,11 +562,7 @@ export class SignalResolver {
|
|
|
572
562
|
if (result.status === "rejected")
|
|
573
563
|
SignalResolver.logger.error(`WebSocket cleanup handler failed: ${result.reason}`);
|
|
574
564
|
}
|
|
575
|
-
|
|
576
|
-
* A path may legitimately carry several methods — a `query` GET and a `mutation` POST sharing a custom `path` —
|
|
577
|
-
* so methods merge rather than replace. The same method twice leaves one of the two endpoints unreachable with
|
|
578
|
-
* nothing said about it, and the shadowed half is as easily the guarded one, so it fails the boot instead.
|
|
579
|
-
*/
|
|
565
|
+
|
|
580
566
|
static #mountHttpRoute(routes: HttpRoutes, path: string, handlers: HttpMethodRoutes, owner?: string) {
|
|
581
567
|
const table = routes as Record<string, HttpMethodRoutes | undefined>;
|
|
582
568
|
const existing = table[path];
|
|
@@ -588,7 +574,6 @@ export class SignalResolver {
|
|
|
588
574
|
table[path] = { ...existing, ...handlers };
|
|
589
575
|
}
|
|
590
576
|
|
|
591
|
-
/** Same rule across endpoint classes, which are resolved one at a time and then folded into one table. */
|
|
592
577
|
static mergeHttpRoutes(target: HttpRoutes, source: HttpRoutes) {
|
|
593
578
|
for (const [path, handlers] of Object.entries((source ?? {}) as Record<string, HttpMethodRoutes>))
|
|
594
579
|
SignalResolver.#mountHttpRoute(target, path, handlers);
|
|
@@ -610,7 +595,7 @@ export class SignalResolver {
|
|
|
610
595
|
const wsRoutes: WebsocketRoutes = {};
|
|
611
596
|
const defaultPrefix = endpointCls.srv.cnst?.refName;
|
|
612
597
|
Object.entries(endpointMeta).forEach(([key, endpointInfo]) => {
|
|
613
|
-
const servicePrefix = SignalResolver
|
|
598
|
+
const servicePrefix = SignalResolver.resolveServicePrefix(endpointInfo.signalOption.prefix, defaultPrefix);
|
|
614
599
|
const path = `${servicePrefix}${endpointInfo.getPath(key)}`;
|
|
615
600
|
if (endpointInfo.signalOption.globalPrefix !== undefined) {
|
|
616
601
|
routeOptions[path] = { globalPrefix: endpointInfo.signalOption.globalPrefix };
|
|
@@ -625,7 +610,7 @@ export class SignalResolver {
|
|
|
625
610
|
live,
|
|
626
611
|
middleware,
|
|
627
612
|
}).init();
|
|
628
|
-
|
|
613
|
+
|
|
629
614
|
return (await context.exec()) as Response | undefined;
|
|
630
615
|
});
|
|
631
616
|
if (endpointInfo.signalOption.method && endpointInfo.type !== "mutation")
|
|
@@ -640,8 +625,9 @@ export class SignalResolver {
|
|
|
640
625
|
SignalResolver.#canUsePrimitiveQueryFastPath(endpointInfo, middleware)
|
|
641
626
|
? {
|
|
642
627
|
GET: async (req) => {
|
|
643
|
-
if (
|
|
644
|
-
|
|
628
|
+
if (req.headers.get("authorization") || cookieHeaderHasAuthToken(req.headers.get("cookie")))
|
|
629
|
+
return await normalHttpHandler(req);
|
|
630
|
+
|
|
645
631
|
return await SignalContext.try(
|
|
646
632
|
endpoint,
|
|
647
633
|
endpointInfo,
|
|
@@ -679,14 +665,15 @@ export class SignalResolver {
|
|
|
679
665
|
).init();
|
|
680
666
|
const subscribe = event === "subscribe";
|
|
681
667
|
const liveOption = endpointInfo.signalOption.live;
|
|
682
|
-
|
|
668
|
+
|
|
683
669
|
const requestRoomId = context.getRoomId(key);
|
|
684
670
|
if (subscribe) {
|
|
685
|
-
|
|
671
|
+
|
|
686
672
|
if (liveOption) SignalResolver.#assertNotPaused(key, liveOption, endpointInfo, context);
|
|
687
673
|
const query = await context.exec();
|
|
688
674
|
const roomId = liveOption ? context.getLiveRoomId(key) : requestRoomId;
|
|
689
|
-
|
|
675
|
+
const roomCtxMap = SignalResolver.#liveWsPubsubRoomCtx.get(ws) ?? new Map();
|
|
676
|
+
if (liveOption && !roomCtxMap.has(roomId))
|
|
690
677
|
live.syncHub.join({
|
|
691
678
|
refName: liveOption.refName,
|
|
692
679
|
roomId,
|
|
@@ -695,10 +682,8 @@ export class SignalResolver {
|
|
|
695
682
|
fields: SignalResolver.#queryFieldsOf(live, liveOption.refName),
|
|
696
683
|
});
|
|
697
684
|
ws.subscribe(roomId);
|
|
698
|
-
const roomCtxMap = SignalResolver.#liveWsPubsubRoomCtx.get(ws) ?? new Map();
|
|
699
685
|
roomCtxMap.set(roomId, context);
|
|
700
686
|
SignalResolver.#liveWsPubsubRoomCtx.set(ws, roomCtxMap);
|
|
701
|
-
|
|
702
687
|
websocket.joinRoom(ws, roomId);
|
|
703
688
|
SignalResolver.logger.verbose(`WebSocket subscribed to room ${roomId}`);
|
|
704
689
|
const ack: WebsocketSubscribeAck = { type: "sub", roomId, requestRoomId, subscribe };
|
|
@@ -708,13 +693,12 @@ export class SignalResolver {
|
|
|
708
693
|
const roomId = liveOption ? context.getLiveRoomId(key) : requestRoomId;
|
|
709
694
|
ws.unsubscribe(roomId);
|
|
710
695
|
const roomCtxMap = SignalResolver.#liveWsPubsubRoomCtx.get(ws);
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
696
|
+
const roomCtx = roomCtxMap?.get(roomId);
|
|
697
|
+
if (roomCtxMap && roomCtx) {
|
|
698
|
+
await SignalResolver.#runLifecycleHandlers([roomCtx], ["unsubscribe"]);
|
|
714
699
|
roomCtxMap.delete(roomId);
|
|
715
700
|
if (roomCtxMap.size === 0) SignalResolver.#liveWsPubsubRoomCtx.delete(ws);
|
|
716
701
|
if (liveOption) live.syncHub.leave(roomId);
|
|
717
|
-
|
|
718
702
|
websocket.leaveRoom(ws, roomId);
|
|
719
703
|
SignalResolver.logger.verbose(`WebSocket unsubscribed from room ${roomId}`);
|
|
720
704
|
}
|
|
@@ -744,7 +728,7 @@ export class SignalResolver {
|
|
|
744
728
|
return { routes, wsRoutes, routeOptions };
|
|
745
729
|
}
|
|
746
730
|
|
|
747
|
-
static
|
|
731
|
+
static resolveServicePrefix(prefix: false | string | undefined, defaultPrefix?: string): string {
|
|
748
732
|
if (prefix === false || prefix === "") return "";
|
|
749
733
|
const resolved = prefix ?? defaultPrefix;
|
|
750
734
|
if (!resolved) return "";
|
|
@@ -776,15 +760,6 @@ export class SignalResolver {
|
|
|
776
760
|
);
|
|
777
761
|
}
|
|
778
762
|
|
|
779
|
-
static #hasAuthCredential(req: Request) {
|
|
780
|
-
return Boolean(req.headers.get("authorization") || cookieHeaderHasAuthToken(req.headers.get("cookie")));
|
|
781
|
-
}
|
|
782
|
-
|
|
783
|
-
/**
|
|
784
|
-
* Re-checks the guards of every room this socket is subscribed to and drops the ones that no
|
|
785
|
-
* longer pass. Called when the socket's credential changes: a pubsub room is authorized once at
|
|
786
|
-
* subscribe time, so without this a signed-out socket would keep receiving its old rooms.
|
|
787
|
-
*/
|
|
788
763
|
static async revalidateWsRooms(
|
|
789
764
|
ws: Bun.ServerWebSocket<any>,
|
|
790
765
|
registry: InjectRegistry,
|
|
@@ -816,7 +791,7 @@ export class SignalResolver {
|
|
|
816
791
|
const roomCtxMap = SignalResolver.#liveWsPubsubRoomCtx.get(ws);
|
|
817
792
|
const contexts = [...(roomCtxMap?.values() ?? []), ...(SignalResolver.#liveWsMessageCtx.get(ws) ?? [])];
|
|
818
793
|
await SignalResolver.#runLifecycleHandlers(contexts, ["unsubscribe", "disconnect"]);
|
|
819
|
-
|
|
794
|
+
|
|
820
795
|
for (const roomId of roomCtxMap?.keys() ?? []) live?.syncHub.leave(roomId);
|
|
821
796
|
SignalResolver.#liveWsPubsubRoomCtx.delete(ws);
|
|
822
797
|
SignalResolver.#liveWsMessageCtx.delete(ws);
|
|
@@ -10,9 +10,13 @@ import type {
|
|
|
10
10
|
} from "akanjs/client";
|
|
11
11
|
import { Children, cloneElement, isValidElement, type ReactElement, type ReactNode, Suspense } from "react";
|
|
12
12
|
import { getExplicitPageConfigKeys, resolvePageState } from "../client/frameConfig";
|
|
13
|
-
import { resolveHeadResult } from "./
|
|
14
|
-
import {
|
|
15
|
-
|
|
13
|
+
import { resolveHeadResult } from "./head";
|
|
14
|
+
import {
|
|
15
|
+
type AkanRouteSegmentState,
|
|
16
|
+
createAkanRouteSegments,
|
|
17
|
+
createAkanSegmentOutletKey,
|
|
18
|
+
isAkanRscPartialCommitEnabled,
|
|
19
|
+
} from "./routeState";
|
|
16
20
|
import { AkanSegmentOutletReference } from "./rscSegmentOutletReference";
|
|
17
21
|
|
|
18
22
|
export class RouteElementComposer {
|
|
@@ -26,14 +30,7 @@ export class RouteElementComposer {
|
|
|
26
30
|
const pageConfigChain = await RouteElementComposer.#resolvePageConfigChain(pathRoute);
|
|
27
31
|
return {
|
|
28
32
|
...pathRoute,
|
|
29
|
-
pageState:
|
|
30
|
-
configChain: pageConfigChain,
|
|
31
|
-
path: pathRoute.path,
|
|
32
|
-
basePath: basePath ?? undefined,
|
|
33
|
-
platform: "web",
|
|
34
|
-
deviceSafeArea: { top: 0, bottom: 0 },
|
|
35
|
-
cssSafeArea: { top: 0, bottom: 0 },
|
|
36
|
-
}),
|
|
33
|
+
pageState: RouteElementComposer.#webPageState(pageConfigChain, pathRoute.path, basePath),
|
|
37
34
|
pageConfigChain,
|
|
38
35
|
explicitPageConfigKeys: getExplicitPageConfigKeys(pageConfigChain),
|
|
39
36
|
};
|
|
@@ -47,9 +44,13 @@ export class RouteElementComposer {
|
|
|
47
44
|
basePath?: string | null;
|
|
48
45
|
}) {
|
|
49
46
|
const pageConfigChain = await RouteElementComposer.#resolveLayoutPageConfigChain(route);
|
|
47
|
+
return RouteElementComposer.#webPageState(pageConfigChain, route.path, basePath);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
static #webPageState(configChain: PageConfig[], path: string, basePath?: string | null) {
|
|
50
51
|
return resolvePageState({
|
|
51
|
-
configChain
|
|
52
|
-
path
|
|
52
|
+
configChain,
|
|
53
|
+
path,
|
|
53
54
|
basePath: basePath ?? undefined,
|
|
54
55
|
platform: "web",
|
|
55
56
|
deviceSafeArea: { top: 0, bottom: 0 },
|
|
@@ -118,7 +119,7 @@ export class RouteElementComposer {
|
|
|
118
119
|
searchParams: Record<string, string | string[]>;
|
|
119
120
|
}): Promise<Head | null | undefined> {
|
|
120
121
|
return (
|
|
121
|
-
await RouteElementComposer.
|
|
122
|
+
await RouteElementComposer.resolveHeadWithSnapshot({
|
|
122
123
|
pathRoute,
|
|
123
124
|
params,
|
|
124
125
|
searchParams,
|
|
@@ -126,7 +127,7 @@ export class RouteElementComposer {
|
|
|
126
127
|
).node;
|
|
127
128
|
}
|
|
128
129
|
|
|
129
|
-
static async
|
|
130
|
+
static async resolveHeadWithSnapshot({
|
|
130
131
|
pathRoute,
|
|
131
132
|
params,
|
|
132
133
|
searchParams,
|
|
@@ -164,15 +165,7 @@ export class RouteElementComposer {
|
|
|
164
165
|
if (!fallback) continue;
|
|
165
166
|
const renders = [
|
|
166
167
|
...layoutStack.slice(0, index + 1),
|
|
167
|
-
RouteElementComposer.#makeFallbackRouteRender({
|
|
168
|
-
kind,
|
|
169
|
-
fallback,
|
|
170
|
-
params,
|
|
171
|
-
searchParams,
|
|
172
|
-
pathname,
|
|
173
|
-
error,
|
|
174
|
-
digest,
|
|
175
|
-
}),
|
|
168
|
+
RouteElementComposer.#makeFallbackRouteRender({ kind, fallback, pathname, error, digest }),
|
|
176
169
|
];
|
|
177
170
|
return RouteElementComposer.composeRenders({ renders, params, searchParams });
|
|
178
171
|
}
|
|
@@ -207,12 +200,10 @@ export class RouteElementComposer {
|
|
|
207
200
|
</Suspense>
|
|
208
201
|
);
|
|
209
202
|
const segment = segments?.[i];
|
|
210
|
-
if (segment?.kind === "page") {
|
|
211
|
-
const routeSegments = segments;
|
|
212
|
-
if (!routeSegments) continue;
|
|
203
|
+
if (segments && segment?.kind === "page") {
|
|
213
204
|
const outletKey =
|
|
214
205
|
createAkanSegmentOutletKey(
|
|
215
|
-
|
|
206
|
+
segments.slice(0, i + 1).map((item) => item.key),
|
|
216
207
|
i,
|
|
217
208
|
) ?? segment.key;
|
|
218
209
|
element = <AkanSegmentOutletReference segmentKey={outletKey}>{element}</AkanSegmentOutletReference>;
|
|
@@ -221,7 +212,7 @@ export class RouteElementComposer {
|
|
|
221
212
|
return element;
|
|
222
213
|
}
|
|
223
214
|
|
|
224
|
-
static async
|
|
215
|
+
static AsyncRender = async ({
|
|
225
216
|
routeRender,
|
|
226
217
|
children,
|
|
227
218
|
params,
|
|
@@ -231,17 +222,7 @@ export class RouteElementComposer {
|
|
|
231
222
|
children: ReactNode;
|
|
232
223
|
params: Record<string, string>;
|
|
233
224
|
searchParams: Record<string, string | string[]>;
|
|
234
|
-
}) {
|
|
235
|
-
const node = await routeRender.render({ children, params, searchParams } as never);
|
|
236
|
-
return RouteElementComposer.#normalizeReactNode(node);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
static AsyncRender = (props: {
|
|
240
|
-
routeRender: RouteRender;
|
|
241
|
-
children: ReactNode;
|
|
242
|
-
params: Record<string, string>;
|
|
243
|
-
searchParams: Record<string, string | string[]>;
|
|
244
|
-
}) => RouteElementComposer.renderAsync(props);
|
|
225
|
+
}) => RouteElementComposer.#normalizeReactNode(await routeRender.render({ children, params, searchParams } as never));
|
|
245
226
|
|
|
246
227
|
static #makeFallbackRouteRender({
|
|
247
228
|
kind,
|
|
@@ -252,18 +233,13 @@ export class RouteElementComposer {
|
|
|
252
233
|
}: {
|
|
253
234
|
kind: "not-found" | "error";
|
|
254
235
|
fallback: LayoutNotFoundRender | LayoutErrorRender;
|
|
255
|
-
params: Record<string, string>;
|
|
256
|
-
searchParams: Record<string, string | string[]>;
|
|
257
236
|
pathname: string;
|
|
258
237
|
error?: unknown;
|
|
259
238
|
digest?: string;
|
|
260
239
|
}): RouteRender {
|
|
261
240
|
return {
|
|
262
241
|
render: (props: { params: Record<string, string>; searchParams: Record<string, string | string[]> }) => {
|
|
263
|
-
const { params, searchParams } = props
|
|
264
|
-
params: Record<string, string>;
|
|
265
|
-
searchParams: Record<string, string | string[]>;
|
|
266
|
-
};
|
|
242
|
+
const { params, searchParams } = props;
|
|
267
243
|
return kind === "not-found"
|
|
268
244
|
? (fallback as LayoutNotFoundRender)({ params, searchParams, pathname })
|
|
269
245
|
: (fallback as LayoutErrorRender)({ params, searchParams, pathname, error, digest });
|
|
@@ -278,17 +254,12 @@ export class RouteElementComposer {
|
|
|
278
254
|
const props = node.props as { children?: ReactNode };
|
|
279
255
|
if (!("children" in props)) return node;
|
|
280
256
|
|
|
281
|
-
const normalizedChildren = RouteElementComposer.#
|
|
257
|
+
const normalizedChildren = RouteElementComposer.#normalizeReactNode(props.children);
|
|
282
258
|
if (normalizedChildren === props.children) return node;
|
|
283
259
|
|
|
284
260
|
return cloneElement(node as ReactElement<{ children?: ReactNode }>, undefined, normalizedChildren);
|
|
285
261
|
}
|
|
286
262
|
|
|
287
|
-
static #normalizeReactChildren(children: ReactNode): ReactNode {
|
|
288
|
-
if (Array.isArray(children)) return Children.toArray(children).map(RouteElementComposer.#normalizeReactNode);
|
|
289
|
-
return RouteElementComposer.#normalizeReactNode(children);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
263
|
static #getRenderStack(pathRoute: PathRoute): RouteRender[] {
|
|
293
264
|
return [...pathRoute.renderRootLayouts, ...pathRoute.renderLayouts, pathRoute.renderPage];
|
|
294
265
|
}
|
package/server/routeState.ts
CHANGED
|
@@ -73,7 +73,8 @@ function encodeBase64Url(value: string): string {
|
|
|
73
73
|
return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
function
|
|
76
|
+
function decodeBase64UrlJson(value: string | null | undefined): unknown {
|
|
77
|
+
if (!value) return undefined;
|
|
77
78
|
try {
|
|
78
79
|
const padded = value
|
|
79
80
|
.replace(/-/g, "+")
|
|
@@ -82,9 +83,9 @@ function decodeBase64Url(value: string): string | null {
|
|
|
82
83
|
const binary = atob(padded);
|
|
83
84
|
const bytes = new Uint8Array(binary.length);
|
|
84
85
|
for (let index = 0; index < binary.length; index++) bytes[index] = binary.charCodeAt(index);
|
|
85
|
-
return new TextDecoder().decode(bytes);
|
|
86
|
+
return JSON.parse(new TextDecoder().decode(bytes)) as unknown;
|
|
86
87
|
} catch {
|
|
87
|
-
return
|
|
88
|
+
return undefined;
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
|
|
@@ -150,30 +151,13 @@ export function decodeAkanHeadSnapshot(value: string | null | undefined): AkanHe
|
|
|
150
151
|
if (new TextEncoder().encode(value).byteLength > AKAN_RSC_HEAD_SNAPSHOT_MAX_HEADER_BYTES) {
|
|
151
152
|
return { status: "too-large" };
|
|
152
153
|
}
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
try {
|
|
156
|
-
const parsed = JSON.parse(json) as unknown;
|
|
157
|
-
return isAkanHeadSnapshotV1(parsed) ? { status: "ok", snapshot: parsed } : { status: "invalid" };
|
|
158
|
-
} catch {
|
|
159
|
-
return { status: "invalid" };
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
export function readAkanHeadSnapshotResponseHeader(headers: Headers): AkanHeadSnapshotDecodeResult {
|
|
164
|
-
return decodeAkanHeadSnapshot(headers.get(AKAN_RSC_PATCH_HEAD_SNAPSHOT_HEADER));
|
|
154
|
+
const parsed = decodeBase64UrlJson(value);
|
|
155
|
+
return isAkanHeadSnapshotV1(parsed) ? { status: "ok", snapshot: parsed } : { status: "invalid" };
|
|
165
156
|
}
|
|
166
157
|
|
|
167
158
|
export function decodeAkanRouterState(value: string | null | undefined): AkanRouterStateV1 | null {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
if (!json) return null;
|
|
171
|
-
try {
|
|
172
|
-
const parsed = JSON.parse(json) as unknown;
|
|
173
|
-
return isAkanRouterStateV1(parsed) ? parsed : null;
|
|
174
|
-
} catch {
|
|
175
|
-
return null;
|
|
176
|
-
}
|
|
159
|
+
const parsed = decodeBase64UrlJson(value);
|
|
160
|
+
return isAkanRouterStateV1(parsed) ? parsed : null;
|
|
177
161
|
}
|
|
178
162
|
|
|
179
163
|
export function appendAkanRouterStateRequestHeaders(
|
|
@@ -195,15 +179,8 @@ export function encodeAkanRscPatchSegmentPath(segmentPath: string[]): string {
|
|
|
195
179
|
}
|
|
196
180
|
|
|
197
181
|
export function decodeAkanRscPatchSegmentPath(value: string | null | undefined): string[] | null {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
if (!json) return null;
|
|
201
|
-
try {
|
|
202
|
-
const parsed = JSON.parse(json) as unknown;
|
|
203
|
-
return Array.isArray(parsed) && parsed.every((segment) => typeof segment === "string") ? parsed : null;
|
|
204
|
-
} catch {
|
|
205
|
-
return null;
|
|
206
|
-
}
|
|
182
|
+
const parsed = decodeBase64UrlJson(value);
|
|
183
|
+
return Array.isArray(parsed) && parsed.every((segment) => typeof segment === "string") ? parsed : null;
|
|
207
184
|
}
|
|
208
185
|
|
|
209
186
|
export function readAkanRscPatchMetadataResponseHeaders(headers: Headers): AkanRscPatchMetadata | null {
|
|
@@ -214,7 +191,7 @@ export function readAkanRscPatchMetadataResponseHeaders(headers: Headers): AkanR
|
|
|
214
191
|
const segmentPath = decodeAkanRscPatchSegmentPath(headers.get(AKAN_RSC_PATCH_SEGMENT_PATH_HEADER));
|
|
215
192
|
if (!Number.isInteger(patchStartIndex) || patchStartIndex < 0 || !patchStartSegmentKey || !segmentPath) return null;
|
|
216
193
|
if (segmentPath[patchStartIndex] !== patchStartSegmentKey) return null;
|
|
217
|
-
const headSnapshotResult =
|
|
194
|
+
const headSnapshotResult = decodeAkanHeadSnapshot(headers.get(AKAN_RSC_PATCH_HEAD_SNAPSHOT_HEADER));
|
|
218
195
|
return {
|
|
219
196
|
patchStartIndex,
|
|
220
197
|
patchStartSegmentKey,
|
|
@@ -377,3 +354,7 @@ export function countCommonRouteSegments(
|
|
|
377
354
|
}
|
|
378
355
|
return length;
|
|
379
356
|
}
|
|
357
|
+
|
|
358
|
+
export function isAkanRscPartialCommitEnabled(): boolean {
|
|
359
|
+
return process.env.AKAN_PUBLIC_RSC_PARTIAL_COMMIT === "1";
|
|
360
|
+
}
|