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.
Files changed (1250) hide show
  1. package/base/base.ts +6 -11
  2. package/base/baseEnv.ts +17 -11
  3. package/base/databaseModes.ts +75 -0
  4. package/base/index.ts +1 -0
  5. package/base/primitiveRegistry.ts +38 -47
  6. package/base/symbols.ts +1 -1
  7. package/base/types.ts +1 -1
  8. package/base/utils.ts +3 -6
  9. package/capacitor.base.config.ts +2 -3
  10. package/client/capacitor.ts +18 -63
  11. package/client/cn.ts +3 -13
  12. package/client/cookie.ts +6 -15
  13. package/client/createFont.ts +0 -2
  14. package/client/csrTypes.ts +6 -59
  15. package/client/decorators.ts +1 -1
  16. package/client/device.ts +52 -44
  17. package/client/frameConfig.ts +15 -26
  18. package/client/index.ts +0 -1
  19. package/client/makePageProto.tsx +3 -4
  20. package/client/route/RootLayoutDefinition.ts +0 -6
  21. package/client/route/RouteDefinition.ts +5 -30
  22. package/client/route/resolveRouteModule.ts +1 -5
  23. package/client/router.ts +35 -39
  24. package/client/rscNavigation.ts +4 -5
  25. package/client/sharedContext.ts +2 -19
  26. package/client/storage.ts +29 -38
  27. package/client/translator.ts +5 -6
  28. package/client/types.ts +0 -3
  29. package/common/CodeAgentClient.ts +91 -0
  30. package/common/CodeTranscript.ts +325 -0
  31. package/common/Logger.ts +9 -34
  32. package/common/TrustedProxy.ts +6 -34
  33. package/common/applyMixins.ts +13 -2
  34. package/common/authToken.ts +0 -11
  35. package/common/capitalize.ts +3 -4
  36. package/common/clamp.ts +0 -1
  37. package/common/clientAddress.ts +1 -15
  38. package/common/codeAgentProfile.ts +181 -0
  39. package/common/codeAgentWire.ts +305 -0
  40. package/{server/routing → common}/eventStream.ts +1 -6
  41. package/common/fileUpload.ts +1 -12
  42. package/common/formatNumber.ts +3 -12
  43. package/common/index.ts +104 -19
  44. package/common/interpolateTranslation.ts +1 -6
  45. package/common/isEmail.ts +0 -1
  46. package/common/isRecord.ts +2 -0
  47. package/common/isThenable.ts +1 -8
  48. package/common/isValidDate.ts +3 -5
  49. package/common/logContext.ts +1 -1
  50. package/{ui/Agent → common}/markdownBlocks.ts +0 -3
  51. package/common/markdownSpans.ts +47 -0
  52. package/{ui/Agent → common}/markdownTable.ts +1 -5
  53. package/common/mcpExposure.ts +4 -27
  54. package/common/objectPath.ts +67 -0
  55. package/common/objectify.ts +52 -0
  56. package/common/{isPhoneNumber.ts → phone.ts} +7 -1
  57. package/common/randomPick.ts +13 -0
  58. package/common/requestOrigin.ts +0 -17
  59. package/common/restClient.ts +8 -13
  60. package/common/round.ts +4 -0
  61. package/common/routeConvention.ts +21 -14
  62. package/common/sleep.ts +1 -8
  63. package/common/subRoute.ts +4 -7
  64. package/common/toError.ts +1 -0
  65. package/common/tunnelWire.ts +263 -0
  66. package/common/types.ts +6 -7
  67. package/common/{splitVersion.ts → version.ts} +3 -6
  68. package/common/{websocketBinaryFrame.ts → websocketContract.ts} +43 -9
  69. package/constant/cascadePaths.ts +6 -9
  70. package/constant/constantRegistry.ts +21 -57
  71. package/constant/crystalize.ts +2 -12
  72. package/constant/dateSlot.ts +0 -15
  73. package/constant/fieldInfo.ts +30 -109
  74. package/constant/fieldQueryMeta.ts +2 -10
  75. package/constant/getDefault.ts +16 -8
  76. package/constant/hydrationPlan.ts +1 -9
  77. package/constant/index.ts +0 -1
  78. package/constant/labelOf.ts +1 -6
  79. package/constant/mask.ts +36 -38
  80. package/constant/purify.ts +6 -14
  81. package/constant/serialize.ts +82 -5
  82. package/constant/textFieldPaths.ts +2 -3
  83. package/constant/types.ts +2 -6
  84. package/constant/via.ts +20 -60
  85. package/dictionary/DictionaryLookup.ts +1 -7
  86. package/dictionary/agent.dictionary.ts +43 -11
  87. package/dictionary/base.dictionary.ts +11 -0
  88. package/dictionary/dictInfo.ts +145 -626
  89. package/dictionary/dictShape.ts +54 -0
  90. package/dictionary/dictionary.ts +1 -2
  91. package/dictionary/dictionaryRegistry.ts +7 -28
  92. package/dictionary/locale.ts +24 -116
  93. package/dictionary/trans.ts +18 -56
  94. package/document/dataLoader.ts +77 -78
  95. package/document/database.ts +52 -56
  96. package/document/documentQuery.ts +32 -32
  97. package/document/documentSchema.ts +21 -26
  98. package/document/filterMeta.ts +11 -31
  99. package/document/index.ts +0 -1
  100. package/document/into.ts +8 -18
  101. package/document/loaderInfo.ts +28 -7
  102. package/document/noDocumentError.ts +2 -7
  103. package/document/queryEvaluator.ts +21 -43
  104. package/document/types.ts +0 -1
  105. package/fetch/client/fetchClient.ts +66 -105
  106. package/fetch/client/fetchHandle.ts +4 -12
  107. package/fetch/client/httpClient.ts +35 -68
  108. package/fetch/client/remoteError.ts +2 -8
  109. package/fetch/client/sliceInitHandle.ts +3 -6
  110. package/fetch/client/sliceQueryArgs.ts +11 -0
  111. package/fetch/client/wsClient.ts +75 -64
  112. package/fetch/fetchType/appliedReturn.type.ts +5 -24
  113. package/fetch/fetchType/buildFetch.type.ts +28 -1
  114. package/fetch/fetchType/index.ts +0 -1
  115. package/fetch/requestStorage.ts +7 -28
  116. package/fetch/types.ts +0 -1
  117. package/index.ts +31 -64
  118. package/package.json +19 -5
  119. package/server/akanApp.ts +138 -289
  120. package/server/akanAppHeaders.ts +2 -3
  121. package/server/akanOption.ts +25 -27
  122. package/server/akanServer.ts +98 -219
  123. package/server/animatedImage.ts +2 -11
  124. package/server/artifact/builderRpc.ts +24 -64
  125. package/server/artifact/index.ts +0 -1
  126. package/server/artifact/ipcTypes.ts +27 -30
  127. package/server/artifact/routeClientCache.ts +18 -37
  128. package/server/artifact/routeSeedIndexStore.ts +2 -35
  129. package/server/artifact/routesManifestStore.ts +13 -38
  130. package/server/binaryPubsub.ts +0 -9
  131. package/server/cachePolicy.ts +10 -44
  132. package/server/console.ts +12 -16
  133. package/server/consoleSession.ts +55 -12
  134. package/server/contentEncoding.ts +42 -27
  135. package/server/decorators.ts +4 -70
  136. package/server/devtools/constantSerializer.ts +2 -14
  137. package/server/devtools/depsSerializer.ts +14 -46
  138. package/server/devtools/devtoolsJson.ts +6 -18
  139. package/server/devtools/devtoolsRouter.ts +2 -12
  140. package/server/devtools/signalSerializer.ts +5 -44
  141. package/server/devtools/types.ts +0 -12
  142. package/server/di/diLifecycle.ts +141 -221
  143. package/server/di/predefinedAdaptor.ts +11 -5
  144. package/server/di/resolveHierarchy.ts +114 -5
  145. package/server/di/utils.ts +13 -29
  146. package/server/head.tsx +53 -0
  147. package/server/hmr/clientScript.ts +2 -8
  148. package/server/hmr/devHmrController.ts +28 -32
  149. package/server/hmr/wsHub.ts +9 -7
  150. package/server/imageOptimizer.ts +5 -26
  151. package/server/index.ts +1 -1
  152. package/server/lifecycle/portInUse.ts +1 -4
  153. package/server/lifecycle/runtimeDir.ts +0 -4
  154. package/server/lifecycle/shutdownManager.ts +4 -29
  155. package/server/logging/childOutputReader.ts +0 -12
  156. package/server/logging/hubFileSink.ts +10 -6
  157. package/server/logging/logControlSocket.ts +13 -7
  158. package/server/logging/logForwarder.ts +19 -22
  159. package/server/logging/logHub.ts +0 -0
  160. package/server/logging/logQuery.ts +4 -7
  161. package/server/logging/logStdoutWriter.ts +1 -11
  162. package/server/logging/logStreamRoute.ts +4 -21
  163. package/server/logging/logTailClient.ts +1 -8
  164. package/server/logging/rotatingLogWriter.ts +4 -6
  165. package/server/mcp/McpAuth.ts +5 -79
  166. package/server/mcp/McpDispatcher.ts +13 -90
  167. package/server/mcp/McpEventStream.ts +2 -12
  168. package/server/mcp/McpExecutionContext.ts +1 -42
  169. package/server/mcp/McpRateLimiter.ts +61 -30
  170. package/server/mcp/McpRouter.ts +49 -208
  171. package/server/mcp/PagePromptComposer.ts +7 -29
  172. package/server/memoryLimit.ts +1 -13
  173. package/server/oauth/OAuthAuthorize.ts +3 -7
  174. package/server/oauth/OAuthClientIdMetadata.ts +2 -27
  175. package/server/oauth/OAuthErrors.ts +0 -13
  176. package/server/oauth/OAuthMetadata.ts +1 -7
  177. package/server/oauth/OAuthPkce.ts +0 -2
  178. package/server/oauth/OAuthRedirect.ts +0 -9
  179. package/server/oauth/OAuthRegistration.ts +0 -2
  180. package/server/oauth/OAuthRevocation.ts +1 -11
  181. package/server/oauth/OAuthToken.ts +3 -14
  182. package/server/oauth/oauthTypes.ts +1 -2
  183. package/server/ops/ageEncryption.ts +317 -0
  184. package/server/ops/appInfo.ts +92 -0
  185. package/server/ops/opsCommand.ts +116 -0
  186. package/server/ops/opsRoute.ts +151 -0
  187. package/server/ops/opsToken.ts +93 -0
  188. package/server/ops/snapshotJobs.ts +133 -0
  189. package/server/ops/snapshotRestore.ts +118 -0
  190. package/server/ops/snapshotTypes.ts +52 -0
  191. package/server/ops/sqliteFiles.ts +20 -0
  192. package/server/ops/sqliteSnapshot.ts +149 -0
  193. package/server/processMetricsCollector.ts +12 -14
  194. package/server/proxy/hostBasePathWebProxy.ts +20 -13
  195. package/server/proxy/index.ts +2 -3
  196. package/server/proxy/localeWebProxy.ts +3 -17
  197. package/server/proxy/types.ts +14 -0
  198. package/server/proxy/webProxyRunner.ts +13 -1
  199. package/server/resolver/CascadeRunner.ts +7 -23
  200. package/server/resolver/database.resolver.ts +57 -123
  201. package/server/resolver/service.resolver.ts +9 -161
  202. package/server/resolver/signal.resolver.ts +73 -98
  203. package/server/routeElementComposer.tsx +23 -52
  204. package/server/routeState.ts +15 -34
  205. package/server/routeTreeBuilder.ts +24 -83
  206. package/server/routing/apiRouter.ts +17 -49
  207. package/server/routing/appWsData.ts +4 -28
  208. package/server/routing/soloAppRoutes.ts +5 -5
  209. package/server/rscClient.tsx +31 -37
  210. package/server/rscClientFetch.ts +7 -3
  211. package/server/rscClientPatch.ts +4 -25
  212. package/server/rscHttp.ts +1 -1
  213. package/server/rscNavigationState.ts +10 -25
  214. package/server/rscPagePrompts.ts +4 -24
  215. package/server/rscSegmentOutlet.tsx +1 -5
  216. package/server/rscWorker.tsx +146 -285
  217. package/server/rscWorkerCache.ts +74 -8
  218. package/server/rscWorkerHost.ts +45 -192
  219. package/server/semaphore.ts +1 -1
  220. package/server/sitemap.ts +1 -3
  221. package/server/ssrFromRscRenderer.tsx +31 -124
  222. package/server/ssrTypes.ts +3 -29
  223. package/server/staticPath.ts +0 -16
  224. package/server/systemPageDocument.tsx +65 -2
  225. package/server/systemPages.tsx +4 -2
  226. package/server/tunnel/TunnelAgent.ts +237 -0
  227. package/server/tunnel/TunnelDataSocket.ts +146 -0
  228. package/server/tunnel/TunnelHttpStream.ts +86 -0
  229. package/server/tunnel/TunnelTcpStream.ts +96 -0
  230. package/server/tunnel/TunnelWebsocketStream.ts +110 -0
  231. package/server/tunnel/index.ts +6 -0
  232. package/server/tunnel/tunnelStream.ts +32 -0
  233. package/server/types.tsx +2 -9
  234. package/server/webRouter.ts +88 -306
  235. package/service/agent.service.ts +66 -35
  236. package/service/injectInfo.ts +106 -75
  237. package/service/ipcTypes.ts +4 -1
  238. package/service/liveSyncHub.ts +4 -34
  239. package/service/predefinedAdaptor/anthropicLlm.ts +65 -75
  240. package/service/predefinedAdaptor/cache.adaptor.ts +257 -75
  241. package/service/predefinedAdaptor/database.adaptor.ts +366 -108
  242. package/service/predefinedAdaptor/documentTransfer.ts +89 -0
  243. package/service/predefinedAdaptor/index.ts +2 -1
  244. package/service/predefinedAdaptor/insightQuery.ts +89 -79
  245. package/service/predefinedAdaptor/llm.adaptor.ts +64 -54
  246. package/service/predefinedAdaptor/llmOverflow.ts +63 -0
  247. package/service/predefinedAdaptor/openaiDialect.ts +56 -64
  248. package/service/predefinedAdaptor/openaiLlm.ts +24 -27
  249. package/service/predefinedAdaptor/queue.adaptor.ts +41 -22
  250. package/service/predefinedAdaptor/schedule.adaptor.ts +69 -9
  251. package/service/predefinedAdaptor/searchIndex.ts +76 -325
  252. package/service/predefinedAdaptor/solidCache.adaptor.ts +135 -12
  253. package/service/predefinedAdaptor/solidPubsub.adaptor.ts +28 -16
  254. package/service/predefinedAdaptor/solidQueue.adaptor.ts +61 -10
  255. package/service/predefinedAdaptor/solidSqlite.ts +10 -16
  256. package/service/predefinedAdaptor/sql/PendingStoreEnsures.ts +1 -0
  257. package/service/predefinedAdaptor/sql/PostgresInsightSession.ts +113 -0
  258. package/service/predefinedAdaptor/sql/QueryCompiler.ts +50 -30
  259. package/service/predefinedAdaptor/sql/SqlDocumentStore.ts +290 -138
  260. package/service/predefinedAdaptor/sql/SqliteInsightSession.ts +85 -0
  261. package/service/predefinedAdaptor/sql/UpdateCompiler.ts +1 -7
  262. package/service/predefinedAdaptor/sql/dialect/postgres.ts +138 -53
  263. package/service/predefinedAdaptor/sql/dialect/sqlite.ts +18 -15
  264. package/service/predefinedAdaptor/sql/driver/bunSqlite.ts +31 -4
  265. package/service/predefinedAdaptor/sql/driver/libsql.ts +20 -12
  266. package/service/predefinedAdaptor/sql/driver/postgres.ts +13 -7
  267. package/service/predefinedAdaptor/sql/search/fts5.ts +249 -0
  268. package/service/predefinedAdaptor/sql/search/mirror.ts +76 -0
  269. package/service/predefinedAdaptor/sql/search/postgres.ts +453 -0
  270. package/service/predefinedAdaptor/sql/search/types.ts +50 -0
  271. package/service/predefinedAdaptor/sql/types.ts +76 -17
  272. package/service/predefinedAdaptor/sql/values.ts +40 -2
  273. package/service/predefinedAdaptor/sqlitePath.ts +12 -0
  274. package/service/predefinedAdaptor/sseData.ts +23 -0
  275. package/service/predefinedAdaptor/storage.adaptor.ts +19 -7
  276. package/service/predefinedAdaptor/websocket.adaptor.ts +154 -184
  277. package/service/serve.ts +1 -2
  278. package/service/serviceModule.ts +52 -70
  279. package/service/toolNames.ts +5 -22
  280. package/service/types.ts +3 -9
  281. package/signal/CrossSiteGuard.ts +5 -40
  282. package/signal/SignalFailure.ts +2 -15
  283. package/signal/agent/AgentCatalogue.ts +9 -55
  284. package/signal/agent.signal.ts +9 -6
  285. package/signal/agentMeter.ts +45 -0
  286. package/signal/agentTurnStream.ts +48 -46
  287. package/signal/endpoint.ts +12 -2
  288. package/signal/endpointCache.ts +59 -0
  289. package/signal/endpointInfo.ts +13 -27
  290. package/signal/exception.ts +3 -34
  291. package/signal/guard.ts +4 -21
  292. package/signal/guards.ts +2 -10
  293. package/signal/index.ts +1 -0
  294. package/signal/internal.ts +3 -7
  295. package/signal/internalArg.ts +10 -13
  296. package/signal/internalInfo.ts +1 -1
  297. package/signal/mcp/McpDocument.ts +21 -90
  298. package/signal/mcp/McpProgress.ts +6 -19
  299. package/signal/mcp/McpUriTemplate.ts +1 -27
  300. package/signal/mcp/Msg.ts +13 -122
  301. package/signal/mcp/mcpProtocol.ts +3 -26
  302. package/signal/mcp/pagePrompt.ts +3 -9
  303. package/signal/middleware.ts +15 -65
  304. package/signal/openapi/openapi.ts +0 -4
  305. package/signal/schema/JsonSchemaBuilder.ts +32 -46
  306. package/signal/serializer/fetch.serializer.ts +37 -43
  307. package/signal/serverSignal.ts +6 -8
  308. package/signal/signalContext.ts +70 -161
  309. package/signal/signalRegistry.ts +11 -17
  310. package/signal/slice.ts +6 -12
  311. package/signal/sliceInfo.ts +5 -30
  312. package/signal/trace.ts +11 -84
  313. package/signal/types.ts +27 -57
  314. package/store/SliceRequest.ts +1 -11
  315. package/store/action.ts +153 -395
  316. package/store/actionTag.ts +1 -10
  317. package/store/agent/AgentBridge.ts +3 -25
  318. package/store/agent/AgentContext.ts +2 -9
  319. package/store/agent/AgentCursor.ts +160 -0
  320. package/store/agent/AgentPrompts.ts +0 -15
  321. package/store/agent/AgentVisual.ts +152 -0
  322. package/store/agent/ScreenFlash.ts +67 -0
  323. package/store/agent/ScreenReader.ts +3 -52
  324. package/store/agent/ScreenSettle.ts +1 -13
  325. package/store/agent/ScreenTarget.ts +15 -32
  326. package/store/agent/StoreCatalogue.ts +12 -24
  327. package/store/agent/StoreSurfaceSource.ts +35 -65
  328. package/store/agent/index.ts +4 -4
  329. package/store/agentic/AgentValue.ts +9 -26
  330. package/store/agentic/StExposeBuilder.ts +3 -12
  331. package/store/agentic/StExposeDraft.ts +0 -6
  332. package/store/agentic/StStateBuilder.ts +3 -11
  333. package/store/agentic/StStateDraft.ts +0 -5
  334. package/store/agentic/StToolBuilder.ts +48 -41
  335. package/store/agentic/StToolDraft.ts +0 -7
  336. package/store/agentic/attachAgentic.ts +2 -10
  337. package/store/agentic/formFields.ts +8 -42
  338. package/store/agentic/index.ts +1 -1
  339. package/store/agentic/useAgentReference.ts +31 -0
  340. package/store/agentic/useFieldTool.ts +176 -58
  341. package/store/agentic/useFormTools.ts +4 -21
  342. package/store/agentic/useRelationFieldTool.ts +2 -15
  343. package/store/databaseStateNames.ts +0 -9
  344. package/store/draftStore.ts +4 -54
  345. package/store/formSetterNames.ts +2 -19
  346. package/store/hooks.ts +1 -1
  347. package/store/liveInsert.ts +1 -30
  348. package/store/sliceKeys.ts +37 -0
  349. package/store/sliceRole.ts +1 -10
  350. package/store/state.ts +4 -50
  351. package/store/stateBuilder.ts +1 -23
  352. package/store/storeInstance.ts +21 -114
  353. package/store/storeRegistry.ts +1 -8
  354. package/store/types.ts +1 -1
  355. package/test/conformance.ts +299 -0
  356. package/test/index.ts +2 -2
  357. package/test/sampleOf.ts +52 -28
  358. package/test/signalTestRuntime.ts +6 -10
  359. package/test/testServer.ts +66 -31
  360. package/types/base/base.d.ts +2 -3
  361. package/types/base/baseEnv.d.ts +7 -10
  362. package/types/base/databaseModes.d.ts +28 -0
  363. package/types/base/index.d.ts +1 -0
  364. package/types/base/primitiveRegistry.d.ts +23 -10
  365. package/types/base/symbols.d.ts +1 -1
  366. package/types/capacitor.base.config.d.ts +1 -1
  367. package/types/client/cn.d.ts +3 -13
  368. package/types/client/cookie.d.ts +3 -12
  369. package/types/client/csrTypes.d.ts +6 -57
  370. package/types/client/decorators.d.ts +1 -1
  371. package/types/client/device.d.ts +2 -1
  372. package/types/client/index.d.ts +0 -1
  373. package/types/client/route/RootLayoutDefinition.d.ts +0 -1
  374. package/types/client/route/RouteDefinition.d.ts +4 -16
  375. package/types/client/route/resolveRouteModule.d.ts +1 -5
  376. package/types/client/router.d.ts +8 -4
  377. package/types/client/rscNavigation.d.ts +4 -5
  378. package/types/client/sharedContext.d.ts +2 -19
  379. package/types/client/storage.d.ts +1 -1
  380. package/types/client/types.d.ts +0 -3
  381. package/types/common/CodeAgentClient.d.ts +20 -0
  382. package/types/common/CodeTranscript.d.ts +72 -0
  383. package/types/common/Logger.d.ts +4 -20
  384. package/types/common/TrustedProxy.d.ts +2 -28
  385. package/types/common/applyMixins.d.ts +3 -0
  386. package/types/common/authToken.d.ts +0 -11
  387. package/types/common/capitalize.d.ts +1 -1
  388. package/types/common/clamp.d.ts +0 -1
  389. package/types/common/clientAddress.d.ts +1 -15
  390. package/types/common/codeAgentProfile.d.ts +115 -0
  391. package/types/common/codeAgentWire.d.ts +279 -0
  392. package/types/{server/routing → common}/eventStream.d.ts +0 -5
  393. package/types/common/fileUpload.d.ts +6 -11
  394. package/types/common/index.d.ts +20 -19
  395. package/types/common/interpolateTranslation.d.ts +1 -6
  396. package/types/common/isEmail.d.ts +0 -1
  397. package/types/common/isRecord.d.ts +1 -0
  398. package/types/common/isThenable.d.ts +0 -8
  399. package/types/common/logContext.d.ts +1 -1
  400. package/types/{ui/Agent → common}/markdownBlocks.d.ts +0 -3
  401. package/types/common/markdownSpans.d.ts +30 -0
  402. package/types/{ui/Agent → common}/markdownTable.d.ts +0 -2
  403. package/types/common/mcpExposure.d.ts +3 -23
  404. package/types/common/objectPath.d.ts +10 -0
  405. package/types/common/objectify.d.ts +7 -0
  406. package/types/common/phone.d.ts +2 -0
  407. package/types/common/randomPick.d.ts +1 -0
  408. package/types/common/requestOrigin.d.ts +0 -17
  409. package/types/common/restClient.d.ts +0 -7
  410. package/types/common/round.d.ts +1 -0
  411. package/types/common/routeConvention.d.ts +2 -5
  412. package/types/common/sleep.d.ts +0 -1
  413. package/types/common/subRoute.d.ts +4 -6
  414. package/types/common/toError.d.ts +1 -0
  415. package/types/common/tunnelWire.d.ts +161 -0
  416. package/types/common/types.d.ts +7 -7
  417. package/types/common/version.d.ts +6 -0
  418. package/types/common/websocketContract.d.ts +41 -0
  419. package/types/constant/cascadePaths.d.ts +2 -5
  420. package/types/constant/constantRegistry.d.ts +4 -4
  421. package/types/constant/dateSlot.d.ts +0 -5
  422. package/types/constant/fieldInfo.d.ts +2 -21
  423. package/types/constant/fieldQueryMeta.d.ts +2 -10
  424. package/types/constant/getDefault.d.ts +5 -7
  425. package/types/constant/hydrationPlan.d.ts +0 -8
  426. package/types/constant/index.d.ts +0 -1
  427. package/types/constant/labelOf.d.ts +1 -6
  428. package/types/constant/mask.d.ts +11 -36
  429. package/types/constant/serialize.d.ts +10 -2
  430. package/types/constant/types.d.ts +2 -6
  431. package/types/constant/via.d.ts +0 -1
  432. package/types/dictionary/DictionaryLookup.d.ts +1 -7
  433. package/types/dictionary/agent.dictionary.d.ts +2 -1
  434. package/types/dictionary/base.dictionary.d.ts +1 -1
  435. package/types/dictionary/dictInfo.d.ts +25 -92
  436. package/types/dictionary/dictShape.d.ts +26 -0
  437. package/types/dictionary/dictionary.d.ts +9 -9
  438. package/types/dictionary/dictionaryRegistry.d.ts +1 -15
  439. package/types/dictionary/locale.d.ts +9 -28
  440. package/types/dictionary/trans.d.ts +5 -14
  441. package/types/document/dataLoader.d.ts +2 -2
  442. package/types/document/database.d.ts +21 -14
  443. package/types/document/documentQuery.d.ts +6 -1
  444. package/types/document/documentSchema.d.ts +3 -7
  445. package/types/document/filterMeta.d.ts +3 -8
  446. package/types/document/index.d.ts +0 -1
  447. package/types/document/into.d.ts +3 -2
  448. package/types/document/loaderInfo.d.ts +9 -4
  449. package/types/document/noDocumentError.d.ts +2 -7
  450. package/types/document/queryEvaluator.d.ts +7 -24
  451. package/types/document/types.d.ts +0 -1
  452. package/types/fetch/client/fetchClient.d.ts +6 -9
  453. package/types/fetch/client/fetchHandle.d.ts +3 -11
  454. package/types/fetch/client/httpClient.d.ts +5 -1
  455. package/types/fetch/client/remoteError.d.ts +2 -8
  456. package/types/fetch/client/sliceInitHandle.d.ts +2 -5
  457. package/types/fetch/client/sliceQueryArgs.d.ts +3 -0
  458. package/types/fetch/client/wsClient.d.ts +10 -15
  459. package/types/fetch/fetchType/appliedReturn.type.d.ts +5 -23
  460. package/types/fetch/fetchType/buildFetch.type.d.ts +15 -1
  461. package/types/fetch/fetchType/index.d.ts +0 -1
  462. package/types/fetch/requestStorage.d.ts +3 -16
  463. package/types/fetch/types.d.ts +0 -1
  464. package/types/index.d.ts +30 -64
  465. package/types/server/akanApp.d.ts +5 -28
  466. package/types/server/akanAppHeaders.d.ts +0 -1
  467. package/types/server/akanOption.d.ts +12 -24
  468. package/types/server/akanServer.d.ts +16 -56
  469. package/types/server/animatedImage.d.ts +0 -6
  470. package/types/server/artifact/builderRpc.d.ts +7 -30
  471. package/types/server/artifact/index.d.ts +0 -1
  472. package/types/server/artifact/ipcTypes.d.ts +22 -29
  473. package/types/server/artifact/routeClientCache.d.ts +3 -11
  474. package/types/server/artifact/routeSeedIndexStore.d.ts +0 -16
  475. package/types/server/artifact/routesManifestStore.d.ts +1 -1
  476. package/types/server/binaryPubsub.d.ts +0 -8
  477. package/types/server/cachePolicy.d.ts +2 -21
  478. package/types/server/console.d.ts +3 -6
  479. package/types/server/consoleSession.d.ts +2 -2
  480. package/types/server/contentEncoding.d.ts +6 -14
  481. package/types/server/decorators.d.ts +0 -12
  482. package/types/server/devtools/constantSerializer.d.ts +1 -6
  483. package/types/server/devtools/depsSerializer.d.ts +1 -7
  484. package/types/server/devtools/devtoolsJson.d.ts +1 -7
  485. package/types/server/devtools/devtoolsRouter.d.ts +2 -11
  486. package/types/server/devtools/signalSerializer.d.ts +1 -9
  487. package/types/server/devtools/types.d.ts +0 -11
  488. package/types/server/di/diLifecycle.d.ts +0 -36
  489. package/types/server/di/predefinedAdaptor.d.ts +3 -2
  490. package/types/server/di/resolveHierarchy.d.ts +22 -5
  491. package/types/server/di/utils.d.ts +4 -17
  492. package/types/server/head.d.ts +9 -0
  493. package/types/server/hmr/devHmrController.d.ts +0 -2
  494. package/types/server/hmr/wsHub.d.ts +6 -1
  495. package/types/server/index.d.ts +1 -1
  496. package/types/server/lifecycle/portInUse.d.ts +1 -4
  497. package/types/server/lifecycle/runtimeDir.d.ts +0 -4
  498. package/types/server/lifecycle/shutdownManager.d.ts +0 -9
  499. package/types/server/logging/childOutputReader.d.ts +0 -12
  500. package/types/server/logging/hubFileSink.d.ts +1 -5
  501. package/types/server/logging/logControlSocket.d.ts +2 -7
  502. package/types/server/logging/logForwarder.d.ts +3 -15
  503. package/types/server/logging/logHub.d.ts +1 -15
  504. package/types/server/logging/logQuery.d.ts +3 -6
  505. package/types/server/logging/logStdoutWriter.d.ts +0 -6
  506. package/types/server/logging/logStreamRoute.d.ts +0 -9
  507. package/types/server/logging/logTailClient.d.ts +0 -5
  508. package/types/server/mcp/McpAuth.d.ts +3 -71
  509. package/types/server/mcp/McpDispatcher.d.ts +0 -23
  510. package/types/server/mcp/McpEventStream.d.ts +1 -12
  511. package/types/server/mcp/McpExecutionContext.d.ts +0 -33
  512. package/types/server/mcp/McpRateLimiter.d.ts +10 -13
  513. package/types/server/mcp/McpRouter.d.ts +1 -47
  514. package/types/server/mcp/PagePromptComposer.d.ts +1 -13
  515. package/types/server/memoryLimit.d.ts +1 -13
  516. package/types/server/oauth/OAuthAuthorize.d.ts +1 -6
  517. package/types/server/oauth/OAuthClientIdMetadata.d.ts +2 -26
  518. package/types/server/oauth/OAuthErrors.d.ts +0 -13
  519. package/types/server/oauth/OAuthMetadata.d.ts +1 -7
  520. package/types/server/oauth/OAuthPkce.d.ts +0 -1
  521. package/types/server/oauth/OAuthRedirect.d.ts +0 -9
  522. package/types/server/oauth/OAuthRegistration.d.ts +0 -1
  523. package/types/server/oauth/OAuthRevocation.d.ts +1 -11
  524. package/types/server/oauth/OAuthToken.d.ts +1 -13
  525. package/types/server/oauth/oauthTypes.d.ts +1 -2
  526. package/types/server/ops/ageEncryption.d.ts +19 -0
  527. package/types/server/ops/appInfo.d.ts +36 -0
  528. package/types/server/ops/opsCommand.d.ts +5 -0
  529. package/types/server/ops/opsRoute.d.ts +24 -0
  530. package/types/server/ops/opsToken.d.ts +26 -0
  531. package/types/server/ops/snapshotJobs.d.ts +24 -0
  532. package/types/server/ops/snapshotRestore.d.ts +24 -0
  533. package/types/server/ops/snapshotTypes.d.ts +45 -0
  534. package/types/server/ops/sqliteFiles.d.ts +5 -0
  535. package/types/server/ops/sqliteSnapshot.d.ts +32 -0
  536. package/types/server/processMetricsCollector.d.ts +3 -1
  537. package/types/server/proxy/hostBasePathWebProxy.d.ts +7 -1
  538. package/types/server/proxy/index.d.ts +2 -3
  539. package/types/server/proxy/localeWebProxy.d.ts +1 -1
  540. package/types/server/proxy/types.d.ts +5 -0
  541. package/types/server/proxy/webProxyRunner.d.ts +1 -0
  542. package/types/server/resolver/CascadeRunner.d.ts +0 -4
  543. package/types/server/resolver/database.resolver.d.ts +1 -1
  544. package/types/server/resolver/service.resolver.d.ts +2 -2
  545. package/types/server/resolver/signal.resolver.d.ts +1 -15
  546. package/types/server/routeElementComposer.d.ts +2 -8
  547. package/types/server/routeState.d.ts +1 -1
  548. package/types/server/routing/apiRouter.d.ts +2 -20
  549. package/types/server/routing/appWsData.d.ts +0 -26
  550. package/types/server/routing/soloAppRoutes.d.ts +2 -6
  551. package/types/server/rscClient.d.ts +0 -9
  552. package/types/server/rscClientFetch.d.ts +6 -6
  553. package/types/server/rscClientPatch.d.ts +1 -1
  554. package/types/server/rscHttp.d.ts +1 -0
  555. package/types/server/rscNavigationState.d.ts +3 -2
  556. package/types/server/rscPagePrompts.d.ts +0 -9
  557. package/types/server/rscWorkerCache.d.ts +41 -3
  558. package/types/server/rscWorkerHost.d.ts +5 -61
  559. package/types/server/ssrFromRscRenderer.d.ts +0 -12
  560. package/types/server/ssrTypes.d.ts +2 -29
  561. package/types/server/staticPath.d.ts +0 -16
  562. package/types/server/systemPageDocument.d.ts +8 -0
  563. package/types/server/systemPages.d.ts +2 -3
  564. package/types/server/tunnel/TunnelAgent.d.ts +29 -0
  565. package/types/server/tunnel/TunnelDataSocket.d.ts +22 -0
  566. package/types/server/tunnel/TunnelHttpStream.d.ts +10 -0
  567. package/types/server/tunnel/TunnelTcpStream.d.ts +11 -0
  568. package/types/server/tunnel/TunnelWebsocketStream.d.ts +10 -0
  569. package/types/server/tunnel/index.d.ts +6 -0
  570. package/types/server/tunnel/tunnelStream.d.ts +19 -0
  571. package/types/server/tunnel.d.ts +1 -0
  572. package/types/server/types.d.ts +2 -9
  573. package/types/server/webRouter.d.ts +2 -19
  574. package/types/service/agent.service.d.ts +16 -29
  575. package/types/service/injectInfo.d.ts +26 -15
  576. package/types/service/ipcTypes.d.ts +6 -0
  577. package/types/service/liveSyncHub.d.ts +4 -22
  578. package/types/service/predefinedAdaptor/anthropicLlm.d.ts +20 -29
  579. package/types/service/predefinedAdaptor/cache.adaptor.d.ts +42 -12
  580. package/types/service/predefinedAdaptor/database.adaptor.d.ts +20 -16
  581. package/types/service/predefinedAdaptor/documentTransfer.d.ts +15 -0
  582. package/types/service/predefinedAdaptor/index.d.ts +2 -1
  583. package/types/service/predefinedAdaptor/insightQuery.d.ts +7 -30
  584. package/types/service/predefinedAdaptor/llm.adaptor.d.ts +54 -54
  585. package/types/service/predefinedAdaptor/llmOverflow.d.ts +16 -0
  586. package/types/service/predefinedAdaptor/openaiDialect.d.ts +19 -29
  587. package/types/service/predefinedAdaptor/openaiLlm.d.ts +9 -14
  588. package/types/service/predefinedAdaptor/queue.adaptor.d.ts +12 -7
  589. package/types/service/predefinedAdaptor/schedule.adaptor.d.ts +7 -2
  590. package/types/service/predefinedAdaptor/searchIndex.d.ts +17 -47
  591. package/types/service/predefinedAdaptor/solidCache.adaptor.d.ts +15 -6
  592. package/types/service/predefinedAdaptor/solidPubsub.adaptor.d.ts +6 -4
  593. package/types/service/predefinedAdaptor/solidSqlite.d.ts +2 -1
  594. package/types/service/predefinedAdaptor/sql/PostgresInsightSession.d.ts +20 -0
  595. package/types/service/predefinedAdaptor/sql/QueryCompiler.d.ts +9 -11
  596. package/types/service/predefinedAdaptor/sql/SqlDocumentStore.d.ts +11 -25
  597. package/types/service/predefinedAdaptor/sql/SqliteInsightSession.d.ts +15 -0
  598. package/types/service/predefinedAdaptor/sql/UpdateCompiler.d.ts +0 -4
  599. package/types/service/predefinedAdaptor/sql/dialect/postgres.d.ts +18 -10
  600. package/types/service/predefinedAdaptor/sql/dialect/sqlite.d.ts +5 -2
  601. package/types/service/predefinedAdaptor/sql/driver/bunSqlite.d.ts +9 -3
  602. package/types/service/predefinedAdaptor/sql/driver/libsql.d.ts +8 -5
  603. package/types/service/predefinedAdaptor/sql/driver/postgres.d.ts +4 -4
  604. package/types/service/predefinedAdaptor/sql/search/fts5.d.ts +28 -0
  605. package/types/service/predefinedAdaptor/sql/search/mirror.d.ts +20 -0
  606. package/types/service/predefinedAdaptor/sql/search/postgres.d.ts +53 -0
  607. package/types/service/predefinedAdaptor/sql/search/types.d.ts +45 -0
  608. package/types/service/predefinedAdaptor/sql/types.d.ts +69 -15
  609. package/types/service/predefinedAdaptor/sql/values.d.ts +8 -0
  610. package/types/service/predefinedAdaptor/sqlitePath.d.ts +1 -0
  611. package/types/service/predefinedAdaptor/sseData.d.ts +1 -0
  612. package/types/service/predefinedAdaptor/storage.adaptor.d.ts +3 -2
  613. package/types/service/predefinedAdaptor/websocket.adaptor.d.ts +26 -26
  614. package/types/service/serviceModule.d.ts +7 -7
  615. package/types/service/toolNames.d.ts +4 -21
  616. package/types/service/types.d.ts +3 -3
  617. package/types/signal/CrossSiteGuard.d.ts +3 -28
  618. package/types/signal/SignalFailure.d.ts +1 -15
  619. package/types/signal/agent/AgentCatalogue.d.ts +8 -54
  620. package/types/signal/agent.signal.d.ts +4 -1
  621. package/types/signal/agentMeter.d.ts +24 -0
  622. package/types/signal/agentTurnStream.d.ts +10 -11
  623. package/types/signal/endpoint.d.ts +0 -1
  624. package/types/signal/endpointCache.d.ts +5 -0
  625. package/types/signal/endpointInfo.d.ts +1 -9
  626. package/types/signal/exception.d.ts +1 -34
  627. package/types/signal/guard.d.ts +4 -15
  628. package/types/signal/guards.d.ts +2 -10
  629. package/types/signal/index.d.ts +1 -0
  630. package/types/signal/internal.d.ts +1 -5
  631. package/types/signal/internalArg.d.ts +7 -13
  632. package/types/signal/mcp/McpDocument.d.ts +5 -45
  633. package/types/signal/mcp/McpProgress.d.ts +6 -19
  634. package/types/signal/mcp/McpUriTemplate.d.ts +1 -19
  635. package/types/signal/mcp/Msg.d.ts +13 -70
  636. package/types/signal/mcp/mcpProtocol.d.ts +1 -26
  637. package/types/signal/mcp/pagePrompt.d.ts +3 -9
  638. package/types/signal/middleware.d.ts +0 -18
  639. package/types/signal/schema/JsonSchemaBuilder.d.ts +15 -43
  640. package/types/signal/serializer/fetch.serializer.d.ts +1 -6
  641. package/types/signal/serverSignal.d.ts +0 -1
  642. package/types/signal/signalContext.d.ts +14 -61
  643. package/types/signal/signalRegistry.d.ts +0 -1
  644. package/types/signal/slice.d.ts +3 -9
  645. package/types/signal/sliceInfo.d.ts +5 -30
  646. package/types/signal/trace.d.ts +2 -30
  647. package/types/signal/types.d.ts +27 -57
  648. package/types/store/SliceRequest.d.ts +1 -11
  649. package/types/store/action.d.ts +2 -6
  650. package/types/store/actionTag.d.ts +1 -10
  651. package/types/store/agent/AgentBridge.d.ts +3 -22
  652. package/types/store/agent/AgentContext.d.ts +1 -7
  653. package/types/store/agent/AgentCursor.d.ts +24 -0
  654. package/types/store/agent/AgentPrompts.d.ts +0 -5
  655. package/types/store/agent/AgentVisual.d.ts +25 -0
  656. package/types/store/agent/ScreenFlash.d.ts +23 -0
  657. package/types/store/agent/ScreenReader.d.ts +3 -26
  658. package/types/store/agent/ScreenSettle.d.ts +1 -12
  659. package/types/store/agent/ScreenTarget.d.ts +3 -23
  660. package/types/store/agent/StoreCatalogue.d.ts +12 -16
  661. package/types/store/agent/StoreSurfaceSource.d.ts +11 -23
  662. package/types/store/agent/index.d.ts +4 -3
  663. package/types/store/agentic/AgentValue.d.ts +3 -23
  664. package/types/store/agentic/StExposeBuilder.d.ts +2 -11
  665. package/types/store/agentic/StExposeDraft.d.ts +0 -6
  666. package/types/store/agentic/StStateBuilder.d.ts +1 -7
  667. package/types/store/agentic/StStateDraft.d.ts +0 -5
  668. package/types/store/agentic/StToolBuilder.d.ts +14 -37
  669. package/types/store/agentic/StToolDraft.d.ts +0 -7
  670. package/types/store/agentic/attachAgentic.d.ts +2 -10
  671. package/types/store/agentic/formFields.d.ts +5 -41
  672. package/types/store/agentic/index.d.ts +1 -1
  673. package/types/store/agentic/useAgentReference.d.ts +14 -0
  674. package/types/store/agentic/useFieldTool.d.ts +19 -16
  675. package/types/store/agentic/useFormTools.d.ts +1 -18
  676. package/types/store/agentic/useRelationFieldTool.d.ts +1 -14
  677. package/types/store/baseSt.d.ts +2 -2
  678. package/types/store/databaseStateNames.d.ts +0 -9
  679. package/types/store/draftStore.d.ts +4 -30
  680. package/types/store/formSetterNames.d.ts +0 -19
  681. package/types/store/hooks.d.ts +1 -1
  682. package/types/store/liveInsert.d.ts +0 -23
  683. package/types/store/sliceKeys.d.ts +31 -0
  684. package/types/store/sliceRole.d.ts +1 -10
  685. package/types/store/state.d.ts +2 -9
  686. package/types/store/stateBuilder.d.ts +0 -14
  687. package/types/store/storeInstance.d.ts +6 -20
  688. package/types/store/storeRegistry.d.ts +0 -2
  689. package/types/test/conformance.d.ts +73 -0
  690. package/types/test/index.d.ts +2 -2
  691. package/types/test/sampleOf.d.ts +17 -2
  692. package/types/test/signalTestRuntime.d.ts +1 -1
  693. package/types/test/testServer.d.ts +4 -3
  694. package/types/ui/Agent/Attach.d.ts +2 -2
  695. package/types/ui/Agent/Bubble.d.ts +3 -14
  696. package/types/ui/Agent/Chat.d.ts +31 -64
  697. package/types/ui/Agent/ChatCommands.d.ts +4 -14
  698. package/types/ui/Agent/Composer.d.ts +18 -5
  699. package/types/ui/Agent/Dock.d.ts +38 -10
  700. package/types/ui/Agent/Guide.d.ts +1 -5
  701. package/types/ui/Agent/History.d.ts +1 -18
  702. package/types/ui/Agent/Launcher.d.ts +2 -2
  703. package/types/ui/Agent/Markdown.d.ts +2 -6
  704. package/types/ui/Agent/MentionNode.d.ts +18 -0
  705. package/types/ui/Agent/Menu.d.ts +4 -4
  706. package/types/ui/Agent/Question.d.ts +1 -6
  707. package/types/ui/Agent/Queued.d.ts +1 -6
  708. package/types/ui/Agent/Refer.d.ts +9 -0
  709. package/types/ui/Agent/RichInput.d.ts +14 -0
  710. package/types/ui/Agent/Skip.d.ts +3 -15
  711. package/types/ui/Agent/Steps.d.ts +17 -0
  712. package/types/ui/Agent/ToolCard.d.ts +9 -0
  713. package/types/ui/Agent/Zone.d.ts +13 -30
  714. package/types/ui/Agent/agentSessionOf.d.ts +20 -16
  715. package/types/ui/Agent/attachment.d.ts +4 -38
  716. package/types/ui/Agent/fetchRunner.d.ts +1 -8
  717. package/types/ui/Agent/index.d.ts +2 -6
  718. package/types/ui/Agent/mentionDraft.d.ts +9 -0
  719. package/types/ui/Agent/tokenCount.d.ts +1 -5
  720. package/types/ui/Agent/useChatAttachments.d.ts +0 -5
  721. package/types/ui/Agent/useChatQueue.d.ts +3 -14
  722. package/types/ui/Agent/useChatReferences.d.ts +15 -0
  723. package/types/ui/Agent/useChatVoice.d.ts +0 -12
  724. package/types/ui/Agent/useDraftRecall.d.ts +0 -8
  725. package/types/ui/Agent/useKeyboardInset.d.ts +0 -7
  726. package/types/ui/Agent/useReferenceMenu.d.ts +35 -0
  727. package/types/ui/Agent/useSlashMenu.d.ts +0 -2
  728. package/types/ui/Agent/voice.d.ts +8 -42
  729. package/types/ui/Badge.d.ts +0 -1
  730. package/types/ui/BottomSheet.d.ts +2 -5
  731. package/types/ui/Button.d.ts +6 -23
  732. package/types/ui/ClientSide.d.ts +0 -2
  733. package/types/ui/Constant/schemaGraph.d.ts +0 -4
  734. package/types/ui/Copy.d.ts +2 -3
  735. package/types/ui/CsrImage.d.ts +2 -1
  736. package/types/ui/Data/Dashboard.d.ts +1 -4
  737. package/types/ui/Data/Item.d.ts +1 -1
  738. package/types/ui/Data/ListContainer.d.ts +1 -10
  739. package/types/ui/Data/Pagination.d.ts +0 -2
  740. package/types/ui/Data/QueryMaker.d.ts +0 -7
  741. package/types/ui/Data/RefPicker.d.ts +0 -7
  742. package/types/ui/DatePicker.d.ts +0 -11
  743. package/types/ui/Dialog/LegacyModal.d.ts +1 -4
  744. package/types/ui/Dialog/Provider.d.ts +37 -4
  745. package/types/ui/Dialog/index.d.ts +4 -4
  746. package/types/ui/Dropdown.d.ts +1 -9
  747. package/types/ui/Empty.d.ts +3 -10
  748. package/types/ui/Field/Collection.d.ts +1 -16
  749. package/types/ui/Field/Relation.d.ts +10 -37
  750. package/types/ui/Field/Text.d.ts +9 -66
  751. package/types/ui/Field/index.d.ts +0 -9
  752. package/types/ui/Field/lightRefCache.d.ts +11 -0
  753. package/types/ui/Field/useRelationOptions.d.ts +28 -0
  754. package/types/ui/Image.d.ts +8 -12
  755. package/types/ui/InfiniteScroll.d.ts +2 -6
  756. package/types/ui/Input.d.ts +8 -15
  757. package/types/ui/Layout/Role.d.ts +23 -0
  758. package/types/ui/Layout/Sider.d.ts +21 -0
  759. package/types/ui/Layout/TopInset.d.ts +5 -0
  760. package/types/ui/Layout/index.d.ts +7 -7
  761. package/types/ui/LegacyModal.d.ts +1 -12
  762. package/types/ui/Link/Action.d.ts +11 -0
  763. package/types/ui/Link/Anchor.d.ts +20 -0
  764. package/types/ui/Link/index.d.ts +4 -7
  765. package/types/ui/Load/Edit_Client.d.ts +1 -1
  766. package/types/ui/Load/Page.d.ts +3 -5
  767. package/types/ui/Load/Stream.d.ts +0 -12
  768. package/types/ui/Load/Units.d.ts +1 -1
  769. package/types/ui/Load/View.d.ts +2 -7
  770. package/types/ui/Loading/ProgressBar.d.ts +0 -4
  771. package/types/ui/Loading/Skeleton.d.ts +2 -0
  772. package/types/ui/Loading/Spin.d.ts +12 -2
  773. package/types/ui/Loading/index.d.ts +3 -8
  774. package/types/ui/Loading/index_.d.ts +3 -10
  775. package/types/ui/Menu.d.ts +0 -5
  776. package/types/ui/Modal.d.ts +0 -17
  777. package/types/ui/Model/AdminPanel.d.ts +1 -4
  778. package/types/ui/Model/DraftBar.d.ts +2 -7
  779. package/types/ui/Model/EditModal.d.ts +7 -22
  780. package/types/ui/Model/LoadStore.d.ts +18 -0
  781. package/types/ui/Model/Remove.d.ts +0 -2
  782. package/types/ui/Model/SureToRemove.d.ts +0 -3
  783. package/types/ui/Model/ViewEditModal.d.ts +0 -2
  784. package/types/ui/Model/draftScope.d.ts +0 -7
  785. package/types/ui/Model/index.d.ts +2 -2
  786. package/types/ui/Model/index_.d.ts +2 -2
  787. package/types/ui/Pagination.d.ts +4 -12
  788. package/types/ui/Popconfirm.d.ts +3 -17
  789. package/types/ui/Radio.d.ts +0 -4
  790. package/types/ui/RecentTime.d.ts +5 -9
  791. package/types/ui/Reference/Panel.d.ts +44 -6
  792. package/types/ui/Reference/Segmented.d.ts +0 -3
  793. package/types/ui/Reference/{style.d.ts → docUi.d.ts} +6 -2
  794. package/types/ui/Reference/index.d.ts +3 -7
  795. package/types/ui/Refresh.d.ts +1 -1
  796. package/types/ui/ScreenNavigator.d.ts +2 -2
  797. package/types/ui/Select.d.ts +4 -19
  798. package/types/ui/Signal/Endpoint.d.ts +43 -0
  799. package/types/ui/Signal/WebSocket.d.ts +23 -0
  800. package/types/ui/Signal/endpointEntries.d.ts +2 -4
  801. package/types/ui/Signal/index.d.ts +1 -3
  802. package/types/ui/Signal/style.d.ts +1 -2
  803. package/types/ui/Switch.d.ts +1 -5
  804. package/types/ui/System/CSR.d.ts +2 -2
  805. package/types/ui/System/Client.d.ts +2 -6
  806. package/types/ui/System/Common.d.ts +11 -22
  807. package/types/ui/System/Root.d.ts +1 -4
  808. package/types/ui/System/SSR.d.ts +2 -2
  809. package/types/ui/System/ThemeToggle.d.ts +1 -0
  810. package/types/ui/System/index.d.ts +1 -0
  811. package/types/ui/Tab/Provider.d.ts +24 -4
  812. package/types/ui/Tab/index.d.ts +3 -3
  813. package/types/ui/Table.d.ts +7 -23
  814. package/types/ui/Toast.d.ts +9 -16
  815. package/types/ui/ToggleSelect.d.ts +0 -5
  816. package/types/ui/Tooltip.d.ts +1 -2
  817. package/types/ui/UiOverride/{context.d.ts → UiOverride.d.ts} +24 -40
  818. package/types/ui/UiOverride/index.d.ts +2 -5
  819. package/types/ui/UiOverride/override.d.ts +2 -18
  820. package/types/ui/Unauthorized.d.ts +0 -6
  821. package/types/ui/agentAttrs.d.ts +4 -11
  822. package/types/ui/index.d.ts +9 -5
  823. package/types/ui/overlayLayer.d.ts +4 -24
  824. package/types/ui/overlayPosition.d.ts +0 -12
  825. package/types/ui/recipe/badgeRecipe.d.ts +2 -2
  826. package/types/ui/recipe/buttonRecipe.d.ts +2 -2
  827. package/types/ui/recipe/factory.d.ts +1 -21
  828. package/types/ui/recipe/index.d.ts +0 -14
  829. package/types/ui/recipe/inputRecipe.d.ts +3 -3
  830. package/types/ui/sliceNamesOf.d.ts +78 -0
  831. package/types/ui/triggerSlot.d.ts +2 -12
  832. package/types/vendor/use-agentic/AgentProgress.d.ts +12 -0
  833. package/types/vendor/use-agentic/AgentSession.d.ts +94 -2
  834. package/types/vendor/use-agentic/Compaction.d.ts +42 -5
  835. package/types/vendor/use-agentic/Reference.d.ts +56 -0
  836. package/types/vendor/use-agentic/ToolRunner.d.ts +31 -1
  837. package/types/vendor/use-agentic/Transcript.d.ts +4 -1
  838. package/types/vendor/use-agentic/index.d.ts +1 -0
  839. package/types/vendor/use-agentic/types.d.ts +109 -7
  840. package/types/webkit/RenderLayer.d.ts +11 -0
  841. package/types/webkit/index.d.ts +1 -2
  842. package/types/webkit/lazy.d.ts +3 -12
  843. package/types/webkit/{createRobotPage.d.ts → seoPages.d.ts} +4 -0
  844. package/types/webkit/useBodyScrollLock.d.ts +0 -1
  845. package/types/webkit/useCamera.d.ts +1 -1
  846. package/types/webkit/useContact.d.ts +1 -1
  847. package/types/webkit/useDebounce.d.ts +0 -1
  848. package/types/webkit/useEscapeKey.d.ts +1 -4
  849. package/types/webkit/useFetch.d.ts +1 -6
  850. package/types/webkit/useFrameRuntime.d.ts +1 -1
  851. package/types/webkit/useGeoLocation.d.ts +1 -1
  852. package/types/webkit/usePageTool.d.ts +2 -9
  853. package/types/webkit/usePurchase.d.ts +1 -4
  854. package/types/webkit/useScreenScope.d.ts +2 -13
  855. package/ui/Agent/Attach.tsx +5 -4
  856. package/ui/Agent/Bubble.tsx +51 -31
  857. package/ui/Agent/Chat.tsx +114 -102
  858. package/ui/Agent/ChatCommands.ts +5 -21
  859. package/ui/Agent/Composer.tsx +110 -28
  860. package/ui/Agent/Dock.tsx +176 -16
  861. package/ui/Agent/Guide.tsx +1 -5
  862. package/ui/Agent/History.tsx +1 -18
  863. package/ui/Agent/Launcher.tsx +2 -2
  864. package/ui/Agent/Markdown.tsx +40 -14
  865. package/ui/Agent/MentionNode.ts +54 -0
  866. package/ui/Agent/Menu.tsx +8 -5
  867. package/ui/Agent/Question.tsx +1 -6
  868. package/ui/Agent/Queued.tsx +3 -6
  869. package/ui/Agent/Refer.tsx +40 -0
  870. package/ui/Agent/RichInput.tsx +146 -0
  871. package/ui/Agent/Skip.tsx +3 -15
  872. package/ui/Agent/Steps.tsx +33 -0
  873. package/ui/Agent/ToolCard.tsx +32 -0
  874. package/ui/Agent/Zone.tsx +15 -31
  875. package/ui/Agent/agentSessionOf.ts +115 -15
  876. package/ui/Agent/attachment.ts +5 -42
  877. package/ui/Agent/fetchRunner.ts +3 -15
  878. package/ui/Agent/index.ts +1 -6
  879. package/ui/Agent/mentionDraft.ts +91 -0
  880. package/ui/Agent/tokenCount.ts +1 -5
  881. package/ui/Agent/useChatAttachments.ts +2 -9
  882. package/ui/Agent/useChatQueue.ts +12 -14
  883. package/ui/Agent/useChatReferences.ts +51 -0
  884. package/ui/Agent/useChatVoice.ts +2 -23
  885. package/ui/Agent/useDraftRecall.ts +0 -9
  886. package/ui/Agent/useKeyboardInset.ts +0 -7
  887. package/ui/Agent/useReferenceMenu.ts +93 -0
  888. package/ui/Agent/useSlashMenu.ts +0 -3
  889. package/ui/Agent/voice.ts +8 -43
  890. package/ui/Badge.tsx +0 -2
  891. package/ui/BottomSheet.tsx +2 -5
  892. package/ui/Button.tsx +9 -45
  893. package/ui/ClientSide.tsx +0 -2
  894. package/ui/Clipboard.tsx +0 -1
  895. package/ui/Constant/Doc.tsx +274 -265
  896. package/ui/Constant/Graph.tsx +11 -3
  897. package/ui/Constant/schemaGraph.ts +0 -9
  898. package/ui/Copy.tsx +2 -3
  899. package/ui/CsrImage.tsx +9 -9
  900. package/ui/Data/CardList.tsx +2 -17
  901. package/ui/Data/Dashboard.tsx +2 -5
  902. package/ui/Data/Item.tsx +2 -3
  903. package/ui/Data/ListContainer.tsx +15 -61
  904. package/ui/Data/Pagination.tsx +3 -22
  905. package/ui/Data/QueryMaker.tsx +1 -8
  906. package/ui/Data/RefPicker.tsx +1 -8
  907. package/ui/Data/TableList.tsx +2 -15
  908. package/ui/DatePicker.tsx +1 -12
  909. package/ui/Dialog/LegacyModal.tsx +3 -7
  910. package/ui/Dialog/Modal.tsx +3 -4
  911. package/ui/Dialog/Provider.tsx +85 -7
  912. package/ui/Dialog/index.tsx +1 -5
  913. package/ui/DraggableList.tsx +1 -4
  914. package/ui/Dropdown.tsx +4 -17
  915. package/ui/Empty.tsx +4 -12
  916. package/ui/Field/Choice.tsx +1 -1
  917. package/ui/Field/Collection.tsx +7 -29
  918. package/ui/Field/DateField.tsx +2 -7
  919. package/ui/Field/Label.tsx +0 -1
  920. package/ui/Field/NumberField.tsx +0 -1
  921. package/ui/Field/Relation.tsx +79 -199
  922. package/ui/Field/Text.tsx +25 -86
  923. package/ui/Field/index.tsx +0 -9
  924. package/ui/Field/lightRefCache.ts +61 -0
  925. package/ui/Field/useRelationOptions.ts +97 -0
  926. package/ui/Image.tsx +35 -65
  927. package/ui/InfiniteScroll.tsx +3 -21
  928. package/ui/Input.tsx +82 -174
  929. package/ui/Layout/Role.tsx +42 -0
  930. package/ui/Layout/Sider.tsx +82 -1
  931. package/ui/Layout/TopInset.tsx +23 -1
  932. package/ui/Layout/index.ts +3 -9
  933. package/ui/LegacyModal.tsx +1 -12
  934. package/ui/Link/Action.tsx +29 -0
  935. package/ui/Link/Anchor.tsx +118 -0
  936. package/ui/Link/index.tsx +7 -8
  937. package/ui/Load/Edit_Client.tsx +2 -37
  938. package/ui/Load/Page.tsx +3 -6
  939. package/ui/Load/Pagination.tsx +4 -19
  940. package/ui/Load/Stream.tsx +0 -12
  941. package/ui/Load/Units.tsx +13 -86
  942. package/ui/Load/View.tsx +4 -21
  943. package/ui/Loading/ProgressBar.tsx +0 -4
  944. package/ui/Loading/Skeleton.tsx +14 -0
  945. package/ui/Loading/Spin.tsx +34 -5
  946. package/ui/Loading/index.ts +0 -5
  947. package/ui/Loading/index_.tsx +2 -12
  948. package/ui/Menu.tsx +3 -21
  949. package/ui/Modal.tsx +0 -17
  950. package/ui/Model/AdminPanel.tsx +2 -5
  951. package/ui/Model/DraftBar.tsx +3 -14
  952. package/ui/Model/EditModal.tsx +11 -48
  953. package/ui/Model/EditWrapper.tsx +2 -3
  954. package/ui/Model/LoadStore.tsx +18 -0
  955. package/ui/Model/NewWrapper_Client.tsx +1 -1
  956. package/ui/Model/Remove.tsx +4 -12
  957. package/ui/Model/RemoveWrapper.tsx +2 -3
  958. package/ui/Model/SureToRemove.tsx +4 -13
  959. package/ui/Model/ViewEditModal.tsx +0 -6
  960. package/ui/Model/ViewModal.tsx +1 -5
  961. package/ui/Model/ViewWrapper.tsx +1 -2
  962. package/ui/Model/draftScope.ts +0 -7
  963. package/ui/Model/index_.tsx +2 -22
  964. package/ui/Pagination.tsx +4 -12
  965. package/ui/Popconfirm.tsx +3 -18
  966. package/ui/Portal.tsx +2 -3
  967. package/ui/Radio.tsx +1 -5
  968. package/ui/RecentTime.tsx +19 -31
  969. package/ui/Reference/Panel.tsx +102 -6
  970. package/ui/Reference/Segmented.tsx +5 -11
  971. package/ui/Reference/{style.ts → docUi.ts} +10 -2
  972. package/ui/Reference/index.ts +3 -7
  973. package/ui/Refresh.tsx +79 -13
  974. package/ui/ScreenNavigator.tsx +8 -13
  975. package/ui/Select.tsx +29 -37
  976. package/ui/Signal/Endpoint.tsx +154 -0
  977. package/ui/Signal/Listener.tsx +1 -4
  978. package/ui/Signal/Object.tsx +67 -73
  979. package/ui/Signal/RestApi.tsx +30 -76
  980. package/ui/Signal/WebSocket.tsx +253 -2
  981. package/ui/Signal/endpointEntries.ts +3 -5
  982. package/ui/Signal/index.ts +1 -3
  983. package/ui/Signal/style.ts +1 -2
  984. package/ui/Switch.tsx +1 -5
  985. package/ui/System/CSR.tsx +29 -109
  986. package/ui/System/Client.tsx +15 -19
  987. package/ui/System/Common.tsx +31 -22
  988. package/ui/System/Messages.tsx +2 -2
  989. package/ui/System/Reconnect.tsx +1 -6
  990. package/ui/System/Root.tsx +1 -4
  991. package/ui/System/SSR.tsx +10 -16
  992. package/ui/System/ThemeToggle.tsx +15 -0
  993. package/ui/System/index.tsx +2 -2
  994. package/ui/Tab/Provider.tsx +115 -7
  995. package/ui/Tab/index.tsx +1 -4
  996. package/ui/Table.tsx +7 -23
  997. package/ui/Toast.tsx +9 -16
  998. package/ui/ToggleSelect.tsx +10 -24
  999. package/ui/Tooltip.tsx +2 -8
  1000. package/ui/UiOverride/{context.ts → UiOverride.tsx} +54 -42
  1001. package/ui/UiOverride/index.ts +9 -6
  1002. package/ui/UiOverride/override.ts +2 -18
  1003. package/ui/Unauthorized.tsx +1 -8
  1004. package/ui/agentAttrs.ts +9 -12
  1005. package/ui/index.ts +20 -5
  1006. package/ui/overlayLayer.ts +4 -25
  1007. package/ui/overlayPosition.ts +2 -14
  1008. package/ui/recipe/badgeRecipe.ts +1 -1
  1009. package/ui/recipe/buttonRecipe.ts +4 -4
  1010. package/ui/recipe/factory.ts +1 -22
  1011. package/ui/recipe/index.ts +1 -14
  1012. package/ui/recipe/inputRecipe.ts +2 -2
  1013. package/ui/sliceNamesOf.ts +26 -0
  1014. package/ui/styles.css +195 -1
  1015. package/ui/triggerSlot.tsx +2 -12
  1016. package/vendor/use-agentic/AgentProgress.ts +13 -1
  1017. package/vendor/use-agentic/AgentSession.ts +313 -29
  1018. package/vendor/use-agentic/AgenticSurface.ts +2 -0
  1019. package/vendor/use-agentic/Compaction.ts +91 -9
  1020. package/vendor/use-agentic/Reference.ts +99 -0
  1021. package/vendor/use-agentic/ToolRunner.ts +77 -2
  1022. package/vendor/use-agentic/Transcript.ts +15 -4
  1023. package/vendor/use-agentic/WIRE.md +16 -2
  1024. package/vendor/use-agentic/httpRunner.ts +19 -4
  1025. package/vendor/use-agentic/index.ts +1 -1
  1026. package/vendor/use-agentic/types.ts +121 -10
  1027. package/webkit/RenderLayer.tsx +45 -0
  1028. package/webkit/bootCsr.tsx +4 -57
  1029. package/webkit/index.ts +1 -2
  1030. package/webkit/lazy.tsx +3 -13
  1031. package/webkit/{createRobotPage.ts → seoPages.ts} +5 -0
  1032. package/webkit/useBodyScrollLock.tsx +0 -6
  1033. package/webkit/useCamera.tsx +10 -28
  1034. package/webkit/useCodepush.tsx +8 -31
  1035. package/webkit/useContact.tsx +1 -8
  1036. package/webkit/useCsrValues.ts +203 -428
  1037. package/webkit/useDebounce.ts +0 -3
  1038. package/webkit/useEscapeKey.tsx +1 -12
  1039. package/webkit/useFetch.ts +7 -13
  1040. package/webkit/useFrameRuntime.ts +5 -43
  1041. package/webkit/useGeoLocation.tsx +1 -1
  1042. package/webkit/useLocation.ts +5 -8
  1043. package/webkit/usePageTool.tsx +2 -9
  1044. package/webkit/usePurchase.tsx +17 -33
  1045. package/webkit/useScreenScope.tsx +2 -13
  1046. package/client/fetch.ts +0 -1
  1047. package/client/frameDebug.ts +0 -29
  1048. package/common/deepObjectify.ts +0 -42
  1049. package/common/dynamicRecord.ts +0 -12
  1050. package/common/formatPhone.ts +0 -7
  1051. package/common/getAllPropertyDescriptors.ts +0 -13
  1052. package/common/lowerlize.ts +0 -4
  1053. package/common/mergeVersion.ts +0 -10
  1054. package/common/pathGet.ts +0 -13
  1055. package/common/pathGetLoose.ts +0 -31
  1056. package/common/pathSet.ts +0 -28
  1057. package/common/plainFieldsOf.ts +0 -13
  1058. package/common/randomPicks.ts +0 -12
  1059. package/common/websocketAuth.ts +0 -24
  1060. package/constant/deserialize.ts +0 -98
  1061. package/dictionary/agentTurn.dictionary.ts +0 -33
  1062. package/document/schema.ts +0 -24
  1063. package/fetch/fetchType/clientSignal.type.ts +0 -22
  1064. package/local/apps/akan/akan-local.db +0 -0
  1065. package/local/apps/akan/akan-local.db-shm +0 -0
  1066. package/local/apps/akan/akan-local.db-wal +0 -0
  1067. package/local/apps/akan/akan-local_solid.db +0 -0
  1068. package/local/apps/akan/akan-local_solid.db-shm +0 -0
  1069. package/local/apps/akan/akan-local_solid.db-wal +0 -0
  1070. package/local/apps/serverLifecycle/serverLifecycle-local.db +0 -0
  1071. package/local/apps/serverLifecycle/serverLifecycle-local.db-shm +0 -0
  1072. package/local/apps/serverLifecycle/serverLifecycle-local.db-wal +0 -0
  1073. package/local/apps/serverLifecycle/serverLifecycle-local_solid.db +0 -0
  1074. package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-shm +0 -0
  1075. package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-wal +0 -0
  1076. package/server/artifact/manifestTypes.ts +0 -19
  1077. package/server/assetEncoding.ts +0 -27
  1078. package/server/consoleEvaluator.ts +0 -51
  1079. package/server/di/index.ts +0 -4
  1080. package/server/di/resolveAdaptorHierarchy.ts +0 -91
  1081. package/server/di/resolveServiceHierarchy.ts +0 -47
  1082. package/server/hmr/changeBatch.ts +0 -14
  1083. package/server/hmr/index.ts +0 -4
  1084. package/server/metadata.tsx +0 -198
  1085. package/server/proxy/akanResponse.ts +0 -16
  1086. package/server/proxy/bunRequestFields.ts +0 -12
  1087. package/server/rscPartialCommit.ts +0 -3
  1088. package/server/rscPatchSafety.ts +0 -57
  1089. package/server/rscWorkerReplay.ts +0 -49
  1090. package/server/subRouteIndexDocument.tsx +0 -61
  1091. package/service/predefinedAdaptor/deepseekLlm.ts +0 -82
  1092. package/service/predefinedAdaptor/sqlDescriptor.ts +0 -25
  1093. package/store/agent/storeSurface.ts +0 -28
  1094. package/store/agent/types.ts +0 -16
  1095. package/store/agentic/useFileFieldTool.ts +0 -221
  1096. package/store/stateInfo.ts +0 -66
  1097. package/test/playwright.config.base.ts +0 -48
  1098. package/test/playwright.pageAgent.ts +0 -41
  1099. package/test/sample.ts +0 -19
  1100. package/types/client/fetch.d.ts +0 -1
  1101. package/types/client/frameDebug.d.ts +0 -3
  1102. package/types/common/deepObjectify.d.ts +0 -6
  1103. package/types/common/dynamicRecord.d.ts +0 -14
  1104. package/types/common/formatPhone.d.ts +0 -2
  1105. package/types/common/getAllPropertyDescriptors.d.ts +0 -5
  1106. package/types/common/isPhoneNumber.d.ts +0 -2
  1107. package/types/common/lowerlize.d.ts +0 -2
  1108. package/types/common/mergeVersion.d.ts +0 -10
  1109. package/types/common/pathGet.d.ts +0 -1
  1110. package/types/common/pathGetLoose.d.ts +0 -8
  1111. package/types/common/pathSet.d.ts +0 -3
  1112. package/types/common/plainFieldsOf.d.ts +0 -6
  1113. package/types/common/randomPicks.d.ts +0 -1
  1114. package/types/common/splitVersion.d.ts +0 -11
  1115. package/types/common/websocketAuth.d.ts +0 -19
  1116. package/types/common/websocketBinaryFrame.d.ts +0 -17
  1117. package/types/constant/deserialize.d.ts +0 -10
  1118. package/types/dictionary/agentTurn.dictionary.d.ts +0 -1
  1119. package/types/document/schema.d.ts +0 -5
  1120. package/types/fetch/fetchType/clientSignal.type.d.ts +0 -16
  1121. package/types/server/artifact/manifestTypes.d.ts +0 -16
  1122. package/types/server/assetEncoding.d.ts +0 -7
  1123. package/types/server/consoleEvaluator.d.ts +0 -2
  1124. package/types/server/di/index.d.ts +0 -4
  1125. package/types/server/di/resolveAdaptorHierarchy.d.ts +0 -21
  1126. package/types/server/di/resolveServiceHierarchy.d.ts +0 -13
  1127. package/types/server/di.d.ts +0 -1
  1128. package/types/server/hmr/changeBatch.d.ts +0 -13
  1129. package/types/server/hmr/index.d.ts +0 -4
  1130. package/types/server/hmr.d.ts +0 -1
  1131. package/types/server/metadata.d.ts +0 -22
  1132. package/types/server/proxy/akanResponse.d.ts +0 -7
  1133. package/types/server/proxy/bunRequestFields.d.ts +0 -1
  1134. package/types/server/rscPartialCommit.d.ts +0 -1
  1135. package/types/server/rscPatchSafety.d.ts +0 -8
  1136. package/types/server/rscWorkerReplay.d.ts +0 -32
  1137. package/types/server/subRouteIndexDocument.d.ts +0 -8
  1138. package/types/service/predefinedAdaptor/deepseekLlm.d.ts +0 -19
  1139. package/types/service/predefinedAdaptor/sqlDescriptor.d.ts +0 -5
  1140. package/types/store/agent/storeSurface.d.ts +0 -14
  1141. package/types/store/agent/types.d.ts +0 -15
  1142. package/types/store/agentic/useFileFieldTool.d.ts +0 -41
  1143. package/types/store/stateInfo.d.ts +0 -23
  1144. package/types/test/playwright.config.base.d.ts +0 -9
  1145. package/types/test/playwright.pageAgent.d.ts +0 -12
  1146. package/types/test/sample.d.ts +0 -15
  1147. package/types/ui/Agent/Context.d.ts +0 -13
  1148. package/types/ui/Agent/Mic.d.ts +0 -8
  1149. package/types/ui/Agent/Section.d.ts +0 -10
  1150. package/types/ui/Agent/StateKey.d.ts +0 -16
  1151. package/types/ui/Agent/Tool.d.ts +0 -15
  1152. package/types/ui/Agent/Transcript.d.ts +0 -13
  1153. package/types/ui/Agent/markdownSpans.d.ts +0 -2
  1154. package/types/ui/Agent/sessionHistory.d.ts +0 -14
  1155. package/types/ui/Agent/sessionView.d.ts +0 -15
  1156. package/types/ui/Dialog/Action.d.ts +0 -5
  1157. package/types/ui/Dialog/Close.d.ts +0 -6
  1158. package/types/ui/Dialog/Content.d.ts +0 -6
  1159. package/types/ui/Dialog/Title.d.ts +0 -5
  1160. package/types/ui/Dialog/Trigger.d.ts +0 -6
  1161. package/types/ui/Dialog/context.d.ts +0 -18
  1162. package/types/ui/Layout/LeftSider.d.ts +0 -11
  1163. package/types/ui/Layout/RightSider.d.ts +0 -12
  1164. package/types/ui/Layout/Template.d.ts +0 -7
  1165. package/types/ui/Layout/TopLeftAction.d.ts +0 -6
  1166. package/types/ui/Layout/Unit.d.ts +0 -9
  1167. package/types/ui/Layout/View.d.ts +0 -8
  1168. package/types/ui/Layout/Zone.d.ts +0 -6
  1169. package/types/ui/Link/Back.d.ts +0 -7
  1170. package/types/ui/Link/Close.d.ts +0 -7
  1171. package/types/ui/Link/CsrLink.d.ts +0 -2
  1172. package/types/ui/Link/Lang.d.ts +0 -8
  1173. package/types/ui/Link/SsrLink.d.ts +0 -2
  1174. package/types/ui/Link/types.d.ts +0 -50
  1175. package/types/ui/Loading/Area.d.ts +0 -9
  1176. package/types/ui/Loading/Button.d.ts +0 -7
  1177. package/types/ui/Loading/Input.d.ts +0 -7
  1178. package/types/ui/Model/LoadInit.d.ts +0 -10
  1179. package/types/ui/Model/LoadView.d.ts +0 -10
  1180. package/types/ui/Reference/Collapse.d.ts +0 -11
  1181. package/types/ui/Reference/Summary.d.ts +0 -13
  1182. package/types/ui/Reference/Toolbar.d.ts +0 -21
  1183. package/types/ui/Reference/dictText.d.ts +0 -6
  1184. package/types/ui/Signal/Message.d.ts +0 -23
  1185. package/types/ui/Signal/PubSub.d.ts +0 -24
  1186. package/types/ui/Signal/Request.d.ts +0 -8
  1187. package/types/ui/System/DevModeToggle.d.ts +0 -1
  1188. package/types/ui/System/Gtag.d.ts +0 -4
  1189. package/types/ui/System/frameCssVars.d.ts +0 -5
  1190. package/types/ui/Tab/Menu.d.ts +0 -12
  1191. package/types/ui/Tab/Menus.d.ts +0 -6
  1192. package/types/ui/Tab/Panel.d.ts +0 -8
  1193. package/types/ui/Tab/context.d.ts +0 -11
  1194. package/types/ui/UiOverride/Provider.d.ts +0 -15
  1195. package/types/ui/UiOverride/createOverridable.d.ts +0 -9
  1196. package/types/ui/UiOverride/useUiOverride.d.ts +0 -7
  1197. package/types/ui/UiOverride/useUiRecipe.d.ts +0 -8
  1198. package/types/webkit/createSitemapPage.d.ts +0 -4
  1199. package/ui/Agent/Context.tsx +0 -49
  1200. package/ui/Agent/Mic.tsx +0 -27
  1201. package/ui/Agent/Section.tsx +0 -24
  1202. package/ui/Agent/StateKey.tsx +0 -46
  1203. package/ui/Agent/Tool.tsx +0 -59
  1204. package/ui/Agent/Transcript.tsx +0 -33
  1205. package/ui/Agent/markdownSpans.tsx +0 -49
  1206. package/ui/Agent/sessionHistory.ts +0 -62
  1207. package/ui/Agent/sessionView.ts +0 -38
  1208. package/ui/Dialog/Action.tsx +0 -15
  1209. package/ui/Dialog/Close.tsx +0 -18
  1210. package/ui/Dialog/Content.tsx +0 -11
  1211. package/ui/Dialog/Title.tsx +0 -15
  1212. package/ui/Dialog/Trigger.tsx +0 -18
  1213. package/ui/Dialog/context.ts +0 -32
  1214. package/ui/Layout/LeftSider.tsx +0 -43
  1215. package/ui/Layout/RightSider.tsx +0 -47
  1216. package/ui/Layout/Template.tsx +0 -11
  1217. package/ui/Layout/TopLeftAction.tsx +0 -28
  1218. package/ui/Layout/Unit.tsx +0 -19
  1219. package/ui/Layout/View.tsx +0 -12
  1220. package/ui/Layout/Zone.tsx +0 -10
  1221. package/ui/Link/Back.tsx +0 -15
  1222. package/ui/Link/Close.tsx +0 -20
  1223. package/ui/Link/CsrLink.tsx +0 -46
  1224. package/ui/Link/Lang.tsx +0 -16
  1225. package/ui/Link/SsrLink.tsx +0 -72
  1226. package/ui/Link/types.ts +0 -55
  1227. package/ui/Loading/Area.tsx +0 -27
  1228. package/ui/Loading/Button.tsx +0 -15
  1229. package/ui/Loading/Input.tsx +0 -15
  1230. package/ui/Model/LoadInit.tsx +0 -11
  1231. package/ui/Model/LoadView.tsx +0 -11
  1232. package/ui/Reference/Collapse.tsx +0 -26
  1233. package/ui/Reference/Summary.tsx +0 -25
  1234. package/ui/Reference/Toolbar.tsx +0 -44
  1235. package/ui/Reference/dictText.ts +0 -9
  1236. package/ui/Signal/Message.tsx +0 -215
  1237. package/ui/Signal/PubSub.tsx +0 -201
  1238. package/ui/Signal/Request.tsx +0 -11
  1239. package/ui/System/DevModeToggle.tsx +0 -19
  1240. package/ui/System/Gtag.tsx +0 -69
  1241. package/ui/System/frameCssVars.ts +0 -25
  1242. package/ui/Tab/Menu.tsx +0 -70
  1243. package/ui/Tab/Menus.tsx +0 -13
  1244. package/ui/Tab/Panel.tsx +0 -25
  1245. package/ui/Tab/context.ts +0 -20
  1246. package/ui/UiOverride/Provider.tsx +0 -26
  1247. package/ui/UiOverride/createOverridable.tsx +0 -25
  1248. package/ui/UiOverride/useUiOverride.ts +0 -15
  1249. package/ui/UiOverride/useUiRecipe.ts +0 -15
  1250. package/webkit/createSitemapPage.ts +0 -4
