diff --git a/documentation/concepts/projects.mdx b/documentation/concepts/projects.mdx index 543a73de5..3b55c910a 100644 --- a/documentation/concepts/projects.mdx +++ b/documentation/concepts/projects.mdx @@ -26,6 +26,7 @@ A project includes: - `id`: Unique identifier - `canonical_name`: Machine-readable name (unique per developer) - `name`: Human-readable display name +- `description`: Optional description of the project - `metadata`: Custom attributes for the project ## Project Relationships @@ -67,8 +68,8 @@ POST /projects { "name": "Customer Support Bot", "canonical_name": "support-bot", + "description": "Resources for our customer support chatbot", "metadata": { - "description": "Resources for our customer support chatbot", "team": "customer-success" } } diff --git a/src/agents-api/agents_api/queries/projects/create_project.py b/src/agents-api/agents_api/queries/projects/create_project.py index bc31abb41..637c68fd5 100644 --- a/src/agents-api/agents_api/queries/projects/create_project.py +++ b/src/agents-api/agents_api/queries/projects/create_project.py @@ -20,6 +20,7 @@ project_id, canonical_name, name, + description, metadata ) VALUES ( @@ -27,7 +28,8 @@ $2, $3, $4, - $5 + $5, + $6 ) RETURNING *; """ @@ -70,6 +72,7 @@ async def create_project( project_id, data.canonical_name, data.name, + data.description, data.metadata, ] diff --git a/src/agents-api/agents_api/queries/projects/list_projects.py b/src/agents-api/agents_api/queries/projects/list_projects.py index 0413a1ae1..356798f03 100644 --- a/src/agents-api/agents_api/queries/projects/list_projects.py +++ b/src/agents-api/agents_api/queries/projects/list_projects.py @@ -23,6 +23,7 @@ developer_id, name, canonical_name, + description, metadata, created_at, updated_at diff --git a/src/memory-store/migrations/000044_add_project_description.down.sql b/src/memory-store/migrations/000044_add_project_description.down.sql new file mode 100644 index 000000000..a6a1d6057 --- /dev/null +++ b/src/memory-store/migrations/000044_add_project_description.down.sql @@ -0,0 +1,30 @@ +BEGIN; + +-- Revert the create_default_project function to not include description +CREATE OR REPLACE FUNCTION create_default_project() +RETURNS TRIGGER AS $$ +BEGIN + INSERT INTO projects ( + project_id, + developer_id, + canonical_name, + name, + metadata + ) VALUES ( + gen_random_uuid(), + NEW.developer_id, + 'default', + 'Default Project', + jsonb_build_object( + 'is_default', true, + 'description', 'Default project containing all existing resources' + ) + ); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +-- Remove description column from projects table +ALTER TABLE projects DROP COLUMN IF EXISTS description; + +COMMIT; \ No newline at end of file diff --git a/src/memory-store/migrations/000044_add_project_description.up.sql b/src/memory-store/migrations/000044_add_project_description.up.sql new file mode 100644 index 000000000..c7d22834c --- /dev/null +++ b/src/memory-store/migrations/000044_add_project_description.up.sql @@ -0,0 +1,39 @@ +BEGIN; + +-- Add description column to projects table +ALTER TABLE projects +ADD COLUMN description TEXT DEFAULT NULL +CONSTRAINT chk_projects_description_length CHECK ( + description IS NULL + OR length(description) <= 1000 +); + +-- Add comment to the description column +COMMENT ON COLUMN projects.description IS 'Optional description of the project'; + +-- Update the create_default_project function to include description +CREATE OR REPLACE FUNCTION create_default_project() +RETURNS TRIGGER AS $$ +BEGIN + INSERT INTO projects ( + project_id, + developer_id, + canonical_name, + name, + description, + metadata + ) VALUES ( + gen_random_uuid(), + NEW.developer_id, + 'default', + 'Default Project', + 'Default project containing all existing resources', + jsonb_build_object( + 'is_default', true + ) + ); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +COMMIT; \ No newline at end of file diff --git a/src/typespec/projects/models.tsp b/src/typespec/projects/models.tsp index d3ed9a7bb..2201f60a0 100644 --- a/src/typespec/projects/models.tsp +++ b/src/typespec/projects/models.tsp @@ -24,6 +24,9 @@ model Project { @doc("Display name of the project") name: displayName; + @doc("Optional description of the project") + description?: string; + } /** Payload for updating a project */