@zktx.io/sui-mcp 0.7.0 → 0.8.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/README.md +89 -42
- package/dist/core/activity/localDataService.js +8 -21
- package/dist/core/activity/localDataValidation.js +22 -46
- package/dist/core/activity/sqliteAccountStore.js +46 -0
- package/dist/core/activity/sqliteActivityStore.js +65 -147
- package/dist/core/activity/sqliteActivityStoreSchema.js +44 -28
- package/dist/core/activity/sqliteActivityStoreTypes.js +9 -0
- package/dist/core/activity/transactionActivityService.js +2 -2
- package/dist/core/preferences/preferencesStore.js +2 -2
- package/dist/core/preferences/sqlitePreferencesRepository.js +10 -0
- package/dist/core/session/cardResult.js +41 -0
- package/dist/core/session/cardSession.js +1 -1
- package/dist/core/session/cardSessionStore.js +51 -19
- package/dist/core/session/chainAccounts.js +120 -0
- package/dist/core/session/sessionStore.js +4 -8
- package/dist/core/session/settingsFileStore.js +3 -30
- package/dist/core/session/settingsOperation.js +27 -19
- package/dist/core/session/settingsWorkflow.js +161 -87
- package/dist/core/session/sqliteCardStore.js +34 -14
- package/dist/core/session/sqliteSessionStore.js +5 -5
- package/dist/core/session/sqliteSettingsWorkflowStore.js +135 -41
- package/dist/core/session/sqliteTransactionRequest.js +18 -0
- package/dist/core/session/sqliteWalletConnectionOperation.js +13 -0
- package/dist/core/session/sqliteWalletWorkflowStore.js +569 -333
- package/dist/core/session/status.js +2 -2
- package/dist/core/session/wait.js +6 -11
- package/dist/core/session/walletConnection.js +71 -46
- package/dist/core/session/walletConnectionOperations.js +24 -0
- package/dist/core/session/walletRuntime.js +7 -13
- package/dist/core/session/walletWorkflow.js +248 -99
- package/dist/core/session/workflowState.js +104 -38
- package/dist/core/session/workflowView.js +92 -101
- package/dist/mcp/activeAccountResponse.js +3 -0
- package/dist/mcp/responseGuidance.js +7 -9
- package/dist/mcp/serverInfo.js +11 -10
- package/dist/mcp/toolErrors.js +5 -3
- package/dist/mcp/toolNames.js +1 -0
- package/dist/mcp/tools/action/prepareSuiActionReview.js +9 -16
- package/dist/mcp/tools/read/readToolHelpers.js +9 -7
- package/dist/mcp/tools/session/executionResultTools.js +2 -2
- package/dist/mcp/tools/session/shared.js +2 -2
- package/dist/mcp/tools/session/statusTools.js +12 -10
- package/dist/mcp/tools/session/walletConnectionTools.js +26 -14
- package/dist/mcp/tools/settings/index.js +7 -4
- package/dist/mcp-app/account.html +7 -7
- package/dist/mcp-app/chart.html +3 -3
- package/dist/mcp-app/connect.html +13 -13
- package/dist/mcp-app/disconnect.html +3637 -0
- package/dist/mcp-app/disconnect.notices.txt +1480 -0
- package/dist/mcp-app/receipt.html +393 -393
- package/dist/mcp-app/review.html +459 -459
- package/dist/mcp-app/settings.html +7 -7
- package/dist/mcp-ui/contracts.js +3 -1
- package/dist/mcp-ui/tools.js +4 -4
- package/dist/runtime/application.js +1 -1
- package/dist/runtime/localSettingsService.js +7 -4
- package/dist/runtime/runtimeTermination.js +3 -0
- package/dist/runtime/smokeMainnetRead.js +5 -4
- package/dist/runtime/walletConnectTransport.js +16 -16
- package/dist/runtime/walletSdkChildRuntime.js +29 -12
- package/dist/runtime/walletSdkIpc.js +5 -4
- package/dist/runtime/walletSdkProcess.js +24 -8
- package/docs/AGENT_BEHAVIOR.md +82 -54
- package/docs/LOCAL_DB_ARCHITECTURE.md +100 -70
- package/docs/MCP_SETUP.md +384 -347
- package/docs/MCP_TOOLS.md +292 -177
- package/docs/SDK_API.md +15 -6
- package/docs/TRANSACTION_ACTIVITY_LOG.md +4 -0
- package/docs/UTILITY_INDEX.md +9 -7
- package/docs/WALLET_CONNECTION.md +162 -167
- package/package.json +1 -1
package/docs/SDK_API.md
CHANGED
|
@@ -59,7 +59,7 @@ single serialized `CallToolResult` carrier validated with the pinned SDK
|
|
|
59
59
|
schema. Conflicting payloads or private metadata are rejected. Ordinary data
|
|
60
60
|
does not supply input permission, and saved resource links remain read-only.
|
|
61
61
|
|
|
62
|
-
`@modelcontextprotocol/ext-apps` is pinned to `2.0.3`, with the MCP client/core/server packages at `2.3.1` and Node transport at `2.1.1`. The server uses `registerAppTool`, `registerAppResource` and `getUiCapability`; the view uses `App` for host-mediated calls and teardown. Account, Receipt, Chart, Connect, Review and Settings are separate self-contained resources, so an account card does not load the PTB or chart renderer. Settings uses scoped app-only inputs for local actions and file transfer. The server keeps app-only permissions out of model content.
|
|
62
|
+
`@modelcontextprotocol/ext-apps` is pinned to `2.0.3`, with the MCP client/core/server packages at `2.3.1` and Node transport at `2.1.1`. The server uses `registerAppTool`, `registerAppResource` and `getUiCapability`; the view uses `App` for host-mediated calls and teardown. Account, Receipt, Chart, Connect, Disconnect, Review and Settings are separate self-contained resources, so an account card does not load the PTB or chart renderer. Settings uses scoped app-only inputs for local actions and file transfer. The server keeps app-only permissions out of model content.
|
|
63
63
|
|
|
64
64
|
Settings completes a selected upload's verification and restore preparation on
|
|
65
65
|
the backend. The card renders the stored `restoreCheck` result and collects one
|
|
@@ -71,6 +71,9 @@ needing a new check, a current confirmation and actual rejection. Definite
|
|
|
71
71
|
file/mainnet rejection is independent of local-data confirmation revision and
|
|
72
72
|
survives Back until explicit file selection changes. The View's current file-job
|
|
73
73
|
progress describes communication only; it cannot grant restoration authority.
|
|
74
|
+
An operation change that ends use of an upload records invalidation with the
|
|
75
|
+
stored effect/result. Physical cleanup follows without repeating that effect.
|
|
76
|
+
A valid file retained by Back remains eligible for another explicit check.
|
|
74
77
|
|
|
75
78
|
Download backup prepares one verified snapshot and calls `App.downloadFile`.
|
|
76
79
|
Only that function's exact method-not-found result selects local publication of
|
|
@@ -210,7 +213,10 @@ The pinned SDK accepts `number | bigint` quote inputs. Its high-level quote quer
|
|
|
210
213
|
The SDK child initializes pinned SignClient with its public `storage` injection,
|
|
211
214
|
private session persistence, silent SDK logging and telemetry disabled. It uses
|
|
212
215
|
`connect`, `session.getAll`, `session_update/session_delete/session_expire` events,
|
|
213
|
-
and `request` on chain `sui:mainnet`, method `sui_signTransaction`.
|
|
216
|
+
and `request` on chain `sui:mainnet`, method `sui_signTransaction`. Connection
|
|
217
|
+
requests send the saved mainnet chain set as optional namespaces. The pinned SDK
|
|
218
|
+
already treats required namespaces as optional; the product directly supplies
|
|
219
|
+
the intended request shape. Ethereum/Solana requests contain no financial methods.
|
|
214
220
|
Pinned `session_event` does not update approved namespaces itself: account/chain
|
|
215
221
|
selection events explicitly invalidate stored review/submission authority even
|
|
216
222
|
when the approved account set stays unchanged. Requests carry
|
|
@@ -238,10 +244,13 @@ not own restart. A new explicit Settings operation can supersede a startup
|
|
|
238
244
|
still pending; known failure and its first timestamp remain immutable.
|
|
239
245
|
Late callbacks cannot reopen old authority or submit another transaction.
|
|
240
246
|
|
|
241
|
-
Snapshots
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
247
|
+
Snapshots separate session lifecycle revisions from per-chain grant revisions.
|
|
248
|
+
Presence/status changes affect all grants; an identified chain event affects only
|
|
249
|
+
that chain. Normalized account/method/event scope excludes list order and display
|
|
250
|
+
metadata. Within each SDK run, revisions are monotonic across change-and-revert. Source inspection failure disables the service instead of becoming an
|
|
251
|
+
empty session list. `accountsChanged` and `chainChanged` invalidate their chain
|
|
252
|
+
even if namespace values are unchanged; unknown event scope invalidates the
|
|
253
|
+
connection. The IPC proof and pre/post-signing checks carry the Sui grant revision. The final pre-submission session check
|
|
245
254
|
runs after asynchronous digest/signature/network checks. Responses from another
|
|
246
255
|
SDK run cannot satisfy that check or restore submission authority.
|
|
247
256
|
Actual target-wallet acceptance of the serialization is an integration
|
|
@@ -10,6 +10,10 @@ Sui MCP stores two kinds of local activity evidence:
|
|
|
10
10
|
- User-requested bounded Sui activity facts that were looked up through GraphQL and matched a known local wallet.
|
|
11
11
|
|
|
12
12
|
It does not run a background indexer and does not claim complete wallet history.
|
|
13
|
+
Activity reads accept an explicit Sui account or use the saved read address.
|
|
14
|
+
If that address is absent or cleared, the caller supplies an explicit account;
|
|
15
|
+
no wallet connection is required for that read. These filters neither restore
|
|
16
|
+
read context nor change a Review's fixed transaction target.
|
|
13
17
|
|
|
14
18
|
## Stored By Default
|
|
15
19
|
|
package/docs/UTILITY_INDEX.md
CHANGED
|
@@ -64,9 +64,9 @@ is supplied; the actual mainnet checks remain enabled.
|
|
|
64
64
|
The command checks metadata, types, tests, builds, package contents and licenses,
|
|
65
65
|
then launches the installed package through stdio MCP with a new data directory
|
|
66
66
|
and an independent port. It reads the registered tools and resources, creates a
|
|
67
|
-
Settings card only in that temporary database, and checks the
|
|
67
|
+
Settings card only in that temporary database, and checks the internal
|
|
68
68
|
HTML resources, app-only tools, scoped status and retired-route rejection. A scoped test card verifies
|
|
69
|
-
that Connect rejects
|
|
69
|
+
that Connect rejects unsupported restart input and a model call does not start pairing. The check
|
|
70
70
|
verifies the isolated SDK retains exclusive storage ownership until shutdown. It waits
|
|
71
71
|
for process termination before removing its installation. A termination failure preserves the temporary files for cleanup
|
|
72
72
|
after the process stops. It does not pair, sign, submit, publish, or mutate the
|
|
@@ -123,7 +123,7 @@ npm run smoke:mainnet
|
|
|
123
123
|
|
|
124
124
|
DeepBook orderbook and raw-quantity quote reads use an internal mainnet SDK simulation sender placeholder, not a user's wallet. The display-amount quote path is covered by automated tests, not by this smoke script. Without the complete optional swap input group, the script does not run account-bound transaction-material computation or digest binding. See Optional account-bound review smoke for that explicit path; read-only success is not evidence that it ran.
|
|
125
125
|
|
|
126
|
-
Wallet and activity reads
|
|
126
|
+
Wallet and activity reads pass `SUI_MCP_SMOKE_ADDRESS` explicitly. All four live activity scan/summary calls require `accountSource: "explicit_filter"`. A temporary SQLite database stores known-account history for persistence and optional review computation, without creating a current wallet row or active read context. The script never creates a wallet connection, a review URL or an HTTP wallet result. Wallet approval is checked separately. This smoke script does not record raw GraphQL payloads, transaction bytes, signatures, raw transaction details, or compact transaction aggregates.
|
|
127
127
|
|
|
128
128
|
## Mainnet Read Smoke Notes
|
|
129
129
|
|
|
@@ -135,7 +135,7 @@ The smoke command calls:
|
|
|
135
135
|
- DeepBook orderbook;
|
|
136
136
|
- raw-quantity DeepBook quote;
|
|
137
137
|
- `read_scan_sui_account_activity` for `SUI_MCP_SMOKE_ADDRESS` with limit 5;
|
|
138
|
-
- `read_summarize_sui_activity_scan`
|
|
138
|
+
- `read_summarize_sui_activity_scan` with the explicit `SUI_MCP_SMOKE_ADDRESS` and limit 5;
|
|
139
139
|
- `read_inspect_sui_transaction` when `SUI_MCP_SMOKE_INSPECT_DIGEST` is set;
|
|
140
140
|
- sent-function activity tools when `SUI_MCP_SMOKE_FUNCTION_TARGET` is set to a full `package::module::function`.
|
|
141
141
|
|
|
@@ -151,7 +151,8 @@ If `SUI_MCP_SMOKE_INSPECT_RANDOM_LATEST=true` is set and no digest is provided,
|
|
|
151
151
|
|
|
152
152
|
The default read path does not call display-amount quote or DeepBook account
|
|
153
153
|
inventory. Account-bound review computation is separate within the same utility
|
|
154
|
-
and runs only for the complete explicit swap input group.
|
|
154
|
+
and runs only for the complete explicit swap input group. That optional path
|
|
155
|
+
uses the known-account history already prepared in the temporary database; it does not create a live connection, card permission or signing authority. Use its recorded
|
|
155
156
|
status and evidence stages rather than treating read-path success as material
|
|
156
157
|
verification or wallet acceptance.
|
|
157
158
|
|
|
@@ -273,6 +274,7 @@ A partially configured group is an error. `SUI_MCP_SMOKE_SWAP_MAX_SLIPPAGE_BPS`
|
|
|
273
274
|
existing explicit override. The script uses the same runtime review composition,
|
|
274
275
|
material store and evidence validation as the product, and records whether
|
|
275
276
|
transaction review data was emitted. This can involve mainnet simulation but
|
|
276
|
-
never wallet pairing, signing or submission. The temporary
|
|
277
|
-
|
|
277
|
+
never wallet pairing, signing or submission. The temporary database supplies
|
|
278
|
+
known-account history for that explicit address; it does not create a current
|
|
279
|
+
wallet connection, saved read context or proof of ownership. Without the complete
|
|
278
280
|
optional group, the result records that review computation was not run.
|
|
@@ -1,173 +1,163 @@
|
|
|
1
1
|
# Wallet Connection
|
|
2
2
|
|
|
3
|
-
WalletConnect provides approved
|
|
4
|
-
individual wallet requests. It is not login, proof of address ownership, custody, or standing permission to transact. Frontend behavior is defined in
|
|
3
|
+
WalletConnect provides approved mainnet account context and a transport for
|
|
4
|
+
individual Sui wallet requests. It is not login, proof of address ownership, custody, or standing permission to transact. Frontend behavior is defined in
|
|
5
5
|
[Frontend Policy](https://github.com/zktx-mcp/sui-mcp/blob/main/docs/FRONTEND_POLICY.md)
|
|
6
6
|
in the source repository; tools are in [MCP Tools](MCP_TOOLS.md).
|
|
7
7
|
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
that
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
8
|
+
## One connection, fixed addresses
|
|
9
|
+
|
|
10
|
+
Settings → Wallet networks specifies the networks requested on the next connection.
|
|
11
|
+
The default is Sui. Supported address networks are Sui (`sui:mainnet`), Ethereum
|
|
12
|
+
(`eip155:1`) and Solana (`solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`), all mainnet.
|
|
13
|
+
Only Sui supports asset reads, transaction review, signing and submission. Address
|
|
14
|
+
support on another chain is not bridge execution or other-chain signing.
|
|
15
|
+
|
|
16
|
+
There is one current product connection. It supplies at most one fixed address
|
|
17
|
+
per chain. Change the wallet, account, address or approved network scope by
|
|
18
|
+
disconnecting, waiting for confirmed removal and connecting again. Historical
|
|
19
|
+
connection records are retained for existing transaction references; they are
|
|
20
|
+
not simultaneous connections or account choices. Connect contains no chain or
|
|
21
|
+
account selectors and offers no additional-connection action.
|
|
22
|
+
Connect and Disconnect are separate one-purpose cards. `session_open_wallet_connection_card`
|
|
23
|
+
opens a connection request with no intent selector. Its initial authenticated UI
|
|
24
|
+
confirmation admits one pairing request. `session_open_wallet_disconnection_card`
|
|
25
|
+
opens a confirmation for the exact current session. Ordinary calls never apply
|
|
26
|
+
these effects. If there is no current session to disconnect, the gateway returns
|
|
27
|
+
`no_session_to_disconnect` without creating a card or wallet operation.
|
|
28
|
+
Disconnection does not revoke onchain permissions.
|
|
29
|
+
|
|
30
|
+
Every ended Connect or Disconnect card contains its recorded result, time,
|
|
31
|
+
wallet name when available, and network approval results. It contains no addresses,
|
|
32
|
+
QR code or further operation controls. The result does not claim that a past
|
|
33
|
+
approval is still a current connection. Read current fixed addresses through
|
|
34
|
+
`session_get_interaction_status`; saved history and transaction targets keep their
|
|
35
|
+
own exact addresses. Changing current state never rewrites an ended card.
|
|
36
|
+
|
|
37
|
+
The request uses saved networks as optional namespaces. Sui requests
|
|
38
|
+
`sui_signTransaction`, `accountsChanged` and `chainChanged`; Ethereum and Solana
|
|
39
|
+
request addresses with no financial methods. An empty saved network set disables
|
|
40
|
+
new requests. Changing Settings affects only future connections, not a request
|
|
41
|
+
already admitted or an approved connection. Saving a changed scope ends unsent
|
|
42
|
+
Connect cards that captured different networks; they never reopen when the setting
|
|
43
|
+
returns to its earlier value.
|
|
44
|
+
|
|
45
|
+
Only requested, valid returned accounts are used. Each requested chain records
|
|
46
|
+
one immutable result: a bound address, not approved, multiple accounts, or invalid
|
|
47
|
+
response. One valid distinct address binds automatically. Multiple distinct
|
|
48
|
+
addresses make only that chain unavailable; none is chosen silently. Other valid
|
|
49
|
+
returned chains remain usable. A later grant update cannot replace a fixed
|
|
50
|
+
address or fill a missing result. To obtain a different result, reconnect.
|
|
51
|
+
An omitted chain is not proof of permanent wallet non-support.
|
|
52
|
+
|
|
53
|
+
Each card admits at most one fixed operation and keeps one final result. SDK
|
|
54
|
+
settlement is a separate current fact; it does not reopen or rewrite that result.
|
|
55
|
+
Use the [Session Tools API](MCP_TOOLS.md#session-tools) for exact card/operation
|
|
56
|
+
reads and bounded waits. Opening a model-facing gateway grants no wallet effect;
|
|
57
|
+
the authenticated UI initiates the permitted operation. Frame recreation never
|
|
58
|
+
repeats pairing. QR credentials remain private UI metadata.
|
|
59
|
+
|
|
60
|
+
Cancel or Stop permanently ends that card's input and hides its QR. SDK cleanup
|
|
61
|
+
continues independently; late approval cannot create address or signing authority.
|
|
62
|
+
Cleanup completion never reopens the card or starts a new request. A new user
|
|
63
|
+
request needs a new card. A timeout, SDK exit or late response is not user
|
|
64
|
+
cancellation. Failed disconnection does not prove remote removal; a retained
|
|
65
|
+
session can still be explicitly disconnected from a new exact-target Disconnect card.
|
|
66
|
+
Recovery uses current session evidence separately from that recorded failure.
|
|
67
|
+
A settled attempt without approval or a recorded session reference has no
|
|
68
|
+
session when current-run ownership is confirmed, no connection work remains and
|
|
69
|
+
no unrecorded SDK session is retained. It does not require repeated status checks.
|
|
70
|
+
Pending approval or cleanup, a missing observation for a recorded session, and
|
|
71
|
+
unavailable service remain unconfirmed. Once absence is confirmed and pending
|
|
72
|
+
cleanup ends, the user can request a new Connect card. An ended card never regains
|
|
73
|
+
input. An existing Review tied to the ended
|
|
74
|
+
connection needs a new Review after reconnection; a declined connection alone
|
|
75
|
+
does not require a transaction Review.
|
|
76
|
+
|
|
77
|
+
Disconnect confirmation binds the exact connection, networks and affected
|
|
78
|
+
pending approvals. Changed impact requires fresh confirmation. Pending connection
|
|
79
|
+
or cleanup I/O blocks another Connect even if the stored result is stopped,
|
|
80
|
+
failed or expired. Only current-run absence confirmation plus settled I/O releases
|
|
81
|
+
that constraint. An idle or historical row alone cannot establish absence.
|
|
82
|
+
|
|
83
|
+
`session_get_interaction_status` exposes singular `connection`, `requestedChains`,
|
|
84
|
+
`canDisconnect` and the last `walletObservation`. `assetReadAccount` describes
|
|
85
|
+
whether the fixed Sui address is currently available for implicit asset reads.
|
|
86
|
+
`account_get_active_account` reports its saved read context, not live eligibility
|
|
87
|
+
or signing permission. Explicit-address reads remain public and do not select
|
|
88
|
+
an account. Settings can clear the saved read address without changing the wallet,
|
|
89
|
+
fixed addresses or transaction targets; this suppression survives restart of the
|
|
90
|
+
same connection. A fresh explicit connection can supply a new read address.
|
|
91
|
+
|
|
92
|
+
Current service availability, exact session presence, data generation, fixed
|
|
93
|
+
address and per-chain grant must all match for new financial input. Chain-local
|
|
94
|
+
changes invalidate that chain's old authority irreversibly; another chain's change
|
|
95
|
+
does not invalidate an unchanged Sui grant. A Review remains bound to its original
|
|
96
|
+
connection and account after reconnection. A new wallet needs a new Review.
|
|
97
|
+
|
|
98
|
+
An unrecorded SDK session is never adopted by address, order or recency. It blocks
|
|
99
|
+
new connection and financial input while saved facts remain readable. Remove
|
|
100
|
+
unwanted retained sessions in the wallet app and check status. An already admitted
|
|
101
|
+
transaction retains its own exact grant and submission checks. Restarting does not
|
|
102
|
+
approve an unrecorded session or prove its removal.
|
|
103
|
+
|
|
104
|
+
The backend owns the WalletConnect SDK in a child process with private session
|
|
105
|
+
storage. The parent owns SQLite admission, verification, submission and chain
|
|
106
|
+
observation. An initialization or observation failure disables affected wallet
|
|
107
|
+
operations, not saved result reads, and is never reported as wallet rejection or
|
|
108
|
+
chain failure. Startup diagnostics omit credentials and SDK error bodies.
|
|
109
|
+
The product supplies its public project identifier without user configuration;
|
|
110
|
+
shared Relay limits can affect availability.
|
|
111
|
+
|
|
112
|
+
Settings → Troubleshooting owns explicit connection-service restart. The user
|
|
113
|
+
confirms the run and affected requests. Restart waits for actual old-child exit,
|
|
114
|
+
new-run reservation and a ready observation. It revokes unsubmitted signing
|
|
115
|
+
authority; late signatures cannot submit. Submitted transactions keep the same
|
|
116
|
+
digest and result observation. A new Settings operation may supersede a pending
|
|
117
|
+
startup without erasing a known failure.
|
|
118
|
+
|
|
119
|
+
Recovery reconciles only the retained current topic. A missing snapshot entry is
|
|
120
|
+
checked through the existing SDK session check; it is not assumed absent. A normal
|
|
121
|
+
approved connection in the current data generation can regain usage after a new
|
|
122
|
+
ready run. A stopped, terminal or older-generation connection receives cleanup
|
|
123
|
+
ownership only. Its original result, fixed addresses and read-address suppression
|
|
124
|
+
remain unchanged. Confirmed absence releases stale occupancy, including records
|
|
125
|
+
from an earlier owner; it does not replay a connection or financial effect.
|
|
126
|
+
An unadmitted purpose card is not ended merely by an SDK run change; its original target and input deadline remain fixed. Ended cards are not reevaluated.
|
|
127
|
+
|
|
128
|
+
An approved SDK response is first retained privately for exact-session cleanup.
|
|
129
|
+
That retention alone creates no usable connection, address history or signing
|
|
130
|
+
authority. The connection and its fixed addresses become usable only after the
|
|
131
|
+
success result commits. If that publication fails, the session is cleaned up or
|
|
132
|
+
retained for explicit Disconnect; later reads do not retry the failed connection
|
|
133
|
+
as a success or repeat remote disconnection. A duplicate response for the same
|
|
134
|
+
already completed approval preserves that result and does not disconnect it.
|
|
135
|
+
|
|
136
|
+
A new owner stops interrupted connection approval and records unconfirmed
|
|
137
|
+
disconnection as failed. It expires old input and never replays financial work.
|
|
138
|
+
Pending SDK cleanup remains visible separately from immutable results. Bounded
|
|
139
|
+
waits report actual progress, including unavailable service, rather than implying
|
|
140
|
+
completion or remote cancellation. Known submitted digests remain readable without
|
|
141
|
+
WalletConnect. If Settings or the parent cannot be reached, stop all participating
|
|
142
|
+
MCP connections so the shared parent exits before reopening; a peer/window closing
|
|
143
|
+
alone may leave it alive. See [setup troubleshooting](MCP_SETUP.md#wallet-connection-boundary).
|
|
142
144
|
|
|
143
145
|
## Transaction approval
|
|
144
146
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
A single available wallet/account is displayed without a selection dropdown.
|
|
160
|
-
A permitted live Review card automatically prepares and renews verified conditions for that target. Multiple valid wallet connections block preparation and signing; resolve the conflict in Connect. Several approved addresses inside the single wallet require address selection there. A failed computation offers Retry review rather than repeating automatically. The explicit approval button selects the displayed transaction revision; automatic preparation never requests a signature. Backend
|
|
161
|
-
account, connection, revision and material checks remain authoritative.
|
|
162
|
-
|
|
163
|
-
An existing review keeps its original account binding. Preparing or updating it
|
|
164
|
-
requires that account to be the selected read account as well as an approved
|
|
165
|
-
account on the chosen connection. If read context changes from A to B, select A
|
|
166
|
-
again to update the same review, or request a new review for B. The card explains
|
|
167
|
-
the current selection restriction separately from saved review messages, which
|
|
168
|
-
can record a preparation failure or connection change. A refused incompatible
|
|
169
|
-
selection starts no preparation and records no failed review. Read context alone does not revoke already verified A signing
|
|
170
|
-
evidence or alter an admitted request.
|
|
147
|
+
The current fixed Sui address must have a usable exact connection for a new
|
|
148
|
+
Review. Clearing its saved read context does not change that transaction target.
|
|
149
|
+
SDK restoration can recover the same approved current-generation connection;
|
|
150
|
+
backup restore cannot activate an account or restore wallet authority.
|
|
151
|
+
|
|
152
|
+
A new Sui review uses the one current fixed account and connection, with no
|
|
153
|
+
public account/connection selector. An unavailable target is reported before
|
|
154
|
+
creating an empty review. The initial card already fixes the account and
|
|
155
|
+
connection before preparation. Its target remains visible through preparation
|
|
156
|
+
failure, read-address clearing and temporary unavailability. Disconnecting and reconnecting cannot move that review to the
|
|
157
|
+
replacement connection, even for the same address. Start a new Review instead.
|
|
158
|
+
The normal card shows its target without a selector and prepares or renews
|
|
159
|
+
evidence when permitted. Only Request wallet approval and approval in the wallet
|
|
160
|
+
authorize the transaction.
|
|
171
161
|
|
|
172
162
|
Preparation execution and its stored outcome are separate. If execution has
|
|
173
163
|
ended but both success and failure writes failed, the next current-state read
|
|
@@ -191,8 +181,11 @@ before admission, update the review; no signature request is sent. Once admitted
|
|
|
191
181
|
the transaction remains fixed and the saved signing deadline applies. Reading
|
|
192
182
|
or recovering an admitted attempt does not require a fresh quote or send it again.
|
|
193
183
|
|
|
194
|
-
|
|
195
|
-
|
|
184
|
+
Changes to the target Sui grant or connection lifecycle invalidate affected
|
|
185
|
+
unadmitted review material and pending submission permission atomically. Other
|
|
186
|
+
chain grants, display metadata and list order do not invalidate Sui authority.
|
|
187
|
+
Per-chain revisions remain monotonic even if a grant changes and later returns
|
|
188
|
+
to the earlier value. Unknown event scope invalidates the entire connection.
|
|
196
189
|
If that write fails, wallet operations are disabled until service recovery; a late
|
|
197
190
|
signature cannot continue under an unrecorded old permission.
|
|
198
191
|
Before submission, an explicit user stop, an SDK connection change and a
|
|
@@ -202,7 +195,9 @@ After submission, connection updates and disconnect requests do not stop
|
|
|
202
195
|
independent chain observation, including a lookup that has not started yet.
|
|
203
196
|
Only the explicit transaction `stop_waiting` action stops that observation;
|
|
204
197
|
later connection events neither resume it nor extend its deadline. An explicit
|
|
205
|
-
result read can still inspect the same digest.
|
|
198
|
+
result read through a new management card can still inspect the same digest.
|
|
199
|
+
An ended card cannot resume observation. A new exact-attempt result card can
|
|
200
|
+
perform one lookup; its final recorded result also stays fixed. No event resends the transaction.
|
|
206
201
|
Callbacks already dispatched to submit or read a transaction may still record
|
|
207
202
|
verified facts and settle their own pending flags while the same DB owner is
|
|
208
203
|
valid. Wallet failure alone does not end an SDK promise. Server shutdown, owner
|
|
@@ -237,8 +232,8 @@ SDK sessions may be reconciled with existing connection records; abandoned
|
|
|
237
232
|
pairings and financial requests are not replayed. An unknown outcome may later
|
|
238
233
|
be resolved by reading the known transaction digest.
|
|
239
234
|
|
|
240
|
-
Data replacement is refused while
|
|
241
|
-
chain observation remain unsettled. Removing finished local records cannot
|
|
235
|
+
Data replacement is refused while admitted management operations, their SDK
|
|
236
|
+
cleanup, signature/submission callbacks or initial chain observation remain unsettled. Removing finished local records cannot
|
|
242
237
|
cancel or reverse an on-chain transaction. Public export/import never restores
|
|
243
238
|
card permissions, SDK secrets, private request authority or live pending work.
|
|
244
239
|
Local data replacement does not revoke the wallet app's connection approval.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zktx.io/sui-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"mcpName": "io.github.zktx-mcp/sui-mcp",
|
|
5
5
|
"description": "Sui MCP is a local-first toolkit for helping AI applications and users inspect Sui DeFi actions before execution.",
|
|
6
6
|
"license": "MIT",
|