mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-05 13:29:44 +02:00
Adds a `project_resource` table that lets a project carry typed pointers
(github_repo today, more later) and surfaces them at agent runtime.
Server
- migration 065: project_resource (resource_type TEXT + resource_ref JSONB)
- sqlc CRUD + handler at /api/projects/{id}/resources
- claim handler attaches project_id/title + resources to issue tasks
Daemon
- TaskContextForEnv carries project context
- writes .multica/project/resources.json into workdir
- adds "## Project Context" block to CLAUDE.md / AGENTS.md / GEMINI.md
via type-dispatched formatter so new resource types just add a case
CLI
- multica project create --repo <url> attaches repos in one step
- multica project resource add/list/remove
Frontend
- Project create modal: Repos pill (workspace repos + ad-hoc URL)
- Project detail sidebar: collapsible Resources section with attach/remove
Docs
- New "Project Resources" chapter explaining the abstraction and
exactly what code to touch when adding a new resource type
Co-authored-by: multica-agent <github@multica.ai>
31 lines
899 B
SQL
31 lines
899 B
SQL
-- name: ListProjectResources :many
|
|
SELECT * FROM project_resource
|
|
WHERE project_id = $1
|
|
ORDER BY position ASC, created_at ASC;
|
|
|
|
-- name: ListProjectResourcesForProjects :many
|
|
SELECT * FROM project_resource
|
|
WHERE project_id = ANY(sqlc.arg('project_ids')::uuid[])
|
|
ORDER BY project_id, position ASC, created_at ASC;
|
|
|
|
-- name: GetProjectResource :one
|
|
SELECT * FROM project_resource
|
|
WHERE id = $1;
|
|
|
|
-- name: GetProjectResourceInWorkspace :one
|
|
SELECT * FROM project_resource
|
|
WHERE id = $1 AND workspace_id = $2;
|
|
|
|
-- name: CreateProjectResource :one
|
|
INSERT INTO project_resource (
|
|
project_id, workspace_id, resource_type, resource_ref, label, position, created_by
|
|
) VALUES (
|
|
$1, $2, $3, $4, $5, $6, $7
|
|
) RETURNING *;
|
|
|
|
-- name: DeleteProjectResource :exec
|
|
DELETE FROM project_resource WHERE id = $1;
|
|
|
|
-- name: CountProjectResources :one
|
|
SELECT count(*) FROM project_resource WHERE project_id = $1;
|