feat(04-01): add agents table to database schema
- Define agents table with id, name (unique), taskId, sessionId, worktreeId, status - Status enum: idle, running, waiting_for_input, stopped, crashed - Foreign key to tasks with onDelete: 'set null' (agent may outlive task) - Add agentsRelations linking to tasks - Export Agent and NewAgent types
This commit is contained in:
@@ -168,3 +168,32 @@ export const taskDependenciesRelations = relations(taskDependencies, ({ one }) =
|
|||||||
|
|
||||||
export type TaskDependency = InferSelectModel<typeof taskDependencies>;
|
export type TaskDependency = InferSelectModel<typeof taskDependencies>;
|
||||||
export type NewTaskDependency = InferInsertModel<typeof taskDependencies>;
|
export type NewTaskDependency = InferInsertModel<typeof taskDependencies>;
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// AGENTS
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
export const agents = sqliteTable('agents', {
|
||||||
|
id: text('id').primaryKey(),
|
||||||
|
name: text('name').notNull().unique(), // Human-readable name (e.g., 'gastown', 'chinatown')
|
||||||
|
taskId: text('task_id').references(() => tasks.id, { onDelete: 'set null' }), // Task may be deleted
|
||||||
|
sessionId: text('session_id'), // Claude CLI session ID for resumption (null until first run completes)
|
||||||
|
worktreeId: text('worktree_id').notNull(), // WorktreeManager worktree ID
|
||||||
|
status: text('status', {
|
||||||
|
enum: ['idle', 'running', 'waiting_for_input', 'stopped', 'crashed'],
|
||||||
|
})
|
||||||
|
.notNull()
|
||||||
|
.default('idle'),
|
||||||
|
createdAt: integer('created_at', { mode: 'timestamp' }).notNull(),
|
||||||
|
updatedAt: integer('updated_at', { mode: 'timestamp' }).notNull(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export const agentsRelations = relations(agents, ({ one }) => ({
|
||||||
|
task: one(tasks, {
|
||||||
|
fields: [agents.taskId],
|
||||||
|
references: [tasks.id],
|
||||||
|
}),
|
||||||
|
}));
|
||||||
|
|
||||||
|
export type Agent = InferSelectModel<typeof agents>;
|
||||||
|
export type NewAgent = InferInsertModel<typeof agents>;
|
||||||
|
|||||||
Reference in New Issue
Block a user