@intentcomputing/koko-agent-sdk 1.0.1

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 (622) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/CODE_OF_CONDUCT.md +3 -0
  3. package/CONTRIBUTING.md +9 -0
  4. package/LICENSE +21 -0
  5. package/README.md +65 -0
  6. package/README.zh-CN.md +50 -0
  7. package/SECURITY.md +5 -0
  8. package/android/build.gradle +40 -0
  9. package/android/src/main/AndroidManifest.xml +2 -0
  10. package/android/src/main/java/cn/intentcomputing/kokoagentsdk/KokoAgentSdkModule.java +1356 -0
  11. package/android/src/main/java/cn/intentcomputing/kokoagentsdk/KokoAgentSdkPackage.java +23 -0
  12. package/docs/INTEGRATION.md +168 -0
  13. package/docs/INTEGRATION.zh-CN.md +140 -0
  14. package/docs/PRIVACY.md +11 -0
  15. package/docs/PRIVACY.zh-CN.md +11 -0
  16. package/docs/PUBLISH.md +11 -0
  17. package/docs/PUBLISH.zh-CN.md +11 -0
  18. package/ios/KokoAgentSdk/KokoAgentSdk.h +5 -0
  19. package/ios/KokoAgentSdk/KokoAgentSdk.m +2464 -0
  20. package/ios/KokoAgentSdk/KokoOcrBounds.h +20 -0
  21. package/ios/KokoAgentSdk/KokoScrollBounds.h +21 -0
  22. package/koko-agent-sdk.podspec +23 -0
  23. package/lib/commonjs/KokoAgent.js +1427 -0
  24. package/lib/commonjs/KokoAgent.js.map +1 -0
  25. package/lib/commonjs/assist/OnDeviceAssist.js +94 -0
  26. package/lib/commonjs/assist/OnDeviceAssist.js.map +1 -0
  27. package/lib/commonjs/assist/intentClassify.js +100 -0
  28. package/lib/commonjs/assist/intentClassify.js.map +1 -0
  29. package/lib/commonjs/assist/nodeRank.js +120 -0
  30. package/lib/commonjs/assist/nodeRank.js.map +1 -0
  31. package/lib/commonjs/assist/ocrTarget.js +135 -0
  32. package/lib/commonjs/assist/ocrTarget.js.map +1 -0
  33. package/lib/commonjs/assist/webVisualChange.js +29 -0
  34. package/lib/commonjs/assist/webVisualChange.js.map +1 -0
  35. package/lib/commonjs/client/ActionOutcomeUnknownError.js +28 -0
  36. package/lib/commonjs/client/ActionOutcomeUnknownError.js.map +1 -0
  37. package/lib/commonjs/client/AgentSession.js +858 -0
  38. package/lib/commonjs/client/AgentSession.js.map +1 -0
  39. package/lib/commonjs/client/GatewayClient.js +302 -0
  40. package/lib/commonjs/client/GatewayClient.js.map +1 -0
  41. package/lib/commonjs/client/OperationReplayGuard.js +62 -0
  42. package/lib/commonjs/client/OperationReplayGuard.js.map +1 -0
  43. package/lib/commonjs/client/RunCheckpoint.js +139 -0
  44. package/lib/commonjs/client/RunCheckpoint.js.map +1 -0
  45. package/lib/commonjs/client/loopDetect.js +184 -0
  46. package/lib/commonjs/client/loopDetect.js.map +1 -0
  47. package/lib/commonjs/client/recentSearch.js +50 -0
  48. package/lib/commonjs/client/recentSearch.js.map +1 -0
  49. package/lib/commonjs/client/walletChoiceGuard.js +18 -0
  50. package/lib/commonjs/client/walletChoiceGuard.js.map +1 -0
  51. package/lib/commonjs/client/webResultCategory.js +38 -0
  52. package/lib/commonjs/client/webResultCategory.js.map +1 -0
  53. package/lib/commonjs/commercial/AccountStore.js +78 -0
  54. package/lib/commonjs/commercial/AccountStore.js.map +1 -0
  55. package/lib/commonjs/commercial/AgentDebug.js +104 -0
  56. package/lib/commonjs/commercial/AgentDebug.js.map +1 -0
  57. package/lib/commonjs/commercial/ExecutionGuard.js +53 -0
  58. package/lib/commonjs/commercial/ExecutionGuard.js.map +1 -0
  59. package/lib/commonjs/commercial/UsageBus.js +42 -0
  60. package/lib/commonjs/commercial/UsageBus.js.map +1 -0
  61. package/lib/commonjs/commercial/branding.js +69 -0
  62. package/lib/commonjs/commercial/branding.js.map +1 -0
  63. package/lib/commonjs/commercial/devMode.js +52 -0
  64. package/lib/commonjs/commercial/devMode.js.map +1 -0
  65. package/lib/commonjs/commercial/trust.js +69 -0
  66. package/lib/commonjs/commercial/trust.js.map +1 -0
  67. package/lib/commonjs/confirmation/gate.js +62 -0
  68. package/lib/commonjs/confirmation/gate.js.map +1 -0
  69. package/lib/commonjs/cursor/CursorOverlay.js +141 -0
  70. package/lib/commonjs/cursor/CursorOverlay.js.map +1 -0
  71. package/lib/commonjs/cursor/PointerHand.js +51 -0
  72. package/lib/commonjs/cursor/PointerHand.js.map +1 -0
  73. package/lib/commonjs/cursor/controller.js +91 -0
  74. package/lib/commonjs/cursor/controller.js.map +1 -0
  75. package/lib/commonjs/cursor/pointer.js +49 -0
  76. package/lib/commonjs/cursor/pointer.js.map +1 -0
  77. package/lib/commonjs/debug/KokoRemoteSmoke.js +611 -0
  78. package/lib/commonjs/debug/KokoRemoteSmoke.js.map +1 -0
  79. package/lib/commonjs/explore/ExplorationGraph.js +418 -0
  80. package/lib/commonjs/explore/ExplorationGraph.js.map +1 -0
  81. package/lib/commonjs/explore/bootstrapExplore.js +59 -0
  82. package/lib/commonjs/explore/bootstrapExplore.js.map +1 -0
  83. package/lib/commonjs/host/HostActions.js +266 -0
  84. package/lib/commonjs/host/HostActions.js.map +1 -0
  85. package/lib/commonjs/i18n/index.js +169 -0
  86. package/lib/commonjs/i18n/index.js.map +1 -0
  87. package/lib/commonjs/i18n/runtimeMessages.js +184 -0
  88. package/lib/commonjs/i18n/runtimeMessages.js.map +1 -0
  89. package/lib/commonjs/index.js +640 -0
  90. package/lib/commonjs/index.js.map +1 -0
  91. package/lib/commonjs/native/NativeBridge.js +132 -0
  92. package/lib/commonjs/native/NativeBridge.js.map +1 -0
  93. package/lib/commonjs/native/navigationLabel.js +16 -0
  94. package/lib/commonjs/native/navigationLabel.js.map +1 -0
  95. package/lib/commonjs/native/normalizeViewTree.js +28 -0
  96. package/lib/commonjs/native/normalizeViewTree.js.map +1 -0
  97. package/lib/commonjs/native/pruneOffscreen.js +76 -0
  98. package/lib/commonjs/native/pruneOffscreen.js.map +1 -0
  99. package/lib/commonjs/native/scrollViewport.js +69 -0
  100. package/lib/commonjs/native/scrollViewport.js.map +1 -0
  101. package/lib/commonjs/package.json +1 -0
  102. package/lib/commonjs/privacy/redact.js +108 -0
  103. package/lib/commonjs/privacy/redact.js.map +1 -0
  104. package/lib/commonjs/privacy/screenEvidence.js +59 -0
  105. package/lib/commonjs/privacy/screenEvidence.js.map +1 -0
  106. package/lib/commonjs/privacy/screenModel.js +404 -0
  107. package/lib/commonjs/privacy/screenModel.js.map +1 -0
  108. package/lib/commonjs/privacy/sensitiveScreen.js +58 -0
  109. package/lib/commonjs/privacy/sensitiveScreen.js.map +1 -0
  110. package/lib/commonjs/privacy/userGate.js +213 -0
  111. package/lib/commonjs/privacy/userGate.js.map +1 -0
  112. package/lib/commonjs/protocol/actions.js +112 -0
  113. package/lib/commonjs/protocol/actions.js.map +1 -0
  114. package/lib/commonjs/provider/HostAppearanceStore.js +111 -0
  115. package/lib/commonjs/provider/HostAppearanceStore.js.map +1 -0
  116. package/lib/commonjs/provider/KokoProvider.js +81 -0
  117. package/lib/commonjs/provider/KokoProvider.js.map +1 -0
  118. package/lib/commonjs/provider/KokoUiContext.js +102 -0
  119. package/lib/commonjs/provider/KokoUiContext.js.map +1 -0
  120. package/lib/commonjs/selector/match.js +378 -0
  121. package/lib/commonjs/selector/match.js.map +1 -0
  122. package/lib/commonjs/task/TaskStore.js +361 -0
  123. package/lib/commonjs/task/TaskStore.js.map +1 -0
  124. package/lib/commonjs/task/types.js +2 -0
  125. package/lib/commonjs/task/types.js.map +1 -0
  126. package/lib/commonjs/task/useTaskStore.js +14 -0
  127. package/lib/commonjs/task/useTaskStore.js.map +1 -0
  128. package/lib/commonjs/types.js +2 -0
  129. package/lib/commonjs/types.js.map +1 -0
  130. package/lib/commonjs/ui/KokoChatSheet.js +885 -0
  131. package/lib/commonjs/ui/KokoChatSheet.js.map +1 -0
  132. package/lib/commonjs/ui/KokoComposer.js +161 -0
  133. package/lib/commonjs/ui/KokoComposer.js.map +1 -0
  134. package/lib/commonjs/ui/KokoDialogHost.js +254 -0
  135. package/lib/commonjs/ui/KokoDialogHost.js.map +1 -0
  136. package/lib/commonjs/ui/KokoEntryButton.js +81 -0
  137. package/lib/commonjs/ui/KokoEntryButton.js.map +1 -0
  138. package/lib/commonjs/ui/KokoObserver.js +522 -0
  139. package/lib/commonjs/ui/KokoObserver.js.map +1 -0
  140. package/lib/commonjs/ui/KokoOverlayLayer.js +45 -0
  141. package/lib/commonjs/ui/KokoOverlayLayer.js.map +1 -0
  142. package/lib/commonjs/ui/KokoSubtitle.js +95 -0
  143. package/lib/commonjs/ui/KokoSubtitle.js.map +1 -0
  144. package/lib/commonjs/ui/KokoTaskPanel.js +322 -0
  145. package/lib/commonjs/ui/KokoTaskPanel.js.map +1 -0
  146. package/lib/commonjs/ui/hostOverlay.js +126 -0
  147. package/lib/commonjs/ui/hostOverlay.js.map +1 -0
  148. package/lib/commonjs/ui/icons.js +132 -0
  149. package/lib/commonjs/ui/icons.js.map +1 -0
  150. package/lib/commonjs/ui/progressChrome.js +66 -0
  151. package/lib/commonjs/ui/progressChrome.js.map +1 -0
  152. package/lib/commonjs/ui/safeArea.js +96 -0
  153. package/lib/commonjs/ui/safeArea.js.map +1 -0
  154. package/lib/commonjs/ui/useOverlayOrigin.js +40 -0
  155. package/lib/commonjs/ui/useOverlayOrigin.js.map +1 -0
  156. package/lib/module/KokoAgent.js +1418 -0
  157. package/lib/module/KokoAgent.js.map +1 -0
  158. package/lib/module/assist/OnDeviceAssist.js +89 -0
  159. package/lib/module/assist/OnDeviceAssist.js.map +1 -0
  160. package/lib/module/assist/intentClassify.js +95 -0
  161. package/lib/module/assist/intentClassify.js.map +1 -0
  162. package/lib/module/assist/nodeRank.js +115 -0
  163. package/lib/module/assist/nodeRank.js.map +1 -0
  164. package/lib/module/assist/ocrTarget.js +123 -0
  165. package/lib/module/assist/ocrTarget.js.map +1 -0
  166. package/lib/module/assist/webVisualChange.js +24 -0
  167. package/lib/module/assist/webVisualChange.js.map +1 -0
  168. package/lib/module/client/ActionOutcomeUnknownError.js +23 -0
  169. package/lib/module/client/ActionOutcomeUnknownError.js.map +1 -0
  170. package/lib/module/client/AgentSession.js +854 -0
  171. package/lib/module/client/AgentSession.js.map +1 -0
  172. package/lib/module/client/GatewayClient.js +293 -0
  173. package/lib/module/client/GatewayClient.js.map +1 -0
  174. package/lib/module/client/OperationReplayGuard.js +58 -0
  175. package/lib/module/client/OperationReplayGuard.js.map +1 -0
  176. package/lib/module/client/RunCheckpoint.js +135 -0
  177. package/lib/module/client/RunCheckpoint.js.map +1 -0
  178. package/lib/module/client/loopDetect.js +177 -0
  179. package/lib/module/client/loopDetect.js.map +1 -0
  180. package/lib/module/client/recentSearch.js +46 -0
  181. package/lib/module/client/recentSearch.js.map +1 -0
  182. package/lib/module/client/walletChoiceGuard.js +14 -0
  183. package/lib/module/client/walletChoiceGuard.js.map +1 -0
  184. package/lib/module/client/webResultCategory.js +34 -0
  185. package/lib/module/client/webResultCategory.js.map +1 -0
  186. package/lib/module/commercial/AccountStore.js +75 -0
  187. package/lib/module/commercial/AccountStore.js.map +1 -0
  188. package/lib/module/commercial/AgentDebug.js +99 -0
  189. package/lib/module/commercial/AgentDebug.js.map +1 -0
  190. package/lib/module/commercial/ExecutionGuard.js +49 -0
  191. package/lib/module/commercial/ExecutionGuard.js.map +1 -0
  192. package/lib/module/commercial/UsageBus.js +38 -0
  193. package/lib/module/commercial/UsageBus.js.map +1 -0
  194. package/lib/module/commercial/branding.js +63 -0
  195. package/lib/module/commercial/branding.js.map +1 -0
  196. package/lib/module/commercial/devMode.js +45 -0
  197. package/lib/module/commercial/devMode.js.map +1 -0
  198. package/lib/module/commercial/trust.js +62 -0
  199. package/lib/module/commercial/trust.js.map +1 -0
  200. package/lib/module/confirmation/gate.js +54 -0
  201. package/lib/module/confirmation/gate.js.map +1 -0
  202. package/lib/module/cursor/CursorOverlay.js +136 -0
  203. package/lib/module/cursor/CursorOverlay.js.map +1 -0
  204. package/lib/module/cursor/PointerHand.js +47 -0
  205. package/lib/module/cursor/PointerHand.js.map +1 -0
  206. package/lib/module/cursor/controller.js +87 -0
  207. package/lib/module/cursor/controller.js.map +1 -0
  208. package/lib/module/cursor/pointer.js +45 -0
  209. package/lib/module/cursor/pointer.js.map +1 -0
  210. package/lib/module/debug/KokoRemoteSmoke.js +608 -0
  211. package/lib/module/debug/KokoRemoteSmoke.js.map +1 -0
  212. package/lib/module/explore/ExplorationGraph.js +406 -0
  213. package/lib/module/explore/ExplorationGraph.js.map +1 -0
  214. package/lib/module/explore/bootstrapExplore.js +55 -0
  215. package/lib/module/explore/bootstrapExplore.js.map +1 -0
  216. package/lib/module/host/HostActions.js +255 -0
  217. package/lib/module/host/HostActions.js.map +1 -0
  218. package/lib/module/i18n/index.js +159 -0
  219. package/lib/module/i18n/index.js.map +1 -0
  220. package/lib/module/i18n/runtimeMessages.js +180 -0
  221. package/lib/module/i18n/runtimeMessages.js.map +1 -0
  222. package/lib/module/index.js +44 -0
  223. package/lib/module/index.js.map +1 -0
  224. package/lib/module/native/NativeBridge.js +128 -0
  225. package/lib/module/native/NativeBridge.js.map +1 -0
  226. package/lib/module/native/navigationLabel.js +12 -0
  227. package/lib/module/native/navigationLabel.js.map +1 -0
  228. package/lib/module/native/normalizeViewTree.js +25 -0
  229. package/lib/module/native/normalizeViewTree.js.map +1 -0
  230. package/lib/module/native/pruneOffscreen.js +72 -0
  231. package/lib/module/native/pruneOffscreen.js.map +1 -0
  232. package/lib/module/native/scrollViewport.js +63 -0
  233. package/lib/module/native/scrollViewport.js.map +1 -0
  234. package/lib/module/package.json +1 -0
  235. package/lib/module/privacy/redact.js +103 -0
  236. package/lib/module/privacy/redact.js.map +1 -0
  237. package/lib/module/privacy/screenEvidence.js +50 -0
  238. package/lib/module/privacy/screenEvidence.js.map +1 -0
  239. package/lib/module/privacy/screenModel.js +397 -0
  240. package/lib/module/privacy/screenModel.js.map +1 -0
  241. package/lib/module/privacy/sensitiveScreen.js +52 -0
  242. package/lib/module/privacy/sensitiveScreen.js.map +1 -0
  243. package/lib/module/privacy/userGate.js +202 -0
  244. package/lib/module/privacy/userGate.js.map +1 -0
  245. package/lib/module/protocol/actions.js +108 -0
  246. package/lib/module/protocol/actions.js.map +1 -0
  247. package/lib/module/provider/HostAppearanceStore.js +101 -0
  248. package/lib/module/provider/HostAppearanceStore.js.map +1 -0
  249. package/lib/module/provider/KokoProvider.js +74 -0
  250. package/lib/module/provider/KokoProvider.js.map +1 -0
  251. package/lib/module/provider/KokoUiContext.js +96 -0
  252. package/lib/module/provider/KokoUiContext.js.map +1 -0
  253. package/lib/module/selector/match.js +366 -0
  254. package/lib/module/selector/match.js.map +1 -0
  255. package/lib/module/task/TaskStore.js +356 -0
  256. package/lib/module/task/TaskStore.js.map +1 -0
  257. package/lib/module/task/types.js +2 -0
  258. package/lib/module/task/types.js.map +1 -0
  259. package/lib/module/task/useTaskStore.js +10 -0
  260. package/lib/module/task/useTaskStore.js.map +1 -0
  261. package/lib/module/types.js +2 -0
  262. package/lib/module/types.js.map +1 -0
  263. package/lib/module/ui/KokoChatSheet.js +879 -0
  264. package/lib/module/ui/KokoChatSheet.js.map +1 -0
  265. package/lib/module/ui/KokoComposer.js +155 -0
  266. package/lib/module/ui/KokoComposer.js.map +1 -0
  267. package/lib/module/ui/KokoDialogHost.js +247 -0
  268. package/lib/module/ui/KokoDialogHost.js.map +1 -0
  269. package/lib/module/ui/KokoEntryButton.js +74 -0
  270. package/lib/module/ui/KokoEntryButton.js.map +1 -0
  271. package/lib/module/ui/KokoObserver.js +516 -0
  272. package/lib/module/ui/KokoObserver.js.map +1 -0
  273. package/lib/module/ui/KokoOverlayLayer.js +39 -0
  274. package/lib/module/ui/KokoOverlayLayer.js.map +1 -0
  275. package/lib/module/ui/KokoSubtitle.js +90 -0
  276. package/lib/module/ui/KokoSubtitle.js.map +1 -0
  277. package/lib/module/ui/KokoTaskPanel.js +316 -0
  278. package/lib/module/ui/KokoTaskPanel.js.map +1 -0
  279. package/lib/module/ui/hostOverlay.js +120 -0
  280. package/lib/module/ui/hostOverlay.js.map +1 -0
  281. package/lib/module/ui/icons.js +124 -0
  282. package/lib/module/ui/icons.js.map +1 -0
  283. package/lib/module/ui/progressChrome.js +58 -0
  284. package/lib/module/ui/progressChrome.js.map +1 -0
  285. package/lib/module/ui/safeArea.js +92 -0
  286. package/lib/module/ui/safeArea.js.map +1 -0
  287. package/lib/module/ui/useOverlayOrigin.js +36 -0
  288. package/lib/module/ui/useOverlayOrigin.js.map +1 -0
  289. package/lib/typescript/commonjs/KokoAgent.d.ts +167 -0
  290. package/lib/typescript/commonjs/KokoAgent.d.ts.map +1 -0
  291. package/lib/typescript/commonjs/assist/OnDeviceAssist.d.ts +31 -0
  292. package/lib/typescript/commonjs/assist/OnDeviceAssist.d.ts.map +1 -0
  293. package/lib/typescript/commonjs/assist/intentClassify.d.ts +18 -0
  294. package/lib/typescript/commonjs/assist/intentClassify.d.ts.map +1 -0
  295. package/lib/typescript/commonjs/assist/nodeRank.d.ts +32 -0
  296. package/lib/typescript/commonjs/assist/nodeRank.d.ts.map +1 -0
  297. package/lib/typescript/commonjs/assist/ocrTarget.d.ts +25 -0
  298. package/lib/typescript/commonjs/assist/ocrTarget.d.ts.map +1 -0
  299. package/lib/typescript/commonjs/assist/webVisualChange.d.ts +6 -0
  300. package/lib/typescript/commonjs/assist/webVisualChange.d.ts.map +1 -0
  301. package/lib/typescript/commonjs/client/ActionOutcomeUnknownError.d.ts +13 -0
  302. package/lib/typescript/commonjs/client/ActionOutcomeUnknownError.d.ts.map +1 -0
  303. package/lib/typescript/commonjs/client/AgentSession.d.ts +56 -0
  304. package/lib/typescript/commonjs/client/AgentSession.d.ts.map +1 -0
  305. package/lib/typescript/commonjs/client/GatewayClient.d.ts +149 -0
  306. package/lib/typescript/commonjs/client/GatewayClient.d.ts.map +1 -0
  307. package/lib/typescript/commonjs/client/OperationReplayGuard.d.ts +13 -0
  308. package/lib/typescript/commonjs/client/OperationReplayGuard.d.ts.map +1 -0
  309. package/lib/typescript/commonjs/client/RunCheckpoint.d.ts +57 -0
  310. package/lib/typescript/commonjs/client/RunCheckpoint.d.ts.map +1 -0
  311. package/lib/typescript/commonjs/client/loopDetect.d.ts +15 -0
  312. package/lib/typescript/commonjs/client/loopDetect.d.ts.map +1 -0
  313. package/lib/typescript/commonjs/client/recentSearch.d.ts +5 -0
  314. package/lib/typescript/commonjs/client/recentSearch.d.ts.map +1 -0
  315. package/lib/typescript/commonjs/client/walletChoiceGuard.d.ts +4 -0
  316. package/lib/typescript/commonjs/client/walletChoiceGuard.d.ts.map +1 -0
  317. package/lib/typescript/commonjs/client/webResultCategory.d.ts +5 -0
  318. package/lib/typescript/commonjs/client/webResultCategory.d.ts.map +1 -0
  319. package/lib/typescript/commonjs/commercial/AccountStore.d.ts +17 -0
  320. package/lib/typescript/commonjs/commercial/AccountStore.d.ts.map +1 -0
  321. package/lib/typescript/commonjs/commercial/AgentDebug.d.ts +25 -0
  322. package/lib/typescript/commonjs/commercial/AgentDebug.d.ts.map +1 -0
  323. package/lib/typescript/commonjs/commercial/ExecutionGuard.d.ts +18 -0
  324. package/lib/typescript/commonjs/commercial/ExecutionGuard.d.ts.map +1 -0
  325. package/lib/typescript/commonjs/commercial/UsageBus.d.ts +18 -0
  326. package/lib/typescript/commonjs/commercial/UsageBus.d.ts.map +1 -0
  327. package/lib/typescript/commonjs/commercial/branding.d.ts +25 -0
  328. package/lib/typescript/commonjs/commercial/branding.d.ts.map +1 -0
  329. package/lib/typescript/commonjs/commercial/devMode.d.ts +26 -0
  330. package/lib/typescript/commonjs/commercial/devMode.d.ts.map +1 -0
  331. package/lib/typescript/commonjs/commercial/trust.d.ts +21 -0
  332. package/lib/typescript/commonjs/commercial/trust.d.ts.map +1 -0
  333. package/lib/typescript/commonjs/confirmation/gate.d.ts +18 -0
  334. package/lib/typescript/commonjs/confirmation/gate.d.ts.map +1 -0
  335. package/lib/typescript/commonjs/cursor/CursorOverlay.d.ts +13 -0
  336. package/lib/typescript/commonjs/cursor/CursorOverlay.d.ts.map +1 -0
  337. package/lib/typescript/commonjs/cursor/PointerHand.d.ts +16 -0
  338. package/lib/typescript/commonjs/cursor/PointerHand.d.ts.map +1 -0
  339. package/lib/typescript/commonjs/cursor/controller.d.ts +30 -0
  340. package/lib/typescript/commonjs/cursor/controller.d.ts.map +1 -0
  341. package/lib/typescript/commonjs/cursor/pointer.d.ts +23 -0
  342. package/lib/typescript/commonjs/cursor/pointer.d.ts.map +1 -0
  343. package/lib/typescript/commonjs/debug/KokoRemoteSmoke.d.ts +96 -0
  344. package/lib/typescript/commonjs/debug/KokoRemoteSmoke.d.ts.map +1 -0
  345. package/lib/typescript/commonjs/explore/ExplorationGraph.d.ts +96 -0
  346. package/lib/typescript/commonjs/explore/ExplorationGraph.d.ts.map +1 -0
  347. package/lib/typescript/commonjs/explore/bootstrapExplore.d.ts +40 -0
  348. package/lib/typescript/commonjs/explore/bootstrapExplore.d.ts.map +1 -0
  349. package/lib/typescript/commonjs/host/HostActions.d.ts +101 -0
  350. package/lib/typescript/commonjs/host/HostActions.d.ts.map +1 -0
  351. package/lib/typescript/commonjs/i18n/index.d.ts +20 -0
  352. package/lib/typescript/commonjs/i18n/index.d.ts.map +1 -0
  353. package/lib/typescript/commonjs/i18n/runtimeMessages.d.ts +178 -0
  354. package/lib/typescript/commonjs/i18n/runtimeMessages.d.ts.map +1 -0
  355. package/lib/typescript/commonjs/index.d.ts +66 -0
  356. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  357. package/lib/typescript/commonjs/native/NativeBridge.d.ts +70 -0
  358. package/lib/typescript/commonjs/native/NativeBridge.d.ts.map +1 -0
  359. package/lib/typescript/commonjs/native/navigationLabel.d.ts +4 -0
  360. package/lib/typescript/commonjs/native/navigationLabel.d.ts.map +1 -0
  361. package/lib/typescript/commonjs/native/normalizeViewTree.d.ts +4 -0
  362. package/lib/typescript/commonjs/native/normalizeViewTree.d.ts.map +1 -0
  363. package/lib/typescript/commonjs/native/pruneOffscreen.d.ts +3 -0
  364. package/lib/typescript/commonjs/native/pruneOffscreen.d.ts.map +1 -0
  365. package/lib/typescript/commonjs/native/scrollViewport.d.ts +13 -0
  366. package/lib/typescript/commonjs/native/scrollViewport.d.ts.map +1 -0
  367. package/lib/typescript/commonjs/package.json +1 -0
  368. package/lib/typescript/commonjs/privacy/redact.d.ts +9 -0
  369. package/lib/typescript/commonjs/privacy/redact.d.ts.map +1 -0
  370. package/lib/typescript/commonjs/privacy/screenEvidence.d.ts +14 -0
  371. package/lib/typescript/commonjs/privacy/screenEvidence.d.ts.map +1 -0
  372. package/lib/typescript/commonjs/privacy/screenModel.d.ts +26 -0
  373. package/lib/typescript/commonjs/privacy/screenModel.d.ts.map +1 -0
  374. package/lib/typescript/commonjs/privacy/sensitiveScreen.d.ts +8 -0
  375. package/lib/typescript/commonjs/privacy/sensitiveScreen.d.ts.map +1 -0
  376. package/lib/typescript/commonjs/privacy/userGate.d.ts +58 -0
  377. package/lib/typescript/commonjs/privacy/userGate.d.ts.map +1 -0
  378. package/lib/typescript/commonjs/protocol/actions.d.ts +7 -0
  379. package/lib/typescript/commonjs/protocol/actions.d.ts.map +1 -0
  380. package/lib/typescript/commonjs/provider/HostAppearanceStore.d.ts +64 -0
  381. package/lib/typescript/commonjs/provider/HostAppearanceStore.d.ts.map +1 -0
  382. package/lib/typescript/commonjs/provider/KokoProvider.d.ts +39 -0
  383. package/lib/typescript/commonjs/provider/KokoProvider.d.ts.map +1 -0
  384. package/lib/typescript/commonjs/provider/KokoUiContext.d.ts +22 -0
  385. package/lib/typescript/commonjs/provider/KokoUiContext.d.ts.map +1 -0
  386. package/lib/typescript/commonjs/selector/match.d.ts +27 -0
  387. package/lib/typescript/commonjs/selector/match.d.ts.map +1 -0
  388. package/lib/typescript/commonjs/task/TaskStore.d.ts +65 -0
  389. package/lib/typescript/commonjs/task/TaskStore.d.ts.map +1 -0
  390. package/lib/typescript/commonjs/task/types.d.ts +66 -0
  391. package/lib/typescript/commonjs/task/types.d.ts.map +1 -0
  392. package/lib/typescript/commonjs/task/useTaskStore.d.ts +3 -0
  393. package/lib/typescript/commonjs/task/useTaskStore.d.ts.map +1 -0
  394. package/lib/typescript/commonjs/types.d.ts +372 -0
  395. package/lib/typescript/commonjs/types.d.ts.map +1 -0
  396. package/lib/typescript/commonjs/ui/KokoChatSheet.d.ts +8 -0
  397. package/lib/typescript/commonjs/ui/KokoChatSheet.d.ts.map +1 -0
  398. package/lib/typescript/commonjs/ui/KokoComposer.d.ts +13 -0
  399. package/lib/typescript/commonjs/ui/KokoComposer.d.ts.map +1 -0
  400. package/lib/typescript/commonjs/ui/KokoDialogHost.d.ts +32 -0
  401. package/lib/typescript/commonjs/ui/KokoDialogHost.d.ts.map +1 -0
  402. package/lib/typescript/commonjs/ui/KokoEntryButton.d.ts +18 -0
  403. package/lib/typescript/commonjs/ui/KokoEntryButton.d.ts.map +1 -0
  404. package/lib/typescript/commonjs/ui/KokoObserver.d.ts +13 -0
  405. package/lib/typescript/commonjs/ui/KokoObserver.d.ts.map +1 -0
  406. package/lib/typescript/commonjs/ui/KokoOverlayLayer.d.ts +35 -0
  407. package/lib/typescript/commonjs/ui/KokoOverlayLayer.d.ts.map +1 -0
  408. package/lib/typescript/commonjs/ui/KokoSubtitle.d.ts +7 -0
  409. package/lib/typescript/commonjs/ui/KokoSubtitle.d.ts.map +1 -0
  410. package/lib/typescript/commonjs/ui/KokoTaskPanel.d.ts +7 -0
  411. package/lib/typescript/commonjs/ui/KokoTaskPanel.d.ts.map +1 -0
  412. package/lib/typescript/commonjs/ui/hostOverlay.d.ts +28 -0
  413. package/lib/typescript/commonjs/ui/hostOverlay.d.ts.map +1 -0
  414. package/lib/typescript/commonjs/ui/icons.d.ts +26 -0
  415. package/lib/typescript/commonjs/ui/icons.d.ts.map +1 -0
  416. package/lib/typescript/commonjs/ui/progressChrome.d.ts +21 -0
  417. package/lib/typescript/commonjs/ui/progressChrome.d.ts.map +1 -0
  418. package/lib/typescript/commonjs/ui/safeArea.d.ts +12 -0
  419. package/lib/typescript/commonjs/ui/safeArea.d.ts.map +1 -0
  420. package/lib/typescript/commonjs/ui/useOverlayOrigin.d.ts +22 -0
  421. package/lib/typescript/commonjs/ui/useOverlayOrigin.d.ts.map +1 -0
  422. package/lib/typescript/module/KokoAgent.d.ts +167 -0
  423. package/lib/typescript/module/KokoAgent.d.ts.map +1 -0
  424. package/lib/typescript/module/assist/OnDeviceAssist.d.ts +31 -0
  425. package/lib/typescript/module/assist/OnDeviceAssist.d.ts.map +1 -0
  426. package/lib/typescript/module/assist/intentClassify.d.ts +18 -0
  427. package/lib/typescript/module/assist/intentClassify.d.ts.map +1 -0
  428. package/lib/typescript/module/assist/nodeRank.d.ts +32 -0
  429. package/lib/typescript/module/assist/nodeRank.d.ts.map +1 -0
  430. package/lib/typescript/module/assist/ocrTarget.d.ts +25 -0
  431. package/lib/typescript/module/assist/ocrTarget.d.ts.map +1 -0
  432. package/lib/typescript/module/assist/webVisualChange.d.ts +6 -0
  433. package/lib/typescript/module/assist/webVisualChange.d.ts.map +1 -0
  434. package/lib/typescript/module/client/ActionOutcomeUnknownError.d.ts +13 -0
  435. package/lib/typescript/module/client/ActionOutcomeUnknownError.d.ts.map +1 -0
  436. package/lib/typescript/module/client/AgentSession.d.ts +56 -0
  437. package/lib/typescript/module/client/AgentSession.d.ts.map +1 -0
  438. package/lib/typescript/module/client/GatewayClient.d.ts +149 -0
  439. package/lib/typescript/module/client/GatewayClient.d.ts.map +1 -0
  440. package/lib/typescript/module/client/OperationReplayGuard.d.ts +13 -0
  441. package/lib/typescript/module/client/OperationReplayGuard.d.ts.map +1 -0
  442. package/lib/typescript/module/client/RunCheckpoint.d.ts +57 -0
  443. package/lib/typescript/module/client/RunCheckpoint.d.ts.map +1 -0
  444. package/lib/typescript/module/client/loopDetect.d.ts +15 -0
  445. package/lib/typescript/module/client/loopDetect.d.ts.map +1 -0
  446. package/lib/typescript/module/client/recentSearch.d.ts +5 -0
  447. package/lib/typescript/module/client/recentSearch.d.ts.map +1 -0
  448. package/lib/typescript/module/client/walletChoiceGuard.d.ts +4 -0
  449. package/lib/typescript/module/client/walletChoiceGuard.d.ts.map +1 -0
  450. package/lib/typescript/module/client/webResultCategory.d.ts +5 -0
  451. package/lib/typescript/module/client/webResultCategory.d.ts.map +1 -0
  452. package/lib/typescript/module/commercial/AccountStore.d.ts +17 -0
  453. package/lib/typescript/module/commercial/AccountStore.d.ts.map +1 -0
  454. package/lib/typescript/module/commercial/AgentDebug.d.ts +25 -0
  455. package/lib/typescript/module/commercial/AgentDebug.d.ts.map +1 -0
  456. package/lib/typescript/module/commercial/ExecutionGuard.d.ts +18 -0
  457. package/lib/typescript/module/commercial/ExecutionGuard.d.ts.map +1 -0
  458. package/lib/typescript/module/commercial/UsageBus.d.ts +18 -0
  459. package/lib/typescript/module/commercial/UsageBus.d.ts.map +1 -0
  460. package/lib/typescript/module/commercial/branding.d.ts +25 -0
  461. package/lib/typescript/module/commercial/branding.d.ts.map +1 -0
  462. package/lib/typescript/module/commercial/devMode.d.ts +26 -0
  463. package/lib/typescript/module/commercial/devMode.d.ts.map +1 -0
  464. package/lib/typescript/module/commercial/trust.d.ts +21 -0
  465. package/lib/typescript/module/commercial/trust.d.ts.map +1 -0
  466. package/lib/typescript/module/confirmation/gate.d.ts +18 -0
  467. package/lib/typescript/module/confirmation/gate.d.ts.map +1 -0
  468. package/lib/typescript/module/cursor/CursorOverlay.d.ts +13 -0
  469. package/lib/typescript/module/cursor/CursorOverlay.d.ts.map +1 -0
  470. package/lib/typescript/module/cursor/PointerHand.d.ts +16 -0
  471. package/lib/typescript/module/cursor/PointerHand.d.ts.map +1 -0
  472. package/lib/typescript/module/cursor/controller.d.ts +30 -0
  473. package/lib/typescript/module/cursor/controller.d.ts.map +1 -0
  474. package/lib/typescript/module/cursor/pointer.d.ts +23 -0
  475. package/lib/typescript/module/cursor/pointer.d.ts.map +1 -0
  476. package/lib/typescript/module/debug/KokoRemoteSmoke.d.ts +96 -0
  477. package/lib/typescript/module/debug/KokoRemoteSmoke.d.ts.map +1 -0
  478. package/lib/typescript/module/explore/ExplorationGraph.d.ts +96 -0
  479. package/lib/typescript/module/explore/ExplorationGraph.d.ts.map +1 -0
  480. package/lib/typescript/module/explore/bootstrapExplore.d.ts +40 -0
  481. package/lib/typescript/module/explore/bootstrapExplore.d.ts.map +1 -0
  482. package/lib/typescript/module/host/HostActions.d.ts +101 -0
  483. package/lib/typescript/module/host/HostActions.d.ts.map +1 -0
  484. package/lib/typescript/module/i18n/index.d.ts +20 -0
  485. package/lib/typescript/module/i18n/index.d.ts.map +1 -0
  486. package/lib/typescript/module/i18n/runtimeMessages.d.ts +178 -0
  487. package/lib/typescript/module/i18n/runtimeMessages.d.ts.map +1 -0
  488. package/lib/typescript/module/index.d.ts +66 -0
  489. package/lib/typescript/module/index.d.ts.map +1 -0
  490. package/lib/typescript/module/native/NativeBridge.d.ts +70 -0
  491. package/lib/typescript/module/native/NativeBridge.d.ts.map +1 -0
  492. package/lib/typescript/module/native/navigationLabel.d.ts +4 -0
  493. package/lib/typescript/module/native/navigationLabel.d.ts.map +1 -0
  494. package/lib/typescript/module/native/normalizeViewTree.d.ts +4 -0
  495. package/lib/typescript/module/native/normalizeViewTree.d.ts.map +1 -0
  496. package/lib/typescript/module/native/pruneOffscreen.d.ts +3 -0
  497. package/lib/typescript/module/native/pruneOffscreen.d.ts.map +1 -0
  498. package/lib/typescript/module/native/scrollViewport.d.ts +13 -0
  499. package/lib/typescript/module/native/scrollViewport.d.ts.map +1 -0
  500. package/lib/typescript/module/package.json +1 -0
  501. package/lib/typescript/module/privacy/redact.d.ts +9 -0
  502. package/lib/typescript/module/privacy/redact.d.ts.map +1 -0
  503. package/lib/typescript/module/privacy/screenEvidence.d.ts +14 -0
  504. package/lib/typescript/module/privacy/screenEvidence.d.ts.map +1 -0
  505. package/lib/typescript/module/privacy/screenModel.d.ts +26 -0
  506. package/lib/typescript/module/privacy/screenModel.d.ts.map +1 -0
  507. package/lib/typescript/module/privacy/sensitiveScreen.d.ts +8 -0
  508. package/lib/typescript/module/privacy/sensitiveScreen.d.ts.map +1 -0
  509. package/lib/typescript/module/privacy/userGate.d.ts +58 -0
  510. package/lib/typescript/module/privacy/userGate.d.ts.map +1 -0
  511. package/lib/typescript/module/protocol/actions.d.ts +7 -0
  512. package/lib/typescript/module/protocol/actions.d.ts.map +1 -0
  513. package/lib/typescript/module/provider/HostAppearanceStore.d.ts +64 -0
  514. package/lib/typescript/module/provider/HostAppearanceStore.d.ts.map +1 -0
  515. package/lib/typescript/module/provider/KokoProvider.d.ts +39 -0
  516. package/lib/typescript/module/provider/KokoProvider.d.ts.map +1 -0
  517. package/lib/typescript/module/provider/KokoUiContext.d.ts +22 -0
  518. package/lib/typescript/module/provider/KokoUiContext.d.ts.map +1 -0
  519. package/lib/typescript/module/selector/match.d.ts +27 -0
  520. package/lib/typescript/module/selector/match.d.ts.map +1 -0
  521. package/lib/typescript/module/task/TaskStore.d.ts +65 -0
  522. package/lib/typescript/module/task/TaskStore.d.ts.map +1 -0
  523. package/lib/typescript/module/task/types.d.ts +66 -0
  524. package/lib/typescript/module/task/types.d.ts.map +1 -0
  525. package/lib/typescript/module/task/useTaskStore.d.ts +3 -0
  526. package/lib/typescript/module/task/useTaskStore.d.ts.map +1 -0
  527. package/lib/typescript/module/types.d.ts +372 -0
  528. package/lib/typescript/module/types.d.ts.map +1 -0
  529. package/lib/typescript/module/ui/KokoChatSheet.d.ts +8 -0
  530. package/lib/typescript/module/ui/KokoChatSheet.d.ts.map +1 -0
  531. package/lib/typescript/module/ui/KokoComposer.d.ts +13 -0
  532. package/lib/typescript/module/ui/KokoComposer.d.ts.map +1 -0
  533. package/lib/typescript/module/ui/KokoDialogHost.d.ts +32 -0
  534. package/lib/typescript/module/ui/KokoDialogHost.d.ts.map +1 -0
  535. package/lib/typescript/module/ui/KokoEntryButton.d.ts +18 -0
  536. package/lib/typescript/module/ui/KokoEntryButton.d.ts.map +1 -0
  537. package/lib/typescript/module/ui/KokoObserver.d.ts +13 -0
  538. package/lib/typescript/module/ui/KokoObserver.d.ts.map +1 -0
  539. package/lib/typescript/module/ui/KokoOverlayLayer.d.ts +35 -0
  540. package/lib/typescript/module/ui/KokoOverlayLayer.d.ts.map +1 -0
  541. package/lib/typescript/module/ui/KokoSubtitle.d.ts +7 -0
  542. package/lib/typescript/module/ui/KokoSubtitle.d.ts.map +1 -0
  543. package/lib/typescript/module/ui/KokoTaskPanel.d.ts +7 -0
  544. package/lib/typescript/module/ui/KokoTaskPanel.d.ts.map +1 -0
  545. package/lib/typescript/module/ui/hostOverlay.d.ts +28 -0
  546. package/lib/typescript/module/ui/hostOverlay.d.ts.map +1 -0
  547. package/lib/typescript/module/ui/icons.d.ts +26 -0
  548. package/lib/typescript/module/ui/icons.d.ts.map +1 -0
  549. package/lib/typescript/module/ui/progressChrome.d.ts +21 -0
  550. package/lib/typescript/module/ui/progressChrome.d.ts.map +1 -0
  551. package/lib/typescript/module/ui/safeArea.d.ts +12 -0
  552. package/lib/typescript/module/ui/safeArea.d.ts.map +1 -0
  553. package/lib/typescript/module/ui/useOverlayOrigin.d.ts +22 -0
  554. package/lib/typescript/module/ui/useOverlayOrigin.d.ts.map +1 -0
  555. package/package.json +153 -0
  556. package/react-native.config.js +12 -0
  557. package/src/KokoAgent.ts +1415 -0
  558. package/src/assist/OnDeviceAssist.ts +133 -0
  559. package/src/assist/intentClassify.ts +122 -0
  560. package/src/assist/nodeRank.ts +167 -0
  561. package/src/assist/ocrTarget.ts +146 -0
  562. package/src/assist/webVisualChange.ts +24 -0
  563. package/src/client/ActionOutcomeUnknownError.ts +18 -0
  564. package/src/client/AgentSession.ts +952 -0
  565. package/src/client/GatewayClient.ts +439 -0
  566. package/src/client/OperationReplayGuard.ts +61 -0
  567. package/src/client/RunCheckpoint.ts +154 -0
  568. package/src/client/loopDetect.ts +213 -0
  569. package/src/client/recentSearch.ts +47 -0
  570. package/src/client/walletChoiceGuard.ts +15 -0
  571. package/src/client/webResultCategory.ts +28 -0
  572. package/src/commercial/AccountStore.ts +85 -0
  573. package/src/commercial/AgentDebug.ts +142 -0
  574. package/src/commercial/ExecutionGuard.ts +67 -0
  575. package/src/commercial/UsageBus.ts +44 -0
  576. package/src/commercial/branding.ts +97 -0
  577. package/src/commercial/devMode.ts +48 -0
  578. package/src/commercial/trust.ts +67 -0
  579. package/src/confirmation/gate.ts +82 -0
  580. package/src/cursor/CursorOverlay.tsx +138 -0
  581. package/src/cursor/PointerHand.tsx +49 -0
  582. package/src/cursor/controller.ts +98 -0
  583. package/src/cursor/pointer.ts +40 -0
  584. package/src/debug/KokoRemoteSmoke.tsx +561 -0
  585. package/src/explore/ExplorationGraph.ts +518 -0
  586. package/src/explore/bootstrapExplore.ts +89 -0
  587. package/src/host/HostActions.ts +349 -0
  588. package/src/i18n/index.ts +229 -0
  589. package/src/i18n/runtimeMessages.ts +180 -0
  590. package/src/index.ts +203 -0
  591. package/src/native/NativeBridge.ts +207 -0
  592. package/src/native/navigationLabel.ts +11 -0
  593. package/src/native/normalizeViewTree.ts +16 -0
  594. package/src/native/pruneOffscreen.ts +72 -0
  595. package/src/native/scrollViewport.ts +51 -0
  596. package/src/privacy/redact.ts +115 -0
  597. package/src/privacy/screenEvidence.ts +55 -0
  598. package/src/privacy/screenModel.ts +504 -0
  599. package/src/privacy/sensitiveScreen.ts +55 -0
  600. package/src/privacy/userGate.ts +233 -0
  601. package/src/protocol/actions.ts +66 -0
  602. package/src/provider/HostAppearanceStore.ts +148 -0
  603. package/src/provider/KokoProvider.tsx +118 -0
  604. package/src/provider/KokoUiContext.tsx +162 -0
  605. package/src/selector/match.ts +417 -0
  606. package/src/task/TaskStore.ts +387 -0
  607. package/src/task/types.ts +82 -0
  608. package/src/task/useTaskStore.ts +9 -0
  609. package/src/types.ts +318 -0
  610. package/src/ui/KokoChatSheet.tsx +930 -0
  611. package/src/ui/KokoComposer.tsx +174 -0
  612. package/src/ui/KokoDialogHost.tsx +249 -0
  613. package/src/ui/KokoEntryButton.tsx +74 -0
  614. package/src/ui/KokoObserver.tsx +587 -0
  615. package/src/ui/KokoOverlayLayer.tsx +53 -0
  616. package/src/ui/KokoSubtitle.tsx +80 -0
  617. package/src/ui/KokoTaskPanel.tsx +299 -0
  618. package/src/ui/hostOverlay.tsx +148 -0
  619. package/src/ui/icons.tsx +145 -0
  620. package/src/ui/progressChrome.ts +73 -0
  621. package/src/ui/safeArea.ts +95 -0
  622. package/src/ui/useOverlayOrigin.ts +29 -0
