thinkwork-cli 0.12.12 → 0.12.16
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/README.md +42 -38
- package/dist/{api-client-ASJWIG3Z.js → api-client-JUBCQQDF.js} +1 -1
- package/dist/{chunk-JEHV35EU.js → chunk-STY44FQO.js} +353 -30
- package/dist/cli.js +23823 -10151
- package/dist/commands/enterprise/templates/deploy-repo/.github/workflows/deploy.yml +17 -6
- package/dist/commands/enterprise/templates/deploy-repo/docs/runbook.md +81 -9
- package/dist/commands/enterprise/templates/deploy-repo/scripts/apply-release.mjs +183 -21
- package/dist/commands/enterprise/templates/deploy-repo/scripts/smoke.mjs +1 -2
- package/dist/commands/enterprise/templates/deploy-repo/terraform/main.tf +286 -0
- package/dist/drizzle/0000_petite_marvel_apes.sql +1188 -0
- package/dist/drizzle/0001_milky_surge.sql +103 -0
- package/dist/drizzle/0002_aberrant_mattie_franklin.sql +41 -0
- package/dist/drizzle/0003_exotic_ogun.sql +3 -0
- package/dist/drizzle/0004_glamorous_magneto.sql +2 -0
- package/dist/drizzle/0005_ancient_nocturne.sql +2 -0
- package/dist/drizzle/0006_new_colonel_america.sql +2 -0
- package/dist/drizzle/0007_unique_external_task_id.sql +31 -0
- package/dist/drizzle/0008_external_task_id_column.sql +43 -0
- package/dist/drizzle/0009_evaluations.sql +64 -0
- package/dist/drizzle/0010_eval_agent_template.sql +2 -0
- package/dist/drizzle/0011_eval_run_template.sql +2 -0
- package/dist/drizzle/0012_eval_seed_unique.sql +16 -0
- package/dist/drizzle/0013_motionless_white_queen.sql +140 -0
- package/dist/drizzle/0014_wiki_aggregation.sql +11 -0
- package/dist/drizzle/0015_pg_trgm_alias_title_indexes.sql +9 -0
- package/dist/drizzle/0016_wiki_schema_drops.sql +24 -0
- package/dist/drizzle/0017_wiki_places.sql +46 -0
- package/dist/drizzle/0018_agent_workspace_overlay.sql +26 -0
- package/dist/drizzle/0018_cool_firebird.sql +24 -0
- package/dist/drizzle/0018_skill_runs.sql +84 -0
- package/dist/drizzle/0019_condemned_dragon_man.sql +95 -0
- package/dist/drizzle/0019_webhook_skill_runs.sql +58 -0
- package/dist/drizzle/0020_crazy_the_anarchist.sql +9 -0
- package/dist/drizzle/0020_mutation_idempotency.sql +64 -0
- package/dist/drizzle/0021_crm_work_links.sql +76 -0
- package/dist/drizzle/0021_skill_runs_completion_hmac.sql +33 -0
- package/dist/drizzle/0022_add_billing_tables.sql +70 -0
- package/dist/drizzle/0022_seed_thinkwork_admin_permissions.sql +160 -0
- package/dist/drizzle/0022_stripe_billing_indexes.sql +48 -0
- package/dist/drizzle/0023_tenants_deactivation.sql +27 -0
- package/dist/drizzle/0024_tenant_mcp_admin_keys.sql +63 -0
- package/dist/drizzle/0025_v1_agent_architecture.sql +182 -0
- package/dist/drizzle/0026_thread_turns_add_kind.sql +28 -0
- package/dist/drizzle/0027_capability_catalog_and_manifests.sql +219 -0
- package/dist/drizzle/0028_aws_s3_extension.sql +26 -0
- package/dist/drizzle/0029_collapse_execution_types.sql +42 -0
- package/dist/drizzle/0030_retire_composition_primitives.sql +48 -0
- package/dist/drizzle/0031_thread_cleanup_drops.sql +131 -0
- package/dist/drizzle/0032_add_browser_automation_template_config.sql +24 -0
- package/dist/drizzle/0033_agent_operation_leases.sql +32 -0
- package/dist/drizzle/0034_agent_workspace_events.sql +116 -0
- package/dist/drizzle/0035_workspace_review_decisions.sql +19 -0
- package/dist/drizzle/0036_user_scoped_memory_wiki.sql +152 -0
- package/dist/drizzle/0037_user_profile_operating_model.sql +34 -0
- package/dist/drizzle/0042_agent_runtime_selector.sql +41 -0
- package/dist/drizzle/0043_wiki_search_tsv_tokenization.sql +48 -0
- package/dist/drizzle/0044_add_web_search_template_config.sql +7 -0
- package/dist/drizzle/0045_add_send_email_template_config.sql +7 -0
- package/dist/drizzle/0046_tenant_mcp_context_tools.sql +26 -0
- package/dist/drizzle/0047_add_context_engine_template_config.sql +7 -0
- package/dist/drizzle/0048_tenant_context_provider_settings.sql +22 -0
- package/dist/drizzle/0050_brain_v0_entity_subtype.sql +29 -0
- package/dist/drizzle/0051_brain_v0_tenant_entity_pages.sql +170 -0
- package/dist/drizzle/0052_brain_v0_external_refs.sql +41 -0
- package/dist/drizzle/0053_brain_v0_unresolved_mentions_subtype.sql +48 -0
- package/dist/drizzle/0054_wiki_compile_jobs_input.sql +28 -0
- package/dist/drizzle/0055_routines_stepfunctions_substrate.sql +202 -0
- package/dist/drizzle/0056_routine_step_events_dedup_idx.sql +25 -0
- package/dist/drizzle/0057_archive_legacy_python_routines.sql +36 -0
- package/dist/drizzle/0058_routines_visibility_and_owning_agent.sql +61 -0
- package/dist/drizzle/0061_routine_execution_asl_version_id.sql +29 -0
- package/dist/drizzle/0062_migrate_pi_to_flue.sql +110 -0
- package/dist/drizzle/0063_threads_session_data.sql +23 -0
- package/dist/drizzle/0064_tenant_credentials.sql +65 -0
- package/dist/drizzle/0067_thinkwork_computers_phase_one.sql +174 -0
- package/dist/drizzle/0068_drop_system_workflows_and_activation.sql +115 -0
- package/dist/drizzle/0069_compliance_schema.sql +364 -0
- package/dist/drizzle/0070_compliance_aurora_roles.sql +171 -0
- package/dist/drizzle/0072_threads_computer_ownership.sql +24 -0
- package/dist/drizzle/0073_compliance_tenant_anchor_state.sql +105 -0
- package/dist/drizzle/0074_compliance_event_hash_index.sql +49 -0
- package/dist/drizzle/0075_scheduled_jobs_computer_ownership.sql +27 -0
- package/dist/drizzle/0076_scheduled_jobs_marco_backfill.sql +69 -0
- package/dist/drizzle/0077_computers_primary_agent_id.sql +38 -0
- package/dist/drizzle/0078_tenant_customize_catalog.sql +46 -0
- package/dist/drizzle/0079_seed_tenant_customize_catalog.sql +53 -0
- package/dist/drizzle/0081_routines_catalog_slug.sql +42 -0
- package/dist/drizzle/0082_messages_parts_jsonb.sql +52 -0
- package/dist/drizzle/0083_computer_runbooks.sql +103 -0
- package/dist/drizzle/0084_artifacts_favorited_at.sql +32 -0
- package/dist/drizzle/0085_seed_thinkwork_computer_default_template.sql +46 -0
- package/dist/drizzle/0086_update_default_template_models.sql +19 -0
- package/dist/drizzle/0087_retire_oss_connectors.sql +77 -0
- package/dist/drizzle/0088_compliance_event_types_finance_pilot.sql +37 -0
- package/dist/drizzle/0089_remove_maniflow_eval_seeds.sql +81 -0
- package/dist/drizzle/0089_wiki_schema_extraction.sql +315 -0
- package/dist/drizzle/0090_brain_schema_extraction.sql +274 -0
- package/dist/drizzle/0091_drop_wiki_brain_compat_views.sql +118 -0
- package/dist/drizzle/0092_finish_oss_connector_retirement.sql +97 -0
- package/dist/drizzle/0093_eval_runs_scheduled_job_id.sql +23 -0
- package/dist/drizzle/0094_slack_workspace_app.sql +140 -0
- package/dist/drizzle/0095_eval_runs_computer_id.sql +22 -0
- package/dist/drizzle/0096_true_redteam_eval_seed_cleanup.sql +67 -0
- package/dist/drizzle/0097_shared_computers.sql +191 -0
- package/dist/drizzle/0098_business_ontology.sql +587 -0
- package/dist/drizzle/0099_thread_idle_learning.sql +145 -0
- package/dist/drizzle/0100_ontology_gated_brain_dynamic_subtypes.sql +7 -0
- package/dist/drizzle/0101_ontology_gated_unresolved_mentions_dynamic_subtypes.sql +7 -0
- package/dist/drizzle/0102_wiki_brain_owner_repair.sql +87 -0
- package/dist/drizzle/0103_brain_section_source_trigger_repair.sql +75 -0
- package/dist/drizzle/0104_expand_seed_ontology_for_user_memory.sql +166 -0
- package/dist/drizzle/0105_spaces_domain.sql +349 -0
- package/dist/drizzle/0106_expand_seed_ontology_for_triples.sql +173 -0
- package/dist/drizzle/0106_space_threads_participants.sql +197 -0
- package/dist/drizzle/0107_linked_task_mirror.sql +245 -0
- package/dist/drizzle/0108_message_mentions.sql +95 -0
- package/dist/drizzle/0109_space_owned_threads.sql +217 -0
- package/dist/drizzle/0110_thread_participant_read_state.sql +21 -0
- package/dist/drizzle/0111_agents_tenant_name_unique.sql +38 -0
- package/dist/drizzle/0112_recast_spaces_as_contextual_workrooms.sql +138 -0
- package/dist/drizzle/0113_agents_own_runtime_fields.sql +48 -0
- package/dist/drizzle/0114_migrate_templates_to_agents_and_spaces.sql +361 -0
- package/dist/drizzle/0115_remove_computer_eval_template_dependencies.sql +69 -0
- package/dist/drizzle/0116_backfill_thread_participants_access.sql +126 -0
- package/dist/drizzle/0117_space_access_mode.sql +40 -0
- package/dist/drizzle/0118_normalize_tenant_member_principal_type.sql +41 -0
- package/dist/drizzle/0119_space_knowledge_bases.sql +126 -0
- package/dist/drizzle/0120_space_automations.sql +58 -0
- package/dist/drizzle/0121_drop_computer_runbooks.sql +26 -0
- package/dist/drizzle/0122_space_email_triggers.sql +24 -0
- package/dist/drizzle/0123_single_platform_agent_and_overrides.sql +58 -0
- package/dist/drizzle/0124_thread_turns_finalized_at.sql +17 -0
- package/dist/drizzle/0125_drop_space_agent_assignments.sql +42 -0
- package/dist/drizzle/0126_migrate_flue_to_pi.sql +42 -0
- package/dist/drizzle/0127_runtime_type_observability.sql +28 -0
- package/dist/drizzle/0128_drop_eval_test_cases_agent_id.sql +37 -0
- package/dist/drizzle/0129_drop_code_factory_tables.sql +43 -0
- package/dist/drizzle/0129_eval_results_system_prompt.sql +30 -0
- package/dist/drizzle/0130_drop_teams_and_team_id_columns.sql +54 -0
- package/dist/drizzle/0131_drop_skill_catalog_and_tenant_skills.sql +33 -0
- package/dist/drizzle/0132_drop_computer_tables.sql +31 -0
- package/dist/drizzle/0133_drop_seed_view_tombstones.sql +79 -0
- package/dist/drizzle/0133_thread_turns_system_prompt.sql +22 -0
- package/dist/drizzle/0134_drop_dead_agent_runtime_tables.sql +53 -0
- package/dist/drizzle/0135_native_checklist_linked_tasks.sql +48 -0
- package/dist/drizzle/0136_goal_ledger.sql +55 -0
- package/dist/drizzle/0136_space_email_trigger_status.sql +66 -0
- package/dist/drizzle/0137_thread_participant_pins.sql +25 -0
- package/dist/drizzle/0138_users_cognito_sub.sql +30 -0
- package/dist/drizzle/0139_mobile_turn_client_id.sql +23 -0
- package/dist/drizzle/0140_workspace_folder_names.sql +36 -0
- package/dist/drizzle/0141_eval_runs_desktop_pi_provenance.sql +31 -0
- package/dist/drizzle/0142_pi_only_agent_runtime.sql +61 -0
- package/dist/drizzle/0143_add_web_extract_builtin_config.sql +28 -0
- package/dist/drizzle/0144_skill_catalog_index.sql +40 -0
- package/dist/drizzle/0145_knowledge_graph_thread_ingest.sql +512 -0
- package/dist/drizzle/0146_knowledge_graph_source_scope.sql +413 -0
- package/dist/drizzle/0147_knowledge_graph_scope_trigger_qualification.sql +211 -0
- package/dist/drizzle/0148_user_cost_attribution.sql +171 -0
- package/dist/drizzle/0149_managed_mcp_servers.sql +64 -0
- package/dist/drizzle/0149_user_model_approvals.sql +89 -0
- package/dist/drizzle/0150_bootstrap_first_admin_claim.sql +11 -0
- package/dist/drizzle/0151_managed_deployments.sql +91 -0
- package/dist/drizzle/0152_agent_profiles.sql +81 -0
- package/dist/drizzle/0153_message_mentions_agent_profile.sql +9 -0
- package/dist/drizzle/0154_customer_deployment_sessions.sql +61 -0
- package/dist/drizzle/0155_tenant_model_catalog.sql +152 -0
- package/dist/drizzle/0156_bootstrap_credential_leases.sql +52 -0
- package/dist/drizzle/0157_knowledge_graph_observations_source.sql +79 -0
- package/dist/drizzle/0158_pending_user_questions.sql +80 -0
- package/dist/drizzle/0158_wiki_tenant_scope.sql +38 -0
- package/dist/drizzle/0159_agent_profiles_space_local.sql +49 -0
- package/dist/drizzle/0159_application_plugins.sql +193 -0
- package/dist/drizzle/0159_eval_scoring_version.sql +46 -0
- package/dist/drizzle/0160_compliance_event_types_plugins.sql +37 -0
- package/dist/drizzle/0160_eval_datasets.sql +75 -0
- package/dist/drizzle/0160_eval_results_thread_turn.sql +35 -0
- package/dist/drizzle/0161_eval_run_pinning.sql +54 -0
- package/dist/drizzle/0161_tenant_mcp_servers_plugin_source.sql +62 -0
- package/dist/drizzle/0162_eval_result_override.sql +49 -0
- package/dist/drizzle/0163_eval_replay_tool_allowlist.sql +50 -0
- package/dist/drizzle/0164_eval_replay_tool_override_mode.sql +52 -0
- package/dist/drizzle/0165_plugin_premium_entitlements.sql +153 -0
- package/dist/drizzle/0166_company_brain_substrate_contract.sql +386 -0
- package/dist/drizzle/0167_company_brain_artifact_manifest_runtime.sql +85 -0
- package/dist/drizzle/0168_eval_skill_gate.sql +44 -0
- package/dist/drizzle/0169_release_update_jobs.sql +67 -0
- package/dist/drizzle/0170_email_channel_plugin.sql +291 -0
- package/dist/drizzle/0171_linked_task_external_providers.sql +30 -0
- package/dist/drizzle/0172_email_channel_sendgrid_provider.sql +8 -0
- package/dist/drizzle/0173_auth_provider_resources.sql +83 -0
- package/dist/drizzle/0174_workos_auth_bridges.sql +37 -0
- package/dist/drizzle/0175_workos_auth_sessions.sql +38 -0
- package/dist/drizzle/0176_n8n_agent_step_runs.sql +107 -0
- package/dist/drizzle/0177_workflow_control_plane.sql +281 -0
- package/dist/drizzle/0178_workflow_backfill_existing_routines.sql +525 -0
- package/dist/drizzle/0179_tenant_goal_budget_settings.sql +21 -0
- package/dist/drizzle/0180_skill_drafts.sql +89 -0
- package/dist/drizzle/0181_skill_draft_publish_status.sql +21 -0
- package/dist/drizzle/0182_agent_loops.sql +260 -0
- package/dist/drizzle/0183_okf_artifact_manifests.sql +52 -0
- package/dist/drizzle/0184_skill_catalog_trust_cache.sql +35 -0
- package/dist/drizzle/0185_agent_loop_space.sql +16 -0
- package/dist/drizzle/0186_tenant_mcp_runtime_metadata.sql +10 -0
- package/dist/drizzle/0187_native_work_items.sql +220 -0
- package/dist/drizzle/0188_company_etl_plugin_rename.sql +99 -0
- package/dist/drizzle/0189_trace_cost_substrate.sql +247 -0
- package/dist/drizzle/0190_billing_export_reconciliation.sql +101 -0
- package/dist/drizzle/0191_open_engine_work_item_queue.sql +66 -0
- package/dist/drizzle/0192_work_item_labels.sql +44 -0
- package/dist/drizzle/0193_work_item_documents.sql +31 -0
- package/dist/drizzle/0194_memory_retain_attempts.sql +103 -0
- package/dist/drizzle/0194_work_item_comments.sql +35 -0
- package/dist/drizzle/0195_plugin_app_overlays.sql +45 -0
- package/dist/drizzle/0196_pi_extensions.sql +118 -0
- package/dist/drizzle/0197_eval_profiles.sql +150 -0
- package/dist/drizzle/0197_rcm_context_columns.sql +28 -0
- package/dist/drizzle/0198_eval_runs_unstable.sql +27 -0
- package/dist/drizzle/0199_eval_runs_cost_partial.sql +27 -0
- package/dist/drizzle/meta/_journal.json +160 -0
- package/dist/plugins/README.md +162 -0
- package/dist/plugins/catalog/package.json +40 -0
- package/dist/plugins/catalog/scripts/build-catalog.ts +120 -0
- package/dist/plugins/catalog/scripts/generate-plugin-registry.ts +144 -0
- package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +86 -0
- package/dist/plugins/catalog/src/__tests__/catalog.test.ts +308 -0
- package/dist/plugins/catalog/src/__tests__/contracts.test.ts +861 -0
- package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +124 -0
- package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +120 -0
- package/dist/plugins/catalog/src/catalog.ts +434 -0
- package/dist/plugins/catalog/src/contracts.ts +1498 -0
- package/dist/plugins/catalog/src/index.ts +4 -0
- package/dist/plugins/catalog/src/plugin-package.ts +171 -0
- package/dist/plugins/catalog/src/registry/generated-first-party.ts +76 -0
- package/dist/plugins/catalog/src/registry/index.ts +1 -0
- package/dist/plugins/catalog/tsconfig.json +8 -0
- package/dist/plugins/company-brain/README.md +37 -0
- package/dist/plugins/company-brain/package.json +33 -0
- package/dist/plugins/company-brain/runtime/cognee/Dockerfile +11 -0
- package/dist/plugins/company-brain/smoke/cognee-managed-app-smoke.mjs +458 -0
- package/dist/plugins/company-brain/smoke/cognee-memory-cutover-smoke.mjs +539 -0
- package/dist/plugins/company-brain/smoke/company-brain-context-engine-smoke.mjs +312 -0
- package/dist/plugins/company-brain/smoke/company-brain-operations-smoke.mjs +449 -0
- package/dist/plugins/company-brain/smoke/company-brain-plugin-smoke.mjs +655 -0
- package/dist/plugins/company-brain/smoke/hindsight-memory-isolation-smoke.mjs +474 -0
- package/dist/plugins/company-brain/src/api/cognee-client.ts +896 -0
- package/dist/plugins/company-brain/src/api/cognee-cluster-identity.ts +49 -0
- package/dist/plugins/company-brain/src/api/cognee-memory-scope.ts +84 -0
- package/dist/plugins/company-brain/src/api/context-engine-provider.ts +888 -0
- package/dist/plugins/company-brain/src/api/migration.ts +665 -0
- package/dist/plugins/company-brain/src/deployment/cognee-managed-app.ts +396 -0
- package/dist/plugins/company-brain/src/index.ts +62 -0
- package/dist/plugins/company-brain/src/manifest.ts +112 -0
- package/dist/plugins/company-brain/terraform/cognee/README.md +263 -0
- package/dist/plugins/company-brain/terraform/cognee/main.tf +766 -0
- package/dist/plugins/company-brain/terraform/cognee/outputs.tf +144 -0
- package/dist/plugins/company-brain/terraform/cognee/variables.tf +402 -0
- package/dist/plugins/company-brain/test/api/cognee-client.test.ts +562 -0
- package/dist/plugins/company-brain/test/api/cognee-memory-scope.test.ts +74 -0
- package/dist/plugins/company-brain/test/api/context-engine-provider.test.ts +447 -0
- package/dist/plugins/company-brain/test/api/migration.test.ts +465 -0
- package/dist/plugins/company-brain/test/manifest.test.ts +95 -0
- package/dist/plugins/company-brain/tsconfig.json +8 -0
- package/dist/plugins/company-data/README.md +49 -0
- package/dist/plugins/company-data/package.json +21 -0
- package/dist/plugins/company-data/src/index.ts +30 -0
- package/dist/plugins/company-data/src/manifest.ts +26 -0
- package/dist/plugins/company-data/test/manifest.test.ts +116 -0
- package/dist/plugins/company-data/tsconfig.json +8 -0
- package/dist/plugins/company-etl/README.md +46 -0
- package/dist/plugins/company-etl/package.json +21 -0
- package/dist/plugins/company-etl/src/index.ts +29 -0
- package/dist/plugins/company-etl/src/manifest.ts +26 -0
- package/dist/plugins/company-etl/test/manifest.test.ts +108 -0
- package/dist/plugins/company-etl/tsconfig.json +8 -0
- package/dist/plugins/email-channel/README.md +41 -0
- package/dist/plugins/email-channel/package.json +22 -0
- package/dist/plugins/email-channel/src/index.ts +36 -0
- package/dist/plugins/email-channel/src/manifest.ts +44 -0
- package/dist/plugins/email-channel/src/provider-contract.ts +36 -0
- package/dist/plugins/email-channel/test/manifest.test.ts +119 -0
- package/dist/plugins/email-channel/tsconfig.json +8 -0
- package/dist/plugins/lastmile/README.md +50 -0
- package/dist/plugins/lastmile/package.json +23 -0
- package/dist/plugins/lastmile/smoke/lastmile-plugin-smoke.mjs +661 -0
- package/dist/plugins/lastmile/src/api/tasks-adapter.ts +572 -0
- package/dist/plugins/lastmile/src/discovery.fixture.ts +64 -0
- package/dist/plugins/lastmile/src/index.ts +46 -0
- package/dist/plugins/lastmile/src/manifest.ts +139 -0
- package/dist/plugins/lastmile/test/api/tasks-adapter.test.ts +266 -0
- package/dist/plugins/lastmile/test/discovery.test.ts +88 -0
- package/dist/plugins/lastmile/tsconfig.json +8 -0
- package/dist/plugins/n8n/README.md +201 -0
- package/dist/plugins/n8n/n8n-app/README.md +33 -0
- package/dist/plugins/n8n/n8n-app/package.json +23 -0
- package/dist/plugins/n8n/n8n-app/src/application-config.ts +45 -0
- package/dist/plugins/n8n/n8n-app/src/front-components/thinkwork-workflows.front-component.tsx +970 -0
- package/dist/plugins/n8n/n8n-app/src/lib/n8n-app-data.ts +190 -0
- package/dist/plugins/n8n/n8n-app/src/vite-env.d.ts +7 -0
- package/dist/plugins/n8n/n8n-app/tsconfig.json +15 -0
- package/dist/plugins/n8n/package.json +35 -0
- package/dist/plugins/n8n/runtime/Dockerfile +18 -0
- package/dist/plugins/n8n/runtime/n8n-task-runners.json +14 -0
- package/dist/plugins/n8n/runtime/n8n-task-runners.json.template +14 -0
- package/dist/plugins/n8n/runtime/package-lock.json +13 -0
- package/dist/plugins/n8n/runtime/package.json +7 -0
- package/dist/plugins/n8n/scripts/sync-thinkwork-app.mjs +268 -0
- package/dist/plugins/n8n/smoke/README.md +95 -0
- package/dist/plugins/n8n/smoke/n8n-agent-step-bridge-smoke.mjs +866 -0
- package/dist/plugins/n8n/smoke/n8n-integrated-app-smoke.mjs +262 -0
- package/dist/plugins/n8n/smoke/n8n-managed-app-smoke.mjs +409 -0
- package/dist/plugins/n8n/smoke/n8n-mcp-smoke.mjs +624 -0
- package/dist/plugins/n8n/src/deployment/image-build.ts +172 -0
- package/dist/plugins/n8n/src/deployment/managed-app.ts +429 -0
- package/dist/plugins/n8n/src/index.ts +79 -0
- package/dist/plugins/n8n/src/manifest.ts +403 -0
- package/dist/plugins/n8n/src/package-config.ts +186 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/SKILL.md +76 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/mcp-tooling.md +40 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/validation-and-handoff.md +40 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/workflow-authoring.md +45 -0
- package/dist/plugins/n8n/terraform/n8n/README.md +113 -0
- package/dist/plugins/n8n/terraform/n8n/main.tf +918 -0
- package/dist/plugins/n8n/terraform/n8n/outputs.tf +124 -0
- package/dist/plugins/n8n/terraform/n8n/scripts/sync-database.py +250 -0
- package/dist/plugins/n8n/terraform/n8n/scripts/test_sync_database.py +55 -0
- package/dist/plugins/n8n/terraform/n8n/variables.tf +354 -0
- package/dist/plugins/n8n/test/image-build.test.ts +118 -0
- package/dist/plugins/n8n/test/integrated-app-contract.test.ts +353 -0
- package/dist/plugins/n8n/test/manifest.test.ts +278 -0
- package/dist/plugins/n8n/test/package-config.test.ts +57 -0
- package/dist/plugins/n8n/tsconfig.json +8 -0
- package/dist/plugins/sendgrid/README.md +30 -0
- package/dist/plugins/sendgrid/package.json +22 -0
- package/dist/plugins/sendgrid/src/index.ts +36 -0
- package/dist/plugins/sendgrid/src/manifest.ts +37 -0
- package/dist/plugins/sendgrid/src/provider-contract.ts +14 -0
- package/dist/plugins/sendgrid/test/manifest.test.ts +80 -0
- package/dist/plugins/sendgrid/tsconfig.json +8 -0
- package/dist/plugins/twenty/README.md +78 -0
- package/dist/plugins/twenty/package.json +27 -0
- package/dist/plugins/twenty/scripts/__tests__/sync-thinkwork-app.test.mjs +67 -0
- package/dist/plugins/twenty/scripts/sync-thinkwork-app.mjs +185 -0
- package/dist/plugins/twenty/scripts/wire-thinkwork-workflow.mjs +658 -0
- package/dist/plugins/twenty/smoke/twenty-managed-app-smoke.mjs +359 -0
- package/dist/plugins/twenty/smoke/twenty-mcp-oauth-smoke.mjs +574 -0
- package/dist/plugins/twenty/src/api/cutover.ts +209 -0
- package/dist/plugins/twenty/src/deployment/managed-app.ts +253 -0
- package/dist/plugins/twenty/src/index.ts +55 -0
- package/dist/plugins/twenty/src/manifest.ts +259 -0
- package/dist/plugins/twenty/terraform/twenty/README.md +97 -0
- package/dist/plugins/twenty/terraform/twenty/main.tf +829 -0
- package/dist/plugins/twenty/terraform/twenty/outputs.tf +79 -0
- package/dist/plugins/twenty/terraform/twenty/variables.tf +268 -0
- package/dist/plugins/twenty/test/api/cutover.test.ts +183 -0
- package/dist/plugins/twenty/test/manifest.test.ts +463 -0
- package/dist/plugins/twenty/tsconfig.json +9 -0
- package/dist/plugins/twenty/twenty-app/.nvmrc +1 -0
- package/dist/plugins/twenty/twenty-app/README.md +148 -0
- package/dist/plugins/twenty/twenty-app/package.json +30 -0
- package/dist/plugins/twenty/twenty-app/src/application-config.ts +44 -0
- package/dist/plugins/twenty/twenty-app/src/constants/universal-identifiers.ts +18 -0
- package/dist/plugins/twenty/twenty-app/src/default-role.ts +24 -0
- package/dist/plugins/twenty/twenty-app/src/front-components/thinkwork-settings.front-component.tsx +299 -0
- package/dist/plugins/twenty/twenty-app/src/logic-functions/thinkwork-webhook.logic-function.ts +354 -0
- package/dist/plugins/twenty/twenty-app/tsconfig.json +14 -0
- package/dist/plugins/twenty/twenty-app/yarn.lock +4144 -0
- package/dist/plugins/workos-auth/package.json +22 -0
- package/dist/plugins/workos-auth/src/index.ts +30 -0
- package/dist/plugins/workos-auth/src/manifest.ts +40 -0
- package/dist/plugins/workos-auth/src/provider-contract.ts +39 -0
- package/dist/plugins/workos-auth/test/manifest.test.ts +94 -0
- package/dist/plugins/workos-auth/tsconfig.json +8 -0
- package/dist/scripts/bootstrap-workspace.sh +162 -0
- package/dist/scripts/post-deploy.sh +290 -0
- package/dist/terraform/examples/greenfield/main.tf +903 -75
- package/dist/terraform/examples/greenfield/terraform.tfvars.example +67 -8
- package/dist/terraform/modules/app/agentcore-code-interpreter/Dockerfile.sandbox-base +2 -2
- package/dist/terraform/modules/app/agentcore-code-interpreter/README.md +8 -9
- package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/sitecustomize.py +227 -0
- package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/test_sitecustomize.py +277 -0
- package/dist/terraform/modules/app/agentcore-memory/README.md +6 -6
- package/dist/terraform/modules/app/agentcore-memory/main.tf +1 -1
- package/dist/terraform/modules/app/agentcore-memory/scripts/create_or_find_memory.sh +40 -9
- package/dist/terraform/modules/app/agentcore-pi/README.md +61 -0
- package/dist/terraform/modules/app/agentcore-pi/main.tf +466 -0
- package/dist/terraform/modules/app/agentcore-pi/outputs.tf +38 -0
- package/dist/terraform/modules/app/agentcore-pi/variables.tf +145 -0
- package/dist/terraform/modules/app/agentcore-platform/main.tf +83 -0
- package/dist/terraform/modules/app/agentcore-runtime/main.tf +9 -11
- package/dist/terraform/modules/app/appsync-subscriptions/main.tf +5 -1
- package/dist/terraform/modules/app/customer-domain/main.tf +483 -0
- package/dist/terraform/modules/app/deployment-control-plane/README.md +47 -0
- package/dist/terraform/modules/app/deployment-control-plane/buildspec.yml +24 -0
- package/dist/terraform/modules/app/deployment-control-plane/main.tf +614 -0
- package/dist/terraform/modules/app/deployment-control-plane/outputs.tf +54 -0
- package/dist/terraform/modules/app/deployment-control-plane/runner.py +4720 -0
- package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +3026 -0
- package/dist/terraform/modules/app/deployment-control-plane/variables.tf +96 -0
- package/dist/terraform/modules/app/hindsight-memory/README.md +25 -23
- package/dist/terraform/modules/app/hindsight-memory/main.tf +26 -2
- package/dist/terraform/modules/app/lambda-api/eval-fanout.tf +17 -50
- package/dist/terraform/modules/app/lambda-api/handlers.tf +1290 -679
- package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +933 -0
- package/dist/terraform/modules/app/lambda-api/main.tf +14 -527
- package/dist/terraform/modules/app/lambda-api/mcp-oauth.tf +3 -19
- package/dist/terraform/modules/app/lambda-api/outputs.tf +50 -6
- package/dist/terraform/modules/app/lambda-api/runtime-config.tf +163 -0
- package/dist/terraform/modules/app/lambda-api/slack-app-secrets.tf +3 -1
- package/dist/terraform/modules/app/lambda-api/stripe-secrets.tf +3 -1
- package/dist/terraform/modules/app/lambda-api/variables.tf +240 -53
- package/dist/terraform/modules/app/lambda-api/workspace-events.tf +2 -25
- package/dist/terraform/modules/app/ses-email/main.tf +143 -30
- package/dist/terraform/modules/app/static-site/main.tf +4 -3
- package/dist/terraform/modules/app/www-dns/main.tf +45 -5
- package/dist/terraform/modules/app/www-dns/outputs.tf +10 -0
- package/dist/terraform/modules/app/www-dns/variables.tf +24 -0
- package/dist/terraform/modules/data/aurora-postgres/main.tf +15 -1
- package/dist/terraform/modules/data/compliance-exports-bucket/main.tf +1 -1
- package/dist/terraform/modules/data/compliance-exports-bucket/variables.tf +6 -0
- package/dist/terraform/modules/foundation/cognito/main.tf +167 -11
- package/dist/terraform/modules/foundation/cognito/outputs.tf +5 -0
- package/dist/terraform/modules/foundation/cognito/variables.tf +110 -0
- package/dist/terraform/modules/foundation/vpc/main.tf +45 -3
- package/dist/terraform/modules/foundation/vpc/outputs.tf +20 -0
- package/dist/terraform/modules/foundation/vpc/variables.tf +18 -0
- package/dist/terraform/modules/thinkwork/README.md +71 -0
- package/dist/terraform/modules/thinkwork/main.tf +1325 -174
- package/dist/terraform/modules/thinkwork/outputs.tf +457 -24
- package/dist/terraform/modules/thinkwork/variables.tf +1169 -93
- package/dist/terraform/schema.graphql +82 -9
- package/dist/workspace-defaults/files/AGENTS.md +344 -0
- package/dist/workspace-defaults/files/CONTEXT.md +8 -0
- package/dist/workspace-defaults/files/GUARDRAILS.md +51 -0
- package/dist/workspace-defaults/files/MEMORY_GUIDE.md +65 -0
- package/dist/workspace-defaults/files/ROUTER.md +24 -0
- package/dist/workspace-defaults/files/SPACE.md +62 -0
- package/dist/workspace-defaults/files/TOOLS.md +65 -0
- package/dist/workspace-defaults/files/USER.md +40 -0
- package/dist/workspace-defaults/files/mcp.json +3 -0
- package/dist/workspace-defaults/files/memory/contacts.md +13 -0
- package/dist/workspace-defaults/files/memory/lessons.md +13 -0
- package/dist/workspace-defaults/files/memory/preferences.md +12 -0
- package/dist/workspace-defaults/files/skills/.gitkeep +1 -0
- package/dist/workspace-defaults/files/skills/artifact-builder/SKILL.md +79 -0
- package/dist/workspace-defaults/files/skills/artifact-builder/references/crm-dashboard.md +166 -0
- package/dist/workspace-defaults/files/skills/automation-loop-designer/SKILL.md +120 -0
- package/dist/workspace-defaults/files/skills/skill-creator/LICENSE.txt +202 -0
- package/dist/workspace-defaults/files/skills/skill-creator/SKILL.md +485 -0
- package/dist/workspace-defaults/files/skills/skill-creator/UPSTREAM.json +124 -0
- package/dist/workspace-defaults/files/skills/skill-creator/agents/analyzer.md +274 -0
- package/dist/workspace-defaults/files/skills/skill-creator/agents/comparator.md +202 -0
- package/dist/workspace-defaults/files/skills/skill-creator/agents/grader.md +223 -0
- package/dist/workspace-defaults/files/skills/skill-creator/assets/eval_review.html +146 -0
- package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/dist/workspace-defaults/files/skills/skill-creator/references/schemas.md +430 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/__init__.py +0 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/generate_report.py +326 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/improve_description.py +247 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/package_skill.py +136 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_eval.py +310 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_loop.py +328 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/utils.py +47 -0
- package/package.json +2 -1
- package/dist/terraform/modules/app/agentcore-flue/README.md +0 -58
- package/dist/terraform/modules/app/agentcore-flue/main.tf +0 -323
- package/dist/terraform/modules/app/agentcore-flue/outputs.tf +0 -23
- package/dist/terraform/modules/app/agentcore-flue/variables.tf +0 -97
- package/dist/terraform/modules/app/computer-runtime/README.md +0 -15
- package/dist/terraform/modules/app/computer-runtime/main.tf +0 -406
- package/dist/terraform/modules/app/computer-runtime/outputs.tf +0 -75
- package/dist/terraform/modules/app/computer-runtime/variables.tf +0 -66
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
-- 0074_compliance_event_hash_index.sql
|
|
2
|
+
--
|
|
3
|
+
-- Phase 3 U10 of the System Workflows revert + Compliance reframe.
|
|
4
|
+
-- Adds a single-column index on `compliance.audit_events(event_hash)`
|
|
5
|
+
-- to support the new `complianceEventByHash` GraphQL query introduced
|
|
6
|
+
-- in U10. Without this index, the chain-position panel's prev_hash
|
|
7
|
+
-- click-through devolves to a heap scan; with it, lookups are
|
|
8
|
+
-- index-served at O(log n).
|
|
9
|
+
--
|
|
10
|
+
-- Why hand-rolled (not Drizzle-generated):
|
|
11
|
+
-- The compliance migrations are intentionally hand-rolled so the
|
|
12
|
+
-- plan-time SQL exactly matches what Aurora executes. The
|
|
13
|
+
-- compliance schema in this repo has been hand-rolled since 0069;
|
|
14
|
+
-- keeping additions in the same form avoids mixed-mode confusion.
|
|
15
|
+
--
|
|
16
|
+
-- Why not in 0069's original schema:
|
|
17
|
+
-- The forward-walking chain semantics (compliance.audit_events
|
|
18
|
+
-- chained via prev_hash → previous row's event_hash) was originally
|
|
19
|
+
-- designed to be walked sequentially with the (tenant_id,
|
|
20
|
+
-- occurred_at DESC) index. The "look up an event by its hash"
|
|
21
|
+
-- access pattern was added in U10 to power the admin Compliance
|
|
22
|
+
-- detail page's prev_hash navigation. Different access pattern →
|
|
23
|
+
-- different index.
|
|
24
|
+
--
|
|
25
|
+
-- Operator pre-merge step:
|
|
26
|
+
-- This migration is not picked up by the drainer's drift-gate
|
|
27
|
+
-- reconciler automatically — it must be applied to dev via:
|
|
28
|
+
-- psql "$DATABASE_URL" \
|
|
29
|
+
-- -f packages/database-pg/drizzle/0074_compliance_event_hash_index.sql
|
|
30
|
+
-- BEFORE the merge-to-main pipeline runs the post-deploy drift
|
|
31
|
+
-- check. The PR body should surface this requirement; the U8a / U8b
|
|
32
|
+
-- PRs followed the same pattern.
|
|
33
|
+
|
|
34
|
+
-- creates: compliance.idx_audit_events_event_hash
|
|
35
|
+
|
|
36
|
+
BEGIN;
|
|
37
|
+
|
|
38
|
+
-- Single-column btree on event_hash. Primary access pattern:
|
|
39
|
+
-- "given a prev_hash, find the row whose event_hash matches it."
|
|
40
|
+
-- Tenant-scoped lookups still use the existing (tenant_id, occurred_at
|
|
41
|
+
-- DESC) index for ordered enumeration; this index supports unordered
|
|
42
|
+
-- lookup-by-hash only.
|
|
43
|
+
--
|
|
44
|
+
-- IF NOT EXISTS so the migration is idempotent — re-running on dev
|
|
45
|
+
-- after a partial apply doesn't error.
|
|
46
|
+
CREATE INDEX IF NOT EXISTS idx_audit_events_event_hash
|
|
47
|
+
ON compliance.audit_events (event_hash);
|
|
48
|
+
|
|
49
|
+
COMMIT;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
-- Add nullable Computer ownership to Scheduled Jobs.
|
|
2
|
+
--
|
|
3
|
+
-- Mirrors `threads.computer_id` from drizzle/0072 — Computers are the
|
|
4
|
+
-- durable per-user workplace; agent_id stays as the runtime-firing key,
|
|
5
|
+
-- computer_id is the new ownership/filter key.
|
|
6
|
+
--
|
|
7
|
+
-- Apply manually:
|
|
8
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0075_scheduled_jobs_computer_ownership.sql
|
|
9
|
+
--
|
|
10
|
+
-- creates-column: public.scheduled_jobs.computer_id
|
|
11
|
+
-- creates: public.idx_scheduled_jobs_computer
|
|
12
|
+
|
|
13
|
+
\set ON_ERROR_STOP on
|
|
14
|
+
|
|
15
|
+
BEGIN;
|
|
16
|
+
|
|
17
|
+
SET LOCAL lock_timeout = '5s';
|
|
18
|
+
SET LOCAL statement_timeout = '120s';
|
|
19
|
+
|
|
20
|
+
ALTER TABLE public.scheduled_jobs
|
|
21
|
+
ADD COLUMN IF NOT EXISTS computer_id uuid REFERENCES public.computers(id);
|
|
22
|
+
|
|
23
|
+
CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_computer
|
|
24
|
+
ON public.scheduled_jobs (tenant_id, computer_id)
|
|
25
|
+
WHERE computer_id IS NOT NULL;
|
|
26
|
+
|
|
27
|
+
COMMIT;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
-- Backfill: scheduled_jobs.computer_id for the two known Marco jobs (dev-only).
|
|
2
|
+
--
|
|
3
|
+
-- Resolves the target Computer UUID from a psql variable (no PII in the
|
|
4
|
+
-- committed file) and stage-guards against accidentally running on the
|
|
5
|
+
-- wrong database — if no Computer with the given id exists we RAISE
|
|
6
|
+
-- EXCEPTION rather than silently no-op or corrupt foreign tenant data.
|
|
7
|
+
--
|
|
8
|
+
-- Operator workflow (run from repo root with dev DATABASE_URL set):
|
|
9
|
+
--
|
|
10
|
+
-- COMPUTER_ID=$(psql "$DATABASE_URL" -tA -c \
|
|
11
|
+
-- "SELECT id FROM computers \
|
|
12
|
+
-- WHERE owner_user_id = (SELECT id FROM users WHERE email = '<owner-email>') \
|
|
13
|
+
-- AND status = 'active' \
|
|
14
|
+
-- LIMIT 1")
|
|
15
|
+
-- psql "$DATABASE_URL" \
|
|
16
|
+
-- -v computer_id="$COMPUTER_ID" \
|
|
17
|
+
-- -f packages/database-pg/drizzle/0076_scheduled_jobs_marco_backfill.sql
|
|
18
|
+
--
|
|
19
|
+
-- Idempotent: re-running with the same :computer_id is a no-op.
|
|
20
|
+
--
|
|
21
|
+
-- This is a data backfill, not a schema change — no creates: markers.
|
|
22
|
+
|
|
23
|
+
\set ON_ERROR_STOP on
|
|
24
|
+
|
|
25
|
+
-- Fail fast if the operator forgot to pass -v computer_id
|
|
26
|
+
\if :{?computer_id}
|
|
27
|
+
\else
|
|
28
|
+
\echo 'ERROR: -v computer_id=<uuid> is required'
|
|
29
|
+
\quit 1
|
|
30
|
+
\endif
|
|
31
|
+
|
|
32
|
+
BEGIN;
|
|
33
|
+
|
|
34
|
+
SET LOCAL lock_timeout = '5s';
|
|
35
|
+
SET LOCAL statement_timeout = '120s';
|
|
36
|
+
|
|
37
|
+
-- Stage guard: assert the target Computer actually exists in this DB.
|
|
38
|
+
-- A wrong-stage apply (staging/prod where the Marco Computer row
|
|
39
|
+
-- doesn't exist) raises here rather than silently affecting nothing or
|
|
40
|
+
-- corrupting tenant scoping on the two job rows.
|
|
41
|
+
--
|
|
42
|
+
-- psql -v variables don't expand inside dollar-quoted DO blocks, so we
|
|
43
|
+
-- pass the target id through a server-side custom GUC and read it back
|
|
44
|
+
-- with current_setting() inside the block.
|
|
45
|
+
SET LOCAL thinkwork.backfill_computer_id = :'computer_id';
|
|
46
|
+
|
|
47
|
+
DO $$
|
|
48
|
+
DECLARE
|
|
49
|
+
target_id uuid := current_setting('thinkwork.backfill_computer_id')::uuid;
|
|
50
|
+
BEGIN
|
|
51
|
+
IF NOT EXISTS (
|
|
52
|
+
SELECT 1 FROM public.computers WHERE id = target_id
|
|
53
|
+
) THEN
|
|
54
|
+
RAISE EXCEPTION 'Computer % not found — wrong stage or wrong UUID', target_id;
|
|
55
|
+
END IF;
|
|
56
|
+
END $$;
|
|
57
|
+
|
|
58
|
+
UPDATE public.scheduled_jobs
|
|
59
|
+
SET computer_id = :'computer_id'::uuid,
|
|
60
|
+
updated_at = now()
|
|
61
|
+
WHERE id IN (
|
|
62
|
+
'd8a56ed5-c504-4c62-b3c8-2152bc6fc7a1'::uuid,
|
|
63
|
+
'e2429872-71ee-47fb-a084-431a302e4b35'::uuid
|
|
64
|
+
)
|
|
65
|
+
AND tenant_id = (
|
|
66
|
+
SELECT tenant_id FROM public.computers WHERE id = :'computer_id'::uuid
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
COMMIT;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
-- Add the Customize-page anchor agent column on computers, plus a backfill
|
|
2
|
+
-- pass for existing rows. Greenfield Computer creation should set this
|
|
3
|
+
-- column at insert time; the backfill is a safety net for pre-existing
|
|
4
|
+
-- rows that were created before this column existed.
|
|
5
|
+
--
|
|
6
|
+
-- Plan:
|
|
7
|
+
-- docs/plans/2026-05-09-006-feat-computer-customization-page-plan.md
|
|
8
|
+
--
|
|
9
|
+
-- Apply manually:
|
|
10
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0077_computers_primary_agent_id.sql
|
|
11
|
+
--
|
|
12
|
+
-- creates-column: public.computers.primary_agent_id
|
|
13
|
+
-- creates: public.idx_computers_primary_agent
|
|
14
|
+
|
|
15
|
+
\set ON_ERROR_STOP on
|
|
16
|
+
|
|
17
|
+
BEGIN;
|
|
18
|
+
|
|
19
|
+
SET LOCAL lock_timeout = '5s';
|
|
20
|
+
SET LOCAL statement_timeout = '120s';
|
|
21
|
+
|
|
22
|
+
ALTER TABLE public.computers
|
|
23
|
+
ADD COLUMN IF NOT EXISTS primary_agent_id uuid REFERENCES public.agents(id) ON DELETE SET NULL;
|
|
24
|
+
|
|
25
|
+
CREATE INDEX IF NOT EXISTS idx_computers_primary_agent
|
|
26
|
+
ON public.computers (primary_agent_id)
|
|
27
|
+
WHERE primary_agent_id IS NOT NULL;
|
|
28
|
+
|
|
29
|
+
-- Backfill from migrated_from_agent_id where set. The fallback lookup
|
|
30
|
+
-- (single agent matching tenant_id + owner_user_id + template_id) is
|
|
31
|
+
-- handled in application code (primary-agent-resolver.ts) because it
|
|
32
|
+
-- requires conflict-aware error handling that doesn't fit a SQL backfill.
|
|
33
|
+
UPDATE public.computers
|
|
34
|
+
SET primary_agent_id = migrated_from_agent_id
|
|
35
|
+
WHERE primary_agent_id IS NULL
|
|
36
|
+
AND migrated_from_agent_id IS NOT NULL;
|
|
37
|
+
|
|
38
|
+
COMMIT;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
-- Per-tenant catalog table backing the apps/computer Customize page's
|
|
2
|
+
-- Available / Discover sections for Workflows. Skills and MCP servers reuse
|
|
3
|
+
-- the existing `tenant_skills` and `tenant_mcp_servers` tables.
|
|
4
|
+
--
|
|
5
|
+
-- Plan:
|
|
6
|
+
-- docs/plans/2026-05-09-006-feat-computer-customization-page-plan.md
|
|
7
|
+
--
|
|
8
|
+
-- Apply manually:
|
|
9
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0078_tenant_customize_catalog.sql
|
|
10
|
+
--
|
|
11
|
+
-- creates: public.tenant_workflow_catalog
|
|
12
|
+
-- creates: public.uq_tenant_workflow_catalog_slug
|
|
13
|
+
-- creates: public.idx_tenant_workflow_catalog_tenant_status
|
|
14
|
+
|
|
15
|
+
\set ON_ERROR_STOP on
|
|
16
|
+
|
|
17
|
+
BEGIN;
|
|
18
|
+
|
|
19
|
+
SET LOCAL lock_timeout = '5s';
|
|
20
|
+
SET LOCAL statement_timeout = '120s';
|
|
21
|
+
|
|
22
|
+
CREATE TABLE IF NOT EXISTS public.tenant_workflow_catalog (
|
|
23
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
24
|
+
tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
|
|
25
|
+
slug text NOT NULL,
|
|
26
|
+
display_name text NOT NULL,
|
|
27
|
+
description text,
|
|
28
|
+
category text,
|
|
29
|
+
icon text,
|
|
30
|
+
default_config jsonb NOT NULL DEFAULT '{}'::jsonb,
|
|
31
|
+
default_schedule text,
|
|
32
|
+
status text NOT NULL DEFAULT 'active',
|
|
33
|
+
enabled boolean NOT NULL DEFAULT true,
|
|
34
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
35
|
+
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
36
|
+
CONSTRAINT tenant_workflow_catalog_status_enum
|
|
37
|
+
CHECK (status IN ('active','draft','archived'))
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_tenant_workflow_catalog_slug
|
|
41
|
+
ON public.tenant_workflow_catalog (tenant_id, slug);
|
|
42
|
+
|
|
43
|
+
CREATE INDEX IF NOT EXISTS idx_tenant_workflow_catalog_tenant_status
|
|
44
|
+
ON public.tenant_workflow_catalog (tenant_id, status);
|
|
45
|
+
|
|
46
|
+
COMMIT;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
-- Seed every tenant's `tenant_workflow_catalog` with the v1 baseline catalog
|
|
2
|
+
-- so the apps/computer Customize page has real Available rows to render.
|
|
3
|
+
-- Idempotent via ON CONFLICT(tenant_id, slug) DO NOTHING — re-running this
|
|
4
|
+
-- script never duplicates.
|
|
5
|
+
--
|
|
6
|
+
-- Plan:
|
|
7
|
+
-- docs/plans/2026-05-09-006-feat-computer-customization-page-plan.md (U10)
|
|
8
|
+
--
|
|
9
|
+
-- Apply manually:
|
|
10
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0079_seed_tenant_customize_catalog.sql
|
|
11
|
+
--
|
|
12
|
+
-- The data mirrors the workflow fixture catalog that previously lived in
|
|
13
|
+
-- apps/computer/src/components/customize/customize-fixtures.ts so the live
|
|
14
|
+
-- queries (U4 / U6) render the same shape the user already saw on the
|
|
15
|
+
-- inert page. Per-tenant variation can be added by INSERTing rows with a
|
|
16
|
+
-- specific tenant_id; the SELECT-from-tenants below is the convenient
|
|
17
|
+
-- "every tenant gets the v1 baseline" path.
|
|
18
|
+
|
|
19
|
+
\set ON_ERROR_STOP on
|
|
20
|
+
|
|
21
|
+
BEGIN;
|
|
22
|
+
|
|
23
|
+
SET LOCAL lock_timeout = '5s';
|
|
24
|
+
SET LOCAL statement_timeout = '120s';
|
|
25
|
+
|
|
26
|
+
-- ─── Workflows ─────────────────────────────────────────────────────────────
|
|
27
|
+
|
|
28
|
+
WITH baseline_workflows(slug, display_name, description, category) AS (
|
|
29
|
+
VALUES
|
|
30
|
+
('daily-standup-digest', 'Daily standup digest', 'Summarize yesterday''s work and today''s plan from assigned work sources.', 'Engineering'),
|
|
31
|
+
('customer-health-refresh', 'Customer health refresh', 'Recompute health scores nightly across the active book of business.', 'Customer Success'),
|
|
32
|
+
('renewal-pipeline-sweep', 'Renewal pipeline sweep', 'Surface upcoming renewals every Monday with risk callouts.', 'Sales'),
|
|
33
|
+
('new-lead-triage', 'New lead triage', 'Score and route inbound leads to the right account exec.', 'Sales'),
|
|
34
|
+
('weekly-sales-brief', 'Weekly sales brief', 'Friday wrap-up: pipeline movement, wins, blocked deals.', 'Sales'),
|
|
35
|
+
('support-incident-postmortem', 'Support incident postmortem', 'Draft a postmortem after every P0/P1 support escalation.', 'Customer Success'),
|
|
36
|
+
('weekly-product-changelog', 'Weekly product changelog', 'Generate a customer-facing changelog from merged PRs.', 'Product')
|
|
37
|
+
)
|
|
38
|
+
INSERT INTO public.tenant_workflow_catalog
|
|
39
|
+
(tenant_id, slug, display_name, description, category, default_config, status, enabled)
|
|
40
|
+
SELECT
|
|
41
|
+
t.id,
|
|
42
|
+
bw.slug,
|
|
43
|
+
bw.display_name,
|
|
44
|
+
bw.description,
|
|
45
|
+
bw.category,
|
|
46
|
+
'{}'::jsonb,
|
|
47
|
+
'active',
|
|
48
|
+
true
|
|
49
|
+
FROM public.tenants t
|
|
50
|
+
CROSS JOIN baseline_workflows bw
|
|
51
|
+
ON CONFLICT (tenant_id, slug) DO NOTHING;
|
|
52
|
+
|
|
53
|
+
COMMIT;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
-- Add a stable pointer from `routines` rows back to the
|
|
2
|
+
-- `tenant_workflow_catalog.slug` they represent, so the apps/computer
|
|
3
|
+
-- Customize Workflows tab (plan 010 U6) can match Connected items
|
|
4
|
+
-- unambiguously and the enableWorkflow / disableWorkflow mutations can
|
|
5
|
+
-- upsert idempotently.
|
|
6
|
+
--
|
|
7
|
+
-- Plan:
|
|
8
|
+
-- docs/plans/2026-05-09-010-feat-customize-workflows-live-plan.md (U6-1)
|
|
9
|
+
--
|
|
10
|
+
-- Apply manually:
|
|
11
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0081_routines_catalog_slug.sql
|
|
12
|
+
--
|
|
13
|
+
-- creates-column: public.routines.catalog_slug
|
|
14
|
+
-- creates: public.uq_routines_catalog_slug_per_agent
|
|
15
|
+
|
|
16
|
+
\set ON_ERROR_STOP on
|
|
17
|
+
|
|
18
|
+
BEGIN;
|
|
19
|
+
|
|
20
|
+
SET LOCAL lock_timeout = '5s';
|
|
21
|
+
SET LOCAL statement_timeout = '120s';
|
|
22
|
+
|
|
23
|
+
ALTER TABLE public.routines
|
|
24
|
+
ADD COLUMN IF NOT EXISTS catalog_slug text;
|
|
25
|
+
|
|
26
|
+
-- No backfill: unlike `connectors.type`, `routines.name` is free-form
|
|
27
|
+
-- user-authored text with no structural alignment to any catalog
|
|
28
|
+
-- display_name. Existing routines stay with catalog_slug=NULL and
|
|
29
|
+
-- remain invisible to the Customize bindings query (which filters
|
|
30
|
+
-- `catalog_slug IS NOT NULL`); they're still functional via their
|
|
31
|
+
-- existing schedule/triggers, just not surfaced on the Workflows tab.
|
|
32
|
+
-- New Customize-driven enables get catalog_slug populated by the
|
|
33
|
+
-- enableWorkflow resolver.
|
|
34
|
+
|
|
35
|
+
-- Partial unique index: at most one routines row per
|
|
36
|
+
-- (agent, catalog slug). Excludes legacy / user-authored rows where
|
|
37
|
+
-- agent_id IS NULL or catalog_slug IS NULL.
|
|
38
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_routines_catalog_slug_per_agent
|
|
39
|
+
ON public.routines (agent_id, catalog_slug)
|
|
40
|
+
WHERE agent_id IS NOT NULL AND catalog_slug IS NOT NULL;
|
|
41
|
+
|
|
42
|
+
COMMIT;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
-- messages.parts — typed UIMessage parts persisted at turn-finalize.
|
|
2
|
+
--
|
|
3
|
+
-- Plan-012 U7 (docs/plans/2026-05-09-012-feat-computer-ai-elements-adoption-plan.md).
|
|
4
|
+
-- Contract: docs/specs/computer-ai-elements-contract-v1.md (§Persistence boundary).
|
|
5
|
+
--
|
|
6
|
+
-- For new Computer assistant messages, the writer persists the post-stream
|
|
7
|
+
-- UIMessage.parts array into this column at turn-finalize. The legacy
|
|
8
|
+
-- messages.content text column also continues to populate as a flattened
|
|
9
|
+
-- text representation (text-typed parts only) so internal callers that
|
|
10
|
+
-- still read `content` keep working.
|
|
11
|
+
--
|
|
12
|
+
-- Render-path precedence (locked in contract v1): `parts IS NOT NULL`
|
|
13
|
+
-- wins over `content`. Half-migrated rows with both populated are
|
|
14
|
+
-- expected and deliberate.
|
|
15
|
+
--
|
|
16
|
+
-- Why hand-rolled (not Drizzle codegen):
|
|
17
|
+
-- 1. We need the explicit `-- creates-column:` marker so the
|
|
18
|
+
-- pnpm db:migrate-manual drift gate (CLAUDE.md, the Aurora drift
|
|
19
|
+
-- reporter wired into deploy.yml) can confirm the column landed
|
|
20
|
+
-- after `psql -f` is applied to dev.
|
|
21
|
+
-- 2. The author runs `psql "$DATABASE_URL" -f
|
|
22
|
+
-- packages/database-pg/drizzle/0082_messages_parts_jsonb.sql`
|
|
23
|
+
-- against dev right after merge per
|
|
24
|
+
-- feedback_handrolled_migrations_apply_to_dev.
|
|
25
|
+
--
|
|
26
|
+
-- Apply:
|
|
27
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0082_messages_parts_jsonb.sql
|
|
28
|
+
--
|
|
29
|
+
-- Drift detection:
|
|
30
|
+
-- pnpm db:migrate-manual
|
|
31
|
+
--
|
|
32
|
+
-- Pre-migration invariants:
|
|
33
|
+
-- - public.messages exists (created by drizzle/0000_petite_marvel_apes.sql).
|
|
34
|
+
-- - public.messages.parts does not exist yet.
|
|
35
|
+
--
|
|
36
|
+
-- Post-migration invariants:
|
|
37
|
+
-- - public.messages.parts is jsonb NULL with no default.
|
|
38
|
+
-- - existing rows have parts IS NULL (no backfill).
|
|
39
|
+
-- - the legacy messages.content text column is unchanged.
|
|
40
|
+
--
|
|
41
|
+
-- Tenant scoping for the new field is the U7 P0 audit, documented in
|
|
42
|
+
-- the PR description: every read path that selects Message.parts must
|
|
43
|
+
-- scope by resolveCallerTenantId(ctx) (per
|
|
44
|
+
-- feedback_oauth_tenant_resolver) AND the same thread/computer
|
|
45
|
+
-- ownership gate already enforced on Message.content. The audit and
|
|
46
|
+
-- regression test live alongside the resolver in
|
|
47
|
+
-- packages/api/src/graphql/resolvers/messages/.
|
|
48
|
+
--
|
|
49
|
+
-- creates-column: public.messages.parts
|
|
50
|
+
|
|
51
|
+
ALTER TABLE "messages"
|
|
52
|
+
ADD COLUMN IF NOT EXISTS "parts" jsonb;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
-- Computer runbook catalog and execution state.
|
|
2
|
+
-- creates: public.tenant_runbook_catalog
|
|
3
|
+
-- creates: public.computer_runbook_runs
|
|
4
|
+
-- creates: public.computer_runbook_tasks
|
|
5
|
+
|
|
6
|
+
CREATE TABLE IF NOT EXISTS public.tenant_runbook_catalog (
|
|
7
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
8
|
+
tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
|
|
9
|
+
slug text NOT NULL,
|
|
10
|
+
source_version text NOT NULL,
|
|
11
|
+
display_name text NOT NULL,
|
|
12
|
+
description text NOT NULL,
|
|
13
|
+
category text NOT NULL,
|
|
14
|
+
status text NOT NULL DEFAULT 'active',
|
|
15
|
+
enabled boolean NOT NULL DEFAULT true,
|
|
16
|
+
definition jsonb NOT NULL,
|
|
17
|
+
operator_overrides jsonb,
|
|
18
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
19
|
+
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
20
|
+
CONSTRAINT tenant_runbook_catalog_status_allowed
|
|
21
|
+
CHECK (status IN ('active','unavailable','archived'))
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
CREATE UNIQUE INDEX IF NOT EXISTS tenant_runbook_catalog_tenant_slug_uq
|
|
25
|
+
ON public.tenant_runbook_catalog (tenant_id, slug);
|
|
26
|
+
|
|
27
|
+
CREATE INDEX IF NOT EXISTS idx_tenant_runbook_catalog_tenant_status
|
|
28
|
+
ON public.tenant_runbook_catalog (tenant_id, status);
|
|
29
|
+
|
|
30
|
+
CREATE TABLE IF NOT EXISTS public.computer_runbook_runs (
|
|
31
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
32
|
+
tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
|
|
33
|
+
computer_id uuid NOT NULL REFERENCES public.computers(id) ON DELETE CASCADE,
|
|
34
|
+
thread_id uuid REFERENCES public.threads(id) ON DELETE SET NULL,
|
|
35
|
+
catalog_id uuid REFERENCES public.tenant_runbook_catalog(id) ON DELETE SET NULL,
|
|
36
|
+
runbook_slug text NOT NULL,
|
|
37
|
+
runbook_version text NOT NULL,
|
|
38
|
+
status text NOT NULL DEFAULT 'awaiting_confirmation',
|
|
39
|
+
invocation_mode text NOT NULL DEFAULT 'auto',
|
|
40
|
+
selected_by_message_id uuid REFERENCES public.messages(id) ON DELETE SET NULL,
|
|
41
|
+
approved_by_user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
|
|
42
|
+
rejected_by_user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
|
|
43
|
+
cancelled_by_user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
|
|
44
|
+
definition_snapshot jsonb NOT NULL,
|
|
45
|
+
inputs jsonb NOT NULL DEFAULT '{}'::jsonb,
|
|
46
|
+
output jsonb,
|
|
47
|
+
error jsonb,
|
|
48
|
+
idempotency_key text,
|
|
49
|
+
approved_at timestamptz,
|
|
50
|
+
rejected_at timestamptz,
|
|
51
|
+
cancelled_at timestamptz,
|
|
52
|
+
started_at timestamptz,
|
|
53
|
+
completed_at timestamptz,
|
|
54
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
55
|
+
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
56
|
+
CONSTRAINT computer_runbook_runs_status_allowed
|
|
57
|
+
CHECK (status IN ('awaiting_confirmation','queued','running','completed','failed','cancelled','rejected')),
|
|
58
|
+
CONSTRAINT computer_runbook_runs_invocation_mode_allowed
|
|
59
|
+
CHECK (invocation_mode IN ('auto','explicit','ad_hoc'))
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
CREATE INDEX IF NOT EXISTS idx_computer_runbook_runs_tenant_status
|
|
63
|
+
ON public.computer_runbook_runs (tenant_id, status);
|
|
64
|
+
|
|
65
|
+
CREATE INDEX IF NOT EXISTS idx_computer_runbook_runs_computer_created
|
|
66
|
+
ON public.computer_runbook_runs (computer_id, created_at);
|
|
67
|
+
|
|
68
|
+
CREATE UNIQUE INDEX IF NOT EXISTS computer_runbook_runs_tenant_computer_idempotency_uq
|
|
69
|
+
ON public.computer_runbook_runs (tenant_id, computer_id, idempotency_key)
|
|
70
|
+
WHERE idempotency_key IS NOT NULL;
|
|
71
|
+
|
|
72
|
+
CREATE TABLE IF NOT EXISTS public.computer_runbook_tasks (
|
|
73
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
74
|
+
tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
|
|
75
|
+
run_id uuid NOT NULL REFERENCES public.computer_runbook_runs(id) ON DELETE CASCADE,
|
|
76
|
+
phase_id text NOT NULL,
|
|
77
|
+
phase_title text NOT NULL,
|
|
78
|
+
task_key text NOT NULL,
|
|
79
|
+
title text NOT NULL,
|
|
80
|
+
summary text,
|
|
81
|
+
status text NOT NULL DEFAULT 'pending',
|
|
82
|
+
depends_on jsonb NOT NULL DEFAULT '[]'::jsonb,
|
|
83
|
+
capability_roles jsonb NOT NULL DEFAULT '[]'::jsonb,
|
|
84
|
+
sort_order integer NOT NULL,
|
|
85
|
+
details jsonb,
|
|
86
|
+
output jsonb,
|
|
87
|
+
error jsonb,
|
|
88
|
+
started_at timestamptz,
|
|
89
|
+
completed_at timestamptz,
|
|
90
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
91
|
+
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
92
|
+
CONSTRAINT computer_runbook_tasks_status_allowed
|
|
93
|
+
CHECK (status IN ('pending','running','completed','failed','skipped','cancelled'))
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
CREATE UNIQUE INDEX IF NOT EXISTS computer_runbook_tasks_run_task_key_uq
|
|
97
|
+
ON public.computer_runbook_tasks (run_id, task_key);
|
|
98
|
+
|
|
99
|
+
CREATE INDEX IF NOT EXISTS idx_computer_runbook_tasks_run_order
|
|
100
|
+
ON public.computer_runbook_tasks (run_id, sort_order);
|
|
101
|
+
|
|
102
|
+
CREATE INDEX IF NOT EXISTS idx_computer_runbook_tasks_tenant_status
|
|
103
|
+
ON public.computer_runbook_tasks (tenant_id, status);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
-- Add `favorited_at` to artifacts so users can star artifacts and the
|
|
2
|
+
-- apps/computer sidebar can show a Favorites section.
|
|
3
|
+
--
|
|
4
|
+
-- Plan:
|
|
5
|
+
-- docs/plans/2026-05-10-005-feat-computer-ui-updates-plan.md (U3)
|
|
6
|
+
--
|
|
7
|
+
-- Apply manually:
|
|
8
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0084_artifacts_favorited_at.sql
|
|
9
|
+
--
|
|
10
|
+
-- creates-column: public.artifacts.favorited_at
|
|
11
|
+
-- creates: public.idx_artifacts_favorited_at
|
|
12
|
+
|
|
13
|
+
\set ON_ERROR_STOP on
|
|
14
|
+
|
|
15
|
+
BEGIN;
|
|
16
|
+
|
|
17
|
+
SET LOCAL lock_timeout = '5s';
|
|
18
|
+
SET LOCAL statement_timeout = '120s';
|
|
19
|
+
|
|
20
|
+
ALTER TABLE public.artifacts
|
|
21
|
+
ADD COLUMN IF NOT EXISTS favorited_at timestamptz;
|
|
22
|
+
|
|
23
|
+
-- Partial index covers the sidebar query
|
|
24
|
+
-- (favorited_at IS NOT NULL, ORDER BY favorited_at DESC) without
|
|
25
|
+
-- bloating the table-wide index footprint for the un-favorited common
|
|
26
|
+
-- case. Tenant_id leads so the same query stays fast under multi-tenant
|
|
27
|
+
-- access patterns.
|
|
28
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_favorited_at
|
|
29
|
+
ON public.artifacts (tenant_id, favorited_at DESC)
|
|
30
|
+
WHERE favorited_at IS NOT NULL;
|
|
31
|
+
|
|
32
|
+
COMMIT;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
-- creates: public.view_thinkwork_computer_default_template_seeded
|
|
2
|
+
--
|
|
3
|
+
-- Seed the platform-default Computer template used by the shared Computer
|
|
4
|
+
-- creation dialog. Tenant-id NULL = platform-wide; every tenant can resolve it
|
|
5
|
+
-- because `requireComputerTemplate` accepts NULL-tenant rows.
|
|
6
|
+
--
|
|
7
|
+
-- See docs/plans/2026-05-11-003-feat-computer-admin-crud-plan.md (U1).
|
|
8
|
+
--
|
|
9
|
+
-- The marker view exists solely to give scripts/db-migrate-manual.sh
|
|
10
|
+
-- something to verify — the drift reporter cannot probe for data rows. The
|
|
11
|
+
-- view returns 1 row when the seed has been applied. Same pattern as
|
|
12
|
+
-- 0022_seed_thinkwork_admin_permissions.sql.
|
|
13
|
+
--
|
|
14
|
+
-- Apply manually (matches the 0019/0020/0022 convention):
|
|
15
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0085_seed_thinkwork_computer_default_template.sql
|
|
16
|
+
--
|
|
17
|
+
-- This file is frozen. If the default template's attributes need to change
|
|
18
|
+
-- (e.g., model upgrade), ship a new migration that UPDATEs the row — do not
|
|
19
|
+
-- edit this one.
|
|
20
|
+
|
|
21
|
+
-- Guarded insert. The unique index uq_agent_templates_tenant_slug is on
|
|
22
|
+
-- (tenant_id, slug), but Postgres treats NULL values as distinct in unique
|
|
23
|
+
-- indexes by default — so ON CONFLICT against a NULL tenant_id row will
|
|
24
|
+
-- never match. Use WHERE NOT EXISTS for idempotency instead.
|
|
25
|
+
INSERT INTO agent_templates (tenant_id, name, slug, template_kind, source, model, config)
|
|
26
|
+
SELECT
|
|
27
|
+
NULL,
|
|
28
|
+
'Thinkwork Computer',
|
|
29
|
+
'thinkwork-computer-default',
|
|
30
|
+
'computer',
|
|
31
|
+
'system',
|
|
32
|
+
'us.anthropic.claude-sonnet-4-20250514-v1:0',
|
|
33
|
+
'{}'::jsonb
|
|
34
|
+
WHERE NOT EXISTS (
|
|
35
|
+
SELECT 1 FROM agent_templates
|
|
36
|
+
WHERE slug = 'thinkwork-computer-default'
|
|
37
|
+
AND tenant_id IS NULL
|
|
38
|
+
AND template_kind = 'computer'
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
CREATE OR REPLACE VIEW public.view_thinkwork_computer_default_template_seeded AS
|
|
42
|
+
SELECT id, slug, template_kind, source
|
|
43
|
+
FROM agent_templates
|
|
44
|
+
WHERE slug = 'thinkwork-computer-default'
|
|
45
|
+
AND tenant_id IS NULL
|
|
46
|
+
AND template_kind = 'computer';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
-- creates: public.view_default_template_models_updated_0086
|
|
2
|
+
--
|
|
3
|
+
-- Move seeded platform/default templates off the dated Sonnet inference
|
|
4
|
+
-- profile that now fails Bedrock runtime access in dev AgentCore.
|
|
5
|
+
--
|
|
6
|
+
-- Apply manually:
|
|
7
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0086_update_default_template_models.sql
|
|
8
|
+
|
|
9
|
+
UPDATE agent_templates
|
|
10
|
+
SET model = 'us.anthropic.claude-sonnet-4-6',
|
|
11
|
+
updated_at = now()
|
|
12
|
+
WHERE slug IN ('thinkwork-computer-default', 'default')
|
|
13
|
+
AND model = 'us.anthropic.claude-sonnet-4-20250514-v1:0';
|
|
14
|
+
|
|
15
|
+
CREATE OR REPLACE VIEW public.view_default_template_models_updated_0086 AS
|
|
16
|
+
SELECT id, slug, template_kind, source, model
|
|
17
|
+
FROM agent_templates
|
|
18
|
+
WHERE slug IN ('thinkwork-computer-default', 'default')
|
|
19
|
+
AND model = 'us.anthropic.claude-sonnet-4-6';
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
-- Retire the OSS connector framework.
|
|
2
|
+
--
|
|
3
|
+
-- ⚠️ SUPERSEDED by 0090 + 0092. Do NOT apply this file directly anymore —
|
|
4
|
+
-- the ALTER TABLE public.tenant_entity_external_refs statements below
|
|
5
|
+
-- will fail because 0090 (brain schema extraction) moved that table to
|
|
6
|
+
-- brain.external_refs. 0090 absorbed this migration's tracker DELETE +
|
|
7
|
+
-- constraint work, and 0092_finish_oss_connector_retirement.sql does
|
|
8
|
+
-- the DROP TABLE portion. The markers below have been updated to point
|
|
9
|
+
-- at the post-0090 location so the drift reporter resolves cleanly.
|
|
10
|
+
--
|
|
11
|
+
-- Removes the connector data model now that the private extension runtime
|
|
12
|
+
-- is moving out of OSS Thinkwork. Workflow Customize catalog, OAuth
|
|
13
|
+
-- credentials, MCP state, Computers, and Threads remain.
|
|
14
|
+
--
|
|
15
|
+
-- Plan:
|
|
16
|
+
-- docs/plans/2026-05-14-001-refactor-retire-oss-symphony-connectors-plan.md
|
|
17
|
+
--
|
|
18
|
+
-- Apply manually: DO NOT APPLY DIRECTLY — see superseded note above.
|
|
19
|
+
-- Original command (now broken):
|
|
20
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0087_retire_oss_connectors.sql
|
|
21
|
+
--
|
|
22
|
+
-- drops: public.computer_delegations
|
|
23
|
+
-- drops: public.connector_executions
|
|
24
|
+
-- drops: public.connectors
|
|
25
|
+
-- drops: public.tenant_connector_catalog
|
|
26
|
+
-- drops: public.uq_connector_executions_active_external_ref
|
|
27
|
+
-- drops: public.idx_connector_executions_tenant_state
|
|
28
|
+
-- drops: public.idx_connector_executions_connector_started
|
|
29
|
+
-- drops: public.idx_connector_executions_state_machine_arn
|
|
30
|
+
-- drops: public.idx_connector_executions_external_ref
|
|
31
|
+
-- drops: public.uq_connectors_tenant_name
|
|
32
|
+
-- drops: public.idx_connectors_tenant_status
|
|
33
|
+
-- drops: public.idx_connectors_tenant_type
|
|
34
|
+
-- drops: public.idx_connectors_enabled
|
|
35
|
+
-- drops: public.uq_connectors_catalog_slug_per_computer
|
|
36
|
+
-- drops: public.uq_tenant_connector_catalog_slug
|
|
37
|
+
-- drops: public.idx_tenant_connector_catalog_tenant_status
|
|
38
|
+
-- drops: public.idx_computer_delegations_computer_status
|
|
39
|
+
-- drops: public.idx_computer_delegations_agent
|
|
40
|
+
-- Constraint location updated post-0090 (brain schema extraction moved the
|
|
41
|
+
-- table to brain.external_refs and renamed the constraint).
|
|
42
|
+
-- creates-constraint: brain.external_refs.external_refs_kind_allowed
|
|
43
|
+
|
|
44
|
+
\set ON_ERROR_STOP on
|
|
45
|
+
|
|
46
|
+
BEGIN;
|
|
47
|
+
|
|
48
|
+
SET LOCAL lock_timeout = '5s';
|
|
49
|
+
SET LOCAL statement_timeout = '120s';
|
|
50
|
+
|
|
51
|
+
DELETE FROM public.tenant_entity_external_refs
|
|
52
|
+
WHERE source_kind IN ('tracker_issue', 'tracker_ticket');
|
|
53
|
+
|
|
54
|
+
ALTER TABLE public.tenant_entity_external_refs
|
|
55
|
+
DROP CONSTRAINT IF EXISTS tenant_entity_external_refs_kind_allowed_v2;
|
|
56
|
+
|
|
57
|
+
ALTER TABLE public.tenant_entity_external_refs
|
|
58
|
+
DROP CONSTRAINT IF EXISTS tenant_entity_external_refs_kind_allowed;
|
|
59
|
+
|
|
60
|
+
ALTER TABLE public.tenant_entity_external_refs
|
|
61
|
+
ADD CONSTRAINT tenant_entity_external_refs_kind_allowed CHECK (
|
|
62
|
+
source_kind IN (
|
|
63
|
+
'erp_customer',
|
|
64
|
+
'crm_opportunity',
|
|
65
|
+
'erp_order',
|
|
66
|
+
'crm_person',
|
|
67
|
+
'support_case',
|
|
68
|
+
'bedrock_kb'
|
|
69
|
+
)
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
DROP TABLE IF EXISTS public.computer_delegations CASCADE;
|
|
73
|
+
DROP TABLE IF EXISTS public.connector_executions CASCADE;
|
|
74
|
+
DROP TABLE IF EXISTS public.connectors CASCADE;
|
|
75
|
+
DROP TABLE IF EXISTS public.tenant_connector_catalog CASCADE;
|
|
76
|
+
|
|
77
|
+
COMMIT;
|