viveworker 0.8.5 → 0.8.7
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/package.json +18 -10
- package/scripts/a2a-cli.mjs +21 -4
- package/scripts/share-cli.mjs +322 -41
- package/scripts/viveworker-bridge.mjs +582 -67
- package/scripts/viveworker.mjs +11 -7
- package/web/app.css +195 -0
- package/web/app.js +1027 -239
- package/web/build-id.js +1 -1
- package/web/i18n.js +114 -18
- package/web/remote-pairing/transport.js +15 -3
- package/web/sw.js +4 -0
package/web/build-id.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const APP_BUILD_ID = "
|
|
1
|
+
export const APP_BUILD_ID = "20260525-wallet-network-count";
|
package/web/i18n.js
CHANGED
|
@@ -619,25 +619,54 @@ const translations = {
|
|
|
619
619
|
"settings.a2aShare.days": ({ count }) => `${count} ${count === 1 ? "day" : "days"}`,
|
|
620
620
|
"settings.a2aShare.ratePerHour": ({ count }) => `${count} / hour`,
|
|
621
621
|
"settings.a2aShare.passwordProtected": "Password protected",
|
|
622
|
-
"settings.a2aShare.paidShare": ({ price, network }) => `Paid — ${price} USDC on ${network}`,
|
|
622
|
+
"settings.a2aShare.paidShare": ({ price, asset, network }) => `Paid — ${price} ${asset || "USDC"} on ${network}`,
|
|
623
623
|
"settings.a2aShare.showMore": "{count} more…",
|
|
624
624
|
"settings.a2aShare.showLess": "Show less",
|
|
625
625
|
"settings.a2aShare.expired": "Expired",
|
|
626
626
|
"settings.a2aShare.status.unreachable": "Unreachable",
|
|
627
627
|
"settings.a2aShare.error": "Upstream fetch failed: {reason}",
|
|
628
628
|
"settings.wallet.title": "Wallet",
|
|
629
|
-
"settings.wallet.subtitle": "
|
|
630
|
-
"settings.wallet.copy": "
|
|
629
|
+
"settings.wallet.subtitle": "Paid-share receiving wallets",
|
|
630
|
+
"settings.wallet.copy": "Choose which issued wallets and payout addresses agents can use by default.",
|
|
631
631
|
"settings.wallet.unavailable": "Wallet is not configured for this viveworker instance.",
|
|
632
632
|
"settings.wallet.summary.title": "Current status",
|
|
633
633
|
"settings.wallet.flow.title": "Recommended order",
|
|
634
|
+
"settings.wallet.agent.title": "Agent payment receiving wallets",
|
|
635
|
+
"settings.wallet.agent.copy": "Choose the wallets that receive payments for paid file shares. Mainnet is excluded until the formal release.",
|
|
636
|
+
"settings.wallet.agent.empty": "No wallet or payout address has been issued yet. Open Wallet Inventory to add receiving wallets.",
|
|
637
|
+
"settings.wallet.agent.emptyAvailable": "No testnet receiving wallet is available yet. Mainnet unlocks at the formal release.",
|
|
638
|
+
"settings.wallet.agent.save": "Save settings",
|
|
639
|
+
"settings.wallet.agent.useAllConfigured": "Enable all receiving wallets",
|
|
640
|
+
"settings.wallet.agent.currentDefaults": "Receiving wallets",
|
|
641
|
+
"settings.wallet.agent.unsaved": "You have unsaved changes. Receiving wallets will update after you save.",
|
|
642
|
+
"settings.wallet.agent.modalTitle": "Active receiving wallets",
|
|
643
|
+
"settings.wallet.agent.modalCopy": "These saved receiving wallets are available to paid file shares.",
|
|
644
|
+
"settings.wallet.inventory.title": "Wallet Inventory",
|
|
645
|
+
"settings.wallet.inventory.copy": "Issue or register optional wallets by environment. Testnet is available now; mainnet unlocks at the formal release.",
|
|
646
|
+
"settings.wallet.inventory.navGroup": "Wallet inventory",
|
|
647
|
+
"settings.wallet.inventory.navTitle": "Issue or register wallets",
|
|
648
|
+
"settings.wallet.inventory.navCopy": "Manage Base, Polygon, and Liquid payment capabilities.",
|
|
649
|
+
"settings.wallet.inventory.navValue": ({ count }) => `${count} configured`,
|
|
650
|
+
"settings.wallet.inventory.accountTitle": "Account access",
|
|
651
|
+
"settings.wallet.inventory.issueTitle": "Wallet issuance and registration",
|
|
652
|
+
"settings.wallet.inventory.testnetTitle": "Testnet",
|
|
653
|
+
"settings.wallet.inventory.mainnetTitle": "Mainnet",
|
|
654
|
+
"settings.wallet.inventory.environment.testnet": "Testnet",
|
|
655
|
+
"settings.wallet.inventory.environment.mainnet": "Mainnet",
|
|
656
|
+
"settings.wallet.chain.base.title": "Base",
|
|
657
|
+
"settings.wallet.chain.base.copy": "Issue Base smart wallets. Mainnet issuance is coming at the formal release.",
|
|
658
|
+
"settings.wallet.chain.liquid.title": "Liquid",
|
|
659
|
+
"settings.wallet.chain.liquid.copy": "Register Liquid payout addresses. Mainnet registration is coming at the formal release.",
|
|
660
|
+
"settings.wallet.chain.polygon.title": "Polygon",
|
|
661
|
+
"settings.wallet.chain.polygon.copy": "Issue Polygon smart wallets. Mainnet issuance is coming at the formal release.",
|
|
662
|
+
"settings.wallet.chain.configuredValue": ({ count, total }) => `${count}/${total} configured`,
|
|
634
663
|
"settings.wallet.flow.banner.title": "Let's set up your wallet",
|
|
635
664
|
"settings.wallet.flow.copy": "You need to activate your wallet to exchange task rewards over A2A.",
|
|
636
|
-
"settings.wallet.betaNotice": "Wallet is in beta.
|
|
665
|
+
"settings.wallet.betaNotice": "Wallet is in beta. Testnets are the safe default; mainnet will be available at the formal release.",
|
|
637
666
|
"settings.wallet.sessionExpired.title": "Refresh your wallet session",
|
|
638
667
|
"settings.wallet.sessionExpired.copy": "Your wallet session expired. Sign in again with a one-time password; your passkey and Base Sepolia address stay linked.",
|
|
639
668
|
"settings.wallet.ready.title": "Ready to use",
|
|
640
|
-
"settings.wallet.ready.copy": "Your email sign-in, passkey, and
|
|
669
|
+
"settings.wallet.ready.copy": "Your email sign-in, passkey, and testnet wallet setup are ready.",
|
|
641
670
|
"settings.wallet.ready.payoutIntro": "Agents will use this address for payouts:",
|
|
642
671
|
"settings.wallet.ready.copyAddress": "Tap to copy address",
|
|
643
672
|
"settings.wallet.advanced.title": "Account actions",
|
|
@@ -657,8 +686,17 @@ const translations = {
|
|
|
657
686
|
"settings.wallet.step.baseSepolia.title": "Issue a Base Sepolia wallet",
|
|
658
687
|
"settings.wallet.step.baseSepolia.copy": "Create a testing wallet for the current beta flow. This is the main wallet we recommend issuing first.",
|
|
659
688
|
"settings.wallet.step.base.title": "Issue a Base wallet",
|
|
660
|
-
"settings.wallet.step.base.copy": "Base mainnet wallet issuance is
|
|
689
|
+
"settings.wallet.step.base.copy": "Base mainnet wallet issuance is disabled during beta and will unlock at the formal release.",
|
|
661
690
|
"settings.wallet.step.base.comingSoonDetail": "Coming soon",
|
|
691
|
+
"settings.wallet.step.polygonAmoy.title": "Issue a Polygon Amoy wallet",
|
|
692
|
+
"settings.wallet.step.polygonAmoy.copy": "Create a Polygon Amoy testing wallet so paid shares can accept USDC and JPYC over Polygon x402.",
|
|
693
|
+
"settings.wallet.step.polygon.title": "Issue a Polygon wallet",
|
|
694
|
+
"settings.wallet.step.polygon.copy": "Polygon mainnet wallet issuance is disabled during beta and will unlock at the formal release.",
|
|
695
|
+
"settings.wallet.step.liquidTestnet.title": "Register a Liquid Testnet payout",
|
|
696
|
+
"settings.wallet.step.liquidTestnet.copy": "Add a Liquid Testnet address so paid shares can accept USDt over Liquid x402.",
|
|
697
|
+
"settings.wallet.step.liquid.title": "Register a Liquid payout",
|
|
698
|
+
"settings.wallet.step.liquid.copy": "Liquid mainnet payout registration is disabled during beta and will unlock at the formal release.",
|
|
699
|
+
"settings.wallet.mainnet.comingSoonDetail": "Mainnet will be available at the formal release.",
|
|
662
700
|
"settings.wallet.mainnet.optIn": "Also set up Base mainnet",
|
|
663
701
|
"settings.wallet.mainnet.optInHint": "Optional — required only for production payouts.",
|
|
664
702
|
"settings.hazbase.title": "Wallet",
|
|
@@ -666,7 +704,7 @@ const translations = {
|
|
|
666
704
|
"settings.hazbase.status.signedIn": "Signed in",
|
|
667
705
|
"settings.hazbase.status.sessionExpired": "Session expired",
|
|
668
706
|
"settings.hazbase.status.otpAwaitingVerify": "Sent. Check your inbox, then enter the code below.",
|
|
669
|
-
"settings.hazbase.passkey.ready": "Registered
|
|
707
|
+
"settings.hazbase.passkey.ready": "Registered for this account",
|
|
670
708
|
"settings.hazbase.passkey.missing": "Not registered yet",
|
|
671
709
|
"settings.hazbase.passkey.localHostRequired": "Open viveworker on its .local hostname to register a passkey.",
|
|
672
710
|
"settings.hazbase.wallet.missing": "Not issued yet",
|
|
@@ -674,6 +712,7 @@ const translations = {
|
|
|
674
712
|
"settings.hazbase.field.emailPlaceholder": "you@example.com",
|
|
675
713
|
"settings.hazbase.field.otpLabel": "One-time password",
|
|
676
714
|
"settings.hazbase.field.otpPlaceholder": "e.g. 123456",
|
|
715
|
+
"settings.hazbase.field.liquidAddressLabel": "Liquid payout address",
|
|
677
716
|
"settings.hazbase.action.requestOtp": "Send one-time password",
|
|
678
717
|
"settings.hazbase.action.refreshSession": "Refresh session",
|
|
679
718
|
"settings.hazbase.action.resendOtp": "Resend",
|
|
@@ -682,6 +721,9 @@ const translations = {
|
|
|
682
721
|
"settings.hazbase.action.registerPasskey": "Register passkey",
|
|
683
722
|
"settings.hazbase.action.bootstrapBaseSepolia": "Issue Base Sepolia",
|
|
684
723
|
"settings.hazbase.action.bootstrapBase": "Issue Base",
|
|
724
|
+
"settings.hazbase.action.bootstrapPolygonAmoy": "Issue Polygon Amoy",
|
|
725
|
+
"settings.hazbase.action.bootstrapPolygon": "Issue Polygon",
|
|
726
|
+
"settings.hazbase.action.saveLiquidCapability": "Save payout address",
|
|
685
727
|
"settings.hazbase.action.signOut": "Sign out of wallet",
|
|
686
728
|
"settings.hazbase.logout.confirm.title": "Sign out of wallet?",
|
|
687
729
|
"settings.hazbase.logout.confirm.copy": "You'll need to sign back in with a one-time password to access this wallet again. Your wallet address and passkey stay linked to this account.",
|
|
@@ -690,6 +732,8 @@ const translations = {
|
|
|
690
732
|
"settings.hazbase.notice.otpVerified": "Signed in to wallet.",
|
|
691
733
|
"settings.hazbase.notice.passkeyRegistered": "Passkey registered.",
|
|
692
734
|
"settings.hazbase.notice.walletBootstrapped": "Wallet issued on chain {chainId}.",
|
|
735
|
+
"settings.hazbase.notice.paymentCapabilitySaved": "Payment capability saved for {network}.",
|
|
736
|
+
"settings.hazbase.notice.agentDefaultsSaved": "Receiving wallet settings saved.",
|
|
693
737
|
"settings.hazbase.notice.signedOut": "Signed out of wallet.",
|
|
694
738
|
"settings.hazbase.notice.sessionRefreshStarted": "Session refresh started. Send a one-time password to sign in again.",
|
|
695
739
|
"settings.hazbase.prompt.email": "Wallet email address",
|
|
@@ -758,7 +802,7 @@ const translations = {
|
|
|
758
802
|
"error.completionReplyImageLimit": "Attach up to {count} images at a time.",
|
|
759
803
|
"error.completionReplyImageInvalidUpload": "That image could not be uploaded.",
|
|
760
804
|
"error.codexIpcNotConnected": "Codex desktop is not connected right now.",
|
|
761
|
-
"error.codexClientNotFound": "Codex
|
|
805
|
+
"error.codexClientNotFound": "Codex couldn't find the target thread. Reopen that thread on your PC and try again.",
|
|
762
806
|
"error.approvalNotFound": "This approval is no longer available.",
|
|
763
807
|
"error.approvalAlreadyHandled": "This approval was already handled.",
|
|
764
808
|
"error.planRequestNotFound": "This plan request is no longer available.",
|
|
@@ -772,8 +816,12 @@ const translations = {
|
|
|
772
816
|
"error.hazbaseEmailRequired": "Enter your email address first.",
|
|
773
817
|
"error.hazbaseOtpRequired": "Enter the one-time password.",
|
|
774
818
|
"error.hazbasePasskeyLocalHostRequired": "Open viveworker on its .local hostname to use hazBase passkeys.",
|
|
819
|
+
"error.hazbasePasskeyAlreadyRegistered": "A passkey is already registered for this account. Use the existing passkey to continue.",
|
|
775
820
|
"error.hazbaseWalletAccountMissing": "Issue a wallet on this chain first.",
|
|
776
|
-
"error.
|
|
821
|
+
"error.hazbaseLiquidAddressRequired": "Enter a Liquid payout address first.",
|
|
822
|
+
"error.hazbaseLiquidAddressInvalid": "Enter a valid Liquid payout address for this network.",
|
|
823
|
+
"error.paymentNetworkComingSoon": "Mainnet payments will be available at the formal release.",
|
|
824
|
+
"error.unsupportedChain": "This network is not supported for wallet issuance yet. Choose a supported network and try again.",
|
|
777
825
|
"server.fallback.codexTask": "{provider} task",
|
|
778
826
|
"server.title.approval": "Approval",
|
|
779
827
|
"server.title.complete": "Completed",
|
|
@@ -1698,25 +1746,54 @@ const translations = {
|
|
|
1698
1746
|
"settings.a2aShare.days": ({ count }) => `${count} 日`,
|
|
1699
1747
|
"settings.a2aShare.ratePerHour": ({ count }) => `${count} 件 / 1 時間`,
|
|
1700
1748
|
"settings.a2aShare.passwordProtected": "パスワード保護",
|
|
1701
|
-
"settings.a2aShare.paidShare": ({ price, network }) => `有料 — ${price} USDC (${network})`,
|
|
1749
|
+
"settings.a2aShare.paidShare": ({ price, asset, network }) => `有料 — ${price} ${asset || "USDC"} (${network})`,
|
|
1702
1750
|
"settings.a2aShare.showMore": "さらに {count} 件…",
|
|
1703
1751
|
"settings.a2aShare.showLess": "閉じる",
|
|
1704
1752
|
"settings.a2aShare.expired": "期限切れ",
|
|
1705
1753
|
"settings.a2aShare.status.unreachable": "到達不可",
|
|
1706
1754
|
"settings.a2aShare.error": "上流への問い合わせに失敗しました: {reason}",
|
|
1707
1755
|
"settings.wallet.title": "ウォレット",
|
|
1708
|
-
"settings.wallet.subtitle": "
|
|
1709
|
-
"settings.wallet.copy": "
|
|
1756
|
+
"settings.wallet.subtitle": "エージェント支払いの受け取り先",
|
|
1757
|
+
"settings.wallet.copy": "発行済みウォレットや payout アドレスのうち、エージェントが既定で使えるものを選びます。",
|
|
1710
1758
|
"settings.wallet.unavailable": "この viveworker では Wallet が設定されていません。",
|
|
1711
1759
|
"settings.wallet.summary.title": "現在の状態",
|
|
1712
1760
|
"settings.wallet.flow.title": "おすすめの順番",
|
|
1761
|
+
"settings.wallet.agent.title": "エージェント支払いの受け取り先",
|
|
1762
|
+
"settings.wallet.agent.copy": "有料ファイル共有で支払いを受け取るウォレットを選びます。mainnet は正式リリースまで除外されます。",
|
|
1763
|
+
"settings.wallet.agent.empty": "まだウォレットまたは payout アドレスがありません。ウォレット管理で、受け取り先を追加してください。",
|
|
1764
|
+
"settings.wallet.agent.emptyAvailable": "Testnet の受け取り先がまだありません。mainnet は正式リリース時に利用できます。",
|
|
1765
|
+
"settings.wallet.agent.save": "設定を保存",
|
|
1766
|
+
"settings.wallet.agent.useAllConfigured": "すべての受け取り先を有効にする",
|
|
1767
|
+
"settings.wallet.agent.currentDefaults": "受け取り先",
|
|
1768
|
+
"settings.wallet.agent.unsaved": "未保存の変更があります。保存すると受け取り先に反映されます。",
|
|
1769
|
+
"settings.wallet.agent.modalTitle": "有効な受け取り先",
|
|
1770
|
+
"settings.wallet.agent.modalCopy": "保存済みの受け取り先が、有料ファイル共有で利用されます。",
|
|
1771
|
+
"settings.wallet.inventory.title": "ウォレット管理",
|
|
1772
|
+
"settings.wallet.inventory.copy": "環境ごとに必要なウォレットを任意で発行・登録します。現在は Testnet が利用可能で、mainnet は正式リリース時に利用できます。",
|
|
1773
|
+
"settings.wallet.inventory.navGroup": "ウォレット管理",
|
|
1774
|
+
"settings.wallet.inventory.navTitle": "ウォレットを発行・登録",
|
|
1775
|
+
"settings.wallet.inventory.navCopy": "Base、Polygon、Liquid の payment capability を管理します。",
|
|
1776
|
+
"settings.wallet.inventory.navValue": ({ count }) => `${count} 件設定済み`,
|
|
1777
|
+
"settings.wallet.inventory.accountTitle": "アカウント認証",
|
|
1778
|
+
"settings.wallet.inventory.issueTitle": "ウォレット発行・登録",
|
|
1779
|
+
"settings.wallet.inventory.testnetTitle": "Testnet",
|
|
1780
|
+
"settings.wallet.inventory.mainnetTitle": "Mainnet",
|
|
1781
|
+
"settings.wallet.inventory.environment.testnet": "Testnet",
|
|
1782
|
+
"settings.wallet.inventory.environment.mainnet": "Mainnet",
|
|
1783
|
+
"settings.wallet.chain.base.title": "Base",
|
|
1784
|
+
"settings.wallet.chain.base.copy": "Base の smart wallet を発行します。Mainnet 発行は正式リリース時に利用できます。",
|
|
1785
|
+
"settings.wallet.chain.liquid.title": "Liquid",
|
|
1786
|
+
"settings.wallet.chain.liquid.copy": "Liquid の payout アドレスを登録します。Mainnet 登録は正式リリース時に利用できます。",
|
|
1787
|
+
"settings.wallet.chain.polygon.title": "Polygon",
|
|
1788
|
+
"settings.wallet.chain.polygon.copy": "Polygon の smart wallet を発行します。Mainnet 発行は正式リリース時に利用できます。",
|
|
1789
|
+
"settings.wallet.chain.configuredValue": ({ count, total }) => `${count}/${total} 設定済み`,
|
|
1713
1790
|
"settings.wallet.flow.banner.title": "まずは、セットアップしましょう",
|
|
1714
1791
|
"settings.wallet.flow.copy": "A2A でタスクの報酬をやりとりするには、ウォレットを有効化する必要があります。",
|
|
1715
|
-
"settings.wallet.betaNotice": "
|
|
1792
|
+
"settings.wallet.betaNotice": "ウォレット機能はベータテスト中です。Testnet を安全な既定値にし、mainnet は正式リリース時にご利用いただけます。",
|
|
1716
1793
|
"settings.wallet.sessionExpired.title": "ウォレットセッションを更新しましょう",
|
|
1717
1794
|
"settings.wallet.sessionExpired.copy": "ウォレットのセッションが切れています。ワンタイムパスワードで再サインインすれば、パスキーと Base Sepolia アドレスはそのまま使えます。",
|
|
1718
1795
|
"settings.wallet.ready.title": "利用準備ができました",
|
|
1719
|
-
"settings.wallet.ready.copy": "メールサインイン、パスキー、
|
|
1796
|
+
"settings.wallet.ready.copy": "メールサインイン、パスキー、Testnet ウォレット設定の準備ができています。",
|
|
1720
1797
|
"settings.wallet.ready.payoutIntro": "エージェントは下記アドレスを利用します:",
|
|
1721
1798
|
"settings.wallet.ready.copyAddress": "タップでアドレスをコピー",
|
|
1722
1799
|
"settings.wallet.advanced.title": "アカウント操作",
|
|
@@ -1736,8 +1813,17 @@ const translations = {
|
|
|
1736
1813
|
"settings.wallet.step.baseSepolia.title": "Base Sepolia ウォレットを発行",
|
|
1737
1814
|
"settings.wallet.step.baseSepolia.copy": "現在の beta フローで使うテスト用ウォレットを発行します。まずはこれを用意するのがおすすめです。",
|
|
1738
1815
|
"settings.wallet.step.base.title": "Base ウォレットを発行",
|
|
1739
|
-
"settings.wallet.step.base.copy": "
|
|
1816
|
+
"settings.wallet.step.base.copy": "Base mainnet ウォレット発行は beta 中は無効です。正式リリース時に利用できます。",
|
|
1740
1817
|
"settings.wallet.step.base.comingSoonDetail": "Coming soon",
|
|
1818
|
+
"settings.wallet.step.polygonAmoy.title": "Polygon Amoy ウォレットを発行",
|
|
1819
|
+
"settings.wallet.step.polygonAmoy.copy": "Polygon x402 で USDC / JPYC を受け取れるよう、Polygon Amoy のテスト用ウォレットを発行します。",
|
|
1820
|
+
"settings.wallet.step.polygon.title": "Polygon ウォレットを発行",
|
|
1821
|
+
"settings.wallet.step.polygon.copy": "Polygon mainnet ウォレット発行は beta 中は無効です。正式リリース時に利用できます。",
|
|
1822
|
+
"settings.wallet.step.liquidTestnet.title": "Liquid Testnet payout を登録",
|
|
1823
|
+
"settings.wallet.step.liquidTestnet.copy": "Liquid x402 で USDt を受け取れるよう、Liquid Testnet アドレスを追加します。",
|
|
1824
|
+
"settings.wallet.step.liquid.title": "Liquid payout を登録",
|
|
1825
|
+
"settings.wallet.step.liquid.copy": "Liquid mainnet payout 登録は beta 中は無効です。正式リリース時に利用できます。",
|
|
1826
|
+
"settings.wallet.mainnet.comingSoonDetail": "mainnet は正式リリース時に利用できます。",
|
|
1741
1827
|
"settings.wallet.mainnet.optIn": "Base mainnet も設定する",
|
|
1742
1828
|
"settings.wallet.mainnet.optInHint": "任意 — 本番 payout が必要な場合だけ。",
|
|
1743
1829
|
"settings.hazbase.title": "ウォレット",
|
|
@@ -1745,7 +1831,7 @@ const translations = {
|
|
|
1745
1831
|
"settings.hazbase.status.signedIn": "サインイン済み",
|
|
1746
1832
|
"settings.hazbase.status.sessionExpired": "セッション切れ",
|
|
1747
1833
|
"settings.hazbase.status.otpAwaitingVerify": "送信しました。メールを確認して、下のフィールドに入力してください。",
|
|
1748
|
-
"settings.hazbase.passkey.ready": "
|
|
1834
|
+
"settings.hazbase.passkey.ready": "このアカウントで登録済み",
|
|
1749
1835
|
"settings.hazbase.passkey.missing": "まだ登録されていません",
|
|
1750
1836
|
"settings.hazbase.passkey.localHostRequired": ".local ホスト名で viveworker を開くとパスキーを登録できます。",
|
|
1751
1837
|
"settings.hazbase.wallet.missing": "未発行",
|
|
@@ -1753,6 +1839,7 @@ const translations = {
|
|
|
1753
1839
|
"settings.hazbase.field.emailPlaceholder": "you@example.com",
|
|
1754
1840
|
"settings.hazbase.field.otpLabel": "ワンタイムパスワード",
|
|
1755
1841
|
"settings.hazbase.field.otpPlaceholder": "例: 123456",
|
|
1842
|
+
"settings.hazbase.field.liquidAddressLabel": "Liquid payout アドレス",
|
|
1756
1843
|
"settings.hazbase.action.requestOtp": "ワンタイムパスワードを送信",
|
|
1757
1844
|
"settings.hazbase.action.refreshSession": "セッションを更新",
|
|
1758
1845
|
"settings.hazbase.action.resendOtp": "再送信",
|
|
@@ -1761,6 +1848,9 @@ const translations = {
|
|
|
1761
1848
|
"settings.hazbase.action.registerPasskey": "パスキーを登録",
|
|
1762
1849
|
"settings.hazbase.action.bootstrapBaseSepolia": "Base Sepolia発行",
|
|
1763
1850
|
"settings.hazbase.action.bootstrapBase": "Base発行",
|
|
1851
|
+
"settings.hazbase.action.bootstrapPolygonAmoy": "Polygon Amoy発行",
|
|
1852
|
+
"settings.hazbase.action.bootstrapPolygon": "Polygon発行",
|
|
1853
|
+
"settings.hazbase.action.saveLiquidCapability": "payout アドレスを保存",
|
|
1764
1854
|
"settings.hazbase.action.signOut": "ウォレットからログアウト",
|
|
1765
1855
|
"settings.hazbase.logout.confirm.title": "ウォレットからログアウトしますか?",
|
|
1766
1856
|
"settings.hazbase.logout.confirm.copy": "再度アクセスするには、ワンタイムパスワードでのサインインが必要になります。ウォレットアドレスとパスキーは同じアカウントに紐付いたまま残ります。",
|
|
@@ -1769,6 +1859,8 @@ const translations = {
|
|
|
1769
1859
|
"settings.hazbase.notice.otpVerified": "ウォレットにサインインしました。",
|
|
1770
1860
|
"settings.hazbase.notice.passkeyRegistered": "パスキーを登録しました。",
|
|
1771
1861
|
"settings.hazbase.notice.walletBootstrapped": "chain {chainId} にウォレットを発行しました。",
|
|
1862
|
+
"settings.hazbase.notice.paymentCapabilitySaved": "{network} の payment capability を保存しました。",
|
|
1863
|
+
"settings.hazbase.notice.agentDefaultsSaved": "受け取り先の設定を保存しました。",
|
|
1772
1864
|
"settings.hazbase.notice.signedOut": "ウォレットからログアウトしました。",
|
|
1773
1865
|
"settings.hazbase.notice.sessionRefreshStarted": "セッション更新を開始しました。ワンタイムパスワードを送信して再サインインしてください。",
|
|
1774
1866
|
"settings.hazbase.prompt.email": "ウォレットのメールアドレス",
|
|
@@ -1837,7 +1929,7 @@ const translations = {
|
|
|
1837
1929
|
"error.completionReplyImageLimit": "画像は最大 {count} 枚まで添付できます。",
|
|
1838
1930
|
"error.completionReplyImageInvalidUpload": "この画像はアップロードできませんでした。",
|
|
1839
1931
|
"error.codexIpcNotConnected": "いまは Codex desktop に接続できていません。",
|
|
1840
|
-
"error.codexClientNotFound": "Codex
|
|
1932
|
+
"error.codexClientNotFound": "Codex 側で対象スレッドが見つかりませんでした。PC でそのスレッドを開き直して、もう一度送信してください。",
|
|
1841
1933
|
"error.approvalNotFound": "この承認はもう利用できません。",
|
|
1842
1934
|
"error.approvalAlreadyHandled": "この承認はすでに処理済みです。",
|
|
1843
1935
|
"error.planRequestNotFound": "このプラン確認はもう利用できません。",
|
|
@@ -1851,8 +1943,12 @@ const translations = {
|
|
|
1851
1943
|
"error.hazbaseEmailRequired": "先にメールアドレスを入力してください。",
|
|
1852
1944
|
"error.hazbaseOtpRequired": "ワンタイムパスワードを入力してください。",
|
|
1853
1945
|
"error.hazbasePasskeyLocalHostRequired": ".local ホスト名で viveworker を開くと hazBase パスキーを使えます。",
|
|
1946
|
+
"error.hazbasePasskeyAlreadyRegistered": "このアカウントには既にパスキーが登録されています。既存のパスキーで続行してください。",
|
|
1854
1947
|
"error.hazbaseWalletAccountMissing": "先にこのチェーンのウォレットを発行してください。",
|
|
1855
|
-
"error.
|
|
1948
|
+
"error.hazbaseLiquidAddressRequired": "先に Liquid payout アドレスを入力してください。",
|
|
1949
|
+
"error.hazbaseLiquidAddressInvalid": "このネットワーク用の有効な Liquid payout アドレスを入力してください。",
|
|
1950
|
+
"error.paymentNetworkComingSoon": "mainnet の支払いは正式リリース時に利用できます。",
|
|
1951
|
+
"error.unsupportedChain": "このネットワークのウォレット発行はまだサポートされていません。対応済みのネットワークを選んでください。",
|
|
1856
1952
|
"server.fallback.codexTask": "{provider} task",
|
|
1857
1953
|
"server.title.approval": "要承認",
|
|
1858
1954
|
"server.title.complete": "完了",
|
|
@@ -91,6 +91,14 @@ const DEFAULT_MAX_CIRCUIT_BREAKER_MS = 10 * 60_000;
|
|
|
91
91
|
const DEFAULT_STABLE_CONNECTION_MS = 15_000;
|
|
92
92
|
const DEFAULT_PROLOGUE = new TextEncoder().encode("viveworker/remote-pairing/v1");
|
|
93
93
|
|
|
94
|
+
// The relay token is carried in the Sec-WebSocket-Protocol handshake header,
|
|
95
|
+
// not a `?token=` query param, so it stays out of URLs and access logs. We
|
|
96
|
+
// offer the fixed RELAY_SUBPROTOCOL (which the relay echoes on the 101 so the
|
|
97
|
+
// handshake completes) plus the token as `${TOKEN_SUBPROTOCOL_PREFIX}<token>`.
|
|
98
|
+
// Must match worker-pairing/worker.js and worker-pairing/pairing-do.js.
|
|
99
|
+
const RELAY_SUBPROTOCOL = "viveworker.relay.v1";
|
|
100
|
+
const TOKEN_SUBPROTOCOL_PREFIX = "vwtok.";
|
|
101
|
+
|
|
94
102
|
// CloseEvent codes we emit. 1000 is normal; 4xxx is application-defined.
|
|
95
103
|
const CLOSE_NORMAL = 1000;
|
|
96
104
|
const CLOSE_HANDSHAKE_TIMEOUT = 4001;
|
|
@@ -354,12 +362,16 @@ export class RemotePairingTransport {
|
|
|
354
362
|
|
|
355
363
|
const url =
|
|
356
364
|
`${this._relayUrl}/v1/pairing/${encodeURIComponent(this._pairingId)}` +
|
|
357
|
-
`/ws?role=${encodeURIComponent(this._role)}
|
|
358
|
-
|
|
365
|
+
`/ws?role=${encodeURIComponent(this._role)}`;
|
|
366
|
+
|
|
367
|
+
// Send the relay token via Sec-WebSocket-Protocol instead of the URL. Both
|
|
368
|
+
// the browser WebSocket and the Node `ws` package take a protocols list as
|
|
369
|
+
// the 2nd arg; the relay echoes only RELAY_SUBPROTOCOL back.
|
|
370
|
+
const subprotocols = [RELAY_SUBPROTOCOL, `${TOKEN_SUBPROTOCOL_PREFIX}${this._relayToken}`];
|
|
359
371
|
|
|
360
372
|
let ws;
|
|
361
373
|
try {
|
|
362
|
-
ws = new this._WebSocketImpl(url);
|
|
374
|
+
ws = new this._WebSocketImpl(url, subprotocols);
|
|
363
375
|
} catch (err) {
|
|
364
376
|
this._onError(err);
|
|
365
377
|
this._setState(STATE.DISCONNECTED, { reason: "open-threw", error: err });
|
package/web/sw.js
CHANGED
|
@@ -2,6 +2,7 @@ const APP_BUILD_ID = "__VIVEWORKER_APP_BUILD_ID__";
|
|
|
2
2
|
const CACHE_NAME = `viveworker-${APP_BUILD_ID}`;
|
|
3
3
|
const APP_SCRIPT_URL = `/app.js?v=${APP_BUILD_ID}`;
|
|
4
4
|
const APP_STYLE_URL = `/app.css?v=${APP_BUILD_ID}`;
|
|
5
|
+
const I18N_SCRIPT_URL = `/i18n.js?v=${APP_BUILD_ID}`;
|
|
5
6
|
const API_ROUTER_URL = `/remote-pairing/api-router.js?v=${APP_BUILD_ID}`;
|
|
6
7
|
const NOTIFICATION_INTENT_CACHE = "viveworker-notification-intent-v1";
|
|
7
8
|
const NOTIFICATION_INTENT_PATH = "/__viveworker_notification_intent__";
|
|
@@ -16,6 +17,7 @@ const APP_ASSETS = [
|
|
|
16
17
|
"/app",
|
|
17
18
|
APP_SCRIPT_URL,
|
|
18
19
|
APP_STYLE_URL,
|
|
20
|
+
I18N_SCRIPT_URL,
|
|
19
21
|
"/app.js",
|
|
20
22
|
"/i18n.js",
|
|
21
23
|
"/icons/viveworker-v-pulse.svg",
|
|
@@ -33,11 +35,13 @@ const CACHED_PATHS = new Set(APP_ASSETS.map((asset) => new URL(asset, self.locat
|
|
|
33
35
|
const VERSIONED_CACHE_PATHS = new Set([
|
|
34
36
|
"/app.js",
|
|
35
37
|
"/app.css",
|
|
38
|
+
"/i18n.js",
|
|
36
39
|
"/remote-pairing/api-router.js",
|
|
37
40
|
]);
|
|
38
41
|
const NETWORK_FIRST_PATHS = new Set([
|
|
39
42
|
"/app.js",
|
|
40
43
|
"/app.css",
|
|
44
|
+
"/i18n.js",
|
|
41
45
|
"/remote-pairing/api-router.js",
|
|
42
46
|
]);
|
|
43
47
|
const APP_NAVIGATION_NETWORK_TIMEOUT_MS = 1800;
|