16 agent tools, event handler for auto-linking, sync job every 15m. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
85 lines
3.7 KiB
JavaScript
85 lines
3.7 KiB
JavaScript
import { z } from "zod";
|
|
import { AGENT_ADAPTER_TYPES, AGENT_ICON_NAMES, AGENT_ROLES, AGENT_STATUSES, } from "../constants.js";
|
|
import { envConfigSchema } from "./secret.js";
|
|
export const agentPermissionsSchema = z.object({
|
|
canCreateAgents: z.boolean().optional().default(false),
|
|
});
|
|
export const agentInstructionsBundleModeSchema = z.enum(["managed", "external"]);
|
|
export const updateAgentInstructionsBundleSchema = z.object({
|
|
mode: agentInstructionsBundleModeSchema.optional(),
|
|
rootPath: z.string().trim().min(1).nullable().optional(),
|
|
entryFile: z.string().trim().min(1).optional(),
|
|
clearLegacyPromptTemplate: z.boolean().optional().default(false),
|
|
});
|
|
export const upsertAgentInstructionsFileSchema = z.object({
|
|
path: z.string().trim().min(1),
|
|
content: z.string(),
|
|
clearLegacyPromptTemplate: z.boolean().optional().default(false),
|
|
});
|
|
const adapterConfigSchema = z.record(z.unknown()).superRefine((value, ctx) => {
|
|
const envValue = value.env;
|
|
if (envValue === undefined)
|
|
return;
|
|
const parsed = envConfigSchema.safeParse(envValue);
|
|
if (!parsed.success) {
|
|
ctx.addIssue({
|
|
code: z.ZodIssueCode.custom,
|
|
message: "adapterConfig.env must be a map of valid env bindings",
|
|
path: ["env"],
|
|
});
|
|
}
|
|
});
|
|
export const createAgentSchema = z.object({
|
|
name: z.string().min(1),
|
|
role: z.enum(AGENT_ROLES).optional().default("general"),
|
|
title: z.string().optional().nullable(),
|
|
icon: z.enum(AGENT_ICON_NAMES).optional().nullable(),
|
|
reportsTo: z.string().uuid().optional().nullable(),
|
|
capabilities: z.string().optional().nullable(),
|
|
desiredSkills: z.array(z.string().min(1)).optional(),
|
|
adapterType: z.enum(AGENT_ADAPTER_TYPES).optional().default("process"),
|
|
adapterConfig: adapterConfigSchema.optional().default({}),
|
|
runtimeConfig: z.record(z.unknown()).optional().default({}),
|
|
budgetMonthlyCents: z.number().int().nonnegative().optional().default(0),
|
|
permissions: agentPermissionsSchema.optional(),
|
|
metadata: z.record(z.unknown()).optional().nullable(),
|
|
});
|
|
export const createAgentHireSchema = createAgentSchema.extend({
|
|
sourceIssueId: z.string().uuid().optional().nullable(),
|
|
sourceIssueIds: z.array(z.string().uuid()).optional(),
|
|
});
|
|
export const updateAgentSchema = createAgentSchema
|
|
.omit({ permissions: true })
|
|
.partial()
|
|
.extend({
|
|
permissions: z.never().optional(),
|
|
replaceAdapterConfig: z.boolean().optional(),
|
|
status: z.enum(AGENT_STATUSES).optional(),
|
|
spentMonthlyCents: z.number().int().nonnegative().optional(),
|
|
});
|
|
export const updateAgentInstructionsPathSchema = z.object({
|
|
path: z.string().trim().min(1).nullable(),
|
|
adapterConfigKey: z.string().trim().min(1).optional(),
|
|
});
|
|
export const createAgentKeySchema = z.object({
|
|
name: z.string().min(1).default("default"),
|
|
});
|
|
export const wakeAgentSchema = z.object({
|
|
source: z.enum(["timer", "assignment", "on_demand", "automation"]).optional().default("on_demand"),
|
|
triggerDetail: z.enum(["manual", "ping", "callback", "system"]).optional(),
|
|
reason: z.string().optional().nullable(),
|
|
payload: z.record(z.unknown()).optional().nullable(),
|
|
idempotencyKey: z.string().optional().nullable(),
|
|
forceFreshSession: z.preprocess((value) => (value === null ? undefined : value), z.boolean().optional().default(false)),
|
|
});
|
|
export const resetAgentSessionSchema = z.object({
|
|
taskKey: z.string().min(1).optional().nullable(),
|
|
});
|
|
export const testAdapterEnvironmentSchema = z.object({
|
|
adapterConfig: adapterConfigSchema.optional().default({}),
|
|
});
|
|
export const updateAgentPermissionsSchema = z.object({
|
|
canCreateAgents: z.boolean(),
|
|
canAssignTasks: z.boolean(),
|
|
});
|
|
//# sourceMappingURL=agent.js.map
|