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
|
@@ -5,24 +5,7 @@ import { AgenticSurface, useScopePath, useSurface } from "../../vendor/use-agent
|
|
|
5
5
|
import { useEffect, useRef } from "../hooks";
|
|
6
6
|
import { FormFields } from "./formFields";
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
* One tool that fills several fields of a form at once, published while a component subscribes `<model>Form`.
|
|
10
|
-
*
|
|
11
|
-
* The per-field setters are published by the controls themselves (`useFieldTool`), which is what keeps them to
|
|
12
|
-
* the fields this screen draws. This one exists for what a control cannot reach: a list, a map, an embedded
|
|
13
|
-
* object — the shapes a `st.tool` argument cannot describe one control at a time — and for filling a fresh form
|
|
14
|
-
* in one call. It is a patch, not a replacement, so it never clears what the person already typed.
|
|
15
|
-
*
|
|
16
|
-
* Its schema is every writable field of the model, because a declaration is mount-static and cannot know which
|
|
17
|
-
* controls will render. The **guard** is where the screen gets its say: a plain field has to have published its
|
|
18
|
-
* own setter, and a composite is waved through because its rows are written with `writeOn<Model>(path, value)`,
|
|
19
|
-
* which no control can annotate — so this is the one place an agent can reach a field the screen may not show.
|
|
20
|
-
*
|
|
21
|
-
* The entry is a pure function of `refName`: the schema comes from the model, the guard re-reads the live surface,
|
|
22
|
-
* and every `write` reaches the one store instance. So a form put on screen by a shell that subscribes it
|
|
23
|
-
* (`Model.EditModal`) and by the `Template` inside it registers one declaration twice — the same description both
|
|
24
|
-
* times, which is what the surface reads as interchangeable rather than as a clash an app has to suppress.
|
|
25
|
-
*/
|
|
8
|
+
/** Publishes `fill<Model>Form`: a patch over every writable field, gated per field by the controls on screen. */
|
|
26
9
|
export const useFormTools = (refName: string | null, write: (action: string, value: unknown) => void) => {
|
|
27
10
|
const surface = useSurface();
|
|
28
11
|
const scope = useScopePath();
|
|
@@ -59,16 +42,16 @@ export const useFormTools = (refName: string | null, write: (action: string, val
|
|
|
59
42
|
}.`;
|
|
60
43
|
},
|
|
61
44
|
run: (args) => {
|
|
62
|
-
|
|
45
|
+
|
|
63
46
|
const patch = Object.entries(args).map(([key, value]) => {
|
|
64
47
|
const entry = byKey.get(key);
|
|
65
48
|
if (!entry) throw new Error(`The ${refName} form has no field "${key}".`);
|
|
66
49
|
return { entry, value: FormFields.checked(name, key, entry.field, value) };
|
|
67
50
|
});
|
|
68
|
-
|
|
51
|
+
|
|
69
52
|
for (const { entry, value } of patch) {
|
|
70
53
|
const control = surface.tool(AgenticSurface.fullName(scope, entry.action), scope);
|
|
71
|
-
if (control) void control.run({ value });
|
|
54
|
+
if (control?.run) void control.run({ value });
|
|
72
55
|
else live.current(entry.action, value);
|
|
73
56
|
}
|
|
74
57
|
},
|
|
@@ -10,25 +10,12 @@ import { FormFields } from "./formFields";
|
|
|
10
10
|
export interface RelationFieldSource<T extends { id: string }> {
|
|
11
11
|
/** Read live from the store rather than closed over: `load` below changes the list mid-call. */
|
|
12
12
|
read: () => DataList<T>;
|
|
13
|
-
/** Loads the options an agent never opened the dropdown to fetch. */
|
|
14
13
|
load: () => Promise<unknown> | unknown;
|
|
15
|
-
/** How one option reads to a person, so the agent can match what it sees on screen. */
|
|
16
14
|
label: (model: T) => string;
|
|
17
15
|
disabled?: boolean;
|
|
18
16
|
}
|
|
19
17
|
|
|
20
|
-
/**
|
|
21
|
-
* The two tools a relation picker owes an agent: list the documents it can pick, then pick by id.
|
|
22
|
-
*
|
|
23
|
-
* `FormFields` publishes no schema for a relation, and it is right not to — the form holds the whole related
|
|
24
|
-
* document, so an id would need a lookup the store does not do. The picker is where that lookup lives: it holds
|
|
25
|
-
* the slice list, the loader, and the label each option renders with. So the field reaches an agent from the one
|
|
26
|
-
* component that can resolve it, which is the rule every other control follows — the control is the declaration.
|
|
27
|
-
*
|
|
28
|
-
* Listing is its own tool because loading is its own step for a person too: the options arrive when the dropdown
|
|
29
|
-
* opens, and an agent never opens it. Folding the load into the setter would leave an agent guessing ids in order
|
|
30
|
-
* to learn them from the refusal.
|
|
31
|
-
*/
|
|
18
|
+
/** A relation picker's two tools: list the pickable documents (loading them first), then set by id. */
|
|
32
19
|
export const useRelationFieldTool = <T extends { id: string }>(
|
|
33
20
|
onChange: unknown,
|
|
34
21
|
{ read, load, label, disabled }: RelationFieldSource<T>,
|
|
@@ -43,7 +30,7 @@ export const useRelationFieldTool = <T extends { id: string }>(
|
|
|
43
30
|
if (!action || disabled) return;
|
|
44
31
|
const ref = FormFields.ref(action);
|
|
45
32
|
const target = ref && FormFields.relationOf(ref.field);
|
|
46
|
-
|
|
33
|
+
|
|
47
34
|
if (!ref || !target || FormFields.schema(ref.field)) return;
|
|
48
35
|
const many = ref.field.arrDepth > 0;
|
|
49
36
|
const nullable = !!ref.field.nullable && !many;
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import { capitalize } from "akanjs/common";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* The state keys every model store holds, and which of the model's five classes each one is an instance of.
|
|
5
|
-
*
|
|
6
|
-
* Shared with the agent catalogue, which needs the class rather than the key: a value read out of the store is
|
|
7
|
-
* masked by the model it belongs to, and `immerify` drops the constructor, so the live value cannot say what it is.
|
|
8
|
-
* `modelForm` is the one that matters most — it is an `Input` holding whatever the user has typed, credentials
|
|
9
|
-
* included, and it reaches the catalogue as a plain object.
|
|
10
|
-
*/
|
|
11
3
|
export const databaseStateNames = (refName: string) => {
|
|
12
4
|
const className = capitalize(refName);
|
|
13
5
|
return {
|
|
@@ -24,7 +16,6 @@ export const databaseStateNames = (refName: string) => {
|
|
|
24
16
|
};
|
|
25
17
|
};
|
|
26
18
|
|
|
27
|
-
/** Which of the model's classes each generated state key holds, for the keys that hold one at all. */
|
|
28
19
|
export const databaseStateModelTypes = {
|
|
29
20
|
model: "full",
|
|
30
21
|
modelForm: "input",
|
package/store/draftStore.ts
CHANGED
|
@@ -11,13 +11,8 @@ const MAX_DRAFT_CHARS = 256_000;
|
|
|
11
11
|
const DRAFT_TTL_MS = 7 * 24 * 60 * 60 * 1000;
|
|
12
12
|
const MAX_DRAFTS_PER_IDENTITY = 30;
|
|
13
13
|
|
|
14
|
-
/**
|
|
15
|
-
* The claims a re-issued token rewrites. Hashing them would rotate the identity on every silent refresh and
|
|
16
|
-
* orphan the draft the user is still typing into.
|
|
17
|
-
*/
|
|
18
14
|
const VOLATILE_CLAIMS = ["iat", "exp", "nbf", "jti"] as const;
|
|
19
15
|
|
|
20
|
-
/** The fields a form carries from its row rather than from what the user typed. */
|
|
21
16
|
const RECORD_STAMPS = new Set(["createdAt", "updatedAt", "removedAt"]);
|
|
22
17
|
|
|
23
18
|
export interface DraftRecord {
|
|
@@ -37,12 +32,7 @@ interface NewScopeInput {
|
|
|
37
32
|
routePath: string;
|
|
38
33
|
}
|
|
39
34
|
|
|
40
|
-
/**
|
|
41
|
-
* Where a form draft lives and what identifies it.
|
|
42
|
-
*
|
|
43
|
-
* Every method that touches storage is async even though localStorage is not, so the backend can move to
|
|
44
|
-
* IndexedDB — which a model with a large `visual` field will eventually force — without a caller changing.
|
|
45
|
-
*/
|
|
35
|
+
/** Storage methods are async although localStorage is not, so the backend can move to IndexedDB unchanged. */
|
|
46
36
|
export class DraftStore {
|
|
47
37
|
static #warnedKeys = new Set<string>();
|
|
48
38
|
static #persistenceRequested = false;
|
|
@@ -63,7 +53,6 @@ export class DraftStore {
|
|
|
63
53
|
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
64
54
|
}
|
|
65
55
|
|
|
66
|
-
/** Key-sorted JSON, so two objects that differ only in insertion order hash the same. */
|
|
67
56
|
static #stableStringify(value: unknown): string {
|
|
68
57
|
if (value === null || typeof value !== "object") return JSON.stringify(value) ?? "null";
|
|
69
58
|
if (Array.isArray(value)) return `[${value.map((item) => DraftStore.#stableStringify(item)).join(",")}]`;
|
|
@@ -74,13 +63,6 @@ export class DraftStore {
|
|
|
74
63
|
return `{${entries.join(",")}}`;
|
|
75
64
|
}
|
|
76
65
|
|
|
77
|
-
/**
|
|
78
|
-
* A seed reduced to what actually names a context: primitive leaves and relation ids.
|
|
79
|
-
*
|
|
80
|
-
* Dates are dropped because a `default: () => dayjs()` in the seed would give the same form a different key on
|
|
81
|
-
* every open, and a relation collapses to its id because the rest of the object is display data the caller may
|
|
82
|
-
* or may not have hydrated.
|
|
83
|
-
*/
|
|
84
66
|
static #canonicalSeed(value: unknown, depth = 0): unknown {
|
|
85
67
|
if (value === null || value === undefined || typeof value === "function") return undefined;
|
|
86
68
|
if (value instanceof Date || isDayjs(value)) return undefined;
|
|
@@ -96,13 +78,7 @@ export class DraftStore {
|
|
|
96
78
|
return Object.fromEntries(entries);
|
|
97
79
|
}
|
|
98
80
|
|
|
99
|
-
/**
|
|
100
|
-
* Who this browser is holding a draft for, derived from the auth token rather than from a domain field.
|
|
101
|
-
*
|
|
102
|
-
* `Account` guarantees `appName` and `environment` and nothing else — `userId` lives in the app's own `AddData`,
|
|
103
|
-
* so naming it here would key the draft on a field that may not exist and silently share one scope between two
|
|
104
|
-
* signed-in users. Hashing the whole payload picks up whatever the app did put there under whatever name.
|
|
105
|
-
*/
|
|
81
|
+
/** Hashes the whole JWT payload: the claim naming the user lives in the app's own `AddData`, not in `Account`. */
|
|
106
82
|
static identity(): string {
|
|
107
83
|
if (typeof window === "undefined") return "anon";
|
|
108
84
|
const jwt = getAuthToken();
|
|
@@ -112,7 +88,6 @@ export class DraftStore {
|
|
|
112
88
|
for (const claim of VOLATILE_CLAIMS) delete payload[claim];
|
|
113
89
|
return DraftStore.#hash8(DraftStore.#stableStringify(payload));
|
|
114
90
|
} catch {
|
|
115
|
-
|
|
116
91
|
return "anon";
|
|
117
92
|
}
|
|
118
93
|
}
|
|
@@ -141,17 +116,11 @@ export class DraftStore {
|
|
|
141
116
|
return immerify(modelRef, new modelRef().set(plain) as object);
|
|
142
117
|
}
|
|
143
118
|
|
|
144
|
-
/** What the dirty check compares. Cheap enough to take once per debounce window, not once per keystroke. */
|
|
145
119
|
static formHash(refName: string, form: object): string {
|
|
146
120
|
return DraftStore.#hash8(DraftStore.#stableStringify(DraftStore.encodeForm(refName, form)));
|
|
147
121
|
}
|
|
148
122
|
|
|
149
|
-
/**
|
|
150
|
-
* What two encoded forms holding the same values hash to, whatever record stamps they carry.
|
|
151
|
-
*
|
|
152
|
-
* The stamps come from the row rather than from the user, so a save the form made itself moves `updatedAt` and
|
|
153
|
-
* would otherwise make a draft look different from the record that already holds it.
|
|
154
|
-
*/
|
|
123
|
+
/** Ignores the record stamps, which a form's own save moves. */
|
|
155
124
|
static contentHash(encoded: Record<string, unknown>): string {
|
|
156
125
|
const content = Object.fromEntries(Object.entries(encoded).filter(([key]) => !RECORD_STAMPS.has(key)));
|
|
157
126
|
return DraftStore.#hash8(DraftStore.#stableStringify(content));
|
|
@@ -176,7 +145,6 @@ export class DraftStore {
|
|
|
176
145
|
}
|
|
177
146
|
return record;
|
|
178
147
|
} catch {
|
|
179
|
-
|
|
180
148
|
await DraftStore.remove(key);
|
|
181
149
|
return null;
|
|
182
150
|
}
|
|
@@ -243,16 +211,7 @@ export class DraftStore {
|
|
|
243
211
|
}
|
|
244
212
|
}
|
|
245
213
|
|
|
246
|
-
/**
|
|
247
|
-
* Clears what a previous user left on this device, on noticing that the signed-in user changed.
|
|
248
|
-
*
|
|
249
|
-
* Called at boot and whenever a form arms a draft, which covers both a reload and a sign-out followed by a
|
|
250
|
-
* sign-in inside the same page session. The gap is a sign-out with no sign-in and no reload after it: those
|
|
251
|
-
* drafts sit under a key the next user's identity cannot address, and the TTL sweep takes them.
|
|
252
|
-
*
|
|
253
|
-
* A sign-out on its own reads as `anon`, and `anon` is never wiped — nothing distinguishes two anonymous
|
|
254
|
-
* users, so there is no previous one to clear.
|
|
255
|
-
*/
|
|
214
|
+
/** Removes the previous identity's drafts once the signed-in identity changes; `anon`'s are never removed. */
|
|
256
215
|
static async reconcileIdentity(): Promise<void> {
|
|
257
216
|
const storage = DraftStore.#storage();
|
|
258
217
|
if (!storage) return;
|
|
@@ -264,19 +223,11 @@ export class DraftStore {
|
|
|
264
223
|
if (last === current) return;
|
|
265
224
|
storage.setItem(key, current);
|
|
266
225
|
} catch {
|
|
267
|
-
|
|
268
226
|
return;
|
|
269
227
|
}
|
|
270
228
|
if (last && last !== "anon") await DraftStore.removeIdentity(last);
|
|
271
229
|
}
|
|
272
230
|
|
|
273
|
-
/**
|
|
274
|
-
* Asks the browser to stop counting this origin as evictable.
|
|
275
|
-
*
|
|
276
|
-
* A WKWebView drops "best effort" storage under pressure, which is exactly the moment a user's unsaved work
|
|
277
|
-
* would disappear. Requested once, after a write has actually succeeded — asking before there is anything to
|
|
278
|
-
* protect can surface a permission prompt for nothing.
|
|
279
|
-
*/
|
|
280
231
|
static #requestPersistence() {
|
|
281
232
|
if (DraftStore.#persistenceRequested) return;
|
|
282
233
|
DraftStore.#persistenceRequested = true;
|
|
@@ -313,7 +264,6 @@ export class DraftStore {
|
|
|
313
264
|
const time = new Date((JSON.parse(raw) as DraftRecord).savedAt).getTime();
|
|
314
265
|
return Number.isNaN(time) ? null : time;
|
|
315
266
|
} catch {
|
|
316
|
-
|
|
317
267
|
return null;
|
|
318
268
|
}
|
|
319
269
|
}
|
package/store/formSetterNames.ts
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { capitalize, lowerlize } from "akanjs/common";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* The keys `makeFormSetter` publishes for one field of one model.
|
|
5
|
-
*
|
|
6
|
-
* Computed forward from the field metadata rather than parsed back out of a key: `set(.+)On(.+)` has more than one
|
|
7
|
-
* reading whenever a field or a model name contains `On`, so any reader that has only the name must build the same
|
|
8
|
-
* names here instead of taking one apart.
|
|
9
|
-
*/
|
|
10
3
|
export const formSetterNames = (className: string, key: string) => {
|
|
11
4
|
const classKeyName = capitalize(key);
|
|
12
5
|
return {
|
|
@@ -16,20 +9,10 @@ export const formSetterNames = (className: string, key: string) => {
|
|
|
16
9
|
addFieldOnModel: `add${classKeyName}On${className}`,
|
|
17
10
|
subFieldOnModel: `sub${classKeyName}On${className}`,
|
|
18
11
|
addOrSubFieldOnModel: `addOrSub${classKeyName}On${className}`,
|
|
19
|
-
|
|
20
|
-
* The agent tool a drag-sortable list publishes. No store action answers to it: reordering *is* the whole-array
|
|
21
|
-
* write the drag already performs, so the tool splices the live rows and hands them to the same setter.
|
|
22
|
-
*/
|
|
12
|
+
|
|
23
13
|
moveFieldOnModel: `move${classKeyName}On${className}`,
|
|
24
14
|
uploadFieldOnModel: `upload${classKeyName}On${className}`,
|
|
25
|
-
|
|
26
|
-
* The optional hook a store declares to run after this field is written.
|
|
27
|
-
*
|
|
28
|
-
* It carries no model suffix and a leading `_`, so it can never collide with a generated action name — which is
|
|
29
|
-
* the whole point: every generated action lives in a mapped type, and a mapped type produces *properties*, so a
|
|
30
|
-
* subclass method of the same name is a TS2425 error and there is no legal way to override one. A hook under a
|
|
31
|
-
* name the base type does not declare is the only shape TypeScript permits.
|
|
32
|
-
*/
|
|
15
|
+
|
|
33
16
|
postSetField: `_postSet${classKeyName}`,
|
|
34
17
|
};
|
|
35
18
|
};
|
package/store/hooks.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { useEffect, useRef, useSyncExternalStore } from "react";
|
|
2
|
+
export { useContext, useEffect, useRef, useSyncExternalStore } from "react";
|
package/store/liveInsert.ts
CHANGED
|
@@ -1,42 +1,19 @@
|
|
|
1
|
-
/** A row as placement compares it: the sorted fields, plus the base fields every model carries. */
|
|
2
1
|
export type LiveSortableRow = { [key: string]: unknown };
|
|
3
2
|
|
|
4
3
|
export interface LivePlacementProps {
|
|
5
|
-
/** The rows this window currently holds, in the order the server returned them. */
|
|
6
4
|
list: LiveSortableRow[];
|
|
7
5
|
row: LiveSortableRow;
|
|
8
|
-
/** Which page of the list is on screen. Only the first can place a row. */
|
|
9
6
|
page: number;
|
|
10
7
|
limit: number;
|
|
11
8
|
/** Whether the list is pages `1..N` concatenated rather than one window. */
|
|
12
9
|
cumulative: boolean;
|
|
13
|
-
/** Whether the server still holds rows past the ones in hand. */
|
|
14
10
|
hasMore: boolean;
|
|
15
|
-
/** The sort key the window is ordered by. */
|
|
16
11
|
sortKey: string;
|
|
17
12
|
/** The sort keys the slice declared a subscriber may reproduce. */
|
|
18
13
|
allowedSorts: string[];
|
|
19
|
-
/** Every sort key the model has, by the fields it orders on. */
|
|
20
14
|
sorts: { [key: string]: { [path: string]: 1 | -1 } } | undefined;
|
|
21
15
|
}
|
|
22
16
|
|
|
23
|
-
/**
|
|
24
|
-
* Where a newly arrived row belongs in this window, or null when that cannot be known and the list has to refetch.
|
|
25
|
-
*
|
|
26
|
-
* Three things have to hold, and each guards a different way of being wrong.
|
|
27
|
-
*
|
|
28
|
-
* The sort key must be one the slice allowlisted, because the client compares values with JavaScript and the server
|
|
29
|
-
* ordered them with SQL — those agree for a real column and need not agree for a field inside the document, where
|
|
30
|
-
* SQLite and Postgres do not even agree with each other. The allowlist is the slice author saying which sorts are
|
|
31
|
-
* safe to reproduce, rather than the framework claiming all of them are.
|
|
32
|
-
*
|
|
33
|
-
* The page must be the first, because a window's index is not the list's index anywhere else. Inserting on page
|
|
34
|
-
* three moves that page's boundary by one and the row pushed off its end belongs to page four, which never learns
|
|
35
|
-
* it moved — so the next page opened shows a duplicate.
|
|
36
|
-
*
|
|
37
|
-
* And every sorted field has to be on the row, because a comparison against a value that is not there silently
|
|
38
|
-
* places the row at one end.
|
|
39
|
-
*/
|
|
40
17
|
export const livePlacementIndex = ({
|
|
41
18
|
list,
|
|
42
19
|
row,
|
|
@@ -56,7 +33,7 @@ export const livePlacementIndex = ({
|
|
|
56
33
|
if (paths.some(([path]) => comparableOf(row[path]) === null)) return null;
|
|
57
34
|
const index = list.findIndex((item) => compareRows(row, item, paths) < 0);
|
|
58
35
|
if (index !== -1) return index;
|
|
59
|
-
|
|
36
|
+
|
|
60
37
|
if (cumulative) return hasMore ? null : list.length;
|
|
61
38
|
return list.length < limit ? list.length : null;
|
|
62
39
|
};
|
|
@@ -72,12 +49,6 @@ const compareRows = (left: LiveSortableRow, right: LiveSortableRow, paths: [stri
|
|
|
72
49
|
return 0;
|
|
73
50
|
};
|
|
74
51
|
|
|
75
|
-
/**
|
|
76
|
-
* The value to order by, or null when the row does not carry one.
|
|
77
|
-
*
|
|
78
|
-
* A model's date fields arrive as `Dayjs` rather than as a primitive, so they have to be taken through `valueOf`
|
|
79
|
-
* before a comparison means anything — `<` on two objects compares their string forms.
|
|
80
|
-
*/
|
|
81
52
|
const comparableOf = (value: unknown): number | string | null => {
|
|
82
53
|
if (value === null || value === undefined) return null;
|
|
83
54
|
if (typeof value === "number" || typeof value === "string") return value;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { capitalize } from "akanjs/common";
|
|
2
|
+
import type { SliceActionKey } from "./sliceRole";
|
|
3
|
+
import type { SliceStateKey } from "./state";
|
|
4
|
+
|
|
5
|
+
export const sliceKeysOf = (refName: string, suffix = "") => {
|
|
6
|
+
const [Model, Suffix] = [capitalize(refName), capitalize(suffix)];
|
|
7
|
+
const state: { [key in SliceStateKey]: string } = {
|
|
8
|
+
defaultModel: `default${Model}${Suffix}`,
|
|
9
|
+
modelInitList: `${refName}InitList${Suffix}`,
|
|
10
|
+
modelInsight: `${refName}Insight${Suffix}`,
|
|
11
|
+
modelList: `${refName}List${Suffix}`,
|
|
12
|
+
modelListLoading: `${refName}ListLoading${Suffix}`,
|
|
13
|
+
modelInitAt: `${refName}InitAt${Suffix}`,
|
|
14
|
+
modelStaleAt: `${refName}StaleAt${Suffix}`,
|
|
15
|
+
lastPageOfModel: `lastPageOf${Model}${Suffix}`,
|
|
16
|
+
pageOfModel: `pageOf${Model}${Suffix}`,
|
|
17
|
+
limitOfModel: `limitOf${Model}${Suffix}`,
|
|
18
|
+
hasMoreOfModel: `hasMoreOf${Model}${Suffix}`,
|
|
19
|
+
isCumulativeOfModel: `isCumulativeOf${Model}${Suffix}`,
|
|
20
|
+
queryArgsOfModel: `queryArgsOf${Model}${Suffix}`,
|
|
21
|
+
sortOfModel: `sortOf${Model}${Suffix}`,
|
|
22
|
+
modelSelection: `${refName}Selection${Suffix}`,
|
|
23
|
+
};
|
|
24
|
+
const action: { [key in SliceActionKey]: string } = {
|
|
25
|
+
initModel: `init${Model}${Suffix}`,
|
|
26
|
+
refreshModel: `refresh${Model}${Suffix}`,
|
|
27
|
+
selectModel: `select${Model}${Suffix}`,
|
|
28
|
+
setPageOfModel: `setPageOf${Model}${Suffix}`,
|
|
29
|
+
loadMoreOfModel: `loadMoreOf${Model}${Suffix}`,
|
|
30
|
+
setLimitOfModel: `setLimitOf${Model}${Suffix}`,
|
|
31
|
+
setQueryArgsOfModel: `setQueryArgsOf${Model}${Suffix}`,
|
|
32
|
+
setSortOfModel: `setSortOf${Model}${Suffix}`,
|
|
33
|
+
applyLiveModel: `applyLive${Model}${Suffix}`,
|
|
34
|
+
watchLiveModel: `watchLive${Model}${Suffix}`,
|
|
35
|
+
};
|
|
36
|
+
return { state, action };
|
|
37
|
+
};
|
package/store/sliceRole.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { SerializedArg } from "akanjs/signal";
|
|
2
2
|
import type { SliceStateKey } from "./state";
|
|
3
3
|
|
|
4
|
-
/** The generated slice actions, named by what they do rather than by the key any one slice publishes them under. */
|
|
5
4
|
export type SliceActionKey =
|
|
6
5
|
| "initModel"
|
|
7
6
|
| "refreshModel"
|
|
@@ -14,15 +13,7 @@ export type SliceActionKey =
|
|
|
14
13
|
| "applyLiveModel"
|
|
15
14
|
| "watchLiveModel";
|
|
16
15
|
|
|
17
|
-
/**
|
|
18
|
-
* What a generated key on `st.do` / `st.use` actually is.
|
|
19
|
-
*
|
|
20
|
-
* A slice publishes its keys with the model and the suffix spliced into the role name — `setPageOfUserInOrg` for the
|
|
21
|
-
* `setPageOfModel` role of `user`'s `inOrg` slice — and the splicing is string replacement over capitalized names.
|
|
22
|
-
* Recording the role while the key is being built is what saves a reader of the finished store from running that
|
|
23
|
-
* replacement backwards, which does not have one answer: on a model named `page`, `setPageOfPage` is both the
|
|
24
|
-
* paging action and a field setter.
|
|
25
|
-
*/
|
|
16
|
+
/** Recorded while the key is built: reversing the splice is ambiguous (`setPageOfPage` on a model named `page`). */
|
|
26
17
|
export interface SliceActionRole {
|
|
27
18
|
role: SliceActionKey;
|
|
28
19
|
refName: string;
|
package/store/state.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DataList } from "akanjs/base";
|
|
2
|
-
import { capitalize } from "akanjs/common";
|
|
3
2
|
import { ConstantRegistry, type DefaultOf } from "akanjs/constant";
|
|
4
3
|
import type { ExtractSort, FilterInstance } from "akanjs/document";
|
|
5
4
|
import type {
|
|
@@ -15,19 +14,13 @@ import type {
|
|
|
15
14
|
SliceCls,
|
|
16
15
|
} from "akanjs/signal";
|
|
17
16
|
import { databaseStateNames } from "./databaseStateNames";
|
|
17
|
+
import { sliceKeysOf } from "./sliceKeys";
|
|
18
18
|
import type { StoreSliceArgs, StoreSliceMap, StoreSliceSuffixCap, Submit } from "./types";
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* The open form's draft slot, armed by `new<Model>` / `edit<Model>` and cleared by a submit or a reset.
|
|
22
|
-
*
|
|
23
|
-
* `pending` is a draft that was read and deliberately *not* applied, which is the whole point: an edit form whose
|
|
24
|
-
* record moved since the draft was taken shows a restore bar instead of replacing what the server just returned.
|
|
25
|
-
* The form the editor opened with is kept outside the store — restoring it is what "start fresh" does, and a
|
|
26
|
-
* secret field in it has no business in a value a component can subscribe to.
|
|
27
|
-
*/
|
|
20
|
+
/** Armed by `new<Model>` / `edit<Model>`, cleared by a submit or a reset. */
|
|
28
21
|
export interface DraftState {
|
|
29
22
|
key: string;
|
|
30
|
-
/**
|
|
23
|
+
/** Hash of the form as opened; a write only becomes a draft once the form moves off it. */
|
|
31
24
|
baseHash: string;
|
|
32
25
|
/** The edited record's `updatedAt` at open time, or null for a new form. */
|
|
33
26
|
baseUpdatedAt: string | null;
|
|
@@ -200,48 +193,9 @@ export const createDatabaseState = (refName: string) => {
|
|
|
200
193
|
};
|
|
201
194
|
export const createSliceState = (refName: string, slice: { [key: string]: SerializedSlice }) => {
|
|
202
195
|
const cnst = ConstantRegistry.getDatabase(refName);
|
|
203
|
-
const [fieldName, className] = [refName, capitalize(refName)];
|
|
204
|
-
const names = {
|
|
205
|
-
model: fieldName,
|
|
206
|
-
Model: className,
|
|
207
|
-
defaultModel: `default${className}`,
|
|
208
|
-
defaultModelInsight: `default${className}Insight`,
|
|
209
|
-
modelList: `${fieldName}List`,
|
|
210
|
-
modelListLoading: `${fieldName}ListLoading`,
|
|
211
|
-
modelInitList: `${fieldName}InitList`,
|
|
212
|
-
modelInitAt: `${fieldName}InitAt`,
|
|
213
|
-
modelStaleAt: `${fieldName}StaleAt`,
|
|
214
|
-
modelSelection: `${fieldName}Selection`,
|
|
215
|
-
modelInsight: `${fieldName}Insight`,
|
|
216
|
-
lastPageOfModel: `lastPageOf${className}`,
|
|
217
|
-
pageOfModel: `pageOf${className}`,
|
|
218
|
-
limitOfModel: `limitOf${className}`,
|
|
219
|
-
hasMoreOfModel: `hasMoreOf${className}`,
|
|
220
|
-
isCumulativeOfModel: `isCumulativeOf${className}`,
|
|
221
|
-
queryArgsOfModel: `queryArgsOf${className}`,
|
|
222
|
-
sortOfModel: `sortOf${className}`,
|
|
223
|
-
};
|
|
224
196
|
const sliceState: Record<string, unknown> = {};
|
|
225
197
|
Object.entries(slice).forEach(([suffix]) => {
|
|
226
|
-
const
|
|
227
|
-
const SliceName = capitalize(sliceName);
|
|
228
|
-
const namesOfSlice: { [key in SliceStateKey]: string } = {
|
|
229
|
-
defaultModel: SliceName.replace(names.Model, names.defaultModel), //clusterInSelf Cluster
|
|
230
|
-
modelList: sliceName.replace(names.model, names.modelList),
|
|
231
|
-
modelListLoading: sliceName.replace(names.model, names.modelListLoading),
|
|
232
|
-
modelInitList: sliceName.replace(names.model, names.modelInitList),
|
|
233
|
-
modelInitAt: sliceName.replace(names.model, names.modelInitAt),
|
|
234
|
-
modelStaleAt: sliceName.replace(names.model, names.modelStaleAt),
|
|
235
|
-
modelSelection: sliceName.replace(names.model, names.modelSelection),
|
|
236
|
-
modelInsight: sliceName.replace(names.model, names.modelInsight),
|
|
237
|
-
lastPageOfModel: SliceName.replace(names.Model, names.lastPageOfModel),
|
|
238
|
-
pageOfModel: SliceName.replace(names.Model, names.pageOfModel),
|
|
239
|
-
limitOfModel: SliceName.replace(names.Model, names.limitOfModel),
|
|
240
|
-
hasMoreOfModel: SliceName.replace(names.Model, names.hasMoreOfModel),
|
|
241
|
-
isCumulativeOfModel: SliceName.replace(names.Model, names.isCumulativeOfModel),
|
|
242
|
-
queryArgsOfModel: SliceName.replace(names.Model, names.queryArgsOfModel),
|
|
243
|
-
sortOfModel: SliceName.replace(names.Model, names.sortOfModel),
|
|
244
|
-
};
|
|
198
|
+
const namesOfSlice = sliceKeysOf(refName, suffix).state;
|
|
245
199
|
const singleSliceState = {
|
|
246
200
|
[namesOfSlice.defaultModel]: new cnst.full(),
|
|
247
201
|
[namesOfSlice.modelList]: new DataList(),
|
package/store/stateBuilder.ts
CHANGED
|
@@ -41,12 +41,6 @@ export interface ComputedMeta {
|
|
|
41
41
|
equals: (a: any, b: any) => boolean;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
/**
|
|
45
|
-
* One model's form-draft wiring, keyed by the form state key.
|
|
46
|
-
*
|
|
47
|
-
* The draft is not a builder-declared state — it comes with every model store — so the metadata is registered
|
|
48
|
-
* where `createDatabaseState` runs rather than resolved out of a `persist()` marker.
|
|
49
|
-
*/
|
|
50
44
|
export interface DraftMeta {
|
|
51
45
|
refName: string;
|
|
52
46
|
formKey: string;
|
|
@@ -158,14 +152,6 @@ export interface DerivedStateBuilder<WritableState> {
|
|
|
158
152
|
|
|
159
153
|
const draftMetaByRefName = new Map<string, DraftMeta>();
|
|
160
154
|
|
|
161
|
-
/**
|
|
162
|
-
* The one `DraftMeta` for a model, memoized.
|
|
163
|
-
*
|
|
164
|
-
* Every field of it is derived from the refName, so two stores for the same model describe the same thing. They
|
|
165
|
-
* have to describe it with the *same object*, though: an app store that extends a lib store for one model carries
|
|
166
|
-
* the lib's copy and registers its own, and both reach `mergeDerivedMeta` — where an entry is a conflict only when
|
|
167
|
-
* two declarations disagree, which is decided by identity.
|
|
168
|
-
*/
|
|
169
155
|
export const draftMetaOf = (refName: string): DraftMeta => {
|
|
170
156
|
const cached = draftMetaByRefName.get(refName);
|
|
171
157
|
if (cached) return cached;
|
|
@@ -192,19 +178,11 @@ export const mergeDerivedMeta = (...metas: (StateDerivedMeta | undefined)[]): St
|
|
|
192
178
|
mergeMetaRecord(merged.search, meta.search);
|
|
193
179
|
mergeMetaRecord(merged.computed, meta.computed);
|
|
194
180
|
}
|
|
195
|
-
|
|
181
|
+
|
|
196
182
|
for (const key of [...Object.keys(merged.search), ...Object.keys(merged.computed)]) merged.derivedKeys.add(key);
|
|
197
183
|
return merged;
|
|
198
184
|
};
|
|
199
185
|
|
|
200
|
-
/**
|
|
201
|
-
* Copies `source` over `target`, rejecting only a genuine conflict.
|
|
202
|
-
*
|
|
203
|
-
* The same key arriving twice is normal: a store lists another as a lib store, so it already carries that store's
|
|
204
|
-
* metadata when both are registered and `StoreRegistry.merge` sees each of them. What arrives then is the very
|
|
205
|
-
* object the first declaration produced, because merging copies the reference. Two *different* objects under one
|
|
206
|
-
* key are two declarations claiming the same state, which is the mistake this is here to catch.
|
|
207
|
-
*/
|
|
208
186
|
const mergeMetaRecord = <T>(target: Record<string, T>, source: Record<string, T>) => {
|
|
209
187
|
for (const [key, value] of Object.entries(source)) {
|
|
210
188
|
if (key in target) {
|