package/store/action.ts CHANGED
@@ -37,13 +37,15 @@ import type {
37
37
  SlceDbSort,
38
38
  SliceCls,
39
39
  } from "akanjs/signal";
40
+ import { expandQueryArgs, normalizeQueryArgs } from "../fetch/client/sliceQueryArgs";
40
41
  import { tagAction } from "./actionTag";
42
+ import { databaseStateNames } from "./databaseStateNames";
41
43
  import { DraftStore } from "./draftStore";
42
44
  import { formSetterNames } from "./formSetterNames";
43
45
  import { type LiveSortableRow, livePlacementIndex } from "./liveInsert";
44
46
  import { SliceRequest } from "./SliceRequest";
45
- import type { SliceActionKey } from "./sliceRole";
46
- import type { DraftState, SliceStateKey } from "./state";
47
+ import { sliceKeysOf } from "./sliceKeys";
48
+ import type { DraftState } from "./state";
47
49
  import type { SetGet, StoreSliceArgs, StoreSliceMap, StoreSliceSuffixCap } from "./types";
48
50
 
49
51
  type _SliceMap<S extends SliceCls> = StoreSliceMap<S>;
@@ -62,20 +64,8 @@ type SliceRefreshForm<S extends SliceCls, Suffix extends keyof _SliceMap<S>> = S
62
64
  };
