akanjs 3.0.2 → 3.1.0-rc.0

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 (378) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/base/baseEnv.ts +0 -4
  3. package/base/primitiveRegistry.ts +2 -2
  4. package/client/cookie.ts +5 -1
  5. package/client/csrLocation.ts +122 -0
  6. package/client/csrTypes.ts +32 -4
  7. package/client/device.ts +2 -1
  8. package/client/frameConfig.ts +78 -7
  9. package/client/index.ts +3 -0
  10. package/client/makePageProto.tsx +3 -2
  11. package/client/native/external-view.ts +1 -0
  12. package/client/route/RootLayoutDefinition.ts +7 -1
  13. package/client/route/RouteHead.ts +108 -0
  14. package/client/route/index.ts +1 -0
  15. package/client/router.ts +36 -23
  16. package/client/rscNavigation.ts +8 -2
  17. package/client/viewportMeta.ts +60 -0
  18. package/client/webManifest.ts +18 -0
  19. package/common/Logger.ts +7 -2
  20. package/common/PipelineNames.ts +31 -0
  21. package/common/PipelinePattern.ts +70 -0
  22. package/common/PipelinePlanSchema.ts +490 -0
  23. package/common/backoff.ts +14 -0
  24. package/common/index.ts +39 -0
  25. package/common/pipelinePlan.ts +259 -0
  26. package/common/routeConvention.ts +1 -0
  27. package/common/types.ts +17 -0
  28. package/constant/constantRegistry.ts +26 -6
  29. package/dictionary/base.dictionary.ts +8 -0
  30. package/dictionary/trans.ts +9 -1
  31. package/document/into.ts +5 -0
  32. package/fetch/client/fetchClient.ts +135 -31
  33. package/fetch/client/httpClient.ts +45 -0
  34. package/fetch/client/wsClient.ts +125 -16
  35. package/fetch/fetchType/buildFetch.type.ts +1 -0
  36. package/index.ts +243 -10
  37. package/package.json +1 -5
  38. package/server/akanApp.ts +5 -2
  39. package/server/akanServer.ts +44 -8
  40. package/server/artifact/builderRpc.ts +8 -3
  41. package/server/artifact/ipcTypes.ts +5 -2
  42. package/server/di/diLifecycle.ts +39 -3
  43. package/server/di/utils.ts +28 -1
  44. package/server/ed25519Key.ts +48 -0
  45. package/server/index.ts +1 -0
  46. package/server/machine/index.ts +2 -0
  47. package/server/machine/machineAccount.ts +27 -0
  48. package/server/machine/machineToken.ts +151 -0
  49. package/server/mcp/McpApps.ts +256 -0
  50. package/server/mcp/McpDispatcher.ts +31 -7
  51. package/server/mcp/McpRouter.ts +209 -46
  52. package/server/ops/opsToken.ts +3 -10
  53. package/server/resolver/database.resolver.ts +3 -0
  54. package/server/resolver/signal.resolver.ts +40 -3
  55. package/server/routeElementComposer.tsx +78 -2
  56. package/server/routeState.ts +6 -0
  57. package/server/routeTreeBuilder.ts +26 -9
  58. package/server/routing/apiRouter.ts +6 -3
  59. package/server/routing/roomReplay.ts +88 -0
  60. package/server/rscClient.tsx +53 -8
  61. package/server/rscWorker.tsx +141 -27
  62. package/server/rscWorkerHost.ts +18 -5
  63. package/server/sitemap.ts +14 -0
  64. package/server/ssrFromRscRenderer.tsx +12 -6
  65. package/server/ssrTypes.ts +3 -1
  66. package/server/systemPageDocument.tsx +38 -30
  67. package/server/types.tsx +2 -0
  68. package/server/webRouter.ts +74 -5
  69. package/service/injectInfo.ts +9 -1
  70. package/service/ipcTypes.ts +2 -1
  71. package/service/predefinedAdaptor/database.adaptor.ts +1 -146
  72. package/service/predefinedAdaptor/queue.adaptor.ts +44 -6
  73. package/service/predefinedAdaptor/queueBackoff.ts +12 -0
  74. package/service/predefinedAdaptor/solidQueue.adaptor.ts +17 -13
  75. package/service/predefinedAdaptor/sql/SqlDocumentStore.ts +44 -2
  76. package/service/predefinedAdaptor/sql/dialect/postgres.ts +3 -0
  77. package/service/predefinedAdaptor/sql/dialect/sqlite.ts +5 -2
  78. package/service/predefinedAdaptor/sql/search/fts5.ts +1 -1
  79. package/service/predefinedAdaptor/sql/types.ts +8 -6
  80. package/service/predefinedAdaptor/sql/values.ts +0 -23
  81. package/service/serve.ts +5 -1
  82. package/signal/agent.signal.ts +1 -1
  83. package/signal/base.signal.ts +2 -2
  84. package/signal/endpointIdempotency.ts +53 -0
  85. package/signal/internalArg.ts +14 -0
  86. package/signal/mcp/McpDocument.ts +38 -1
  87. package/signal/mcp/mcpProtocol.ts +18 -0
  88. package/signal/signalContext.ts +58 -30
  89. package/signal/signalRegistry.ts +14 -4
  90. package/signal/types.ts +18 -3
  91. package/store/agent/StoreSurfaceSource.ts +1 -1
  92. package/store/agentic/StToolBuilder.ts +3 -0
  93. package/test/conformance.ts +9 -33
  94. package/types/base/baseEnv.d.ts +0 -4
  95. package/types/base/primitiveRegistry.d.ts +1 -1
  96. package/types/client/csrLocation.d.ts +32 -0
  97. package/types/client/csrTypes.d.ts +40 -4
  98. package/types/client/frameConfig.d.ts +14 -2
  99. package/types/client/index.d.ts +3 -0
  100. package/types/client/native/external-view.d.ts +1 -0
  101. package/types/client/route/RootLayoutDefinition.d.ts +2 -1
  102. package/types/client/route/RouteHead.d.ts +13 -0
  103. package/types/client/route/index.d.ts +1 -0
  104. package/types/client/router.d.ts +6 -0
  105. package/types/client/rscNavigation.d.ts +4 -0
  106. package/types/client/viewportMeta.d.ts +18 -0
  107. package/types/client/webManifest.d.ts +4 -0
  108. package/types/common/PipelineNames.d.ts +6 -0
  109. package/types/common/PipelinePattern.d.ts +14 -0
  110. package/types/common/PipelinePlanSchema.d.ts +9 -0
  111. package/types/common/backoff.d.ts +10 -0
  112. package/types/common/index.d.ts +5 -0
  113. package/types/common/pipelinePlan.d.ts +224 -0
  114. package/types/common/types.d.ts +16 -0
  115. package/types/constant/constantRegistry.d.ts +5 -2
  116. package/types/dictionary/base.dictionary.d.ts +1 -1
  117. package/types/dictionary/dictionary.d.ts +8 -8
  118. package/types/document/into.d.ts +9 -0
  119. package/types/fetch/client/fetchClient.d.ts +31 -4
  120. package/types/fetch/client/httpClient.d.ts +8 -0
  121. package/types/fetch/client/wsClient.d.ts +26 -2
  122. package/types/fetch/fetchType/buildFetch.type.d.ts +1 -0
  123. package/types/index.d.ts +230 -9
  124. package/types/server/akanServer.d.ts +16 -1
  125. package/types/server/artifact/builderRpc.d.ts +7 -2
  126. package/types/server/artifact/ipcTypes.d.ts +5 -1
  127. package/types/server/di/utils.d.ts +1 -0
  128. package/types/server/ed25519Key.d.ts +13 -0
  129. package/types/server/index.d.ts +1 -0
  130. package/types/server/machine/index.d.ts +2 -0
  131. package/types/server/machine/machineAccount.d.ts +5 -0
  132. package/types/server/machine/machineToken.d.ts +29 -0
  133. package/types/server/machine.d.ts +1 -0
  134. package/types/server/mcp/McpApps.d.ts +50 -0
  135. package/types/server/mcp/McpDispatcher.d.ts +4 -1
  136. package/types/server/mcp/McpRouter.d.ts +4 -0
  137. package/types/server/resolver/signal.resolver.d.ts +2 -1
  138. package/types/server/routeElementComposer.d.ts +24 -4
  139. package/types/server/routeState.d.ts +4 -1
  140. package/types/server/routing/roomReplay.d.ts +24 -0
  141. package/types/server/rscWorkerHost.d.ts +5 -2
  142. package/types/server/sitemap.d.ts +2 -0
  143. package/types/server/ssrFromRscRenderer.d.ts +3 -3
  144. package/types/server/ssrTypes.d.ts +4 -1
  145. package/types/server/systemPageDocument.d.ts +2 -0
  146. package/types/server/types.d.ts +4 -1
  147. package/types/server/webRouter.d.ts +3 -1
  148. package/types/service/ipcTypes.d.ts +2 -0
  149. package/types/service/predefinedAdaptor/database.adaptor.d.ts +1 -24
  150. package/types/service/predefinedAdaptor/queue.adaptor.d.ts +10 -3
  151. package/types/service/predefinedAdaptor/queueBackoff.d.ts +4 -0
  152. package/types/service/predefinedAdaptor/solidQueue.adaptor.d.ts +3 -3
  153. package/types/service/predefinedAdaptor/sql/SqlDocumentStore.d.ts +6 -1
  154. package/types/service/predefinedAdaptor/sql/dialect/postgres.d.ts +1 -0
  155. package/types/service/predefinedAdaptor/sql/dialect/sqlite.d.ts +1 -0
  156. package/types/service/predefinedAdaptor/sql/search/fts5.d.ts +1 -1
  157. package/types/service/predefinedAdaptor/sql/types.d.ts +9 -5
  158. package/types/service/predefinedAdaptor/sql/values.d.ts +0 -3
  159. package/types/service/serve.d.ts +3 -0
  160. package/types/signal/endpointIdempotency.d.ts +7 -0
  161. package/types/signal/internalArg.d.ts +10 -0
  162. package/types/signal/mcp/McpDocument.d.ts +8 -0
  163. package/types/signal/mcp/mcpProtocol.d.ts +17 -0
  164. package/types/signal/signalContext.d.ts +5 -3
  165. package/types/signal/signalRegistry.d.ts +4 -4
  166. package/types/signal/types.d.ts +21 -1
  167. package/types/store/agentic/StToolBuilder.d.ts +2 -0
  168. package/types/test/conformance.d.ts +7 -10
  169. package/types/ui/Agent/Chat.d.ts +5 -1
  170. package/types/ui/Agent/EmbedApproval.d.ts +1 -0
  171. package/types/ui/Agent/index.d.ts +3 -0
  172. package/types/ui/Agent/useKeyboardFrame.d.ts +2 -0
  173. package/types/ui/Agent/useScreenActions.d.ts +18 -0
  174. package/types/ui/BottomSheet.d.ts +1 -0
  175. package/types/ui/Constant/Doc.d.ts +11 -17
  176. package/types/ui/Constant/index.d.ts +7 -2
  177. package/types/ui/Constant/schemaDoc.d.ts +11 -0
  178. package/types/ui/Dialog/Modal.d.ts +6 -1
  179. package/types/ui/Dialog/index.d.ts +1 -1
  180. package/types/ui/Dialog/modalSurface.d.ts +12 -0
  181. package/types/ui/Layout/BottomTab.d.ts +11 -2
  182. package/types/ui/Layout/FrameSlotFallback.d.ts +9 -0
  183. package/types/ui/Layout/Navbar.d.ts +4 -1
  184. package/types/ui/Layout/TopInset.d.ts +1 -1
  185. package/types/ui/Layout/index.d.ts +3 -3
  186. package/types/ui/Link/Action.d.ts +5 -1
  187. package/types/ui/Link/Anchor.d.ts +5 -3
  188. package/types/ui/Link/activePath.d.ts +13 -0
  189. package/types/ui/Link/index.d.ts +1 -1
  190. package/types/ui/Modal.d.ts +6 -1
  191. package/types/ui/Model/EditModal.d.ts +6 -1
  192. package/types/ui/Model/New.d.ts +6 -1
  193. package/types/ui/Model/ViewEditModal.d.ts +6 -1
  194. package/types/ui/Model/ViewModal.d.ts +6 -1
  195. package/types/ui/Model/newFormOrigin.d.ts +7 -0
  196. package/types/ui/Portal.d.ts +3 -1
  197. package/types/ui/Reference/origin.d.ts +12 -0
  198. package/types/ui/Signal/Doc.d.ts +23 -18
  199. package/types/ui/Signal/Listener.d.ts +2 -6
  200. package/types/ui/Signal/Object.d.ts +6 -10
  201. package/types/ui/Signal/Response.d.ts +3 -6
  202. package/types/ui/Signal/RestApi.d.ts +11 -15
  203. package/types/ui/Signal/WebSocket.d.ts +11 -21
  204. package/types/ui/Signal/endpointEntries.d.ts +8 -0
  205. package/types/ui/Signal/index.d.ts +35 -12
  206. package/types/ui/Signal/signalText.d.ts +178 -0
  207. package/types/ui/System/CSR.d.ts +2 -2
  208. package/types/ui/System/Client.d.ts +4 -3
  209. package/types/ui/System/Common.d.ts +27 -6
  210. package/types/ui/System/SSR.d.ts +6 -6
  211. package/types/ui/Tooltip.d.ts +4 -2
  212. package/types/ui/index.d.ts +2 -1
  213. package/types/ui/overlayLayer.d.ts +6 -0
  214. package/types/ui/overlayPosition.d.ts +17 -0
  215. package/types/vendor/@akanjs/native/packages/cli/src/api.d.ts +14 -3
  216. package/types/vendor/@akanjs/native/packages/cli/src/commands/update.d.ts +1 -1
  217. package/types/vendor/@akanjs/native/packages/cli/src/config.d.ts +30 -5
  218. package/types/vendor/@akanjs/native/packages/cli/src/lib/compat.d.ts +8 -0
  219. package/types/vendor/@akanjs/native/packages/cli/src/lib/desktop-server.d.ts +5 -0
  220. package/types/vendor/@akanjs/native/packages/cli/src/lib/distribution.d.ts +22 -0
  221. package/types/vendor/@akanjs/native/packages/cli/src/lib/project.d.ts +4 -0
  222. package/types/vendor/@akanjs/native/packages/cli/src/lib/publish.d.ts +16 -10
  223. package/types/vendor/@akanjs/native/packages/cli/src/lib/updates.d.ts +51 -7
  224. package/types/vendor/@akanjs/native/packages/cli/src/lib/vectors.d.ts +1 -1
  225. package/types/vendor/@akanjs/native/packages/cli/src/platforms/windows-installer.d.ts +7 -0
  226. package/types/vendor/@akanjs/native/packages/cli/src/platforms/windows.d.ts +5 -0
  227. package/types/vendor/@akanjs/native/packages/core/src/kernel.d.ts +36 -0
  228. package/types/vendor/@akanjs/native/packages/desktop/src/plugin.d.ts +2 -0
  229. package/types/vendor/@akanjs/native/packages/desktop/src/server.d.ts +11 -0
  230. package/types/vendor/@akanjs/native/plugins/external-view/src/desktop.d.ts +17 -0
  231. package/types/vendor/@akanjs/native/plugins/external-view/src/index.d.ts +132 -0
  232. package/types/vendor/@akanjs/native/plugins/external-view/src.d.ts +1 -0
  233. package/types/vendor/@akanjs/native/plugins/updates/src/index.d.ts +8 -0
  234. package/types/vendor/@akanjs/native/plugins/window/src/desktop.d.ts +4 -1
  235. package/types/vendor/@akanjs/native/plugins/window/src/index.d.ts +49 -0
  236. package/types/vendor/use-agentic/types.d.ts +2 -0
  237. package/types/webkit/CsrStack.d.ts +1 -1
  238. package/types/webkit/McpAppAgent.d.ts +14 -0
  239. package/types/webkit/McpAppApprovals.d.ts +8 -0
  240. package/types/webkit/McpAppBridge.d.ts +101 -0
  241. package/types/webkit/McpAppView.d.ts +21 -0
  242. package/types/webkit/index.d.ts +1 -0
  243. package/types/webkit/useLocation.d.ts +1 -1
  244. package/types/webkit/useVisualViewportFrame.d.ts +13 -0
  245. package/ui/Agent/Chat.tsx +29 -10
  246. package/ui/Agent/Composer.tsx +2 -1
  247. package/ui/Agent/EmbedApproval.tsx +17 -0
  248. package/ui/Agent/RichInput.tsx +1 -1
  249. package/ui/Agent/index.ts +2 -0
  250. package/ui/Agent/useKeyboardFrame.ts +10 -0
  251. package/ui/Agent/useScreenActions.ts +45 -0
  252. package/ui/BottomSheet.tsx +82 -53
  253. package/ui/Constant/Doc.tsx +113 -60
  254. package/ui/Constant/index.ts +2 -2
  255. package/ui/Constant/schemaDoc.ts +86 -26
  256. package/ui/Dialog/LegacyModal.tsx +53 -52
  257. package/ui/Dialog/Modal.tsx +93 -49
  258. package/ui/Dialog/modalSurface.ts +61 -0
  259. package/ui/DragAction.tsx +1 -1
  260. package/ui/DraggableList.tsx +1 -1
  261. package/ui/Dropdown.tsx +4 -6
  262. package/ui/KeyboardAvoiding.tsx +1 -1
  263. package/ui/Layout/BottomInset.tsx +20 -14
  264. package/ui/Layout/BottomTab.tsx +42 -16
  265. package/ui/Layout/FrameSlotFallback.tsx +59 -0
  266. package/ui/Layout/Navbar.tsx +37 -11
  267. package/ui/Layout/Sider.tsx +1 -1
  268. package/ui/Layout/TopInset.tsx +15 -14
  269. package/ui/Link/Action.tsx +15 -5
  270. package/ui/Link/Anchor.tsx +25 -13
  271. package/ui/Link/activePath.ts +25 -0
  272. package/ui/Link/index.tsx +1 -1
  273. package/ui/Load/Pagination.tsx +1 -1
  274. package/ui/Load/Units.tsx +1 -1
  275. package/ui/Loading/ProgressBar.tsx +1 -1
  276. package/ui/Modal.tsx +9 -0
  277. package/ui/Model/EditModal.tsx +16 -1
  278. package/ui/Model/New.tsx +25 -2
  279. package/ui/Model/NewWrapper_Client.tsx +2 -0
  280. package/ui/Model/ViewEditModal.tsx +9 -0
  281. package/ui/Model/ViewModal.tsx +16 -1
  282. package/ui/Model/newFormOrigin.ts +45 -0
  283. package/ui/Popconfirm.tsx +5 -7
  284. package/ui/Portal.tsx +4 -7
  285. package/ui/Reference/origin.ts +31 -0
  286. package/ui/ScreenNavigator.tsx +1 -1
  287. package/ui/Select.tsx +2 -7
  288. package/ui/Signal/Arg.tsx +2 -2
  289. package/ui/Signal/Doc.tsx +125 -63
  290. package/ui/Signal/Endpoint.tsx +11 -10
  291. package/ui/Signal/Listener.tsx +7 -10
  292. package/ui/Signal/Object.tsx +7 -14
  293. package/ui/Signal/Response.tsx +24 -24
  294. package/ui/Signal/RestApi.tsx +63 -52
  295. package/ui/Signal/WebSocket.tsx +65 -72
  296. package/ui/Signal/endpointEntries.ts +25 -0
  297. package/ui/Signal/index.ts +23 -6
  298. package/ui/Signal/signalText.ts +59 -0
  299. package/ui/System/CSR.tsx +34 -8
  300. package/ui/System/Client.tsx +36 -5
  301. package/ui/System/Common.tsx +76 -32
  302. package/ui/System/SSR.tsx +73 -31
  303. package/ui/Toast.tsx +1 -1
  304. package/ui/Tooltip.tsx +84 -30
  305. package/ui/index.ts +11 -1
  306. package/ui/overlayLayer.ts +25 -2
  307. package/ui/overlayPosition.ts +90 -0
  308. package/ui/recipe/inputRecipe.ts +8 -1
  309. package/ui/styles.css +152 -0
  310. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeActivity.kt +22 -2
  311. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeKernel.kt +37 -0
  312. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeUpdateReports.kt +169 -0
  313. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeUpdates.kt +110 -38
  314. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeVectors.kt +20 -0
  315. package/vendor/@akanjs/native/native/desktop/Cargo.lock +16 -16
  316. package/vendor/@akanjs/native/native/desktop/src/external.rs +651 -0
  317. package/vendor/@akanjs/native/native/desktop/src/json.rs +23 -0
  318. package/vendor/@akanjs/native/native/desktop/src/lib.rs +228 -5
  319. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeApp.swift +2 -1
  320. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeKernel.swift +47 -1
  321. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeUpdateReports.swift +145 -0
  322. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeUpdates.swift +112 -43
  323. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeVectors.swift +18 -0
  324. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeViewController.swift +24 -2
  325. package/vendor/@akanjs/native/packages/cli/src/api.ts +22 -6
  326. package/vendor/@akanjs/native/packages/cli/src/commands/build.ts +24 -8
  327. package/vendor/@akanjs/native/packages/cli/src/commands/update.ts +11 -9
  328. package/vendor/@akanjs/native/packages/cli/src/config.ts +35 -7
  329. package/vendor/@akanjs/native/packages/cli/src/lib/compat.ts +2 -0
  330. package/vendor/@akanjs/native/packages/cli/src/lib/configkeys.ts +6 -4
  331. package/vendor/@akanjs/native/packages/cli/src/lib/desktop-server.ts +11 -1
  332. package/vendor/@akanjs/native/packages/cli/src/lib/distribution.ts +73 -0
  333. package/vendor/@akanjs/native/packages/cli/src/lib/project.ts +15 -3
  334. package/vendor/@akanjs/native/packages/cli/src/lib/publish.ts +70 -23
  335. package/vendor/@akanjs/native/packages/cli/src/lib/updates.ts +159 -23
  336. package/vendor/@akanjs/native/packages/cli/src/lib/vectors.ts +2 -0
  337. package/vendor/@akanjs/native/packages/cli/src/platforms/android.ts +9 -4
  338. package/vendor/@akanjs/native/packages/cli/src/platforms/desktop-update.ts +1 -1
  339. package/vendor/@akanjs/native/packages/cli/src/platforms/desktop.ts +4 -2
  340. package/vendor/@akanjs/native/packages/cli/src/platforms/ios.ts +9 -4
  341. package/vendor/@akanjs/native/packages/cli/src/platforms/windows-installer.ts +25 -11
  342. package/vendor/@akanjs/native/packages/cli/src/platforms/windows.ts +14 -3
  343. package/vendor/@akanjs/native/packages/core/src/kernel.ts +49 -0
  344. package/vendor/@akanjs/native/packages/core/vectors/updates.json +31 -0
  345. package/vendor/@akanjs/native/packages/desktop/src/main.ts +3 -0
  346. package/vendor/@akanjs/native/packages/desktop/src/plugin.ts +2 -0
  347. package/vendor/@akanjs/native/packages/desktop/src/server.ts +70 -6
  348. package/vendor/@akanjs/native/plugins/external-view/native-plugin.json +23 -0
  349. package/vendor/@akanjs/native/plugins/external-view/src/desktop.ts +321 -0
  350. package/vendor/@akanjs/native/plugins/external-view/src/index.ts +106 -0
  351. package/vendor/@akanjs/native/plugins/updates/android/UpdatesPlugin.kt +133 -41
  352. package/vendor/@akanjs/native/plugins/updates/ios/UpdatesPlugin.swift +101 -36
  353. package/vendor/@akanjs/native/plugins/updates/native-plugin.json +4 -2
  354. package/vendor/@akanjs/native/plugins/updates/src/desktop.ts +15 -1
  355. package/vendor/@akanjs/native/plugins/updates/src/index.ts +7 -1
  356. package/vendor/@akanjs/native/plugins/window/native-plugin.json +4 -0
  357. package/vendor/@akanjs/native/plugins/window/src/desktop.ts +68 -1
  358. package/vendor/@akanjs/native/plugins/window/src/index.ts +47 -0
  359. package/vendor/use-agentic/ToolRunner.ts +8 -1
  360. package/vendor/use-agentic/types.ts +2 -0
  361. package/webkit/CsrRouteTable.ts +1 -0
  362. package/webkit/CsrStack.ts +9 -2
  363. package/webkit/McpAppAgent.ts +138 -0
  364. package/webkit/McpAppApprovals.ts +56 -0
  365. package/webkit/McpAppBridge.ts +291 -0
  366. package/webkit/McpAppView.ts +258 -0
  367. package/webkit/bootCsr.tsx +54 -5
  368. package/webkit/index.ts +1 -0
  369. package/webkit/useCsrValues.ts +16 -10
  370. package/webkit/useFrameRuntime.ts +10 -1
  371. package/webkit/useLocation.ts +4 -3
  372. package/webkit/useVisualViewportFrame.tsx +52 -0
  373. package/service/predefinedAdaptor/sql/driver/libsql.ts +0 -45
  374. package/types/service/predefinedAdaptor/sql/driver/libsql.d.ts +0 -20
  375. package/types/ui/Agent/useKeyboardInset.d.ts +0 -1
  376. package/types/ui/ServerPortal.d.ts +0 -15
  377. package/ui/Agent/useKeyboardInset.ts +0 -19
  378. package/ui/ServerPortal.tsx +0 -49
