feat: add receive file download preview contract

This commit is contained in:
zhaoyilun
2026-07-11 00:31:33 +08:00
parent 6164703a9a
commit 57db83d36c
6 changed files with 314 additions and 22 deletions

View File

@@ -240,6 +240,7 @@ func main() {
defaultContactCount := verifySearchContacts(ctx, session, "sender", "tools/call isphere_search_contacts default", 0)
defaultGroupCount := verifySearchGroups(ctx, session, "project", "tools/call isphere_search_groups default", 0)
defaultFileCount := verifyReceiveFiles(ctx, session, "report", "tools/call isphere_receive_files default", 0, "", "")
receiveFileDownloadPreviewBlocked := verifyReceiveFileDownloadPreviewBlocked(ctx, session)
sendPreviewOK, productionSendEnabled := verifySendMessagePreview(ctx, session)
sendFilePreviewOK, sendFileProductionEnabled, sendFileDuplicateDetected, sendFileConflictBlocked := verifySendFilePreview(ctx, session, sendFilePath)
configuredReceiveCount, configuredContactCount, configuredGroupCount, configuredFileCount := verifyConfiguredReceiveSource(ctx)
@@ -256,6 +257,7 @@ func main() {
"contact_count": defaultContactCount,
"group_count": defaultGroupCount,
"file_count": defaultFileCount,
"receive_file_download_preview_blocked": receiveFileDownloadPreviewBlocked,
"configured_receive_message_count": configuredReceiveCount,
"configured_contact_count": configuredContactCount,
"configured_group_count": configuredGroupCount,
@@ -843,6 +845,36 @@ func verifyReceiveFiles(ctx context.Context, session *mcp.ClientSession, nameCon
return len(filesValue)
}
func verifyReceiveFileDownloadPreviewBlocked(ctx context.Context, session *mcp.ClientSession) bool {
callResult, err := session.CallTool(ctx, &mcp.CallToolParams{Name: "isphere_receive_files", Arguments: map[string]any{
"mode": "download",
"preview": true,
"file_ref": "msg-fixture-1:redacted-report.docx",
"output_dir": "C:\\tmp\\isphere-downloads",
"source_preference": "local_readonly",
"cursor": "",
}})
if err != nil {
fail("tools/call isphere_receive_files download_preview", err)
}
if callResult.IsError {
fail("tools/call isphere_receive_files download_preview", fmt.Errorf("tool returned isError=true: %#v", callResult.Content))
}
var payload map[string]any
encoded, _ := json.Marshal(callResult.StructuredContent)
if err := json.Unmarshal(encoded, &payload); err != nil {
fail("tools/call isphere_receive_files download_preview", fmt.Errorf("decode structuredContent %s: %w", encoded, err))
}
if payload["ok"] != false || payload["mode"] != "download" || payload["download_status"] != "blocked" || payload["blocked_reason_code"] != "file_cache_mapping_missing" {
fail("tools/call isphere_receive_files download_preview", fmt.Errorf("unexpected blocked payload: %s", encoded))
}
if payload["file_contents_read"] != false || payload["file_copied"] != false || payload["real_download_attempted"] != false || payload["raw_paths_returned"] != false {
fail("tools/call isphere_receive_files download_preview", fmt.Errorf("unexpected download side effects: %s", encoded))
}
return true
}
func encryptPacketLogLineForHarness(plaintext string) (string, error) {
block, err := des.NewCipher([]byte("hyhccdtm"))
if err != nil {
@@ -909,6 +941,7 @@ func fail(step string, err error) {
Assert-True ($script:harnessJson.contact_count -eq 0) "SDK harness contact_count mismatch: $($script:harnessJson.contact_count)"
Assert-True ($script:harnessJson.group_count -eq 0) "SDK harness group_count mismatch: $($script:harnessJson.group_count)"
Assert-True ($script:harnessJson.file_count -eq 0) "SDK harness file_count mismatch: $($script:harnessJson.file_count)"
Assert-True ($script:harnessJson.receive_file_download_preview_blocked -eq $true) "SDK harness receive_file_download_preview_blocked mismatch: $($script:harnessJson.receive_file_download_preview_blocked)"
Assert-True ($script:harnessJson.configured_receive_message_count -eq 1) "SDK harness configured_receive_message_count mismatch: $($script:harnessJson.configured_receive_message_count)"
Assert-True ($script:harnessJson.configured_contact_count -eq 1) "SDK harness configured_contact_count mismatch: $($script:harnessJson.configured_contact_count)"
Assert-True ($script:harnessJson.configured_group_count -eq 1) "SDK harness configured_group_count mismatch: $($script:harnessJson.configured_group_count)"
@@ -935,6 +968,7 @@ func fail(step string, err error) {
contact_count = $script:harnessJson.contact_count
group_count = $script:harnessJson.group_count
file_count = $script:harnessJson.file_count
receive_file_download_preview_blocked = $script:harnessJson.receive_file_download_preview_blocked
configured_receive_message_count = $script:harnessJson.configured_receive_message_count
configured_contact_count = $script:harnessJson.configured_contact_count
configured_group_count = $script:harnessJson.configured_group_count