@app-vitals/agent-admin 0.0.1 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dockerfile +43 -0
- package/README.md +72 -2
- package/e2e/agents-page.e2e.ts +338 -0
- package/e2e/chat-degraded.e2e.ts +153 -0
- package/e2e/chat-page.e2e.ts +169 -0
- package/e2e/chat-progress.e2e.ts +206 -0
- package/e2e/chat-thread-page.e2e.ts +444 -0
- package/e2e/login-page.e2e.ts +148 -0
- package/e2e/test-server.ts +427 -0
- package/openapi.json +6098 -0
- package/openapi.platform.json +5553 -0
- package/package.json +62 -4
- package/playwright.config.ts +25 -0
- package/prisma/client/browser.ts +134 -0
- package/prisma/client/client.ts +158 -0
- package/prisma/client/commonInputTypes.ts +578 -0
- package/prisma/client/enums.ts +15 -0
- package/prisma/client/internal/class.ts +424 -0
- package/prisma/client/internal/prismaNamespace.ts +2898 -0
- package/prisma/client/internal/prismaNamespaceBrowser.ts +476 -0
- package/prisma/client/models/Account.ts +1774 -0
- package/prisma/client/models/AccountInvite.ts +1386 -0
- package/prisma/client/models/AccountMember.ts +1351 -0
- package/prisma/client/models/Agent.ts +4554 -0
- package/prisma/client/models/AgentAsk.ts +1373 -0
- package/prisma/client/models/AgentChatTokenUsageDailyByModel.ts +1638 -0
- package/prisma/client/models/AgentCronJob.ts +2416 -0
- package/prisma/client/models/AgentCronRun.ts +2858 -0
- package/prisma/client/models/AgentCronRunModelBreakdown.ts +1532 -0
- package/prisma/client/models/AgentCronRunSkillUsage.ts +1642 -0
- package/prisma/client/models/AgentEnv.ts +1421 -0
- package/prisma/client/models/AgentGitHubInstallationsSnapshot.ts +1289 -0
- package/prisma/client/models/AgentMember.ts +1316 -0
- package/prisma/client/models/AgentPhaseMethodology.ts +1355 -0
- package/prisma/client/models/AgentPlugin.ts +1421 -0
- package/prisma/client/models/AgentToken.ts +1380 -0
- package/prisma/client/models/AgentTool.ts +1351 -0
- package/prisma/client/models/AgentWorkQueueSnapshot.ts +1297 -0
- package/prisma/client/models/ChatThreadWatch.ts +1183 -0
- package/prisma/client/models/PushSubscription.ts +1233 -0
- package/prisma/client/models/SessionAlertState.ts +1187 -0
- package/prisma/client/models/SessionFollow.ts +1187 -0
- package/prisma/client/models/UserNotificationPrefs.ts +1221 -0
- package/prisma/client/models.ts +34 -0
- package/prisma/migrations/20260608000000_init/migration.sql +112 -0
- package/prisma/migrations/20260616000000_agent_members/migration.sql +18 -0
- package/prisma/migrations/20260624000000_add_agent_self_hosted/migration.sql +2 -0
- package/prisma/migrations/20260624120000_add_agent_repos/migration.sql +3 -0
- package/prisma/migrations/20260625000000_add_agent_cron_run/migration.sql +26 -0
- package/prisma/migrations/20260626000000_add_cron_run_token_fields/migration.sql +10 -0
- package/prisma/migrations/20260627000000_add_agent_chat_token_usage_daily/migration.sql +18 -0
- package/prisma/migrations/20260627010000_add_agent_chat_token_usage_fk/migration.sql +2 -0
- package/prisma/migrations/20260701000000_add_chat_threads_messages/migration.sql +37 -0
- package/prisma/migrations/20260701010000_drop_chat_threads_messages/migration.sql +17 -0
- package/prisma/migrations/20260701020000_add_cron_run_model_breakdown/migration.sql +23 -0
- package/prisma/migrations/20260701020000_chat_token_by_model/migration.sql +25 -0
- package/prisma/migrations/20260701030000_add_secret_flag_to_agent_env/migration.sql +2 -0
- package/prisma/migrations/20260701030000_drop_cron_run_legacy_columns/migration.sql +5 -0
- package/prisma/migrations/20260706000000_consolidate_cron_run_token_accounting/migration.sql +54 -0
- package/prisma/migrations/20260709000000_add_phase_to_agent_cron_run/migration.sql +8 -0
- package/prisma/migrations/20260717000000_add_item_tracking_to_agent_cron_run/migration.sql +10 -0
- package/prisma/migrations/20260717010000_add_agent_work_queue_snapshot/migration.sql +20 -0
- package/prisma/migrations/20260718000000_add_cron_phase_columns/migration.sql +25 -0
- package/prisma/migrations/20260718100000_drop_agent_cron_run_phase_column/migration.sql +8 -0
- package/prisma/migrations/20260724000000_add_agent_type_name/migration.sql +3 -0
- package/prisma/migrations/20260725232433_add_agent_author_allowlist/migration.sql +2 -0
- package/prisma/migrations/20260727120000_add_not_null_to_agent_author_allowlist/migration.sql +3 -0
- package/prisma/migrations/20260731000000_add_session_id_to_agent_cron_run/migration.sql +2 -0
- package/prisma/migrations/20260821000000_add_agent_restrict_slack_to_members/migration.sql +3 -0
- package/prisma/migrations/20260901000000_add_push_subscription_and_chat_thread_watch/migration.sql +40 -0
- package/prisma/migrations/20260903000000_add_agent_patch_author_allowlist/migration.sql +2 -0
- package/prisma/migrations/20260903120000_add_agent_review_author_allowlist/migration.sql +18 -0
- package/prisma/migrations/20260903150000_drop_agent_author_allowlist/migration.sql +14 -0
- package/prisma/migrations/20260905000000_add_started_at_index_to_agent_cron_run/migration.sql +11 -0
- package/prisma/migrations/20260906000000_add_session_follow_notification_prefs_alert_state/migration.sql +47 -0
- package/prisma/migrations/20260911000000_backfill_auto_follow_since/migration.sql +16 -0
- package/prisma/migrations/20260923115814_add_last_heartbeat_at_to_agent_cron_run/migration.sql +2 -0
- package/prisma/migrations/20260924120000_add_trial_expiry_fields_to_agent/migration.sql +6 -0
- package/prisma/migrations/20260929000000_add_agent_phase_methodology/migration.sql +21 -0
- package/prisma/migrations/20260929120000_add_agent_policy_fields/migration.sql +15 -0
- package/prisma/migrations/20261005000000_add_agent_github_installations_snapshot/migration.sql +21 -0
- package/prisma/migrations/20261008000000_add_cron_run_telemetry/migration.sql +50 -0
- package/prisma/migrations/20261008010000_add_account_models/migration.sql +48 -0
- package/prisma/migrations/20261008020000_add_cron_lockdown_disabled_at/migration.sql +3 -0
- package/prisma/migrations/20261009000000_chat_token_usage_bigint/migration.sql +7 -0
- package/prisma/migrations/20261010000000_add_cron_run_command_variant/migration.sql +2 -0
- package/prisma/migrations/20261019000000_add_agent_anthropic_identity/migration.sql +9 -0
- package/prisma/migrations/20261025000000_add_agent_ask/migration.sql +23 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema/coding.prisma +85 -0
- package/prisma/schema/schema.prisma +506 -0
- package/prisma.config.ts +34 -0
- package/pwa-assets/icons/apple-touch-icon.png +0 -0
- package/pwa-assets/icons/favicon-32.png +0 -0
- package/pwa-assets/icons/icon-192.png +0 -0
- package/pwa-assets/icons/icon-512.png +0 -0
- package/pwa-assets/icons/icon-maskable-192.png +0 -0
- package/pwa-assets/icons/icon-maskable-512.png +0 -0
- package/src/account-agent-create.ts +42 -0
- package/src/account-agent-create.unit.test.ts +28 -0
- package/src/account-created-notifier.ts +71 -0
- package/src/account-created-notifier.unit.test.ts +70 -0
- package/src/account-email.ts +9 -0
- package/src/account-email.unit.test.ts +21 -0
- package/src/account-invites.ts +70 -0
- package/src/account-lifecycle.integration.test.ts +329 -0
- package/src/account-lifecycle.ts +206 -0
- package/src/account-lifecycle.unit.test.ts +108 -0
- package/src/account-members.ts +128 -0
- package/src/account-onboarding.integration.test.ts +101 -0
- package/src/account-onboarding.ts +95 -0
- package/src/account-trial-expiry-sweeper.ts +85 -0
- package/src/account-trial-warning-sweeper.integration.test.ts +228 -0
- package/src/account-trial-warning-sweeper.ts +216 -0
- package/src/accounts-api.integration.test.ts +196 -0
- package/src/accounts-api.smoke.test.ts +292 -0
- package/src/accounts-api.ts +289 -0
- package/src/accounts-api.unit.test.ts +93 -0
- package/src/accounts.integration.test.ts +178 -0
- package/src/accounts.ts +208 -0
- package/src/admin-boot-config.ts +574 -0
- package/src/admin-boot-config.unit.test.ts +28 -0
- package/src/admin-boot.boot-order.unit.test.ts +91 -0
- package/src/admin-boot.ts +690 -0
- package/src/admin-dev-login.smoke.test.ts +317 -0
- package/src/admin-extension.ts +432 -0
- package/src/admin-extension.unit.test.ts +532 -0
- package/src/admin-local-agent.smoke.test.ts +1643 -0
- package/src/admin-spec.smoke.test.ts +96 -0
- package/src/admin-spec.ts +186 -0
- package/src/admin-ui-account-nav.ts +20 -0
- package/src/admin-ui-account-pages.ts +131 -0
- package/src/admin-ui-account-pages.unit.test.ts +112 -0
- package/src/admin-ui-account.smoke.test.ts +286 -0
- package/src/admin-ui-account.ts +185 -0
- package/src/admin-ui-accounts-pages.ts +202 -0
- package/src/admin-ui-accounts-pages.unit.test.ts +138 -0
- package/src/admin-ui-accounts.smoke.test.ts +434 -0
- package/src/admin-ui-accounts.ts +266 -0
- package/src/admin-ui-layout.ts +60 -0
- package/src/admin-ui-layout.unit.test.ts +140 -0
- package/src/admin-ui-pages.ts +3489 -0
- package/src/admin-ui-pages.unit.test.ts +4355 -0
- package/src/admin-ui-push-test.smoke.test.ts +125 -0
- package/src/admin-ui-push-test.ts +102 -0
- package/src/admin-ui-styles.ts +656 -0
- package/src/admin-ui-styles.unit.test.ts +103 -0
- package/src/admin-ui.fixtures.ts +457 -0
- package/src/admin-ui.smoke.test.ts +7227 -0
- package/src/admin-ui.ts +3824 -0
- package/src/agent-account-assignment.ts +49 -0
- package/src/agent-account-assignment.unit.test.ts +99 -0
- package/src/agent-anthropic-identity.integration.test.ts +99 -0
- package/src/agent-anthropic-identity.ts +78 -0
- package/src/agent-anthropic-identity.unit.test.ts +77 -0
- package/src/agent-ask-config.ts +59 -0
- package/src/agent-ask-config.unit.test.ts +70 -0
- package/src/agent-ask.integration.test.ts +175 -0
- package/src/agent-ask.smoke.test.ts +457 -0
- package/src/agent-ask.ts +378 -0
- package/src/agent-chat-tokens.integration.test.ts +420 -0
- package/src/agent-chat-tokens.smoke.test.ts +551 -0
- package/src/agent-chat-tokens.ts +259 -0
- package/src/agent-cron-jobs.integration.test.ts +582 -0
- package/src/agent-cron-jobs.ts +615 -0
- package/src/agent-cron-jobs.unit.test.ts +420 -0
- package/src/agent-cron-run-stats.integration.test.ts +1551 -0
- package/src/agent-cron-run-stats.smoke.test.ts +953 -0
- package/src/agent-cron-run-stats.ts +752 -0
- package/src/agent-cron-runs.integration.test.ts +1491 -0
- package/src/agent-cron-runs.ts +489 -0
- package/src/agent-deletion-checklist.ts +128 -0
- package/src/agent-deletion-checklist.unit.test.ts +201 -0
- package/src/agent-deletion-per-agent.integration.test.ts +323 -0
- package/src/agent-deletion.integration.test.ts +323 -0
- package/src/agent-deletion.ts +329 -0
- package/src/agent-deletion.unit.test.ts +412 -0
- package/src/agent-envs.integration.test.ts +323 -0
- package/src/agent-envs.ts +244 -0
- package/src/agent-github-installations.integration.test.ts +115 -0
- package/src/agent-github-installations.ts +52 -0
- package/src/agent-manifest.ts +685 -0
- package/src/agent-manifest.unit.test.ts +870 -0
- package/src/agent-members.ts +69 -0
- package/src/agent-members.unit.test.ts +250 -0
- package/src/agent-patch-author-allowlist.integration.test.ts +218 -0
- package/src/agent-plugins.integration.test.ts +157 -0
- package/src/agent-plugins.ts +95 -0
- package/src/agent-plugins.unit.test.ts +43 -0
- package/src/agent-provisioner-per-agent.integration.test.ts +949 -0
- package/src/agent-provisioner.integration.test.ts +1245 -0
- package/src/agent-provisioner.ts +1650 -0
- package/src/agent-provisioner.unit.test.ts +1852 -0
- package/src/agent-tokens.integration.test.ts +150 -0
- package/src/agent-tokens.ts +112 -0
- package/src/agent-tools.integration.test.ts +129 -0
- package/src/agent-tools.ts +111 -0
- package/src/agents-api.integration.test.ts +705 -0
- package/src/agents-api.sentry.smoke.test.ts +478 -0
- package/src/agents-api.smoke.test.ts +5986 -0
- package/src/agents-api.ts +2826 -0
- package/src/agents.integration.test.ts +512 -0
- package/src/agents.ts +1097 -0
- package/src/agents.unit.test.ts +1736 -0
- package/src/anthropic-credential-guard.ts +44 -0
- package/src/anthropic-credential-guard.unit.test.ts +88 -0
- package/src/anthropic-federated-token-provider.integration.test.ts +248 -0
- package/src/anthropic-federated-token-provider.ts +249 -0
- package/src/anthropic-identity-client.fixtures.ts +237 -0
- package/src/anthropic-identity-client.integration.test.ts +342 -0
- package/src/anthropic-identity-client.ts +473 -0
- package/src/anthropic-identity-fixture-spec.integration.test.ts +169 -0
- package/src/anthropic-identity-name.integration.test.ts +83 -0
- package/src/anthropic-identity-name.ts +163 -0
- package/src/anthropic-identity-name.unit.test.ts +345 -0
- package/src/anthropic-openapi-contract.fixtures.ts +192 -0
- package/src/api-auth.ts +383 -0
- package/src/api-auth.unit.test.ts +837 -0
- package/src/api.smoke.test.ts +1225 -0
- package/src/api.ts +376 -0
- package/src/attachment-validation.ts +124 -0
- package/src/attachment-validation.unit.test.ts +218 -0
- package/src/caller-scope.ts +131 -0
- package/src/caller-scope.unit.test.ts +116 -0
- package/src/chat-credential-config.ts +22 -0
- package/src/chat-credentials-logging.unit.test.ts +92 -0
- package/src/chat-markers.ts +114 -0
- package/src/chat-markers.unit.test.ts +116 -0
- package/src/chat-service-provisioning-client.integration.test.ts +412 -0
- package/src/chat-service-provisioning-client.ts +221 -0
- package/src/chat.smoke.test.ts +1875 -0
- package/src/clock.ts +47 -0
- package/src/coding-task-store-provisioning-client.integration.test.ts +372 -0
- package/src/coding-task-store-provisioning-client.ts +156 -0
- package/src/crypto.ts +83 -0
- package/src/dev-auth-guard.ts +29 -0
- package/src/dev-auth-guard.unit.test.ts +51 -0
- package/src/errors.ts +77 -0
- package/src/errors.unit.test.ts +52 -0
- package/src/fixtures/anthropic-identity-recorded-fixtures.json +850 -0
- package/src/fixtures/anthropic-openapi/SDK_VERSION +1 -0
- package/src/fixtures/anthropic-openapi/mock-spec.json.gz +0 -0
- package/src/fixtures/chat-service-provisioning-cassette.json +156 -0
- package/src/fixtures/github-app-manifest-cassette.json +44 -0
- package/src/fixtures/google-auth-cassette.json +36 -0
- package/src/fixtures/http-chat-client-cassette.json +226 -0
- package/src/fixtures/k8s-cassette.json +470 -0
- package/src/fixtures/okta-auth-cassette.json +36 -0
- package/src/fixtures/slack-provision-cassette.json +12 -0
- package/src/fixtures/slack-provisioning-http-cassette.json +98 -0
- package/src/fixtures/task-store-provisioning-cassette.json +85 -0
- package/src/github-app-provisioning-client.integration.test.ts +149 -0
- package/src/github-app-provisioning-client.ts +161 -0
- package/src/github-app-provisioning-client.unit.test.ts +114 -0
- package/src/github-provisioning-service.ts +569 -0
- package/src/github-provisioning-service.unit.test.ts +123 -0
- package/src/google-auth-client.integration.test.ts +195 -0
- package/src/google-auth-client.ts +121 -0
- package/src/http-chat-client.integration.test.ts +554 -0
- package/src/http-chat-client.ts +533 -0
- package/src/http-chat-client.unit.test.ts +119 -0
- package/src/import-boundary.unit.test.ts +240 -0
- package/src/kubernetes-client.integration.test.ts +697 -0
- package/src/kubernetes-client.ts +1027 -0
- package/src/kubernetes-client.unit.test.ts +726 -0
- package/src/main.smoke.test.ts +91 -0
- package/src/main.ts +21 -0
- package/src/main.unit.test.ts +801 -0
- package/src/okta-auth-client.integration.test.ts +263 -0
- package/src/okta-auth-client.ts +152 -0
- package/src/openapi-schemas.ts +1310 -0
- package/src/openapi-schemas.unit.test.ts +348 -0
- package/src/per-agent-identity.fixtures.ts +305 -0
- package/src/platform-doc-route.ts +40 -0
- package/src/prisma-client.integration.test.ts +57 -0
- package/src/prisma-client.ts +187 -0
- package/src/prisma-client.unit.test.ts +178 -0
- package/src/prisma-tx.ts +23 -0
- package/src/push-content.ts +177 -0
- package/src/push-content.unit.test.ts +213 -0
- package/src/push-crypto.ts +135 -0
- package/src/push-crypto.unit.test.ts +66 -0
- package/src/push-sender.ts +169 -0
- package/src/push-sender.unit.test.ts +107 -0
- package/src/push-service.ts +332 -0
- package/src/push-service.unit.test.ts +679 -0
- package/src/push-toggle.ts +135 -0
- package/src/push-toggle.unit.test.ts +78 -0
- package/src/pwa-https-gating.smoke.test.ts +229 -0
- package/src/pwa-icons.unit.test.ts +41 -0
- package/src/pwa-routes.smoke.test.ts +276 -0
- package/src/pwa.ts +380 -0
- package/src/pwa.unit.test.ts +321 -0
- package/src/schema.unit.test.ts +122 -0
- package/src/self-serve-config.ts +52 -0
- package/src/self-serve-config.unit.test.ts +79 -0
- package/src/server.smoke.test.ts +273 -0
- package/src/server.ts +50 -0
- package/src/service-integration.ts +67 -0
- package/src/service-integration.unit.test.ts +129 -0
- package/src/slack-provisioning-client.integration.test.ts +308 -0
- package/src/slack-provisioning-client.ts +411 -0
- package/src/slack-provisioning-client.unit.test.ts +80 -0
- package/src/slack-provisioning-service.integration.test.ts +637 -0
- package/src/slack-provisioning-service.ts +451 -0
- package/src/slack-provisioning.integration.test.ts +395 -0
- package/src/specialty-manifest-loader.fixture.integration.test.ts +63 -0
- package/src/specialty-manifest-loader.ts +255 -0
- package/src/specialty-manifest-loader.unit.test.ts +301 -0
- package/src/specialty-registry.schema.unit.test.ts +35 -0
- package/src/specialty-registry.ts +236 -0
- package/src/specialty-registry.unit.test.ts +272 -0
- package/src/startup-policy-reconcile.ts +77 -0
- package/src/startup-policy-reconcile.unit.test.ts +251 -0
- package/src/theme-tokens.json +12 -0
- package/src/token-crypto.ts +60 -0
- package/src/token-crypto.unit.test.ts +182 -0
- package/src/trial-expiry-sweeper.integration.test.ts +318 -0
- package/src/trial-expiry-sweeper.ts +132 -0
- package/src/trial-expiry-sweeper.unit.test.ts +391 -0
- package/src/trial-expiry-warning-sweeper.integration.test.ts +468 -0
- package/src/trial-expiry-warning-sweeper.ts +447 -0
- package/src/trial-expiry-warning-sweeper.unit.test.ts +148 -0
- package/src/voice-contract.unit.test.ts +102 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
/* !!! This is code generated by Prisma. Do not edit directly. !!! */
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
// biome-ignore-all lint: generated file
|
|
5
|
+
// @ts-nocheck
|
|
6
|
+
/*
|
|
7
|
+
* This is a barrel export file for all models and their related types.
|
|
8
|
+
*
|
|
9
|
+
* 🟢 You can import this file directly.
|
|
10
|
+
*/
|
|
11
|
+
export type * from './models/AgentWorkQueueSnapshot.ts'
|
|
12
|
+
export type * from './models/AgentPhaseMethodology.ts'
|
|
13
|
+
export type * from './models/SessionFollow.ts'
|
|
14
|
+
export type * from './models/SessionAlertState.ts'
|
|
15
|
+
export type * from './models/Agent.ts'
|
|
16
|
+
export type * from './models/AgentEnv.ts'
|
|
17
|
+
export type * from './models/AgentCronJob.ts'
|
|
18
|
+
export type * from './models/AgentTool.ts'
|
|
19
|
+
export type * from './models/AgentToken.ts'
|
|
20
|
+
export type * from './models/AgentPlugin.ts'
|
|
21
|
+
export type * from './models/AgentMember.ts'
|
|
22
|
+
export type * from './models/Account.ts'
|
|
23
|
+
export type * from './models/AccountMember.ts'
|
|
24
|
+
export type * from './models/AccountInvite.ts'
|
|
25
|
+
export type * from './models/AgentCronRun.ts'
|
|
26
|
+
export type * from './models/AgentCronRunSkillUsage.ts'
|
|
27
|
+
export type * from './models/AgentCronRunModelBreakdown.ts'
|
|
28
|
+
export type * from './models/AgentChatTokenUsageDailyByModel.ts'
|
|
29
|
+
export type * from './models/AgentAsk.ts'
|
|
30
|
+
export type * from './models/AgentGitHubInstallationsSnapshot.ts'
|
|
31
|
+
export type * from './models/PushSubscription.ts'
|
|
32
|
+
export type * from './models/ChatThreadWatch.ts'
|
|
33
|
+
export type * from './models/UserNotificationPrefs.ts'
|
|
34
|
+
export type * from './commonInputTypes.ts'
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
-- CreateSchema
|
|
2
|
+
CREATE SCHEMA IF NOT EXISTS "public";
|
|
3
|
+
|
|
4
|
+
-- CreateTable
|
|
5
|
+
CREATE TABLE "Agent" (
|
|
6
|
+
"id" TEXT NOT NULL,
|
|
7
|
+
"name" TEXT NOT NULL,
|
|
8
|
+
"slackId" TEXT,
|
|
9
|
+
"slackBotToken" TEXT,
|
|
10
|
+
"anthropicApiKey" TEXT,
|
|
11
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
12
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
13
|
+
|
|
14
|
+
CONSTRAINT "Agent_pkey" PRIMARY KEY ("id")
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
-- CreateTable
|
|
18
|
+
CREATE TABLE "AgentEnv" (
|
|
19
|
+
"id" TEXT NOT NULL,
|
|
20
|
+
"agentId" TEXT NOT NULL,
|
|
21
|
+
"key" TEXT NOT NULL,
|
|
22
|
+
"value" TEXT NOT NULL,
|
|
23
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
24
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
25
|
+
|
|
26
|
+
CONSTRAINT "AgentEnv_pkey" PRIMARY KEY ("id")
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
-- CreateTable
|
|
30
|
+
CREATE TABLE "AgentCronJob" (
|
|
31
|
+
"id" TEXT NOT NULL,
|
|
32
|
+
"agentId" TEXT NOT NULL,
|
|
33
|
+
"schedule" TEXT NOT NULL,
|
|
34
|
+
"prompt" TEXT NOT NULL,
|
|
35
|
+
"channel" TEXT,
|
|
36
|
+
"user" TEXT,
|
|
37
|
+
"silent" BOOLEAN NOT NULL DEFAULT false,
|
|
38
|
+
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
39
|
+
"preCheck" TEXT,
|
|
40
|
+
"name" TEXT,
|
|
41
|
+
"system" BOOLEAN NOT NULL DEFAULT false,
|
|
42
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
43
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
44
|
+
|
|
45
|
+
CONSTRAINT "AgentCronJob_pkey" PRIMARY KEY ("id")
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
-- CreateTable
|
|
49
|
+
CREATE TABLE "AgentTool" (
|
|
50
|
+
"id" TEXT NOT NULL,
|
|
51
|
+
"agentId" TEXT NOT NULL,
|
|
52
|
+
"pattern" TEXT NOT NULL,
|
|
53
|
+
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
54
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
55
|
+
|
|
56
|
+
CONSTRAINT "AgentTool_pkey" PRIMARY KEY ("id")
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
-- CreateTable
|
|
60
|
+
CREATE TABLE "AgentToken" (
|
|
61
|
+
"id" TEXT NOT NULL,
|
|
62
|
+
"agentId" TEXT NOT NULL,
|
|
63
|
+
"token" TEXT NOT NULL,
|
|
64
|
+
"label" TEXT,
|
|
65
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
66
|
+
"revokedAt" TIMESTAMP(3),
|
|
67
|
+
|
|
68
|
+
CONSTRAINT "AgentToken_pkey" PRIMARY KEY ("id")
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
-- CreateTable
|
|
72
|
+
CREATE TABLE "AgentPlugin" (
|
|
73
|
+
"id" TEXT NOT NULL,
|
|
74
|
+
"agentId" TEXT NOT NULL,
|
|
75
|
+
"name" TEXT NOT NULL,
|
|
76
|
+
"version" TEXT,
|
|
77
|
+
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
78
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
79
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
80
|
+
|
|
81
|
+
CONSTRAINT "AgentPlugin_pkey" PRIMARY KEY ("id")
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
-- CreateIndex
|
|
85
|
+
CREATE UNIQUE INDEX "Agent_slackId_key" ON "Agent"("slackId");
|
|
86
|
+
|
|
87
|
+
-- CreateIndex
|
|
88
|
+
CREATE UNIQUE INDEX "AgentEnv_agentId_key_key" ON "AgentEnv"("agentId", "key");
|
|
89
|
+
|
|
90
|
+
-- CreateIndex
|
|
91
|
+
CREATE UNIQUE INDEX "AgentTool_agentId_pattern_key" ON "AgentTool"("agentId", "pattern");
|
|
92
|
+
|
|
93
|
+
-- CreateIndex
|
|
94
|
+
CREATE UNIQUE INDEX "AgentToken_token_key" ON "AgentToken"("token");
|
|
95
|
+
|
|
96
|
+
-- CreateIndex
|
|
97
|
+
CREATE UNIQUE INDEX "AgentPlugin_agentId_name_key" ON "AgentPlugin"("agentId", "name");
|
|
98
|
+
|
|
99
|
+
-- AddForeignKey
|
|
100
|
+
ALTER TABLE "AgentEnv" ADD CONSTRAINT "AgentEnv_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
101
|
+
|
|
102
|
+
-- AddForeignKey
|
|
103
|
+
ALTER TABLE "AgentCronJob" ADD CONSTRAINT "AgentCronJob_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
104
|
+
|
|
105
|
+
-- AddForeignKey
|
|
106
|
+
ALTER TABLE "AgentTool" ADD CONSTRAINT "AgentTool_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
107
|
+
|
|
108
|
+
-- AddForeignKey
|
|
109
|
+
ALTER TABLE "AgentToken" ADD CONSTRAINT "AgentToken_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
110
|
+
|
|
111
|
+
-- AddForeignKey
|
|
112
|
+
ALTER TABLE "AgentPlugin" ADD CONSTRAINT "AgentPlugin_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- CreateTable
|
|
2
|
+
CREATE TABLE "AgentMember" (
|
|
3
|
+
"id" TEXT NOT NULL,
|
|
4
|
+
"agentId" TEXT NOT NULL,
|
|
5
|
+
"email" TEXT NOT NULL,
|
|
6
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
7
|
+
|
|
8
|
+
CONSTRAINT "AgentMember_pkey" PRIMARY KEY ("id")
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
-- CreateIndex
|
|
12
|
+
CREATE INDEX "AgentMember_email_idx" ON "AgentMember"("email");
|
|
13
|
+
|
|
14
|
+
-- CreateIndex
|
|
15
|
+
CREATE UNIQUE INDEX "AgentMember_agentId_email_key" ON "AgentMember"("agentId", "email");
|
|
16
|
+
|
|
17
|
+
-- AddForeignKey
|
|
18
|
+
ALTER TABLE "AgentMember" ADD CONSTRAINT "AgentMember_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
-- CreateTable: AgentCronRun — execution history for AgentCronJob firings.
|
|
2
|
+
-- agentId is denormalized for efficient agent-level history queries.
|
|
3
|
+
|
|
4
|
+
CREATE TABLE "AgentCronRun" (
|
|
5
|
+
"id" TEXT NOT NULL,
|
|
6
|
+
"cronId" TEXT NOT NULL,
|
|
7
|
+
"agentId" TEXT NOT NULL,
|
|
8
|
+
"startedAt" TIMESTAMP(3) NOT NULL,
|
|
9
|
+
"completedAt" TIMESTAMP(3),
|
|
10
|
+
"skipped" BOOLEAN NOT NULL DEFAULT false,
|
|
11
|
+
"skipReason" TEXT,
|
|
12
|
+
"outcome" TEXT,
|
|
13
|
+
"error" TEXT,
|
|
14
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
15
|
+
|
|
16
|
+
CONSTRAINT "AgentCronRun_pkey" PRIMARY KEY ("id")
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
-- CreateIndex
|
|
20
|
+
CREATE INDEX "AgentCronRun_cronId_idx" ON "AgentCronRun"("cronId");
|
|
21
|
+
|
|
22
|
+
-- CreateIndex
|
|
23
|
+
CREATE INDEX "AgentCronRun_agentId_startedAt_idx" ON "AgentCronRun"("agentId", "startedAt");
|
|
24
|
+
|
|
25
|
+
-- AddForeignKey
|
|
26
|
+
ALTER TABLE "AgentCronRun" ADD CONSTRAINT "AgentCronRun_cronId_fkey" FOREIGN KEY ("cronId") REFERENCES "AgentCronJob"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- AddColumns: token tracking fields to AgentCronRun.
|
|
2
|
+
-- These fields allow the harness to record LLM token usage and cost per cron invocation.
|
|
3
|
+
-- All columns are nullable so existing rows are unaffected.
|
|
4
|
+
|
|
5
|
+
ALTER TABLE "AgentCronRun" ADD COLUMN "inputTokens" INTEGER;
|
|
6
|
+
ALTER TABLE "AgentCronRun" ADD COLUMN "outputTokens" INTEGER;
|
|
7
|
+
ALTER TABLE "AgentCronRun" ADD COLUMN "cacheReadTokens" INTEGER;
|
|
8
|
+
ALTER TABLE "AgentCronRun" ADD COLUMN "cacheCreationTokens" INTEGER;
|
|
9
|
+
ALTER TABLE "AgentCronRun" ADD COLUMN "costUsd" DOUBLE PRECISION;
|
|
10
|
+
ALTER TABLE "AgentCronRun" ADD COLUMN "model" TEXT;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- CreateTable
|
|
2
|
+
CREATE TABLE "AgentChatTokenUsageDaily" (
|
|
3
|
+
"id" TEXT NOT NULL,
|
|
4
|
+
"agentId" TEXT NOT NULL,
|
|
5
|
+
"date" TEXT NOT NULL,
|
|
6
|
+
"inputTokens" INTEGER NOT NULL DEFAULT 0,
|
|
7
|
+
"outputTokens" INTEGER NOT NULL DEFAULT 0,
|
|
8
|
+
"cacheReadTokens" INTEGER NOT NULL DEFAULT 0,
|
|
9
|
+
"cacheCreationTokens" INTEGER NOT NULL DEFAULT 0,
|
|
10
|
+
"costUsd" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
11
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
12
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
13
|
+
|
|
14
|
+
CONSTRAINT "AgentChatTokenUsageDaily_pkey" PRIMARY KEY ("id")
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
-- CreateIndex
|
|
18
|
+
CREATE UNIQUE INDEX "AgentChatTokenUsageDaily_agentId_date_key" ON "AgentChatTokenUsageDaily"("agentId", "date");
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
-- CreateTable
|
|
2
|
+
CREATE TABLE "Thread" (
|
|
3
|
+
"id" TEXT NOT NULL,
|
|
4
|
+
"agentId" TEXT NOT NULL,
|
|
5
|
+
"memberId" TEXT NOT NULL,
|
|
6
|
+
"title" TEXT NOT NULL,
|
|
7
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
8
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
9
|
+
|
|
10
|
+
CONSTRAINT "Thread_pkey" PRIMARY KEY ("id")
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
-- CreateTable
|
|
14
|
+
CREATE TABLE "Message" (
|
|
15
|
+
"id" TEXT NOT NULL,
|
|
16
|
+
"threadId" TEXT NOT NULL,
|
|
17
|
+
"role" TEXT NOT NULL,
|
|
18
|
+
"body" TEXT NOT NULL,
|
|
19
|
+
"tokens" TEXT,
|
|
20
|
+
"attachmentFilename" TEXT,
|
|
21
|
+
"attachmentSize" INTEGER,
|
|
22
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
23
|
+
|
|
24
|
+
CONSTRAINT "Message_pkey" PRIMARY KEY ("id")
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
-- CreateIndex
|
|
28
|
+
CREATE INDEX "Thread_agentId_memberId_updatedAt_idx" ON "Thread"("agentId", "memberId", "updatedAt" DESC);
|
|
29
|
+
|
|
30
|
+
-- CreateIndex
|
|
31
|
+
CREATE INDEX "Message_threadId_idx" ON "Message"("threadId");
|
|
32
|
+
|
|
33
|
+
-- AddForeignKey
|
|
34
|
+
ALTER TABLE "Thread" ADD CONSTRAINT "Thread_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
35
|
+
|
|
36
|
+
-- AddForeignKey
|
|
37
|
+
ALTER TABLE "Message" ADD CONSTRAINT "Message_threadId_fkey" FOREIGN KEY ("threadId") REFERENCES "Thread"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
-- DropForeignKey
|
|
2
|
+
ALTER TABLE "Message" DROP CONSTRAINT "Message_threadId_fkey";
|
|
3
|
+
|
|
4
|
+
-- DropForeignKey
|
|
5
|
+
ALTER TABLE "Thread" DROP CONSTRAINT "Thread_agentId_fkey";
|
|
6
|
+
|
|
7
|
+
-- DropIndex
|
|
8
|
+
DROP INDEX "Message_threadId_idx";
|
|
9
|
+
|
|
10
|
+
-- DropIndex
|
|
11
|
+
DROP INDEX "Thread_agentId_memberId_updatedAt_idx";
|
|
12
|
+
|
|
13
|
+
-- DropTable
|
|
14
|
+
DROP TABLE "Message";
|
|
15
|
+
|
|
16
|
+
-- DropTable
|
|
17
|
+
DROP TABLE "Thread";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
-- AddTable: AgentCronRunModelBreakdown
|
|
2
|
+
-- Stores per-model token breakdown for each cron run. Populated when sub-agents
|
|
3
|
+
-- use different models in a single run. The unique constraint on (cronRunId, model)
|
|
4
|
+
-- allows upsert semantics.
|
|
5
|
+
|
|
6
|
+
CREATE TABLE "AgentCronRunModelBreakdown" (
|
|
7
|
+
"id" TEXT NOT NULL,
|
|
8
|
+
"cronRunId" TEXT NOT NULL,
|
|
9
|
+
"model" TEXT NOT NULL,
|
|
10
|
+
"inputTokens" INTEGER NOT NULL DEFAULT 0,
|
|
11
|
+
"outputTokens" INTEGER NOT NULL DEFAULT 0,
|
|
12
|
+
"cacheReadTokens" INTEGER NOT NULL DEFAULT 0,
|
|
13
|
+
"cacheCreationTokens" INTEGER NOT NULL DEFAULT 0,
|
|
14
|
+
"costUsd" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
15
|
+
|
|
16
|
+
CONSTRAINT "AgentCronRunModelBreakdown_pkey" PRIMARY KEY ("id")
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
-- CreateIndex
|
|
20
|
+
CREATE UNIQUE INDEX "AgentCronRunModelBreakdown_cronRunId_model_key" ON "AgentCronRunModelBreakdown"("cronRunId", "model");
|
|
21
|
+
|
|
22
|
+
-- AddForeignKey
|
|
23
|
+
ALTER TABLE "AgentCronRunModelBreakdown" ADD CONSTRAINT "AgentCronRunModelBreakdown_cronRunId_fkey" FOREIGN KEY ("cronRunId") REFERENCES "AgentCronRun"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-- DropTable (old per-agent daily rollup — no backward compat needed)
|
|
2
|
+
DROP TABLE IF EXISTS "AgentChatTokenUsageDaily";
|
|
3
|
+
|
|
4
|
+
-- CreateTable (new per-model daily rollup)
|
|
5
|
+
CREATE TABLE "AgentChatTokenUsageDailyByModel" (
|
|
6
|
+
"id" TEXT NOT NULL,
|
|
7
|
+
"agentId" TEXT NOT NULL,
|
|
8
|
+
"date" TEXT NOT NULL,
|
|
9
|
+
"model" TEXT NOT NULL,
|
|
10
|
+
"inputTokens" INTEGER NOT NULL DEFAULT 0,
|
|
11
|
+
"outputTokens" INTEGER NOT NULL DEFAULT 0,
|
|
12
|
+
"cacheReadTokens" INTEGER NOT NULL DEFAULT 0,
|
|
13
|
+
"cacheCreationTokens" INTEGER NOT NULL DEFAULT 0,
|
|
14
|
+
"costUsd" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
15
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
16
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
17
|
+
|
|
18
|
+
CONSTRAINT "AgentChatTokenUsageDailyByModel_pkey" PRIMARY KEY ("id")
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
-- CreateIndex
|
|
22
|
+
CREATE UNIQUE INDEX "AgentChatTokenUsageDailyByModel_agentId_date_model_key" ON "AgentChatTokenUsageDailyByModel"("agentId", "date", "model");
|
|
23
|
+
|
|
24
|
+
-- AddForeignKey
|
|
25
|
+
ALTER TABLE "AgentChatTokenUsageDailyByModel" ADD CONSTRAINT "AgentChatTokenUsageDailyByModel_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
-- Migration: drop legacy model and costUsd columns from AgentCronRun.
|
|
2
|
+
-- MA-5: all new runs use AgentCronRunModelBreakdown; the fallback path is removed.
|
|
3
|
+
|
|
4
|
+
ALTER TABLE "AgentCronRun" DROP COLUMN IF EXISTS "model";
|
|
5
|
+
ALTER TABLE "AgentCronRun" DROP COLUMN IF EXISTS "costUsd";
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
-- Migration: consolidate cron-run token accounting onto AgentCronRunModelBreakdown.
|
|
2
|
+
-- CTT-2.1: AgentCronRunModelBreakdown becomes the sole source of truth for all
|
|
3
|
+
-- cron-run token aggregation. The per-run token columns on AgentCronRun are
|
|
4
|
+
-- dropped in favour of a single LEFT JOIN + SUM against the breakdown table.
|
|
5
|
+
--
|
|
6
|
+
-- Step 1: backfill a synthetic breakdown row for every AgentCronRun that carries
|
|
7
|
+
-- token data but has no breakdown row yet (i.e. pre-2026-07-01 runs whose usage
|
|
8
|
+
-- was recorded before AgentCronRunModelBreakdown existed). The real per-run model
|
|
9
|
+
-- name and costUsd for those runs were already dropped by migration
|
|
10
|
+
-- 20260701030000_drop_cron_run_legacy_columns before this table existed, so they
|
|
11
|
+
-- surface under the placeholder model 'legacy-unattributed' with cost $0. Token
|
|
12
|
+
-- counts were never dropped and are preserved verbatim by this backfill.
|
|
13
|
+
--
|
|
14
|
+
-- The synthetic id is 'legacy-' || r.id so the insert needs no id-generation
|
|
15
|
+
-- extension (e.g. pgcrypto/gen_random_uuid) — r.id is already unique, so the
|
|
16
|
+
-- prefixed value is unique too and collision-free with cuid()-generated ids.
|
|
17
|
+
INSERT INTO "AgentCronRunModelBreakdown" (
|
|
18
|
+
"id",
|
|
19
|
+
"cronRunId",
|
|
20
|
+
"model",
|
|
21
|
+
"inputTokens",
|
|
22
|
+
"outputTokens",
|
|
23
|
+
"cacheReadTokens",
|
|
24
|
+
"cacheCreationTokens",
|
|
25
|
+
"costUsd"
|
|
26
|
+
)
|
|
27
|
+
SELECT
|
|
28
|
+
'legacy-' || r."id",
|
|
29
|
+
r."id",
|
|
30
|
+
'legacy-unattributed',
|
|
31
|
+
COALESCE(r."inputTokens", 0),
|
|
32
|
+
COALESCE(r."outputTokens", 0),
|
|
33
|
+
COALESCE(r."cacheReadTokens", 0),
|
|
34
|
+
COALESCE(r."cacheCreationTokens", 0),
|
|
35
|
+
0
|
|
36
|
+
FROM "AgentCronRun" r
|
|
37
|
+
WHERE (
|
|
38
|
+
COALESCE(r."inputTokens", 0) <> 0
|
|
39
|
+
OR COALESCE(r."outputTokens", 0) <> 0
|
|
40
|
+
OR COALESCE(r."cacheReadTokens", 0) <> 0
|
|
41
|
+
OR COALESCE(r."cacheCreationTokens", 0) <> 0
|
|
42
|
+
)
|
|
43
|
+
AND NOT EXISTS (
|
|
44
|
+
SELECT 1
|
|
45
|
+
FROM "AgentCronRunModelBreakdown" b
|
|
46
|
+
WHERE b."cronRunId" = r."id"
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
-- Step 2: drop the now-redundant per-run token columns. All token aggregation
|
|
50
|
+
-- reads from AgentCronRunModelBreakdown from here on.
|
|
51
|
+
ALTER TABLE "AgentCronRun" DROP COLUMN IF EXISTS "inputTokens";
|
|
52
|
+
ALTER TABLE "AgentCronRun" DROP COLUMN IF EXISTS "outputTokens";
|
|
53
|
+
ALTER TABLE "AgentCronRun" DROP COLUMN IF EXISTS "cacheReadTokens";
|
|
54
|
+
ALTER TABLE "AgentCronRun" DROP COLUMN IF EXISTS "cacheCreationTokens";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
-- AlterTable: add nullable phase column to AgentCronRun
|
|
2
|
+
-- WL-3.4: the unified loop (shipwright-loop) runs many distinct one-shot
|
|
3
|
+
-- invocations per outer tick, each serving a different pipeline phase
|
|
4
|
+
-- (dev-task/review/patch/deploy), all reported under the single
|
|
5
|
+
-- shipwright-loop cronId. phase records which pipeline phase an individual
|
|
6
|
+
-- run served. Legacy five-job crons leave this column null (cronId itself
|
|
7
|
+
-- was the phase signal under that model).
|
|
8
|
+
ALTER TABLE "AgentCronRun" ADD COLUMN "phase" TEXT;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- AlterTable: add nullable itemType/itemId columns to AgentCronRun
|
|
2
|
+
-- WLS-2.2: the unified loop (shipwright-loop) dispatches a one-shot command
|
|
3
|
+
-- against a specific work item (a task id like "WLS-2.2" or a PR id like
|
|
4
|
+
-- "acme/x#123"). itemType ("task" | "pr") and itemId record which item a
|
|
5
|
+
-- given run was dispatched against, so the admin UI and metrics can spot an
|
|
6
|
+
-- agent spinning on the same item run after run. Both columns are nullable:
|
|
7
|
+
-- a tick with no dispatch (skipped tick, empty queue) leaves them null, and
|
|
8
|
+
-- pre-existing rows are left untouched (no backfill).
|
|
9
|
+
ALTER TABLE "AgentCronRun" ADD COLUMN "itemType" TEXT;
|
|
10
|
+
ALTER TABLE "AgentCronRun" ADD COLUMN "itemId" TEXT;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- CreateTable: AgentWorkQueueSnapshot — one row per agent, holding the
|
|
2
|
+
-- agent's most recently pushed work-queue snapshot. agentId is unique so
|
|
3
|
+
-- POST /agents/:id/work-queue can upsert a single row per agent.
|
|
4
|
+
|
|
5
|
+
-- CreateTable
|
|
6
|
+
CREATE TABLE "AgentWorkQueueSnapshot" (
|
|
7
|
+
"id" TEXT NOT NULL,
|
|
8
|
+
"agentId" TEXT NOT NULL,
|
|
9
|
+
"computedAt" TIMESTAMP(3) NOT NULL,
|
|
10
|
+
"items" JSONB NOT NULL,
|
|
11
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
12
|
+
|
|
13
|
+
CONSTRAINT "AgentWorkQueueSnapshot_pkey" PRIMARY KEY ("id")
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
-- CreateIndex
|
|
17
|
+
CREATE UNIQUE INDEX "AgentWorkQueueSnapshot_agentId_key" ON "AgentWorkQueueSnapshot"("agentId");
|
|
18
|
+
|
|
19
|
+
-- AddForeignKey
|
|
20
|
+
ALTER TABLE "AgentWorkQueueSnapshot" ADD CONSTRAINT "AgentWorkQueueSnapshot_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-- AlterTable: add nullable parentCronId self-relation on AgentCronJob and
|
|
2
|
+
-- nullable phaseId FK on AgentCronRun.
|
|
3
|
+
-- LPC-1.1: a parent cron can have child "phase" crons (e.g. dev-task/review/
|
|
4
|
+
-- patch/deploy phases of a single logical loop); AgentCronRun.phaseId points
|
|
5
|
+
-- at the specific phase cron a run was dispatched by. Both columns are
|
|
6
|
+
-- purely additive and unused until later tasks (LPC-1.2, LPC-1.3, LPC-2.1,
|
|
7
|
+
-- LPC-3.1) wire them up.
|
|
8
|
+
ALTER TABLE "AgentCronJob" ADD COLUMN "parentCronId" TEXT;
|
|
9
|
+
ALTER TABLE "AgentCronRun" ADD COLUMN "phaseId" TEXT;
|
|
10
|
+
|
|
11
|
+
-- CreateIndex
|
|
12
|
+
CREATE INDEX "AgentCronJob_parentCronId_idx" ON "AgentCronJob"("parentCronId");
|
|
13
|
+
|
|
14
|
+
-- CreateIndex
|
|
15
|
+
CREATE INDEX "AgentCronRun_phaseId_idx" ON "AgentCronRun"("phaseId");
|
|
16
|
+
|
|
17
|
+
-- AddForeignKey
|
|
18
|
+
-- Deleting a parent cron cascades to its phase children.
|
|
19
|
+
ALTER TABLE "AgentCronJob" ADD CONSTRAINT "AgentCronJob_parentCronId_fkey" FOREIGN KEY ("parentCronId") REFERENCES "AgentCronJob"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
20
|
+
|
|
21
|
+
-- AddForeignKey
|
|
22
|
+
-- SetNull (not Cascade): phaseId is a secondary/denormalized pointer to the
|
|
23
|
+
-- phase cron; deleting a phase cron should not delete run history for the
|
|
24
|
+
-- parent cron (cronId's own Cascade already owns that).
|
|
25
|
+
ALTER TABLE "AgentCronRun" ADD CONSTRAINT "AgentCronRun_phaseId_fkey" FOREIGN KEY ("phaseId") REFERENCES "AgentCronJob"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
-- Migration: drop the legacy AgentCronRun.phase string column.
|
|
2
|
+
-- LPC-3.1: phaseId (FK to AgentCronJob.id, added in LPC-1.1) is now the sole
|
|
3
|
+
-- phase-attribution field. The writer (loop-orchestrator) and reader
|
|
4
|
+
-- (cron-logs admin UI) have both been switched over to phaseId in the same
|
|
5
|
+
-- PR — atomic removal, no dual-write/dual-read period, per the plugin
|
|
6
|
+
-- constitution's breaking-change guidance for in-repo-only consumers.
|
|
7
|
+
|
|
8
|
+
ALTER TABLE "AgentCronRun" DROP COLUMN "phase";
|
package/prisma/migrations/20260901000000_add_push_subscription_and_chat_thread_watch/migration.sql
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
-- Web Push notifications for agent replies (CFB-4.2).
|
|
2
|
+
-- Two additive tables; no changes to existing tables.
|
|
3
|
+
|
|
4
|
+
-- CreateTable
|
|
5
|
+
CREATE TABLE "PushSubscription" (
|
|
6
|
+
"id" TEXT NOT NULL,
|
|
7
|
+
"userEmail" TEXT NOT NULL,
|
|
8
|
+
"endpoint" TEXT NOT NULL,
|
|
9
|
+
"p256dh" TEXT NOT NULL,
|
|
10
|
+
"auth" TEXT NOT NULL,
|
|
11
|
+
"detailOptIn" TEXT NOT NULL DEFAULT 'generic',
|
|
12
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
13
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
14
|
+
|
|
15
|
+
CONSTRAINT "PushSubscription_pkey" PRIMARY KEY ("id")
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
-- CreateTable
|
|
19
|
+
CREATE TABLE "ChatThreadWatch" (
|
|
20
|
+
"id" TEXT NOT NULL,
|
|
21
|
+
"userEmail" TEXT NOT NULL,
|
|
22
|
+
"threadId" TEXT NOT NULL,
|
|
23
|
+
"agentId" TEXT NOT NULL,
|
|
24
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
25
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
26
|
+
|
|
27
|
+
CONSTRAINT "ChatThreadWatch_pkey" PRIMARY KEY ("id")
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
-- CreateIndex
|
|
31
|
+
CREATE UNIQUE INDEX "PushSubscription_endpoint_key" ON "PushSubscription"("endpoint");
|
|
32
|
+
|
|
33
|
+
-- CreateIndex
|
|
34
|
+
CREATE INDEX "PushSubscription_userEmail_idx" ON "PushSubscription"("userEmail");
|
|
35
|
+
|
|
36
|
+
-- CreateIndex
|
|
37
|
+
CREATE INDEX "ChatThreadWatch_threadId_idx" ON "ChatThreadWatch"("threadId");
|
|
38
|
+
|
|
39
|
+
-- CreateIndex
|
|
40
|
+
CREATE UNIQUE INDEX "ChatThreadWatch_userEmail_threadId_key" ON "ChatThreadWatch"("userEmail", "threadId");
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- AddColumn: reviewAuthorAllowlist TEXT[] to Agent, then backfill from the
|
|
2
|
+
-- existing authorAllowlist column for every pre-existing row.
|
|
3
|
+
--
|
|
4
|
+
-- Unlike patchAuthorAllowlist (a brand-new, independent column added by the
|
|
5
|
+
-- sibling DBR-1.1 task with nothing to backfill), reviewAuthorAllowlist is a
|
|
6
|
+
-- rename-in-progress of the EXISTING authorAllowlist column: every row that
|
|
7
|
+
-- already has authorAllowlist values must carry them forward here too, not
|
|
8
|
+
-- just default to an empty array. The backfill runs inside this migration's
|
|
9
|
+
-- transaction, before the NOT NULL constraint is applied, so it's safe to
|
|
10
|
+
-- set NOT NULL directly (mirrors patchAuthorAllowlist's single-migration
|
|
11
|
+
-- approach rather than authorAllowlist's original two-migration
|
|
12
|
+
-- add-then-enforce-NOT-NULL pattern).
|
|
13
|
+
ALTER TABLE "Agent" ADD COLUMN "reviewAuthorAllowlist" TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[];
|
|
14
|
+
|
|
15
|
+
-- Backfill: copy every existing row's authorAllowlist value across so the
|
|
16
|
+
-- two columns start in sync. New rows created after this migration get both
|
|
17
|
+
-- columns written explicitly at the application layer (dual-write).
|
|
18
|
+
UPDATE "Agent" SET "reviewAuthorAllowlist" = "authorAllowlist";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
-- Migration: drop the legacy Agent.authorAllowlist column.
|
|
2
|
+
--
|
|
3
|
+
-- DBR-2.4 — the final "remove" step of the add-migrate-remove sequence that
|
|
4
|
+
-- renamed this column to reviewAuthorAllowlist:
|
|
5
|
+
-- DBR-2.1 added reviewAuthorAllowlist alongside authorAllowlist, backfilled
|
|
6
|
+
-- it from the existing column, and dual-wrote/dual-read both columns.
|
|
7
|
+
-- DBR-2.2 migrated the admin UI to write only reviewAuthorAllowlist.
|
|
8
|
+
-- DBR-2.3 migrated the agent's runtime config-sync read path onto
|
|
9
|
+
-- reviewAuthorAllowlist, falling back to authorAllowlist only if absent.
|
|
10
|
+
-- Both DBR-2.2 (PR #3094) and DBR-2.3 (PR #3115) are confirmed deployed and
|
|
11
|
+
-- live on main, so every reader/writer now uses reviewAuthorAllowlist
|
|
12
|
+
-- exclusively — the old column is dead weight. Data was already preserved in
|
|
13
|
+
-- reviewAuthorAllowlist by DBR-2.1's backfill; nothing further to migrate.
|
|
14
|
+
ALTER TABLE "Agent" DROP COLUMN "authorAllowlist";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
-- AAV-1.1: add a standalone index on AgentCronRun.startedAt.
|
|
2
|
+
--
|
|
3
|
+
-- The existing composite index on (agentId, startedAt) is optimized for
|
|
4
|
+
-- single-agent lookups (listForAgent/list), not a global "startedAt desc"
|
|
5
|
+
-- sort across a large `agentId IN (...)` set (listAcrossAgents). As the
|
|
6
|
+
-- agent fleet grows from <10 today toward ~250 within 3-6 months, a
|
|
7
|
+
-- fleet-wide cross-agent listing needs its own index to avoid a full table
|
|
8
|
+
-- scan/sort. Purely additive — no column changes.
|
|
9
|
+
|
|
10
|
+
-- CreateIndex
|
|
11
|
+
CREATE INDEX "AgentCronRun_startedAt_idx" ON "AgentCronRun"("startedAt");
|