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
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
type PrimitiveScalar,
|
|
10
10
|
} from "akanjs/base";
|
|
11
11
|
import type { ParamFieldType } from "akanjs/constant";
|
|
12
|
+
import type { ReactNode } from "react";
|
|
12
13
|
import {
|
|
13
14
|
AgenticSurface,
|
|
14
15
|
type JsonSchema,
|
|
@@ -21,23 +22,20 @@ import { tagAction } from "../actionTag";
|
|
|
21
22
|
|
|
22
23
|
import { useEffect, useRef } from "../hooks";
|
|
23
24
|
|
|
25
|
+
/** `submit`'s value is what the model reads back; the first of the two calls settles the card. */
|
|
26
|
+
export interface StToolCardControl {
|
|
27
|
+
submit: (value: unknown) => void;
|
|
28
|
+
cancel: (reason?: string) => void;
|
|
29
|
+
}
|
|
30
|
+
|
|
24
31
|
export interface StToolMeta {
|
|
25
|
-
/**
|
|
26
|
-
* Whether the call has to be waited out before what it did to the screen is reported back to the model. `false`
|
|
27
|
-
* is a read that returns what is already there; the default waits, because a write may still be landing when
|
|
28
|
-
* `exec` resolves and a report taken then describes the screen one tick before the call.
|
|
29
|
-
*/
|
|
32
|
+
/** Default true: the screen is waited out before the call reports; `false` for a read of what is already there. */
|
|
30
33
|
settle?: boolean;
|
|
31
34
|
confirm?: ToolConfirm;
|
|
32
35
|
guard?: ToolGuard;
|
|
33
36
|
}
|
|
34
37
|
|
|
35
|
-
/**
|
|
36
|
-
* What one argument may be: a scalar, an enum, or **one** array level of either. The array level is here because
|
|
37
|
-
* `fill<Model>Form` already describes exactly that for a form field, so the same shape reaching an agent through a
|
|
38
|
-
* form and not through a component tool was an oversight rather than a boundary — and a tool that cannot say
|
|
39
|
-
* "a list of these" says it in prose instead, which is a format the app then owns a parser for.
|
|
40
|
-
*/
|
|
38
|
+
/** A scalar, an enum, or one array level of either. */
|
|
41
39
|
export type StToolArgType = ParamFieldType | readonly [ParamFieldType];
|
|
42
40
|
|
|
43
41
|
interface StToolArg {
|
|
@@ -53,24 +51,11 @@ export interface StToolArgOption<V> {
|
|
|
53
51
|
}
|
|
54
52
|
|
|
55
53
|
type ScalarValue<T> = T extends EnumInstance<string, infer V> ? V : T extends { [CLIENT_VALUE]: infer V } ? V : never;
|
|
56
|
-
/** What one element carries, which is the whole argument unless it is an array. `oneOf` narrows this one. */
|
|
57
54
|
type ElementValue<T> = T extends readonly [infer E] ? ScalarValue<E> : ScalarValue<T>;
|
|
58
55
|
type ArgValue<T> = T extends readonly [unknown] ? ElementValue<T>[] : ElementValue<T>;
|
|
59
56
|
type NarrowedValue<T, V> = T extends readonly [unknown] ? V[] : V;
|
|
60
57
|
|
|
61
|
-
/**
|
|
62
|
-
* A component tool past its description: `.arg()` for what the caller must pass, `.opt()` for what it may, and
|
|
63
|
-
* one `.exec()`.
|
|
64
|
-
*
|
|
65
|
-
* This is not A12's rejected store-action builder — a store action derives its schema from the endpoint it is
|
|
66
|
-
* named after, while a component tool exists nowhere else, so declaring is the only source there is. `.arg()` and
|
|
67
|
-
* `.opt()` only accumulate data; `.exec()` is the one hook, so the chain must complete in one unconditional
|
|
68
|
-
* statement.
|
|
69
|
-
*
|
|
70
|
-
* A falsy name declares the tool without publishing it: the callable still works for the click that a person
|
|
71
|
-
* makes, and nothing reaches the agent. That is how a conditional surface stays writable at all — `.exec()` is a
|
|
72
|
-
* hook, so a component can never skip the declaration, only the publication.
|
|
73
|
-
*/
|
|
58
|
+
/** `.arg()`/`.opt()` only accumulate; `.exec()` is the hook. A falsy name declares the tool without publishing it. */
|
|
74
59
|
export class StToolBuilder<Args extends unknown[] = []> {
|
|
75
60
|
readonly #name: string | null;
|
|
76
61
|
readonly #desc: string;
|
|
@@ -78,7 +63,7 @@ export class StToolBuilder<Args extends unknown[] = []> {
|
|
|
78
63
|
readonly #args: StToolArg[];
|
|
79
64
|
|
|
80
65
|
constructor(name: string | null, desc: string, meta: StToolMeta = {}, args: StToolArg[] = []) {
|
|
81
|
-
|
|
66
|
+
|
|
82
67
|
this.#name = name || null;
|
|
83
68
|
this.#desc = desc;
|
|
84
69
|
this.#meta = meta;
|
|
@@ -119,7 +104,7 @@ export class StToolBuilder<Args extends unknown[] = []> {
|
|
|
119
104
|
optional: boolean,
|
|
120
105
|
option: StToolArgOption<ElementValue<T>>,
|
|
121
106
|
): StToolBuilder<[...Args, ArgValue<T> | null]> {
|
|
122
|
-
|
|
107
|
+
|
|
123
108
|
const published = this.#name && StToolBuilder.#describable(this.#name, name, type) ? this.#name : null;
|
|
124
109
|
return new StToolBuilder(published, this.#desc, this.#meta, [
|
|
125
110
|
...this.#args,
|
|
@@ -127,16 +112,7 @@ export class StToolBuilder<Args extends unknown[] = []> {
|
|
|
127
112
|
]);
|
|
128
113
|
}
|
|
129
114
|
|
|
130
|
-
/**
|
|
131
|
-
* The only hook in the chain. `run`, `guard`, and `confirm` stay always-latest, and so does the **name** —
|
|
132
|
-
* `desc` and `args` are read once per name because a component that renders once per row declares one tool
|
|
133
|
-
* many times and only its own arguments differ.
|
|
134
|
-
*
|
|
135
|
-
* The name has to follow the render, because withholding it is how a conditional surface is written
|
|
136
|
-
* (`st.tool(canRemove && "removeX")`). Frozen on the first render it failed both ways: a control that appeared
|
|
137
|
-
* later never published, and — worse — one that went away stayed published, leaving an agent a lever the screen
|
|
138
|
-
* no longer offers.
|
|
139
|
-
*/
|
|
115
|
+
/** The hook. `run`/`guard`/`confirm` and the name follow every render; `desc`/`args` are read once per name. */
|
|
140
116
|
exec(run: (...args: Args) => unknown): (...args: Args) => Promise<void> {
|
|
141
117
|
const surface = useSurface();
|
|
142
118
|
const scope = useScopePath();
|
|
@@ -150,7 +126,6 @@ export class StToolBuilder<Args extends unknown[] = []> {
|
|
|
150
126
|
const call = async (...args: Args) => {
|
|
151
127
|
await live.current.run(...args);
|
|
152
128
|
};
|
|
153
|
-
|
|
154
129
|
callable.current = {
|
|
155
130
|
name: this.#name,
|
|
156
131
|
fn: this.#name ? tagAction(call, { action: AgenticSurface.fullName(scope, this.#name) }) : call,
|
|
@@ -184,6 +159,39 @@ export class StToolBuilder<Args extends unknown[] = []> {
|
|
|
184
159
|
return callable.current.fn;
|
|
185
160
|
}
|
|
186
161
|
|
|
162
|
+
/** A tool the user answers with a chat card. Args are checked in the guard, before the card parks; no `confirm`. */
|
|
163
|
+
card(render: (control: StToolCardControl, ...args: Args) => ReactNode): void {
|
|
164
|
+
const surface = useSurface();
|
|
165
|
+
const scope = useScopePath();
|
|
166
|
+
const live = useRef({ render, meta: this.#meta });
|
|
167
|
+
live.current = { render, meta: this.#meta };
|
|
168
|
+
const declared = useRef<{ name: string | null; desc: string; meta: StToolMeta; args: StToolArg[] } | null>(null);
|
|
169
|
+
if (declared.current?.name !== this.#name)
|
|
170
|
+
declared.current = { name: this.#name, desc: this.#desc, meta: this.#meta, args: this.#args };
|
|
171
|
+
const scopeKey = scope.join(".");
|
|
172
|
+
useEffect(() => {
|
|
173
|
+
const spec = declared.current;
|
|
174
|
+
const name = spec?.name;
|
|
175
|
+
if (!spec || !name) return;
|
|
176
|
+
return surface.registerTool(scope, {
|
|
177
|
+
name,
|
|
178
|
+
description: spec.desc,
|
|
179
|
+
settle: spec.meta.settle,
|
|
180
|
+
parameters: StToolBuilder.parametersOf(spec.args),
|
|
181
|
+
guard: (args) => {
|
|
182
|
+
try {
|
|
183
|
+
StToolBuilder.positionalOf(name, spec.args, args);
|
|
184
|
+
} catch (error) {
|
|
185
|
+
return error instanceof Error ? error.message : String(error);
|
|
186
|
+
}
|
|
187
|
+
return live.current.meta.guard?.(args) ?? true;
|
|
188
|
+
},
|
|
189
|
+
card: ({ args, submit, cancel }) =>
|
|
190
|
+
live.current.render({ submit, cancel }, ...(StToolBuilder.positionalOf(name, spec.args, args) as Args)),
|
|
191
|
+
});
|
|
192
|
+
}, [surface, scopeKey, this.#name]);
|
|
193
|
+
}
|
|
194
|
+
|
|
187
195
|
static parametersOf(args: StToolArg[]): JsonSchema | undefined {
|
|
188
196
|
if (!args.length) return undefined;
|
|
189
197
|
const required = args.filter((arg) => !arg.optional).map((arg) => arg.name);
|
|
@@ -199,7 +207,6 @@ export class StToolBuilder<Args extends unknown[] = []> {
|
|
|
199
207
|
return StToolBuilder.#schemaOfArg(arg.type, arg.oneOf);
|
|
200
208
|
}
|
|
201
209
|
|
|
202
|
-
/** The array level `FormFields` wraps a field's leaf in, for an argument that declared one instead. */
|
|
203
210
|
static #schemaOfArg(type: StToolArgType, oneOf?: readonly (string | number)[]): JsonSchema {
|
|
204
211
|
const narrowed = (schema: JsonSchema): JsonSchema => (oneOf ? { ...schema, enum: [...oneOf] } : schema);
|
|
205
212
|
if (!Array.isArray(type)) return narrowed(StToolBuilder.schemaOf(type as ParamFieldType));
|
|
@@ -223,7 +230,7 @@ export class StToolBuilder<Args extends unknown[] = []> {
|
|
|
223
230
|
}
|
|
224
231
|
}
|
|
225
232
|
|
|
226
|
-
/** Scalars and enums only
|
|
233
|
+
/** Scalars and enums only (a value arrives as JSON); throws for anything else. */
|
|
227
234
|
static schemaOf(type: ParamFieldType): JsonSchema {
|
|
228
235
|
if (isEnum(type as Cls)) {
|
|
229
236
|
const enumRef = type as EnumInstance;
|
|
@@ -267,7 +274,7 @@ export class StToolBuilder<Args extends unknown[] = []> {
|
|
|
267
274
|
});
|
|
268
275
|
}
|
|
269
276
|
|
|
270
|
-
/**
|
|
277
|
+
/** Nothing on the wire enforces the published schema, so every argument value is checked here. */
|
|
271
278
|
static checkedValue(
|
|
272
279
|
toolName: string,
|
|
273
280
|
argName: string,
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { StToolBuilder, type StToolMeta } from "./StToolBuilder";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* A component tool before it has said what it does: `st.tool("x", { confirm }).desc("…")`.
|
|
5
|
-
*
|
|
6
|
-
* The description is the step that has to happen, so it is the one the type insists on. A model picks a tool by
|
|
7
|
-
* that sentence and by nothing else, and the surface reads it a second time to tell fifty rows publishing one
|
|
8
|
-
* interchangeable verb from two components that happened to pick the same name.
|
|
9
|
-
*/
|
|
10
3
|
export class StToolDraft {
|
|
11
4
|
readonly #name: string | null;
|
|
12
5
|
readonly #meta: StToolMeta;
|
|
@@ -7,19 +7,11 @@ import type { StToolMeta } from "./StToolBuilder";
|
|
|
7
7
|
import { StToolDraft } from "./StToolDraft";
|
|
8
8
|
|
|
9
9
|
export interface StAgentic {
|
|
10
|
-
/**
|
|
11
|
-
* Local state the in-page agent can read: `.desc()` then `.init()`, which is the hook and returns what
|
|
12
|
-
* `useState` returns. Writes need `set: true` and go through the generated `set<Name>` tool.
|
|
13
|
-
*/
|
|
10
|
+
/** Agent-readable local state: `.desc()` then `.init()` (the hook). Agent writes need `set: true`. */
|
|
14
11
|
useState: <T extends AgentFieldType>(name: string | null, type: T, meta?: StStateMeta) => StStateDraft<T>;
|
|
15
12
|
/** A read-only derived value the agent can read while the component is mounted: `.desc()` then `.value()`. */
|
|
16
13
|
expose: <T extends AgentFieldType>(name: string | null, type: T, meta?: StExposeMeta) => StExposeDraft<T>;
|
|
17
|
-
/**
|
|
18
|
-
* A component tool: `.desc()`, then `.arg()` / `.opt()`, chained onto one `.exec()` hook.
|
|
19
|
-
*
|
|
20
|
-
* A falsy name declares the tool without publishing it — the callable still drives the click a person makes.
|
|
21
|
-
* Every one of these ends in a hook, so a conditional surface withholds the name rather than skipping the chain.
|
|
22
|
-
*/
|
|
14
|
+
/** `.desc()`, `.arg()`/`.opt()`, then the hook `.exec()` or `.card()`. A falsy name declares without publishing. */
|
|
23
15
|
tool: (name: string | null, meta?: StToolMeta) => StToolDraft;
|
|
24
16
|
}
|
|
25
17
|
|
|
@@ -11,21 +11,12 @@ export interface FormFieldRef {
|
|
|
11
11
|
field: ConstantField;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
/** Written by the document layer, never by the person at the form. */
|
|
15
14
|
const baseFields = new Set(["id", "createdAt", "updatedAt", "removedAt"]);
|
|
16
15
|
const MAX_DEPTH = 4;
|
|
17
16
|
|
|
18
|
-
/**
|
|
19
|
-
* What a form's fields look like to an agent: which setter action belongs to which field, what shape a value for
|
|
20
|
-
* it has, and whether a value it sent is one that field accepts.
|
|
21
|
-
*
|
|
22
|
-
* The action-to-field map is built **forward** from `formSetterNames`, never by taking a name apart:
|
|
23
|
-
* `set(.+)On(.+)` has more than one reading whenever a field or a model name contains `On`.
|
|
24
|
-
*/
|
|
25
17
|
export class FormFields {
|
|
26
18
|
static #index: Map<string, FormFieldRef> | null = null;
|
|
27
19
|
|
|
28
|
-
/** Every `set<Field>On<Model>` this client knows, against the field it writes. */
|
|
29
20
|
static ref(action: string): FormFieldRef | null {
|
|
30
21
|
FormFields.#index ??= FormFields.#buildIndex();
|
|
31
22
|
return FormFields.#index.get(action) ?? null;
|
|
@@ -43,7 +34,6 @@ export class FormFields {
|
|
|
43
34
|
return index;
|
|
44
35
|
}
|
|
45
36
|
|
|
46
|
-
/** The fields of a model's form an agent may write, with the setter each one answers to. */
|
|
47
37
|
static patchable(refName: string): { key: string; action: string; field: ConstantField; schema: JsonSchema }[] {
|
|
48
38
|
const className = capitalize(refName);
|
|
49
39
|
const model = ConstantRegistry.getDatabase(refName);
|
|
@@ -56,14 +46,7 @@ export class FormFields {
|
|
|
56
46
|
});
|
|
57
47
|
}
|
|
58
48
|
|
|
59
|
-
/**
|
|
60
|
-
* The shape a value for one field has, or null when there is nothing honest to publish.
|
|
61
|
-
*
|
|
62
|
-
* A relation is left out rather than described as its id: the form holds the whole related document, so writing
|
|
63
|
-
* an id would need a lookup the store does not do — a relation is picked or uploaded, never typed. `hidden`,
|
|
64
|
-
* `secret`, and `resolve` are out at every level, the first two because their reads are masked and a writer for
|
|
65
|
-
* one would be the door around that, the last because it is computed and has no setter at all.
|
|
66
|
-
*/
|
|
49
|
+
/** Null for a relation (picked, never typed) and for hidden/secret/resolve, whose writer would bypass the mask. */
|
|
67
50
|
static schema(field: ConstantField, depth = 0): JsonSchema | null {
|
|
68
51
|
if (field.fieldType !== "property" || depth > MAX_DEPTH) return null;
|
|
69
52
|
const leaf = FormFields.#leafSchema(field, depth);
|
|
@@ -81,6 +64,8 @@ export class FormFields {
|
|
|
81
64
|
return value ? { type: "object", additionalProperties: value } : null;
|
|
82
65
|
}
|
|
83
66
|
if (PrimitiveRegistry.has(modelRef)) {
|
|
67
|
+
|
|
68
|
+
if (PrimitiveRegistry.agentOf(modelRef)) return null;
|
|
84
69
|
try {
|
|
85
70
|
return StToolBuilder.schemaOf(modelRef as unknown as ParamFieldType);
|
|
86
71
|
} catch {
|
|
@@ -93,6 +78,7 @@ export class FormFields {
|
|
|
93
78
|
}
|
|
94
79
|
|
|
95
80
|
static #ofSchema(field: ConstantField): JsonSchema | null {
|
|
81
|
+
if (PrimitiveRegistry.agentOf(field.of)) return null;
|
|
96
82
|
try {
|
|
97
83
|
return StToolBuilder.schemaOf(field.of as unknown as ParamFieldType);
|
|
98
84
|
} catch {
|
|
@@ -113,12 +99,7 @@ export class FormFields {
|
|
|
113
99
|
return { type: "object", properties: Object.fromEntries(entries), additionalProperties: false };
|
|
114
100
|
}
|
|
115
101
|
|
|
116
|
-
/**
|
|
117
|
-
* The value the store should receive, or a throw naming what was wrong with the one that arrived.
|
|
118
|
-
*
|
|
119
|
-
* `additionalProperties: false` travels in the published schema and nothing on the wire enforces it, so an
|
|
120
|
-
* undeclared key is reported here rather than written into the form and shipped on the next submit.
|
|
121
|
-
*/
|
|
102
|
+
/** Throws on a bad value: nothing on the wire enforces the published schema, `additionalProperties` included. */
|
|
122
103
|
static checked(action: string, path: string, field: ConstantField, value: unknown, depth = 0): unknown {
|
|
123
104
|
if (value === null) {
|
|
124
105
|
if (!field.nullable) throw new Error(`"${path}" of ${action} does not take null.`);
|
|
@@ -169,20 +150,12 @@ export class FormFields {
|
|
|
169
150
|
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
170
151
|
}
|
|
171
152
|
|
|
172
|
-
/**
|
|
173
|
-
* The tool that lists what a field can be set to. One name across both picker hooks on purpose: a form draws a
|
|
174
|
-
* relation picker and an upload control side by side, and a model that learned this name on one field spells it
|
|
175
|
-
* the same on the next. Two names one word apart would cost a failed call to learn.
|
|
176
|
-
*/
|
|
153
|
+
/** Shared by both picker hooks on purpose, so a model that learned it on one field spells it the same on the next. */
|
|
177
154
|
static optionsToolName(refName: string, key: string): string {
|
|
178
155
|
return `load${capitalize(key)}OptionsOn${capitalize(refName)}`;
|
|
179
156
|
}
|
|
180
157
|
|
|
181
|
-
/**
|
|
182
|
-
* The database model a relation field points at, or null for anything else — a primitive, an enum, a scalar.
|
|
183
|
-
* It is the question both picker hooks ask of a field `schema` refused, and the refusal alone does not answer
|
|
184
|
-
* it: a `hidden` scalar and an undescribable one are refused too, and neither is something to pick.
|
|
185
|
-
*/
|
|
158
|
+
/** The database model a relation field points at, else null. */
|
|
186
159
|
static relationOf(field: ConstantField): string | null {
|
|
187
160
|
const modelRef = field.modelRef as unknown as Cls;
|
|
188
161
|
if (field.fieldType !== "property" || field.enum || !modelRef || PrimitiveRegistry.has(modelRef)) return null;
|
|
@@ -195,14 +168,7 @@ export class FormFields {
|
|
|
195
168
|
return field.arrDepth > 0 || (field.modelRef as unknown) === Map || !!FormFields.#scalarModel(field);
|
|
196
169
|
}
|
|
197
170
|
|
|
198
|
-
/**
|
|
199
|
-
* The embedded model an array field's rows are, or null for every other field.
|
|
200
|
-
*
|
|
201
|
-
* This is the one shape where writing the whole array is a hazard rather than an inconvenience: the agent has to
|
|
202
|
-
* echo every row it is *not* changing, `checked` validates types and not values, so one mistyped row it was never
|
|
203
|
-
* asked to touch is written silently. A relation array is excluded — its rows travel as ids, which are the payload
|
|
204
|
-
* and are refused by name when wrong — and so is an array of primitives, for the same reason.
|
|
205
|
-
*/
|
|
171
|
+
/** The embedded model of an array field's rows, else null — relation and primitive arrays included. */
|
|
206
172
|
static rowModelOf(field: ConstantField) {
|
|
207
173
|
return field.arrDepth > 0 ? FormFields.#scalarModel(field) : null;
|
|
208
174
|
}
|
package/store/agentic/index.ts
CHANGED
|
@@ -7,7 +7,7 @@ export * from "./StStateBuilder";
|
|
|
7
7
|
export * from "./StStateDraft";
|
|
8
8
|
export * from "./StToolBuilder";
|
|
9
9
|
export * from "./StToolDraft";
|
|
10
|
+
export * from "./useAgentReference";
|
|
10
11
|
export * from "./useFieldTool";
|
|
11
|
-
export * from "./useFileFieldTool";
|
|
12
12
|
export * from "./useFormTools";
|
|
13
13
|
export * from "./useRelationFieldTool";
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { SessionContext } from "../../vendor/use-agentic";
|
|
3
|
+
|
|
4
|
+
import { useContext } from "../hooks";
|
|
5
|
+
import { type AgentFieldType, AgentValue, type AgentValueOf } from "./AgentValue";
|
|
6
|
+
|
|
7
|
+
/** `refName`/`refId`/`path` say what was pointed at; `value` is what the model is shown now, masked by `type`. */
|
|
8
|
+
export interface AgentReferenceInput<T extends AgentFieldType> {
|
|
9
|
+
refName: string;
|
|
10
|
+
refId: string;
|
|
11
|
+
/** What the chip draws and what the token in the draft spells. */
|
|
12
|
+
label: string;
|
|
13
|
+
/** A dotted path into the document, in `pathSet`'s vocabulary. Absent points at the whole of it. */
|
|
14
|
+
path?: string;
|
|
15
|
+
type: T;
|
|
16
|
+
value: AgentValueOf<T>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** Stages a reference in the enclosing agent session; outside one it warns and does nothing. */
|
|
20
|
+
export const useAgentReference = () => {
|
|
21
|
+
const session = useContext(SessionContext);
|
|
22
|
+
return <T extends AgentFieldType>({ type, value, ...pointer }: AgentReferenceInput<T>) => {
|
|
23
|
+
const owner = `reference ${pointer.refName}/${pointer.refId}`;
|
|
24
|
+
if (!session) {
|
|
25
|
+
console.warn(`${owner} was not staged: this component is not inside an <Agent.Chat /> or <Agent.Zone />.`);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (!AgentValue.publishable(owner, type)) return;
|
|
29
|
+
session.refer({ ...pointer, value: AgentValue.serialize(type, value) });
|
|
30
|
+
};
|
|
31
|
+
};
|
|
@@ -9,12 +9,6 @@ import { useEffect, useRef } from "../hooks";
|
|
|
9
9
|
import { StoreRegistry } from "../storeRegistry";
|
|
10
10
|
import { type FormFieldRef, FormFields } from "./formFields";
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
* A control's `transform` is what it does to every value a person types, so an agent's write goes through it too —
|
|
14
|
-
* otherwise a `Field.Phone` stores `010-1234-5678` for the person and the raw digits for the agent. It normalizes
|
|
15
|
-
* one scalar, so an array-valued control (`TextList`, `Tags`, `DoubleNumber`) applies it per element. A cleared
|
|
16
|
-
* nullable field stays null: a normalizer written for a value would turn it into one.
|
|
17
|
-
*/
|
|
18
12
|
const normalized = (value: unknown, transform: unknown): unknown => {
|
|
19
13
|
if (typeof transform !== "function" || value === null) return value;
|
|
20
14
|
const apply = transform as (input: unknown) => unknown;
|
|
@@ -30,20 +24,16 @@ const rowsOf = (ref: FormFieldRef): unknown[] => {
|
|
|
30
24
|
return Array.isArray(rows) ? rows : [];
|
|
31
25
|
};
|
|
32
26
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
* `add` appends and publishes no insert position: the `+` a person presses always appends, and the framework cannot
|
|
44
|
-
* see the `limit` an app may pass from its own `onAdd`. `addOrSub` is never published — it matches by `indexOf`, so
|
|
45
|
-
* on rows it compares by reference and every toggle would append.
|
|
46
|
-
*/
|
|
27
|
+
const isOutside = (idx: unknown, length: number) =>
|
|
28
|
+
typeof idx !== "number" || !Number.isInteger(idx) || idx < 0 || idx >= length;
|
|
29
|
+
|
|
30
|
+
const idxsParameters: JsonSchema = {
|
|
31
|
+
type: "object",
|
|
32
|
+
properties: { idxs: { type: "array", items: { type: "integer" } } },
|
|
33
|
+
required: ["idxs"],
|
|
34
|
+
additionalProperties: false,
|
|
35
|
+
};
|
|
36
|
+
|
|
47
37
|
const rowEntries = (ref: FormFieldRef, arraySchema: JsonSchema): ToolEntry[] => {
|
|
48
38
|
if (!FormFields.rowModelOf(ref.field)) return [];
|
|
49
39
|
const names = formSetterNames(capitalize(ref.refName), ref.key);
|
|
@@ -66,19 +56,12 @@ const rowEntries = (ref: FormFieldRef, arraySchema: JsonSchema): ToolEntry[] =>
|
|
|
66
56
|
{
|
|
67
57
|
name: names.subFieldOnModel,
|
|
68
58
|
description: `Remove rows of ${ref.key} from the ${ref.refName} form by their positions, counting from 0.`,
|
|
69
|
-
parameters:
|
|
70
|
-
type: "object",
|
|
71
|
-
properties: { idxs: { type: "array", items: { type: "integer" } } },
|
|
72
|
-
required: ["idxs"],
|
|
73
|
-
additionalProperties: false,
|
|
74
|
-
},
|
|
59
|
+
parameters: idxsParameters,
|
|
75
60
|
guard: (args) => {
|
|
76
61
|
const idxs = args.idxs;
|
|
77
62
|
if (!Array.isArray(idxs) || !idxs.length) return `"idxs" of ${names.subFieldOnModel} takes at least one index.`;
|
|
78
63
|
const length = rowsOf(ref).length;
|
|
79
|
-
const outside = idxs.filter(
|
|
80
|
-
(idx) => typeof idx !== "number" || !Number.isInteger(idx) || idx < 0 || idx >= length,
|
|
81
|
-
);
|
|
64
|
+
const outside = idxs.filter((idx) => isOutside(idx, length));
|
|
82
65
|
if (!outside.length) return true;
|
|
83
66
|
return `${ref.key} has ${length} ${length === 1 ? "row" : "rows"}, so ${outside.join(", ")} is out of range.`;
|
|
84
67
|
},
|
|
@@ -88,23 +71,14 @@ const rowEntries = (ref: FormFieldRef, arraySchema: JsonSchema): ToolEntry[] =>
|
|
|
88
71
|
};
|
|
89
72
|
|
|
90
73
|
export interface FieldToolOptions {
|
|
91
|
-
/**
|
|
74
|
+
/** Applied to the agent's write exactly as to the person's typing. */
|
|
92
75
|
transform?: unknown;
|
|
93
|
-
/**
|
|
76
|
+
/** While true, nothing is published. */
|
|
94
77
|
disabled?: boolean;
|
|
95
|
-
/**
|
|
78
|
+
/** Also publishes `move<Field>On<Model>`, for a list the person can drag. */
|
|
96
79
|
sortable?: boolean;
|
|
97
80
|
}
|
|
98
81
|
|
|
99
|
-
/**
|
|
100
|
-
* Reorder-by-position for a list the person can drag, beside the whole-array setter.
|
|
101
|
-
*
|
|
102
|
-
* The drag is the lever the screen actually offers, and it changes no row's content — so an agent asked to move one
|
|
103
|
-
* row should not have to retype the nine it is leaving alone, which is the same argument that gives an embedded-row
|
|
104
|
-
* array its `add`/`sub`. There is no store action behind it: reordering *is* a whole-array write, so this splices
|
|
105
|
-
* the live rows and hands them to the setter the drag hands them to, `transform` deliberately not applied — the
|
|
106
|
-
* values are already stored, and normalizing them again is not something dragging does.
|
|
107
|
-
*/
|
|
108
82
|
const moveEntry = (ref: FormFieldRef, onChange: () => (value: unknown) => unknown): ToolEntry => {
|
|
109
83
|
const name = formSetterNames(capitalize(ref.refName), ref.key).moveFieldOnModel;
|
|
110
84
|
return {
|
|
@@ -118,10 +92,7 @@ const moveEntry = (ref: FormFieldRef, onChange: () => (value: unknown) => unknow
|
|
|
118
92
|
},
|
|
119
93
|
guard: (args) => {
|
|
120
94
|
const length = rowsOf(ref).length;
|
|
121
|
-
const outside = ["from", "to"].filter((key) =>
|
|
122
|
-
const idx = args[key];
|
|
123
|
-
return typeof idx !== "number" || !Number.isInteger(idx) || idx < 0 || idx >= length;
|
|
124
|
-
});
|
|
95
|
+
const outside = ["from", "to"].filter((key) => isOutside(args[key], length));
|
|
125
96
|
if (!outside.length) return true;
|
|
126
97
|
return `${ref.key} has ${length} ${length === 1 ? "entry" : "entries"}, so ${outside.join(" and ")} is out of range.`;
|
|
127
98
|
},
|
|
@@ -134,19 +105,7 @@ const moveEntry = (ref: FormFieldRef, onChange: () => (value: unknown) => unknow
|
|
|
134
105
|
};
|
|
135
106
|
};
|
|
136
107
|
|
|
137
|
-
/**
|
|
138
|
-
* Publishes the setter a form control is already holding, for exactly as long as the control is usable.
|
|
139
|
-
*
|
|
140
|
-
* The control is the declaration — the same rule the rest of the surface follows. A handler passed by reference
|
|
141
|
-
* (`onChange={st.do.setTitleOnTask}`) names the field it writes, so the tool and the person press one function;
|
|
142
|
-
* an inline arrow names nothing and publishes nothing, which is the existing `data-akan-action` rule with
|
|
143
|
-
* consequences. Publishing from the form's subscription instead would offer every field of the model, including
|
|
144
|
-
* the ones this template draws no control for.
|
|
145
|
-
*
|
|
146
|
-
* `disabled` withdraws the tool for the same reason the whole surface is declaration-only: a field the person
|
|
147
|
-
* cannot type into is not one an agent may write in their place. It also closes the field to `fill<Model>Form`,
|
|
148
|
-
* whose guard offers only what a control published — so one gate covers both writers.
|
|
149
|
-
*/
|
|
108
|
+
/** Publishes a by-reference setter while its control is usable; `disabled` also closes it to `fill<Model>Form`. */
|
|
150
109
|
export const useFieldTool = (onChange: unknown, { transform, disabled, sortable }: FieldToolOptions = {}) => {
|
|
151
110
|
const surface = useSurface();
|
|
152
111
|
const scope = useScopePath();
|
|
@@ -181,3 +140,162 @@ export const useFieldTool = (onChange: unknown, { transform, disabled, sortable
|
|
|
181
140
|
};
|
|
182
141
|
}, [surface, scopeKey, action, off, !!sortable]);
|
|
183
142
|
};
|
|
143
|
+
|
|
144
|
+
export interface FileFieldSource<T extends { id: string }> {
|
|
145
|
+
/** Read live on every call. Omitted publishes nothing. */
|
|
146
|
+
read?: () => readonly T[];
|
|
147
|
+
label: (file: T) => string;
|
|
148
|
+
/** The list's cap; nothing derives it from the field, so without it the limit is only the server's `Err`. */
|
|
149
|
+
max?: number;
|
|
150
|
+
min?: number;
|
|
151
|
+
disabled?: boolean;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const counted = (num: number) => `${num} ${num === 1 ? "file" : "files"}`;
|
|
155
|
+
|
|
156
|
+
/** Lists offered files and sets the field by id; `add`/`sub` are the only way to keep files `read` does not offer. */
|
|
157
|
+
export const useFileFieldTool = <T extends { id: string }>(
|
|
158
|
+
onChange: unknown,
|
|
159
|
+
{ read, label, max, min, disabled }: FileFieldSource<T>,
|
|
160
|
+
) => {
|
|
161
|
+
const surface = useSurface();
|
|
162
|
+
const scope = useScopePath();
|
|
163
|
+
const action = actionTagOf(onChange)?.action ?? null;
|
|
164
|
+
const live = useRef({ onChange, read, label });
|
|
165
|
+
live.current = { onChange, read, label };
|
|
166
|
+
const scopeKey = scope.join(".");
|
|
167
|
+
useEffect(() => {
|
|
168
|
+
if (!action || disabled || !read) return;
|
|
169
|
+
const ref = FormFields.ref(action);
|
|
170
|
+
const target = ref && FormFields.relationOf(ref.field);
|
|
171
|
+
|
|
172
|
+
if (!ref || !target || FormFields.schema(ref.field)) return;
|
|
173
|
+
const many = ref.field.arrDepth > 0;
|
|
174
|
+
const nullable = !!ref.field.nullable && !many;
|
|
175
|
+
const names = formSetterNames(capitalize(ref.refName), ref.key);
|
|
176
|
+
const listName = FormFields.optionsToolName(ref.refName, ref.key);
|
|
177
|
+
const argName = many ? `${ref.key}Ids` : `${ref.key}Id`;
|
|
178
|
+
const id: JsonSchema = { type: "string" };
|
|
179
|
+
const ids: JsonSchema = { type: "array", items: id };
|
|
180
|
+
const files = () => live.current.read?.() ?? [];
|
|
181
|
+
const options = () => files().map((file) => ({ id: file.id, label: live.current.label(file) }));
|
|
182
|
+
const held = (value: unknown): T[] => {
|
|
183
|
+
const list = files();
|
|
184
|
+
const wanted = Array.isArray(value) ? value : [value];
|
|
185
|
+
return wanted.flatMap((one) => {
|
|
186
|
+
const found = list.find((file) => file.id === one);
|
|
187
|
+
return found ? [found] : [];
|
|
188
|
+
});
|
|
189
|
+
};
|
|
190
|
+
const pair = many && !!dispatcherOf(names.addFieldOnModel) && !!dispatcherOf(names.subFieldOnModel);
|
|
191
|
+
const guardIds = (name: string, value: unknown, allowNull: boolean): true | string => {
|
|
192
|
+
if (allowNull && (value === null || value === undefined)) return true;
|
|
193
|
+
const wanted = Array.isArray(value) ? value : [value];
|
|
194
|
+
if (!Array.isArray(value) && Array.isArray(wanted[0])) return `"${argName}" of ${name} takes ids, not a list.`;
|
|
195
|
+
const list = files();
|
|
196
|
+
const missing = wanted.filter((one) => typeof one !== "string" || !list.some((file) => file.id === one));
|
|
197
|
+
if (!missing.length) return true;
|
|
198
|
+
const route = pair
|
|
199
|
+
? ` A file already on ${ref.key} may not be offered at all — it can only be removed by position, with ${names.subFieldOnModel}.`
|
|
200
|
+
: "";
|
|
201
|
+
if (!list.length)
|
|
202
|
+
return `No file is offered for ${ref.key} yet — one has to be attached or uploaded first.${route}`;
|
|
203
|
+
return `The ${ref.refName} form offers no file ${missing.join(", ")}. It offers: ${list
|
|
204
|
+
.map((file) => `${file.id} (${live.current.label(file)})`)
|
|
205
|
+
.join(", ")}.${route}`;
|
|
206
|
+
};
|
|
207
|
+
const guardCount = (after: number, subbing = false): true | string => {
|
|
208
|
+
if (max !== undefined && after > max)
|
|
209
|
+
return `${ref.key} holds at most ${counted(max)}, and that would make ${after}. Remove one with ${names.subFieldOnModel} first.`;
|
|
210
|
+
if (min !== undefined && after < min)
|
|
211
|
+
return `${ref.key} holds at least ${counted(min)}, and that would leave ${after}.${
|
|
212
|
+
subbing ? ` Replace one with ${names.addFieldOnModel} instead.` : ""
|
|
213
|
+
}`;
|
|
214
|
+
return true;
|
|
215
|
+
};
|
|
216
|
+
const capNote = [
|
|
217
|
+
max === undefined ? "" : `It holds at most ${counted(max)}.`,
|
|
218
|
+
min === undefined ? "" : `It holds at least ${counted(min)}.`,
|
|
219
|
+
]
|
|
220
|
+
.filter(Boolean)
|
|
221
|
+
.join(" ");
|
|
222
|
+
const entries: ToolEntry[] = [
|
|
223
|
+
{
|
|
224
|
+
name: listName,
|
|
225
|
+
description: `List the files the ${ref.refName} form can put in ${ref.key}, by id. Pass an id from it to ${action}.`,
|
|
226
|
+
settle: false,
|
|
227
|
+
run: () => options(),
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: action,
|
|
231
|
+
description: [
|
|
232
|
+
many
|
|
233
|
+
? `Replace ${ref.key} on the ${ref.refName} form with files from ${listName}, by id. Every file not named is dropped, including one this list does not offer — use ${names.addFieldOnModel} to keep what is already there.`
|
|
234
|
+
: `Set ${ref.key} on the ${ref.refName} form to one file from ${listName}, by id.`,
|
|
235
|
+
many ? capNote : "",
|
|
236
|
+
]
|
|
237
|
+
.filter(Boolean)
|
|
238
|
+
.join(" "),
|
|
239
|
+
parameters: {
|
|
240
|
+
type: "object",
|
|
241
|
+
properties: { [argName]: many ? ids : id },
|
|
242
|
+
...(nullable ? {} : { required: [argName] }),
|
|
243
|
+
additionalProperties: false,
|
|
244
|
+
},
|
|
245
|
+
guard: (args) => {
|
|
246
|
+
const named = guardIds(action, args[argName], nullable);
|
|
247
|
+
if (named !== true || !many) return named;
|
|
248
|
+
return guardCount(Array.isArray(args[argName]) ? (args[argName] as unknown[]).length : 0);
|
|
249
|
+
},
|
|
250
|
+
run: (args) => {
|
|
251
|
+
const picked = held(args[argName]);
|
|
252
|
+
return (live.current.onChange as (value: unknown) => unknown)(many ? picked : (picked[0] ?? null));
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
];
|
|
256
|
+
if (pair)
|
|
257
|
+
entries.push(
|
|
258
|
+
{
|
|
259
|
+
name: names.addFieldOnModel,
|
|
260
|
+
description: [
|
|
261
|
+
`Append files from ${listName} to ${ref.key} on the ${ref.refName} form, by id. Leaves every file already there untouched.`,
|
|
262
|
+
capNote,
|
|
263
|
+
]
|
|
264
|
+
.filter(Boolean)
|
|
265
|
+
.join(" "),
|
|
266
|
+
parameters: {
|
|
267
|
+
type: "object",
|
|
268
|
+
properties: { [argName]: ids },
|
|
269
|
+
required: [argName],
|
|
270
|
+
additionalProperties: false,
|
|
271
|
+
},
|
|
272
|
+
guard: (args) => {
|
|
273
|
+
const named = guardIds(names.addFieldOnModel, args[argName], false);
|
|
274
|
+
if (named !== true) return named;
|
|
275
|
+
const adding = Array.isArray(args[argName]) ? (args[argName] as unknown[]).length : 0;
|
|
276
|
+
return guardCount(rowsOf(ref).length + adding);
|
|
277
|
+
},
|
|
278
|
+
run: (args) => dispatcherOf(names.addFieldOnModel)?.(held(args[argName])),
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
name: names.subFieldOnModel,
|
|
282
|
+
description: `Remove files from ${ref.key} on the ${ref.refName} form by their positions, counting from 0.`,
|
|
283
|
+
parameters: idxsParameters,
|
|
284
|
+
guard: (args) => {
|
|
285
|
+
const idxs = args.idxs;
|
|
286
|
+
if (!Array.isArray(idxs) || !idxs.length)
|
|
287
|
+
return `"idxs" of ${names.subFieldOnModel} takes at least one position.`;
|
|
288
|
+
const length = rowsOf(ref).length;
|
|
289
|
+
const outside = idxs.filter((idx) => isOutside(idx, length));
|
|
290
|
+
if (outside.length) return `${ref.key} holds ${counted(length)}, so ${outside.join(", ")} is out of range.`;
|
|
291
|
+
return guardCount(length - new Set(idxs).size, true);
|
|
292
|
+
},
|
|
293
|
+
run: (args) => dispatcherOf(names.subFieldOnModel)?.(args.idxs),
|
|
294
|
+
},
|
|
295
|
+
);
|
|
296
|
+
const registered = entries.map((entry) => surface.registerTool(scope, entry));
|
|
297
|
+
return () => {
|
|
298
|
+
for (const unregister of registered) unregister();
|
|
299
|
+
};
|
|
300
|
+
}, [surface, scopeKey, action, disabled, !read, max, min]);
|
|
301
|
+
};
|