refactor(tools): drop serviceEndpoint from fabric-guild-list response

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)
This commit is contained in:
h z
2026-05-23 23:51:05 +01:00
parent 8963f3ca00
commit c330571bcb
2 changed files with 5 additions and 22 deletions

View File

@@ -10,13 +10,6 @@ export type FabricSession = {
nodeId: string; nodeId: string;
name: string; name: string;
endpoint: 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; status: string;
// free-form description of this guild's role; admin-set on Center. // free-form description of this guild's role; admin-set on Center.
// null when the admin hasn't filled it in yet. // null when the admin hasn't filled it in yet.

View File

@@ -367,15 +367,12 @@ export function registerFabricTools(
name: 'fabric-guild-list', name: 'fabric-guild-list',
description: description:
'List guilds the calling agent is a member of. Returns ' + '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 — " + "`purpose` is a free-form description of what each guild is for — " +
'pick the guild whose purpose matches your intent. ' + 'pick the guild whose purpose matches your intent. Use this tool ' +
'`serviceEndpoint` is the internal URL another backend service ' + 'BEFORE fabric-channel-list when a workflow asks you to pick the ' +
'uses to reach this guild (NOT the client-facing url): pass it as ' + 'right guild by intent (e.g. "find a guild whose purpose mentions ' +
'`announce_guild_base_url` to dialectic_propose_topic when you ' + 'debate broadcasts" → then list its announce-type channels).',
'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.',
parameters: { parameters: {
type: 'object', type: 'object',
additionalProperties: false, additionalProperties: false,
@@ -416,13 +413,6 @@ export function registerFabricTools(
name: g.name, name: g.name,
status: g.status, status: g.status,
purpose: g.purpose ?? null, 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 <id> --endpoint <url>`).
serviceEndpoint: g.serviceEndpoint ?? null,
})), })),
}; };
}, },