/** * Client inventory -- the truthful, read-only "what is actually provisioned * right now" answer, one record per canonical client in `CLIENT_IDS` order. * Consumed by `GET /health`, `cli/serve.ts`'s boot drift warning, and `mma clients`. * * A client with an unresolved marker ALWAYS reports `failed` here, regardless * of what its files happen to contain -- an interrupted operation proves * nothing about the client's current usability until recovery has resolved it. * `'provisioned'` requires BOTH an ownership-proven registration AND every * packaged skill present with a matching ownership digest for strategies that * have skills at all; a non-empty skill root proves nothing by itself. */ import type { ClientId, ClientState } from '@zhixuan92/multi-model-agent-core'; import { type ClientCapability } from './capability-registry.js'; import { type DeclaredClientRoster } from './roster.js'; import type { ClientProvisioningStatus, ProvisioningPort } from './provisioning-port.js'; /** Read-only inventory record. The provisioning status is supplemented with * the roster inputs that determined it so callers can distinguish an explicit * `off` declaration from a merely absent declaration, and a detected client * from an untouched one. */ export interface ClientInventoryRecord extends ClientProvisioningStatus { declaredState: ClientState | null; detectedPresence: boolean; } interface InventoryDeps { stateDir: string; port: ProvisioningPort; declared: DeclaredClientRoster | undefined; detected: ReadonlySet; capabilities?: readonly ClientCapability[]; } /** Read-only per-client status computation shared by `getClientInventory` and * `service.ts` (for clients a provisioning call did not itself mutate this * round -- 'suggested'/'off' entries, and any sibling untouched by a scoped * `provision([...])` call). */ export declare function computeClientStatus(deps: InventoryDeps, capability: ClientCapability, effectiveState: 'on' | 'off' | 'suggested'): ClientInventoryRecord; /** The full eight-record inventory, one per `ClientId` in `CLIENT_IDS` order. */ export declare function getClientInventory(deps: InventoryDeps): Promise; export {}; //# sourceMappingURL=inventory.d.ts.map