akanjs 3.0.0-alpha.8 → 3.0.0-alpha.80

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 (832) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/README.ko.md +1 -1
  3. package/README.md +1 -1
  4. package/base/baseEnv.ts +7 -4
  5. package/base/primitiveRegistry.ts +59 -12
  6. package/base/symbols.ts +4 -0
  7. package/client/capacitor.ts +34 -0
  8. package/client/clientRuntime.ts +5 -0
  9. package/client/cookie.ts +21 -34
  10. package/client/csrTypes.ts +4 -15
  11. package/client/frameConfig.ts +13 -0
  12. package/client/index.ts +1 -0
  13. package/client/locale.ts +2 -2
  14. package/client/router.ts +7 -7
  15. package/client/sharedContext.ts +31 -0
  16. package/client/translator.ts +2 -2
  17. package/client/types.ts +3 -3
  18. package/common/Logger.ts +287 -67
  19. package/common/TrustedProxy.ts +134 -0
  20. package/common/clamp.ts +2 -0
  21. package/common/clientAddress.ts +40 -0
  22. package/common/deepObjectify.ts +3 -2
  23. package/common/dynamicRecord.ts +12 -0
  24. package/common/index.ts +47 -2
  25. package/common/isValidDate.ts +1 -1
  26. package/common/logContext.ts +27 -0
  27. package/common/mcpExposure.ts +114 -0
  28. package/common/pathGetLoose.ts +31 -0
  29. package/common/plainFieldsOf.ts +13 -0
  30. package/common/requestOrigin.ts +32 -0
  31. package/common/{httpClient.ts → restClient.ts} +16 -9
  32. package/common/routeConvention.ts +22 -12
  33. package/common/websocketBinaryFrame.ts +46 -0
  34. package/constant/crystalize.ts +92 -28
  35. package/constant/dateSlot.ts +62 -0
  36. package/constant/deserialize.ts +3 -2
  37. package/constant/fieldInfo.ts +43 -3
  38. package/constant/fieldQueryMeta.ts +35 -0
  39. package/constant/getDefault.ts +16 -11
  40. package/constant/hydrationPlan.ts +72 -0
  41. package/constant/immerify.ts +4 -6
  42. package/constant/index.ts +5 -0
  43. package/constant/labelOf.ts +26 -0
  44. package/constant/mask.ts +67 -0
  45. package/constant/purify.ts +17 -11
  46. package/constant/textFieldPaths.ts +13 -7
  47. package/constant/types.ts +41 -13
  48. package/constant/via.ts +24 -17
  49. package/dictionary/DictionaryLookup.ts +30 -0
  50. package/dictionary/agent.dictionary.ts +31 -0
  51. package/dictionary/agentTurn.dictionary.ts +29 -0
  52. package/dictionary/base.dictionary.ts +85 -0
  53. package/dictionary/dictInfo.ts +11 -2
  54. package/dictionary/dictionary.ts +9 -3
  55. package/dictionary/index.ts +1 -0
  56. package/dictionary/trans.ts +26 -7
  57. package/document/dataLoader.ts +0 -4
  58. package/document/documentQuery.ts +1 -0
  59. package/document/filterMeta.ts +79 -14
  60. package/document/index.ts +1 -0
  61. package/document/loaderInfo.ts +4 -1
  62. package/document/noDocumentError.ts +12 -0
  63. package/document/types.ts +0 -1
  64. package/fetch/agentTurn.ts +19 -0
  65. package/fetch/client/fetchClient.ts +166 -89
  66. package/fetch/client/fetchHandle.ts +57 -0
  67. package/fetch/client/httpClient.ts +140 -30
  68. package/fetch/client/sliceInitHandle.ts +101 -0
  69. package/fetch/client/wsClient.ts +27 -12
  70. package/fetch/fetchType/appliedReturn.type.ts +126 -42
  71. package/fetch/fetchType/endpointFetch.type.ts +17 -8
  72. package/fetch/fetchType/sliceFetch.type.ts +30 -53
  73. package/fetch/index.ts +1 -0
  74. package/fetch/requestStorage.ts +19 -5
  75. package/index.ts +132 -8
  76. package/local/apps/akan/akan-local.db +0 -0
  77. package/local/apps/akan/akan-local.db-shm +0 -0
  78. package/local/apps/akan/akan-local.db-wal +0 -0
  79. package/local/apps/akan/akan-local_solid.db +0 -0
  80. package/local/apps/akan/akan-local_solid.db-shm +0 -0
  81. package/local/apps/akan/akan-local_solid.db-wal +0 -0
  82. package/local/apps/serverLifecycle/serverLifecycle-local.db +0 -0
  83. package/local/apps/serverLifecycle/serverLifecycle-local.db-shm +0 -0
  84. package/local/apps/serverLifecycle/serverLifecycle-local.db-wal +0 -0
  85. package/local/apps/serverLifecycle/serverLifecycle-local_solid.db +0 -0
  86. package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-shm +0 -0
  87. package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-wal +0 -0
  88. package/package.json +27 -18
  89. package/server/akanApp.ts +325 -157
  90. package/server/akanAppHeaders.ts +23 -3
  91. package/server/akanOption.ts +76 -8
  92. package/server/akanServer.ts +390 -32
  93. package/server/animatedImage.ts +83 -0
  94. package/server/assetEncoding.ts +4 -24
  95. package/server/binaryPubsub.ts +55 -0
  96. package/server/cachePolicy.ts +2 -11
  97. package/server/console.ts +110 -101
  98. package/server/consoleEvaluator.ts +51 -0
  99. package/server/consolePasteFilter.ts +91 -0
  100. package/server/consoleSession.ts +242 -0
  101. package/server/contentEncoding.ts +83 -0
  102. package/server/decorators.ts +12 -3
  103. package/server/devtools/constantSerializer.ts +8 -1
  104. package/server/devtools/signalSerializer.ts +2 -2
  105. package/server/devtools/types.ts +4 -4
  106. package/server/di/diLifecycle.ts +144 -14
  107. package/server/di/predefinedAdaptor.ts +6 -0
  108. package/server/di/resolveHierarchy.ts +3 -3
  109. package/server/di/utils.ts +40 -0
  110. package/server/hmr/clientScript.ts +1 -1
  111. package/server/imageOptimizer.ts +156 -74
  112. package/server/lifecycle/runtimeDir.ts +14 -0
  113. package/server/lifecycle/shutdownManager.ts +17 -2
  114. package/server/logging/childOutputReader.ts +137 -0
  115. package/server/logging/hubFileSink.ts +39 -0
  116. package/server/logging/logControlSocket.ts +173 -0
  117. package/server/logging/logForwarder.ts +131 -0
  118. package/server/logging/logHub.ts +0 -0
  119. package/server/logging/logQuery.ts +130 -0
  120. package/server/logging/logStdoutWriter.ts +39 -0
  121. package/server/logging/logStreamRoute.ts +87 -0
  122. package/server/logging/logTailClient.ts +161 -0
  123. package/server/mcp/McpAuth.ts +177 -0
  124. package/server/mcp/McpDispatcher.ts +295 -0
  125. package/server/mcp/McpEventStream.ts +24 -0
  126. package/server/mcp/McpExecutionContext.ts +105 -0
  127. package/server/mcp/McpRouter.ts +621 -0
  128. package/server/mcp/index.ts +5 -0
  129. package/server/processMetricsCollector.ts +1 -1
  130. package/server/resolver/database.resolver.ts +18 -12
  131. package/server/resolver/signal.resolver.ts +211 -89
  132. package/server/routeTreeBuilder.ts +11 -23
  133. package/server/routing/apiRouter.ts +45 -16
  134. package/server/routing/appWsData.ts +30 -5
  135. package/server/routing/eventStream.ts +93 -0
  136. package/server/routing/soloAppRoutes.ts +50 -0
  137. package/server/rscWorker.tsx +63 -22
  138. package/server/rscWorkerHost.ts +59 -8
  139. package/server/semaphore.ts +22 -0
  140. package/server/ssrFromRscRenderer.tsx +50 -0
  141. package/server/staticPath.ts +34 -0
  142. package/server/subRouteIndexDocument.tsx +61 -0
  143. package/server/systemPageDocument.tsx +3 -3
  144. package/server/systemPages.tsx +49 -16
  145. package/server/types.tsx +28 -0
  146. package/server/vendor/akanjs-fetch.ts +1 -0
  147. package/server/webRouter.ts +130 -73
  148. package/service/adapt.ts +5 -9
  149. package/service/agent.service.ts +81 -0
  150. package/service/base.service.ts +2 -1
  151. package/service/index.ts +1 -0
  152. package/service/injectInfo.ts +8 -3
  153. package/service/ipcTypes.ts +6 -0
  154. package/service/predefinedAdaptor/cache.adaptor.ts +8 -4
  155. package/service/predefinedAdaptor/compress.adaptor.ts +5 -1
  156. package/service/predefinedAdaptor/database.adaptor.ts +59 -1757
  157. package/service/predefinedAdaptor/deepseekLlm.ts +271 -0
  158. package/service/predefinedAdaptor/index.ts +3 -0
  159. package/service/predefinedAdaptor/insightQuery.ts +183 -0
  160. package/service/predefinedAdaptor/llm.adaptor.ts +115 -0
  161. package/service/predefinedAdaptor/logging.adaptor.ts +1 -1
  162. package/service/predefinedAdaptor/queue.adaptor.ts +5 -2
  163. package/service/predefinedAdaptor/role.adaptor.ts +2 -0
  164. package/service/predefinedAdaptor/schedule.adaptor.ts +12 -5
  165. package/service/predefinedAdaptor/solidPubsub.adaptor.ts +10 -6
  166. package/service/predefinedAdaptor/solidQueue.adaptor.ts +6 -2
  167. package/service/predefinedAdaptor/solidSqlite.ts +11 -9
  168. package/service/predefinedAdaptor/sql/PendingStoreEnsures.ts +22 -0
  169. package/service/predefinedAdaptor/sql/QueryCompiler.ts +225 -0
  170. package/service/predefinedAdaptor/sql/SqlDocumentStore.ts +812 -0
  171. package/service/predefinedAdaptor/sql/UpdateCompiler.ts +67 -0
  172. package/service/predefinedAdaptor/sql/dialect/postgres.ts +151 -0
  173. package/service/predefinedAdaptor/sql/dialect/sqlite.ts +134 -0
  174. package/service/predefinedAdaptor/sql/driver/bunSqlite.ts +29 -0
  175. package/service/predefinedAdaptor/sql/driver/libsql.ts +37 -0
  176. package/service/predefinedAdaptor/sql/driver/postgres.ts +42 -0
  177. package/service/predefinedAdaptor/sql/types.ts +251 -0
  178. package/service/predefinedAdaptor/sql/values.ts +91 -0
  179. package/service/predefinedAdaptor/websocket.adaptor.ts +6 -1
  180. package/service/serve.ts +16 -9
  181. package/service/toolNames.ts +119 -0
  182. package/signal/CrossSiteGuard.ts +71 -0
  183. package/signal/SignalFailure.ts +51 -0
  184. package/signal/agent/AgentCatalogue.ts +165 -0
  185. package/signal/agent/index.ts +1 -0
  186. package/signal/agent.signal.ts +38 -0
  187. package/signal/agentTurn.ts +8 -0
  188. package/signal/agentTurnStream.ts +60 -0
  189. package/signal/base.signal.ts +2 -1
  190. package/signal/endpoint.ts +2 -2
  191. package/signal/endpointInfo.ts +38 -2
  192. package/signal/exception.ts +43 -6
  193. package/signal/guard.ts +28 -1
  194. package/signal/guards.ts +49 -1
  195. package/signal/index.ts +8 -0
  196. package/signal/intercept.ts +9 -6
  197. package/signal/internal.ts +10 -2
  198. package/signal/internalArg.ts +21 -4
  199. package/signal/mcp/McpDocument.ts +326 -0
  200. package/signal/mcp/McpProgress.ts +106 -0
  201. package/signal/mcp/McpUriTemplate.ts +80 -0
  202. package/signal/mcp/Msg.ts +368 -0
  203. package/signal/mcp/index.ts +5 -0
  204. package/signal/mcp/mcpProtocol.ts +120 -0
  205. package/signal/middleware.ts +3 -3
  206. package/signal/openapi/openapi.ts +36 -173
  207. package/signal/schema/JsonSchemaBuilder.ts +221 -0
  208. package/signal/schema/index.ts +1 -0
  209. package/signal/serializer/fetch.serializer.ts +62 -1
  210. package/signal/signalContext.ts +339 -94
  211. package/signal/slice.ts +63 -28
  212. package/signal/trace.ts +268 -9
  213. package/signal/types.ts +55 -4
  214. package/store/SliceRequest.ts +23 -0
  215. package/store/action.ts +210 -154
  216. package/store/actionTag.ts +33 -0
  217. package/store/agent/AgentBridge.ts +89 -0
  218. package/store/agent/AgentContext.ts +71 -0
  219. package/store/agent/AgentPrompts.ts +111 -0
  220. package/store/agent/ScreenReader.ts +349 -0
  221. package/store/agent/ScreenSettle.ts +45 -0
  222. package/store/agent/ScreenTarget.ts +135 -0
  223. package/store/agent/StoreCatalogue.ts +116 -0
  224. package/store/agent/StoreSurfaceSource.ts +225 -0
  225. package/store/agent/index.ts +13 -0
  226. package/store/agent/storeSurface.ts +28 -0
  227. package/store/agent/types.ts +16 -0
  228. package/store/agentic/AgentValue.ts +119 -0
  229. package/store/agentic/StExposeBuilder.ts +50 -0
  230. package/store/agentic/StExposeDraft.ts +24 -0
  231. package/store/agentic/StStateBuilder.ts +90 -0
  232. package/store/agentic/StStateDraft.ts +23 -0
  233. package/store/agentic/StToolBuilder.ts +293 -0
  234. package/store/agentic/StToolDraft.ts +22 -0
  235. package/store/agentic/attachAgentic.ts +33 -0
  236. package/store/agentic/formFields.ts +194 -0
  237. package/store/agentic/index.ts +12 -0
  238. package/store/agentic/useFieldTool.ts +183 -0
  239. package/store/agentic/useFormTools.ts +77 -0
  240. package/store/agentic/useRelationFieldTool.ts +113 -0
  241. package/store/baseSt.ts +1 -1
  242. package/store/databaseStateNames.ts +31 -0
  243. package/store/formSetterNames.ts +35 -0
  244. package/store/index.ts +8 -0
  245. package/store/rootStore.ts +3 -1
  246. package/store/sliceRole.ts +36 -0
  247. package/store/state.ts +2 -12
  248. package/store/store.ts +10 -1
  249. package/store/storeInstance.ts +185 -22
  250. package/store/storeRegistry.ts +40 -2
  251. package/store/types.ts +5 -0
  252. package/store/withSelector.ts +5 -4
  253. package/test/index.ts +1 -1
  254. package/test/registerDom.ts +4 -0
  255. package/test/sampleOf.ts +2 -0
  256. package/test/signalTestRuntime.ts +5 -5
  257. package/test/testServer.ts +14 -11
  258. package/types/base/baseEnv.d.ts +1 -1
  259. package/types/base/primitiveRegistry.d.ts +20 -8
  260. package/types/base/symbols.d.ts +4 -0
  261. package/types/client/capacitor.d.ts +39 -0
  262. package/types/client/clientRuntime.d.ts +7 -0
  263. package/types/client/cookie.d.ts +13 -2
  264. package/types/client/csrTypes.d.ts +0 -1
  265. package/types/client/frameConfig.d.ts +1 -0
  266. package/types/client/index.d.ts +1 -0
  267. package/types/client/sharedContext.d.ts +21 -0
  268. package/types/client/types.d.ts +5 -3
  269. package/types/common/Logger.d.ts +88 -6
  270. package/types/common/TrustedProxy.d.ts +24 -0
  271. package/types/common/clamp.d.ts +2 -0
  272. package/types/common/clientAddress.d.ts +19 -0
  273. package/types/common/dynamicRecord.d.ts +14 -0
  274. package/types/common/index.d.ts +13 -3
  275. package/types/common/logContext.d.ts +17 -0
  276. package/types/common/mcpExposure.d.ts +64 -0
  277. package/types/common/pathGetLoose.d.ts +8 -0
  278. package/types/common/plainFieldsOf.d.ts +6 -0
  279. package/types/common/requestOrigin.d.ts +14 -0
  280. package/types/common/restClient.d.ts +27 -0
  281. package/types/common/routeConvention.d.ts +6 -0
  282. package/types/common/websocketBinaryFrame.d.ts +17 -0
  283. package/types/constant/constantRegistry.d.ts +2 -10
  284. package/types/constant/crystalize.d.ts +5 -0
  285. package/types/constant/dateSlot.d.ts +14 -0
  286. package/types/constant/fieldInfo.d.ts +20 -3
  287. package/types/constant/fieldQueryMeta.d.ts +17 -0
  288. package/types/constant/getDefault.d.ts +8 -0
  289. package/types/constant/hydrationPlan.d.ts +24 -0
  290. package/types/constant/index.d.ts +5 -0
  291. package/types/constant/labelOf.d.ts +7 -0
  292. package/types/constant/mask.d.ts +41 -0
  293. package/types/constant/purify.d.ts +2 -2
  294. package/types/constant/types.d.ts +18 -5
  295. package/types/dictionary/DictionaryLookup.d.ts +14 -0
  296. package/types/dictionary/agent.dictionary.d.ts +1 -0
  297. package/types/dictionary/agentTurn.dictionary.d.ts +1 -0
  298. package/types/dictionary/base.dictionary.d.ts +1 -1
  299. package/types/dictionary/dictInfo.d.ts +7 -1
  300. package/types/dictionary/dictionary.d.ts +11 -9
  301. package/types/dictionary/index.d.ts +1 -0
  302. package/types/document/dataLoader.d.ts +0 -3
  303. package/types/document/filterMeta.d.ts +26 -6
  304. package/types/document/index.d.ts +1 -0
  305. package/types/document/loaderInfo.d.ts +2 -2
  306. package/types/document/noDocumentError.d.ts +12 -0
  307. package/types/document/types.d.ts +0 -1
  308. package/types/fetch/agentTurn.d.ts +475 -0
  309. package/types/fetch/client/fetchClient.d.ts +12 -0
  310. package/types/fetch/client/fetchHandle.d.ts +24 -0
  311. package/types/fetch/client/httpClient.d.ts +10 -4
  312. package/types/fetch/client/sliceInitHandle.d.ts +29 -0
  313. package/types/fetch/fetchType/appliedReturn.type.d.ts +71 -15
  314. package/types/fetch/fetchType/endpointFetch.type.d.ts +8 -5
  315. package/types/fetch/fetchType/sliceFetch.type.d.ts +14 -18
  316. package/types/fetch/index.d.ts +1 -0
  317. package/types/fetch/requestStorage.d.ts +14 -0
  318. package/types/index.d.ts +124 -12
  319. package/types/server/akanApp.d.ts +12 -0
  320. package/types/server/akanAppHeaders.d.ts +7 -1
  321. package/types/server/akanOption.d.ts +43 -6
  322. package/types/server/akanServer.d.ts +67 -9
  323. package/types/server/animatedImage.d.ts +7 -0
  324. package/types/server/assetEncoding.d.ts +1 -1
  325. package/types/server/binaryPubsub.d.ts +18 -0
  326. package/types/server/console.d.ts +11 -1
  327. package/types/server/consoleEvaluator.d.ts +2 -0
  328. package/types/server/consolePasteFilter.d.ts +11 -0
  329. package/types/server/consoleSession.d.ts +22 -0
  330. package/types/server/contentEncoding.d.ts +28 -0
  331. package/types/server/decorators.d.ts +12 -2
  332. package/types/server/devtools/types.d.ts +4 -4
  333. package/types/server/di/diLifecycle.d.ts +19 -3
  334. package/types/server/di/predefinedAdaptor.d.ts +4 -1
  335. package/types/server/di/utils.d.ts +16 -0
  336. package/types/server/lifecycle/runtimeDir.d.ts +5 -0
  337. package/types/server/lifecycle/shutdownManager.d.ts +2 -1
  338. package/types/server/logging/childOutputReader.d.ts +40 -0
  339. package/types/server/logging/hubFileSink.d.ts +18 -0
  340. package/types/server/logging/logControlSocket.d.ts +60 -0
  341. package/types/server/logging/logForwarder.d.ts +37 -0
  342. package/types/server/logging/logHub.d.ts +70 -0
  343. package/types/server/logging/logQuery.d.ts +31 -0
  344. package/types/server/logging/logStdoutWriter.d.ts +35 -0
  345. package/types/server/logging/logStreamRoute.d.ts +20 -0
  346. package/types/server/logging/logTailClient.d.ts +42 -0
  347. package/types/server/mcp/McpAuth.d.ts +62 -0
  348. package/types/server/mcp/McpDispatcher.d.ts +61 -0
  349. package/types/server/mcp/McpEventStream.d.ts +17 -0
  350. package/types/server/mcp/McpExecutionContext.d.ts +44 -0
  351. package/types/server/mcp/McpRouter.d.ts +65 -0
  352. package/types/server/mcp/index.d.ts +5 -0
  353. package/types/server/mcp.d.ts +1 -0
  354. package/types/server/resolver/signal.resolver.d.ts +7 -4
  355. package/types/server/routeTreeBuilder.d.ts +1 -2
  356. package/types/server/routing/apiRouter.d.ts +2 -1
  357. package/types/server/routing/appWsData.d.ts +19 -3
  358. package/types/server/routing/eventStream.d.ts +23 -0
  359. package/types/server/routing/soloAppRoutes.d.ts +17 -0
  360. package/types/server/rscWorkerHost.d.ts +4 -1
  361. package/types/server/semaphore.d.ts +5 -0
  362. package/types/server/ssrFromRscRenderer.d.ts +14 -0
  363. package/types/server/staticPath.d.ts +17 -0
  364. package/types/server/subRouteIndexDocument.d.ts +8 -0
  365. package/types/server/systemPageDocument.d.ts +1 -0
  366. package/types/server/systemPages.d.ts +5 -0
  367. package/types/server/types.d.ts +16 -0
  368. package/types/server/vendor/akanjs-fetch.d.ts +1 -0
  369. package/types/server/webRouter.d.ts +15 -4
  370. package/types/service/adapt.d.ts +3 -3
  371. package/types/service/agent.service.d.ts +32 -0
  372. package/types/service/base.service.d.ts +4 -0
  373. package/types/service/index.d.ts +1 -0
  374. package/types/service/injectInfo.d.ts +2 -2
  375. package/types/service/ipcTypes.d.ts +12 -0
  376. package/types/service/predefinedAdaptor/compress.adaptor.d.ts +1 -1
  377. package/types/service/predefinedAdaptor/database.adaptor.d.ts +16 -402
  378. package/types/service/predefinedAdaptor/deepseekLlm.d.ts +76 -0
  379. package/types/service/predefinedAdaptor/index.d.ts +3 -0
  380. package/types/service/predefinedAdaptor/insightQuery.d.ts +50 -0
  381. package/types/service/predefinedAdaptor/llm.adaptor.d.ts +105 -0
  382. package/types/service/predefinedAdaptor/queue.adaptor.d.ts +3 -2
  383. package/types/service/predefinedAdaptor/role.adaptor.d.ts +2 -0
  384. package/types/service/predefinedAdaptor/schedule.adaptor.d.ts +10 -6
  385. package/types/service/predefinedAdaptor/solidQueue.adaptor.d.ts +6 -2
  386. package/types/service/predefinedAdaptor/solidSqlite.d.ts +2 -2
  387. package/types/service/predefinedAdaptor/sql/PendingStoreEnsures.d.ts +6 -0
  388. package/types/service/predefinedAdaptor/sql/QueryCompiler.d.ts +28 -0
  389. package/types/service/predefinedAdaptor/sql/SqlDocumentStore.d.ts +127 -0
  390. package/types/service/predefinedAdaptor/sql/UpdateCompiler.d.ts +17 -0
  391. package/types/service/predefinedAdaptor/sql/dialect/postgres.d.ts +27 -0
  392. package/types/service/predefinedAdaptor/sql/dialect/sqlite.d.ts +27 -0
  393. package/types/service/predefinedAdaptor/sql/driver/bunSqlite.d.ts +16 -0
  394. package/types/service/predefinedAdaptor/sql/driver/libsql.d.ts +17 -0
  395. package/types/service/predefinedAdaptor/sql/driver/postgres.d.ts +17 -0
  396. package/types/service/predefinedAdaptor/sql/types.d.ts +226 -0
  397. package/types/service/predefinedAdaptor/sql/values.d.ts +13 -0
  398. package/types/service/serve.d.ts +3 -3
  399. package/types/service/toolNames.d.ts +35 -0
  400. package/types/signal/CrossSiteGuard.d.ts +44 -0
  401. package/types/signal/SignalFailure.d.ts +28 -0
  402. package/types/signal/agent/AgentCatalogue.d.ts +100 -0
  403. package/types/signal/agent/index.d.ts +1 -0
  404. package/types/signal/agent.d.ts +1 -0
  405. package/types/signal/agent.signal.d.ts +24 -0
  406. package/types/signal/agentTurn.d.ts +9 -0
  407. package/types/signal/agentTurnStream.d.ts +24 -0
  408. package/types/signal/base.signal.d.ts +1 -1
  409. package/types/signal/endpointInfo.d.ts +21 -3
  410. package/types/signal/exception.d.ts +38 -54774
  411. package/types/signal/guard.d.ts +12 -0
  412. package/types/signal/guards.d.ts +23 -1
  413. package/types/signal/index.d.ts +8 -0
  414. package/types/signal/intercept.d.ts +5 -5
  415. package/types/signal/internal.d.ts +5 -1
  416. package/types/signal/internalArg.d.ts +22 -6
  417. package/types/signal/mcp/McpDocument.d.ts +84 -0
  418. package/types/signal/mcp/McpProgress.d.ts +40 -0
  419. package/types/signal/mcp/McpUriTemplate.d.ts +25 -0
  420. package/types/signal/mcp/Msg.d.ts +143 -0
  421. package/types/signal/mcp/index.d.ts +5 -0
  422. package/types/signal/mcp/mcpProtocol.d.ts +107 -0
  423. package/types/signal/mcp.d.ts +1 -0
  424. package/types/signal/middleware.d.ts +7 -7
  425. package/types/signal/openapi/openapi.d.ts +3 -3
  426. package/types/signal/schema/JsonSchemaBuilder.d.ts +51 -0
  427. package/types/signal/schema/index.d.ts +1 -0
  428. package/types/signal/schema.d.ts +1 -0
  429. package/types/signal/serializer/fetch.serializer.d.ts +7 -1
  430. package/types/signal/signalContext.d.ts +67 -8
  431. package/types/signal/slice.d.ts +42 -15
  432. package/types/signal/trace.d.ts +52 -2
  433. package/types/signal/types.d.ts +53 -4
  434. package/types/store/SliceRequest.d.ts +16 -0
  435. package/types/store/action.d.ts +7 -5
  436. package/types/store/actionTag.d.ts +21 -0
  437. package/types/store/agent/AgentBridge.d.ts +37 -0
  438. package/types/store/agent/AgentContext.d.ts +16 -0
  439. package/types/store/agent/AgentPrompts.d.ts +31 -0
  440. package/types/store/agent/ScreenReader.d.ts +29 -0
  441. package/types/store/agent/ScreenSettle.d.ts +22 -0
  442. package/types/store/agent/ScreenTarget.d.ts +34 -0
  443. package/types/store/agent/StoreCatalogue.d.ts +26 -0
  444. package/types/store/agent/StoreSurfaceSource.d.ts +30 -0
  445. package/types/store/agent/index.d.ts +11 -0
  446. package/types/store/agent/storeSurface.d.ts +14 -0
  447. package/types/store/agent/types.d.ts +15 -0
  448. package/types/store/agent.d.ts +1 -0
  449. package/types/store/agentic/AgentValue.d.ts +43 -0
  450. package/types/store/agentic/StExposeBuilder.d.ts +21 -0
  451. package/types/store/agentic/StExposeDraft.d.ts +13 -0
  452. package/types/store/agentic/StStateBuilder.d.ts +21 -0
  453. package/types/store/agentic/StStateDraft.d.ts +12 -0
  454. package/types/store/agentic/StToolBuilder.d.ts +65 -0
  455. package/types/store/agentic/StToolDraft.d.ts +13 -0
  456. package/types/store/agentic/attachAgentic.d.ts +25 -0
  457. package/types/store/agentic/formFields.d.ts +53 -0
  458. package/types/store/agentic/index.d.ts +12 -0
  459. package/types/store/agentic/useFieldTool.d.ts +22 -0
  460. package/types/store/agentic/useFormTools.d.ts +19 -0
  461. package/types/store/agentic/useRelationFieldTool.d.ts +27 -0
  462. package/types/store/agentic.d.ts +1 -0
  463. package/types/store/baseSt.d.ts +35 -39
  464. package/types/store/databaseStateNames.d.ts +25 -0
  465. package/types/store/formSetterNames.d.ts +30 -0
  466. package/types/store/index.d.ts +7 -0
  467. package/types/store/rootStore.d.ts +5 -1
  468. package/types/store/sliceRole.d.ts +25 -0
  469. package/types/store/store.d.ts +5 -1
  470. package/types/store/storeInstance.d.ts +33 -1
  471. package/types/store/storeRegistry.d.ts +5 -0
  472. package/types/store/types.d.ts +4 -0
  473. package/types/store/withSelector.d.ts +5 -4
  474. package/types/test/index.d.ts +1 -1
  475. package/types/test/registerDom.d.ts +1 -0
  476. package/types/test/signalTestRuntime.d.ts +2 -3
  477. package/types/test/testServer.d.ts +6 -4
  478. package/types/ui/Agent/Approval.d.ts +8 -0
  479. package/types/ui/Agent/Attach.d.ts +16 -0
  480. package/types/ui/Agent/Bubble.d.ts +26 -0
  481. package/types/ui/Agent/Chat.d.ts +91 -0
  482. package/types/ui/Agent/ChatCommands.d.ts +34 -0
  483. package/types/ui/Agent/Composer.d.ts +23 -0
  484. package/types/ui/Agent/Context.d.ts +13 -0
  485. package/types/ui/Agent/Dock.d.ts +17 -0
  486. package/types/ui/Agent/Guide.d.ts +9 -0
  487. package/types/ui/Agent/History.d.ts +26 -0
  488. package/types/ui/Agent/Launcher.d.ts +16 -0
  489. package/types/ui/Agent/Markdown.d.ts +19 -0
  490. package/types/ui/Agent/Menu.d.ts +18 -0
  491. package/types/ui/Agent/Mic.d.ts +8 -0
  492. package/types/ui/Agent/Question.d.ts +14 -0
  493. package/types/ui/Agent/Section.d.ts +10 -0
  494. package/types/ui/Agent/Skip.d.ts +22 -0
  495. package/types/ui/Agent/StateKey.d.ts +16 -0
  496. package/types/ui/Agent/Tool.d.ts +15 -0
  497. package/types/ui/Agent/Transcript.d.ts +13 -0
  498. package/types/ui/Agent/Zone.d.ts +48 -0
  499. package/types/ui/Agent/agentSessionOf.d.ts +27 -0
  500. package/types/ui/Agent/attachment.d.ts +34 -0
  501. package/types/ui/Agent/fetchRunner.d.ts +12 -0
  502. package/types/ui/Agent/index.d.ts +19 -0
  503. package/types/ui/Agent/index_.d.ts +1 -0
  504. package/types/ui/Agent/markdownBlocks.d.ts +35 -0
  505. package/types/ui/Agent/markdownSpans.d.ts +2 -0
  506. package/types/ui/Agent/markdownTable.d.ts +16 -0
  507. package/types/ui/Agent/sessionHistory.d.ts +14 -0
  508. package/types/ui/Agent/sessionView.d.ts +15 -0
  509. package/types/ui/Agent/tokenCount.d.ts +6 -0
  510. package/types/ui/Agent/useChatAttachments.d.ts +24 -0
  511. package/types/ui/Agent/useChatVoice.d.ts +30 -0
  512. package/types/ui/Agent/useDraftRecall.d.ts +14 -0
  513. package/types/ui/Agent/useKeyboardInset.d.ts +8 -0
  514. package/types/ui/Agent/useSlashMenu.d.ts +24 -0
  515. package/types/ui/Agent/voice.d.ts +71 -0
  516. package/types/ui/Agent.d.ts +1 -0
  517. package/types/ui/Badge.d.ts +1 -1
  518. package/types/ui/Button.d.ts +1 -1
  519. package/types/ui/Constant/Graph.d.ts +10 -0
  520. package/types/ui/Constant/index.d.ts +2 -1
  521. package/types/ui/Constant/schemaGraph.d.ts +39 -0
  522. package/types/ui/Data/Dashboard.d.ts +16 -3
  523. package/types/ui/Data/Insight.d.ts +1 -1
  524. package/types/ui/Data/ListContainer.d.ts +15 -7
  525. package/types/ui/Data/QueryMaker.d.ts +45 -3
  526. package/types/ui/Data/RefPicker.d.ts +16 -0
  527. package/types/ui/Data/dataExport.d.ts +5 -0
  528. package/types/ui/Data/dataText.d.ts +6 -0
  529. package/types/ui/Data/index.d.ts +2 -0
  530. package/types/ui/Data/index_.d.ts +1 -0
  531. package/types/ui/DatePicker.d.ts +15 -11
  532. package/types/ui/Dialog/LegacyModal.d.ts +13 -0
  533. package/types/ui/Dialog/Provider.d.ts +3 -1
  534. package/types/ui/Dialog/context.d.ts +9 -1
  535. package/types/ui/Dialog/index.d.ts +1 -0
  536. package/types/ui/DraggableList.d.ts +1 -1
  537. package/types/ui/Dropdown.d.ts +5 -1
  538. package/types/ui/Field/Choice.d.ts +52 -0
  539. package/types/ui/Field/Collection.d.ts +51 -0
  540. package/types/ui/Field/DateField.d.ts +32 -0
  541. package/types/ui/Field/Label.d.ts +9 -0
  542. package/types/ui/Field/NumberField.d.ts +43 -0
  543. package/types/ui/Field/Relation.d.ts +80 -0
  544. package/types/ui/Field/Text.d.ts +101 -0
  545. package/types/ui/Field/index.d.ts +50 -0
  546. package/types/ui/Field.d.ts +1 -411
  547. package/types/ui/Layout/BottomTab.d.ts +3 -2
  548. package/types/ui/LegacyModal.d.ts +24 -0
  549. package/types/ui/Load/Edit_Client.d.ts +3 -1
  550. package/types/ui/Load/Stream.d.ts +22 -0
  551. package/types/ui/Load/index.d.ts +2 -0
  552. package/types/ui/Loading/ProgressBar.d.ts +4 -0
  553. package/types/ui/Loading/Spin.d.ts +2 -1
  554. package/types/ui/Loading/index_.d.ts +13 -0
  555. package/types/ui/Model/AdminPanel.d.ts +15 -3
  556. package/types/ui/Model/EditModal.d.ts +1 -1
  557. package/types/ui/Model/New.d.ts +3 -1
  558. package/types/ui/Model/NewWrapper.d.ts +2 -0
  559. package/types/ui/Model/NewWrapper_Client.d.ts +2 -1
  560. package/types/ui/Pagination.d.ts +2 -2
  561. package/types/ui/Radio.d.ts +1 -1
  562. package/types/ui/RecentTime.d.ts +18 -1
  563. package/types/ui/Reference/Collapse.d.ts +11 -0
  564. package/types/ui/Reference/Panel.d.ts +29 -0
  565. package/types/ui/Reference/Segmented.d.ts +17 -0
  566. package/types/ui/Reference/Summary.d.ts +13 -0
  567. package/types/ui/Reference/Toolbar.d.ts +21 -0
  568. package/types/ui/Reference/dictText.d.ts +6 -0
  569. package/types/ui/Reference/index.d.ts +7 -0
  570. package/types/ui/Reference/style.d.ts +20 -0
  571. package/types/ui/Reference.d.ts +1 -0
  572. package/types/ui/ScreenNavigator.d.ts +3 -1
  573. package/types/ui/Signal/Arg.d.ts +7 -3
  574. package/types/ui/Signal/Doc.d.ts +4 -6
  575. package/types/ui/Signal/Object.d.ts +2 -1
  576. package/types/ui/Signal/RestApi.d.ts +2 -1
  577. package/types/ui/Signal/WebSocket.d.ts +2 -1
  578. package/types/ui/Signal/endpointEntries.d.ts +20 -0
  579. package/types/ui/Signal/style.d.ts +9 -8
  580. package/types/ui/System/Client.d.ts +1 -2
  581. package/types/ui/System/Common.d.ts +3 -4
  582. package/types/ui/System/Messages.d.ts +1 -1
  583. package/types/ui/System/Root.d.ts +4 -0
  584. package/types/ui/Tab/Provider.d.ts +3 -1
  585. package/types/ui/Tab/context.d.ts +4 -2
  586. package/types/ui/ToggleSelect.d.ts +1 -0
  587. package/types/ui/UiOverride/context.d.ts +18 -1
  588. package/types/ui/agentAttrs.d.ts +14 -0
  589. package/types/ui/index.d.ts +22 -1
  590. package/types/ui/overlayLayer.d.ts +13 -0
  591. package/types/ui/overlayPosition.d.ts +28 -0
  592. package/types/ui/recipe/badgeRecipe.d.ts +2 -2
  593. package/types/ui/recipe/buttonRecipe.d.ts +2 -2
  594. package/types/vendor/use-agentic/AgentAbort.d.ts +17 -0
  595. package/types/vendor/use-agentic/AgentProgress.d.ts +27 -0
  596. package/types/vendor/use-agentic/AgentProvider.d.ts +17 -0
  597. package/types/vendor/use-agentic/AgentScope.d.ts +9 -0
  598. package/types/vendor/use-agentic/AgentSession.d.ts +163 -0
  599. package/types/vendor/use-agentic/Agentic.d.ts +21 -0
  600. package/types/vendor/use-agentic/AgenticSurface.d.ts +58 -0
  601. package/types/vendor/use-agentic/Compaction.d.ts +48 -0
  602. package/types/vendor/use-agentic/ToolOutput.d.ts +21 -0
  603. package/types/vendor/use-agentic/Transcript.d.ts +18 -0
  604. package/types/vendor/use-agentic/httpRunner.d.ts +15 -0
  605. package/types/vendor/use-agentic/index.d.ts +19 -0
  606. package/types/vendor/use-agentic/sharedContext.d.ts +15 -0
  607. package/types/vendor/use-agentic/surfaceContext.d.ts +5 -0
  608. package/types/vendor/use-agentic/types.d.ts +182 -0
  609. package/types/vendor/use-agentic/useAgent.d.ts +4 -0
  610. package/types/vendor/use-agentic/useAgentGuide.d.ts +6 -0
  611. package/types/vendor/use-agentic/useAgentResource.d.ts +12 -0
  612. package/types/vendor/use-agentic/useAgentState.d.ts +16 -0
  613. package/types/vendor/use-agentic/useAgentTool.d.ts +16 -0
  614. package/types/vendor/use-agentic.d.ts +1 -0
  615. package/types/webkit/index.d.ts +4 -0
  616. package/types/webkit/useBodyScrollLock.d.ts +2 -0
  617. package/types/webkit/useCamera.d.ts +10 -1
  618. package/types/webkit/usePageTool.d.ts +19 -0
  619. package/types/webkit/usePurchase.d.ts +4 -0
  620. package/types/webkit/useScreenScope.d.ts +25 -0
  621. package/ui/Agent/Approval.tsx +32 -0
  622. package/ui/Agent/Attach.tsx +77 -0
  623. package/ui/Agent/Bubble.tsx +192 -0
  624. package/ui/Agent/Chat.tsx +525 -0
  625. package/ui/Agent/ChatCommands.ts +141 -0
  626. package/ui/Agent/Composer.tsx +94 -0
  627. package/ui/Agent/Context.tsx +49 -0
  628. package/ui/Agent/Dock.tsx +77 -0
  629. package/ui/Agent/Guide.tsx +16 -0
  630. package/ui/Agent/History.tsx +49 -0
  631. package/ui/Agent/Launcher.tsx +60 -0
  632. package/ui/Agent/Markdown.tsx +142 -0
  633. package/ui/Agent/Menu.tsx +55 -0
  634. package/ui/Agent/Mic.tsx +27 -0
  635. package/ui/Agent/Question.tsx +63 -0
  636. package/ui/Agent/Section.tsx +24 -0
  637. package/ui/Agent/Skip.tsx +30 -0
  638. package/ui/Agent/StateKey.tsx +46 -0
  639. package/ui/Agent/Tool.tsx +59 -0
  640. package/ui/Agent/Transcript.tsx +33 -0
  641. package/ui/Agent/Zone.tsx +116 -0
  642. package/ui/Agent/agentSessionOf.ts +60 -0
  643. package/ui/Agent/attachment.ts +73 -0
  644. package/ui/Agent/fetchRunner.ts +44 -0
  645. package/ui/Agent/index.ts +27 -0
  646. package/ui/Agent/index_.tsx +4 -0
  647. package/ui/Agent/markdownBlocks.ts +137 -0
  648. package/ui/Agent/markdownSpans.tsx +49 -0
  649. package/ui/Agent/markdownTable.ts +54 -0
  650. package/ui/Agent/sessionHistory.ts +62 -0
  651. package/ui/Agent/sessionView.ts +38 -0
  652. package/ui/Agent/tokenCount.ts +10 -0
  653. package/ui/Agent/useChatAttachments.ts +84 -0
  654. package/ui/Agent/useChatVoice.ts +129 -0
  655. package/ui/Agent/useDraftRecall.ts +42 -0
  656. package/ui/Agent/useKeyboardInset.ts +26 -0
  657. package/ui/Agent/useSlashMenu.ts +58 -0
  658. package/ui/Agent/voice.ts +177 -0
  659. package/ui/Badge.tsx +1 -1
  660. package/ui/BottomSheet.tsx +32 -36
  661. package/ui/Button.tsx +3 -1
  662. package/ui/Clipboard.tsx +3 -6
  663. package/ui/Constant/Doc.tsx +265 -254
  664. package/ui/Constant/Graph.tsx +151 -0
  665. package/ui/Constant/index.ts +3 -2
  666. package/ui/Constant/schemaGraph.ts +232 -0
  667. package/ui/Data/CardList.tsx +14 -3
  668. package/ui/Data/Dashboard.tsx +70 -52
  669. package/ui/Data/Insight.tsx +18 -12
  670. package/ui/Data/Item.tsx +42 -56
  671. package/ui/Data/ListContainer.tsx +246 -132
  672. package/ui/Data/Pagination.tsx +10 -3
  673. package/ui/Data/QueryMaker.tsx +160 -11
  674. package/ui/Data/RefPicker.tsx +202 -0
  675. package/ui/Data/TableList.tsx +22 -13
  676. package/ui/Data/dataExport.ts +54 -0
  677. package/ui/Data/dataText.ts +22 -0
  678. package/ui/Data/index.ts +13 -1
  679. package/ui/Data/index_.tsx +1 -0
  680. package/ui/DatePicker.tsx +110 -128
  681. package/ui/Dialog/Close.tsx +3 -7
  682. package/ui/Dialog/LegacyModal.tsx +241 -0
  683. package/ui/Dialog/Modal.tsx +62 -195
  684. package/ui/Dialog/Provider.tsx +47 -3
  685. package/ui/Dialog/Trigger.tsx +3 -7
  686. package/ui/Dialog/context.ts +14 -2
  687. package/ui/Dialog/index.tsx +2 -0
  688. package/ui/DragAction.tsx +3 -2
  689. package/ui/DraggableList.tsx +10 -6
  690. package/ui/Dropdown.tsx +89 -27
  691. package/ui/Empty.tsx +6 -4
  692. package/ui/Field/Choice.tsx +172 -0
  693. package/ui/Field/Collection.tsx +293 -0
  694. package/ui/Field/DateField.tsx +138 -0
  695. package/ui/Field/Label.tsx +31 -0
  696. package/ui/Field/NumberField.tsx +169 -0
  697. package/ui/Field/Relation.tsx +387 -0
  698. package/ui/Field/Text.tsx +360 -0
  699. package/ui/Field/index.tsx +70 -0
  700. package/ui/Input.tsx +30 -8
  701. package/ui/KeyboardAvoiding.tsx +2 -2
  702. package/ui/Layout/BottomTab.tsx +32 -37
  703. package/ui/Layout/Sider.tsx +37 -14
  704. package/ui/LegacyModal.tsx +53 -0
  705. package/ui/Link/CsrLink.tsx +1 -1
  706. package/ui/Load/Edit.tsx +2 -2
  707. package/ui/Load/Edit_Client.tsx +11 -3
  708. package/ui/Load/Pagination.tsx +35 -28
  709. package/ui/Load/Stream.tsx +38 -0
  710. package/ui/Load/Units.tsx +76 -40
  711. package/ui/Load/View.tsx +34 -19
  712. package/ui/Load/index.ts +2 -0
  713. package/ui/Loading/Area.tsx +7 -6
  714. package/ui/Loading/Button.tsx +7 -9
  715. package/ui/Loading/Input.tsx +7 -9
  716. package/ui/Loading/ProgressBar.tsx +16 -7
  717. package/ui/Loading/Skeleton.tsx +8 -13
  718. package/ui/Loading/Spin.tsx +20 -14
  719. package/ui/Loading/index.ts +15 -0
  720. package/ui/Loading/index_.tsx +22 -0
  721. package/ui/Menu.tsx +1 -1
  722. package/ui/Model/AdminPanel.tsx +52 -12
  723. package/ui/Model/EditModal.tsx +35 -13
  724. package/ui/Model/EditWrapper.tsx +16 -4
  725. package/ui/Model/New.tsx +4 -0
  726. package/ui/Model/NewWrapper.tsx +2 -0
  727. package/ui/Model/NewWrapper_Client.tsx +20 -6
  728. package/ui/Model/Remove.tsx +18 -6
  729. package/ui/Model/RemoveWrapper.tsx +12 -2
  730. package/ui/Model/SureToRemove.tsx +18 -6
  731. package/ui/Model/ViewEditModal.tsx +64 -15
  732. package/ui/Model/ViewModal.tsx +25 -11
  733. package/ui/Model/ViewWrapper.tsx +15 -4
  734. package/ui/Model/index_.tsx +1 -1
  735. package/ui/Pagination.tsx +51 -66
  736. package/ui/Popconfirm.tsx +88 -78
  737. package/ui/Radio.tsx +53 -24
  738. package/ui/RecentTime.tsx +83 -35
  739. package/ui/Reference/Collapse.tsx +26 -0
  740. package/ui/Reference/Panel.tsx +79 -0
  741. package/ui/Reference/Segmented.tsx +41 -0
  742. package/ui/Reference/Summary.tsx +25 -0
  743. package/ui/Reference/Toolbar.tsx +44 -0
  744. package/ui/Reference/dictText.ts +9 -0
  745. package/ui/Reference/index.ts +7 -0
  746. package/ui/Reference/style.ts +45 -0
  747. package/ui/ScreenNavigator.tsx +17 -2
  748. package/ui/Select.tsx +96 -57
  749. package/ui/Signal/Arg.tsx +83 -68
  750. package/ui/Signal/Doc.tsx +163 -129
  751. package/ui/Signal/Listener.tsx +40 -29
  752. package/ui/Signal/Message.tsx +94 -142
  753. package/ui/Signal/Object.tsx +79 -57
  754. package/ui/Signal/PubSub.tsx +76 -114
  755. package/ui/Signal/Request.tsx +2 -22
  756. package/ui/Signal/Response.tsx +19 -45
  757. package/ui/Signal/RestApi.tsx +170 -200
  758. package/ui/Signal/WebSocket.tsx +29 -26
  759. package/ui/Signal/endpointEntries.ts +59 -0
  760. package/ui/Signal/makeExample.ts +10 -3
  761. package/ui/Signal/style.ts +34 -29
  762. package/ui/Switch.tsx +4 -0
  763. package/ui/System/CSR.tsx +1 -1
  764. package/ui/System/Client.tsx +31 -17
  765. package/ui/System/Common.tsx +3 -4
  766. package/ui/System/DevModeToggle.tsx +1 -1
  767. package/ui/System/Gtag.tsx +3 -3
  768. package/ui/System/Messages.tsx +52 -31
  769. package/ui/System/Reconnect.tsx +22 -56
  770. package/ui/System/Root.tsx +4 -0
  771. package/ui/System/SelectLanguage.tsx +24 -15
  772. package/ui/System/ThemeToggle.tsx +25 -13
  773. package/ui/Tab/Menu.tsx +24 -12
  774. package/ui/Tab/Menus.tsx +6 -3
  775. package/ui/Tab/Provider.tsx +30 -3
  776. package/ui/Tab/context.ts +8 -4
  777. package/ui/Table.tsx +66 -60
  778. package/ui/ToggleSelect.tsx +8 -7
  779. package/ui/Tooltip.tsx +15 -1
  780. package/ui/UiOverride/context.ts +21 -2
  781. package/ui/Unauthorized.tsx +6 -4
  782. package/ui/agentAttrs.ts +19 -0
  783. package/ui/index.ts +49 -1
  784. package/ui/overlayLayer.ts +12 -2
  785. package/ui/overlayPosition.ts +103 -0
  786. package/ui/recipe/buttonRecipe.ts +2 -2
  787. package/ui/styles.css +31 -0
  788. package/vendor/use-agentic/AgentAbort.ts +29 -0
  789. package/vendor/use-agentic/AgentProgress.ts +40 -0
  790. package/vendor/use-agentic/AgentProvider.tsx +39 -0
  791. package/vendor/use-agentic/AgentScope.tsx +20 -0
  792. package/vendor/use-agentic/AgentSession.ts +750 -0
  793. package/vendor/use-agentic/Agentic.tsx +44 -0
  794. package/vendor/use-agentic/AgenticSurface.ts +333 -0
  795. package/vendor/use-agentic/Compaction.ts +120 -0
  796. package/vendor/use-agentic/ToolOutput.ts +60 -0
  797. package/vendor/use-agentic/Transcript.ts +50 -0
  798. package/vendor/use-agentic/WIRE.md +86 -0
  799. package/vendor/use-agentic/httpRunner.ts +131 -0
  800. package/vendor/use-agentic/index.ts +20 -0
  801. package/vendor/use-agentic/sharedContext.ts +25 -0
  802. package/vendor/use-agentic/surfaceContext.ts +10 -0
  803. package/vendor/use-agentic/types.ts +192 -0
  804. package/vendor/use-agentic/useAgent.ts +18 -0
  805. package/vendor/use-agentic/useAgentGuide.ts +16 -0
  806. package/vendor/use-agentic/useAgentResource.ts +36 -0
  807. package/vendor/use-agentic/useAgentState.ts +64 -0
  808. package/vendor/use-agentic/useAgentTool.ts +55 -0
  809. package/webkit/bootCsr.tsx +10 -8
  810. package/webkit/index.ts +4 -0
  811. package/webkit/lazy.tsx +5 -1
  812. package/webkit/useBodyScrollLock.tsx +29 -0
  813. package/webkit/useCamera.tsx +22 -6
  814. package/webkit/useCodepush.tsx +2 -2
  815. package/webkit/useCsrValues.ts +1 -3
  816. package/webkit/useFetch.ts +4 -3
  817. package/webkit/useFrameRuntime.ts +15 -8
  818. package/webkit/usePageTool.tsx +37 -0
  819. package/webkit/usePurchase.tsx +4 -1
  820. package/webkit/useScreenScope.tsx +60 -0
  821. package/fetch/serializer/fetch.serializer.ts +0 -142
  822. package/fetch/serializer/index.ts +0 -1
  823. package/types/common/httpClient.d.ts +0 -20
  824. package/types/fetch/serializer/fetch.serializer.d.ts +0 -14
  825. package/types/fetch/serializer/index.d.ts +0 -1
  826. package/types/fetch/serializer.d.ts +0 -1
  827. package/types/ui/Constant/Mermaid.d.ts +0 -8
  828. package/types/ui/Signal/Collapse.d.ts +0 -12
  829. package/ui/Constant/Mermaid.tsx +0 -149
  830. package/ui/Field.tsx +0 -1569
  831. package/ui/Loading/index.tsx +0 -22
  832. package/ui/Signal/Collapse.tsx +0 -29
