From c330571bcb618bce8a61850afbc9c22d0d63468c Mon Sep 17 00:00:00 2001 From: hzhang Date: Sat, 23 May 2026 23:51:05 +0100 Subject: [PATCH] refactor(tools): drop serviceEndpoint from fabric-guild-list response MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pairs with Fabric.Backend.Center@9e1909a which removed the serviceEndpoint column. The agent-driven recruitment model no longer needs a service-to-service URL distinction — agents post recruitment broadcasts directly via fabric-send-message using their normal session, no backend dials Fabric anymore. Removed: - FabricSession.guilds.serviceEndpoint type field - fabric-guild-list response mapping for serviceEndpoint - Tool description text that taught agents to plumb it into dialectic_propose_topic.announce_guild_base_url (that param is also gone — see Dialectic.OpenclawPlugin@3ce5439). Kept: - guild.purpose field (intent-based discovery, still wanted) - guild.endpoint field (clients dial it directly; unchanged) --- src/fabric-client.ts | 7 ------- src/tools.ts | 20 +++++--------------- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/src/fabric-client.ts b/src/fabric-client.ts index 8b59ccb..e503182 100644 --- a/src/fabric-client.ts +++ b/src/fabric-client.ts @@ -10,13 +10,6 @@ export type FabricSession = { nodeId: string; name: string; endpoint: string; - // Service-to-service endpoint (e.g. http://backend-guild:7002) — what - // an in-deployment backend uses to reach this guild. Distinct from - // `endpoint` which is the client/browser-facing URL. Plumb this into - // `announce_guild_base_url` on dialectic_propose_topic so the - // dialectic-backend can actually dial it. Null when the admin hasn't - // configured it. - serviceEndpoint?: string | null; status: string; // free-form description of this guild's role; admin-set on Center. // null when the admin hasn't filled it in yet. diff --git a/src/tools.ts b/src/tools.ts index 0dc118e..5d7f018 100644 --- a/src/tools.ts +++ b/src/tools.ts @@ -367,15 +367,12 @@ export function registerFabricTools( name: 'fabric-guild-list', description: 'List guilds the calling agent is a member of. Returns ' + - '{nodeId, name, purpose, status, serviceEndpoint} per row. ' + + '{nodeId, name, purpose, status} per row. ' + "`purpose` is a free-form description of what each guild is for — " + - 'pick the guild whose purpose matches your intent. ' + - '`serviceEndpoint` is the internal URL another backend service ' + - 'uses to reach this guild (NOT the client-facing url): pass it as ' + - '`announce_guild_base_url` to dialectic_propose_topic when you ' + - 'want the dialectic-backend to broadcast topic lifecycle to a ' + - "channel in this guild. Use this tool BEFORE fabric-channel-list " + - 'when a workflow asks you to pick the right guild by intent.', + 'pick the guild whose purpose matches your intent. Use this tool ' + + 'BEFORE fabric-channel-list when a workflow asks you to pick the ' + + 'right guild by intent (e.g. "find a guild whose purpose mentions ' + + 'debate broadcasts" → then list its announce-type channels).', parameters: { type: 'object', additionalProperties: false, @@ -416,13 +413,6 @@ export function registerFabricTools( name: g.name, status: g.status, purpose: g.purpose ?? null, - // serviceEndpoint is what an in-deployment service uses to - // reach this guild — pass this into announce_guild_base_url - // on dialectic_propose_topic, NOT the client-facing endpoint. - // Null when the admin hasn't configured it (broadcasts will - // fail until set; ask hangman to run - // `cli node set-service-endpoint --node-id --endpoint `). - serviceEndpoint: g.serviceEndpoint ?? null, })), }; },