feat: add receive file download preview contract
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user