ethagent 2.4.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +7 -4
  2. package/package.json +2 -1
  3. package/src/app/FirstRun.tsx +155 -15
  4. package/src/app/FirstRunTimeline.tsx +4 -0
  5. package/src/app/input/AppInputProvider.tsx +19 -0
  6. package/src/app/input/appInputParser.ts +19 -4
  7. package/src/chat/ChatBottomPane.tsx +3 -1
  8. package/src/chat/ChatScreen.tsx +7 -1
  9. package/src/chat/ConversationStack.tsx +25 -19
  10. package/src/chat/MessageList.tsx +194 -53
  11. package/src/chat/chatSessionState.ts +1 -1
  12. package/src/chat/chatTurnOrchestrator.ts +59 -0
  13. package/src/chat/input/ChatInput.tsx +3 -0
  14. package/src/chat/input/textCursor.ts +13 -3
  15. package/src/chat/transcript/TranscriptView.tsx +7 -5
  16. package/src/chat/transcript/transcriptViewport.ts +88 -17
  17. package/src/chat/views/PermissionPrompt.tsx +26 -26
  18. package/src/chat/views/PermissionsView.tsx +18 -12
  19. package/src/chat/views/RewindView.tsx +3 -1
  20. package/src/cli/ResetConfirmView.tsx +24 -9
  21. package/src/identity/continuity/editor.ts +27 -2
  22. package/src/identity/continuity/envelope.ts +134 -9
  23. package/src/identity/continuity/publicSkills.ts +54 -1
  24. package/src/identity/continuity/skills/frontmatter.ts +183 -0
  25. package/src/identity/continuity/skills/loadSkills.ts +609 -0
  26. package/src/identity/continuity/skills/publicSkillsSync.ts +32 -0
  27. package/src/identity/continuity/skills/scaffold.ts +52 -0
  28. package/src/identity/continuity/skills/types.ts +30 -0
  29. package/src/identity/continuity/storage/defaults.ts +28 -47
  30. package/src/identity/continuity/storage/files.ts +1 -0
  31. package/src/identity/continuity/storage/paths.ts +1 -0
  32. package/src/identity/continuity/storage/scaffold.ts +25 -23
  33. package/src/identity/continuity/storage/status.ts +34 -5
  34. package/src/identity/continuity/storage/types.ts +3 -2
  35. package/src/identity/continuity/storage.ts +3 -0
  36. package/src/identity/hub/OperationalRoutes.tsx +79 -5
  37. package/src/identity/hub/Routes.tsx +5 -3
  38. package/src/identity/hub/continuity/ContinuityDashboardScreen.tsx +7 -73
  39. package/src/identity/hub/continuity/RecoveryConfirmScreen.tsx +6 -6
  40. package/src/identity/hub/continuity/SavePromptScreen.tsx +1 -2
  41. package/src/identity/hub/continuity/effects.ts +36 -5
  42. package/src/identity/hub/continuity/skills/DeleteSkillConfirmScreen.tsx +112 -0
  43. package/src/identity/hub/continuity/skills/NewSkillScreen.tsx +57 -0
  44. package/src/identity/hub/continuity/skills/NewSkillVisibilityScreen.tsx +52 -0
  45. package/src/identity/hub/continuity/skills/SkillActionsScreen.tsx +151 -0
  46. package/src/identity/hub/continuity/skills/SkillsTreeScreen.tsx +181 -0
  47. package/src/identity/hub/continuity/snapshot.ts +3 -0
  48. package/src/identity/hub/continuity/state.ts +9 -8
  49. package/src/identity/hub/continuity/vault.ts +42 -10
  50. package/src/identity/hub/create/CreateFlow.tsx +1 -1
  51. package/src/identity/hub/custody/CustodyEditFlow.tsx +3 -3
  52. package/src/identity/hub/custody/routes.tsx +1 -1
  53. package/src/identity/hub/ens/EnsEditAdvancedScreens.tsx +0 -1
  54. package/src/identity/hub/ens/EnsEditMaintenanceScreens.tsx +0 -1
  55. package/src/identity/hub/identityHubReducer.ts +15 -0
  56. package/src/identity/hub/profile/EditProfileFlow.tsx +5 -5
  57. package/src/identity/hub/profile/effects.ts +16 -3
  58. package/src/identity/hub/restore/RestoreFlow.tsx +43 -6
  59. package/src/identity/hub/restore/apply.ts +12 -1
  60. package/src/identity/hub/restore/recovery.ts +14 -4
  61. package/src/identity/hub/restore/resolve.ts +1 -1
  62. package/src/identity/hub/restore/useRestoreEffects.ts +4 -6
  63. package/src/identity/hub/shared/components/DetailsScreen.tsx +4 -1
  64. package/src/identity/hub/shared/components/IdentitySummary.tsx +118 -54
  65. package/src/identity/hub/shared/components/MenuScreen.tsx +21 -18
  66. package/src/identity/hub/shared/components/UnlinkedIdentityScreen.tsx +4 -4
  67. package/src/identity/hub/shared/components/menuFlagsFromReconciliation.ts +8 -12
  68. package/src/identity/hub/shared/effects/sync.ts +16 -3
  69. package/src/identity/hub/shared/model/copy.ts +2 -4
  70. package/src/identity/hub/transfer/effects.ts +15 -2
  71. package/src/identity/hub/useIdentityHubContinuity.ts +145 -23
  72. package/src/identity/hub/useIdentityHubController.ts +5 -1
  73. package/src/identity/hub/useIdentityHubSideEffects.ts +2 -4
  74. package/src/identity/wallet/page/copy.ts +43 -43
  75. package/src/mcp/manager.ts +1 -1
  76. package/src/models/ModelPicker.tsx +89 -84
  77. package/src/models/llamacpp.ts +160 -11
  78. package/src/models/llamacppPreflight.ts +1 -16
  79. package/src/models/modelPickerOptions.ts +45 -37
  80. package/src/providers/contracts.ts +1 -0
  81. package/src/providers/openai-chat.ts +50 -9
  82. package/src/providers/openai-responses.ts +19 -4
  83. package/src/runtime/toolExecution.ts +4 -3
  84. package/src/runtime/turn.ts +61 -30
  85. package/src/tools/changeDirectoryTool.ts +1 -1
  86. package/src/tools/contracts.ts +10 -0
  87. package/src/tools/deleteFileTool.ts +1 -1
  88. package/src/tools/editTool.ts +1 -1
  89. package/src/tools/listDirectoryTool.ts +1 -1
  90. package/src/tools/listSkillFilesTool.ts +77 -0
  91. package/src/tools/listSkillsTool.ts +68 -0
  92. package/src/tools/mcpResourceTools.ts +2 -2
  93. package/src/tools/privateContinuityReadTool.ts +1 -1
  94. package/src/tools/readSkillTool.ts +107 -0
  95. package/src/tools/readTool.ts +1 -1
  96. package/src/tools/registry.ts +6 -0
  97. package/src/tools/writeFileTool.ts +22 -2
  98. package/src/ui/Spinner.tsx +1 -1
  99. package/src/identity/continuity/localBackup.ts +0 -249
  100. package/src/identity/continuity/zipWriter.ts +0 -95
  101. package/src/identity/hub/continuity/index.ts +0 -7
  102. package/src/identity/hub/ens/index.ts +0 -11
  103. package/src/identity/hub/restore/index.ts +0 -22
