mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-25 12:05:06 +02:00
* feat(autopilot): add scheduled/triggered automation for AI agents Introduce the Autopilot feature — recurring automations that assign work to AI agents on a schedule or manual trigger. Supports two execution modes: create_issue (creates an issue for the agent to work on) and run_only (directly enqueues an agent task without issue pollution). Backend: migration (3 tables + 2 columns), sqlc queries, AutopilotService with concurrency policies (skip/queue/replace), HTTP CRUD + trigger endpoints, background cron scheduler (30s tick), event listeners for issue→run and task→run status sync. Frontend: types, API client methods, TanStack Query hooks with optimistic mutations, realtime cache invalidation, list page with create dialog, detail page with trigger management and run history, sidebar nav + routes for both web and desktop apps. * feat(autopilot): improve UX — trigger config, edit dialog, template gallery - Replace raw cron input with friendly frequency tabs (Hourly/Daily/Weekdays/Weekly/Custom), time picker, and timezone dropdown defaulting to user's local timezone - Fix Select components showing UUIDs instead of names (Base UI render function pattern) - Add Edit button on detail page opening a unified edit dialog - Remove project/concurrency/issue-title-template from create/edit (simplify for users) - Add trigger configuration inline during autopilot creation - Add template gallery on empty state (6 step-by-step workflow templates) - Rename "Description" to "Prompt" throughout UI - Inject autopilot run timestamp into issue description for agent date awareness - Treat issue status "in_review" as run completion (fixes skip on next trigger) - Make migration idempotent with IF NOT EXISTS clauses
81 lines
2.9 KiB
JSON
81 lines
2.9 KiB
JSON
{
|
|
"name": "@multica/core",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"typecheck": "tsc --noEmit",
|
|
"lint": "eslint .",
|
|
"test": "vitest run"
|
|
},
|
|
"exports": {
|
|
".": "./index.ts",
|
|
"./types": "./types/index.ts",
|
|
"./types/*": "./types/*.ts",
|
|
"./api": "./api/index.ts",
|
|
"./api/client": "./api/client.ts",
|
|
"./api/ws-client": "./api/ws-client.ts",
|
|
"./auth": "./auth/index.ts",
|
|
"./workspace": "./workspace/index.ts",
|
|
"./workspace/queries": "./workspace/queries.ts",
|
|
"./workspace/mutations": "./workspace/mutations.ts",
|
|
"./workspace/hooks": "./workspace/hooks.ts",
|
|
"./issues": "./issues/index.ts",
|
|
"./issues/queries": "./issues/queries.ts",
|
|
"./issues/mutations": "./issues/mutations.ts",
|
|
"./issues/ws-updaters": "./issues/ws-updaters.ts",
|
|
"./issues/config": "./issues/config/index.ts",
|
|
"./issues/config/status": "./issues/config/status.ts",
|
|
"./issues/config/priority": "./issues/config/priority.ts",
|
|
"./issues/stores": "./issues/stores/index.ts",
|
|
"./issues/stores/view-store-context": "./issues/stores/view-store-context.tsx",
|
|
"./issues/stores/*": "./issues/stores/*.ts",
|
|
"./inbox": "./inbox/index.ts",
|
|
"./inbox/queries": "./inbox/queries.ts",
|
|
"./inbox/mutations": "./inbox/mutations.ts",
|
|
"./inbox/ws-updaters": "./inbox/ws-updaters.ts",
|
|
"./chat": "./chat/index.ts",
|
|
"./chat/queries": "./chat/queries.ts",
|
|
"./chat/mutations": "./chat/mutations.ts",
|
|
"./runtimes": "./runtimes/index.ts",
|
|
"./runtimes/queries": "./runtimes/queries.ts",
|
|
"./runtimes/mutations": "./runtimes/mutations.ts",
|
|
"./runtimes/hooks": "./runtimes/hooks.ts",
|
|
"./projects": "./projects/index.ts",
|
|
"./projects/queries": "./projects/queries.ts",
|
|
"./projects/mutations": "./projects/mutations.ts",
|
|
"./projects/config": "./projects/config.ts",
|
|
"./autopilots": "./autopilots/index.ts",
|
|
"./autopilots/queries": "./autopilots/queries.ts",
|
|
"./autopilots/mutations": "./autopilots/mutations.ts",
|
|
"./pins": "./pins/index.ts",
|
|
"./pins/queries": "./pins/queries.ts",
|
|
"./pins/mutations": "./pins/mutations.ts",
|
|
"./realtime": "./realtime/index.ts",
|
|
"./navigation": "./navigation/index.ts",
|
|
"./modals": "./modals/index.ts",
|
|
"./hooks": "./hooks.tsx",
|
|
"./hooks/*": "./hooks/*.ts",
|
|
"./query-client": "./query-client.ts",
|
|
"./provider": "./provider.tsx",
|
|
"./logger": "./logger.ts",
|
|
"./utils": "./utils.ts",
|
|
"./constants/*": "./constants/*.ts",
|
|
"./platform": "./platform/index.ts"
|
|
},
|
|
"dependencies": {
|
|
"@tanstack/react-query": "catalog:",
|
|
"@tanstack/react-query-devtools": "^5.96.2",
|
|
"zustand": "catalog:"
|
|
},
|
|
"peerDependencies": {
|
|
"react": "catalog:"
|
|
},
|
|
"devDependencies": {
|
|
"@multica/tsconfig": "workspace:*",
|
|
"@types/react": "catalog:",
|
|
"typescript": "catalog:",
|
|
"vitest": "catalog:"
|
|
}
|
|
}
|