SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
4e23b01 verified
Raw
History Blame Contribute Delete
2.96 kB
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>;