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 schemas(&self) -> Vec<SchemaDefinition> {
16 vec![
17 SchemaDefinition::new("user_contexts", include_str!("../schema/user_contexts.sql"))
18 .with_required_columns(vec![
19 "context_id".into(),
20 "user_id".into(),
21 "created_at".into(),
22 ]),
23 SchemaDefinition::new("agent_tasks", include_str!("../schema/agent_tasks.sql"))
24 .with_required_columns(vec![
25 "task_id".into(),
26 "context_id".into(),
27 "status".into(),
28 "created_at".into(),
29 ]),
30 SchemaDefinition::new("task_messages", include_str!("../schema/task_messages.sql"))
31 .with_required_columns(vec![
32 "id".into(),
33 "task_id".into(),
34 "role".into(),
35 "created_at".into(),
36 ]),
37 SchemaDefinition::new("message_parts", include_str!("../schema/message_parts.sql"))
38 .with_required_columns(vec!["id".into(), "message_id".into(), "part_kind".into()]),
39 SchemaDefinition::new(
40 "task_artifacts",
41 include_str!("../schema/task_artifacts.sql"),
42 )
43 .with_required_columns(vec![
44 "id".into(),
45 "task_id".into(),
46 "artifact_id".into(),
47 ]),
48 SchemaDefinition::new(
49 "artifact_parts",
50 include_str!("../schema/artifact_parts.sql"),
51 )
52 .with_required_columns(vec![
53 "id".into(),
54 "artifact_id".into(),
55 "part_kind".into(),
56 ]),
57 SchemaDefinition::new(
58 "context_agents",
59 include_str!("../schema/context_agents.sql"),
60 )
61 .with_required_columns(vec![
62 "id".into(),
63 "context_id".into(),
64 "agent_name".into(),
65 ]),
66 SchemaDefinition::new(
67 "context_notifications",
68 include_str!("../schema/context_notifications.sql"),
69 )
70 .with_required_columns(vec![
71 "id".into(),
72 "context_id".into(),
73 "notification_type".into(),
74 ]),
75 SchemaDefinition::new(
76 "task_push_notification_configs",
77 include_str!("../schema/task_push_notification_configs.sql"),
78 )
79 .with_required_columns(vec!["id".into(), "task_id".into()]),
80 SchemaDefinition::new(
81 "task_execution_steps",
82 include_str!("../schema/task_execution_steps.sql"),
83 )
84 .with_required_columns(vec![
85 "step_id".into(),
86 "task_id".into(),
87 "step_type".into(),
88 ]),
89 SchemaDefinition::new("services", include_str!("../schema/services.sql"))
90 .with_required_columns(vec!["name".into(), "module_name".into(), "status".into()]),
91 SchemaDefinition::new(
92 "user_session_analytics",
93 include_str!("../schema/user_session_analytics.sql"),
94 ),
95 ]
96 }
97
98 fn dependencies(&self) -> Vec<&'static str> {
99 vec!["users", "oauth", "mcp", "ai"]
100 }
101
102 fn migrations(&self) -> Vec<Migration> {
103 extension_migrations!()
104 }
105
106 fn cross_extension_tables(&self) -> Vec<&'static str> {
107 vec!["ai_requests"]
108 }
109}
110
111register_extension!(AgentExtension);