File size: 2,955 Bytes
4e23b01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | import { z } from 'zod';
import { isoDateTimeSchema } from '@moonshot-ai/agent-core-v2/_base/utils/isoDateTime';
import {
permissionRuleSchema,
sessionAgentConfigPartialSchema,
sessionAgentConfigSchema,
sessionMetadataSchema,
} from '@moonshot-ai/agent-core-v2/app/sessionLegacy/sessionProtocol';
import { workspaceIdSchema } from './workspace';
export const sessionUsageSchema = z.object({
input_tokens: z.number().int().nonnegative(),
output_tokens: z.number().int().nonnegative(),
cache_read_tokens: z.number().int().nonnegative(),
cache_creation_tokens: z.number().int().nonnegative(),
total_cost_usd: z.number().nonnegative().optional(),
context_tokens: z.number().int().nonnegative(),
context_limit: z.number().int().nonnegative().optional(),
turn_count: z.number().int().nonnegative().optional(),
});
export type SessionUsage = z.infer<typeof sessionUsageSchema>;
export function emptySessionUsage(): SessionUsage {
return {
input_tokens: 0,
output_tokens: 0,
cache_read_tokens: 0,
cache_creation_tokens: 0,
total_cost_usd: 0,
context_tokens: 0,
context_limit: 0,
turn_count: 0,
};
}
export const sessionPendingInteractionSchema = z.enum(['none', 'approval', 'question']);
export type SessionPendingInteraction = z.infer<typeof sessionPendingInteractionSchema>;
export const sessionSchema = z.object({
id: z.string().min(1),
workspace_id: workspaceIdSchema,
title: z.string(),
created_at: isoDateTimeSchema,
updated_at: isoDateTimeSchema,
busy: z.boolean(),
main_turn_active: z.boolean().optional(),
pending_interaction: sessionPendingInteractionSchema.optional(),
last_turn_reason: z.enum(['completed', 'cancelled', 'failed']).optional(),
archived: z.boolean().optional(),
archived_at: isoDateTimeSchema.optional(),
current_prompt_id: z.string().min(1).optional(),
last_prompt: z.string().optional(),
metadata: sessionMetadataSchema,
agent_config: sessionAgentConfigSchema,
usage: sessionUsageSchema,
permission_rules: z.array(permissionRuleSchema),
message_count: z.number().int().nonnegative(),
last_seq: z.number().int().nonnegative(),
});
export type Session = z.infer<typeof sessionSchema>;
export const sessionCreateSchema = z.object({
title: z.string().min(1).optional(),
metadata: sessionMetadataSchema.optional(),
agent_config: sessionAgentConfigPartialSchema.optional(),
workspace_id: workspaceIdSchema.optional(),
});
export type SessionCreate = z.infer<typeof sessionCreateSchema>;
export const sessionForkSchema = z.object({
title: z.string().min(1).optional(),
metadata: z.record(z.string(), z.unknown()).optional(),
});
export type SessionFork = z.infer<typeof sessionForkSchema>;
export const sessionChildCreateSchema = z.object({
title: z.string().min(1).optional(),
metadata: z.record(z.string(), z.unknown()).optional(),
});
export type SessionChildCreate = z.infer<typeof sessionChildCreateSchema>;
|