import { SimSession, CONTEXT_ID, PROTOCOL_SCHEMA } from "./sim-session.mjs"; import { XyzacCommandLedger, XYZAC_COMMAND_LEDGER_SCHEMA } from "./xyzac-command-ledger.mjs"; import { XyzacScheduler, XYZAC_SCHEDULER_SCHEMA } from "./xyzac-scheduler.mjs"; export const XYZAC_SESSION_SCHEMA = "xyzac-session.v1"; export class XyzacSession extends SimSession { constructor(core, options = {}) { super(core, options); this.ledger = new XyzacCommandLedger(); this.scheduler = new XyzacScheduler(core); this.session_scope = "selected_xyzac_simulation"; } authority() { return { schema: XYZAC_SESSION_SCHEMA, authority: "linuxcnc-wasm-worker", context_id: this.contextId, session_id: this.sessionId, scope: this.session_scope, protocol_schema: PROTOCOL_SCHEMA, ledger_schema: XYZAC_COMMAND_LEDGER_SCHEMA, scheduler_schema: XYZAC_SCHEDULER_SCHEMA, machine: { coordinates: "XYZAC", joint_count: 5, kinematics: "xyzac-trt", rotary_units: "degrees" }, }; } accept(input) { const response = super.accept(input); if (response?.payload && typeof response.payload === "object") { response.payload.xyzac_session = this.authority(); response.payload.xyzac_ledger = this.ledger.audit(); response.payload.xyzac_scheduler = this.scheduler.export(); } return response; } } export { CONTEXT_ID, PROTOCOL_SCHEMA };