@@ -0,0 +1,97 @@
1
+ import type {
2
+ KokoAccountSnapshot,
3
+ KokoBrandingConfig,
4
+ KokoEntitlements,
5
+ KokoLocale,
6
+ KokoUsageEvent,
7
+ } from '../types';
8
+ import { t } from '../i18n';
9
+
10
+ export const DEFAULT_ENTITLEMENTS: KokoEntitlements = {
11
+ custom_branding: false,
12
+ locale: true,
13
+ };
14
+
15
+ export type ResolvedBranding = {
16
+ name: string;
17
+ /** Letter shown when no image icon. */
18
+ mark: string;
19
+ /** Image source when host provided a require()/uri icon and entitlement allows. */
20
+ iconSource: number | { uri: string } | null;
21
+ tagline: string;
22
+ placeholder: string;
23
+ primaryColor: string;
24
+ /** True when host asked for custom branding but plan denied it. */
25
+ downgraded: boolean;
26
+ };
27
+
28
+ const DEFAULT_PRIMARY = '#0A84FF';
29
+
30
+ function wantsCustomBranding(branding?: KokoBrandingConfig): boolean {
31
+ if (!branding) return false;
32
+ return Boolean(
33
+ (branding.name && branding.name.trim() && branding.name.trim() !== 'Koko') ||
34
+ branding.icon != null ||
35
+ (branding.tagline && branding.tagline.trim()) ||
36
+ (branding.placeholder && branding.placeholder.trim()) ||
37
+ (branding.primaryColor && branding.primaryColor.trim()),
38
+ );
39
+ }
40
+
41
+ /**
42
+ * Resolve what the **built-in** chat UI may show.
43
+ * This is a soft client gate for honest hosts + official gateway.
44
+ * Forked SDKs / custom chrome can always draw their own brand — that is outside
45
+ * this product surface. Usage metering remains server-authoritative.
46
+ */
47
+ export function resolveBranding(
48
+ locale: KokoLocale,
49
+ branding: KokoBrandingConfig | undefined,
50
+ entitlements: KokoEntitlements | undefined,
51
+ ): ResolvedBranding {
52
+ const allowed = entitlements?.custom_branding === true;
53
+ const custom = wantsCustomBranding(branding);
54
+ const downgraded = custom && !allowed;
55
+ const useCustom = custom && allowed;
56
+
57
+ let iconSource: number | { uri: string } | null = null;
58
+ let mark = t(locale, 'brand.defaultMark');
59
+ if (useCustom && branding?.icon != null) {
60
+ if (typeof branding.icon === 'string') {
61
+ if (/^https?:\/\//i.test(branding.icon) || branding.icon.startsWith('data:')) {
62
+ iconSource = { uri: branding.icon };
63
+ } else {
64
+ mark = branding.icon.slice(0, 2);
65
+ }
66
+ } else {
67
+ iconSource = branding.icon;
68
+ }
69
+ }
70
+
71
+ return {
72
+ name: useCustom && branding?.name?.trim() ? branding.name.trim() : t(locale, 'brand.defaultName'),
73
+ mark,
74
+ iconSource,
75
+ tagline:
76
+ useCustom && branding?.tagline?.trim()
77
+ ? branding.tagline.trim()
78
+ : t(locale, 'brand.defaultTagline'),
79
+ placeholder:
80
+ useCustom && branding?.placeholder?.trim()
81
+ ? branding.placeholder.trim()
82
+ : t(locale, 'brand.defaultPlaceholder'),
83
+ primaryColor:
84
+ useCustom && branding?.primaryColor?.trim()
85
+ ? branding.primaryColor.trim()
86
+ : DEFAULT_PRIMARY,
87
+ downgraded,
88
+ };
89
+ }
90
+
91
+ export function emptyAccount(): KokoAccountSnapshot {
92
+ return {
93
+ plan: 'free',
94
+ entitlements: { ...DEFAULT_ENTITLEMENTS },
95
+ quota: { daily: 30, used_today: 0, remaining: 30 },
96
+ };
97
+ }
@@ -0,0 +1,48 @@
1
+ import type { KokoAgentConfig } from '../types';
2
+
3
+ /** True only in Metro debug clients (never in store release binaries). */
4
+ export function isMetroDevBuild(): boolean {
5
+ try {
6
+ // eslint-disable-next-line no-undef
7
+ return typeof __DEV__ !== 'undefined' && __DEV__ === true;
8
+ } catch {
9
+ return false;
10
+ }
11
+ }
12
+
13
+ /**
14
+ * Verbose SDK / agent execution logs for developers.
15
+ * Does NOT relax security (permits, gateway allowlist).
16
+ *
17
+ * On when:
18
+ * - `config.debug === true`, or
19
+ * - Metro `__DEV__` and `config.debug !== false`
20
+ *
21
+ * Release builds: only if host explicitly sets `debug: true`
22
+ * (logs only — still cannot use localhost gateway or skip permits).
23
+ */
24
+ export function resolveDebugLogging(
25
+ config?: Pick<KokoAgentConfig, 'debug' | 'devMode'>,
26
+ ): boolean {
27
+ if (config?.debug === true || config?.devMode === true) return true;
28
+ if (config?.debug === false || config?.devMode === false) return false;
29
+ return isMetroDevBuild();
30
+ }
31
+
32
+ /**
33
+ * @deprecated Use resolveDebugLogging. Kept for call-site migration.
34
+ * Previously also meant "relax security" — that behavior is removed.
35
+ */
36
+ export function resolveDevMode(
37
+ config?: Pick<KokoAgentConfig, 'debug' | 'devMode'>,
38
+ ): boolean {
39
+ return resolveDebugLogging(config);
40
+ }
41
+
42
+ /**
43
+ * Localhost / LAN gateway is only for Intent Computing debugging the
44
+ * in-repo gateway against a Metro debug app — not a customer "self-host" mode.
45
+ */
46
+ export function allowLocalGatewayForDebugClient(): boolean {
47
+ return isMetroDevBuild();
48
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Gateway host policy + entitlement trust.
3
+ *
4
+ * Customers always use official Intent Computing hosts in release apps.
5
+ * Localhost is allowed only in Metro debug clients (so we can dogfood the
6
+ * in-repo gateway) — that is NOT a supported "self-host your own AI" mode.
7
+ */
8
+
9
+ // `agent.intentcomputing.net` is a different Intent Computing service and must
10
+ // not be trusted as a gateway.
11
+ const OFFICIAL_HOST_SUFFIXES = [
12
+ 'sdk.intentcomputing.cn',
13
+ 'sdk.intentcomputing.net',
14
+ ];
15
+
16
+ export function isLocalDevHost(hostname: string): boolean {
17
+ const host = hostname.toLowerCase();
18
+ return (
19
+ host === 'localhost' ||
20
+ host === '127.0.0.1' ||
21
+ host === '10.0.2.2' ||
22
+ host === '0.0.0.0'
23
+ );
24
+ }
25
+
26
+ export function isOfficialGatewayHost(hostname: string): boolean {
27
+ const host = hostname.toLowerCase();
28
+ return OFFICIAL_HOST_SUFFIXES.some(
29
+ (h) => host === h || host.endsWith(`.${h}`),
30
+ );
31
+ }
32
+
33
+ /** Hosts whose /v1/me branding claims we trust. */
34
+ export function isTrustedEntitlementHost(baseUrl: string): boolean {
35
+ try {
36
+ const u = new URL(baseUrl.includes('://') ? baseUrl : `https://${baseUrl}`);
37
+ return isOfficialGatewayHost(u.hostname) || isLocalDevHost(u.hostname);
38
+ } catch {
39
+ return false;
40
+ }
41
+ }
42
+
43
+ /**
44
+ * @param allowLocalLab when true (Metro debug client only), localhost/LAN OK.
45
+ */
46
+ export function isAllowedGatewayUrl(
47
+ baseUrl: string,
48
+ allowLocalLab: boolean,
49
+ ): { ok: true } | { ok: false; reason: string } {
50
+ try {
51
+ const u = new URL(baseUrl.includes('://') ? baseUrl : `https://${baseUrl}`);
52
+ if (isOfficialGatewayHost(u.hostname)) return { ok: true };
53
+ if (allowLocalLab && isLocalDevHost(u.hostname)) return { ok: true };
54
+ if (allowLocalLab) {
55
+ const ipv4 = /^\d{1,3}(\.\d{1,3}){3}$/.test(u.hostname);
56
+ if (ipv4) return { ok: true };
57
+ }
58
+ return {
59
+ ok: false,
60
+ reason: allowLocalLab
61
+ ? `unsupported gateway host: ${u.hostname}`
62
+ : `unsupported gateway host: ${u.hostname}`,
63
+ };
64
+ } catch {
65
+ return { ok: false, reason: 'invalid gateway.baseUrl' };
66
+ }
67
+ }
@@ -0,0 +1,82 @@
1
+ import type { ConfirmationPolicy, SensitiveConfirmContext } from '../types';
2
+
3
+ /**
4
+ * Irreversible / high-risk intents — confirmed once **before** the agent run.
5
+ * Ordinary list deletes are NOT sensitive.
6
+ */
7
+ export const DEFAULT_SENSITIVE_PATTERNS: RegExp[] = [
8
+ /转账|转\s*\d|transfer|withdraw|send\s*(usdt|usdc|eth|btc)?/i,
9
+ /授权|approve|export\s*(key|seed|mnemonic)|私钥|助记词/i,
10
+ /删除(钱包|账户|账号|密钥)|永久删除|注销账户|销毁/i,
11
+ /delete\s*(wallet|account|key|seed)|destroy\s*account/i,
12
+ /confirm\s*(transfer|payment)|确认(转账|支付|授权)/i,
13
+ ];
14
+
15
+ export function isSensitiveLabel(
16
+ label: string | undefined,
17
+ policy?: ConfirmationPolicy,
18
+ ): boolean {
19
+ if (!label) return false;
20
+ const patterns = policy?.sensitivePatterns?.length
21
+ ? policy.sensitivePatterns
22
+ : DEFAULT_SENSITIVE_PATTERNS;
23
+ return patterns.some((re) => re.test(label));
24
+ }
25
+
26
+ /** Goal looks like a high-risk operation → preflight confirm. */
27
+ export function isSensitiveGoal(
28
+ goal: string,
29
+ policy?: ConfirmationPolicy,
30
+ ): boolean {
31
+ return isSensitiveLabel(goal, policy);
32
+ }
33
+
34
+ /**
35
+ * Mid-step gate (legacy). Prefer preflight; during unattended runs this should no-op.
36
+ */
37
+ export async function runConfirmationGate(
38
+ ctx: SensitiveConfirmContext,
39
+ policy: ConfirmationPolicy | undefined,
40
+ onConfirm?: (ctx: SensitiveConfirmContext) => Promise<boolean>,
41
+ ): Promise<boolean> {
42
+ const mode = policy?.mode ?? 'preflight';
43
+ if (mode === 'off' || mode === 'preflight') {
44
+ // Preflight already asked (or disabled). Never block mid-execution.
45
+ return true;
46
+ }
47
+
48
+ const requireConfirm = policy?.requireUserConfirm !== false;
49
+ if (!requireConfirm) return true;
50
+
51
+ const label = ctx.label ?? ctx.action;
52
+ if (!isSensitiveLabel(label, policy) && !isSensitiveLabel(ctx.action, policy)) {
53
+ return true;
54
+ }
55
+
56
+ if (!onConfirm) return false;
57
+ return onConfirm(ctx);
58
+ }
59
+
60
+ /**
61
+ * Ask once before the agent loop. Returns false if user declines.
62
+ */
63
+ export async function runPreflightConfirm(
64
+ goal: string,
65
+ policy: ConfirmationPolicy | undefined,
66
+ onConfirm?: (ctx: SensitiveConfirmContext) => Promise<boolean>,
67
+ ): Promise<boolean> {
68
+ const mode = policy?.mode ?? 'preflight';
69
+ if (mode === 'off') return true;
70
+ if (mode !== 'preflight' && mode !== 'inline') return true;
71
+
72
+ const requireConfirm = policy?.requireUserConfirm !== false;
73
+ if (!requireConfirm) return true;
74
+ if (!isSensitiveGoal(goal, policy)) return true;
75
+
76
+ if (!onConfirm) return false;
77
+
78
+ return onConfirm({
79
+ action: 'preflight',
80
+ label: goal,
81
+ });
82
+ }
@@ -0,0 +1,138 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { Animated, StyleSheet, View } from 'react-native';
3
+ import { CursorController, type CursorState } from './controller';
4
+ import { useTaskStore } from '../task/useTaskStore';
5
+ import { TaskStore } from '../task/TaskStore';
6
+ import { KOKO_CURSOR_TEST_ID } from '../ui/KokoOverlayLayer';
7
+ import { KokoHostOverlay } from '../ui/hostOverlay';
8
+ import { useOverlayOrigin } from '../ui/useOverlayOrigin';
9
+ import { PointerHand } from './PointerHand';
10
+ import { CURSOR_H, CURSOR_TIP_X, CURSOR_TIP_Y, CURSOR_W } from './pointer';
11
+
12
+ /**
13
+ * Native-looking mouse pointer while the agent acts.
14
+ *
15
+ * Uses KokoHostOverlay (FullWindowOverlay on iOS when available) so the
16
+ * cursor stays above react-native-screens Settings / stack modals.
17
+ *
18
+ * Only mount while the cursor is actually visible — an empty FullWindowOverlay
19
+ * stacked under KokoObserver can steal the top presentation and hide the
20
+ * progress pill during host.run-only assist paths.
21
+ */
22
+ export function CursorOverlay() {
23
+ const [state, setState] = useState<CursorState>(CursorController.getState());
24
+ const { tasks, activeTaskId, ui } = useTaskStore();
25
+ const running = tasks.some(
26
+ (t) => t.id === activeTaskId && t.status === 'running',
27
+ );
28
+ const anim = useRef(new Animated.ValueXY({ x: state.x, y: state.y })).current;
29
+ const press = useRef(new Animated.Value(0)).current;
30
+ const opacity = useRef(new Animated.Value(0)).current;
31
+ const chromeEpoch = ui.chromeEpoch ?? 0;
32
+ const { ref: layerRef, origin, measure } = useOverlayOrigin();
33
+
34
+ useEffect(() => CursorController.subscribe(setState), []);
35
+
36
+ useEffect(() => {
37
+ if (!running && state.visible) {
38
+ CursorController.hide();
39
+ }
40
+ }, [running, state.visible]);
41
+
42
+ useEffect(() => {
43
+ if (running && state.visible) {
44
+ TaskStore.liftChrome();
45
+ }
46
+ }, [running, state.visible, state.x, state.y]);
47
+
48
+ useEffect(() => {
49
+ const duration = Math.max(0, state.moveDurationMs ?? 0);
50
+ const to = {
51
+ x: state.x - origin.x - CURSOR_TIP_X,
52
+ y: state.y - origin.y - CURSOR_TIP_Y,
53
+ };
54
+ if (duration <= 0) {
55
+ anim.stopAnimation();
56
+ anim.setValue(to);
57
+ return;
58
+ }
59
+ Animated.timing(anim, {
60
+ toValue: to,
61
+ duration,
62
+ // Reduce native animation work while Fabric registers views during navigation.
63
+ useNativeDriver: false,
64
+ }).start();
65
+ }, [state.x, state.y, state.moveDurationMs, origin.x, origin.y, anim]);
66
+
67
+ useEffect(() => {
68
+ Animated.spring(press, {
69
+ toValue: state.pressing ? 1 : 0,
70
+ useNativeDriver: false,
71
+ friction: 6,
72
+ }).start();
73
+ }, [state.pressing, press]);
74
+
75
+ const show = running && state.visible;
76
+
77
+ useEffect(() => {
78
+ if (show) {
79
+ opacity.stopAnimation();
80
+ opacity.setValue(1);
81
+ return;
82
+ }
83
+ Animated.timing(opacity, {
84
+ toValue: 0,
85
+ duration: 80,
86
+ useNativeDriver: false,
87
+ }).start();
88
+ }, [show, opacity]);
89
+
90
+ if (!show) return null;
91
+
92
+ const scale = press.interpolate({
93
+ inputRange: [0, 1],
94
+ outputRange: [1, 0.88],
95
+ });
96
+
97
+ return (
98
+ <KokoHostOverlay liftToken={chromeEpoch}>
99
+ <View
100
+ ref={layerRef}
101
+ onLayout={measure}
102
+ testID={KOKO_CURSOR_TEST_ID}
103
+ nativeID={KOKO_CURSOR_TEST_ID}
104
+ collapsable={false}
105
+ pointerEvents="none"
106
+ style={styles.layer}
107
+ accessibilityElementsHidden
108
+ importantForAccessibility="no-hide-descendants"
109
+ >
110
+ <Animated.View
111
+ style={[
112
+ styles.cursor,
113
+ {
114
+ opacity,
115
+ transform: [...anim.getTranslateTransform(), { scale }],
116
+ },
117
+ ]}
118
+ >
119
+ <PointerHand />
120
+ </Animated.View>
121
+ </View>
122
+ </KokoHostOverlay>
123
+ );
124
+ }
125
+
126
+ const styles = StyleSheet.create({
127
+ layer: {
128
+ ...StyleSheet.absoluteFillObject,
129
+ backgroundColor: 'transparent',
130
+ },
131
+ cursor: {
132
+ position: 'absolute',
133
+ width: CURSOR_W,
134
+ height: CURSOR_H,
135
+ left: 0,
136
+ top: 0,
137
+ },
138
+ });
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import { StyleSheet, View } from 'react-native';
3
+ import { CURSOR_H, CURSOR_W, HAND_SHAPES, HAND_UNIT, HAND_STROKE } from './pointer';
4
+
5
+ /**
6
+ * The agent's pointer: a hand with the index finger extended.
7
+ *
8
+ * Drawn from views rather than an image. The SDK's assets sit outside the
9
+ * host's Metro project root, and a host that rewrites asset paths (monorepos
10
+ * commonly do) can leave the request unresolvable — the pointer then silently
11
+ * does not render, which is the one thing the user watches to know the agent
12
+ * is acting. Views cannot fail that way, and they stay sharp at any density.
13
+ *
14
+ * Two passes: dark shapes inflated to form the outline, then the white fill
15
+ * over them. Overlaps within a pass are invisible, so the union reads as one
16
+ * silhouette with no internal seams.
17
+ */
18
+ export function PointerHand() {
19
+ return (
20
+ <View style={styles.hand} pointerEvents="none">
21
+ {renderLayer(HAND_STROKE, '#131313')}
22
+ {renderLayer(0, '#FFFFFF')}
23
+ </View>
24
+ );
25
+ }
26
+
27
+ function renderLayer(inflate: number, color: string) {
28
+ return HAND_SHAPES.map(([x, y, w, h, r], i) => (
29
+ <View
30
+ key={`${color}-${i}`}
31
+ style={{
32
+ position: 'absolute',
33
+ left: (x - inflate) * HAND_UNIT,
34
+ top: (y - inflate) * HAND_UNIT,
35
+ width: (w + inflate * 2) * HAND_UNIT,
36
+ height: (h + inflate * 2) * HAND_UNIT,
37
+ borderRadius: (r + inflate) * HAND_UNIT,
38
+ backgroundColor: color,
39
+ }}
40
+ />
41
+ ));
42
+ }
43
+
44
+ const styles = StyleSheet.create({
45
+ hand: {
46
+ width: CURSOR_W,
47
+ height: CURSOR_H,
48
+ },
49
+ });
@@ -0,0 +1,98 @@
1
+ type CursorListener = (state: CursorState) => void;
2
+
3
+ export type CursorState = {
4
+ visible: boolean;
5
+ x: number;
6
+ y: number;
7
+ pressing: boolean;
8
+ /** How long the overlay should animate to (x, y). 0 = snap. */
9
+ moveDurationMs: number;
10
+ };
11
+
12
+ const DEFAULT: CursorState = {
13
+ visible: false,
14
+ x: 0,
15
+ y: 0,
16
+ pressing: false,
17
+ moveDurationMs: 0,
18
+ };
19
+
20
+ /**
21
+ * Imperative cursor controller used by KokoAgent; CursorOverlay subscribes.
22
+ */
23
+ class CursorControllerImpl {
24
+ private state: CursorState = { ...DEFAULT };
25
+ private listeners = new Set<CursorListener>();
26
+
27
+ subscribe(listener: CursorListener): () => void {
28
+ this.listeners.add(listener);
29
+ listener(this.state);
30
+ return () => this.listeners.delete(listener);
31
+ }
32
+
33
+ getState(): CursorState {
34
+ return this.state;
35
+ }
36
+
37
+ private emit() {
38
+ for (const l of this.listeners) l(this.state);
39
+ }
40
+
41
+ showAt(x: number, y: number, moveDurationMs = 0) {
42
+ this.state = {
43
+ ...this.state,
44
+ visible: true,
45
+ x,
46
+ y,
47
+ moveDurationMs,
48
+ };
49
+ this.emit();
50
+ }
51
+
52
+ hide() {
53
+ this.state = { ...DEFAULT };
54
+ this.emit();
55
+ }
56
+
57
+ setPressing(pressing: boolean) {
58
+ this.state = { ...this.state, pressing };
59
+ this.emit();
60
+ }
61
+
62
+ /**
63
+ * Start moving toward the target immediately, then resolve when the
64
+ * visual move should have finished — so tap happens after the cursor arrives.
65
+ */
66
+ async moveTo(x: number, y: number, durationMs: number): Promise<void> {
67
+ const ms = Math.max(0, Math.floor(durationMs));
68
+
69
+ // First appearance: snap near target so we don't fly in from (0,0).
70
+ // Wait long enough for CursorOverlay's transparent Modal to present
71
+ // (hosts with native-stack often need >100ms; 32ms left it invisible).
72
+ if (!this.state.visible) {
73
+ this.showAt(x, y, 0);
74
+ await sleep(140);
75
+ return;
76
+ }
77
+
78
+ const dx = x - this.state.x;
79
+ const dy = y - this.state.y;
80
+ const dist = Math.hypot(dx, dy);
81
+ // Tiny hops: snap; longer moves: animate, then wait for arrival.
82
+ if (dist < 8 || ms === 0) {
83
+ this.showAt(x, y, 0);
84
+ await sleep(24);
85
+ return;
86
+ }
87
+
88
+ this.showAt(x, y, ms);
89
+ // Allow React to start Animated.timing, then wait for arrival.
90
+ await sleep(ms + 24);
91
+ }
92
+ }
93
+
94
+ function sleep(ms: number): Promise<void> {
95
+ return new Promise((resolve) => setTimeout(resolve, ms));
96
+ }
97
+
98
+ export const CursorController = new CursorControllerImpl();
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Geometry for the agent's on-screen pointer.
3
+ *
4
+ * Two overlays draw it (KokoObserver when the progress chrome is mounted,
5
+ * CursorOverlay otherwise), so this lives in one place: a hotspot that
6
+ * disagreed between them would put the pointer somewhere the tap did not go.
7
+ */
8
+
9
+ /** Design grid the hand is laid out on. */
10
+ const GRID_W = 34;
11
+ const GRID_H = 44;
12
+
13
+ /** Keep the grid ratio so the drawing is not squashed. */
14
+ export const CURSOR_W = 26;
15
+ export const CURSOR_H = Math.round((CURSOR_W * GRID_H) / GRID_W);
16
+
17
+ /** Points per grid unit. */
18
+ export const HAND_UNIT = CURSOR_W / GRID_W;
19
+
20
+ /** Outline weight, in grid units. */
21
+ export const HAND_STROKE = 1.6;
22
+
23
+ /**
24
+ * The hand as a union of rounded bars: `[x, y, width, height, radius]` in grid
25
+ * units. Order is back to front, though within a layer it does not matter.
26
+ */
27
+ export const HAND_SHAPES: ReadonlyArray<
28
+ readonly [number, number, number, number, number]
29
+ > = [
30
+ [10, 1.5, 7, 24.5, 3.5], // index finger, extended — its tip is the hotspot
31
+ [16.5, 17, 6.5, 13, 3.2], // middle, folded
32
+ [21.5, 19, 6.5, 12, 3.2], // ring, folded
33
+ [26, 21.5, 5.5, 10.5, 2.7], // little, folded
34
+ [7, 24, 24, 18, 6.5], // palm
35
+ [2.5, 27, 9.5, 7, 3.5], // thumb, across the side of the palm
36
+ ];
37
+
38
+ /** The index fingertip — this is what lands on the tap coordinate. */
39
+ export const CURSOR_TIP_X = 13.5 * HAND_UNIT;
40
+ export const CURSOR_TIP_Y = 0.6 * HAND_UNIT;