@@ -17,19 +17,19 @@ export interface FlowCopy {
17
17
  }
18
18
 
19
19
  export const FLOW_COPY: Record<string, FlowCopy> = {
20
- account: { accent: "sign", tabTitle: "Connect Wallet", label: "Wallet Request", title: "Connect Wallet", detail: null },
20
+ account: { accent: "sign", tabTitle: "Connect Wallet", label: "Connection Request", title: "Connect Wallet", detail: null },
21
21
  sign: { accent: "sign", tabTitle: "Sign Message", label: "Signature Request", title: "Sign Message", detail: "message" },
22
- "sign-transaction": { accent: "transaction", tabTitle: "Sign And Save", label: "Identity Signature", title: "Sign And Save", detail: "message" },
23
- transaction: { accent: "transaction", tabTitle: "Submit Transaction", label: "Transaction Request", title: "Submit Transaction", detail: "registry" },
22
+ "sign-transaction": { accent: "transaction", tabTitle: "Sign Snapshot", label: "Snapshot Signature", title: "Sign Snapshot", detail: "message" },
23
+ transaction: { accent: "transaction", tabTitle: "Submit Transaction", label: "Onchain Transaction", title: "Submit Transaction", detail: "registry" },
24
24
  };
25
25
 
26
26
  export const TRANSACTION_TITLES: Record<string, string> = {
27
27
  "register-agent": "Mint Agent Token",
28
28
  "create-agent": "Create Agent",
29
- "update-ens-records": "Use ENS Owner Wallet",
30
- "clear-ens-records": "Use ENS Owner Wallet",
31
- "create-simple-ens-subdomain": "Use Connected Wallet",
32
- "set-simple-ens-records": "Use Connected Wallet",
29
+ "update-ens-records": "Submit With ENS Controller Wallet",
30
+ "clear-ens-records": "Submit With ENS Controller Wallet",
31
+ "create-simple-ens-subdomain": "Submit With Connected Wallet",
32
+ "set-simple-ens-records": "Submit With Connected Wallet",
33
33
  "create-agent-ens-subdomain": "Owner Wallet Required",
34
34
  "set-agent-ens-records": "Owner Wallet Required",
35
35
  "publish-transfer-snapshot": "Switch Back to Sender Wallet",
@@ -48,7 +48,7 @@ export const STATE_TITLES = {
48
48
  preparingTransaction: "Preparing Transaction",
49
49
  approveTransaction: "Review Transaction",
50
50
  error: "Wallet Error",
51
- default: "Wallet Request",
51
+ default: "Wallet Action",
52
52
  };
53
53
 
54
54
  export interface SubCopy { text: string; hint: string; }
@@ -64,14 +64,14 @@ export interface PurposeCopyEntry {
64
64
  export const PURPOSE_COPY: Record<string, PurposeCopyEntry> = {
65
65
  "connect-operator-wallet": {
66
66
  flowTitle: "Connect Wallet",
67
- account: { text: "Connect Wallet", hint: "Reads your operator wallet address so the agent ENS subdomain can resolve to it. No signature or transaction." },
67
+ account: { text: "Connect Wallet", hint: "Reads the operator wallet address for the agent ENS records. No signature or transaction." },
68
68
  prepare: { text: "Reading Operator Wallet...", hint: "Return to the terminal." },
69
69
  },
70
70
  "create-agent": {
71
71
  flowTitle: "Create Agent",
72
72
  sign: { text: "Sign With Owner Wallet", hint: "Creates encrypted recovery access. No token approval." },
73
73
  prepare: { text: "Saving Snapshot...", hint: "Keep this page open." },
74
- transaction: { text: "Use Owner Wallet", hint: "Submits one onchain transaction that mints a new ERC-8004 agent token to this wallet." },
74
+ transaction: { text: "Submit With Owner Wallet", hint: "Submits one onchain transaction that mints a new ERC-8004 agent token to this wallet." },
75
75
  },
76
76
  "restore-owner-wallet": {
77
77
  flowTitle: "Owner Wallet Required",
@@ -87,91 +87,91 @@ export const PURPOSE_COPY: Record<string, PurposeCopyEntry> = {
87
87
  flowTitle: "Owner Wallet Required",
88
88
  sign: { text: "Sign With Owner Wallet", hint: "Encrypts local files before publishing. Owner wallet is required because this update changes ownership-protected fields." },
89
89
  prepare: { text: "Saving Snapshot...", hint: "Keep this page open." },
90
- transaction: { text: "Use Owner Wallet", hint: "Publishes the updated snapshot to the ERC-8004 token URI." },
90
+ transaction: { text: "Submit With Owner Wallet", hint: "Publishes the updated snapshot to the ERC-8004 token URI." },
91
91
  },
92
92
  "update-snapshot-operator": {
93
93
  flowTitle: "Operator Wallet Save",
94
94
  sign: { text: "Sign With Operator Wallet", hint: "Signs the encrypted snapshot for restore access." },
95
95
  prepare: { text: "Saving Snapshot...", hint: "Keep this page open." },
96
- transaction: { text: "Use Operator Wallet", hint: "Rotates the ERC-8004 token URI through the Vault." },
96
+ transaction: { text: "Submit With Operator Wallet", hint: "Publishes the latest agent snapshot through the Vault." },
97
97
  },
98
98
  "update-snapshot-connected": {
99
99
  flowTitle: "Save Snapshot",
100
100
  sign: { text: "Sign With Connected Wallet", hint: "Encrypts local files before publishing. Single-wallet setup; no token approval." },
101
101
  prepare: { text: "Saving Snapshot...", hint: "Keep this page open." },
102
- transaction: { text: "Use Connected Wallet", hint: "Publishes the updated snapshot to the ERC-8004 token URI." },
102
+ transaction: { text: "Submit With Connected Wallet", hint: "Publishes the updated snapshot to the ERC-8004 token URI." },
103
103
  },
104
104
  "update-ens": {
105
105
  flowTitle: "Update ENS in Agent Snapshot",
106
106
  sign: { text: "Sign With Owner Wallet", hint: "Saves a new agent snapshot with this ENS name. No onchain ENS records change in this signature." },
107
107
  prepare: { text: "Saving Snapshot...", hint: "Keep this page open." },
108
- transaction: { text: "Use Owner Wallet", hint: "Publishes the updated ERC-8004 token URI pointing to the new snapshot." },
108
+ transaction: { text: "Submit With Owner Wallet", hint: "Publishes the updated ERC-8004 token URI pointing to the new snapshot." },
109
109
  },
110
110
  "clear-ens": {
111
- flowTitle: "Clear ENS from Agent Snapshot",
111
+ flowTitle: "Unlink ENS from Agent",
112
112
  sign: { text: "Sign With Owner Wallet", hint: "Saves a new agent snapshot with no ENS name. No onchain ENS records change in this signature." },
113
113
  prepare: { text: "Saving Snapshot...", hint: "Keep this page open." },
114
- transaction: { text: "Use Owner Wallet", hint: "Publishes the updated ERC-8004 token URI pointing to the new snapshot." },
114
+ transaction: { text: "Submit With Owner Wallet", hint: "Publishes the updated ERC-8004 token URI pointing to the new snapshot." },
115
115
  },
116
116
  "update-profile-owner": {
117
117
  flowTitle: "Owner Wallet Required",
118
118
  sign: { text: "Sign With Owner Wallet", hint: "Saves public profile changes. Owner wallet is required because this update changes ownership-protected fields." },
119
119
  prepare: { text: "Preparing Profile Update...", hint: "Keep this page open." },
120
- transaction: { text: "Use Owner Wallet", hint: "Publishes the updated public profile to the ERC-8004 token URI." },
120
+ transaction: { text: "Submit With Owner Wallet", hint: "Publishes the updated public profile to the ERC-8004 token URI." },
121
121
  },
122
122
  "update-profile-operator": {
123
123
  flowTitle: "Operator Wallet Profile Update",
124
124
  sign: { text: "Sign With Operator Wallet", hint: "Signs the encrypted snapshot for restore access." },
125
125
  prepare: { text: "Preparing Profile Update...", hint: "Keep this page open." },
126
- transaction: { text: "Use Operator Wallet", hint: "Rotates the agent URI through the Vault. No ENS write." },
126
+ transaction: { text: "Submit With Operator Wallet", hint: "Publishes the updated agent profile through the Vault. No ENS write." },
127
127
  },
128
128
  "update-profile-connected": {
129
129
  flowTitle: "Update Public Profile",
130
130
  sign: { text: "Sign With Connected Wallet", hint: "Saves public profile changes. Single-wallet setup; no token approval." },
131
131
  prepare: { text: "Preparing Profile Update...", hint: "Keep this page open." },
132
- transaction: { text: "Use Connected Wallet", hint: "Publishes the updated public profile to the ERC-8004 token URI." },
132
+ transaction: { text: "Submit With Connected Wallet", hint: "Publishes the updated public profile to the ERC-8004 token URI." },
133
133
  },
134
134
  "update-ens-records": {
135
135
  flowTitle: "Update ENS Records",
136
- sign: { text: "Sign With ENS Owner Wallet", hint: "Authorizes ENS record changes. No token approval." },
136
+ sign: { text: "Sign With ENS Controller Wallet", hint: "Authorizes ENS record changes. No token approval." },
137
137
  prepare: { text: "Preparing ENS Transaction...", hint: "Keep this page open." },
138
- transaction: { text: "Use ENS Owner Wallet", hint: "Submit one Ethereum Mainnet ENS record transaction." },
138
+ transaction: { text: "Submit With ENS Controller Wallet", hint: "Submit one Ethereum Mainnet ENS record transaction." },
139
139
  },
140
140
  "clear-ens-records": {
141
- flowTitle: "Unlink ENS",
142
- sign: { text: "Sign With ENS Owner Wallet", hint: "Authorizes clearing ethagent ENS text records. No token approval." },
141
+ flowTitle: "Clear ENS Records",
142
+ sign: { text: "Sign With ENS Controller Wallet", hint: "Authorizes clearing ethagent ENS text records. No token approval." },
143
143
  prepare: { text: "Preparing ENS Transaction...", hint: "Keep this page open." },
144
- transaction: { text: "Use ENS Owner Wallet", hint: "Submit one Ethereum Mainnet transaction to clear ethagent ENS text records." },
144
+ transaction: { text: "Submit With ENS Controller Wallet", hint: "Submit one Ethereum Mainnet transaction to clear ethagent ENS text records." },
145
145
  },
146
146
  "create-simple-ens-subdomain": {
147
147
  flowTitle: "Review ENS Subdomain Creation",
148
148
  sign: { text: "Sign With Connected Wallet", hint: "Connected wallet owns the ENS root and is creating the agent subdomain." },
149
149
  prepare: { text: "Preparing ENS Transaction...", hint: "Keep this page open." },
150
- transaction: { text: "Use Connected Wallet", hint: "Creates the agent ENS subdomain on Ethereum Mainnet. Must come from the parent name's owner." },
150
+ transaction: { text: "Submit With Connected Wallet", hint: "Creates the agent ENS subdomain on Ethereum Mainnet. Must come from the parent name's owner." },
151
151
  },
152
152
  "set-simple-ens-records": {
153
153
  flowTitle: "Apply ENS Records",
154
154
  sign: { text: "Sign With Connected Wallet", hint: "Connected wallet writes the agent ENS records." },
155
155
  prepare: { text: "Preparing ENS Transaction...", hint: "Keep this page open." },
156
- transaction: { text: "Use Connected Wallet", hint: "Writes the agent ENS text records onchain. Must come from the name's controller." },
156
+ transaction: { text: "Submit With Connected Wallet", hint: "Writes the agent ENS text records onchain. Must come from the name's controller." },
157
157
  },
158
158
  "create-agent-ens-subdomain": {
159
159
  flowTitle: "Review Agent ENS Subdomain",
160
160
  sign: { text: "Sign With Owner Wallet", hint: "Owner wallet controls the ENS root that the agent subdomain hangs off." },
161
161
  prepare: { text: "Preparing ENS Transaction...", hint: "Keep this page open." },
162
- transaction: { text: "Use Owner Wallet", hint: "Creates the agent ENS subdomain on Ethereum Mainnet. Must come from the parent name's owner wallet." },
162
+ transaction: { text: "Submit With Owner Wallet", hint: "Creates the agent ENS subdomain on Ethereum Mainnet. Must come from the parent name's owner wallet." },
163
163
  },
164
164
  "set-agent-ens-records": {
165
165
  flowTitle: "Apply Agent ENS Records",
166
166
  sign: { text: "Sign With Owner Wallet", hint: "Owner wallet writes the agent ENS records pointing at the operator wallet." },
167
167
  prepare: { text: "Preparing ENS Transaction...", hint: "Keep this page open." },
168
- transaction: { text: "Use Owner Wallet", hint: "Writes the agent ENS text and address records onchain. Must come from the name's controller." },
168
+ transaction: { text: "Submit With Owner Wallet", hint: "Writes the agent ENS text and address records onchain. Must come from the name's controller." },
169
169
  },
170
170
  "update-operators": {
171
171
  flowTitle: "Owner Wallet Required",
172
172
  sign: { text: "Sign With Owner Wallet", hint: "Authorizes the new operator wallet access list. No token approval." },
173
173
  prepare: { text: "Preparing Operator Wallets...", hint: "Keep this page open." },
174
- transaction: { text: "Use Owner Wallet", hint: "Publishes the updated operator wallet access list onchain." },
174
+ transaction: { text: "Submit With Owner Wallet", hint: "Publishes the updated operator wallet access list onchain." },
175
175
  },
176
176
  "operator-proof": {
177
177
  flowTitle: "Operator Wallet Required",
@@ -181,7 +181,7 @@ export const PURPOSE_COPY: Record<string, PurposeCopyEntry> = {
181
181
  "sync-operator-vault": {
182
182
  flowTitle: "Owner Wallet Required",
183
183
  prepare: { text: "Preparing Vault Operator Update...", hint: "Keep this page open." },
184
- transaction: { text: "Use Owner Wallet", hint: "Updates the Vault metadata-operator list so authorized operator wallets can rotate the agent URI." },
184
+ transaction: { text: "Submit With Owner Wallet", hint: "Updates the Vault metadata-operator list so authorized operator wallets can rotate the agent URI." },
185
185
  },
186
186
  "refetch-snapshot": {
187
187
  flowTitle: "Refetch Latest Snapshot",
@@ -189,7 +189,7 @@ export const PURPOSE_COPY: Record<string, PurposeCopyEntry> = {
189
189
  prepare: { text: "Verifying Wallet...", hint: "Return to the terminal." },
190
190
  },
191
191
  "prepare-transfer-sender": {
192
- flowTitle: "Use Sender Wallet",
192
+ flowTitle: "Submit With Sender Wallet",
193
193
  sign: { text: "Sign With Sender Wallet", hint: "Creates sender restore access. No token approval." },
194
194
  prepare: { text: "Verifying Sender Wallet...", hint: "Return to the terminal." },
195
195
  },
@@ -201,47 +201,47 @@ export const PURPOSE_COPY: Record<string, PurposeCopyEntry> = {
201
201
  "publish-transfer-snapshot": {
202
202
  flowTitle: "Switch Back to Sender Wallet",
203
203
  prepare: { text: "Preparing Token Update...", hint: "Keep this page open." },
204
- transaction: { text: "Use Sender Wallet", hint: "Submits one transaction to publish the transfer snapshot to the ERC-8004 token URI." },
204
+ transaction: { text: "Submit With Sender Wallet", hint: "Submits one transaction to publish the transfer snapshot to the ERC-8004 token URI." },
205
205
  },
206
206
  "deploy-agent-vault": {
207
207
  flowTitle: "Deploy Vault",
208
208
  prepare: { text: "Preparing Vault Deploy...", hint: "Keep this page open." },
209
- transaction: { text: "Use Owner Wallet", hint: "Deploys the Vault contract onchain. One-time setup per agent." },
209
+ transaction: { text: "Submit With Owner Wallet", hint: "Deploys the Vault contract onchain. One-time setup per agent." },
210
210
  errorContext: "While submitting the Vault deploy",
211
211
  },
212
212
  "deposit-agent-vault": {
213
213
  flowTitle: "Deposit Token Into Vault",
214
214
  prepare: { text: "Preparing Vault Deposit...", hint: "Keep this page open." },
215
- transaction: { text: "Use Owner Wallet", hint: "Sends the agent token to the Vault so the vault can save updates on your behalf." },
215
+ transaction: { text: "Submit With Owner Wallet", hint: "Sends the agent token to the Vault so the vault can save updates on your behalf." },
216
216
  errorContext: "While submitting the Vault deposit",
217
217
  },
218
218
  "unwrap-agent-vault": {
219
219
  flowTitle: "Unwrap Token From Vault",
220
220
  prepare: { text: "Preparing Vault Unwrap...", hint: "Keep this page open." },
221
- transaction: { text: "Use Owner Wallet", hint: "Returns the agent token from the Vault to your owner wallet." },
221
+ transaction: { text: "Submit With Owner Wallet", hint: "Returns the agent token from the Vault to your owner wallet." },
222
222
  },
223
223
  "rotate-agent-uri-vault-owner": {
224
224
  flowTitle: "Save Update Through Vault",
225
- sign: { text: "Sign With Owner Wallet", hint: "Approves the new snapshot before saving onchain. No token approval." },
225
+ sign: { text: "Sign With Owner Wallet", hint: "Signs the new snapshot before saving onchain. No token approval." },
226
226
  prepare: { text: "Preparing Update...", hint: "Keep this page open." },
227
- transaction: { text: "Use Owner Wallet", hint: "Saves your update onchain through the Vault. The vault holds your token, so updates go through it." },
227
+ transaction: { text: "Submit With Owner Wallet", hint: "Saves your update onchain through the Vault. Your token is locked in its dedicated Vault, so updates go through it." },
228
228
  },
229
229
  "rotate-agent-uri-vault-operator": {
230
230
  flowTitle: "Save Update Through Vault",
231
- sign: { text: "Sign With Operator Wallet", hint: "Approves the new snapshot before saving onchain. No token approval." },
231
+ sign: { text: "Sign With Operator Wallet", hint: "Signs the new snapshot before saving onchain. No token approval." },
232
232
  prepare: { text: "Preparing Update...", hint: "Keep this page open." },
233
- transaction: { text: "Use Operator Wallet", hint: "Rotates the ERC-8004 token URI through the Vault. The vault holds your token, so the operator wallet calls the vault to publish." },
233
+ transaction: { text: "Submit With Operator Wallet", hint: "Publishes the latest agent snapshot through the Vault. Your token is locked in its dedicated Vault, so the operator wallet calls the vault to publish." },
234
234
  },
235
235
  "withdraw-vault": {
236
236
  flowTitle: "Withdraw Token From Vault",
237
237
  prepare: { text: "Preparing Token Withdrawal...", hint: "Keep this page open." },
238
- transaction: { text: "Use Owner Wallet", hint: "Temporarily returns the agent token from the vault to your owner wallet. Vault stays configured so you can redeposit later." },
238
+ transaction: { text: "Submit With Owner Wallet", hint: "Temporarily returns the agent token from the vault to your owner wallet. Vault stays configured so you can redeposit later." },
239
239
  errorContext: "While submitting the Vault withdraw",
240
240
  },
241
241
  "delete-ens-subdomain": {
242
242
  flowTitle: "Delete ENS Subdomain",
243
243
  prepare: { text: "Preparing Subdomain Deletion...", hint: "Keep this page open." },
244
- transaction: { text: "Use Owner Wallet", hint: "Clears the subdomain entry in the parent ENS name. After this, the label is freed for reuse." },
244
+ transaction: { text: "Submit With Owner Wallet", hint: "Clears the subdomain entry in the parent ENS name. After this, the label is freed for reuse." },
245
245
  errorContext: "While deleting the ENS subdomain",
246
246
  },
247
247
  };
@@ -285,13 +285,13 @@ export function ensTokenChainHint(): string {
285
285
  }
286
286
  export function transactionCopy(): SubCopy {
287
287
  const txCopy = requirePurposeSubCopy("transaction");
288
- const expected = config.expectedAccount ? " Expected Wallet: " + shortAddr(config.expectedAccount) + "." : "";
288
+ const expected = config.expectedAccount ? " Required wallet:" + shortAddr(config.expectedAccount) + "." : "";
289
289
  const text = config.expectedAccount ? txCopy.text + " (" + shortAddr(config.expectedAccount) + ")" : txCopy.text;
290
290
  return { text, hint: txCopy.hint + expected + ensTokenChainHint() };
291
291
  }
292
292
  export function signCopy(): SubCopy {
293
293
  const sigCopy = requirePurposeSubCopy("sign");
294
- const expected = config.expectedAccount ? " Expected Wallet: " + shortAddr(config.expectedAccount) + "." : "";
294
+ const expected = config.expectedAccount ? " Required wallet:" + shortAddr(config.expectedAccount) + "." : "";
295
295
  const text = config.expectedAccount ? sigCopy.text + " (" + shortAddr(config.expectedAccount) + ")" : sigCopy.text;
296
296
  return { text, hint: sigCopy.hint + expected + ensTokenChainHint() };
297
297
  }
@@ -441,7 +441,7 @@ export class McpManager implements McpRuntime {
441
441
  async buildPermissionRequest() {
442
442
  return {
443
443
  kind: 'mcp',
444
- title: 'allow MCP tool?',
444
+ title: 'Allow MCP tool?',
445
445
  subtitle: `${connection.name} / ${tool.name}`,
446
446
  serverName: connection.name,
447
447
  normalizedServerName: connection.normalizedName,