@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,47 @@
|
|
|
1
|
+
-- Session follow/notification-prefs/alert-state models (SES-6.1).
|
|
2
|
+
-- Three additive tables; no changes to existing tables.
|
|
3
|
+
|
|
4
|
+
-- CreateTable
|
|
5
|
+
CREATE TABLE "SessionFollow" (
|
|
6
|
+
"id" TEXT NOT NULL,
|
|
7
|
+
"userEmail" TEXT NOT NULL,
|
|
8
|
+
"sessionSlug" TEXT NOT NULL,
|
|
9
|
+
"muted" BOOLEAN NOT NULL DEFAULT false,
|
|
10
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
11
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
12
|
+
|
|
13
|
+
CONSTRAINT "SessionFollow_pkey" PRIMARY KEY ("id")
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
-- CreateTable
|
|
17
|
+
CREATE TABLE "UserNotificationPrefs" (
|
|
18
|
+
"userEmail" TEXT NOT NULL,
|
|
19
|
+
"autoFollowSessions" BOOLEAN NOT NULL DEFAULT true,
|
|
20
|
+
"reminderHourLocal" INTEGER NOT NULL DEFAULT 9,
|
|
21
|
+
"autoFollowSince" TIMESTAMP(3),
|
|
22
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
23
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
24
|
+
|
|
25
|
+
CONSTRAINT "UserNotificationPrefs_pkey" PRIMARY KEY ("userEmail")
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
-- CreateTable
|
|
29
|
+
CREATE TABLE "SessionAlertState" (
|
|
30
|
+
"id" TEXT NOT NULL,
|
|
31
|
+
"userEmail" TEXT NOT NULL,
|
|
32
|
+
"sessionSlug" TEXT NOT NULL,
|
|
33
|
+
"lastAlertedAt" TIMESTAMP(3),
|
|
34
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
35
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
36
|
+
|
|
37
|
+
CONSTRAINT "SessionAlertState_pkey" PRIMARY KEY ("id")
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
-- CreateIndex
|
|
41
|
+
CREATE INDEX "SessionFollow_sessionSlug_idx" ON "SessionFollow"("sessionSlug");
|
|
42
|
+
|
|
43
|
+
-- CreateIndex
|
|
44
|
+
CREATE UNIQUE INDEX "SessionFollow_userEmail_sessionSlug_key" ON "SessionFollow"("userEmail", "sessionSlug");
|
|
45
|
+
|
|
46
|
+
-- CreateIndex
|
|
47
|
+
CREATE UNIQUE INDEX "SessionAlertState_userEmail_sessionSlug_key" ON "SessionAlertState"("userEmail", "sessionSlug");
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- Backfill the auto-follow opt-in boundary for pre-existing prefs rows.
|
|
2
|
+
--
|
|
3
|
+
-- `UserNotificationPrefs.autoFollowSessions` defaults to true and a row is
|
|
4
|
+
-- created just by loading the session settings page, so every row that existed
|
|
5
|
+
-- before session-alert-sweeper.ts shipped sits in the null ("no boundary")
|
|
6
|
+
-- cohort. Without this backfill the sweeper's first tick after deploy would
|
|
7
|
+
-- auto-follow every currently-waiting session for those users and immediately
|
|
8
|
+
-- push each one — the pre-existing-backlog burst the boundary exists to
|
|
9
|
+
-- prevent.
|
|
10
|
+
--
|
|
11
|
+
-- Data-only: no schema change. Stamping `now()` means "auto-follow starts
|
|
12
|
+
-- here", so only sessions that start waiting after the deploy are
|
|
13
|
+
-- auto-followed. Explicit follows are untouched.
|
|
14
|
+
UPDATE "UserNotificationPrefs"
|
|
15
|
+
SET "autoFollowSince" = CURRENT_TIMESTAMP
|
|
16
|
+
WHERE "autoFollowSince" IS NULL;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
-- AddColumn: trialExpiresAt, trialExpiryWarnedAt TIMESTAMP(3) to Agent (additive, nullable, no backfill)
|
|
2
|
+
-- ATE-1.1: trial expiry tracking. Both columns default to NULL — trialExpiresAt
|
|
3
|
+
-- is user-settable via PATCH /agents/:id; trialExpiryWarnedAt is written
|
|
4
|
+
-- internally by ATE-2.1's warning check.
|
|
5
|
+
ALTER TABLE "Agent" ADD COLUMN "trialExpiresAt" TIMESTAMP(3);
|
|
6
|
+
ALTER TABLE "Agent" ADD COLUMN "trialExpiryWarnedAt" TIMESTAMP(3);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-- PMC-1.1: per-phase subagent-type override table. Additive; no changes to
|
|
2
|
+
-- existing tables. `phase` is constrained to the six-value pipeline-phase
|
|
3
|
+
-- enum (prd | plan-session | review | patch | deploy | dev-task) at the
|
|
4
|
+
-- service/route layer (Zod), not here.
|
|
5
|
+
|
|
6
|
+
-- CreateTable
|
|
7
|
+
CREATE TABLE "AgentPhaseMethodology" (
|
|
8
|
+
"id" TEXT NOT NULL,
|
|
9
|
+
"agentId" TEXT NOT NULL,
|
|
10
|
+
"phase" TEXT NOT NULL,
|
|
11
|
+
"subagentType" TEXT,
|
|
12
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
13
|
+
|
|
14
|
+
CONSTRAINT "AgentPhaseMethodology_pkey" PRIMARY KEY ("id")
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
-- CreateIndex
|
|
18
|
+
CREATE UNIQUE INDEX "AgentPhaseMethodology_agentId_phase_key" ON "AgentPhaseMethodology"("agentId", "phase");
|
|
19
|
+
|
|
20
|
+
-- AddForeignKey
|
|
21
|
+
ALTER TABLE "AgentPhaseMethodology" ADD CONSTRAINT "AgentPhaseMethodology_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-- AddColumn: autoPostReviews, allowSelfReview, minConfidence, maxFindings,
|
|
2
|
+
-- cleanupMergedWorktrees, cleanupAfterDays to Agent (additive, NOT NULL with
|
|
3
|
+
-- defaults, no backfill UPDATE needed)
|
|
4
|
+
-- APM-1.1: DB mirrors of the 6 real fields currently living only in each
|
|
5
|
+
-- agent's own state/agent-policy.md. Every existing row gets the documented
|
|
6
|
+
-- default via the column default below; a separate standalone script
|
|
7
|
+
-- (agent/scripts/backfill-agent-policy.ts) later overwrites a given agent's
|
|
8
|
+
-- row with its file's real values, same as patchAuthorAllowlist's original
|
|
9
|
+
-- addition — a fresh column needs no in-migration backfill UPDATE.
|
|
10
|
+
ALTER TABLE "Agent" ADD COLUMN "autoPostReviews" BOOLEAN NOT NULL DEFAULT true;
|
|
11
|
+
ALTER TABLE "Agent" ADD COLUMN "allowSelfReview" BOOLEAN NOT NULL DEFAULT false;
|
|
12
|
+
ALTER TABLE "Agent" ADD COLUMN "minConfidence" INTEGER NOT NULL DEFAULT 75;
|
|
13
|
+
ALTER TABLE "Agent" ADD COLUMN "maxFindings" INTEGER NOT NULL DEFAULT 5;
|
|
14
|
+
ALTER TABLE "Agent" ADD COLUMN "cleanupMergedWorktrees" BOOLEAN NOT NULL DEFAULT true;
|
|
15
|
+
ALTER TABLE "Agent" ADD COLUMN "cleanupAfterDays" INTEGER NOT NULL DEFAULT 14;
|
package/prisma/migrations/20261005000000_add_agent_github_installations_snapshot/migration.sql
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-- CreateTable: AgentGitHubInstallationsSnapshot — one row per agent, holding
|
|
2
|
+
-- the agent's most recently reported GitHub App installations. agentId is
|
|
3
|
+
-- unique so PUT /agents/:id/github-installations can upsert a single row.
|
|
4
|
+
-- Additive only.
|
|
5
|
+
|
|
6
|
+
-- CreateTable
|
|
7
|
+
CREATE TABLE "AgentGitHubInstallationsSnapshot" (
|
|
8
|
+
"id" TEXT NOT NULL,
|
|
9
|
+
"agentId" TEXT NOT NULL,
|
|
10
|
+
"reportedAt" TIMESTAMP(3) NOT NULL,
|
|
11
|
+
"installations" JSONB NOT NULL,
|
|
12
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
13
|
+
|
|
14
|
+
CONSTRAINT "AgentGitHubInstallationsSnapshot_pkey" PRIMARY KEY ("id")
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
-- CreateIndex
|
|
18
|
+
CREATE UNIQUE INDEX "AgentGitHubInstallationsSnapshot_agentId_key" ON "AgentGitHubInstallationsSnapshot"("agentId");
|
|
19
|
+
|
|
20
|
+
-- AddForeignKey
|
|
21
|
+
ALTER TABLE "AgentGitHubInstallationsSnapshot" ADD CONSTRAINT "AgentGitHubInstallationsSnapshot_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
-- Run telemetry for the prompt-audit patrol (all additive, nullable):
|
|
2
|
+
-- * AgentCronRun gains the first-turn context baseline (the measured
|
|
3
|
+
-- always-loaded context per run), turn/tool-call counts, and the
|
|
4
|
+
-- always-loaded-context fingerprint + versions that group runs by what
|
|
5
|
+
-- the model was given.
|
|
6
|
+
-- * AgentCronRunSkillUsage holds per-skill / per-subagent token
|
|
7
|
+
-- attribution rows, one per [cronRunId, kind, name].
|
|
8
|
+
-- Older agent builds simply never set these; nothing is backfilled.
|
|
9
|
+
|
|
10
|
+
-- AlterTable
|
|
11
|
+
ALTER TABLE "AgentCronRun"
|
|
12
|
+
ADD COLUMN "baselineModel" TEXT,
|
|
13
|
+
ADD COLUMN "baselineContextTokens" INTEGER,
|
|
14
|
+
ADD COLUMN "baselineInputTokens" INTEGER,
|
|
15
|
+
ADD COLUMN "baselineCacheCreationTokens" INTEGER,
|
|
16
|
+
ADD COLUMN "baselineCacheReadTokens" INTEGER,
|
|
17
|
+
ADD COLUMN "turns" INTEGER,
|
|
18
|
+
ADD COLUMN "toolCalls" INTEGER,
|
|
19
|
+
ADD COLUMN "contextFingerprint" TEXT,
|
|
20
|
+
ADD COLUMN "pluginVersion" TEXT,
|
|
21
|
+
ADD COLUMN "claudeCodeVersion" TEXT;
|
|
22
|
+
|
|
23
|
+
-- CreateIndex
|
|
24
|
+
CREATE INDEX "AgentCronRun_contextFingerprint_idx" ON "AgentCronRun"("contextFingerprint");
|
|
25
|
+
|
|
26
|
+
-- CreateTable
|
|
27
|
+
CREATE TABLE "AgentCronRunSkillUsage" (
|
|
28
|
+
"id" TEXT NOT NULL,
|
|
29
|
+
"cronRunId" TEXT NOT NULL,
|
|
30
|
+
"kind" TEXT NOT NULL,
|
|
31
|
+
"name" TEXT NOT NULL,
|
|
32
|
+
"invocations" INTEGER NOT NULL DEFAULT 0,
|
|
33
|
+
"turns" INTEGER NOT NULL DEFAULT 0,
|
|
34
|
+
"inputTokens" INTEGER NOT NULL DEFAULT 0,
|
|
35
|
+
"outputTokens" INTEGER NOT NULL DEFAULT 0,
|
|
36
|
+
"cacheReadTokens" INTEGER NOT NULL DEFAULT 0,
|
|
37
|
+
"cacheCreationTokens" INTEGER NOT NULL DEFAULT 0,
|
|
38
|
+
"invokeContextDelta" INTEGER,
|
|
39
|
+
|
|
40
|
+
CONSTRAINT "AgentCronRunSkillUsage_pkey" PRIMARY KEY ("id")
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
-- CreateIndex
|
|
44
|
+
CREATE UNIQUE INDEX "AgentCronRunSkillUsage_cronRunId_kind_name_key" ON "AgentCronRunSkillUsage"("cronRunId", "kind", "name");
|
|
45
|
+
|
|
46
|
+
-- CreateIndex
|
|
47
|
+
CREATE INDEX "AgentCronRunSkillUsage_kind_name_idx" ON "AgentCronRunSkillUsage"("kind", "name");
|
|
48
|
+
|
|
49
|
+
-- AddForeignKey
|
|
50
|
+
ALTER TABLE "AgentCronRunSkillUsage" ADD CONSTRAINT "AgentCronRunSkillUsage_cronRunId_fkey" FOREIGN KEY ("cronRunId") REFERENCES "AgentCronRun"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
-- SSP-1.2: Account, AccountMember, AccountInvite + nullable Agent.accountId.
|
|
2
|
+
-- Additive only: existing Agent rows keep accountId = NULL.
|
|
3
|
+
CREATE TABLE "Account" (
|
|
4
|
+
"id" TEXT NOT NULL,
|
|
5
|
+
"name" TEXT NOT NULL,
|
|
6
|
+
"status" TEXT NOT NULL DEFAULT 'active',
|
|
7
|
+
"maxAgents" INTEGER NOT NULL DEFAULT 0,
|
|
8
|
+
"plan" TEXT,
|
|
9
|
+
"trialExpiresAt" TIMESTAMP(3),
|
|
10
|
+
"trialExpiryWarnedAt" TIMESTAMP(3),
|
|
11
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
12
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
13
|
+
|
|
14
|
+
CONSTRAINT "Account_pkey" PRIMARY KEY ("id")
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
CREATE TABLE "AccountMember" (
|
|
18
|
+
"id" TEXT NOT NULL,
|
|
19
|
+
"accountId" TEXT NOT NULL,
|
|
20
|
+
"email" TEXT NOT NULL,
|
|
21
|
+
"role" TEXT NOT NULL,
|
|
22
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
23
|
+
|
|
24
|
+
CONSTRAINT "AccountMember_pkey" PRIMARY KEY ("id")
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
CREATE TABLE "AccountInvite" (
|
|
28
|
+
"id" TEXT NOT NULL,
|
|
29
|
+
"accountId" TEXT NOT NULL,
|
|
30
|
+
"email" TEXT NOT NULL,
|
|
31
|
+
"invitedBy" TEXT NOT NULL,
|
|
32
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
33
|
+
"acceptedAt" TIMESTAMP(3),
|
|
34
|
+
|
|
35
|
+
CONSTRAINT "AccountInvite_pkey" PRIMARY KEY ("id")
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
ALTER TABLE "Agent" ADD COLUMN "accountId" TEXT;
|
|
39
|
+
|
|
40
|
+
CREATE UNIQUE INDEX "AccountMember_email_key" ON "AccountMember"("email");
|
|
41
|
+
CREATE UNIQUE INDEX "AccountMember_accountId_email_key" ON "AccountMember"("accountId", "email");
|
|
42
|
+
CREATE INDEX "AccountInvite_email_idx" ON "AccountInvite"("email");
|
|
43
|
+
CREATE UNIQUE INDEX "AccountInvite_accountId_email_key" ON "AccountInvite"("accountId", "email");
|
|
44
|
+
CREATE INDEX "Agent_accountId_idx" ON "Agent"("accountId");
|
|
45
|
+
|
|
46
|
+
ALTER TABLE "Agent" ADD CONSTRAINT "Agent_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "Account"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
47
|
+
ALTER TABLE "AccountMember" ADD CONSTRAINT "AccountMember_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "Account"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
48
|
+
ALTER TABLE "AccountInvite" ADD CONSTRAINT "AccountInvite_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "Account"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- Widen daily chat token counters to BIGINT: accumulated per-model daily sums
|
|
2
|
+
-- overflow INT4 (SQLSTATE 22003) — see Sentry VITALS-OS-5T.
|
|
3
|
+
ALTER TABLE "AgentChatTokenUsageDailyByModel"
|
|
4
|
+
ALTER COLUMN "inputTokens" TYPE BIGINT,
|
|
5
|
+
ALTER COLUMN "outputTokens" TYPE BIGINT,
|
|
6
|
+
ALTER COLUMN "cacheReadTokens" TYPE BIGINT,
|
|
7
|
+
ALTER COLUMN "cacheCreationTokens" TYPE BIGINT;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
-- PAI-1.1: owner and Anthropic identity columns on Agent (additive, nullable).
|
|
2
|
+
ALTER TABLE "Agent" ADD COLUMN "ownerEmail" TEXT;
|
|
3
|
+
ALTER TABLE "Agent" ADD COLUMN "anthropicIdentityName" TEXT;
|
|
4
|
+
ALTER TABLE "Agent" ADD COLUMN "anthropicServiceAccountId" TEXT;
|
|
5
|
+
ALTER TABLE "Agent" ADD COLUMN "anthropicFederationRuleId" TEXT;
|
|
6
|
+
ALTER TABLE "Agent" ADD COLUMN "k8sServiceAccountName" TEXT;
|
|
7
|
+
|
|
8
|
+
-- CreateIndex
|
|
9
|
+
CREATE UNIQUE INDEX "Agent_anthropicIdentityName_key" ON "Agent"("anthropicIdentityName");
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
-- COS-31.1: AgentAsk audit table for agent-to-agent asks (additive only).
|
|
2
|
+
-- CreateTable
|
|
3
|
+
CREATE TABLE "AgentAsk" (
|
|
4
|
+
"id" TEXT NOT NULL,
|
|
5
|
+
"fromAgentId" TEXT NOT NULL,
|
|
6
|
+
"toAgentId" TEXT NOT NULL,
|
|
7
|
+
"threadId" TEXT,
|
|
8
|
+
"depth" INTEGER NOT NULL,
|
|
9
|
+
"waitMs" INTEGER NOT NULL,
|
|
10
|
+
"ttlSeconds" INTEGER NOT NULL,
|
|
11
|
+
"status" TEXT NOT NULL,
|
|
12
|
+
"callerLabel" TEXT NOT NULL,
|
|
13
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
14
|
+
"repliedAt" TIMESTAMP(3),
|
|
15
|
+
|
|
16
|
+
CONSTRAINT "AgentAsk_pkey" PRIMARY KEY ("id")
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
-- CreateIndex
|
|
20
|
+
CREATE INDEX "AgentAsk_toAgentId_createdAt_idx" ON "AgentAsk"("toAgentId", "createdAt");
|
|
21
|
+
|
|
22
|
+
-- CreateIndex
|
|
23
|
+
CREATE INDEX "AgentAsk_fromAgentId_createdAt_idx" ON "AgentAsk"("fromAgentId", "createdAt");
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// Shipwright — Admin Service Schema: coding-owned models (AEP-3.4)
|
|
2
|
+
//
|
|
3
|
+
// Part of the admin Prisma multi-file schema (prisma/schema/). These models
|
|
4
|
+
// belong to the coding feature surface and are isolated here so the coding
|
|
5
|
+
// code can later be extracted. They share the single `db` datasource and
|
|
6
|
+
// generator declared in schema.prisma, so the generated client and the
|
|
7
|
+
// migrations are unchanged by this split.
|
|
8
|
+
//
|
|
9
|
+
// Coding-owned columns that live on the shared Agent model (schema.prisma)
|
|
10
|
+
// and are grouped/commented there: reviewAuthorAllowlist, patchAuthorAllowlist,
|
|
11
|
+
// autoPostReviews, allowSelfReview, minConfidence, maxFindings.
|
|
12
|
+
|
|
13
|
+
// ─── Agent Work Queue Snapshot ────────────────────────────────────────────────
|
|
14
|
+
// One row per agent, holding the agent's most recently pushed work-queue
|
|
15
|
+
// snapshot (its ranked view of pending tasks/PRs across pipeline phases).
|
|
16
|
+
// POST /agents/:id/work-queue upserts this single row, overwriting any prior
|
|
17
|
+
// snapshot — there is no history, only the latest state.
|
|
18
|
+
|
|
19
|
+
model AgentWorkQueueSnapshot {
|
|
20
|
+
id String @id @default(cuid())
|
|
21
|
+
agentId String @unique
|
|
22
|
+
agent Agent @relation(fields: [agentId], references: [id], onDelete: Cascade)
|
|
23
|
+
computedAt DateTime
|
|
24
|
+
items Json // RankedWorkItem[]
|
|
25
|
+
createdAt DateTime @default(now())
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// ─── Agent Phase Methodology ──────────────────────────────────────────────────
|
|
29
|
+
// Per-phase subagent-type override. Each row records which subagent type
|
|
30
|
+
// (e.g. a custom Specialty name) should handle one pipeline phase — prd,
|
|
31
|
+
// plan-session, review, patch, deploy, or dev-task — for a given agent,
|
|
32
|
+
// overriding that phase's default methodology. `subagentType` is nullable:
|
|
33
|
+
// a row with a null value (or the absence of a row) means "use the default".
|
|
34
|
+
// The `phase` value is constrained to the six-value enum at the service/route
|
|
35
|
+
// layer (Zod), not here — Postgres/Prisma has no native enum-column
|
|
36
|
+
// requirement in this schema style (mirrors AgentTool.pattern / AgentCronJob
|
|
37
|
+
// validation living at the service layer). The unique constraint on
|
|
38
|
+
// [agentId, phase] makes upsert-based writes idempotent (one override row per
|
|
39
|
+
// phase per agent), mirroring AgentTool's [agentId, pattern] and AgentPlugin's
|
|
40
|
+
// [agentId, name].
|
|
41
|
+
|
|
42
|
+
model AgentPhaseMethodology {
|
|
43
|
+
id String @id @default(cuid())
|
|
44
|
+
agentId String
|
|
45
|
+
agent Agent @relation(fields: [agentId], references: [id], onDelete: Cascade)
|
|
46
|
+
phase String
|
|
47
|
+
subagentType String?
|
|
48
|
+
updatedAt DateTime @updatedAt
|
|
49
|
+
|
|
50
|
+
@@unique([agentId, phase])
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// ─── Session Follow ───────────────────────────────────────────────────────────
|
|
54
|
+
// Records that a user is "following" a planning session (identified by its
|
|
55
|
+
// slug) so they can receive reminders/notifications about it. `muted` lets a
|
|
56
|
+
// user stay following (kept in listByUser) while suppressing alerts, distinct
|
|
57
|
+
// from unfollowing (row deleted entirely). The unique constraint on
|
|
58
|
+
// [userEmail, sessionSlug] makes follow() idempotent via upsert.
|
|
59
|
+
model SessionFollow {
|
|
60
|
+
id String @id @default(cuid())
|
|
61
|
+
userEmail String
|
|
62
|
+
sessionSlug String
|
|
63
|
+
muted Boolean @default(false)
|
|
64
|
+
createdAt DateTime @default(now())
|
|
65
|
+
updatedAt DateTime @updatedAt
|
|
66
|
+
|
|
67
|
+
@@unique([userEmail, sessionSlug])
|
|
68
|
+
@@index([sessionSlug])
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// ─── Session Alert State ─────────────────────────────────────────────────────
|
|
72
|
+
// Tracks the last time a user was alerted about a given session, so a
|
|
73
|
+
// reminder job can avoid re-alerting the same user/session pair within a
|
|
74
|
+
// cooldown window. The unique constraint on [userEmail, sessionSlug] allows
|
|
75
|
+
// upsert semantics (one state row per user per session).
|
|
76
|
+
model SessionAlertState {
|
|
77
|
+
id String @id @default(cuid())
|
|
78
|
+
userEmail String
|
|
79
|
+
sessionSlug String
|
|
80
|
+
lastAlertedAt DateTime?
|
|
81
|
+
createdAt DateTime @default(now())
|
|
82
|
+
updatedAt DateTime @updatedAt
|
|
83
|
+
|
|
84
|
+
@@unique([userEmail, sessionSlug])
|
|
85
|
+
}
|