akanjs 3.0.0-beta.2 → 3.0.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base/base.ts +6 -11
- package/base/baseEnv.ts +17 -11
- package/base/databaseModes.ts +75 -0
- package/base/index.ts +1 -0
- package/base/primitiveRegistry.ts +38 -47
- package/base/symbols.ts +1 -1
- package/base/types.ts +1 -1
- package/base/utils.ts +3 -6
- package/capacitor.base.config.ts +2 -3
- package/client/capacitor.ts +18 -63
- package/client/cn.ts +3 -13
- package/client/cookie.ts +6 -15
- package/client/createFont.ts +0 -2
- package/client/csrTypes.ts +6 -59
- package/client/decorators.ts +1 -1
- package/client/device.ts +52 -44
- package/client/frameConfig.ts +15 -26
- package/client/index.ts +0 -1
- package/client/makePageProto.tsx +3 -4
- package/client/route/RootLayoutDefinition.ts +0 -6
- package/client/route/RouteDefinition.ts +5 -30
- package/client/route/resolveRouteModule.ts +1 -5
- package/client/router.ts +35 -39
- package/client/rscNavigation.ts +4 -5
- package/client/sharedContext.ts +2 -19
- package/client/storage.ts +29 -38
- package/client/translator.ts +5 -6
- package/client/types.ts +0 -3
- package/common/CodeAgentClient.ts +91 -0
- package/common/CodeTranscript.ts +325 -0
- package/common/Logger.ts +9 -34
- package/common/TrustedProxy.ts +6 -34
- package/common/applyMixins.ts +13 -2
- package/common/authToken.ts +0 -11
- package/common/capitalize.ts +3 -4
- package/common/clamp.ts +0 -1
- package/common/clientAddress.ts +1 -15
- package/common/codeAgentProfile.ts +181 -0
- package/common/codeAgentWire.ts +305 -0
- package/{server/routing → common}/eventStream.ts +1 -6
- package/common/fileUpload.ts +1 -12
- package/common/formatNumber.ts +3 -12
- package/common/index.ts +104 -19
- package/common/interpolateTranslation.ts +1 -6
- package/common/isEmail.ts +0 -1
- package/common/isRecord.ts +2 -0
- package/common/isThenable.ts +1 -8
- package/common/isValidDate.ts +3 -5
- package/common/logContext.ts +1 -1
- package/{ui/Agent → common}/markdownBlocks.ts +0 -3
- package/common/markdownSpans.ts +47 -0
- package/{ui/Agent → common}/markdownTable.ts +1 -5
- package/common/mcpExposure.ts +4 -27
- package/common/objectPath.ts +67 -0
- package/common/objectify.ts +52 -0
- package/common/{isPhoneNumber.ts → phone.ts} +7 -1
- package/common/randomPick.ts +13 -0
- package/common/requestOrigin.ts +0 -17
- package/common/restClient.ts +8 -13
- package/common/round.ts +4 -0
- package/common/routeConvention.ts +21 -14
- package/common/sleep.ts +1 -8
- package/common/subRoute.ts +4 -7
- package/common/toError.ts +1 -0
- package/common/tunnelWire.ts +263 -0
- package/common/types.ts +6 -7
- package/common/{splitVersion.ts → version.ts} +3 -6
- package/common/{websocketBinaryFrame.ts → websocketContract.ts} +43 -9
- package/constant/cascadePaths.ts +6 -9
- package/constant/constantRegistry.ts +21 -57
- package/constant/crystalize.ts +2 -12
- package/constant/dateSlot.ts +0 -15
- package/constant/fieldInfo.ts +30 -109
- package/constant/fieldQueryMeta.ts +2 -10
- package/constant/getDefault.ts +16 -8
- package/constant/hydrationPlan.ts +1 -9
- package/constant/index.ts +0 -1
- package/constant/labelOf.ts +1 -6
- package/constant/mask.ts +36 -38
- package/constant/purify.ts +6 -14
- package/constant/serialize.ts +82 -5
- package/constant/textFieldPaths.ts +2 -3
- package/constant/types.ts +2 -6
- package/constant/via.ts +20 -60
- package/dictionary/DictionaryLookup.ts +1 -7
- package/dictionary/agent.dictionary.ts +43 -11
- package/dictionary/base.dictionary.ts +11 -0
- package/dictionary/dictInfo.ts +145 -626
- package/dictionary/dictShape.ts +54 -0
- package/dictionary/dictionary.ts +1 -2
- package/dictionary/dictionaryRegistry.ts +7 -28
- package/dictionary/locale.ts +24 -116
- package/dictionary/trans.ts +18 -56
- package/document/dataLoader.ts +77 -78
- package/document/database.ts +52 -56
- package/document/documentQuery.ts +32 -32
- package/document/documentSchema.ts +21 -26
- package/document/filterMeta.ts +11 -31
- package/document/index.ts +0 -1
- package/document/into.ts +8 -18
- package/document/loaderInfo.ts +28 -7
- package/document/noDocumentError.ts +2 -7
- package/document/queryEvaluator.ts +21 -43
- package/document/types.ts +0 -1
- package/fetch/client/fetchClient.ts +66 -105
- package/fetch/client/fetchHandle.ts +4 -12
- package/fetch/client/httpClient.ts +35 -68
- package/fetch/client/remoteError.ts +2 -8
- package/fetch/client/sliceInitHandle.ts +3 -6
- package/fetch/client/sliceQueryArgs.ts +11 -0
- package/fetch/client/wsClient.ts +75 -64
- package/fetch/fetchType/appliedReturn.type.ts +5 -24
- package/fetch/fetchType/buildFetch.type.ts +28 -1
- package/fetch/fetchType/index.ts +0 -1
- package/fetch/requestStorage.ts +7 -28
- package/fetch/types.ts +0 -1
- package/index.ts +31 -64
- package/package.json +19 -5
- package/server/akanApp.ts +138 -289
- package/server/akanAppHeaders.ts +2 -3
- package/server/akanOption.ts +25 -27
- package/server/akanServer.ts +98 -219
- package/server/animatedImage.ts +2 -11
- package/server/artifact/builderRpc.ts +24 -64
- package/server/artifact/index.ts +0 -1
- package/server/artifact/ipcTypes.ts +27 -30
- package/server/artifact/routeClientCache.ts +18 -37
- package/server/artifact/routeSeedIndexStore.ts +2 -35
- package/server/artifact/routesManifestStore.ts +13 -38
- package/server/binaryPubsub.ts +0 -9
- package/server/cachePolicy.ts +10 -44
- package/server/console.ts +12 -16
- package/server/consoleSession.ts +55 -12
- package/server/contentEncoding.ts +42 -27
- package/server/decorators.ts +4 -70
- package/server/devtools/constantSerializer.ts +2 -14
- package/server/devtools/depsSerializer.ts +14 -46
- package/server/devtools/devtoolsJson.ts +6 -18
- package/server/devtools/devtoolsRouter.ts +2 -12
- package/server/devtools/signalSerializer.ts +5 -44
- package/server/devtools/types.ts +0 -12
- package/server/di/diLifecycle.ts +141 -221
- package/server/di/predefinedAdaptor.ts +11 -5
- package/server/di/resolveHierarchy.ts +114 -5
- package/server/di/utils.ts +13 -29
- package/server/head.tsx +53 -0
- package/server/hmr/clientScript.ts +2 -8
- package/server/hmr/devHmrController.ts +28 -32
- package/server/hmr/wsHub.ts +9 -7
- package/server/imageOptimizer.ts +5 -26
- package/server/index.ts +1 -1
- package/server/lifecycle/portInUse.ts +1 -4
- package/server/lifecycle/runtimeDir.ts +0 -4
- package/server/lifecycle/shutdownManager.ts +4 -29
- package/server/logging/childOutputReader.ts +0 -12
- package/server/logging/hubFileSink.ts +10 -6
- package/server/logging/logControlSocket.ts +13 -7
- package/server/logging/logForwarder.ts +19 -22
- package/server/logging/logHub.ts +0 -0
- package/server/logging/logQuery.ts +4 -7
- package/server/logging/logStdoutWriter.ts +1 -11
- package/server/logging/logStreamRoute.ts +4 -21
- package/server/logging/logTailClient.ts +1 -8
- package/server/logging/rotatingLogWriter.ts +4 -6
- package/server/mcp/McpAuth.ts +5 -79
- package/server/mcp/McpDispatcher.ts +13 -90
- package/server/mcp/McpEventStream.ts +2 -12
- package/server/mcp/McpExecutionContext.ts +1 -42
- package/server/mcp/McpRateLimiter.ts +61 -30
- package/server/mcp/McpRouter.ts +49 -208
- package/server/mcp/PagePromptComposer.ts +7 -29
- package/server/memoryLimit.ts +1 -13
- package/server/oauth/OAuthAuthorize.ts +3 -7
- package/server/oauth/OAuthClientIdMetadata.ts +2 -27
- package/server/oauth/OAuthErrors.ts +0 -13
- package/server/oauth/OAuthMetadata.ts +1 -7
- package/server/oauth/OAuthPkce.ts +0 -2
- package/server/oauth/OAuthRedirect.ts +0 -9
- package/server/oauth/OAuthRegistration.ts +0 -2
- package/server/oauth/OAuthRevocation.ts +1 -11
- package/server/oauth/OAuthToken.ts +3 -14
- package/server/oauth/oauthTypes.ts +1 -2
- package/server/ops/ageEncryption.ts +317 -0
- package/server/ops/appInfo.ts +92 -0
- package/server/ops/opsCommand.ts +116 -0
- package/server/ops/opsRoute.ts +151 -0
- package/server/ops/opsToken.ts +93 -0
- package/server/ops/snapshotJobs.ts +133 -0
- package/server/ops/snapshotRestore.ts +118 -0
- package/server/ops/snapshotTypes.ts +52 -0
- package/server/ops/sqliteFiles.ts +20 -0
- package/server/ops/sqliteSnapshot.ts +149 -0
- package/server/processMetricsCollector.ts +12 -14
- package/server/proxy/hostBasePathWebProxy.ts +20 -13
- package/server/proxy/index.ts +2 -3
- package/server/proxy/localeWebProxy.ts +3 -17
- package/server/proxy/types.ts +14 -0
- package/server/proxy/webProxyRunner.ts +13 -1
- package/server/resolver/CascadeRunner.ts +7 -23
- package/server/resolver/database.resolver.ts +57 -123
- package/server/resolver/service.resolver.ts +9 -161
- package/server/resolver/signal.resolver.ts +73 -98
- package/server/routeElementComposer.tsx +23 -52
- package/server/routeState.ts +15 -34
- package/server/routeTreeBuilder.ts +24 -83
- package/server/routing/apiRouter.ts +17 -49
- package/server/routing/appWsData.ts +4 -28
- package/server/routing/soloAppRoutes.ts +5 -5
- package/server/rscClient.tsx +31 -37
- package/server/rscClientFetch.ts +7 -3
- package/server/rscClientPatch.ts +4 -25
- package/server/rscHttp.ts +1 -1
- package/server/rscNavigationState.ts +10 -25
- package/server/rscPagePrompts.ts +4 -24
- package/server/rscSegmentOutlet.tsx +1 -5
- package/server/rscWorker.tsx +146 -285
- package/server/rscWorkerCache.ts +74 -8
- package/server/rscWorkerHost.ts +45 -192
- package/server/semaphore.ts +1 -1
- package/server/sitemap.ts +1 -3
- package/server/ssrFromRscRenderer.tsx +31 -124
- package/server/ssrTypes.ts +3 -29
- package/server/staticPath.ts +0 -16
- package/server/systemPageDocument.tsx +65 -2
- package/server/systemPages.tsx +4 -2
- package/server/tunnel/TunnelAgent.ts +237 -0
- package/server/tunnel/TunnelDataSocket.ts +146 -0
- package/server/tunnel/TunnelHttpStream.ts +86 -0
- package/server/tunnel/TunnelTcpStream.ts +96 -0
- package/server/tunnel/TunnelWebsocketStream.ts +110 -0
- package/server/tunnel/index.ts +6 -0
- package/server/tunnel/tunnelStream.ts +32 -0
- package/server/types.tsx +2 -9
- package/server/webRouter.ts +88 -306
- package/service/agent.service.ts +66 -35
- package/service/injectInfo.ts +106 -75
- package/service/ipcTypes.ts +4 -1
- package/service/liveSyncHub.ts +4 -34
- package/service/predefinedAdaptor/anthropicLlm.ts +65 -75
- package/service/predefinedAdaptor/cache.adaptor.ts +257 -75
- package/service/predefinedAdaptor/database.adaptor.ts +366 -108
- package/service/predefinedAdaptor/documentTransfer.ts +89 -0
- package/service/predefinedAdaptor/index.ts +2 -1
- package/service/predefinedAdaptor/insightQuery.ts +89 -79
- package/service/predefinedAdaptor/llm.adaptor.ts +64 -54
- package/service/predefinedAdaptor/llmOverflow.ts +63 -0
- package/service/predefinedAdaptor/openaiDialect.ts +56 -64
- package/service/predefinedAdaptor/openaiLlm.ts +24 -27
- package/service/predefinedAdaptor/queue.adaptor.ts +41 -22
- package/service/predefinedAdaptor/schedule.adaptor.ts +69 -9
- package/service/predefinedAdaptor/searchIndex.ts +76 -325
- package/service/predefinedAdaptor/solidCache.adaptor.ts +135 -12
- package/service/predefinedAdaptor/solidPubsub.adaptor.ts +28 -16
- package/service/predefinedAdaptor/solidQueue.adaptor.ts +61 -10
- package/service/predefinedAdaptor/solidSqlite.ts +10 -16
- package/service/predefinedAdaptor/sql/PendingStoreEnsures.ts +1 -0
- package/service/predefinedAdaptor/sql/PostgresInsightSession.ts +113 -0
- package/service/predefinedAdaptor/sql/QueryCompiler.ts +50 -30
- package/service/predefinedAdaptor/sql/SqlDocumentStore.ts +290 -138
- package/service/predefinedAdaptor/sql/SqliteInsightSession.ts +85 -0
- package/service/predefinedAdaptor/sql/UpdateCompiler.ts +1 -7
- package/service/predefinedAdaptor/sql/dialect/postgres.ts +138 -53
- package/service/predefinedAdaptor/sql/dialect/sqlite.ts +18 -15
- package/service/predefinedAdaptor/sql/driver/bunSqlite.ts +31 -4
- package/service/predefinedAdaptor/sql/driver/libsql.ts +20 -12
- package/service/predefinedAdaptor/sql/driver/postgres.ts +13 -7
- package/service/predefinedAdaptor/sql/search/fts5.ts +249 -0
- package/service/predefinedAdaptor/sql/search/mirror.ts +76 -0
- package/service/predefinedAdaptor/sql/search/postgres.ts +453 -0
- package/service/predefinedAdaptor/sql/search/types.ts +50 -0
- package/service/predefinedAdaptor/sql/types.ts +76 -17
- package/service/predefinedAdaptor/sql/values.ts +40 -2
- package/service/predefinedAdaptor/sqlitePath.ts +12 -0
- package/service/predefinedAdaptor/sseData.ts +23 -0
- package/service/predefinedAdaptor/storage.adaptor.ts +19 -7
- package/service/predefinedAdaptor/websocket.adaptor.ts +154 -184
- package/service/serve.ts +1 -2
- package/service/serviceModule.ts +52 -70
- package/service/toolNames.ts +5 -22
- package/service/types.ts +3 -9
- package/signal/CrossSiteGuard.ts +5 -40
- package/signal/SignalFailure.ts +2 -15
- package/signal/agent/AgentCatalogue.ts +9 -55
- package/signal/agent.signal.ts +9 -6
- package/signal/agentMeter.ts +45 -0
- package/signal/agentTurnStream.ts +48 -46
- package/signal/endpoint.ts +12 -2
- package/signal/endpointCache.ts +59 -0
- package/signal/endpointInfo.ts +13 -27
- package/signal/exception.ts +3 -34
- package/signal/guard.ts +4 -21
- package/signal/guards.ts +2 -10
- package/signal/index.ts +1 -0
- package/signal/internal.ts +3 -7
- package/signal/internalArg.ts +10 -13
- package/signal/internalInfo.ts +1 -1
- package/signal/mcp/McpDocument.ts +21 -90
- package/signal/mcp/McpProgress.ts +6 -19
- package/signal/mcp/McpUriTemplate.ts +1 -27
- package/signal/mcp/Msg.ts +13 -122
- package/signal/mcp/mcpProtocol.ts +3 -26
- package/signal/mcp/pagePrompt.ts +3 -9
- package/signal/middleware.ts +15 -65
- package/signal/openapi/openapi.ts +0 -4
- package/signal/schema/JsonSchemaBuilder.ts +32 -46
- package/signal/serializer/fetch.serializer.ts +37 -43
- package/signal/serverSignal.ts +6 -8
- package/signal/signalContext.ts +70 -161
- package/signal/signalRegistry.ts +11 -17
- package/signal/slice.ts +6 -12
- package/signal/sliceInfo.ts +5 -30
- package/signal/trace.ts +11 -84
- package/signal/types.ts +27 -57
- package/store/SliceRequest.ts +1 -11
- package/store/action.ts +153 -395
- package/store/actionTag.ts +1 -10
- package/store/agent/AgentBridge.ts +3 -25
- package/store/agent/AgentContext.ts +2 -9
- package/store/agent/AgentCursor.ts +160 -0
- package/store/agent/AgentPrompts.ts +0 -15
- package/store/agent/AgentVisual.ts +152 -0
- package/store/agent/ScreenFlash.ts +67 -0
- package/store/agent/ScreenReader.ts +3 -52
- package/store/agent/ScreenSettle.ts +1 -13
- package/store/agent/ScreenTarget.ts +15 -32
- package/store/agent/StoreCatalogue.ts +12 -24
- package/store/agent/StoreSurfaceSource.ts +35 -65
- package/store/agent/index.ts +4 -4
- package/store/agentic/AgentValue.ts +9 -26
- package/store/agentic/StExposeBuilder.ts +3 -12
- package/store/agentic/StExposeDraft.ts +0 -6
- package/store/agentic/StStateBuilder.ts +3 -11
- package/store/agentic/StStateDraft.ts +0 -5
- package/store/agentic/StToolBuilder.ts +48 -41
- package/store/agentic/StToolDraft.ts +0 -7
- package/store/agentic/attachAgentic.ts +2 -10
- package/store/agentic/formFields.ts +8 -42
- package/store/agentic/index.ts +1 -1
- package/store/agentic/useAgentReference.ts +31 -0
- package/store/agentic/useFieldTool.ts +176 -58
- package/store/agentic/useFormTools.ts +4 -21
- package/store/agentic/useRelationFieldTool.ts +2 -15
- package/store/databaseStateNames.ts +0 -9
- package/store/draftStore.ts +4 -54
- package/store/formSetterNames.ts +2 -19
- package/store/hooks.ts +1 -1
- package/store/liveInsert.ts +1 -30
- package/store/sliceKeys.ts +37 -0
- package/store/sliceRole.ts +1 -10
- package/store/state.ts +4 -50
- package/store/stateBuilder.ts +1 -23
- package/store/storeInstance.ts +21 -114
- package/store/storeRegistry.ts +1 -8
- package/store/types.ts +1 -1
- package/test/conformance.ts +299 -0
- package/test/index.ts +2 -2
- package/test/sampleOf.ts +52 -28
- package/test/signalTestRuntime.ts +6 -10
- package/test/testServer.ts +66 -31
- package/types/base/base.d.ts +2 -3
- package/types/base/baseEnv.d.ts +7 -10
- package/types/base/databaseModes.d.ts +28 -0
- package/types/base/index.d.ts +1 -0
- package/types/base/primitiveRegistry.d.ts +23 -10
- package/types/base/symbols.d.ts +1 -1
- package/types/capacitor.base.config.d.ts +1 -1
- package/types/client/cn.d.ts +3 -13
- package/types/client/cookie.d.ts +3 -12
- package/types/client/csrTypes.d.ts +6 -57
- package/types/client/decorators.d.ts +1 -1
- package/types/client/device.d.ts +2 -1
- package/types/client/index.d.ts +0 -1
- package/types/client/route/RootLayoutDefinition.d.ts +0 -1
- package/types/client/route/RouteDefinition.d.ts +4 -16
- package/types/client/route/resolveRouteModule.d.ts +1 -5
- package/types/client/router.d.ts +8 -4
- package/types/client/rscNavigation.d.ts +4 -5
- package/types/client/sharedContext.d.ts +2 -19
- package/types/client/storage.d.ts +1 -1
- package/types/client/types.d.ts +0 -3
- package/types/common/CodeAgentClient.d.ts +20 -0
- package/types/common/CodeTranscript.d.ts +72 -0
- package/types/common/Logger.d.ts +4 -20
- package/types/common/TrustedProxy.d.ts +2 -28
- package/types/common/applyMixins.d.ts +3 -0
- package/types/common/authToken.d.ts +0 -11
- package/types/common/capitalize.d.ts +1 -1
- package/types/common/clamp.d.ts +0 -1
- package/types/common/clientAddress.d.ts +1 -15
- package/types/common/codeAgentProfile.d.ts +115 -0
- package/types/common/codeAgentWire.d.ts +279 -0
- package/types/{server/routing → common}/eventStream.d.ts +0 -5
- package/types/common/fileUpload.d.ts +6 -11
- package/types/common/index.d.ts +20 -19
- package/types/common/interpolateTranslation.d.ts +1 -6
- package/types/common/isEmail.d.ts +0 -1
- package/types/common/isRecord.d.ts +1 -0
- package/types/common/isThenable.d.ts +0 -8
- package/types/common/logContext.d.ts +1 -1
- package/types/{ui/Agent → common}/markdownBlocks.d.ts +0 -3
- package/types/common/markdownSpans.d.ts +30 -0
- package/types/{ui/Agent → common}/markdownTable.d.ts +0 -2
- package/types/common/mcpExposure.d.ts +3 -23
- package/types/common/objectPath.d.ts +10 -0
- package/types/common/objectify.d.ts +7 -0
- package/types/common/phone.d.ts +2 -0
- package/types/common/randomPick.d.ts +1 -0
- package/types/common/requestOrigin.d.ts +0 -17
- package/types/common/restClient.d.ts +0 -7
- package/types/common/round.d.ts +1 -0
- package/types/common/routeConvention.d.ts +2 -5
- package/types/common/sleep.d.ts +0 -1
- package/types/common/subRoute.d.ts +4 -6
- package/types/common/toError.d.ts +1 -0
- package/types/common/tunnelWire.d.ts +161 -0
- package/types/common/types.d.ts +7 -7
- package/types/common/version.d.ts +6 -0
- package/types/common/websocketContract.d.ts +41 -0
- package/types/constant/cascadePaths.d.ts +2 -5
- package/types/constant/constantRegistry.d.ts +4 -4
- package/types/constant/dateSlot.d.ts +0 -5
- package/types/constant/fieldInfo.d.ts +2 -21
- package/types/constant/fieldQueryMeta.d.ts +2 -10
- package/types/constant/getDefault.d.ts +5 -7
- package/types/constant/hydrationPlan.d.ts +0 -8
- package/types/constant/index.d.ts +0 -1
- package/types/constant/labelOf.d.ts +1 -6
- package/types/constant/mask.d.ts +11 -36
- package/types/constant/serialize.d.ts +10 -2
- package/types/constant/types.d.ts +2 -6
- package/types/constant/via.d.ts +0 -1
- package/types/dictionary/DictionaryLookup.d.ts +1 -7
- package/types/dictionary/agent.dictionary.d.ts +2 -1
- package/types/dictionary/base.dictionary.d.ts +1 -1
- package/types/dictionary/dictInfo.d.ts +25 -92
- package/types/dictionary/dictShape.d.ts +26 -0
- package/types/dictionary/dictionary.d.ts +9 -9
- package/types/dictionary/dictionaryRegistry.d.ts +1 -15
- package/types/dictionary/locale.d.ts +9 -28
- package/types/dictionary/trans.d.ts +5 -14
- package/types/document/dataLoader.d.ts +2 -2
- package/types/document/database.d.ts +21 -14
- package/types/document/documentQuery.d.ts +6 -1
- package/types/document/documentSchema.d.ts +3 -7
- package/types/document/filterMeta.d.ts +3 -8
- package/types/document/index.d.ts +0 -1
- package/types/document/into.d.ts +3 -2
- package/types/document/loaderInfo.d.ts +9 -4
- package/types/document/noDocumentError.d.ts +2 -7
- package/types/document/queryEvaluator.d.ts +7 -24
- package/types/document/types.d.ts +0 -1
- package/types/fetch/client/fetchClient.d.ts +6 -9
- package/types/fetch/client/fetchHandle.d.ts +3 -11
- package/types/fetch/client/httpClient.d.ts +5 -1
- package/types/fetch/client/remoteError.d.ts +2 -8
- package/types/fetch/client/sliceInitHandle.d.ts +2 -5
- package/types/fetch/client/sliceQueryArgs.d.ts +3 -0
- package/types/fetch/client/wsClient.d.ts +10 -15
- package/types/fetch/fetchType/appliedReturn.type.d.ts +5 -23
- package/types/fetch/fetchType/buildFetch.type.d.ts +15 -1
- package/types/fetch/fetchType/index.d.ts +0 -1
- package/types/fetch/requestStorage.d.ts +3 -16
- package/types/fetch/types.d.ts +0 -1
- package/types/index.d.ts +30 -64
- package/types/server/akanApp.d.ts +5 -28
- package/types/server/akanAppHeaders.d.ts +0 -1
- package/types/server/akanOption.d.ts +12 -24
- package/types/server/akanServer.d.ts +16 -56
- package/types/server/animatedImage.d.ts +0 -6
- package/types/server/artifact/builderRpc.d.ts +7 -30
- package/types/server/artifact/index.d.ts +0 -1
- package/types/server/artifact/ipcTypes.d.ts +22 -29
- package/types/server/artifact/routeClientCache.d.ts +3 -11
- package/types/server/artifact/routeSeedIndexStore.d.ts +0 -16
- package/types/server/artifact/routesManifestStore.d.ts +1 -1
- package/types/server/binaryPubsub.d.ts +0 -8
- package/types/server/cachePolicy.d.ts +2 -21
- package/types/server/console.d.ts +3 -6
- package/types/server/consoleSession.d.ts +2 -2
- package/types/server/contentEncoding.d.ts +6 -14
- package/types/server/decorators.d.ts +0 -12
- package/types/server/devtools/constantSerializer.d.ts +1 -6
- package/types/server/devtools/depsSerializer.d.ts +1 -7
- package/types/server/devtools/devtoolsJson.d.ts +1 -7
- package/types/server/devtools/devtoolsRouter.d.ts +2 -11
- package/types/server/devtools/signalSerializer.d.ts +1 -9
- package/types/server/devtools/types.d.ts +0 -11
- package/types/server/di/diLifecycle.d.ts +0 -36
- package/types/server/di/predefinedAdaptor.d.ts +3 -2
- package/types/server/di/resolveHierarchy.d.ts +22 -5
- package/types/server/di/utils.d.ts +4 -17
- package/types/server/head.d.ts +9 -0
- package/types/server/hmr/devHmrController.d.ts +0 -2
- package/types/server/hmr/wsHub.d.ts +6 -1
- package/types/server/index.d.ts +1 -1
- package/types/server/lifecycle/portInUse.d.ts +1 -4
- package/types/server/lifecycle/runtimeDir.d.ts +0 -4
- package/types/server/lifecycle/shutdownManager.d.ts +0 -9
- package/types/server/logging/childOutputReader.d.ts +0 -12
- package/types/server/logging/hubFileSink.d.ts +1 -5
- package/types/server/logging/logControlSocket.d.ts +2 -7
- package/types/server/logging/logForwarder.d.ts +3 -15
- package/types/server/logging/logHub.d.ts +1 -15
- package/types/server/logging/logQuery.d.ts +3 -6
- package/types/server/logging/logStdoutWriter.d.ts +0 -6
- package/types/server/logging/logStreamRoute.d.ts +0 -9
- package/types/server/logging/logTailClient.d.ts +0 -5
- package/types/server/mcp/McpAuth.d.ts +3 -71
- package/types/server/mcp/McpDispatcher.d.ts +0 -23
- package/types/server/mcp/McpEventStream.d.ts +1 -12
- package/types/server/mcp/McpExecutionContext.d.ts +0 -33
- package/types/server/mcp/McpRateLimiter.d.ts +10 -13
- package/types/server/mcp/McpRouter.d.ts +1 -47
- package/types/server/mcp/PagePromptComposer.d.ts +1 -13
- package/types/server/memoryLimit.d.ts +1 -13
- package/types/server/oauth/OAuthAuthorize.d.ts +1 -6
- package/types/server/oauth/OAuthClientIdMetadata.d.ts +2 -26
- package/types/server/oauth/OAuthErrors.d.ts +0 -13
- package/types/server/oauth/OAuthMetadata.d.ts +1 -7
- package/types/server/oauth/OAuthPkce.d.ts +0 -1
- package/types/server/oauth/OAuthRedirect.d.ts +0 -9
- package/types/server/oauth/OAuthRegistration.d.ts +0 -1
- package/types/server/oauth/OAuthRevocation.d.ts +1 -11
- package/types/server/oauth/OAuthToken.d.ts +1 -13
- package/types/server/oauth/oauthTypes.d.ts +1 -2
- package/types/server/ops/ageEncryption.d.ts +19 -0
- package/types/server/ops/appInfo.d.ts +36 -0
- package/types/server/ops/opsCommand.d.ts +5 -0
- package/types/server/ops/opsRoute.d.ts +24 -0
- package/types/server/ops/opsToken.d.ts +26 -0
- package/types/server/ops/snapshotJobs.d.ts +24 -0
- package/types/server/ops/snapshotRestore.d.ts +24 -0
- package/types/server/ops/snapshotTypes.d.ts +45 -0
- package/types/server/ops/sqliteFiles.d.ts +5 -0
- package/types/server/ops/sqliteSnapshot.d.ts +32 -0
- package/types/server/processMetricsCollector.d.ts +3 -1
- package/types/server/proxy/hostBasePathWebProxy.d.ts +7 -1
- package/types/server/proxy/index.d.ts +2 -3
- package/types/server/proxy/localeWebProxy.d.ts +1 -1
- package/types/server/proxy/types.d.ts +5 -0
- package/types/server/proxy/webProxyRunner.d.ts +1 -0
- package/types/server/resolver/CascadeRunner.d.ts +0 -4
- package/types/server/resolver/database.resolver.d.ts +1 -1
- package/types/server/resolver/service.resolver.d.ts +2 -2
- package/types/server/resolver/signal.resolver.d.ts +1 -15
- package/types/server/routeElementComposer.d.ts +2 -8
- package/types/server/routeState.d.ts +1 -1
- package/types/server/routing/apiRouter.d.ts +2 -20
- package/types/server/routing/appWsData.d.ts +0 -26
- package/types/server/routing/soloAppRoutes.d.ts +2 -6
- package/types/server/rscClient.d.ts +0 -9
- package/types/server/rscClientFetch.d.ts +6 -6
- package/types/server/rscClientPatch.d.ts +1 -1
- package/types/server/rscHttp.d.ts +1 -0
- package/types/server/rscNavigationState.d.ts +3 -2
- package/types/server/rscPagePrompts.d.ts +0 -9
- package/types/server/rscWorkerCache.d.ts +41 -3
- package/types/server/rscWorkerHost.d.ts +5 -61
- package/types/server/ssrFromRscRenderer.d.ts +0 -12
- package/types/server/ssrTypes.d.ts +2 -29
- package/types/server/staticPath.d.ts +0 -16
- package/types/server/systemPageDocument.d.ts +8 -0
- package/types/server/systemPages.d.ts +2 -3
- package/types/server/tunnel/TunnelAgent.d.ts +29 -0
- package/types/server/tunnel/TunnelDataSocket.d.ts +22 -0
- package/types/server/tunnel/TunnelHttpStream.d.ts +10 -0
- package/types/server/tunnel/TunnelTcpStream.d.ts +11 -0
- package/types/server/tunnel/TunnelWebsocketStream.d.ts +10 -0
- package/types/server/tunnel/index.d.ts +6 -0
- package/types/server/tunnel/tunnelStream.d.ts +19 -0
- package/types/server/tunnel.d.ts +1 -0
- package/types/server/types.d.ts +2 -9
- package/types/server/webRouter.d.ts +2 -19
- package/types/service/agent.service.d.ts +16 -29
- package/types/service/injectInfo.d.ts +26 -15
- package/types/service/ipcTypes.d.ts +6 -0
- package/types/service/liveSyncHub.d.ts +4 -22
- package/types/service/predefinedAdaptor/anthropicLlm.d.ts +20 -29
- package/types/service/predefinedAdaptor/cache.adaptor.d.ts +42 -12
- package/types/service/predefinedAdaptor/database.adaptor.d.ts +20 -16
- package/types/service/predefinedAdaptor/documentTransfer.d.ts +15 -0
- package/types/service/predefinedAdaptor/index.d.ts +2 -1
- package/types/service/predefinedAdaptor/insightQuery.d.ts +7 -30
- package/types/service/predefinedAdaptor/llm.adaptor.d.ts +54 -54
- package/types/service/predefinedAdaptor/llmOverflow.d.ts +16 -0
- package/types/service/predefinedAdaptor/openaiDialect.d.ts +19 -29
- package/types/service/predefinedAdaptor/openaiLlm.d.ts +9 -14
- package/types/service/predefinedAdaptor/queue.adaptor.d.ts +12 -7
- package/types/service/predefinedAdaptor/schedule.adaptor.d.ts +7 -2
- package/types/service/predefinedAdaptor/searchIndex.d.ts +17 -47
- package/types/service/predefinedAdaptor/solidCache.adaptor.d.ts +15 -6
- package/types/service/predefinedAdaptor/solidPubsub.adaptor.d.ts +6 -4
- package/types/service/predefinedAdaptor/solidSqlite.d.ts +2 -1
- package/types/service/predefinedAdaptor/sql/PostgresInsightSession.d.ts +20 -0
- package/types/service/predefinedAdaptor/sql/QueryCompiler.d.ts +9 -11
- package/types/service/predefinedAdaptor/sql/SqlDocumentStore.d.ts +11 -25
- package/types/service/predefinedAdaptor/sql/SqliteInsightSession.d.ts +15 -0
- package/types/service/predefinedAdaptor/sql/UpdateCompiler.d.ts +0 -4
- package/types/service/predefinedAdaptor/sql/dialect/postgres.d.ts +18 -10
- package/types/service/predefinedAdaptor/sql/dialect/sqlite.d.ts +5 -2
- package/types/service/predefinedAdaptor/sql/driver/bunSqlite.d.ts +9 -3
- package/types/service/predefinedAdaptor/sql/driver/libsql.d.ts +8 -5
- package/types/service/predefinedAdaptor/sql/driver/postgres.d.ts +4 -4
- package/types/service/predefinedAdaptor/sql/search/fts5.d.ts +28 -0
- package/types/service/predefinedAdaptor/sql/search/mirror.d.ts +20 -0
- package/types/service/predefinedAdaptor/sql/search/postgres.d.ts +53 -0
- package/types/service/predefinedAdaptor/sql/search/types.d.ts +45 -0
- package/types/service/predefinedAdaptor/sql/types.d.ts +69 -15
- package/types/service/predefinedAdaptor/sql/values.d.ts +8 -0
- package/types/service/predefinedAdaptor/sqlitePath.d.ts +1 -0
- package/types/service/predefinedAdaptor/sseData.d.ts +1 -0
- package/types/service/predefinedAdaptor/storage.adaptor.d.ts +3 -2
- package/types/service/predefinedAdaptor/websocket.adaptor.d.ts +26 -26
- package/types/service/serviceModule.d.ts +7 -7
- package/types/service/toolNames.d.ts +4 -21
- package/types/service/types.d.ts +3 -3
- package/types/signal/CrossSiteGuard.d.ts +3 -28
- package/types/signal/SignalFailure.d.ts +1 -15
- package/types/signal/agent/AgentCatalogue.d.ts +8 -54
- package/types/signal/agent.signal.d.ts +4 -1
- package/types/signal/agentMeter.d.ts +24 -0
- package/types/signal/agentTurnStream.d.ts +10 -11
- package/types/signal/endpoint.d.ts +0 -1
- package/types/signal/endpointCache.d.ts +5 -0
- package/types/signal/endpointInfo.d.ts +1 -9
- package/types/signal/exception.d.ts +1 -34
- package/types/signal/guard.d.ts +4 -15
- package/types/signal/guards.d.ts +2 -10
- package/types/signal/index.d.ts +1 -0
- package/types/signal/internal.d.ts +1 -5
- package/types/signal/internalArg.d.ts +7 -13
- package/types/signal/mcp/McpDocument.d.ts +5 -45
- package/types/signal/mcp/McpProgress.d.ts +6 -19
- package/types/signal/mcp/McpUriTemplate.d.ts +1 -19
- package/types/signal/mcp/Msg.d.ts +13 -70
- package/types/signal/mcp/mcpProtocol.d.ts +1 -26
- package/types/signal/mcp/pagePrompt.d.ts +3 -9
- package/types/signal/middleware.d.ts +0 -18
- package/types/signal/schema/JsonSchemaBuilder.d.ts +15 -43
- package/types/signal/serializer/fetch.serializer.d.ts +1 -6
- package/types/signal/serverSignal.d.ts +0 -1
- package/types/signal/signalContext.d.ts +14 -61
- package/types/signal/signalRegistry.d.ts +0 -1
- package/types/signal/slice.d.ts +3 -9
- package/types/signal/sliceInfo.d.ts +5 -30
- package/types/signal/trace.d.ts +2 -30
- package/types/signal/types.d.ts +27 -57
- package/types/store/SliceRequest.d.ts +1 -11
- package/types/store/action.d.ts +2 -6
- package/types/store/actionTag.d.ts +1 -10
- package/types/store/agent/AgentBridge.d.ts +3 -22
- package/types/store/agent/AgentContext.d.ts +1 -7
- package/types/store/agent/AgentCursor.d.ts +24 -0
- package/types/store/agent/AgentPrompts.d.ts +0 -5
- package/types/store/agent/AgentVisual.d.ts +25 -0
- package/types/store/agent/ScreenFlash.d.ts +23 -0
- package/types/store/agent/ScreenReader.d.ts +3 -26
- package/types/store/agent/ScreenSettle.d.ts +1 -12
- package/types/store/agent/ScreenTarget.d.ts +3 -23
- package/types/store/agent/StoreCatalogue.d.ts +12 -16
- package/types/store/agent/StoreSurfaceSource.d.ts +11 -23
- package/types/store/agent/index.d.ts +4 -3
- package/types/store/agentic/AgentValue.d.ts +3 -23
- package/types/store/agentic/StExposeBuilder.d.ts +2 -11
- package/types/store/agentic/StExposeDraft.d.ts +0 -6
- package/types/store/agentic/StStateBuilder.d.ts +1 -7
- package/types/store/agentic/StStateDraft.d.ts +0 -5
- package/types/store/agentic/StToolBuilder.d.ts +14 -37
- package/types/store/agentic/StToolDraft.d.ts +0 -7
- package/types/store/agentic/attachAgentic.d.ts +2 -10
- package/types/store/agentic/formFields.d.ts +5 -41
- package/types/store/agentic/index.d.ts +1 -1
- package/types/store/agentic/useAgentReference.d.ts +14 -0
- package/types/store/agentic/useFieldTool.d.ts +19 -16
- package/types/store/agentic/useFormTools.d.ts +1 -18
- package/types/store/agentic/useRelationFieldTool.d.ts +1 -14
- package/types/store/baseSt.d.ts +2 -2
- package/types/store/databaseStateNames.d.ts +0 -9
- package/types/store/draftStore.d.ts +4 -30
- package/types/store/formSetterNames.d.ts +0 -19
- package/types/store/hooks.d.ts +1 -1
- package/types/store/liveInsert.d.ts +0 -23
- package/types/store/sliceKeys.d.ts +31 -0
- package/types/store/sliceRole.d.ts +1 -10
- package/types/store/state.d.ts +2 -9
- package/types/store/stateBuilder.d.ts +0 -14
- package/types/store/storeInstance.d.ts +6 -20
- package/types/store/storeRegistry.d.ts +0 -2
- package/types/test/conformance.d.ts +73 -0
- package/types/test/index.d.ts +2 -2
- package/types/test/sampleOf.d.ts +17 -2
- package/types/test/signalTestRuntime.d.ts +1 -1
- package/types/test/testServer.d.ts +4 -3
- package/types/ui/Agent/Attach.d.ts +2 -2
- package/types/ui/Agent/Bubble.d.ts +3 -14
- package/types/ui/Agent/Chat.d.ts +31 -64
- package/types/ui/Agent/ChatCommands.d.ts +4 -14
- package/types/ui/Agent/Composer.d.ts +18 -5
- package/types/ui/Agent/Dock.d.ts +38 -10
- package/types/ui/Agent/Guide.d.ts +1 -5
- package/types/ui/Agent/History.d.ts +1 -18
- package/types/ui/Agent/Launcher.d.ts +2 -2
- package/types/ui/Agent/Markdown.d.ts +2 -6
- package/types/ui/Agent/MentionNode.d.ts +18 -0
- package/types/ui/Agent/Menu.d.ts +4 -4
- package/types/ui/Agent/Question.d.ts +1 -6
- package/types/ui/Agent/Queued.d.ts +1 -6
- package/types/ui/Agent/Refer.d.ts +9 -0
- package/types/ui/Agent/RichInput.d.ts +14 -0
- package/types/ui/Agent/Skip.d.ts +3 -15
- package/types/ui/Agent/Steps.d.ts +17 -0
- package/types/ui/Agent/ToolCard.d.ts +9 -0
- package/types/ui/Agent/Zone.d.ts +13 -30
- package/types/ui/Agent/agentSessionOf.d.ts +20 -16
- package/types/ui/Agent/attachment.d.ts +4 -38
- package/types/ui/Agent/fetchRunner.d.ts +1 -8
- package/types/ui/Agent/index.d.ts +2 -6
- package/types/ui/Agent/mentionDraft.d.ts +9 -0
- package/types/ui/Agent/tokenCount.d.ts +1 -5
- package/types/ui/Agent/useChatAttachments.d.ts +0 -5
- package/types/ui/Agent/useChatQueue.d.ts +3 -14
- package/types/ui/Agent/useChatReferences.d.ts +15 -0
- package/types/ui/Agent/useChatVoice.d.ts +0 -12
- package/types/ui/Agent/useDraftRecall.d.ts +0 -8
- package/types/ui/Agent/useKeyboardInset.d.ts +0 -7
- package/types/ui/Agent/useReferenceMenu.d.ts +35 -0
- package/types/ui/Agent/useSlashMenu.d.ts +0 -2
- package/types/ui/Agent/voice.d.ts +8 -42
- package/types/ui/Badge.d.ts +0 -1
- package/types/ui/BottomSheet.d.ts +2 -5
- package/types/ui/Button.d.ts +6 -23
- package/types/ui/ClientSide.d.ts +0 -2
- package/types/ui/Constant/schemaGraph.d.ts +0 -4
- package/types/ui/Copy.d.ts +2 -3
- package/types/ui/CsrImage.d.ts +2 -1
- package/types/ui/Data/Dashboard.d.ts +1 -4
- package/types/ui/Data/Item.d.ts +1 -1
- package/types/ui/Data/ListContainer.d.ts +1 -10
- package/types/ui/Data/Pagination.d.ts +0 -2
- package/types/ui/Data/QueryMaker.d.ts +0 -7
- package/types/ui/Data/RefPicker.d.ts +0 -7
- package/types/ui/DatePicker.d.ts +0 -11
- package/types/ui/Dialog/LegacyModal.d.ts +1 -4
- package/types/ui/Dialog/Provider.d.ts +37 -4
- package/types/ui/Dialog/index.d.ts +4 -4
- package/types/ui/Dropdown.d.ts +1 -9
- package/types/ui/Empty.d.ts +3 -10
- package/types/ui/Field/Collection.d.ts +1 -16
- package/types/ui/Field/Relation.d.ts +10 -37
- package/types/ui/Field/Text.d.ts +9 -66
- package/types/ui/Field/index.d.ts +0 -9
- package/types/ui/Field/lightRefCache.d.ts +11 -0
- package/types/ui/Field/useRelationOptions.d.ts +28 -0
- package/types/ui/Image.d.ts +8 -12
- package/types/ui/InfiniteScroll.d.ts +2 -6
- package/types/ui/Input.d.ts +8 -15
- package/types/ui/Layout/Role.d.ts +23 -0
- package/types/ui/Layout/Sider.d.ts +21 -0
- package/types/ui/Layout/TopInset.d.ts +5 -0
- package/types/ui/Layout/index.d.ts +7 -7
- package/types/ui/LegacyModal.d.ts +1 -12
- package/types/ui/Link/Action.d.ts +11 -0
- package/types/ui/Link/Anchor.d.ts +20 -0
- package/types/ui/Link/index.d.ts +4 -7
- package/types/ui/Load/Edit_Client.d.ts +1 -1
- package/types/ui/Load/Page.d.ts +3 -5
- package/types/ui/Load/Stream.d.ts +0 -12
- package/types/ui/Load/Units.d.ts +1 -1
- package/types/ui/Load/View.d.ts +2 -7
- package/types/ui/Loading/ProgressBar.d.ts +0 -4
- package/types/ui/Loading/Skeleton.d.ts +2 -0
- package/types/ui/Loading/Spin.d.ts +12 -2
- package/types/ui/Loading/index.d.ts +3 -8
- package/types/ui/Loading/index_.d.ts +3 -10
- package/types/ui/Menu.d.ts +0 -5
- package/types/ui/Modal.d.ts +0 -17
- package/types/ui/Model/AdminPanel.d.ts +1 -4
- package/types/ui/Model/DraftBar.d.ts +2 -7
- package/types/ui/Model/EditModal.d.ts +7 -22
- package/types/ui/Model/LoadStore.d.ts +18 -0
- package/types/ui/Model/Remove.d.ts +0 -2
- package/types/ui/Model/SureToRemove.d.ts +0 -3
- package/types/ui/Model/ViewEditModal.d.ts +0 -2
- package/types/ui/Model/draftScope.d.ts +0 -7
- package/types/ui/Model/index.d.ts +2 -2
- package/types/ui/Model/index_.d.ts +2 -2
- package/types/ui/Pagination.d.ts +4 -12
- package/types/ui/Popconfirm.d.ts +3 -17
- package/types/ui/Radio.d.ts +0 -4
- package/types/ui/RecentTime.d.ts +5 -9
- package/types/ui/Reference/Panel.d.ts +44 -6
- package/types/ui/Reference/Segmented.d.ts +0 -3
- package/types/ui/Reference/{style.d.ts → docUi.d.ts} +6 -2
- package/types/ui/Reference/index.d.ts +3 -7
- package/types/ui/Refresh.d.ts +1 -1
- package/types/ui/ScreenNavigator.d.ts +2 -2
- package/types/ui/Select.d.ts +4 -19
- package/types/ui/Signal/Endpoint.d.ts +43 -0
- package/types/ui/Signal/WebSocket.d.ts +23 -0
- package/types/ui/Signal/endpointEntries.d.ts +2 -4
- package/types/ui/Signal/index.d.ts +1 -3
- package/types/ui/Signal/style.d.ts +1 -2
- package/types/ui/Switch.d.ts +1 -5
- package/types/ui/System/CSR.d.ts +2 -2
- package/types/ui/System/Client.d.ts +2 -6
- package/types/ui/System/Common.d.ts +11 -22
- package/types/ui/System/Root.d.ts +1 -4
- package/types/ui/System/SSR.d.ts +2 -2
- package/types/ui/System/ThemeToggle.d.ts +1 -0
- package/types/ui/System/index.d.ts +1 -0
- package/types/ui/Tab/Provider.d.ts +24 -4
- package/types/ui/Tab/index.d.ts +3 -3
- package/types/ui/Table.d.ts +7 -23
- package/types/ui/Toast.d.ts +9 -16
- package/types/ui/ToggleSelect.d.ts +0 -5
- package/types/ui/Tooltip.d.ts +1 -2
- package/types/ui/UiOverride/{context.d.ts → UiOverride.d.ts} +24 -40
- package/types/ui/UiOverride/index.d.ts +2 -5
- package/types/ui/UiOverride/override.d.ts +2 -18
- package/types/ui/Unauthorized.d.ts +0 -6
- package/types/ui/agentAttrs.d.ts +4 -11
- package/types/ui/index.d.ts +9 -5
- package/types/ui/overlayLayer.d.ts +4 -24
- package/types/ui/overlayPosition.d.ts +0 -12
- package/types/ui/recipe/badgeRecipe.d.ts +2 -2
- package/types/ui/recipe/buttonRecipe.d.ts +2 -2
- package/types/ui/recipe/factory.d.ts +1 -21
- package/types/ui/recipe/index.d.ts +0 -14
- package/types/ui/recipe/inputRecipe.d.ts +3 -3
- package/types/ui/sliceNamesOf.d.ts +78 -0
- package/types/ui/triggerSlot.d.ts +2 -12
- package/types/vendor/use-agentic/AgentProgress.d.ts +12 -0
- package/types/vendor/use-agentic/AgentSession.d.ts +94 -2
- package/types/vendor/use-agentic/Compaction.d.ts +42 -5
- package/types/vendor/use-agentic/Reference.d.ts +56 -0
- package/types/vendor/use-agentic/ToolRunner.d.ts +31 -1
- package/types/vendor/use-agentic/Transcript.d.ts +4 -1
- package/types/vendor/use-agentic/index.d.ts +1 -0
- package/types/vendor/use-agentic/types.d.ts +109 -7
- package/types/webkit/RenderLayer.d.ts +11 -0
- package/types/webkit/index.d.ts +1 -2
- package/types/webkit/lazy.d.ts +3 -12
- package/types/webkit/{createRobotPage.d.ts → seoPages.d.ts} +4 -0
- package/types/webkit/useBodyScrollLock.d.ts +0 -1
- package/types/webkit/useCamera.d.ts +1 -1
- package/types/webkit/useContact.d.ts +1 -1
- package/types/webkit/useDebounce.d.ts +0 -1
- package/types/webkit/useEscapeKey.d.ts +1 -4
- package/types/webkit/useFetch.d.ts +1 -6
- package/types/webkit/useFrameRuntime.d.ts +1 -1
- package/types/webkit/useGeoLocation.d.ts +1 -1
- package/types/webkit/usePageTool.d.ts +2 -9
- package/types/webkit/usePurchase.d.ts +1 -4
- package/types/webkit/useScreenScope.d.ts +2 -13
- package/ui/Agent/Attach.tsx +5 -4
- package/ui/Agent/Bubble.tsx +51 -31
- package/ui/Agent/Chat.tsx +114 -102
- package/ui/Agent/ChatCommands.ts +5 -21
- package/ui/Agent/Composer.tsx +110 -28
- package/ui/Agent/Dock.tsx +176 -16
- package/ui/Agent/Guide.tsx +1 -5
- package/ui/Agent/History.tsx +1 -18
- package/ui/Agent/Launcher.tsx +2 -2
- package/ui/Agent/Markdown.tsx +40 -14
- package/ui/Agent/MentionNode.ts +54 -0
- package/ui/Agent/Menu.tsx +8 -5
- package/ui/Agent/Question.tsx +1 -6
- package/ui/Agent/Queued.tsx +3 -6
- package/ui/Agent/Refer.tsx +40 -0
- package/ui/Agent/RichInput.tsx +146 -0
- package/ui/Agent/Skip.tsx +3 -15
- package/ui/Agent/Steps.tsx +33 -0
- package/ui/Agent/ToolCard.tsx +32 -0
- package/ui/Agent/Zone.tsx +15 -31
- package/ui/Agent/agentSessionOf.ts +115 -15
- package/ui/Agent/attachment.ts +5 -42
- package/ui/Agent/fetchRunner.ts +3 -15
- package/ui/Agent/index.ts +1 -6
- package/ui/Agent/mentionDraft.ts +91 -0
- package/ui/Agent/tokenCount.ts +1 -5
- package/ui/Agent/useChatAttachments.ts +2 -9
- package/ui/Agent/useChatQueue.ts +12 -14
- package/ui/Agent/useChatReferences.ts +51 -0
- package/ui/Agent/useChatVoice.ts +2 -23
- package/ui/Agent/useDraftRecall.ts +0 -9
- package/ui/Agent/useKeyboardInset.ts +0 -7
- package/ui/Agent/useReferenceMenu.ts +93 -0
- package/ui/Agent/useSlashMenu.ts +0 -3
- package/ui/Agent/voice.ts +8 -43
- package/ui/Badge.tsx +0 -2
- package/ui/BottomSheet.tsx +2 -5
- package/ui/Button.tsx +9 -45
- package/ui/ClientSide.tsx +0 -2
- package/ui/Clipboard.tsx +0 -1
- package/ui/Constant/Doc.tsx +274 -265
- package/ui/Constant/Graph.tsx +11 -3
- package/ui/Constant/schemaGraph.ts +0 -9
- package/ui/Copy.tsx +2 -3
- package/ui/CsrImage.tsx +9 -9
- package/ui/Data/CardList.tsx +2 -17
- package/ui/Data/Dashboard.tsx +2 -5
- package/ui/Data/Item.tsx +2 -3
- package/ui/Data/ListContainer.tsx +15 -61
- package/ui/Data/Pagination.tsx +3 -22
- package/ui/Data/QueryMaker.tsx +1 -8
- package/ui/Data/RefPicker.tsx +1 -8
- package/ui/Data/TableList.tsx +2 -15
- package/ui/DatePicker.tsx +1 -12
- package/ui/Dialog/LegacyModal.tsx +3 -7
- package/ui/Dialog/Modal.tsx +3 -4
- package/ui/Dialog/Provider.tsx +85 -7
- package/ui/Dialog/index.tsx +1 -5
- package/ui/DraggableList.tsx +1 -4
- package/ui/Dropdown.tsx +4 -17
- package/ui/Empty.tsx +4 -12
- package/ui/Field/Choice.tsx +1 -1
- package/ui/Field/Collection.tsx +7 -29
- package/ui/Field/DateField.tsx +2 -7
- package/ui/Field/Label.tsx +0 -1
- package/ui/Field/NumberField.tsx +0 -1
- package/ui/Field/Relation.tsx +79 -199
- package/ui/Field/Text.tsx +25 -86
- package/ui/Field/index.tsx +0 -9
- package/ui/Field/lightRefCache.ts +61 -0
- package/ui/Field/useRelationOptions.ts +97 -0
- package/ui/Image.tsx +35 -65
- package/ui/InfiniteScroll.tsx +3 -21
- package/ui/Input.tsx +82 -174
- package/ui/Layout/Role.tsx +42 -0
- package/ui/Layout/Sider.tsx +82 -1
- package/ui/Layout/TopInset.tsx +23 -1
- package/ui/Layout/index.ts +3 -9
- package/ui/LegacyModal.tsx +1 -12
- package/ui/Link/Action.tsx +29 -0
- package/ui/Link/Anchor.tsx +118 -0
- package/ui/Link/index.tsx +7 -8
- package/ui/Load/Edit_Client.tsx +2 -37
- package/ui/Load/Page.tsx +3 -6
- package/ui/Load/Pagination.tsx +4 -19
- package/ui/Load/Stream.tsx +0 -12
- package/ui/Load/Units.tsx +13 -86
- package/ui/Load/View.tsx +4 -21
- package/ui/Loading/ProgressBar.tsx +0 -4
- package/ui/Loading/Skeleton.tsx +14 -0
- package/ui/Loading/Spin.tsx +34 -5
- package/ui/Loading/index.ts +0 -5
- package/ui/Loading/index_.tsx +2 -12
- package/ui/Menu.tsx +3 -21
- package/ui/Modal.tsx +0 -17
- package/ui/Model/AdminPanel.tsx +2 -5
- package/ui/Model/DraftBar.tsx +3 -14
- package/ui/Model/EditModal.tsx +11 -48
- package/ui/Model/EditWrapper.tsx +2 -3
- package/ui/Model/LoadStore.tsx +18 -0
- package/ui/Model/NewWrapper_Client.tsx +1 -1
- package/ui/Model/Remove.tsx +4 -12
- package/ui/Model/RemoveWrapper.tsx +2 -3
- package/ui/Model/SureToRemove.tsx +4 -13
- package/ui/Model/ViewEditModal.tsx +0 -6
- package/ui/Model/ViewModal.tsx +1 -5
- package/ui/Model/ViewWrapper.tsx +1 -2
- package/ui/Model/draftScope.ts +0 -7
- package/ui/Model/index_.tsx +2 -22
- package/ui/Pagination.tsx +4 -12
- package/ui/Popconfirm.tsx +3 -18
- package/ui/Portal.tsx +2 -3
- package/ui/Radio.tsx +1 -5
- package/ui/RecentTime.tsx +19 -31
- package/ui/Reference/Panel.tsx +102 -6
- package/ui/Reference/Segmented.tsx +5 -11
- package/ui/Reference/{style.ts → docUi.ts} +10 -2
- package/ui/Reference/index.ts +3 -7
- package/ui/Refresh.tsx +79 -13
- package/ui/ScreenNavigator.tsx +8 -13
- package/ui/Select.tsx +29 -37
- package/ui/Signal/Endpoint.tsx +154 -0
- package/ui/Signal/Listener.tsx +1 -4
- package/ui/Signal/Object.tsx +67 -73
- package/ui/Signal/RestApi.tsx +30 -76
- package/ui/Signal/WebSocket.tsx +253 -2
- package/ui/Signal/endpointEntries.ts +3 -5
- package/ui/Signal/index.ts +1 -3
- package/ui/Signal/style.ts +1 -2
- package/ui/Switch.tsx +1 -5
- package/ui/System/CSR.tsx +29 -109
- package/ui/System/Client.tsx +15 -19
- package/ui/System/Common.tsx +31 -22
- package/ui/System/Messages.tsx +2 -2
- package/ui/System/Reconnect.tsx +1 -6
- package/ui/System/Root.tsx +1 -4
- package/ui/System/SSR.tsx +10 -16
- package/ui/System/ThemeToggle.tsx +15 -0
- package/ui/System/index.tsx +2 -2
- package/ui/Tab/Provider.tsx +115 -7
- package/ui/Tab/index.tsx +1 -4
- package/ui/Table.tsx +7 -23
- package/ui/Toast.tsx +9 -16
- package/ui/ToggleSelect.tsx +10 -24
- package/ui/Tooltip.tsx +2 -8
- package/ui/UiOverride/{context.ts → UiOverride.tsx} +54 -42
- package/ui/UiOverride/index.ts +9 -6
- package/ui/UiOverride/override.ts +2 -18
- package/ui/Unauthorized.tsx +1 -8
- package/ui/agentAttrs.ts +9 -12
- package/ui/index.ts +20 -5
- package/ui/overlayLayer.ts +4 -25
- package/ui/overlayPosition.ts +2 -14
- package/ui/recipe/badgeRecipe.ts +1 -1
- package/ui/recipe/buttonRecipe.ts +4 -4
- package/ui/recipe/factory.ts +1 -22
- package/ui/recipe/index.ts +1 -14
- package/ui/recipe/inputRecipe.ts +2 -2
- package/ui/sliceNamesOf.ts +26 -0
- package/ui/styles.css +195 -1
- package/ui/triggerSlot.tsx +2 -12
- package/vendor/use-agentic/AgentProgress.ts +13 -1
- package/vendor/use-agentic/AgentSession.ts +313 -29
- package/vendor/use-agentic/AgenticSurface.ts +2 -0
- package/vendor/use-agentic/Compaction.ts +91 -9
- package/vendor/use-agentic/Reference.ts +99 -0
- package/vendor/use-agentic/ToolRunner.ts +77 -2
- package/vendor/use-agentic/Transcript.ts +15 -4
- package/vendor/use-agentic/WIRE.md +16 -2
- package/vendor/use-agentic/httpRunner.ts +19 -4
- package/vendor/use-agentic/index.ts +1 -1
- package/vendor/use-agentic/types.ts +121 -10
- package/webkit/RenderLayer.tsx +45 -0
- package/webkit/bootCsr.tsx +4 -57
- package/webkit/index.ts +1 -2
- package/webkit/lazy.tsx +3 -13
- package/webkit/{createRobotPage.ts → seoPages.ts} +5 -0
- package/webkit/useBodyScrollLock.tsx +0 -6
- package/webkit/useCamera.tsx +10 -28
- package/webkit/useCodepush.tsx +8 -31
- package/webkit/useContact.tsx +1 -8
- package/webkit/useCsrValues.ts +203 -428
- package/webkit/useDebounce.ts +0 -3
- package/webkit/useEscapeKey.tsx +1 -12
- package/webkit/useFetch.ts +7 -13
- package/webkit/useFrameRuntime.ts +5 -43
- package/webkit/useGeoLocation.tsx +1 -1
- package/webkit/useLocation.ts +5 -8
- package/webkit/usePageTool.tsx +2 -9
- package/webkit/usePurchase.tsx +17 -33
- package/webkit/useScreenScope.tsx +2 -13
- package/client/fetch.ts +0 -1
- package/client/frameDebug.ts +0 -29
- package/common/deepObjectify.ts +0 -42
- package/common/dynamicRecord.ts +0 -12
- package/common/formatPhone.ts +0 -7
- package/common/getAllPropertyDescriptors.ts +0 -13
- package/common/lowerlize.ts +0 -4
- package/common/mergeVersion.ts +0 -10
- package/common/pathGet.ts +0 -13
- package/common/pathGetLoose.ts +0 -31
- package/common/pathSet.ts +0 -28
- package/common/plainFieldsOf.ts +0 -13
- package/common/randomPicks.ts +0 -12
- package/common/websocketAuth.ts +0 -24
- package/constant/deserialize.ts +0 -98
- package/dictionary/agentTurn.dictionary.ts +0 -33
- package/document/schema.ts +0 -24
- package/fetch/fetchType/clientSignal.type.ts +0 -22
- package/local/apps/akan/akan-local.db +0 -0
- package/local/apps/akan/akan-local.db-shm +0 -0
- package/local/apps/akan/akan-local.db-wal +0 -0
- package/local/apps/akan/akan-local_solid.db +0 -0
- package/local/apps/akan/akan-local_solid.db-shm +0 -0
- package/local/apps/akan/akan-local_solid.db-wal +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local.db-wal +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-wal +0 -0
- package/server/artifact/manifestTypes.ts +0 -19
- package/server/assetEncoding.ts +0 -27
- package/server/consoleEvaluator.ts +0 -51
- package/server/di/index.ts +0 -4
- package/server/di/resolveAdaptorHierarchy.ts +0 -91
- package/server/di/resolveServiceHierarchy.ts +0 -47
- package/server/hmr/changeBatch.ts +0 -14
- package/server/hmr/index.ts +0 -4
- package/server/metadata.tsx +0 -198
- package/server/proxy/akanResponse.ts +0 -16
- package/server/proxy/bunRequestFields.ts +0 -12
- package/server/rscPartialCommit.ts +0 -3
- package/server/rscPatchSafety.ts +0 -57
- package/server/rscWorkerReplay.ts +0 -49
- package/server/subRouteIndexDocument.tsx +0 -61
- package/service/predefinedAdaptor/deepseekLlm.ts +0 -82
- package/service/predefinedAdaptor/sqlDescriptor.ts +0 -25
- package/store/agent/storeSurface.ts +0 -28
- package/store/agent/types.ts +0 -16
- package/store/agentic/useFileFieldTool.ts +0 -221
- package/store/stateInfo.ts +0 -66
- package/test/playwright.config.base.ts +0 -48
- package/test/playwright.pageAgent.ts +0 -41
- package/test/sample.ts +0 -19
- package/types/client/fetch.d.ts +0 -1
- package/types/client/frameDebug.d.ts +0 -3
- package/types/common/deepObjectify.d.ts +0 -6
- package/types/common/dynamicRecord.d.ts +0 -14
- package/types/common/formatPhone.d.ts +0 -2
- package/types/common/getAllPropertyDescriptors.d.ts +0 -5
- package/types/common/isPhoneNumber.d.ts +0 -2
- package/types/common/lowerlize.d.ts +0 -2
- package/types/common/mergeVersion.d.ts +0 -10
- package/types/common/pathGet.d.ts +0 -1
- package/types/common/pathGetLoose.d.ts +0 -8
- package/types/common/pathSet.d.ts +0 -3
- package/types/common/plainFieldsOf.d.ts +0 -6
- package/types/common/randomPicks.d.ts +0 -1
- package/types/common/splitVersion.d.ts +0 -11
- package/types/common/websocketAuth.d.ts +0 -19
- package/types/common/websocketBinaryFrame.d.ts +0 -17
- package/types/constant/deserialize.d.ts +0 -10
- package/types/dictionary/agentTurn.dictionary.d.ts +0 -1
- package/types/document/schema.d.ts +0 -5
- package/types/fetch/fetchType/clientSignal.type.d.ts +0 -16
- package/types/server/artifact/manifestTypes.d.ts +0 -16
- package/types/server/assetEncoding.d.ts +0 -7
- package/types/server/consoleEvaluator.d.ts +0 -2
- package/types/server/di/index.d.ts +0 -4
- package/types/server/di/resolveAdaptorHierarchy.d.ts +0 -21
- package/types/server/di/resolveServiceHierarchy.d.ts +0 -13
- package/types/server/di.d.ts +0 -1
- package/types/server/hmr/changeBatch.d.ts +0 -13
- package/types/server/hmr/index.d.ts +0 -4
- package/types/server/hmr.d.ts +0 -1
- package/types/server/metadata.d.ts +0 -22
- package/types/server/proxy/akanResponse.d.ts +0 -7
- package/types/server/proxy/bunRequestFields.d.ts +0 -1
- package/types/server/rscPartialCommit.d.ts +0 -1
- package/types/server/rscPatchSafety.d.ts +0 -8
- package/types/server/rscWorkerReplay.d.ts +0 -32
- package/types/server/subRouteIndexDocument.d.ts +0 -8
- package/types/service/predefinedAdaptor/deepseekLlm.d.ts +0 -19
- package/types/service/predefinedAdaptor/sqlDescriptor.d.ts +0 -5
- package/types/store/agent/storeSurface.d.ts +0 -14
- package/types/store/agent/types.d.ts +0 -15
- package/types/store/agentic/useFileFieldTool.d.ts +0 -41
- package/types/store/stateInfo.d.ts +0 -23
- package/types/test/playwright.config.base.d.ts +0 -9
- package/types/test/playwright.pageAgent.d.ts +0 -12
- package/types/test/sample.d.ts +0 -15
- package/types/ui/Agent/Context.d.ts +0 -13
- package/types/ui/Agent/Mic.d.ts +0 -8
- package/types/ui/Agent/Section.d.ts +0 -10
- package/types/ui/Agent/StateKey.d.ts +0 -16
- package/types/ui/Agent/Tool.d.ts +0 -15
- package/types/ui/Agent/Transcript.d.ts +0 -13
- package/types/ui/Agent/markdownSpans.d.ts +0 -2
- package/types/ui/Agent/sessionHistory.d.ts +0 -14
- package/types/ui/Agent/sessionView.d.ts +0 -15
- package/types/ui/Dialog/Action.d.ts +0 -5
- package/types/ui/Dialog/Close.d.ts +0 -6
- package/types/ui/Dialog/Content.d.ts +0 -6
- package/types/ui/Dialog/Title.d.ts +0 -5
- package/types/ui/Dialog/Trigger.d.ts +0 -6
- package/types/ui/Dialog/context.d.ts +0 -18
- package/types/ui/Layout/LeftSider.d.ts +0 -11
- package/types/ui/Layout/RightSider.d.ts +0 -12
- package/types/ui/Layout/Template.d.ts +0 -7
- package/types/ui/Layout/TopLeftAction.d.ts +0 -6
- package/types/ui/Layout/Unit.d.ts +0 -9
- package/types/ui/Layout/View.d.ts +0 -8
- package/types/ui/Layout/Zone.d.ts +0 -6
- package/types/ui/Link/Back.d.ts +0 -7
- package/types/ui/Link/Close.d.ts +0 -7
- package/types/ui/Link/CsrLink.d.ts +0 -2
- package/types/ui/Link/Lang.d.ts +0 -8
- package/types/ui/Link/SsrLink.d.ts +0 -2
- package/types/ui/Link/types.d.ts +0 -50
- package/types/ui/Loading/Area.d.ts +0 -9
- package/types/ui/Loading/Button.d.ts +0 -7
- package/types/ui/Loading/Input.d.ts +0 -7
- package/types/ui/Model/LoadInit.d.ts +0 -10
- package/types/ui/Model/LoadView.d.ts +0 -10
- package/types/ui/Reference/Collapse.d.ts +0 -11
- package/types/ui/Reference/Summary.d.ts +0 -13
- package/types/ui/Reference/Toolbar.d.ts +0 -21
- package/types/ui/Reference/dictText.d.ts +0 -6
- package/types/ui/Signal/Message.d.ts +0 -23
- package/types/ui/Signal/PubSub.d.ts +0 -24
- package/types/ui/Signal/Request.d.ts +0 -8
- package/types/ui/System/DevModeToggle.d.ts +0 -1
- package/types/ui/System/Gtag.d.ts +0 -4
- package/types/ui/System/frameCssVars.d.ts +0 -5
- package/types/ui/Tab/Menu.d.ts +0 -12
- package/types/ui/Tab/Menus.d.ts +0 -6
- package/types/ui/Tab/Panel.d.ts +0 -8
- package/types/ui/Tab/context.d.ts +0 -11
- package/types/ui/UiOverride/Provider.d.ts +0 -15
- package/types/ui/UiOverride/createOverridable.d.ts +0 -9
- package/types/ui/UiOverride/useUiOverride.d.ts +0 -7
- package/types/ui/UiOverride/useUiRecipe.d.ts +0 -8
- package/types/webkit/createSitemapPage.d.ts +0 -4
- package/ui/Agent/Context.tsx +0 -49
- package/ui/Agent/Mic.tsx +0 -27
- package/ui/Agent/Section.tsx +0 -24
- package/ui/Agent/StateKey.tsx +0 -46
- package/ui/Agent/Tool.tsx +0 -59
- package/ui/Agent/Transcript.tsx +0 -33
- package/ui/Agent/markdownSpans.tsx +0 -49
- package/ui/Agent/sessionHistory.ts +0 -62
- package/ui/Agent/sessionView.ts +0 -38
- package/ui/Dialog/Action.tsx +0 -15
- package/ui/Dialog/Close.tsx +0 -18
- package/ui/Dialog/Content.tsx +0 -11
- package/ui/Dialog/Title.tsx +0 -15
- package/ui/Dialog/Trigger.tsx +0 -18
- package/ui/Dialog/context.ts +0 -32
- package/ui/Layout/LeftSider.tsx +0 -43
- package/ui/Layout/RightSider.tsx +0 -47
- package/ui/Layout/Template.tsx +0 -11
- package/ui/Layout/TopLeftAction.tsx +0 -28
- package/ui/Layout/Unit.tsx +0 -19
- package/ui/Layout/View.tsx +0 -12
- package/ui/Layout/Zone.tsx +0 -10
- package/ui/Link/Back.tsx +0 -15
- package/ui/Link/Close.tsx +0 -20
- package/ui/Link/CsrLink.tsx +0 -46
- package/ui/Link/Lang.tsx +0 -16
- package/ui/Link/SsrLink.tsx +0 -72
- package/ui/Link/types.ts +0 -55
- package/ui/Loading/Area.tsx +0 -27
- package/ui/Loading/Button.tsx +0 -15
- package/ui/Loading/Input.tsx +0 -15
- package/ui/Model/LoadInit.tsx +0 -11
- package/ui/Model/LoadView.tsx +0 -11
- package/ui/Reference/Collapse.tsx +0 -26
- package/ui/Reference/Summary.tsx +0 -25
- package/ui/Reference/Toolbar.tsx +0 -44
- package/ui/Reference/dictText.ts +0 -9
- package/ui/Signal/Message.tsx +0 -215
- package/ui/Signal/PubSub.tsx +0 -201
- package/ui/Signal/Request.tsx +0 -11
- package/ui/System/DevModeToggle.tsx +0 -19
- package/ui/System/Gtag.tsx +0 -69
- package/ui/System/frameCssVars.ts +0 -25
- package/ui/Tab/Menu.tsx +0 -70
- package/ui/Tab/Menus.tsx +0 -13
- package/ui/Tab/Panel.tsx +0 -25
- package/ui/Tab/context.ts +0 -20
- package/ui/UiOverride/Provider.tsx +0 -26
- package/ui/UiOverride/createOverridable.tsx +0 -25
- package/ui/UiOverride/useUiOverride.ts +0 -15
- package/ui/UiOverride/useUiRecipe.ts +0 -15
- package/webkit/createSitemapPage.ts +0 -4
package/store/actionTag.ts
CHANGED
|
@@ -6,21 +6,12 @@ export interface ActionOwner {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
export interface ActionTag {
|
|
9
|
-
/** The `st.do` key this function is. */
|
|
10
9
|
action: string;
|
|
11
10
|
/** The state path it writes, when it writes exactly one — `userForm.name` for a field setter. */
|
|
12
11
|
state?: string;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
|
-
/**
|
|
16
|
-
* Marks a dispatcher with what it does, so a component handed one by reference can say so in the DOM.
|
|
17
|
-
*
|
|
18
|
-
* `onChange={st.do.setNameOnUser}` is the house form for every model field, which means the component already holds
|
|
19
|
-
* everything an annotation needs — it just has no way to read it off a function. This is that way, and it is why
|
|
20
|
-
* `data-akan-*` costs an app no code at all: nobody writes the attribute, the setter carries its own name.
|
|
21
|
-
*
|
|
22
|
-
* Non-enumerable, so it survives neither `{...fn}` nor `JSON.stringify` and shows up in no spread.
|
|
23
|
-
*/
|
|
14
|
+
/** Tags a dispatcher (non-enumerable) so a control handed it by reference can emit `data-akan-*`. */
|
|
24
15
|
export const tagAction = <T extends (...args: never[]) => unknown>(fn: T, tag: ActionTag): T => {
|
|
25
16
|
Object.defineProperty(fn, ACTION_TAG, { value: tag, configurable: true });
|
|
26
17
|
return fn;
|
|
@@ -3,30 +3,15 @@ import { ConstantRegistry, type MaskModel, mask } from "akanjs/constant";
|
|
|
3
3
|
import type { AgentRefusal } from "akanjs/signal";
|
|
4
4
|
import type { StoreInstance } from "../storeInstance";
|
|
5
5
|
import { StoreRegistry } from "../storeRegistry";
|
|
6
|
-
import { StoreCatalogue } from "./StoreCatalogue";
|
|
7
|
-
import type { SerializedStoreState } from "./types";
|
|
6
|
+
import { type SerializedStoreState, StoreCatalogue } from "./StoreCatalogue";
|
|
8
7
|
|
|
9
|
-
/**
|
|
10
|
-
* What an in-page agent may read out of the store the user is looking at.
|
|
11
|
-
*
|
|
12
|
-
* Reads only. Driving the app is a component's declaration to make: `st.tool` binds a name and a schema to the
|
|
13
|
-
* same handler the control on screen calls, so what an agent can do is what the screen offers the user and nothing
|
|
14
|
-
* else. A store method that no component declared is not a lever this screen has — publishing one made the surface
|
|
15
|
-
* the bundle rather than the screen, and gave the model levers whose effect it could not see.
|
|
16
|
-
*
|
|
17
|
-
* A key is readable while a mounted component subscribes it through `st.use` / `st.sel` / `st.ref`, and its value
|
|
18
|
-
* is masked by the model that key declares. Masking is not optional even though the data mostly came from the
|
|
19
|
-
* server already masked: `<model>Form` holds what the *user* typed, credentials included, and an in-page agent
|
|
20
|
-
* ships what it reads to a remote model. The mask is by the declared model rather than by the value's class,
|
|
21
|
-
* because `immerify` copies a form into a plain object and the class is gone by the time anyone can ask.
|
|
22
|
-
*/
|
|
8
|
+
/** Masked store reads for an in-page agent: `<model>Form` holds typed credentials, and reads ship to a remote model. */
|
|
23
9
|
export class AgentBridge {
|
|
24
10
|
readonly refusals: AgentRefusal[];
|
|
25
11
|
|
|
26
12
|
readonly #instance: StoreInstance;
|
|
27
13
|
readonly #state: { [key: string]: SerializedStoreState };
|
|
28
14
|
|
|
29
|
-
/** The bridge for the app running in this process: the one store every `st.use` goes through. */
|
|
30
15
|
static of() {
|
|
31
16
|
return new AgentBridge(StoreRegistry.instance);
|
|
32
17
|
}
|
|
@@ -53,12 +38,7 @@ export class AgentBridge {
|
|
|
53
38
|
.sort((a, b) => a.localeCompare(b));
|
|
54
39
|
}
|
|
55
40
|
|
|
56
|
-
/**
|
|
57
|
-
* The value behind a state key, stripped of what the model marks `hidden` or `secret`.
|
|
58
|
-
*
|
|
59
|
-
* The key itself has to be one the screen reads, not merely one its store owns: a component subscribing
|
|
60
|
-
* `userList` says the screen shows a user list, and says nothing about `userForm` sitting in the same store.
|
|
61
|
-
*/
|
|
41
|
+
/** The masked value of a key a mounted component reads; throws for any other key. */
|
|
62
42
|
read(key: string, viewKey = ""): unknown {
|
|
63
43
|
const entry = this.#state[key];
|
|
64
44
|
if (!entry) throw new Error(`Unknown state key: ${key}.${this.#readableInstead(viewKey)}`);
|
|
@@ -77,7 +57,6 @@ export class AgentBridge {
|
|
|
77
57
|
);
|
|
78
58
|
}
|
|
79
59
|
|
|
80
|
-
/** Named the way `readScreen` and `highlight` name theirs: a refusal with no way forward costs a whole turn. */
|
|
81
60
|
#readableInstead(viewKey: string): string {
|
|
82
61
|
const keys = this.readableKeys(viewKey);
|
|
83
62
|
return keys.length ? ` Readable here: ${keys.join(", ")}.` : " This screen reads no state keys.";
|
|
@@ -87,7 +66,6 @@ export class AgentBridge {
|
|
|
87
66
|
return value instanceof DataList ? value.values : value;
|
|
88
67
|
}
|
|
89
68
|
|
|
90
|
-
/** True when nothing inside could be carrying a model's fields, so there is nothing a mask would have to strip. */
|
|
91
69
|
static #isPlainValue(value: unknown): boolean {
|
|
92
70
|
if (value === null || value === undefined) return true;
|
|
93
71
|
if (Array.isArray(value)) return value.every((item) => AgentBridge.#isPlainValue(item));
|
|
@@ -2,15 +2,9 @@ import type { ContextBlock, SurfaceView } from "../../vendor/use-agentic";
|
|
|
2
2
|
import type { StoreInstance } from "../storeInstance";
|
|
3
3
|
import { StoreRegistry } from "../storeRegistry";
|
|
4
4
|
import type { AgentBridge } from "./AgentBridge";
|
|
5
|
-
import { ensureStoreSurface } from "./
|
|
5
|
+
import { ensureStoreSurface } from "./StoreSurfaceSource";
|
|
6
6
|
|
|
7
|
-
/**
|
|
8
|
-
* The akan default context for a turn: where the user is (route), what is on screen (scopes and their curated
|
|
9
|
-
* resources), and which store keys the mounted components are reading (live keys). Live entries carry names and
|
|
10
|
-
* small primitives only — anything bigger is one `readState` call away, masked — so the block cannot bloat with
|
|
11
|
-
* what happens to be in the store. Base-store plumbing is kept off the surface by `st.use.x({ agent: false })`
|
|
12
|
-
* at each call site, and the route block carries the three of them that matter.
|
|
13
|
-
*/
|
|
7
|
+
/** A turn's default context: route, on-screen scopes, and live keys (small primitives inline, the rest by name). */
|
|
14
8
|
export class AgentContext {
|
|
15
9
|
static of(): AgentContext {
|
|
16
10
|
return new AgentContext(StoreRegistry.instance, ensureStoreSurface().bridge);
|
|
@@ -55,7 +49,6 @@ export class AgentContext {
|
|
|
55
49
|
};
|
|
56
50
|
}
|
|
57
51
|
|
|
58
|
-
/** Primitives ride inline; anything bigger stays a name the agent pulls with `readState`. */
|
|
59
52
|
static #inlineValue(value: unknown): unknown {
|
|
60
53
|
if (value === null) return null;
|
|
61
54
|
switch (typeof value) {
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { ScreenFlash } from "./ScreenFlash";
|
|
2
|
+
|
|
3
|
+
/** A plain DOM element, not a React one: it outlives route changes, exists once, and is created on first use. */
|
|
4
|
+
export class AgentCursor {
|
|
5
|
+
static readonly className = "akan-agent-cursor";
|
|
6
|
+
/** Matches the transform transition in `akanjs/ui/styles.css`. */
|
|
7
|
+
static readonly travelMs = 320;
|
|
8
|
+
/** Pixels below which the pointer jumps instead of gliding. */
|
|
9
|
+
static readonly travelFrom = 200;
|
|
10
|
+
/** Pixels the pointer drifts off a pressed control while it waits. */
|
|
11
|
+
static readonly driftBy = 18;
|
|
12
|
+
/** Fade delay after the last call, for a host that reports no turn boundary (one that does calls `hold`). */
|
|
13
|
+
static readonly idleMs = 1400;
|
|
14
|
+
static readonly thinkingClass = "akan-agent-cursor-thinking";
|
|
15
|
+
static readonly scrollingClass = "akan-agent-cursor-scrolling";
|
|
16
|
+
|
|
17
|
+
static #el: HTMLElement | null = null;
|
|
18
|
+
static #at: { x: number; y: number } | null = null;
|
|
19
|
+
static #idle: ReturnType<typeof setTimeout> | null = null;
|
|
20
|
+
static #held = false;
|
|
21
|
+
static #pressed: { top: number; left: number; right: number; bottom: number } | null = null;
|
|
22
|
+
|
|
23
|
+
/** Travels to the control once it has stopped moving, then presses it. Resolves when the press has landed. */
|
|
24
|
+
static press(target: HTMLElement): Promise<void> {
|
|
25
|
+
if (typeof document === "undefined") return Promise.resolve();
|
|
26
|
+
AgentCursor.#el?.classList.remove(AgentCursor.thinkingClass);
|
|
27
|
+
return new Promise((resolve) => {
|
|
28
|
+
ScreenFlash.whenStill(target, () => {
|
|
29
|
+
if (!ScreenFlash.onTop(target)) {
|
|
30
|
+
AgentCursor.hide();
|
|
31
|
+
resolve();
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const { top, left, width, height, right, bottom } = target.getBoundingClientRect();
|
|
35
|
+
AgentCursor.#pressed = { top, left, right, bottom };
|
|
36
|
+
const travel = AgentCursor.#moveTo(left + width / 2, top + height / 2);
|
|
37
|
+
|
|
38
|
+
if (travel)
|
|
39
|
+
setTimeout(() => {
|
|
40
|
+
AgentCursor.#tap();
|
|
41
|
+
resolve();
|
|
42
|
+
}, travel);
|
|
43
|
+
else {
|
|
44
|
+
AgentCursor.#tap();
|
|
45
|
+
resolve();
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
static scroll(way: "up" | "down") {
|
|
52
|
+
const el = AgentCursor.#el;
|
|
53
|
+
if (!el?.isConnected) return;
|
|
54
|
+
el.classList.remove(AgentCursor.thinkingClass);
|
|
55
|
+
el.classList.add(AgentCursor.scrollingClass);
|
|
56
|
+
el.classList.toggle(`${AgentCursor.scrollingClass}-up`, way === "up");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Keeps the pointer up for as long as the turn runs, instead of for `idleMs` after the last call. */
|
|
60
|
+
static hold() {
|
|
61
|
+
AgentCursor.#held = true;
|
|
62
|
+
if (AgentCursor.#idle) clearTimeout(AgentCursor.#idle);
|
|
63
|
+
AgentCursor.#idle = null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
static release() {
|
|
67
|
+
AgentCursor.#held = false;
|
|
68
|
+
AgentCursor.hide();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** Drifts clear of the last pressed control and shows the waiting spinner; a no-op before the first press. */
|
|
72
|
+
static think() {
|
|
73
|
+
const el = AgentCursor.#el;
|
|
74
|
+
if (!el?.isConnected) return;
|
|
75
|
+
el.classList.remove(`${AgentCursor.className}-tap`);
|
|
76
|
+
AgentCursor.#driftOff();
|
|
77
|
+
el.classList.add(AgentCursor.thinkingClass);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
static #driftOff() {
|
|
81
|
+
const el = AgentCursor.#el;
|
|
82
|
+
const box = AgentCursor.#pressed;
|
|
83
|
+
AgentCursor.#pressed = null;
|
|
84
|
+
if (!el || !box) return;
|
|
85
|
+
const gap = AgentCursor.driftBy;
|
|
86
|
+
const x = box.right + gap <= window.innerWidth - gap ? box.right + gap : box.left - gap;
|
|
87
|
+
const y = box.bottom + gap <= window.innerHeight - gap ? box.bottom + gap : box.top - gap;
|
|
88
|
+
const at = { x: Math.max(gap, Math.round(x)), y: Math.max(gap, Math.round(y)) };
|
|
89
|
+
el.style.transform = `translate3d(${at.x}px, ${at.y}px, 0)`;
|
|
90
|
+
AgentCursor.#at = at;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
static hide() {
|
|
94
|
+
AgentCursor.#pressed = null;
|
|
95
|
+
AgentCursor.#stopScrolling();
|
|
96
|
+
AgentCursor.#el?.classList.remove(AgentCursor.thinkingClass);
|
|
97
|
+
AgentCursor.#el?.classList.remove(`${AgentCursor.className}-shown`);
|
|
98
|
+
AgentCursor.#at = null;
|
|
99
|
+
const el = AgentCursor.#el;
|
|
100
|
+
setTimeout(() => {
|
|
101
|
+
if (el && !el.classList.contains(`${AgentCursor.className}-shown`)) el.remove();
|
|
102
|
+
if (AgentCursor.#el === el) AgentCursor.#el = null;
|
|
103
|
+
}, 400);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
static #stopScrolling() {
|
|
107
|
+
AgentCursor.#el?.classList.remove(AgentCursor.scrollingClass, `${AgentCursor.scrollingClass}-up`);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
static #moveTo(x: number, y: number): number {
|
|
111
|
+
const el = AgentCursor.#mounted();
|
|
112
|
+
AgentCursor.#stopScrolling();
|
|
113
|
+
el.classList.remove(AgentCursor.thinkingClass);
|
|
114
|
+
const at = AgentCursor.#at;
|
|
115
|
+
|
|
116
|
+
const travel = at && Math.hypot(x - at.x, y - at.y) >= AgentCursor.travelFrom ? AgentCursor.travelMs : 0;
|
|
117
|
+
|
|
118
|
+
if (!travel) el.classList.add(`${AgentCursor.className}-placing`);
|
|
119
|
+
el.style.transform = `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;
|
|
120
|
+
if (!travel) {
|
|
121
|
+
void el.offsetWidth;
|
|
122
|
+
el.classList.remove(`${AgentCursor.className}-placing`);
|
|
123
|
+
}
|
|
124
|
+
requestAnimationFrame(() => el.classList.add(`${AgentCursor.className}-shown`));
|
|
125
|
+
AgentCursor.#at = { x, y };
|
|
126
|
+
AgentCursor.#keep();
|
|
127
|
+
return travel;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
static #tap() {
|
|
131
|
+
const el = AgentCursor.#el;
|
|
132
|
+
if (!el) return;
|
|
133
|
+
el.classList.remove(`${AgentCursor.className}-tap`);
|
|
134
|
+
void el.offsetWidth;
|
|
135
|
+
el.classList.add(`${AgentCursor.className}-tap`);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
static #keep() {
|
|
139
|
+
if (AgentCursor.#idle) clearTimeout(AgentCursor.#idle);
|
|
140
|
+
AgentCursor.#idle = null;
|
|
141
|
+
if (AgentCursor.#held) return;
|
|
142
|
+
AgentCursor.#idle = setTimeout(() => {
|
|
143
|
+
AgentCursor.#idle = null;
|
|
144
|
+
AgentCursor.hide();
|
|
145
|
+
}, AgentCursor.idleMs);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
static #mounted(): HTMLElement {
|
|
149
|
+
if (AgentCursor.#el?.isConnected) return AgentCursor.#el;
|
|
150
|
+
const el = document.createElement("div");
|
|
151
|
+
el.className = AgentCursor.className;
|
|
152
|
+
el.setAttribute("data-agent-ui", "");
|
|
153
|
+
el.setAttribute("aria-hidden", "true");
|
|
154
|
+
el.append(document.createElement("i"), document.createElement("b"));
|
|
155
|
+
document.body.append(el);
|
|
156
|
+
AgentCursor.#el = el;
|
|
157
|
+
AgentCursor.#at = null;
|
|
158
|
+
return el;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import type { PromptContent, PromptMessage, PromptResult } from "akanjs/signal";
|
|
2
2
|
import type { ChatMessage } from "../../vendor/use-agentic";
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
* The chat's slash-command parser and the bridge from prompt messages to chat turns. The app's own prompts are
|
|
6
|
-
* `page().prompt()` declarations served over MCP, which a browser chat does not list; what stays here is what the
|
|
7
|
-
* chat's built-in commands need.
|
|
8
|
-
*/
|
|
9
4
|
export class AgentPrompts {
|
|
10
5
|
/** `/name arg1 "an arg with spaces"` — positional because a prompt's arguments are flat strings by protocol. */
|
|
11
6
|
static parseCommand(draft: string): { name: string; args: string[] } | null {
|
|
@@ -14,11 +9,6 @@ export class AgentPrompts {
|
|
|
14
9
|
return { name: match[1], args: AgentPrompts.#args(match[2] ?? "") };
|
|
15
10
|
}
|
|
16
11
|
|
|
17
|
-
/**
|
|
18
|
-
* Whitespace separates arguments, and quotes are how a sentence stays one of them — a prompt taking a single
|
|
19
|
-
* `String` is the common case, and splitting "plan the week" into three arguments fills the second parameter
|
|
20
|
-
* with the second word.
|
|
21
|
-
*/
|
|
22
12
|
static #args(rest: string): string[] {
|
|
23
13
|
const args: string[] = [];
|
|
24
14
|
for (const token of rest.matchAll(/"([^"]*)"|'([^']*)'|(\S+)/g)) args.push(token[1] ?? token[2] ?? token[3]);
|
|
@@ -31,11 +21,6 @@ export class AgentPrompts {
|
|
|
31
21
|
return result.map((message) => AgentPrompts.#messageOf(message));
|
|
32
22
|
}
|
|
33
23
|
|
|
34
|
-
/**
|
|
35
|
-
* A binary block becomes an attachment. It used to become the string `[image]`, which a model reads as having
|
|
36
|
-
* been shown a picture — so a prompt built with `Msg.imageOf` produced confident answers about bytes that never
|
|
37
|
-
* left the server. The other block types are text already and stay text.
|
|
38
|
-
*/
|
|
39
24
|
static #messageOf(message: PromptMessage): ChatMessage {
|
|
40
25
|
const { role, content } = message;
|
|
41
26
|
if (content.type !== "image" && content.type !== "audio") return { role, text: AgentPrompts.textOf(content) };
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { router } from "akanjs/client";
|
|
2
|
+
import type { ToolActivity } from "../../vendor/use-agentic";
|
|
3
|
+
import { AgentCursor } from "./AgentCursor";
|
|
4
|
+
import { ScreenFlash } from "./ScreenFlash";
|
|
5
|
+
import { ScreenTarget } from "./ScreenTarget";
|
|
6
|
+
|
|
7
|
+
export interface AgentVisualOption {
|
|
8
|
+
/** Ring the control a call was published from, scrolling to it first when it is off screen. */
|
|
9
|
+
reveal?: boolean;
|
|
10
|
+
/** The pointer that travels to the control and presses it. */
|
|
11
|
+
cursor?: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** Draws where an agent call lands, from tool activity: a store action cannot tell agent writes from the user's. */
|
|
15
|
+
export class AgentVisual {
|
|
16
|
+
/** Past this many calls in one turn the reveal only rings, without scrolling. */
|
|
17
|
+
static readonly revealCap = 4;
|
|
18
|
+
/** How many of a form patch's fields are drawn. */
|
|
19
|
+
static readonly fieldCap = 5;
|
|
20
|
+
/** The longest a navigate call waits for its press to land. */
|
|
21
|
+
static readonly leadMs = 600;
|
|
22
|
+
|
|
23
|
+
static #revealed = 0;
|
|
24
|
+
static #idle: ReturnType<typeof setTimeout> | null = null;
|
|
25
|
+
static #turning = false;
|
|
26
|
+
static #acting = 0;
|
|
27
|
+
|
|
28
|
+
/** The handlers `agentSessionOf` hands the session. `true` is every effect; an object turns one of them off. */
|
|
29
|
+
static sink(option: boolean | AgentVisualOption = true) {
|
|
30
|
+
if (option === false) return undefined;
|
|
31
|
+
const settings = option === true ? {} : option;
|
|
32
|
+
return {
|
|
33
|
+
onActivity: (event: ToolActivity) => AgentVisual.on(event, settings),
|
|
34
|
+
onTurn: (running: boolean) => AgentVisual.turn(running, settings),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Resets the per-turn scroll budget; the pointer is held until the turn ends. */
|
|
39
|
+
static turn(running: boolean, { cursor = true }: AgentVisualOption = {}) {
|
|
40
|
+
if (typeof document === "undefined") return;
|
|
41
|
+
AgentVisual.#turning = running;
|
|
42
|
+
AgentVisual.#revealed = 0;
|
|
43
|
+
if (AgentVisual.#idle) clearTimeout(AgentVisual.#idle);
|
|
44
|
+
AgentVisual.#idle = null;
|
|
45
|
+
if (!running) AgentVisual.#acting = 0;
|
|
46
|
+
if (!cursor) return;
|
|
47
|
+
if (running) AgentCursor.hold();
|
|
48
|
+
else AgentCursor.release();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
static on(event: ToolActivity, { reveal = true, cursor = true }: AgentVisualOption = {}): void | Promise<void> {
|
|
52
|
+
if (typeof document === "undefined" || document.hidden) return;
|
|
53
|
+
if (!reveal && !cursor) return;
|
|
54
|
+
if (event.phase === "end") {
|
|
55
|
+
AgentVisual.#acting = Math.max(0, AgentVisual.#acting - 1);
|
|
56
|
+
if (cursor && AgentVisual.#turning && !AgentVisual.#acting) AgentCursor.think();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
AgentVisual.#acting += 1;
|
|
60
|
+
const pressed = AgentVisual.#targetsOf(event).map((target) => AgentVisual.#act(target, { reveal, cursor }));
|
|
61
|
+
|
|
62
|
+
if (!cursor || !pressed.length || !AgentVisual.#navigating(event.name)) return;
|
|
63
|
+
return AgentVisual.#capped(Promise.all(pressed));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
static #capped(drawing: Promise<unknown>): Promise<void> {
|
|
67
|
+
return new Promise((resolve) => {
|
|
68
|
+
const done = () => resolve();
|
|
69
|
+
setTimeout(done, AgentVisual.leadMs);
|
|
70
|
+
void drawing.then(done, done);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
static #targetsOf(event: ToolActivity): HTMLElement[] {
|
|
75
|
+
if (AgentVisual.#navigating(event.name)) return AgentVisual.#linkTo(event.args.path);
|
|
76
|
+
const form = AgentVisual.#formOf(event.name);
|
|
77
|
+
if (!form) return AgentVisual.#only(ScreenTarget.controls(event.name), event.args);
|
|
78
|
+
return Object.keys(event.args)
|
|
79
|
+
.slice(0, AgentVisual.fieldCap)
|
|
80
|
+
.flatMap((key) => AgentVisual.#only(ScreenTarget.controls(`${form}.${key}`)));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
static #only(targets: HTMLElement[], args?: Record<string, unknown>): HTMLElement[] {
|
|
84
|
+
if (targets.length === 1) return targets;
|
|
85
|
+
if (!targets.length || !args) return [];
|
|
86
|
+
const named = new Set(
|
|
87
|
+
Object.values(args)
|
|
88
|
+
.filter((value): value is string | number => typeof value === "string" || typeof value === "number")
|
|
89
|
+
.map(String),
|
|
90
|
+
);
|
|
91
|
+
const keyed = targets.filter((target) => {
|
|
92
|
+
const key = target.getAttribute("data-akan-key");
|
|
93
|
+
return !!key && named.has(key);
|
|
94
|
+
});
|
|
95
|
+
return keyed.length === 1 ? keyed : [];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
static #act(target: HTMLElement, { reveal, cursor }: Required<AgentVisualOption>): Promise<void> {
|
|
99
|
+
AgentVisual.#count();
|
|
100
|
+
const scrolled =
|
|
101
|
+
reveal && AgentVisual.#revealed <= AgentVisual.revealCap && !ScreenFlash.inView(target)
|
|
102
|
+
? ScreenFlash.reveal(target)
|
|
103
|
+
: null;
|
|
104
|
+
if (cursor && scrolled) AgentCursor.scroll(scrolled);
|
|
105
|
+
const pressed = cursor ? AgentCursor.press(target) : Promise.resolve();
|
|
106
|
+
if (reveal) ScreenFlash.ring(target, { className: ScreenFlash.actingClass, ms: ScreenFlash.actingMs });
|
|
107
|
+
return pressed;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
static #linkTo(path: unknown): HTMLElement[] {
|
|
111
|
+
const wanted = AgentVisual.#routeOf(typeof path === "string" ? path : "");
|
|
112
|
+
if (!wanted || !document.body) return [];
|
|
113
|
+
const links = [...document.body.querySelectorAll<HTMLAnchorElement>("a[href]")].filter(
|
|
114
|
+
(link) =>
|
|
115
|
+
AgentVisual.#routeOf(link.getAttribute("href") ?? "") === wanted &&
|
|
116
|
+
ScreenTarget.visible(link) &&
|
|
117
|
+
ScreenFlash.inView(link),
|
|
118
|
+
);
|
|
119
|
+
return AgentVisual.#only(links);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
static #routeOf(href: string) {
|
|
123
|
+
if (!href || href.startsWith("#")) return "";
|
|
124
|
+
try {
|
|
125
|
+
const url = new URL(href, window.location.href);
|
|
126
|
+
if (url.origin !== window.location.origin) return "";
|
|
127
|
+
return router.routeOf(url.pathname);
|
|
128
|
+
} catch {
|
|
129
|
+
return "";
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
static #navigating(name: string) {
|
|
134
|
+
return name.slice(name.lastIndexOf(".") + 1) === "navigate";
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
static #formOf(name: string) {
|
|
138
|
+
const bare = name.slice(name.lastIndexOf(".") + 1);
|
|
139
|
+
const match = /^fill([A-Z]\w*)Form$/.exec(bare);
|
|
140
|
+
if (!match) return null;
|
|
141
|
+
return `${match[1][0].toLowerCase()}${match[1].slice(1)}Form`;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
static #count() {
|
|
145
|
+
AgentVisual.#revealed += 1;
|
|
146
|
+
if (AgentVisual.#idle) clearTimeout(AgentVisual.#idle);
|
|
147
|
+
AgentVisual.#idle = setTimeout(() => {
|
|
148
|
+
AgentVisual.#revealed = 0;
|
|
149
|
+
AgentVisual.#idle = null;
|
|
150
|
+
}, 1000);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/** Scrolls an element into view, then rings it once the scroll has landed. */
|
|
2
|
+
export class ScreenFlash {
|
|
3
|
+
/** Defined in `akanjs/ui/styles.css`, so the flash follows the app's own theme tokens. */
|
|
4
|
+
static readonly ringClass = "akan-agent-highlight";
|
|
5
|
+
/** Mirrors the animation length in that stylesheet. */
|
|
6
|
+
static readonly ringMs = 2400;
|
|
7
|
+
/** The lighter, shorter ring for a control the agent just drove. */
|
|
8
|
+
static readonly actingClass = "akan-agent-acting";
|
|
9
|
+
static readonly actingMs = 1000;
|
|
10
|
+
|
|
11
|
+
static show(target: HTMLElement) {
|
|
12
|
+
ScreenFlash.reveal(target);
|
|
13
|
+
ScreenFlash.ring(target);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static reveal(target: HTMLElement): "up" | "down" {
|
|
17
|
+
const { top, height } = target.getBoundingClientRect();
|
|
18
|
+
const viewHeight = window.innerHeight || document.documentElement.clientHeight;
|
|
19
|
+
const way = top + height / 2 < viewHeight / 2 ? "up" : "down";
|
|
20
|
+
target.scrollIntoView({ block: "center", behavior: "smooth" });
|
|
21
|
+
return way;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Inside the viewport with `margin` px to spare vertically, not merely intersecting it. */
|
|
25
|
+
static inView(target: HTMLElement, margin = 24) {
|
|
26
|
+
const { top, bottom, left, right, height, width } = target.getBoundingClientRect();
|
|
27
|
+
if (!height && !width) return false;
|
|
28
|
+
const viewHeight = window.innerHeight || document.documentElement.clientHeight;
|
|
29
|
+
const viewWidth = window.innerWidth || document.documentElement.clientWidth;
|
|
30
|
+
return top >= margin && left >= 0 && bottom <= viewHeight - margin && right <= viewWidth;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Painted at its own centre, not just laid out — `checkVisibility` passes a control under a modal backdrop. */
|
|
34
|
+
static onTop(target: HTMLElement) {
|
|
35
|
+
if (!ScreenFlash.inView(target)) return false;
|
|
36
|
+
if (typeof document.elementFromPoint !== "function") return true;
|
|
37
|
+
const { top, left, width, height } = target.getBoundingClientRect();
|
|
38
|
+
const hit = document.elementFromPoint(left + width / 2, top + height / 2);
|
|
39
|
+
return !!hit && (hit === target || target.contains(hit) || hit.contains(target));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Added once the element stops moving, so it is not already fading when a smooth scroll arrives. */
|
|
43
|
+
static ring(target: HTMLElement, { className = ScreenFlash.ringClass, ms = ScreenFlash.ringMs } = {}) {
|
|
44
|
+
ScreenFlash.whenStill(target, () => {
|
|
45
|
+
target.classList.add(className);
|
|
46
|
+
setTimeout(() => target.classList.remove(className), ms);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Runs `done` once the element's position holds (no browser fires a consistent scroll end); capped at 90 frames. */
|
|
51
|
+
static whenStill(target: HTMLElement, done: () => void) {
|
|
52
|
+
let last: number | null = null;
|
|
53
|
+
let frames = 0;
|
|
54
|
+
const settle = () => {
|
|
55
|
+
const { top } = target.getBoundingClientRect();
|
|
56
|
+
frames += 1;
|
|
57
|
+
|
|
58
|
+
if ((last === null || Math.abs(top - last) >= 1) && frames < 90) {
|
|
59
|
+
last = top;
|
|
60
|
+
requestAnimationFrame(settle);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
done();
|
|
64
|
+
};
|
|
65
|
+
requestAnimationFrame(settle);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -45,30 +45,12 @@ const blockTags = new Set([
|
|
|
45
45
|
"UL",
|
|
46
46
|
]);
|
|
47
47
|
|
|
48
|
-
/**
|
|
49
|
-
* Serializes what the page is rendering into compact text an agent can answer questions from: headings keep their
|
|
50
|
-
* level and their anchor, links keep their href, controls keep their value and `data-akan-*` annotation. The
|
|
51
|
-
* agent's own UI is marked `data-agent-ui` and skipped, so a turn never re-reads its own transcript, and a
|
|
52
|
-
* password value is never read — the screen shows dots, so the DOM holds more than the user sees.
|
|
53
|
-
*
|
|
54
|
-
* A region the app marks `data-agent-skip` — what `Agent.Skip` renders — costs a `[skipped: <name>]` line instead
|
|
55
|
-
* of its text. It stands in the output rather than vanishing because a deleted region reads as an absent one, and
|
|
56
|
-
* an agent asked about a footer it never saw answers that the page has none. Naming the region as `section` reads
|
|
57
|
-
* it: the marker is what the default read leaves out, not a wall.
|
|
58
|
-
*
|
|
59
|
-
* A heading carries `(#anchor)` whenever it opens a container that has an id or a scope path, because that is the
|
|
60
|
-
* name `readScreen({ section })` and `highlight` take: printing the text without the name leaves an agent
|
|
61
|
-
* guessing at a slug. For the same reason a truncated read ends with the headings below the cut instead of only
|
|
62
|
-
* a character count — otherwise everything past the limit is unreachable, since nothing names it.
|
|
63
|
-
*/
|
|
64
48
|
export interface ScreenReadOptions {
|
|
65
|
-
/**
|
|
66
|
-
* Carry each image's address as well as its caption. Off by default because a gallery is one long URL per
|
|
67
|
-
* thumbnail, which is the read's whole budget spent on the part of the screen it can say the least about.
|
|
68
|
-
*/
|
|
49
|
+
/** Also print each image's address. Default false. */
|
|
69
50
|
images?: boolean;
|
|
70
51
|
}
|
|
71
52
|
|
|
53
|
+
/** The rendered page as compact text for an agent; skips `data-agent-ui` and never reads a password value. */
|
|
72
54
|
export class ScreenReader {
|
|
73
55
|
static readonly limit = 8000;
|
|
74
56
|
|
|
@@ -82,11 +64,7 @@ export class ScreenReader {
|
|
|
82
64
|
return reader.#text() || "The page is rendering nothing readable.";
|
|
83
65
|
}
|
|
84
66
|
|
|
85
|
-
/**
|
|
86
|
-
* One heading's own section: the heading, then what follows it until the next heading of the same level or
|
|
87
|
-
* higher. Reads the heading's container when the heading is the only one in it — the shape a docs slide or an
|
|
88
|
-
* `<article>` has — and otherwise the heading's own following siblings.
|
|
89
|
-
*/
|
|
67
|
+
/** One heading's section: its container when that holds no peer heading, else its following siblings. */
|
|
90
68
|
static readFrom(heading: HTMLElement, root?: HTMLElement | null, options: ScreenReadOptions = {}): string {
|
|
91
69
|
if (typeof document === "undefined") return "No rendered document is available.";
|
|
92
70
|
const reader = new ScreenReader(options);
|
|
@@ -105,11 +83,6 @@ export class ScreenReader {
|
|
|
105
83
|
return reader.#text() || "That section is rendering nothing readable.";
|
|
106
84
|
}
|
|
107
85
|
|
|
108
|
-
/**
|
|
109
|
-
* The outermost ancestor that still holds this heading and no other of its level — the section, not the title
|
|
110
|
-
* wrapper inside it. Climbing matters: a docs slide puts its heading two or three divs down, so the innermost
|
|
111
|
-
* match is often the heading and nothing else.
|
|
112
|
-
*/
|
|
113
86
|
static #sectionOf(heading: HTMLElement, root?: HTMLElement | null): HTMLElement | null {
|
|
114
87
|
const level = headingLevels[heading.tagName.toUpperCase() as keyof typeof headingLevels] ?? 1;
|
|
115
88
|
const boundary = root ?? document.body;
|
|
@@ -124,7 +97,6 @@ export class ScreenReader {
|
|
|
124
97
|
return container;
|
|
125
98
|
}
|
|
126
99
|
|
|
127
|
-
/** The anchor a heading is addressable by: its own id, or the id or scope path of the container it opens. */
|
|
128
100
|
static anchorOf(heading: HTMLElement): string {
|
|
129
101
|
if (heading.id) return heading.id;
|
|
130
102
|
let parent = heading.parentElement;
|
|
@@ -136,12 +108,6 @@ export class ScreenReader {
|
|
|
136
108
|
return "";
|
|
137
109
|
}
|
|
138
110
|
|
|
139
|
-
/**
|
|
140
|
-
* `checkVisibility()` reports whether the element has a layout box, and a `display: contents` wrapper has none
|
|
141
|
-
* while its children do — so Chrome answers false for a wrapper the user is looking straight at, and skipping it
|
|
142
|
-
* would drop that whole subtree (happy-dom answers true, so no DOM test sees the difference). Reading through it
|
|
143
|
-
* is safe only because the walk is top-down: a `display: none` ancestor bails on its own computed display first.
|
|
144
|
-
*/
|
|
145
111
|
static #rendered(el: HTMLElement) {
|
|
146
112
|
if (typeof el.checkVisibility !== "function" || el.checkVisibility()) return true;
|
|
147
113
|
return getComputedStyle(el).display === "contents";
|
|
@@ -162,10 +128,6 @@ export class ScreenReader {
|
|
|
162
128
|
this.#images = images;
|
|
163
129
|
}
|
|
164
130
|
|
|
165
|
-
/**
|
|
166
|
-
* Past the walk budget the text is dropped but the headings are not: a section below the cut is exactly what the
|
|
167
|
-
* truncation note owes the reader, and it is the only way that part of the screen can be named at all.
|
|
168
|
-
*/
|
|
169
131
|
#outline(node: Node): void {
|
|
170
132
|
if (node.nodeType !== Node.ELEMENT_NODE) return;
|
|
171
133
|
const el = node as HTMLElement;
|
|
@@ -192,12 +154,6 @@ export class ScreenReader {
|
|
|
192
154
|
: `${kept}${note}`;
|
|
193
155
|
}
|
|
194
156
|
|
|
195
|
-
/**
|
|
196
|
-
* An image is named whether or not it carries an `alt`: dropping an unlabelled one leaves a card that renders a
|
|
197
|
-
* picture reading exactly like a card that renders nothing, and "the page shows no image" is the one answer the
|
|
198
|
-
* screen cannot support. The address rides only when it was asked for, and never for a `data:` URL — that is
|
|
199
|
-
* the bytes themselves rather than somewhere to fetch them, and one of them outweighs the whole read.
|
|
200
|
-
*/
|
|
201
157
|
#image(el: HTMLElement) {
|
|
202
158
|
const alt = (el.getAttribute("alt") ?? "").replace(/\s+/g, " ").trim();
|
|
203
159
|
const src = this.#images ? (el as HTMLImageElement).currentSrc || el.getAttribute("src") || "" : "";
|
|
@@ -205,7 +161,6 @@ export class ScreenReader {
|
|
|
205
161
|
this.#buffer += ` [image${alt ? `: ${alt}` : ""}]${address}`;
|
|
206
162
|
}
|
|
207
163
|
|
|
208
|
-
/** What stands where a skipped region was: its own name, and the anchor `section` takes to read it on request. */
|
|
209
164
|
#mark(el: HTMLElement, label: string) {
|
|
210
165
|
const anchor = el.getAttribute("data-agent-scope") ?? el.getAttribute("data-agent-zone") ?? el.id;
|
|
211
166
|
this.#flush();
|
|
@@ -303,10 +258,6 @@ export class ScreenReader {
|
|
|
303
258
|
if (href && href !== "#" && !href.startsWith("javascript:") && text !== href) this.#buffer += ` (${href})`;
|
|
304
259
|
}
|
|
305
260
|
|
|
306
|
-
/**
|
|
307
|
-
* A control the person cannot use publishes no tool, so saying so here is what turns a silent refusal into a
|
|
308
|
-
* fact the agent could have read. It reads `aria-disabled` too: a styled-off div carries no native property.
|
|
309
|
-
*/
|
|
310
261
|
static #off(el: HTMLElement) {
|
|
311
262
|
const native = (el as HTMLInputElement | HTMLButtonElement).disabled;
|
|
312
263
|
return native || el.getAttribute("aria-disabled") === "true" ? " (disabled)" : "";
|
|
@@ -6,18 +6,7 @@ export interface ScreenSettleOptions {
|
|
|
6
6
|
timeoutMs?: number;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
/**
|
|
10
|
-
* Waits until the screen stops changing.
|
|
11
|
-
*
|
|
12
|
-
* The surface is read synchronously and the app is not: `router.push` returns while the RSC payload for the new
|
|
13
|
-
* route is still in flight, and a store action that fires `void fetch.*` commits a tick later. A tool that returns
|
|
14
|
-
* at either of those moments reports the screen it replaced — and the `readScreen` the agent calls next reads the
|
|
15
|
-
* page the user already left.
|
|
16
|
-
*
|
|
17
|
-
* Quiescence rather than a framework signal, because there is no one signal: the client router hands its promise
|
|
18
|
-
* to nobody, and a change may land in the store, in a refetch, or in a streamed Suspense boundary. A
|
|
19
|
-
* MutationObserver sees all three, and every wait is bounded — a screen that never holds still still answers.
|
|
20
|
-
*/
|
|
9
|
+
/** Resolves once the DOM stops mutating, always bounded; no single router or store signal says "settled". */
|
|
21
10
|
export class ScreenSettle {
|
|
22
11
|
static wait({ quietMs = 120, appearMs = 0, timeoutMs = 3000 }: ScreenSettleOptions = {}): Promise<void> {
|
|
23
12
|
const body = typeof document === "undefined" ? null : (document.body ?? document.documentElement);
|
|
@@ -37,7 +26,6 @@ export class ScreenSettle {
|
|
|
37
26
|
const observer = new MutationObserver(rearm);
|
|
38
27
|
const deadline = setTimeout(done, timeoutMs);
|
|
39
28
|
observer.observe(body, { attributes: true, characterData: true, childList: true, subtree: true });
|
|
40
|
-
|
|
41
29
|
if (appearMs) quiet = setTimeout(done, appearMs);
|
|
42
30
|
else rearm();
|
|
43
31
|
});
|