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
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
import type { Logger } from "akanjs/common";
|
|
2
2
|
|
|
3
3
|
export class ShutdownManager {
|
|
4
|
-
/**
|
|
5
|
-
* Registers process-level handlers that drive `onShutdown` on:
|
|
6
|
-
* - SIGTERM / SIGINT (graceful stop → exit(0) on success, exit(1) on error)
|
|
7
|
-
* - uncaughtException (best-effort stop → exit(1))
|
|
8
|
-
* - unhandledRejection (logged at error, process kept alive; see `#isFatalUnhandledRejection`)
|
|
9
|
-
*
|
|
10
|
-
* Kept separate from `AkanServer` so the server class doesn't have to know about
|
|
11
|
-
* Node-level process events, and so tests can opt out by not calling it.
|
|
12
|
-
*/
|
|
13
4
|
static register(logger: Logger, onShutdown: () => Promise<void>): void {
|
|
14
5
|
const signals: NodeJS.Signals[] = ["SIGTERM", "SIGINT"];
|
|
15
6
|
|
|
@@ -28,34 +19,18 @@ export class ShutdownManager {
|
|
|
28
19
|
|
|
29
20
|
process.on("uncaughtException", async (error) => {
|
|
30
21
|
logger.error(`Uncaught exception: ${ShutdownManager.#formatError(error)}`);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
process.exit(1);
|
|
34
|
-
} catch {
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
22
|
+
await onShutdown().catch(() => undefined);
|
|
23
|
+
process.exit(1);
|
|
37
24
|
});
|
|
38
25
|
|
|
39
26
|
process.on("unhandledRejection", async (reason) => {
|
|
40
27
|
logger.error(`Unhandled rejection: ${ShutdownManager.#formatError(reason)}`);
|
|
41
28
|
if (!ShutdownManager.#isFatalUnhandledRejection()) return;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
process.exit(1);
|
|
45
|
-
} catch {
|
|
46
|
-
process.exit(1);
|
|
47
|
-
}
|
|
29
|
+
await onShutdown().catch(() => undefined);
|
|
30
|
+
process.exit(1);
|
|
48
31
|
});
|
|
49
32
|
}
|
|
50
33
|
|
|
51
|
-
/**
|
|
52
|
-
* A rejected promise nobody awaited is scoped to whatever built it, so it cannot leave the process in the
|
|
53
|
-
* unknown state an `uncaughtException` does — while exiting over one drops every other in-flight request,
|
|
54
|
-
* every websocket, and (under federation) restarts the replica. React's streaming SSR is the case that forced
|
|
55
|
-
* this: it rejects `stream.allReady` for a post-shell render failure and holds no handler of its own, so one
|
|
56
|
-
* page's boundary error used to kill a whole child. Set `AKAN_FATAL_UNHANDLED_REJECTION=1` to restore the
|
|
57
|
-
* exit for a deployment that would rather crash than serve on.
|
|
58
|
-
*/
|
|
59
34
|
static #isFatalUnhandledRejection(): boolean {
|
|
60
35
|
const flag = process.env.AKAN_FATAL_UNHANDLED_REJECTION;
|
|
61
36
|
return flag === "1" || flag === "true";
|
|
@@ -3,9 +3,7 @@ import { Logger, type LogLevel, type LogRecord, logSeverity } from "akanjs/commo
|
|
|
3
3
|
export type ChildOutputType = "stdout" | "stderr";
|
|
4
4
|
|
|
5
5
|
export interface ChildOutputReaderOptions {
|
|
6
|
-
/** A complete stdout line, newline included. */
|
|
7
6
|
onLine: (line: string) => void;
|
|
8
|
-
/** A stderr block of newline-terminated lines; one stack trace arrives as one block. */
|
|
9
7
|
onBlock: (lines: string[]) => void;
|
|
10
8
|
blockMaxLines?: number;
|
|
11
9
|
blockIdleMs?: number;
|
|
@@ -20,11 +18,6 @@ export interface ChildRecordInput {
|
|
|
20
18
|
pid: number | null;
|
|
21
19
|
}
|
|
22
20
|
|
|
23
|
-
/**
|
|
24
|
-
* Splits a child process's stdout and stderr into lines. stderr is block-buffered — a runtime writes a stack
|
|
25
|
-
* trace in many small writes and a reader wants it whole — and a block closes on a blank line, at
|
|
26
|
-
* `blockMaxLines`, after `blockIdleMs` of silence, or when the stream ends.
|
|
27
|
-
*/
|
|
28
21
|
export class ChildOutputReader {
|
|
29
22
|
static readonly defaultBlockMaxLines = 64;
|
|
30
23
|
static readonly defaultBlockIdleMs = 50;
|
|
@@ -44,10 +37,6 @@ export class ChildOutputReader {
|
|
|
44
37
|
this.#blockIdleMs = blockIdleMs ?? ChildOutputReader.defaultBlockIdleMs;
|
|
45
38
|
}
|
|
46
39
|
|
|
47
|
-
/**
|
|
48
|
-
* Wraps what a child wrote past its Logger — a `console.*` call, a runtime error, a crash — as a record of the
|
|
49
|
-
* process that read it, so an ndjson stdout stays one JSON line per event even for the line that killed a child.
|
|
50
|
-
*/
|
|
51
40
|
static toRecord({ type, text, name, role, replicaIdx, pid }: ChildRecordInput): LogRecord {
|
|
52
41
|
const level: LogLevel = type === "stderr" ? "error" : "info";
|
|
53
42
|
const at = Date.now();
|
|
@@ -98,7 +87,6 @@ export class ChildOutputReader {
|
|
|
98
87
|
this.#partial[type] = buffered;
|
|
99
88
|
}
|
|
100
89
|
|
|
101
|
-
/** Ends the stream's partial line and, for stderr, the block it belongs to. */
|
|
102
90
|
flush(type: ChildOutputType) {
|
|
103
91
|
const partial = this.#partial[type];
|
|
104
92
|
this.#partial[type] = "";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Logger } from "akanjs/common";
|
|
1
|
+
import { Logger, logSeverity } from "akanjs/common";
|
|
2
2
|
import type { LogHub, LogHubEntry } from "./logHub";
|
|
3
3
|
import { LogStdoutWriter } from "./logStdoutWriter";
|
|
4
4
|
import type { RotatingLogWriter } from "./rotatingLogWriter";
|
|
@@ -9,11 +9,6 @@ export interface HubFileSinkOptions {
|
|
|
9
9
|
json: boolean;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
* The rotating log file fed from the hub instead of from this process's own Logger. In an ndjson deployment a
|
|
14
|
-
* child writes no text line the owner could relay, so the file is written from the records that reached the
|
|
15
|
-
* hub — every process in one place, keyed the way the text-mode files were.
|
|
16
|
-
*/
|
|
17
12
|
export class HubFileSink {
|
|
18
13
|
#subscription: { unsubscribe(): void } | null;
|
|
19
14
|
|
|
@@ -26,6 +21,15 @@ export class HubFileSink {
|
|
|
26
21
|
});
|
|
27
22
|
}
|
|
28
23
|
|
|
24
|
+
static attach(writer: RotatingLogWriter, hub: LogHub | null, label: string): () => void {
|
|
25
|
+
if (!hub || !Logger.isNdjson) return Logger.addSink((entry) => void writer.write(label, entry.plainMessage));
|
|
26
|
+
const sink = new HubFileSink(hub, writer, {
|
|
27
|
+
minSev: logSeverity[Logger.fileLevel],
|
|
28
|
+
json: Logger.format === "ndjson-only",
|
|
29
|
+
});
|
|
30
|
+
return () => sink.close();
|
|
31
|
+
}
|
|
32
|
+
|
|
29
33
|
static processKey({ record }: LogHubEntry): string {
|
|
30
34
|
const role = record.role ?? "app";
|
|
31
35
|
if (role === "gateway" || record.replicaIdx === null) return role;
|
|
@@ -26,13 +26,6 @@ interface ClientState {
|
|
|
26
26
|
subscriptions: Map<string, () => void>;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
/**
|
|
30
|
-
* A unix domain socket in the runtime directory, `0600`, speaking NDJSON both ways. Filesystem permission is
|
|
31
|
-
* the whole authentication: no TCP port is opened. `akan logs` and the console's `.tail` are its clients.
|
|
32
|
-
*
|
|
33
|
-
* Nothing in here logs per delivered record — a subscriber asking for everything would otherwise receive the
|
|
34
|
-
* line about its own delivery, forever.
|
|
35
|
-
*/
|
|
36
29
|
export class LogControlSocket {
|
|
37
30
|
static readonly fileName = "akan-control.sock";
|
|
38
31
|
static readonly maxPendingBytes = 1024 * 1024;
|
|
@@ -52,6 +45,19 @@ export class LogControlSocket {
|
|
|
52
45
|
this.path = LogControlSocket.pathIn(runtimeDir);
|
|
53
46
|
}
|
|
54
47
|
|
|
48
|
+
static async open(hub: LogHub, runtimeDir: string, logger: Logger): Promise<LogControlSocket | null> {
|
|
49
|
+
const control = new LogControlSocket(hub, runtimeDir);
|
|
50
|
+
try {
|
|
51
|
+
await control.start();
|
|
52
|
+
return control;
|
|
53
|
+
} catch (error) {
|
|
54
|
+
logger.warn(
|
|
55
|
+
`Log control socket unavailable at ${control.path}: ${error instanceof Error ? error.message : String(error)}`,
|
|
56
|
+
);
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
55
61
|
async start() {
|
|
56
62
|
await mkdir(path.dirname(this.path), { recursive: true });
|
|
57
63
|
await rm(this.path, { force: true });
|
|
@@ -9,30 +9,22 @@ export interface LogForwarderOptions {
|
|
|
9
9
|
maxMessageChars?: number;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
* The child side of the log channel: a Logger sink that batches records over IPC to whoever owns the hub.
|
|
14
|
-
* Installed only while the owner has asked for a level (`log.level`), so a process nobody is watching sends
|
|
15
|
-
* nothing; `AKAN_LOG_STREAM=1` keeps it on regardless.
|
|
16
|
-
*/
|
|
17
12
|
export class LogForwarder {
|
|
18
13
|
static readonly defaultFlushMs = 20;
|
|
19
14
|
static readonly defaultMaxRecords = 64;
|
|
20
|
-
/**
|
|
21
|
-
* Bun IPC loses a message outright when the sender exits soon after and the payload is large — measured from
|
|
22
|
-
* 16KB for one long string — and a small message queued behind it dies with it. Batches stay well under that.
|
|
23
|
-
*/
|
|
24
15
|
static readonly defaultMaxBytes = 32 * 1024;
|
|
25
16
|
static readonly defaultMaxQueue = 1_000;
|
|
26
17
|
static readonly defaultMaxMessageChars = 16 * 1024;
|
|
18
|
+
static readonly #closeTimeoutMs = 1_000;
|
|
27
19
|
|
|
28
|
-
readonly #send: (message: AkanIpcMessage) => void;
|
|
20
|
+
readonly #send: (message: AkanIpcMessage, onSent?: () => void) => void;
|
|
29
21
|
readonly #flushMs: number;
|
|
30
22
|
readonly #maxRecords: number;
|
|
31
23
|
readonly #maxBytes: number;
|
|
32
24
|
readonly #maxQueue: number;
|
|
33
25
|
readonly #maxMessageChars: number;
|
|
34
26
|
readonly #alwaysOn = process.env.AKAN_LOG_STREAM === "1";
|
|
35
|
-
|
|
27
|
+
|
|
36
28
|
readonly #baseSev: number | null = Logger.isNdjson ? logSeverity[Logger.level] : null;
|
|
37
29
|
#queue: LogRecord[] = [];
|
|
38
30
|
#dropped = 0;
|
|
@@ -40,7 +32,7 @@ export class LogForwarder {
|
|
|
40
32
|
#removeSink: (() => void) | null = null;
|
|
41
33
|
#minSev: number | null = null;
|
|
42
34
|
|
|
43
|
-
constructor(send: (message: AkanIpcMessage) => void, options: LogForwarderOptions = {}) {
|
|
35
|
+
constructor(send: (message: AkanIpcMessage, onSent?: () => void) => void, options: LogForwarderOptions = {}) {
|
|
44
36
|
this.#send = send;
|
|
45
37
|
this.#flushMs = options.flushMs ?? LogForwarder.defaultFlushMs;
|
|
46
38
|
this.#maxRecords = options.maxRecords ?? LogForwarder.defaultMaxRecords;
|
|
@@ -50,7 +42,6 @@ export class LogForwarder {
|
|
|
50
42
|
if (this.minSev !== null) this.setMinSev(null);
|
|
51
43
|
}
|
|
52
44
|
|
|
53
|
-
/** The severity floor in force, or `null` when nothing is forwarded. */
|
|
54
45
|
get minSev(): number | null {
|
|
55
46
|
const base = this.#alwaysOn ? 0 : this.#baseSev;
|
|
56
47
|
if (base === null) return this.#minSev;
|
|
@@ -61,10 +52,6 @@ export class LogForwarder {
|
|
|
61
52
|
return this.#removeSink !== null;
|
|
62
53
|
}
|
|
63
54
|
|
|
64
|
-
get dropped() {
|
|
65
|
-
return this.#dropped;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
55
|
setMinSev(minSev: number | null) {
|
|
69
56
|
this.#minSev = minSev;
|
|
70
57
|
const floor = this.minSev;
|
|
@@ -79,7 +66,6 @@ export class LogForwarder {
|
|
|
79
66
|
});
|
|
80
67
|
}
|
|
81
68
|
|
|
82
|
-
/** Enqueues a record this process produced or relays for one below it; dropped when nobody is listening. */
|
|
83
69
|
push(record: LogRecord) {
|
|
84
70
|
const floor = this.minSev;
|
|
85
71
|
if (floor === null) return;
|
|
@@ -97,9 +83,10 @@ export class LogForwarder {
|
|
|
97
83
|
for (const record of records) this.push(record);
|
|
98
84
|
}
|
|
99
85
|
|
|
100
|
-
flush() {
|
|
86
|
+
flush(onSent?: () => void) {
|
|
101
87
|
if (this.#timer) clearTimeout(this.#timer);
|
|
102
88
|
this.#timer = null;
|
|
89
|
+
if (!this.#queue.length) onSent?.();
|
|
103
90
|
while (this.#queue.length) {
|
|
104
91
|
const batch: LogRecord[] = [];
|
|
105
92
|
let bytes = 0;
|
|
@@ -113,14 +100,24 @@ export class LogForwarder {
|
|
|
113
100
|
}
|
|
114
101
|
const dropped = this.#dropped;
|
|
115
102
|
this.#dropped = 0;
|
|
116
|
-
this.#send(
|
|
103
|
+
this.#send(
|
|
104
|
+
{ type: "log.records", records: batch, ...(dropped ? { dropped } : {}), pid: process.pid },
|
|
105
|
+
this.#queue.length ? undefined : onSent,
|
|
106
|
+
);
|
|
117
107
|
}
|
|
118
108
|
}
|
|
119
109
|
|
|
120
|
-
close() {
|
|
110
|
+
close(): Promise<void> {
|
|
121
111
|
this.#removeSink?.();
|
|
122
112
|
this.#removeSink = null;
|
|
123
|
-
|
|
113
|
+
return new Promise((resolve) => {
|
|
114
|
+
const timer = setTimeout(resolve, LogForwarder.#closeTimeoutMs);
|
|
115
|
+
timer.unref?.();
|
|
116
|
+
this.flush(() => {
|
|
117
|
+
clearTimeout(timer);
|
|
118
|
+
resolve();
|
|
119
|
+
});
|
|
120
|
+
});
|
|
124
121
|
}
|
|
125
122
|
|
|
126
123
|
#clip(record: LogRecord): LogRecord {
|
package/server/logging/logHub.ts
CHANGED
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Logger, type LogLevelInput, type LogRecord, logSeverity } from "akanjs/common";
|
|
2
2
|
|
|
3
|
-
/** Fields AND together; a list inside a field is an OR.
|
|
3
|
+
/** Fields AND together; a list inside a field is an OR. */
|
|
4
4
|
export interface LogQuery {
|
|
5
5
|
minSev?: number;
|
|
6
6
|
text?: string;
|
|
@@ -30,7 +30,7 @@ export class LogQueryMatcher {
|
|
|
30
30
|
|
|
31
31
|
matches(record: LogRecord): boolean {
|
|
32
32
|
const q = this.query;
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
if (q.minSev !== undefined && (record.level === null || (record.sev < q.minSev && !Logger.isPromoted(record))))
|
|
35
35
|
return false;
|
|
36
36
|
if (q.text !== undefined && !record.message.includes(q.text)) return false;
|
|
@@ -49,7 +49,7 @@ export class LogQueryMatcher {
|
|
|
49
49
|
return true;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
/** `*` is the only wildcard
|
|
52
|
+
/** `*` is the only wildcard (`mutation:*`, `*:userList`); everything else is literal. */
|
|
53
53
|
static compileGlob(pattern: string): RegExp {
|
|
54
54
|
const source = pattern
|
|
55
55
|
.split("*")
|
|
@@ -75,10 +75,7 @@ export class LogQueryMatcher {
|
|
|
75
75
|
return level in logSeverity ? logSeverity[level] : undefined;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
/**
|
|
79
|
-
* Reads a query off `URLSearchParams` or a parsed JSON object. Lists accept repeated keys and comma-separated
|
|
80
|
-
* values; `level=warn` is sugar for `minSev`; `since` accepts a duration.
|
|
81
|
-
*/
|
|
78
|
+
/** Lists take repeated keys or comma-separated values; `level` is sugar for `minSev`; `since` takes a duration. */
|
|
82
79
|
static parse(input: URLSearchParams | Record<string, unknown>, now = Date.now()): LogQuery {
|
|
83
80
|
const list = (key: string): string[] => {
|
|
84
81
|
const raw =
|
|
@@ -5,25 +5,15 @@ export interface LogStdoutWriterOptions {
|
|
|
5
5
|
write?: (line: string) => void;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
* The container's stdout in an ndjson deployment: one JSON record per line for everything the hub sees at or
|
|
10
|
-
* above the stdout level, from this process and every one it fronts. It is the only writer — `Logger.consoleOutput`
|
|
11
|
-
* is off in every server process — so a collector's parser is `json` and nothing else.
|
|
12
|
-
*/
|
|
13
8
|
export class LogStdoutWriter {
|
|
14
9
|
readonly #write: (line: string) => void;
|
|
15
10
|
#subscription: { unsubscribe(): void } | null;
|
|
16
11
|
|
|
17
12
|
constructor(hub: LogHub, { minSev, write }: LogStdoutWriterOptions) {
|
|
18
|
-
this.#write =
|
|
19
|
-
write ??
|
|
20
|
-
((line) => {
|
|
21
|
-
process.stdout.write(line);
|
|
22
|
-
});
|
|
13
|
+
this.#write = write ?? ((line) => void process.stdout.write(line));
|
|
23
14
|
this.#subscription = hub.subscribe({ minSev }, (entry) => this.#write(LogStdoutWriter.line(entry)));
|
|
24
15
|
}
|
|
25
16
|
|
|
26
|
-
/** `seq` rides along: `at` comes from several clocks, so it is what orders records from different processes. */
|
|
27
17
|
static json(entry: LogHubEntry) {
|
|
28
18
|
return { seq: entry.seq, ...entry.record };
|
|
29
19
|
}
|
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
import { timingSafeEqual } from "node:crypto";
|
|
2
|
-
import { EventStream } from "
|
|
2
|
+
import { EventStream } from "akanjs/common";
|
|
3
3
|
import type { LogHub, LogHubEntry } from "./logHub";
|
|
4
4
|
import { LogQueryMatcher } from "./logQuery";
|
|
5
5
|
import { LogStdoutWriter } from "./logStdoutWriter";
|
|
6
6
|
|
|
7
|
-
/**
|
|
8
|
-
* `GET /_akan/app/logs?level=warn&endpoint=mutation:*` — the hub as a `text/event-stream`, for a monitor watching
|
|
9
|
-
* one process from outside the pod. Every event carries the hub `seq` as its `id:`, so a client that reconnects
|
|
10
|
-
* with `Last-Event-ID` gets what it missed while the ring still holds it, and an explicit gap event when it does
|
|
11
|
-
* not — never a silent skip a monitor would read as a quiet interval.
|
|
12
|
-
*
|
|
13
|
-
* The route exists only when `AKAN_LOG_STREAM_TOKEN` is set, and answers only a matching bearer token. It logs
|
|
14
|
-
* nothing itself: a stream that logged its own subscriptions at the level it delivers would feed on itself.
|
|
15
|
-
*/
|
|
16
7
|
export class LogStreamRoute {
|
|
17
8
|
static readonly path = "/_akan/app/logs";
|
|
18
9
|
static readonly retryMs = 2_000;
|
|
@@ -37,8 +28,7 @@ export class LogStreamRoute {
|
|
|
37
28
|
return new Response("Unauthorized", { status: 401, headers: { "www-authenticate": "Bearer" } });
|
|
38
29
|
const hub = this.#hub();
|
|
39
30
|
if (!hub) return new Response("Log hub is not running", { status: 503 });
|
|
40
|
-
const
|
|
41
|
-
const query = LogQueryMatcher.parse(url.searchParams);
|
|
31
|
+
const query = LogQueryMatcher.parse(new URL(req.url).searchParams);
|
|
42
32
|
const matcher = new LogQueryMatcher(query);
|
|
43
33
|
let subscription: { unsubscribe(): void } | null = null;
|
|
44
34
|
const stream = new EventStream(
|
|
@@ -49,8 +39,8 @@ export class LogStreamRoute {
|
|
|
49
39
|
{ keepAliveMs: LogStreamRoute.heartbeatMs, keepAliveChunk: ": heartbeat\n\n" },
|
|
50
40
|
);
|
|
51
41
|
stream.retry(LogStreamRoute.retryMs);
|
|
52
|
-
const lastEventId =
|
|
53
|
-
if (lastEventId
|
|
42
|
+
const lastEventId = req.headers.get("last-event-id")?.trim();
|
|
43
|
+
if (lastEventId && /^\d+$/.test(lastEventId)) LogStreamRoute.#resume(hub, stream, matcher, Number(lastEventId));
|
|
54
44
|
subscription = hub.subscribe(query, (entry) => LogStreamRoute.#send(stream, entry));
|
|
55
45
|
return stream.response();
|
|
56
46
|
}
|
|
@@ -63,13 +53,6 @@ export class LogStreamRoute {
|
|
|
63
53
|
return presented.length === this.#token.length && timingSafeEqual(presented, this.#token);
|
|
64
54
|
}
|
|
65
55
|
|
|
66
|
-
static #lastEventId(req: Request): number | null {
|
|
67
|
-
const value = req.headers.get("last-event-id");
|
|
68
|
-
if (value === null || !/^\d+$/.test(value.trim())) return null;
|
|
69
|
-
return Number(value.trim());
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/** What arrived after `lastEventId`, preceded by a gap event when the ring no longer reaches back that far. */
|
|
73
56
|
static #resume(hub: LogHub, stream: EventStream, matcher: LogQueryMatcher, lastEventId: number) {
|
|
74
57
|
if (lastEventId > hub.seq) {
|
|
75
58
|
|
|
@@ -8,8 +8,6 @@ export interface LogTailHandlers {
|
|
|
8
8
|
onClose?: () => void;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
type Pending = { resolve: (response: LogControlResponse) => void; reject: (error: Error) => void };
|
|
12
|
-
|
|
13
11
|
/** Says the app is not running at all, as opposed to a request that failed once connected. */
|
|
14
12
|
export class LogControlUnavailableError extends Error {
|
|
15
13
|
readonly socketPath: string;
|
|
@@ -20,11 +18,6 @@ export class LogControlUnavailableError extends Error {
|
|
|
20
18
|
}
|
|
21
19
|
}
|
|
22
20
|
|
|
23
|
-
/**
|
|
24
|
-
* The client half of `LogControlSocket`: `akan logs` and the console's `.tail` both speak through it. Records
|
|
25
|
-
* stream to `onRecord`; every other line answers the oldest request still waiting, in order, because the
|
|
26
|
-
* socket answers in order.
|
|
27
|
-
*/
|
|
28
21
|
export class LogTailClient {
|
|
29
22
|
static socketPath(runtimeDir: string) {
|
|
30
23
|
return LogControlSocket.pathIn(runtimeDir);
|
|
@@ -63,7 +56,7 @@ export class LogTailClient {
|
|
|
63
56
|
}
|
|
64
57
|
|
|
65
58
|
readonly #handlers: LogTailHandlers;
|
|
66
|
-
readonly #pending:
|
|
59
|
+
readonly #pending: { resolve: (response: LogControlResponse) => void; reject: (error: Error) => void }[] = [];
|
|
67
60
|
#socket: Bun.Socket<undefined> | null = null;
|
|
68
61
|
#inbox = "";
|
|
69
62
|
#closed = false;
|
|
@@ -122,12 +122,10 @@ export class RotatingLogWriter {
|
|
|
122
122
|
async #createState(processKey: string, date: string): Promise<RotatingLogWriterState> {
|
|
123
123
|
const sequence = await this.#getNextSequence(processKey, date);
|
|
124
124
|
const filePath = this.#getFilePath(processKey, date, sequence);
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
sizeBytes = 0;
|
|
130
|
-
}
|
|
125
|
+
const sizeBytes = await stat(filePath).then(
|
|
126
|
+
(file) => file.size,
|
|
127
|
+
() => 0,
|
|
128
|
+
);
|
|
131
129
|
return { date, sequence, sizeBytes };
|
|
132
130
|
}
|
|
133
131
|
|
package/server/mcp/McpAuth.ts
CHANGED
|
@@ -4,26 +4,17 @@ import { clientAddressFromHeaders } from "akanjs/common";
|
|
|
4
4
|
import type { HttpRoutes } from "../types";
|
|
5
5
|
|
|
6
6
|
export interface McpAuthOption {
|
|
7
|
-
/**
|
|
8
|
-
* Where a client may obtain a token, published in the metadata document for it to discover. Naming one also
|
|
9
|
-
* makes a credential mandatory: an MCP client begins its OAuth flow only on a 401, so a server that let an
|
|
10
|
-
* anonymous `initialize` succeed would leave it connected to the anonymous shelf and never asking.
|
|
11
|
-
*/
|
|
7
|
+
/** Naming any makes a credential mandatory: an MCP client starts its OAuth flow only on a 401. */
|
|
12
8
|
authorizationServers?: string[];
|
|
13
|
-
/**
|
|
9
|
+
/** Declaring any turns `insufficient_scope` enforcement on. */
|
|
14
10
|
scopes?: string[];
|
|
15
11
|
/** Overrides the resource identifier when the public URL differs from what the request reports. */
|
|
16
12
|
resource?: string;
|
|
17
|
-
/**
|
|
18
|
-
* Verifies a bearer token's signature and returns its claims, or `null` for one this server did not mint. The
|
|
19
|
-
* framework holds no signing key, so the module that issues tokens supplies this through `option.setMcp`; without
|
|
20
|
-
* it the claims are read unverified and a forged token degrades to an anonymous caller instead of being refused.
|
|
21
|
-
*/
|
|
13
|
+
/** Claims, or `null` to refuse. Unset: claims are read unverified, so a forged token degrades to anonymous. */
|
|
22
14
|
verify?: (token: string) => PromiseOrObject<Record<string, unknown> | null>;
|
|
23
15
|
}
|
|
24
16
|
|
|
25
17
|
export interface McpAuthProps extends McpAuthOption {
|
|
26
|
-
/** Path the MCP endpoint is mounted at. Its absolute URL is this server's OAuth resource identifier. */
|
|
27
18
|
path: string;
|
|
28
19
|
}
|
|
29
20
|
|
|
@@ -33,13 +24,6 @@ interface McpAuthFailure {
|
|
|
33
24
|
description: string;
|
|
34
25
|
}
|
|
35
26
|
|
|
36
|
-
/**
|
|
37
|
-
* The OAuth 2.1 protected-resource half of the MCP authorization spec: the RFC 9728 metadata document, the
|
|
38
|
-
* `WWW-Authenticate` challenge that points at it, and the token checks that can be made without an issuer.
|
|
39
|
-
*
|
|
40
|
-
* The authorization server itself is a separate project. What lives here is what a resource server owes a
|
|
41
|
-
* client regardless of who mints the tokens, so wiring one up later needs no change on this side.
|
|
42
|
-
*/
|
|
43
27
|
export class McpAuth {
|
|
44
28
|
static readonly wellKnownPath = "/.well-known/oauth-protected-resource";
|
|
45
29
|
|
|
@@ -49,10 +33,6 @@ export class McpAuth {
|
|
|
49
33
|
this.#props = props;
|
|
50
34
|
}
|
|
51
35
|
|
|
52
|
-
/**
|
|
53
|
-
* Both spellings of the metadata path. RFC 9728 inserts the resource's path into the well-known URL, and MCP
|
|
54
|
-
* clients try that form first and the bare one second; serving only one leaves half the clients at a 404.
|
|
55
|
-
*/
|
|
56
36
|
createRoutes(): HttpRoutes {
|
|
57
37
|
const handler = { GET: (req: Request) => this.#metadata(req) };
|
|
58
38
|
return {
|
|
@@ -61,11 +41,6 @@ export class McpAuth {
|
|
|
61
41
|
};
|
|
62
42
|
}
|
|
63
43
|
|
|
64
|
-
/**
|
|
65
|
-
* A request that carried no credential at all gets a challenge with no `error` code — RFC 6750 §3.1 reserves
|
|
66
|
-
* the code for a credential that was presented and found wanting — so a client reads it as "authenticate",
|
|
67
|
-
* not as "your token is bad".
|
|
68
|
-
*/
|
|
69
44
|
unauthorized(req: Request, failure?: McpAuthFailure) {
|
|
70
45
|
const status = failure?.status ?? 401;
|
|
71
46
|
const description = failure?.description ?? "Authentication is required to use this MCP server.";
|
|
@@ -75,16 +50,6 @@ export class McpAuth {
|
|
|
75
50
|
);
|
|
76
51
|
}
|
|
77
52
|
|
|
78
|
-
/**
|
|
79
|
-
* Refuses a bearer token that is already provably unusable, before the signal pipeline sees it.
|
|
80
|
-
*
|
|
81
|
-
* With a `verify` hook the token is checked end to end and one that fails is refused outright. Without one the
|
|
82
|
-
* claims are read **without verifying the signature**, which is sound only because every branch below can deny
|
|
83
|
-
* and none can grant: a forged token still has to pass the app's own middleware afterwards, so the worst a
|
|
84
|
-
* crafted payload achieves is refusing itself. What this buys is the failure mode it removes — an expired or
|
|
85
|
-
* foreign token otherwise degrades to an anonymous caller, and the agent is told a tool does not exist rather
|
|
86
|
-
* than that it needs to authenticate.
|
|
87
|
-
*/
|
|
88
53
|
async reject(req: Request): Promise<Response | null> {
|
|
89
54
|
const token = McpAuth.#bearer(req);
|
|
90
55
|
if (!token) return null;
|
|
@@ -101,17 +66,11 @@ export class McpAuth {
|
|
|
101
66
|
return failure ? this.unauthorized(req, failure) : null;
|
|
102
67
|
}
|
|
103
68
|
|
|
104
|
-
/**
|
|
105
|
-
* The 401 a credential-less request gets once an authorization server is named. A server naming none keeps
|
|
106
|
-
* anonymous access, which is what a public catalogue wants; the public tools of a server naming one are still
|
|
107
|
-
* reachable, with the token the challenge sends the client off to obtain.
|
|
108
|
-
*/
|
|
109
69
|
challengeAnonymous(req: Request): Response | null {
|
|
110
70
|
if (!this.#props.authorizationServers?.length || McpAuth.#bearer(req)) return null;
|
|
111
71
|
return this.unauthorized(req);
|
|
112
72
|
}
|
|
113
73
|
|
|
114
|
-
/** A verifier that throws has said no: the token is refused, never let through as an anonymous caller. */
|
|
115
74
|
async #verified(token: string): Promise<Record<string, unknown> | null> {
|
|
116
75
|
try {
|
|
117
76
|
return (await this.#props.verify?.(token)) ?? null;
|
|
@@ -139,10 +98,6 @@ export class McpAuth {
|
|
|
139
98
|
return null;
|
|
140
99
|
}
|
|
141
100
|
|
|
142
|
-
/**
|
|
143
|
-
* Enforced only when `scopes` is configured, because this server's own tokens carry no scope claim at all —
|
|
144
|
-
* declaring one is how a deployment says its issuer mints them.
|
|
145
|
-
*/
|
|
146
101
|
#missingScopes(claims: Record<string, unknown>) {
|
|
147
102
|
const required = this.#props.scopes ?? [];
|
|
148
103
|
if (!required.length) return [];
|
|
@@ -183,12 +138,6 @@ export class McpAuth {
|
|
|
183
138
|
return this.#props.resource ?? new URL(this.#props.path, this.publicOrigin(req)).href;
|
|
184
139
|
}
|
|
185
140
|
|
|
186
|
-
/**
|
|
187
|
-
* The origin this server is known by. A configured `resource` settles it — that URL is what an authorization
|
|
188
|
-
* server issued `aud` for, so nothing a request says can be more authoritative — and only a server with none
|
|
189
|
-
* falls back to what the request reports. Every place that names the server to a client reads this: the
|
|
190
|
-
* resource identifier, the `resource_metadata` URL in the challenge, and `McpRouter`'s same-origin check.
|
|
191
|
-
*/
|
|
192
141
|
publicOrigin(req: Request) {
|
|
193
142
|
if (this.#props.resource) {
|
|
194
143
|
try {
|
|
@@ -199,19 +148,6 @@ export class McpAuth {
|
|
|
199
148
|
return McpAuth.origin(req);
|
|
200
149
|
}
|
|
201
150
|
|
|
202
|
-
/**
|
|
203
|
-
* The public origin as the request reports it, not the one the request arrived on. Behind a proxy `req.url`
|
|
204
|
-
* names the internal host the proxy dialed, and publishing that as the resource identifier is not cosmetic: an
|
|
205
|
-
* authorization server issues `aud` for the URL the *client* used, so every correctly-issued token would then
|
|
206
|
-
* fail the audience check.
|
|
207
|
-
*
|
|
208
|
-
* `x-forwarded-host` is a request header, so this is exactly as trustworthy as the edge that overwrites it, and
|
|
209
|
-
* a deployment whose edge merely appends leaves both the same-origin comparison and the audience a token is
|
|
210
|
-
* checked against to the caller. A browser cannot reach it — a custom header is not on a preflight, and the
|
|
211
|
-
* `OPTIONS` is judged on the real host — but a direct caller can. That is why `publicOrigin` prefers a
|
|
212
|
-
* configured `resource` (`AKAN_MCP_RESOURCE`, or what `libs/shared` derives from its issuer) and reads this only
|
|
213
|
-
* for a server that pinned nothing.
|
|
214
|
-
*/
|
|
215
151
|
static origin(req: Request) {
|
|
216
152
|
const url = new URL(req.url);
|
|
217
153
|
const forwarded = (header: string) => req.headers.get(header)?.split(",")[0]?.trim();
|
|
@@ -219,15 +155,6 @@ export class McpAuth {
|
|
|
219
155
|
return `${forwarded("x-forwarded-proto") ?? url.protocol.replace(":", "")}://${host}`;
|
|
220
156
|
}
|
|
221
157
|
|
|
222
|
-
/**
|
|
223
|
-
* Who a rate limit counts. A bearer token is one caller however many connections it opens: its session id,
|
|
224
|
-
* failing that its token id or subject, failing that the token itself hashed — an opaque token has nothing else.
|
|
225
|
-
* With no token the caller is the address a proxy recorded, and callers with no recorded address share one
|
|
226
|
-
* bucket, which is the right shape for a server that nothing fronts and that admits anonymous calls.
|
|
227
|
-
*
|
|
228
|
-
* Read unverified on purpose: this runs after `reject`, so a token that reaches it has already passed whatever
|
|
229
|
-
* verification the server has, and a key needs no more than that.
|
|
230
|
-
*/
|
|
231
158
|
static callerKey(req: Request): string {
|
|
232
159
|
const token = McpAuth.#bearer(req);
|
|
233
160
|
if (!token) return `ip:${clientAddressFromHeaders(req.headers) ?? "anonymous"}`;
|
|
@@ -237,13 +164,12 @@ export class McpAuth {
|
|
|
237
164
|
}
|
|
238
165
|
|
|
239
166
|
static #bearer(req: Request): string | null {
|
|
240
|
-
|
|
241
|
-
return scheme === "Bearer" && token ? token : null;
|
|
167
|
+
return /^Bearer +([^ ]+)/i.exec(req.headers.get("authorization") ?? "")?.[1] ?? null;
|
|
242
168
|
}
|
|
243
169
|
|
|
244
170
|
static #claims(token: string): Record<string, unknown> | null {
|
|
245
171
|
const segments = token.split(".");
|
|
246
|
-
|
|
172
|
+
|
|
247
173
|
if (segments.length !== 3) return null;
|
|
248
174
|
try {
|
|
249
175
|
const claims: unknown = JSON.parse(Buffer.from(segments[1], "base64url").toString("utf8"));
|