akanjs 3.0.0-beta.2 → 3.0.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base/base.ts +6 -11
- package/base/baseEnv.ts +17 -11
- package/base/databaseModes.ts +75 -0
- package/base/index.ts +1 -0
- package/base/primitiveRegistry.ts +38 -47
- package/base/symbols.ts +1 -1
- package/base/types.ts +1 -1
- package/base/utils.ts +3 -6
- package/capacitor.base.config.ts +2 -3
- package/client/capacitor.ts +18 -63
- package/client/cn.ts +3 -13
- package/client/cookie.ts +6 -15
- package/client/createFont.ts +0 -2
- package/client/csrTypes.ts +6 -59
- package/client/decorators.ts +1 -1
- package/client/device.ts +52 -44
- package/client/frameConfig.ts +15 -26
- package/client/index.ts +0 -1
- package/client/makePageProto.tsx +3 -4
- package/client/route/RootLayoutDefinition.ts +0 -6
- package/client/route/RouteDefinition.ts +5 -30
- package/client/route/resolveRouteModule.ts +1 -5
- package/client/router.ts +35 -39
- package/client/rscNavigation.ts +4 -5
- package/client/sharedContext.ts +2 -19
- package/client/storage.ts +29 -38
- package/client/translator.ts +5 -6
- package/client/types.ts +0 -3
- package/common/CodeAgentClient.ts +91 -0
- package/common/CodeTranscript.ts +325 -0
- package/common/Logger.ts +9 -34
- package/common/TrustedProxy.ts +6 -34
- package/common/applyMixins.ts +13 -2
- package/common/authToken.ts +0 -11
- package/common/capitalize.ts +3 -4
- package/common/clamp.ts +0 -1
- package/common/clientAddress.ts +1 -15
- package/common/codeAgentProfile.ts +181 -0
- package/common/codeAgentWire.ts +305 -0
- package/{server/routing → common}/eventStream.ts +1 -6
- package/common/fileUpload.ts +1 -12
- package/common/formatNumber.ts +3 -12
- package/common/index.ts +104 -19
- package/common/interpolateTranslation.ts +1 -6
- package/common/isEmail.ts +0 -1
- package/common/isRecord.ts +2 -0
- package/common/isThenable.ts +1 -8
- package/common/isValidDate.ts +3 -5
- package/common/logContext.ts +1 -1
- package/{ui/Agent → common}/markdownBlocks.ts +0 -3
- package/common/markdownSpans.ts +47 -0
- package/{ui/Agent → common}/markdownTable.ts +1 -5
- package/common/mcpExposure.ts +4 -27
- package/common/objectPath.ts +67 -0
- package/common/objectify.ts +52 -0
- package/common/{isPhoneNumber.ts → phone.ts} +7 -1
- package/common/randomPick.ts +13 -0
- package/common/requestOrigin.ts +0 -17
- package/common/restClient.ts +8 -13
- package/common/round.ts +4 -0
- package/common/routeConvention.ts +21 -14
- package/common/sleep.ts +1 -8
- package/common/subRoute.ts +4 -7
- package/common/toError.ts +1 -0
- package/common/tunnelWire.ts +263 -0
- package/common/types.ts +6 -7
- package/common/{splitVersion.ts → version.ts} +3 -6
- package/common/{websocketBinaryFrame.ts → websocketContract.ts} +43 -9
- package/constant/cascadePaths.ts +6 -9
- package/constant/constantRegistry.ts +21 -57
- package/constant/crystalize.ts +2 -12
- package/constant/dateSlot.ts +0 -15
- package/constant/fieldInfo.ts +30 -109
- package/constant/fieldQueryMeta.ts +2 -10
- package/constant/getDefault.ts +16 -8
- package/constant/hydrationPlan.ts +1 -9
- package/constant/index.ts +0 -1
- package/constant/labelOf.ts +1 -6
- package/constant/mask.ts +36 -38
- package/constant/purify.ts +6 -14
- package/constant/serialize.ts +82 -5
- package/constant/textFieldPaths.ts +2 -3
- package/constant/types.ts +2 -6
- package/constant/via.ts +20 -60
- package/dictionary/DictionaryLookup.ts +1 -7
- package/dictionary/agent.dictionary.ts +43 -11
- package/dictionary/base.dictionary.ts +11 -0
- package/dictionary/dictInfo.ts +145 -626
- package/dictionary/dictShape.ts +54 -0
- package/dictionary/dictionary.ts +1 -2
- package/dictionary/dictionaryRegistry.ts +7 -28
- package/dictionary/locale.ts +24 -116
- package/dictionary/trans.ts +18 -56
- package/document/dataLoader.ts +77 -78
- package/document/database.ts +52 -56
- package/document/documentQuery.ts +32 -32
- package/document/documentSchema.ts +21 -26
- package/document/filterMeta.ts +11 -31
- package/document/index.ts +0 -1
- package/document/into.ts +8 -18
- package/document/loaderInfo.ts +28 -7
- package/document/noDocumentError.ts +2 -7
- package/document/queryEvaluator.ts +21 -43
- package/document/types.ts +0 -1
- package/fetch/client/fetchClient.ts +66 -105
- package/fetch/client/fetchHandle.ts +4 -12
- package/fetch/client/httpClient.ts +35 -68
- package/fetch/client/remoteError.ts +2 -8
- package/fetch/client/sliceInitHandle.ts +3 -6
- package/fetch/client/sliceQueryArgs.ts +11 -0
- package/fetch/client/wsClient.ts +75 -64
- package/fetch/fetchType/appliedReturn.type.ts +5 -24
- package/fetch/fetchType/buildFetch.type.ts +28 -1
- package/fetch/fetchType/index.ts +0 -1
- package/fetch/requestStorage.ts +7 -28
- package/fetch/types.ts +0 -1
- package/index.ts +31 -64
- package/package.json +19 -5
- package/server/akanApp.ts +138 -289
- package/server/akanAppHeaders.ts +2 -3
- package/server/akanOption.ts +25 -27
- package/server/akanServer.ts +98 -219
- package/server/animatedImage.ts +2 -11
- package/server/artifact/builderRpc.ts +24 -64
- package/server/artifact/index.ts +0 -1
- package/server/artifact/ipcTypes.ts +27 -30
- package/server/artifact/routeClientCache.ts +18 -37
- package/server/artifact/routeSeedIndexStore.ts +2 -35
- package/server/artifact/routesManifestStore.ts +13 -38
- package/server/binaryPubsub.ts +0 -9
- package/server/cachePolicy.ts +10 -44
- package/server/console.ts +12 -16
- package/server/consoleSession.ts +55 -12
- package/server/contentEncoding.ts +42 -27
- package/server/decorators.ts +4 -70
- package/server/devtools/constantSerializer.ts +2 -14
- package/server/devtools/depsSerializer.ts +14 -46
- package/server/devtools/devtoolsJson.ts +6 -18
- package/server/devtools/devtoolsRouter.ts +2 -12
- package/server/devtools/signalSerializer.ts +5 -44
- package/server/devtools/types.ts +0 -12
- package/server/di/diLifecycle.ts +141 -221
- package/server/di/predefinedAdaptor.ts +11 -5
- package/server/di/resolveHierarchy.ts +114 -5
- package/server/di/utils.ts +13 -29
- package/server/head.tsx +53 -0
- package/server/hmr/clientScript.ts +2 -8
- package/server/hmr/devHmrController.ts +28 -32
- package/server/hmr/wsHub.ts +9 -7
- package/server/imageOptimizer.ts +5 -26
- package/server/index.ts +1 -1
- package/server/lifecycle/portInUse.ts +1 -4
- package/server/lifecycle/runtimeDir.ts +0 -4
- package/server/lifecycle/shutdownManager.ts +4 -29
- package/server/logging/childOutputReader.ts +0 -12
- package/server/logging/hubFileSink.ts +10 -6
- package/server/logging/logControlSocket.ts +13 -7
- package/server/logging/logForwarder.ts +19 -22
- package/server/logging/logHub.ts +0 -0
- package/server/logging/logQuery.ts +4 -7
- package/server/logging/logStdoutWriter.ts +1 -11
- package/server/logging/logStreamRoute.ts +4 -21
- package/server/logging/logTailClient.ts +1 -8
- package/server/logging/rotatingLogWriter.ts +4 -6
- package/server/mcp/McpAuth.ts +5 -79
- package/server/mcp/McpDispatcher.ts +13 -90
- package/server/mcp/McpEventStream.ts +2 -12
- package/server/mcp/McpExecutionContext.ts +1 -42
- package/server/mcp/McpRateLimiter.ts +61 -30
- package/server/mcp/McpRouter.ts +49 -208
- package/server/mcp/PagePromptComposer.ts +7 -29
- package/server/memoryLimit.ts +1 -13
- package/server/oauth/OAuthAuthorize.ts +3 -7
- package/server/oauth/OAuthClientIdMetadata.ts +2 -27
- package/server/oauth/OAuthErrors.ts +0 -13
- package/server/oauth/OAuthMetadata.ts +1 -7
- package/server/oauth/OAuthPkce.ts +0 -2
- package/server/oauth/OAuthRedirect.ts +0 -9
- package/server/oauth/OAuthRegistration.ts +0 -2
- package/server/oauth/OAuthRevocation.ts +1 -11
- package/server/oauth/OAuthToken.ts +3 -14
- package/server/oauth/oauthTypes.ts +1 -2
- package/server/ops/ageEncryption.ts +317 -0
- package/server/ops/appInfo.ts +92 -0
- package/server/ops/opsCommand.ts +116 -0
- package/server/ops/opsRoute.ts +151 -0
- package/server/ops/opsToken.ts +93 -0
- package/server/ops/snapshotJobs.ts +133 -0
- package/server/ops/snapshotRestore.ts +118 -0
- package/server/ops/snapshotTypes.ts +52 -0
- package/server/ops/sqliteFiles.ts +20 -0
- package/server/ops/sqliteSnapshot.ts +149 -0
- package/server/processMetricsCollector.ts +12 -14
- package/server/proxy/hostBasePathWebProxy.ts +20 -13
- package/server/proxy/index.ts +2 -3
- package/server/proxy/localeWebProxy.ts +3 -17
- package/server/proxy/types.ts +14 -0
- package/server/proxy/webProxyRunner.ts +13 -1
- package/server/resolver/CascadeRunner.ts +7 -23
- package/server/resolver/database.resolver.ts +57 -123
- package/server/resolver/service.resolver.ts +9 -161
- package/server/resolver/signal.resolver.ts +73 -98
- package/server/routeElementComposer.tsx +23 -52
- package/server/routeState.ts +15 -34
- package/server/routeTreeBuilder.ts +24 -83
- package/server/routing/apiRouter.ts +17 -49
- package/server/routing/appWsData.ts +4 -28
- package/server/routing/soloAppRoutes.ts +5 -5
- package/server/rscClient.tsx +31 -37
- package/server/rscClientFetch.ts +7 -3
- package/server/rscClientPatch.ts +4 -25
- package/server/rscHttp.ts +1 -1
- package/server/rscNavigationState.ts +10 -25
- package/server/rscPagePrompts.ts +4 -24
- package/server/rscSegmentOutlet.tsx +1 -5
- package/server/rscWorker.tsx +146 -285
- package/server/rscWorkerCache.ts +74 -8
- package/server/rscWorkerHost.ts +45 -192
- package/server/semaphore.ts +1 -1
- package/server/sitemap.ts +1 -3
- package/server/ssrFromRscRenderer.tsx +31 -124
- package/server/ssrTypes.ts +3 -29
- package/server/staticPath.ts +0 -16
- package/server/systemPageDocument.tsx +65 -2
- package/server/systemPages.tsx +4 -2
- package/server/tunnel/TunnelAgent.ts +237 -0
- package/server/tunnel/TunnelDataSocket.ts +146 -0
- package/server/tunnel/TunnelHttpStream.ts +86 -0
- package/server/tunnel/TunnelTcpStream.ts +96 -0
- package/server/tunnel/TunnelWebsocketStream.ts +110 -0
- package/server/tunnel/index.ts +6 -0
- package/server/tunnel/tunnelStream.ts +32 -0
- package/server/types.tsx +2 -9
- package/server/webRouter.ts +88 -306
- package/service/agent.service.ts +66 -35
- package/service/injectInfo.ts +106 -75
- package/service/ipcTypes.ts +4 -1
- package/service/liveSyncHub.ts +4 -34
- package/service/predefinedAdaptor/anthropicLlm.ts +65 -75
- package/service/predefinedAdaptor/cache.adaptor.ts +257 -75
- package/service/predefinedAdaptor/database.adaptor.ts +366 -108
- package/service/predefinedAdaptor/documentTransfer.ts +89 -0
- package/service/predefinedAdaptor/index.ts +2 -1
- package/service/predefinedAdaptor/insightQuery.ts +89 -79
- package/service/predefinedAdaptor/llm.adaptor.ts +64 -54
- package/service/predefinedAdaptor/llmOverflow.ts +63 -0
- package/service/predefinedAdaptor/openaiDialect.ts +56 -64
- package/service/predefinedAdaptor/openaiLlm.ts +24 -27
- package/service/predefinedAdaptor/queue.adaptor.ts +41 -22
- package/service/predefinedAdaptor/schedule.adaptor.ts +69 -9
- package/service/predefinedAdaptor/searchIndex.ts +76 -325
- package/service/predefinedAdaptor/solidCache.adaptor.ts +135 -12
- package/service/predefinedAdaptor/solidPubsub.adaptor.ts +28 -16
- package/service/predefinedAdaptor/solidQueue.adaptor.ts +61 -10
- package/service/predefinedAdaptor/solidSqlite.ts +10 -16
- package/service/predefinedAdaptor/sql/PendingStoreEnsures.ts +1 -0
- package/service/predefinedAdaptor/sql/PostgresInsightSession.ts +113 -0
- package/service/predefinedAdaptor/sql/QueryCompiler.ts +50 -30
- package/service/predefinedAdaptor/sql/SqlDocumentStore.ts +290 -138
- package/service/predefinedAdaptor/sql/SqliteInsightSession.ts +85 -0
- package/service/predefinedAdaptor/sql/UpdateCompiler.ts +1 -7
- package/service/predefinedAdaptor/sql/dialect/postgres.ts +138 -53
- package/service/predefinedAdaptor/sql/dialect/sqlite.ts +18 -15
- package/service/predefinedAdaptor/sql/driver/bunSqlite.ts +31 -4
- package/service/predefinedAdaptor/sql/driver/libsql.ts +20 -12
- package/service/predefinedAdaptor/sql/driver/postgres.ts +13 -7
- package/service/predefinedAdaptor/sql/search/fts5.ts +249 -0
- package/service/predefinedAdaptor/sql/search/mirror.ts +76 -0
- package/service/predefinedAdaptor/sql/search/postgres.ts +453 -0
- package/service/predefinedAdaptor/sql/search/types.ts +50 -0
- package/service/predefinedAdaptor/sql/types.ts +76 -17
- package/service/predefinedAdaptor/sql/values.ts +40 -2
- package/service/predefinedAdaptor/sqlitePath.ts +12 -0
- package/service/predefinedAdaptor/sseData.ts +23 -0
- package/service/predefinedAdaptor/storage.adaptor.ts +19 -7
- package/service/predefinedAdaptor/websocket.adaptor.ts +154 -184
- package/service/serve.ts +1 -2
- package/service/serviceModule.ts +52 -70
- package/service/toolNames.ts +5 -22
- package/service/types.ts +3 -9
- package/signal/CrossSiteGuard.ts +5 -40
- package/signal/SignalFailure.ts +2 -15
- package/signal/agent/AgentCatalogue.ts +9 -55
- package/signal/agent.signal.ts +9 -6
- package/signal/agentMeter.ts +45 -0
- package/signal/agentTurnStream.ts +48 -46
- package/signal/endpoint.ts +12 -2
- package/signal/endpointCache.ts +59 -0
- package/signal/endpointInfo.ts +13 -27
- package/signal/exception.ts +3 -34
- package/signal/guard.ts +4 -21
- package/signal/guards.ts +2 -10
- package/signal/index.ts +1 -0
- package/signal/internal.ts +3 -7
- package/signal/internalArg.ts +10 -13
- package/signal/internalInfo.ts +1 -1
- package/signal/mcp/McpDocument.ts +21 -90
- package/signal/mcp/McpProgress.ts +6 -19
- package/signal/mcp/McpUriTemplate.ts +1 -27
- package/signal/mcp/Msg.ts +13 -122
- package/signal/mcp/mcpProtocol.ts +3 -26
- package/signal/mcp/pagePrompt.ts +3 -9
- package/signal/middleware.ts +15 -65
- package/signal/openapi/openapi.ts +0 -4
- package/signal/schema/JsonSchemaBuilder.ts +32 -46
- package/signal/serializer/fetch.serializer.ts +37 -43
- package/signal/serverSignal.ts +6 -8
- package/signal/signalContext.ts +70 -161
- package/signal/signalRegistry.ts +11 -17
- package/signal/slice.ts +6 -12
- package/signal/sliceInfo.ts +5 -30
- package/signal/trace.ts +11 -84
- package/signal/types.ts +27 -57
- package/store/SliceRequest.ts +1 -11
- package/store/action.ts +153 -395
- package/store/actionTag.ts +1 -10
- package/store/agent/AgentBridge.ts +3 -25
- package/store/agent/AgentContext.ts +2 -9
- package/store/agent/AgentCursor.ts +160 -0
- package/store/agent/AgentPrompts.ts +0 -15
- package/store/agent/AgentVisual.ts +152 -0
- package/store/agent/ScreenFlash.ts +67 -0
- package/store/agent/ScreenReader.ts +3 -52
- package/store/agent/ScreenSettle.ts +1 -13
- package/store/agent/ScreenTarget.ts +15 -32
- package/store/agent/StoreCatalogue.ts +12 -24
- package/store/agent/StoreSurfaceSource.ts +35 -65
- package/store/agent/index.ts +4 -4
- package/store/agentic/AgentValue.ts +9 -26
- package/store/agentic/StExposeBuilder.ts +3 -12
- package/store/agentic/StExposeDraft.ts +0 -6
- package/store/agentic/StStateBuilder.ts +3 -11
- package/store/agentic/StStateDraft.ts +0 -5
- package/store/agentic/StToolBuilder.ts +48 -41
- package/store/agentic/StToolDraft.ts +0 -7
- package/store/agentic/attachAgentic.ts +2 -10
- package/store/agentic/formFields.ts +8 -42
- package/store/agentic/index.ts +1 -1
- package/store/agentic/useAgentReference.ts +31 -0
- package/store/agentic/useFieldTool.ts +176 -58
- package/store/agentic/useFormTools.ts +4 -21
- package/store/agentic/useRelationFieldTool.ts +2 -15
- package/store/databaseStateNames.ts +0 -9
- package/store/draftStore.ts +4 -54
- package/store/formSetterNames.ts +2 -19
- package/store/hooks.ts +1 -1
- package/store/liveInsert.ts +1 -30
- package/store/sliceKeys.ts +37 -0
- package/store/sliceRole.ts +1 -10
- package/store/state.ts +4 -50
- package/store/stateBuilder.ts +1 -23
- package/store/storeInstance.ts +21 -114
- package/store/storeRegistry.ts +1 -8
- package/store/types.ts +1 -1
- package/test/conformance.ts +299 -0
- package/test/index.ts +2 -2
- package/test/sampleOf.ts +52 -28
- package/test/signalTestRuntime.ts +6 -10
- package/test/testServer.ts +66 -31
- package/types/base/base.d.ts +2 -3
- package/types/base/baseEnv.d.ts +7 -10
- package/types/base/databaseModes.d.ts +28 -0
- package/types/base/index.d.ts +1 -0
- package/types/base/primitiveRegistry.d.ts +23 -10
- package/types/base/symbols.d.ts +1 -1
- package/types/capacitor.base.config.d.ts +1 -1
- package/types/client/cn.d.ts +3 -13
- package/types/client/cookie.d.ts +3 -12
- package/types/client/csrTypes.d.ts +6 -57
- package/types/client/decorators.d.ts +1 -1
- package/types/client/device.d.ts +2 -1
- package/types/client/index.d.ts +0 -1
- package/types/client/route/RootLayoutDefinition.d.ts +0 -1
- package/types/client/route/RouteDefinition.d.ts +4 -16
- package/types/client/route/resolveRouteModule.d.ts +1 -5
- package/types/client/router.d.ts +8 -4
- package/types/client/rscNavigation.d.ts +4 -5
- package/types/client/sharedContext.d.ts +2 -19
- package/types/client/storage.d.ts +1 -1
- package/types/client/types.d.ts +0 -3
- package/types/common/CodeAgentClient.d.ts +20 -0
- package/types/common/CodeTranscript.d.ts +72 -0
- package/types/common/Logger.d.ts +4 -20
- package/types/common/TrustedProxy.d.ts +2 -28
- package/types/common/applyMixins.d.ts +3 -0
- package/types/common/authToken.d.ts +0 -11
- package/types/common/capitalize.d.ts +1 -1
- package/types/common/clamp.d.ts +0 -1
- package/types/common/clientAddress.d.ts +1 -15
- package/types/common/codeAgentProfile.d.ts +115 -0
- package/types/common/codeAgentWire.d.ts +279 -0
- package/types/{server/routing → common}/eventStream.d.ts +0 -5
- package/types/common/fileUpload.d.ts +6 -11
- package/types/common/index.d.ts +20 -19
- package/types/common/interpolateTranslation.d.ts +1 -6
- package/types/common/isEmail.d.ts +0 -1
- package/types/common/isRecord.d.ts +1 -0
- package/types/common/isThenable.d.ts +0 -8
- package/types/common/logContext.d.ts +1 -1
- package/types/{ui/Agent → common}/markdownBlocks.d.ts +0 -3
- package/types/common/markdownSpans.d.ts +30 -0
- package/types/{ui/Agent → common}/markdownTable.d.ts +0 -2
- package/types/common/mcpExposure.d.ts +3 -23
- package/types/common/objectPath.d.ts +10 -0
- package/types/common/objectify.d.ts +7 -0
- package/types/common/phone.d.ts +2 -0
- package/types/common/randomPick.d.ts +1 -0
- package/types/common/requestOrigin.d.ts +0 -17
- package/types/common/restClient.d.ts +0 -7
- package/types/common/round.d.ts +1 -0
- package/types/common/routeConvention.d.ts +2 -5
- package/types/common/sleep.d.ts +0 -1
- package/types/common/subRoute.d.ts +4 -6
- package/types/common/toError.d.ts +1 -0
- package/types/common/tunnelWire.d.ts +161 -0
- package/types/common/types.d.ts +7 -7
- package/types/common/version.d.ts +6 -0
- package/types/common/websocketContract.d.ts +41 -0
- package/types/constant/cascadePaths.d.ts +2 -5
- package/types/constant/constantRegistry.d.ts +4 -4
- package/types/constant/dateSlot.d.ts +0 -5
- package/types/constant/fieldInfo.d.ts +2 -21
- package/types/constant/fieldQueryMeta.d.ts +2 -10
- package/types/constant/getDefault.d.ts +5 -7
- package/types/constant/hydrationPlan.d.ts +0 -8
- package/types/constant/index.d.ts +0 -1
- package/types/constant/labelOf.d.ts +1 -6
- package/types/constant/mask.d.ts +11 -36
- package/types/constant/serialize.d.ts +10 -2
- package/types/constant/types.d.ts +2 -6
- package/types/constant/via.d.ts +0 -1
- package/types/dictionary/DictionaryLookup.d.ts +1 -7
- package/types/dictionary/agent.dictionary.d.ts +2 -1
- package/types/dictionary/base.dictionary.d.ts +1 -1
- package/types/dictionary/dictInfo.d.ts +25 -92
- package/types/dictionary/dictShape.d.ts +26 -0
- package/types/dictionary/dictionary.d.ts +9 -9
- package/types/dictionary/dictionaryRegistry.d.ts +1 -15
- package/types/dictionary/locale.d.ts +9 -28
- package/types/dictionary/trans.d.ts +5 -14
- package/types/document/dataLoader.d.ts +2 -2
- package/types/document/database.d.ts +21 -14
- package/types/document/documentQuery.d.ts +6 -1
- package/types/document/documentSchema.d.ts +3 -7
- package/types/document/filterMeta.d.ts +3 -8
- package/types/document/index.d.ts +0 -1
- package/types/document/into.d.ts +3 -2
- package/types/document/loaderInfo.d.ts +9 -4
- package/types/document/noDocumentError.d.ts +2 -7
- package/types/document/queryEvaluator.d.ts +7 -24
- package/types/document/types.d.ts +0 -1
- package/types/fetch/client/fetchClient.d.ts +6 -9
- package/types/fetch/client/fetchHandle.d.ts +3 -11
- package/types/fetch/client/httpClient.d.ts +5 -1
- package/types/fetch/client/remoteError.d.ts +2 -8
- package/types/fetch/client/sliceInitHandle.d.ts +2 -5
- package/types/fetch/client/sliceQueryArgs.d.ts +3 -0
- package/types/fetch/client/wsClient.d.ts +10 -15
- package/types/fetch/fetchType/appliedReturn.type.d.ts +5 -23
- package/types/fetch/fetchType/buildFetch.type.d.ts +15 -1
- package/types/fetch/fetchType/index.d.ts +0 -1
- package/types/fetch/requestStorage.d.ts +3 -16
- package/types/fetch/types.d.ts +0 -1
- package/types/index.d.ts +30 -64
- package/types/server/akanApp.d.ts +5 -28
- package/types/server/akanAppHeaders.d.ts +0 -1
- package/types/server/akanOption.d.ts +12 -24
- package/types/server/akanServer.d.ts +16 -56
- package/types/server/animatedImage.d.ts +0 -6
- package/types/server/artifact/builderRpc.d.ts +7 -30
- package/types/server/artifact/index.d.ts +0 -1
- package/types/server/artifact/ipcTypes.d.ts +22 -29
- package/types/server/artifact/routeClientCache.d.ts +3 -11
- package/types/server/artifact/routeSeedIndexStore.d.ts +0 -16
- package/types/server/artifact/routesManifestStore.d.ts +1 -1
- package/types/server/binaryPubsub.d.ts +0 -8
- package/types/server/cachePolicy.d.ts +2 -21
- package/types/server/console.d.ts +3 -6
- package/types/server/consoleSession.d.ts +2 -2
- package/types/server/contentEncoding.d.ts +6 -14
- package/types/server/decorators.d.ts +0 -12
- package/types/server/devtools/constantSerializer.d.ts +1 -6
- package/types/server/devtools/depsSerializer.d.ts +1 -7
- package/types/server/devtools/devtoolsJson.d.ts +1 -7
- package/types/server/devtools/devtoolsRouter.d.ts +2 -11
- package/types/server/devtools/signalSerializer.d.ts +1 -9
- package/types/server/devtools/types.d.ts +0 -11
- package/types/server/di/diLifecycle.d.ts +0 -36
- package/types/server/di/predefinedAdaptor.d.ts +3 -2
- package/types/server/di/resolveHierarchy.d.ts +22 -5
- package/types/server/di/utils.d.ts +4 -17
- package/types/server/head.d.ts +9 -0
- package/types/server/hmr/devHmrController.d.ts +0 -2
- package/types/server/hmr/wsHub.d.ts +6 -1
- package/types/server/index.d.ts +1 -1
- package/types/server/lifecycle/portInUse.d.ts +1 -4
- package/types/server/lifecycle/runtimeDir.d.ts +0 -4
- package/types/server/lifecycle/shutdownManager.d.ts +0 -9
- package/types/server/logging/childOutputReader.d.ts +0 -12
- package/types/server/logging/hubFileSink.d.ts +1 -5
- package/types/server/logging/logControlSocket.d.ts +2 -7
- package/types/server/logging/logForwarder.d.ts +3 -15
- package/types/server/logging/logHub.d.ts +1 -15
- package/types/server/logging/logQuery.d.ts +3 -6
- package/types/server/logging/logStdoutWriter.d.ts +0 -6
- package/types/server/logging/logStreamRoute.d.ts +0 -9
- package/types/server/logging/logTailClient.d.ts +0 -5
- package/types/server/mcp/McpAuth.d.ts +3 -71
- package/types/server/mcp/McpDispatcher.d.ts +0 -23
- package/types/server/mcp/McpEventStream.d.ts +1 -12
- package/types/server/mcp/McpExecutionContext.d.ts +0 -33
- package/types/server/mcp/McpRateLimiter.d.ts +10 -13
- package/types/server/mcp/McpRouter.d.ts +1 -47
- package/types/server/mcp/PagePromptComposer.d.ts +1 -13
- package/types/server/memoryLimit.d.ts +1 -13
- package/types/server/oauth/OAuthAuthorize.d.ts +1 -6
- package/types/server/oauth/OAuthClientIdMetadata.d.ts +2 -26
- package/types/server/oauth/OAuthErrors.d.ts +0 -13
- package/types/server/oauth/OAuthMetadata.d.ts +1 -7
- package/types/server/oauth/OAuthPkce.d.ts +0 -1
- package/types/server/oauth/OAuthRedirect.d.ts +0 -9
- package/types/server/oauth/OAuthRegistration.d.ts +0 -1
- package/types/server/oauth/OAuthRevocation.d.ts +1 -11
- package/types/server/oauth/OAuthToken.d.ts +1 -13
- package/types/server/oauth/oauthTypes.d.ts +1 -2
- package/types/server/ops/ageEncryption.d.ts +19 -0
- package/types/server/ops/appInfo.d.ts +36 -0
- package/types/server/ops/opsCommand.d.ts +5 -0
- package/types/server/ops/opsRoute.d.ts +24 -0
- package/types/server/ops/opsToken.d.ts +26 -0
- package/types/server/ops/snapshotJobs.d.ts +24 -0
- package/types/server/ops/snapshotRestore.d.ts +24 -0
- package/types/server/ops/snapshotTypes.d.ts +45 -0
- package/types/server/ops/sqliteFiles.d.ts +5 -0
- package/types/server/ops/sqliteSnapshot.d.ts +32 -0
- package/types/server/processMetricsCollector.d.ts +3 -1
- package/types/server/proxy/hostBasePathWebProxy.d.ts +7 -1
- package/types/server/proxy/index.d.ts +2 -3
- package/types/server/proxy/localeWebProxy.d.ts +1 -1
- package/types/server/proxy/types.d.ts +5 -0
- package/types/server/proxy/webProxyRunner.d.ts +1 -0
- package/types/server/resolver/CascadeRunner.d.ts +0 -4
- package/types/server/resolver/database.resolver.d.ts +1 -1
- package/types/server/resolver/service.resolver.d.ts +2 -2
- package/types/server/resolver/signal.resolver.d.ts +1 -15
- package/types/server/routeElementComposer.d.ts +2 -8
- package/types/server/routeState.d.ts +1 -1
- package/types/server/routing/apiRouter.d.ts +2 -20
- package/types/server/routing/appWsData.d.ts +0 -26
- package/types/server/routing/soloAppRoutes.d.ts +2 -6
- package/types/server/rscClient.d.ts +0 -9
- package/types/server/rscClientFetch.d.ts +6 -6
- package/types/server/rscClientPatch.d.ts +1 -1
- package/types/server/rscHttp.d.ts +1 -0
- package/types/server/rscNavigationState.d.ts +3 -2
- package/types/server/rscPagePrompts.d.ts +0 -9
- package/types/server/rscWorkerCache.d.ts +41 -3
- package/types/server/rscWorkerHost.d.ts +5 -61
- package/types/server/ssrFromRscRenderer.d.ts +0 -12
- package/types/server/ssrTypes.d.ts +2 -29
- package/types/server/staticPath.d.ts +0 -16
- package/types/server/systemPageDocument.d.ts +8 -0
- package/types/server/systemPages.d.ts +2 -3
- package/types/server/tunnel/TunnelAgent.d.ts +29 -0
- package/types/server/tunnel/TunnelDataSocket.d.ts +22 -0
- package/types/server/tunnel/TunnelHttpStream.d.ts +10 -0
- package/types/server/tunnel/TunnelTcpStream.d.ts +11 -0
- package/types/server/tunnel/TunnelWebsocketStream.d.ts +10 -0
- package/types/server/tunnel/index.d.ts +6 -0
- package/types/server/tunnel/tunnelStream.d.ts +19 -0
- package/types/server/tunnel.d.ts +1 -0
- package/types/server/types.d.ts +2 -9
- package/types/server/webRouter.d.ts +2 -19
- package/types/service/agent.service.d.ts +16 -29
- package/types/service/injectInfo.d.ts +26 -15
- package/types/service/ipcTypes.d.ts +6 -0
- package/types/service/liveSyncHub.d.ts +4 -22
- package/types/service/predefinedAdaptor/anthropicLlm.d.ts +20 -29
- package/types/service/predefinedAdaptor/cache.adaptor.d.ts +42 -12
- package/types/service/predefinedAdaptor/database.adaptor.d.ts +20 -16
- package/types/service/predefinedAdaptor/documentTransfer.d.ts +15 -0
- package/types/service/predefinedAdaptor/index.d.ts +2 -1
- package/types/service/predefinedAdaptor/insightQuery.d.ts +7 -30
- package/types/service/predefinedAdaptor/llm.adaptor.d.ts +54 -54
- package/types/service/predefinedAdaptor/llmOverflow.d.ts +16 -0
- package/types/service/predefinedAdaptor/openaiDialect.d.ts +19 -29
- package/types/service/predefinedAdaptor/openaiLlm.d.ts +9 -14
- package/types/service/predefinedAdaptor/queue.adaptor.d.ts +12 -7
- package/types/service/predefinedAdaptor/schedule.adaptor.d.ts +7 -2
- package/types/service/predefinedAdaptor/searchIndex.d.ts +17 -47
- package/types/service/predefinedAdaptor/solidCache.adaptor.d.ts +15 -6
- package/types/service/predefinedAdaptor/solidPubsub.adaptor.d.ts +6 -4
- package/types/service/predefinedAdaptor/solidSqlite.d.ts +2 -1
- package/types/service/predefinedAdaptor/sql/PostgresInsightSession.d.ts +20 -0
- package/types/service/predefinedAdaptor/sql/QueryCompiler.d.ts +9 -11
- package/types/service/predefinedAdaptor/sql/SqlDocumentStore.d.ts +11 -25
- package/types/service/predefinedAdaptor/sql/SqliteInsightSession.d.ts +15 -0
- package/types/service/predefinedAdaptor/sql/UpdateCompiler.d.ts +0 -4
- package/types/service/predefinedAdaptor/sql/dialect/postgres.d.ts +18 -10
- package/types/service/predefinedAdaptor/sql/dialect/sqlite.d.ts +5 -2
- package/types/service/predefinedAdaptor/sql/driver/bunSqlite.d.ts +9 -3
- package/types/service/predefinedAdaptor/sql/driver/libsql.d.ts +8 -5
- package/types/service/predefinedAdaptor/sql/driver/postgres.d.ts +4 -4
- package/types/service/predefinedAdaptor/sql/search/fts5.d.ts +28 -0
- package/types/service/predefinedAdaptor/sql/search/mirror.d.ts +20 -0
- package/types/service/predefinedAdaptor/sql/search/postgres.d.ts +53 -0
- package/types/service/predefinedAdaptor/sql/search/types.d.ts +45 -0
- package/types/service/predefinedAdaptor/sql/types.d.ts +69 -15
- package/types/service/predefinedAdaptor/sql/values.d.ts +8 -0
- package/types/service/predefinedAdaptor/sqlitePath.d.ts +1 -0
- package/types/service/predefinedAdaptor/sseData.d.ts +1 -0
- package/types/service/predefinedAdaptor/storage.adaptor.d.ts +3 -2
- package/types/service/predefinedAdaptor/websocket.adaptor.d.ts +26 -26
- package/types/service/serviceModule.d.ts +7 -7
- package/types/service/toolNames.d.ts +4 -21
- package/types/service/types.d.ts +3 -3
- package/types/signal/CrossSiteGuard.d.ts +3 -28
- package/types/signal/SignalFailure.d.ts +1 -15
- package/types/signal/agent/AgentCatalogue.d.ts +8 -54
- package/types/signal/agent.signal.d.ts +4 -1
- package/types/signal/agentMeter.d.ts +24 -0
- package/types/signal/agentTurnStream.d.ts +10 -11
- package/types/signal/endpoint.d.ts +0 -1
- package/types/signal/endpointCache.d.ts +5 -0
- package/types/signal/endpointInfo.d.ts +1 -9
- package/types/signal/exception.d.ts +1 -34
- package/types/signal/guard.d.ts +4 -15
- package/types/signal/guards.d.ts +2 -10
- package/types/signal/index.d.ts +1 -0
- package/types/signal/internal.d.ts +1 -5
- package/types/signal/internalArg.d.ts +7 -13
- package/types/signal/mcp/McpDocument.d.ts +5 -45
- package/types/signal/mcp/McpProgress.d.ts +6 -19
- package/types/signal/mcp/McpUriTemplate.d.ts +1 -19
- package/types/signal/mcp/Msg.d.ts +13 -70
- package/types/signal/mcp/mcpProtocol.d.ts +1 -26
- package/types/signal/mcp/pagePrompt.d.ts +3 -9
- package/types/signal/middleware.d.ts +0 -18
- package/types/signal/schema/JsonSchemaBuilder.d.ts +15 -43
- package/types/signal/serializer/fetch.serializer.d.ts +1 -6
- package/types/signal/serverSignal.d.ts +0 -1
- package/types/signal/signalContext.d.ts +14 -61
- package/types/signal/signalRegistry.d.ts +0 -1
- package/types/signal/slice.d.ts +3 -9
- package/types/signal/sliceInfo.d.ts +5 -30
- package/types/signal/trace.d.ts +2 -30
- package/types/signal/types.d.ts +27 -57
- package/types/store/SliceRequest.d.ts +1 -11
- package/types/store/action.d.ts +2 -6
- package/types/store/actionTag.d.ts +1 -10
- package/types/store/agent/AgentBridge.d.ts +3 -22
- package/types/store/agent/AgentContext.d.ts +1 -7
- package/types/store/agent/AgentCursor.d.ts +24 -0
- package/types/store/agent/AgentPrompts.d.ts +0 -5
- package/types/store/agent/AgentVisual.d.ts +25 -0
- package/types/store/agent/ScreenFlash.d.ts +23 -0
- package/types/store/agent/ScreenReader.d.ts +3 -26
- package/types/store/agent/ScreenSettle.d.ts +1 -12
- package/types/store/agent/ScreenTarget.d.ts +3 -23
- package/types/store/agent/StoreCatalogue.d.ts +12 -16
- package/types/store/agent/StoreSurfaceSource.d.ts +11 -23
- package/types/store/agent/index.d.ts +4 -3
- package/types/store/agentic/AgentValue.d.ts +3 -23
- package/types/store/agentic/StExposeBuilder.d.ts +2 -11
- package/types/store/agentic/StExposeDraft.d.ts +0 -6
- package/types/store/agentic/StStateBuilder.d.ts +1 -7
- package/types/store/agentic/StStateDraft.d.ts +0 -5
- package/types/store/agentic/StToolBuilder.d.ts +14 -37
- package/types/store/agentic/StToolDraft.d.ts +0 -7
- package/types/store/agentic/attachAgentic.d.ts +2 -10
- package/types/store/agentic/formFields.d.ts +5 -41
- package/types/store/agentic/index.d.ts +1 -1
- package/types/store/agentic/useAgentReference.d.ts +14 -0
- package/types/store/agentic/useFieldTool.d.ts +19 -16
- package/types/store/agentic/useFormTools.d.ts +1 -18
- package/types/store/agentic/useRelationFieldTool.d.ts +1 -14
- package/types/store/baseSt.d.ts +2 -2
- package/types/store/databaseStateNames.d.ts +0 -9
- package/types/store/draftStore.d.ts +4 -30
- package/types/store/formSetterNames.d.ts +0 -19
- package/types/store/hooks.d.ts +1 -1
- package/types/store/liveInsert.d.ts +0 -23
- package/types/store/sliceKeys.d.ts +31 -0
- package/types/store/sliceRole.d.ts +1 -10
- package/types/store/state.d.ts +2 -9
- package/types/store/stateBuilder.d.ts +0 -14
- package/types/store/storeInstance.d.ts +6 -20
- package/types/store/storeRegistry.d.ts +0 -2
- package/types/test/conformance.d.ts +73 -0
- package/types/test/index.d.ts +2 -2
- package/types/test/sampleOf.d.ts +17 -2
- package/types/test/signalTestRuntime.d.ts +1 -1
- package/types/test/testServer.d.ts +4 -3
- package/types/ui/Agent/Attach.d.ts +2 -2
- package/types/ui/Agent/Bubble.d.ts +3 -14
- package/types/ui/Agent/Chat.d.ts +31 -64
- package/types/ui/Agent/ChatCommands.d.ts +4 -14
- package/types/ui/Agent/Composer.d.ts +18 -5
- package/types/ui/Agent/Dock.d.ts +38 -10
- package/types/ui/Agent/Guide.d.ts +1 -5
- package/types/ui/Agent/History.d.ts +1 -18
- package/types/ui/Agent/Launcher.d.ts +2 -2
- package/types/ui/Agent/Markdown.d.ts +2 -6
- package/types/ui/Agent/MentionNode.d.ts +18 -0
- package/types/ui/Agent/Menu.d.ts +4 -4
- package/types/ui/Agent/Question.d.ts +1 -6
- package/types/ui/Agent/Queued.d.ts +1 -6
- package/types/ui/Agent/Refer.d.ts +9 -0
- package/types/ui/Agent/RichInput.d.ts +14 -0
- package/types/ui/Agent/Skip.d.ts +3 -15
- package/types/ui/Agent/Steps.d.ts +17 -0
- package/types/ui/Agent/ToolCard.d.ts +9 -0
- package/types/ui/Agent/Zone.d.ts +13 -30
- package/types/ui/Agent/agentSessionOf.d.ts +20 -16
- package/types/ui/Agent/attachment.d.ts +4 -38
- package/types/ui/Agent/fetchRunner.d.ts +1 -8
- package/types/ui/Agent/index.d.ts +2 -6
- package/types/ui/Agent/mentionDraft.d.ts +9 -0
- package/types/ui/Agent/tokenCount.d.ts +1 -5
- package/types/ui/Agent/useChatAttachments.d.ts +0 -5
- package/types/ui/Agent/useChatQueue.d.ts +3 -14
- package/types/ui/Agent/useChatReferences.d.ts +15 -0
- package/types/ui/Agent/useChatVoice.d.ts +0 -12
- package/types/ui/Agent/useDraftRecall.d.ts +0 -8
- package/types/ui/Agent/useKeyboardInset.d.ts +0 -7
- package/types/ui/Agent/useReferenceMenu.d.ts +35 -0
- package/types/ui/Agent/useSlashMenu.d.ts +0 -2
- package/types/ui/Agent/voice.d.ts +8 -42
- package/types/ui/Badge.d.ts +0 -1
- package/types/ui/BottomSheet.d.ts +2 -5
- package/types/ui/Button.d.ts +6 -23
- package/types/ui/ClientSide.d.ts +0 -2
- package/types/ui/Constant/schemaGraph.d.ts +0 -4
- package/types/ui/Copy.d.ts +2 -3
- package/types/ui/CsrImage.d.ts +2 -1
- package/types/ui/Data/Dashboard.d.ts +1 -4
- package/types/ui/Data/Item.d.ts +1 -1
- package/types/ui/Data/ListContainer.d.ts +1 -10
- package/types/ui/Data/Pagination.d.ts +0 -2
- package/types/ui/Data/QueryMaker.d.ts +0 -7
- package/types/ui/Data/RefPicker.d.ts +0 -7
- package/types/ui/DatePicker.d.ts +0 -11
- package/types/ui/Dialog/LegacyModal.d.ts +1 -4
- package/types/ui/Dialog/Provider.d.ts +37 -4
- package/types/ui/Dialog/index.d.ts +4 -4
- package/types/ui/Dropdown.d.ts +1 -9
- package/types/ui/Empty.d.ts +3 -10
- package/types/ui/Field/Collection.d.ts +1 -16
- package/types/ui/Field/Relation.d.ts +10 -37
- package/types/ui/Field/Text.d.ts +9 -66
- package/types/ui/Field/index.d.ts +0 -9
- package/types/ui/Field/lightRefCache.d.ts +11 -0
- package/types/ui/Field/useRelationOptions.d.ts +28 -0
- package/types/ui/Image.d.ts +8 -12
- package/types/ui/InfiniteScroll.d.ts +2 -6
- package/types/ui/Input.d.ts +8 -15
- package/types/ui/Layout/Role.d.ts +23 -0
- package/types/ui/Layout/Sider.d.ts +21 -0
- package/types/ui/Layout/TopInset.d.ts +5 -0
- package/types/ui/Layout/index.d.ts +7 -7
- package/types/ui/LegacyModal.d.ts +1 -12
- package/types/ui/Link/Action.d.ts +11 -0
- package/types/ui/Link/Anchor.d.ts +20 -0
- package/types/ui/Link/index.d.ts +4 -7
- package/types/ui/Load/Edit_Client.d.ts +1 -1
- package/types/ui/Load/Page.d.ts +3 -5
- package/types/ui/Load/Stream.d.ts +0 -12
- package/types/ui/Load/Units.d.ts +1 -1
- package/types/ui/Load/View.d.ts +2 -7
- package/types/ui/Loading/ProgressBar.d.ts +0 -4
- package/types/ui/Loading/Skeleton.d.ts +2 -0
- package/types/ui/Loading/Spin.d.ts +12 -2
- package/types/ui/Loading/index.d.ts +3 -8
- package/types/ui/Loading/index_.d.ts +3 -10
- package/types/ui/Menu.d.ts +0 -5
- package/types/ui/Modal.d.ts +0 -17
- package/types/ui/Model/AdminPanel.d.ts +1 -4
- package/types/ui/Model/DraftBar.d.ts +2 -7
- package/types/ui/Model/EditModal.d.ts +7 -22
- package/types/ui/Model/LoadStore.d.ts +18 -0
- package/types/ui/Model/Remove.d.ts +0 -2
- package/types/ui/Model/SureToRemove.d.ts +0 -3
- package/types/ui/Model/ViewEditModal.d.ts +0 -2
- package/types/ui/Model/draftScope.d.ts +0 -7
- package/types/ui/Model/index.d.ts +2 -2
- package/types/ui/Model/index_.d.ts +2 -2
- package/types/ui/Pagination.d.ts +4 -12
- package/types/ui/Popconfirm.d.ts +3 -17
- package/types/ui/Radio.d.ts +0 -4
- package/types/ui/RecentTime.d.ts +5 -9
- package/types/ui/Reference/Panel.d.ts +44 -6
- package/types/ui/Reference/Segmented.d.ts +0 -3
- package/types/ui/Reference/{style.d.ts → docUi.d.ts} +6 -2
- package/types/ui/Reference/index.d.ts +3 -7
- package/types/ui/Refresh.d.ts +1 -1
- package/types/ui/ScreenNavigator.d.ts +2 -2
- package/types/ui/Select.d.ts +4 -19
- package/types/ui/Signal/Endpoint.d.ts +43 -0
- package/types/ui/Signal/WebSocket.d.ts +23 -0
- package/types/ui/Signal/endpointEntries.d.ts +2 -4
- package/types/ui/Signal/index.d.ts +1 -3
- package/types/ui/Signal/style.d.ts +1 -2
- package/types/ui/Switch.d.ts +1 -5
- package/types/ui/System/CSR.d.ts +2 -2
- package/types/ui/System/Client.d.ts +2 -6
- package/types/ui/System/Common.d.ts +11 -22
- package/types/ui/System/Root.d.ts +1 -4
- package/types/ui/System/SSR.d.ts +2 -2
- package/types/ui/System/ThemeToggle.d.ts +1 -0
- package/types/ui/System/index.d.ts +1 -0
- package/types/ui/Tab/Provider.d.ts +24 -4
- package/types/ui/Tab/index.d.ts +3 -3
- package/types/ui/Table.d.ts +7 -23
- package/types/ui/Toast.d.ts +9 -16
- package/types/ui/ToggleSelect.d.ts +0 -5
- package/types/ui/Tooltip.d.ts +1 -2
- package/types/ui/UiOverride/{context.d.ts → UiOverride.d.ts} +24 -40
- package/types/ui/UiOverride/index.d.ts +2 -5
- package/types/ui/UiOverride/override.d.ts +2 -18
- package/types/ui/Unauthorized.d.ts +0 -6
- package/types/ui/agentAttrs.d.ts +4 -11
- package/types/ui/index.d.ts +9 -5
- package/types/ui/overlayLayer.d.ts +4 -24
- package/types/ui/overlayPosition.d.ts +0 -12
- package/types/ui/recipe/badgeRecipe.d.ts +2 -2
- package/types/ui/recipe/buttonRecipe.d.ts +2 -2
- package/types/ui/recipe/factory.d.ts +1 -21
- package/types/ui/recipe/index.d.ts +0 -14
- package/types/ui/recipe/inputRecipe.d.ts +3 -3
- package/types/ui/sliceNamesOf.d.ts +78 -0
- package/types/ui/triggerSlot.d.ts +2 -12
- package/types/vendor/use-agentic/AgentProgress.d.ts +12 -0
- package/types/vendor/use-agentic/AgentSession.d.ts +94 -2
- package/types/vendor/use-agentic/Compaction.d.ts +42 -5
- package/types/vendor/use-agentic/Reference.d.ts +56 -0
- package/types/vendor/use-agentic/ToolRunner.d.ts +31 -1
- package/types/vendor/use-agentic/Transcript.d.ts +4 -1
- package/types/vendor/use-agentic/index.d.ts +1 -0
- package/types/vendor/use-agentic/types.d.ts +109 -7
- package/types/webkit/RenderLayer.d.ts +11 -0
- package/types/webkit/index.d.ts +1 -2
- package/types/webkit/lazy.d.ts +3 -12
- package/types/webkit/{createRobotPage.d.ts → seoPages.d.ts} +4 -0
- package/types/webkit/useBodyScrollLock.d.ts +0 -1
- package/types/webkit/useCamera.d.ts +1 -1
- package/types/webkit/useContact.d.ts +1 -1
- package/types/webkit/useDebounce.d.ts +0 -1
- package/types/webkit/useEscapeKey.d.ts +1 -4
- package/types/webkit/useFetch.d.ts +1 -6
- package/types/webkit/useFrameRuntime.d.ts +1 -1
- package/types/webkit/useGeoLocation.d.ts +1 -1
- package/types/webkit/usePageTool.d.ts +2 -9
- package/types/webkit/usePurchase.d.ts +1 -4
- package/types/webkit/useScreenScope.d.ts +2 -13
- package/ui/Agent/Attach.tsx +5 -4
- package/ui/Agent/Bubble.tsx +51 -31
- package/ui/Agent/Chat.tsx +114 -102
- package/ui/Agent/ChatCommands.ts +5 -21
- package/ui/Agent/Composer.tsx +110 -28
- package/ui/Agent/Dock.tsx +176 -16
- package/ui/Agent/Guide.tsx +1 -5
- package/ui/Agent/History.tsx +1 -18
- package/ui/Agent/Launcher.tsx +2 -2
- package/ui/Agent/Markdown.tsx +40 -14
- package/ui/Agent/MentionNode.ts +54 -0
- package/ui/Agent/Menu.tsx +8 -5
- package/ui/Agent/Question.tsx +1 -6
- package/ui/Agent/Queued.tsx +3 -6
- package/ui/Agent/Refer.tsx +40 -0
- package/ui/Agent/RichInput.tsx +146 -0
- package/ui/Agent/Skip.tsx +3 -15
- package/ui/Agent/Steps.tsx +33 -0
- package/ui/Agent/ToolCard.tsx +32 -0
- package/ui/Agent/Zone.tsx +15 -31
- package/ui/Agent/agentSessionOf.ts +115 -15
- package/ui/Agent/attachment.ts +5 -42
- package/ui/Agent/fetchRunner.ts +3 -15
- package/ui/Agent/index.ts +1 -6
- package/ui/Agent/mentionDraft.ts +91 -0
- package/ui/Agent/tokenCount.ts +1 -5
- package/ui/Agent/useChatAttachments.ts +2 -9
- package/ui/Agent/useChatQueue.ts +12 -14
- package/ui/Agent/useChatReferences.ts +51 -0
- package/ui/Agent/useChatVoice.ts +2 -23
- package/ui/Agent/useDraftRecall.ts +0 -9
- package/ui/Agent/useKeyboardInset.ts +0 -7
- package/ui/Agent/useReferenceMenu.ts +93 -0
- package/ui/Agent/useSlashMenu.ts +0 -3
- package/ui/Agent/voice.ts +8 -43
- package/ui/Badge.tsx +0 -2
- package/ui/BottomSheet.tsx +2 -5
- package/ui/Button.tsx +9 -45
- package/ui/ClientSide.tsx +0 -2
- package/ui/Clipboard.tsx +0 -1
- package/ui/Constant/Doc.tsx +274 -265
- package/ui/Constant/Graph.tsx +11 -3
- package/ui/Constant/schemaGraph.ts +0 -9
- package/ui/Copy.tsx +2 -3
- package/ui/CsrImage.tsx +9 -9
- package/ui/Data/CardList.tsx +2 -17
- package/ui/Data/Dashboard.tsx +2 -5
- package/ui/Data/Item.tsx +2 -3
- package/ui/Data/ListContainer.tsx +15 -61
- package/ui/Data/Pagination.tsx +3 -22
- package/ui/Data/QueryMaker.tsx +1 -8
- package/ui/Data/RefPicker.tsx +1 -8
- package/ui/Data/TableList.tsx +2 -15
- package/ui/DatePicker.tsx +1 -12
- package/ui/Dialog/LegacyModal.tsx +3 -7
- package/ui/Dialog/Modal.tsx +3 -4
- package/ui/Dialog/Provider.tsx +85 -7
- package/ui/Dialog/index.tsx +1 -5
- package/ui/DraggableList.tsx +1 -4
- package/ui/Dropdown.tsx +4 -17
- package/ui/Empty.tsx +4 -12
- package/ui/Field/Choice.tsx +1 -1
- package/ui/Field/Collection.tsx +7 -29
- package/ui/Field/DateField.tsx +2 -7
- package/ui/Field/Label.tsx +0 -1
- package/ui/Field/NumberField.tsx +0 -1
- package/ui/Field/Relation.tsx +79 -199
- package/ui/Field/Text.tsx +25 -86
- package/ui/Field/index.tsx +0 -9
- package/ui/Field/lightRefCache.ts +61 -0
- package/ui/Field/useRelationOptions.ts +97 -0
- package/ui/Image.tsx +35 -65
- package/ui/InfiniteScroll.tsx +3 -21
- package/ui/Input.tsx +82 -174
- package/ui/Layout/Role.tsx +42 -0
- package/ui/Layout/Sider.tsx +82 -1
- package/ui/Layout/TopInset.tsx +23 -1
- package/ui/Layout/index.ts +3 -9
- package/ui/LegacyModal.tsx +1 -12
- package/ui/Link/Action.tsx +29 -0
- package/ui/Link/Anchor.tsx +118 -0
- package/ui/Link/index.tsx +7 -8
- package/ui/Load/Edit_Client.tsx +2 -37
- package/ui/Load/Page.tsx +3 -6
- package/ui/Load/Pagination.tsx +4 -19
- package/ui/Load/Stream.tsx +0 -12
- package/ui/Load/Units.tsx +13 -86
- package/ui/Load/View.tsx +4 -21
- package/ui/Loading/ProgressBar.tsx +0 -4
- package/ui/Loading/Skeleton.tsx +14 -0
- package/ui/Loading/Spin.tsx +34 -5
- package/ui/Loading/index.ts +0 -5
- package/ui/Loading/index_.tsx +2 -12
- package/ui/Menu.tsx +3 -21
- package/ui/Modal.tsx +0 -17
- package/ui/Model/AdminPanel.tsx +2 -5
- package/ui/Model/DraftBar.tsx +3 -14
- package/ui/Model/EditModal.tsx +11 -48
- package/ui/Model/EditWrapper.tsx +2 -3
- package/ui/Model/LoadStore.tsx +18 -0
- package/ui/Model/NewWrapper_Client.tsx +1 -1
- package/ui/Model/Remove.tsx +4 -12
- package/ui/Model/RemoveWrapper.tsx +2 -3
- package/ui/Model/SureToRemove.tsx +4 -13
- package/ui/Model/ViewEditModal.tsx +0 -6
- package/ui/Model/ViewModal.tsx +1 -5
- package/ui/Model/ViewWrapper.tsx +1 -2
- package/ui/Model/draftScope.ts +0 -7
- package/ui/Model/index_.tsx +2 -22
- package/ui/Pagination.tsx +4 -12
- package/ui/Popconfirm.tsx +3 -18
- package/ui/Portal.tsx +2 -3
- package/ui/Radio.tsx +1 -5
- package/ui/RecentTime.tsx +19 -31
- package/ui/Reference/Panel.tsx +102 -6
- package/ui/Reference/Segmented.tsx +5 -11
- package/ui/Reference/{style.ts → docUi.ts} +10 -2
- package/ui/Reference/index.ts +3 -7
- package/ui/Refresh.tsx +79 -13
- package/ui/ScreenNavigator.tsx +8 -13
- package/ui/Select.tsx +29 -37
- package/ui/Signal/Endpoint.tsx +154 -0
- package/ui/Signal/Listener.tsx +1 -4
- package/ui/Signal/Object.tsx +67 -73
- package/ui/Signal/RestApi.tsx +30 -76
- package/ui/Signal/WebSocket.tsx +253 -2
- package/ui/Signal/endpointEntries.ts +3 -5
- package/ui/Signal/index.ts +1 -3
- package/ui/Signal/style.ts +1 -2
- package/ui/Switch.tsx +1 -5
- package/ui/System/CSR.tsx +29 -109
- package/ui/System/Client.tsx +15 -19
- package/ui/System/Common.tsx +31 -22
- package/ui/System/Messages.tsx +2 -2
- package/ui/System/Reconnect.tsx +1 -6
- package/ui/System/Root.tsx +1 -4
- package/ui/System/SSR.tsx +10 -16
- package/ui/System/ThemeToggle.tsx +15 -0
- package/ui/System/index.tsx +2 -2
- package/ui/Tab/Provider.tsx +115 -7
- package/ui/Tab/index.tsx +1 -4
- package/ui/Table.tsx +7 -23
- package/ui/Toast.tsx +9 -16
- package/ui/ToggleSelect.tsx +10 -24
- package/ui/Tooltip.tsx +2 -8
- package/ui/UiOverride/{context.ts → UiOverride.tsx} +54 -42
- package/ui/UiOverride/index.ts +9 -6
- package/ui/UiOverride/override.ts +2 -18
- package/ui/Unauthorized.tsx +1 -8
- package/ui/agentAttrs.ts +9 -12
- package/ui/index.ts +20 -5
- package/ui/overlayLayer.ts +4 -25
- package/ui/overlayPosition.ts +2 -14
- package/ui/recipe/badgeRecipe.ts +1 -1
- package/ui/recipe/buttonRecipe.ts +4 -4
- package/ui/recipe/factory.ts +1 -22
- package/ui/recipe/index.ts +1 -14
- package/ui/recipe/inputRecipe.ts +2 -2
- package/ui/sliceNamesOf.ts +26 -0
- package/ui/styles.css +195 -1
- package/ui/triggerSlot.tsx +2 -12
- package/vendor/use-agentic/AgentProgress.ts +13 -1
- package/vendor/use-agentic/AgentSession.ts +313 -29
- package/vendor/use-agentic/AgenticSurface.ts +2 -0
- package/vendor/use-agentic/Compaction.ts +91 -9
- package/vendor/use-agentic/Reference.ts +99 -0
- package/vendor/use-agentic/ToolRunner.ts +77 -2
- package/vendor/use-agentic/Transcript.ts +15 -4
- package/vendor/use-agentic/WIRE.md +16 -2
- package/vendor/use-agentic/httpRunner.ts +19 -4
- package/vendor/use-agentic/index.ts +1 -1
- package/vendor/use-agentic/types.ts +121 -10
- package/webkit/RenderLayer.tsx +45 -0
- package/webkit/bootCsr.tsx +4 -57
- package/webkit/index.ts +1 -2
- package/webkit/lazy.tsx +3 -13
- package/webkit/{createRobotPage.ts → seoPages.ts} +5 -0
- package/webkit/useBodyScrollLock.tsx +0 -6
- package/webkit/useCamera.tsx +10 -28
- package/webkit/useCodepush.tsx +8 -31
- package/webkit/useContact.tsx +1 -8
- package/webkit/useCsrValues.ts +203 -428
- package/webkit/useDebounce.ts +0 -3
- package/webkit/useEscapeKey.tsx +1 -12
- package/webkit/useFetch.ts +7 -13
- package/webkit/useFrameRuntime.ts +5 -43
- package/webkit/useGeoLocation.tsx +1 -1
- package/webkit/useLocation.ts +5 -8
- package/webkit/usePageTool.tsx +2 -9
- package/webkit/usePurchase.tsx +17 -33
- package/webkit/useScreenScope.tsx +2 -13
- package/client/fetch.ts +0 -1
- package/client/frameDebug.ts +0 -29
- package/common/deepObjectify.ts +0 -42
- package/common/dynamicRecord.ts +0 -12
- package/common/formatPhone.ts +0 -7
- package/common/getAllPropertyDescriptors.ts +0 -13
- package/common/lowerlize.ts +0 -4
- package/common/mergeVersion.ts +0 -10
- package/common/pathGet.ts +0 -13
- package/common/pathGetLoose.ts +0 -31
- package/common/pathSet.ts +0 -28
- package/common/plainFieldsOf.ts +0 -13
- package/common/randomPicks.ts +0 -12
- package/common/websocketAuth.ts +0 -24
- package/constant/deserialize.ts +0 -98
- package/dictionary/agentTurn.dictionary.ts +0 -33
- package/document/schema.ts +0 -24
- package/fetch/fetchType/clientSignal.type.ts +0 -22
- package/local/apps/akan/akan-local.db +0 -0
- package/local/apps/akan/akan-local.db-shm +0 -0
- package/local/apps/akan/akan-local.db-wal +0 -0
- package/local/apps/akan/akan-local_solid.db +0 -0
- package/local/apps/akan/akan-local_solid.db-shm +0 -0
- package/local/apps/akan/akan-local_solid.db-wal +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db-wal +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-wal +0 -0
- package/server/artifact/manifestTypes.ts +0 -19
- package/server/assetEncoding.ts +0 -27
- package/server/consoleEvaluator.ts +0 -51
- package/server/di/index.ts +0 -4
- package/server/di/resolveAdaptorHierarchy.ts +0 -91
- package/server/di/resolveServiceHierarchy.ts +0 -47
- package/server/hmr/changeBatch.ts +0 -14
- package/server/hmr/index.ts +0 -4
- package/server/metadata.tsx +0 -198
- package/server/proxy/akanResponse.ts +0 -16
- package/server/proxy/bunRequestFields.ts +0 -12
- package/server/rscPartialCommit.ts +0 -3
- package/server/rscPatchSafety.ts +0 -57
- package/server/rscWorkerReplay.ts +0 -49
- package/server/subRouteIndexDocument.tsx +0 -61
- package/service/predefinedAdaptor/deepseekLlm.ts +0 -82
- package/service/predefinedAdaptor/sqlDescriptor.ts +0 -25
- package/store/agent/storeSurface.ts +0 -28
- package/store/agent/types.ts +0 -16
- package/store/agentic/useFileFieldTool.ts +0 -221
- package/store/stateInfo.ts +0 -66
- package/test/playwright.config.base.ts +0 -48
- package/test/playwright.pageAgent.ts +0 -41
- package/test/sample.ts +0 -19
- package/types/client/fetch.d.ts +0 -1
- package/types/client/frameDebug.d.ts +0 -3
- package/types/common/deepObjectify.d.ts +0 -6
- package/types/common/dynamicRecord.d.ts +0 -14
- package/types/common/formatPhone.d.ts +0 -2
- package/types/common/getAllPropertyDescriptors.d.ts +0 -5
- package/types/common/isPhoneNumber.d.ts +0 -2
- package/types/common/lowerlize.d.ts +0 -2
- package/types/common/mergeVersion.d.ts +0 -10
- package/types/common/pathGet.d.ts +0 -1
- package/types/common/pathGetLoose.d.ts +0 -8
- package/types/common/pathSet.d.ts +0 -3
- package/types/common/plainFieldsOf.d.ts +0 -6
- package/types/common/randomPicks.d.ts +0 -1
- package/types/common/splitVersion.d.ts +0 -11
- package/types/common/websocketAuth.d.ts +0 -19
- package/types/common/websocketBinaryFrame.d.ts +0 -17
- package/types/constant/deserialize.d.ts +0 -10
- package/types/dictionary/agentTurn.dictionary.d.ts +0 -1
- package/types/document/schema.d.ts +0 -5
- package/types/fetch/fetchType/clientSignal.type.d.ts +0 -16
- package/types/server/artifact/manifestTypes.d.ts +0 -16
- package/types/server/assetEncoding.d.ts +0 -7
- package/types/server/consoleEvaluator.d.ts +0 -2
- package/types/server/di/index.d.ts +0 -4
- package/types/server/di/resolveAdaptorHierarchy.d.ts +0 -21
- package/types/server/di/resolveServiceHierarchy.d.ts +0 -13
- package/types/server/di.d.ts +0 -1
- package/types/server/hmr/changeBatch.d.ts +0 -13
- package/types/server/hmr/index.d.ts +0 -4
- package/types/server/hmr.d.ts +0 -1
- package/types/server/metadata.d.ts +0 -22
- package/types/server/proxy/akanResponse.d.ts +0 -7
- package/types/server/proxy/bunRequestFields.d.ts +0 -1
- package/types/server/rscPartialCommit.d.ts +0 -1
- package/types/server/rscPatchSafety.d.ts +0 -8
- package/types/server/rscWorkerReplay.d.ts +0 -32
- package/types/server/subRouteIndexDocument.d.ts +0 -8
- package/types/service/predefinedAdaptor/deepseekLlm.d.ts +0 -19
- package/types/service/predefinedAdaptor/sqlDescriptor.d.ts +0 -5
- package/types/store/agent/storeSurface.d.ts +0 -14
- package/types/store/agent/types.d.ts +0 -15
- package/types/store/agentic/useFileFieldTool.d.ts +0 -41
- package/types/store/stateInfo.d.ts +0 -23
- package/types/test/playwright.config.base.d.ts +0 -9
- package/types/test/playwright.pageAgent.d.ts +0 -12
- package/types/test/sample.d.ts +0 -15
- package/types/ui/Agent/Context.d.ts +0 -13
- package/types/ui/Agent/Mic.d.ts +0 -8
- package/types/ui/Agent/Section.d.ts +0 -10
- package/types/ui/Agent/StateKey.d.ts +0 -16
- package/types/ui/Agent/Tool.d.ts +0 -15
- package/types/ui/Agent/Transcript.d.ts +0 -13
- package/types/ui/Agent/markdownSpans.d.ts +0 -2
- package/types/ui/Agent/sessionHistory.d.ts +0 -14
- package/types/ui/Agent/sessionView.d.ts +0 -15
- package/types/ui/Dialog/Action.d.ts +0 -5
- package/types/ui/Dialog/Close.d.ts +0 -6
- package/types/ui/Dialog/Content.d.ts +0 -6
- package/types/ui/Dialog/Title.d.ts +0 -5
- package/types/ui/Dialog/Trigger.d.ts +0 -6
- package/types/ui/Dialog/context.d.ts +0 -18
- package/types/ui/Layout/LeftSider.d.ts +0 -11
- package/types/ui/Layout/RightSider.d.ts +0 -12
- package/types/ui/Layout/Template.d.ts +0 -7
- package/types/ui/Layout/TopLeftAction.d.ts +0 -6
- package/types/ui/Layout/Unit.d.ts +0 -9
- package/types/ui/Layout/View.d.ts +0 -8
- package/types/ui/Layout/Zone.d.ts +0 -6
- package/types/ui/Link/Back.d.ts +0 -7
- package/types/ui/Link/Close.d.ts +0 -7
- package/types/ui/Link/CsrLink.d.ts +0 -2
- package/types/ui/Link/Lang.d.ts +0 -8
- package/types/ui/Link/SsrLink.d.ts +0 -2
- package/types/ui/Link/types.d.ts +0 -50
- package/types/ui/Loading/Area.d.ts +0 -9
- package/types/ui/Loading/Button.d.ts +0 -7
- package/types/ui/Loading/Input.d.ts +0 -7
- package/types/ui/Model/LoadInit.d.ts +0 -10
- package/types/ui/Model/LoadView.d.ts +0 -10
- package/types/ui/Reference/Collapse.d.ts +0 -11
- package/types/ui/Reference/Summary.d.ts +0 -13
- package/types/ui/Reference/Toolbar.d.ts +0 -21
- package/types/ui/Reference/dictText.d.ts +0 -6
- package/types/ui/Signal/Message.d.ts +0 -23
- package/types/ui/Signal/PubSub.d.ts +0 -24
- package/types/ui/Signal/Request.d.ts +0 -8
- package/types/ui/System/DevModeToggle.d.ts +0 -1
- package/types/ui/System/Gtag.d.ts +0 -4
- package/types/ui/System/frameCssVars.d.ts +0 -5
- package/types/ui/Tab/Menu.d.ts +0 -12
- package/types/ui/Tab/Menus.d.ts +0 -6
- package/types/ui/Tab/Panel.d.ts +0 -8
- package/types/ui/Tab/context.d.ts +0 -11
- package/types/ui/UiOverride/Provider.d.ts +0 -15
- package/types/ui/UiOverride/createOverridable.d.ts +0 -9
- package/types/ui/UiOverride/useUiOverride.d.ts +0 -7
- package/types/ui/UiOverride/useUiRecipe.d.ts +0 -8
- package/types/webkit/createSitemapPage.d.ts +0 -4
- package/ui/Agent/Context.tsx +0 -49
- package/ui/Agent/Mic.tsx +0 -27
- package/ui/Agent/Section.tsx +0 -24
- package/ui/Agent/StateKey.tsx +0 -46
- package/ui/Agent/Tool.tsx +0 -59
- package/ui/Agent/Transcript.tsx +0 -33
- package/ui/Agent/markdownSpans.tsx +0 -49
- package/ui/Agent/sessionHistory.ts +0 -62
- package/ui/Agent/sessionView.ts +0 -38
- package/ui/Dialog/Action.tsx +0 -15
- package/ui/Dialog/Close.tsx +0 -18
- package/ui/Dialog/Content.tsx +0 -11
- package/ui/Dialog/Title.tsx +0 -15
- package/ui/Dialog/Trigger.tsx +0 -18
- package/ui/Dialog/context.ts +0 -32
- package/ui/Layout/LeftSider.tsx +0 -43
- package/ui/Layout/RightSider.tsx +0 -47
- package/ui/Layout/Template.tsx +0 -11
- package/ui/Layout/TopLeftAction.tsx +0 -28
- package/ui/Layout/Unit.tsx +0 -19
- package/ui/Layout/View.tsx +0 -12
- package/ui/Layout/Zone.tsx +0 -10
- package/ui/Link/Back.tsx +0 -15
- package/ui/Link/Close.tsx +0 -20
- package/ui/Link/CsrLink.tsx +0 -46
- package/ui/Link/Lang.tsx +0 -16
- package/ui/Link/SsrLink.tsx +0 -72
- package/ui/Link/types.ts +0 -55
- package/ui/Loading/Area.tsx +0 -27
- package/ui/Loading/Button.tsx +0 -15
- package/ui/Loading/Input.tsx +0 -15
- package/ui/Model/LoadInit.tsx +0 -11
- package/ui/Model/LoadView.tsx +0 -11
- package/ui/Reference/Collapse.tsx +0 -26
- package/ui/Reference/Summary.tsx +0 -25
- package/ui/Reference/Toolbar.tsx +0 -44
- package/ui/Reference/dictText.ts +0 -9
- package/ui/Signal/Message.tsx +0 -215
- package/ui/Signal/PubSub.tsx +0 -201
- package/ui/Signal/Request.tsx +0 -11
- package/ui/System/DevModeToggle.tsx +0 -19
- package/ui/System/Gtag.tsx +0 -69
- package/ui/System/frameCssVars.ts +0 -25
- package/ui/Tab/Menu.tsx +0 -70
- package/ui/Tab/Menus.tsx +0 -13
- package/ui/Tab/Panel.tsx +0 -25
- package/ui/Tab/context.ts +0 -20
- package/ui/UiOverride/Provider.tsx +0 -26
- package/ui/UiOverride/createOverridable.tsx +0 -25
- package/ui/UiOverride/useUiOverride.ts +0 -15
- package/ui/UiOverride/useUiRecipe.ts +0 -15
- package/webkit/createSitemapPage.ts +0 -4
package/server/webRouter.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { pathToFileURL } from "node:url";
|
|
4
3
|
import type { AkanWebConfig } from "akanjs";
|
|
5
|
-
import { getEnv } from "akanjs/base";
|
|
6
4
|
import {
|
|
7
5
|
type AkanI18nConfig,
|
|
8
6
|
DEFAULT_AKAN_I18N,
|
|
@@ -17,18 +15,15 @@ import type { AkanMetricsReport } from "akanjs/service";
|
|
|
17
15
|
import type { PagePromptSource } from "../signal/mcp/pagePrompt";
|
|
18
16
|
import {
|
|
19
17
|
type BuilderRpc,
|
|
20
|
-
type ClientManifest,
|
|
21
18
|
type MergedManifest,
|
|
22
19
|
RouteClientCache,
|
|
23
20
|
type RouteSeedIndex,
|
|
24
21
|
RouteSeedIndexStore,
|
|
25
22
|
RoutesManifestStore,
|
|
26
23
|
} from "./artifact";
|
|
27
|
-
import { resolveEncodedSidecar } from "./assetEncoding";
|
|
28
24
|
import {
|
|
29
25
|
getClientFacingOrigin,
|
|
30
26
|
hasRouteCacheInvalidationScope,
|
|
31
|
-
isRouteCachePathAllowed,
|
|
32
27
|
LruTtlCache,
|
|
33
28
|
parsePositiveInt,
|
|
34
29
|
type RouteCacheEntry,
|
|
@@ -39,10 +34,12 @@ import {
|
|
|
39
34
|
shouldInvalidateRouteCacheEntry,
|
|
40
35
|
shouldStoreRouteCache,
|
|
41
36
|
} from "./cachePolicy";
|
|
42
|
-
import {
|
|
37
|
+
import { encodedFileResponse } from "./contentEncoding";
|
|
43
38
|
import { HMR_CLIENT_SCRIPT } from "./hmr/clientScript";
|
|
39
|
+
import { DevHmrController } from "./hmr/devHmrController";
|
|
44
40
|
import type { HmrWsData, HmrWsHub } from "./hmr/wsHub";
|
|
45
41
|
import { ImageOptimizer } from "./imageOptimizer";
|
|
42
|
+
import { normalizeHost, resolveArtifactDir, warnIgnoredSubRouteBasePaths } from "./proxy/hostBasePathWebProxy";
|
|
46
43
|
import { createDefaultRobotsTxt } from "./robots";
|
|
47
44
|
import {
|
|
48
45
|
AKAN_RSC_PATCH_HEAD_SAFE_HEADER,
|
|
@@ -57,6 +54,7 @@ import { createDefaultSitemapXml, getSitemapBasePath } from "./sitemap";
|
|
|
57
54
|
import { SsrFromRscRenderer } from "./ssrFromRscRenderer";
|
|
58
55
|
import type { RscTraceMetadata, SsrManifest } from "./ssrTypes";
|
|
59
56
|
import { resolveStaticPath } from "./staticPath";
|
|
57
|
+
import { getPathnameLocale } from "./systemPageDocument";
|
|
60
58
|
import { createSubRouteIndexResponse, createSystemPageResponse, getSystemPageHomeHref } from "./systemPages";
|
|
61
59
|
import { type BaseBuildArtifact, type HttpRoutes, type RenderState, resolveWebConfig } from "./types";
|
|
62
60
|
|
|
@@ -66,18 +64,6 @@ export const DEFAULT_HTML_RESULT_CACHE_MAX_BODY_BYTES = 2 * 1024 * 1024;
|
|
|
66
64
|
const ROUTE_CACHE_SWEEP_INTERVAL_MS = 60_000;
|
|
67
65
|
const APPLE_APP_SITE_ASSOCIATION_PATH = "/.well-known/apple-app-site-association";
|
|
68
66
|
const ANDROID_ASSET_LINKS_PATH = "/.well-known/assetlinks.json";
|
|
69
|
-
const FIREBASE_MESSAGING_SW_PATH = "/firebase-messaging-sw.js";
|
|
70
|
-
const FIREBASE_WEB_SDK_VERSION = "12.13.0";
|
|
71
|
-
|
|
72
|
-
interface FirebaseClientEnvConfig {
|
|
73
|
-
apiKey: string;
|
|
74
|
-
authDomain?: string;
|
|
75
|
-
projectId: string;
|
|
76
|
-
storageBucket?: string;
|
|
77
|
-
messagingSenderId: string;
|
|
78
|
-
appId: string;
|
|
79
|
-
vapidKey?: string;
|
|
80
|
-
}
|
|
81
67
|
|
|
82
68
|
export function createRscRedirectResponse(
|
|
83
69
|
location: string,
|
|
@@ -205,26 +191,10 @@ export function resolveHtmlRouteCacheStoreTtl(input: {
|
|
|
205
191
|
return resolveRouteCacheStoreTtl(workerTtl, hostCacheState);
|
|
206
192
|
}
|
|
207
193
|
|
|
208
|
-
export function isHtmlRouteCachePathAllowed(
|
|
209
|
-
pathname: string,
|
|
210
|
-
env: {
|
|
211
|
-
[key: string]: string | undefined;
|
|
212
|
-
AKAN_HTML_RESULT_CACHE_PATHS?: string;
|
|
213
|
-
AKAN_HTML_RESULT_CACHE_EXCLUDE_PATHS?: string;
|
|
214
|
-
} = process.env as Record<string, string | undefined>,
|
|
215
|
-
options: { defaultAllow?: boolean } = {},
|
|
216
|
-
): boolean {
|
|
217
|
-
return isRouteCachePathAllowed(pathname, {
|
|
218
|
-
allow: env.AKAN_HTML_RESULT_CACHE_PATHS,
|
|
219
|
-
deny: env.AKAN_HTML_RESULT_CACHE_EXCLUDE_PATHS,
|
|
220
|
-
defaultAllow: options.defaultAllow,
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
|
|
224
194
|
export async function createRscNavigationStreamResponse(
|
|
225
195
|
result: Extract<RscRenderResult, { type: "stream" }>,
|
|
226
196
|
): Promise<Response> {
|
|
227
|
-
|
|
197
|
+
|
|
228
198
|
const response = createRscStreamResponse(result.stream, result.status ?? 200);
|
|
229
199
|
appendRscTraceHeaders(response.headers, result.trace);
|
|
230
200
|
return response;
|
|
@@ -245,6 +215,13 @@ export function normalizeRscTargetUrlForHostBasePath(
|
|
|
245
215
|
const segments = targetUrl.pathname.split("/").filter(Boolean);
|
|
246
216
|
const [locale, firstPath] = segments;
|
|
247
217
|
if (!locale || !i18n.locales.includes(locale)) return { url: targetUrl, basePath: null };
|
|
218
|
+
|
|
219
|
+
if (basePath) {
|
|
220
|
+
if (firstPath === basePath) return { url: targetUrl, basePath };
|
|
221
|
+
const normalized = new URL(targetUrl);
|
|
222
|
+
normalized.pathname = `/${[locale, basePath, ...segments.slice(1)].join("/")}`;
|
|
223
|
+
return { url: normalized, basePath };
|
|
224
|
+
}
|
|
248
225
|
|
|
249
226
|
const targetBasePath = firstPath && basePaths.includes(firstPath) ? firstPath : null;
|
|
250
227
|
if (seedEntries && routeMatches(targetUrl)) return { url: targetUrl, basePath: targetBasePath ?? basePath };
|
|
@@ -259,12 +236,6 @@ export function normalizeRscTargetUrlForHostBasePath(
|
|
|
259
236
|
return { url: targetUrl, basePath: basePath ?? targetBasePath };
|
|
260
237
|
}
|
|
261
238
|
|
|
262
|
-
export interface SsrRoutesResult {
|
|
263
|
-
renderEnvRoutes: HttpRoutes;
|
|
264
|
-
hmrHub: HmrWsHub | null;
|
|
265
|
-
builderRpc: BuilderRpc | null;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
239
|
export interface SsrRoutesInputs {
|
|
269
240
|
web: AkanWebConfig;
|
|
270
241
|
upgradeHmrWs: (req: Request, data: HmrWsData) => boolean;
|
|
@@ -288,17 +259,12 @@ interface CachedHtmlResult {
|
|
|
288
259
|
|
|
289
260
|
export class WebRouter {
|
|
290
261
|
#logger = new Logger("WebRouter");
|
|
291
|
-
#artifactDir =
|
|
262
|
+
#artifactDir = resolveArtifactDir();
|
|
292
263
|
#artifact: BaseBuildArtifact;
|
|
293
264
|
#subRoutes: Record<string, string[]>;
|
|
294
265
|
#rsc: RscWorker;
|
|
295
266
|
#hub: HmrWsHub | null = null;
|
|
296
|
-
|
|
297
|
-
* `akan start` is the dev server whatever the environment claims. Its artifact directory carries no routes
|
|
298
|
-
* manifest — only `akan build` writes one — so the production branch cannot build a route on demand and
|
|
299
|
-
* throws on every request instead. `NODE_ENV` arrives by accident often enough (a workspace `.env` Bun loads
|
|
300
|
-
* on its own, a CI image default) that the command which started this process has to outrank it.
|
|
301
|
-
*/
|
|
267
|
+
|
|
302
268
|
#prodMode = process.env.NODE_ENV === "production" && process.env.AKAN_COMMAND_TYPE !== "start";
|
|
303
269
|
#builderRpc: BuilderRpc | null;
|
|
304
270
|
#routeCache: RouteClientCache;
|
|
@@ -340,10 +306,7 @@ export class WebRouter {
|
|
|
340
306
|
env: process.env.AKAN_SUB_ROUTE_HOSTS,
|
|
341
307
|
});
|
|
342
308
|
this.#subRoutes = subRoutes;
|
|
343
|
-
|
|
344
|
-
this.#logger.warn(
|
|
345
|
-
`AKAN_SUB_ROUTE_HOSTS names basePaths this build does not serve, ignoring: ${ignoredBasePaths.join(", ")}`,
|
|
346
|
-
);
|
|
309
|
+
warnIgnoredSubRouteBasePaths(this.#logger, ignoredBasePaths);
|
|
347
310
|
this.#rsc = rsc;
|
|
348
311
|
this.renderState = {
|
|
349
312
|
buildId: 0,
|
|
@@ -353,7 +316,13 @@ export class WebRouter {
|
|
|
353
316
|
this.#seedIndex = seedIndex;
|
|
354
317
|
if (this.#prodMode) {
|
|
355
318
|
this.#builderRpc = null;
|
|
356
|
-
this.#routeCache =
|
|
319
|
+
this.#routeCache = new RouteClientCache({
|
|
320
|
+
buildRoute: async (routeId) => {
|
|
321
|
+
throw new Error(
|
|
322
|
+
`[SSR] route ${routeId} missing from production artifact — rebuild with \`akan build\` to include it`,
|
|
323
|
+
);
|
|
324
|
+
},
|
|
325
|
+
});
|
|
357
326
|
} else {
|
|
358
327
|
this.#devHmr = new DevHmrController({
|
|
359
328
|
renderState: this.renderState,
|
|
@@ -374,14 +343,16 @@ export class WebRouter {
|
|
|
374
343
|
await this.#rsc.reload({
|
|
375
344
|
clientManifest: this.#mergeRuntimeManifest().clientManifest,
|
|
376
345
|
cssAssets: this.renderState.cssAssets,
|
|
377
|
-
|
|
346
|
+
|
|
347
|
+
buildId: this.#artifact.pagesBundleBuildId,
|
|
378
348
|
});
|
|
379
349
|
}
|
|
380
350
|
|
|
381
351
|
const clientServePrefix = `/_akan/client`;
|
|
382
352
|
const clientOutputDir = `${this.#artifactDir}/client`;
|
|
383
|
-
const
|
|
384
|
-
const
|
|
353
|
+
const localCsrDir = path.join(process.cwd(), "csr");
|
|
354
|
+
const csrOutputDir = fs.existsSync(localCsrDir) ? localCsrDir : path.join(this.#artifactDir, "csr");
|
|
355
|
+
const publicDir = path.join(process.env.AKAN_APP_DIR ?? path.dirname(Bun.main), "public");
|
|
385
356
|
const imageCacheDir = path.join(this.#artifactDir, "image-cache");
|
|
386
357
|
const imageOptimizer = new ImageOptimizer({
|
|
387
358
|
publicDir,
|
|
@@ -441,10 +412,14 @@ export class WebRouter {
|
|
|
441
412
|
}
|
|
442
413
|
const cssBytes = this.renderState.cssBytesByUrl[url.pathname];
|
|
443
414
|
if (!cssBytes) return new Response("Not Found", { status: 404 });
|
|
444
|
-
|
|
415
|
+
const headers = WebRouter.#baseAssetHeaders({
|
|
445
416
|
contentType: "text/css; charset=utf-8",
|
|
446
417
|
cacheControl: "no-store",
|
|
447
418
|
});
|
|
419
|
+
return new Response(
|
|
420
|
+
cssBytes.buffer.slice(cssBytes.byteOffset, cssBytes.byteOffset + cssBytes.byteLength) as ArrayBuffer,
|
|
421
|
+
{ headers },
|
|
422
|
+
);
|
|
448
423
|
},
|
|
449
424
|
"/_akan/fonts/*": (req) => {
|
|
450
425
|
this.#requestStats.staticAsset += 1;
|
|
@@ -462,9 +437,8 @@ export class WebRouter {
|
|
|
462
437
|
},
|
|
463
438
|
...(!this.#prodMode
|
|
464
439
|
? {
|
|
465
|
-
"/_akan/hmr": (req: Request) =>
|
|
466
|
-
|
|
467
|
-
},
|
|
440
|
+
"/_akan/hmr": (req: Request) =>
|
|
441
|
+
this.#devHmr?.handleWs(req) ?? new Response("HMR unavailable", { status: 404 }),
|
|
468
442
|
"/_akan/hmr/client-refresh": (req: Request) =>
|
|
469
443
|
this.#devHmr?.handleClientRefresh(req) ?? new Response("HMR unavailable", { status: 404 }),
|
|
470
444
|
}
|
|
@@ -473,8 +447,8 @@ export class WebRouter {
|
|
|
473
447
|
this.#requestStats.rscNavigation += 1;
|
|
474
448
|
try {
|
|
475
449
|
const reqUrl = new URL(req.url);
|
|
476
|
-
|
|
477
|
-
const clientOrigin =
|
|
450
|
+
|
|
451
|
+
const clientOrigin = getClientFacingOrigin(req);
|
|
478
452
|
const target = reqUrl.searchParams.get("url");
|
|
479
453
|
const rawTargetUrl = target ? new URL(target, clientOrigin) : reqUrl;
|
|
480
454
|
const requestBasePath = this.#requestBasePath(req);
|
|
@@ -490,6 +464,12 @@ export class WebRouter {
|
|
|
490
464
|
const manifest = await this.#ensureRoute(targetUrl);
|
|
491
465
|
const rscHeaders = new Headers(req.headers);
|
|
492
466
|
if (normalizedTarget.basePath) rscHeaders.set("x-base-path", normalizedTarget.basePath);
|
|
467
|
+
|
|
468
|
+
const [, targetLocale = "", ...targetPath] = rawTargetUrl.pathname.split("/");
|
|
469
|
+
if (this.#artifact.i18n.locales.includes(targetLocale)) {
|
|
470
|
+
rscHeaders.set("x-locale", targetLocale);
|
|
471
|
+
rscHeaders.set("x-path", `/${targetPath.join("/")}`);
|
|
472
|
+
}
|
|
493
473
|
const rscReq = new Request(targetUrl, {
|
|
494
474
|
method: "GET",
|
|
495
475
|
headers: rscHeaders,
|
|
@@ -500,7 +480,7 @@ export class WebRouter {
|
|
|
500
480
|
});
|
|
501
481
|
if (result.type === "redirect")
|
|
502
482
|
return createRscRedirectResponse(result.location, result.method, result.status);
|
|
503
|
-
if (result.type === "not-found") return
|
|
483
|
+
if (result.type === "not-found") return createRscNotFoundFallbackResponse();
|
|
504
484
|
if (result.status && result.status >= 500)
|
|
505
485
|
return this.#renderRscErrorResponse("__rsc", "Internal Server Error");
|
|
506
486
|
return createRscNavigationStreamResponse(result);
|
|
@@ -526,19 +506,9 @@ export class WebRouter {
|
|
|
526
506
|
status: 404,
|
|
527
507
|
headers: { "Content-Type": "text/plain; charset=utf-8", "Cache-Control": "no-store" },
|
|
528
508
|
}),
|
|
529
|
-
[FIREBASE_MESSAGING_SW_PATH]: async () => {
|
|
530
|
-
this.#requestStats.staticAsset += 1;
|
|
531
|
-
const firebaseConfig = await WebRouter.#resolveFirebaseClientConfig();
|
|
532
|
-
return new Response(WebRouter.#createFirebaseMessagingServiceWorker(firebaseConfig), {
|
|
533
|
-
headers: WebRouter.#baseAssetHeaders({
|
|
534
|
-
contentType: "application/javascript; charset=utf-8",
|
|
535
|
-
cacheControl: "no-store",
|
|
536
|
-
}),
|
|
537
|
-
});
|
|
538
|
-
},
|
|
539
509
|
"/*": async (req) => {
|
|
540
510
|
const url = new URL(req.url);
|
|
541
|
-
if (
|
|
511
|
+
if (url.pathname.endsWith("/_akan/image")) {
|
|
542
512
|
this.#requestStats.image += 1;
|
|
543
513
|
return imageOptimizer.handle(req);
|
|
544
514
|
}
|
|
@@ -564,14 +534,12 @@ export class WebRouter {
|
|
|
564
534
|
}
|
|
565
535
|
|
|
566
536
|
const filePath = resolveStaticPath(publicDir, url.pathname);
|
|
567
|
-
if (filePath) {
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
});
|
|
574
|
-
}
|
|
537
|
+
if (filePath && (await Bun.file(filePath).exists())) {
|
|
538
|
+
this.#requestStats.staticAsset += 1;
|
|
539
|
+
return WebRouter.#fileResponse(req, filePath, {
|
|
540
|
+
contentType: Bun.file(filePath).type || "application/octet-stream",
|
|
541
|
+
cacheControl: this.#prodMode ? "public, max-age=300" : "no-store",
|
|
542
|
+
});
|
|
575
543
|
}
|
|
576
544
|
|
|
577
545
|
if (url.pathname === "/robots.txt") {
|
|
@@ -587,7 +555,7 @@ export class WebRouter {
|
|
|
587
555
|
if (sitemapBasePath !== undefined) {
|
|
588
556
|
return new Response(
|
|
589
557
|
createDefaultSitemapXml({
|
|
590
|
-
origin:
|
|
558
|
+
origin: getClientFacingOrigin(req),
|
|
591
559
|
basePath: sitemapBasePath,
|
|
592
560
|
entries: this.#seedIndex.entries,
|
|
593
561
|
i18n: parseAkanI18nEnv(),
|
|
@@ -687,7 +655,7 @@ export class WebRouter {
|
|
|
687
655
|
cacheHtmlWhileStreaming(
|
|
688
656
|
htmlStream,
|
|
689
657
|
(html) => {
|
|
690
|
-
this.#
|
|
658
|
+
this.#htmlCache.set(htmlCacheEntry.key, { html, ...htmlCacheMetadata }, htmlStoreTtl);
|
|
691
659
|
},
|
|
692
660
|
{
|
|
693
661
|
shouldCache: () => shouldCacheHtml,
|
|
@@ -733,7 +701,6 @@ export class WebRouter {
|
|
|
733
701
|
this.#rsc.setLogLevel(minSev);
|
|
734
702
|
}
|
|
735
703
|
|
|
736
|
-
/** Page prompts live with the pages, in the RSC worker; the MCP router reaches them through this. */
|
|
737
704
|
pagePrompts(): PagePromptSource {
|
|
738
705
|
return {
|
|
739
706
|
list: () => this.#rsc.listPagePrompts(),
|
|
@@ -766,7 +733,6 @@ export class WebRouter {
|
|
|
766
733
|
};
|
|
767
734
|
}
|
|
768
735
|
|
|
769
|
-
/** @internal Clears or scopes invalidation for local route result caches owned by the host and RSC worker. */
|
|
770
736
|
invalidateRouteCaches(invalidation?: string | RouteCacheInvalidation): void {
|
|
771
737
|
const payload = typeof invalidation === "string" ? { reason: invalidation } : invalidation;
|
|
772
738
|
if (!hasRouteCacheInvalidationScope(payload)) {
|
|
@@ -786,19 +752,6 @@ export class WebRouter {
|
|
|
786
752
|
this.#rsc.invalidateRouteResultCache(invalidation);
|
|
787
753
|
}
|
|
788
754
|
|
|
789
|
-
/**
|
|
790
|
-
* Reconstruct origin as the browser saw it when behind Ingress / reverse proxies
|
|
791
|
-
* (prevents `/__rsc` same-origin rejecting because `req.url` is internal).
|
|
792
|
-
*/
|
|
793
|
-
static #clientFacingOrigin(req: Request): string {
|
|
794
|
-
return getClientFacingOrigin(req);
|
|
795
|
-
}
|
|
796
|
-
|
|
797
|
-
/**
|
|
798
|
-
* `x-base-path` is set by `HostBasePathWebProxy`, but it reaches here from the wire too, so it is checked against
|
|
799
|
-
* the basePaths this build serves — the same check `getBasePathFromPathname` already applies to it. An unknown
|
|
800
|
-
* value falls through to host matching instead of routing the request into a basePath that resolves to nothing.
|
|
801
|
-
*/
|
|
802
755
|
#requestBasePath(req: Request): string | null {
|
|
803
756
|
const headerBasePath = req.headers.get("x-base-path");
|
|
804
757
|
if (headerBasePath && this.#artifact.basePaths.includes(headerBasePath)) return headerBasePath;
|
|
@@ -806,12 +759,10 @@ export class WebRouter {
|
|
|
806
759
|
}
|
|
807
760
|
|
|
808
761
|
static #basePathForRequestHost(req: Request, subRoutes: Record<string, string[]>): string | null {
|
|
809
|
-
const host = (req.headers.get("x-forwarded-host") ?? req.headers.get("host")
|
|
810
|
-
.toLowerCase()
|
|
811
|
-
.replace(/:\d+$/, "");
|
|
762
|
+
const host = normalizeHost(req.headers.get("x-forwarded-host")?.split(",")[0]?.trim() ?? req.headers.get("host"));
|
|
812
763
|
if (!host) return null;
|
|
813
764
|
for (const [basePath, domains] of Object.entries(subRoutes)) {
|
|
814
|
-
if (domains.some((domain) => domain
|
|
765
|
+
if (domains.some((domain) => normalizeHost(domain) === host)) return basePath;
|
|
815
766
|
}
|
|
816
767
|
return null;
|
|
817
768
|
}
|
|
@@ -854,18 +805,10 @@ export class WebRouter {
|
|
|
854
805
|
return cached.html;
|
|
855
806
|
}
|
|
856
807
|
|
|
857
|
-
#setCachedHtml(cacheKey: string, html: string, ttl: number, metadata: Omit<CachedHtmlResult, "html">): void {
|
|
858
|
-
this.#htmlCache.set(cacheKey, { html, ...metadata }, ttl);
|
|
859
|
-
}
|
|
860
|
-
|
|
861
808
|
static #cookieValue(req: Request, name: string): string | undefined {
|
|
862
809
|
return parseCookieHeader(req.headers.get("cookie") ?? "").get(name)?.value;
|
|
863
810
|
}
|
|
864
811
|
|
|
865
|
-
static #isImageOptimizerPath(pathname: string): boolean {
|
|
866
|
-
return pathname === "/_akan/image" || pathname.endsWith("/_akan/image");
|
|
867
|
-
}
|
|
868
|
-
|
|
869
812
|
async #ensureRoute(url: URL) {
|
|
870
813
|
const started = Date.now();
|
|
871
814
|
const matched =
|
|
@@ -878,21 +821,17 @@ export class WebRouter {
|
|
|
878
821
|
return this.#mergeRuntimeManifest();
|
|
879
822
|
}
|
|
880
823
|
|
|
881
|
-
/**
|
|
882
|
-
* Memoized on the route cache's revision. Both the snapshot and the runtime merge copy the whole client manifest
|
|
883
|
-
* and SSR module map, which is a few hundred KB of structure for a small app — and this ran on every request. In
|
|
884
|
-
* production the revision never moves after `seed`, so the manifest is built once; in dev a rebuild bumps it and
|
|
885
|
-
* the next request pays for one fresh copy. The cached object is still a copy, so an in-flight request keeps
|
|
886
|
-
* consuming a stable manifest across an invalidate exactly as the per-request snapshot made it.
|
|
887
|
-
*/
|
|
888
824
|
#mergeRuntimeManifest(): MergedManifest {
|
|
889
825
|
const revision = this.#routeCache.revision;
|
|
890
826
|
if (this.#runtimeManifest?.revision === revision) return this.#runtimeManifest.manifest;
|
|
891
827
|
const snapshot = this.#routeCache.snapshot();
|
|
892
828
|
const manifest: MergedManifest = {
|
|
893
829
|
...snapshot,
|
|
894
|
-
clientManifest:
|
|
895
|
-
ssrManifest:
|
|
830
|
+
clientManifest: Object.assign({}, this.#artifact.rscRuntimeClientManifest, snapshot.clientManifest),
|
|
831
|
+
ssrManifest: {
|
|
832
|
+
moduleLoading: null,
|
|
833
|
+
moduleMap: Object.assign({}, this.#artifact.rscRuntimeSsrManifest?.moduleMap, snapshot.ssrManifest.moduleMap),
|
|
834
|
+
},
|
|
896
835
|
};
|
|
897
836
|
this.#runtimeManifest = { revision, manifest };
|
|
898
837
|
return manifest;
|
|
@@ -902,24 +841,18 @@ export class WebRouter {
|
|
|
902
841
|
kind: "not-found",
|
|
903
842
|
method: req.method,
|
|
904
843
|
pathname: url.pathname,
|
|
905
|
-
lang:
|
|
844
|
+
lang: getPathnameLocale(url.pathname, this.#artifact.i18n),
|
|
906
845
|
homeHref: this.#getSystemPageHomeHref(req, url.pathname),
|
|
907
846
|
stylesheetHref: this.#getStylesheetHref(req, url.pathname),
|
|
908
847
|
});
|
|
909
848
|
}
|
|
910
849
|
|
|
911
|
-
/**
|
|
912
|
-
* A build with subRoutes must keep every route file under `page/<basePath>`, so the site root owns no page and
|
|
913
|
-
* answers 404 — including the URL `akan start` opens a browser on. Locally that reads as a broken app, so serve a
|
|
914
|
-
* picker of the basePaths this build carries instead. Deployed hosts never reach it: `HostBasePathWebProxy`
|
|
915
|
-
* rewrites the root onto the basePath its host maps to before the router sees it.
|
|
916
|
-
*/
|
|
917
850
|
#localSubRouteIndexResponse(req: Request, url: URL): Promise<Response> | null {
|
|
918
851
|
if (process.env.AKAN_PUBLIC_ENV !== "local" || !this.#artifact.basePaths.length) return null;
|
|
919
852
|
if (!WebRouter.#isSiteRootPathname(url.pathname, this.#artifact.i18n)) return null;
|
|
920
853
|
return createSubRouteIndexResponse({
|
|
921
854
|
method: req.method,
|
|
922
|
-
locale:
|
|
855
|
+
locale: getPathnameLocale(url.pathname, this.#artifact.i18n),
|
|
923
856
|
basePaths: this.#artifact.basePaths,
|
|
924
857
|
subRoutes: this.#subRoutes,
|
|
925
858
|
});
|
|
@@ -940,7 +873,7 @@ export class WebRouter {
|
|
|
940
873
|
kind: "error",
|
|
941
874
|
method: req.method,
|
|
942
875
|
pathname: scope,
|
|
943
|
-
lang:
|
|
876
|
+
lang: getPathnameLocale(new URL(req.url).pathname, this.#artifact.i18n),
|
|
944
877
|
homeHref: this.#getSystemPageHomeHref(req, new URL(req.url).pathname),
|
|
945
878
|
stylesheetHref: this.#getStylesheetHref(req, new URL(req.url).pathname),
|
|
946
879
|
showDetails: !this.#prodMode,
|
|
@@ -994,11 +927,6 @@ export class WebRouter {
|
|
|
994
927
|
return this.renderState.cssAssets[basePath ?? ""]?.cssUrl ?? null;
|
|
995
928
|
}
|
|
996
929
|
|
|
997
|
-
static #getLocale(pathname: string, i18n: AkanI18nConfig): string {
|
|
998
|
-
const [segment] = pathname.split("/").filter(Boolean);
|
|
999
|
-
return segment && i18n.locales.includes(segment) ? segment : i18n.defaultLocale;
|
|
1000
|
-
}
|
|
1001
|
-
|
|
1002
930
|
static #htmlResponseHeaders(status: number): Headers {
|
|
1003
931
|
const headers = new Headers({ "Content-Type": "text/html; charset=utf-8" });
|
|
1004
932
|
if (status >= 400) headers.set("Cache-Control", "no-store");
|
|
@@ -1008,11 +936,6 @@ export class WebRouter {
|
|
|
1008
936
|
if (this.#prodMode) return html;
|
|
1009
937
|
return WebRouter.#injectBeforeBodyEnd(html, `<script>${HMR_CLIENT_SCRIPT}</script>`);
|
|
1010
938
|
}
|
|
1011
|
-
/**
|
|
1012
|
-
* Resolve a CSR html file, asking the builder to build the artifact first if it is not there yet.
|
|
1013
|
-
* Dev CSR is only reachable through `/__csr` and `?csr=true`, so the builder skips it until one of
|
|
1014
|
-
* them is requested; the first request pays for the build and every save keeps it in sync after.
|
|
1015
|
-
*/
|
|
1016
939
|
async #resolveCsrHtml(csrOutputDir: string, pathname: string): Promise<string | null> {
|
|
1017
940
|
const resolved = WebRouter.#resolveCsrHtmlPath(csrOutputDir, pathname, this.#artifact);
|
|
1018
941
|
if (resolved) return resolved;
|
|
@@ -1021,7 +944,7 @@ export class WebRouter {
|
|
|
1021
944
|
}
|
|
1022
945
|
#armCsrArtifact(reason: string): Promise<unknown> {
|
|
1023
946
|
const rpc = this.#builderRpc;
|
|
1024
|
-
|
|
947
|
+
|
|
1025
948
|
if (this.#csrArmed || !rpc) return Promise.resolve();
|
|
1026
949
|
this.#csrOnDemandBuild ??= rpc
|
|
1027
950
|
.buildCsr(reason)
|
|
@@ -1049,33 +972,25 @@ export class WebRouter {
|
|
|
1049
972
|
if (!last || last.index === undefined) return `${html}\n${snippet}`;
|
|
1050
973
|
return `${html.slice(0, last.index)}${snippet}\n${html.slice(last.index)}`;
|
|
1051
974
|
}
|
|
1052
|
-
static #rscNotFoundResponse(): Response {
|
|
1053
|
-
return createRscNotFoundFallbackResponse();
|
|
1054
|
-
}
|
|
1055
|
-
#getProductionRouteCache() {
|
|
1056
|
-
return new RouteClientCache({
|
|
1057
|
-
buildRoute: async (routeId) => {
|
|
1058
|
-
throw new Error(
|
|
1059
|
-
`[SSR] route ${routeId} missing from production artifact — rebuild with \`akan build\` to include it`,
|
|
1060
|
-
);
|
|
1061
|
-
},
|
|
1062
|
-
});
|
|
1063
|
-
}
|
|
1064
975
|
|
|
1065
|
-
/**
|
|
1066
|
-
* `null` when the build produced no web artifact — an api-only build, or a workspace with no `page/` at all.
|
|
1067
|
-
* The caller boots without a web surface instead of failing on the missing file.
|
|
1068
|
-
*/
|
|
976
|
+
/** `null` when the build has no web artifact (an api-only build, or no `page/`): boot without a web surface. */
|
|
1069
977
|
static async create({ web, upgradeHmrWs }: SsrRoutesInputs): Promise<WebRouter | null> {
|
|
1070
|
-
const artifactDir =
|
|
978
|
+
const artifactDir = resolveArtifactDir();
|
|
1071
979
|
const artifactFile = Bun.file(path.join(artifactDir, "base-artifact.json"));
|
|
1072
980
|
if (!(await artifactFile.exists())) return null;
|
|
1073
981
|
const artifact = WebRouter.#normalizeArtifact((await artifactFile.json()) as BaseBuildArtifact, artifactDir);
|
|
1074
982
|
const builtWeb = resolveWebConfig(artifact.web);
|
|
1075
983
|
if (!builtWeb.ssr) return null;
|
|
1076
984
|
const cssBytesByUrl = await WebRouter.#loadCssBytesByUrl(artifact, artifactDir);
|
|
1077
|
-
const
|
|
1078
|
-
|
|
985
|
+
const prodMode = process.env.NODE_ENV === "production" && process.env.AKAN_COMMAND_TYPE !== "start";
|
|
986
|
+
|
|
987
|
+
const rsc = new RscWorker(artifact, { failBeforeReady: prodMode });
|
|
988
|
+
if (prodMode)
|
|
989
|
+
void rsc.ready.catch((error: unknown) => {
|
|
990
|
+
new Logger("WebRouter").error(`RSC worker failed to load the pages bundle: ${String(error)}`);
|
|
991
|
+
process.exit(1);
|
|
992
|
+
});
|
|
993
|
+
else await rsc.ready;
|
|
1079
994
|
const seedIndex = await RouteSeedIndexStore.load(artifactDir);
|
|
1080
995
|
return new WebRouter({
|
|
1081
996
|
artifact,
|
|
@@ -1087,89 +1002,6 @@ export class WebRouter {
|
|
|
1087
1002
|
});
|
|
1088
1003
|
}
|
|
1089
1004
|
|
|
1090
|
-
static #resolveArtifactDir() {
|
|
1091
|
-
const localArtifactDir = path.join(process.cwd(), ".akan", "artifact");
|
|
1092
|
-
if (fs.existsSync(path.join(localArtifactDir, "base-artifact.json"))) return localArtifactDir;
|
|
1093
|
-
return path.join(process.cwd(), "apps", getEnv().appName, ".akan", "artifact");
|
|
1094
|
-
}
|
|
1095
|
-
|
|
1096
|
-
static #resolveAppDir() {
|
|
1097
|
-
return process.env.AKAN_APP_DIR ?? path.dirname(Bun.main);
|
|
1098
|
-
}
|
|
1099
|
-
|
|
1100
|
-
static async #resolveFirebaseClientConfig(): Promise<FirebaseClientEnvConfig | null> {
|
|
1101
|
-
const envPath = path.join(WebRouter.#resolveAppDir(), "env", "env.client.ts");
|
|
1102
|
-
if (!fs.existsSync(envPath)) return null;
|
|
1103
|
-
try {
|
|
1104
|
-
const envUrl = pathToFileURL(envPath);
|
|
1105
|
-
envUrl.searchParams.set("t", String(Date.now()));
|
|
1106
|
-
const envModule = (await import(envUrl.href)) as { env?: { firebase?: unknown } };
|
|
1107
|
-
return WebRouter.#normalizeFirebaseClientConfig(envModule.env?.firebase);
|
|
1108
|
-
} catch {
|
|
1109
|
-
return null;
|
|
1110
|
-
}
|
|
1111
|
-
}
|
|
1112
|
-
|
|
1113
|
-
static #normalizeFirebaseClientConfig(config: unknown): FirebaseClientEnvConfig | null {
|
|
1114
|
-
if (!config || typeof config !== "object") return null;
|
|
1115
|
-
const value = config as Partial<Record<keyof FirebaseClientEnvConfig, unknown>>;
|
|
1116
|
-
if (
|
|
1117
|
-
typeof value.apiKey !== "string" ||
|
|
1118
|
-
typeof value.projectId !== "string" ||
|
|
1119
|
-
typeof value.messagingSenderId !== "string" ||
|
|
1120
|
-
typeof value.appId !== "string"
|
|
1121
|
-
) {
|
|
1122
|
-
return null;
|
|
1123
|
-
}
|
|
1124
|
-
return {
|
|
1125
|
-
apiKey: value.apiKey,
|
|
1126
|
-
...(typeof value.authDomain === "string" ? { authDomain: value.authDomain } : {}),
|
|
1127
|
-
projectId: value.projectId,
|
|
1128
|
-
...(typeof value.storageBucket === "string" ? { storageBucket: value.storageBucket } : {}),
|
|
1129
|
-
messagingSenderId: value.messagingSenderId,
|
|
1130
|
-
appId: value.appId,
|
|
1131
|
-
};
|
|
1132
|
-
}
|
|
1133
|
-
|
|
1134
|
-
static #createFirebaseMessagingServiceWorker(config: FirebaseClientEnvConfig | null): string {
|
|
1135
|
-
const configJson = JSON.stringify(config);
|
|
1136
|
-
return `/* Generated by Akan.js. Do not edit. */
|
|
1137
|
-
const firebaseConfig = ${configJson};
|
|
1138
|
-
|
|
1139
|
-
if (firebaseConfig) {
|
|
1140
|
-
importScripts("https://www.gstatic.com/firebasejs/${FIREBASE_WEB_SDK_VERSION}/firebase-app-compat.js");
|
|
1141
|
-
importScripts("https://www.gstatic.com/firebasejs/${FIREBASE_WEB_SDK_VERSION}/firebase-messaging-compat.js");
|
|
1142
|
-
|
|
1143
|
-
firebase.initializeApp(firebaseConfig);
|
|
1144
|
-
const messaging = firebase.messaging();
|
|
1145
|
-
|
|
1146
|
-
const notificationUrl = (payload) =>
|
|
1147
|
-
payload?.data?.url || payload?.fcmOptions?.link || payload?.notification?.click_action;
|
|
1148
|
-
|
|
1149
|
-
messaging.onBackgroundMessage((payload) => {
|
|
1150
|
-
const title = payload?.notification?.title || "";
|
|
1151
|
-
const options = {
|
|
1152
|
-
body: payload?.notification?.body,
|
|
1153
|
-
icon: payload?.notification?.icon,
|
|
1154
|
-
image: payload?.notification?.image,
|
|
1155
|
-
data: {
|
|
1156
|
-
url: notificationUrl(payload),
|
|
1157
|
-
FCM_MSG: payload,
|
|
1158
|
-
},
|
|
1159
|
-
};
|
|
1160
|
-
self.registration.showNotification(title, options);
|
|
1161
|
-
});
|
|
1162
|
-
}
|
|
1163
|
-
|
|
1164
|
-
self.addEventListener("notificationclick", (event) => {
|
|
1165
|
-
const url = event.notification?.data?.url || event.notification?.data?.FCM_MSG?.data?.url;
|
|
1166
|
-
event.notification?.close();
|
|
1167
|
-
if (!url) return;
|
|
1168
|
-
event.waitUntil(clients.openWindow(url));
|
|
1169
|
-
});
|
|
1170
|
-
`;
|
|
1171
|
-
}
|
|
1172
|
-
|
|
1173
1005
|
static #normalizeArtifact(artifact: BaseBuildArtifact, artifactDir: string): BaseBuildArtifact {
|
|
1174
1006
|
const normalizedArtifactDir = path.resolve(artifactDir);
|
|
1175
1007
|
const pagesBundlePath = WebRouter.#resolveArtifactPath(artifact.pagesBundlePath, normalizedArtifactDir);
|
|
@@ -1184,18 +1016,6 @@ self.addEventListener("notificationclick", (event) => {
|
|
|
1184
1016
|
};
|
|
1185
1017
|
}
|
|
1186
1018
|
|
|
1187
|
-
static #mergeClientManifest(...manifests: Array<ClientManifest | undefined>): ClientManifest {
|
|
1188
|
-
return Object.assign({}, ...manifests.filter(Boolean));
|
|
1189
|
-
}
|
|
1190
|
-
|
|
1191
|
-
static #mergeSsrManifest(...manifests: Array<SsrManifest | undefined>): SsrManifest {
|
|
1192
|
-
const definedManifests = manifests.filter((manifest): manifest is SsrManifest => Boolean(manifest));
|
|
1193
|
-
return {
|
|
1194
|
-
moduleLoading: null,
|
|
1195
|
-
moduleMap: Object.assign({}, ...definedManifests.map((manifest) => manifest.moduleMap)),
|
|
1196
|
-
};
|
|
1197
|
-
}
|
|
1198
|
-
|
|
1199
1019
|
static #normalizeSsrManifest(ssrManifest: SsrManifest, artifactDir: string): SsrManifest {
|
|
1200
1020
|
return {
|
|
1201
1021
|
...ssrManifest,
|
|
@@ -1246,12 +1066,6 @@ self.addEventListener("notificationclick", (event) => {
|
|
|
1246
1066
|
return path.resolve(artifactDir, "server", path.basename(artifactPath));
|
|
1247
1067
|
}
|
|
1248
1068
|
|
|
1249
|
-
static #resolveCsrDir(artifactDir: string) {
|
|
1250
|
-
const localCsrDir = path.join(process.cwd(), "csr");
|
|
1251
|
-
if (fs.existsSync(localCsrDir)) return localCsrDir;
|
|
1252
|
-
return path.join(artifactDir, "csr");
|
|
1253
|
-
}
|
|
1254
|
-
|
|
1255
1069
|
static #resolveCsrHtmlPath(csrOutputDir: string, pathname: string, artifact: BaseBuildArtifact): string | null {
|
|
1256
1070
|
const basePath = getBasePathFromPathname(pathname, {
|
|
1257
1071
|
basePaths: artifact.basePaths,
|
|
@@ -1272,20 +1086,12 @@ self.addEventListener("notificationclick", (event) => {
|
|
|
1272
1086
|
if (!(await file.exists())) return new Response("Not Found", { status: 404 });
|
|
1273
1087
|
const stat = fs.statSync(filePath);
|
|
1274
1088
|
const lastModifiedMs = Math.floor(stat.mtimeMs / 1000) * 1000;
|
|
1275
|
-
const etag =
|
|
1089
|
+
const etag = `W/"${stat.size.toString(16)}-${lastModifiedMs.toString(16)}"`;
|
|
1276
1090
|
headers.set("ETag", etag);
|
|
1277
1091
|
headers.set("Last-Modified", new Date(lastModifiedMs).toUTCString());
|
|
1278
1092
|
if (WebRouter.#isNotModified(req, etag, lastModifiedMs)) return new Response(null, { status: 304, headers });
|
|
1279
1093
|
|
|
1280
|
-
|
|
1281
|
-
if (sidecar) {
|
|
1282
|
-
headers.set("Content-Encoding", sidecar.encoding);
|
|
1283
|
-
headers.set("Content-Length", String(sidecar.bytes.byteLength));
|
|
1284
|
-
headers.set("Vary", "Accept-Encoding");
|
|
1285
|
-
return new Response(sidecar.bytes, { headers });
|
|
1286
|
-
}
|
|
1287
|
-
|
|
1288
|
-
return new Response(file.stream(), { headers });
|
|
1094
|
+
return await encodedFileResponse(req, filePath, options.contentType, headers);
|
|
1289
1095
|
}
|
|
1290
1096
|
|
|
1291
1097
|
static #deepLinkAssociationResponse(
|
|
@@ -1293,7 +1099,6 @@ self.addEventListener("notificationclick", (event) => {
|
|
|
1293
1099
|
artifact: BaseBuildArtifact,
|
|
1294
1100
|
{ cacheControl }: { cacheControl: string },
|
|
1295
1101
|
) {
|
|
1296
|
-
if (pathname !== APPLE_APP_SITE_ASSOCIATION_PATH && pathname !== ANDROID_ASSET_LINKS_PATH) return null;
|
|
1297
1102
|
const associations = artifact.deepLinkAssociations ?? [];
|
|
1298
1103
|
if (pathname === APPLE_APP_SITE_ASSOCIATION_PATH) {
|
|
1299
1104
|
const details = associations
|
|
@@ -1305,18 +1110,22 @@ self.addEventListener("notificationclick", (event) => {
|
|
|
1305
1110
|
if (details.length === 0) return null;
|
|
1306
1111
|
return WebRouter.#jsonResponse({ applinks: { apps: [], details } }, cacheControl);
|
|
1307
1112
|
}
|
|
1113
|
+
|
|
1114
|
+
const packageSuffixes = process.env.AKAN_PUBLIC_ENV === "main" ? [""] : ["", ".debug"];
|
|
1308
1115
|
const assetLinks = associations
|
|
1309
1116
|
.filter(
|
|
1310
1117
|
(association) => association.domains.length > 0 && (association.androidSha256CertFingerprints?.length ?? 0) > 0,
|
|
1311
1118
|
)
|
|
1312
|
-
.
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1119
|
+
.flatMap((association) =>
|
|
1120
|
+
packageSuffixes.map((suffix) => ({
|
|
1121
|
+
relation: ["delegate_permission/common.handle_all_urls"],
|
|
1122
|
+
target: {
|
|
1123
|
+
namespace: "android_app",
|
|
1124
|
+
package_name: `${association.appId}${suffix}`,
|
|
1125
|
+
sha256_cert_fingerprints: association.androidSha256CertFingerprints,
|
|
1126
|
+
},
|
|
1127
|
+
})),
|
|
1128
|
+
);
|
|
1320
1129
|
if (assetLinks.length === 0) return null;
|
|
1321
1130
|
return WebRouter.#jsonResponse(assetLinks, cacheControl);
|
|
1322
1131
|
}
|
|
@@ -1330,29 +1139,6 @@ self.addEventListener("notificationclick", (event) => {
|
|
|
1330
1139
|
});
|
|
1331
1140
|
}
|
|
1332
1141
|
|
|
1333
|
-
static #bytesResponse(
|
|
1334
|
-
_req: Request,
|
|
1335
|
-
bytes: Uint8Array,
|
|
1336
|
-
options: { contentType: string; cacheControl?: string },
|
|
1337
|
-
): Response {
|
|
1338
|
-
const headers = WebRouter.#baseAssetHeaders(options);
|
|
1339
|
-
return new Response(WebRouter.#toArrayBuffer(bytes), { headers });
|
|
1340
|
-
}
|
|
1341
|
-
|
|
1342
|
-
static #toArrayBuffer(bytes: Uint8Array): ArrayBuffer {
|
|
1343
|
-
return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer;
|
|
1344
|
-
}
|
|
1345
|
-
|
|
1346
|
-
/**
|
|
1347
|
-
* Headers every response carries, whatever it is.
|
|
1348
|
-
*
|
|
1349
|
-
* `nosniff` because `Bun.file().type` falls back to `application/octet-stream` for an extension it does not
|
|
1350
|
-
* know, and a sniffing browser then guesses again — on a `public/` tree the app serves from its own origin,
|
|
1351
|
-
* that guess is script execution. `Referrer-Policy` because route paths carry ids.
|
|
1352
|
-
*
|
|
1353
|
-
* `X-Frame-Options` is on the HTML only: framing an image or a stylesheet means nothing, and the header is
|
|
1354
|
-
* what stops a page authenticated by a `SameSite=None` cookie from being clickjacked inside somebody else's.
|
|
1355
|
-
*/
|
|
1356
1142
|
static #applySecurityHeaders(headers: Headers, { html = false } = {}): Headers {
|
|
1357
1143
|
headers.set("X-Content-Type-Options", "nosniff");
|
|
1358
1144
|
headers.set("Referrer-Policy", "strict-origin-when-cross-origin");
|
|
@@ -1366,10 +1152,6 @@ self.addEventListener("notificationclick", (event) => {
|
|
|
1366
1152
|
return WebRouter.#applySecurityHeaders(headers);
|
|
1367
1153
|
}
|
|
1368
1154
|
|
|
1369
|
-
static #weakEtag(size: number, mtimeMs: number): string {
|
|
1370
|
-
return `W/"${size.toString(16)}-${mtimeMs.toString(16)}"`;
|
|
1371
|
-
}
|
|
1372
|
-
|
|
1373
1155
|
static #isNotModified(req: Request, etag: string, lastModifiedMs: number): boolean {
|
|
1374
1156
|
if (req.method !== "GET" && req.method !== "HEAD") return false;
|
|
1375
1157
|
const ifNoneMatch = req.headers.get("if-none-match");
|