package/client/types.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { BaseInsight } from "akanjs/constant";
2
- import type { FetchInitForm, SliceMeta } from "akanjs/fetch";
2
+ import type { FetchInitForm, QuerySetting, SliceMeta } from "akanjs/fetch";
3
3
  import type { ReactElement, ReactNode } from "react";
4
4
 
5
5
  export type ReactFontStyle = "normal" | "italic" | "oblique";
@@ -109,7 +109,7 @@ const slugFontPart = (value: string) =>
109
109
  export interface ModelsProps<M extends { id: string }> {
110
110
  className?: string;
111
111
  slice?: SliceMeta;
112
- query?: Record<string, unknown>;
112
+ query?: QuerySetting;
113
113
  init?: FetchInitForm<any, any>;
114
114
  onClickItem?: (model: M) => unknown;
115
115
  }
@@ -127,7 +127,7 @@ export type ModelProps<T extends string, L extends { id: string }> = { [key in T
127
127
  export interface ModelDashboardProps<Summary> {
128
128
  className?: string;
129
129
  summary: Summary;
130
- queryMap?: Record<string, unknown>;
130
+ queryMap?: { [column: string]: QuerySetting };
131
131
  columns?: (keyof Summary)[];
132
132
  hidePresents?: boolean;
133
133
  slice?: SliceMeta;
package/common/Logger.ts CHANGED
@@ -1,17 +1,64 @@
1
1
  import dayjs from "dayjs";
2
+ import { type LogContextSnapshot, readLogContext } from "./logContext";
2
3
 
3
- const logLevels = ["trace", "verbose", "debug", "log", "info", "warn", "error"] as const;
4
+ export const logLevels = ["trace", "verbose", "debug", "info", "warn", "error"] as const;
4
5
  export type LogLevel = (typeof logLevels)[number];
6
+ export type LogLevelInput = LogLevel | "log";
7
+
8
+ export const logSeverity = { trace: 1, verbose: 3, debug: 5, info: 9, warn: 13, error: 17 } as const satisfies {
9
+ [key in LogLevel]: number;
10
+ };
11
+
12
+ /** `text` is the human console line; the `ndjson` pair make the container's stdout one JSON record per line. */
13
+ export const logFormats = ["text", "ndjson", "ndjson-only"] as const;
14
+ export type LogFormat = (typeof logFormats)[number];
15
+
16
+ export type LogAttrValue = string | number | boolean | null;
17
+ export interface LogAttrs {
18
+ [key: string]: LogAttrValue;
19
+ }
20
+
21
+ export interface LogRecord {
22
+ at: number;
23
+ /** Milliseconds since the producing process started — what the `+Nms` in the rendered line shows. */
24
+ elapsedMs: number;
25
+ level: LogLevel | null;
26
+ sev: number;
27
+ name: string;
28
+ context: string;
29
+ message: string;
30
+ stream: "stdout" | "stderr";
31
+ pid: number | null;
32
+ replicaIdx: number | null;
33
+ role: string | null;
34
+ origin: string | null;
35
+ traceId: string | null;
36
+ endpoint: string | null;
37
+ attrs?: LogAttrs;
38
+ }
5
39
 
6
40
  export interface LoggerSinkEntry {
7
41
  stream: "stdout" | "stderr";
8
42
  level?: LogLevel;
9
43
  message: string;
10
44
  plainMessage: string;
45
+ record: LogRecord;
11
46
  }
12
47
 
13
48
  export type LoggerSink = (entry: LoggerSinkEntry) => void | Promise<void>;
14
49
 
50
+ export interface LoggerSinkOptions {
51
+ minLevel?: LogLevelInput;
52
+ }
53
+
54
+ export interface LoggerEmitInput {
55
+ level: LogLevel;
56
+ name: string;
57
+ message: string;
58
+ context?: string;
59
+ attrs?: LogAttrs;
60
+ }
61
+
15
62
  const clc = {
16
63
  bold: (text: string) => `\x1B[1m${text}\x1B[0m`,
17
64
  green: (text: string) => `\x1B[32m${text}\x1B[39m`,
@@ -25,7 +72,6 @@ const colorizeMap: { [key in LogLevel]: (text: string) => string } = {
25
72
  trace: clc.bold,
26
73
  verbose: clc.cyanBright,
27
74
  debug: clc.magentaBright,
28
- log: clc.green,
29
75
  info: clc.green,
30
76
  warn: clc.yellow,
31
77
  error: clc.red,
@@ -33,36 +79,129 @@ const colorizeMap: { [key in LogLevel]: (text: string) => string } = {
33
79
 
34
80
  const ansiPattern = new RegExp(`${String.fromCharCode(27)}\\[[0-?]*[ -/]*[@-~]`, "g");
35
81
 
82
+ const redactedAttrKey = /password|passwd|token|jwt|authorization|cookie|secret|api[-_]?key|private[-_]?key/i;
83
+
84
+ /**
85
+ * `process.env?.X` guards only `env` being absent, never `process` itself — an undeclared `process` is a
86
+ * ReferenceError, and at module scope that takes the whole client bundle with it. This is the most widely
87
+ * imported file in `common/`, and the unguarded form works today only because the browser build ships a shim.
88
+ */
89
+ const envValue = (key: string): string | undefined => (typeof process === "undefined" ? undefined : process.env?.[key]);
90
+
36
91
  /** Log-level aware logger used by Akan runtime, CLI, and application services. */
37
92
  export class Logger {
38
- static level: LogLevel = (process.env?.AKAN_PUBLIC_LOG_LEVEL as LogLevel | undefined) ?? "log";
39
- static #levelIdx = logLevels.findIndex((l) => l === (process.env?.AKAN_PUBLIC_LOG_LEVEL ?? "log"));
40
- static fileLevel: LogLevel = (process.env?.AKAN_LOG_FILE_LEVEL as LogLevel | undefined) ?? "trace";
41
- static #fileLevelIdx = logLevels.findIndex((l) => l === (process.env?.AKAN_LOG_FILE_LEVEL ?? "trace"));
42
- static #startAt = dayjs();
43
- static #sinks = new Set<LoggerSink>();
44
-
45
- static setLevel(level: LogLevel) {
46
- Logger.level = level;
47
- Logger.#levelIdx = logLevels.indexOf(level);
48
- }
49
- static addSink(sink: LoggerSink) {
50
- Logger.#sinks.add(sink);
93
+ /** `AKAN_LOG_STDOUT_LEVEL` names what the container's stdout carries; without it the console level is that. */
94
+ static level: LogLevel = Logger.#levelFromEnv(
95
+ envValue("AKAN_LOG_STDOUT_LEVEL"),
96
+ Logger.#levelFromEnv(envValue("AKAN_PUBLIC_LOG_LEVEL"), "info"),
97
+ );
98
+ static fileLevel: LogLevel = Logger.#levelFromEnv(envValue("AKAN_LOG_FILE_LEVEL"), "trace");
99
+ static format: LogFormat = Logger.#formatFromEnv(envValue("AKAN_LOG_FORMAT"));
100
+ /** Which process this is (`gateway`, `all`, `batch`, `rsc-worker`); the owner sets it at boot. */
101
+ static role: string | null = envValue("SERVER_MODE") ?? null;
102
+ /**
103
+ * Whether this process writes its own lines to the terminal. Off in every server process of an ndjson
104
+ * deployment: the hub owner writes the one JSON stream, and a text line from anyone would corrupt it.
105
+ */
106
+ static consoleOutput = true;
107
+ /** Set by the trace layer when a flight recorder or a per-request debug floor can be active. */
108
+ static contextGate = false;
109
+ static readonly startAt = Date.now();
110
+ static #consoleSev: number = logSeverity[Logger.level];
111
+ static #fileSev: number = logSeverity[Logger.fileLevel];
112
+ static #sinkFloorSev = Number.POSITIVE_INFINITY;
113
+ static #sinks = new Map<LoggerSink, number | null>();
114
+
115
+ static setLevel(level: LogLevelInput) {
116
+ Logger.level = Logger.normalizeLevel(level);
117
+ Logger.#consoleSev = logSeverity[Logger.level];
118
+ }
119
+ static setFileLevel(level: LogLevelInput) {
120
+ Logger.fileLevel = Logger.normalizeLevel(level);
121
+ Logger.#fileSev = logSeverity[Logger.fileLevel];
122
+ Logger.#refreshSinkFloor();
123
+ }
124
+ static addSink(sink: LoggerSink, { minLevel }: LoggerSinkOptions = {}) {
125
+ Logger.#sinks.set(sink, minLevel === undefined ? null : logSeverity[Logger.normalizeLevel(minLevel)]);
126
+ Logger.#refreshSinkFloor();
51
127
  return () => Logger.removeSink(sink);
52
128
  }
53
129
  static removeSink(sink: LoggerSink) {
54
130
  Logger.#sinks.delete(sink);
55
- }
56
- static setFileLevel(level: LogLevel) {
57
- Logger.fileLevel = level;
58
- Logger.#fileLevelIdx = logLevels.indexOf(level);
131
+ Logger.#refreshSinkFloor();
59
132
  }
60
133
  static isVerbose() {
61
- return Logger.#levelIdx <= 1;
134
+ return Logger.#consoleSev <= logSeverity.verbose;
135
+ }
136
+ static get isNdjson() {
137
+ return Logger.format !== "text";
62
138
  }
63
139
  /** For hot-path callers that would otherwise build a message the level is about to discard. */
64
- static shouldLog(logLevel: LogLevel) {
65
- return Logger.#shouldLog(logLevel);
140
+ static shouldLog(logLevel: LogLevelInput) {
141
+ return Logger.#shouldLog(Logger.normalizeLevel(logLevel));
142
+ }
143
+ static normalizeLevel(level: LogLevelInput): LogLevel {
144
+ return level === "log" ? "info" : level;
145
+ }
146
+ /** The lowest named level whose severity is at least `sev`. */
147
+ static levelAtOrAbove(sev: number): LogLevel {
148
+ return logLevels.find((level) => logSeverity[level] >= sev) ?? "error";
149
+ }
150
+ static render(record: LogRecord): string {
151
+ const level = record.level;
152
+ if (level === null) return record.message;
153
+ const replicaMsg = record.replicaIdx === null ? "" : `#${record.replicaIdx} `;
154
+ const processMsg = Logger.#colorize(`[${record.name}] ${replicaMsg}${record.pid ?? "window"} -`, level);
155
+ const timestampMsg = dayjs(record.at).format("MM/DD/YYYY, HH:mm:ss A");
156
+ const logLevelMsg = Logger.#colorize(level.toUpperCase().padStart(7, " "), level);
157
+ const contextMsg = record.context ? clc.yellow(`[${record.context}] `) : "";
158
+ const contentMsg = Logger.#colorize(record.message, level);
159
+ const attrsMsg = record.attrs ? Logger.formatAttrs(record.attrs) : "";
160
+ const timeDiffMsg = clc.yellow(`+${record.elapsedMs}ms`);
161
+ return `${processMsg} ${timestampMsg} ${logLevelMsg} ${contextMsg} ${contentMsg}${attrsMsg ? ` ${attrsMsg}` : ""} ${timeDiffMsg}\n`;
162
+ }
163
+ /** `key=value` pairs; a string with whitespace is quoted so the line stays splittable. */
164
+ static formatAttrs(attrs: LogAttrs): string {
165
+ return Object.entries(attrs)
166
+ .map(
167
+ ([key, value]) =>
168
+ `${key}=${typeof value === "string" && /\s/.test(value) ? JSON.stringify(value) : String(value)}`,
169
+ )
170
+ .join(" ");
171
+ }
172
+ /**
173
+ * A record somebody asked for below the level — a failed call's flight recorder, a request carrying
174
+ * `x-akan-debug` — passes every floor between here and the reader; the floors exist to drop what nobody asked for.
175
+ */
176
+ static isPromoted(record: LogRecord) {
177
+ return record.attrs?.flight === true || record.attrs?.debug === true;
178
+ }
179
+ static redactAttrs(attrs: LogAttrs): LogAttrs {
180
+ let redacted: LogAttrs | null = null;
181
+ for (const key of Object.keys(attrs)) {
182
+ if (!redactedAttrKey.test(key)) continue;
183
+ redacted ??= { ...attrs };
184
+ redacted[key] = "[redacted]";
185
+ }
186
+ return redacted ?? attrs;
187
+ }
188
+ /** A structured record from a caller that has more than a sentence to say — the canonical request line. */
189
+ static emit({ level, name, message, context = "", attrs }: LoggerEmitInput) {
190
+ if (Logger.#shouldLog(level)) Logger.#write(name, message, context, level, attrs);
191
+ }
192
+ /**
193
+ * Writes records that were captured below the gate and are now promoted — a failed request's flight
194
+ * recorder. They bypass the console level, since not showing them is what the recorder was for, and reach
195
+ * sinks under their own floors; each is marked `flight` so a reader knows why a trace line appears at info.
196
+ */
197
+ static replay(records: LogRecord[], { evicted = 0 }: { evicted?: number } = {}) {
198
+ records.forEach((record, idx) => {
199
+ const attrs: LogAttrs = { ...record.attrs, flight: true };
200
+ if (idx === 0 && evicted > 0) attrs.flightEvicted = evicted;
201
+ const entry = Logger.#entry({ ...record, attrs });
202
+ Logger.#emit(entry);
203
+ Logger.#writeConsole(entry);
204
+ });
66
205
  }
67
206
 
68
207
  name?: string;
@@ -70,25 +209,26 @@ export class Logger {
70
209
  this.name = name;
71
210
  }
72
211
  trace(msg: string, context = "", name = this.name ?? "App") {
73
- if (Logger.#shouldLog("trace")) Logger.#printMessages(name, msg, context, "trace");
212
+ if (Logger.#shouldLog("trace")) Logger.#write(name, msg, context, "trace");
74
213
  }
75
214
  verbose(msg: string, context = "", name = this.name ?? "App") {
76
- if (Logger.#shouldLog("verbose")) Logger.#printMessages(name, msg, context, "verbose");
215
+ if (Logger.#shouldLog("verbose")) Logger.#write(name, msg, context, "verbose");
77
216
  }
78
217
  debug(msg: string, context = "", name = this.name ?? "App") {
79
- if (Logger.#shouldLog("debug")) Logger.#printMessages(name, msg, context, "debug");
218
+ if (Logger.#shouldLog("debug")) Logger.#write(name, msg, context, "debug");
80
219
  }
220
+ /** @deprecated Emits at `info`; call `info()`. */
81
221
  log(msg: string, context = "", name = this.name ?? "App") {
82
- if (Logger.#shouldLog("log")) Logger.#printMessages(name, msg, context, "log");
222
+ if (Logger.#shouldLog("info")) Logger.#write(name, msg, context, "info");
83
223
  }
84
224
  info(msg: string, context = "", name = this.name ?? "App") {
85
- if (Logger.#shouldLog("info")) Logger.#printMessages(name, msg, context, "info");
225
+ if (Logger.#shouldLog("info")) Logger.#write(name, msg, context, "info");
86
226
  }
87
227
  warn(msg: string, context = "", name = this.name ?? "App") {
88
- if (Logger.#shouldLog("warn")) Logger.#printMessages(name, msg, context, "warn");
228
+ if (Logger.#shouldLog("warn")) Logger.#write(name, msg, context, "warn");
89
229
  }
90
230
  error(msg: string, context = "", name = this.name ?? "App") {
91
- if (Logger.#shouldLog("error")) Logger.#printMessages(name, msg, context, "error");
231
+ if (Logger.#shouldLog("error")) Logger.#write(name, msg, context, "error");
92
232
  }
93
233
  raw(msg: string, method?: "console" | "process") {
94
234
  Logger.rawLog(msg, method);
@@ -96,86 +236,166 @@ export class Logger {
96
236
  rawLog(msg: string, method?: "console" | "process") {
97
237
  Logger.rawLog(msg, method);
98
238
  }
99
-
100
239
  static trace(msg: string, context = "", name = "App") {
101
- if (Logger.#shouldLog("trace")) Logger.#printMessages(name, msg, context, "trace");
240
+ if (Logger.#shouldLog("trace")) Logger.#write(name, msg, context, "trace");
102
241
  }
103
242
  static verbose(msg: string, context = "", name = "App") {
104
- if (Logger.#shouldLog("verbose")) Logger.#printMessages(name, msg, context, "verbose");
243
+ if (Logger.#shouldLog("verbose")) Logger.#write(name, msg, context, "verbose");
105
244
  }
106
245
  static debug(msg: string, context = "", name = "App") {
107
- if (Logger.#shouldLog("debug")) Logger.#printMessages(name, msg, context, "debug");
246
+ if (Logger.#shouldLog("debug")) Logger.#write(name, msg, context, "debug");
108
247
  }
248
+ /** @deprecated Emits at `info`; call `info()`. */
109
249
  static log(msg: string, context = "", name = "App") {
110
- if (Logger.#shouldLog("log")) Logger.#printMessages(name, msg, context, "log");
250
+ if (Logger.#shouldLog("info")) Logger.#write(name, msg, context, "info");
111
251
  }
112
252
  static info(msg: string, context = "", name = "App") {
113
- if (Logger.#shouldLog("info")) Logger.#printMessages(name, msg, context, "info");
253
+ if (Logger.#shouldLog("info")) Logger.#write(name, msg, context, "info");
114
254
  }
115
255
  static warn(msg: string, context = "", name = "App") {
116
- if (Logger.#shouldLog("warn")) Logger.#printMessages(name, msg, context, "warn");
256
+ if (Logger.#shouldLog("warn")) Logger.#write(name, msg, context, "warn");
117
257
  }
118
258
  static error(msg: string, context = "", name = "App") {
119
- if (Logger.#shouldLog("error")) Logger.#printMessages(name, msg, context, "error");
259
+ if (Logger.#shouldLog("error")) Logger.#write(name, msg, context, "error");
260
+ }
261
+ static #levelFromEnv(value: string | undefined, fallback: LogLevel): LogLevel {
262
+ if (value === "log") return "info";
263
+ return (logLevels as readonly string[]).includes(value ?? "") ? (value as LogLevel) : fallback;
264
+ }
265
+ static #formatFromEnv(value: string | undefined): LogFormat {
266
+ return (logFormats as readonly string[]).includes(value ?? "") ? (value as LogFormat) : "text";
267
+ }
268
+ static #refreshSinkFloor() {
269
+ let floor = Number.POSITIVE_INFINITY;
270
+ for (const minSev of Logger.#sinks.values()) floor = Math.min(floor, minSev ?? Logger.#fileSev);
271
+ Logger.#sinkFloorSev = floor;
120
272
  }
121
273
  static #colorize(msg: string, logLevel: LogLevel) {
122
274
  return colorizeMap[logLevel](msg);
123
275
  }
124
- static #stripAnsi(msg: string) {
276
+ static stripAnsi(msg: string) {
125
277
  return msg.replace(ansiPattern, "");
126
278
  }
127
279
  static #shouldLog(logLevel: LogLevel) {
128
- return Logger.#shouldWriteConsole(logLevel) || Logger.#shouldEmitSink(logLevel);
280
+ if (Logger.#shouldWriteConsole(logLevel) || Logger.#shouldEmitSink(logLevel)) return true;
281
+ return Logger.contextGate && Logger.#contextFloor(readLogContext()) <= logSeverity[logLevel];
129
282
  }
130
283
  static #shouldWriteConsole(logLevel: LogLevel) {
131
- return Logger.#levelIdx <= logLevels.indexOf(logLevel);
284
+ return Logger.consoleOutput && logSeverity[logLevel] >= Logger.#consoleSev;
132
285
  }
133
286
  static #shouldEmitSink(logLevel: LogLevel) {
134
- return Logger.#sinks.size > 0 && Logger.#fileLevelIdx <= logLevels.indexOf(logLevel);
287
+ return logSeverity[logLevel] >= Logger.#sinkFloorSev;
288
+ }
289
+ /** The lowest severity the ambient request wants captured or shown, or +∞ outside one. */
290
+ static #contextFloor(ctx: LogContextSnapshot | undefined) {
291
+ if (!ctx) return Number.POSITIVE_INFINITY;
292
+ return Math.min(ctx.flight?.minSev ?? Number.POSITIVE_INFINITY, ctx.debugSev ?? Number.POSITIVE_INFINITY);
293
+ }
294
+ static #buildRecord(
295
+ name: string | undefined,
296
+ message: string,
297
+ context: string,
298
+ level: LogLevel | null,
299
+ stream: "stdout" | "stderr",
300
+ ctx: LogContextSnapshot | undefined,
301
+ attrs?: LogAttrs,
302
+ ): LogRecord {
303
+ const proc = process as unknown as NodeJS.Process | undefined;
304
+ const replicaIdx = Number(proc?.env?.AKAN_REPLICA_IDX ?? Number.NaN);
305
+ const at = Date.now();
306
+ return {
307
+ at,
308
+ elapsedMs: at - Logger.startAt,
309
+ level,
310
+ sev: level === null ? 0 : logSeverity[level],
311
+ name: name ?? "App",
312
+ context,
313
+ message,
314
+ stream,
315
+ pid: proc?.pid ?? null,
316
+ replicaIdx: Number.isNaN(replicaIdx) ? null : replicaIdx,
317
+ role: Logger.role,
318
+ origin: ctx?.origin ?? null,
319
+ traceId: ctx?.traceId ?? null,
320
+ endpoint: ctx?.endpoint ?? null,
321
+ ...(attrs ? { attrs: Logger.redactAttrs(attrs) } : {}),
322
+ };
323
+ }
324
+ static #entry(record: LogRecord, text?: string): LoggerSinkEntry {
325
+ let message = text;
326
+ let plainMessage: string | undefined;
327
+ return {
328
+ stream: record.stream,
329
+ level: record.level ?? undefined,
330
+ record,
331
+ get message() {
332
+ message ??= Logger.render(record);
333
+ return message;
334
+ },
335
+ get plainMessage() {
336
+ plainMessage ??= Logger.stripAnsi(this.message);
337
+ return plainMessage;
338
+ },
339
+ };
135
340
  }
136
341
  static #emit(entry: LoggerSinkEntry) {
137
- for (const sink of Logger.#sinks) {
342
+ for (const [sink, minSev] of Logger.#sinks) {
343
+
344
+ if (
345
+ entry.record.level !== null &&
346
+ entry.record.sev < (minSev ?? Logger.#fileSev) &&
347
+ !Logger.isPromoted(entry.record)
348
+ )
349
+ continue;
138
350
  try {
139
351
  void Promise.resolve(sink(entry)).catch(() => undefined);
140
352
  } catch {
141
353
  }
142
354
  }
143
355
  }
144
- static #printMessages(
145
- name: string | undefined,
146
- content: string,
147
- context: string,
148
- logLevel: LogLevel,
149
- writeStreamType: "stdout" | "stderr" = logLevel === "error" ? "stderr" : "stdout",
150
- ) {
151
- const now = dayjs();
152
- const replicaIdx = (process as unknown as NodeJS.Process | undefined)?.env?.AKAN_REPLICA_IDX;
153
- const replicaMsg = replicaIdx === undefined ? "" : `#${replicaIdx} `;
154
- const processMsg = Logger.#colorize(
155
- `[${name ?? "App"}] ${replicaMsg}${(process as unknown as NodeJS.Process | undefined)?.pid ?? "window"} -`,
356
+ static #writeConsole(entry: LoggerSinkEntry) {
357
+ if (!Logger.consoleOutput) return;
358
+ if (typeof window === "undefined")
359
+ (process[entry.stream] as unknown as NodeJS.WriteStream | undefined)?.write(entry.message);
360
+ else console.log(entry.message);
361
+ }
362
+ static #write(name: string | undefined, message: string, context: string, logLevel: LogLevel, attrs?: LogAttrs) {
363
+ const stream = logLevel === "error" ? "stderr" : "stdout";
364
+ const ctx = readLogContext();
365
+ const sev = logSeverity[logLevel];
366
+ const debug = ctx?.debugSev !== undefined && ctx.debugSev !== null && sev >= ctx.debugSev;
367
+
368
+ const promoted = debug && sev < Logger.#consoleSev;
369
+ const record = Logger.#buildRecord(
370
+ name,
371
+ message,
372
+ context,
156
373
  logLevel,
374
+ stream,
375
+ ctx,
376
+ promoted ? { ...attrs, debug: true } : attrs,
157
377
  );
158
- const timestampMsg = now.format("MM/DD/YYYY, HH:mm:ss A");
159
- const logLevelMsg = Logger.#colorize(logLevel.toUpperCase().padStart(7, " "), logLevel);
160
- const contextMsg = context ? clc.yellow(`[${context}] `) : "";
161
- const contentMsg = Logger.#colorize(content, logLevel);
162
- const timeDiffMsg = clc.yellow(`+${now.diff(Logger.#startAt, "ms")}ms`);
163
- const message = `${processMsg} ${timestampMsg} ${logLevelMsg} ${contextMsg} ${contentMsg} ${timeDiffMsg}\n`;
164
- if (Logger.#shouldEmitSink(logLevel))
165
- Logger.#emit({ stream: writeStreamType, level: logLevel, message, plainMessage: Logger.#stripAnsi(message) });
166
- if (!Logger.#shouldWriteConsole(logLevel)) return;
167
- if (typeof window === "undefined")
168
- (process[writeStreamType] as unknown as NodeJS.WriteStream | undefined)?.write(message);
169
- else console.log(message);
378
+ const toConsole = Logger.#shouldWriteConsole(logLevel) || (debug && Logger.consoleOutput);
379
+ const toSinks = Logger.#shouldEmitSink(logLevel) || debug;
380
+ ctx?.flight?.capture(record, toConsole || toSinks);
381
+ if (!toConsole && !toSinks) return;
382
+ const entry = Logger.#entry(record);
383
+ if (toSinks) Logger.#emit(entry);
384
+ if (toConsole) Logger.#writeConsole(entry);
170
385
  }
171
386
  static rawLog(msg = "", method?: "console" | "process", outputStream?: "log" | "error") {
172
387
  Logger.raw(`${msg}\n`, method, outputStream);
173
388
  }
174
389
  static raw(msg = "", method?: "console" | "process", outputStream?: "log" | "error") {
175
390
  const stream = outputStream === "error" ? "stderr" : "stdout";
176
- Logger.#emit({ stream, message: msg, plainMessage: Logger.#stripAnsi(msg) });
391
+ Logger.#emit(Logger.#entry(Logger.#buildRecord(undefined, msg, "", null, stream, readLogContext()), msg));
392
+ if (!Logger.consoleOutput) return;
177
393
  if (typeof window === "undefined" && method !== "console" && (process as unknown as NodeJS.Process | undefined))
178
394
  process[stream].write(msg);
179
395
  else console[outputStream === "error" ? "error" : "log"](msg.trim());
180
396
  }
397
+ static {
398
+ if (envValue("AKAN_PUBLIC_LOG_LEVEL") === "log" && typeof window === "undefined")
399
+ Logger.warn("AKAN_PUBLIC_LOG_LEVEL=log is deprecated and now means info; set AKAN_PUBLIC_LOG_LEVEL=info.");
400
+ }
181
401
  }
@@ -0,0 +1,134 @@
1
+ import { normalizeIpAddress } from "./clientAddress";
2
+
3
+ /**
4
+ * Whether the hop that connected is allowed to name the caller.
5
+ *
6
+ * `x-real-ip` and `x-forwarded-for` are just request headers: anyone can send them. They are the truth only when
7
+ * the peer that sent them is a proxy we put there — otherwise a client forges its own address and walks past
8
+ * every `.with(Ip)` guard, rate limit and audit line at once.
9
+ *
10
+ * The default trusts a private, loopback or link-local peer and nothing else, because that is exactly the shape
11
+ * of a proxy on the same network: an ingress, a service mesh, the dev machine. A gateway reachable from the
12
+ * internet sees a public peer, so a header from there is dropped rather than believed. `AKAN_TRUSTED_PROXIES`
13
+ * takes a comma-separated CIDR list for the case the proxy is not private — and `*` for "the deployment
14
+ * guarantees nothing untrusted can reach this port", which is the old behaviour, written down.
15
+ */
16
+ export class TrustedProxy {
17
+ static #cidrs: { bytes: Uint8Array; bits: number }[] | null = null;
18
+ static #trustAll: boolean | null = null;
19
+
20
+ static configure(list: string | null | undefined) {
21
+ TrustedProxy.#trustAll = list?.trim() === "*";
22
+ TrustedProxy.#cidrs = (list ?? "")
23
+ .split(",")
24
+ .map((entry) => entry.trim())
25
+ .filter((entry) => entry && entry !== "*")
26
+ .flatMap((entry) => {
27
+ const parsed = TrustedProxy.#parseCidr(entry);
28
+ return parsed ? [parsed] : [];
29
+ });
30
+ }
31
+
32
+ static reset() {
33
+ TrustedProxy.#cidrs = null;
34
+ TrustedProxy.#trustAll = null;
35
+ }
36
+
37
+ static #load() {
38
+ if (TrustedProxy.#cidrs === null) TrustedProxy.configure(process.env.AKAN_TRUSTED_PROXIES);
39
+ }
40
+
41
+ static isTrusted(address: string | null | undefined): boolean {
42
+ if (!address) return false;
43
+ TrustedProxy.#load();
44
+ if (TrustedProxy.#trustAll) return true;
45
+ const bytes = TrustedProxy.#toBytes(normalizeIpAddress(address));
46
+ if (!bytes) return false;
47
+ if (TrustedProxy.#isLocalRange(bytes)) return true;
48
+ return (TrustedProxy.#cidrs ?? []).some((cidr) => TrustedProxy.#inRange(bytes, cidr));
49
+ }
50
+
51
+ /**
52
+ * The caller's address as recorded by a proxy, but only when the peer is one. Falls back to the peer itself,
53
+ * which is the right answer for a process nothing is proxying, and `null` when there is no peer either.
54
+ */
55
+ static clientAddress(headers: Headers, peerAddress: string | null | undefined): string | null {
56
+ if (TrustedProxy.isTrusted(peerAddress)) {
57
+ const realIp = headers.get("x-real-ip")?.trim();
58
+ if (realIp) return normalizeIpAddress(realIp);
59
+ const forwarded = headers.get("x-forwarded-for")?.split(",")[0]?.trim();
60
+ if (forwarded) return normalizeIpAddress(forwarded);
61
+ }
62
+ return peerAddress ? normalizeIpAddress(peerAddress) : null;
63
+ }
64
+
65
+ /** `10/8`, `172.16/12`, `192.168/16`, `127/8`, `169.254/16`, and their IPv6 counterparts `::1`, `fc00::/7`, `fe80::/10`. */
66
+ static #isLocalRange(bytes: Uint8Array): boolean {
67
+ if (bytes.length === 4) {
68
+ const [a = 0, b = 0] = bytes;
69
+ if (a === 10 || a === 127) return true;
70
+ if (a === 192 && b === 168) return true;
71
+ if (a === 172 && b >= 16 && b <= 31) return true;
72
+ return a === 169 && b === 254;
73
+ }
74
+ const [first = 0, second = 0] = bytes;
75
+ if ((first & 0xfe) === 0xfc) return true;
76
+ if (first === 0xfe && (second & 0xc0) === 0x80) return true;
77
+ return bytes.every((byte, idx) => (idx === 15 ? byte === 1 : byte === 0));
78
+ }
79
+
80
+ static #parseCidr(entry: string): { bytes: Uint8Array; bits: number } | null {
81
+ const [address, prefix] = entry.split("/");
82
+ const bytes = TrustedProxy.#toBytes(address ?? "");
83
+ if (!bytes) return null;
84
+ const bits = prefix === undefined ? bytes.length * 8 : Number(prefix);
85
+ if (!Number.isInteger(bits) || bits < 0 || bits > bytes.length * 8) return null;
86
+ return { bytes, bits };
87
+ }
88
+
89
+ static #inRange(bytes: Uint8Array, cidr: { bytes: Uint8Array; bits: number }): boolean {
90
+ if (bytes.length !== cidr.bytes.length) return false;
91
+ const wholeBytes = cidr.bits >> 3;
92
+ for (let idx = 0; idx < wholeBytes; idx += 1) if (bytes[idx] !== cidr.bytes[idx]) return false;
93
+ const restBits = cidr.bits & 7;
94
+ if (!restBits) return true;
95
+ const mask = 0xff << (8 - restBits);
96
+ return ((bytes[wholeBytes] ?? 0) & mask) === ((cidr.bytes[wholeBytes] ?? 0) & mask);
97
+ }
98
+
99
+ static #toBytes(address: string): Uint8Array | null {
100
+ if (address.includes(".") && !address.includes(":")) {
101
+ const parts = address.split(".");
102
+ if (parts.length !== 4) return null;
103
+ const bytes = new Uint8Array(4);
104
+ for (const [idx, part] of parts.entries()) {
105
+ const value = Number(part);
106
+ if (!/^\d{1,3}$/.test(part) || value > 255) return null;
107
+ bytes[idx] = value;
108
+ }
109
+ return bytes;
110
+ }
111
+ return address.includes(":") ? TrustedProxy.#ipv6ToBytes(address) : null;
112
+ }
113
+
114
+ static #ipv6ToBytes(address: string): Uint8Array | null {
115
+
116
+ const bare = address.split("%")[0] ?? "";
117
+ const halves = bare.split("::");
118
+ if (halves.length > 2) return null;
119
+ const groupsOf = (text: string) => (text ? text.split(":").filter((group) => group !== "") : []);
120
+ const head = groupsOf(halves[0] ?? "");
121
+ const tail = halves.length === 2 ? groupsOf(halves[1] ?? "") : [];
122
+ const filled = halves.length === 2 ? 8 - head.length - tail.length : 0;
123
+ if (filled < 0 || head.length + tail.length + filled !== 8) return null;
124
+ const groups = [...head, ...new Array(filled).fill("0"), ...tail];
125
+ const bytes = new Uint8Array(16);
126
+ for (const [idx, group] of groups.entries()) {
127
+ if (!/^[0-9a-f]{1,4}$/i.test(group)) return null;
128
+ const value = Number.parseInt(group, 16);
129
+ bytes[idx * 2] = value >> 8;
130
+ bytes[idx * 2 + 1] = value & 0xff;
131
+ }
132
+ return bytes;
133
+ }
134
+ }
@@ -0,0 +1,2 @@
1
+ /** Constrains a value to `[min, max]`. */
2
+ export const clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);
@@ -0,0 +1,40 @@
1
+ /** Headers a proxy hop writes so the next hop can still name the original caller. */
2
+ export const forwardedHeaders = [
3
+ "x-real-ip",
4
+ "x-forwarded-for",
5
+ "x-forwarded-port",
6
+ "x-forwarded-host",
7
+ "x-forwarded-proto",
8
+ ] as const;
9
+
10
+ /**
11
+ * An IPv4 client reaching a dual-stack listener is reported as `::ffff:203.0.113.10`. That form is not a
12
+ * valid destination for a `udp4` socket and does not compare equal to the same address written plainly, so
13
+ * it is unwrapped at every boundary rather than at each call site that happens to remember.
14
+ */
15
+ export const normalizeIpAddress = (address: string): string => {
16
+ const trimmed = address.trim();
17
+ const mapped = /^::ffff:(\d{1,3}(?:\.\d{1,3}){3})$/i.exec(trimmed);
18
+ return mapped?.[1] ?? trimmed;
19
+ };
20
+
21
+ /**
22
+ * The caller's address as the nearest proxy recorded it. `x-real-ip` is one hop's word for who the client is
23
+ * and wins; `x-forwarded-for` is a chain appended left to right, so its *first* entry is the original client
24
+ * and everything after it is a proxy.
25
+ *
26
+ * Returns `null` rather than a placeholder. A socket peer behind a proxy is the proxy, so `127.0.0.1` here
27
+ * would be indistinguishable from a genuinely local caller — and that is the failure this exists to prevent.
28
+ */
29
+ export const clientAddressFromHeaders = (headers: Headers): string | null => {
30
+ const realIp = headers.get("x-real-ip")?.trim();
31
+ if (realIp) return normalizeIpAddress(realIp);
32
+ const forwarded = headers.get("x-forwarded-for")?.split(",")[0]?.trim();
33
+ return forwarded ? normalizeIpAddress(forwarded) : null;
34
+ };
35
+
36
+ /** The client port the nearest proxy recorded, for correlating a connection with a peer's own logs. */
37
+ export const clientPortFromHeaders = (headers: Headers): number | null => {
38
+ const port = Number(headers.get("x-forwarded-port"));
39
+ return Number.isInteger(port) && port > 0 && port <= 65535 ? port : null;
40
+ };