// src/engine/messaging/SystemOps.ts
//
// Named constants for all system-plane operations.
// Eliminates magic string literals throughout the codebase.

export const SystemOps = {
  JOIN: '$join',
  JOIN_ACK: '$join_ack',
  LEAVE: '$leave',
  EXIT: '$exit',
  REPLY: '$reply',
  PING: '$ping',
  INTROSPECT: 'introspect',
  STATE_CHANGED: '$stateChanged',
  PROPERTY_CHANGED: '$propertyChanged',
  STRUCTURE_CHANGED: '$structureChanged',
  REBIND: '$rebind',
  RESOLVE_INTENT: '$resolveIntent',
} as const;

export type SystemOp = typeof SystemOps[keyof typeof SystemOps];

/** Set of all system-plane operation names for fast lookup */
export const SYSTEM_OPS_SET: ReadonlySet<string> = new Set(Object.values(SystemOps));
