thinkwork-cli 0.12.12 → 0.12.15
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-4VT3FWOH.js} +1 -1
- package/dist/{chunk-JEHV35EU.js → chunk-H7AB42ES.js} +340 -30
- package/dist/cli.js +22123 -9219
- 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/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 +453 -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 +1 -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,103 @@
|
|
|
1
|
+
CREATE TABLE "workflow_configs" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
3
|
+
"tenant_id" uuid NOT NULL,
|
|
4
|
+
"team_id" uuid,
|
|
5
|
+
"dispatch" jsonb,
|
|
6
|
+
"concurrency" jsonb,
|
|
7
|
+
"retry" jsonb,
|
|
8
|
+
"turn_loop" jsonb,
|
|
9
|
+
"workspace" jsonb,
|
|
10
|
+
"stall_detection" jsonb,
|
|
11
|
+
"orchestration" jsonb,
|
|
12
|
+
"session_compaction" jsonb,
|
|
13
|
+
"prompt_template" text,
|
|
14
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
15
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
16
|
+
);
|
|
17
|
+
--> statement-breakpoint
|
|
18
|
+
CREATE TABLE "agent_mcp_servers" (
|
|
19
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
20
|
+
"agent_id" uuid NOT NULL,
|
|
21
|
+
"tenant_id" uuid NOT NULL,
|
|
22
|
+
"mcp_server_id" uuid NOT NULL,
|
|
23
|
+
"enabled" boolean DEFAULT true NOT NULL,
|
|
24
|
+
"config" jsonb,
|
|
25
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
26
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
27
|
+
);
|
|
28
|
+
--> statement-breakpoint
|
|
29
|
+
CREATE TABLE "agent_template_mcp_servers" (
|
|
30
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
31
|
+
"template_id" uuid NOT NULL,
|
|
32
|
+
"tenant_id" uuid NOT NULL,
|
|
33
|
+
"mcp_server_id" uuid NOT NULL,
|
|
34
|
+
"enabled" boolean DEFAULT true NOT NULL,
|
|
35
|
+
"config" jsonb,
|
|
36
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
37
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
38
|
+
);
|
|
39
|
+
--> statement-breakpoint
|
|
40
|
+
CREATE TABLE "tenant_mcp_servers" (
|
|
41
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
42
|
+
"tenant_id" uuid NOT NULL,
|
|
43
|
+
"name" text NOT NULL,
|
|
44
|
+
"slug" text NOT NULL,
|
|
45
|
+
"url" text NOT NULL,
|
|
46
|
+
"transport" text DEFAULT 'streamable-http' NOT NULL,
|
|
47
|
+
"auth_type" text DEFAULT 'none' NOT NULL,
|
|
48
|
+
"auth_config" jsonb,
|
|
49
|
+
"oauth_provider" text,
|
|
50
|
+
"tools" jsonb,
|
|
51
|
+
"enabled" boolean DEFAULT true NOT NULL,
|
|
52
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
53
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
54
|
+
);
|
|
55
|
+
--> statement-breakpoint
|
|
56
|
+
CREATE TABLE "user_mcp_tokens" (
|
|
57
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
58
|
+
"user_id" uuid NOT NULL,
|
|
59
|
+
"tenant_id" uuid NOT NULL,
|
|
60
|
+
"mcp_server_id" uuid NOT NULL,
|
|
61
|
+
"secret_ref" text NOT NULL,
|
|
62
|
+
"expires_at" timestamp with time zone,
|
|
63
|
+
"status" text DEFAULT 'active' NOT NULL,
|
|
64
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
65
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
66
|
+
);
|
|
67
|
+
--> statement-breakpoint
|
|
68
|
+
CREATE TABLE "tenant_builtin_tools" (
|
|
69
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
70
|
+
"tenant_id" uuid NOT NULL,
|
|
71
|
+
"tool_slug" text NOT NULL,
|
|
72
|
+
"provider" text,
|
|
73
|
+
"enabled" boolean DEFAULT false NOT NULL,
|
|
74
|
+
"config" jsonb,
|
|
75
|
+
"secret_ref" text,
|
|
76
|
+
"last_tested_at" timestamp with time zone,
|
|
77
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
78
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
79
|
+
);
|
|
80
|
+
--> statement-breakpoint
|
|
81
|
+
ALTER TABLE "workflow_configs" ADD CONSTRAINT "workflow_configs_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
82
|
+
ALTER TABLE "workflow_configs" ADD CONSTRAINT "workflow_configs_team_id_teams_id_fk" FOREIGN KEY ("team_id") REFERENCES "public"."teams"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
83
|
+
ALTER TABLE "agent_mcp_servers" ADD CONSTRAINT "agent_mcp_servers_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
84
|
+
ALTER TABLE "agent_mcp_servers" ADD CONSTRAINT "agent_mcp_servers_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
85
|
+
ALTER TABLE "agent_mcp_servers" ADD CONSTRAINT "agent_mcp_servers_mcp_server_id_tenant_mcp_servers_id_fk" FOREIGN KEY ("mcp_server_id") REFERENCES "public"."tenant_mcp_servers"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
86
|
+
ALTER TABLE "agent_template_mcp_servers" ADD CONSTRAINT "agent_template_mcp_servers_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
87
|
+
ALTER TABLE "agent_template_mcp_servers" ADD CONSTRAINT "agent_template_mcp_servers_mcp_server_id_tenant_mcp_servers_id_fk" FOREIGN KEY ("mcp_server_id") REFERENCES "public"."tenant_mcp_servers"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
88
|
+
ALTER TABLE "tenant_mcp_servers" ADD CONSTRAINT "tenant_mcp_servers_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
89
|
+
ALTER TABLE "user_mcp_tokens" ADD CONSTRAINT "user_mcp_tokens_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
90
|
+
ALTER TABLE "user_mcp_tokens" ADD CONSTRAINT "user_mcp_tokens_mcp_server_id_tenant_mcp_servers_id_fk" FOREIGN KEY ("mcp_server_id") REFERENCES "public"."tenant_mcp_servers"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
91
|
+
ALTER TABLE "tenant_builtin_tools" ADD CONSTRAINT "tenant_builtin_tools_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
92
|
+
CREATE INDEX "workflow_configs_tenant_idx" ON "workflow_configs" USING btree ("tenant_id");--> statement-breakpoint
|
|
93
|
+
CREATE INDEX "workflow_configs_tenant_team_idx" ON "workflow_configs" USING btree ("tenant_id","team_id");--> statement-breakpoint
|
|
94
|
+
CREATE UNIQUE INDEX "uq_agent_mcp_servers" ON "agent_mcp_servers" USING btree ("agent_id","mcp_server_id");--> statement-breakpoint
|
|
95
|
+
CREATE INDEX "idx_agent_mcp_servers_agent" ON "agent_mcp_servers" USING btree ("agent_id");--> statement-breakpoint
|
|
96
|
+
CREATE UNIQUE INDEX "uq_agent_template_mcp_servers" ON "agent_template_mcp_servers" USING btree ("template_id","mcp_server_id");--> statement-breakpoint
|
|
97
|
+
CREATE INDEX "idx_agent_template_mcp_servers_template" ON "agent_template_mcp_servers" USING btree ("template_id");--> statement-breakpoint
|
|
98
|
+
CREATE UNIQUE INDEX "uq_tenant_mcp_servers_slug" ON "tenant_mcp_servers" USING btree ("tenant_id","slug");--> statement-breakpoint
|
|
99
|
+
CREATE INDEX "idx_tenant_mcp_servers_tenant" ON "tenant_mcp_servers" USING btree ("tenant_id");--> statement-breakpoint
|
|
100
|
+
CREATE UNIQUE INDEX "uq_user_mcp_tokens" ON "user_mcp_tokens" USING btree ("user_id","mcp_server_id");--> statement-breakpoint
|
|
101
|
+
CREATE INDEX "idx_user_mcp_tokens_user" ON "user_mcp_tokens" USING btree ("user_id");--> statement-breakpoint
|
|
102
|
+
CREATE UNIQUE INDEX "uq_tenant_builtin_tools" ON "tenant_builtin_tools" USING btree ("tenant_id","tool_slug");--> statement-breakpoint
|
|
103
|
+
CREATE INDEX "idx_tenant_builtin_tools_tenant" ON "tenant_builtin_tools" USING btree ("tenant_id");
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
CREATE TABLE "webhook_deliveries" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
3
|
+
"webhook_id" uuid,
|
|
4
|
+
"tenant_id" uuid,
|
|
5
|
+
"target_type" text,
|
|
6
|
+
"provider_id" uuid,
|
|
7
|
+
"provider_name" text,
|
|
8
|
+
"provider_event_id" text,
|
|
9
|
+
"external_task_id" text,
|
|
10
|
+
"provider_user_id" text,
|
|
11
|
+
"normalized_kind" text,
|
|
12
|
+
"received_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
13
|
+
"source_ip" text,
|
|
14
|
+
"body_preview" text,
|
|
15
|
+
"body_sha256" text,
|
|
16
|
+
"body_size_bytes" integer,
|
|
17
|
+
"headers_safe" jsonb,
|
|
18
|
+
"signature_prefix" text,
|
|
19
|
+
"signature_status" text NOT NULL,
|
|
20
|
+
"resolution_status" text NOT NULL,
|
|
21
|
+
"thread_id" uuid,
|
|
22
|
+
"thread_created" boolean,
|
|
23
|
+
"status_code" integer,
|
|
24
|
+
"error_message" text,
|
|
25
|
+
"duration_ms" integer,
|
|
26
|
+
"retry_count" integer DEFAULT 0 NOT NULL,
|
|
27
|
+
"is_replay" boolean DEFAULT false NOT NULL,
|
|
28
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
29
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
30
|
+
);
|
|
31
|
+
--> statement-breakpoint
|
|
32
|
+
ALTER TABLE "webhooks" ADD COLUMN "connect_provider_id" uuid;--> statement-breakpoint
|
|
33
|
+
ALTER TABLE "webhook_deliveries" ADD CONSTRAINT "webhook_deliveries_webhook_id_webhooks_id_fk" FOREIGN KEY ("webhook_id") REFERENCES "public"."webhooks"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
34
|
+
ALTER TABLE "webhook_deliveries" ADD CONSTRAINT "webhook_deliveries_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
35
|
+
ALTER TABLE "webhook_deliveries" ADD CONSTRAINT "webhook_deliveries_provider_id_connect_providers_id_fk" FOREIGN KEY ("provider_id") REFERENCES "public"."connect_providers"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
36
|
+
CREATE INDEX "idx_webhook_deliveries_webhook_received" ON "webhook_deliveries" USING btree ("webhook_id","received_at");--> statement-breakpoint
|
|
37
|
+
CREATE INDEX "idx_webhook_deliveries_tenant_received" ON "webhook_deliveries" USING btree ("tenant_id","received_at");--> statement-breakpoint
|
|
38
|
+
CREATE INDEX "idx_webhook_deliveries_status" ON "webhook_deliveries" USING btree ("resolution_status");--> statement-breakpoint
|
|
39
|
+
CREATE UNIQUE INDEX "uq_webhook_deliveries_provider_event" ON "webhook_deliveries" USING btree ("provider_name","provider_event_id") WHERE provider_event_id IS NOT NULL;--> statement-breakpoint
|
|
40
|
+
ALTER TABLE "webhooks" ADD CONSTRAINT "webhooks_connect_provider_id_connect_providers_id_fk" FOREIGN KEY ("connect_provider_id") REFERENCES "public"."connect_providers"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
41
|
+
CREATE INDEX "idx_webhooks_provider_tenant" ON "webhooks" USING btree ("connect_provider_id","tenant_id");
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
ALTER TABLE "webhook_deliveries" DROP CONSTRAINT "webhook_deliveries_webhook_id_webhooks_id_fk";
|
|
2
|
+
--> statement-breakpoint
|
|
3
|
+
ALTER TABLE "webhook_deliveries" ADD CONSTRAINT "webhook_deliveries_webhook_id_webhooks_id_fk" FOREIGN KEY ("webhook_id") REFERENCES "public"."webhooks"("id") ON DELETE set null ON UPDATE no action;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-- Defensive unique index on external task correlation key.
|
|
2
|
+
--
|
|
3
|
+
-- Background: a single external task-create can fire multiple webhooks in quick
|
|
4
|
+
-- succession (task.created + assigned/status_changed/updated). Each
|
|
5
|
+
-- lambda invocation races to ensure the thread; without a uniqueness
|
|
6
|
+
-- guarantee, concurrent inserts all succeed and we end up with 4
|
|
7
|
+
-- duplicate threads for the same external task. The application-side
|
|
8
|
+
-- fix (in-process stamping in chat-agent-invoke) closes the race for
|
|
9
|
+
-- MCP-driven creates, but this index is the backstop for any other
|
|
10
|
+
-- code path that could hit the race.
|
|
11
|
+
--
|
|
12
|
+
-- Partial index — only enforces when the external task id is
|
|
13
|
+
-- populated, so pre-sync threads (metadata.workflowId set, no
|
|
14
|
+
-- externalTaskId yet) remain unconstrained.
|
|
15
|
+
--
|
|
16
|
+
-- Heads up for operators: if there are existing duplicate rows with
|
|
17
|
+
-- the same (tenant_id, externalTaskId), this CREATE will fail. Clean
|
|
18
|
+
-- up duplicates manually before applying this migration, e.g.
|
|
19
|
+
-- SELECT tenant_id, metadata->'external'->>'externalTaskId' AS eid,
|
|
20
|
+
-- COUNT(*), array_agg(id ORDER BY created_at) AS ids
|
|
21
|
+
-- FROM threads
|
|
22
|
+
-- WHERE metadata->'external'->>'externalTaskId' IS NOT NULL
|
|
23
|
+
-- GROUP BY 1, 2 HAVING COUNT(*) > 1;
|
|
24
|
+
-- then delete all but the first id per group.
|
|
25
|
+
|
|
26
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "threads_tenant_external_task_id_unique"
|
|
27
|
+
ON "threads" (
|
|
28
|
+
"tenant_id",
|
|
29
|
+
((metadata -> 'external' ->> 'externalTaskId'))
|
|
30
|
+
)
|
|
31
|
+
WHERE (metadata -> 'external' ->> 'externalTaskId') IS NOT NULL;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
-- Promote `metadata.external.externalTaskId` to a first-class column.
|
|
2
|
+
--
|
|
3
|
+
-- Background: this id is the hot lookup key for every inbound webhook
|
|
4
|
+
-- (correlation + idempotency), and is used by the mobile Tasks list
|
|
5
|
+
-- and the `ensureExternalTaskThread` upsert. A JSONB-expression index
|
|
6
|
+
-- was the wrong shape. We keep the rest of `metadata.external` in
|
|
7
|
+
-- JSONB (provider, connectionId, latestEnvelope) since those aren't
|
|
8
|
+
-- hot keys.
|
|
9
|
+
|
|
10
|
+
ALTER TABLE "threads" ADD COLUMN IF NOT EXISTS "external_task_id" text;--> statement-breakpoint
|
|
11
|
+
|
|
12
|
+
-- Backfill from existing rows.
|
|
13
|
+
UPDATE "threads"
|
|
14
|
+
SET "external_task_id" = metadata -> 'external' ->> 'externalTaskId'
|
|
15
|
+
WHERE (metadata -> 'external' ->> 'externalTaskId') IS NOT NULL
|
|
16
|
+
AND "external_task_id" IS NULL;--> statement-breakpoint
|
|
17
|
+
|
|
18
|
+
-- Collapse duplicate rows that accumulated before the in-process
|
|
19
|
+
-- stamping fix (chat-agent-invoke). Keeps the earliest row per
|
|
20
|
+
-- (tenant_id, external_task_id) group, deletes the rest. Necessary
|
|
21
|
+
-- prerequisite for the unique index below.
|
|
22
|
+
WITH dupes AS (
|
|
23
|
+
SELECT id,
|
|
24
|
+
ROW_NUMBER() OVER (
|
|
25
|
+
PARTITION BY tenant_id, external_task_id
|
|
26
|
+
ORDER BY created_at ASC, id ASC
|
|
27
|
+
) AS rn
|
|
28
|
+
FROM "threads"
|
|
29
|
+
WHERE external_task_id IS NOT NULL
|
|
30
|
+
)
|
|
31
|
+
DELETE FROM "threads"
|
|
32
|
+
WHERE id IN (SELECT id FROM dupes WHERE rn > 1);--> statement-breakpoint
|
|
33
|
+
|
|
34
|
+
-- Drop the old JSONB-expression unique index from migration 0007 (if
|
|
35
|
+
-- it was created — the partial index may have failed on deploy if
|
|
36
|
+
-- dupes were present).
|
|
37
|
+
DROP INDEX IF EXISTS "threads_tenant_external_task_id_unique";--> statement-breakpoint
|
|
38
|
+
|
|
39
|
+
-- Defensive unique index on the new column. Partial so pre-sync
|
|
40
|
+
-- threads (NULL external_task_id) remain unconstrained.
|
|
41
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "threads_tenant_external_task_id_unique"
|
|
42
|
+
ON "threads" ("tenant_id", "external_task_id")
|
|
43
|
+
WHERE external_task_id IS NOT NULL;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
CREATE TABLE "eval_results" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
3
|
+
"run_id" uuid NOT NULL,
|
|
4
|
+
"test_case_id" uuid,
|
|
5
|
+
"status" text NOT NULL,
|
|
6
|
+
"score" numeric(5, 4),
|
|
7
|
+
"duration_ms" integer,
|
|
8
|
+
"agent_session_id" text,
|
|
9
|
+
"input" text,
|
|
10
|
+
"expected" text,
|
|
11
|
+
"actual_output" text,
|
|
12
|
+
"evaluator_results" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
13
|
+
"assertions" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
14
|
+
"error_message" text,
|
|
15
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
16
|
+
);
|
|
17
|
+
--> statement-breakpoint
|
|
18
|
+
CREATE TABLE "eval_runs" (
|
|
19
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
20
|
+
"tenant_id" uuid NOT NULL,
|
|
21
|
+
"agent_id" uuid,
|
|
22
|
+
"status" text DEFAULT 'pending' NOT NULL,
|
|
23
|
+
"model" text,
|
|
24
|
+
"categories" text[] DEFAULT '{}'::text[] NOT NULL,
|
|
25
|
+
"total_tests" integer DEFAULT 0 NOT NULL,
|
|
26
|
+
"passed" integer DEFAULT 0 NOT NULL,
|
|
27
|
+
"failed" integer DEFAULT 0 NOT NULL,
|
|
28
|
+
"pass_rate" numeric(5, 4),
|
|
29
|
+
"regression" boolean DEFAULT false NOT NULL,
|
|
30
|
+
"cost_usd" numeric(12, 6),
|
|
31
|
+
"error_message" text,
|
|
32
|
+
"started_at" timestamp with time zone,
|
|
33
|
+
"completed_at" timestamp with time zone,
|
|
34
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
35
|
+
);
|
|
36
|
+
--> statement-breakpoint
|
|
37
|
+
CREATE TABLE "eval_test_cases" (
|
|
38
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
39
|
+
"tenant_id" uuid NOT NULL,
|
|
40
|
+
"name" text NOT NULL,
|
|
41
|
+
"category" text NOT NULL,
|
|
42
|
+
"query" text NOT NULL,
|
|
43
|
+
"system_prompt" text,
|
|
44
|
+
"assertions" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
45
|
+
"agentcore_evaluator_ids" text[] DEFAULT '{}'::text[] NOT NULL,
|
|
46
|
+
"tags" text[] DEFAULT '{}'::text[] NOT NULL,
|
|
47
|
+
"enabled" boolean DEFAULT true NOT NULL,
|
|
48
|
+
"source" text DEFAULT 'manual' NOT NULL,
|
|
49
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
50
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
51
|
+
);
|
|
52
|
+
--> statement-breakpoint
|
|
53
|
+
ALTER TABLE "eval_results" ADD CONSTRAINT "eval_results_run_id_eval_runs_id_fk" FOREIGN KEY ("run_id") REFERENCES "public"."eval_runs"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
54
|
+
ALTER TABLE "eval_results" ADD CONSTRAINT "eval_results_test_case_id_eval_test_cases_id_fk" FOREIGN KEY ("test_case_id") REFERENCES "public"."eval_test_cases"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
55
|
+
ALTER TABLE "eval_runs" ADD CONSTRAINT "eval_runs_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
56
|
+
ALTER TABLE "eval_runs" ADD CONSTRAINT "eval_runs_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
57
|
+
ALTER TABLE "eval_test_cases" ADD CONSTRAINT "eval_test_cases_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
58
|
+
CREATE INDEX "idx_eval_results_run" ON "eval_results" USING btree ("run_id");--> statement-breakpoint
|
|
59
|
+
CREATE INDEX "idx_eval_results_test_case_created" ON "eval_results" USING btree ("test_case_id","created_at");--> statement-breakpoint
|
|
60
|
+
CREATE INDEX "idx_eval_runs_tenant_created" ON "eval_runs" USING btree ("tenant_id","created_at");--> statement-breakpoint
|
|
61
|
+
CREATE INDEX "idx_eval_runs_tenant_agent_created" ON "eval_runs" USING btree ("tenant_id","agent_id","created_at");--> statement-breakpoint
|
|
62
|
+
CREATE INDEX "idx_eval_runs_tenant_status" ON "eval_runs" USING btree ("tenant_id","status");--> statement-breakpoint
|
|
63
|
+
CREATE INDEX "idx_eval_test_cases_tenant_category" ON "eval_test_cases" USING btree ("tenant_id","category");--> statement-breakpoint
|
|
64
|
+
CREATE INDEX "idx_eval_test_cases_tenant_enabled" ON "eval_test_cases" USING btree ("tenant_id","enabled");
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
ALTER TABLE "eval_test_cases" ADD COLUMN "agent_template_id" uuid;--> statement-breakpoint
|
|
2
|
+
ALTER TABLE "eval_test_cases" ADD CONSTRAINT "eval_test_cases_agent_template_id_agent_templates_id_fk" FOREIGN KEY ("agent_template_id") REFERENCES "public"."agent_templates"("id") ON DELETE no action ON UPDATE no action;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
ALTER TABLE "eval_runs" ADD COLUMN "agent_template_id" uuid;--> statement-breakpoint
|
|
2
|
+
ALTER TABLE "eval_runs" ADD CONSTRAINT "eval_runs_agent_template_id_agent_templates_id_fk" FOREIGN KEY ("agent_template_id") REFERENCES "public"."agent_templates"("id") ON DELETE no action ON UPDATE no action;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- Idempotency for the seedEvalTestCases mutation. Without this, calling
|
|
2
|
+
-- seedEvalTestCases twice would duplicate every yaml-seed row. The partial
|
|
3
|
+
-- index intentionally scopes to source='yaml-seed' so user-authored tests
|
|
4
|
+
-- can re-use any name they like without colliding with the seed pack.
|
|
5
|
+
--
|
|
6
|
+
-- Apply manually (not registered in drizzle/meta/_journal.json):
|
|
7
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0012_eval_seed_unique.sql
|
|
8
|
+
--
|
|
9
|
+
-- Drift detection:
|
|
10
|
+
-- bash scripts/db-migrate-manual.sh
|
|
11
|
+
--
|
|
12
|
+
-- creates: public.uq_eval_test_cases_tenant_seed_name
|
|
13
|
+
|
|
14
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_eval_test_cases_tenant_seed_name
|
|
15
|
+
ON eval_test_cases (tenant_id, name)
|
|
16
|
+
WHERE source = 'yaml-seed';
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
-- Compounding Memory (wiki) schema. pgvector is required for body_embedding
|
|
2
|
+
-- on wiki_page_sections. Extension is idempotent; already installed on dev
|
|
3
|
+
-- Aurora (0.7.4) but needed by any fresh environment.
|
|
4
|
+
CREATE EXTENSION IF NOT EXISTS vector;
|
|
5
|
+
--> statement-breakpoint
|
|
6
|
+
CREATE TABLE "wiki_compile_cursors" (
|
|
7
|
+
"tenant_id" uuid NOT NULL,
|
|
8
|
+
"owner_id" uuid NOT NULL,
|
|
9
|
+
"last_record_updated_at" timestamp with time zone,
|
|
10
|
+
"last_record_id" text,
|
|
11
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
12
|
+
CONSTRAINT "wiki_compile_cursors_pkey" PRIMARY KEY("tenant_id","owner_id")
|
|
13
|
+
);
|
|
14
|
+
--> statement-breakpoint
|
|
15
|
+
CREATE TABLE "wiki_compile_jobs" (
|
|
16
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
17
|
+
"tenant_id" uuid NOT NULL,
|
|
18
|
+
"owner_id" uuid NOT NULL,
|
|
19
|
+
"dedupe_key" text NOT NULL,
|
|
20
|
+
"status" text DEFAULT 'pending' NOT NULL,
|
|
21
|
+
"trigger" text NOT NULL,
|
|
22
|
+
"attempt" integer DEFAULT 0 NOT NULL,
|
|
23
|
+
"claimed_at" timestamp with time zone,
|
|
24
|
+
"started_at" timestamp with time zone,
|
|
25
|
+
"finished_at" timestamp with time zone,
|
|
26
|
+
"error" text,
|
|
27
|
+
"metrics" jsonb,
|
|
28
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
29
|
+
CONSTRAINT "wiki_compile_jobs_dedupe_key_unique" UNIQUE("dedupe_key")
|
|
30
|
+
);
|
|
31
|
+
--> statement-breakpoint
|
|
32
|
+
CREATE TABLE "wiki_page_aliases" (
|
|
33
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
34
|
+
"page_id" uuid NOT NULL,
|
|
35
|
+
"alias" text NOT NULL,
|
|
36
|
+
"source" text NOT NULL,
|
|
37
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
38
|
+
);
|
|
39
|
+
--> statement-breakpoint
|
|
40
|
+
CREATE TABLE "wiki_page_links" (
|
|
41
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
42
|
+
"from_page_id" uuid NOT NULL,
|
|
43
|
+
"to_page_id" uuid NOT NULL,
|
|
44
|
+
"context" text,
|
|
45
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
46
|
+
);
|
|
47
|
+
--> statement-breakpoint
|
|
48
|
+
CREATE TABLE "wiki_page_sections" (
|
|
49
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
50
|
+
"page_id" uuid NOT NULL,
|
|
51
|
+
"section_slug" text NOT NULL,
|
|
52
|
+
"heading" text NOT NULL,
|
|
53
|
+
"body_md" text NOT NULL,
|
|
54
|
+
"position" integer NOT NULL,
|
|
55
|
+
"body_embedding" vector(1024),
|
|
56
|
+
"last_source_at" timestamp with time zone,
|
|
57
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
58
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
59
|
+
);
|
|
60
|
+
--> statement-breakpoint
|
|
61
|
+
CREATE TABLE "wiki_pages" (
|
|
62
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
63
|
+
"tenant_id" uuid NOT NULL,
|
|
64
|
+
"owner_id" uuid NOT NULL,
|
|
65
|
+
"type" text NOT NULL,
|
|
66
|
+
"slug" text NOT NULL,
|
|
67
|
+
"title" text NOT NULL,
|
|
68
|
+
"summary" text,
|
|
69
|
+
"body_md" text,
|
|
70
|
+
"search_tsv" "tsvector" GENERATED ALWAYS AS (to_tsvector('english'::regconfig, coalesce(title,'') || ' ' || coalesce(summary,'') || ' ' || coalesce(body_md,''))) STORED,
|
|
71
|
+
"status" text DEFAULT 'active' NOT NULL,
|
|
72
|
+
"last_compiled_at" timestamp with time zone,
|
|
73
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
74
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
75
|
+
);
|
|
76
|
+
--> statement-breakpoint
|
|
77
|
+
CREATE TABLE "wiki_section_sources" (
|
|
78
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
79
|
+
"section_id" uuid NOT NULL,
|
|
80
|
+
"source_kind" text NOT NULL,
|
|
81
|
+
"source_ref" text NOT NULL,
|
|
82
|
+
"first_seen_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
83
|
+
);
|
|
84
|
+
--> statement-breakpoint
|
|
85
|
+
CREATE TABLE "wiki_unresolved_mentions" (
|
|
86
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
87
|
+
"tenant_id" uuid NOT NULL,
|
|
88
|
+
"owner_id" uuid NOT NULL,
|
|
89
|
+
"alias" text NOT NULL,
|
|
90
|
+
"alias_normalized" text NOT NULL,
|
|
91
|
+
"mention_count" integer DEFAULT 1 NOT NULL,
|
|
92
|
+
"first_seen_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
93
|
+
"last_seen_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
94
|
+
"sample_contexts" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
95
|
+
"suggested_type" text,
|
|
96
|
+
"status" text DEFAULT 'open' NOT NULL,
|
|
97
|
+
"promoted_page_id" uuid,
|
|
98
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
99
|
+
);
|
|
100
|
+
--> statement-breakpoint
|
|
101
|
+
ALTER TABLE "tenants" ADD COLUMN "wiki_compile_enabled" boolean DEFAULT false NOT NULL;--> statement-breakpoint
|
|
102
|
+
ALTER TABLE "wiki_compile_cursors" ADD CONSTRAINT "wiki_compile_cursors_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
103
|
+
ALTER TABLE "wiki_compile_cursors" ADD CONSTRAINT "wiki_compile_cursors_owner_id_agents_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
104
|
+
ALTER TABLE "wiki_compile_jobs" ADD CONSTRAINT "wiki_compile_jobs_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
105
|
+
ALTER TABLE "wiki_compile_jobs" ADD CONSTRAINT "wiki_compile_jobs_owner_id_agents_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
106
|
+
ALTER TABLE "wiki_page_aliases" ADD CONSTRAINT "wiki_page_aliases_page_id_wiki_pages_id_fk" FOREIGN KEY ("page_id") REFERENCES "public"."wiki_pages"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
107
|
+
ALTER TABLE "wiki_page_links" ADD CONSTRAINT "wiki_page_links_from_page_id_wiki_pages_id_fk" FOREIGN KEY ("from_page_id") REFERENCES "public"."wiki_pages"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
108
|
+
ALTER TABLE "wiki_page_links" ADD CONSTRAINT "wiki_page_links_to_page_id_wiki_pages_id_fk" FOREIGN KEY ("to_page_id") REFERENCES "public"."wiki_pages"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
109
|
+
ALTER TABLE "wiki_page_sections" ADD CONSTRAINT "wiki_page_sections_page_id_wiki_pages_id_fk" FOREIGN KEY ("page_id") REFERENCES "public"."wiki_pages"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
110
|
+
ALTER TABLE "wiki_pages" ADD CONSTRAINT "wiki_pages_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
111
|
+
ALTER TABLE "wiki_pages" ADD CONSTRAINT "wiki_pages_owner_id_agents_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
112
|
+
ALTER TABLE "wiki_section_sources" ADD CONSTRAINT "wiki_section_sources_section_id_wiki_page_sections_id_fk" FOREIGN KEY ("section_id") REFERENCES "public"."wiki_page_sections"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
113
|
+
ALTER TABLE "wiki_unresolved_mentions" ADD CONSTRAINT "wiki_unresolved_mentions_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
114
|
+
ALTER TABLE "wiki_unresolved_mentions" ADD CONSTRAINT "wiki_unresolved_mentions_owner_id_agents_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
115
|
+
ALTER TABLE "wiki_unresolved_mentions" ADD CONSTRAINT "wiki_unresolved_mentions_promoted_page_id_wiki_pages_id_fk" FOREIGN KEY ("promoted_page_id") REFERENCES "public"."wiki_pages"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
116
|
+
CREATE INDEX "idx_wiki_compile_jobs_scope_status_created" ON "wiki_compile_jobs" USING btree ("tenant_id","owner_id","status","created_at");--> statement-breakpoint
|
|
117
|
+
CREATE INDEX "idx_wiki_compile_jobs_status_created" ON "wiki_compile_jobs" USING btree ("status","created_at");--> statement-breakpoint
|
|
118
|
+
CREATE UNIQUE INDEX "uq_wiki_page_aliases_page_alias" ON "wiki_page_aliases" USING btree ("page_id","alias");--> statement-breakpoint
|
|
119
|
+
CREATE INDEX "idx_wiki_page_aliases_alias" ON "wiki_page_aliases" USING btree ("alias");--> statement-breakpoint
|
|
120
|
+
CREATE UNIQUE INDEX "uq_wiki_page_links_from_to" ON "wiki_page_links" USING btree ("from_page_id","to_page_id");--> statement-breakpoint
|
|
121
|
+
CREATE INDEX "idx_wiki_page_links_to" ON "wiki_page_links" USING btree ("to_page_id");--> statement-breakpoint
|
|
122
|
+
CREATE UNIQUE INDEX "uq_wiki_page_sections_page_slug" ON "wiki_page_sections" USING btree ("page_id","section_slug");--> statement-breakpoint
|
|
123
|
+
CREATE INDEX "idx_wiki_page_sections_page_position" ON "wiki_page_sections" USING btree ("page_id","position");--> statement-breakpoint
|
|
124
|
+
CREATE UNIQUE INDEX "uq_wiki_pages_tenant_owner_type_slug" ON "wiki_pages" USING btree ("tenant_id","owner_id","type","slug");--> statement-breakpoint
|
|
125
|
+
CREATE INDEX "idx_wiki_pages_tenant_owner_type_status" ON "wiki_pages" USING btree ("tenant_id","owner_id","type","status");--> statement-breakpoint
|
|
126
|
+
CREATE INDEX "idx_wiki_pages_owner" ON "wiki_pages" USING btree ("owner_id");--> statement-breakpoint
|
|
127
|
+
CREATE INDEX "idx_wiki_pages_last_compiled" ON "wiki_pages" USING btree ("last_compiled_at");--> statement-breakpoint
|
|
128
|
+
CREATE INDEX "idx_wiki_pages_search_tsv" ON "wiki_pages" USING gin ("search_tsv");--> statement-breakpoint
|
|
129
|
+
CREATE UNIQUE INDEX "uq_wiki_section_sources_section_kind_ref" ON "wiki_section_sources" USING btree ("section_id","source_kind","source_ref");--> statement-breakpoint
|
|
130
|
+
CREATE INDEX "idx_wiki_section_sources_kind_ref" ON "wiki_section_sources" USING btree ("source_kind","source_ref");--> statement-breakpoint
|
|
131
|
+
CREATE UNIQUE INDEX "uq_wiki_unresolved_mentions_scope_alias_status" ON "wiki_unresolved_mentions" USING btree ("tenant_id","owner_id","alias_normalized","status");--> statement-breakpoint
|
|
132
|
+
CREATE INDEX "idx_wiki_unresolved_mentions_tenant_owner_status" ON "wiki_unresolved_mentions" USING btree ("tenant_id","owner_id","status");--> statement-breakpoint
|
|
133
|
+
CREATE INDEX "idx_wiki_unresolved_mentions_status_last_seen" ON "wiki_unresolved_mentions" USING btree ("status","last_seen_at");--> statement-breakpoint
|
|
134
|
+
-- Catch-up DROP COLUMNs for threads. The Task-concept strip (commit c4b92d2)
|
|
135
|
+
-- removed these from the Drizzle schema module but never emitted a migration.
|
|
136
|
+
-- Bundling them here keeps the schema snapshot (meta/0012_*_snapshot.json) and
|
|
137
|
+
-- the live DB consistent. Not part of the wiki feature.
|
|
138
|
+
ALTER TABLE "threads" DROP COLUMN IF EXISTS "sync_status";--> statement-breakpoint
|
|
139
|
+
ALTER TABLE "threads" DROP COLUMN IF EXISTS "sync_error";--> statement-breakpoint
|
|
140
|
+
ALTER TABLE "threads" DROP COLUMN IF EXISTS "external_task_id";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
DROP INDEX "uq_wiki_page_links_from_to";--> statement-breakpoint
|
|
2
|
+
ALTER TABLE "wiki_page_links" ADD COLUMN "kind" text DEFAULT 'reference' NOT NULL;--> statement-breakpoint
|
|
3
|
+
ALTER TABLE "wiki_page_sections" ADD COLUMN "aggregation" jsonb;--> statement-breakpoint
|
|
4
|
+
ALTER TABLE "wiki_pages" ADD COLUMN "parent_page_id" uuid;--> statement-breakpoint
|
|
5
|
+
ALTER TABLE "wiki_pages" ADD COLUMN "hubness_score" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
|
|
6
|
+
ALTER TABLE "wiki_pages" ADD COLUMN "tags" text[] DEFAULT ARRAY[]::text[] NOT NULL;--> statement-breakpoint
|
|
7
|
+
ALTER TABLE "wiki_unresolved_mentions" ADD COLUMN "cluster" jsonb;--> statement-breakpoint
|
|
8
|
+
ALTER TABLE "wiki_pages" ADD CONSTRAINT "wiki_pages_parent_page_id_wiki_pages_id_fk" FOREIGN KEY ("parent_page_id") REFERENCES "public"."wiki_pages"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
9
|
+
CREATE UNIQUE INDEX "uq_wiki_page_links_from_to_kind" ON "wiki_page_links" USING btree ("from_page_id","to_page_id","kind");--> statement-breakpoint
|
|
10
|
+
CREATE INDEX "idx_wiki_page_links_kind" ON "wiki_page_links" USING btree ("kind");--> statement-breakpoint
|
|
11
|
+
CREATE INDEX "idx_wiki_pages_parent" ON "wiki_pages" USING btree ("parent_page_id");
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
-- Hand-edited: prepend CREATE EXTENSION so greenfield deploys bring pg_trgm
|
|
2
|
+
-- up before the GIN indexes reference `gin_trgm_ops`. On dev / prod RDS the
|
|
3
|
+
-- extension is already installed (shared with Hindsight's similarity filter)
|
|
4
|
+
-- so this is a no-op. `CREATE INDEX CONCURRENTLY` was considered but cannot
|
|
5
|
+
-- run inside a transaction block, and drizzle wraps every migration in one —
|
|
6
|
+
-- the plain form is safe for our table sizes (<10k rows per scope).
|
|
7
|
+
CREATE EXTENSION IF NOT EXISTS pg_trgm;--> statement-breakpoint
|
|
8
|
+
CREATE INDEX "idx_wiki_page_aliases_alias_trgm" ON "wiki_page_aliases" USING gin ("alias" gin_trgm_ops);--> statement-breakpoint
|
|
9
|
+
CREATE INDEX "idx_wiki_pages_title_trgm" ON "wiki_pages" USING gin ("title" gin_trgm_ops);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-- Drop two wiki schema columns that were pre-emptively added in anticipation
|
|
2
|
+
-- of features that never shipped and were later killed by adversarial review:
|
|
3
|
+
--
|
|
4
|
+
-- - wiki_page_sections.body_embedding (vector(1024)):
|
|
5
|
+
-- "present but NULL in v1" per the original migration. pgvector
|
|
6
|
+
-- extension stays; only this column goes. Re-add later if embeddings
|
|
7
|
+
-- ship.
|
|
8
|
+
--
|
|
9
|
+
-- - wiki_unresolved_mentions.cluster (jsonb):
|
|
10
|
+
-- cluster enrichment feature was killed and superseded by the Place
|
|
11
|
+
-- capability (see docs/brainstorms/2026-04-21-wiki-place-capability-
|
|
12
|
+
-- requirements.md).
|
|
13
|
+
--
|
|
14
|
+
-- Pre-flight SQL run against dev on 2026-04-21 returned 0/1638 non-null
|
|
15
|
+
-- cluster rows and 0/2279 non-null body_embedding rows. Both columns are
|
|
16
|
+
-- verifiably unused.
|
|
17
|
+
--
|
|
18
|
+
-- Each DROP is wrapped in a DO-block that RE-CHECKS at migration apply time
|
|
19
|
+
-- and RAISEs EXCEPTION if a concurrent writer landed a value between
|
|
20
|
+
-- pre-flight and apply, so silent data loss is impossible.
|
|
21
|
+
DO $$ BEGIN IF (SELECT count(*) FROM wiki_page_sections WHERE body_embedding IS NOT NULL) > 0 THEN RAISE EXCEPTION 'wiki_page_sections.body_embedding contains non-null rows; aborting DROP COLUMN'; END IF; END $$;--> statement-breakpoint
|
|
22
|
+
ALTER TABLE "wiki_page_sections" DROP COLUMN IF EXISTS "body_embedding";--> statement-breakpoint
|
|
23
|
+
DO $$ BEGIN IF (SELECT count(*) FROM wiki_unresolved_mentions WHERE cluster IS NOT NULL) > 0 THEN RAISE EXCEPTION 'wiki_unresolved_mentions.cluster contains non-null rows; aborting DROP COLUMN'; END IF; END $$;--> statement-breakpoint
|
|
24
|
+
ALTER TABLE "wiki_unresolved_mentions" DROP COLUMN IF EXISTS "cluster";
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
-- Wiki Place capability v2 — first-class wiki_places table + wiki_pages.place_id FK.
|
|
2
|
+
--
|
|
3
|
+
-- See docs/plans/2026-04-21-005-feat-wiki-place-capability-v2-plan.md.
|
|
4
|
+
--
|
|
5
|
+
-- Purely additive; no existing rows are rewritten. The partial unique index
|
|
6
|
+
-- on (tenant_id, owner_id, google_place_id) WHERE google_place_id IS NOT NULL
|
|
7
|
+
-- enforces first-seen-wins for Google-sourced places within a scope.
|
|
8
|
+
--
|
|
9
|
+
-- No CI migration runner — apply manually via
|
|
10
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0017_wiki_places.sql
|
|
11
|
+
-- after PR A merges and before any code that references wiki_places runs in
|
|
12
|
+
-- production. See the plan's Documentation / Operational Notes section.
|
|
13
|
+
--
|
|
14
|
+
-- Pre-migration invariant (always true on day one since the table is new;
|
|
15
|
+
-- pattern documented for future loaders):
|
|
16
|
+
-- SELECT tenant_id, owner_id, google_place_id, count(*)
|
|
17
|
+
-- FROM wiki_places
|
|
18
|
+
-- WHERE google_place_id IS NOT NULL
|
|
19
|
+
-- GROUP BY 1, 2, 3 HAVING count(*) > 1;
|
|
20
|
+
-- must return zero rows before the unique index is created.
|
|
21
|
+
CREATE TABLE "wiki_places" (
|
|
22
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
23
|
+
"tenant_id" uuid NOT NULL,
|
|
24
|
+
"owner_id" uuid NOT NULL,
|
|
25
|
+
"name" text NOT NULL,
|
|
26
|
+
"google_place_id" text,
|
|
27
|
+
"geo_lat" numeric(9, 6),
|
|
28
|
+
"geo_lon" numeric(9, 6),
|
|
29
|
+
"address" text,
|
|
30
|
+
"parent_place_id" uuid,
|
|
31
|
+
"place_kind" text,
|
|
32
|
+
"source" text NOT NULL,
|
|
33
|
+
"source_payload" jsonb,
|
|
34
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
35
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
36
|
+
);
|
|
37
|
+
--> statement-breakpoint
|
|
38
|
+
ALTER TABLE "wiki_pages" ADD COLUMN "place_id" uuid;--> statement-breakpoint
|
|
39
|
+
ALTER TABLE "wiki_places" ADD CONSTRAINT "wiki_places_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
40
|
+
ALTER TABLE "wiki_places" ADD CONSTRAINT "wiki_places_owner_id_agents_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
41
|
+
ALTER TABLE "wiki_places" ADD CONSTRAINT "wiki_places_parent_place_id_wiki_places_id_fk" FOREIGN KEY ("parent_place_id") REFERENCES "public"."wiki_places"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
42
|
+
CREATE INDEX "idx_wiki_places_tenant_owner" ON "wiki_places" USING btree ("tenant_id","owner_id");--> statement-breakpoint
|
|
43
|
+
CREATE INDEX "idx_wiki_places_parent" ON "wiki_places" USING btree ("parent_place_id");--> statement-breakpoint
|
|
44
|
+
CREATE UNIQUE INDEX "uq_wiki_places_scope_google_place_id" ON "wiki_places" USING btree ("tenant_id","owner_id","google_place_id") WHERE "wiki_places"."google_place_id" IS NOT NULL;--> statement-breakpoint
|
|
45
|
+
ALTER TABLE "wiki_pages" ADD CONSTRAINT "wiki_pages_place_id_wiki_places_id_fk" FOREIGN KEY ("place_id") REFERENCES "public"."wiki_places"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
46
|
+
CREATE INDEX "idx_wiki_pages_place_id" ON "wiki_pages" USING btree ("place_id") WHERE "wiki_pages"."place_id" IS NOT NULL;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
-- Agent workspace overlay foundation — schema additions for Unit 1 of
|
|
2
|
+
-- docs/plans/2026-04-21-006-feat-agent-workspace-overlay-and-seeding-plan.md.
|
|
3
|
+
--
|
|
4
|
+
-- Adds:
|
|
5
|
+
-- • user_profiles.title / .timezone / .pronouns — rendered into agent USER.md
|
|
6
|
+
-- as {{HUMAN_TITLE}} / {{HUMAN_TIMEZONE}} / {{HUMAN_PRONOUNS}} during the
|
|
7
|
+
-- assignment write (Unit 6). Null → renders as "—" so the shape is stable.
|
|
8
|
+
-- • agents.agent_pinned_versions — per-file SHA-256 pins for guardrail-class
|
|
9
|
+
-- workspace files (GUARDRAILS.md, PLATFORM.md, CAPABILITIES.md). Keys are
|
|
10
|
+
-- canonical basenames; values are `sha256:<64-hex>` strings. Null until the
|
|
11
|
+
-- agent is created via createAgentFromTemplate (Unit 8) or converted by the
|
|
12
|
+
-- one-shot migration (Unit 10). Template edits to pinned files surface a
|
|
13
|
+
-- "Template update available" badge; acceptTemplateUpdate advances the hash.
|
|
14
|
+
--
|
|
15
|
+
-- Purely additive; no backfill needed. Column additions with NULL default are
|
|
16
|
+
-- non-blocking in Postgres regardless of row count.
|
|
17
|
+
--
|
|
18
|
+
-- No CI migration runner — apply manually via
|
|
19
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0018_agent_workspace_overlay.sql
|
|
20
|
+
-- after this PR merges and before any Phase 3 Lambda code (Units 6, 8, 10) that
|
|
21
|
+
-- references these columns deploys to production. See the plan's Documentation
|
|
22
|
+
-- / Operational Notes section.
|
|
23
|
+
ALTER TABLE "user_profiles" ADD COLUMN "title" text;--> statement-breakpoint
|
|
24
|
+
ALTER TABLE "user_profiles" ADD COLUMN "timezone" text;--> statement-breakpoint
|
|
25
|
+
ALTER TABLE "user_profiles" ADD COLUMN "pronouns" text;--> statement-breakpoint
|
|
26
|
+
ALTER TABLE "agents" ADD COLUMN "agent_pinned_versions" jsonb;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-- Agent self-serve tools — user_profiles columns for Unit 1 of
|
|
2
|
+
-- docs/plans/2026-04-22-003-feat-agent-self-serve-tools-plan.md.
|
|
3
|
+
--
|
|
4
|
+
-- Adds 4 nullable text columns that agents can update through the new
|
|
5
|
+
-- `update_user_profile` tool:
|
|
6
|
+
--
|
|
7
|
+
-- • call_by → rendered into USER.md as {{HUMAN_CALL_BY}}
|
|
8
|
+
-- • notes → rendered into USER.md as {{HUMAN_NOTES}}
|
|
9
|
+
-- • family → rendered into USER.md as {{HUMAN_FAMILY}}
|
|
10
|
+
-- • context → rendered into USER.md as {{HUMAN_CONTEXT}}
|
|
11
|
+
--
|
|
12
|
+
-- USER.md's {{HUMAN_PHONE}} is read from the existing `users.phone`
|
|
13
|
+
-- column (account-level contact info) — no separate profile column.
|
|
14
|
+
--
|
|
15
|
+
-- All nullable with no default — existing rows render "—" for each field
|
|
16
|
+
-- until the agent (or a human via the admin UI) populates them.
|
|
17
|
+
--
|
|
18
|
+
-- Purely additive; ADD COLUMN nullable on Postgres is O(1) regardless of
|
|
19
|
+
-- row count.
|
|
20
|
+
|
|
21
|
+
ALTER TABLE "user_profiles" ADD COLUMN "call_by" text;--> statement-breakpoint
|
|
22
|
+
ALTER TABLE "user_profiles" ADD COLUMN "notes" text;--> statement-breakpoint
|
|
23
|
+
ALTER TABLE "user_profiles" ADD COLUMN "family" text;--> statement-breakpoint
|
|
24
|
+
ALTER TABLE "user_profiles" ADD COLUMN "context" text;
|