@casimesh/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +23 -0
- package/index.d.ts +4632 -0
- package/index.js +884 -0
- package/index.js.map +1 -0
- package/package.json +28 -0
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../contracts/src/capability.ts","../../contracts/src/common.ts","../../contracts/src/ids.ts","../../contracts/src/agent.ts","../../contracts/src/auth.ts","../../contracts/src/link.ts","../../contracts/src/node.ts","../../contracts/src/organization.ts","../../contracts/src/task.ts","../../contracts/src/events.ts","../../contracts/src/health.ts","../../contracts/src/identity.ts","../../contracts/src/mesh.ts","../../contracts/src/projection.ts","../../contracts/src/mesh-state.ts","../../contracts/src/page.ts","../../contracts/src/problem.ts","../../contracts/src/realtime.ts","../src/errors.ts","../src/http.ts","../src/realtime.ts","../src/client.ts"],"names":["z","id","event","options"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from \"zod\";\n\n/** Dotted, lowercase capability name, e.g. `vision` or `terrain.analysis` (deck slide 07). */\nexport const CapabilityName = z\n .string()\n .regex(/^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*)*$/, \"Dotted lowercase name, e.g. terrain.analysis\")\n .max(100);\nexport type CapabilityName = z.infer<typeof CapabilityName>;\n\nexport const Capability = z\n .object({\n name: CapabilityName,\n version: z.string().max(32).default(\"1.0.0\"),\n description: z.string().max(500).optional(),\n })\n .meta({ id: \"Capability\", description: \"A machine-discoverable description of what an agent can perform.\" });\nexport type Capability = z.infer<typeof Capability>;\n","import { z } from \"zod\";\n\n/** ISO-8601 UTC timestamp with milliseconds, e.g. `2026-09-28T09:28:12.123Z`. */\nexport const Timestamp = z.iso.datetime().meta({ example: \"2026-09-28T09:28:12.123Z\" });\nexport type Timestamp = z.infer<typeof Timestamp>;\n\n/** Monotonic per-entity version used for replication and optimistic concurrency (ADR-0004). */\nexport const Version = z.int().min(1).meta({ description: \"Monotonic per-entity version\" });\nexport type Version = z.infer<typeof Version>;\n\n/** Human-readable display name. */\nexport const DisplayName = z.string().trim().min(1).max(120);\n\n/** URL-safe identifier, unique within its parent (e.g. an organization within a node). */\nexport const Slug = z\n .string()\n .regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/, \"Lowercase letters, digits and single hyphens\")\n .max(63);\nexport type Slug = z.infer<typeof Slug>;\n\n/** Free-form, JSON-serialisable metadata. */\nexport const Metadata = z.record(z.string(), z.unknown());\nexport type Metadata = z.infer<typeof Metadata>;\n\n/** Fields every replicated entity carries. */\nexport const EntityAudit = {\n version: Version,\n createdAt: Timestamp,\n updatedAt: Timestamp,\n};\n","import { z } from \"zod\";\n\n/** Prefixes for time-sortable ULID identifiers (ROADMAP §2.3). */\nexport const ID_PREFIX = {\n node: \"node\",\n organization: \"org\",\n agent: \"agt\",\n link: \"lnk\",\n event: \"evt\",\n command: \"cmd\",\n principal: \"prn\",\n roleBinding: \"rol\",\n apiKey: \"key\",\n task: \"tsk\",\n} as const;\n\nexport type IdKind = keyof typeof ID_PREFIX;\n\n/** Crockford base32 ULID body (26 chars, no I, L, O, U). */\nexport const ULID_PATTERN = \"[0-9A-HJKMNP-TV-Z]{26}\";\n\n/** Builds a Zod schema that validates `<prefix>_<ULID>` identifiers. */\nexport const prefixedId = <K extends IdKind>(kind: K) =>\n z\n .string()\n .regex(new RegExp(`^${ID_PREFIX[kind]}_${ULID_PATTERN}$`), `Expected a ${kind} id (${ID_PREFIX[kind]}_<ULID>)`)\n .meta({ description: `${kind} identifier`, example: `${ID_PREFIX[kind]}_01J9Z3K7Q8R5T2V4W6X8Y0A1B2` });\n\nexport const NodeId = prefixedId(\"node\");\nexport const OrganizationId = prefixedId(\"organization\");\nexport const AgentId = prefixedId(\"agent\");\nexport const LinkId = prefixedId(\"link\");\nexport const EventId = prefixedId(\"event\");\nexport const CommandId = prefixedId(\"command\");\nexport const PrincipalId = prefixedId(\"principal\");\nexport const RoleBindingId = prefixedId(\"roleBinding\");\nexport const TaskId = prefixedId(\"task\");\n\nexport type NodeId = z.infer<typeof NodeId>;\nexport type OrganizationId = z.infer<typeof OrganizationId>;\nexport type AgentId = z.infer<typeof AgentId>;\nexport type LinkId = z.infer<typeof LinkId>;\nexport type EventId = z.infer<typeof EventId>;\nexport type CommandId = z.infer<typeof CommandId>;\nexport type PrincipalId = z.infer<typeof PrincipalId>;\nexport type RoleBindingId = z.infer<typeof RoleBindingId>;\nexport type TaskId = z.infer<typeof TaskId>;\n","import { z } from \"zod\";\nimport { Capability } from \"./capability.ts\";\nimport { DisplayName, EntityAudit, Metadata } from \"./common.ts\";\nimport { AgentId, NodeId, OrganizationId } from \"./ids.ts\";\n\n/** `mesh` marks the organization's Mesh Agent — exactly one per organization (ADR-0003). */\nexport const AgentKind = z.enum([\"standard\", \"mesh\"]);\nexport type AgentKind = z.infer<typeof AgentKind>;\n\nexport const AgentStatus = z.enum([\"created\", \"starting\", \"running\", \"stopped\", \"error\"]);\nexport type AgentStatus = z.infer<typeof AgentStatus>;\n\nconst capabilityList = z\n .array(Capability)\n .max(64)\n .refine((caps) => new Set(caps.map((c) => c.name)).size === caps.length, \"Capability names must be unique\");\n\nexport const Agent = z\n .object({\n id: AgentId,\n organizationId: OrganizationId,\n nodeId: NodeId,\n name: DisplayName,\n kind: AgentKind,\n status: AgentStatus,\n capabilities: capabilityList,\n /** Model backing the agent, e.g. `claude-sonnet-5`; null for rule-based agents. */\n model: z.string().max(100).nullable(),\n metadata: Metadata,\n ...EntityAudit,\n })\n .meta({ id: \"Agent\", description: \"An autonomous software entity with identity, capabilities and policies.\" });\nexport type Agent = z.infer<typeof Agent>;\n\nexport const CreateAgentRequest = z\n .object({\n name: DisplayName,\n capabilities: capabilityList.default([]),\n model: z.string().max(100).nullable().default(null),\n metadata: Metadata.optional(),\n })\n .meta({ id: \"CreateAgentRequest\" });\n/** Parsed request (defaults applied) — what use cases receive. */\nexport type CreateAgentRequest = z.infer<typeof CreateAgentRequest>;\n/** What callers may send — capabilities and model are optional. */\nexport type CreateAgentRequestInput = z.input<typeof CreateAgentRequest>;\n\nexport const UpdateAgentRequest = z\n .object({\n name: DisplayName.optional(),\n capabilities: capabilityList.optional(),\n model: z.string().max(100).nullable().optional(),\n metadata: Metadata.optional(),\n })\n .refine((body) => Object.keys(body).length > 0, \"At least one field must be provided\")\n .meta({ id: \"UpdateAgentRequest\" });\nexport type UpdateAgentRequest = z.infer<typeof UpdateAgentRequest>;\n","import { z } from \"zod\";\nimport { DisplayName, Timestamp } from \"./common.ts\";\nimport { NodeId, OrganizationId, PrincipalId, RoleBindingId } from \"./ids.ts\";\n\nexport const PrincipalKind = z.enum([\"user\", \"service\"]);\nexport type PrincipalKind = z.infer<typeof PrincipalKind>;\n\nexport const Principal = z\n .object({\n id: PrincipalId,\n kind: PrincipalKind,\n name: DisplayName,\n publicKey: z.string().nullable(),\n createdAt: Timestamp,\n })\n .meta({ id: \"Principal\", description: \"A user or service that can be authenticated and granted roles.\" });\nexport type Principal = z.infer<typeof Principal>;\n\n/** Ownership roles (ADR-0010). */\nexport const Role = z.enum([\"node_owner\", \"org_owner\"]);\nexport type Role = z.infer<typeof Role>;\n\nexport const RoleScope = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"node\"), nodeId: NodeId }),\n z.object({ type: z.literal(\"organization\"), organizationId: OrganizationId, nodeId: NodeId }),\n]);\nexport type RoleScope = z.infer<typeof RoleScope>;\n\nexport const RoleBinding = z\n .object({\n id: RoleBindingId,\n principalId: PrincipalId,\n role: Role,\n scope: RoleScope,\n createdAt: Timestamp,\n })\n .refine(\n (b) => (b.role === \"node_owner\" ? b.scope.type === \"node\" : b.scope.type === \"organization\"),\n \"node_owner must be node-scoped and org_owner organization-scoped\",\n )\n .meta({ id: \"RoleBinding\" });\nexport type RoleBinding = z.infer<typeof RoleBinding>;\n\nexport const GrantOwnerRequest = z.object({ principalId: PrincipalId }).meta({ id: \"GrantOwnerRequest\" });\nexport type GrantOwnerRequest = z.infer<typeof GrantOwnerRequest>;\n","import { z } from \"zod\";\nimport { EntityAudit, Timestamp } from \"./common.ts\";\nimport { LinkId, NodeId } from \"./ids.ts\";\n\nexport const TransportKind = z.enum([\"memory\", \"ws-peer\", \"tcp\", \"mqtt\", \"meshtastic\", \"meshcore\"]);\nexport type TransportKind = z.infer<typeof TransportKind>;\n\n/** `requested` = an owner drew the edge in the Monitor and the peer has not accepted yet (ADR-0008). */\nexport const LinkState = z.enum([\"requested\", \"up\", \"down\"]);\nexport type LinkState = z.infer<typeof LinkState>;\n\nexport const LinkQuality = z.object({\n latencyMs: z.number().nonnegative().optional(),\n rssi: z.number().optional(),\n});\nexport type LinkQuality = z.infer<typeof LinkQuality>;\n\nexport const Link = z\n .object({\n id: LinkId,\n aNodeId: NodeId,\n bNodeId: NodeId,\n transport: TransportKind,\n state: LinkState,\n quality: LinkQuality,\n lastSeenAt: Timestamp.nullable(),\n ...EntityAudit,\n })\n .refine((link) => link.aNodeId !== link.bNodeId, \"A link must connect two different nodes\")\n .meta({ id: \"Link\", description: \"Transport-level adjacency between two nodes — the edges of the topology.\" });\nexport type Link = z.infer<typeof Link>;\n\nexport const CreateLinkRequest = z\n .object({ aNodeId: NodeId, bNodeId: NodeId, transport: TransportKind })\n .refine((body) => body.aNodeId !== body.bNodeId, \"A link must connect two different nodes\")\n .meta({ id: \"CreateLinkRequest\" });\nexport type CreateLinkRequest = z.infer<typeof CreateLinkRequest>;\n","import { z } from \"zod\";\nimport { DisplayName, EntityAudit, Metadata, Timestamp } from \"./common.ts\";\nimport { NodeId } from \"./ids.ts\";\n\nexport const NodeStatus = z.enum([\"online\", \"degraded\", \"offline\"]);\nexport type NodeStatus = z.infer<typeof NodeStatus>;\n\nexport const Node = z\n .object({\n id: NodeId,\n name: DisplayName,\n publicKey: z.string().min(1),\n /** Base URL where other nodes and clients reach this node, e.g. `https://node-a.example:7700` (ADR-0017). */\n endpoint: z.url().nullable(),\n status: NodeStatus,\n metadata: Metadata,\n lastSeenAt: Timestamp.nullable(),\n ...EntityAudit,\n })\n .meta({ id: \"Node\", description: \"A physical or virtual endpoint connected to the mesh.\" });\nexport type Node = z.infer<typeof Node>;\n\nexport const UpdateNodeRequest = z\n .object({\n name: DisplayName.optional(),\n endpoint: z.url().nullable().optional(),\n metadata: Metadata.optional(),\n })\n .refine((body) => Object.keys(body).length > 0, \"At least one field must be provided\")\n .meta({ id: \"UpdateNodeRequest\" });\nexport type UpdateNodeRequest = z.infer<typeof UpdateNodeRequest>;\n","import { z } from \"zod\";\nimport { DisplayName, EntityAudit, Metadata, Slug } from \"./common.ts\";\nimport { NodeId, OrganizationId, PrincipalId } from \"./ids.ts\";\n\nexport const Organization = z\n .object({\n id: OrganizationId,\n nodeId: NodeId,\n name: DisplayName,\n slug: Slug,\n metadata: Metadata,\n ...EntityAudit,\n })\n .meta({ id: \"Organization\", description: \"A logical boundary on a node that owns policies, identities and agents.\" });\nexport type Organization = z.infer<typeof Organization>;\n\nexport const CreateOrganizationRequest = z\n .object({\n name: DisplayName,\n /** Derived from `name` when omitted. */\n slug: Slug.optional(),\n metadata: Metadata.optional(),\n /** Principal to make the first org owner; defaults to the caller. */\n ownerPrincipalId: PrincipalId.optional(),\n })\n .meta({ id: \"CreateOrganizationRequest\" });\nexport type CreateOrganizationRequest = z.infer<typeof CreateOrganizationRequest>;\n\nexport const UpdateOrganizationRequest = z\n .object({\n name: DisplayName.optional(),\n metadata: Metadata.optional(),\n })\n .refine((body) => Object.keys(body).length > 0, \"At least one field must be provided\")\n .meta({ id: \"UpdateOrganizationRequest\" });\nexport type UpdateOrganizationRequest = z.infer<typeof UpdateOrganizationRequest>;\n","import { z } from \"zod\";\nimport { CapabilityName } from \"./capability.ts\";\nimport { Metadata, Timestamp, Version } from \"./common.ts\";\nimport { AgentId, NodeId, OrganizationId, TaskId } from \"./ids.ts\";\n\n/**\n * A capability request between agents (ADR-0020, deck slides 06/07). Created by the requester's node; every later\n * change is written by the assignee's node only.\n */\nexport const TaskStatus = z.enum([\"requested\", \"accepted\", \"completed\", \"failed\"]);\nexport type TaskStatus = z.infer<typeof TaskStatus>;\n\nexport const TERMINAL_TASK_STATUSES: readonly TaskStatus[] = [\"completed\", \"failed\"];\n\n/** An agent taking part in a task, with where it lives. */\nexport const TaskParty = z.object({ agentId: AgentId, organizationId: OrganizationId, nodeId: NodeId });\nexport type TaskParty = z.infer<typeof TaskParty>;\n\n/** The organization a task was routed to, through its Mesh Agent. */\nexport const TaskAssignee = z.object({ organizationId: OrganizationId, nodeId: NodeId, meshAgentId: AgentId });\nexport type TaskAssignee = z.infer<typeof TaskAssignee>;\n\n/** One stage of the observe → reason → act → verify pipeline (deck slide 05). */\nexport const TaskStep = z.object({\n name: z.enum([\"observe\", \"reason\", \"act\", \"verify\"]),\n at: Timestamp,\n summary: z.string().max(1000),\n});\nexport type TaskStep = z.infer<typeof TaskStep>;\n\nexport const TaskError = z.object({ code: z.string().max(64), message: z.string().max(1000) });\nexport type TaskError = z.infer<typeof TaskError>;\n\nexport const Task = z\n .object({\n id: TaskId,\n capability: CapabilityName,\n input: Metadata,\n status: TaskStatus,\n requester: TaskParty,\n /** The requester organization's Mesh Agent, the first hop of the route. */\n requesterMeshAgentId: AgentId,\n assignee: TaskAssignee,\n /** The agent that does the work, chosen by the assignee's Mesh Agent on acceptance. */\n provider: TaskParty.nullable(),\n output: Metadata.nullable(),\n error: TaskError.nullable(),\n steps: z.array(TaskStep).max(32),\n /** Model that produced the result; null when a rule-based model did. */\n model: z.string().max(100).nullable(),\n version: Version,\n createdAt: Timestamp,\n updatedAt: Timestamp,\n })\n .meta({\n id: \"Task\",\n description: \"A capability request routed through Mesh Agents, with its result and provenance (ADR-0020).\",\n });\nexport type Task = z.infer<typeof Task>;\n\nexport const RequestTaskRequest = z\n .object({\n capability: CapabilityName,\n input: Metadata.default({}),\n })\n .meta({ id: \"RequestTaskRequest\" });\nexport type RequestTaskRequest = z.infer<typeof RequestTaskRequest>;\nexport type RequestTaskRequestInput = z.input<typeof RequestTaskRequest>;\n\n/** An agent offering a capability, as listed by the capability directory. */\nexport const CapabilityProvider = z\n .object({\n agentId: AgentId,\n agentName: z.string(),\n organizationId: OrganizationId,\n organizationName: z.string(),\n nodeId: NodeId,\n /** Running, on a node that is not offline — i.e. a task could be routed to it now. */\n available: z.boolean(),\n })\n .meta({ id: \"CapabilityProvider\" });\nexport type CapabilityProvider = z.infer<typeof CapabilityProvider>;\n","import { z } from \"zod\";\nimport { Agent, AgentStatus } from \"./agent.ts\";\nimport { RoleBinding } from \"./auth.ts\";\nimport { Timestamp, Version } from \"./common.ts\";\nimport {\n AgentId,\n CommandId,\n EventId,\n LinkId,\n NodeId,\n OrganizationId,\n PrincipalId,\n RoleBindingId,\n TaskId,\n} from \"./ids.ts\";\nimport { Link } from \"./link.ts\";\nimport { Node, NodeStatus } from \"./node.ts\";\nimport { Organization } from \"./organization.ts\";\nimport { Task } from \"./task.ts\";\n\n/**\n * Event catalog (ROADMAP §2.4). Every state change in the mesh is one of these events.\n *\n * A *domain event* is what the domain produces: `type`, `subject` and `payload`.\n * A *mesh event* wraps it in the envelope (id, seq, origin, causation, timestamp, signature)\n * when it is committed, replicated and pushed to clients.\n */\n\nconst subject = <K extends string, S extends z.ZodType<string>>(kind: K, id: S) =>\n z.object({ kind: z.literal(kind), id, version: Version });\n\nconst NodeSubject = subject(\"node\", NodeId);\nconst OrganizationSubject = subject(\"organization\", OrganizationId);\nconst AgentSubject = subject(\"agent\", AgentId);\nconst LinkSubject = subject(\"link\", LinkId);\nconst RoleBindingSubject = subject(\"roleBinding\", RoleBindingId);\nconst TaskSubject = subject(\"task\", TaskId);\n\nconst event = <T extends string, S extends z.ZodType, P extends z.ZodType>(type: T, subjectSchema: S, payload: P) =>\n z.object({ type: z.literal(type), subject: subjectSchema, payload });\n\nconst AgentRegistration = z.object({\n meshAgentId: AgentId,\n agentId: AgentId,\n organizationId: OrganizationId,\n nodeId: NodeId,\n});\n\nexport const NodeCreated = event(\"node.created\", NodeSubject, z.object({ node: Node }));\nexport const NodeUpdated = event(\"node.updated\", NodeSubject, z.object({ node: Node }));\nexport const NodeRemoved = event(\"node.removed\", NodeSubject, z.object({ nodeId: NodeId }));\n/** Derived locally by each node's presence detector; does not bump the owned entity version. */\nexport const NodeStatusChanged = event(\n \"node.status_changed\",\n NodeSubject,\n z.object({ nodeId: NodeId, status: NodeStatus, previousStatus: NodeStatus, lastSeenAt: Timestamp.nullable() }),\n);\n/** Mesh-only liveness signal; aggregated into `lastSeenAt`, never forwarded to UI clients. */\nexport const NodeHeartbeat = event(\"node.heartbeat\", NodeSubject, z.object({ nodeId: NodeId, at: Timestamp }));\n\nexport const OrganizationCreated = event(\n \"organization.created\",\n OrganizationSubject,\n z.object({ organization: Organization }),\n);\nexport const OrganizationUpdated = event(\n \"organization.updated\",\n OrganizationSubject,\n z.object({ organization: Organization }),\n);\nexport const OrganizationRemoved = event(\n \"organization.removed\",\n OrganizationSubject,\n z.object({ organizationId: OrganizationId, nodeId: NodeId }),\n);\n\nexport const AgentCreated = event(\"agent.created\", AgentSubject, z.object({ agent: Agent }));\nexport const AgentUpdated = event(\"agent.updated\", AgentSubject, z.object({ agent: Agent }));\nexport const AgentStatusChanged = event(\n \"agent.status_changed\",\n AgentSubject,\n z.object({ agent: Agent, previousStatus: AgentStatus }),\n);\nexport const AgentRemoved = event(\n \"agent.removed\",\n AgentSubject,\n z.object({ agentId: AgentId, organizationId: OrganizationId, nodeId: NodeId }),\n);\n\nexport const MeshAgentAgentRegistered = event(\"mesh_agent.agent_registered\", AgentSubject, AgentRegistration);\nexport const MeshAgentAgentDeregistered = event(\"mesh_agent.agent_deregistered\", AgentSubject, AgentRegistration);\n\nexport const LinkRequested = event(\"link.requested\", LinkSubject, z.object({ link: Link }));\nexport const LinkUp = event(\"link.up\", LinkSubject, z.object({ link: Link }));\nexport const LinkUpdated = event(\"link.updated\", LinkSubject, z.object({ link: Link }));\nexport const LinkDown = event(\"link.down\", LinkSubject, z.object({ link: Link }));\nexport const LinkRemoved = event(\"link.removed\", LinkSubject, z.object({ linkId: LinkId }));\n\nexport const RoleGranted = event(\"role.granted\", RoleBindingSubject, z.object({ binding: RoleBinding }));\nexport const RoleRevoked = event(\"role.revoked\", RoleBindingSubject, z.object({ binding: RoleBinding }));\n\n/** Committed by the requester's node; the task's later events come from the assignee's node only (ADR-0020). */\nexport const TaskRequested = event(\"task.requested\", TaskSubject, z.object({ task: Task }));\nexport const TaskAccepted = event(\"task.accepted\", TaskSubject, z.object({ task: Task }));\nexport const TaskCompleted = event(\"task.completed\", TaskSubject, z.object({ task: Task }));\nexport const TaskFailed = event(\"task.failed\", TaskSubject, z.object({ task: Task }));\n\nexport const DomainEvent = z\n .discriminatedUnion(\"type\", [\n NodeCreated,\n NodeUpdated,\n NodeRemoved,\n NodeStatusChanged,\n NodeHeartbeat,\n OrganizationCreated,\n OrganizationUpdated,\n OrganizationRemoved,\n AgentCreated,\n AgentUpdated,\n AgentStatusChanged,\n AgentRemoved,\n MeshAgentAgentRegistered,\n MeshAgentAgentDeregistered,\n LinkRequested,\n LinkUp,\n LinkUpdated,\n LinkDown,\n LinkRemoved,\n RoleGranted,\n RoleRevoked,\n TaskRequested,\n TaskAccepted,\n TaskCompleted,\n TaskFailed,\n ])\n .meta({ id: \"DomainEvent\" });\nexport type DomainEvent = z.infer<typeof DomainEvent>;\nexport type DomainEventType = DomainEvent[\"type\"];\nexport type DomainEventOf<T extends DomainEventType> = Extract<DomainEvent, { type: T }>;\n\nexport const DOMAIN_EVENT_TYPES = DomainEvent.options.map((o) => o.shape.type.value) as readonly DomainEventType[];\n\n/** Envelope schema version (ADR-0009). */\nexport const ENVELOPE_VERSION = 1 as const;\n\nexport const EnvelopeMeta = z.object({\n v: z.literal(ENVELOPE_VERSION),\n id: EventId,\n /** Monotonic per origin node; `(origin.nodeId, seq)` is the replication cursor. */\n seq: z.int().min(1),\n origin: z.object({ nodeId: NodeId, principalId: PrincipalId.nullable() }),\n /** Groups the events produced by one command, e.g. a cascade (ADR-0005). */\n causationId: CommandId,\n timestamp: Timestamp,\n /** Ed25519 signature over the canonical encoding; attached by the protocol layer (Phase 5). */\n sig: z.string().nullable(),\n});\nexport type EnvelopeMeta = z.infer<typeof EnvelopeMeta>;\n\nexport const MeshEvent = z.intersection(EnvelopeMeta, DomainEvent).meta({ id: \"MeshEvent\" });\nexport type MeshEvent = z.infer<typeof MeshEvent>;\n","import { z } from \"zod\";\nimport { NodeId } from \"./ids.ts\";\n\nexport const HealthResponse = z\n .object({\n status: z.enum([\"ok\", \"degraded\"]),\n service: z.literal(\"node-server\"),\n /** The node this server runs as — clients use it to know where their writes are accepted (ADR-0004). */\n nodeId: NodeId,\n version: z.string(),\n uptimeSeconds: z.number().nonnegative(),\n timestamp: z.iso.datetime(),\n })\n .meta({ id: \"HealthResponse\", description: \"Liveness and version information for a Node Server.\" });\n\nexport type HealthResponse = z.infer<typeof HealthResponse>;\n","import { z } from \"zod\";\nimport { Principal, PrincipalKind, RoleBinding } from \"./auth.ts\";\nimport { DisplayName, Timestamp } from \"./common.ts\";\n\n/** Who the caller is and which ownership roles they hold — drives the Monitor's controls (ADR-0010). */\nexport const Me = z\n .object({ principal: Principal, roles: z.array(RoleBinding) })\n .meta({ id: \"Me\", description: \"The authenticated principal and its role bindings.\" });\nexport type Me = z.infer<typeof Me>;\n\nexport const CreatePrincipalRequest = z\n .object({ name: DisplayName, kind: PrincipalKind.default(\"user\") })\n .meta({ id: \"CreatePrincipalRequest\" });\nexport type CreatePrincipalRequest = z.infer<typeof CreatePrincipalRequest>;\n\n/** Shown exactly once. Users get a bearer token; services get a long-lived API key. */\nexport const Credential = z\n .discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"token\"), token: z.string(), expiresAt: Timestamp }),\n z.object({ type: z.literal(\"apiKey\"), apiKey: z.string() }),\n ])\n .meta({ id: \"Credential\" });\nexport type Credential = z.infer<typeof Credential>;\n\nexport const CreatePrincipalResponse = z\n .object({ principal: Principal, credential: Credential })\n .meta({ id: \"CreatePrincipalResponse\" });\nexport type CreatePrincipalResponse = z.infer<typeof CreatePrincipalResponse>;\n","import { z } from \"zod\";\nimport { Agent } from \"./agent.ts\";\nimport { Capability } from \"./capability.ts\";\nimport { NodeId } from \"./ids.ts\";\nimport { Link } from \"./link.ts\";\nimport { Node } from \"./node.ts\";\nimport { Organization } from \"./organization.ts\";\nimport { Task } from \"./task.ts\";\n\n/** Per-origin-node sequence reached by a replica: `{ [nodeId]: seq }`. */\nexport const MeshCursor = z.record(NodeId, z.int().min(0)).meta({ id: \"MeshCursor\" });\nexport type MeshCursor = z.infer<typeof MeshCursor>;\n\nexport const MeshSnapshot = z\n .object({\n nodes: z.array(Node),\n organizations: z.array(Organization),\n agents: z.array(Agent),\n links: z.array(Link),\n /** The most recent tasks, newest first (ADR-0020). */\n tasks: z.array(Task),\n cursor: MeshCursor,\n })\n .meta({ id: \"MeshSnapshot\", description: \"Full mesh state plus the cursor to resume the event stream from.\" });\nexport type MeshSnapshot = z.infer<typeof MeshSnapshot>;\n\nexport const MeshStats = z\n .object({\n nodes: z.int().min(0),\n online: z.int().min(0),\n degraded: z.int().min(0),\n offline: z.int().min(0),\n organizations: z.int().min(0),\n agents: z.int().min(0),\n })\n .meta({ id: \"MeshStats\", description: \"Counters shown in the Monitor's mesh summary.\" });\nexport type MeshStats = z.infer<typeof MeshStats>;\n\nexport const NodeDetail = z\n .object({\n node: Node,\n organizations: z.array(Organization),\n agents: z.array(Agent),\n /** Distinct capabilities offered by the node's agents. */\n capabilities: z.array(Capability),\n })\n .meta({ id: \"NodeDetail\", description: \"Everything the Monitor's node detail panel shows (ui.md).\" });\nexport type NodeDetail = z.infer<typeof NodeDetail>;\n\n/** Encodes a cursor for URLs (`?cursor=`): base64url of its JSON. */\nexport function encodeCursor(cursor: MeshCursor): string {\n const bytes = new TextEncoder().encode(JSON.stringify(cursor));\n return btoa(String.fromCharCode(...bytes))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\n\n/** Decodes a cursor produced by `encodeCursor`. Throws on malformed input. */\nexport function decodeCursor(encoded: string): MeshCursor {\n const base64 = encoded.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const bytes = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));\n return MeshCursor.parse(JSON.parse(new TextDecoder().decode(bytes)));\n}\n","import type { Agent } from \"./agent.ts\";\nimport type { RoleBinding } from \"./auth.ts\";\nimport type { DomainEvent } from \"./events.ts\";\nimport type { Link } from \"./link.ts\";\nimport type { Node, NodeStatus } from \"./node.ts\";\nimport type { Organization } from \"./organization.ts\";\nimport type { Task } from \"./task.ts\";\n\n/**\n * Translates an event into the state change it implies. The node server's persistence applies these operations\n * atomically with the event append, replication (Phase 5) applies them for remote events, and clients (the SDK's\n * mesh mirror, the Monitor) apply them to their local copy — so nobody can disagree about what an event means.\n */\nexport type ProjectionOp =\n | { readonly op: \"upsert\"; readonly kind: \"node\"; readonly entity: Node }\n | { readonly op: \"upsert\"; readonly kind: \"organization\"; readonly entity: Organization }\n | { readonly op: \"upsert\"; readonly kind: \"agent\"; readonly entity: Agent }\n | { readonly op: \"upsert\"; readonly kind: \"link\"; readonly entity: Link }\n | { readonly op: \"upsert\"; readonly kind: \"roleBinding\"; readonly entity: RoleBinding }\n /** Tasks have two writers in turn (ADR-0020), so replicas apply only newer versions. */\n | { readonly op: \"upsert\"; readonly kind: \"task\"; readonly entity: Task }\n | {\n readonly op: \"delete\";\n readonly kind: \"node\" | \"organization\" | \"agent\" | \"link\" | \"roleBinding\";\n readonly id: string;\n }\n | {\n readonly op: \"presence\";\n readonly nodeId: string;\n readonly status: NodeStatus;\n readonly lastSeenAt: string | null;\n }\n | { readonly op: \"none\" };\n\nexport function project(event: DomainEvent): ProjectionOp {\n switch (event.type) {\n case \"node.created\":\n case \"node.updated\":\n return { op: \"upsert\", kind: \"node\", entity: event.payload.node };\n case \"node.removed\":\n return { op: \"delete\", kind: \"node\", id: event.payload.nodeId };\n case \"node.status_changed\":\n return {\n op: \"presence\",\n nodeId: event.payload.nodeId,\n status: event.payload.status,\n lastSeenAt: event.payload.lastSeenAt,\n };\n case \"organization.created\":\n case \"organization.updated\":\n return { op: \"upsert\", kind: \"organization\", entity: event.payload.organization };\n case \"organization.removed\":\n return { op: \"delete\", kind: \"organization\", id: event.payload.organizationId };\n case \"agent.created\":\n case \"agent.updated\":\n case \"agent.status_changed\":\n return { op: \"upsert\", kind: \"agent\", entity: event.payload.agent };\n case \"agent.removed\":\n return { op: \"delete\", kind: \"agent\", id: event.payload.agentId };\n case \"link.requested\":\n case \"link.up\":\n case \"link.updated\":\n case \"link.down\":\n return { op: \"upsert\", kind: \"link\", entity: event.payload.link };\n case \"link.removed\":\n return { op: \"delete\", kind: \"link\", id: event.payload.linkId };\n case \"role.granted\":\n return { op: \"upsert\", kind: \"roleBinding\", entity: event.payload.binding };\n case \"role.revoked\":\n return { op: \"delete\", kind: \"roleBinding\", id: event.payload.binding.id };\n case \"task.requested\":\n case \"task.accepted\":\n case \"task.completed\":\n case \"task.failed\":\n return { op: \"upsert\", kind: \"task\", entity: event.payload.task };\n // Registration is implied by organization membership; heartbeats are handled by the presence detector.\n case \"mesh_agent.agent_registered\":\n case \"mesh_agent.agent_deregistered\":\n case \"node.heartbeat\":\n return { op: \"none\" };\n }\n}\n","import type { Agent } from \"./agent.ts\";\nimport type { MeshEvent } from \"./events.ts\";\nimport type { Link } from \"./link.ts\";\nimport type { MeshCursor, MeshSnapshot } from \"./mesh.ts\";\nimport type { Node } from \"./node.ts\";\nimport type { Organization } from \"./organization.ts\";\nimport { project } from \"./projection.ts\";\nimport type { Task } from \"./task.ts\";\n\n/** A client-side mirror of the mesh, kept current by applying events to a snapshot. */\nexport interface MeshState {\n readonly nodes: Readonly<Record<string, Node>>;\n readonly organizations: Readonly<Record<string, Organization>>;\n readonly agents: Readonly<Record<string, Agent>>;\n readonly links: Readonly<Record<string, Link>>;\n readonly tasks: Readonly<Record<string, Task>>;\n readonly cursor: MeshCursor;\n}\n\nconst byId = <T extends { id: string }>(items: readonly T[]): Record<string, T> =>\n Object.fromEntries(items.map((item) => [item.id, item]));\n\nexport function meshStateFromSnapshot(snapshot: MeshSnapshot): MeshState {\n return {\n nodes: byId(snapshot.nodes),\n organizations: byId(snapshot.organizations),\n agents: byId(snapshot.agents),\n links: byId(snapshot.links),\n // Nodes from before Phase 6 send no tasks; tolerate them during rolling upgrades.\n tasks: byId(snapshot.tasks ?? []),\n cursor: { ...snapshot.cursor },\n };\n}\n\n/**\n * Applies one event immutably. Events at or below the cursor for their origin are ignored, so replays\n * and duplicates are harmless. Role bindings are not mirrored (they are not part of the snapshot).\n */\nexport function applyMeshEvent(state: MeshState, event: MeshEvent): MeshState {\n const seen = state.cursor[event.origin.nodeId] ?? 0;\n if (event.seq <= seen) return state;\n const cursor = { ...state.cursor, [event.origin.nodeId]: event.seq };\n const op = project(event);\n\n switch (op.op) {\n case \"upsert\":\n switch (op.kind) {\n case \"node\":\n return { ...state, cursor, nodes: { ...state.nodes, [op.entity.id]: op.entity } };\n case \"organization\":\n return { ...state, cursor, organizations: { ...state.organizations, [op.entity.id]: op.entity } };\n case \"agent\":\n return { ...state, cursor, agents: { ...state.agents, [op.entity.id]: op.entity } };\n case \"link\":\n return { ...state, cursor, links: { ...state.links, [op.entity.id]: op.entity } };\n case \"roleBinding\":\n return { ...state, cursor };\n case \"task\": {\n // Two writers in turn (ADR-0020): an older version arriving late must not win.\n const current = state.tasks[op.entity.id];\n if (current && current.version >= op.entity.version) return { ...state, cursor };\n return { ...state, cursor, tasks: { ...state.tasks, [op.entity.id]: op.entity } };\n }\n }\n break;\n case \"delete\": {\n if (op.kind === \"roleBinding\") return { ...state, cursor };\n const table = { node: \"nodes\", organization: \"organizations\", agent: \"agents\", link: \"links\" } as const;\n const key = table[op.kind];\n const { [op.id]: _removed, ...rest } = state[key];\n return { ...state, cursor, [key]: rest };\n }\n case \"presence\": {\n const node = state.nodes[op.nodeId];\n if (!node) return { ...state, cursor };\n return {\n ...state,\n cursor,\n nodes: { ...state.nodes, [node.id]: { ...node, status: op.status, lastSeenAt: op.lastSeenAt } },\n };\n }\n case \"none\":\n return { ...state, cursor };\n }\n}\n","import { z } from \"zod\";\n\n/** Cursor pagination query (ROADMAP §2.6). `cursor` is opaque to clients. */\nexport const PageQuery = z.object({\n limit: z.coerce.number().int().min(1).max(200).default(50),\n cursor: z.string().min(1).optional(),\n});\nexport type PageQuery = z.infer<typeof PageQuery>;\n\n/** A page of results; `nextCursor` is null on the last page. */\nexport const Page = <T extends z.ZodType>(item: T, id: string) =>\n z.object({ items: z.array(item), nextCursor: z.string().nullable() }).meta({ id });\n\nexport interface PageOf<T> {\n readonly items: T[];\n readonly nextCursor: string | null;\n}\n","import { z } from \"zod\";\n\n/** RFC 9457 problem details — every API error uses this shape. */\nexport const ProblemDetails = z\n .object({\n type: z.string().meta({ example: \"/problems/forbidden\" }),\n title: z.string(),\n status: z.int().min(400).max(599),\n detail: z.string().optional(),\n instance: z.string().optional(),\n code: z.string().meta({ description: \"Stable machine-readable error code\" }),\n errors: z.array(z.object({ path: z.string(), message: z.string() })).optional(),\n })\n .meta({ id: \"ProblemDetails\" });\nexport type ProblemDetails = z.infer<typeof ProblemDetails>;\n","import { z } from \"zod\";\nimport { MeshEvent } from \"./events.ts\";\nimport { PrincipalId } from \"./ids.ts\";\nimport { MeshCursor } from \"./mesh.ts\";\n\n/**\n * Realtime protocol over `WS /v1/realtime` (ADR-0014). JSON text frames.\n *\n * client → hello { token, cursor?, topics? } first frame, within 5 s\n * server → event { event }* replay of everything after `cursor`\n * server → welcome { principalId, cursor } replay done; live events follow\n * server → event { event }* live\n * server → resync.required { reason } the client must fetch a fresh snapshot and reconnect\n */\n\n/** Subject kinds a client can subscribe to. Default: everything. */\nexport const Topic = z.enum([\"node\", \"organization\", \"agent\", \"link\", \"roleBinding\", \"task\"]);\nexport type Topic = z.infer<typeof Topic>;\n\nexport const ClientMessage = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"hello\"),\n /** Bearer token or API key — sent in the first frame because browsers cannot set WebSocket headers. */\n token: z.string().min(1),\n /** Resume point, usually the cursor of the snapshot the client just loaded. */\n cursor: MeshCursor.optional(),\n topics: z.array(Topic).optional(),\n }),\n z.object({ type: z.literal(\"subscribe\"), topics: z.array(Topic) }),\n]);\nexport type ClientMessage = z.infer<typeof ClientMessage>;\n\nexport const ServerMessage = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"welcome\"), principalId: PrincipalId, cursor: MeshCursor }),\n z.object({ type: z.literal(\"event\"), event: MeshEvent }),\n z.object({ type: z.literal(\"resync.required\"), reason: z.string() }),\n z.object({ type: z.literal(\"error\"), code: z.string(), message: z.string() }),\n]);\nexport type ServerMessage = z.infer<typeof ServerMessage>;\n\n/** WebSocket close codes used by the node server. */\nexport const RealtimeCloseCode = {\n normal: 1000,\n goingAway: 1001,\n badMessage: 4400,\n unauthenticated: 4401,\n helloTimeout: 4408,\n resyncRequired: 4409,\n} as const;\n","import type { ProblemDetails } from \"@casimesh/contracts\";\n\n/** An API error. `problem` is the server's RFC 9457 body when it sent one. */\nexport class MeshApiError extends Error {\n constructor(\n readonly status: number,\n message: string,\n readonly problem?: ProblemDetails & Record<string, unknown>,\n ) {\n super(message);\n this.name = \"MeshApiError\";\n }\n\n /** Stable machine-readable code, e.g. `forbidden`, `version_conflict`, `not_owner`. */\n get code(): string {\n return this.problem?.code ?? `http_${this.status}`;\n }\n}\n","import type { ProblemDetails } from \"@casimesh/contracts\";\nimport { MeshApiError } from \"./errors.ts\";\n\n/** A static credential, or a function for callers that refresh tokens. */\nexport type TokenSource = string | (() => string | Promise<string>);\n\nexport interface HttpOptions {\n readonly baseUrl: string;\n readonly token?: TokenSource | undefined;\n readonly timeoutMs?: number | undefined;\n readonly fetch?: typeof fetch | undefined;\n}\n\nexport interface RequestOptions {\n readonly query?: Record<string, string | number | undefined> | undefined;\n readonly body?: unknown;\n /** Expected entity version for conditional writes (sent as `If-Match`). */\n readonly ifMatch?: number | undefined;\n /** Makes a POST safe to retry (sent as `Idempotency-Key`). */\n readonly idempotencyKey?: string | undefined;\n readonly signal?: AbortSignal | undefined;\n}\n\nexport const DEFAULT_TIMEOUT_MS = 10_000;\n\nexport async function resolveToken(token: TokenSource | undefined): Promise<string | undefined> {\n return typeof token === \"function\" ? token() : token;\n}\n\n/** Minimal JSON-over-HTTP core shared by every resource. */\nexport class HttpClient {\n readonly baseUrl: string;\n private readonly doFetch: typeof fetch;\n\n constructor(private readonly options: HttpOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/+$/, \"\");\n this.doFetch = options.fetch ?? globalThis.fetch.bind(globalThis);\n }\n\n token(): Promise<string | undefined> {\n return resolveToken(this.options.token);\n }\n\n async request<T>(method: string, path: string, options: RequestOptions = {}): Promise<T> {\n const headers: Record<string, string> = { accept: \"application/json\" };\n const token = await this.token();\n if (token) headers[\"authorization\"] = `Bearer ${token}`;\n if (options.body !== undefined) headers[\"content-type\"] = \"application/json\";\n if (options.ifMatch !== undefined) headers[\"if-match\"] = `\"${options.ifMatch}\"`;\n if (options.idempotencyKey !== undefined) headers[\"idempotency-key\"] = options.idempotencyKey;\n\n const timeout = AbortSignal.timeout(this.options.timeoutMs ?? DEFAULT_TIMEOUT_MS);\n const response = await this.doFetch(`${this.baseUrl}${path}${queryString(options.query)}`, {\n method,\n headers,\n ...(options.body !== undefined && { body: JSON.stringify(options.body) }),\n signal: options.signal ? AbortSignal.any([options.signal, timeout]) : timeout,\n });\n\n if (!response.ok) throw await toError(method, path, response);\n if (response.status === 204) return undefined as T;\n return (await response.json()) as T;\n }\n}\n\nfunction queryString(query: RequestOptions[\"query\"]): string {\n if (!query) return \"\";\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) if (value !== undefined) params.set(key, String(value));\n const text = params.toString();\n return text ? `?${text}` : \"\";\n}\n\nasync function toError(method: string, path: string, response: Response): Promise<MeshApiError> {\n const text = await response.text();\n let problem: (ProblemDetails & Record<string, unknown>) | undefined;\n try {\n const parsed = JSON.parse(text) as ProblemDetails & Record<string, unknown>;\n if (parsed && typeof parsed.code === \"string\") problem = parsed;\n } catch {\n // not a problem+json body\n }\n const message = problem?.detail ?? problem?.title ?? `${method} ${path} failed with ${response.status}`;\n return new MeshApiError(response.status, message, problem);\n}\n","import {\n applyMeshEvent,\n type DomainEventType,\n type MeshCursor,\n type MeshEvent,\n type MeshSnapshot,\n type MeshState,\n meshStateFromSnapshot,\n RealtimeCloseCode,\n type ServerMessage,\n type Topic,\n} from \"@casimesh/contracts\";\n\n/** The subset of the WebSocket API the client needs — satisfied by browsers, Bun and Node 22+. */\nexport interface WebSocketLike {\n onopen: ((event: unknown) => void) | null;\n onmessage: ((event: { data: unknown }) => void) | null;\n onclose: ((event: { code: number; reason: string }) => void) | null;\n onerror: ((event: unknown) => void) | null;\n send(data: string): void;\n close(code?: number, reason?: string): void;\n}\n\nexport type WebSocketFactory = new (url: string) => WebSocketLike;\n\nexport type RealtimeStatus = \"connecting\" | \"live\" | \"reconnecting\" | \"closed\";\n\nexport interface RealtimeOptions {\n /** Subject kinds to receive. Default: all. */\n readonly topics?: readonly Topic[] | undefined;\n /**\n * Resume from this cursor without loading a snapshot (no `state` mirror until a resync).\n * Default: load a snapshot first and keep `state` current.\n */\n readonly cursor?: MeshCursor | undefined;\n /** Reconnect with full-jitter exponential backoff, or `false` to stay closed after a disconnect. */\n readonly reconnect?: { readonly initialDelayMs?: number; readonly maxDelayMs?: number } | false | undefined;\n /** Randomness source for backoff jitter (tests). */\n readonly random?: (() => number) | undefined;\n}\n\nexport interface RealtimeDeps {\n readonly baseUrl: string;\n readonly token: () => Promise<string | undefined>;\n readonly snapshot: () => Promise<MeshSnapshot>;\n readonly WebSocket?: WebSocketFactory | undefined;\n}\n\ntype EventHandler = (event: MeshEvent) => void;\ntype Listener<T> = (value: T) => void;\n\n/** Thrown to `onError` listeners; `fatal` errors stop reconnection (e.g. invalid credentials). */\nexport class RealtimeError extends Error {\n constructor(\n message: string,\n readonly fatal: boolean,\n ) {\n super(message);\n this.name = \"RealtimeError\";\n }\n}\n\n/**\n * Live connection to a node's realtime stream (ADR-0014). Delivers every event exactly once and in order,\n * across reconnects, by resuming from the last cursor it saw.\n */\nexport class MeshRealtime {\n private currentStatus: RealtimeStatus = \"connecting\";\n private currentState: MeshState | undefined;\n private currentCursor: MeshCursor;\n private needsSnapshot: boolean;\n private socket: WebSocketLike | undefined;\n private attempt = 0;\n private stopped = false;\n private timer: ReturnType<typeof setTimeout> | undefined;\n\n private readonly handlers = new Map<DomainEventType | \"*\", Set<EventHandler>>();\n private readonly statusListeners = new Set<Listener<RealtimeStatus>>();\n private readonly stateListeners = new Set<Listener<MeshState>>();\n private readonly errorListeners = new Set<Listener<RealtimeError>>();\n\n constructor(\n private readonly deps: RealtimeDeps,\n private readonly options: RealtimeOptions = {},\n ) {\n this.currentCursor = { ...(options.cursor ?? {}) };\n this.needsSnapshot = options.cursor === undefined;\n }\n\n get status(): RealtimeStatus {\n return this.currentStatus;\n }\n\n /** The mirrored mesh, when the stream started from (or resynced to) a snapshot. */\n get state(): MeshState | undefined {\n return this.currentState;\n }\n\n /** Last sequence received per origin node. */\n get cursor(): MeshCursor {\n return { ...this.currentCursor };\n }\n\n start(): void {\n void this.connect();\n }\n\n /** Subscribes to one event type, or `\"*\"` for all. Returns an unsubscribe function. */\n on<T extends DomainEventType>(type: T | \"*\", handler: (event: Extract<MeshEvent, { type: T }>) => void): () => void {\n const set = this.handlers.get(type) ?? new Set<EventHandler>();\n set.add(handler as EventHandler);\n this.handlers.set(type, set);\n return () => set.delete(handler as EventHandler);\n }\n\n onStatus(listener: Listener<RealtimeStatus>): () => void {\n return subscribe(this.statusListeners, listener);\n }\n\n onState(listener: Listener<MeshState>): () => void {\n return subscribe(this.stateListeners, listener);\n }\n\n onError(listener: Listener<RealtimeError>): () => void {\n return subscribe(this.errorListeners, listener);\n }\n\n /** Resolves once the stream is caught up and live; rejects if it closes for good first. */\n ready(): Promise<void> {\n if (this.currentStatus === \"live\") return Promise.resolve();\n return new Promise((resolve, reject) => {\n const off = this.onStatus((status) => {\n if (status === \"live\") {\n off();\n resolve();\n } else if (status === \"closed\") {\n off();\n reject(new RealtimeError(\"The realtime connection closed\", true));\n }\n });\n });\n }\n\n close(): void {\n this.stopped = true;\n clearTimeout(this.timer);\n this.socket?.close(RealtimeCloseCode.normal, \"client closed\");\n this.socket = undefined;\n this.setStatus(\"closed\");\n }\n\n private async connect(): Promise<void> {\n if (this.stopped) return;\n this.setStatus(this.attempt === 0 ? \"connecting\" : \"reconnecting\");\n try {\n if (this.needsSnapshot) await this.loadSnapshot();\n const token = await this.deps.token();\n if (!token) throw new RealtimeError(\"A token is required for the realtime stream\", true);\n if (this.stopped) return;\n this.open(token);\n } catch (error) {\n const realtimeError =\n error instanceof RealtimeError\n ? error\n : new RealtimeError(error instanceof Error ? error.message : String(error), false);\n this.emitError(realtimeError);\n if (realtimeError.fatal) this.close();\n else this.scheduleReconnect(false);\n }\n }\n\n private async loadSnapshot(): Promise<void> {\n const snapshot = await this.deps.snapshot();\n this.currentState = meshStateFromSnapshot(snapshot);\n this.currentCursor = { ...snapshot.cursor };\n this.needsSnapshot = false;\n this.emitState();\n }\n\n private open(token: string): void {\n const Socket = this.deps.WebSocket ?? (globalThis.WebSocket as unknown as WebSocketFactory | undefined);\n if (!Socket) throw new RealtimeError(\"No WebSocket implementation available; pass one in the client options\", true);\n\n const socket = new Socket(`${this.deps.baseUrl.replace(/^http/, \"ws\")}/v1/realtime`);\n this.socket = socket;\n socket.onopen = () =>\n socket.send(\n JSON.stringify({\n type: \"hello\",\n token,\n cursor: this.currentCursor,\n ...(this.options.topics && { topics: this.options.topics }),\n }),\n );\n socket.onmessage = (event) => this.onMessage(String(event.data));\n socket.onclose = (event) => {\n if (this.socket === socket) this.onClose(event.code);\n };\n socket.onerror = () => {\n // A close event always follows; reconnection is handled there.\n };\n }\n\n private onMessage(raw: string): void {\n let message: ServerMessage;\n try {\n message = JSON.parse(raw) as ServerMessage;\n } catch {\n this.emitError(new RealtimeError(\"Received a malformed message\", false));\n return;\n }\n switch (message.type) {\n case \"event\":\n this.onEvent(message.event);\n break;\n case \"welcome\":\n this.attempt = 0;\n this.setStatus(\"live\");\n break;\n case \"resync.required\":\n // Too far behind to replay: start over from a fresh snapshot on the next connection.\n this.needsSnapshot = true;\n break;\n case \"error\":\n this.emitError(new RealtimeError(`${message.code}: ${message.message}`, message.code === \"unauthenticated\"));\n break;\n }\n }\n\n private onEvent(event: MeshEvent): void {\n const seen = this.currentCursor[event.origin.nodeId] ?? 0;\n if (event.seq <= seen) return;\n this.currentCursor = { ...this.currentCursor, [event.origin.nodeId]: event.seq };\n if (this.currentState) this.currentState = applyMeshEvent(this.currentState, event);\n\n for (const handler of [...(this.handlers.get(event.type) ?? []), ...(this.handlers.get(\"*\") ?? [])]) handler(event);\n this.emitState();\n }\n\n private onClose(code: number): void {\n this.socket = undefined;\n if (this.stopped) return;\n if (code === RealtimeCloseCode.unauthenticated) {\n this.emitError(new RealtimeError(\"The node rejected the credential\", true));\n this.close();\n return;\n }\n this.scheduleReconnect(code === RealtimeCloseCode.resyncRequired);\n }\n\n private scheduleReconnect(immediately: boolean): void {\n if (this.options.reconnect === false) {\n this.close();\n return;\n }\n const { initialDelayMs = 500, maxDelayMs = 30_000 } = this.options.reconnect ?? {};\n const ceiling = Math.min(maxDelayMs, initialDelayMs * 2 ** this.attempt);\n const delay = immediately ? 0 : Math.round((this.options.random ?? Math.random)() * ceiling);\n this.attempt += 1;\n this.setStatus(\"reconnecting\");\n this.timer = setTimeout(() => void this.connect(), delay);\n }\n\n private setStatus(status: RealtimeStatus): void {\n if (status === this.currentStatus) return;\n this.currentStatus = status;\n for (const listener of this.statusListeners) listener(status);\n }\n\n private emitState(): void {\n const state = this.currentState;\n if (state) for (const listener of this.stateListeners) listener(state);\n }\n\n private emitError(error: RealtimeError): void {\n for (const listener of this.errorListeners) listener(error);\n }\n}\n\nfunction subscribe<T>(set: Set<Listener<T>>, listener: Listener<T>): () => void {\n set.add(listener);\n return () => set.delete(listener);\n}\n","import type {\n Agent,\n AgentStatus,\n Capability,\n CapabilityProvider,\n CreateAgentRequestInput,\n CreateOrganizationRequest,\n CreatePrincipalResponse,\n HealthResponse,\n Link,\n Me,\n MeshSnapshot,\n MeshStats,\n Node,\n NodeDetail,\n Organization,\n PageOf,\n PrincipalKind,\n RequestTaskRequestInput,\n RoleBinding,\n Task,\n TaskStatus,\n UpdateAgentRequest,\n UpdateNodeRequest,\n UpdateOrganizationRequest,\n} from \"@casimesh/contracts\";\nimport { HttpClient, type TokenSource } from \"./http.ts\";\nimport { MeshRealtime, type RealtimeOptions, type WebSocketFactory } from \"./realtime.ts\";\n\nexport interface MeshClientOptions {\n /** Base URL of any Node Server, e.g. `http://localhost:7700`. */\n readonly baseUrl: string;\n /** Bearer token or API key of the caller (ROADMAP §2.9), or a function returning one. */\n readonly token?: TokenSource | undefined;\n /** Per-request timeout in milliseconds. Defaults to 10 000. */\n readonly timeoutMs?: number | undefined;\n /** Injectable for tests and non-standard runtimes. */\n readonly fetch?: typeof fetch | undefined;\n /** WebSocket constructor for runtimes without a global one. */\n readonly WebSocket?: WebSocketFactory | undefined;\n}\n\nexport interface PageParams {\n readonly limit?: number | undefined;\n readonly cursor?: string | undefined;\n}\n\n/** Options for conditional writes: pass the `version` you read to fail with 412 if it changed. */\nexport interface WriteOptions {\n readonly ifMatch?: number | undefined;\n}\n\nexport interface CreateOptions {\n /** Makes the POST safe to retry; the first response is replayed for 24 hours. */\n readonly idempotencyKey?: string | undefined;\n}\n\nexport interface AgentFilter extends PageParams {\n readonly nodeId?: string | undefined;\n readonly organizationId?: string | undefined;\n readonly status?: AgentStatus | undefined;\n /** Exact capability name or dotted prefix, e.g. `terrain`. */\n readonly capability?: string | undefined;\n}\n\nexport interface TaskFilter extends PageParams {\n readonly status?: TaskStatus | undefined;\n /** Tasks this agent requested or provided. */\n readonly agentId?: string | undefined;\n /** Tasks this organization requested or was assigned. */\n readonly organizationId?: string | undefined;\n readonly capability?: string | undefined;\n}\n\nexport interface WaitOptions {\n /** Give up after this long (default 30 s). */\n readonly timeoutMs?: number | undefined;\n /** Polling interval (default 250 ms). Use the realtime stream to follow many tasks at once. */\n readonly intervalMs?: number | undefined;\n}\n\nconst id = encodeURIComponent;\n\n/** Iterates every item of a paginated endpoint, following `nextCursor`. */\nasync function* all<T>(fetchPage: (cursor: string | undefined) => Promise<PageOf<T>>): AsyncGenerator<T> {\n let cursor: string | undefined;\n do {\n const page = await fetchPage(cursor);\n yield* page.items;\n cursor = page.nextCursor ?? undefined;\n } while (cursor);\n}\n\nfunction ownersOf(http: HttpClient, base: string) {\n return {\n list: async (): Promise<RoleBinding[]> =>\n (await http.request<{ items: RoleBinding[] }>(\"GET\", `${base}/owners`)).items,\n grant: (principalId: string, options: CreateOptions = {}) =>\n http.request<RoleBinding>(\"POST\", `${base}/owners`, { body: { principalId }, ...options }),\n revoke: (principalId: string) => http.request<void>(\"DELETE\", `${base}/owners/${id(principalId)}`),\n };\n}\n\n/** Typed client for a mesh Node Server. Types come from `@casimesh/contracts`, the API's single source of truth. */\nexport function createMeshClient(options: MeshClientOptions) {\n const http = new HttpClient(options);\n\n const client = {\n /** Liveness and version (public). */\n health: () => http.request<HealthResponse>(\"GET\", \"/v1/health\"),\n /** The caller and their ownership roles. */\n me: () => http.request<Me>(\"GET\", \"/v1/me\"),\n snapshot: () => http.request<MeshSnapshot>(\"GET\", \"/v1/mesh/snapshot\"),\n stats: () => http.request<MeshStats>(\"GET\", \"/v1/mesh/stats\"),\n capabilities: async (search?: string): Promise<Capability[]> =>\n (await http.request<{ items: Capability[] }>(\"GET\", \"/v1/capabilities\", { query: { q: search } })).items,\n\n /** Agents offering a capability, available ones first (ADR-0020). */\n capabilityProviders: async (name: string): Promise<CapabilityProvider[]> =>\n (await http.request<{ items: CapabilityProvider[] }>(\"GET\", `/v1/capabilities/${id(name)}/providers`)).items,\n\n principals: {\n /** Node owners only. The credential is returned exactly once. */\n create: (input: { name: string; kind?: PrincipalKind }, options: CreateOptions = {}) =>\n http.request<CreatePrincipalResponse>(\"POST\", \"/v1/principals\", { body: input, ...options }),\n },\n\n nodes: {\n list: (page: PageParams = {}) => http.request<PageOf<Node>>(\"GET\", \"/v1/nodes\", { query: { ...page } }),\n all: () => all((cursor) => client.nodes.list({ cursor })),\n get: (nodeId: string) => http.request<Node>(\"GET\", `/v1/nodes/${id(nodeId)}`),\n detail: (nodeId: string) => http.request<NodeDetail>(\"GET\", `/v1/nodes/${id(nodeId)}/detail`),\n organizations: (nodeId: string, page: PageParams = {}) =>\n http.request<PageOf<Organization>>(\"GET\", `/v1/nodes/${id(nodeId)}/organizations`, { query: { ...page } }),\n update: (nodeId: string, changes: UpdateNodeRequest, options: WriteOptions = {}) =>\n http.request<Node>(\"PATCH\", `/v1/nodes/${id(nodeId)}`, { body: changes, ...options }),\n /** Removes the node and, children first, everything on it. */\n remove: (nodeId: string, options: WriteOptions = {}) =>\n http.request<void>(\"DELETE\", `/v1/nodes/${id(nodeId)}`, options),\n owners: (nodeId: string) => ownersOf(http, `/v1/nodes/${id(nodeId)}`),\n /** Forgets an offline remote node, with its organizations, agents and links (owners of this node). */\n forget: (nodeId: string) => http.request<void>(\"POST\", `/v1/nodes/${id(nodeId)}/forget`),\n },\n\n links: {\n list: async (): Promise<Link[]> => (await http.request<{ items: Link[] }>(\"GET\", \"/v1/links\")).items,\n /** Connects the node this client talks to with a peer, by URL or by the peer's node id (its advertised endpoint). */\n connect: (target: { url: string } | { nodeId: string }, options: CreateOptions = {}) =>\n http.request<{ url: string }>(\"POST\", \"/v1/links\", { body: target, ...options }),\n /** Disconnects the peer at the other end and removes the link. */\n remove: (linkId: string) => http.request<void>(\"DELETE\", `/v1/links/${id(linkId)}`),\n },\n\n organizations: {\n /** Creates an organization (and its Mesh Agent) on the node this client talks to. */\n create: (input: CreateOrganizationRequest, options: CreateOptions = {}) =>\n http.request<Organization>(\"POST\", \"/v1/organizations\", { body: input, ...options }),\n list: (filter: PageParams & { nodeId?: string | undefined } = {}) =>\n http.request<PageOf<Organization>>(\"GET\", \"/v1/organizations\", { query: { ...filter } }),\n all: (filter: { nodeId?: string | undefined } = {}) =>\n all((cursor) => client.organizations.list({ ...filter, cursor })),\n get: (organizationId: string) => http.request<Organization>(\"GET\", `/v1/organizations/${id(organizationId)}`),\n update: (organizationId: string, changes: UpdateOrganizationRequest, options: WriteOptions = {}) =>\n http.request<Organization>(\"PATCH\", `/v1/organizations/${id(organizationId)}`, { body: changes, ...options }),\n /** Removes the organization and all of its agents. */\n remove: (organizationId: string, options: WriteOptions = {}) =>\n http.request<void>(\"DELETE\", `/v1/organizations/${id(organizationId)}`, options),\n owners: (organizationId: string) => ownersOf(http, `/v1/organizations/${id(organizationId)}`),\n },\n\n agents: {\n /** Creates an agent; it is registered with its organization's Mesh Agent automatically. */\n create: (organizationId: string, input: CreateAgentRequestInput, options: CreateOptions = {}) =>\n http.request<Agent>(\"POST\", `/v1/organizations/${id(organizationId)}/agents`, { body: input, ...options }),\n list: (filter: AgentFilter = {}) => http.request<PageOf<Agent>>(\"GET\", \"/v1/agents\", { query: { ...filter } }),\n all: (filter: Omit<AgentFilter, \"cursor\"> = {}) => all((cursor) => client.agents.list({ ...filter, cursor })),\n get: (agentId: string) => http.request<Agent>(\"GET\", `/v1/agents/${id(agentId)}`),\n update: (agentId: string, changes: UpdateAgentRequest, options: WriteOptions = {}) =>\n http.request<Agent>(\"PATCH\", `/v1/agents/${id(agentId)}`, { body: changes, ...options }),\n /** Deregisters the agent from its Mesh Agent, then removes it. */\n remove: (agentId: string, options: WriteOptions = {}) =>\n http.request<void>(\"DELETE\", `/v1/agents/${id(agentId)}`, options),\n start: (agentId: string) => http.request<Agent>(\"POST\", `/v1/agents/${id(agentId)}/start`),\n stop: (agentId: string) => http.request<Agent>(\"POST\", `/v1/agents/${id(agentId)}/stop`),\n },\n\n tasks: {\n /**\n * Asks the mesh for a capability on behalf of `agentId` (node or org owners). The agent's Mesh Agent routes the\n * request; the returned task is `requested`, and the provider's node completes it (ADR-0020).\n */\n request: (agentId: string, input: RequestTaskRequestInput, options: CreateOptions = {}) =>\n http.request<Task>(\"POST\", `/v1/agents/${id(agentId)}/tasks`, { body: input, ...options }),\n /** Newest first. */\n list: (filter: TaskFilter = {}) => http.request<PageOf<Task>>(\"GET\", \"/v1/tasks\", { query: { ...filter } }),\n all: (filter: Omit<TaskFilter, \"cursor\"> = {}) => all((cursor) => client.tasks.list({ ...filter, cursor })),\n get: (taskId: string) => http.request<Task>(\"GET\", `/v1/tasks/${id(taskId)}`),\n /** Resolves with the task once it is `completed` or `failed`; rejects after `timeoutMs`. */\n wait: async (taskId: string, waitOptions: WaitOptions = {}): Promise<Task> => {\n const deadline = Date.now() + (waitOptions.timeoutMs ?? 30_000);\n for (;;) {\n const task = await client.tasks.get(taskId);\n if (task.status === \"completed\" || task.status === \"failed\") return task;\n if (Date.now() >= deadline) throw new Error(`Task ${taskId} still ${task.status} after waiting`);\n await new Promise((resolve) => setTimeout(resolve, waitOptions.intervalMs ?? 250));\n }\n },\n },\n\n realtime: {\n /**\n * Opens the realtime stream. Without a `cursor` it first loads a snapshot and keeps `state` current;\n * it reconnects with backoff and resumes from the last event it saw.\n */\n connect: (realtimeOptions: RealtimeOptions = {}) => {\n const realtime = new MeshRealtime(\n { baseUrl: http.baseUrl, token: () => http.token(), snapshot: client.snapshot, WebSocket: options.WebSocket },\n realtimeOptions,\n );\n realtime.start();\n return realtime;\n },\n },\n };\n\n return client;\n}\n\nexport type MeshClient = ReturnType<typeof createMeshClient>;\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@casimesh/sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "First-class TypeScript SDK for the Autonomous AI Mesh (Bun, Node and browsers).",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"ai-mesh",
|
|
8
|
+
"agents",
|
|
9
|
+
"sdk",
|
|
10
|
+
"realtime",
|
|
11
|
+
"casimesh"
|
|
12
|
+
],
|
|
13
|
+
"type": "module",
|
|
14
|
+
"sideEffects": false,
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./index.d.ts",
|
|
18
|
+
"import": "./index.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"types": "./index.d.ts",
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": ">=22"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"zod": "4.6.5"
|
|
27
|
+
}
|
|
28
|
+
}
|