{"version":3,"file":"subagentTool-nyAYDNis.cjs","names":["Type","InlineAgentSchema"],"sources":["../src/schemas/subagentTool.ts"],"sourcesContent":["import { InlineAgentSchema, type InlineAgent } from '@agimon-ai/doompi-core/delegation';\nimport { type Static, Type } from 'typebox';\n\nexport { InlineAgentSchema };\nexport type { InlineAgent };\n\nexport const SUBAGENT_ACTIONS = {\n  agents: 'agents',\n  run: 'run',\n  status: 'status',\n  steer: 'steer',\n  stop: 'stop',\n  suspended: 'suspended',\n  restore: 'restore',\n} as const;\n\nexport type SubagentAction = (typeof SUBAGENT_ACTIONS)[keyof typeof SUBAGENT_ACTIONS];\n\nexport const SUBAGENT_ACTION_FIELDS = {\n  agents: ['action', 'name', 'cwd', 'scope'],\n  run: ['action', 'requests', 'concurrency', 'artifacts', 'scope'],\n  status: ['action', 'id', 'transcriptLines'],\n  steer: ['action', 'id', 'message'],\n  stop: ['action', 'id', 'reason'],\n  suspended: ['action'],\n  restore: ['action', 'id'],\n} as const satisfies Record<SubagentAction, readonly string[]>;\n\nconst IMPLEMENTED_ACTIONS: ReadonlySet<string> = new Set(Object.values(SUBAGENT_ACTIONS));\n\nexport function isSubagentAction(value: unknown): value is SubagentAction {\n  return typeof value === 'string' && IMPLEMENTED_ACTIONS.has(value);\n}\n\nexport function subagentActionAcceptsField(action: SubagentAction, field: string): boolean {\n  return (SUBAGENT_ACTION_FIELDS[action] as readonly string[]).includes(field);\n}\n\n/** Remove the one legacy field emitted by Doom Plan before strict validation. */\nexport function normalizeSubagentToolParams(input: unknown): unknown {\n  if (!input || typeof input !== 'object' || Array.isArray(input)) return input;\n  const record = input as Record<string, unknown>;\n  if (!isSubagentAction(record.action) || record.action === SUBAGENT_ACTIONS.run || typeof record.model !== 'string') {\n    return input;\n  }\n  const { model: _model, ...normalized } = record;\n  return normalized;\n}\n\nconst AgentScope = Type.Union([Type.Literal('user'), Type.Literal('project'), Type.Literal('both')]);\n\nconst RunRequest = Type.Object(\n  {\n    agent: Type.String({ minLength: 1 }),\n    inlineAgent: Type.Optional(InlineAgentSchema),\n    task: Type.String({ minLength: 1 }),\n    cwd: Type.Optional(Type.String({ minLength: 1 })),\n    model: Type.Optional(Type.String({ minLength: 1 })),\n    runtime: Type.Optional(Type.String({ minLength: 1 })),\n  },\n  { additionalProperties: false },\n);\n\nconst AgentsParams = Type.Object(\n  {\n    action: Type.Literal(SUBAGENT_ACTIONS.agents),\n    name: Type.Optional(Type.String({ minLength: 1 })),\n    cwd: Type.Optional(Type.String({ minLength: 1 })),\n    scope: Type.Optional(AgentScope),\n  },\n  { additionalProperties: false },\n);\n\nconst RunParams = Type.Object(\n  {\n    action: Type.Literal(SUBAGENT_ACTIONS.run),\n    requests: Type.Array(RunRequest, { minItems: 1 }),\n    concurrency: Type.Optional(Type.Integer({ minimum: 1 })),\n    artifacts: Type.Optional(Type.Boolean()),\n    scope: Type.Optional(AgentScope),\n  },\n  { additionalProperties: false },\n);\n\nconst FleetStatusParams = Type.Object(\n  { action: Type.Literal(SUBAGENT_ACTIONS.status) },\n  { additionalProperties: false },\n);\n\nconst RunStatusParams = Type.Object(\n  {\n    action: Type.Literal(SUBAGENT_ACTIONS.status),\n    id: Type.String({ minLength: 1 }),\n    transcriptLines: Type.Optional(Type.Integer({ minimum: 1, maximum: 500 })),\n  },\n  { additionalProperties: false },\n);\n\nconst SteerParams = Type.Object(\n  {\n    action: Type.Literal(SUBAGENT_ACTIONS.steer),\n    id: Type.String({ minLength: 1 }),\n    message: Type.String({ minLength: 1 }),\n  },\n  { additionalProperties: false },\n);\n\nconst StopParams = Type.Object(\n  {\n    action: Type.Literal(SUBAGENT_ACTIONS.stop),\n    id: Type.String({ minLength: 1 }),\n    reason: Type.Optional(Type.String({ minLength: 1 })),\n  },\n  { additionalProperties: false },\n);\n\nconst SuspendedParams = Type.Object(\n  { action: Type.Literal(SUBAGENT_ACTIONS.suspended) },\n  { additionalProperties: false },\n);\n\nconst RestoreParams = Type.Object(\n  {\n    action: Type.Literal(SUBAGENT_ACTIONS.restore),\n    id: Type.String({ minLength: 1 }),\n  },\n  { additionalProperties: false },\n);\n\nexport const SubagentParams = Type.Union([\n  AgentsParams,\n  RunParams,\n  FleetStatusParams,\n  RunStatusParams,\n  SteerParams,\n  StopParams,\n  SuspendedParams,\n  RestoreParams,\n]);\n\n/** The actions that accept `field`, so the declared docs cannot drift from the validator. */\nfunction acceptingActions(field: string): string {\n  return Object.values(SUBAGENT_ACTIONS)\n    .filter((action) => subagentActionAcceptsField(action, field))\n    .join(', ');\n}\n\n/**\n * The schema declared to the model.\n *\n * A flat object rather than `SubagentParams` itself. A top-level union is\n * `{anyOf:[...]}` with no `properties`, and Pi's Anthropic Messages adapter\n * rebuilds tool input as `{type:'object', properties: schema.properties ?? {},\n * required: schema.required ?? []}`, so the union arrived at the model as an\n * empty object while the host went on validating calls against it. Nothing here\n * relaxes what is accepted: `validateParams` still rejects an unknown action, a\n * field the action does not take, and a missing required one.\n */\nexport const SubagentToolSchema = Type.Object(\n  {\n    action: Type.String({\n      enum: Object.values(SUBAGENT_ACTIONS),\n      description: 'The operation to run. Every other field is accepted only by the actions its description names.',\n    }),\n    name: Type.Optional(\n      Type.String({ minLength: 1, description: `Exact agent name to inspect. Actions: ${acceptingActions('name')}.` }),\n    ),\n    cwd: Type.Optional(\n      Type.String({\n        minLength: 1,\n        description: `Directory to discover agents in. Actions: ${acceptingActions('cwd')}.`,\n      }),\n    ),\n    scope: Type.Optional(\n      Type.String({\n        enum: ['user', 'project', 'both'],\n        description: `Agent discovery scope. Actions: ${acceptingActions('scope')}.`,\n      }),\n    ),\n    requests: Type.Optional(\n      Type.Array(RunRequest, {\n        minItems: 1,\n        description: `Runs to start, one entry each. Actions: ${acceptingActions('requests')}.`,\n      }),\n    ),\n    concurrency: Type.Optional(\n      Type.Integer({\n        minimum: 1,\n        description: `Maximum runs started at once. Actions: ${acceptingActions('concurrency')}.`,\n      }),\n    ),\n    artifacts: Type.Optional(\n      Type.Boolean({ description: `Collect run artifacts. Actions: ${acceptingActions('artifacts')}.` }),\n    ),\n    id: Type.Optional(Type.String({ minLength: 1, description: `Run id. Actions: ${acceptingActions('id')}.` })),\n    transcriptLines: Type.Optional(\n      Type.Integer({\n        minimum: 1,\n        maximum: 500,\n        description: `Transcript lines to include; valid only alongside id. Actions: ${acceptingActions('transcriptLines')}.`,\n      }),\n    ),\n    message: Type.Optional(\n      Type.String({ minLength: 1, description: `Guidance to deliver. Actions: ${acceptingActions('message')}.` }),\n    ),\n    reason: Type.Optional(\n      Type.String({ minLength: 1, description: `Why the run is stopping. Actions: ${acceptingActions('reason')}.` }),\n    ),\n  },\n  { additionalProperties: false },\n);\n\nexport type SubagentToolParams = Static<typeof SubagentParams>;\n"],"mappings":"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"}