@@ -4,6 +4,7 @@ import { useDrag } from "@use-gesture/react";
4
4
  import {
5
5
  type CsrContextType,
6
6
  router as clientRouter,
7
+ csrLocation,
7
8
  Device,
8
9
  debugFrame,
9
10
  defaultPageState,
@@ -109,6 +110,7 @@ const pageContentStyle = ({ frameLayout }: RouteState, pageState: FramePageState
109
110
  (frameLayout.keyboard.sticky ? frameLayout.keyboardAccessory.height : 0),
110
111
  ),
111
112
  height: frameLayout.contentViewport.height,
113
+ "--akan-content-height": `${frameLayout.contentViewport.height}px`,
112
114
  });
113
115
 
114
116
  const prevPageContentStyle = (clientHeight: number, prevPageState: FramePageState) => ({
@@ -132,6 +134,10 @@ const tweenedSafeAreas = (
132
134
  bottomSafeArea: {
133
135
  containerStyle: {
134
136
  backgroundColor: pageState.bottomSafeAreaColor,
137
+ visibility:
138
+ pageState.bottomInset > 0 || pageState.bottomSafeAreaColor !== defaultPageState.bottomSafeAreaColor
139
+ ? ("visible" as const)
140
+ : ("hidden" as const),
135
141
  top: tween(progress, clientHeight - prevPageState.bottomSafeArea, clientHeight - pageState.bottomSafeArea),
136
142
  height: tween(progress, prevPageState.bottomSafeArea, pageState.bottomSafeArea),
137
143
  },
@@ -603,7 +609,7 @@ export const useCsrValues = (rootRouteGuide: RouteGuide, pathRoutes: PathRoute[]
603
609
 
604
610
  const { getLocation } = useLocation({ rootRouteGuide });
605
611
  const [initialStack] = useState(() => {
606
- const current = getLocation(window.location.href.replace(window.location.origin, ""));
612
+ const current = getLocation(csrLocation.href);
607
613
  return CsrStack.restore(current, getLocation) ?? { locations: [current], idx: 0 };
608
614
  });
609
615
  const {
@@ -876,8 +882,8 @@ export const useCsrValues = (rootRouteGuide: RouteGuide, pathRoutes: PathRoute[]
876
882
  if (!usePendingNavigation) {
877
883
  setHistoryForward({ type: kind, location: toLocation, scrollTop, scrollToTop });
878
884
  settle(kind === "replace" ? prevLocation : fromLocation);
879
- if (kind === "push") window.history.pushState({ akanEntryId: toLocation.entryId }, "", href);
880
- else window.history.replaceState({ akanEntryId: toLocation.entryId }, "", href);
885
+ if (kind === "push") csrLocation.push({ akanEntryId: toLocation.entryId }, href);
886
+ else csrLocation.replace({ akanEntryId: toLocation.entryId }, href);
881
887
  return;
882
888
  }
883
889
 
@@ -951,8 +957,8 @@ export const useCsrValues = (rootRouteGuide: RouteGuide, pathRoutes: PathRoute[]
951
957
  navigationIntent: intent,
952
958
  phase: "transitioning",
953
959
  });
954
- if (kind === "push") window.history.pushState({ akanEntryId: toLocation.entryId }, "", href);
955
- else window.history.replaceState({ akanEntryId: toLocation.entryId }, "", href);
960
+ if (kind === "push") csrLocation.push({ akanEntryId: toLocation.entryId }, href);
961
+ else csrLocation.replace({ akanEntryId: toLocation.entryId }, href);
956
962
  debugFrame("navigation.commit", { id: intent.id, kind, to: href });
957
963
  window.setTimeout(
958
964
  () => {
@@ -1038,7 +1044,7 @@ export const useCsrValues = (rootRouteGuide: RouteGuide, pathRoutes: PathRoute[]
1038
1044
  ]);
1039
1045
  useEffect(() => {
1040
1046
  debugFrame("csr.mount", { path: resolvedLocation.pathRoute.path, viewport });
1041
- window.history.replaceState({ ...(window.history.state ?? {}), akanEntryId: getCurrentLocation().entryId }, "");
1047
+ csrLocation.replace({ ...((csrLocation.state as object | null) ?? {}), akanEntryId: getCurrentLocation().entryId });
1042
1048
  return () => debugFrame("csr.unmount", { lastPath: resolvedLocation.pathRoute.path });
1043
1049
  }, []);
1044
1050
  const getRouter = useCallback((): RouterInstance => {
@@ -1058,7 +1064,7 @@ export const useCsrValues = (rootRouteGuide: RouteGuide, pathRoutes: PathRoute[]
1058
1064
  push: forward("push"),
1059
1065
  replace: forward("replace"),
1060
1066
  refresh: () => {
1061
- window.location.reload();
1067
+ csrLocation.reload();
1062
1068
  },
1063
1069
  back: async ({ scrollToTop }: RouteOptions = {}) => {
1064
1070
  const targetLocation = getPrevLocation();
@@ -1072,12 +1078,12 @@ export const useCsrValues = (rootRouteGuide: RouteGuide, pathRoutes: PathRoute[]
1072
1078
  const scrollTop = pageContentRef.current?.scrollTop ?? 0;
1073
1079
  setHistoryBack({ type: "back", location, scrollTop, scrollToTop });
1074
1080
  settle(getPrevLocation());
1075
- window.history.back();
1081
+ csrLocation.back();
1076
1082
  },
1077
1083
  };
1078
1084
  window.onpopstate = async (event) => {
1079
- const href = window.location.href.replace(window.location.origin, "");
1080
- const entryId = (window.history.state as { akanEntryId?: string } | null)?.akanEntryId;
1085
+ const href = csrLocation.href;
1086
+ const entryId = (csrLocation.state as { akanEntryId?: string } | null)?.akanEntryId;
1081
1087
  const isAt = (target: Location | null | undefined) =>
1082
1088
  !!target && (entryId ? target.entryId === entryId : target.href === href);
1083
1089
  const routeType = isAt(getNextLocation()) ? "forward" : isAt(getPrevLocation()) ? "back" : null;
@@ -74,7 +74,16 @@ export function applyFrameSlots(
74
74
  ) {
75
75
  const slots = getFrameSlotsForPath(pathRoute, frameSlots, pathRoutes, visiblePaths);
76
76
  const pageState = clonePageState(basePageState);
77
- if (!pathRoute.explicitPageConfigKeys?.cache && slots.some((slot) => slot.cache)) pageState.cache = true;
77
+ const explicit = pathRoute.explicitPageConfigKeys ?? {};
78
+ if (!explicit.cache && slots.some((slot) => slot.cache)) pageState.cache = true;
79
+
80
+ for (const side of ["topInset", "bottomInset"] as const) {
81
+ if (explicit[side]) continue;
82
+ const heights = slots
83
+ .filter((slot) => slot.type === side && !isKeyboardAccessorySlot(slot))
84
+ .map(resolveFrameSlotHeight);
85
+ if (heights.length) pageState[side] = Math.max(...heights);
86
+ }
78
87
  return pageState;
79
88
  }
80
89
 
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import type { Location, PathRoute, RouteGuide } from "akanjs/client";
2
+ import { csrLocation, type Location, type PathRoute, type RouteGuide } from "akanjs/client";
3
3
  import { useCallback, useRef } from "react";
4
4
  import { CsrStack } from "./CsrStack";
5
5
 
@@ -34,7 +34,8 @@ export const useLocation = ({ rootRouteGuide }: UseLocationOptions) => {
34
34
  const targetRouteGuide = getTargetRouteGuide(pathSegments, routeGuide.current);
35
35
  const pathRoute = targetRouteGuide.pathRoute;
36
36
  if (!pathRoute) {
37
- window.location.assign("/404");
37
+
38
+ if (!csrLocation.isMemory || pathname === csrLocation.pathname) csrLocation.assign("/404");
38
39
  throw new Error("404");
39
40
  }
40
41
  return pathRoute;
@@ -57,7 +58,7 @@ export const useLocation = ({ rootRouteGuide }: UseLocationOptions) => {
57
58
  {},
58
59
  );
59
60
  };
60
- const hrefWithoutOrigin = href.replace(window.location.origin, "");
61
+ const hrefWithoutOrigin = csrLocation.strip(href);
61
62
  const [hrefWithoutHash, hash = ""] = hrefWithoutOrigin.split("#");
62
63
  const [pathname, search] = hrefWithoutHash.split("?");
63
64
  const pathRoute = getPathRoute(pathname);
@@ -0,0 +1,52 @@
1
+ "use client";
2
+ import { useEffect, useState } from "react";
3
+
4
+ export interface VisualViewportFrame {
5
+ /** The on-screen keyboard's height over the layout viewport's bottom; 0 while it is closed. */
6
+ keyboardHeight: number;
7
+ /** The visible rectangle's height and its scroll offset from the layout viewport's top, in CSS px. */
8
+ height: number;
9
+ offsetTop: number;
10
+ }
11
+
12
+ const closedFrame = (): VisualViewportFrame => ({
13
+ keyboardHeight: 0,
14
+ height: typeof window === "undefined" ? 0 : window.innerHeight,
15
+ offsetTop: 0,
16
+ });
17
+
18
+ /**
19
+ * The visible part of the page while the on-screen keyboard is up, on the web. Only `visualViewport` reports the
20
+ * keyboard: `dvh` tracks the browser's own chrome, and iOS pans the visual viewport to the field instead of shrinking
21
+ * the page, so a fixed bottom bar stays behind the keyboard until it is placed at `offsetTop + height`.
22
+ */
23
+ export const useVisualViewportFrame = (): VisualViewportFrame => {
24
+ const [frame, setFrame] = useState<VisualViewportFrame>(closedFrame);
25
+ useEffect(() => {
26
+ const viewport = window.visualViewport;
27
+ if (!viewport) return;
28
+ const measure = () => {
29
+
30
+ const zoomed = viewport.scale > 1.01;
31
+ const keyboardHeight = zoomed
32
+ ? 0
33
+ : Math.max(0, Math.round(window.innerHeight - viewport.height - viewport.offsetTop));
34
+ const next = zoomed
35
+ ? closedFrame()
36
+ : { keyboardHeight, height: Math.round(viewport.height), offsetTop: Math.round(viewport.offsetTop) };
37
+ setFrame((prev) =>
38
+ prev.keyboardHeight === next.keyboardHeight && prev.height === next.height && prev.offsetTop === next.offsetTop
39
+ ? prev
40
+ : next,
41
+ );
42
+ };
43
+ measure();
44
+ viewport.addEventListener("resize", measure);
45
+ viewport.addEventListener("scroll", measure);
46
+ return () => {
47
+ viewport.removeEventListener("resize", measure);
48
+ viewport.removeEventListener("scroll", measure);
49
+ };
50
+ }, []);
51
+ return frame;
52
+ };
@@ -1,45 +0,0 @@
1
- import type { Client as LibsqlClient, Transaction as LibsqlTransaction } from "@libsql/client";
2
- import type { AkanSqlClient, AkanSqlStatement } from "../types";
3
- import { toLibsqlArgs } from "../values";
4
- import { openTurn, type SqliteWriteTurn, waitForTurn } from "./bunSqlite";
5
-
6
- export class LibsqlStatement implements AkanSqlStatement {
7
- readonly #turn: () => Promise<void>;
8
- constructor(
9
- private readonly client: LibsqlClient | LibsqlTransaction,
10
- private readonly sql: string,
11
- writeTurn: SqliteWriteTurn = openTurn,
12
- ) {
13
- this.#turn = waitForTurn(sql, writeTurn);
14
- }
15
- async run(...params: unknown[]) {
16
- await this.#turn();
17
- return await this.client.execute({ sql: this.sql, args: toLibsqlArgs(params) });
18
- }
19
- async get<Row = Record<string, unknown>>(...params: unknown[]): Promise<Row | null> {
20
- await this.#turn();
21
- const result = await this.client.execute({ sql: this.sql, args: toLibsqlArgs(params) });
22
- return (result.rows[0] as Row | undefined) ?? null;
23
- }
24
- async all<Row = Record<string, unknown>>(...params: unknown[]): Promise<Row[]> {
25
- await this.#turn();
26
- const result = await this.client.execute({ sql: this.sql, args: toLibsqlArgs(params) });
27
- return result.rows as Row[];
28
- }
29
- }
30
-
31
- export class LibsqlAkanClient implements AkanSqlClient {
32
- constructor(
33
- readonly client: LibsqlClient | LibsqlTransaction,
34
- private readonly writeTurn: SqliteWriteTurn = openTurn,
35
- ) {}
36
- async execute(sql: string, params: unknown[] | Record<string, unknown> = []) {
37
- return await this.prepare(sql).run(...(Array.isArray(params) ? params : [params]));
38
- }
39
- prepare(sql: string): AkanSqlStatement {
40
- return new LibsqlStatement(this.client, sql, this.writeTurn);
41
- }
42
- async close() {
43
- this.client.close();
44
- }
45
- }
@@ -1,20 +0,0 @@
1
- import type { Client as LibsqlClient, Transaction as LibsqlTransaction } from "@libsql/client";
2
- import type { AkanSqlClient, AkanSqlStatement } from "../types.d.ts";
3
- import { type SqliteWriteTurn } from "./bunSqlite.d.ts";
4
- export declare class LibsqlStatement implements AkanSqlStatement {
5
- #private;
6
- private readonly client;
7
- private readonly sql;
8
- constructor(client: LibsqlClient | LibsqlTransaction, sql: string, writeTurn?: SqliteWriteTurn);
9
- run(...params: unknown[]): Promise<import("@libsql/client").ResultSet>;
10
- get<Row = Record<string, unknown>>(...params: unknown[]): Promise<Row | null>;
11
- all<Row = Record<string, unknown>>(...params: unknown[]): Promise<Row[]>;
12
- }
13
- export declare class LibsqlAkanClient implements AkanSqlClient {
14
- readonly client: LibsqlClient | LibsqlTransaction;
15
- private readonly writeTurn;
16
- constructor(client: LibsqlClient | LibsqlTransaction, writeTurn?: SqliteWriteTurn);
17
- execute(sql: string, params?: unknown[] | Record<string, unknown>): Promise<unknown>;
18
- prepare(sql: string): AkanSqlStatement;
19
- close(): Promise<void>;
20
- }
@@ -1 +0,0 @@
1
- export declare const useKeyboardInset: () => number;
@@ -1,15 +0,0 @@
1
- import type { ReactNode } from "react";
2
- interface ServerPortalStore {
3
- capture: (id: string, children: ReactNode) => void;
4
- read: (id: string) => ReactNode;
5
- }
6
- declare global {
7
- var __AKAN_SERVER_PORTAL_STORE__: ServerPortalStore | undefined;
8
- }
9
- export declare const createServerPortalStore: () => ServerPortalStore;
10
- export declare const setActiveServerPortalStore: (store: ServerPortalStore) => void;
11
- export declare const captureServerPortal: (id: string, children: ReactNode) => boolean;
12
- export declare const ServerPortalOutlet: ({ id }: {
13
- id: string;
14
- }) => import("react").JSX.Element;
15
- export {};
@@ -1,19 +0,0 @@
1
- "use client";
2
- import { useEffect, useState } from "react";
3
-
4
- export const useKeyboardInset = () => {
5
- const [inset, setInset] = useState(0);
6
- useEffect(() => {
7
- const viewport = window.visualViewport;
8
- if (!viewport) return;
9
- const measure = () => setInset(Math.max(0, window.innerHeight - viewport.height - viewport.offsetTop));
10
- measure();
11
- viewport.addEventListener("resize", measure);
12
- viewport.addEventListener("scroll", measure);
13
- return () => {
14
- viewport.removeEventListener("resize", measure);
15
- viewport.removeEventListener("scroll", measure);
16
- };
17
- }, []);
18
- return inset;
19
- };
@@ -1,49 +0,0 @@
1
- import { getRequestStore } from "akanjs/fetch";
2
- import type { ReactNode } from "react";
3
-
4
- interface ServerPortalStore {
5
- capture: (id: string, children: ReactNode) => void;
6
- read: (id: string) => ReactNode;
7
- }
8
-
9
- declare global {
10
- var __AKAN_SERVER_PORTAL_STORE__: ServerPortalStore | undefined;
11
- }
12
-
13
- export const createServerPortalStore = (): ServerPortalStore => {
14
- const portals = new Map<string, ReactNode[]>();
15
- return {
16
- capture: (id, children) => {
17
- const current = portals.get(id) ?? [];
18
- current.push(children);
19
- portals.set(id, current);
20
- },
21
- read: (id) => portals.get(id) ?? null,
22
- };
23
- };
24
-
25
- export const setActiveServerPortalStore = (store: ServerPortalStore): void => {
26
- const requestStore = getRequestStore() as ({ serverPortalStore?: ServerPortalStore } & object) | undefined;
27
- if (requestStore) {
28
- requestStore.serverPortalStore = store;
29
- return;
30
- }
31
- globalThis.__AKAN_SERVER_PORTAL_STORE__ = store;
32
- };
33
-
34
- const getActiveServerPortalStore = (): ServerPortalStore | undefined => {
35
- const requestStore = getRequestStore() as ({ serverPortalStore?: ServerPortalStore } & object) | undefined;
36
- return requestStore?.serverPortalStore ?? globalThis.__AKAN_SERVER_PORTAL_STORE__;
37
- };
38
-
39
- export const captureServerPortal = (id: string, children: ReactNode): boolean => {
40
- const store = getActiveServerPortalStore();
41
- if (!store) return false;
42
- store.capture(id, children);
43
- return true;
44
- };
45
-
46
- export const ServerPortalOutlet = ({ id }: { id: string }) => {
47
- const serverPortal = getActiveServerPortalStore();
48
- return <>{serverPortal?.read(id)}</>;
49
- };