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/constant/crystalize.ts
CHANGED
|
@@ -13,16 +13,6 @@ import { ConstantRegistry } from "./constantRegistry";
|
|
|
13
13
|
export type CrystalizeFunc<Model> = (self: GetStateObject<Model>, isChild?: boolean) => Model;
|
|
14
14
|
export type Converter = (value: unknown) => unknown;
|
|
15
15
|
|
|
16
|
-
/**
|
|
17
|
-
* The relation instances one hydration pass has already built, by model class and then document id.
|
|
18
|
-
*
|
|
19
|
-
* A listing hands the same relation to every row that references it — twenty users wearing one avatar — and
|
|
20
|
-
* each row would otherwise build its own copy of it, re-parsing every `Date` on the way. Sharing is safe
|
|
21
|
-
* because a constant model is `[immerable]`: a store write copies before it mutates.
|
|
22
|
-
*
|
|
23
|
-
* Module-scoped rather than passed down, because `crystalize` is reached through a model's own constructor,
|
|
24
|
-
* which has nowhere to carry it. A pass is wholly synchronous, so no other one can observe this mid-flight.
|
|
25
|
-
*/
|
|
26
16
|
let sharedInstances: Map<Cls, Map<string, object>> | null = null;
|
|
27
17
|
|
|
28
18
|
/** Runs one hydration pass, sharing a relation instance across every value in it that names the same id. */
|
|
@@ -45,11 +35,11 @@ const relationIdOf = (value: object): string | null => {
|
|
|
45
35
|
|
|
46
36
|
const modelConverterOf = (props: FieldProps): Converter => {
|
|
47
37
|
const modelRef = props.modelRef as unknown as ModelCls;
|
|
48
|
-
|
|
38
|
+
|
|
49
39
|
if (props.isScalar) return (value) => (value instanceof modelRef ? value : new modelRef(value as object));
|
|
50
40
|
return (value) => {
|
|
51
41
|
if (value instanceof modelRef) return value;
|
|
52
|
-
|
|
42
|
+
|
|
53
43
|
const id = relationIdOf(value as object);
|
|
54
44
|
if (!sharedInstances || !id) return new modelRef(value as object);
|
|
55
45
|
const byId = sharedInstances.get(modelRef as unknown as Cls) ?? new Map<string, object>();
|
package/constant/dateSlot.ts
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
import { type Dayjs, dayjs } from "akanjs/base";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* A Date field stores a native `Date` under a per-key symbol and builds the `Dayjs` its type promises on first
|
|
5
|
-
* read, memoized by that `Date`. A dayjs instance is ~300 bytes and eight getter calls at construction; a `Date`
|
|
6
|
-
* is 40 bytes. A listing carries every row's dates and reads a handful of them, so this is most of what a
|
|
7
|
-
* hydrated list used to cost — see `crystalize`.
|
|
8
|
-
*
|
|
9
|
-
* The slot is a function of the key, not the class (`Symbol.for`): `applyMixins` copies a light model's accessors
|
|
10
|
-
* onto the full model's prototype, so an accessor and the `set()` that fills its slot must agree on the slot
|
|
11
|
-
* whichever class defined either one.
|
|
12
|
-
*/
|
|
13
3
|
const slotByKey = new Map<string, symbol>();
|
|
14
4
|
export const dateSlotOf = (key: string): symbol => {
|
|
15
5
|
const cached = slotByKey.get(key);
|
|
@@ -38,11 +28,6 @@ export const toDateValue = (value: unknown): Date | null | undefined => {
|
|
|
38
28
|
|
|
39
29
|
type DateSlotHolder = Record<symbol, Date | null | undefined>;
|
|
40
30
|
|
|
41
|
-
/**
|
|
42
|
-
* Enumerable so `for...in` — `plainFieldsOf`, `immerify`, `deepObjectify` — still sees the field. immer calls a
|
|
43
|
-
* prototype setter with the draft as `this`, so a write through the accessor stays copy-on-write, and the getter
|
|
44
|
-
* writes nothing, so a read never marks a draft modified.
|
|
45
|
-
*/
|
|
46
31
|
export const dateAccessorOf = (key: string): PropertyDescriptor => {
|
|
47
32
|
const slot = dateSlotOf(key);
|
|
48
33
|
return {
|
package/constant/fieldInfo.ts
CHANGED
|
@@ -106,12 +106,7 @@ export interface ConstantFieldProps<
|
|
|
106
106
|
validate?: (value: FieldValue, model: any) => boolean;
|
|
107
107
|
text?: TextFieldRole;
|
|
108
108
|
cascade?: CascadeAction;
|
|
109
|
-
/**
|
|
110
|
-
* Renders on the page, never reaches an agent. Stripped wherever a value is masked for an AI caller — the
|
|
111
|
-
* in-page agent's reads and every MCP result — and left untouched everywhere else, so a `File`'s blur
|
|
112
|
-
* placeholder still ships to `<Image>`. Unlike `hidden`/`secret` this is about cost, not secrecy: a field
|
|
113
|
-
* nothing can answer a question with is pure spend on every turn it rides.
|
|
114
|
-
*/
|
|
109
|
+
/** Stripped from every AI-facing read (in-page agent, MCP) and untouched everywhere else: cost, not secrecy. */
|
|
115
110
|
visual?: boolean;
|
|
116
111
|
meta?: Metadata;
|
|
117
112
|
}
|
|
@@ -279,7 +274,6 @@ export type FieldInfoObjectToFieldObject<Obj extends FieldInfoObject> = {
|
|
|
279
274
|
[K in keyof Obj]: ConstantFieldFromInfo<Obj[K]>;
|
|
280
275
|
};
|
|
281
276
|
|
|
282
|
-
/** Runtime metadata for a single Akan constant field. */
|
|
283
277
|
export class ConstantField<
|
|
284
278
|
FieldType extends ConstantFieldKind = ConstantFieldKind,
|
|
285
279
|
Value extends ConstantFieldTypeInput | null = any,
|
|
@@ -309,31 +303,31 @@ export class ConstantField<
|
|
|
309
303
|
count: field(Int, { default: 0, accumulate: {} }).toField(),
|
|
310
304
|
};
|
|
311
305
|
}
|
|
312
|
-
readonly nullable: Nullable;
|
|
313
|
-
readonly ref?: string;
|
|
314
|
-
readonly refPath?: string;
|
|
315
|
-
readonly refType?: "child" | "parent" | "relation";
|
|
316
|
-
readonly default: FieldValue | ((doc: { id: string }) => FieldValue);
|
|
317
|
-
readonly type?: FieldPreset;
|
|
318
|
-
readonly fieldType: FieldType;
|
|
319
|
-
readonly immutable: boolean;
|
|
320
|
-
readonly min?: number;
|
|
321
|
-
readonly max?: number;
|
|
322
|
-
readonly enum?: EnumInstance;
|
|
323
|
-
readonly select: boolean;
|
|
324
|
-
readonly minlength?: number;
|
|
325
|
-
readonly maxlength?: number;
|
|
326
|
-
readonly accumulate?: any;
|
|
327
|
-
readonly example?: FieldValue;
|
|
328
|
-
readonly of?: MapValue;
|
|
329
|
-
readonly validate?: (value: FieldValue, model: any) => boolean;
|
|
330
|
-
readonly text?: TextFieldRole;
|
|
331
|
-
readonly cascade?: CascadeAction;
|
|
332
|
-
readonly visual: boolean;
|
|
333
|
-
readonly modelRef: ConstantModelRef;
|
|
334
|
-
readonly arrDepth: number;
|
|
335
|
-
readonly optArrDepth: number;
|
|
336
|
-
readonly meta: Metadata;
|
|
306
|
+
declare readonly nullable: Nullable;
|
|
307
|
+
declare readonly ref?: string;
|
|
308
|
+
declare readonly refPath?: string;
|
|
309
|
+
declare readonly refType?: "child" | "parent" | "relation";
|
|
310
|
+
declare readonly default: FieldValue | ((doc: { id: string }) => FieldValue);
|
|
311
|
+
declare readonly type?: FieldPreset;
|
|
312
|
+
declare readonly fieldType: FieldType;
|
|
313
|
+
declare readonly immutable: boolean;
|
|
314
|
+
declare readonly min?: number;
|
|
315
|
+
declare readonly max?: number;
|
|
316
|
+
declare readonly enum?: EnumInstance;
|
|
317
|
+
declare readonly select: boolean;
|
|
318
|
+
declare readonly minlength?: number;
|
|
319
|
+
declare readonly maxlength?: number;
|
|
320
|
+
declare readonly accumulate?: any;
|
|
321
|
+
declare readonly example?: FieldValue;
|
|
322
|
+
declare readonly of?: MapValue;
|
|
323
|
+
declare readonly validate?: (value: FieldValue, model: any) => boolean;
|
|
324
|
+
declare readonly text?: TextFieldRole;
|
|
325
|
+
declare readonly cascade?: CascadeAction;
|
|
326
|
+
declare readonly visual: boolean;
|
|
327
|
+
declare readonly modelRef: ConstantModelRef;
|
|
328
|
+
declare readonly arrDepth: number;
|
|
329
|
+
declare readonly optArrDepth: number;
|
|
330
|
+
declare readonly meta: Metadata;
|
|
337
331
|
declare _isScalar: IsScalar;
|
|
338
332
|
declare _isRelation: IsRelation;
|
|
339
333
|
declare _isEnum: IsEnum;
|
|
@@ -342,31 +336,7 @@ export class ConstantField<
|
|
|
342
336
|
declare _isSecret: IsSecret;
|
|
343
337
|
declare _isMap: IsMap;
|
|
344
338
|
constructor(props: ConstantFieldBuildProps<FieldType, FieldValue, MapValue, Metadata>) {
|
|
345
|
-
this
|
|
346
|
-
this.ref = props.ref;
|
|
347
|
-
this.refPath = props.refPath;
|
|
348
|
-
this.refType = props.refType;
|
|
349
|
-
this.default = props.default;
|
|
350
|
-
this.type = props.type;
|
|
351
|
-
this.fieldType = props.fieldType;
|
|
352
|
-
this.immutable = props.immutable;
|
|
353
|
-
this.min = props.min;
|
|
354
|
-
this.max = props.max;
|
|
355
|
-
this.enum = props.enum;
|
|
356
|
-
this.select = props.select;
|
|
357
|
-
this.minlength = props.minlength;
|
|
358
|
-
this.maxlength = props.maxlength;
|
|
359
|
-
this.accumulate = props.accumulate;
|
|
360
|
-
this.example = props.example;
|
|
361
|
-
this.of = props.of;
|
|
362
|
-
this.validate = props.validate;
|
|
363
|
-
this.text = props.text;
|
|
364
|
-
this.cascade = props.cascade;
|
|
365
|
-
this.visual = props.visual;
|
|
366
|
-
this.modelRef = props.modelRef;
|
|
367
|
-
this.arrDepth = props.arrDepth;
|
|
368
|
-
this.optArrDepth = props.optArrDepth;
|
|
369
|
-
this.meta = props.meta;
|
|
339
|
+
Object.assign(this, props);
|
|
370
340
|
}
|
|
371
341
|
|
|
372
342
|
static fromFieldInfo<
|
|
@@ -468,57 +438,15 @@ export class ConstantField<
|
|
|
468
438
|
return this.#props;
|
|
469
439
|
}
|
|
470
440
|
#buildProps(): FieldProps {
|
|
471
|
-
return {
|
|
472
|
-
nullable: this.nullable as unknown as boolean,
|
|
473
|
-
ref: this.ref,
|
|
474
|
-
refPath: this.refPath,
|
|
475
|
-
refType: this.refType,
|
|
476
|
-
default: this.default,
|
|
477
|
-
type: this.type,
|
|
478
|
-
fieldType: this.fieldType,
|
|
479
|
-
immutable: this.immutable,
|
|
480
|
-
min: this.min,
|
|
481
|
-
max: this.max,
|
|
482
|
-
enum: this.enum,
|
|
483
|
-
select: this.select,
|
|
484
|
-
minlength: this.minlength,
|
|
485
|
-
maxlength: this.maxlength,
|
|
486
|
-
accumulate: this.accumulate,
|
|
487
|
-
example: this.example,
|
|
488
|
-
of: this.of,
|
|
489
|
-
validate: this.validate,
|
|
490
|
-
text: this.text,
|
|
491
|
-
cascade: this.cascade,
|
|
492
|
-
visual: this.visual,
|
|
493
|
-
modelRef: this.modelRef,
|
|
494
|
-
arrDepth: this.arrDepth,
|
|
495
|
-
optArrDepth: this.optArrDepth,
|
|
496
|
-
meta: this.meta,
|
|
497
|
-
isClass: this.isClass,
|
|
498
|
-
isScalar: this.isScalar,
|
|
499
|
-
isArray: this.isArray,
|
|
500
|
-
isMap: this.isMap,
|
|
501
|
-
};
|
|
441
|
+
return { ...this, isClass: this.isClass, isScalar: this.isScalar, isArray: this.isArray, isMap: this.isMap };
|
|
502
442
|
}
|
|
503
443
|
}
|
|
504
444
|
export interface FieldObject {
|
|
505
445
|
[key: string]: ConstantField;
|
|
506
446
|
}
|
|
507
447
|
|
|
508
|
-
/**
|
|
509
|
-
* `text` names a column in the plaintext search mirror, so a masked field carrying one would publish what it
|
|
510
|
-
* masks through search — the class build refuses it (`TextFieldPaths`). Removing the key from the option type
|
|
511
|
-
* moves that refusal to the call site, where the fix is obvious. Distributive because `FieldOption` is a union:
|
|
512
|
-
* a plain `Omit` over it would collapse to the keys the members share.
|
|
513
|
-
*/
|
|
514
448
|
type WithoutTextRole<Option> = Option extends unknown ? Omit<Option, "text"> : never;
|
|
515
449
|
|
|
516
|
-
/**
|
|
517
|
-
* A wildcard owner is read off the row at removal time, so `removeWithAny` without a `refPath` names nothing to
|
|
518
|
-
* read it from — and the price of that action (no cascade in the app removes in one query) is one nobody should
|
|
519
|
-
* pay for a declaration that cascades nothing. Pairing the two in the option type refuses it at the call site;
|
|
520
|
-
* `CascadePaths` keeps the same refusal for the macro and bundled paths that reach it without a typecheck.
|
|
521
|
-
*/
|
|
522
450
|
type CascadeOption =
|
|
523
451
|
| { cascade?: "removeRef" | "removeWith"; refPath?: string }
|
|
524
452
|
| { cascade: "removeWithAny"; refPath: string };
|
|
@@ -552,7 +480,6 @@ export type PlainTypeToFieldType<PlainType> = PlainType extends [infer First, ..
|
|
|
552
480
|
? StringConstructor
|
|
553
481
|
: typeof Any;
|
|
554
482
|
|
|
555
|
-
/** Builds a stored property field with optional validation, default, ref, text, and metadata options. */
|
|
556
483
|
export const field = <
|
|
557
484
|
ExplicitType,
|
|
558
485
|
Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>,
|
|
@@ -566,13 +493,7 @@ export const field = <
|
|
|
566
493
|
fieldType: "property",
|
|
567
494
|
});
|
|
568
495
|
|
|
569
|
-
/**
|
|
570
|
-
* A stored property the page renders and an agent never sees — `field(value, { visual: true })`, spelled short
|
|
571
|
-
* because the reason to reach for it is always the same one. A blur placeholder, a rendered HTML body, a
|
|
572
|
-
* serialized geometry: real data the screen needs, and hundreds of tokens per record that no question is answered
|
|
573
|
-
* from. It stays a plain `property` everywhere else, so persistence, search, forms and the page response are
|
|
574
|
-
* untouched.
|
|
575
|
-
*/
|
|
496
|
+
/** `field(value, { visual: true })`: a stored property the page renders and an agent never sees. */
|
|
576
497
|
field.visual = <
|
|
577
498
|
ExplicitType,
|
|
578
499
|
Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>,
|
|
@@ -613,7 +534,7 @@ field.secret = <
|
|
|
613
534
|
select: false,
|
|
614
535
|
nullable: true,
|
|
615
536
|
});
|
|
616
|
-
/**
|
|
537
|
+
/** A derived field, never stored. */
|
|
617
538
|
export const resolve = <
|
|
618
539
|
ExplicitType,
|
|
619
540
|
Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>,
|
|
@@ -2,19 +2,12 @@ import { FIELD_META } from "akanjs/base";
|
|
|
2
2
|
import { ConstantRegistry } from "./constantRegistry";
|
|
3
3
|
import type { FieldObject } from "./fieldInfo";
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
* The query a field's value stands for, declared on the field itself with `.meta(...)`. A summary counter is the
|
|
7
|
-
* case this exists for: `hau` is however many rows one filter returns, so the tile showing it can open that exact
|
|
8
|
-
* listing without the page restating the filter beside it.
|
|
9
|
-
*
|
|
10
|
-
* The shape is read structurally rather than by class, so an app declares it with whatever builder it already has.
|
|
11
|
-
*/
|
|
5
|
+
/** The query a field's value counts, declared with `.meta(...)`; read structurally, so any builder can produce it. */
|
|
12
6
|
export interface FieldQueryMeta {
|
|
13
|
-
/** The model the query runs against. */
|
|
14
7
|
refName: string;
|
|
15
8
|
/** One of that model's declared filter keys. */
|
|
16
9
|
queryKey: string | null;
|
|
17
|
-
/**
|
|
10
|
+
/** A thunk is read when the query is applied, so an arg relative to now stays current. */
|
|
18
11
|
queryArgs?: unknown[] | (() => unknown[]);
|
|
19
12
|
}
|
|
20
13
|
|
|
@@ -26,7 +19,6 @@ const isFieldQueryMeta = (meta: unknown): meta is FieldQueryMeta => {
|
|
|
26
19
|
return queryArgs === undefined || Array.isArray(queryArgs) || typeof queryArgs === "function";
|
|
27
20
|
};
|
|
28
21
|
|
|
29
|
-
/** The query one field of `refName` names, or nothing when the model, the field, or the declaration is absent. */
|
|
30
22
|
export const fieldQueryMetaOf = (refName: string, field: string): FieldQueryMeta | undefined => {
|
|
31
23
|
const cnst = ConstantRegistry.getDatabase(refName, { allowEmpty: true });
|
|
32
24
|
const fieldMap = cnst?.full[FIELD_META] as FieldObject | undefined;
|
package/constant/getDefault.ts
CHANGED
|
@@ -5,17 +5,13 @@ import type { DefaultOf } from "./types";
|
|
|
5
5
|
export interface DefaultPlan {
|
|
6
6
|
/** Fields whose default is a value that can be shared: a primitive, `null`, or the field's own literal. */
|
|
7
7
|
shared: Record<string, unknown>;
|
|
8
|
-
/** Fields
|
|
8
|
+
/** Fields produced per call: a thunk, a fresh array, a nested scalar record, or a primitive's structured default. */
|
|
9
9
|
perCall: Map<string, () => unknown>;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
const planCache = new WeakMap<FieldObject, DefaultPlan>();
|
|
13
13
|
|
|
14
|
-
/**
|
|
15
|
-
* The split is what keeps this faithful: `default: () => dayjs()` still means "now" on every call, and an array
|
|
16
|
-
* or nested-scalar default is still a fresh object, so two documents filled from the same model never end up
|
|
17
|
-
* sharing one. Only values that were already shared before this cache existed live in `shared`.
|
|
18
|
-
*/
|
|
14
|
+
/** A thunk default runs per call and an array or nested-scalar default is fresh, so no two results share one. */
|
|
19
15
|
export const getDefault = <T>(fieldObj: FieldObject): DefaultOf<T> => {
|
|
20
16
|
const plan = defaultPlanOf(fieldObj);
|
|
21
17
|
const result: Record<string, unknown> = { ...plan.shared };
|
|
@@ -23,7 +19,7 @@ export const getDefault = <T>(fieldObj: FieldObject): DefaultOf<T> => {
|
|
|
23
19
|
return result as DefaultOf<T>;
|
|
24
20
|
};
|
|
25
21
|
|
|
26
|
-
/**
|
|
22
|
+
/** Read per field by `HydrationPlan`, so a present value skips its default thunk. */
|
|
27
23
|
export const defaultPlanOf = (fieldObj: FieldObject): DefaultPlan => {
|
|
28
24
|
const cached = planCache.get(fieldObj);
|
|
29
25
|
if (cached) return cached;
|
|
@@ -49,7 +45,19 @@ const buildPlan = (fieldObj: FieldObject): DefaultPlan => {
|
|
|
49
45
|
else if (field.isClass) {
|
|
50
46
|
if (field.isScalar) perCall.set(key, () => getDefault(field.modelRef[FIELD_META]));
|
|
51
47
|
else shared[key] = null;
|
|
52
|
-
} else
|
|
48
|
+
} else {
|
|
49
|
+
const primitiveDefault = (field.modelRef as unknown as typeof PrimitiveScalar)[DEFAULT_VALUE];
|
|
50
|
+
if (isStructured(primitiveDefault)) perCall.set(key, () => structuredClone(primitiveDefault));
|
|
51
|
+
else shared[key] = primitiveDefault;
|
|
52
|
+
}
|
|
53
53
|
}
|
|
54
54
|
return { shared, perCall };
|
|
55
55
|
};
|
|
56
|
+
|
|
57
|
+
const isStructured = (value: unknown): value is object =>
|
|
58
|
+
typeof value === "object" &&
|
|
59
|
+
value !== null &&
|
|
60
|
+
(Array.isArray(value) || Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);
|
|
61
|
+
|
|
62
|
+
/** Copies a plain object or array; an instance (`Dayjs`, `Uint8Array`) is returned as is, keeping its prototype. */
|
|
63
|
+
export const freshPrimitiveValue = <T>(value: T): T => (isStructured(value) ? structuredClone(value) : value);
|
|
@@ -17,14 +17,6 @@ interface PlanOwner {
|
|
|
17
17
|
[FIELD_META]: FieldObject;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* One hydration plan per model class, compiled from `FIELD_META` on the first instance. Reading the field map,
|
|
22
|
-
* resolving `getProps()` and dispatching on the field kind used to happen per field per instance, and was most of
|
|
23
|
-
* what a listing paid after the dayjs objects — a plan turns a row into a plain loop over precomputed converters.
|
|
24
|
-
*
|
|
25
|
-
* Cached per class rather than per field map because `fullModelOf` extends a lib model's `FIELD_META` in place;
|
|
26
|
-
* `applyConstantStatics` resets the entry whenever it finishes wiring a class.
|
|
27
|
-
*/
|
|
28
20
|
export class HydrationPlan {
|
|
29
21
|
static #byClass = new WeakMap<object, HydrationPlan>();
|
|
30
22
|
static of(cls: PlanOwner): HydrationPlan {
|
|
@@ -47,7 +39,7 @@ export class HydrationPlan {
|
|
|
47
39
|
const convert: Converter = isDateSlot ? toDateValue : converterOf(props);
|
|
48
40
|
const perCall = defaults.perCall.get(key);
|
|
49
41
|
const rawDefault = perCall ?? (() => defaults.shared[key]);
|
|
50
|
-
|
|
42
|
+
|
|
51
43
|
return { key, target: isDateSlot ? dateSlotOf(key) : key, convert, makeDefault: () => convert(rawDefault()) };
|
|
52
44
|
});
|
|
53
45
|
}
|
package/constant/index.ts
CHANGED
package/constant/labelOf.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The one line a human scans for. A model that writes its own `Light<Model>.label()` owns the answer, since
|
|
3
|
-
* display logic is the Light class's job; otherwise it is derived from what the model already declared — the
|
|
4
|
-
* `text: "title"` search role names exactly that field, so an agent-facing label costs no new declaration.
|
|
5
|
-
* Falls back to the conventional `title`/`name` keys; the id is the caller's floor.
|
|
6
|
-
*/
|
|
1
|
+
/** The model's own `label()`, else its `text: "title"` field, else `title`/`name`; the id is the caller's floor. */
|
|
7
2
|
export const labelOf = (model: unknown, value: unknown): string | undefined => {
|
|
8
3
|
if (!value || typeof value !== "object") return undefined;
|
|
9
4
|
const source = value as Record<string, unknown>;
|
package/constant/mask.ts
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
import { FIELD_META } from "akanjs/base";
|
|
1
|
+
import { type Cls, FIELD_META, getNonArrayModel, type PrimitiveAgentFace, PrimitiveRegistry } from "akanjs/base";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* A model as masking reads it — the constructor, for the field metadata it carries at runtime.
|
|
5
|
-
*
|
|
6
|
-
* Structural rather than `ConstantModelRef` so that anything holding the class can name it, and read through
|
|
7
|
-
* `FIELD_META` the way `resolveReturn` reads it.
|
|
8
|
-
*/
|
|
3
|
+
/** Structural rather than `ConstantModelRef`, so anything holding the class can name it; read through `FIELD_META`. */
|
|
9
4
|
export interface MaskModel {
|
|
10
5
|
name: string;
|
|
11
6
|
}
|
|
12
7
|
|
|
13
|
-
/** The part of a field's metadata masking turns on. Mirrors what `resolveReturn` branches over. */
|
|
14
8
|
interface MaskField {
|
|
15
9
|
fieldType?: string;
|
|
16
10
|
isClass?: boolean;
|
|
11
|
+
isMap?: boolean;
|
|
17
12
|
modelRef?: MaskModel;
|
|
13
|
+
of?: unknown;
|
|
14
|
+
arrDepth?: number;
|
|
18
15
|
visual?: boolean;
|
|
19
16
|
}
|
|
20
17
|
|
|
@@ -23,12 +20,7 @@ export const maskFieldsOf = (model: MaskModel): Record<string, MaskField> | null
|
|
|
23
20
|
return fields && typeof fields === "object" ? (fields as Record<string, MaskField>) : null;
|
|
24
21
|
};
|
|
25
22
|
|
|
26
|
-
/**
|
|
27
|
-
* The `hidden` and `secret` field names of `model` that `value` still carries populated.
|
|
28
|
-
*
|
|
29
|
-
* `visual` is deliberately not among them. A refusal here means a value must not be published at all, and a blur
|
|
30
|
-
* placeholder is not a secret — it is merely not worth its tokens, which masking answers by dropping it.
|
|
31
|
-
*/
|
|
23
|
+
/** The `hidden`/`secret` fields `value` still carries; `visual` is cost, not secrecy, so it never counts as a leak. */
|
|
32
24
|
export const leakingFieldsOf = (model: MaskModel, value: Record<string, unknown>): string[] => {
|
|
33
25
|
const fields = maskFieldsOf(model);
|
|
34
26
|
if (!fields) return [];
|
|
@@ -38,19 +30,8 @@ export const leakingFieldsOf = (model: MaskModel, value: Record<string, unknown>
|
|
|
38
30
|
};
|
|
39
31
|
|
|
40
32
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* one — leave the field out — and this is the only place every AI-facing read already passes through.
|
|
44
|
-
*
|
|
45
|
-
* That distinction is the whole point. A check that reads the class off the value can only mask what arrives as an
|
|
46
|
-
* instance, so a `{ ...doc }` spread, a `toJSON()`, an `immerify()`, or a round-trip through `JSON.stringify` reaches
|
|
47
|
-
* its destination with the metadata already gone and nothing can be done about it. A named model is metadata the
|
|
48
|
-
* value cannot lose, so a hydrated document and a plain object copied out of one mask identically.
|
|
49
|
-
*
|
|
50
|
-
* This is the field half of `resolveReturn` and deliberately not the whole of it. That one also loads every relation
|
|
51
|
-
* it walks past, which is right for a query's return value and wrong here, where the value is already in hand.
|
|
52
|
-
*
|
|
53
|
-
* Returns `unknown` rather than the argument's type, because what comes back is missing fields that type promises.
|
|
33
|
+
* Drops `hidden`, `secret` and `visual` fields for every AI-facing read, by the model named rather than the value's
|
|
34
|
+
* class, so a spread or JSON copy masks the same; unlike `resolveReturn` it loads no relation.
|
|
54
35
|
*/
|
|
55
36
|
export const mask = (model: MaskModel, value: unknown): unknown => {
|
|
56
37
|
if (value === null || value === undefined || typeof value !== "object") return value;
|
|
@@ -61,22 +42,39 @@ export const mask = (model: MaskModel, value: unknown): unknown => {
|
|
|
61
42
|
const masked: Record<string, unknown> = {};
|
|
62
43
|
for (const [key, field] of Object.entries(fields)) {
|
|
63
44
|
if (field.fieldType === "hidden" || field.fieldType === "secret" || field.visual || !(key in source)) continue;
|
|
64
|
-
masked[key] =
|
|
45
|
+
masked[key] = maskField(field, source[key]);
|
|
65
46
|
}
|
|
66
47
|
return masked;
|
|
67
48
|
};
|
|
68
49
|
|
|
50
|
+
/** The primitive's `agent.read` through `arrDepth` array levels when it declares an agent face; the value otherwise. */
|
|
51
|
+
export const agentRead = (modelRef: unknown, value: unknown, arrDepth = 0): unknown => {
|
|
52
|
+
const face = PrimitiveRegistry.agentOf(modelRef);
|
|
53
|
+
return face ? readThrough(face, value, arrDepth) : value;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const readThrough = (face: PrimitiveAgentFace, value: unknown, arrDepth: number): unknown => {
|
|
57
|
+
if (value === null || value === undefined) return value;
|
|
58
|
+
if (arrDepth > 0 && Array.isArray(value)) return value.map((item) => readThrough(face, item, arrDepth - 1));
|
|
59
|
+
return face.read(value);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const maskField = (field: MaskField, value: unknown): unknown => {
|
|
63
|
+
if (field.isClass && field.modelRef) return mask(field.modelRef, value);
|
|
64
|
+
if (field.isMap) return maskMapValues(field.of, value);
|
|
65
|
+
return agentRead(field.modelRef, value, field.arrDepth ?? 0);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const maskMapValues = (of: unknown, value: unknown): unknown => {
|
|
69
|
+
const [valueRef, arrDepth] = getNonArrayModel(of as Cls);
|
|
70
|
+
if (!PrimitiveRegistry.agentOf(valueRef) || value === null || typeof value !== "object") return value;
|
|
71
|
+
const entries = value instanceof Map ? [...value.entries()] : Object.entries(value);
|
|
72
|
+
return Object.fromEntries(entries.map(([key, item]) => [key, agentRead(valueRef, item, arrDepth)]));
|
|
73
|
+
};
|
|
74
|
+
|
|
69
75
|
/**
|
|
70
|
-
* Drops
|
|
71
|
-
*
|
|
72
|
-
* The sibling of `mask()` for the one caller that is not an AI read: a saved form draft. Two differences matter.
|
|
73
|
-
* It keeps `visual` — a rendered body is exactly the field a user spent twenty minutes on, and dropping it from a
|
|
74
|
-
* draft loses the work the draft exists to protect. And it is subtractive rather than reconstructive: `mask()`
|
|
75
|
-
* builds its result from the field metadata, so a key the metadata does not name — `id`, which is what decides
|
|
76
|
-
* whether a form creates or updates — would not survive the round trip.
|
|
77
|
-
*
|
|
78
|
-
* `for...in` rather than `Object.keys`, because a model instance keeps its Date fields as enumerable prototype
|
|
79
|
-
* accessors.
|
|
76
|
+
* Drops only `hidden`/`secret`, for a saved form draft: `visual` is the user's work and a key the metadata does not
|
|
77
|
+
* name (`id`) must survive. `for...in` because Date fields are enumerable prototype accessors.
|
|
80
78
|
*/
|
|
81
79
|
export const stripSecrets = (model: MaskModel, value: unknown): unknown => {
|
|
82
80
|
if (value === null || value === undefined || typeof value !== "object") return value;
|
package/constant/purify.ts
CHANGED
|
@@ -66,14 +66,12 @@ export type PurifyFuncV2<
|
|
|
66
66
|
|
|
67
67
|
const getPurifyFn = (modelRef: Cls): ((value: unknown) => unknown) => {
|
|
68
68
|
const [valueRef] = getNonArrayModel(modelRef);
|
|
69
|
-
|
|
69
|
+
return PrimitiveRegistry.has(valueRef)
|
|
70
70
|
? (value: unknown) => (valueRef as unknown as typeof PrimitiveScalar)._serialize(value as never)
|
|
71
71
|
: (value: unknown) => value as object;
|
|
72
|
-
return purifyFn;
|
|
73
72
|
};
|
|
74
73
|
|
|
75
74
|
const purify = (field: FieldProps, key: string, value: unknown, self: Record<string, unknown>): unknown => {
|
|
76
|
-
|
|
77
75
|
if (
|
|
78
76
|
field.nullable &&
|
|
79
77
|
(value === null ||
|
|
@@ -111,13 +109,11 @@ const purify = (field: FieldProps, key: string, value: unknown, self: Record<str
|
|
|
111
109
|
throw new Error(`Invalid Value (Failed to pass validation) / ${value} in ${key}`);
|
|
112
110
|
if (!field.nullable && !value && value !== 0 && value !== false && (field.modelRef as Cls) !== Any)
|
|
113
111
|
throw new Error(`Invalid Value (Nullable) in ${key} for value ${value}`);
|
|
114
|
-
|
|
115
|
-
const purifyFn = getPurifyFn(field.modelRef);
|
|
116
|
-
return purifyFn(value);
|
|
112
|
+
return getPurifyFn(field.modelRef)(value);
|
|
117
113
|
};
|
|
118
114
|
|
|
119
|
-
export const makePurify = <I>(modelRef: ConstantModelRef<I>): PurifyFunc<I> =>
|
|
120
|
-
|
|
115
|
+
export const makePurify = <I>(modelRef: ConstantModelRef<I>): PurifyFunc<I> =>
|
|
116
|
+
((self: Record<string, unknown>, isChild?: boolean): unknown => {
|
|
121
117
|
try {
|
|
122
118
|
if (isChild && !ConstantRegistry.isScalar(modelRef)) {
|
|
123
119
|
const id = self.id as string;
|
|
@@ -125,10 +121,8 @@ export const makePurify = <I>(modelRef: ConstantModelRef<I>): PurifyFunc<I> => {
|
|
|
125
121
|
return id;
|
|
126
122
|
}
|
|
127
123
|
const result: Record<string, unknown> = {};
|
|
128
|
-
Object.entries(modelRef[FIELD_META])
|
|
129
|
-
|
|
130
|
-
result[key] = purify(field.getProps(), key, value, self) as object;
|
|
131
|
-
});
|
|
124
|
+
for (const [key, field] of Object.entries(modelRef[FIELD_META]))
|
|
125
|
+
result[key] = purify(field.getProps(), key, self[key], self);
|
|
132
126
|
return result;
|
|
133
127
|
} catch (err) {
|
|
134
128
|
if (isChild) throw new Error(err as string);
|
|
@@ -136,5 +130,3 @@ export const makePurify = <I>(modelRef: ConstantModelRef<I>): PurifyFunc<I> => {
|
|
|
136
130
|
return null;
|
|
137
131
|
}
|
|
138
132
|
}) as PurifyFunc<I>;
|
|
139
|
-
return fn;
|
|
140
|
-
};
|
package/constant/serialize.ts
CHANGED
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
applyFnToArrayObjects,
|
|
4
4
|
type Cls,
|
|
5
5
|
type Dayjs,
|
|
6
|
+
type EnumInstance,
|
|
6
7
|
FIELD_META,
|
|
7
8
|
getNonArrayModel,
|
|
8
9
|
ID,
|
|
@@ -10,7 +11,7 @@ import {
|
|
|
10
11
|
type PrimitiveScalar,
|
|
11
12
|
} from "akanjs/base";
|
|
12
13
|
|
|
13
|
-
import type
|
|
14
|
+
import { type ConstantCls, type ConstantModelRef, ConstantRegistry, type FieldProps, withSharedInstances } from ".";
|
|
14
15
|
|
|
15
16
|
export type Serialized<O> = O extends (infer V)[]
|
|
16
17
|
? Serialized<V>[]
|
|
@@ -22,12 +23,10 @@ export type Serialized<O> = O extends (infer V)[]
|
|
|
22
23
|
? { [K in keyof O]: Serialized<O[K]> }
|
|
23
24
|
: O;
|
|
24
25
|
|
|
25
|
-
const getSerializeFn = (inputRef: Cls, { optional = false }: { optional?: boolean } = {}) =>
|
|
26
|
-
|
|
26
|
+
const getSerializeFn = (inputRef: Cls, { optional = false }: { optional?: boolean } = {}) =>
|
|
27
|
+
PrimitiveRegistry.has(inputRef)
|
|
27
28
|
? (value: unknown) => (inputRef as typeof PrimitiveScalar)._serialize(value as never, { optional })
|
|
28
29
|
: (value: unknown) => value as object;
|
|
29
|
-
return serializeFn;
|
|
30
|
-
};
|
|
31
30
|
const serializeInput = <Input = unknown>(
|
|
32
31
|
value: Input | Input[],
|
|
33
32
|
inputRef: ConstantModelRef<Input> | PrimitiveScalar,
|
|
@@ -86,3 +85,81 @@ export const serialize = (
|
|
|
86
85
|
throw new Error(`Invalid Value (Nullable) in ${argRef} for value ${value}${key ? ` in ${key}` : ""}`);
|
|
87
86
|
return serializeInput(value, argRef, arrDepth, serializeType, { optional: nullable }) as object[];
|
|
88
87
|
};
|
|
88
|
+
|
|
89
|
+
const getDeserializeFn = (inputRef: ConstantModelRef | PrimitiveScalar) =>
|
|
90
|
+
PrimitiveRegistry.has(inputRef as Cls)
|
|
91
|
+
? (value: unknown) => (inputRef as unknown as typeof PrimitiveScalar)._parse(value as never)
|
|
92
|
+
: (value: unknown) => value as object;
|
|
93
|
+
const deserializeMap = (value: unknown, field: Pick<FieldProps, "of">) => {
|
|
94
|
+
if (!field.of) return value;
|
|
95
|
+
return Object.fromEntries(
|
|
96
|
+
Object.entries(value as Record<string, unknown>).map(([key, val]) => [
|
|
97
|
+
key,
|
|
98
|
+
applyFnToArrayObjects(val, (v: never) => deserializeInput(v, field.of as ConstantModelRef, 0)),
|
|
99
|
+
]),
|
|
100
|
+
);
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const deserializeInput = <Input = unknown>(
|
|
104
|
+
value: Input | Input[],
|
|
105
|
+
inputRef: ConstantModelRef<Input> | PrimitiveScalar,
|
|
106
|
+
arrDepth: number,
|
|
107
|
+
convertFn: (value: unknown) => unknown = (value: unknown) => value,
|
|
108
|
+
): Input | Input[] => {
|
|
109
|
+
if (arrDepth && Array.isArray(value))
|
|
110
|
+
return value.map((v) => deserializeInput(v, inputRef, arrDepth - 1, convertFn) as Input) as unknown as Input[];
|
|
111
|
+
if ((inputRef as ConstantCls).prototype === Map.prototype) {
|
|
112
|
+
const deserializeFn = getDeserializeFn(inputRef);
|
|
113
|
+
const entries = value instanceof Map ? [...value.entries()] : Object.entries(value as Record<string, unknown>);
|
|
114
|
+
return convertFn(
|
|
115
|
+
Object.fromEntries(entries.map(([key, val]) => [key, applyFnToArrayObjects(val, deserializeFn)])),
|
|
116
|
+
) as Input;
|
|
117
|
+
}
|
|
118
|
+
if (PrimitiveRegistry.has(inputRef as Cls)) return convertFn(getDeserializeFn(inputRef)(value)) as Input;
|
|
119
|
+
if (!ConstantRegistry.isScalar(inputRef as Cls)) return convertFn(value) as Input;
|
|
120
|
+
return convertFn(
|
|
121
|
+
Object.fromEntries(
|
|
122
|
+
Object.entries((inputRef as ConstantCls)[FIELD_META]).map(([key, field]) => [
|
|
123
|
+
key,
|
|
124
|
+
field.isMap
|
|
125
|
+
? deserializeMap((value as Record<string, unknown>)[key], field.getProps())
|
|
126
|
+
: deserialize(field.modelRef, field.arrDepth, (value as Record<string, unknown>)[key], {
|
|
127
|
+
key,
|
|
128
|
+
nullable: field.nullable,
|
|
129
|
+
enum: field.enum,
|
|
130
|
+
}),
|
|
131
|
+
]),
|
|
132
|
+
),
|
|
133
|
+
) as Input;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
interface DeserializeOption {
|
|
137
|
+
key?: string;
|
|
138
|
+
nullable?: boolean;
|
|
139
|
+
convertFn?: (value: unknown) => unknown;
|
|
140
|
+
enum?: EnumInstance;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const assertEnumValue = (enumRef: EnumInstance, value: unknown, key?: string): void => {
|
|
144
|
+
if (Array.isArray(value)) {
|
|
145
|
+
for (const item of value) assertEnumValue(enumRef, item, key);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (value === null || value === undefined || enumRef.has(value as never)) return;
|
|
149
|
+
throw new Error(`Invalid Enum Value in ${key}: ${String(value)} is not one of ${enumRef.values.join(", ")}`);
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
export const deserialize = (
|
|
153
|
+
argRef: ConstantModelRef | PrimitiveScalar,
|
|
154
|
+
arrDepth: number,
|
|
155
|
+
value: unknown,
|
|
156
|
+
{ key, nullable = false, convertFn, enum: enumRef }: DeserializeOption,
|
|
157
|
+
) => {
|
|
158
|
+
if (nullable && (value === null || value === undefined)) return null;
|
|
159
|
+
else if (!nullable && (value === null || value === undefined) && argRef !== Any)
|
|
160
|
+
throw new Error(`Invalid Value (Nullable) in ${key} ${argRef} for value ${value}`);
|
|
161
|
+
|
|
162
|
+
const result = withSharedInstances(() => deserializeInput(value, argRef, arrDepth, convertFn)) as object[];
|
|
163
|
+
if (enumRef) assertEnumValue(enumRef, result, key);
|
|
164
|
+
return result;
|
|
165
|
+
};
|