63
65
 
64
66
  const UPLOAD_POLL_INTERVAL_MS = 3000;
65
- /** Two minutes of polling. A file still `uploading` after that is a server that will not finish it. */
66
67
  const UPLOAD_POLL_ATTEMPTS = 40;
67
68
 
68
- const isNullableSliceArg = (arg: SerializedSlice["args"][number]) => arg.nullable ?? arg.type === "search";
69
-
70
- const normalizeQueryArgs = (queryArgs: unknown[], sliceArgs: SerializedSlice["args"]) => {
71
- let length = Math.min(queryArgs.length, sliceArgs.length);
72
- while (length > 0 && isNullableSliceArg(sliceArgs[length - 1]) && queryArgs[length - 1] == null) length--;
73
- return queryArgs.slice(0, length);
74
- };
75
-
76
- const expandQueryArgs = (queryArgs: unknown[], sliceArgs: SerializedSlice["args"]) =>
77
- sliceArgs.map((_, idx) => queryArgs[idx]);
78
-
79
69
  export interface CreateOption<Full extends { id: string }> {
80
70
  path?: string;
81
71
  modal?: string;
@@ -87,16 +77,12 @@ export interface NewOption {
87
77
  modal?: string;
88
78
  setDefault?: boolean;
89
79
  sliceName?: string;
90
- /**
91
- * The draft scope this form belongs to, already built by the shell that holds the raw seed. Absent means no
92
- * draft: `new<Model>` merges its argument into `default<Model>`, whose date defaults would rotate the key on
93
- * every open, so the scope cannot be derived from what arrives here.
94
- */
80
+ /** Built by the shell from the raw seed (merged date defaults would rotate the key). Absent means no draft. */
95
81
  draftScope?: string;
96
82
  }
97
83
  export interface EditOption {
98
84
  modal?: string | null;
99
- /** As `NewOption.draftScope`. For an edit the shell builds it from the record id. */
85
+ /** Built by the shell from the record id. Absent means no draft. */
100
86
  draftScope?: string;
101
87
  }
102
88
  type PartialOrNull<O> = { [K in keyof O]?: O[K] | null };
@@ -322,8 +308,6 @@ export const makeFormSetter = (refName: string, fetch: FetchProxy<any>) => {
322
308
  const fileUploadRefName = resolveFileUploadCapability(fetch.serializedSignal)?.refName;
323
309
 
324
310
  const names = {
325
- model: fieldName,
326
- Model: className,
327
311
  modelForm: `${fieldName}Form`,
328
312
  writeOnModel: `writeOn${className}`,
329
313
  addModelFiles: `add${className}Files`,
@@ -348,7 +332,7 @@ export const makeFormSetter = (refName: string, fetch: FetchProxy<any>) => {
348
332
  : (value as object);
349
333
  (state[names.modelForm] as { [key: string]: any })[namesOfField.field] = setValue;
350
334
  });
351
-
335
+
352
336
  const postSet = (this as unknown as { [key: string]: ((value: unknown) => unknown) | undefined })[
353
337
  namesOfField.postSetField
354
338
  ];
@@ -434,7 +418,6 @@ export const makeFormSetter = (refName: string, fetch: FetchProxy<any>) => {
434
418
  let attemptsLeft = UPLOAD_POLL_ATTEMPTS;
435
419
  const intervalKey = setInterval(() => {
436
420
  void (async () => {
437
-
438
421
  attemptsLeft -= 1;
439
422
  try {
440
423
  const currentFile = await (
@@ -466,7 +449,7 @@ export const makeFormSetter = (refName: string, fetch: FetchProxy<any>) => {
466
449
  }
467
450
  : {}),
468
451
  };
469
-
452
+
470
453
  tagAction(singleFieldSetAction[namesOfField.setFieldOnModel] as (...args: never[]) => unknown, {
471
454
  action: namesOfField.setFieldOnModel,
472
455
  state: `${names.modelForm}.${namesOfField.field}`,
@@ -487,27 +470,19 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
487
470
  const [fieldName, className] = [refName, capitalize(refName)];
488
471
  const cnst = ConstantRegistry.getDatabase(refName);
489
472
  const modelRef = cnst.full;
490
-
473
+
491
474
  let openFormBase: object | null = null;
492
475
  const slices = Object.entries(slice).map(([suffix, serializedSlice]) => ({
493
476
  sliceName: `${refName}${capitalize(suffix)}`,
494
- suffix,
477
+ keys: sliceKeysOf(refName, suffix),
495
478
  slice: serializedSlice,
496
479
  }));
497
480
  const names = {
498
- model: fieldName,
499
- _model: `_${fieldName}`,
481
+ ...databaseStateNames(refName),
500
482
  Model: className,
501
- modelOperation: `${fieldName}Operation`,
502
- defaultModel: `default${className}`,
503
483
  modelInsight: `${fieldName}Insight`,
504
- modelForm: `${fieldName}Form`,
505
- modelSubmit: `${fieldName}Submit`,
506
- modelLoading: `${fieldName}Loading`,
507
- modelFormLoading: `${fieldName}FormLoading`,
508
484
  modelList: `${fieldName}List`,
509
485
  modelListLoading: `${fieldName}ListLoading`,
510
- modelSelection: `${fieldName}Selection`,
511
486
  createModelInForm: `create${className}InForm`,
512
487
  updateModelInForm: `update${className}InForm`,
513
488
  createModel: `create${className}`,
@@ -521,49 +496,24 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
521
496
  viewModel: `view${className}`,
522
497
  setModel: `set${className}`,
523
498
  resetModel: `reset${className}`,
524
- modelViewAt: `${fieldName}ViewAt`,
525
- modelModal: `${fieldName}Modal`,
526
- modelDraft: `${fieldName}FormDraft`,
527
499
  loadModelDraft: `load${className}FormDraft`,
528
500
  restoreModelDraft: `restore${className}FormDraft`,
529
501
  discardModelDraft: `discard${className}FormDraft`,
530
- initModel: `init${className}`,
531
- modelInitList: `${fieldName}InitList`,
532
- modelInitAt: `${fieldName}InitAt`,
533
- modelStaleAt: `${fieldName}StaleAt`,
534
- refreshModel: `refresh${className}`,
535
- selectModel: `select${className}`,
536
- setPageOfModel: `setPageOf${className}`,
537
- loadMoreOfModel: `loadMoreOf${className}`,
538
- setLimitOfModel: `setLimitOf${className}`,
539
- setQueryArgsOfModel: `setQueryArgsOf${className}`,
540
- setSortOfModel: `setSortOf${className}`,
541
- applyLiveModel: `applyLive${className}`,
542
- watchLiveModel: `watchLive${className}`,
543
- lastPageOfModel: `lastPageOf${className}`,
544
- pageOfModel: `pageOf${className}`,
545
- limitOfModel: `limitOf${className}`,
546
- hasMoreOfModel: `hasMoreOf${className}`,
547
- isCumulativeOfModel: `isCumulativeOf${className}`,
548
- queryArgsOfModel: `queryArgsOf${className}`,
549
- sortOfModel: `sortOf${className}`,
550
502
  };
551
-
503
+ const defaultKeyOf = (sliceName: string) => capitalize(sliceName).replace(names.Model, names.defaultModel);
504
+
552
505
  const staleAtOfSlices = () => {
553
506
  const staleAt = new Date();
554
- return Object.fromEntries(
555
- slices.map(({ sliceName }) => [sliceName.replace(names.model, names.modelStaleAt), staleAt]),
556
- );
507
+ return Object.fromEntries(slices.map(({ keys }) => [keys.state.modelStaleAt, staleAt]));
557
508
  };
558
509
  const updatedAtOf = (model: Full): string | null => {
559
510
  const updatedAt = (model as unknown as { updatedAt?: { toISOString?: () => string } }).updatedAt;
560
511
  return typeof updatedAt?.toISOString === "function" ? updatedAt.toISOString() : null;
561
512
  };
562
- /** Turns draft saving on for this form and records what "unchanged" means for it. */
563
513
  function armDraft(this: SetGet, draftScope: string | undefined, form: object, baseUpdatedAt: string | null) {
564
514
  openFormBase = draftScope ? form : null;
565
515
  if (!draftScope) return null;
566
-
516
+
567
517
  void DraftStore.reconcileIdentity();
568
518
  return {
569
519
  key: DraftStore.keyOf(refName, draftScope),
@@ -573,12 +523,6 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
573
523
  appliedAt: null,
574
524
  };
575
525
  }
576
- /**
577
- * Reads the saved draft and either puts it in the form or leaves it pending.
578
- *
579
- * Runs after the form has already been set from its own source, so a failed read, a stale record, or a
580
- * conflicting one all leave the editor exactly as it would have been without drafts at all.
581
- */
582
526
  async function applyDraft(this: SetGet, { auto }: { auto: boolean }) {
583
527
  const draft = (this.get() as { [key: string]: any })[names.modelDraft] as DraftState | null;
584
528
  if (!draft) return;
@@ -587,7 +531,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
587
531
 
588
532
  const current = (this.get() as { [key: string]: any })[names.modelDraft] as DraftState | null;
589
533
  if (current?.key !== draft.key) return;
590
-
534
+
591
535
  const openedForm = (this.get() as { [key: string]: any })[names.modelForm] as object;
592
536
  if (DraftStore.contentHash(record.form) === DraftStore.contentHash(DraftStore.encodeForm(refName, openedForm))) {
593
537
  await DraftStore.remove(draft.key);
@@ -608,39 +552,38 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
608
552
  }
609
553
  this.set({ [names.modelDraft]: { ...draft, pending: { savedAt, form } } });
610
554
  }
611
- /** Disarms saving and forgets the record. Called by every path that ends the form for good. */
612
555
  const clearDraft = (draft: DraftState | null) => {
613
556
  openFormBase = null;
614
557
  if (draft) void DraftStore.remove(draft.key);
615
558
  return null;
616
559
  };
617
- /**
618
- * Puts a just-created row into the slice's own list.
619
- *
620
- * A live slice goes through the same action a remote event does, so the row lands where the sort puts it rather
621
- * than at the top — and when the server's own event for this create comes back, the list already holds the id,
622
- * which is what stops the count being raised twice. Every other slice keeps the head insertion it had.
623
- */
624
- function applyLocalCreate(
625
- this: SetGet,
626
- sliceName: string,
627
- model: Full,
628
- seen: { modelList: DataList<Light>; modelListLoading: boolean; modelInsight: Insight & BaseInsight },
629
- ) {
630
- if (slices.find((entry) => entry.sliceName === sliceName)?.slice.live) {
631
- const applyLive = (this as unknown as DynamicRecord)[
632
- capitalize(sliceName).replace(names.Model, names.applyLiveModel)
633
- ] as ((event: LiveEventPayload) => void) | undefined;
560
+
561
+ function applyLocalCreate(this: SetGet, sliceName: string, model: Full, seen: { [key: string]: any }) {
562
+ const target = slices.find((entry) => entry.sliceName === sliceName);
563
+ if (target?.slice.live) {
564
+ const applyLive = (this as unknown as DynamicRecord)[target.keys.action.applyLiveModel] as
565
+ | ((event: LiveEventPayload) => void)
566
+ | undefined;
634
567
  applyLive?.({ op: "enter", id: model.id, light: new cnst.light().set(model) as unknown as object });
635
568
  return;
636
569
  }
637
- if (seen.modelListLoading) return;
570
+ if (seen[sliceName.replace(names.model, names.modelListLoading)]) return;
571
+ const listKey = sliceName.replace(names.model, names.modelList);
572
+ const insightKey = sliceName.replace(names.model, names.modelInsight);
573
+ const modelInsight = seen[insightKey] as Insight & BaseInsight;
638
574
  this.set({
639
- [sliceName.replace(names.model, names.modelList)]: new DataList([model, ...seen.modelList]),
640
- [sliceName.replace(names.model, names.modelInsight)]: new cnst.insight().set({
641
- ...seen.modelInsight,
642
- count: seen.modelInsight.count + 1,
643
- }),
575
+ [listKey]: new DataList([model, ...(seen[listKey] as DataList<Light>)]),
576
+ [insightKey]: new cnst.insight().set({ ...modelInsight, count: modelInsight.count + 1 }),
577
+ });
578
+ }
579
+ function patchLists(this: SetGet, updatedModel: Full) {
580
+ const updatedLightModel = new cnst.light().set(updatedModel) as unknown as Light;
581
+ slices.forEach(({ keys: { state: namesOfSlice } }) => {
582
+ const currentState = this.get() as { [key: string]: any };
583
+ const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
584
+ const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
585
+ if (modelListLoading || !modelList.has(updatedModel.id)) return;
586
+ this.set({ [namesOfSlice.modelList]: new DataList(modelList).set(updatedLightModel) });
644
587
  });
645
588
  }
646
589
  const baseAction = {
@@ -648,19 +591,9 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
648
591
  this: SetGet,
649
592
  { path, modal, sliceName = names.model, onError, onSuccess }: CreateOption<Full> = {},
650
593
  ) {
651
- const SliceName = capitalize(sliceName);
652
- const namesOfSlice = {
653
- defaultModel: SliceName.replace(names.Model, names.defaultModel),
654
- modelList: sliceName.replace(names.model, names.modelList),
655
- modelListLoading: sliceName.replace(names.model, names.modelListLoading),
656
- modelInsight: sliceName.replace(names.model, names.modelInsight),
657
- };
658
594
  const currentState = this.get() as { [key: string]: any };
659
595
  const modelForm = currentState[names.modelForm] as Input;
660
- const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
661
- const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
662
- const modelInsight = currentState[namesOfSlice.modelInsight] as Insight & BaseInsight;
663
- const defaultModel = currentState[namesOfSlice.defaultModel] as Full;
596
+ const defaultModel = currentState[defaultKeyOf(sliceName)] as Full;
664
597
  const modelInput = (cnst.input.purify as (form: any) => DefaultOf<Input> | null)(modelForm);
665
598
 
666
599
  if (!modelInput) return;
@@ -676,21 +609,17 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
676
609
  ...staleAtOfSlices(),
677
610
  ...(typeof path === "string" && path ? { [path]: model } : {}),
678
611
  });
679
- applyLocalCreate.call(this, sliceName, model, { modelList, modelListLoading, modelInsight });
612
+ applyLocalCreate.call(this, sliceName, model, currentState);
680
613
  await onSuccess?.(model);
681
614
  },
682
615
  [names.updateModelInForm]: async function (
683
616
  this: SetGet,
684
617
  { path, modal, sliceName = names.model, onError, onSuccess }: CreateOption<Full> = {},
685
618
  ) {
686
- const SliceName = capitalize(sliceName);
687
- const namesOfSlice = {
688
- defaultModel: SliceName.replace(names.Model, names.defaultModel),
689
- };
690
619
  const currentState = this.get() as { [key: string]: any };
691
620
  const model = currentState[names.model] as Full | null;
692
621
  const modelForm = currentState[names.modelForm] as Input & { id: string };
693
- const defaultModel = currentState[namesOfSlice.defaultModel] as Full;
622
+ const defaultModel = currentState[defaultKeyOf(sliceName)] as Full;
694
623
  const modelInput = (cnst.input.purify as (form: any) => DefaultOf<Input> | null)(modelForm);
695
624
  if (!modelInput) return;
696
625
  if (model?.id === modelForm.id) this.set({ [names.modelLoading]: modelForm.id });
@@ -709,19 +638,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
709
638
  ...staleAtOfSlices(),
710
639
  ...(typeof path === "string" && path ? { [path]: updatedModel } : {}),
711
640
  });
712
- const updatedLightModel = new cnst.light().set(updatedModel) as unknown as Light;
713
- slices.forEach(({ sliceName }) => {
714
- const namesOfSlice = {
715
- modelList: sliceName.replace(names.model, names.modelList),
716
- modelListLoading: sliceName.replace(names.model, names.modelListLoading),
717
- };
718
- const currentState = this.get() as { [key: string]: any };
719
- const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
720
- const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
721
- if (modelListLoading || !modelList.has(updatedModel.id)) return;
722
- const newModelList = new DataList(modelList).set(updatedLightModel);
723
- this.set({ [namesOfSlice.modelList]: newModelList });
724
- });
641
+ patchLists.call(this, updatedModel);
725
642
  await onSuccess?.(updatedModel);
726
643
  },
727
644
  [names.createModel]: async function (
@@ -729,15 +646,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
729
646
  data: GetStateObject<Input>,
730
647
  { path, modal, sliceName = names.model, onError, onSuccess }: CreateOption<Full> = {},
731
648
  ) {
732
- const namesOfSlice = {
733
- modelList: sliceName.replace(names.model, names.modelList),
734
- modelListLoading: sliceName.replace(names.model, names.modelListLoading),
735
- modelInsight: sliceName.replace(names.model, names.modelInsight),
736
- };
737
649
  const currentState = this.get() as { [key: string]: any };
738
- const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
739
- const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
740
- const modelInsight = currentState[namesOfSlice.modelInsight] as Insight & BaseInsight;
741
650
  const modelInput = (cnst.input.purify as (data: any) => Input | null)(data);
742
651
  if (!modelInput) return;
743
652
  this.set({ [names.modelLoading]: true });
@@ -750,14 +659,14 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
750
659
  ...staleAtOfSlices(),
751
660
  ...(typeof path === "string" && path ? { [path]: model } : {}),
752
661
  });
753
- applyLocalCreate.call(this, sliceName, model, { modelList, modelListLoading, modelInsight });
662
+ applyLocalCreate.call(this, sliceName, model, currentState);
754
663
  await onSuccess?.(model);
755
664
  },
756
665
  [names.updateModel]: async function (
757
666
  this: SetGet,
758
667
  id: string,
759
668
  data: GetStateObject<Input>,
760
- { path, modal, sliceName = names.model, onError, onSuccess }: CreateOption<Full> = {},
669
+ { path, modal, onError, onSuccess }: CreateOption<Full> = {},
761
670
  ) {
762
671
  const currentState = this.get() as { [key: string]: any };
763
672
  const model = currentState[names.model] as Full | null;
@@ -775,19 +684,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
775
684
  ...staleAtOfSlices(),
776
685
  ...(typeof path === "string" && path ? { [path]: updatedModel } : {}),
777
686
  });
778
- const updatedLightModel = new cnst.light().set(updatedModel) as unknown as Light;
779
- slices.forEach(({ sliceName }) => {
780
- const namesOfSlice = {
781
- modelList: sliceName.replace(names.model, names.modelList),
782
- modelListLoading: sliceName.replace(names.model, names.modelListLoading),
783
- };
784
- const currentState = this.get() as { [key: string]: any };
785
- const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
786
- const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
787
- if (modelListLoading || !modelList.has(updatedModel.id)) return;
788
- const newModelList = new DataList(modelList).set(updatedLightModel);
789
- this.set({ [namesOfSlice.modelList]: newModelList });
790
- });
687
+ patchLists.call(this, updatedModel);
791
688
  await onSuccess?.(updatedModel);
792
689
  },
793
690
  [names.removeModel]: async function (this: SetGet, id: string, options?: FetchPolicy & { modal?: string | null }) {
@@ -797,13 +694,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
797
694
  fetchPolicyOptions,
798
695
  );
799
696
  const lightModel = new cnst.light().set(model) as unknown as Light;
800
- slices.forEach(({ sliceName }) => {
801
- const namesOfSlice = {
802
- modelList: sliceName.replace(names.model, names.modelList),
803
- modelListLoading: sliceName.replace(names.model, names.modelListLoading),
804
- modelSelection: sliceName.replace(names.model, names.modelSelection),
805
- modelInsight: sliceName.replace(names.model, names.modelInsight),
806
- };
697
+ slices.forEach(({ keys: { state: namesOfSlice } }) => {
807
698
  const currentState = this.get() as { [key: string]: any };
808
699
  const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
809
700
  const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
@@ -862,17 +753,14 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
862
753
  partial: Partial<Full> = {},
863
754
  { modal, setDefault, sliceName = names.model, draftScope }: NewOption = {},
864
755
  ) {
865
- const SliceName = capitalize(sliceName);
866
- const namesOfSlice = {
867
- defaultModel: SliceName.replace(names.Model, names.defaultModel),
868
- };
756
+ const defaultModelKey = defaultKeyOf(sliceName);
869
757
  const currentState = this.get() as { [key: string]: any };
870
- const defaultModel = currentState[namesOfSlice.defaultModel] as Full;
758
+ const defaultModel = currentState[defaultModelKey] as Full;
871
759
  const merged = { ...plainFieldsOf(defaultModel), ...partial };
872
760
  const modelForm = immerify(modelRef, merged);
873
761
  this.set({
874
762
  [names.modelForm]: modelForm,
875
- [namesOfSlice.defaultModel]: setDefault ? immerify(modelRef, merged) : defaultModel,
763
+ [defaultModelKey]: setDefault ? immerify(modelRef, merged) : defaultModel,
876
764
  [names.model]: null,
877
765
  [names.modelModal]: modal ?? "edit",
878
766
  [names.modelFormLoading]: false,
@@ -897,7 +785,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
897
785
  [names.modelForm]: modelForm,
898
786
  [names.modelDraft]: armDraft.call(this, draftScope, modelForm, updatedAtOf(model)),
899
787
  });
900
-
788
+
901
789
  if (draftScope) void applyDraft.call(this, { auto: false });
902
790
  },
903
791
  [names.mergeModel]: async function (
@@ -920,19 +808,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
920
808
  [names.modelLoading]: false,
921
809
  ...staleAtOfSlices(),
922
810
  });
923
- const updatedLightModel = new cnst.light().set(updatedModel) as unknown as Light;
924
- slices.forEach(({ sliceName }) => {
925
- const namesOfSlice = {
926
- modelList: sliceName.replace(names.model, names.modelList),
927
- modelListLoading: sliceName.replace(names.model, names.modelListLoading),
928
- };
929
- const currentState = this.get() as { [key: string]: any };
930
- const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
931
- const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
932
- if (modelListLoading || !modelList.has(updatedModel.id)) return;
933
- const newModelList = new DataList(modelList).set(updatedLightModel);
934
- this.set({ [namesOfSlice.modelList]: newModelList });
935
- });
811
+ patchLists.call(this, updatedModel);
936
812
  },
937
813
  [names.viewModel]: async function (
938
814
  this: SetGet,
@@ -947,7 +823,6 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
947
823
  [names.setModel]: function (this: SetGet, ...fullOrLightModels: Full[]) {
948
824
  const currentState = this.get() as { [key: string]: any };
949
825
  if (fullOrLightModels.length === 0) return;
950
-
951
826
  const firstModel = fullOrLightModels[0];
952
827
  const model = currentState[names.model] as Full | null;
953
828
  const isFull = firstModel instanceof modelRef;
@@ -958,15 +833,10 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
958
833
  const crystalizedModel = new cnst.full().set(model).set(firstModel) as unknown as Full;
959
834
  this.set({ [names.model]: crystalizedModel });
960
835
  }
961
-
962
836
  const lightModels = withSharedInstances(() =>
963
837
  fullOrLightModels.map((fullOrLightModel) => new cnst.light().set(fullOrLightModel) as unknown as Light),
964
838
  );
965
- slices.forEach(({ sliceName }) => {
966
- const namesOfSlice = {
967
- modelList: sliceName.replace(names.model, names.modelList),
968
- modelListLoading: sliceName.replace(names.model, names.modelListLoading),
969
- };
839
+ slices.forEach(({ keys: { state: namesOfSlice } }) => {
970
840
  const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
971
841
  const modelListLoading = currentState[namesOfSlice.modelListLoading] as boolean;
972
842
  if (modelListLoading) return;
@@ -990,13 +860,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
990
860
  });
991
861
  return model ?? null;
992
862
  },
993
- /**
994
- * Reads whatever was saved for this scope into a form that is already filled, and turns saving on for it.
995
- *
996
- * `edit<Model>` does this itself once its fetch lands. This is for the shell that seeds the form straight
997
- * from an RSC payload and has no reason to fetch again — without it, a fresh payload would open an editor
998
- * that recovers nothing, and refetching just to reach this would undo the reason the payload was handed over.
999
- */
863
+
1000
864
  [names.loadModelDraft]: async function (this: SetGet, draftScope?: string) {
1001
865
  const currentState = this.get() as { [key: string]: any };
1002
866
  const model = currentState[names.model] as Full | null;
@@ -1020,60 +884,47 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1020
884
  void DraftStore.remove(draft.key);
1021
885
 
1022
886
  this.set({
1023
-
1024
887
  ...(draft.appliedAt && openFormBase ? { [names.modelForm]: openFormBase } : {}),
1025
888
  [names.modelDraft]: { ...draft, pending: null, appliedAt: null },
1026
889
  });
1027
890
  },
1028
891
  };
1029
- const sliceAction = slices.reduce((acc, { sliceName, slice }) => {
1030
- const SliceName = capitalize(sliceName);
1031
-
892
+ const sliceAction = slices.reduce((acc, { sliceName, keys, slice }) => {
893
+
1032
894
  const requests = new SliceRequest();
1033
-
1034
- let liveWatch: { signature: string; dispose: () => void } | null = null;
1035
895
 
896
+ let liveWatch: { signature: string; dispose: () => void } | null = null;
1036
897
  const livePauseIdxs = (slice.live?.pauseOn ?? [])
1037
898
  .map((name) => slice.args.findIndex((arg) => arg.name === name))
1038
899
  .filter((idx) => idx >= 0);
1039
- const namesOfSlice: { [key in SliceActionKey | SliceStateKey | "modelList"]: string } = {
1040
- defaultModel: SliceName.replace(names.Model, names.defaultModel),
1041
- modelInsight: sliceName.replace(names.model, names.modelInsight),
1042
- modelList: sliceName.replace(names.model, names.modelList),
1043
- modelListLoading: sliceName.replace(names.model, names.modelListLoading),
1044
- initModel: SliceName.replace(names.Model, names.initModel),
1045
- modelInitList: SliceName.replace(names.Model, names.modelInitList),
1046
- modelInitAt: SliceName.replace(names.Model, names.modelInitAt),
1047
- modelStaleAt: SliceName.replace(names.Model, names.modelStaleAt),
1048
- refreshModel: SliceName.replace(names.Model, names.refreshModel),
1049
- selectModel: SliceName.replace(names.Model, names.selectModel),
1050
- setPageOfModel: SliceName.replace(names.Model, names.setPageOfModel),
1051
- loadMoreOfModel: SliceName.replace(names.Model, names.loadMoreOfModel),
1052
- setLimitOfModel: SliceName.replace(names.Model, names.setLimitOfModel),
1053
- setQueryArgsOfModel: SliceName.replace(names.Model, names.setQueryArgsOfModel),
1054
- setSortOfModel: SliceName.replace(names.Model, names.setSortOfModel),
1055
- applyLiveModel: SliceName.replace(names.Model, names.applyLiveModel),
1056
- watchLiveModel: SliceName.replace(names.Model, names.watchLiveModel),
1057
- lastPageOfModel: SliceName.replace(names.Model, names.lastPageOfModel),
1058
- pageOfModel: SliceName.replace(names.Model, names.pageOfModel),
1059
- limitOfModel: SliceName.replace(names.Model, names.limitOfModel),
1060
- hasMoreOfModel: SliceName.replace(names.Model, names.hasMoreOfModel),
1061
- isCumulativeOfModel: SliceName.replace(names.Model, names.isCumulativeOfModel),
1062
- queryArgsOfModel: SliceName.replace(names.Model, names.queryArgsOfModel),
1063
- sortOfModel: SliceName.replace(names.Model, names.sortOfModel),
1064
- modelSelection: SliceName.replace(names.Model, names.modelSelection),
1065
- };
1066
- /**
1067
- * Whether the server still holds rows past the ones just returned.
1068
- *
1069
- * Read off the batch rather than off `<model>Insight`, because the count is a second query — absent entirely
1070
- * under `{ insight: false }`, and one live event out of step with the list the rest of the time. A short
1071
- * batch is the server saying it had nothing more; a full one costs at most one extra request that comes back
1072
- * empty when the total happens to be a multiple of the limit.
1073
- */
900
+ const namesOfSlice = { ...keys.state, ...keys.action };
901
+
1074
902
  const hasMoreFrom = (batch: unknown[], askedFor: number) => ({
1075
903
  [namesOfSlice.hasMoreOfModel]: batch.length >= askedFor && askedFor > 0,
1076
904
  });
905
+ const fetchList = (queryArgs: unknown[], skip: number, limit: number, sort: Sort, options?: object) =>
906
+ (fetch[namesOfSlice.modelList] as (...args: any[]) => Promise<Light[]>)(
907
+ ...expandQueryArgs(queryArgs, slice.args),
908
+ skip,
909
+ limit,
910
+ sort,
911
+ options,
912
+ );
913
+ const fetchInsight = (queryArgs: unknown[], options?: object) =>
914
+ (fetch[namesOfSlice.modelInsight] as (...args: any[]) => Promise<Insight & BaseInsight>)(
915
+ ...expandQueryArgs(queryArgs, slice.args),
916
+ options,
917
+ );
918
+ const loadList = async <T>(self: SetGet, load: () => Promise<T>, commit: (loaded: T) => object) => {
919
+ self.set({ [namesOfSlice.modelListLoading]: true });
920
+ const ticket = requests.claim();
921
+ try {
922
+ const loaded = await load();
923
+ if (requests.isCurrent(ticket)) self.set(commit(loaded));
924
+ } finally {
925
+ if (requests.isCurrent(ticket)) self.set({ [namesOfSlice.modelListLoading]: false });
926
+ }
927
+ };
1077
928
  const singleSliceAction = {
1078
929
  [namesOfSlice.initModel]: async function (
1079
930
  this: SetGet,
@@ -1118,7 +969,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1118
969
  const modelOperation = currentState[names.modelOperation] as string;
1119
970
  const isCumulative = currentState[namesOfSlice.isCumulativeOfModel] as boolean;
1120
971
  const loadedLength = (currentState[namesOfSlice.modelList] as DataList<Light>).length;
1121
-
972
+
1122
973
  const fetchLimit = isCumulative ? Math.max(limit, loadedLength) : limit;
1123
974
  const queryArgsOfModel = currentState[namesOfSlice.queryArgsOfModel] as object[];
1124
975
  const pageOfModel = currentState[namesOfSlice.pageOfModel] as number;
@@ -1132,49 +983,34 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1132
983
  limit === limitOfModel &&
1133
984
  isQueryEqual(sort as unknown as object, sortOfModel as unknown as object)
1134
985
  )
1135
- return;
1136
- else this.set({ [namesOfSlice.modelListLoading]: true });
1137
- const ticket = requests.claim();
1138
- const fetchQueryArgs = expandQueryArgs(queryArgs, slice.args);
1139
-
1140
- try {
1141
-
1142
- const [modelDataList, modelObjInsight] = await Promise.all([
1143
- (fetch[namesOfSlice.modelList] as (...args: any[]) => Promise<Light[]>)(
1144
- ...fetchQueryArgs,
1145
- (page - 1) * limit,
1146
- fetchLimit,
1147
- sort,
1148
- { ...fetchPolicy, onError: initForm.onError },
1149
- ),
1150
- insight === false
1151
- ? null
1152
- : (fetch[namesOfSlice.modelInsight] as (...args: any[]) => Promise<Insight & BaseInsight>)(
1153
- ...fetchQueryArgs,
1154
- { ...fetchPolicy, onError: initForm.onError },
1155
- ),
1156
- ]);
1157
- if (!requests.isCurrent(ticket)) return;
1158
- const modelList = new DataList(modelDataList);
1159
- const modelInsight =
1160
- modelObjInsight ??
1161
- (new cnst.insight().set({ count: modelDataList.length }) as unknown as Insight & BaseInsight);
1162
- this.set({
1163
- [namesOfSlice.modelList]: modelList,
1164
- [namesOfSlice.modelInsight]: modelInsight,
1165
- [namesOfSlice.modelInitList]: modelList,
1166
- [namesOfSlice.modelInitAt]: new Date(),
1167
- [namesOfSlice.lastPageOfModel]: Math.max(Math.floor((modelInsight.count - 1) / (limit || 20)) + 1, 1),
1168
- ...hasMoreFrom(modelDataList, fetchLimit),
1169
- [namesOfSlice.limitOfModel]: limit,
1170
- [namesOfSlice.queryArgsOfModel]: queryArgs,
1171
- [namesOfSlice.sortOfModel]: sort,
1172
- [namesOfSlice.pageOfModel]: page,
1173
- [names.modelOperation]: "idle",
1174
- });
1175
- } finally {
1176
- if (requests.isCurrent(ticket)) this.set({ [namesOfSlice.modelListLoading]: false });
1177
- }
986
+ return;
987
+ await loadList(
988
+ this,
989
+ () =>
990
+ Promise.all([
991
+ fetchList(queryArgs, (page - 1) * limit, fetchLimit, sort, { ...fetchPolicy, onError: initForm.onError }),
992
+ insight === false ? null : fetchInsight(queryArgs, { ...fetchPolicy, onError: initForm.onError }),
993
+ ]),
994
+ ([modelDataList, modelObjInsight]) => {
995
+ const modelList = new DataList(modelDataList);
996
+ const modelInsight =
997
+ modelObjInsight ??
998
+ (new cnst.insight().set({ count: modelDataList.length }) as unknown as Insight & BaseInsight);
999
+ return {
1000
+ [namesOfSlice.modelList]: modelList,
1001
+ [namesOfSlice.modelInsight]: modelInsight,
1002
+ [namesOfSlice.modelInitList]: modelList,
1003
+ [namesOfSlice.modelInitAt]: new Date(),
1004
+ [namesOfSlice.lastPageOfModel]: Math.max(Math.floor((modelInsight.count - 1) / (limit || 20)) + 1, 1),
1005
+ ...hasMoreFrom(modelDataList, fetchLimit),
1006
+ [namesOfSlice.limitOfModel]: limit,
1007
+ [namesOfSlice.queryArgsOfModel]: queryArgs,
1008
+ [namesOfSlice.sortOfModel]: sort,
1009
+ [namesOfSlice.pageOfModel]: page,
1010
+ [names.modelOperation]: "idle",
1011
+ };
1012
+ },
1013
+ );
1178
1014
  },
1179
1015
  [namesOfSlice.selectModel]: function (
1180
1016
  this: SetGet,
@@ -1200,48 +1036,21 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1200
1036
  const limitOfModel = currentState[namesOfSlice.limitOfModel] as number;
1201
1037
  const sortOfModel = currentState[namesOfSlice.sortOfModel] as Sort;
1202
1038
  if (pageOfModel === page) return;
1203
- this.set({ [namesOfSlice.modelListLoading]: true });
1204
- const ticket = requests.claim();
1205
- const fetchQueryArgs = expandQueryArgs(queryArgsOfModel, slice.args);
1206
- try {
1207
- const modelDataList = await (fetch[namesOfSlice.modelList] as (...args: any[]) => Promise<Light[]>)(
1208
- ...fetchQueryArgs,
1209
- (page - 1) * limitOfModel,
1210
- limitOfModel,
1211
- sortOfModel,
1212
- options,
1213
- );
1214
- if (!requests.isCurrent(ticket)) return;
1215
- this.set({
1039
+ await loadList(
1040
+ this,
1041
+ () => fetchList(queryArgsOfModel, (page - 1) * limitOfModel, limitOfModel, sortOfModel, options),
1042
+ (modelDataList) => ({
1216
1043
  [namesOfSlice.modelList]: new DataList(modelDataList),
1217
1044
  [namesOfSlice.pageOfModel]: page,
1218
1045
  [namesOfSlice.isCumulativeOfModel]: false,
1219
1046
  ...hasMoreFrom(modelDataList, limitOfModel),
1220
- });
1221
- } finally {
1222
- if (requests.isCurrent(ticket)) this.set({ [namesOfSlice.modelListLoading]: false });
1223
- }
1047
+ }),
1048
+ );
1224
1049
  },
1225
- /**
1226
- * Appends the rows after the ones already loaded, turning this slice's window into a cumulative list.
1227
- *
1228
- * The offset is the list on screen rather than a page number, and that is the whole point. A page number
1229
- * assumes the server's ordering baseline has not moved, which a live insertion at the front breaks on the
1230
- * first event; the rows in hand are the first `n` the query returns whatever has been inserted since, so
1231
- * asking for what comes after them cannot drift from what is displayed. It also leaves `pageOf<Model>` at
1232
- * 1, which is what keeps live placement — refused anywhere but the first page — working past the first
1233
- * "more".
1234
- *
1235
- * It reads `<model>ListLoading` and never sets it: an append leaves the rows on screen, so raising it
1236
- * would put the whole-list spinner over one and would make `applyLive<Model>` drop every live event until
1237
- * the batch lands. So concurrent calls are NOT rejected — two of them fetch the same offset, since the
1238
- * list they measure has not grown yet. That is a wasted round trip and never a wrong list: the ticket
1239
- * makes only the newest response apply, and both asked for the same rows. A caller that minds the wasted
1240
- * request holds its own in-flight flag, the way `InfiniteScroll` does.
1241
- */
1050
+
1242
1051
  [namesOfSlice.loadMoreOfModel]: async function (this: SetGet, options?: FetchPolicy) {
1243
1052
  const currentState = this.get() as { [key: string]: any };
1244
-
1053
+
1245
1054
  if (currentState[namesOfSlice.modelListLoading] as boolean) return;
1246
1055
  if (!(currentState[namesOfSlice.hasMoreOfModel] as boolean)) return;
1247
1056
  const modelList = currentState[namesOfSlice.modelList] as DataList<Light>;
@@ -1250,17 +1059,15 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1250
1059
  const limitOfModel = (currentState[namesOfSlice.limitOfModel] as number) || 20;
1251
1060
  const sortOfModel = currentState[namesOfSlice.sortOfModel] as Sort;
1252
1061
  const ticket = requests.claim();
1253
- const fetchQueryArgs = expandQueryArgs(queryArgsOfModel, slice.args);
1254
- const modelDataList = await (fetch[namesOfSlice.modelList] as (...args: any[]) => Promise<Light[]>)(
1255
- ...fetchQueryArgs,
1062
+ const modelDataList = await fetchList(
1063
+ queryArgsOfModel,
1256
1064
  (pageOfModel - 1) * limitOfModel + modelList.length,
1257
1065
  limitOfModel,
1258
1066
  sortOfModel,
1259
1067
  options,
1260
1068
  );
1261
-
1262
1069
  if (!requests.isCurrent(ticket)) return;
1263
-
1070
+
1264
1071
  const currentModelList = (this.get() as { [key: string]: any })[namesOfSlice.modelList] as DataList<Light>;
1265
1072
  this.set({
1266
1073
  [namesOfSlice.modelList]: new DataList([...currentModelList.values, ...modelDataList]),
@@ -1278,29 +1085,18 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1278
1085
  if (limitOfModel === limit) return;
1279
1086
  const skip = (pageOfModel - 1) * limitOfModel;
1280
1087
  const page = Math.max(Math.floor((skip - 1) / limit) + 1, 1);
1281
- this.set({ [namesOfSlice.modelListLoading]: true });
1282
- const ticket = requests.claim();
1283
- const fetchQueryArgs = expandQueryArgs(queryArgsOfModel, slice.args);
1284
- try {
1285
- const modelDataList = await (fetch[namesOfSlice.modelList] as (...args: any[]) => Promise<Light[]>)(
1286
- ...fetchQueryArgs,
1287
- (page - 1) * limit,
1288
- limit,
1289
- sortOfModel,
1290
- options,
1291
- );
1292
- if (!requests.isCurrent(ticket)) return;
1293
- this.set({
1088
+ await loadList(
1089
+ this,
1090
+ () => fetchList(queryArgsOfModel, (page - 1) * limit, limit, sortOfModel, options),
1091
+ (modelDataList) => ({
1294
1092
  [namesOfSlice.modelList]: new DataList(modelDataList),
1295
1093
  [namesOfSlice.lastPageOfModel]: Math.max(Math.floor((modelInsight.count - 1) / limit) + 1, 1),
1296
1094
  [namesOfSlice.limitOfModel]: limit,
1297
1095
  [namesOfSlice.pageOfModel]: page,
1298
1096
  [namesOfSlice.isCumulativeOfModel]: false,
1299
1097
  ...hasMoreFrom(modelDataList, limit),
1300
- });
1301
- } finally {
1302
- if (requests.isCurrent(ticket)) this.set({ [namesOfSlice.modelListLoading]: false });
1303
- }
1098
+ }),
1099
+ );
1304
1100
  },
1305
1101
  [namesOfSlice.setQueryArgsOfModel]: async function (
1306
1102
  this: SetGet,
@@ -1322,27 +1118,16 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1322
1118
  const sortOfModel = currentState[namesOfSlice.sortOfModel] as Sort;
1323
1119
  if (isQueryEqual(queryArgsOfModel, queryArgs)) {
1324
1120
  Logger.trace(`${namesOfSlice.queryArgsOfModel} store-level cache hit`);
1325
- return;
1121
+ return;
1326
1122
  }
1327
- this.set({ [namesOfSlice.modelListLoading]: true });
1328
- const ticket = requests.claim();
1329
- const fetchQueryArgs = expandQueryArgs(queryArgs, slice.args);
1330
- try {
1331
- const [modelDataList, modelInsight] = await Promise.all([
1332
- (fetch[namesOfSlice.modelList] as (...args: any[]) => Promise<Light[]>)(
1333
- ...fetchQueryArgs,
1334
- 0,
1335
- limitOfModel,
1336
- sortOfModel,
1337
- options,
1338
- ),
1339
- (fetch[namesOfSlice.modelInsight] as (...args: any[]) => Promise<Insight & BaseInsight>)(
1340
- ...fetchQueryArgs,
1341
- options,
1342
- ),
1343
- ]);
1344
- if (!requests.isCurrent(ticket)) return;
1345
- this.set({
1123
+ await loadList(
1124
+ this,
1125
+ () =>
1126
+ Promise.all([
1127
+ fetchList(queryArgs, 0, limitOfModel, sortOfModel, options),
1128
+ fetchInsight(queryArgs, options),
1129
+ ]),
1130
+ ([modelDataList, modelInsight]) => ({
1346
1131
  [namesOfSlice.queryArgsOfModel]: queryArgs,
1347
1132
  [namesOfSlice.modelList]: new DataList(modelDataList),
1348
1133
  [namesOfSlice.modelInsight]: modelInsight,
@@ -1351,49 +1136,28 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1351
1136
  [namesOfSlice.isCumulativeOfModel]: false,
1352
1137
  ...hasMoreFrom(modelDataList, limitOfModel),
1353
1138
  [namesOfSlice.modelSelection]: new Map(),
1354
- });
1355
- } finally {
1356
- if (requests.isCurrent(ticket)) this.set({ [namesOfSlice.modelListLoading]: false });
1357
- }
1139
+ }),
1140
+ );
1358
1141
  },
1359
1142
  [namesOfSlice.setSortOfModel]: async function (this: SetGet, sort: Sort, options?: FetchPolicy) {
1360
1143
  const currentState = this.get() as { [key: string]: any };
1361
1144
  const queryArgsOfModel = currentState[namesOfSlice.queryArgsOfModel] as object[];
1362
1145
  const limitOfModel = currentState[namesOfSlice.limitOfModel] as number;
1363
1146
  const sortOfModel = currentState[namesOfSlice.sortOfModel] as Sort;
1364
- if (sortOfModel === sort) return;
1365
- this.set({ [namesOfSlice.modelListLoading]: true });
1366
- const ticket = requests.claim();
1367
- const fetchQueryArgs = expandQueryArgs(queryArgsOfModel, slice.args);
1368
- try {
1369
- const modelDataList = await (fetch[namesOfSlice.modelList] as (...args: any[]) => Promise<Light[]>)(
1370
- ...fetchQueryArgs,
1371
- 0,
1372
- limitOfModel,
1373
- sort,
1374
- options,
1375
- );
1376
- if (!requests.isCurrent(ticket)) return;
1377
- this.set({
1147
+ if (sortOfModel === sort) return;
1148
+ await loadList(
1149
+ this,
1150
+ () => fetchList(queryArgsOfModel, 0, limitOfModel, sort, options),
1151
+ (modelDataList) => ({
1378
1152
  [namesOfSlice.modelList]: new DataList(modelDataList),
1379
1153
  [namesOfSlice.sortOfModel]: sort,
1380
1154
  [namesOfSlice.pageOfModel]: 1,
1381
1155
  [namesOfSlice.isCumulativeOfModel]: false,
1382
1156
  ...hasMoreFrom(modelDataList, limitOfModel),
1383
- });
1384
- } finally {
1385
- if (requests.isCurrent(ticket)) this.set({ [namesOfSlice.modelListLoading]: false });
1386
- }
1157
+ }),
1158
+ );
1387
1159
  },
1388
- /**
1389
- * Applies one live event to this slice's window.
1390
- *
1391
- * The verb already answers membership — the server evaluated this slice's own query against the document
1392
- * before and after the write, so arriving here at all is the proof, and nothing is re-checked. What is left
1393
- * is the window: `<slice>List` is a prefix of the list, not the list, so an insertion is only ever attempted
1394
- * where its position can be known. Everywhere else the list is stamped stale and refetched, which is always
1395
- * correct and merely costs a round trip.
1396
- */
1160
+
1397
1161
  [namesOfSlice.applyLiveModel]: function (this: SetGet, event: LiveEventPayload) {
1398
1162
  const currentState = this.get() as { [key: string]: any };
1399
1163
  if (currentState[namesOfSlice.modelListLoading] as boolean) return;
@@ -1421,12 +1185,12 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1421
1185
  }
1422
1186
  const light = event.light ? (new cnst.light().set(event.light) as unknown as Light) : null;
1423
1187
  if (event.op === "update") {
1424
-
1188
+
1425
1189
  if (!light || !modelList.has(event.id)) return;
1426
1190
  this.set({ [namesOfSlice.modelList]: new DataList(modelList).set(light).save() });
1427
1191
  return;
1428
1192
  }
1429
-
1193
+
1430
1194
  const placement =
1431
1195
  light && !modelList.has(event.id)
1432
1196
  ? livePlacementIndex({
@@ -1445,7 +1209,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1445
1209
  this.set({ ...(modelList.has(event.id) ? {} : countedTo(modelInsight.count + 1)), ...staleAt });
1446
1210
  return;
1447
1211
  }
1448
-
1212
+
1449
1213
  const inserted = [...modelList.slice(0, placement), light, ...modelList.slice(placement)];
1450
1214
  const placed = isCumulative ? inserted : inserted.slice(0, limit);
1451
1215
  this.set({
@@ -1454,17 +1218,11 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1454
1218
  ...staleAt,
1455
1219
  });
1456
1220
  },
1457
- /**
1458
- * Opens this slice's live room for `queryArgs`, or closes it when given null.
1459
- *
1460
- * One room per slice, not per component. The list a room writes into is a single piece of store state, so a
1461
- * second subscription would apply every event to it twice — a count off by one per extra reader, which is
1462
- * exactly the kind of drift nothing surfaces until someone counts.
1463
- */
1221
+
1464
1222
  [namesOfSlice.watchLiveModel]: function (this: SetGet, queryArgs: unknown[] | null) {
1465
1223
  if (!slice.live) return;
1466
1224
  const args = queryArgs ? expandQueryArgs(normalizeQueryArgs(queryArgs, slice.args), slice.args) : null;
1467
-
1225
+
1468
1226
  const paused = !!args && livePauseIdxs.some((idx) => args[idx] != null);
1469
1227
  const signature = args && !paused ? JSON.stringify(args) : null;
1470
1228
  if (liveWatch && signature !== liveWatch.signature) {
@@ -1475,7 +1233,7 @@ export const makeActions = (refName: string, slice: { [key: string]: SerializedS
1475
1233
  const self = this as unknown as DynamicRecord;
1476
1234
  const apply = self[namesOfSlice.applyLiveModel] as (event: unknown) => void;
1477
1235
  const refresh = self[namesOfSlice.refreshModel] as (form: object) => Promise<void>;
1478
-
1236
+
1479
1237
  const subscribe = fetch[`subscribe${capitalize(sliceName.replace(names.model, `${names.model}Live`))}`] as
1480
1238
  | ((...args: unknown[]) => () => void)
1481
1239
  | undefined;