{"version":3,"file":"apiContracts.cjs","names":["Type","defineApiContract","jsonApiResponses"],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract, jsonApiResponses } from '@agimon-ai/doompi-core/apiContracts';\nimport { Type } from 'typebox';\n\nconst S = Type.String();\nconst N = Type.Number();\nconst O = Type.Optional;\nconst literals = <T extends string>(values: T[]) => Type.Union(values.map((value) => Type.Literal(value)));\nexport const TeamCatalogSchema = Type.Object({\n  cwd: S,\n  models: Type.Array(S),\n  warning: O(S),\n  agents: Type.Array(\n    Type.Object({\n      name: S,\n      source: literals(['project', 'user', 'plugin']),\n      packageName: O(S),\n      description: S,\n      model: O(S),\n      fallbackModels: Type.Array(S),\n      tools: Type.Array(S),\n      skills: Type.Array(S),\n      extensions: Type.Array(S),\n      defaultContext: literals(['fresh', 'fork']),\n      filePath: S,\n    }),\n  ),\n});\nexport const TeamRunsSchema = Type.Object({\n  runs: Type.Array(\n    Type.Object({\n      runId: S,\n      agent: S,\n      state: literals(['queued', 'running', 'done', 'failed', 'stopped']),\n      rawState: S,\n      task: S,\n      taskRef: O(S),\n      model: O(S),\n      cwd: S,\n      sessionFile: O(S),\n      startedAt: N,\n      endedAt: O(N),\n      lastUpdate: N,\n      currentTool: O(S),\n      toolCount: O(N),\n      tokens: O(N),\n      cost: O(N),\n      summary: O(S),\n      error: O(S),\n      tail: Type.Array(S),\n    }),\n  ),\n});\nexport const apiContracts = defineApiContract({\n  version: 1,\n  dynamic: [],\n  http: [\n    {\n      id: 'team.catalog',\n      scope: 'session',\n      basePath: 'team',\n      path: '/catalog',\n      method: 'GET',\n      authentication: 'owner',\n      description: 'Discover the active session agent catalog.',\n      responses: jsonApiResponses(TeamCatalogSchema),\n    },\n    {\n      id: 'team.run',\n      scope: 'session',\n      basePath: 'team',\n      path: '/run',\n      method: 'POST',\n      authentication: 'owner',\n      description: 'Launch an agent in the selected headless session.',\n      body: {\n        required: true,\n        contentType: 'application/json',\n        schema: Type.Object({\n          agent: Type.String({ minLength: 1 }),\n          task: S,\n          fork: Type.Boolean(),\n          model: O(Type.String({ minLength: 1 })),\n        }),\n      },\n      responses: jsonApiResponses(Type.Object({ runId: S }), 201),\n    },\n    {\n      id: 'team.steer',\n      scope: 'session',\n      basePath: 'team',\n      path: '/steer',\n      method: 'POST',\n      authentication: 'owner',\n      description: 'Send guidance straight to one running agent, without a parent prompt.',\n      body: {\n        required: true,\n        contentType: 'application/json',\n        schema: Type.Object({ runId: Type.String({ minLength: 1 }), message: Type.String({ minLength: 1 }) }),\n      },\n      responses: jsonApiResponses(\n        Type.Object({ requestId: S, index: N, state: literals(['delivered', 'failed', 'pending']), message: S }),\n      ),\n    },\n    {\n      id: 'team.stop',\n      scope: 'session',\n      basePath: 'team',\n      path: '/stop',\n      method: 'POST',\n      authentication: 'owner',\n      description: 'Ask the runtime to stop one running agent, without a parent prompt.',\n      body: {\n        required: true,\n        contentType: 'application/json',\n        schema: Type.Object({ runId: Type.String({ minLength: 1 }) }),\n      },\n      responses: jsonApiResponses(Type.Object({ requestId: S })),\n    },\n  ],\n  sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n    {\n      id: 'team.runs',\n      scope,\n      service: 'doompi.hub.v1',\n      member: 'subagent_runs',\n      kind: 'channel',\n      direction: 'server-to-client',\n      description: 'Subagent run channel payload.',\n      input: TeamRunsSchema,\n    },\n    {\n      id: 'team.catalog.channel',\n      scope,\n      service: 'doompi.hub.v1',\n      member: 'subagent_catalog',\n      kind: 'channel',\n      direction: 'server-to-client',\n      description: 'Subagent catalog channel payload.',\n      input: TeamCatalogSchema,\n    },\n  ]),\n});\nexport default apiContracts;\n"],"mappings":"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"}