Cite hq ADR 0170, not 0169: the firewall seat's record was renumbered after a collision on hq main
This commit is contained in:
+1
-1
@@ -182,7 +182,7 @@ export async function toolsOn(bus: Broker): Promise<Listing> {
|
|||||||
for (const s of roles.seats ?? []) {
|
for (const s of roles.seats ?? []) {
|
||||||
// A node-scoped seat's tool is asked of one machine (design 33 §4): listed with its scope, so
|
// A node-scoped seat's tool is asked of one machine (design 33 §4): listed with its scope, so
|
||||||
// a caller names the machine and the call carries it — `seat:<seat>.<verb>@<node>`. Left out
|
// a caller names the machine and the call carries it — `seat:<seat>.<verb>@<node>`. Left out
|
||||||
// of the listing, the verb never resolved as a seat's and nothing served it (ADR 0169).
|
// of the listing, the verb never resolved as a seat's and nothing served it (ADR 0170).
|
||||||
for (const t of s.tools ?? []) {
|
for (const t of s.tools ?? []) {
|
||||||
tools.push({ module: s.seat, name: t.name, description: t.description, input: t.input, seat: true, scope: s.scope });
|
tools.push({ module: s.seat, name: t.name, description: t.description, input: t.input, seat: true, scope: s.scope });
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -143,7 +143,7 @@ export function mcpSurface(bus: Broker, who: string): Surface {
|
|||||||
const roles = have && seatsIn(have);
|
const roles = have && seatsIn(have);
|
||||||
const bare = given.split("@", 1)[0];
|
const bare = given.split("@", 1)[0];
|
||||||
const isSeatVerb = roles ? toolKey(bare, roles).startsWith("seat:") : false;
|
const isSeatVerb = roles ? toolKey(bare, roles).startsWith("seat:") : false;
|
||||||
// A node-scoped seat's verb is asked of one machine (design 33 §4, ADR 0169): `node`
|
// A node-scoped seat's verb is asked of one machine (design 33 §4, ADR 0170): `node`
|
||||||
// names it and travels in the subject, as for a module's tool.
|
// names it and travels in the subject, as for a module's tool.
|
||||||
const nodeScoped = isSeatVerb && (have?.tools.some((t) => t.seat && t.scope === "node" &&
|
const nodeScoped = isSeatVerb && (have?.tools.some((t) => t.seat && t.scope === "node" &&
|
||||||
`${t.module}.${t.name}` === bare) ?? false);
|
`${t.module}.${t.name}` === bare) ?? false);
|
||||||
|
|||||||
+1
-1
@@ -68,7 +68,7 @@ test("a person sees what the running modules answer, sorted, and who did not ans
|
|||||||
"the list is what the modules answered plus every role's tools, in a stable order",
|
"the list is what the modules answered plus every role's tools, in a stable order",
|
||||||
);
|
);
|
||||||
// A role's tool is marked as one; a node-scoped seat's carries its scope, so a caller names
|
// A role's tool is marked as one; a node-scoped seat's carries its scope, so a caller names
|
||||||
// the machine and the verb resolves as the seat's (design 33 §4, ADR 0169).
|
// the machine and the verb resolves as the seat's (design 33 §4, ADR 0170).
|
||||||
assert.ok(have.tools.find((x) => x.module === "mesh-controller")!.seat);
|
assert.ok(have.tools.find((x) => x.module === "mesh-controller")!.seat);
|
||||||
const lookup = have.tools.find((x) => x.module === "node-dns-resolver")!;
|
const lookup = have.tools.find((x) => x.module === "node-dns-resolver")!;
|
||||||
assert.ok(lookup.seat && lookup.scope === "node");
|
assert.ok(lookup.seat && lookup.scope === "node");
|
||||||
|
|||||||
+2
-2
@@ -35,7 +35,7 @@ async function aMeshAndACredential(t: { after: (fn: () => Promise<void> | void)
|
|||||||
{ name: "status", description: "what is wrong", input: {} },
|
{ name: "status", description: "what is wrong", input: {} },
|
||||||
{ name: "push", description: "tell a machine", input: { node: { type: "string" } } },
|
{ name: "push", description: "tell a machine", input: { node: { type: "string" } } },
|
||||||
] },
|
] },
|
||||||
// A seat held once per machine (design 33 §4, ADR 0169): its verb is asked of one.
|
// A seat held once per machine (design 33 §4, ADR 0170): its verb is asked of one.
|
||||||
{ seat: "node-dns-resolver", scope: "node", tools: [{ name: "lookup", description: "one machine's", input: {} }] },
|
{ seat: "node-dns-resolver", scope: "node", tools: [{ name: "lookup", description: "one machine's", input: {} }] },
|
||||||
],
|
],
|
||||||
}));
|
}));
|
||||||
@@ -107,7 +107,7 @@ test("a host initialises, lists the mesh's tools and calls one", async (t) => {
|
|||||||
assert.deepEqual(listed.map((x: { name: string }) => x.name),
|
assert.deepEqual(listed.map((x: { name: string }) => x.name),
|
||||||
["mesh-controller.push", "mesh-controller.status", "node-dns-resolver.lookup", "shop.price"],
|
["mesh-controller.push", "mesh-controller.status", "node-dns-resolver.lookup", "shop.price"],
|
||||||
"the modules' tools and the roles', named the way a person names them");
|
"the modules' tools and the roles', named the way a person names them");
|
||||||
// A node-scoped seat's verb takes the machine, and requires it (ADR 0169).
|
// A node-scoped seat's verb takes the machine, and requires it (ADR 0170).
|
||||||
const lookup = listed[2];
|
const lookup = listed[2];
|
||||||
assert.equal(lookup.inputSchema.properties.node.type, "string");
|
assert.equal(lookup.inputSchema.properties.node.type, "string");
|
||||||
assert.deepEqual(lookup.inputSchema.required, ["node"]);
|
assert.deepEqual(lookup.inputSchema.required, ["node"]);
|
||||||
|
|||||||
Reference in New Issue
Block a user