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,217 @@
|
|
|
1
|
+
-- Purpose: make Spaces the required parent container for every Thread.
|
|
2
|
+
-- Plan: docs/plans/2026-05-19-003-feat-spaces-customer-onboarding-v1-plan.md (U13 follow-up)
|
|
3
|
+
-- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0109_space_owned_threads.sql
|
|
4
|
+
-- creates-constraint: public.threads.threads_space_id_required
|
|
5
|
+
-- creates-constraint: public.thread_participants.thread_participants_space_id_required
|
|
6
|
+
|
|
7
|
+
\set ON_ERROR_STOP on
|
|
8
|
+
|
|
9
|
+
BEGIN;
|
|
10
|
+
|
|
11
|
+
SET LOCAL lock_timeout = '5s';
|
|
12
|
+
SET LOCAL statement_timeout = '120s';
|
|
13
|
+
|
|
14
|
+
INSERT INTO public.spaces (
|
|
15
|
+
tenant_id,
|
|
16
|
+
slug,
|
|
17
|
+
name,
|
|
18
|
+
description,
|
|
19
|
+
prompt,
|
|
20
|
+
status,
|
|
21
|
+
kind,
|
|
22
|
+
template_key,
|
|
23
|
+
config
|
|
24
|
+
)
|
|
25
|
+
SELECT
|
|
26
|
+
t.id,
|
|
27
|
+
'general',
|
|
28
|
+
'General',
|
|
29
|
+
'Default Space for conversations that are not part of a configured workflow.',
|
|
30
|
+
'Use this Space for general collaboration, ad hoc questions, and Threads that do not belong to a specialized workflow.',
|
|
31
|
+
'active',
|
|
32
|
+
'custom',
|
|
33
|
+
'general',
|
|
34
|
+
'{"workflow":"general","version":1,"source":"space_owned_threads_migration"}'::jsonb
|
|
35
|
+
FROM public.tenants t
|
|
36
|
+
ON CONFLICT (tenant_id, slug)
|
|
37
|
+
DO UPDATE SET
|
|
38
|
+
name = EXCLUDED.name,
|
|
39
|
+
description = EXCLUDED.description,
|
|
40
|
+
prompt = EXCLUDED.prompt,
|
|
41
|
+
status = 'active',
|
|
42
|
+
kind = EXCLUDED.kind,
|
|
43
|
+
template_key = EXCLUDED.template_key,
|
|
44
|
+
config = EXCLUDED.config,
|
|
45
|
+
updated_at = now();
|
|
46
|
+
|
|
47
|
+
INSERT INTO public.spaces (
|
|
48
|
+
tenant_id,
|
|
49
|
+
slug,
|
|
50
|
+
name,
|
|
51
|
+
description,
|
|
52
|
+
prompt,
|
|
53
|
+
status,
|
|
54
|
+
kind,
|
|
55
|
+
template_key,
|
|
56
|
+
config
|
|
57
|
+
)
|
|
58
|
+
SELECT
|
|
59
|
+
t.id,
|
|
60
|
+
'customer-onboarding',
|
|
61
|
+
'Customer Onboarding',
|
|
62
|
+
'Closed-won customer onboarding cases, checklist coordination, and LastMile task links.',
|
|
63
|
+
'Coordinate customer onboarding after a closed-won opportunity. Keep the Thread factual, ask humans for missing source information, and keep required checklist tasks moving.',
|
|
64
|
+
'active',
|
|
65
|
+
'customer_onboarding',
|
|
66
|
+
'customer_onboarding',
|
|
67
|
+
'{"workflow":"customer_onboarding","version":1,"source":"space_owned_threads_migration"}'::jsonb
|
|
68
|
+
FROM public.tenants t
|
|
69
|
+
ON CONFLICT (tenant_id, slug)
|
|
70
|
+
DO UPDATE SET
|
|
71
|
+
name = EXCLUDED.name,
|
|
72
|
+
description = EXCLUDED.description,
|
|
73
|
+
prompt = COALESCE(public.spaces.prompt, EXCLUDED.prompt),
|
|
74
|
+
status = 'active',
|
|
75
|
+
kind = EXCLUDED.kind,
|
|
76
|
+
template_key = EXCLUDED.template_key,
|
|
77
|
+
config = COALESCE(public.spaces.config, EXCLUDED.config),
|
|
78
|
+
updated_at = now();
|
|
79
|
+
|
|
80
|
+
INSERT INTO public.space_members (
|
|
81
|
+
tenant_id,
|
|
82
|
+
space_id,
|
|
83
|
+
user_id,
|
|
84
|
+
role,
|
|
85
|
+
notification_preference
|
|
86
|
+
)
|
|
87
|
+
SELECT
|
|
88
|
+
u.tenant_id,
|
|
89
|
+
s.id,
|
|
90
|
+
u.id,
|
|
91
|
+
'member',
|
|
92
|
+
'subscribed'
|
|
93
|
+
FROM public.users u
|
|
94
|
+
JOIN public.spaces s
|
|
95
|
+
ON s.tenant_id = u.tenant_id
|
|
96
|
+
WHERE u.tenant_id IS NOT NULL
|
|
97
|
+
AND s.slug IN ('general', 'customer-onboarding')
|
|
98
|
+
ON CONFLICT (tenant_id, space_id, user_id)
|
|
99
|
+
DO NOTHING;
|
|
100
|
+
|
|
101
|
+
UPDATE public.threads t
|
|
102
|
+
SET
|
|
103
|
+
space_id = CASE
|
|
104
|
+
WHEN t.metadata ? 'customerOnboarding' THEN onboarding.id
|
|
105
|
+
ELSE general.id
|
|
106
|
+
END,
|
|
107
|
+
updated_at = now()
|
|
108
|
+
FROM public.spaces general
|
|
109
|
+
JOIN public.spaces onboarding
|
|
110
|
+
ON onboarding.tenant_id = general.tenant_id
|
|
111
|
+
AND onboarding.slug = 'customer-onboarding'
|
|
112
|
+
WHERE general.tenant_id = t.tenant_id
|
|
113
|
+
AND general.slug = 'general'
|
|
114
|
+
AND t.space_id IS NULL;
|
|
115
|
+
|
|
116
|
+
UPDATE public.thread_participants tp
|
|
117
|
+
SET
|
|
118
|
+
space_id = t.space_id,
|
|
119
|
+
updated_at = now()
|
|
120
|
+
FROM public.threads t
|
|
121
|
+
WHERE tp.thread_id = t.id
|
|
122
|
+
AND tp.space_id IS NULL
|
|
123
|
+
AND t.space_id IS NOT NULL;
|
|
124
|
+
|
|
125
|
+
INSERT INTO public.thread_participants (
|
|
126
|
+
tenant_id,
|
|
127
|
+
thread_id,
|
|
128
|
+
space_id,
|
|
129
|
+
participant_type,
|
|
130
|
+
user_id,
|
|
131
|
+
role,
|
|
132
|
+
source,
|
|
133
|
+
notification_preference
|
|
134
|
+
)
|
|
135
|
+
SELECT
|
|
136
|
+
t.tenant_id,
|
|
137
|
+
t.id,
|
|
138
|
+
t.space_id,
|
|
139
|
+
'user',
|
|
140
|
+
t.user_id,
|
|
141
|
+
CASE WHEN t.created_by_id = t.user_id::text THEN 'requester' ELSE 'member' END,
|
|
142
|
+
'space_owned_threads_backfill',
|
|
143
|
+
'subscribed'
|
|
144
|
+
FROM public.threads t
|
|
145
|
+
WHERE t.space_id IS NOT NULL
|
|
146
|
+
AND t.user_id IS NOT NULL
|
|
147
|
+
ON CONFLICT DO NOTHING;
|
|
148
|
+
|
|
149
|
+
INSERT INTO public.thread_participants (
|
|
150
|
+
tenant_id,
|
|
151
|
+
thread_id,
|
|
152
|
+
space_id,
|
|
153
|
+
participant_type,
|
|
154
|
+
agent_id,
|
|
155
|
+
role,
|
|
156
|
+
source,
|
|
157
|
+
notification_preference
|
|
158
|
+
)
|
|
159
|
+
SELECT
|
|
160
|
+
t.tenant_id,
|
|
161
|
+
t.id,
|
|
162
|
+
t.space_id,
|
|
163
|
+
'agent',
|
|
164
|
+
t.agent_id,
|
|
165
|
+
'agent',
|
|
166
|
+
'space_owned_threads_backfill',
|
|
167
|
+
'mentions'
|
|
168
|
+
FROM public.threads t
|
|
169
|
+
WHERE t.space_id IS NOT NULL
|
|
170
|
+
AND t.agent_id IS NOT NULL
|
|
171
|
+
ON CONFLICT DO NOTHING;
|
|
172
|
+
|
|
173
|
+
ALTER TABLE public.threads
|
|
174
|
+
DROP CONSTRAINT IF EXISTS threads_space_id_spaces_id_fk;
|
|
175
|
+
|
|
176
|
+
ALTER TABLE public.threads
|
|
177
|
+
DROP CONSTRAINT IF EXISTS threads_space_id_required;
|
|
178
|
+
|
|
179
|
+
ALTER TABLE public.threads
|
|
180
|
+
ALTER COLUMN space_id SET NOT NULL;
|
|
181
|
+
|
|
182
|
+
ALTER TABLE public.threads
|
|
183
|
+
ADD CONSTRAINT threads_space_id_spaces_id_fk
|
|
184
|
+
FOREIGN KEY (space_id)
|
|
185
|
+
REFERENCES public.spaces(id)
|
|
186
|
+
ON DELETE RESTRICT;
|
|
187
|
+
|
|
188
|
+
ALTER TABLE public.threads
|
|
189
|
+
ADD CONSTRAINT threads_space_id_required
|
|
190
|
+
CHECK (space_id IS NOT NULL) NOT VALID;
|
|
191
|
+
|
|
192
|
+
ALTER TABLE public.threads
|
|
193
|
+
VALIDATE CONSTRAINT threads_space_id_required;
|
|
194
|
+
|
|
195
|
+
ALTER TABLE public.thread_participants
|
|
196
|
+
DROP CONSTRAINT IF EXISTS thread_participants_space_id_spaces_id_fk;
|
|
197
|
+
|
|
198
|
+
ALTER TABLE public.thread_participants
|
|
199
|
+
DROP CONSTRAINT IF EXISTS thread_participants_space_id_required;
|
|
200
|
+
|
|
201
|
+
ALTER TABLE public.thread_participants
|
|
202
|
+
ALTER COLUMN space_id SET NOT NULL;
|
|
203
|
+
|
|
204
|
+
ALTER TABLE public.thread_participants
|
|
205
|
+
ADD CONSTRAINT thread_participants_space_id_spaces_id_fk
|
|
206
|
+
FOREIGN KEY (space_id)
|
|
207
|
+
REFERENCES public.spaces(id)
|
|
208
|
+
ON DELETE RESTRICT;
|
|
209
|
+
|
|
210
|
+
ALTER TABLE public.thread_participants
|
|
211
|
+
ADD CONSTRAINT thread_participants_space_id_required
|
|
212
|
+
CHECK (space_id IS NOT NULL) NOT VALID;
|
|
213
|
+
|
|
214
|
+
ALTER TABLE public.thread_participants
|
|
215
|
+
VALIDATE CONSTRAINT thread_participants_space_id_required;
|
|
216
|
+
|
|
217
|
+
COMMIT;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-- Purpose: add participant-scoped read state for collaborative Space Threads.
|
|
2
|
+
-- Plan: docs/plans/2026-05-19-005-feat-spaces-collaborative-chat-ui-plan.md (U1)
|
|
3
|
+
-- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0110_thread_participant_read_state.sql
|
|
4
|
+
-- creates-column: public.thread_participants.last_read_at
|
|
5
|
+
-- creates: public.idx_thread_participants_user_unread
|
|
6
|
+
|
|
7
|
+
\set ON_ERROR_STOP on
|
|
8
|
+
|
|
9
|
+
BEGIN;
|
|
10
|
+
|
|
11
|
+
SET LOCAL lock_timeout = '5s';
|
|
12
|
+
SET LOCAL statement_timeout = '120s';
|
|
13
|
+
|
|
14
|
+
ALTER TABLE public.thread_participants
|
|
15
|
+
ADD COLUMN IF NOT EXISTS last_read_at timestamptz;
|
|
16
|
+
|
|
17
|
+
CREATE INDEX IF NOT EXISTS idx_thread_participants_user_unread
|
|
18
|
+
ON public.thread_participants (tenant_id, user_id, last_read_at)
|
|
19
|
+
WHERE participant_type = 'user' AND user_id IS NOT NULL;
|
|
20
|
+
|
|
21
|
+
COMMIT;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
-- Purpose: make agent names tenant-unique so they can serve as mention identities.
|
|
2
|
+
-- Plan: docs/plans/2026-05-20-001-fix-agent-mentions-and-unread-routing-plan.md (U1)
|
|
3
|
+
-- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0111_agents_tenant_name_unique.sql
|
|
4
|
+
-- creates: public.uq_agents_tenant_name_active
|
|
5
|
+
|
|
6
|
+
\set ON_ERROR_STOP on
|
|
7
|
+
|
|
8
|
+
BEGIN;
|
|
9
|
+
|
|
10
|
+
SET LOCAL lock_timeout = '5s';
|
|
11
|
+
SET LOCAL statement_timeout = '120s';
|
|
12
|
+
|
|
13
|
+
DO $$
|
|
14
|
+
DECLARE
|
|
15
|
+
duplicate_count integer;
|
|
16
|
+
BEGIN
|
|
17
|
+
SELECT COUNT(*)::integer
|
|
18
|
+
INTO duplicate_count
|
|
19
|
+
FROM (
|
|
20
|
+
SELECT tenant_id, lower(trim(name)) AS normalized_name
|
|
21
|
+
FROM public.agents
|
|
22
|
+
WHERE status <> 'archived'
|
|
23
|
+
GROUP BY tenant_id, lower(trim(name))
|
|
24
|
+
HAVING COUNT(*) > 1
|
|
25
|
+
) duplicates;
|
|
26
|
+
|
|
27
|
+
IF duplicate_count > 0 THEN
|
|
28
|
+
RAISE EXCEPTION
|
|
29
|
+
'Cannot create uq_agents_tenant_name_active: % active tenant/name duplicate group(s) exist',
|
|
30
|
+
duplicate_count;
|
|
31
|
+
END IF;
|
|
32
|
+
END $$;
|
|
33
|
+
|
|
34
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_agents_tenant_name_active
|
|
35
|
+
ON public.agents (tenant_id, lower(trim(name)))
|
|
36
|
+
WHERE status <> 'archived';
|
|
37
|
+
|
|
38
|
+
COMMIT;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
-- Purpose: recast Spaces as contextual workrooms with context/tool/MCP policy surfaces.
|
|
2
|
+
-- Plan: docs/plans/2026-05-20-003-spaces-as-agent-contextual-workrooms-template-removal-plan.md (U3)
|
|
3
|
+
-- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0112_recast_spaces_as_contextual_workrooms.sql
|
|
4
|
+
-- creates-column: public.spaces.icon
|
|
5
|
+
-- creates-column: public.spaces.category
|
|
6
|
+
-- creates-column: public.spaces.context_config
|
|
7
|
+
-- creates-column: public.spaces.connected_data_config
|
|
8
|
+
-- creates-column: public.spaces.tool_policy
|
|
9
|
+
-- creates-column: public.spaces.mcp_policy
|
|
10
|
+
-- creates-column: public.spaces.agent_availability_policy
|
|
11
|
+
-- creates-column: public.spaces.trigger_config
|
|
12
|
+
-- creates-column: public.spaces.render_diagnostics
|
|
13
|
+
-- creates: public.space_mcp_servers
|
|
14
|
+
-- creates: public.uq_space_mcp_servers
|
|
15
|
+
-- creates: public.idx_space_mcp_servers_space
|
|
16
|
+
-- creates: public.idx_space_mcp_servers_server
|
|
17
|
+
-- creates-trigger: public.space_mcp_servers.space_mcp_servers_tenant_guard
|
|
18
|
+
-- creates-constraint: public.space_mcp_servers.space_mcp_servers_tenant_id_tenants_id_fk
|
|
19
|
+
-- creates-constraint: public.space_mcp_servers.space_mcp_servers_space_id_spaces_id_fk
|
|
20
|
+
-- creates-constraint: public.space_mcp_servers.space_mcp_servers_mcp_server_id_tenant_mcp_servers_id_fk
|
|
21
|
+
|
|
22
|
+
\set ON_ERROR_STOP on
|
|
23
|
+
|
|
24
|
+
BEGIN;
|
|
25
|
+
|
|
26
|
+
SET LOCAL lock_timeout = '5s';
|
|
27
|
+
SET LOCAL statement_timeout = '120s';
|
|
28
|
+
|
|
29
|
+
ALTER TABLE public.spaces
|
|
30
|
+
ADD COLUMN IF NOT EXISTS icon text,
|
|
31
|
+
ADD COLUMN IF NOT EXISTS category text,
|
|
32
|
+
ADD COLUMN IF NOT EXISTS context_config jsonb,
|
|
33
|
+
ADD COLUMN IF NOT EXISTS connected_data_config jsonb,
|
|
34
|
+
ADD COLUMN IF NOT EXISTS tool_policy jsonb,
|
|
35
|
+
ADD COLUMN IF NOT EXISTS mcp_policy jsonb,
|
|
36
|
+
ADD COLUMN IF NOT EXISTS agent_availability_policy jsonb,
|
|
37
|
+
ADD COLUMN IF NOT EXISTS trigger_config jsonb,
|
|
38
|
+
ADD COLUMN IF NOT EXISTS render_diagnostics jsonb;
|
|
39
|
+
|
|
40
|
+
CREATE TABLE IF NOT EXISTS public.space_mcp_servers (
|
|
41
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
42
|
+
tenant_id uuid NOT NULL,
|
|
43
|
+
space_id uuid NOT NULL,
|
|
44
|
+
mcp_server_id uuid NOT NULL,
|
|
45
|
+
enabled boolean NOT NULL DEFAULT true,
|
|
46
|
+
config jsonb,
|
|
47
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
48
|
+
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
49
|
+
CONSTRAINT space_mcp_servers_tenant_id_tenants_id_fk
|
|
50
|
+
FOREIGN KEY (tenant_id)
|
|
51
|
+
REFERENCES public.tenants(id)
|
|
52
|
+
ON DELETE CASCADE,
|
|
53
|
+
CONSTRAINT space_mcp_servers_space_id_spaces_id_fk
|
|
54
|
+
FOREIGN KEY (space_id)
|
|
55
|
+
REFERENCES public.spaces(id)
|
|
56
|
+
ON DELETE CASCADE,
|
|
57
|
+
CONSTRAINT space_mcp_servers_mcp_server_id_tenant_mcp_servers_id_fk
|
|
58
|
+
FOREIGN KEY (mcp_server_id)
|
|
59
|
+
REFERENCES public.tenant_mcp_servers(id)
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_space_mcp_servers
|
|
63
|
+
ON public.space_mcp_servers (space_id, mcp_server_id);
|
|
64
|
+
|
|
65
|
+
CREATE INDEX IF NOT EXISTS idx_space_mcp_servers_space
|
|
66
|
+
ON public.space_mcp_servers (tenant_id, space_id);
|
|
67
|
+
|
|
68
|
+
CREATE INDEX IF NOT EXISTS idx_space_mcp_servers_server
|
|
69
|
+
ON public.space_mcp_servers (tenant_id, mcp_server_id);
|
|
70
|
+
|
|
71
|
+
CREATE OR REPLACE FUNCTION public.enforce_space_child_tenant()
|
|
72
|
+
RETURNS trigger
|
|
73
|
+
LANGUAGE plpgsql
|
|
74
|
+
AS $$
|
|
75
|
+
DECLARE
|
|
76
|
+
target_tenant_id uuid;
|
|
77
|
+
BEGIN
|
|
78
|
+
SELECT tenant_id INTO target_tenant_id
|
|
79
|
+
FROM public.spaces
|
|
80
|
+
WHERE id = NEW.space_id;
|
|
81
|
+
|
|
82
|
+
IF target_tenant_id IS NULL OR target_tenant_id <> NEW.tenant_id THEN
|
|
83
|
+
RAISE EXCEPTION 'space child tenant mismatch for space %', NEW.space_id
|
|
84
|
+
USING ERRCODE = '23514';
|
|
85
|
+
END IF;
|
|
86
|
+
|
|
87
|
+
IF TG_TABLE_NAME = 'space_members' THEN
|
|
88
|
+
SELECT tenant_id INTO target_tenant_id
|
|
89
|
+
FROM public.users
|
|
90
|
+
WHERE id = NEW.user_id;
|
|
91
|
+
|
|
92
|
+
IF target_tenant_id IS NULL OR target_tenant_id <> NEW.tenant_id THEN
|
|
93
|
+
RAISE EXCEPTION 'space member tenant mismatch for user %', NEW.user_id
|
|
94
|
+
USING ERRCODE = '23514';
|
|
95
|
+
END IF;
|
|
96
|
+
ELSIF TG_TABLE_NAME = 'space_agent_assignments' THEN
|
|
97
|
+
SELECT tenant_id INTO target_tenant_id
|
|
98
|
+
FROM public.agents
|
|
99
|
+
WHERE id = NEW.agent_id;
|
|
100
|
+
|
|
101
|
+
IF target_tenant_id IS NULL OR target_tenant_id <> NEW.tenant_id THEN
|
|
102
|
+
RAISE EXCEPTION 'space agent assignment tenant mismatch for agent %', NEW.agent_id
|
|
103
|
+
USING ERRCODE = '23514';
|
|
104
|
+
END IF;
|
|
105
|
+
ELSIF TG_TABLE_NAME = 'space_checklist_items' THEN
|
|
106
|
+
SELECT tenant_id INTO target_tenant_id
|
|
107
|
+
FROM public.space_checklist_templates
|
|
108
|
+
WHERE id = NEW.template_id;
|
|
109
|
+
|
|
110
|
+
IF target_tenant_id IS NULL OR target_tenant_id <> NEW.tenant_id THEN
|
|
111
|
+
RAISE EXCEPTION 'space checklist item tenant mismatch for template %', NEW.template_id
|
|
112
|
+
USING ERRCODE = '23514';
|
|
113
|
+
END IF;
|
|
114
|
+
ELSIF TG_TABLE_NAME = 'space_mcp_servers' THEN
|
|
115
|
+
SELECT tenant_id INTO target_tenant_id
|
|
116
|
+
FROM public.tenant_mcp_servers
|
|
117
|
+
WHERE id = NEW.mcp_server_id;
|
|
118
|
+
|
|
119
|
+
IF target_tenant_id IS NULL OR target_tenant_id <> NEW.tenant_id THEN
|
|
120
|
+
RAISE EXCEPTION 'space MCP server tenant mismatch for MCP server %', NEW.mcp_server_id
|
|
121
|
+
USING ERRCODE = '23514';
|
|
122
|
+
END IF;
|
|
123
|
+
END IF;
|
|
124
|
+
|
|
125
|
+
RETURN NEW;
|
|
126
|
+
END;
|
|
127
|
+
$$;
|
|
128
|
+
|
|
129
|
+
DROP TRIGGER IF EXISTS space_mcp_servers_tenant_guard
|
|
130
|
+
ON public.space_mcp_servers;
|
|
131
|
+
|
|
132
|
+
CREATE TRIGGER space_mcp_servers_tenant_guard
|
|
133
|
+
BEFORE INSERT OR UPDATE
|
|
134
|
+
ON public.space_mcp_servers
|
|
135
|
+
FOR EACH ROW
|
|
136
|
+
EXECUTE FUNCTION public.enforce_space_child_tenant();
|
|
137
|
+
|
|
138
|
+
COMMIT;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
-- Purpose: move durable runtime and operational policy fields from Templates onto Agents.
|
|
2
|
+
-- Plan: docs/plans/2026-05-20-003-spaces-as-agent-contextual-workrooms-template-removal-plan.md (U4)
|
|
3
|
+
-- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0113_agents_own_runtime_fields.sql
|
|
4
|
+
-- creates-column: public.agents.model
|
|
5
|
+
-- creates-column: public.agents.guardrail_id
|
|
6
|
+
-- creates-column: public.agents.blocked_tools
|
|
7
|
+
-- creates-column: public.agents.sandbox
|
|
8
|
+
-- creates-column: public.agents.browser
|
|
9
|
+
-- creates-column: public.agents.web_search
|
|
10
|
+
-- creates-column: public.agents.send_email
|
|
11
|
+
-- creates-column: public.agents.context_engine
|
|
12
|
+
-- creates-constraint: public.agents.agents_guardrail_id_guardrails_id_fk
|
|
13
|
+
|
|
14
|
+
\set ON_ERROR_STOP on
|
|
15
|
+
|
|
16
|
+
BEGIN;
|
|
17
|
+
|
|
18
|
+
SET LOCAL lock_timeout = '5s';
|
|
19
|
+
SET LOCAL statement_timeout = '120s';
|
|
20
|
+
|
|
21
|
+
ALTER TABLE public.agents
|
|
22
|
+
ADD COLUMN IF NOT EXISTS model text,
|
|
23
|
+
ADD COLUMN IF NOT EXISTS guardrail_id uuid,
|
|
24
|
+
ADD COLUMN IF NOT EXISTS blocked_tools jsonb,
|
|
25
|
+
ADD COLUMN IF NOT EXISTS sandbox jsonb,
|
|
26
|
+
ADD COLUMN IF NOT EXISTS browser jsonb,
|
|
27
|
+
ADD COLUMN IF NOT EXISTS web_search jsonb DEFAULT '{"enabled": true}'::jsonb,
|
|
28
|
+
ADD COLUMN IF NOT EXISTS send_email jsonb DEFAULT '{"enabled": true}'::jsonb,
|
|
29
|
+
ADD COLUMN IF NOT EXISTS context_engine jsonb DEFAULT '{"enabled": true}'::jsonb,
|
|
30
|
+
ALTER COLUMN template_id DROP NOT NULL;
|
|
31
|
+
|
|
32
|
+
DO $$
|
|
33
|
+
BEGIN
|
|
34
|
+
IF NOT EXISTS (
|
|
35
|
+
SELECT 1
|
|
36
|
+
FROM pg_constraint
|
|
37
|
+
WHERE conname = 'agents_guardrail_id_guardrails_id_fk'
|
|
38
|
+
AND conrelid = 'public.agents'::regclass
|
|
39
|
+
) THEN
|
|
40
|
+
ALTER TABLE public.agents
|
|
41
|
+
ADD CONSTRAINT agents_guardrail_id_guardrails_id_fk
|
|
42
|
+
FOREIGN KEY (guardrail_id)
|
|
43
|
+
REFERENCES public.guardrails(id);
|
|
44
|
+
END IF;
|
|
45
|
+
END
|
|
46
|
+
$$;
|
|
47
|
+
|
|
48
|
+
COMMIT;
|