From cef76ce1fca17784c7895fb94205d2d331861976 Mon Sep 17 00:00:00 2001 From: Kaede Akino Date: Wed, 23 Sep 2026 09:40:58 +0800 Subject: [PATCH] Document agent tool availability contracts --- openwiki/.claims/architecture/desktop-ui.json | 12 +- .../architecture/engineering-invariants.json | 12 +- openwiki/.claims/architecture/mobile-ui.json | 6 +- openwiki/.claims/architecture/module-map.json | 10 +- .../architecture/native-app-directories.json | 10 +- .../architecture/platform-runtime.json | 10 +- .../shared-module-directories.json | 8 +- .../supporting-system-directories.json | 8 +- .../architecture/system-boundaries.json | 10 +- .../concepts/agent-runtime-and-assistant.json | 200 ++++++++++++++++-- .../remote-services-and-forwarding.json | 6 +- .../integrations/mcp-server-and-bridge.json | 40 +++- openwiki/.claims/quickstart.json | 8 +- .../workflows/ssh-session-lifecycle.json | 6 +- openwiki/.last-update.json | 4 +- openwiki/.page-manifest.json | 114 +++++----- openwiki/architecture/desktop-ui.md | 2 +- .../architecture/engineering-invariants.md | 2 +- openwiki/architecture/mobile-ui.md | 2 +- openwiki/architecture/module-map.md | 2 +- .../architecture/native-app-directories.md | 2 +- openwiki/architecture/platform-runtime.md | 2 +- .../architecture/shared-module-directories.md | 2 +- .../supporting-system-directories.md | 2 +- openwiki/architecture/system-boundaries.md | 2 +- .../concepts/agent-runtime-and-assistant.md | 68 +++++- .../remote-services-and-forwarding.md | 2 +- .../integrations/mcp-server-and-bridge.md | 12 +- openwiki/quickstart.md | 2 +- openwiki/workflows/ssh-session-lifecycle.md | 2 +- 30 files changed, 408 insertions(+), 160 deletions(-) diff --git a/openwiki/.claims/architecture/desktop-ui.json b/openwiki/.claims/architecture/desktop-ui.json index 5d97d851..c5570b0b 100644 --- a/openwiki/.claims/architecture/desktop-ui.json +++ b/openwiki/.claims/architecture/desktop-ui.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:fad06b683f4e91f808959ed85ce962b1c86d64a67078b39c7ba20f8aa12ad35b", + "pageVersion": "sha256:9e4dcfe15396af0c8e9ed77ff7347eac829aeff9d111ad37757a2e3f1e63b2c1", "claims": [ { "id": "claim_5a53c5a47b7445f7a7b6f8865297a805", @@ -104,13 +104,17 @@ "id": "claim_1361b995f8e646c6a534186edcd83dc7", "statement": "The workspace compact Assistant has routing separate from the full Assistant destination and composes transcript/interaction regions with explicit terminal context; Escape cannot fall through from a blocking interaction into closing the conversation.", "evidence": [ + { + "resource": "repo://TFM/Features/Assistant/AssistantView.swift#L152-L225", + "version": "repo-lines-v1:sha256:d47d11a81fc91f016d97ec23e87c1a89e608cb049d364bda5cc33966ce5e6a5e:eyJzZWxlY3RlZExpbmVDb3VudCI6NzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk0YmFkZWYzNjBmZDM2NTYwNGE2ODg4NGU5NDJiYzA4M2RjZDQ0ZTJhNTBlYzYyMjkzOTExZDYxOTg1MmVhNDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU1MDMyZTk2NGQwOTMyMzUxZTVkMTg1MjY5MjgxYjE3MWEzYTA5YjA4YjI4NmU2NjFlYTQ3MDMyM2M4MmViNGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjEyZjUyZjI3YTJiNzI0ZTlmYTM4NjA0ZGJkZGZlODczYTlkMTJhOTNiZWI0YWNiYWU5ZjFmNzk3ZDZkOTg1OTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgifQ" + }, { "resource": "repo://TFM/Features/Assistant/AssistantView.swift#L7-L14", "version": "repo-lines-v1:sha256:a3755412e818d877b2c9c59bc75105e21157bb4519e47f13f4ee6fd2764de97b:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmFlZDhjNWNjMzg0MGRjMjMwYTRiNGY3MTExN2UxZGE4MjRmZmJmYjA5ZTZjMWVmYWY4M2U1Mzc5MTNkNjkzZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTcxZGE3NDM0NTdjMDNhMjQwNDRhMTk3NTQ2MGE2YzQ4OTllODBiNzUyOGUzMDRkMzE0ZDY3ZmU1NWE0MTYwNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWMwMDRmMzdkODZkOTFjYzUyZGY1ZDhiYjAyYjU0YmI1ODk5YjA1MWYzY2M0YTU5ODk2ZDFiNTZjYjQ1NGNiMiJ9" }, { - "resource": "repo://TFM/Features/Assistant/AssistantView.swift#L89-L225", - "version": "repo-lines-v1:sha256:a235a02d0e28feb4b79c8d8a6f5e3844a9598fd35568c864ee8ed9cabfbc4c8d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTM3LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI5MTFlOGI2MmUzM2JjNDg0MWM4NmE1MmJiZmQ0MjRhZTQxZTBiYmVhODI0MjJkMTBlMGQyMGI5ZjMwNWZiNDBjIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI1NTAzMmU5NjRkMDkzMjM1MWU1ZDE4NTI2OTI4MWIxNzFhM2EwOWIwOGIyODZlNjYxZWE0NzAzMjNjODJlYjRkIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiIyYTFiOTczN2RlNTU1MTEwZjU1YmYyZmI2N2UxNzk1ZTU1ODA4NDdjYTQzOWI0YjBkZmJjN2U1YmZjNGU1YjcxIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI5OTliZGVmZWVhY2E2MzQwZTAyOTBkYzg2ZTg4OWM4OWQ1ZTE4OWFhNWJhNDRiNTg1YjNiNzA3MzRmNGE2MmQ4In0" + "resource": "repo://TFM/Features/Assistant/AssistantView.swift#L89-L96", + "version": "repo-lines-v1:sha256:b2fe9ba7bbc30e22c4c7c13247a4e7f913020f78afc2693088e31914f9c554ac:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTExZThiNjJlMzNiYzQ4NDFjODZhNTJiYmZkNDI0YWU0MWUwYmJlYTgyNDIyZDEwZTBkMjBiOWYzMDVmYjQwYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmExYjk3MzdkZTU1NTExMGY1NWJmMmZiNjdlMTc5NWU1NTgwODQ3Y2E0MzliNGIwZGZiYzdlNWJmYzRlNWI3MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGE0ZjU3YTVlYzJkYWUxY2Q0ZmY3MDczMDE0Zjg4YTM0NWJiMzVlMmJmNDFjNDMzMzc4NjE2ZjAzNjM2OGM2MSJ9" } ] }, @@ -203,6 +207,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-23T00:14:42.075Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/architecture/engineering-invariants.json b/openwiki/.claims/architecture/engineering-invariants.json index e3d1bf4a..e415c36d 100644 --- a/openwiki/.claims/architecture/engineering-invariants.json +++ b/openwiki/.claims/architecture/engineering-invariants.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:6f98da9e8f070ebc2a0b91545058eb3aa5a411129c7a18c9b33ee9eb6da8e799", + "pageVersion": "sha256:75fe464fb65e761e5eeaab3f31f1a2d852175cc5f78f5b099ddffee4a8655971", "claims": [ { "id": "claim_72f9329a158e418cbf0fd6394f82815e", @@ -52,11 +52,11 @@ }, { "resource": "repo://TFM/App/AppModel.swift", - "version": "repo-file-v1:sha256:1ac6f933da6e8e14162cab3e53a64ad3f1b4bd1bb3c55f6f3ead3286054c0cc1" + "version": "repo-file-v1:sha256:ba89018766f45b430033efc2969c0307ba30c0d298bd8b55a51e17a08915c767" }, { "resource": "repo://TFM/Features/Workspaces/WindowModel.swift", - "version": "repo-file-v1:sha256:4bff3bbe87d980066344224e6c189b784360bb2c0fc360d138b4bb0a6d816420" + "version": "repo-file-v1:sha256:4c153bf5b7d97bf82683269527c35e76d9666ce459b681af16e7eed4a586e837" } ] }, @@ -110,11 +110,11 @@ }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/AssistantToolRegistry.swift", - "version": "repo-file-v1:sha256:486ca4d2997672c82c417051e24392ee610f9f838dff89cffedaceff0891f9fd" + "version": "repo-file-v1:sha256:8ccfafe881aacc3f7232d30cef9c97588787771dd925d726b5591efa15c92021" }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift", - "version": "repo-file-v1:sha256:9a6ac5989bbe56b568db0e639c84f0608a8dc5b4cd089438c64d91a587a91527" + "version": "repo-file-v1:sha256:48b3039f44d716afaacc3e0986a88fcaad3a32d6fa00a68dba265b82e0efc284" }, { "resource": "repo://TFMTests/ArchitectureBoundaryTests.swift#L137-L160", @@ -325,6 +325,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-23T00:59:31.979Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/architecture/mobile-ui.json b/openwiki/.claims/architecture/mobile-ui.json index b2a4b991..1da889e3 100644 --- a/openwiki/.claims/architecture/mobile-ui.json +++ b/openwiki/.claims/architecture/mobile-ui.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:769919ef95916ccc91f27ef2666730600005e79c052893c2ae098644ac389a07", + "pageVersion": "sha256:a1e240ca495ddf76ace3e9861b2f459a2fa61e2d53179352e87b15452e6828ee", "claims": [ { "id": "claim_fbb919f62a2d4ab88aafcc4c1186731b", @@ -142,7 +142,7 @@ }, { "resource": "repo://TFI/Application/Agent/MobileAssistantModel.swift#L9-L39", - "version": "repo-lines-v1:sha256:82b51c51f7632b9209f536cc1ff9f4eff1e9b61477387dbf7369a46f05bd8809:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4ZDUwMzc5NDJmNThhMWQwZWRlN2QxNDYwNmMwZTJlOTE2OGUwMzRkNDFiYTU2ZThkMTA5YTRlNzY5NTgxZGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIwYWZkMDliMDljYTY2Y2Y0YmIyN2QwZWMxOWQ2ODUyMzA1OTYxNWE4OGQ2MzRjYTIzYjMxYjdmYmM1OGY5MDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ4NjlhNmI3MWE1OTA2NzY4MWZkOTE5ZWJlNThkZmMzODZkMzI3YTRhNmJlMDFiMGI0YWYwYmFkMmViYWY3MzcifQ" + "version": "repo-lines-v1:sha256:f6690fa9486d7a196714cdb9b22349dae117807c62649feffd2126f03dba2f3f:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4ZDUwMzc5NDJmNThhMWQwZWRlN2QxNDYwNmMwZTJlOTE2OGUwMzRkNDFiYTU2ZThkMTA5YTRlNzY5NTgxZGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIwYWZkMDliMDljYTY2Y2Y0YmIyN2QwZWMxOWQ2ODUyMzA1OTYxNWE4OGQ2MzRjYTIzYjMxYjdmYmM1OGY5MDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ4NjlhNmI3MWE1OTA2NzY4MWZkOTE5ZWJlNThkZmMzODZkMzI3YTRhNmJlMDFiMGI0YWYwYmFkMmViYWY3MzcifQ" }, { "resource": "repo://TFI/Features/AI/MobileAssistantConversation.swift#L447-L544", @@ -263,6 +263,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-23T00:59:31.979Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/architecture/module-map.json b/openwiki/.claims/architecture/module-map.json index 49074100..09535e72 100644 --- a/openwiki/.claims/architecture/module-map.json +++ b/openwiki/.claims/architecture/module-map.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:8c5b708036c7d089f4821e24e31a00e1684e44d78bf3a8182b9df0800ffe7f00", + "pageVersion": "sha256:cd736475053bed4751ff7b4f06ee0433c8d3ac3e74f3866d585bc958dd6b25d5", "claims": [ { "id": "claim_34230e88036241baad093fb8de5bac8e", @@ -44,7 +44,7 @@ }, { "resource": "repo://TFM/Features/Workspaces/WindowModel.swift", - "version": "repo-file-v1:sha256:4bff3bbe87d980066344224e6c189b784360bb2c0fc360d138b4bb0a6d816420" + "version": "repo-file-v1:sha256:4c153bf5b7d97bf82683269527c35e76d9666ce459b681af16e7eed4a586e837" } ] }, @@ -88,7 +88,7 @@ }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L5-L68", - "version": "repo-lines-v1:sha256:b37728d2b6eed175b24a9d2761439467c6455e58de8c995e99c80bcdd740c58f:eyJzZWxlY3RlZExpbmVDb3VudCI6NjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2NTgzYWUxYWM2NTU4YTlmNGQ0MTYyYzcxZDJjMTk4OTE3OWI2MDljYWE0MDg0OTMzYjZlY2E5YWEzYWU1ZDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzMDBjMjE3MTcwZWFmOGZmOGRmMTgyYzc0Y2FkZDY2YjQ0NWFiOTZiYTVmY2YzOWYyZGE0MjM3YzdmYTA3ZDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM0NmY4Y2RkMDA0NDk4MWZkNzI0N2EwYzg5MzE2ODM0ZDNlZGFjOWU1MTAwNThkNGMwNGNhM2RkODczYzFhYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQxOGJkYjA3YzQ1MDc0ZDQ1OGM1ZTE2N2I2YmNiYzNkNDQ3M2E1NzNlZTExYzQyMzI0NjBjMmIyODZmNmRiNDgifQ" + "version": "repo-lines-v1:sha256:8ec2078dc1ab7a5f6087ab497ecb18aa1b47942cd6213e8f611f6ee6b14c1d26:eyJzZWxlY3RlZExpbmVDb3VudCI6NjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2NTgzYWUxYWM2NTU4YTlmNGQ0MTYyYzcxZDJjMTk4OTE3OWI2MDljYWE0MDg0OTMzYjZlY2E5YWEzYWU1ZDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzMDBjMjE3MTcwZWFmOGZmOGRmMTgyYzc0Y2FkZDY2YjQ0NWFiOTZiYTVmY2YzOWYyZGE0MjM3YzdmYTA3ZDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM0NmY4Y2RkMDA0NDk4MWZkNzI0N2EwYzg5MzE2ODM0ZDNlZGFjOWU1MTAwNThkNGMwNGNhM2RkODczYzFhYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQxOGJkYjA3YzQ1MDc0ZDQ1OGM1ZTE2N2I2YmNiYzNkNDQ3M2E1NzNlZTExYzQyMzI0NjBjMmIyODZmNmRiNDgifQ" }, { "resource": "repo://Termind.xcodeproj/project.pbxproj", @@ -102,7 +102,7 @@ "evidence": [ { "resource": "repo://Frameworks/TermindApplication/Agent/AssistantExecutionController.swift#L6-L44", - "version": "repo-lines-v1:sha256:c45de1cccebc1889e8de88bb9520e33aeaba05e6c2c8faa7876eba2acb7f3493:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA3YzgyYWM5Yzk2MGJhNjIyNDBlYWZkZDE0ZTY2NTI1NjQ2MTMzOTE5NjU2MzNiODhlMWIwNjk5MjY2MGI2NTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFhZDFiYmYwZjdkYWQyYTAyNGQxMzBmZjQzOWQ5M2Y0ODZhZDQwMmQ5Y2U5N2Q3ZDVhMDZhYTUxNjFlMmIyZWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI4MjgyYmRhZjE5OTYzODdkODg5MzczMjM0Njc1ZjQ2YTI5N2UxN2RhZjAxMGJjMWI5OGMzNjA0Zjk5OGEwNDMifQ" + "version": "repo-lines-v1:sha256:acf89cdfba502ef9c32f962dc43493dd515971c9c8b203533c43044e3ebca670:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA3YzgyYWM5Yzk2MGJhNjIyNDBlYWZkZDE0ZTY2NTI1NjQ2MTMzOTE5NjU2MzNiODhlMWIwNjk5MjY2MGI2NTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFhZDFiYmYwZjdkYWQyYTAyNGQxMzBmZjQzOWQ5M2Y0ODZhZDQwMmQ5Y2U5N2Q3ZDVhMDZhYTUxNjFlMmIyZWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI4MjgyYmRhZjE5OTYzODdkODg5MzczMjM0Njc1ZjQ2YTI5N2UxN2RhZjAxMGJjMWI5OGMzNjA0Zjk5OGEwNDMifQ" }, { "resource": "repo://Frameworks/TermindApplication/Transfers/RemoteFileSystem.swift#L4-L14", @@ -151,6 +151,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-23T00:14:42.075Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/architecture/native-app-directories.json b/openwiki/.claims/architecture/native-app-directories.json index 7813df32..156bf01c 100644 --- a/openwiki/.claims/architecture/native-app-directories.json +++ b/openwiki/.claims/architecture/native-app-directories.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:411c153b0239360e9fc0a413c9ff012607f8aa71dfd42cf349bcfc83eb2fb690", + "pageVersion": "sha256:daaecfb65b33663c617a5627c7c65fc6e45cd05b85017d53e6a48c818a1e15b5", "claims": [ { "id": "claim_8e9cf2adb50847f98fcd4516cb0ed521", @@ -20,7 +20,7 @@ }, { "resource": "repo://TFM/Features/Workspaces/WindowModel.swift", - "version": "repo-file-v1:sha256:4bff3bbe87d980066344224e6c189b784360bb2c0fc360d138b4bb0a6d816420" + "version": "repo-file-v1:sha256:4c153bf5b7d97bf82683269527c35e76d9666ce459b681af16e7eed4a586e837" } ] }, @@ -56,7 +56,7 @@ }, { "resource": "repo://TFM/Application/MCPServer/MCPServerTools.swift", - "version": "repo-file-v1:sha256:ad52ce8d73955e9220c24a05db6827b45359c2de46b59d5f315f733354bfc0fd" + "version": "repo-file-v1:sha256:7fb10e9423fc06bfc8c45a3b189ffd03cc3b8f588915c1e9afa3cc33b91d6020" }, { "resource": "repo://TFM/Application/MCPServer/MCPUploadCoordinator.swift", @@ -112,7 +112,7 @@ }, { "resource": "repo://TFM/Features/Assistant/AssistantView.swift", - "version": "repo-file-v1:sha256:f452636d57e54e873af2d27b0a25492e6ae8f2cb2eff8543ae001d09c5a6b265" + "version": "repo-file-v1:sha256:3d9babddce2d3da3e2f1787094a40692a2b7a4a2d2c22eed61f5372b4221b205" }, { "resource": "repo://TFM/Features/Shell/WindowRoute.swift", @@ -231,6 +231,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-23T00:14:42.075Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/architecture/platform-runtime.json b/openwiki/.claims/architecture/platform-runtime.json index 6cb8c320..d38210aa 100644 --- a/openwiki/.claims/architecture/platform-runtime.json +++ b/openwiki/.claims/architecture/platform-runtime.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:1928bdff8b5655653f6d6eaa66489a0a3c967dfebdf9c9c86245df87bf2011c1", + "pageVersion": "sha256:f6b1eae907640a27121b4c2f41cc040490003e2944d38858bc7a4719581bd0b3", "claims": [ { "id": "claim_bd9f5ddda6b6466eb79c622b02fd73f2", @@ -40,7 +40,7 @@ "evidence": [ { "resource": "repo://TFM/App/AppModel.swift", - "version": "repo-file-v1:sha256:1ac6f933da6e8e14162cab3e53a64ad3f1b4bd1bb3c55f6f3ead3286054c0cc1" + "version": "repo-file-v1:sha256:ba89018766f45b430033efc2969c0307ba30c0d298bd8b55a51e17a08915c767" }, { "resource": "repo://TFM/App/RootView.swift", @@ -48,7 +48,7 @@ }, { "resource": "repo://TFM/Features/Workspaces/WindowModel.swift", - "version": "repo-file-v1:sha256:4bff3bbe87d980066344224e6c189b784360bb2c0fc360d138b4bb0a6d816420" + "version": "repo-file-v1:sha256:4c153bf5b7d97bf82683269527c35e76d9666ce459b681af16e7eed4a586e837" } ] }, @@ -224,7 +224,7 @@ }, { "resource": "repo://TFM/Features/Workspaces/WindowModel.swift", - "version": "repo-file-v1:sha256:4bff3bbe87d980066344224e6c189b784360bb2c0fc360d138b4bb0a6d816420" + "version": "repo-file-v1:sha256:4c153bf5b7d97bf82683269527c35e76d9666ce459b681af16e7eed4a586e837" } ] }, @@ -257,6 +257,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-23T00:14:42.075Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/architecture/shared-module-directories.json b/openwiki/.claims/architecture/shared-module-directories.json index ca03951f..9d33af90 100644 --- a/openwiki/.claims/architecture/shared-module-directories.json +++ b/openwiki/.claims/architecture/shared-module-directories.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:6ba56baf56fd5439756c528b55b7765f506ed716677142f0298cbad9f4cf2f93", + "pageVersion": "sha256:42206a596cfd036cd1cf7bd7bc2f0e8ec5f96a4577648a864cebd3f8db5d0a3f", "claims": [ { "id": "claim_6e30bc8cde134c23815d274543d0786c", @@ -60,11 +60,11 @@ "evidence": [ { "resource": "repo://Frameworks/TermindApplication/Agent/AssistantExecutionController.swift#L6-L44", - "version": "repo-lines-v1:sha256:c45de1cccebc1889e8de88bb9520e33aeaba05e6c2c8faa7876eba2acb7f3493:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA3YzgyYWM5Yzk2MGJhNjIyNDBlYWZkZDE0ZTY2NTI1NjQ2MTMzOTE5NjU2MzNiODhlMWIwNjk5MjY2MGI2NTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFhZDFiYmYwZjdkYWQyYTAyNGQxMzBmZjQzOWQ5M2Y0ODZhZDQwMmQ5Y2U5N2Q3ZDVhMDZhYTUxNjFlMmIyZWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI4MjgyYmRhZjE5OTYzODdkODg5MzczMjM0Njc1ZjQ2YTI5N2UxN2RhZjAxMGJjMWI5OGMzNjA0Zjk5OGEwNDMifQ" + "version": "repo-lines-v1:sha256:acf89cdfba502ef9c32f962dc43493dd515971c9c8b203533c43044e3ebca670:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA3YzgyYWM5Yzk2MGJhNjIyNDBlYWZkZDE0ZTY2NTI1NjQ2MTMzOTE5NjU2MzNiODhlMWIwNjk5MjY2MGI2NTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFhZDFiYmYwZjdkYWQyYTAyNGQxMzBmZjQzOWQ5M2Y0ODZhZDQwMmQ5Y2U5N2Q3ZDVhMDZhYTUxNjFlMmIyZWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI4MjgyYmRhZjE5OTYzODdkODg5MzczMjM0Njc1ZjQ2YTI5N2UxN2RhZjAxMGJjMWI5OGMzNjA0Zjk5OGEwNDMifQ" }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L5-L68", - "version": "repo-lines-v1:sha256:b37728d2b6eed175b24a9d2761439467c6455e58de8c995e99c80bcdd740c58f:eyJzZWxlY3RlZExpbmVDb3VudCI6NjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2NTgzYWUxYWM2NTU4YTlmNGQ0MTYyYzcxZDJjMTk4OTE3OWI2MDljYWE0MDg0OTMzYjZlY2E5YWEzYWU1ZDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzMDBjMjE3MTcwZWFmOGZmOGRmMTgyYzc0Y2FkZDY2YjQ0NWFiOTZiYTVmY2YzOWYyZGE0MjM3YzdmYTA3ZDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM0NmY4Y2RkMDA0NDk4MWZkNzI0N2EwYzg5MzE2ODM0ZDNlZGFjOWU1MTAwNThkNGMwNGNhM2RkODczYzFhYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQxOGJkYjA3YzQ1MDc0ZDQ1OGM1ZTE2N2I2YmNiYzNkNDQ3M2E1NzNlZTExYzQyMzI0NjBjMmIyODZmNmRiNDgifQ" + "version": "repo-lines-v1:sha256:8ec2078dc1ab7a5f6087ab497ecb18aa1b47942cd6213e8f611f6ee6b14c1d26:eyJzZWxlY3RlZExpbmVDb3VudCI6NjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2NTgzYWUxYWM2NTU4YTlmNGQ0MTYyYzcxZDJjMTk4OTE3OWI2MDljYWE0MDg0OTMzYjZlY2E5YWEzYWU1ZDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzMDBjMjE3MTcwZWFmOGZmOGRmMTgyYzc0Y2FkZDY2YjQ0NWFiOTZiYTVmY2YzOWYyZGE0MjM3YzdmYTA3ZDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM0NmY4Y2RkMDA0NDk4MWZkNzI0N2EwYzg5MzE2ODM0ZDNlZGFjOWU1MTAwNThkNGMwNGNhM2RkODczYzFhYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQxOGJkYjA3YzQ1MDc0ZDQ1OGM1ZTE2N2I2YmNiYzNkNDQ3M2E1NzNlZTExYzQyMzI0NjBjMmIyODZmNmRiNDgifQ" }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L92-L162", @@ -291,6 +291,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-23T00:14:42.075Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/architecture/supporting-system-directories.json b/openwiki/.claims/architecture/supporting-system-directories.json index 132f5718..26a9203c 100644 --- a/openwiki/.claims/architecture/supporting-system-directories.json +++ b/openwiki/.claims/architecture/supporting-system-directories.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:fa243e662bcccf538fa4c830c781851a26ec9aea0c86163cfc99644ac7364159", + "pageVersion": "sha256:2711b0e7d443185dd21a3d96c2cb80f84a5e2149a5a6fc64fda5363afcbc86be", "claims": [ { "id": "claim_8809151c43594803b83cf0451d849112", @@ -60,7 +60,7 @@ }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L5-L68", - "version": "repo-lines-v1:sha256:b37728d2b6eed175b24a9d2761439467c6455e58de8c995e99c80bcdd740c58f:eyJzZWxlY3RlZExpbmVDb3VudCI6NjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2NTgzYWUxYWM2NTU4YTlmNGQ0MTYyYzcxZDJjMTk4OTE3OWI2MDljYWE0MDg0OTMzYjZlY2E5YWEzYWU1ZDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzMDBjMjE3MTcwZWFmOGZmOGRmMTgyYzc0Y2FkZDY2YjQ0NWFiOTZiYTVmY2YzOWYyZGE0MjM3YzdmYTA3ZDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM0NmY4Y2RkMDA0NDk4MWZkNzI0N2EwYzg5MzE2ODM0ZDNlZGFjOWU1MTAwNThkNGMwNGNhM2RkODczYzFhYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQxOGJkYjA3YzQ1MDc0ZDQ1OGM1ZTE2N2I2YmNiYzNkNDQ3M2E1NzNlZTExYzQyMzI0NjBjMmIyODZmNmRiNDgifQ" + "version": "repo-lines-v1:sha256:8ec2078dc1ab7a5f6087ab497ecb18aa1b47942cd6213e8f611f6ee6b14c1d26:eyJzZWxlY3RlZExpbmVDb3VudCI6NjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2NTgzYWUxYWM2NTU4YTlmNGQ0MTYyYzcxZDJjMTk4OTE3OWI2MDljYWE0MDg0OTMzYjZlY2E5YWEzYWU1ZDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzMDBjMjE3MTcwZWFmOGZmOGRmMTgyYzc0Y2FkZDY2YjQ0NWFiOTZiYTVmY2YzOWYyZGE0MjM3YzdmYTA3ZDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM0NmY4Y2RkMDA0NDk4MWZkNzI0N2EwYzg5MzE2ODM0ZDNlZGFjOWU1MTAwNThkNGMwNGNhM2RkODczYzFhYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQxOGJkYjA3YzQ1MDc0ZDQ1OGM1ZTE2N2I2YmNiYzNkNDQ3M2E1NzNlZTExYzQyMzI0NjBjMmIyODZmNmRiNDgifQ" } ] }, @@ -70,7 +70,7 @@ "evidence": [ { "resource": "repo://TFM/Application/MCPServer/MCPServerTools.swift", - "version": "repo-file-v1:sha256:ad52ce8d73955e9220c24a05db6827b45359c2de46b59d5f315f733354bfc0fd" + "version": "repo-file-v1:sha256:7fb10e9423fc06bfc8c45a3b189ffd03cc3b8f588915c1e9afa3cc33b91d6020" }, { "resource": "repo://TFM/Infrastructure/MCP/MCPServerSession.swift", @@ -237,6 +237,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-22T10:02:02.985Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/architecture/system-boundaries.json b/openwiki/.claims/architecture/system-boundaries.json index 9401f70b..5383f219 100644 --- a/openwiki/.claims/architecture/system-boundaries.json +++ b/openwiki/.claims/architecture/system-boundaries.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:db9f09d0c4799f6c8ecc04c8b993af8c45c2c71fbb32827587c3c99c945c3c2b", + "pageVersion": "sha256:3cbf1be9eb94f0eb87d83be0a1277c9801cb4df9a3da898ef95b63b20b72a785", "claims": [ { "id": "claim_085ce722f39f48eea75366ec3b3f7554", @@ -106,7 +106,7 @@ }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/AssistantToolRegistry.swift#L42-L68", - "version": "repo-lines-v1:sha256:f00dc05b6b14f14e9071bb2c3725c64e133622f8e78ffc3e87a20fba2c5752af:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4YjBhZGQ3NDg1ZGY0OTA5MTkwNzI5ZGEzYTVkZWY5MjVkZmFkMTQ2YTJkMTA1MDk5YmFjZTJiYmJhM2ViMDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiZTBhODk2YTNjYjAzNmM0NDZiNDgyMTA3MDA4ZDZkOTZmNTdkNzA2MGRiNDk4ZjQ5YTVhNjhkNDI1ZWI4NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRlYzQ4ZTU4YzVlMTBhZWJkMDdkOGQ5OTljOWJhYjg0MDBlNWRlMDA3NzE4YWQwNzA5OTkxOGRjOGMxMDg3ZjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM3OTRkMDJhODEyMTk0NGQxNzZkMjY1ZTliYjljYzU5ZjZhYjg5MGJjYWRmOGFlZmRlYmRiYmI0ZjJlYTg0NDQifQ" + "version": "repo-lines-v1:sha256:5e034e35b4291fbd3ada9dbf3613ec9e3f6865bf8b3945545efb078073d866f9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4YjBhZGQ3NDg1ZGY0OTA5MTkwNzI5ZGEzYTVkZWY5MjVkZmFkMTQ2YTJkMTA1MDk5YmFjZTJiYmJhM2ViMDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiZTBhODk2YTNjYjAzNmM0NDZiNDgyMTA3MDA4ZDZkOTZmNTdkNzA2MGRiNDk4ZjQ5YTVhNjhkNDI1ZWI4NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRlYzQ4ZTU4YzVlMTBhZWJkMDdkOGQ5OTljOWJhYjg0MDBlNWRlMDA3NzE4YWQwNzA5OTkxOGRjOGMxMDg3ZjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM3OTRkMDJhODEyMTk0NGQxNzZkMjY1ZTliYjljYzU5ZjZhYjg5MGJjYWRmOGFlZmRlYmRiYmI0ZjJlYTg0NDQifQ" }, { "resource": "repo://TFMTests/ArchitectureBoundaryTests.swift#L137-L160", @@ -120,7 +120,7 @@ "evidence": [ { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/AssistantToolRegistry.swift#L42-L68", - "version": "repo-lines-v1:sha256:f00dc05b6b14f14e9071bb2c3725c64e133622f8e78ffc3e87a20fba2c5752af:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4YjBhZGQ3NDg1ZGY0OTA5MTkwNzI5ZGEzYTVkZWY5MjVkZmFkMTQ2YTJkMTA1MDk5YmFjZTJiYmJhM2ViMDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiZTBhODk2YTNjYjAzNmM0NDZiNDgyMTA3MDA4ZDZkOTZmNTdkNzA2MGRiNDk4ZjQ5YTVhNjhkNDI1ZWI4NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRlYzQ4ZTU4YzVlMTBhZWJkMDdkOGQ5OTljOWJhYjg0MDBlNWRlMDA3NzE4YWQwNzA5OTkxOGRjOGMxMDg3ZjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM3OTRkMDJhODEyMTk0NGQxNzZkMjY1ZTliYjljYzU5ZjZhYjg5MGJjYWRmOGFlZmRlYmRiYmI0ZjJlYTg0NDQifQ" + "version": "repo-lines-v1:sha256:5e034e35b4291fbd3ada9dbf3613ec9e3f6865bf8b3945545efb078073d866f9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4YjBhZGQ3NDg1ZGY0OTA5MTkwNzI5ZGEzYTVkZWY5MjVkZmFkMTQ2YTJkMTA1MDk5YmFjZTJiYmJhM2ViMDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiZTBhODk2YTNjYjAzNmM0NDZiNDgyMTA3MDA4ZDZkOTZmNTdkNzA2MGRiNDk4ZjQ5YTVhNjhkNDI1ZWI4NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRlYzQ4ZTU4YzVlMTBhZWJkMDdkOGQ5OTljOWJhYjg0MDBlNWRlMDA3NzE4YWQwNzA5OTkxOGRjOGMxMDg3ZjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM3OTRkMDJhODEyMTk0NGQxNzZkMjY1ZTliYjljYzU5ZjZhYjg5MGJjYWRmOGFlZmRlYmRiYmI0ZjJlYTg0NDQifQ" }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L45-L62", @@ -128,7 +128,7 @@ }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L5-L23", - "version": "repo-lines-v1:sha256:a6707f4eac40956e70af3b606852201b6d17b54d295c771bb743f37fbad2797f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2NTgzYWUxYWM2NTU4YTlmNGQ0MTYyYzcxZDJjMTk4OTE3OWI2MDljYWE0MDg0OTMzYjZlY2E5YWEzYWU1ZDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk1OTRjZTkxMWRiMTE2YWVlNzAyNWMyYzAzNzE5NzZmZTVjN2M3Yzc1ZmY2MGQ3MTA4NDgyYzY0NjNmNDM4YTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM0NmY4Y2RkMDA0NDk4MWZkNzI0N2EwYzg5MzE2ODM0ZDNlZGFjOWU1MTAwNThkNGMwNGNhM2RkODczYzFhYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkzNjg4OWY0NDhlNDhjMWE0MjM5NjQ5ZDdkZTEyNzBlNDU1NDk0NDgyODY3NjQ4M2ZkYWY1YjhmYjkwZWUzN2EifQ" + "version": "repo-lines-v1:sha256:5e755dd6ce0298ca36f329631b3f5a5cc90482b69508938631e903a92f654856:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2NTgzYWUxYWM2NTU4YTlmNGQ0MTYyYzcxZDJjMTk4OTE3OWI2MDljYWE0MDg0OTMzYjZlY2E5YWEzYWU1ZDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk1OTRjZTkxMWRiMTE2YWVlNzAyNWMyYzAzNzE5NzZmZTVjN2M3Yzc1ZmY2MGQ3MTA4NDgyYzY0NjNmNDM4YTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM0NmY4Y2RkMDA0NDk4MWZkNzI0N2EwYzg5MzE2ODM0ZDNlZGFjOWU1MTAwNThkNGMwNGNhM2RkODczYzFhYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkzNjg4OWY0NDhlNDhjMWE0MjM5NjQ5ZDdkZTEyNzBlNDU1NDk0NDgyODY3NjQ4M2ZkYWY1YjhmYjkwZWUzN2EifQ" } ] }, @@ -191,6 +191,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-23T00:14:42.075Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/concepts/agent-runtime-and-assistant.json b/openwiki/.claims/concepts/agent-runtime-and-assistant.json index a5a5a15a..f6181567 100644 --- a/openwiki/.claims/concepts/agent-runtime-and-assistant.json +++ b/openwiki/.claims/concepts/agent-runtime-and-assistant.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:6ba8f89374ad018a257cf1c10e91f9d4b3641420f6187d07c8829858671948d1", + "pageVersion": "sha256:47fa6bbaa4a43b7bac039520e0bd6d4cf3f003b8969821fecaebe1cd9bdeac6b", "claims": [ { "id": "claim_981f16f030e9469588af705aa377161e", @@ -12,29 +12,33 @@ }, { "resource": "repo://Frameworks/TermindApplication/Agent/AssistantExecutionController.swift#L201-L328", - "version": "repo-lines-v1:sha256:02c4383ae6885f3dea6168d146dfc1dfc12cfe9af93cd56bead4023f25f8bf25:eyJzZWxlY3RlZExpbmVDb3VudCI6MTI4LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI2NTVlMmVkYTc3Yzc3ODBiNjg2ODJiMmZiYTExNGQ4YWE5YmIwOTBkMDYzN2ZmY2RmMzgwNWViODkzNjZlYWZkIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI1OTA5YTUzYTYxOGQwMjhlMWQzMDAwYzBhN2FiY2VlY2JlNWZiMzdmNGU1MTFlZmU0NjY0M2ZhZDZlNjY4NzJmIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI0YmE4NGEwNzc5OGYyNzk4NjliNDM1ZTdiZGU2MmZkYzg2ZDRhZjkzNzJkYTcyMmY5NWM2MjY5YTJhYjkwM2U3IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIyNGJkNzA2YzdkNTlkMjVmM2MxNTUzNDM5MDAxZmYyOWQ2ZGEzZjVlNjQ1YWIyZTE5ZjM2N2MwZmM3MDQ0MGU0In0" + "version": "repo-lines-v1:sha256:2744f8cd1de07ff0f99433383a73d1424c77a6dee3edce41f125c652bfe7e1a7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTI5LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI2NTVlMmVkYTc3Yzc3ODBiNjg2ODJiMmZiYTExNGQ4YWE5YmIwOTBkMDYzN2ZmY2RmMzgwNWViODkzNjZlYWZkIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI1OTA5YTUzYTYxOGQwMjhlMWQzMDAwYzBhN2FiY2VlY2JlNWZiMzdmNGU1MTFlZmU0NjY0M2ZhZDZlNjY4NzJmIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI0YmE4NGEwNzc5OGYyNzk4NjliNDM1ZTdiZGU2MmZkYzg2ZDRhZjkzNzJkYTcyMmY5NWM2MjY5YTJhYjkwM2U3IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIyNGJkNzA2YzdkNTlkMjVmM2MxNTUzNDM5MDAxZmYyOWQ2ZGEzZjVlNjQ1YWIyZTE5ZjM2N2MwZmM3MDQ0MGU0In0" }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/AssistantToolRegistry.swift#L42-L68", - "version": "repo-lines-v1:sha256:f00dc05b6b14f14e9071bb2c3725c64e133622f8e78ffc3e87a20fba2c5752af:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4YjBhZGQ3NDg1ZGY0OTA5MTkwNzI5ZGEzYTVkZWY5MjVkZmFkMTQ2YTJkMTA1MDk5YmFjZTJiYmJhM2ViMDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiZTBhODk2YTNjYjAzNmM0NDZiNDgyMTA3MDA4ZDZkOTZmNTdkNzA2MGRiNDk4ZjQ5YTVhNjhkNDI1ZWI4NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRlYzQ4ZTU4YzVlMTBhZWJkMDdkOGQ5OTljOWJhYjg0MDBlNWRlMDA3NzE4YWQwNzA5OTkxOGRjOGMxMDg3ZjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM3OTRkMDJhODEyMTk0NGQxNzZkMjY1ZTliYjljYzU5ZjZhYjg5MGJjYWRmOGFlZmRlYmRiYmI0ZjJlYTg0NDQifQ" + "version": "repo-lines-v1:sha256:5e034e35b4291fbd3ada9dbf3613ec9e3f6865bf8b3945545efb078073d866f9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4YjBhZGQ3NDg1ZGY0OTA5MTkwNzI5ZGEzYTVkZWY5MjVkZmFkMTQ2YTJkMTA1MDk5YmFjZTJiYmJhM2ViMDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiZTBhODk2YTNjYjAzNmM0NDZiNDgyMTA3MDA4ZDZkOTZmNTdkNzA2MGRiNDk4ZjQ5YTVhNjhkNDI1ZWI4NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRlYzQ4ZTU4YzVlMTBhZWJkMDdkOGQ5OTljOWJhYjg0MDBlNWRlMDA3NzE4YWQwNzA5OTkxOGRjOGMxMDg3ZjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM3OTRkMDJhODEyMTk0NGQxNzZkMjY1ZTliYjljYzU5ZjZhYjg5MGJjYWRmOGFlZmRlYmRiYmI0ZjJlYTg0NDQifQ" } ] }, { "id": "claim_28c4b1e064e94a798fe0220965a3951e", - "statement": "A submitted Termind turn records the user prompt, freezes run context and tool availability, constructs a new AgentRuntime, and starts it through ConversationModel; the runtime persists a running snapshot before requesting the model and persists transcript snapshots around each tool-result round.", + "statement": "A submitted Termind turn records the user prompt and its context snapshot, resolves the catalog and run mode, constructs a fresh AgentRuntime, and starts it through ConversationModel; the runtime persists a running snapshot before requesting the model and persists transcript snapshots around each tool-result round.", "evidence": [ { - "resource": "repo://.build/verify-zh-hans/ios/SourcePackages/checkouts/AgentKit/Sources/AgentKit/Runtime/AgentRuntime.swift#L161-L241", - "version": "repo-lines-v1:sha256:ca6910405404893e5f20a65facc669d891dab442eb019ea645c30141cb27798a:eyJzZWxlY3RlZExpbmVDb3VudCI6ODEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkNWE5M2M2ZjljMzg2NWRjZjkwOTliYWE0YWNiZTI3MjI4MmY2ZTFhZDE5OGU3MWQ5NGU5MzRlMjIzNzNiMTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkNGFlYTM3NDhjNzUxOGU3Zjk1MWMzNGM0MTQ5M2FlYjY4OTgxYTg1YzBiY2UwYTk5ZTZmOWY1MTQ2OGQ1NWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBhZWFjOGZkNTg4ZjE5OWZlNzFmOWJiMGY3Mjk1NDI5NGNiMmVlOWRkNzgyYzQzMDJlYTg4NWE3MTAzMDNjMTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI3ZTA4ZDYzNDU5ZjAxMzEzODQ4MDgxMGIwZmI3ZjBiYTJhYWY3MmM5MzhkZGViZDEyYzRhZWZiNTEyZDQxMzYifQ" + "resource": "repo://AgentKit/Sources/AgentKit/Runtime/AgentRuntime.swift#L213-L274", + "version": "repo-lines-v1:sha256:0dfd924390c397077812263deb5dd48a301f249f10478b62641a686cfd342a4c:eyJzZWxlY3RlZExpbmVDb3VudCI6NjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFiY2NmYjg3NmVhNWUyNGFhMjgxNzFhOTdlM2NlNDFhYjIyNjE1N2VlZjcyMzhjNDMxMmVkOGQ3NmJjOGEwODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkNGFlYTM3NDhjNzUxOGU3Zjk1MWMzNGM0MTQ5M2FlYjY4OTgxYTg1YzBiY2UwYTk5ZTZmOWY1MTQ2OGQ1NWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAzNDE3M2M2NjQ2NDEzMTc3YjQ1NmZmZjdiM2MxY2Y4Y2Q3Mjg1Y2IzMzAxYzI0ZDM3MGU4YmZiNzNiZWVmOTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI3ZTA4ZDYzNDU5ZjAxMzEzODQ4MDgxMGIwZmI3ZjBiYTJhYWY3MmM5MzhkZGViZDEyYzRhZWZiNTEyZDQxMzYifQ" }, { - "resource": "repo://Frameworks/TermindApplication/Agent/AssistantExecutionController.swift#L285-L346", - "version": "repo-lines-v1:sha256:00d555bfa02408a1b7619b54dfce3ea70403a2f114b8332941de455674e9c86c:eyJzZWxlY3RlZExpbmVDb3VudCI6NjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4YjA1OGQwZDE5MTQ0NzUxZmFhNDYzZmM5OTk3NjQyYjQ0OGNjMDVhZmFjZmMxYzY3YTg5NjhhZTA4MTgzMGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJkNWYxMjI0YzZkNDJlNjVhZWMzNmY2ZGNiMGIxNzZjYWQwYmNiNTQzZTVmMzcwMzM4ZDhmNjNmOTRkYTBlYzciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlYThlMTdlZjdhMzg5MDQ1NjczYTQyYWZkOGFlYWFiMjk5OTg3NGIwYjdmNmEyMGY1YzEyNDc2OTU2ZGI1NzUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVlYzAyYjAwYTc2Mjk0MTQ4MDZkMTIyMjc2OWI4MGUwZjZiMWM1MWZmYTQwYzU5YzExMjliMmY0MThjYTNlYzYifQ" + "resource": "repo://AgentKit/Sources/AgentKit/Runtime/AgentRuntime.swift#L303-L318", + "version": "repo-lines-v1:sha256:fd811671f5fdc47d264e5c3d26b3fb815385a39f5747a7d460403896bb8c0081:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlMmZjMTRlMmFjYmU5MjgxYmI5OTRmZjQ1NGUyNDAyMTE3MDQ1OWI5ODJjM2ExNTlkOGJlODM5NWI2NmJkNzgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkNGFlYTM3NDhjNzUxOGU3Zjk1MWMzNGM0MTQ5M2FlYjY4OTgxYTg1YzBiY2UwYTk5ZTZmOWY1MTQ2OGQ1NWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVkN2RhMWFmYjFkMTc3MmUwNTY5YmU0MWZkOGQ0YTA4OTczNWNlMzczNDExNGU3OWZkYjJmMGJiMDdmN2ZmODkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2ZGI3YjgwZDA1MzcwODYxOGIzZTUzNTJmYWM1YWE3NTUxN2M5OGE4OWVjNGNkYzU0MWUzZjE4YTgxMjY1ZGEifQ" + }, + { + "resource": "repo://Frameworks/TermindApplication/Agent/AssistantExecutionController.swift#L286-L351", + "version": "repo-lines-v1:sha256:d7a10bdad07278a40279af680e0f3630aa1febdcb7851cb87e6a48a0509e7759:eyJzZWxlY3RlZExpbmVDb3VudCI6NjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4YjA1OGQwZDE5MTQ0NzUxZmFhNDYzZmM5OTk3NjQyYjQ0OGNjMDVhZmFjZmMxYzY3YTg5NjhhZTA4MTgzMGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOThhZDkxNzk1ZTc5MjQwYjEzY2Q0MTU4NDY3NjI3Y2U3OGRjY2FiNzdkNmM3ZWRhZjczMTBlMTZhYjU3ODgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlYThlMTdlZjdhMzg5MDQ1NjczYTQyYWZkOGFlYWFiMjk5OTg3NGIwYjdmNmEyMGY1YzEyNDc2OTU2ZGI1NzUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJmNjk4YzQ5MTQ3ZGQzNjlmZDIwOTBmYzRkYmI2MGY1ODhiMzU3ODY1MmFjZTVkOWQwYjg2NzU0MjE0YWY3OTEifQ" }, { "resource": "repo://Frameworks/TermindApplication/Agent/AssistantExecutionController.swift#L46-L95", - "version": "repo-lines-v1:sha256:2a4b30082e0de792ca959a899e5cdbe5073c3fed89b37a6767845f2231d7a6b8:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzNTMzM2MzZTA4M2NlNjk4MjRiZTAyZTMyZWFlMzcxNjc0ZDhmOGZhZDMyYzNlOGU1MDViMmJmNTE0M2VmMTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzYWVlMmNjZDYwMjA1YzRmNTY0NWM0NjE3MzZlZTZmYjkyZTU1ZGQzZjE2MmQ2NGQ0Y2UzOGIwY2I1NjExZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZiNWI5MWZmNzRmYmZjZWY0OGZjOTZhMzNmMGFlNzk2NzkzODE3N2U1YTJlN2Q1OWE1YTg0MWJiZDU5OTY0NWMifQ" + "version": "repo-lines-v1:sha256:42d8c99afe5dceebcaaabd0abd43c95d68ee3d1bacc4f900e60db34dfc667958:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzNTMzM2MzZTA4M2NlNjk4MjRiZTAyZTMyZWFlMzcxNjc0ZDhmOGZhZDMyYzNlOGU1MDViMmJmNTE0M2VmMTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzYWVlMmNjZDYwMjA1YzRmNTY0NWM0NjE3MzZlZTZmYjkyZTU1ZGQzZjE2MmQ2NGQ0Y2UzOGIwY2I1NjExZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZiNWI5MWZmNzRmYmZjZWY0OGZjOTZhMzNmMGFlNzk2NzkzODE3N2U1YTJlN2Q1OWE1YTg0MWJiZDU5OTY0NWMifQ" } ] }, @@ -107,20 +111,20 @@ "statement": "Steering messages are queued while a run is active and only become transcript history at the next model boundary; cancellation stops the runtime, cancels its task, discards run secrets, and returns undeliverable steering to the composer.", "evidence": [ { - "resource": "repo://.build/verify-zh-hans/ios/SourcePackages/checkouts/AgentKit/Sources/AgentKit/Runtime/AgentRuntime.swift#L135-L159", - "version": "repo-lines-v1:sha256:1e7ee3251e0671722c1fa5ceddf8acaf9c387c1214e7d87e25b3061dc64e2dbd:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY4N2Q1NGYyZWZiNDBlN2ZjNDdkYmUzNjJmOTgzNzNmYzJkZmI3NDM3Yzc1NTlkMzEzYWFmNzAyMWZjMDkyNGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFhYmQ3YjdjN2RkYTI0MTcyNTJhMDY3ZmY2YjU5NWQyMDllNGI5OTc1ZGRhYmJkODc2M2ZkYzFkOWQyMDQ0ZDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEyZmQ2NTFmYjQ2OWY4YjVmMTQ0NjRiY2M2ZGMwZDZhYjJkZTM1Njg4MDhhZDcyNzYxYjhiMGNlNTFlNDZjNjgifQ" + "resource": "repo://AgentKit/Sources/AgentKit/Runtime/AgentRuntime.swift#L139-L165", + "version": "repo-lines-v1:sha256:1893129dd01a1c8a79a01cdf4625cb226ff4ebca0b1b11cdfc4a9827340a17ca:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY4N2Q1NGYyZWZiNDBlN2ZjNDdkYmUzNjJmOTgzNzNmYzJkZmI3NDM3Yzc1NTlkMzEzYWFmNzAyMWZjMDkyNGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFhYmQ3YjdjN2RkYTI0MTcyNTJhMDY3ZmY2YjU5NWQyMDllNGI5OTc1ZGRhYmJkODc2M2ZkYzFkOWQyMDQ0ZDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEyZmQ2NTFmYjQ2OWY4YjVmMTQ0NjRiY2M2ZGMwZDZhYjJkZTM1Njg4MDhhZDcyNzYxYjhiMGNlNTFlNDZjNjgifQ" }, { - "resource": "repo://.build/verify-zh-hans/ios/SourcePackages/checkouts/AgentKit/Sources/AgentKit/Runtime/AgentRuntime.swift#L217-L252", - "version": "repo-lines-v1:sha256:33f1041e47578bf10577d59d8e680d52acc08b9618c31112ee86070cda232bb9:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM0OTgzZGE0OWNjMWViMzBkM2MzODMzNjMzM2I4NmM0ODc0ZmEwNDA2YWE3OTIxNDI3ZTU5YzgwN2Y3OWI2NDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEyNmU0MzY4ZjIxZjg4OTFjZWQyNGNmYWY3Y2EzYmY5OTg1YjNmNDY5ZDRhNjgyNTZlMTYwOWQ2NTZmMWE3OWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRlOWQ2MDRlNmM4MjFhMGNkZDdjNjhjMGQ5MjM2ZGYzNGQzYWY1NjM5ZDI2YzAxNDRiMDQ5MDQzZTgxMjBmZWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg3YzhmMzI1N2Q0YmMwNGQ2ZjViYjFjYmRiY2FiN2QwNmQyMTA1MzJjMDhkZTExM2MyNzJmZDdjZjkzYmZlNzQifQ" + "resource": "repo://AgentKit/Sources/AgentKit/Runtime/AgentRuntime.swift#L249-L265", + "version": "repo-lines-v1:sha256:dd7262281b0133a9a56570381c1b52df5dededbbb751d9e81871e8fd08bb10b4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMjU4YjdiNGY1YjRhZjg4NjE4ZDI4NGJkODg1Y2VmYzNiMmQxOWRhMTk5OTlmN2ExNDI0YmQxMDliMjNjZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFmMGE5Mjg5N2Q0YzU4ODhhNzJmMDY5NDJjNmZkYmViM2NiNDAyMzBlY2U1ZmZjMThiNWJhYzU2ZTM0Mjk1YzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRlOWQ2MDRlNmM4MjFhMGNkZDdjNjhjMGQ5MjM2ZGYzNGQzYWY1NjM5ZDI2YzAxNDRiMDQ5MDQzZTgxMjBmZWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY1N2YwZDhiZTM1MGE0NGY1YjRhYjlmZmE1MDUyMjc5NTBjODk3YmI4MGVhZjI3NzNkMTAxODNkZTljNjE1ZWQifQ" }, { - "resource": "repo://Frameworks/TermindApplication/Agent/ConversationModel.swift#L1909-L1987", - "version": "repo-lines-v1:sha256:09a1dfd058b41e37f5cc8489c4536b2c966c4c0d75a6d766e18567e4b0934c92:eyJzZWxlY3RlZExpbmVDb3VudCI6NzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmZmM0MzNjZDM1OTM3MTAxZjgyZTM2MzI0MGZiMDkzMWJlMjZkYTcwYjg1MjRlMDEwYjVjMzlkNzdkNWYyNjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVkYjZjMmYzYTBiZWM4ZmU1ZTRlYjY3M2NlODAwMmMwODM0YWJiYTU1ZDM2MjhkOTMzNzUxYzA3MmUwYTc4NGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhmMThmMGI1OGIyNjAwNzUwYzBkMjdlZDlmMDA2ZGRhNjZiMjBmYWM4NDg1NzFlYTVlODUwOWFlZDQ3NWJmNjkifQ" + "resource": "repo://Frameworks/TermindApplication/Agent/ConversationModel.swift#L1907-L1995", + "version": "repo-lines-v1:sha256:6cda8b5a391dcf8703619fb4c97e81ac032fb3dc591c2369a20d2b9e8ba28f97:eyJzZWxlY3RlZExpbmVDb3VudCI6ODksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY0NDkzM2JlYmY3OGIxOGFkNjc4Mjk0MzM1NjdjYzk4MWNlYjdiM2FlOGIyZTRlNjA5NjRlOWYwNDQ4MjJmNTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMyZjFlOGM4MDY5ZDRmY2Q0OTQyZDIyYzQ1MGZmZmJmYjJmODE4NjAxYjE5ZDE3Njk0YWM0M2FjNDVmMTc0YTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI5NjI4ZWNhNWJkNzUyYzJmOThkZGFkY2VjOTU5YWNkNmFiMWZhMTA1MmVhYTY3MzZiZWFjODRmNDc4NjEwMDcifQ" }, { - "resource": "repo://TFMTests/AgentRuntimeTests.swift#L428-L457", - "version": "repo-lines-v1:sha256:5d7811288d8d6d02c029b2d582688bcaf07e08796cd196f6f69823d757672b3c:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjYTZkN2QzNTY5ZTQwMDNkM2VkZTM4M2Y1NGZiMzM4ZTM3OTU1NmZmNGFlYTQ5NDNlNDIwMGFmZWJhMjM5MWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRlZTI3YzAxZDY3NDFjMWI2Y2YzNmJhMTM4YTk1NWU1YTA1MjhhZGRhMzQwOTNjNDEwNGRjNDE5MDUxNDFhMmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxM2RlZDMwMDA2NTNlYzc5ZDMxNGQwOTIwZmE2NTFiY2M3OWY1ZmFiYjcwMTkyN2ZiODBjYjAxZTcyMWVjYzQifQ" + "resource": "repo://Frameworks/TermindApplication/Agent/ConversationModel.swift#L2507-L2534", + "version": "repo-lines-v1:sha256:fa1732f1c428eebb9fe5c6720dee5116ca6a8436ed3f480122180630d6cbb740:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4MDc5OTUxYmYwMGZiMjNmYzBkZDhiMGIxMDk4NzFmMzQ5MzJiYjNmZTEyZTA4ZWZhZDdkYjllMzQwMjY2NDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5MGQ2NzM0OTMwMjgxMjBkMGRhN2IyZGI0MmRmMjU0NGU3YjI0YTNjNGY0MjVhZjkzMDI4NGI0ZGE2NTg2OGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRiMTZkMmIxYWNkOWMwZTFiMzVhZmMwMzVhZWM4YmRkZjMyODcyZWJkNWQ1YzM2OGNiNDI5MGI3ZDU3MGJlMGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEzMjA1NGIyODExNGMxNmJlMWM4MmQ5NDFjNzc1OGM1NzFhNzcxNzBkYzM0ZTA1ZDUwZDllMDk3NGEyMjRlODQifQ" } ] }, @@ -184,7 +188,7 @@ "evidence": [ { "resource": "repo://Frameworks/TermindApplication/Agent/AssistantExecutionController.swift#L218-L234", - "version": "repo-lines-v1:sha256:5c7b2d3892cdad34fcb9cb2996fde4ff824188998dc264d7b3600bf156a37ad9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmMDg3ZmZlODE0NTk2NGYwZWIwOTlhM2FiMzQxOTRjMzlkM2E5YTY2YTM2NWJhYTQ3OWQ0OGIyOWJhY2ZiNDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyZGFjYzM0NjMzZGIxZjRlY2ZjYjYzOGI5OTNjYWY1ZWE1MGU3ZThmZTk5MTFjNjBmODBhZjIxNWM4ODk5ZjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhkZjJlZWYyYmU0YTM1MGU3ZjI3MmVmZjExNDc2MWJlM2I1Y2MyYzMyYmI1NzllZTc3NjIyY2JkN2MxOWIxNDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEwNjZiMzQxNmZhZmQ5NWY2NjY2OTQ5MzJmMjc5ZmVjNWM4ZTliODY4N2I0NDk2NGM4MTU4Y2UzZDJmYWYxZjcifQ" + "version": "repo-lines-v1:sha256:65ddf8be8b7a5adeab788e5df286c4169da771dbfd9f2a9919a9ee789c4ee562:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmMDg3ZmZlODE0NTk2NGYwZWIwOTlhM2FiMzQxOTRjMzlkM2E5YTY2YTM2NWJhYTQ3OWQ0OGIyOWJhY2ZiNDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyZGFjYzM0NjMzZGIxZjRlY2ZjYjYzOGI5OTNjYWY1ZWE1MGU3ZThmZTk5MTFjNjBmODBhZjIxNWM4ODk5ZjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhkZjJlZWYyYmU0YTM1MGU3ZjI3MmVmZjExNDc2MWJlM2I1Y2MyYzMyYmI1NzllZTc3NjIyY2JkN2MxOWIxNDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEwNjZiMzQxNmZhZmQ5NWY2NjY2OTQ5MzJmMjc5ZmVjNWM4ZTliODY4N2I0NDk2NGM4MTU4Y2UzZDJmYWYxZjcifQ" }, { "resource": "repo://Frameworks/TermindApplication/Agent/TermindAgentPolicy.swift#L46-L49", @@ -235,10 +239,168 @@ "version": "repo-lines-v1:sha256:63a4e0832eb58af19f1014b010116530bd83aa6cfe5c62c9e3643d154d77383e:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5MmZkOWM4MzE1NGM3OTBiNGI3MDUyY2ViZTk3ZWI5ZjVjZjYyNjZhOGFkNGY2ZWMyOGY4NjY5MjU4NWNhMmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3MmY5Njk1Yzc0NjdjNzQ3NzNjOWNlN2ZjNDI5YzVkMGQwZTQ4N2YzYzUxZDE1ZDY2NjhhM2QyNDA3MmJiOTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFiYzgyYTk3NzE1YzQ3N2I3MzM1MWJkN2M4NGVkYWRjNTdmMTlhM2QzOTIyYjE2NjRjZTlmOGZlNTdkNzU3ODIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQyNWZmZTlhNjZiY2Q1Y2QwNWE0NDhhYjFlYmQ1NmVjMTJkNTg1ZjYyN2RhOGM5YmI2ZjYxYTVhNWUzOWU2YzcifQ" } ] + }, + { + "id": "claim_160c57c07ff642b2b69e08cf0cb7a9cd", + "statement": "Termind's static host-tool registrations are shared across Assistant surfaces; injected workspace capability controls scratch transfer construction, and AssistantToolRegistry returns no tools for models without toolCall rather than using a surface-registration flag.", + "evidence": [ + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/AssistantToolRegistry.swift#L9-L67", + "version": "repo-lines-v1:sha256:915c7bd8855c34a13501e84f0aadb71d52d5c58dfa1f7088814d1cc76cbfe214:eyJzZWxlY3RlZExpbmVDb3VudCI6NTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRiNDlhZWQwZGQ2OTMyYzRkOTUyOTMzYWQwMWVlNDFkZmM4Mjk3NDBhZjk2NTFiOGFiMmZkZmZiMTQ4NWVhMmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5YTE2NTM1ODdkZjYyOWQzM2I2Y2FmY2I2ODQwNGNjMjAxYjIxODdjMjI3MzNjYTQyM2RkNDUzYzcwMjE1NDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEifQ" + }, + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L131-L146", + "version": "repo-lines-v1:sha256:115a05de9a5dfe6bb311e843026f4ed7d847445773c7c667c42bdaa0f904cb0f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI1MmVhOTZlMjgzMzE3ZTg1M2E5MjFkNTJmYzg0OTllNGQyM2MxMTI3NDQ1ZDEzOWUyYzlmM2E4NDBkOGE3ODciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNjczYWJkNDU3YTk3ZWVhMTdhNjAwNjJlYjBmYWVhNmJkZjA5NDg2OGNjNmI4ZjhjMGViZGEyZjYxZWQ0MmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI3NmI3Y2RhMDE5NDc2YjllZmM4NmVlNGU2YzQ0NzNkNWEyYTA3ZjZiMjk1MDFlN2QyZDNjMTcyMWZkZjFlYmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU3OTQxNzg4NDc3NTljMDg1ODZkYWRkZjhjMThjNjI1YzYyYzAzMjFhOWI4NGMwMzQ4MThiMTA3YzM2OTZiNjMifQ" + }, + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L5-L51", + "version": "repo-lines-v1:sha256:fc358f76511590c37149cb7d366c5ea14c99d6725c9f39630daefb9d4193c103:eyJzZWxlY3RlZExpbmVDb3VudCI6NDcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2NTgzYWUxYWM2NTU4YTlmNGQ0MTYyYzcxZDJjMTk4OTE3OWI2MDljYWE0MDg0OTMzYjZlY2E5YWEzYWU1ZDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcyNTZmZGZhNTNlMTBjZjU2N2FjODRhOTE3NzBmOTFjYmUzMTI2NWNiY2Q0MzMwNThiZTkzNGE3MTI4ZDZjYzMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM0NmY4Y2RkMDA0NDk4MWZkNzI0N2EwYzg5MzE2ODM0ZDNlZGFjOWU1MTAwNThkNGMwNGNhM2RkODczYzFhYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEwZWNmZjVkZTA1NjBhMmI3MTUzMWYxNzMyZGUwODYwNTQwZDBiZmI5NTFiZWRiYjc4YTEwMTIzZGMwNDYzMTgifQ" + }, + { + "resource": "repo://TFITests/MobileAssistantTests.swift#L356-L397", + "version": "repo-lines-v1:sha256:95a9040323f538be29d9e56bfbb0b5cc9027f1f81c0405c95b5b8c3f5c4352a3:eyJzZWxlY3RlZExpbmVDb3VudCI6NDIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI4Yjg4ZWMxM2YwNTU4YTZkMWMyNDE5NjVlOTI3Y2NkODdkNzlhY2Q3NzNhMjcwYzJjZjhjMDU3ODE0MDljNjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFmNmY2NDA3ZmVjZjhlZWM3YzI0ZmZjYzY2YjgwNmQzZTA5ZWQyZmI3MzUwNjlkYWJjMzBjMGVjMTY2MTliNmYifQ" + } + ] + }, + { + "id": "claim_5065d1f6ebd64ecab27645b10fd07fc8", + "statement": "Termind planning excludes remote SFTP mutations and scratch_push and reviewing receives no Termind tools; planning and acting share the ssh_exec schema while destructive-command preflight denies in planning and asks in acting, and proven-safe reads approve in parallel.", + "evidence": [ + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/PlanningSSHTools.swift#L7-L37", + "version": "repo-lines-v1:sha256:63c13612b283532ff8687a7aa1b8efa537e435acfb72f67c612bf4b7ba4b10ff:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkZWRiZjg4M2E5OTFkYzA3ZjQwMzVhZGFkODU3OTYyMzIxNzRjNzQ5NWJhOTMwNjlhZDJiZGQyOGYxZjQ3YTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNiMzg5MzZjYTRiYTA5NDE1ZWFhYjk0ZTI2OTNlMzk3NzJhMmQ3NzQ4MjZiMzVjZTliZmQ2ZDAzNGJiMTc0NzUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L81-L146", + "version": "repo-lines-v1:sha256:d28a016e97cfc3923d1b0e6641e2531a6c7d866c1ba850ef6bcae3f1586f6677:eyJzZWxlY3RlZExpbmVDb3VudCI6NjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJmMWY5ZGIzYzBkNGZjYzA4YjgxOWIxZmNkNzE5YjMzYzc5ZDljZGVjNDdkMWJhOWYxZGRhMmRmM2MwOWZhZmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNjczYWJkNDU3YTk3ZWVhMTdhNjAwNjJlYjBmYWVhNmJkZjA5NDg2OGNjNmI4ZjhjMGViZGEyZjYxZWQ0MmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiNzJhMmNhNDdjMTY2YWY3M2MzZDdiZjQxMzQwYTdjMmVjYWE1ZTYwMWEzYTlhOTFiMjZhNTUzMGYwM2NkZWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU3OTQxNzg4NDc3NTljMDg1ODZkYWRkZjhjMThjNjI1YzYyYzAzMjFhOWI4NGMwMzQ4MThiMTA3YzM2OTZiNjMifQ" + }, + { + "resource": "repo://TFMTests/AgentBuiltInToolAvailabilityTests.swift#L104-L152", + "version": "repo-lines-v1:sha256:809a5de195526464131f750190928f8a7f174538c892091e1b1ca5a04e3e1303:eyJzZWxlY3RlZExpbmVDb3VudCI6NDksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYxYzk1MmUxNDJjNjkzMjk4NmMwOTRjYmU3MzIxZmRmNzc2MWEwN2MyNTMxZTg0YmVkYzA1ODllZWQ0NzU0N2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE0YTFlOTRhZTRhNGU2NTI4YjQxODUxYzM4NWViMzIyMzhhMmY0YjQ2NTkxYzcyMTBkYWNmYWIwZTJmMTBjMzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNlZjg1MGYyMjYzODY4ZTAzMTRiZWE3NmU0NTlmMWRiYzQ3NWY0NWFkN2RjMGRiZGJlMzQxYzE3ZDZhOTAyODYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlZjg4NTUyZmE5YjUzZDI2ZDY4NDE4MmZmNDEwODg4NTAxNzVhM2EzMTcyYmY5Mjg3ZDY0Y2UxMWZmNzkzYjgifQ" + } + ] + }, + { + "id": "claim_b8c40ec0ba40450ea891e04123a70f0f", + "statement": "The terminal_suggest schema remains registered across Assistant surfaces, while its execution gate is captured in toolAvailability: TFM Workspace sidebar sends true, TFM standalone and TFI send false; this partial gate does not disable independent SSH/SFTP execution.", + "evidence": [ + { + "resource": "repo://Frameworks/TermindApplication/Agent/AssistantExecutionController.swift#L388-L403", + "version": "repo-lines-v1:sha256:f5bad0e8ec4b31fdac4505332e2c746548c179c72239909f782501aec3db7129:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRjYTA3Y2I3YmYxMDg4OGZkZDFlMmMwMDMzYzI4MDIzMGVkMTRkNjkzNGY0NjFiNTZhNTg3NDllNmRjOTUyNWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjViOGQzYzU0YjEwNzZiYmJmNTcwMmQyMTc3NDA0NmFlZDI3ZmNlYzVhM2JiNzYzNzQ0NjNlN2RlYTEwNGMwMmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcwYmFhMzUxMmU3OGFiOGM2NzBiZWU2NWVlNDQ4MzQ4ZTNjODVkNWZkYTFmM2JmYmYzYWRlMzI3MGIyNDY3MDgifQ" + }, + { + "resource": "repo://TFI/Application/Agent/MobileAssistantModel.swift#L11-L16", + "version": "repo-lines-v1:sha256:a43583fa28f32662ba3edc9845073bfd7bfacb29b7c16c21536c56a4fe75a32e:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDQ3NTE0MGUyNmU5YzVhMTcxMWQ2NDQ1YTE4YjdmNGFlMjAyMmY5OTNlZjYyODQwNzU1NDMwMWI5NmUwZGMyMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmI2ODNiYzA0Njk2MWVmOTJkOWI3Y2JkNmQ5YWNhZjJlOTk5Yzg2Zjg2ZjM1MzM1MTFiNWIyZTNmNjZhYjZmMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTJlNWI4YTJmMzJlNTczMDY2NDkyZTk4ZTUyNjFmZDQ1ZGQxMGYzZGQ1MDk3NjY2MzYwMzQzZjVjMWRmYzZhNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzlhM2ZjZTUzZjAwNjc0MmEyNjdhOThkZTNhZTI5Mjg2MzgzNmUwNzA3YTlmODgyZDllZGFhMzdmNjU5MTU1MiJ9" + }, + { + "resource": "repo://TFI/Application/Agent/MobileAssistantModel.swift#L115-L134", + "version": "repo-lines-v1:sha256:05f9c81933d87f71280921366aef45ca6b7595c2a37bbc09748f17358ab5a4ad:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ3N2Q1YWM0NmZkNzdmMWZlYWMyMTM1ZTlmZDAxMGYyMzk4MWQxYzBhMzMzZWJkMTNlZjE2MmUyYzZiNTg0MDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMzZDE2ODk4MTU0MTExNzUyNDc4NGZlZWJjNTY5NzIzNmYyZDk2ZDI2YWJmYjA2ZTIxYmM2OWQ4MzIwODY0MTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdiNmZkYjFiZmUzOGYyNzNlMzRkZjZjYzA4YTViMmRlMWNkN2IwM2M0N2FhZDE5Zjg5YjM1ZWU2ZjUwMzdjOTAifQ" + }, + { + "resource": "repo://TFM/Features/AI/ConversationTranscriptView.swift#L103-L110", + "version": "repo-lines-v1:sha256:541872e190e6d37c8cbb564bd335c76a333ede612d55b5bebc52340c1b584861:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2EyMDdlOTU2YmFkYTg5NzAwZTdkZDYyMzI4NjA3NzRmODk3YmYyZmIyNzlhN2EyZDFmNzgxMjU1YTQ5MTk4YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODQxMTE4MWVlMmVkMzkyYTZmNzJlZGYyMTBhY2I1MjA0YjBmMzQ5YzM4NWM4NTAyYTBmOGRiY2RkYWJlMTZiZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2MxYTA5MGM3OTQzNmQyY2ExMTBlOGZkZDk2YTJhYjkzMGMzZTI4Njc1MzQ5NjU3ZGU4MWNlNDAzZmZkYWY2YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTU1N2E1YTU0OGJlOGIyZjAzMzVlZmNjMDc2ZTVmZDQ2ZDMwYzQyNTdhMGY5Mzc0ZWM3MDE5ODczOTYyNDVmNiJ9" + }, + { + "resource": "repo://TFM/Features/Assistant/AssistantView.swift#L201-L227", + "version": "repo-lines-v1:sha256:3cd1bb860992a27cf2aee06e68ee551298ee0464e891894fee9736399936f21f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYwMjA0MzJkYzQ3NGFmN2VmY2NlYmMwZTQ1ZDAzYzIxYmM3OTY0ZWMzZWY5NDE2Zjg5NmRlMDVlNmM0ODAzMzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI3ZjNmZmEwM2YxMTJmOWYzOWMwOWNjYjQ4YmIxYzY4MmUzODBmNmY0YTI2ZmQzOWU2NDJmMmI5ZTllMGJhYjAifQ" + }, + { + "resource": "repo://TFMTests/AgentBuiltInToolAvailabilityTests.swift#L155-L186", + "version": "repo-lines-v1:sha256:322e4385cb4f30c48e2aede580612d470b10baca410ceceed97de8fc9a9b385e:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY4ZmRiMWE0ZmJiNDNlODMyMWI3MmU0Y2Y1ZmI2MDViMzJjMGRhMDlmMDVjZjQ2NjRkOTk1ZWFhYWZmZjk3YjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZlYzUwNDQwYjc4NjEyMDAwOWZkYmFiMzJiY2U1YmUyMjI2NGU4YTI3NjBkOWQ4NDY5MGM4ZTlmMDFmMTVmMzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVjYTRkZTNjNjI1OWM4ZmNkNTlmZGJkYWI2NWI1MDM4ZjRhM2YwYmNjYWU1OGRkYTAzMTJlZDNiNWQyNWNlYTIifQ" + } + ] + }, + { + "id": "claim_4296080efd51499ab9a11b9100c41210", + "statement": "Conversation steering changes the sending session and only the terminal_suggest availability key, preserves other overrides and skill/plan/memory context, leaves a legacy absent snapshot unknown, and updates activeContextSnapshot only when delivery occurs.", + "evidence": [ + { + "resource": "repo://FrameworkTests/AgentSteeringTests.swift#L187-L233", + "version": "repo-lines-v1:sha256:c063ee9ee073185632ec59778a870a9595ae3c988770a96bd2dfee10f2ba5338:eyJzZWxlY3RlZExpbmVDb3VudCI6NDcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUyNTlmOTQwOWQzOTg3ODRhY2EzOWEzMGU1M2VmY2E0MjlkZDdhNzExZWY1NTZhMzhmYTZlNGRlY2VmYzIwNjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxZjljNDg3Y2RiYjcyYTAyZDg2OWMyNmNmMGM5ZDYwYTdmZDg4ZTBkMjcxYzM1MGM5MTgyNDM4YjYzY2E3YmIifQ" + }, + { + "resource": "repo://Frameworks/TermindApplication/Agent/ConversationModel.swift#L1961-L1981", + "version": "repo-lines-v1:sha256:2f0d3e9bf56ee4865528a8d17aa69083d4c03d3719d26929e40b6b7fe5c80a70:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI5MzFhZDdmZGZiNjJkOTVjY2U1NTA2NDE1NmIxYmM1Nzg5ZTU3ZjhiZDc5MDQ4OGM3MzU1ZWM4MDhkZTJlNzgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg1MjU4NmJjYTA5MDczZjY4Y2EyNDQxMWJiNTUzYTk2MjNiOWEwNTk4ZWNjM2QxNWE0ZmEzOWI2ODNjYzhkYzciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE3YjgzYmUzYzE2ZmJiMzE3MTQ1NzRmYjUyZDFhYjU4MWI3YTFiZmI2MTI2ZTI5YmI5ZjkxMWUxMzNiN2QzZmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE1N2RkZTZiYTE3NTBhYTU3ZjU2MzdlZTdjM2JiYjU4YzU3NWJjMmU0YTA1ZWQyNGJjMTBmNWMyYTM2YjM0YzYifQ" + }, + { + "resource": "repo://Frameworks/TermindApplication/Agent/ConversationModel.swift#L2507-L2534", + "version": "repo-lines-v1:sha256:fa1732f1c428eebb9fe5c6720dee5116ca6a8436ed3f480122180630d6cbb740:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4MDc5OTUxYmYwMGZiMjNmYzBkZDhiMGIxMDk4NzFmMzQ5MzJiYjNmZTEyZTA4ZWZhZDdkYjllMzQwMjY2NDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5MGQ2NzM0OTMwMjgxMjBkMGRhN2IyZGI0MmRmMjU0NGU3YjI0YTNjNGY0MjVhZjkzMDI4NGI0ZGE2NTg2OGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRiMTZkMmIxYWNkOWMwZTFiMzVhZmMwMzVhZWM4YmRkZjMyODcyZWJkNWQ1YzM2OGNiNDI5MGI3ZDU3MGJlMGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEzMjA1NGIyODExNGMxNmJlMWM4MmQ5NDFjNzc1OGM1NzFhNzcxNzBkYzM0ZTA1ZDUwZDllMDk3NGEyMjRlODQifQ" + } + ] + }, + { + "id": "claim_0f474c4805ab4e409b923408dd4549ab", + "statement": "Host discovery and SSH/SFTP work require no sidebar session or PTY; list_hosts exposes enabled protocols without credentials, including Telnet-only hosts, while SSH operations independently require SSH capability.", + "evidence": [ + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/AgentBuiltInSSHTools.swift#L256-L271", + "version": "repo-lines-v1:sha256:fce45075c99663778285b25c7abe8ece6aa908ebb6d1c53269dcbb03aa1a48bb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZDUwNmZjNWRkYjMwYTRlNTIyN2RiYzM1M2VkMWU2MTE5M2YwMjNmODhhNjU0YWRlODcyYmY3NmM2NTYxOTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBjYmQ3MmQ2YTYyMzBhYTIyYTg4NTliMDc5OWM0ZjM4MjIxMmE1ZmFlYjI2ZGRiZDAxN2M1MmM3YzBhNWRkZmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI5MWRhOWI2NzM5MGE2NWQxOWMzMWQwMDVkMjZmYzA4ODUwOTI1YWZlNWY3NzJmODc5MmVmMTI2Nzc1MDI5YzQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZiZWNlODZhMjEwODAzNGFjYjkwNTA5OGY2YjBkNjIyOWIyOWMxMTM2Y2E2MzFiOWZkYjU0ZmZkY2Q2M2Y0YzkifQ" + }, + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/AgentBuiltInSSHTools.swift#L6-L64", + "version": "repo-lines-v1:sha256:48da14999a958a09cb035525dafba38750e0bb081cc66da4c0f47e9e22b5143c:eyJzZWxlY3RlZExpbmVDb3VudCI6NTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRmNmU1MDljYjBiNDFmOGJhOTkxNzEwMDk3MDUwNGY5ZTUxMDNlMDI4OWIwNGNlODNhNDhjMWE1ZDAzZmQzNjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVkZGI4NTc4MDBhNWQ3MjQ3ZmYyM2M1Y2Q1ZTUyYzU0N2JiZjRiYzM2NWI5YTc0MjY5OWVlMzNkYmIyODkyYzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY3Y2ExZDJlZTI1NTc2ZjQwMmI0YjhkMWQzYTAzMzcxYTJmMjY1ZjNlMmIzYjJkZTllNWYyNzExM2UwY2JkOTkifQ" + }, + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/AgentConnections.swift#L190-L204", + "version": "repo-lines-v1:sha256:ddc000d6744d96886c57972da1be80dbc195567cc5d08777a91970d51d14d78a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ4ZGM4Zjg1ZTg4MTk2NjcxOThmNDBjZmM2MDNmODg2NWQzOTUzN2Y4YTIwODdkZDdjMDkwZmU0MmZmYTE2MzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjliYjI1MGMxMWI4ZWVlZDllMDA0ODIxOGFlMDBmMmEzM2E3ODAyZmEzMDY2ZTA0MWMzY2RiNzI0MGYzMzVjMjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNmNDIyYjk4MDFlMWIwNTliNWYwNzViNjFkZDAwZTZlYjY4MWFmOGY2OTJmZDU4ZDg2NTE2YjRmMzM4ODg1NDMifQ" + }, + { + "resource": "repo://TFMTests/AgentHostProtocolListingTests.swift#L8-L40", + "version": "repo-lines-v1:sha256:52cfc9d8f6ee2c924351cec308f735e811f4a107c9a394b3fac62324c76d104f:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZjODI4MTNjZjZlYzQ4NTFmYzUxZTEzMGMzM2Y3ZWY4MGI3MzhhMDlmYWFiY2VkZjE1NDNhN2M4NWQ5ZTMwNzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgwNjZjMGUyZDJhNzZhZGViYTcyYzdmMjY3OWJlMTNkM2UzZWM5MzgzNzFhODliNTUzM2I0OTk0OTQwZTBhOGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_8c4ca4222f6048c1a1219542352d56ec", + "statement": "Historical tool cards resolve persisted presenter IDs through the immutable combined presenter registry or a closed legacy tool-name list; the terminal_suggest context key and presenter identities are independent of surface-registration arguments.", + "evidence": [ + { + "resource": "repo://Frameworks/TermindApplication/Agent/AssistantExecutionController.swift#L388-L403", + "version": "repo-lines-v1:sha256:f5bad0e8ec4b31fdac4505332e2c746548c179c72239909f782501aec3db7129:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRjYTA3Y2I3YmYxMDg4OGZkZDFlMmMwMDMzYzI4MDIzMGVkMTRkNjkzNGY0NjFiNTZhNTg3NDllNmRjOTUyNWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjViOGQzYzU0YjEwNzZiYmJmNTcwMmQyMTc3NDA0NmFlZDI3ZmNlYzVhM2JiNzYzNzQ0NjNlN2RlYTEwNGMwMmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcwYmFhMzUxMmU3OGFiOGM2NzBiZWU2NWVlNDQ4MzQ4ZTNjODVkNWZkYTFmM2JmYmYzYWRlMzI3MGIyNDY3MDgifQ" + }, + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L149-L158", + "version": "repo-lines-v1:sha256:c2cd49fd1e16036c717fbc1b42f836d5e74f05a170aa2948e44d0b2d1bf02f67:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzVhOTk3YWU3ZDJmYmEwOGI0NzEwMzY2MmEyMjJhN2Q2MjAyN2UyZjYzNjU4MTZiNjUwNjE4ODg0NjlhNjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkZDI0NDU4MmI2ZmIwM2QyM2I4NDE1YWJlY2QzNDZiMGM5ZjQ2NmI2Zjc1MmIwNjgxODljZTdlOWEyZGMzNTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY1ZTIzNWFhNDZkYTJjNzQyOTRhYzg2MGNiMjNhMTI4NzQ5OGQ0MzU0ZTg5MDJlZDFiY2Y0NDc0ZmZhZDE4YmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEifQ" + }, + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L43-L78", + "version": "repo-lines-v1:sha256:bfbfe308d074e8ffa2b4e02d12f57a78b6d8948b8955edb455cab1248c9f8747:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkxMWU4YjYyZTMzYmM0ODQxYzg2YTUyYmJmZDQyNGFlNDFlMGJiZWE4MjQyMmQxMGUwZDIwYjlmMzA1ZmI0MGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0ZWE1OTQ0YTVlNDQxYjEzN2M5ZmExN2VhNDhhNWE4OTUwMzgxZTMyNTk4MDk0YWQxNzg0ZDIxODY0ZDc1NjQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQxNWYzNzg5MWI0ZDRiYzMxOGEwMGY5MmRmZTE0YzVlMDIyYTczMzIwODc4MDYyNTdjOTUwYmZlZWE2NzE3MTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFjYmU1NTQ5ODQ4YjQzMjZiN2RlMWJjYTM0NjI4MmQwZGNmOWYzZDk4OTM2ZTZmZDM5YWU1NTA1NTg0NGJiMGEifQ" + }, + { + "resource": "repo://TFMTests/AgentPersistenceTests.swift#L18-L80", + "version": "repo-lines-v1:sha256:d51c0c4c465d3934681538007cfee163e4405202fcc8ee34d0f5e06a361d8040:eyJzZWxlY3RlZExpbmVDb3VudCI6NjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjZjA5ZWIwYzU3NDRmYjk3MzMxYjk4ZmYzZmJmMDVhNjAyYmEzZjdmNjdlNWRhNWJlOTA5NTAzM2Y2MjU4MjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjcxMmZmNGQxNjM3ZTA0MzVlZjQ1OTNmZmZhNTE1MWI5ZDRkMmI0ODA4OWNiOWM0OWU5OTM0YjYyN2UyMjQ2ZGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI2YzYwOTBhNTdkNWMwNjNmMTJmMjgyMDZlZGUwM2VkODQzMDdlZTY1YTE5MmEwNTg0ZjY4YzA4ZjVkNTRiZjEifQ" + } + ] + }, + { + "id": "claim_3a0928a1336e4d36b595ecc6fb11fbb2", + "statement": "The desktop MCP server selects acting tools before exported-name and disabled-tool filtering, exposing shared host tools, request_user_secret and four HTTP transfer tools but no terminal, scratch, web, skill, plan or task tools; its stdio bridge only forwards and TFI provides no local server.", + "evidence": [ + { + "resource": "repo://TFI/App/MobileAppModel.swift#L47-L93", + "version": "repo-lines-v1:sha256:1056a9ca82b4056925102595ba293ee161bb0294cefe1f6475a3b90bb0c96c83:eyJzZWxlY3RlZExpbmVDb3VudCI6NDcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ0NzUxNDBlMjZlOWM1YTE3MTFkNjQ0NWExOGI3ZjRhZTIwMjJmOTkzZWY2Mjg0MDc1NTQzMDFiOTZlMGRjMjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5ZTc2MzU1Y2YxMTk5NDgwYzNmOTk4MzZiMTQ4NmM4NDFkODkxZmFhZDkwNGM2MDhlMDkzMDIyZDM3NTdhZWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg4YTBiYjFhNzA4Y2RkN2FjN2YzMzAzN2QzYTFkNzNhZDA2NWMyODA2YTI3NTczYmE2OGYxM2M1Y2YwZWQ4YzMifQ" + }, + { + "resource": "repo://TFM/Application/MCPServer/MCPServerTools.swift#L179-L212", + "version": "repo-lines-v1:sha256:2bb74f25d66d630c0c93ab18f3f9d8a3d417d7ef27dfab256a29790e5c73ecd7:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiZGIzN2RmNzgzMDk5M2FlNGFjYmU5ZjMzNzc5ZmY0ZDM4NDNjYTllZTVmNjRkMGUzNTM1YmVlYWE2ZWY1MWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJkODIwMmZkOGJmZDcwYzFlMjFiM2RmMGEwOGY5YzI2MDYyMTMxMmQxNmVlZmY1YzdlODMzYmRlMDU5ZTg4MzQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUzZGZiMWU0NTkxZTcxZTBmM2UxNmQwZTU2M2VjZjNlYWE5ZmJhNjZhNTg3MmZkOWNmYWZmOTA2ZTliZWM2YmIifQ" + }, + { + "resource": "repo://TFM/Application/MCPServer/MCPServerTools.swift#L7-L14", + "version": "repo-lines-v1:sha256:fad9923aac1ae9624586bae0f53dac344511e7a50b49909b279154a2e345c6ad:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGI0NjVkOWExMDQwNDZiYTI3NTgwNTQ3ZjNlZDgwMmEyNWExYWUxZjhjZWYxODYyNjMyZTY0ZGQwYjUwN2U3OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmE0ZDY1ODhmOWI3YWQwODA5MzgyODExMDk1NTQ3ZTJjZDE4OGEzYTM0ZDMzM2E0OGQ4YmM5NzgxZDY0NTM5NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDRkMTAwNzkwOTYxYjkzNmIzNmM0MzJiZjdlOTY4NGI0MmIwZWJhYTE2MDM1YzdjMmQ0OTU4YmFkYmQyM2Y2YSJ9" + }, + { + "resource": "repo://TFMTests/MCPServerToolsTests.swift#L100-L138", + "version": "repo-lines-v1:sha256:48ab8222146a818c183b835519f4a64ebafbfab173934945b9fb1a14a4d986df:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA0MWJjMzU3ZWE2YzA2MmNiNjE1MGRiZmIwY2Q3YTBhZTM4ZTA3MTllYzU1Y2QwOWY0OGY3Y2U4MGVjOTcyZmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUzY2FiZTJjOWMxZDJhNGE4MGNjMTVhNWE0ZDVjMDBhZjQxMGNlYmNhNGZhYTM4YWYwNmE3YzM4NDhhNWUzZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4ZWFmM2UxZGIyODRmNmE2ZmQ0ZTA2NmFlMmZiNjU0YWU2OGZkZmNmM2U3ZTRkY2E0YzJkZDIxNGE0OWI5ZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgifQ" + }, + { + "resource": "repo://TermindMCPBridge/main.swift#L4-L87", + "version": "repo-lines-v1:sha256:ecccf30acbd284a663e31c1aa7f40e224b2264fb038003a81dceaa30c6449866:eyJzZWxlY3RlZExpbmVDb3VudCI6ODQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVjZmJkYmI1MDE2YWM3ZGVlYTU2ZTg5MGFlOTNhZDc3MzY1Y2I0ZDhhMGQ4NjhiMmU2YzliZTNjYzExYzQ2NGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3M2Y1YTY5MGEwZjAwODY0Y2RmNDU3MjY3OTAxZjNkNzg5ZmRjYzgwNzQ5NzlmNWUzMDQ2ODVlMjFiMzNlNTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE0ODcxYWY5NDg1Yzg3ZThjMGM0ZGNhN2IyYTI3MThiOWY5YTJmN2QxM2RlYWM1Y2MyYTY5YzgyNWVhY2ViZmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgifQ" + } + ] } ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-22T03:23:14.035Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/concepts/remote-services-and-forwarding.json b/openwiki/.claims/concepts/remote-services-and-forwarding.json index 0543c203..7afb9d78 100644 --- a/openwiki/.claims/concepts/remote-services-and-forwarding.json +++ b/openwiki/.claims/concepts/remote-services-and-forwarding.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:df4482efaa9bf8c8456a93e90ca849b5c53f58754ec6b5f653cc9acffd52fda9", + "pageVersion": "sha256:e2720aa6320a8e366bf71c3fa0c7a03da39dc3ef8d3f20aebaabdaef585258a8", "claims": [ { "id": "claim_7c677489fd8b4a4fadd006a4da4e9937", @@ -12,7 +12,7 @@ }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/AssistantToolRegistry.swift", - "version": "repo-file-v1:sha256:486ca4d2997672c82c417051e24392ee610f9f838dff89cffedaceff0891f9fd" + "version": "repo-file-v1:sha256:8ccfafe881aacc3f7232d30cef9c97588787771dd925d726b5591efa15c92021" }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/SSH/PortForwardingController.swift", @@ -195,6 +195,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-22T11:34:21.807Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/integrations/mcp-server-and-bridge.json b/openwiki/.claims/integrations/mcp-server-and-bridge.json index 5d6185d3..0e048e1f 100644 --- a/openwiki/.claims/integrations/mcp-server-and-bridge.json +++ b/openwiki/.claims/integrations/mcp-server-and-bridge.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:d5354c90144215080870d9769a26cb62524794d9f08d9222bf13f1dfaab336a0", + "pageVersion": "sha256:25994ac645085f10b88bf658588df753039ac6bd5c79e6cdde785a0323fb495e", "claims": [ { "id": "claim_b47979774aa94e7dae517a6894c508d4", @@ -136,19 +136,23 @@ "evidence": [ { "resource": "repo://TFM/Application/MCPServer/MCPServerTools.swift#L183-L211", - "version": "repo-lines-v1:sha256:3c47a9f75666c7e0501e5cfe9367d0bf69ecdb6d889fe10cd823e8c92bfa297f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY5OGU0MzcyYjgwNTM0ZmI5NjNmYzVlNGFmZDlhY2JlZGQ0NTNhZWEzYjU0ODAzMThmMWE2MWZmZTQzNGMyMTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlYTYxNGM5ZTJkZjc0NWU4Y2ZkZTdiNGIwZThiMmE5OWYxYTNjMTM3YmEzMmE5YjE4YzQ4MzBkMDg1NTY0M2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE5ZTc2MzU1Y2YxMTk5NDgwYzNmOTk4MzZiMTQ4NmM4NDFkODkxZmFhZDkwNGM2MDhlMDkzMDIyZDM3NTdhZWUifQ" + "version": "repo-lines-v1:sha256:e65acffc19af44a25ec55b13ae180d24988b848bf32107c1dc55fdbb203c10dd:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY5OGU0MzcyYjgwNTM0ZmI5NjNmYzVlNGFmZDlhY2JlZGQ0NTNhZWEzYjU0ODAzMThmMWE2MWZmZTQzNGMyMTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlYTYxNGM5ZTJkZjc0NWU4Y2ZkZTdiNGIwZThiMmE5OWYxYTNjMTM3YmEzMmE5YjE4YzQ4MzBkMDg1NTY0M2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE5ZTc2MzU1Y2YxMTk5NDgwYzNmOTk4MzZiMTQ4NmM4NDFkODkxZmFhZDkwNGM2MDhlMDkzMDIyZDM3NTdhZWUifQ" }, { "resource": "repo://TFM/Application/MCPServer/MCPServerTools.swift#L7-L13", "version": "repo-lines-v1:sha256:37e1cc2fd471a7feaba49f4edbfcbc40f04e035bbf4b08b3f68416aa598e3d88:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGI0NjVkOWExMDQwNDZiYTI3NTgwNTQ3ZjNlZDgwMmEyNWExYWUxZjhjZWYxODYyNjMyZTY0ZGQwYjUwN2U3OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWRkMjQ0NTgyYjZmYjAzZDIzYjg0MTVhYmVjZDM0NmIwYzlmNDY2YjZmNzUyYjA2ODE4OWNlN2U5YTJkYzM1MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmE0ZDY1ODhmOWI3YWQwODA5MzgyODExMDk1NTQ3ZTJjZDE4OGEzYTM0ZDMzM2E0OGQ4YmM5NzgxZDY0NTM5NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGY0ZWNlYzhkOWUyZDdhM2I4MjVjMTVlOTc2MjQwMmExZDZlZDIxMGI1YzVhNTQ5NWEwMjBjYmJiZDU1MzA1ZiJ9" }, { - "resource": "repo://TFM/Application/MCPServer/MCPServerTools.swift#L81-L112", - "version": "repo-lines-v1:sha256:9a47d3738e9223dc103b59b1c730fef89233e69f4ef011e9ff4a31d4646cf9e8:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4ZWM0MWMzYmVkYjQ5MGE1MzIyZDJkZWRmNGYzZDYyY2U0NjE5YzIwOWNlNmY5ODk2NWM5ZjgzMzRlMDVmYTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQwOWQxYTBlZGQxY2RmNzllMjI1Yzg3ZDFlODMxYmMwMTU0ZGExNzA1NTZhZTFkMzBlMzZkNDg2ZjhkZTg3OTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM2OGE1Yjk5MDRlNmQzOTZhNzllNGY1OWYzMmNjODc2NDA3MmUwZmMxZTJiYzg4MWM2YmIzNWViNGU3MjliM2IifQ" + "resource": "repo://TFM/Application/MCPServer/MCPServerTools.swift#L81-L118", + "version": "repo-lines-v1:sha256:7f52edfeccd8a684b8b897873405fa21702498b14be32417802dd124eaa3b2ae:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4ZWM0MWMzYmVkYjQ5MGE1MzIyZDJkZWRmNGYzZDYyY2U0NjE5YzIwOWNlNmY5ODk2NWM5ZjgzMzRlMDVmYTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRmNTYyYzdmNzMzNjJhZTBlYzk1MmM4M2ViMGJjYjIxYmE2YjBjNTM4MzY0YjExYzAwMGNlM2ZkZWU2NjNhZDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQwOWQxYTBlZGQxY2RmNzllMjI1Yzg3ZDFlODMxYmMwMTU0ZGExNzA1NTZhZTFkMzBlMzZkNDg2ZjhkZTg3OTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE3ZmZjZjA0MWQ2MGRmODliNjFiYTQ4MDFmZGUxMmE0ZDI0MTBiZjJiZmJiZjRiZjc3YTcxOWQ4MTNhYzg4NWIifQ" }, { - "resource": "repo://TFMTests/MCPServerToolsTests.swift#L99-L144", - "version": "repo-lines-v1:sha256:ac61705a90aec4fc5ad8fe90ba5336d9d529b77717009ddbf93e6f52d1fbfe85:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjZjA5ZWIwYzU3NDRmYjk3MzMxYjk4ZmYzZmJmMDVhNjAyYmEzZjdmNjdlNWRhNWJlOTA5NTAzM2Y2MjU4MjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJkZDA4NDk0MjZmMmNmMDE4MTZiNTkwMzQ0YTBkZTI0NDUzNTVkZjliNDdmNjYyMGY4YjA0ZTI1OWYyMDg0YzgifQ" + "resource": "repo://TFMTests/MCPServerToolsTests.swift#L100-L140", + "version": "repo-lines-v1:sha256:bbe609256f29f5d3f57df07fd079fd2175c599b92d24faf60060b97a17b592d7:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA0MWJjMzU3ZWE2YzA2MmNiNjE1MGRiZmIwY2Q3YTBhZTM4ZTA3MTllYzU1Y2QwOWY0OGY3Y2U4MGVjOTcyZmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4ZWFmM2UxZGIyODRmNmE2ZmQ0ZTA2NmFlMmZiNjU0YWU2OGZkZmNmM2U3ZTRkY2E0YzJkZDIxNGE0OWI5ZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhjYzgwYmFjZGQ0ZWUwOTdkYmRlMzFjZTEzNGIzM2YyODlhMzVhMWM1ZTBmZjNhYmFhZWI3YTVhNmY5ZmVmNDEifQ" + }, + { + "resource": "repo://TFMTests/MCPServerToolsTests.swift#L163-L175", + "version": "repo-lines-v1:sha256:bdac8ae222cc6ca064fa19fd6dff53d846496c96a833df866044e6f194e139c4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjZjA5ZWIwYzU3NDRmYjk3MzMxYjk4ZmYzZmJmMDVhNjAyYmEzZjdmNjdlNWRhNWJlOTA5NTAzM2Y2MjU4MjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE5MTFhNjcyMTJjNDdjOGU2Zjc3YzQyOWVmM2YyYmIzMTQ3MDY3OWVhNjEzMDc1OWJkZDZkZWUyYzVhY2MwNmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJkZDA4NDk0MjZmMmNmMDE4MTZiNTkwMzQ0YTBkZTI0NDUzNTVkZjliNDdmNjYyMGY4YjA0ZTI1OWYyMDg0YzgifQ" } ] }, @@ -289,10 +293,32 @@ "version": "repo-lines-v1:sha256:676f68b4f8a905336cf6f8b0b5bc81a72bcf7ea601c3b8f4e551d921c3876c36:eyJzZWxlY3RlZExpbmVDb3VudCI6OTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjZjA5ZWIwYzU3NDRmYjk3MzMxYjk4ZmYzZmJmMDVhNjAyYmEzZjdmNjdlNWRhNWJlOTA5NTAzM2Y2MjU4MjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBiOTg0YjBlZTVlMDZlNWRlNzQzMTYwZjc2MTlkMDNiMjNmMTFjOTU2ODUxYmU5MWRmNDUzYmVlY2UzMzU4MzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjExMTM5NDQ5ODE1YWRkNzZiMTM3OGJkODhiMDU3MmQ5MTk5MjA2YTdhYTQyZmM2ZGVjYTk2MjkzYWRjMGMxZjQifQ" } ] + }, + { + "id": "claim_42f9ef4c43524e90b670a096c7be1b1c", + "statement": "The MCP registry composes shared Termind tool definitions without a scratch workspace, AgentKit's user-interaction group, and four transfer tools; it explicitly selects acting mode before exported-name and disabled-tool filtering, so its 18 exports use acting ssh_exec and exclude terminal_suggest and scratch tools. A regression test checks shared descriptor parity with the acting host subset.", + "evidence": [ + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L131-L146", + "version": "repo-lines-v1:sha256:115a05de9a5dfe6bb311e843026f4ed7d847445773c7c667c42bdaa0f904cb0f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI1MmVhOTZlMjgzMzE3ZTg1M2E5MjFkNTJmYzg0OTllNGQyM2MxMTI3NDQ1ZDEzOWUyYzlmM2E4NDBkOGE3ODciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNjczYWJkNDU3YTk3ZWVhMTdhNjAwNjJlYjBmYWVhNmJkZjA5NDg2OGNjNmI4ZjhjMGViZGEyZjYxZWQ0MmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI3NmI3Y2RhMDE5NDc2YjllZmM4NmVlNGU2YzQ0NzNkNWEyYTA3ZjZiMjk1MDFlN2QyZDNjMTcyMWZkZjFlYmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU3OTQxNzg4NDc3NTljMDg1ODZkYWRkZjhjMThjNjI1YzYyYzAzMjFhOWI4NGMwMzQ4MThiMTA3YzM2OTZiNjMifQ" + }, + { + "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift#L88-L103", + "version": "repo-lines-v1:sha256:dbe61a3ba9b1ab79a313f4945a50099e4d2aea4d3be81879cf5988c566ff33f4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2ZGRhY2EwZGI3ZWZlN2MzYWRlNDlmMDM0ZGYyMmFhNmY2YTkyZGFlOWRkZGU3YzI4NjUyYjg3ZWFmNmMyNWUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNjczYWJkNDU3YTk3ZWVhMTdhNjAwNjJlYjBmYWVhNmJkZjA5NDg2OGNjNmI4ZjhjMGViZGEyZjYxZWQ0MmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFjNjdjZjE4NTFhZDE4ZDRiZmI3ODYyYjQxNGFkODRlZTI3N2Y5Y2MwZDQ5MTQxOGVkMTUwNzM0YTc4MWM0NWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ1OTk0MWEwZmZkZmM0OGQ3NTA1NzFhMjc0Zjc2YjdjNGNhOTA2NjMwNjBmNTcxZjVhNGY3ZDZhNjExOTBmNDEifQ" + }, + { + "resource": "repo://TFM/Application/MCPServer/MCPServerTools.swift#L183-L211", + "version": "repo-lines-v1:sha256:e65acffc19af44a25ec55b13ae180d24988b848bf32107c1dc55fdbb203c10dd:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY5OGU0MzcyYjgwNTM0ZmI5NjNmYzVlNGFmZDlhY2JlZGQ0NTNhZWEzYjU0ODAzMThmMWE2MWZmZTQzNGMyMTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlYTYxNGM5ZTJkZjc0NWU4Y2ZkZTdiNGIwZThiMmE5OWYxYTNjMTM3YmEzMmE5YjE4YzQ4MzBkMDg1NTY0M2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE5ZTc2MzU1Y2YxMTk5NDgwYzNmOTk4MzZiMTQ4NmM4NDFkODkxZmFhZDkwNGM2MDhlMDkzMDIyZDM3NTdhZWUifQ" + }, + { + "resource": "repo://TFMTests/MCPServerToolsTests.swift#L100-L140", + "version": "repo-lines-v1:sha256:bbe609256f29f5d3f57df07fd079fd2175c599b92d24faf60060b97a17b592d7:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA0MWJjMzU3ZWE2YzA2MmNiNjE1MGRiZmIwY2Q3YTBhZTM4ZTA3MTllYzU1Y2QwOWY0OGY3Y2U4MGVjOTcyZmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4ZWFmM2UxZGIyODRmNmE2ZmQ0ZTA2NmFlMmZiNjU0YWU2OGZkZmNmM2U3ZTRkY2E0YzJkZDIxNGE0OWI5ZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhjYzgwYmFjZGQ0ZWUwOTdkYmRlMzFjZTEzNGIzM2YyODlhMzVhMWM1ZTBmZjNhYmFhZWI3YTVhNmY5ZmVmNDEifQ" + } + ] } ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-23T00:14:42.075Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/quickstart.json b/openwiki/.claims/quickstart.json index 28641f57..0e928087 100644 --- a/openwiki/.claims/quickstart.json +++ b/openwiki/.claims/quickstart.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:36dd6088760d21cfecb2ca2fffc6e6ea9aa667c3f14011c61dcbb354b0377150", + "pageVersion": "sha256:61210d26025511ef69e04ecbb09c4b5266e8a8b365fdc612edc432f355271193", "claims": [ { "id": "claim_83870f4f1ad6403ea0d8bd8775729a76", @@ -38,7 +38,7 @@ }, { "resource": "repo://TFM/Features/Workspaces/WindowModel.swift", - "version": "repo-file-v1:sha256:4bff3bbe87d980066344224e6c189b784360bb2c0fc360d138b4bb0a6d816420" + "version": "repo-file-v1:sha256:4c153bf5b7d97bf82683269527c35e76d9666ce459b681af16e7eed4a586e837" } ] }, @@ -90,7 +90,7 @@ }, { "resource": "repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift", - "version": "repo-file-v1:sha256:9a6ac5989bbe56b568db0e639c84f0608a8dc5b4cd089438c64d91a587a91527" + "version": "repo-file-v1:sha256:48b3039f44d716afaacc3e0986a88fcaad3a32d6fa00a68dba265b82e0efc284" }, { "resource": "repo://Termind.xcodeproj/project.pbxproj", @@ -129,6 +129,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-23T00:14:42.075Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.claims/workflows/ssh-session-lifecycle.json b/openwiki/.claims/workflows/ssh-session-lifecycle.json index 50cc14dd..e0e246f5 100644 --- a/openwiki/.claims/workflows/ssh-session-lifecycle.json +++ b/openwiki/.claims/workflows/ssh-session-lifecycle.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:5cad513345c5cd73a1bb915584cf0566e8f1a8f543c5e5dd4da91692e6407352", + "pageVersion": "sha256:2440bbfacd6925e8874548c87942c4f02c29835160dde94f309fb7abc29758f5", "claims": [ { "id": "claim_69a9de4ce918417c8a44c6c87c9f6564", @@ -146,7 +146,7 @@ }, { "resource": "repo://TFM/Features/Workspaces/WindowModel.swift", - "version": "repo-file-v1:sha256:4bff3bbe87d980066344224e6c189b784360bb2c0fc360d138b4bb0a6d816420" + "version": "repo-file-v1:sha256:4c153bf5b7d97bf82683269527c35e76d9666ce459b681af16e7eed4a586e837" } ] }, @@ -175,6 +175,6 @@ ], "verification": { "by": "openwiki/0.5.2", - "at": "2026-09-23T00:14:42.075Z" + "at": "2026-09-23T01:34:03.251Z" } } diff --git a/openwiki/.last-update.json b/openwiki/.last-update.json index ac5160f5..ce389c2c 100644 --- a/openwiki/.last-update.json +++ b/openwiki/.last-update.json @@ -1,7 +1,7 @@ { - "updatedAt": "2026-09-23T01:00:12.175Z", + "updatedAt": "2026-09-23T01:40:20.785Z", "command": "update", - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", "model": "host-agent/codex", "status": "complete", "language": "en" diff --git a/openwiki/.page-manifest.json b/openwiki/.page-manifest.json index e6b56146..b8200e54 100644 --- a/openwiki/.page-manifest.json +++ b/openwiki/.page-manifest.json @@ -2,74 +2,74 @@ "schemaVersion": 1, "pages": { "/openwiki/architecture/desktop-ui.md": { - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", - "sourceFingerprint": "sha256:5695d0d8460e1bfb0a6bfc3981f4a8012f4c28db0c06cf36df962449676935db", - "pageVersion": "sha256:fad06b683f4e91f808959ed85ce962b1c86d64a67078b39c7ba20f8aa12ad35b", + "pageVersion": "sha256:9e4dcfe15396af0c8e9ed77ff7347eac829aeff9d111ad37757a2e3f1e63b2c1", "completedBy": "codex", - "completedRunId": "aa140d94-d963-45b6-b682-05a1a3802ffa" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/architecture/engineering-invariants.md": { - "pageVersion": "sha256:6f98da9e8f070ebc2a0b91545058eb3aa5a411129c7a18c9b33ee9eb6da8e799", + "pageVersion": "sha256:75fe464fb65e761e5eeaab3f31f1a2d852175cc5f78f5b099ddffee4a8655971", "completedBy": "codex", - "completedRunId": "9d54b362-29b2-42d6-9960-30b93a494d0b", - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", - "sourceFingerprint": "sha256:5695d0d8460e1bfb0a6bfc3981f4a8012f4c28db0c06cf36df962449676935db" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/architecture/mobile-ui.md": { - "pageVersion": "sha256:769919ef95916ccc91f27ef2666730600005e79c052893c2ae098644ac389a07", + "pageVersion": "sha256:a1e240ca495ddf76ace3e9861b2f459a2fa61e2d53179352e87b15452e6828ee", "completedBy": "codex", - "completedRunId": "9d54b362-29b2-42d6-9960-30b93a494d0b", - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", - "sourceFingerprint": "sha256:5695d0d8460e1bfb0a6bfc3981f4a8012f4c28db0c06cf36df962449676935db" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/architecture/module-map.md": { - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", - "sourceFingerprint": "sha256:5695d0d8460e1bfb0a6bfc3981f4a8012f4c28db0c06cf36df962449676935db", - "pageVersion": "sha256:8c5b708036c7d089f4821e24e31a00e1684e44d78bf3a8182b9df0800ffe7f00", + "pageVersion": "sha256:cd736475053bed4751ff7b4f06ee0433c8d3ac3e74f3866d585bc958dd6b25d5", "completedBy": "codex", - "completedRunId": "aa140d94-d963-45b6-b682-05a1a3802ffa" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/architecture/native-app-directories.md": { - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", - "sourceFingerprint": "sha256:5695d0d8460e1bfb0a6bfc3981f4a8012f4c28db0c06cf36df962449676935db", - "pageVersion": "sha256:411c153b0239360e9fc0a413c9ff012607f8aa71dfd42cf349bcfc83eb2fb690", + "pageVersion": "sha256:daaecfb65b33663c617a5627c7c65fc6e45cd05b85017d53e6a48c818a1e15b5", "completedBy": "codex", - "completedRunId": "aa140d94-d963-45b6-b682-05a1a3802ffa" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/architecture/platform-runtime.md": { - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", - "sourceFingerprint": "sha256:5695d0d8460e1bfb0a6bfc3981f4a8012f4c28db0c06cf36df962449676935db", - "pageVersion": "sha256:1928bdff8b5655653f6d6eaa66489a0a3c967dfebdf9c9c86245df87bf2011c1", + "pageVersion": "sha256:f6b1eae907640a27121b4c2f41cc040490003e2944d38858bc7a4719581bd0b3", "completedBy": "codex", - "completedRunId": "aa140d94-d963-45b6-b682-05a1a3802ffa" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/architecture/shared-module-directories.md": { - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", - "sourceFingerprint": "sha256:5695d0d8460e1bfb0a6bfc3981f4a8012f4c28db0c06cf36df962449676935db", - "pageVersion": "sha256:6ba56baf56fd5439756c528b55b7765f506ed716677142f0298cbad9f4cf2f93", + "pageVersion": "sha256:42206a596cfd036cd1cf7bd7bc2f0e8ec5f96a4577648a864cebd3f8db5d0a3f", "completedBy": "codex", - "completedRunId": "aa140d94-d963-45b6-b682-05a1a3802ffa" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/architecture/supporting-system-directories.md": { - "gitHead": "cca15abd7682f33404485806d15c99541ef98c5e", - "sourceFingerprint": "sha256:c257a6e01df7463636d1e57348f233f373c8ca070007bc8d15c824601c77538f", - "pageVersion": "sha256:fa243e662bcccf538fa4c830c781851a26ec9aea0c86163cfc99644ac7364159", + "pageVersion": "sha256:2711b0e7d443185dd21a3d96c2cb80f84a5e2149a5a6fc64fda5363afcbc86be", "completedBy": "codex", - "completedRunId": "8bdb277a-cf85-4174-a91f-b6a4f89a046d" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/architecture/system-boundaries.md": { - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", - "sourceFingerprint": "sha256:5695d0d8460e1bfb0a6bfc3981f4a8012f4c28db0c06cf36df962449676935db", - "pageVersion": "sha256:db9f09d0c4799f6c8ecc04c8b993af8c45c2c71fbb32827587c3c99c945c3c2b", + "pageVersion": "sha256:3cbf1be9eb94f0eb87d83be0a1277c9801cb4df9a3da898ef95b63b20b72a785", "completedBy": "codex", - "completedRunId": "aa140d94-d963-45b6-b682-05a1a3802ffa" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/concepts/agent-runtime-and-assistant.md": { - "gitHead": "58a0cfd1bf9d08057801c740e79bbcb3c1fcc37e", - "sourceFingerprint": "sha256:8456f71ffdd978736ff6bf9aed042724573fd633b1d40f6d2b74fec0acb445f6", - "pageVersion": "sha256:6ba8f89374ad018a257cf1c10e91f9d4b3641420f6187d07c8829858671948d1", - "completedBy": "omp", - "completedRunId": "691ddd1f-2966-4a5b-b437-127adf28ff38" + "pageVersion": "sha256:47fa6bbaa4a43b7bac039520e0bd6d4cf3f003b8969821fecaebe1cd9bdeac6b", + "completedBy": "codex", + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/concepts/commerce-localization-and-product-surfaces.md": { "gitHead": "58a0cfd1bf9d08057801c740e79bbcb3c1fcc37e", @@ -86,11 +86,11 @@ "completedRunId": "aa140d94-d963-45b6-b682-05a1a3802ffa" }, "/openwiki/concepts/remote-services-and-forwarding.md": { - "gitHead": "7bd483abc1213e20114deb41e71be4a6bce3b048", - "sourceFingerprint": "sha256:81824d0e5565b003414e71b5a66a7cd8b72768e06ea52f5391c6b25a6fefa67c", - "pageVersion": "sha256:df4482efaa9bf8c8456a93e90ca849b5c53f58754ec6b5f653cc9acffd52fda9", + "pageVersion": "sha256:e2720aa6320a8e366bf71c3fa0c7a03da39dc3ef8d3f20aebaabdaef585258a8", "completedBy": "codex", - "completedRunId": "3202e468-3230-40c9-80ee-55ba3e53e4b6" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/concepts/shell-integration.md": { "gitHead": "cca15abd7682f33404485806d15c99541ef98c5e", @@ -114,11 +114,11 @@ "completedRunId": "aa140d94-d963-45b6-b682-05a1a3802ffa" }, "/openwiki/integrations/mcp-server-and-bridge.md": { - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", - "sourceFingerprint": "sha256:5695d0d8460e1bfb0a6bfc3981f4a8012f4c28db0c06cf36df962449676935db", - "pageVersion": "sha256:d5354c90144215080870d9769a26cb62524794d9f08d9222bf13f1dfaab336a0", + "pageVersion": "sha256:25994ac645085f10b88bf658588df753039ac6bd5c79e6cdde785a0323fb495e", "completedBy": "codex", - "completedRunId": "aa140d94-d963-45b6-b682-05a1a3802ffa" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/operations/build-test-and-release.md": { "gitHead": "58a0cfd1bf9d08057801c740e79bbcb3c1fcc37e", @@ -156,11 +156,11 @@ "completedRunId": "691ddd1f-2966-4a5b-b437-127adf28ff38" }, "/openwiki/quickstart.md": { - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", - "sourceFingerprint": "sha256:5695d0d8460e1bfb0a6bfc3981f4a8012f4c28db0c06cf36df962449676935db", - "pageVersion": "sha256:36dd6088760d21cfecb2ca2fffc6e6ea9aa667c3f14011c61dcbb354b0377150", + "pageVersion": "sha256:61210d26025511ef69e04ecbb09c4b5266e8a8b365fdc612edc432f355271193", "completedBy": "codex", - "completedRunId": "aa140d94-d963-45b6-b682-05a1a3802ffa" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" }, "/openwiki/testing/behavioral-boundaries-and-fixtures.md": { "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", @@ -191,11 +191,11 @@ "completedRunId": "691ddd1f-2966-4a5b-b437-127adf28ff38" }, "/openwiki/workflows/ssh-session-lifecycle.md": { - "gitHead": "2ded2a56a35c168034bdb82043a88bc0466e2088", - "sourceFingerprint": "sha256:5695d0d8460e1bfb0a6bfc3981f4a8012f4c28db0c06cf36df962449676935db", - "pageVersion": "sha256:5cad513345c5cd73a1bb915584cf0566e8f1a8f543c5e5dd4da91692e6407352", + "pageVersion": "sha256:2440bbfacd6925e8874548c87942c4f02c29835160dde94f309fb7abc29758f5", "completedBy": "codex", - "completedRunId": "aa140d94-d963-45b6-b682-05a1a3802ffa" + "completedRunId": "07775097-b8b6-4b52-9321-61697240352d", + "gitHead": "bdeb201d19b1d86d1bf1145d6cd6bbfbd95bd4a1", + "sourceFingerprint": "sha256:f9936767fcb96648d4077d9b0eda87d3b9e9f36d42c78ac381d7c200080bcbf8" } } } diff --git a/openwiki/architecture/desktop-ui.md b/openwiki/architecture/desktop-ui.md index 85280a2f..0a171d66 100644 --- a/openwiki/architecture/desktop-ui.md +++ b/openwiki/architecture/desktop-ui.md @@ -5,7 +5,7 @@ description: "How the macOS app composes its native window shell, persistent wor tags: [macos, tfm, ui, navigation, workspaces, swiftui, appkit, design] verified: - by: openwiki/0.5.2 - at: 2026-09-23T00:14:42.075Z + at: 2026-09-23T01:34:03.251Z sources: - id: openwiki-source-e09fb7bc8e7ca0579f6d446e resource: repo://Frameworks/TermindApplication/FeatureModels/DeviceDirectoryModel.swift diff --git a/openwiki/architecture/engineering-invariants.md b/openwiki/architecture/engineering-invariants.md index cf395f2d..a7bc49e0 100644 --- a/openwiki/architecture/engineering-invariants.md +++ b/openwiki/architecture/engineering-invariants.md @@ -107,7 +107,7 @@ sources: generated: { by: "codex", at: "2026-09-23T00:59:31.979Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-23T00:59:31.979Z + at: 2026-09-23T01:34:03.251Z --- # Cross-Cutting Engineering Invariants diff --git a/openwiki/architecture/mobile-ui.md b/openwiki/architecture/mobile-ui.md index 9d43a29c..1a48dfdc 100644 --- a/openwiki/architecture/mobile-ui.md +++ b/openwiki/architecture/mobile-ui.md @@ -49,7 +49,7 @@ sources: generated: { by: "codex", at: "2026-09-23T00:59:31.979Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-23T00:59:31.979Z + at: 2026-09-23T01:34:03.251Z --- # TFI Mobile UI Architecture diff --git a/openwiki/architecture/module-map.md b/openwiki/architecture/module-map.md index 615c17b5..ebaeacaa 100644 --- a/openwiki/architecture/module-map.md +++ b/openwiki/architecture/module-map.md @@ -49,7 +49,7 @@ sources: generated: { by: "codex", at: "2026-09-22T09:17:11.491Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-23T00:14:42.075Z + at: 2026-09-23T01:34:03.251Z --- # Module and Directory Architecture Map diff --git a/openwiki/architecture/native-app-directories.md b/openwiki/architecture/native-app-directories.md index 83660e8a..5509802a 100644 --- a/openwiki/architecture/native-app-directories.md +++ b/openwiki/architecture/native-app-directories.md @@ -87,7 +87,7 @@ sources: generated: { by: "codex", at: "2026-09-23T00:14:42.075Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-23T00:14:42.075Z + at: 2026-09-23T01:34:03.251Z --- # Native App Directory Responsibilities diff --git a/openwiki/architecture/platform-runtime.md b/openwiki/architecture/platform-runtime.md index f22616f1..eceeb8ba 100644 --- a/openwiki/architecture/platform-runtime.md +++ b/openwiki/architecture/platform-runtime.md @@ -43,7 +43,7 @@ sources: generated: { by: "codex", at: "2026-09-23T00:14:42.075Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-23T00:14:42.075Z + at: 2026-09-23T01:34:03.251Z --- # Platform Runtime, App Composition, and Lifetimes diff --git a/openwiki/architecture/shared-module-directories.md b/openwiki/architecture/shared-module-directories.md index 086cfdf2..0c7db681 100644 --- a/openwiki/architecture/shared-module-directories.md +++ b/openwiki/architecture/shared-module-directories.md @@ -107,7 +107,7 @@ sources: generated: { by: "codex", at: "2026-09-23T00:14:42.075Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-23T00:14:42.075Z + at: 2026-09-23T01:34:03.251Z --- # Shared Framework Directory Responsibilities diff --git a/openwiki/architecture/supporting-system-directories.md b/openwiki/architecture/supporting-system-directories.md index 0c290e8f..23521070 100644 --- a/openwiki/architecture/supporting-system-directories.md +++ b/openwiki/architecture/supporting-system-directories.md @@ -81,7 +81,7 @@ sources: generated: { by: "omp", at: "2026-09-22T03:45:03.442Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-22T10:02:02.985Z + at: 2026-09-23T01:34:03.251Z --- # Supporting Products, Packages, and Tooling diff --git a/openwiki/architecture/system-boundaries.md b/openwiki/architecture/system-boundaries.md index 94e1572f..ed6e9a8a 100644 --- a/openwiki/architecture/system-boundaries.md +++ b/openwiki/architecture/system-boundaries.md @@ -43,7 +43,7 @@ sources: generated: { by: "codex", at: "2026-09-23T00:14:42.075Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-23T00:14:42.075Z + at: 2026-09-23T01:34:03.251Z --- # System Boundaries and Dependency Ownership diff --git a/openwiki/concepts/agent-runtime-and-assistant.md b/openwiki/concepts/agent-runtime-and-assistant.md index 8ba9a726..f1faa9af 100644 --- a/openwiki/concepts/agent-runtime-and-assistant.md +++ b/openwiki/concepts/agent-runtime-and-assistant.md @@ -3,12 +3,9 @@ type: agent runtime concept title: Assistant, Agent Runtime, Skills, and Memory description: How Termind assembles AgentKit into durable assistant conversations, applies approval and host-security boundaries, and manages skills, scratch workspaces, and device-local Hermes memory. tags: [assistant, agent-runtime, approval, persistence, skills, memory, ssh, sftp] -verified: - - by: openwiki/0.5.2 - at: 2026-09-22T03:23:14.035Z sources: - - id: openwiki-source-66f32c7d0994c9f18c0e5a98 - resource: repo://.build/verify-zh-hans/ios/SourcePackages/checkouts/AgentKit/Sources/AgentKit/Runtime/AgentRuntime.swift + - id: openwiki-source-0e8cfe7d74554d8a17af60b7 + resource: repo://AgentKit/Sources/AgentKit/Runtime/AgentRuntime.swift - id: openwiki-source-8037e2358a2c4f9b2c722a11 resource: repo://AGENTS.md - id: openwiki-source-5f99e8af445e073ffe9bc257 @@ -25,10 +22,36 @@ sources: resource: repo://Frameworks/TermindPersistence/SwiftDataAgentRunRepository.swift - id: openwiki-source-1fc00d0407016efa5a0378eb resource: repo://Frameworks/TermindRemoteInfrastructure/Agent/AgentBuiltInSSHTools.swift + - id: openwiki-source-0c82bf45bc197f879a54fd3a + resource: repo://Frameworks/TermindRemoteInfrastructure/Agent/AgentConnections.swift - id: openwiki-source-e1a028bd99d4dbe6d1e14f6a resource: repo://Frameworks/TermindRemoteInfrastructure/Agent/AgentScratchTransferTools.swift - id: openwiki-source-1c845e5af67c400566be83bd resource: repo://Frameworks/TermindRemoteInfrastructure/Agent/AssistantToolRegistry.swift + - id: openwiki-source-2a267454c356289bd66e8b40 + resource: repo://Frameworks/TermindRemoteInfrastructure/Agent/PlanningSSHTools.swift + - id: openwiki-source-d2d4c06f734241db3badc1f5 + resource: repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift + - id: openwiki-source-6d759b4cb61f68a067dae42c + resource: repo://FrameworkTests/AgentSteeringTests.swift + - id: openwiki-source-a62bfbbc7de13a894444718b + resource: repo://TermindMCPBridge/main.swift + - id: openwiki-source-906678adb91c2fce2d3fcaed + resource: repo://TFI/App/MobileAppModel.swift + - id: openwiki-source-d44869be46c03fbd0ce9c64c + resource: repo://TFI/Application/Agent/MobileAssistantModel.swift + - id: openwiki-source-a154b5d36ec59496392d45e4 + resource: repo://TFITests/MobileAssistantTests.swift + - id: openwiki-source-76b1cdca4a02038756187f92 + resource: repo://TFM/Application/MCPServer/MCPServerTools.swift + - id: openwiki-source-16db5d5459897d40fe080701 + resource: repo://TFM/Features/AI/ConversationTranscriptView.swift + - id: openwiki-source-d35453512ef488d0cacdc06e + resource: repo://TFM/Features/Assistant/AssistantView.swift + - id: openwiki-source-49c5ca81284394384f3c3913 + resource: repo://TFMTests/AgentBuiltInToolAvailabilityTests.swift + - id: openwiki-source-8f676dd306369e67985f3dd0 + resource: repo://TFMTests/AgentHostProtocolListingTests.swift - id: openwiki-source-715de8d16be5a3d06ae915ad resource: repo://TFMTests/AgentPersistenceTests.swift - id: openwiki-source-d57db929d0047db53dd73cdd @@ -37,7 +60,12 @@ sources: resource: repo://TFMTests/AgentScratchTests.swift - id: openwiki-source-7e117096f381ecc32caff068 resource: repo://TFMTests/AgentSkillTests.swift -generated: { by: "openwiki/0.5.2", at: "2026-09-22T00:31:10.149Z" } + - id: openwiki-source-8d265a8732f0af93c5d4e274 + resource: repo://TFMTests/MCPServerToolsTests.swift +generated: { by: "codex", at: "2026-09-23T01:34:03.251Z" } +verified: + - by: openwiki/0.5.2 + at: 2026-09-23T01:34:03.251Z --- # Assistant, Agent Runtime, Skills, and Memory @@ -52,7 +80,7 @@ This split is a security boundary as well as a modularity boundary. A model prop A runtime is deliberately single-run. It owns one event stream and one event consumer. `ConversationModel` owns the live runtime and projects its events into visible messages, tool cards, approval and input queues, run summaries, and the authoritative model transcript. The visible message list is not replay history: tool calls and results are separately rendered as cards, so replay must use `transcript`. -Tool availability is fixed at run start. A tool-capable model receives the resolved skill catalog, AgentKit built-ins, and Termind tools; a model without tool-call capability does not receive the skill/tool catalog. Session facts, plan posture, surface availability, and the memory-session identity are captured in an `AgentTurnContextSnapshot`, rather than reread from mutable UI state while the run is executing. +The registered tool catalog and run mode are resolved at run start. A tool-capable model receives the resolved skill catalog, AgentKit built-ins, and Termind tools; a model without tool-call capability does not receive the skill/tool catalog. Session facts, plan posture, surface availability, and the memory-session identity are captured in an `AgentTurnContextSnapshot`. Surface availability follows the latest delivered user snapshot rather than mutable UI focus. Termind composes the registry in this order: @@ -60,6 +88,23 @@ Termind composes the registry in this order: 2. Termind's host tools: host/metrics discovery, `ssh_exec`, terminal suggestions, SFTP operations, and the host-facing `scratch_pull` / `scratch_push` endpoints. 3. Discovered MCP tools, which are additive and cannot shadow a built-in or Termind tool name. +### Catalog, run mode, and surface availability + +`TermindAgentTools` is the shared static registration point. Its injected environment supplies host resolution, metrics, connection/authentication pools, background commands, and an optional scratch workspace. Dependencies determine which capabilities can be constructed: `scratch_pull` and `scratch_push` need that workspace, while `AssistantToolRegistry` returns an empty registry for a model without `toolCall`. A sending-surface Boolean is not a registration input; equivalent dependencies produce the same definitions for desktop and mobile Assistant surfaces. + +AgentKit selects the executable registry for the run's mode. Planning retains discovery, metrics, SSH investigation, SFTP reads and `scratch_pull`; remote SFTP mutations and `scratch_push` are acting-only, and Termind contributes no tools to reviewing. Planning and acting share the `ssh_exec` descriptor and schema, but planning uses a preflight that denies destructive commands. Acting asks for those commands; commands proven safe can be approved and run in parallel in either mode. + +`terminalSuggestionsAvailable` is the application argument that captures the separate execution gate in `AgentTurnContextSnapshot.toolAvailability["terminal_suggest"]`. It does not remove or change the advertised tool schema: + +| Surface | Terminal suggestion execution | Tool definitions | +| --- | --- | --- | +| TFM standalone Assistant | `false` | Shared Assistant catalog. | +| TFM Workspace Assistant sidebar | `true` | Shared Assistant catalog. | +| TFI standalone Assistant | `false` | Shared Assistant catalog. | +| macOS external MCP server | Not exported | Acting host subset, `request_user_secret`, and four HTTP transfer tools. | + +This snapshot dictionary is a partial override: disabling terminal suggestions does not disable independent SSH/SFTP work. The MCP server explicitly selects acting definitions, then filters by its exported-name allowlist and disabled-tool settings. It excludes terminal suggestions, scratch, web, skill, plan and task tools; its four extra tools are `sftp_upload`, `sftp_upload_status`, `sftp_download` and `sftp_download_status`. The stdio bridge forwards requests to this server and registers no second tool set; TFI has no local MCP server. See [MCP Server and Bridge](../integrations/mcp-server-and-bridge.md) for the external authorization and byte-transfer boundaries. + ## Turn lifecycle A submitted prompt is persisted as part of the run snapshot before model work begins. AgentKit streams a provider turn, emits ordered UI and durable events through a shared `AgentEventChannel`, validates any complete tool call, then schedules execution. Tool results are appended to the model transcript and persisted before the following model round. This preserves a grammatically answerable transcript even for refusal, cancellation, or failure paths. @@ -103,6 +148,8 @@ This sequence shows one assistant turn, including the persistence points around While a run is live, a further user message is queued as steering rather than starting another run. It becomes visible and durable only at the next model boundary, when AgentKit delivers it to the model; if the run has already ended, the UI returns queued text and attachments to the composer. This prevents history from claiming that a message was delivered when it was not. +Steering captures the sending session context and updates only the `terminal_suggest` availability entry. It preserves other tool overrides, the fixed skill catalog and plan contract, and the memory-session identity. Queuing does not change `ConversationModel.activeContextSnapshot`; delivery does. If the conversation has no legacy snapshot, steering keeps that context unknown instead of filling it from current UI state. The persisted availability key remains `terminal_suggest`. + Stopping a conversation cancels the runtime and its tool work, discards run-scoped secrets, marks running cards interrupted in the presentation, and returns undelivered steering text. `stopAndWait()` waits for the runtime's cancellation/persistence path before clearing live ownership. Termind also invalidates pending preparation when its controller is cancelled, recording an interrupted snapshot rather than launching a stale run. ## Approval, secrets, and trust boundaries @@ -121,7 +168,7 @@ SSH authentication and host-key prompts are Termind interactions, not model-visi ## Host tools and plan mode -Termind tools operate through noninteractive per-command SSH channels and exclusive SFTP leases; they never type into the user's interactive terminal. `terminal_suggest` creates a user-operated command card and never executes it. The standalone Assistant can discover and target configured hosts even without a sidebar session; session context is only an optional default target. +Termind tools operate through noninteractive per-command SSH channels and exclusive SFTP leases; they never type into the user's interactive terminal. `terminal_suggest` creates a user-operated command card and never executes it. The standalone Assistant can discover and target configured hosts even without a sidebar session or open PTY; session context is only an optional default target. `list_hosts` lists enabled protocols without credentials, including Telnet-only hosts. SSH/SFTP execution requires SSH to be enabled; discovering a Telnet-only host does not provide an Agent Telnet execution capability. Plan mode freezes at submission. It permits investigation, reads, and policy-allowed commands, but host-specific planning registrations refuse direct remote writes, deletes, and scratch pushes. A plan is drafted in scratch space and presented as the final action; presenting it does not itself suspend a run awaiting a decision. @@ -139,6 +186,8 @@ A fork copies its scratch scope before creating the forked conversation and remo A saved context snapshot preserves the original session and policy baseline for replay, retry, edit, and fork behavior; legacy absent context remains unknown rather than being replaced by current UI state. Persisted text, tool arguments, titles, reasoning, and attachments go through redaction. In particular, secret handles are replaced with expired lifecycle content on restore, and sensitive header values are redacted. +Tool cards resolve their persisted presenter ID through the immutable presenter registry. Cards predating those IDs use the closed legacy tool-name list and its `builtin.` IDs. Registration and surface-availability changes preserve those identities and the persisted context key; they do not require a SwiftData schema change. + Compaction changes the **model-facing** transcript, not the scrollable display history. Its summary record is persisted before the live conversation applies it; after recovery the model receives a synthetic compaction summary plus recent messages while the user can still read the full original conversation. Editing a user message truncates the target run and later runs atomically, creates the replacement turn, and removes compactions whose boundary was removed. At repository initialization, every nonterminal persisted run becomes `interrupted`; Termind never replays unfinished execution automatically. Restore reconstructs completed tool cards and can recover a durable tool result that was recorded before its next transcript snapshot. If an outcome remains unknown, repair records an explicit unknown/refusal result rather than assuming a call was never dispatched. @@ -188,6 +237,9 @@ The focused tests establish behavior that is important when changing this area: - `TFMTests/AgentPersistenceTests.swift` covers redaction, interrupted-run recovery, replay deduplication, tool-result repair, deletion of the persistent graph, edit truncation, fork persistence, and compaction restoration. - `FrameworkTests/AssistantConversationOperationsTests.swift` verifies persistence-first archive/rename/order mutations, activity guards, and immediate stop before a queued runtime can begin. - `TFMTests/AgentScratchTests.swift` verifies workspace containment, symlink refusal, inter-conversation isolation, quotas, and bounded reads. +- `TFMTests/AgentBuiltInToolAvailabilityTests.swift` checks exact Termind planning/acting/reviewing sets, the shared SSH schema with mode-specific preflight, and execution spies proving the surface gate blocks only terminal suggestions. +- `FrameworkTests/AgentSteeringTests.swift` and `TFITests/MobileAssistantTests.swift` check snapshot preservation, delivery timing, legacy unknown context, mobile send/steer availability, and tool-incapable models. +- `TFMTests/MCPServerToolsTests.swift` checks the exported acting subset against shared descriptors, transfer tools and disabled calls; `AgentHostProtocolListingTests.swift` checks protocol-neutral discovery, and `AgentToolPresentationTests.swift` retains legacy presentation coverage alongside the persistence suite. ## Change guidance diff --git a/openwiki/concepts/remote-services-and-forwarding.md b/openwiki/concepts/remote-services-and-forwarding.md index 6ab397e5..7f014cbf 100644 --- a/openwiki/concepts/remote-services-and-forwarding.md +++ b/openwiki/concepts/remote-services-and-forwarding.md @@ -36,7 +36,7 @@ sources: generated: { by: "omp", at: "2026-09-22T02:43:23.140Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-22T11:34:21.807Z + at: 2026-09-23T01:34:03.251Z --- diff --git a/openwiki/integrations/mcp-server-and-bridge.md b/openwiki/integrations/mcp-server-and-bridge.md index e79d90e4..a2e2b9ff 100644 --- a/openwiki/integrations/mcp-server-and-bridge.md +++ b/openwiki/integrations/mcp-server-and-bridge.md @@ -6,6 +6,8 @@ tags: [mcp, macos, loopback, authentication, sftp, bridge] sources: - id: openwiki-source-1fc00d0407016efa5a0378eb resource: repo://Frameworks/TermindRemoteInfrastructure/Agent/AgentBuiltInSSHTools.swift + - id: openwiki-source-d2d4c06f734241db3badc1f5 + resource: repo://Frameworks/TermindRemoteInfrastructure/Agent/TermindAgentTools.swift - id: openwiki-source-a62bfbbc7de13a894444718b resource: repo://TermindMCPBridge/main.swift - id: openwiki-source-906678adb91c2fce2d3fcaed @@ -40,10 +42,10 @@ sources: resource: repo://TFMTests/MCPTransferTicketTests.swift - id: openwiki-source-47dc468698b2904f0004ee04 resource: repo://TFMTests/MCPUploadTests.swift -generated: { by: "openwiki/0.5.2", at: "2026-09-22T00:31:10.149Z" } +generated: { by: "codex", at: "2026-09-23T01:34:03.251Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-23T00:14:42.075Z + at: 2026-09-23T01:34:03.251Z --- # MCP Server, Transfer APIs, and Stdio Bridge @@ -119,7 +121,9 @@ A session owns a UUID run ID and a `SecretBroker`. The protocol supports at most ## Tools, policy, and external authentication -The exposed registry is an allowlist—not the complete AgentKit catalog. It includes host discovery and cached metrics; `request_user_secret`; `ssh_exec` and `ssh_wait`; ordinary SFTP inspection/mutation/copy operations; and upload/download ticket/status tools. Scratch workspaces and generic fetch tools are intentionally excluded because an external MCP client has no Termind conversation backing them. +The exposed registry is an allowlist—not the complete AgentKit catalog. It includes host discovery and cached metrics; `request_user_secret`; `ssh_exec` and `ssh_wait`; ordinary SFTP inspection/mutation/copy operations; and four upload/download ticket/status tools, for 18 exported names. `terminal_suggest` is not exported. Scratch workspaces and generic fetch tools are intentionally excluded because an external MCP client has no Termind conversation backing them. + +`MCPServerTools.makeRegistry` composes AgentKit's user-interaction group, the same `TermindAgentTools` definitions used by Assistant, and the four MCP transfer tools. It supplies no scratch workspace, so the dependency-based factories cannot construct `scratch_pull` or `scratch_push`. It then explicitly selects `.available(in: .acting)` **before** applying the exported-name allowlist and disabled-tool filter. Thus MCP uses the acting `ssh_exec` implementation, not Assistant's planning wrapper; mode selection, dependency injection, and export policy are distinct boundaries. The stdio bridge forwards requests to this registry rather than building another catalog. Disabled tools are removed from discovery **and** invocation, not merely hidden. Changing a tool switch rebuilds the registry immediately; `sftp_upload` and `sftp_download` also enable or revoke their directional transfer coordinators. This makes disabling a transfer direction revoke existing tickets rather than allowing old URLs to revive after re-enablement. @@ -184,7 +188,7 @@ For direct HTTP clients, settings generates quoted setup commands for Claude Cod * Enable the server in macOS settings only after Pro access is available, generate or rotate a token, then copy a client registration command. Treat that token like a local credential and update every client after rotation, port change, or moving the app when using the bridge. * Use the server status and connected-client count to distinguish stopped, starting, ready, and failed listener state. Listener failures stop transfers; invalid port/token storage disables activation rather than exposing a partially configured server. * To immediately cut off an external client, disable the server or rotate its token. To reduce surface area, disable individual tools; disabling either transfer tool revokes its tickets. -* Test changes at the correct seam: `MCPServerSessionTests` exercises initialization, version/session requirements, tool discovery, legacy SSE, and deletion cancellation; `MCPServerToolsTests` verifies allowlisting, disabled tools, session-bound secrets, and ticket creation; `MCPUploadTests` and `MCPDownloadTests` cover resume, claim, digest, cancellation, status, and wire behavior; `MCPClientSetupCommandTests` checks exact, shell-safe client registration arguments. +* Test changes at the correct seam: `MCPServerSessionTests` exercises initialization, version/session requirements, tool discovery, legacy SSE, and deletion cancellation; `MCPServerToolsTests` verifies all 18 exports, shared descriptor parity with the acting host subset, excluded tools, disabled invocation, session-bound secrets, and ticket creation; `MCPUploadTests` and `MCPDownloadTests` cover resume, claim, digest, cancellation, status, and wire behavior; `MCPClientSetupCommandTests` checks exact, shell-safe client registration arguments. ## Related pages diff --git a/openwiki/quickstart.md b/openwiki/quickstart.md index e4d14f62..08d1d927 100644 --- a/openwiki/quickstart.md +++ b/openwiki/quickstart.md @@ -25,7 +25,7 @@ sources: generated: { by: "omp", at: "2026-09-22T03:23:14.035Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-23T00:14:42.075Z + at: 2026-09-23T01:34:03.251Z --- # Termind Engineering Quickstart diff --git a/openwiki/workflows/ssh-session-lifecycle.md b/openwiki/workflows/ssh-session-lifecycle.md index bae784a6..49187151 100644 --- a/openwiki/workflows/ssh-session-lifecycle.md +++ b/openwiki/workflows/ssh-session-lifecycle.md @@ -43,7 +43,7 @@ sources: generated: { by: "codex", at: "2026-09-23T00:14:42.075Z" } verified: - by: openwiki/0.5.2 - at: 2026-09-23T00:14:42.075Z + at: 2026-09-23T01:34:03.251Z --- # SSH, Telnet, Trust, and Workspace Session Lifecycle