@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.
- package/CHANGELOG.md +10 -0
- package/CODE_OF_CONDUCT.md +3 -0
- package/CONTRIBUTING.md +9 -0
- package/LICENSE +21 -0
- package/README.md +65 -0
- package/README.zh-CN.md +50 -0
- package/SECURITY.md +5 -0
- package/android/build.gradle +40 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/cn/intentcomputing/kokoagentsdk/KokoAgentSdkModule.java +1356 -0
- package/android/src/main/java/cn/intentcomputing/kokoagentsdk/KokoAgentSdkPackage.java +23 -0
- package/docs/INTEGRATION.md +168 -0
- package/docs/INTEGRATION.zh-CN.md +140 -0
- package/docs/PRIVACY.md +11 -0
- package/docs/PRIVACY.zh-CN.md +11 -0
- package/docs/PUBLISH.md +11 -0
- package/docs/PUBLISH.zh-CN.md +11 -0
- package/ios/KokoAgentSdk/KokoAgentSdk.h +5 -0
- package/ios/KokoAgentSdk/KokoAgentSdk.m +2464 -0
- package/ios/KokoAgentSdk/KokoOcrBounds.h +20 -0
- package/ios/KokoAgentSdk/KokoScrollBounds.h +21 -0
- package/koko-agent-sdk.podspec +23 -0
- package/lib/commonjs/KokoAgent.js +1427 -0
- package/lib/commonjs/KokoAgent.js.map +1 -0
- package/lib/commonjs/assist/OnDeviceAssist.js +94 -0
- package/lib/commonjs/assist/OnDeviceAssist.js.map +1 -0
- package/lib/commonjs/assist/intentClassify.js +100 -0
- package/lib/commonjs/assist/intentClassify.js.map +1 -0
- package/lib/commonjs/assist/nodeRank.js +120 -0
- package/lib/commonjs/assist/nodeRank.js.map +1 -0
- package/lib/commonjs/assist/ocrTarget.js +135 -0
- package/lib/commonjs/assist/ocrTarget.js.map +1 -0
- package/lib/commonjs/assist/webVisualChange.js +29 -0
- package/lib/commonjs/assist/webVisualChange.js.map +1 -0
- package/lib/commonjs/client/ActionOutcomeUnknownError.js +28 -0
- package/lib/commonjs/client/ActionOutcomeUnknownError.js.map +1 -0
- package/lib/commonjs/client/AgentSession.js +858 -0
- package/lib/commonjs/client/AgentSession.js.map +1 -0
- package/lib/commonjs/client/GatewayClient.js +302 -0
- package/lib/commonjs/client/GatewayClient.js.map +1 -0
- package/lib/commonjs/client/OperationReplayGuard.js +62 -0
- package/lib/commonjs/client/OperationReplayGuard.js.map +1 -0
- package/lib/commonjs/client/RunCheckpoint.js +139 -0
- package/lib/commonjs/client/RunCheckpoint.js.map +1 -0
- package/lib/commonjs/client/loopDetect.js +184 -0
- package/lib/commonjs/client/loopDetect.js.map +1 -0
- package/lib/commonjs/client/recentSearch.js +50 -0
- package/lib/commonjs/client/recentSearch.js.map +1 -0
- package/lib/commonjs/client/walletChoiceGuard.js +18 -0
- package/lib/commonjs/client/walletChoiceGuard.js.map +1 -0
- package/lib/commonjs/client/webResultCategory.js +38 -0
- package/lib/commonjs/client/webResultCategory.js.map +1 -0
- package/lib/commonjs/commercial/AccountStore.js +78 -0
- package/lib/commonjs/commercial/AccountStore.js.map +1 -0
- package/lib/commonjs/commercial/AgentDebug.js +104 -0
- package/lib/commonjs/commercial/AgentDebug.js.map +1 -0
- package/lib/commonjs/commercial/ExecutionGuard.js +53 -0
- package/lib/commonjs/commercial/ExecutionGuard.js.map +1 -0
- package/lib/commonjs/commercial/UsageBus.js +42 -0
- package/lib/commonjs/commercial/UsageBus.js.map +1 -0
- package/lib/commonjs/commercial/branding.js +69 -0
- package/lib/commonjs/commercial/branding.js.map +1 -0
- package/lib/commonjs/commercial/devMode.js +52 -0
- package/lib/commonjs/commercial/devMode.js.map +1 -0
- package/lib/commonjs/commercial/trust.js +69 -0
- package/lib/commonjs/commercial/trust.js.map +1 -0
- package/lib/commonjs/confirmation/gate.js +62 -0
- package/lib/commonjs/confirmation/gate.js.map +1 -0
- package/lib/commonjs/cursor/CursorOverlay.js +141 -0
- package/lib/commonjs/cursor/CursorOverlay.js.map +1 -0
- package/lib/commonjs/cursor/PointerHand.js +51 -0
- package/lib/commonjs/cursor/PointerHand.js.map +1 -0
- package/lib/commonjs/cursor/controller.js +91 -0
- package/lib/commonjs/cursor/controller.js.map +1 -0
- package/lib/commonjs/cursor/pointer.js +49 -0
- package/lib/commonjs/cursor/pointer.js.map +1 -0
- package/lib/commonjs/debug/KokoRemoteSmoke.js +611 -0
- package/lib/commonjs/debug/KokoRemoteSmoke.js.map +1 -0
- package/lib/commonjs/explore/ExplorationGraph.js +418 -0
- package/lib/commonjs/explore/ExplorationGraph.js.map +1 -0
- package/lib/commonjs/explore/bootstrapExplore.js +59 -0
- package/lib/commonjs/explore/bootstrapExplore.js.map +1 -0
- package/lib/commonjs/host/HostActions.js +266 -0
- package/lib/commonjs/host/HostActions.js.map +1 -0
- package/lib/commonjs/i18n/index.js +169 -0
- package/lib/commonjs/i18n/index.js.map +1 -0
- package/lib/commonjs/i18n/runtimeMessages.js +184 -0
- package/lib/commonjs/i18n/runtimeMessages.js.map +1 -0
- package/lib/commonjs/index.js +640 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/native/NativeBridge.js +132 -0
- package/lib/commonjs/native/NativeBridge.js.map +1 -0
- package/lib/commonjs/native/navigationLabel.js +16 -0
- package/lib/commonjs/native/navigationLabel.js.map +1 -0
- package/lib/commonjs/native/normalizeViewTree.js +28 -0
- package/lib/commonjs/native/normalizeViewTree.js.map +1 -0
- package/lib/commonjs/native/pruneOffscreen.js +76 -0
- package/lib/commonjs/native/pruneOffscreen.js.map +1 -0
- package/lib/commonjs/native/scrollViewport.js +69 -0
- package/lib/commonjs/native/scrollViewport.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/privacy/redact.js +108 -0
- package/lib/commonjs/privacy/redact.js.map +1 -0
- package/lib/commonjs/privacy/screenEvidence.js +59 -0
- package/lib/commonjs/privacy/screenEvidence.js.map +1 -0
- package/lib/commonjs/privacy/screenModel.js +404 -0
- package/lib/commonjs/privacy/screenModel.js.map +1 -0
- package/lib/commonjs/privacy/sensitiveScreen.js +58 -0
- package/lib/commonjs/privacy/sensitiveScreen.js.map +1 -0
- package/lib/commonjs/privacy/userGate.js +213 -0
- package/lib/commonjs/privacy/userGate.js.map +1 -0
- package/lib/commonjs/protocol/actions.js +112 -0
- package/lib/commonjs/protocol/actions.js.map +1 -0
- package/lib/commonjs/provider/HostAppearanceStore.js +111 -0
- package/lib/commonjs/provider/HostAppearanceStore.js.map +1 -0
- package/lib/commonjs/provider/KokoProvider.js +81 -0
- package/lib/commonjs/provider/KokoProvider.js.map +1 -0
- package/lib/commonjs/provider/KokoUiContext.js +102 -0
- package/lib/commonjs/provider/KokoUiContext.js.map +1 -0
- package/lib/commonjs/selector/match.js +378 -0
- package/lib/commonjs/selector/match.js.map +1 -0
- package/lib/commonjs/task/TaskStore.js +361 -0
- package/lib/commonjs/task/TaskStore.js.map +1 -0
- package/lib/commonjs/task/types.js +2 -0
- package/lib/commonjs/task/types.js.map +1 -0
- package/lib/commonjs/task/useTaskStore.js +14 -0
- package/lib/commonjs/task/useTaskStore.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/ui/KokoChatSheet.js +885 -0
- package/lib/commonjs/ui/KokoChatSheet.js.map +1 -0
- package/lib/commonjs/ui/KokoComposer.js +161 -0
- package/lib/commonjs/ui/KokoComposer.js.map +1 -0
- package/lib/commonjs/ui/KokoDialogHost.js +254 -0
- package/lib/commonjs/ui/KokoDialogHost.js.map +1 -0
- package/lib/commonjs/ui/KokoEntryButton.js +81 -0
- package/lib/commonjs/ui/KokoEntryButton.js.map +1 -0
- package/lib/commonjs/ui/KokoObserver.js +522 -0
- package/lib/commonjs/ui/KokoObserver.js.map +1 -0
- package/lib/commonjs/ui/KokoOverlayLayer.js +45 -0
- package/lib/commonjs/ui/KokoOverlayLayer.js.map +1 -0
- package/lib/commonjs/ui/KokoSubtitle.js +95 -0
- package/lib/commonjs/ui/KokoSubtitle.js.map +1 -0
- package/lib/commonjs/ui/KokoTaskPanel.js +322 -0
- package/lib/commonjs/ui/KokoTaskPanel.js.map +1 -0
- package/lib/commonjs/ui/hostOverlay.js +126 -0
- package/lib/commonjs/ui/hostOverlay.js.map +1 -0
- package/lib/commonjs/ui/icons.js +132 -0
- package/lib/commonjs/ui/icons.js.map +1 -0
- package/lib/commonjs/ui/progressChrome.js +66 -0
- package/lib/commonjs/ui/progressChrome.js.map +1 -0
- package/lib/commonjs/ui/safeArea.js +96 -0
- package/lib/commonjs/ui/safeArea.js.map +1 -0
- package/lib/commonjs/ui/useOverlayOrigin.js +40 -0
- package/lib/commonjs/ui/useOverlayOrigin.js.map +1 -0
- package/lib/module/KokoAgent.js +1418 -0
- package/lib/module/KokoAgent.js.map +1 -0
- package/lib/module/assist/OnDeviceAssist.js +89 -0
- package/lib/module/assist/OnDeviceAssist.js.map +1 -0
- package/lib/module/assist/intentClassify.js +95 -0
- package/lib/module/assist/intentClassify.js.map +1 -0
- package/lib/module/assist/nodeRank.js +115 -0
- package/lib/module/assist/nodeRank.js.map +1 -0
- package/lib/module/assist/ocrTarget.js +123 -0
- package/lib/module/assist/ocrTarget.js.map +1 -0
- package/lib/module/assist/webVisualChange.js +24 -0
- package/lib/module/assist/webVisualChange.js.map +1 -0
- package/lib/module/client/ActionOutcomeUnknownError.js +23 -0
- package/lib/module/client/ActionOutcomeUnknownError.js.map +1 -0
- package/lib/module/client/AgentSession.js +854 -0
- package/lib/module/client/AgentSession.js.map +1 -0
- package/lib/module/client/GatewayClient.js +293 -0
- package/lib/module/client/GatewayClient.js.map +1 -0
- package/lib/module/client/OperationReplayGuard.js +58 -0
- package/lib/module/client/OperationReplayGuard.js.map +1 -0
- package/lib/module/client/RunCheckpoint.js +135 -0
- package/lib/module/client/RunCheckpoint.js.map +1 -0
- package/lib/module/client/loopDetect.js +177 -0
- package/lib/module/client/loopDetect.js.map +1 -0
- package/lib/module/client/recentSearch.js +46 -0
- package/lib/module/client/recentSearch.js.map +1 -0
- package/lib/module/client/walletChoiceGuard.js +14 -0
- package/lib/module/client/walletChoiceGuard.js.map +1 -0
- package/lib/module/client/webResultCategory.js +34 -0
- package/lib/module/client/webResultCategory.js.map +1 -0
- package/lib/module/commercial/AccountStore.js +75 -0
- package/lib/module/commercial/AccountStore.js.map +1 -0
- package/lib/module/commercial/AgentDebug.js +99 -0
- package/lib/module/commercial/AgentDebug.js.map +1 -0
- package/lib/module/commercial/ExecutionGuard.js +49 -0
- package/lib/module/commercial/ExecutionGuard.js.map +1 -0
- package/lib/module/commercial/UsageBus.js +38 -0
- package/lib/module/commercial/UsageBus.js.map +1 -0
- package/lib/module/commercial/branding.js +63 -0
- package/lib/module/commercial/branding.js.map +1 -0
- package/lib/module/commercial/devMode.js +45 -0
- package/lib/module/commercial/devMode.js.map +1 -0
- package/lib/module/commercial/trust.js +62 -0
- package/lib/module/commercial/trust.js.map +1 -0
- package/lib/module/confirmation/gate.js +54 -0
- package/lib/module/confirmation/gate.js.map +1 -0
- package/lib/module/cursor/CursorOverlay.js +136 -0
- package/lib/module/cursor/CursorOverlay.js.map +1 -0
- package/lib/module/cursor/PointerHand.js +47 -0
- package/lib/module/cursor/PointerHand.js.map +1 -0
- package/lib/module/cursor/controller.js +87 -0
- package/lib/module/cursor/controller.js.map +1 -0
- package/lib/module/cursor/pointer.js +45 -0
- package/lib/module/cursor/pointer.js.map +1 -0
- package/lib/module/debug/KokoRemoteSmoke.js +608 -0
- package/lib/module/debug/KokoRemoteSmoke.js.map +1 -0
- package/lib/module/explore/ExplorationGraph.js +406 -0
- package/lib/module/explore/ExplorationGraph.js.map +1 -0
- package/lib/module/explore/bootstrapExplore.js +55 -0
- package/lib/module/explore/bootstrapExplore.js.map +1 -0
- package/lib/module/host/HostActions.js +255 -0
- package/lib/module/host/HostActions.js.map +1 -0
- package/lib/module/i18n/index.js +159 -0
- package/lib/module/i18n/index.js.map +1 -0
- package/lib/module/i18n/runtimeMessages.js +180 -0
- package/lib/module/i18n/runtimeMessages.js.map +1 -0
- package/lib/module/index.js +44 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/native/NativeBridge.js +128 -0
- package/lib/module/native/NativeBridge.js.map +1 -0
- package/lib/module/native/navigationLabel.js +12 -0
- package/lib/module/native/navigationLabel.js.map +1 -0
- package/lib/module/native/normalizeViewTree.js +25 -0
- package/lib/module/native/normalizeViewTree.js.map +1 -0
- package/lib/module/native/pruneOffscreen.js +72 -0
- package/lib/module/native/pruneOffscreen.js.map +1 -0
- package/lib/module/native/scrollViewport.js +63 -0
- package/lib/module/native/scrollViewport.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/privacy/redact.js +103 -0
- package/lib/module/privacy/redact.js.map +1 -0
- package/lib/module/privacy/screenEvidence.js +50 -0
- package/lib/module/privacy/screenEvidence.js.map +1 -0
- package/lib/module/privacy/screenModel.js +397 -0
- package/lib/module/privacy/screenModel.js.map +1 -0
- package/lib/module/privacy/sensitiveScreen.js +52 -0
- package/lib/module/privacy/sensitiveScreen.js.map +1 -0
- package/lib/module/privacy/userGate.js +202 -0
- package/lib/module/privacy/userGate.js.map +1 -0
- package/lib/module/protocol/actions.js +108 -0
- package/lib/module/protocol/actions.js.map +1 -0
- package/lib/module/provider/HostAppearanceStore.js +101 -0
- package/lib/module/provider/HostAppearanceStore.js.map +1 -0
- package/lib/module/provider/KokoProvider.js +74 -0
- package/lib/module/provider/KokoProvider.js.map +1 -0
- package/lib/module/provider/KokoUiContext.js +96 -0
- package/lib/module/provider/KokoUiContext.js.map +1 -0
- package/lib/module/selector/match.js +366 -0
- package/lib/module/selector/match.js.map +1 -0
- package/lib/module/task/TaskStore.js +356 -0
- package/lib/module/task/TaskStore.js.map +1 -0
- package/lib/module/task/types.js +2 -0
- package/lib/module/task/types.js.map +1 -0
- package/lib/module/task/useTaskStore.js +10 -0
- package/lib/module/task/useTaskStore.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/ui/KokoChatSheet.js +879 -0
- package/lib/module/ui/KokoChatSheet.js.map +1 -0
- package/lib/module/ui/KokoComposer.js +155 -0
- package/lib/module/ui/KokoComposer.js.map +1 -0
- package/lib/module/ui/KokoDialogHost.js +247 -0
- package/lib/module/ui/KokoDialogHost.js.map +1 -0
- package/lib/module/ui/KokoEntryButton.js +74 -0
- package/lib/module/ui/KokoEntryButton.js.map +1 -0
- package/lib/module/ui/KokoObserver.js +516 -0
- package/lib/module/ui/KokoObserver.js.map +1 -0
- package/lib/module/ui/KokoOverlayLayer.js +39 -0
- package/lib/module/ui/KokoOverlayLayer.js.map +1 -0
- package/lib/module/ui/KokoSubtitle.js +90 -0
- package/lib/module/ui/KokoSubtitle.js.map +1 -0
- package/lib/module/ui/KokoTaskPanel.js +316 -0
- package/lib/module/ui/KokoTaskPanel.js.map +1 -0
- package/lib/module/ui/hostOverlay.js +120 -0
- package/lib/module/ui/hostOverlay.js.map +1 -0
- package/lib/module/ui/icons.js +124 -0
- package/lib/module/ui/icons.js.map +1 -0
- package/lib/module/ui/progressChrome.js +58 -0
- package/lib/module/ui/progressChrome.js.map +1 -0
- package/lib/module/ui/safeArea.js +92 -0
- package/lib/module/ui/safeArea.js.map +1 -0
- package/lib/module/ui/useOverlayOrigin.js +36 -0
- package/lib/module/ui/useOverlayOrigin.js.map +1 -0
- package/lib/typescript/commonjs/KokoAgent.d.ts +167 -0
- package/lib/typescript/commonjs/KokoAgent.d.ts.map +1 -0
- package/lib/typescript/commonjs/assist/OnDeviceAssist.d.ts +31 -0
- package/lib/typescript/commonjs/assist/OnDeviceAssist.d.ts.map +1 -0
- package/lib/typescript/commonjs/assist/intentClassify.d.ts +18 -0
- package/lib/typescript/commonjs/assist/intentClassify.d.ts.map +1 -0
- package/lib/typescript/commonjs/assist/nodeRank.d.ts +32 -0
- package/lib/typescript/commonjs/assist/nodeRank.d.ts.map +1 -0
- package/lib/typescript/commonjs/assist/ocrTarget.d.ts +25 -0
- package/lib/typescript/commonjs/assist/ocrTarget.d.ts.map +1 -0
- package/lib/typescript/commonjs/assist/webVisualChange.d.ts +6 -0
- package/lib/typescript/commonjs/assist/webVisualChange.d.ts.map +1 -0
- package/lib/typescript/commonjs/client/ActionOutcomeUnknownError.d.ts +13 -0
- package/lib/typescript/commonjs/client/ActionOutcomeUnknownError.d.ts.map +1 -0
- package/lib/typescript/commonjs/client/AgentSession.d.ts +56 -0
- package/lib/typescript/commonjs/client/AgentSession.d.ts.map +1 -0
- package/lib/typescript/commonjs/client/GatewayClient.d.ts +149 -0
- package/lib/typescript/commonjs/client/GatewayClient.d.ts.map +1 -0
- package/lib/typescript/commonjs/client/OperationReplayGuard.d.ts +13 -0
- package/lib/typescript/commonjs/client/OperationReplayGuard.d.ts.map +1 -0
- package/lib/typescript/commonjs/client/RunCheckpoint.d.ts +57 -0
- package/lib/typescript/commonjs/client/RunCheckpoint.d.ts.map +1 -0
- package/lib/typescript/commonjs/client/loopDetect.d.ts +15 -0
- package/lib/typescript/commonjs/client/loopDetect.d.ts.map +1 -0
- package/lib/typescript/commonjs/client/recentSearch.d.ts +5 -0
- package/lib/typescript/commonjs/client/recentSearch.d.ts.map +1 -0
- package/lib/typescript/commonjs/client/walletChoiceGuard.d.ts +4 -0
- package/lib/typescript/commonjs/client/walletChoiceGuard.d.ts.map +1 -0
- package/lib/typescript/commonjs/client/webResultCategory.d.ts +5 -0
- package/lib/typescript/commonjs/client/webResultCategory.d.ts.map +1 -0
- package/lib/typescript/commonjs/commercial/AccountStore.d.ts +17 -0
- package/lib/typescript/commonjs/commercial/AccountStore.d.ts.map +1 -0
- package/lib/typescript/commonjs/commercial/AgentDebug.d.ts +25 -0
- package/lib/typescript/commonjs/commercial/AgentDebug.d.ts.map +1 -0
- package/lib/typescript/commonjs/commercial/ExecutionGuard.d.ts +18 -0
- package/lib/typescript/commonjs/commercial/ExecutionGuard.d.ts.map +1 -0
- package/lib/typescript/commonjs/commercial/UsageBus.d.ts +18 -0
- package/lib/typescript/commonjs/commercial/UsageBus.d.ts.map +1 -0
- package/lib/typescript/commonjs/commercial/branding.d.ts +25 -0
- package/lib/typescript/commonjs/commercial/branding.d.ts.map +1 -0
- package/lib/typescript/commonjs/commercial/devMode.d.ts +26 -0
- package/lib/typescript/commonjs/commercial/devMode.d.ts.map +1 -0
- package/lib/typescript/commonjs/commercial/trust.d.ts +21 -0
- package/lib/typescript/commonjs/commercial/trust.d.ts.map +1 -0
- package/lib/typescript/commonjs/confirmation/gate.d.ts +18 -0
- package/lib/typescript/commonjs/confirmation/gate.d.ts.map +1 -0
- package/lib/typescript/commonjs/cursor/CursorOverlay.d.ts +13 -0
- package/lib/typescript/commonjs/cursor/CursorOverlay.d.ts.map +1 -0
- package/lib/typescript/commonjs/cursor/PointerHand.d.ts +16 -0
- package/lib/typescript/commonjs/cursor/PointerHand.d.ts.map +1 -0
- package/lib/typescript/commonjs/cursor/controller.d.ts +30 -0
- package/lib/typescript/commonjs/cursor/controller.d.ts.map +1 -0
- package/lib/typescript/commonjs/cursor/pointer.d.ts +23 -0
- package/lib/typescript/commonjs/cursor/pointer.d.ts.map +1 -0
- package/lib/typescript/commonjs/debug/KokoRemoteSmoke.d.ts +96 -0
- package/lib/typescript/commonjs/debug/KokoRemoteSmoke.d.ts.map +1 -0
- package/lib/typescript/commonjs/explore/ExplorationGraph.d.ts +96 -0
- package/lib/typescript/commonjs/explore/ExplorationGraph.d.ts.map +1 -0
- package/lib/typescript/commonjs/explore/bootstrapExplore.d.ts +40 -0
- package/lib/typescript/commonjs/explore/bootstrapExplore.d.ts.map +1 -0
- package/lib/typescript/commonjs/host/HostActions.d.ts +101 -0
- package/lib/typescript/commonjs/host/HostActions.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/index.d.ts +20 -0
- package/lib/typescript/commonjs/i18n/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/runtimeMessages.d.ts +178 -0
- package/lib/typescript/commonjs/i18n/runtimeMessages.d.ts.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +66 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/native/NativeBridge.d.ts +70 -0
- package/lib/typescript/commonjs/native/NativeBridge.d.ts.map +1 -0
- package/lib/typescript/commonjs/native/navigationLabel.d.ts +4 -0
- package/lib/typescript/commonjs/native/navigationLabel.d.ts.map +1 -0
- package/lib/typescript/commonjs/native/normalizeViewTree.d.ts +4 -0
- package/lib/typescript/commonjs/native/normalizeViewTree.d.ts.map +1 -0
- package/lib/typescript/commonjs/native/pruneOffscreen.d.ts +3 -0
- package/lib/typescript/commonjs/native/pruneOffscreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/native/scrollViewport.d.ts +13 -0
- package/lib/typescript/commonjs/native/scrollViewport.d.ts.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/privacy/redact.d.ts +9 -0
- package/lib/typescript/commonjs/privacy/redact.d.ts.map +1 -0
- package/lib/typescript/commonjs/privacy/screenEvidence.d.ts +14 -0
- package/lib/typescript/commonjs/privacy/screenEvidence.d.ts.map +1 -0
- package/lib/typescript/commonjs/privacy/screenModel.d.ts +26 -0
- package/lib/typescript/commonjs/privacy/screenModel.d.ts.map +1 -0
- package/lib/typescript/commonjs/privacy/sensitiveScreen.d.ts +8 -0
- package/lib/typescript/commonjs/privacy/sensitiveScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/privacy/userGate.d.ts +58 -0
- package/lib/typescript/commonjs/privacy/userGate.d.ts.map +1 -0
- package/lib/typescript/commonjs/protocol/actions.d.ts +7 -0
- package/lib/typescript/commonjs/protocol/actions.d.ts.map +1 -0
- package/lib/typescript/commonjs/provider/HostAppearanceStore.d.ts +64 -0
- package/lib/typescript/commonjs/provider/HostAppearanceStore.d.ts.map +1 -0
- package/lib/typescript/commonjs/provider/KokoProvider.d.ts +39 -0
- package/lib/typescript/commonjs/provider/KokoProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/provider/KokoUiContext.d.ts +22 -0
- package/lib/typescript/commonjs/provider/KokoUiContext.d.ts.map +1 -0
- package/lib/typescript/commonjs/selector/match.d.ts +27 -0
- package/lib/typescript/commonjs/selector/match.d.ts.map +1 -0
- package/lib/typescript/commonjs/task/TaskStore.d.ts +65 -0
- package/lib/typescript/commonjs/task/TaskStore.d.ts.map +1 -0
- package/lib/typescript/commonjs/task/types.d.ts +66 -0
- package/lib/typescript/commonjs/task/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/task/useTaskStore.d.ts +3 -0
- package/lib/typescript/commonjs/task/useTaskStore.d.ts.map +1 -0
- package/lib/typescript/commonjs/types.d.ts +372 -0
- package/lib/typescript/commonjs/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/KokoChatSheet.d.ts +8 -0
- package/lib/typescript/commonjs/ui/KokoChatSheet.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/KokoComposer.d.ts +13 -0
- package/lib/typescript/commonjs/ui/KokoComposer.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/KokoDialogHost.d.ts +32 -0
- package/lib/typescript/commonjs/ui/KokoDialogHost.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/KokoEntryButton.d.ts +18 -0
- package/lib/typescript/commonjs/ui/KokoEntryButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/KokoObserver.d.ts +13 -0
- package/lib/typescript/commonjs/ui/KokoObserver.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/KokoOverlayLayer.d.ts +35 -0
- package/lib/typescript/commonjs/ui/KokoOverlayLayer.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/KokoSubtitle.d.ts +7 -0
- package/lib/typescript/commonjs/ui/KokoSubtitle.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/KokoTaskPanel.d.ts +7 -0
- package/lib/typescript/commonjs/ui/KokoTaskPanel.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hostOverlay.d.ts +28 -0
- package/lib/typescript/commonjs/ui/hostOverlay.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/icons.d.ts +26 -0
- package/lib/typescript/commonjs/ui/icons.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/progressChrome.d.ts +21 -0
- package/lib/typescript/commonjs/ui/progressChrome.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/safeArea.d.ts +12 -0
- package/lib/typescript/commonjs/ui/safeArea.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/useOverlayOrigin.d.ts +22 -0
- package/lib/typescript/commonjs/ui/useOverlayOrigin.d.ts.map +1 -0
- package/lib/typescript/module/KokoAgent.d.ts +167 -0
- package/lib/typescript/module/KokoAgent.d.ts.map +1 -0
- package/lib/typescript/module/assist/OnDeviceAssist.d.ts +31 -0
- package/lib/typescript/module/assist/OnDeviceAssist.d.ts.map +1 -0
- package/lib/typescript/module/assist/intentClassify.d.ts +18 -0
- package/lib/typescript/module/assist/intentClassify.d.ts.map +1 -0
- package/lib/typescript/module/assist/nodeRank.d.ts +32 -0
- package/lib/typescript/module/assist/nodeRank.d.ts.map +1 -0
- package/lib/typescript/module/assist/ocrTarget.d.ts +25 -0
- package/lib/typescript/module/assist/ocrTarget.d.ts.map +1 -0
- package/lib/typescript/module/assist/webVisualChange.d.ts +6 -0
- package/lib/typescript/module/assist/webVisualChange.d.ts.map +1 -0
- package/lib/typescript/module/client/ActionOutcomeUnknownError.d.ts +13 -0
- package/lib/typescript/module/client/ActionOutcomeUnknownError.d.ts.map +1 -0
- package/lib/typescript/module/client/AgentSession.d.ts +56 -0
- package/lib/typescript/module/client/AgentSession.d.ts.map +1 -0
- package/lib/typescript/module/client/GatewayClient.d.ts +149 -0
- package/lib/typescript/module/client/GatewayClient.d.ts.map +1 -0
- package/lib/typescript/module/client/OperationReplayGuard.d.ts +13 -0
- package/lib/typescript/module/client/OperationReplayGuard.d.ts.map +1 -0
- package/lib/typescript/module/client/RunCheckpoint.d.ts +57 -0
- package/lib/typescript/module/client/RunCheckpoint.d.ts.map +1 -0
- package/lib/typescript/module/client/loopDetect.d.ts +15 -0
- package/lib/typescript/module/client/loopDetect.d.ts.map +1 -0
- package/lib/typescript/module/client/recentSearch.d.ts +5 -0
- package/lib/typescript/module/client/recentSearch.d.ts.map +1 -0
- package/lib/typescript/module/client/walletChoiceGuard.d.ts +4 -0
- package/lib/typescript/module/client/walletChoiceGuard.d.ts.map +1 -0
- package/lib/typescript/module/client/webResultCategory.d.ts +5 -0
- package/lib/typescript/module/client/webResultCategory.d.ts.map +1 -0
- package/lib/typescript/module/commercial/AccountStore.d.ts +17 -0
- package/lib/typescript/module/commercial/AccountStore.d.ts.map +1 -0
- package/lib/typescript/module/commercial/AgentDebug.d.ts +25 -0
- package/lib/typescript/module/commercial/AgentDebug.d.ts.map +1 -0
- package/lib/typescript/module/commercial/ExecutionGuard.d.ts +18 -0
- package/lib/typescript/module/commercial/ExecutionGuard.d.ts.map +1 -0
- package/lib/typescript/module/commercial/UsageBus.d.ts +18 -0
- package/lib/typescript/module/commercial/UsageBus.d.ts.map +1 -0
- package/lib/typescript/module/commercial/branding.d.ts +25 -0
- package/lib/typescript/module/commercial/branding.d.ts.map +1 -0
- package/lib/typescript/module/commercial/devMode.d.ts +26 -0
- package/lib/typescript/module/commercial/devMode.d.ts.map +1 -0
- package/lib/typescript/module/commercial/trust.d.ts +21 -0
- package/lib/typescript/module/commercial/trust.d.ts.map +1 -0
- package/lib/typescript/module/confirmation/gate.d.ts +18 -0
- package/lib/typescript/module/confirmation/gate.d.ts.map +1 -0
- package/lib/typescript/module/cursor/CursorOverlay.d.ts +13 -0
- package/lib/typescript/module/cursor/CursorOverlay.d.ts.map +1 -0
- package/lib/typescript/module/cursor/PointerHand.d.ts +16 -0
- package/lib/typescript/module/cursor/PointerHand.d.ts.map +1 -0
- package/lib/typescript/module/cursor/controller.d.ts +30 -0
- package/lib/typescript/module/cursor/controller.d.ts.map +1 -0
- package/lib/typescript/module/cursor/pointer.d.ts +23 -0
- package/lib/typescript/module/cursor/pointer.d.ts.map +1 -0
- package/lib/typescript/module/debug/KokoRemoteSmoke.d.ts +96 -0
- package/lib/typescript/module/debug/KokoRemoteSmoke.d.ts.map +1 -0
- package/lib/typescript/module/explore/ExplorationGraph.d.ts +96 -0
- package/lib/typescript/module/explore/ExplorationGraph.d.ts.map +1 -0
- package/lib/typescript/module/explore/bootstrapExplore.d.ts +40 -0
- package/lib/typescript/module/explore/bootstrapExplore.d.ts.map +1 -0
- package/lib/typescript/module/host/HostActions.d.ts +101 -0
- package/lib/typescript/module/host/HostActions.d.ts.map +1 -0
- package/lib/typescript/module/i18n/index.d.ts +20 -0
- package/lib/typescript/module/i18n/index.d.ts.map +1 -0
- package/lib/typescript/module/i18n/runtimeMessages.d.ts +178 -0
- package/lib/typescript/module/i18n/runtimeMessages.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +66 -0
- package/lib/typescript/module/index.d.ts.map +1 -0
- package/lib/typescript/module/native/NativeBridge.d.ts +70 -0
- package/lib/typescript/module/native/NativeBridge.d.ts.map +1 -0
- package/lib/typescript/module/native/navigationLabel.d.ts +4 -0
- package/lib/typescript/module/native/navigationLabel.d.ts.map +1 -0
- package/lib/typescript/module/native/normalizeViewTree.d.ts +4 -0
- package/lib/typescript/module/native/normalizeViewTree.d.ts.map +1 -0
- package/lib/typescript/module/native/pruneOffscreen.d.ts +3 -0
- package/lib/typescript/module/native/pruneOffscreen.d.ts.map +1 -0
- package/lib/typescript/module/native/scrollViewport.d.ts +13 -0
- package/lib/typescript/module/native/scrollViewport.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/privacy/redact.d.ts +9 -0
- package/lib/typescript/module/privacy/redact.d.ts.map +1 -0
- package/lib/typescript/module/privacy/screenEvidence.d.ts +14 -0
- package/lib/typescript/module/privacy/screenEvidence.d.ts.map +1 -0
- package/lib/typescript/module/privacy/screenModel.d.ts +26 -0
- package/lib/typescript/module/privacy/screenModel.d.ts.map +1 -0
- package/lib/typescript/module/privacy/sensitiveScreen.d.ts +8 -0
- package/lib/typescript/module/privacy/sensitiveScreen.d.ts.map +1 -0
- package/lib/typescript/module/privacy/userGate.d.ts +58 -0
- package/lib/typescript/module/privacy/userGate.d.ts.map +1 -0
- package/lib/typescript/module/protocol/actions.d.ts +7 -0
- package/lib/typescript/module/protocol/actions.d.ts.map +1 -0
- package/lib/typescript/module/provider/HostAppearanceStore.d.ts +64 -0
- package/lib/typescript/module/provider/HostAppearanceStore.d.ts.map +1 -0
- package/lib/typescript/module/provider/KokoProvider.d.ts +39 -0
- package/lib/typescript/module/provider/KokoProvider.d.ts.map +1 -0
- package/lib/typescript/module/provider/KokoUiContext.d.ts +22 -0
- package/lib/typescript/module/provider/KokoUiContext.d.ts.map +1 -0
- package/lib/typescript/module/selector/match.d.ts +27 -0
- package/lib/typescript/module/selector/match.d.ts.map +1 -0
- package/lib/typescript/module/task/TaskStore.d.ts +65 -0
- package/lib/typescript/module/task/TaskStore.d.ts.map +1 -0
- package/lib/typescript/module/task/types.d.ts +66 -0
- package/lib/typescript/module/task/types.d.ts.map +1 -0
- package/lib/typescript/module/task/useTaskStore.d.ts +3 -0
- package/lib/typescript/module/task/useTaskStore.d.ts.map +1 -0
- package/lib/typescript/module/types.d.ts +372 -0
- package/lib/typescript/module/types.d.ts.map +1 -0
- package/lib/typescript/module/ui/KokoChatSheet.d.ts +8 -0
- package/lib/typescript/module/ui/KokoChatSheet.d.ts.map +1 -0
- package/lib/typescript/module/ui/KokoComposer.d.ts +13 -0
- package/lib/typescript/module/ui/KokoComposer.d.ts.map +1 -0
- package/lib/typescript/module/ui/KokoDialogHost.d.ts +32 -0
- package/lib/typescript/module/ui/KokoDialogHost.d.ts.map +1 -0
- package/lib/typescript/module/ui/KokoEntryButton.d.ts +18 -0
- package/lib/typescript/module/ui/KokoEntryButton.d.ts.map +1 -0
- package/lib/typescript/module/ui/KokoObserver.d.ts +13 -0
- package/lib/typescript/module/ui/KokoObserver.d.ts.map +1 -0
- package/lib/typescript/module/ui/KokoOverlayLayer.d.ts +35 -0
- package/lib/typescript/module/ui/KokoOverlayLayer.d.ts.map +1 -0
- package/lib/typescript/module/ui/KokoSubtitle.d.ts +7 -0
- package/lib/typescript/module/ui/KokoSubtitle.d.ts.map +1 -0
- package/lib/typescript/module/ui/KokoTaskPanel.d.ts +7 -0
- package/lib/typescript/module/ui/KokoTaskPanel.d.ts.map +1 -0
- package/lib/typescript/module/ui/hostOverlay.d.ts +28 -0
- package/lib/typescript/module/ui/hostOverlay.d.ts.map +1 -0
- package/lib/typescript/module/ui/icons.d.ts +26 -0
- package/lib/typescript/module/ui/icons.d.ts.map +1 -0
- package/lib/typescript/module/ui/progressChrome.d.ts +21 -0
- package/lib/typescript/module/ui/progressChrome.d.ts.map +1 -0
- package/lib/typescript/module/ui/safeArea.d.ts +12 -0
- package/lib/typescript/module/ui/safeArea.d.ts.map +1 -0
- package/lib/typescript/module/ui/useOverlayOrigin.d.ts +22 -0
- package/lib/typescript/module/ui/useOverlayOrigin.d.ts.map +1 -0
- package/package.json +153 -0
- package/react-native.config.js +12 -0
- package/src/KokoAgent.ts +1415 -0
- package/src/assist/OnDeviceAssist.ts +133 -0
- package/src/assist/intentClassify.ts +122 -0
- package/src/assist/nodeRank.ts +167 -0
- package/src/assist/ocrTarget.ts +146 -0
- package/src/assist/webVisualChange.ts +24 -0
- package/src/client/ActionOutcomeUnknownError.ts +18 -0
- package/src/client/AgentSession.ts +952 -0
- package/src/client/GatewayClient.ts +439 -0
- package/src/client/OperationReplayGuard.ts +61 -0
- package/src/client/RunCheckpoint.ts +154 -0
- package/src/client/loopDetect.ts +213 -0
- package/src/client/recentSearch.ts +47 -0
- package/src/client/walletChoiceGuard.ts +15 -0
- package/src/client/webResultCategory.ts +28 -0
- package/src/commercial/AccountStore.ts +85 -0
- package/src/commercial/AgentDebug.ts +142 -0
- package/src/commercial/ExecutionGuard.ts +67 -0
- package/src/commercial/UsageBus.ts +44 -0
- package/src/commercial/branding.ts +97 -0
- package/src/commercial/devMode.ts +48 -0
- package/src/commercial/trust.ts +67 -0
- package/src/confirmation/gate.ts +82 -0
- package/src/cursor/CursorOverlay.tsx +138 -0
- package/src/cursor/PointerHand.tsx +49 -0
- package/src/cursor/controller.ts +98 -0
- package/src/cursor/pointer.ts +40 -0
- package/src/debug/KokoRemoteSmoke.tsx +561 -0
- package/src/explore/ExplorationGraph.ts +518 -0
- package/src/explore/bootstrapExplore.ts +89 -0
- package/src/host/HostActions.ts +349 -0
- package/src/i18n/index.ts +229 -0
- package/src/i18n/runtimeMessages.ts +180 -0
- package/src/index.ts +203 -0
- package/src/native/NativeBridge.ts +207 -0
- package/src/native/navigationLabel.ts +11 -0
- package/src/native/normalizeViewTree.ts +16 -0
- package/src/native/pruneOffscreen.ts +72 -0
- package/src/native/scrollViewport.ts +51 -0
- package/src/privacy/redact.ts +115 -0
- package/src/privacy/screenEvidence.ts +55 -0
- package/src/privacy/screenModel.ts +504 -0
- package/src/privacy/sensitiveScreen.ts +55 -0
- package/src/privacy/userGate.ts +233 -0
- package/src/protocol/actions.ts +66 -0
- package/src/provider/HostAppearanceStore.ts +148 -0
- package/src/provider/KokoProvider.tsx +118 -0
- package/src/provider/KokoUiContext.tsx +162 -0
- package/src/selector/match.ts +417 -0
- package/src/task/TaskStore.ts +387 -0
- package/src/task/types.ts +82 -0
- package/src/task/useTaskStore.ts +9 -0
- package/src/types.ts +318 -0
- package/src/ui/KokoChatSheet.tsx +930 -0
- package/src/ui/KokoComposer.tsx +174 -0
- package/src/ui/KokoDialogHost.tsx +249 -0
- package/src/ui/KokoEntryButton.tsx +74 -0
- package/src/ui/KokoObserver.tsx +587 -0
- package/src/ui/KokoOverlayLayer.tsx +53 -0
- package/src/ui/KokoSubtitle.tsx +80 -0
- package/src/ui/KokoTaskPanel.tsx +299 -0
- package/src/ui/hostOverlay.tsx +148 -0
- package/src/ui/icons.tsx +145 -0
- package/src/ui/progressChrome.ts +73 -0
- package/src/ui/safeArea.ts +95 -0
- package/src/ui/useOverlayOrigin.ts +29 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { t } from "../i18n/index.js";
|
|
4
|
+
export const DEFAULT_ENTITLEMENTS = {
|
|
5
|
+
custom_branding: false,
|
|
6
|
+
locale: true
|
|
7
|
+
};
|
|
8
|
+
const DEFAULT_PRIMARY = '#0A84FF';
|
|
9
|
+
function wantsCustomBranding(branding) {
|
|
10
|
+
if (!branding) return false;
|
|
11
|
+
return Boolean(branding.name && branding.name.trim() && branding.name.trim() !== 'Koko' || branding.icon != null || branding.tagline && branding.tagline.trim() || branding.placeholder && branding.placeholder.trim() || branding.primaryColor && branding.primaryColor.trim());
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Resolve what the **built-in** chat UI may show.
|
|
16
|
+
* This is a soft client gate for honest hosts + official gateway.
|
|
17
|
+
* Forked SDKs / custom chrome can always draw their own brand — that is outside
|
|
18
|
+
* this product surface. Usage metering remains server-authoritative.
|
|
19
|
+
*/
|
|
20
|
+
export function resolveBranding(locale, branding, entitlements) {
|
|
21
|
+
const allowed = entitlements?.custom_branding === true;
|
|
22
|
+
const custom = wantsCustomBranding(branding);
|
|
23
|
+
const downgraded = custom && !allowed;
|
|
24
|
+
const useCustom = custom && allowed;
|
|
25
|
+
let iconSource = null;
|
|
26
|
+
let mark = t(locale, 'brand.defaultMark');
|
|
27
|
+
if (useCustom && branding?.icon != null) {
|
|
28
|
+
if (typeof branding.icon === 'string') {
|
|
29
|
+
if (/^https?:\/\//i.test(branding.icon) || branding.icon.startsWith('data:')) {
|
|
30
|
+
iconSource = {
|
|
31
|
+
uri: branding.icon
|
|
32
|
+
};
|
|
33
|
+
} else {
|
|
34
|
+
mark = branding.icon.slice(0, 2);
|
|
35
|
+
}
|
|
36
|
+
} else {
|
|
37
|
+
iconSource = branding.icon;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
name: useCustom && branding?.name?.trim() ? branding.name.trim() : t(locale, 'brand.defaultName'),
|
|
42
|
+
mark,
|
|
43
|
+
iconSource,
|
|
44
|
+
tagline: useCustom && branding?.tagline?.trim() ? branding.tagline.trim() : t(locale, 'brand.defaultTagline'),
|
|
45
|
+
placeholder: useCustom && branding?.placeholder?.trim() ? branding.placeholder.trim() : t(locale, 'brand.defaultPlaceholder'),
|
|
46
|
+
primaryColor: useCustom && branding?.primaryColor?.trim() ? branding.primaryColor.trim() : DEFAULT_PRIMARY,
|
|
47
|
+
downgraded
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export function emptyAccount() {
|
|
51
|
+
return {
|
|
52
|
+
plan: 'free',
|
|
53
|
+
entitlements: {
|
|
54
|
+
...DEFAULT_ENTITLEMENTS
|
|
55
|
+
},
|
|
56
|
+
quota: {
|
|
57
|
+
daily: 30,
|
|
58
|
+
used_today: 0,
|
|
59
|
+
remaining: 30
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=branding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["t","DEFAULT_ENTITLEMENTS","custom_branding","locale","DEFAULT_PRIMARY","wantsCustomBranding","branding","Boolean","name","trim","icon","tagline","placeholder","primaryColor","resolveBranding","entitlements","allowed","custom","downgraded","useCustom","iconSource","mark","test","startsWith","uri","slice","emptyAccount","plan","quota","daily","used_today","remaining"],"sourceRoot":"../../../src","sources":["commercial/branding.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/** True only in Metro debug clients (never in store release binaries). */
|
|
4
|
+
export function isMetroDevBuild() {
|
|
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(config) {
|
|
25
|
+
if (config?.debug === true || config?.devMode === true) return true;
|
|
26
|
+
if (config?.debug === false || config?.devMode === false) return false;
|
|
27
|
+
return isMetroDevBuild();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @deprecated Use resolveDebugLogging. Kept for call-site migration.
|
|
32
|
+
* Previously also meant "relax security" — that behavior is removed.
|
|
33
|
+
*/
|
|
34
|
+
export function resolveDevMode(config) {
|
|
35
|
+
return resolveDebugLogging(config);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Localhost / LAN gateway is only for Intent Computing debugging the
|
|
40
|
+
* in-repo gateway against a Metro debug app — not a customer "self-host" mode.
|
|
41
|
+
*/
|
|
42
|
+
export function allowLocalGatewayForDebugClient() {
|
|
43
|
+
return isMetroDevBuild();
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=devMode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isMetroDevBuild","__DEV__","resolveDebugLogging","config","debug","devMode","resolveDevMode","allowLocalGatewayForDebugClient"],"sourceRoot":"../../../src","sources":["commercial/devMode.ts"],"mappings":";;AAEA;AACA,OAAO,SAASA,eAAeA,CAAA,EAAY;EACzC,IAAI;IACF;IACA,OAAO,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO,KAAK,IAAI;EAC3D,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CACjCC,MAAmD,EAC1C;EACT,IAAIA,MAAM,EAAEC,KAAK,KAAK,IAAI,IAAID,MAAM,EAAEE,OAAO,KAAK,IAAI,EAAE,OAAO,IAAI;EACnE,IAAIF,MAAM,EAAEC,KAAK,KAAK,KAAK,IAAID,MAAM,EAAEE,OAAO,KAAK,KAAK,EAAE,OAAO,KAAK;EACtE,OAAOL,eAAe,CAAC,CAAC;AAC1B;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASM,cAAcA,CAC5BH,MAAmD,EAC1C;EACT,OAAOD,mBAAmB,CAACC,MAAM,CAAC;AACpC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASI,+BAA+BA,CAAA,EAAY;EACzD,OAAOP,eAAe,CAAC,CAAC;AAC1B","ignoreList":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Gateway host policy + entitlement trust.
|
|
5
|
+
*
|
|
6
|
+
* Customers always use official Intent Computing hosts in release apps.
|
|
7
|
+
* Localhost is allowed only in Metro debug clients (so we can dogfood the
|
|
8
|
+
* in-repo gateway) — that is NOT a supported "self-host your own AI" mode.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// `agent.intentcomputing.net` is a different Intent Computing service and must
|
|
12
|
+
// not be trusted as a gateway.
|
|
13
|
+
const OFFICIAL_HOST_SUFFIXES = ['sdk.intentcomputing.cn', 'sdk.intentcomputing.net'];
|
|
14
|
+
export function isLocalDevHost(hostname) {
|
|
15
|
+
const host = hostname.toLowerCase();
|
|
16
|
+
return host === 'localhost' || host === '127.0.0.1' || host === '10.0.2.2' || host === '0.0.0.0';
|
|
17
|
+
}
|
|
18
|
+
export function isOfficialGatewayHost(hostname) {
|
|
19
|
+
const host = hostname.toLowerCase();
|
|
20
|
+
return OFFICIAL_HOST_SUFFIXES.some(h => host === h || host.endsWith(`.${h}`));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Hosts whose /v1/me branding claims we trust. */
|
|
24
|
+
export function isTrustedEntitlementHost(baseUrl) {
|
|
25
|
+
try {
|
|
26
|
+
const u = new URL(baseUrl.includes('://') ? baseUrl : `https://${baseUrl}`);
|
|
27
|
+
return isOfficialGatewayHost(u.hostname) || isLocalDevHost(u.hostname);
|
|
28
|
+
} catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @param allowLocalLab when true (Metro debug client only), localhost/LAN OK.
|
|
35
|
+
*/
|
|
36
|
+
export function isAllowedGatewayUrl(baseUrl, allowLocalLab) {
|
|
37
|
+
try {
|
|
38
|
+
const u = new URL(baseUrl.includes('://') ? baseUrl : `https://${baseUrl}`);
|
|
39
|
+
if (isOfficialGatewayHost(u.hostname)) return {
|
|
40
|
+
ok: true
|
|
41
|
+
};
|
|
42
|
+
if (allowLocalLab && isLocalDevHost(u.hostname)) return {
|
|
43
|
+
ok: true
|
|
44
|
+
};
|
|
45
|
+
if (allowLocalLab) {
|
|
46
|
+
const ipv4 = /^\d{1,3}(\.\d{1,3}){3}$/.test(u.hostname);
|
|
47
|
+
if (ipv4) return {
|
|
48
|
+
ok: true
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
ok: false,
|
|
53
|
+
reason: allowLocalLab ? `unsupported gateway host: ${u.hostname}` : `unsupported gateway host: ${u.hostname}`
|
|
54
|
+
};
|
|
55
|
+
} catch {
|
|
56
|
+
return {
|
|
57
|
+
ok: false,
|
|
58
|
+
reason: 'invalid gateway.baseUrl'
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=trust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OFFICIAL_HOST_SUFFIXES","isLocalDevHost","hostname","host","toLowerCase","isOfficialGatewayHost","some","h","endsWith","isTrustedEntitlementHost","baseUrl","u","URL","includes","isAllowedGatewayUrl","allowLocalLab","ok","ipv4","test","reason"],"sourceRoot":"../../../src","sources":["commercial/trust.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAMA,sBAAsB,GAAG,CAC7B,wBAAwB,EACxB,yBAAyB,CAC1B;AAED,OAAO,SAASC,cAAcA,CAACC,QAAgB,EAAW;EACxD,MAAMC,IAAI,GAAGD,QAAQ,CAACE,WAAW,CAAC,CAAC;EACnC,OACED,IAAI,KAAK,WAAW,IACpBA,IAAI,KAAK,WAAW,IACpBA,IAAI,KAAK,UAAU,IACnBA,IAAI,KAAK,SAAS;AAEtB;AAEA,OAAO,SAASE,qBAAqBA,CAACH,QAAgB,EAAW;EAC/D,MAAMC,IAAI,GAAGD,QAAQ,CAACE,WAAW,CAAC,CAAC;EACnC,OAAOJ,sBAAsB,CAACM,IAAI,CAC/BC,CAAC,IAAKJ,IAAI,KAAKI,CAAC,IAAIJ,IAAI,CAACK,QAAQ,CAAC,IAAID,CAAC,EAAE,CAC5C,CAAC;AACH;;AAEA;AACA,OAAO,SAASE,wBAAwBA,CAACC,OAAe,EAAW;EACjE,IAAI;IACF,MAAMC,CAAC,GAAG,IAAIC,GAAG,CAACF,OAAO,CAACG,QAAQ,CAAC,KAAK,CAAC,GAAGH,OAAO,GAAG,WAAWA,OAAO,EAAE,CAAC;IAC3E,OAAOL,qBAAqB,CAACM,CAAC,CAACT,QAAQ,CAAC,IAAID,cAAc,CAACU,CAAC,CAACT,QAAQ,CAAC;EACxE,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASY,mBAAmBA,CACjCJ,OAAe,EACfK,aAAsB,EACwB;EAC9C,IAAI;IACF,MAAMJ,CAAC,GAAG,IAAIC,GAAG,CAACF,OAAO,CAACG,QAAQ,CAAC,KAAK,CAAC,GAAGH,OAAO,GAAG,WAAWA,OAAO,EAAE,CAAC;IAC3E,IAAIL,qBAAqB,CAACM,CAAC,CAACT,QAAQ,CAAC,EAAE,OAAO;MAAEc,EAAE,EAAE;IAAK,CAAC;IAC1D,IAAID,aAAa,IAAId,cAAc,CAACU,CAAC,CAACT,QAAQ,CAAC,EAAE,OAAO;MAAEc,EAAE,EAAE;IAAK,CAAC;IACpE,IAAID,aAAa,EAAE;MACjB,MAAME,IAAI,GAAG,yBAAyB,CAACC,IAAI,CAACP,CAAC,CAACT,QAAQ,CAAC;MACvD,IAAIe,IAAI,EAAE,OAAO;QAAED,EAAE,EAAE;MAAK,CAAC;IAC/B;IACA,OAAO;MACLA,EAAE,EAAE,KAAK;MACTG,MAAM,EAAEJ,aAAa,GACjB,6BAA6BJ,CAAC,CAACT,QAAQ,EAAE,GACzC,6BAA6BS,CAAC,CAACT,QAAQ;IAC7C,CAAC;EACH,CAAC,CAAC,MAAM;IACN,OAAO;MAAEc,EAAE,EAAE,KAAK;MAAEG,MAAM,EAAE;IAA0B,CAAC;EACzD;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
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 = [/转账|转\s*\d|transfer|withdraw|send\s*(usdt|usdc|eth|btc)?/i, /授权|approve|export\s*(key|seed|mnemonic)|私钥|助记词/i, /删除(钱包|账户|账号|密钥)|永久删除|注销账户|销毁/i, /delete\s*(wallet|account|key|seed)|destroy\s*account/i, /confirm\s*(transfer|payment)|确认(转账|支付|授权)/i];
|
|
8
|
+
export function isSensitiveLabel(label, policy) {
|
|
9
|
+
if (!label) return false;
|
|
10
|
+
const patterns = policy?.sensitivePatterns?.length ? policy.sensitivePatterns : DEFAULT_SENSITIVE_PATTERNS;
|
|
11
|
+
return patterns.some(re => re.test(label));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** Goal looks like a high-risk operation → preflight confirm. */
|
|
15
|
+
export function isSensitiveGoal(goal, policy) {
|
|
16
|
+
return isSensitiveLabel(goal, policy);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Mid-step gate (legacy). Prefer preflight; during unattended runs this should no-op.
|
|
21
|
+
*/
|
|
22
|
+
export async function runConfirmationGate(ctx, policy, onConfirm) {
|
|
23
|
+
const mode = policy?.mode ?? 'preflight';
|
|
24
|
+
if (mode === 'off' || mode === 'preflight') {
|
|
25
|
+
// Preflight already asked (or disabled). Never block mid-execution.
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
const requireConfirm = policy?.requireUserConfirm !== false;
|
|
29
|
+
if (!requireConfirm) return true;
|
|
30
|
+
const label = ctx.label ?? ctx.action;
|
|
31
|
+
if (!isSensitiveLabel(label, policy) && !isSensitiveLabel(ctx.action, policy)) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
if (!onConfirm) return false;
|
|
35
|
+
return onConfirm(ctx);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Ask once before the agent loop. Returns false if user declines.
|
|
40
|
+
*/
|
|
41
|
+
export async function runPreflightConfirm(goal, policy, onConfirm) {
|
|
42
|
+
const mode = policy?.mode ?? 'preflight';
|
|
43
|
+
if (mode === 'off') return true;
|
|
44
|
+
if (mode !== 'preflight' && mode !== 'inline') return true;
|
|
45
|
+
const requireConfirm = policy?.requireUserConfirm !== false;
|
|
46
|
+
if (!requireConfirm) return true;
|
|
47
|
+
if (!isSensitiveGoal(goal, policy)) return true;
|
|
48
|
+
if (!onConfirm) return false;
|
|
49
|
+
return onConfirm({
|
|
50
|
+
action: 'preflight',
|
|
51
|
+
label: goal
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DEFAULT_SENSITIVE_PATTERNS","isSensitiveLabel","label","policy","patterns","sensitivePatterns","length","some","re","test","isSensitiveGoal","goal","runConfirmationGate","ctx","onConfirm","mode","requireConfirm","requireUserConfirm","action","runPreflightConfirm"],"sourceRoot":"../../../src","sources":["confirmation/gate.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA,OAAO,MAAMA,0BAAoC,GAAG,CAClD,0DAA0D,EAC1D,iDAAiD,EACjD,+BAA+B,EAC/B,uDAAuD,EACvD,4CAA4C,CAC7C;AAED,OAAO,SAASC,gBAAgBA,CAC9BC,KAAyB,EACzBC,MAA2B,EAClB;EACT,IAAI,CAACD,KAAK,EAAE,OAAO,KAAK;EACxB,MAAME,QAAQ,GAAGD,MAAM,EAAEE,iBAAiB,EAAEC,MAAM,GAC9CH,MAAM,CAACE,iBAAiB,GACxBL,0BAA0B;EAC9B,OAAOI,QAAQ,CAACG,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACC,IAAI,CAACP,KAAK,CAAC,CAAC;AAC9C;;AAEA;AACA,OAAO,SAASQ,eAAeA,CAC7BC,IAAY,EACZR,MAA2B,EAClB;EACT,OAAOF,gBAAgB,CAACU,IAAI,EAAER,MAAM,CAAC;AACvC;;AAEA;AACA;AACA;AACA,OAAO,eAAeS,mBAAmBA,CACvCC,GAA4B,EAC5BV,MAAsC,EACtCW,SAA8D,EAC5C;EAClB,MAAMC,IAAI,GAAGZ,MAAM,EAAEY,IAAI,IAAI,WAAW;EACxC,IAAIA,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,WAAW,EAAE;IAC1C;IACA,OAAO,IAAI;EACb;EAEA,MAAMC,cAAc,GAAGb,MAAM,EAAEc,kBAAkB,KAAK,KAAK;EAC3D,IAAI,CAACD,cAAc,EAAE,OAAO,IAAI;EAEhC,MAAMd,KAAK,GAAGW,GAAG,CAACX,KAAK,IAAIW,GAAG,CAACK,MAAM;EACrC,IAAI,CAACjB,gBAAgB,CAACC,KAAK,EAAEC,MAAM,CAAC,IAAI,CAACF,gBAAgB,CAACY,GAAG,CAACK,MAAM,EAAEf,MAAM,CAAC,EAAE;IAC7E,OAAO,IAAI;EACb;EAEA,IAAI,CAACW,SAAS,EAAE,OAAO,KAAK;EAC5B,OAAOA,SAAS,CAACD,GAAG,CAAC;AACvB;;AAEA;AACA;AACA;AACA,OAAO,eAAeM,mBAAmBA,CACvCR,IAAY,EACZR,MAAsC,EACtCW,SAA8D,EAC5C;EAClB,MAAMC,IAAI,GAAGZ,MAAM,EAAEY,IAAI,IAAI,WAAW;EACxC,IAAIA,IAAI,KAAK,KAAK,EAAE,OAAO,IAAI;EAC/B,IAAIA,IAAI,KAAK,WAAW,IAAIA,IAAI,KAAK,QAAQ,EAAE,OAAO,IAAI;EAE1D,MAAMC,cAAc,GAAGb,MAAM,EAAEc,kBAAkB,KAAK,KAAK;EAC3D,IAAI,CAACD,cAAc,EAAE,OAAO,IAAI;EAChC,IAAI,CAACN,eAAe,CAACC,IAAI,EAAER,MAAM,CAAC,EAAE,OAAO,IAAI;EAE/C,IAAI,CAACW,SAAS,EAAE,OAAO,KAAK;EAE5B,OAAOA,SAAS,CAAC;IACfI,MAAM,EAAE,WAAW;IACnBhB,KAAK,EAAES;EACT,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { Animated, StyleSheet, View } from 'react-native';
|
|
5
|
+
import { CursorController } from "./controller.js";
|
|
6
|
+
import { useTaskStore } from "../task/useTaskStore.js";
|
|
7
|
+
import { TaskStore } from "../task/TaskStore.js";
|
|
8
|
+
import { KOKO_CURSOR_TEST_ID } from "../ui/KokoOverlayLayer.js";
|
|
9
|
+
import { KokoHostOverlay } from "../ui/hostOverlay.js";
|
|
10
|
+
import { useOverlayOrigin } from "../ui/useOverlayOrigin.js";
|
|
11
|
+
import { PointerHand } from "./PointerHand.js";
|
|
12
|
+
import { CURSOR_H, CURSOR_TIP_X, CURSOR_TIP_Y, CURSOR_W } from "./pointer.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Native-looking mouse pointer while the agent acts.
|
|
16
|
+
*
|
|
17
|
+
* Uses KokoHostOverlay (FullWindowOverlay on iOS when available) so the
|
|
18
|
+
* cursor stays above react-native-screens Settings / stack modals.
|
|
19
|
+
*
|
|
20
|
+
* Only mount while the cursor is actually visible — an empty FullWindowOverlay
|
|
21
|
+
* stacked under KokoObserver can steal the top presentation and hide the
|
|
22
|
+
* progress pill during host.run-only assist paths.
|
|
23
|
+
*/
|
|
24
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
25
|
+
export function CursorOverlay() {
|
|
26
|
+
const [state, setState] = useState(CursorController.getState());
|
|
27
|
+
const {
|
|
28
|
+
tasks,
|
|
29
|
+
activeTaskId,
|
|
30
|
+
ui
|
|
31
|
+
} = useTaskStore();
|
|
32
|
+
const running = tasks.some(t => t.id === activeTaskId && t.status === 'running');
|
|
33
|
+
const anim = useRef(new Animated.ValueXY({
|
|
34
|
+
x: state.x,
|
|
35
|
+
y: state.y
|
|
36
|
+
})).current;
|
|
37
|
+
const press = useRef(new Animated.Value(0)).current;
|
|
38
|
+
const opacity = useRef(new Animated.Value(0)).current;
|
|
39
|
+
const chromeEpoch = ui.chromeEpoch ?? 0;
|
|
40
|
+
const {
|
|
41
|
+
ref: layerRef,
|
|
42
|
+
origin,
|
|
43
|
+
measure
|
|
44
|
+
} = useOverlayOrigin();
|
|
45
|
+
useEffect(() => CursorController.subscribe(setState), []);
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (!running && state.visible) {
|
|
48
|
+
CursorController.hide();
|
|
49
|
+
}
|
|
50
|
+
}, [running, state.visible]);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (running && state.visible) {
|
|
53
|
+
TaskStore.liftChrome();
|
|
54
|
+
}
|
|
55
|
+
}, [running, state.visible, state.x, state.y]);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
const duration = Math.max(0, state.moveDurationMs ?? 0);
|
|
58
|
+
const to = {
|
|
59
|
+
x: state.x - origin.x - CURSOR_TIP_X,
|
|
60
|
+
y: state.y - origin.y - CURSOR_TIP_Y
|
|
61
|
+
};
|
|
62
|
+
if (duration <= 0) {
|
|
63
|
+
anim.stopAnimation();
|
|
64
|
+
anim.setValue(to);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
Animated.timing(anim, {
|
|
68
|
+
toValue: to,
|
|
69
|
+
duration,
|
|
70
|
+
// Reduce native animation work while Fabric registers views during navigation.
|
|
71
|
+
useNativeDriver: false
|
|
72
|
+
}).start();
|
|
73
|
+
}, [state.x, state.y, state.moveDurationMs, origin.x, origin.y, anim]);
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
Animated.spring(press, {
|
|
76
|
+
toValue: state.pressing ? 1 : 0,
|
|
77
|
+
useNativeDriver: false,
|
|
78
|
+
friction: 6
|
|
79
|
+
}).start();
|
|
80
|
+
}, [state.pressing, press]);
|
|
81
|
+
const show = running && state.visible;
|
|
82
|
+
useEffect(() => {
|
|
83
|
+
if (show) {
|
|
84
|
+
opacity.stopAnimation();
|
|
85
|
+
opacity.setValue(1);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
Animated.timing(opacity, {
|
|
89
|
+
toValue: 0,
|
|
90
|
+
duration: 80,
|
|
91
|
+
useNativeDriver: false
|
|
92
|
+
}).start();
|
|
93
|
+
}, [show, opacity]);
|
|
94
|
+
if (!show) return null;
|
|
95
|
+
const scale = press.interpolate({
|
|
96
|
+
inputRange: [0, 1],
|
|
97
|
+
outputRange: [1, 0.88]
|
|
98
|
+
});
|
|
99
|
+
return /*#__PURE__*/_jsx(KokoHostOverlay, {
|
|
100
|
+
liftToken: chromeEpoch,
|
|
101
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
102
|
+
ref: layerRef,
|
|
103
|
+
onLayout: measure,
|
|
104
|
+
testID: KOKO_CURSOR_TEST_ID,
|
|
105
|
+
nativeID: KOKO_CURSOR_TEST_ID,
|
|
106
|
+
collapsable: false,
|
|
107
|
+
pointerEvents: "none",
|
|
108
|
+
style: styles.layer,
|
|
109
|
+
accessibilityElementsHidden: true,
|
|
110
|
+
importantForAccessibility: "no-hide-descendants",
|
|
111
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
112
|
+
style: [styles.cursor, {
|
|
113
|
+
opacity,
|
|
114
|
+
transform: [...anim.getTranslateTransform(), {
|
|
115
|
+
scale
|
|
116
|
+
}]
|
|
117
|
+
}],
|
|
118
|
+
children: /*#__PURE__*/_jsx(PointerHand, {})
|
|
119
|
+
})
|
|
120
|
+
})
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
const styles = StyleSheet.create({
|
|
124
|
+
layer: {
|
|
125
|
+
...StyleSheet.absoluteFillObject,
|
|
126
|
+
backgroundColor: 'transparent'
|
|
127
|
+
},
|
|
128
|
+
cursor: {
|
|
129
|
+
position: 'absolute',
|
|
130
|
+
width: CURSOR_W,
|
|
131
|
+
height: CURSOR_H,
|
|
132
|
+
left: 0,
|
|
133
|
+
top: 0
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=CursorOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useState","Animated","StyleSheet","View","CursorController","useTaskStore","TaskStore","KOKO_CURSOR_TEST_ID","KokoHostOverlay","useOverlayOrigin","PointerHand","CURSOR_H","CURSOR_TIP_X","CURSOR_TIP_Y","CURSOR_W","jsx","_jsx","CursorOverlay","state","setState","getState","tasks","activeTaskId","ui","running","some","t","id","status","anim","ValueXY","x","y","current","press","Value","opacity","chromeEpoch","ref","layerRef","origin","measure","subscribe","visible","hide","liftChrome","duration","Math","max","moveDurationMs","to","stopAnimation","setValue","timing","toValue","useNativeDriver","start","spring","pressing","friction","show","scale","interpolate","inputRange","outputRange","liftToken","children","onLayout","testID","nativeID","collapsable","pointerEvents","style","styles","layer","accessibilityElementsHidden","importantForAccessibility","cursor","transform","getTranslateTransform","create","absoluteFillObject","backgroundColor","position","width","height","left","top"],"sourceRoot":"../../../src","sources":["cursor/CursorOverlay.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { StyleSheet, View } from 'react-native';
|
|
5
|
+
import { CURSOR_H, CURSOR_W, HAND_SHAPES, HAND_UNIT, HAND_STROKE } from "./pointer.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The agent's pointer: a hand with the index finger extended.
|
|
9
|
+
*
|
|
10
|
+
* Drawn from views rather than an image. The SDK's assets sit outside the
|
|
11
|
+
* host's Metro project root, and a host that rewrites asset paths (monorepos
|
|
12
|
+
* commonly do) can leave the request unresolvable — the pointer then silently
|
|
13
|
+
* does not render, which is the one thing the user watches to know the agent
|
|
14
|
+
* is acting. Views cannot fail that way, and they stay sharp at any density.
|
|
15
|
+
*
|
|
16
|
+
* Two passes: dark shapes inflated to form the outline, then the white fill
|
|
17
|
+
* over them. Overlaps within a pass are invisible, so the union reads as one
|
|
18
|
+
* silhouette with no internal seams.
|
|
19
|
+
*/
|
|
20
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
21
|
+
export function PointerHand() {
|
|
22
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
23
|
+
style: styles.hand,
|
|
24
|
+
pointerEvents: "none",
|
|
25
|
+
children: [renderLayer(HAND_STROKE, '#131313'), renderLayer(0, '#FFFFFF')]
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function renderLayer(inflate, color) {
|
|
29
|
+
return HAND_SHAPES.map(([x, y, w, h, r], i) => /*#__PURE__*/_jsx(View, {
|
|
30
|
+
style: {
|
|
31
|
+
position: 'absolute',
|
|
32
|
+
left: (x - inflate) * HAND_UNIT,
|
|
33
|
+
top: (y - inflate) * HAND_UNIT,
|
|
34
|
+
width: (w + inflate * 2) * HAND_UNIT,
|
|
35
|
+
height: (h + inflate * 2) * HAND_UNIT,
|
|
36
|
+
borderRadius: (r + inflate) * HAND_UNIT,
|
|
37
|
+
backgroundColor: color
|
|
38
|
+
}
|
|
39
|
+
}, `${color}-${i}`));
|
|
40
|
+
}
|
|
41
|
+
const styles = StyleSheet.create({
|
|
42
|
+
hand: {
|
|
43
|
+
width: CURSOR_W,
|
|
44
|
+
height: CURSOR_H
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=PointerHand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","CURSOR_H","CURSOR_W","HAND_SHAPES","HAND_UNIT","HAND_STROKE","jsxs","_jsxs","jsx","_jsx","PointerHand","style","styles","hand","pointerEvents","children","renderLayer","inflate","color","map","x","y","w","h","r","i","position","left","top","width","height","borderRadius","backgroundColor","create"],"sourceRoot":"../../../src","sources":["cursor/PointerHand.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,EAAEC,WAAW,QAAQ,cAAW;;AAEnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAZA,SAAAC,IAAA,IAAAC,KAAA,EAAAC,GAAA,IAAAC,IAAA;AAaA,OAAO,SAASC,WAAWA,CAAA,EAAG;EAC5B,oBACEH,KAAA,CAACP,IAAI;IAACW,KAAK,EAAEC,MAAM,CAACC,IAAK;IAACC,aAAa,EAAC,MAAM;IAAAC,QAAA,GAC3CC,WAAW,CAACX,WAAW,EAAE,SAAS,CAAC,EACnCW,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC;EAAA,CACtB,CAAC;AAEX;AAEA,SAASA,WAAWA,CAACC,OAAe,EAAEC,KAAa,EAAE;EACnD,OAAOf,WAAW,CAACgB,GAAG,CAAC,CAAC,CAACC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC,EAAEC,CAAC,kBACxChB,IAAA,CAACT,IAAI;IAEHW,KAAK,EAAE;MACLe,QAAQ,EAAE,UAAU;MACpBC,IAAI,EAAE,CAACP,CAAC,GAAGH,OAAO,IAAIb,SAAS;MAC/BwB,GAAG,EAAE,CAACP,CAAC,GAAGJ,OAAO,IAAIb,SAAS;MAC9ByB,KAAK,EAAE,CAACP,CAAC,GAAGL,OAAO,GAAG,CAAC,IAAIb,SAAS;MACpC0B,MAAM,EAAE,CAACP,CAAC,GAAGN,OAAO,GAAG,CAAC,IAAIb,SAAS;MACrC2B,YAAY,EAAE,CAACP,CAAC,GAAGP,OAAO,IAAIb,SAAS;MACvC4B,eAAe,EAAEd;IACnB;EAAE,GATG,GAAGA,KAAK,IAAIO,CAAC,EAUnB,CACF,CAAC;AACJ;AAEA,MAAMb,MAAM,GAAGb,UAAU,CAACkC,MAAM,CAAC;EAC/BpB,IAAI,EAAE;IACJgB,KAAK,EAAE3B,QAAQ;IACf4B,MAAM,EAAE7B;EACV;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const DEFAULT = {
|
|
4
|
+
visible: false,
|
|
5
|
+
x: 0,
|
|
6
|
+
y: 0,
|
|
7
|
+
pressing: false,
|
|
8
|
+
moveDurationMs: 0
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Imperative cursor controller used by KokoAgent; CursorOverlay subscribes.
|
|
13
|
+
*/
|
|
14
|
+
class CursorControllerImpl {
|
|
15
|
+
state = {
|
|
16
|
+
...DEFAULT
|
|
17
|
+
};
|
|
18
|
+
listeners = new Set();
|
|
19
|
+
subscribe(listener) {
|
|
20
|
+
this.listeners.add(listener);
|
|
21
|
+
listener(this.state);
|
|
22
|
+
return () => this.listeners.delete(listener);
|
|
23
|
+
}
|
|
24
|
+
getState() {
|
|
25
|
+
return this.state;
|
|
26
|
+
}
|
|
27
|
+
emit() {
|
|
28
|
+
for (const l of this.listeners) l(this.state);
|
|
29
|
+
}
|
|
30
|
+
showAt(x, y, moveDurationMs = 0) {
|
|
31
|
+
this.state = {
|
|
32
|
+
...this.state,
|
|
33
|
+
visible: true,
|
|
34
|
+
x,
|
|
35
|
+
y,
|
|
36
|
+
moveDurationMs
|
|
37
|
+
};
|
|
38
|
+
this.emit();
|
|
39
|
+
}
|
|
40
|
+
hide() {
|
|
41
|
+
this.state = {
|
|
42
|
+
...DEFAULT
|
|
43
|
+
};
|
|
44
|
+
this.emit();
|
|
45
|
+
}
|
|
46
|
+
setPressing(pressing) {
|
|
47
|
+
this.state = {
|
|
48
|
+
...this.state,
|
|
49
|
+
pressing
|
|
50
|
+
};
|
|
51
|
+
this.emit();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Start moving toward the target immediately, then resolve when the
|
|
56
|
+
* visual move should have finished — so tap happens after the cursor arrives.
|
|
57
|
+
*/
|
|
58
|
+
async moveTo(x, y, durationMs) {
|
|
59
|
+
const ms = Math.max(0, Math.floor(durationMs));
|
|
60
|
+
|
|
61
|
+
// First appearance: snap near target so we don't fly in from (0,0).
|
|
62
|
+
// Wait long enough for CursorOverlay's transparent Modal to present
|
|
63
|
+
// (hosts with native-stack often need >100ms; 32ms left it invisible).
|
|
64
|
+
if (!this.state.visible) {
|
|
65
|
+
this.showAt(x, y, 0);
|
|
66
|
+
await sleep(140);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const dx = x - this.state.x;
|
|
70
|
+
const dy = y - this.state.y;
|
|
71
|
+
const dist = Math.hypot(dx, dy);
|
|
72
|
+
// Tiny hops: snap; longer moves: animate, then wait for arrival.
|
|
73
|
+
if (dist < 8 || ms === 0) {
|
|
74
|
+
this.showAt(x, y, 0);
|
|
75
|
+
await sleep(24);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
this.showAt(x, y, ms);
|
|
79
|
+
// Allow React to start Animated.timing, then wait for arrival.
|
|
80
|
+
await sleep(ms + 24);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function sleep(ms) {
|
|
84
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
85
|
+
}
|
|
86
|
+
export const CursorController = new CursorControllerImpl();
|
|
87
|
+
//# sourceMappingURL=controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DEFAULT","visible","x","y","pressing","moveDurationMs","CursorControllerImpl","state","listeners","Set","subscribe","listener","add","delete","getState","emit","l","showAt","hide","setPressing","moveTo","durationMs","ms","Math","max","floor","sleep","dx","dy","dist","hypot","Promise","resolve","setTimeout","CursorController"],"sourceRoot":"../../../src","sources":["cursor/controller.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Geometry for the agent's on-screen pointer.
|
|
5
|
+
*
|
|
6
|
+
* Two overlays draw it (KokoObserver when the progress chrome is mounted,
|
|
7
|
+
* CursorOverlay otherwise), so this lives in one place: a hotspot that
|
|
8
|
+
* disagreed between them would put the pointer somewhere the tap did not go.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** Design grid the hand is laid out on. */
|
|
12
|
+
const GRID_W = 34;
|
|
13
|
+
const GRID_H = 44;
|
|
14
|
+
|
|
15
|
+
/** Keep the grid ratio so the drawing is not squashed. */
|
|
16
|
+
export const CURSOR_W = 26;
|
|
17
|
+
export const CURSOR_H = Math.round(CURSOR_W * GRID_H / GRID_W);
|
|
18
|
+
|
|
19
|
+
/** Points per grid unit. */
|
|
20
|
+
export const HAND_UNIT = CURSOR_W / GRID_W;
|
|
21
|
+
|
|
22
|
+
/** Outline weight, in grid units. */
|
|
23
|
+
export const HAND_STROKE = 1.6;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The hand as a union of rounded bars: `[x, y, width, height, radius]` in grid
|
|
27
|
+
* units. Order is back to front, though within a layer it does not matter.
|
|
28
|
+
*/
|
|
29
|
+
export const HAND_SHAPES = [[10, 1.5, 7, 24.5, 3.5],
|
|
30
|
+
// index finger, extended — its tip is the hotspot
|
|
31
|
+
[16.5, 17, 6.5, 13, 3.2],
|
|
32
|
+
// middle, folded
|
|
33
|
+
[21.5, 19, 6.5, 12, 3.2],
|
|
34
|
+
// ring, folded
|
|
35
|
+
[26, 21.5, 5.5, 10.5, 2.7],
|
|
36
|
+
// little, folded
|
|
37
|
+
[7, 24, 24, 18, 6.5],
|
|
38
|
+
// palm
|
|
39
|
+
[2.5, 27, 9.5, 7, 3.5] // thumb, across the side of the palm
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
/** The index fingertip — this is what lands on the tap coordinate. */
|
|
43
|
+
export const CURSOR_TIP_X = 13.5 * HAND_UNIT;
|
|
44
|
+
export const CURSOR_TIP_Y = 0.6 * HAND_UNIT;
|
|
45
|
+
//# sourceMappingURL=pointer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GRID_W","GRID_H","CURSOR_W","CURSOR_H","Math","round","HAND_UNIT","HAND_STROKE","HAND_SHAPES","CURSOR_TIP_X","CURSOR_TIP_Y"],"sourceRoot":"../../../src","sources":["cursor/pointer.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAMA,MAAM,GAAG,EAAE;AACjB,MAAMC,MAAM,GAAG,EAAE;;AAEjB;AACA,OAAO,MAAMC,QAAQ,GAAG,EAAE;AAC1B,OAAO,MAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAAEH,QAAQ,GAAGD,MAAM,GAAID,MAAM,CAAC;;AAEhE;AACA,OAAO,MAAMM,SAAS,GAAGJ,QAAQ,GAAGF,MAAM;;AAE1C;AACA,OAAO,MAAMO,WAAW,GAAG,GAAG;;AAE9B;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAEZ,GAAG,CACF,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC;AAAE;AACzB,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;AAAE;AAC1B,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;AAAE;AAC1B,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;AAAE;AAC5B,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAAE;AACtB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAE;AAAA,CACzB;;AAED;AACA,OAAO,MAAMC,YAAY,GAAG,IAAI,GAAGH,SAAS;AAC5C,OAAO,MAAMI,YAAY,GAAG,GAAG,GAAGJ,SAAS","ignoreList":[]}
|