systemprompt_agent/
extension.rs1use systemprompt_extension::prelude::*;
2
3#[derive(Debug, Clone, Copy, Default)]
4pub struct AgentExtension;
5
6impl Extension for AgentExtension {
7 fn metadata(&self) -> ExtensionMetadata {
8 ExtensionMetadata {
9 id: "agent",
10 name: "Agent",
11 version: env!("CARGO_PKG_VERSION"),
12 }
13 }
14
15 fn migration_weight(&self) -> u32 {
16 40
17 }
18
19 fn schemas(&self) -> Vec<SchemaDefinition> {
20 vec![
21 SchemaDefinition::inline("user_contexts", include_str!("../schema/user_contexts.sql"))
22 .with_required_columns(vec![
23 "context_id".into(),
24 "user_id".into(),
25 "created_at".into(),
26 ]),
27 SchemaDefinition::inline("agent_tasks", include_str!("../schema/agent_tasks.sql"))
28 .with_required_columns(vec![
29 "task_id".into(),
30 "context_id".into(),
31 "status".into(),
32 "created_at".into(),
33 ]),
34 SchemaDefinition::inline("task_messages", include_str!("../schema/task_messages.sql"))
35 .with_required_columns(vec![
36 "id".into(),
37 "task_id".into(),
38 "role".into(),
39 "created_at".into(),
40 ]),
41 SchemaDefinition::inline("message_parts", include_str!("../schema/message_parts.sql"))
42 .with_required_columns(vec!["id".into(), "message_id".into(), "part_type".into()]),
43 SchemaDefinition::inline(
44 "task_artifacts",
45 include_str!("../schema/task_artifacts.sql"),
46 )
47 .with_required_columns(vec![
48 "id".into(),
49 "task_id".into(),
50 "artifact_id".into(),
51 ]),
52 SchemaDefinition::inline(
53 "artifact_parts",
54 include_str!("../schema/artifact_parts.sql"),
55 )
56 .with_required_columns(vec![
57 "id".into(),
58 "artifact_id".into(),
59 "part_type".into(),
60 ]),
61 SchemaDefinition::inline(
62 "context_agents",
63 include_str!("../schema/context_agents.sql"),
64 )
65 .with_required_columns(vec![
66 "id".into(),
67 "context_id".into(),
68 "agent_id".into(),
69 ]),
70 SchemaDefinition::inline(
71 "context_notifications",
72 include_str!("../schema/context_notifications.sql"),
73 )
74 .with_required_columns(vec![
75 "id".into(),
76 "context_id".into(),
77 "notification_type".into(),
78 ]),
79 SchemaDefinition::inline(
80 "task_push_notification_configs",
81 include_str!("../schema/task_push_notification_configs.sql"),
82 )
83 .with_required_columns(vec!["id".into(), "task_id".into()]),
84 SchemaDefinition::inline("agent_skills", include_str!("../schema/agent_skills.sql"))
85 .with_required_columns(vec!["skill_id".into(), "name".into()]),
86 SchemaDefinition::inline(
87 "agent_playbooks",
88 include_str!("../schema/agent_playbooks.sql"),
89 )
90 .with_required_columns(vec!["playbook_id".into(), "name".into()]),
91 SchemaDefinition::inline(
92 "task_execution_steps",
93 include_str!("../schema/task_execution_steps.sql"),
94 )
95 .with_required_columns(vec![
96 "step_id".into(),
97 "task_id".into(),
98 "step_type".into(),
99 ]),
100 SchemaDefinition::inline("services", include_str!("../schema/services.sql"))
101 .with_required_columns(vec!["name".into(), "module_name".into(), "status".into()]),
102 SchemaDefinition::inline(
103 "user_session_analytics",
104 include_str!("../schema/user_session_analytics.sql"),
105 ),
106 ]
107 }
108
109 fn dependencies(&self) -> Vec<&'static str> {
110 vec!["users", "oauth", "mcp"]
111 }
112}
113
114register_extension!(AgentExtension);