pi-mono/packages/coding-agent/test/experimental-service-stubs.test.ts
Armin Ronacher 34dc9d055a feat: move facet services into Chord
Move service, replicated-state, facet host, and loader ownership into the standalone Chord package. Migrate consumers and leave runtime JSON enforcement to serializers.
2026-08-29 14:55:51 +02:00

34 lines
1.2 KiB
TypeScript

import { BACKGROUND_CONTEXT, createFacetHost } from "@earendil-works/chord";
import { describe, expect, test } from "vitest";
import {
accountsServiceFacet,
ServiceSliceNotImplemented,
transcriptServiceFacet,
} from "../src/experimental/services/stubs-provider.ts";
describe("experimental built-in service surface", () => {
test("exposes later singleton slices as explicit unimplemented providers", async () => {
const host = await createFacetHost({ facets: [accountsServiceFacet, transcriptServiceFacet] });
try {
const accounts = host.services.subscribe("pi.accounts", "singleton", () => {}).snapshot;
expect(accounts.instances[0]?.members).toContainEqual({
name: "state",
kind: "state",
sequence: 0,
value: { providers: [] },
});
await expect(
host.services.invoke(
{ serviceId: "pi.accounts", member: "remove", args: ["anthropic"] },
BACKGROUND_CONTEXT,
),
).rejects.toBeInstanceOf(ServiceSliceNotImplemented);
await expect(
host.services.invoke({ serviceId: "pi.transcript", member: "snapshot", args: [] }, BACKGROUND_CONTEXT),
).rejects.toBeInstanceOf(ServiceSliceNotImplemented);
} finally {
await host.dispose();
}
});
});