"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RevertSessionResponseDto = exports.RevertFileDto = exports.ImportSessionResponseDto = exports.CreateSessionFromContextDto = exports.UpdateSessionDto = exports.CreateSessionDto = exports.SessionStatus = void 0;
const class_validator_1 = require("class-validator");
const swagger_1 = require("@nestjs/swagger");
const enums_1 = require("../../core-entities/enums");
var SessionStatus;
(function (SessionStatus) {
    SessionStatus["ACTIVE"] = "active";
    SessionStatus["COMPLETED"] = "completed";
    SessionStatus["ABORTED"] = "aborted";
    SessionStatus["FAILED"] = "failed";
})(SessionStatus || (exports.SessionStatus = SessionStatus = {}));
class CreateSessionDto {
}
exports.CreateSessionDto = CreateSessionDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'UUID of the associated project',
        format: 'uuid',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUUID)(),
    __metadata("design:type", String)
], CreateSessionDto.prototype, "project_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ description: 'Title of the session', maxLength: 255 }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    (0, class_validator_1.MaxLength)(255),
    __metadata("design:type", String)
], CreateSessionDto.prototype, "session_title", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'UUID of the system prompt to use',
        format: 'uuid',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUUID)(),
    __metadata("design:type", String)
], CreateSessionDto.prototype, "system_prompt_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'UUID of the default initial context template',
        format: 'uuid',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUUID)(),
    __metadata("design:type", String)
], CreateSessionDto.prototype, "default_initial_context_template_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'UUID of the default followup context template',
        format: 'uuid',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUUID)(),
    __metadata("design:type", String)
], CreateSessionDto.prototype, "default_followup_context_template_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'External URL',
        example: 'https://claude.ai/chat/abc123',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUrl)(),
    __metadata("design:type", String)
], CreateSessionDto.prototype, "url", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'Model identifier to use for this session',
        example: 'ollama/glm-5.1:cloud',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], CreateSessionDto.prototype, "model_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'Reasoning effort level',
        enum: enums_1.ReasoningEffort,
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsEnum)(enums_1.ReasoningEffort),
    __metadata("design:type", String)
], CreateSessionDto.prototype, "reasoning_effort", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'UUID of the sub-agent to use',
        format: 'uuid',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUUID)(),
    __metadata("design:type", String)
], CreateSessionDto.prototype, "sub_agent_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'UUID of the parent session (for follow-up sessions)',
        format: 'uuid',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUUID)(),
    __metadata("design:type", String)
], CreateSessionDto.prototype, "parent_session_id", void 0);
class UpdateSessionDto {
}
exports.UpdateSessionDto = UpdateSessionDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ description: 'Title of the session', maxLength: 255 }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    (0, class_validator_1.MaxLength)(255),
    __metadata("design:type", String)
], UpdateSessionDto.prototype, "session_title", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'Status of the session',
        enum: SessionStatus,
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsEnum)(SessionStatus),
    __metadata("design:type", String)
], UpdateSessionDto.prototype, "status", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'UUID of the system prompt to use',
        format: 'uuid',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUUID)(),
    __metadata("design:type", String)
], UpdateSessionDto.prototype, "system_prompt_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'UUID of the default initial context template',
        format: 'uuid',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUUID)(),
    __metadata("design:type", String)
], UpdateSessionDto.prototype, "default_initial_context_template_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'UUID of the default followup context template',
        format: 'uuid',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUUID)(),
    __metadata("design:type", String)
], UpdateSessionDto.prototype, "default_followup_context_template_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'External URL',
        example: 'https://claude.ai/chat/abc123',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUrl)(),
    __metadata("design:type", String)
], UpdateSessionDto.prototype, "url", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'Model identifier to use for this session',
        example: 'ollama/glm-5.1:cloud',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateSessionDto.prototype, "model_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'Reasoning effort level',
        enum: enums_1.ReasoningEffort,
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsEnum)(enums_1.ReasoningEffort),
    __metadata("design:type", String)
], UpdateSessionDto.prototype, "reasoning_effort", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'UUID of the sub-agent to use',
        format: 'uuid',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUUID)(),
    __metadata("design:type", String)
], UpdateSessionDto.prototype, "sub_agent_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'UUID of the parent session (for follow-up sessions)',
        format: 'uuid',
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsUUID)(),
    __metadata("design:type", String)
], UpdateSessionDto.prototype, "parent_session_id", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'Whether the LLM is currently generating a response',
        example: false,
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateSessionDto.prototype, "is_running", void 0);
class CreateSessionFromContextDto {
}
exports.CreateSessionFromContextDto = CreateSessionFromContextDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        description: 'Title for the new session',
        maxLength: 255,
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    (0, class_validator_1.MaxLength)(255),
    __metadata("design:type", String)
], CreateSessionFromContextDto.prototype, "session_title", void 0);
class ImportSessionResponseDto {
}
exports.ImportSessionResponseDto = ImportSessionResponseDto;
__decorate([
    (0, swagger_1.ApiProperty)({ description: 'Success message' }),
    __metadata("design:type", String)
], ImportSessionResponseDto.prototype, "message", void 0);
__decorate([
    (0, swagger_1.ApiProperty)({ description: 'UUID of the imported session', format: 'uuid' }),
    __metadata("design:type", String)
], ImportSessionResponseDto.prototype, "session_id", void 0);
__decorate([
    (0, swagger_1.ApiProperty)({ description: 'Number of messages imported' }),
    __metadata("design:type", Number)
], ImportSessionResponseDto.prototype, "message_count", void 0);
class RevertFileDto {
}
exports.RevertFileDto = RevertFileDto;
__decorate([
    (0, swagger_1.ApiProperty)({
        description: 'Path of the file to revert (relative to project root)',
        example: 'src/utils/auth.ts',
    }),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], RevertFileDto.prototype, "file_path", void 0);
class RevertSessionResponseDto {
}
exports.RevertSessionResponseDto = RevertSessionResponseDto;
__decorate([
    (0, swagger_1.ApiProperty)({
        description: 'List of file paths that were successfully reverted',
        type: [String],
    }),
    __metadata("design:type", Array)
], RevertSessionResponseDto.prototype, "reverted", void 0);
__decorate([
    (0, swagger_1.ApiProperty)({
        description: 'List of file paths that failed to revert',
        type: [String],
    }),
    __metadata("design:type", Array)
], RevertSessionResponseDto.prototype, "failed", void 0);
__decorate([
    (0, swagger_1.ApiProperty)({
        description: 'Error messages for failed reverts',
        type: [String],
    }),
    __metadata("design:type", Array)
], RevertSessionResponseDto.prototype, "errors", void 0);
//# sourceMappingURL=session.dto.js.map