@zktx.io/sui-mcp 0.5.0 → 0.6.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 +21 -21
- package/dist/adapters/adapterPromptSurfaces.js +0 -20
- package/dist/adapters/deepbook/deepbookQuotePolicy.js +0 -4
- package/dist/adapters/deepbook/deepbookReviewEvidence.js +0 -9
- package/dist/adapters/deepbook/deepbookTransactionMaterialProducer.js +0 -9
- package/dist/adapters/intentPlanFactories.js +0 -6
- package/dist/core/action/contractNameRegistry.js +0 -53
- package/dist/core/action/forbiddenFields.js +0 -4
- package/dist/core/action/ptbVisualizationProducer.js +0 -3
- package/dist/core/action/receiptPtbGraph.js +0 -17
- package/dist/core/action/reviewTimeSimulationEvidence.js +0 -4
- package/dist/core/action/signableAdapterContract.js +0 -5
- package/dist/core/action/suiChainReceiptMapping.js +0 -18
- package/dist/core/action/suiChainReceiptReader.js +1 -21
- package/dist/core/action/suiChainReceiptVerifier.js +0 -10
- package/dist/core/action/transactionFunding.js +0 -7
- package/dist/core/action/types.js +0 -1
- package/dist/core/action/walletReviewContractAssembler.js +0 -2
- package/dist/core/activity/localDataService.js +65 -52
- package/dist/core/activity/localDataValidation.js +1 -3
- package/dist/core/activity/sqliteActivityStore.js +24 -24
- package/dist/core/activity/sqliteActivityStoreRows.js +0 -2
- package/dist/core/activity/sqliteActivityStoreSchema.js +81 -14
- package/dist/core/preferences/sqlitePreferencesRepository.js +5 -3
- package/dist/core/read/deepbookReadHelpers.js +0 -2
- package/dist/core/read/deepbookRegistry.js +0 -19
- package/dist/core/read/deepbookUsdcChartService.js +0 -2
- package/dist/core/read/readCardResult.js +0 -2
- package/dist/core/read/readService.js +0 -19
- package/dist/core/read/readServiceTypes.js +0 -2
- package/dist/core/session/cardSession.js +1 -5
- package/dist/core/session/cardSessionStore.js +54 -7
- package/dist/core/session/reviewValidity.js +0 -3
- package/dist/core/session/sessionRecordStore.js +0 -1
- package/dist/core/session/sessionStore.js +0 -32
- package/dist/core/session/settingsFileIdentity.js +9 -0
- package/dist/core/session/settingsFileProtocol.js +20 -0
- package/dist/core/session/settingsFileStore.js +337 -0
- package/dist/core/session/settingsInputError.js +32 -0
- package/dist/core/session/settingsOperation.js +220 -0
- package/dist/core/session/settingsPreparationSql.js +13 -0
- package/dist/core/session/settingsWorkflow.js +1183 -0
- package/dist/core/session/sqliteCardStore.js +0 -2
- package/dist/core/session/sqliteSessionStore.js +0 -51
- package/dist/core/session/sqliteSettingsWorkflowStore.js +453 -0
- package/dist/core/session/sqliteTransactionMaterialStore.js +0 -11
- package/dist/core/session/sqliteWalletWorkflowStore.js +160 -66
- package/dist/core/session/status.js +2 -4
- package/dist/core/session/transactionMaterialStore.js +0 -4
- package/dist/core/session/transactionRequest.js +0 -4
- package/dist/core/session/walletConnection.js +26 -10
- package/dist/core/session/walletWorkflow.js +70 -30
- package/dist/core/session/workflowState.js +14 -14
- package/dist/core/session/workflowView.js +18 -8
- package/dist/core/suiAddress.js +0 -5
- package/dist/core/suiEndpoint.js +0 -3
- package/dist/mcp/prompts.js +0 -12
- package/dist/mcp/responseGuidance.js +10 -5
- package/dist/mcp/schemas.js +0 -3
- package/dist/mcp/serverInfo.js +3 -4
- package/dist/mcp/toolNames.js +2 -2
- package/dist/mcp/tools/account/index.js +1 -19
- package/dist/mcp/tools/action/prepareSuiActionReview.js +0 -6
- package/dist/mcp/tools/read/readToolHelpers.js +5 -4
- package/dist/mcp/tools/read/serverStatusTools.js +0 -1
- package/dist/mcp/tools/session/executionResultTools.js +2 -2
- package/dist/mcp/tools/session/shared.js +1 -2
- package/dist/mcp/tools/session/statusTools.js +4 -5
- package/dist/mcp/tools/settings/index.js +8 -28
- package/dist/mcp-app/account.html +14 -14
- package/dist/mcp-app/account.notices.txt +1 -1
- package/dist/mcp-app/chart.html +9 -9
- package/dist/mcp-app/chart.notices.txt +1 -1
- package/dist/mcp-app/connect.html +14 -14
- package/dist/mcp-app/connect.notices.txt +1 -1
- package/dist/mcp-app/receipt.html +1298 -1463
- package/dist/mcp-app/receipt.notices.txt +226 -1204
- package/dist/mcp-app/review.html +1298 -1463
- package/dist/mcp-app/review.notices.txt +226 -1204
- package/dist/mcp-app/settings.html +3133 -0
- package/dist/mcp-app/settings.notices.txt +973 -0
- package/dist/mcp-ui/contracts.js +8 -2
- package/dist/mcp-ui/readCards.js +1 -1
- package/dist/mcp-ui/tools.js +34 -4
- package/dist/review-server/server.js +3 -51
- package/dist/runtime/application.js +41 -14
- package/dist/runtime/config.js +0 -2
- package/dist/runtime/localSettingsService.js +23 -2
- package/dist/runtime/logger.js +0 -2
- package/dist/runtime/reviewServerAcquire.js +1 -18
- package/dist/runtime/runtimeTermination.js +1 -4
- package/dist/runtime/shared/authenticatedFetch.js +2 -4
- package/dist/runtime/shared/control.js +4 -7
- package/dist/runtime/shared/dataAccess.js +0 -2
- package/dist/runtime/shared/http.js +14 -0
- package/dist/runtime/shared/mcpHttp.js +6 -6
- package/dist/runtime/shared/ownerLease.js +0 -4
- package/dist/runtime/shared/server.js +1 -2
- package/dist/runtime/shared/stdio.js +2 -5
- package/dist/runtime/smokeMainnetRead.js +0 -3
- package/dist/runtime/smokeReview.js +0 -4
- package/dist/runtime/start.js +0 -2
- package/dist/runtime/suiTransactionGraphqlMapping.js +0 -2
- package/dist/runtime/suiTransactionGraphqlQueries.js +0 -3
- package/dist/runtime/walletConnectConfig.js +0 -2
- package/dist/runtime/walletConnectStorage.js +2 -10
- package/dist/runtime/walletConnectTransport.js +0 -11
- package/dist/runtime/walletSdkChildRuntime.js +2 -6
- package/dist/runtime/walletSdkIpc.js +2 -1
- package/dist/runtime/walletSdkProcess.js +3 -8
- package/docs/AGENT_BEHAVIOR.md +45 -15
- package/docs/LOCAL_DB_ARCHITECTURE.md +145 -22
- package/docs/MCP_SETUP.md +99 -39
- package/docs/MCP_TOOLS.md +288 -24
- package/docs/SDK_API.md +63 -10
- package/docs/UTILITY_INDEX.md +9 -6
- package/docs/WALLET_CONNECTION.md +32 -10
- package/package.json +22 -8
- package/dist/core/activity/schemaVersion.js +0 -2
- package/dist/core/session/keyedRecordStore.js +0 -18
- package/dist/core/session/settingsSession.js +0 -1
- package/dist/core/session/settingsSessions.js +0 -45
- package/dist/review-app/brand-dark.svg +0 -1
- package/dist/review-app/brand-light.svg +0 -1
- package/dist/review-app/favicon.svg +0 -1
- package/dist/review-app/settings.css +0 -1
- package/dist/review-app/settings.js +0 -1
- package/dist/review-app/ui.css +0 -809
- package/dist/review-server/assets.js +0 -48
- package/dist/review-server/html.js +0 -45
- package/dist/review-server/http.js +0 -47
- package/dist/review-server/middleware/reviewToken.js +0 -7
- package/dist/review-server/settingsApi.js +0 -158
- package/docs/AGENT_DEVELOPMENT_POLICY.md +0 -815
- package/docs/FRONTEND_POLICY.md +0 -534
- package/docs/golden-scenarios/BEHAVIOR_MATRIX.md +0 -166
- package/docs/golden-scenarios/INTENT_EVIDENCE_GOLDEN_ANSWERS.md +0 -161
- package/docs/golden-scenarios/INTENT_EVIDENCE_MATRIX.md +0 -259
package/docs/MCP_TOOLS.md
CHANGED
|
@@ -8,6 +8,31 @@ It does not own installation steps or user-question playbooks. Installation and
|
|
|
8
8
|
|
|
9
9
|
Tool names use dot prefixes and avoid arbitrary shell, arbitrary Move calls, and private-key handling.
|
|
10
10
|
|
|
11
|
+
The local stdio gateway forwards each request through authenticated internal
|
|
12
|
+
HTTP. A request body must fit within 4 MiB, including the entire MCP JSON-RPC
|
|
13
|
+
envelope and metadata. An oversized request is rejected before tool or card
|
|
14
|
+
dispatch; this is an input-size error, not an unsupported function, wallet
|
|
15
|
+
rejection or unconfirmed file delivery. Reduce the request before calling again.
|
|
16
|
+
Card calls also have a 64 KiB envelope budget. Ordinary MCP calls do not inherit
|
|
17
|
+
that smaller card limit. Restore files may contain up to 16 MiB and are sent in
|
|
18
|
+
separate messages within the card budget; the 4 MiB request limit is not a
|
|
19
|
+
backup-file limit.
|
|
20
|
+
|
|
21
|
+
Internal cards require the current MCP connection to advertise
|
|
22
|
+
`extensions["io.modelcontextprotocol/ui"].mimeTypes` as a string array containing
|
|
23
|
+
`text/html;profile=mcp-app`. Client names and versions do not select card
|
|
24
|
+
support. An absent, malformed or nonstandard advertisement returns
|
|
25
|
+
`ui_unavailable` without creating a card or issuing its source query; ordinary
|
|
26
|
+
evidence tools remain available. An advertisement enables card delivery, not
|
|
27
|
+
transaction or Settings authorization. Scoped UI permission, stored target and
|
|
28
|
+
revision checks still apply to each input action.
|
|
29
|
+
|
|
30
|
+
Card responses use structured content or the corresponding JSON text payload.
|
|
31
|
+
A single serialized MCP tool-result carrier and exact saved-card resource links
|
|
32
|
+
are normalized by format. Conflicting payloads, private metadata or card
|
|
33
|
+
identities are rejected. JSON inside ordinary product data and saved links do
|
|
34
|
+
not grant input permission; a saved card is read through its bound resource.
|
|
35
|
+
|
|
11
36
|
## Read-Only Tools
|
|
12
37
|
|
|
13
38
|
| Tool | Status | Purpose |
|
|
@@ -155,7 +180,7 @@ When Chart pool choices cannot be prepared, the backend creates a `closed`/`fail
|
|
|
155
180
|
|
|
156
181
|
Receipt model results retain input kinds/indices/object references and identify input values and PTB as UI-only details. Receipt and completed Review show the executed transaction graph above their result summary when bound private metadata is available. Technical records are in one Details slide. Missing metadata leaves the saved result available without inventing a graph. The typed `sui-mcp/receipt-display` metadata binds display data to the same card ID, transaction digest and revision. It carries individual on-chain Pure input values and the graph derived from those inputs; never a serialized transaction, signature or wallet credential. Public saved resources contain only the model projection. A missing UI detail payload means unavailable display data, not that a transaction had no inputs.
|
|
157
182
|
|
|
158
|
-
Backend expiry ends unsubmitted input. A server restart invalidates unfinished cards; stored completed results remain readable. Reset/import removes cards
|
|
183
|
+
Backend expiry ends unsubmitted input. A server restart invalidates unfinished cards; stored completed results remain readable. Reset/import atomically removes other cards/permissions with the data change and preserves the applying Settings card/result as read-only. Completed input does not reopen, while still-valid unsubmitted input is unaffected by chat navigation. A lost submit response is resolved by reading the same card, without another source request.
|
|
159
184
|
|
|
160
185
|
When a Host replays a historical card without its private input permission, the
|
|
161
186
|
View reads `suimcp://cards/{cardId}` to restore the same card's current saved
|
|
@@ -1071,7 +1096,8 @@ Each disconnection uses the same scoped UI permission, current run and revision,
|
|
|
1071
1096
|
atomic admission and saved result as an ordinary single-connection disconnect.
|
|
1072
1097
|
No first/newest/default wallet is silently selected. When one valid connection
|
|
1073
1098
|
remains and no connection operation is pending, normal account use can resume;
|
|
1074
|
-
with
|
|
1099
|
+
with no recorded or SDK-present connection and no pending operation, pairing is
|
|
1100
|
+
available. A failed disconnect does not prove remote removal.
|
|
1075
1101
|
A failed or stopped product connection is not restored merely because its SDK
|
|
1076
1102
|
session remains saved.
|
|
1077
1103
|
|
|
@@ -1093,6 +1119,19 @@ the stored default's source connection ID to match this connection and its
|
|
|
1093
1119
|
address to remain approved. Matching the address in a different connection is
|
|
1094
1120
|
insufficient. A source-less stored selection requires explicit Use address.
|
|
1095
1121
|
|
|
1122
|
+
`manageableConnectionIds` identifies exact recorded targets for a new scoped
|
|
1123
|
+
Disconnect, separately from account use. It includes nonpending connected records
|
|
1124
|
+
(including expired ones) and known terminal records whose current SDK session
|
|
1125
|
+
remains present. `connectionReconciliationRequired: true` identifies a present SDK
|
|
1126
|
+
session without a journal target after normal registration/cleanup ends. It
|
|
1127
|
+
blocks pairing, account use, preparation and signing while preserving SDK
|
|
1128
|
+
availability and saved outcomes. Remove the retained connection in the wallet
|
|
1129
|
+
app, then confirm absence through a complete current service observation.
|
|
1130
|
+
Settings/Troubleshooting can explicitly restart the service to inspect it again;
|
|
1131
|
+
restart alone does not remove or approve that connection. No private topic or synthetic target ID
|
|
1132
|
+
is exposed. Both fields also appear in interaction status; review status includes
|
|
1133
|
+
the reconciliation flag when current eligibility is needed.
|
|
1134
|
+
|
|
1096
1135
|
These fields are emitted together for current wallet eligibility. Independent
|
|
1097
1136
|
historical or completed-result reads may omit them; omission does not establish
|
|
1098
1137
|
current eligibility. Recorded `connections` and `activeAccount` remain facts,
|
|
@@ -1116,7 +1155,10 @@ errors still fail the read without deleting the stored execution result.
|
|
|
1116
1155
|
|
|
1117
1156
|
Connect does not accept `restart_wallet_service`; that input returns
|
|
1118
1157
|
`invalid_card_input` without consuming the card or changing the SDK run.
|
|
1119
|
-
|
|
1158
|
+
Ordinary MCP tools cannot replace the connection service. A user may prepare
|
|
1159
|
+
and confirm its restart in the internal Settings card's Troubleshooting controls.
|
|
1160
|
+
This restores service availability, not an interrupted wallet approval or
|
|
1161
|
+
disconnect result. Operational app
|
|
1120
1162
|
restart is described in [MCP Setup](MCP_SETUP.md#wallet-connection-boundary).
|
|
1121
1163
|
|
|
1122
1164
|
A historical `runtimeRecovery` result retains its prior/next run IDs,
|
|
@@ -1209,38 +1251,260 @@ facts actually exist.
|
|
|
1209
1251
|
| Tool | Status | Purpose |
|
|
1210
1252
|
| --- | --- | --- |
|
|
1211
1253
|
| `account.get_active_account` | Implemented | Reads the active wallet-account read context. |
|
|
1212
|
-
|
|
1254
|
+
|
|
1255
|
+
The user clears the default read address through a confirmed Settings card action. Ordinary MCP calls do not clear it.
|
|
1213
1256
|
|
|
1214
1257
|
## Settings Tools
|
|
1215
1258
|
|
|
1216
1259
|
| Tool | Status | Purpose |
|
|
1217
1260
|
| --- | --- | --- |
|
|
1218
|
-
| `settings.create_local_settings_session` | Implemented |
|
|
1219
|
-
| `settings.get_local_settings` | Implemented | Reads
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1261
|
+
| `settings.create_local_settings_session` | Implemented | Opens one internal Settings card with an unsubmitted draft. |
|
|
1262
|
+
| `settings.get_local_settings` | Implemented | Reads stored/effective Sui gRPC and GraphQL endpoints, sources and pending restart information. |
|
|
1263
|
+
|
|
1264
|
+
The gateway name is preserved. Its result is a `kind: "settings"` card snapshot
|
|
1265
|
+
and a public saved-result link. Card permission is only in `sui-mcp/card` UI
|
|
1266
|
+
metadata. There is no `settingsUrl`, `openTarget`, external page, HTTP mutation
|
|
1267
|
+
API or compatibility alias. A client without internal cards receives
|
|
1268
|
+
`ui_unavailable`; ordinary model calls never apply a Settings change.
|
|
1269
|
+
|
|
1270
|
+
Settings groups Address for viewing assets, Local records, Troubleshooting and Advanced
|
|
1271
|
+
settings. Confirmed changes are `clear_read_address`, `set_endpoint`,
|
|
1272
|
+
`restore_endpoint` (gRPC or GraphQL), `import_local_data`, `reset_local_data`
|
|
1273
|
+
and `restart_wallet_service`. Their preparation and confirmation use app-only
|
|
1274
|
+
`ui.act_card` with card permission, revision, operation identity and the exact
|
|
1275
|
+
preparation identity. Choosing or checking data does not apply it, contact a
|
|
1276
|
+
wallet or restart the SDK. Duplicate confirmation returns the same admitted
|
|
1277
|
+
result; MCP JSON-RPC request IDs do not authorize another operation.
|
|
1278
|
+
|
|
1279
|
+
Download backup uses one `settings_download_backup` action with `operationId`
|
|
1280
|
+
and an `attemptId` UUID, admitted atomically through the same scoped card input.
|
|
1281
|
+
It creates a `download_backup` operation and one immutable snapshot. It requires
|
|
1282
|
+
no separate selection, preparation or confirmation action. The same admitted
|
|
1283
|
+
start returns the same request; a different start cannot replace it. New
|
|
1284
|
+
`export_local_data` selection/preparation/confirmation is not accepted.
|
|
1285
|
+
|
|
1286
|
+
The card uses plain-language display labels without changing wire fields or
|
|
1287
|
+
enums. Wallet-service `available`, `initializing`, `recovering` and `unavailable`
|
|
1288
|
+
display as Ready, Starting, Restarting and Unavailable; Ready describes the
|
|
1289
|
+
service, not a connected or approved wallet. Endpoint sources display as App
|
|
1290
|
+
launch settings, Saved in Sui MCP and Built-in default. Internal connection and
|
|
1291
|
+
transaction-request IDs remain in Details; wallet identity and restart impact
|
|
1292
|
+
remain beside the confirmation. Known validation errors explain the cause and
|
|
1293
|
+
next action without requiring knowledge of upload chunks or backend admission.
|
|
1294
|
+
|
|
1295
|
+
Completing an import upload automatically checks its integrity, current-format
|
|
1296
|
+
contents and local replacement conditions. `data.restoreCheck.status` is
|
|
1297
|
+
`no_file`, `receiving`, `checking`, `check_required`, `can_restore` or
|
|
1298
|
+
`cannot_restore`. Receiving describes an unsealed transfer; a complete sealed
|
|
1299
|
+
file needing a new local check is `check_required`, not a validation failure.
|
|
1300
|
+
A blocked check carries
|
|
1301
|
+
its `reason` and user-readable `message`; it does not end the operation or
|
|
1302
|
+
misclassify a storage/service failure as an invalid file. `can_restore` describes
|
|
1303
|
+
the current preparation, not authority, completed replacement or guaranteed
|
|
1304
|
+
success. The exact UI permission, preparation identity and final admission are
|
|
1305
|
+
still required. Imported endpoint verification runs after final confirmation,
|
|
1306
|
+
before any data replacement. Reads never start a new check or application.
|
|
1307
|
+
|
|
1308
|
+
Known invalid backup contents or a definite imported URL/mainnet rejection remain
|
|
1309
|
+
bound to the selected file ID, hash, length and operation epoch. `settings_back` or a
|
|
1310
|
+
local-data revision change discards current confirmation without clearing that
|
|
1311
|
+
file rejection. `settings_prepare` cannot erase it or make the same file ready;
|
|
1312
|
+
the user must explicitly change the file selection. A new selection can use the
|
|
1313
|
+
same original bytes and receives a new file identity. Timeout or unreachable
|
|
1314
|
+
endpoint failures permit an explicit local recheck and a new final confirmation;
|
|
1315
|
+
that recheck does not call imported endpoints. The server derives recheck actions
|
|
1316
|
+
from the same decision used by the handler; the View does not choose its own
|
|
1317
|
+
failure-recovery policy.
|
|
1318
|
+
|
|
1319
|
+
`file.sealed` records complete, integrity-checked transfer; it does not by itself
|
|
1320
|
+
establish a supported backup or permission to restore it. `settings_back` and user-data
|
|
1321
|
+
changes invalidate preparation while preserving a reusable complete file.
|
|
1322
|
+
The explicit `settings_prepare` action rechecks such a file; normal file
|
|
1323
|
+
selection requires no separate Preview action. A failed check preserves its
|
|
1324
|
+
current file/operation identity and correction path. Owner replacement ends old
|
|
1325
|
+
input; a new card must receive a new explicit file selection.
|
|
1326
|
+
|
|
1327
|
+
A download's `result.completionScope: "backup_snapshot"` identifies the immutable
|
|
1328
|
+
preparation result, not a saved user file. `data.download` separately carries
|
|
1329
|
+
`availability` (`preparing`, `available`, `ended`), `currentAttemptId`, an optional
|
|
1330
|
+
`hostReport` (`acknowledged`, `not_completed`, `unconfirmed`, `unsupported`), `previousUnconfirmed`,
|
|
1331
|
+
`expiresAt`, `remainingMs`, `endReason` and `allowedFileActions`. End reasons are
|
|
1332
|
+
`acknowledged`, `cancelled`, `expired`, `server_restarted`, `data_replaced`,
|
|
1333
|
+
`source_unavailable`, `stored_locally` or `local_save_failed`. Replacement revokes the old card rather than preserving
|
|
1334
|
+
its input. The transfer period is thirty minutes from physical readiness;
|
|
1335
|
+
reads/retries never extend it or reopen the original business-input deadline.
|
|
1336
|
+
Raw per-attempt preparation is not copied into public `preparation`.
|
|
1337
|
+
|
|
1338
|
+
`data.download.localSave`, when present, separates `needs_consent`, `saving`,
|
|
1339
|
+
`saved` and `failed`. It may include `currentSaveAttemptId`, `savedAt` and a
|
|
1340
|
+
failure reason (`not_published`, `target_conflict`, `source_unavailable` or
|
|
1341
|
+
`interrupted`). Uncertain physical results remain `saving`; they do not grant
|
|
1342
|
+
another save. `previousUnconfirmed` includes an earlier attempt whose delivery
|
|
1343
|
+
absence was not established, including an unreported or not-completed request.
|
|
1344
|
+
|
|
1345
|
+
A verified local `saved` result provides `data.backupLocation.directory` and
|
|
1346
|
+
`filename` for `<SUI_MCP_DATA_DIR>/backups/<operationId>.json`. Snapshot preparation
|
|
1347
|
+
and Host acknowledgment do not provide that local success. A recorded
|
|
1348
|
+
`export_local_data` result can also identify its existing file. These fields
|
|
1349
|
+
never identify the destination chosen by a Host download dialog. Existing user
|
|
1350
|
+
files are never deleted by private snapshot cleanup. Private publication
|
|
1351
|
+
identities and source inode/device facts are not public projection fields.
|
|
1352
|
+
|
|
1353
|
+
Current `data.facts` uses the same connection selection and qualification rules
|
|
1354
|
+
as interaction status, through a fact reader that does not settle another
|
|
1355
|
+
request's deadlines or callback writes. General counts describe stored records;
|
|
1356
|
+
reset/import preparation and confirmation independently settle deadlines and
|
|
1357
|
+
check the current deletion impact. Creating a Settings card or checking its own
|
|
1358
|
+
permission, expiry, result or cleanup retains that operation's required writes.
|
|
1359
|
+
`connectionReconciliationRequired: true` is separate from SDK availability and
|
|
1360
|
+
requires a published available run with confirmed unrecorded presence:
|
|
1361
|
+
remove the unrecorded connection in the wallet app, then confirm absence.
|
|
1362
|
+
Settings overview and Troubleshooting show that action; a service restart only
|
|
1363
|
+
re-inspects retained sessions and does not approve or remove them.
|
|
1364
|
+
An initializing/state_sync memory snapshot does not establish that diagnosis.
|
|
1365
|
+
The ordinary interaction response exposes its removal-and-confirmed-absence
|
|
1366
|
+
meaning in `userAnswerUse.canAnswer` only when the diagnostic flag is present;
|
|
1367
|
+
the corresponding precondition and answer fields reference the same flag.
|
|
1368
|
+
Neither service availability nor an absent flag establishes account authority
|
|
1369
|
+
or proves that no SDK session exists.
|
|
1370
|
+
|
|
1371
|
+
`data.phase` is `draft`, `uploading`, `sealed`, `prepared`, `executing`,
|
|
1372
|
+
`stopping`, `starting` or `terminal`. `allowedActions` lists permitted business input;
|
|
1373
|
+
`observe` permits reading the existing operation only. Known file-I/O and final-slot
|
|
1374
|
+
conditions affect the offered actions; final admission rechecks them atomically.
|
|
1375
|
+
Local section navigation and Resume do not call `settings_back` or change stored
|
|
1376
|
+
preparation. Check status reads the same card when a change is temporarily
|
|
1377
|
+
unavailable and never repeats a business action or Host download. After a
|
|
1378
|
+
successful read, an already received but unrecorded download report can be
|
|
1379
|
+
recorded idempotently without resending bytes. Public fields include
|
|
1380
|
+
`operationId`, `draft`, preparation identity/impact, file ID/name/length/hash,
|
|
1381
|
+
`priorRunId`, `nextRunId`, supersession links and a recorded result. Results use
|
|
1382
|
+
`completed`, `failed`, `interrupted` or `superseded`. Completion describes that
|
|
1383
|
+
local operation, not a transaction's chain outcome. Optional
|
|
1384
|
+
`temporaryFileCleanup` separately reports `pending`, `failed` or `complete`;
|
|
1385
|
+
reading/checking it never repeats data replacement, backup creation, Host delivery or SDK
|
|
1386
|
+
replacement. Terminal business input remains closed; only the separate scoped
|
|
1387
|
+
file continuations in `data.download.allowedFileActions` may remain available. Public fields contain no raw file, transaction bytes, signatures,
|
|
1388
|
+
SDK credentials or card permission.
|
|
1389
|
+
|
|
1390
|
+
A user-data writer invalidates its affected prepared confirmation atomically.
|
|
1391
|
+
A still-valid sealed import file remains available for a new backup check after
|
|
1392
|
+
`settings_back` or invalidation; an old revision/preparation cannot apply it. Explicitly
|
|
1393
|
+
choosing a different file invalidates the old upload. Upload, preparation and
|
|
1394
|
+
input permission have separate lifetimes. Known validation rejection returns
|
|
1395
|
+
safe input-error text and the actual current snapshot. Wrong permission returns
|
|
1396
|
+
no snapshot or domain explanation; storage/I/O failures are not input errors
|
|
1397
|
+
or success.
|
|
1398
|
+
|
|
1399
|
+
Backup uploads accept at most 16 MiB before Base64/JSON wrapping. Chunk offsets,
|
|
1400
|
+
reservations, canonical Base64, full length and SHA-256 are verified. The entire
|
|
1401
|
+
internal MCP JSON-RPC message remains within 65,536 UTF-8 bytes; oversized upload
|
|
1402
|
+
rejection can report a smaller raw chunk limit before any write. The backup check validates
|
|
1403
|
+
strict current backup shape/references without endpoint contact. Confirmation
|
|
1404
|
+
verifies imported endpoints report Sui mainnet and rechecks current data and
|
|
1405
|
+
unsettled wallet/transaction work before atomic replacement.
|
|
1406
|
+
The prepared import includes `currentReadAddress` and `incomingReadAddress`
|
|
1407
|
+
(`null` when unset), the corresponding change and current/incoming record counts.
|
|
1408
|
+
Both preparation and final admission settle request deadlines before capturing
|
|
1409
|
+
or comparing that decision basis. A newly unknown outcome requires a new backup check.
|
|
1410
|
+
Reset/import revoke other live permissions and preserve only their own read-only card/result.
|
|
1411
|
+
Their confirmation warns that replacement can remove unconfirmed transaction
|
|
1412
|
+
records even when the checked count is zero; actual nonzero deletion counts stay
|
|
1413
|
+
visible. Outstanding wallet/transaction responses and an unfinished initial
|
|
1414
|
+
result-checking window block replacement, including after the user stops
|
|
1415
|
+
automatic result checks. Stopping those checks does not shorten that window.
|
|
1416
|
+
They cannot cancel a transaction on Sui or disconnect a remote wallet session.
|
|
1417
|
+
The private connection-service journal is preserved; it is not imported from
|
|
1418
|
+
the public backup and cannot restore old permissions or signing authority.
|
|
1419
|
+
Reset clears the default address. A restored default requires its exact current
|
|
1420
|
+
connection ID and approved address. Outstanding connection SDK callbacks block
|
|
1421
|
+
replacement along with unsettled transaction work.
|
|
1422
|
+
|
|
1423
|
+
Endpoint preparation records the gRPC/GraphQL kind, current stored/effective
|
|
1424
|
+
value and source, and exact proposed stored value. Only final confirmation checks
|
|
1425
|
+
mainnet and stores that target. Its result captures `effectiveValueAtSave` and
|
|
1426
|
+
`effectiveSourceAtSave`, rather than claiming to describe a later server run.
|
|
1427
|
+
An environment override continues to take precedence after restart while it
|
|
1428
|
+
remains set; storing an endpoint does not modify that environment.
|
|
1429
|
+
|
|
1430
|
+
Download creates and verifies one private snapshot with an exclusive generated
|
|
1431
|
+
file identity. Supported Host delivery does not publish a second permanent backup. Response or result
|
|
1432
|
+
storage failure never regenerates that snapshot. `ui.read_settings_file` is
|
|
1433
|
+
app-only and binds card/permission, operation, file, offset, verified hash/length
|
|
1434
|
+
and the current `attemptId` for a private download. Its ordinary content carries
|
|
1435
|
+
range metadata; Base64 bytes appear only in `sui-mcp/settings-file` UI metadata.
|
|
1436
|
+
The View checks the complete hash before standard Host delivery.
|
|
1437
|
+
|
|
1438
|
+
File continuations also use app-only `ui.act_card`:
|
|
1439
|
+
|
|
1440
|
+
- `settings_retry_download`: `operationId`, `fileId`, `previousAttemptId` and a
|
|
1441
|
+
new `attemptId`; atomically advances one attempt on the same live snapshot.
|
|
1442
|
+
- `settings_report_download`: `operationId`, `fileId`, `attemptId` and `status`
|
|
1443
|
+
(`acknowledged`, `not_completed`, `unconfirmed`, `unsupported`); the same report is idempotent,
|
|
1444
|
+
and conflicting reports for one attempt are rejected. A late older report
|
|
1445
|
+
cannot change the current attempt or end its retention. `unsupported` requires
|
|
1446
|
+
exactly `failure: {method: "ui/download-file", code: -32601}`; other statuses
|
|
1447
|
+
must omit `failure`. Only the actual download call's method-not-found result
|
|
1448
|
+
supplies that report. It is atomically admitted with the same snapshot's local
|
|
1449
|
+
publication intent when no earlier delivery is possible. A busy shared slot
|
|
1450
|
+
rejects that admission atomically; the View can record the same received
|
|
1451
|
+
report again without another Host call. An older or ended attempt report
|
|
1452
|
+
never admits publication.
|
|
1453
|
+
- `settings_cancel_download`: `operationId`, `fileId` and `attemptId`; ends
|
|
1454
|
+
further delivery of that snapshot, not a Host dialog or a user-saved file.
|
|
1455
|
+
Cancellation is refused while a local save is in progress or its outcome is
|
|
1456
|
+
uncertain. After a failure recorded as `not_published`, cancellation remains
|
|
1457
|
+
available within the transfer period for the current authorized request.
|
|
1458
|
+
- `settings_store_backup`: `operationId`, `fileId`, current `attemptId`, a new
|
|
1459
|
+
`saveAttemptId`, required boolean `allowPossibleCopy`, and optional
|
|
1460
|
+
`previousSaveAttemptId`. It is available only for that snapshot's recorded
|
|
1461
|
+
unsupported result. Possible earlier delivery requires explicit true consent;
|
|
1462
|
+
otherwise false is required. Initial consent has no previous save ID. A retry
|
|
1463
|
+
of a confirmed no-publication failure must name the current failed save ID.
|
|
1464
|
+
IDs and consent are immutable per admission; duplicates do not repeat effects.
|
|
1465
|
+
It accepts no arbitrary path, name or bytes.
|
|
1466
|
+
|
|
1467
|
+
These actions validate current owner, epoch, credential and exact file/attempt
|
|
1468
|
+
identity independently of terminal business input. Retry/read requires a live
|
|
1469
|
+
transfer period. A late report can record a fact after that period ends but
|
|
1470
|
+
cannot restore the file or authority. Host acknowledgment ends retention and
|
|
1471
|
+
requests cleanup; it does not prove a save location or completed disk storage.
|
|
1472
|
+
`isError` does not distinguish cancellation, denial or failure. A lost response
|
|
1473
|
+
is unconfirmed and never triggers automatic retransmission. Cleanup failure is
|
|
1474
|
+
reported separately and is retried through Check status or owner recovery.
|
|
1475
|
+
Local publication closes further Host reads/retries for that snapshot. Its
|
|
1476
|
+
final/file-I/O reservations survive the immutable terminal snapshot result.
|
|
1477
|
+
New save admissions and retries require the original live period; admitted
|
|
1478
|
+
file work settles even if it outlives that period. A process restart verifies
|
|
1479
|
+
only an existing target bound to its recorded source identity/content. It never
|
|
1480
|
+
publishes a missing target or restores the departed card's action authority.
|
|
1481
|
+
A missing or changed source ends that private transfer; a new explicit request
|
|
1482
|
+
is required. An existing public backup is verified on the same descriptor used
|
|
1483
|
+
for each range and is never truncated or removed by temporary cleanup.
|
|
1484
|
+
|
|
1485
|
+
Troubleshooting recovery confirms a precise SDK run and affected unsubmitted
|
|
1486
|
+
requests. Admission revokes their submission authority before stopping the old
|
|
1487
|
+
child. The result waits for the owned child's exit, new run reservation,
|
|
1488
|
+
startup and complete observation. A new explicit Settings confirmation can
|
|
1489
|
+
supersede a startup still pending; it cannot replace stopping or erase a known
|
|
1490
|
+
failure. Already admitted submissions keep observing the same digest. Restart
|
|
1491
|
+
does not confirm an interrupted disconnect or sign/submit a new transaction.
|
|
1492
|
+
The confirmation identifies wallet connection records with their recorded status
|
|
1493
|
+
and addresses. Historical disconnected/failed records do not prove a current
|
|
1494
|
+
connection or approval. The complete recorded impact remains bound to admission;
|
|
1495
|
+
the display does not filter it into a new wallet-eligibility rule.
|
|
1496
|
+
|
|
1497
|
+
Endpoint changes require fully quitting/reopening every participating app to
|
|
1498
|
+
apply parent configuration. Restart connection service only replaces the SDK
|
|
1499
|
+
child. Installation environment overrides continue to take precedence. Custom
|
|
1500
|
+
providers affect read data quality; use trusted Sui mainnet providers.
|
|
1237
1501
|
|
|
1238
1502
|
## Resources
|
|
1239
1503
|
|
|
1240
1504
|
Sui MCP serves the URI prefixes `suimcp://` and `ui://sui-mcp/`.
|
|
1241
1505
|
The
|
|
1242
1506
|
`sui-mcp/card`, `sui-mcp/receipt-display` and
|
|
1243
|
-
`sui-mcp/wallet-display` metadata keys bind stored cards to their
|
|
1507
|
+
`sui-mcp/wallet-display` and `sui-mcp/settings-file` metadata keys bind stored cards to their
|
|
1244
1508
|
permissions and display facts. Clients must use the returned URI/key values.
|
|
1245
1509
|
|
|
1246
1510
|
|
package/docs/SDK_API.md
CHANGED
|
@@ -1,23 +1,74 @@
|
|
|
1
1
|
# SDK API Verification
|
|
2
2
|
|
|
3
|
-
This document records the pinned SDK APIs used by the current runtime.
|
|
3
|
+
This document records the pinned SDK APIs used by the current runtime. Backend
|
|
4
|
+
API facts come from the installed SDK source in `node_modules`. Browser
|
|
5
|
+
libraries are embedded during the build; their packaged versions are recorded
|
|
6
|
+
in the card dependency notices described below.
|
|
4
7
|
|
|
5
8
|
## Package Versions
|
|
6
9
|
|
|
7
10
|
- `@modelcontextprotocol/ext-apps`: `1.7.5`
|
|
8
|
-
- `@modelcontextprotocol/sdk`: `1.
|
|
11
|
+
- `@modelcontextprotocol/sdk`: `1.31.0`
|
|
9
12
|
- `@mysten/sui`: `2.17.0`
|
|
10
13
|
- `@mysten/deepbook-v3`: `1.3.6`
|
|
11
14
|
- `@walletconnect/sign-client`, `@walletconnect/types`, `@walletconnect/utils`: `2.23.10`
|
|
12
15
|
- `qrcode`: `1.5.4`
|
|
13
16
|
- `@zktx.io/ptb-model`: `0.5.0`
|
|
14
|
-
- `mermaid`: `11.
|
|
17
|
+
- `mermaid`: `11.16.1`
|
|
18
|
+
- `katex`: `0.18.2`, pinned by an override scoped to `mermaid@11.16.1`
|
|
19
|
+
|
|
20
|
+
Mermaid and its KaTeX dependency are build dependencies for the embedded card
|
|
21
|
+
resources, not Node server runtime dependencies. Their versions are fixed by
|
|
22
|
+
the source-checkout lockfile and included in the generated HTML. Installed npm
|
|
23
|
+
dependencies do not apply a dependency package's own overrides.
|
|
24
|
+
|
|
25
|
+
## Bundled Transaction Diagrams
|
|
26
|
+
|
|
27
|
+
The backend uses `@zktx.io/ptb-model` to generate a flowchart from verified
|
|
28
|
+
review material or a transaction read from Sui. The shared browser renderer
|
|
29
|
+
uses Mermaid to display that flowchart in the Review and Receipt cards.
|
|
30
|
+
The diagram is display evidence; it does not authorize signing or execution.
|
|
31
|
+
|
|
32
|
+
`scripts/build-mcp-ui.ts` embeds each card's script and styles in one HTML
|
|
33
|
+
resource and records the modules included in that resource. Check
|
|
34
|
+
`dist/mcp-app/review.notices.txt` and `receipt.notices.txt`, or the dependency
|
|
35
|
+
notices embedded in their HTML, for the actual browser-library versions.
|
|
36
|
+
The dependency versions in a new source-checkout build come from
|
|
37
|
+
`package-lock.json`. Reinstalling a published package's runtime dependencies
|
|
38
|
+
does not replace the libraries already embedded in its card HTML. A browser
|
|
39
|
+
dependency update requires rebuilding and distributing the card resources.
|
|
15
40
|
|
|
16
41
|
## MCP Apps
|
|
17
42
|
|
|
18
|
-
|
|
43
|
+
Card support uses the current MCP connection's
|
|
44
|
+
`extensions["io.modelcontextprotocol/ui"].mimeTypes` advertisement. The pinned
|
|
45
|
+
`getUiCapability` and `RESOURCE_MIME_TYPE` exports own extraction and the
|
|
46
|
+
standard MIME identifier. The UI object and its string array are validated;
|
|
47
|
+
client names, versions and unrelated MIME types do not enable cards.
|
|
48
|
+
Capability negotiation does not grant scoped card or transaction authority.
|
|
19
49
|
|
|
20
|
-
The
|
|
50
|
+
The common View normalizes structured results, their JSON text fallback and a
|
|
51
|
+
single serialized `CallToolResult` carrier validated with the pinned SDK
|
|
52
|
+
schema. Conflicting payloads or private metadata are rejected. Ordinary data
|
|
53
|
+
does not supply input permission, and saved resource links remain read-only.
|
|
54
|
+
|
|
55
|
+
`@modelcontextprotocol/ext-apps` is pinned to `1.7.5`, with MCP SDK `1.31.0`. 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.
|
|
56
|
+
|
|
57
|
+
Settings completes a selected upload's verification and restore preparation on
|
|
58
|
+
the backend. The card renders the stored `restoreCheck` result and collects one
|
|
59
|
+
final restore confirmation; it does not parse backup contents, decide backend
|
|
60
|
+
eligibility or apply data automatically. The complete file, preparation and
|
|
61
|
+
final input remain bound to their card/operation identity and current revision.
|
|
62
|
+
The backend distinguishes unsealed receiving, active checking, a sealed file
|
|
63
|
+
needing a new check, a current confirmation and actual rejection. Definite
|
|
64
|
+
file/mainnet rejection is independent of local-data confirmation revision and
|
|
65
|
+
survives Back until explicit file selection changes. The View's current file-job
|
|
66
|
+
progress describes communication only; it cannot grant restoration authority.
|
|
67
|
+
|
|
68
|
+
Recorded backup locations use backend-native folder and file-name fields;
|
|
69
|
+
optional `App.downloadFile` delivery remains separate from local publication.
|
|
70
|
+
|
|
71
|
+
The shared server uses the pinned MCP SDK Streamable HTTP transport behind authenticated loopback access. Stdio clients forward tool, resource and prompt requests with their original client identity and capabilities. SDK 1.31.0 limits each internal HTTP request body to 4 MiB, including its complete MCP JSON-RPC envelope and metadata. Oversized bodies are refused before tool or card dispatch. Card calls additionally have a 64 KiB envelope budget; ordinary MCP calls do not inherit that smaller limit. Restore uploads retain their 16 MiB file limit and are split into messages within the card budget. The SDK's internal HTTP batch guard does not expose a stdio batch feature.
|
|
21
72
|
|
|
22
73
|
## WalletConnect Runtime
|
|
23
74
|
|
|
@@ -167,13 +218,15 @@ facts; its absence/timeout does not prove execution failure.
|
|
|
167
218
|
SDK session storage persists only the pinned connection namespaces. History,
|
|
168
219
|
requests and unknown queue keys are volatile. The SDK has no supported complete
|
|
169
220
|
in-process disposal; its owner process lifetime bounds callbacks and storage.
|
|
170
|
-
The parent uses a fixed packaged Node child entrypoint and private
|
|
221
|
+
The parent uses a fixed packaged Node child entrypoint and private package-bound IPC.
|
|
171
222
|
Only the SDK child owns SDK storage. The supervisor fences a terminating run,
|
|
172
223
|
sends SIGKILL to its owned child and waits for actual exit. Its explicit
|
|
173
|
-
replacement primitive
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
224
|
+
replacement primitive is private infrastructure. Settings/Troubleshooting
|
|
225
|
+
owns explicit run/impact preparation, atomic input revocation/admission,
|
|
226
|
+
old-child exit, next-run reservation and ready/failure recording. Connect does
|
|
227
|
+
not own restart. A new explicit Settings operation can supersede a startup
|
|
228
|
+
still pending; known failure and its first timestamp remain immutable.
|
|
229
|
+
Late callbacks cannot reopen old authority or submit another transaction.
|
|
177
230
|
|
|
178
231
|
Snapshots and per-session versions distinguish present, absent and unusable
|
|
179
232
|
sessions. Source inspection failure disables the service instead of becoming an
|
package/docs/UTILITY_INDEX.md
CHANGED
|
@@ -43,7 +43,7 @@ Source-checkout scripts are not packaged product commands, MCP tools, review-tim
|
|
|
43
43
|
| Live Sui sent-function activity summary | `read.summarize_sui_function_activity_scan` | Implemented | Summarizes bounded sent-function rows. Not P&L, route recommendation, or signing readiness. |
|
|
44
44
|
| Stored Sui activity summary | `read.summarize_sui_account_activity` | Implemented | Summarizes stored normalized Sui activity facts, including stored Move call, balance change, object/event, gas, execution error details, and optional protocol activity labels when evidence is available. |
|
|
45
45
|
| Stored account asset timeline | `read.get_account_asset_timeline` | Implemented | Builds stored local account asset net-flow bars and optional DeepBook USDC token-denominated candle references. Not held balances, complete wallet history, USD value, P&L, cost basis, route advice, transaction building, or signing readiness. |
|
|
46
|
-
| Local settings | `settings.create_local_settings_session`, `settings.get_local_settings` | Implemented | MCP
|
|
46
|
+
| Local settings | `settings.create_local_settings_session`, `settings.get_local_settings` | Implemented | MCP opens an internal Settings card or reads settings. App-only preparation/confirmation owns changes, files and explicit connection-service recovery. Stored endpoints apply after all participating apps restart. |
|
|
47
47
|
| Release package check | `npm run release:check` | Maintainer, source checkout | Verifies metadata, tests/build, tarball assets/licenses and installed MCP/Settings startup. Requires network and loopback access; no wallet pairing, signing or publishing. |
|
|
48
48
|
| Mainnet read smoke | `npm run smoke:mainnet` | Manual | Runs selected mainnet read paths from built `dist/`. Build first. Not part of CI or `release:check`; see notes below. |
|
|
49
49
|
| Sui GraphQL function filter probe | `npm exec -- tsx scripts/sui-graphql-function-filter-probe.ts [--endpoint <mainnet-graphql-url>] [--sample-size <1-50>] [--timeout-ms <ms>]` | Manual, source evidence only | Runs a read-only Sui mainnet GraphQL source-shape probe for function-filter diagnostics; see notes below. |
|
|
@@ -51,19 +51,22 @@ Source-checkout scripts are not packaged product commands, MCP tools, review-tim
|
|
|
51
51
|
|
|
52
52
|
## Release Package Check
|
|
53
53
|
|
|
54
|
-
`npm run release:check` is a source-checkout maintainer command. Node 22
|
|
54
|
+
`npm run release:check` is a source-checkout maintainer command. Node 22.12+ within
|
|
55
|
+
22.x, or Node 24+,
|
|
55
56
|
installed development dependencies, npm registry access for a temporary tarball
|
|
56
57
|
installation, local loopback sockets, and reachable Sui mainnet endpoints are
|
|
57
58
|
required. Native SQLite must work both in the checkout and the installed package.
|
|
59
|
+
The source build and tests use Vite, Rolldown and Vitest's common Node ranges; the
|
|
60
|
+
installed package's Node runtime requirement is documented in MCP Setup.
|
|
58
61
|
The runtime uses its built-in endpoints unless `SUI_GRPC_URL` or `SUI_GRAPHQL_URL`
|
|
59
62
|
is supplied; the actual mainnet checks remain enabled.
|
|
60
63
|
|
|
61
64
|
The command checks metadata, types, tests, builds, package contents and licenses,
|
|
62
65
|
then launches the installed package through stdio MCP with a new data directory
|
|
63
66
|
and an independent port. It reads the registered tools and resources, creates a
|
|
64
|
-
Settings
|
|
65
|
-
|
|
66
|
-
that restart input
|
|
67
|
+
Settings card only in that temporary database, and checks the six internal
|
|
68
|
+
HTML resources, app-only tools, scoped status and retired-route rejection. A scoped test card verifies
|
|
69
|
+
that Connect rejects retired restart input and opening manage does not pair. The check
|
|
67
70
|
verifies the isolated SDK retains exclusive storage ownership until shutdown. It waits
|
|
68
71
|
for process termination before removing its installation. A termination failure preserves the temporary files for cleanup
|
|
69
72
|
after the process stops. It does not pair, sign, submit, publish, or mutate the
|
|
@@ -259,7 +262,7 @@ It is not an MCP tool, not a CI check, not packaged product functionality, not r
|
|
|
259
262
|
- Local replay output is debug evidence only. The utility is not an MCP tool, review-time simulation, wallet authorization, signing readiness, or onchain transaction submission/execution.
|
|
260
263
|
- When a review activity output has `lowSampleWarning: true`, report raw counts and avoid inferring behavior patterns.
|
|
261
264
|
- For review activity list output, `dataScope.recordCount` is the full matching local review count. The returned `activities` array can be shorter when `truncated.activities: true`.
|
|
262
|
-
-
|
|
265
|
+
- Settings card actions require scoped permission and explicit confirmation. They change local settings/data or recover the connection service without authorizing a new transaction, signing or custody. Ordinary MCP opens the card or reads settings; app-only file transfer never exposes raw backup bytes to the model.
|
|
263
266
|
|
|
264
267
|
### Optional account-bound review smoke
|
|
265
268
|
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
WalletConnect provides approved Sui mainnet account context and a transport for
|
|
4
4
|
individual wallet requests. It is not login, proof of address ownership, custody, or standing permission to transact. Frontend behavior is defined in
|
|
5
|
-
[Frontend Policy](FRONTEND_POLICY.md)
|
|
5
|
+
[Frontend Policy](https://github.com/zktx-mcp/sui-mcp/blob/main/docs/FRONTEND_POLICY.md)
|
|
6
|
+
in the source repository; tools are in [MCP Tools](MCP_TOOLS.md).
|
|
6
7
|
|
|
7
8
|
## Connection and read account
|
|
8
9
|
|
|
@@ -19,9 +20,23 @@ an explicit retry even if the other connection later ends. If multiple valid con
|
|
|
19
20
|
review preparation or signing. The Connect card shows each exact target for
|
|
20
21
|
user-confirmed disconnection. After recorded disconnections leave one valid
|
|
21
22
|
connection and no pending connection operation, that connection becomes usable;
|
|
22
|
-
with
|
|
23
|
+
with no recorded or SDK-present connection and no pending operation, a new pairing is allowed. Terminal history alone does not
|
|
23
24
|
block it. A failed disconnect remains unconfirmed in the wallet app; its SDK
|
|
24
25
|
session cannot revive the failed product record.
|
|
26
|
+
The current SDK snapshot also gates pairing and account use. A known failed or
|
|
27
|
+
disconnected record whose SDK session remains present is a disconnect target
|
|
28
|
+
on a new card, not a usable wallet. `manageableConnectionIds` identifies those
|
|
29
|
+
exact targets and ordinary connected targets, including expired records.
|
|
30
|
+
An unmapped SDK session in a published available run sets
|
|
31
|
+
`connectionReconciliationRequired: true` after pending registration/cleanup
|
|
32
|
+
ends. An initializing or state_sync memory snapshot does not establish this
|
|
33
|
+
diagnosis, and an absent flag does not prove session absence. Pairing, account use, preparation and signing
|
|
34
|
+
remain blocked. Remove the retained connection in the wallet app, then confirm
|
|
35
|
+
its absence through the current connection service. Settings/Troubleshooting
|
|
36
|
+
can explicitly restart the service to inspect it again, but restarting never
|
|
37
|
+
promotes an unrecorded or failed session into a usable connection. The card does
|
|
38
|
+
not invent a connection ID or report physical SDK failure.
|
|
39
|
+
The SDK's availability and a recorded terminal outcome alone do not prove absence.
|
|
25
40
|
|
|
26
41
|
The backend validates accounts, Sui mainnet namespace, methods and expiry before
|
|
27
42
|
recording a connection. A single wallet-approved account can become read context
|
|
@@ -80,14 +95,21 @@ stored results. Normal startup is shown as initialization, not as a wallet
|
|
|
80
95
|
rejection. No implicit asset account is offered until the current service run
|
|
81
96
|
confirms a usable connection.
|
|
82
97
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
98
|
+
Settings owns explicit connection-service restart. Open its Troubleshooting
|
|
99
|
+
section, inspect the current run and affected requests, then confirm the
|
|
100
|
+
restart. Connect manages connections/approved addresses and retains individual
|
|
101
|
+
Disconnect controls for conflicting saved sessions; it does not own global
|
|
102
|
+
service controls. A restart waits for old child exit, new run reservation and
|
|
103
|
+
complete ready observation. Unsubmitted signing authority is revoked at
|
|
104
|
+
admission; late signatures cannot submit. Already submitted transactions keep
|
|
105
|
+
their original digest and observation. A new explicit Settings operation may
|
|
106
|
+
supersede a still-pending startup without erasing a known failure.
|
|
107
|
+
|
|
108
|
+
Restart completion does not confirm an interrupted disconnect or remove a
|
|
109
|
+
remote session. Check retained connections in the wallet app. If Settings or
|
|
110
|
+
the parent is unavailable, fully quit all apps using Sui MCP and reopen them;
|
|
111
|
+
closing a peer/window can leave the owner running. Full app restart, rather
|
|
112
|
+
than child restart, applies stored endpoints and installation changes.
|
|
91
113
|
|
|
92
114
|
A new owner records interrupted connection approval as stopped and unconfirmed
|
|
93
115
|
disconnection as failed. It does not repeat either request or restore their
|