thinkwork-cli 0.12.11 → 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 +22157 -9229
- 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,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Twenty CRM plugin manifest.
|
|
3
|
+
*
|
|
4
|
+
* Rebuilds the Twenty managed application as an infrastructure-bundling
|
|
5
|
+
* plugin:
|
|
6
|
+
*
|
|
7
|
+
* - The `infrastructure` component maps onto the EXISTING `twenty`
|
|
8
|
+
* deployment-runner adapter. `terraformInputs` mirrors the adapter's
|
|
9
|
+
* `requiredInputs` for ENABLE/UPGRADE (contract-only — the engine's
|
|
10
|
+
* infra handler passes the managed_applications row's desired_config
|
|
11
|
+
* through verbatim; a U10 adoption preserves the live config).
|
|
12
|
+
* - The `mcp-server` component owns the row the legacy
|
|
13
|
+
* `reconcileTwentyManagedMcp` used to manage. Twenty's MCP endpoint is
|
|
14
|
+
* per-tenant (`https://<tenant-crm-host>/mcp`), so the manifest cannot
|
|
15
|
+
* carry a static URL: `endpointFrom` resolves the endpoint at provision
|
|
16
|
+
* time from the tenant's managed_applications row — `desired_config
|
|
17
|
+
* .publicUrl` is the adapter's required `publicUrl` input and is echoed
|
|
18
|
+
* verbatim as the `twenty_url` Terraform output, so the DB row is the
|
|
19
|
+
* authoritative source. Auth is `oauth-per-instance`: per-user OAuth
|
|
20
|
+
* with DCR against the Twenty instance itself (resource indicator =
|
|
21
|
+
* resolved endpoint; authorization server discovered from the
|
|
22
|
+
* endpoint's RFC 9728 protected-resource metadata) — exactly how the
|
|
23
|
+
* legacy managed row worked (`auth_config.oauth_resource` = the
|
|
24
|
+
* resolved MCP URL).
|
|
25
|
+
* - No skills component: tenant catalogs carry no Twenty skill today and
|
|
26
|
+
* the manifest does not invent content.
|
|
27
|
+
*
|
|
28
|
+
* `requiredOauthScopes` is empty by design: the authorization server is
|
|
29
|
+
* per-instance, so its supported scopes are only discoverable at
|
|
30
|
+
* activation time; the activation flow falls back to its default scope
|
|
31
|
+
* set.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
export const twentyManifest = {
|
|
35
|
+
pluginKey: "twenty",
|
|
36
|
+
displayName: "Twenty CRM",
|
|
37
|
+
description:
|
|
38
|
+
"Customer-owned Twenty CRM runtime with dedicated data and storage, plus the Twenty MCP server for working CRM records from chat.",
|
|
39
|
+
versions: [
|
|
40
|
+
{
|
|
41
|
+
version: "0.1.0",
|
|
42
|
+
requiredOauthScopes: [],
|
|
43
|
+
components: [
|
|
44
|
+
{
|
|
45
|
+
type: "mcp-server",
|
|
46
|
+
key: "crm",
|
|
47
|
+
displayName: "Twenty CRM",
|
|
48
|
+
description:
|
|
49
|
+
"CRM records (people, companies, opportunities, notes) on the tenant's deployed Twenty instance.",
|
|
50
|
+
endpointFrom: {
|
|
51
|
+
managedApp: "twenty",
|
|
52
|
+
configKey: "publicUrl",
|
|
53
|
+
path: "/mcp",
|
|
54
|
+
},
|
|
55
|
+
auth: { mode: "oauth-per-instance" },
|
|
56
|
+
toolNotes: [
|
|
57
|
+
"Twenty's MCP server exposes CRM object tools (people, companies, opportunities, tasks, notes); list tools first — the set varies by Twenty release.",
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
type: "infrastructure",
|
|
62
|
+
key: "runtime",
|
|
63
|
+
managedAppKey: "twenty",
|
|
64
|
+
// Mirrors the deployment-runner twenty adapter's requiredInputs
|
|
65
|
+
// for ENABLE/UPGRADE (asserted by a parity test in packages/api).
|
|
66
|
+
terraformInputs: {
|
|
67
|
+
imageUri: {
|
|
68
|
+
description:
|
|
69
|
+
"Twenty CRM container image URI pinned with @sha256.",
|
|
70
|
+
type: "string",
|
|
71
|
+
},
|
|
72
|
+
dbUrlSecretArn: {
|
|
73
|
+
description: "Secrets Manager ARN containing PG_DATABASE_URL.",
|
|
74
|
+
type: "string",
|
|
75
|
+
},
|
|
76
|
+
encryptionKeySecretArn: {
|
|
77
|
+
description: "Secrets Manager ARN containing ENCRYPTION_KEY.",
|
|
78
|
+
type: "string",
|
|
79
|
+
},
|
|
80
|
+
publicUrl: {
|
|
81
|
+
description: "Public HTTPS origin for Twenty CRM.",
|
|
82
|
+
type: "string",
|
|
83
|
+
},
|
|
84
|
+
certificateArn: {
|
|
85
|
+
description: "ACM certificate ARN for the public HTTPS listener.",
|
|
86
|
+
type: "string",
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
version: "0.2.0",
|
|
94
|
+
requiredOauthScopes: [],
|
|
95
|
+
components: [
|
|
96
|
+
{
|
|
97
|
+
type: "mcp-server",
|
|
98
|
+
key: "crm",
|
|
99
|
+
displayName: "Twenty CRM",
|
|
100
|
+
description:
|
|
101
|
+
"CRM records (people, companies, opportunities, notes) on the tenant's deployed Twenty instance.",
|
|
102
|
+
endpointFrom: {
|
|
103
|
+
managedApp: "twenty",
|
|
104
|
+
configKey: "publicUrl",
|
|
105
|
+
path: "/mcp",
|
|
106
|
+
},
|
|
107
|
+
auth: { mode: "oauth-per-instance" },
|
|
108
|
+
recordLinkHints: {
|
|
109
|
+
schemaVersion: 1,
|
|
110
|
+
source: "plugin-manifest",
|
|
111
|
+
routes: [
|
|
112
|
+
{
|
|
113
|
+
objectType: "opportunity",
|
|
114
|
+
routeTemplate: "/object/opportunity/{id}",
|
|
115
|
+
idFields: [
|
|
116
|
+
"id",
|
|
117
|
+
"opportunityId",
|
|
118
|
+
"record.id",
|
|
119
|
+
"opportunity.id",
|
|
120
|
+
],
|
|
121
|
+
labelFields: [
|
|
122
|
+
"name",
|
|
123
|
+
"opportunityName",
|
|
124
|
+
"record.name",
|
|
125
|
+
"opportunity.name",
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
},
|
|
130
|
+
toolNotes: [
|
|
131
|
+
"Twenty's MCP server exposes CRM object tools (people, companies, opportunities, tasks, notes); list tools first — the set varies by Twenty release.",
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: "infrastructure",
|
|
136
|
+
key: "runtime",
|
|
137
|
+
managedAppKey: "twenty",
|
|
138
|
+
// Mirrors the deployment-runner twenty adapter's requiredInputs
|
|
139
|
+
// for ENABLE/UPGRADE (asserted by a parity test in packages/api).
|
|
140
|
+
terraformInputs: {
|
|
141
|
+
imageUri: {
|
|
142
|
+
description:
|
|
143
|
+
"Twenty CRM container image URI pinned with @sha256.",
|
|
144
|
+
type: "string",
|
|
145
|
+
},
|
|
146
|
+
dbUrlSecretArn: {
|
|
147
|
+
description: "Secrets Manager ARN containing PG_DATABASE_URL.",
|
|
148
|
+
type: "string",
|
|
149
|
+
},
|
|
150
|
+
encryptionKeySecretArn: {
|
|
151
|
+
description: "Secrets Manager ARN containing ENCRYPTION_KEY.",
|
|
152
|
+
type: "string",
|
|
153
|
+
},
|
|
154
|
+
publicUrl: {
|
|
155
|
+
description: "Public HTTPS origin for Twenty CRM.",
|
|
156
|
+
type: "string",
|
|
157
|
+
},
|
|
158
|
+
certificateArn: {
|
|
159
|
+
description: "ACM certificate ARN for the public HTTPS listener.",
|
|
160
|
+
type: "string",
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
version: "0.3.0",
|
|
168
|
+
requiredOauthScopes: [],
|
|
169
|
+
components: [
|
|
170
|
+
{
|
|
171
|
+
type: "mcp-server",
|
|
172
|
+
key: "crm",
|
|
173
|
+
displayName: "Twenty CRM",
|
|
174
|
+
description:
|
|
175
|
+
"CRM records (people, companies, opportunities, notes) on the tenant's deployed Twenty instance.",
|
|
176
|
+
endpointFrom: {
|
|
177
|
+
managedApp: "twenty",
|
|
178
|
+
configKey: "publicUrl",
|
|
179
|
+
path: "/mcp",
|
|
180
|
+
},
|
|
181
|
+
auth: { mode: "oauth-per-instance" },
|
|
182
|
+
recordLinkHints: {
|
|
183
|
+
schemaVersion: 1,
|
|
184
|
+
source: "plugin-manifest",
|
|
185
|
+
routes: [
|
|
186
|
+
{
|
|
187
|
+
objectType: "opportunity",
|
|
188
|
+
routeTemplate: "/object/opportunity/{id}",
|
|
189
|
+
idFields: [
|
|
190
|
+
"id",
|
|
191
|
+
"opportunityId",
|
|
192
|
+
"record.id",
|
|
193
|
+
"opportunity.id",
|
|
194
|
+
],
|
|
195
|
+
labelFields: [
|
|
196
|
+
"name",
|
|
197
|
+
"opportunityName",
|
|
198
|
+
"record.name",
|
|
199
|
+
"opportunity.name",
|
|
200
|
+
],
|
|
201
|
+
},
|
|
202
|
+
],
|
|
203
|
+
},
|
|
204
|
+
toolNotes: [
|
|
205
|
+
"Twenty's MCP server exposes CRM object tools (people, companies, opportunities, tasks, notes); list tools first — the set varies by Twenty release.",
|
|
206
|
+
],
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
type: "infrastructure",
|
|
210
|
+
key: "runtime",
|
|
211
|
+
managedAppKey: "twenty",
|
|
212
|
+
// Mirrors the deployment-runner twenty adapter's requiredInputs
|
|
213
|
+
// for ENABLE/UPGRADE (asserted by a parity test in packages/api).
|
|
214
|
+
terraformInputs: {
|
|
215
|
+
imageUri: {
|
|
216
|
+
description:
|
|
217
|
+
"Twenty CRM container image URI pinned with @sha256.",
|
|
218
|
+
type: "string",
|
|
219
|
+
},
|
|
220
|
+
dbUrlSecretArn: {
|
|
221
|
+
description: "Secrets Manager ARN containing PG_DATABASE_URL.",
|
|
222
|
+
type: "string",
|
|
223
|
+
},
|
|
224
|
+
encryptionKeySecretArn: {
|
|
225
|
+
description: "Secrets Manager ARN containing ENCRYPTION_KEY.",
|
|
226
|
+
type: "string",
|
|
227
|
+
},
|
|
228
|
+
publicUrl: {
|
|
229
|
+
description: "Public HTTPS origin for Twenty CRM.",
|
|
230
|
+
type: "string",
|
|
231
|
+
},
|
|
232
|
+
certificateArn: {
|
|
233
|
+
description: "ACM certificate ARN for the public HTTPS listener.",
|
|
234
|
+
type: "string",
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
type: "ui-surface",
|
|
240
|
+
key: "client-engagement",
|
|
241
|
+
displayName: "Client Engagement",
|
|
242
|
+
intendedMount: "apps.main",
|
|
243
|
+
launch: {
|
|
244
|
+
schemaVersion: 1,
|
|
245
|
+
type: "app",
|
|
246
|
+
appKey: "twenty-client-engagement",
|
|
247
|
+
routeSegment: "client-engagement",
|
|
248
|
+
mount: "main-shell",
|
|
249
|
+
runtime: "trusted-bundled-react",
|
|
250
|
+
description:
|
|
251
|
+
"Account and opportunity engagement workspace for Twenty CRM records.",
|
|
252
|
+
icon: "layout-dashboard",
|
|
253
|
+
entitlementProductKey: "twenty-client-engagement",
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
],
|
|
257
|
+
},
|
|
258
|
+
],
|
|
259
|
+
};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Twenty CRM App Module
|
|
2
|
+
|
|
3
|
+
This module provisions the optional Twenty CRM managed application substrate for
|
|
4
|
+
ThinkWork. It follows the Cognee optional-app shape but uses a public HTTPS ALB,
|
|
5
|
+
separate ECS services for the Twenty server and worker, a dedicated PostgreSQL
|
|
6
|
+
database URL injected from Secrets Manager, EFS for local server storage, and
|
|
7
|
+
ElastiCache for Valkey/Redis OSS.
|
|
8
|
+
|
|
9
|
+
The parent ThinkWork module owns whether this module is instantiated. Once it is
|
|
10
|
+
instantiated, `runtime_enabled = false` parks the ECS server and worker at
|
|
11
|
+
desired count zero while retaining the database secret references, EFS storage,
|
|
12
|
+
ElastiCache configuration, log groups, and re-enable path.
|
|
13
|
+
|
|
14
|
+
## Required Inputs
|
|
15
|
+
|
|
16
|
+
- `stage`
|
|
17
|
+
- `vpc_id`
|
|
18
|
+
- `subnet_ids`
|
|
19
|
+
- `db_security_group_id`
|
|
20
|
+
- `public_url`
|
|
21
|
+
- `certificate_arn`
|
|
22
|
+
- `image_uri`
|
|
23
|
+
- `db_url_secret_arn` or `create_secret_placeholders = true`
|
|
24
|
+
- `encryption_key_secret_arn` or `create_secret_placeholders = true`
|
|
25
|
+
|
|
26
|
+
`image_uri` must be pinned to an immutable `@sha256:` digest.
|
|
27
|
+
|
|
28
|
+
## Secrets
|
|
29
|
+
|
|
30
|
+
Twenty requires infrastructure-level secrets in environment variables:
|
|
31
|
+
|
|
32
|
+
- `PG_DATABASE_URL`
|
|
33
|
+
- `ENCRYPTION_KEY`
|
|
34
|
+
- optional `FALLBACK_ENCRYPTION_KEY`
|
|
35
|
+
- optional `APP_SECRET`
|
|
36
|
+
- optional `EMAIL_SMTP_USER`
|
|
37
|
+
- optional `EMAIL_SMTP_PASSWORD`
|
|
38
|
+
|
|
39
|
+
The module injects these values through ECS secrets. It never places database
|
|
40
|
+
credentials, encryption keys, or SMTP credentials into plaintext task-definition
|
|
41
|
+
environment values. Placeholder secret containers can be created for early
|
|
42
|
+
wiring, but the real values are expected to be created or rotated by the
|
|
43
|
+
deployment workflow.
|
|
44
|
+
|
|
45
|
+
## Email
|
|
46
|
+
|
|
47
|
+
When `email_from_address` is set, the module configures Twenty app email through
|
|
48
|
+
ThinkWork-owned SES SMTP:
|
|
49
|
+
|
|
50
|
+
- `EMAIL_DRIVER=SMTP`
|
|
51
|
+
- `EMAIL_FROM_ADDRESS`
|
|
52
|
+
- `EMAIL_FROM_NAME`
|
|
53
|
+
- `EMAIL_SMTP_HOST`
|
|
54
|
+
- `EMAIL_SMTP_PORT`
|
|
55
|
+
- `EMAIL_SMTP_NO_TLS`
|
|
56
|
+
- `EMAIL_SMTP_USER`
|
|
57
|
+
- `EMAIL_SMTP_PASSWORD`
|
|
58
|
+
|
|
59
|
+
The composite ThinkWork module derives `email_from_address` from
|
|
60
|
+
`noreply@<ses_inbound_domain>` by default, so invitation and workspace emails
|
|
61
|
+
work when the existing ThinkWork SES identity is verified. The SMTP username and
|
|
62
|
+
password are generated as a least-privilege IAM access key, stored in Secrets
|
|
63
|
+
Manager, and injected into both the Twenty server and worker containers.
|
|
64
|
+
|
|
65
|
+
## Admin Panel Configuration
|
|
66
|
+
|
|
67
|
+
The module sets `IS_CONFIG_VARIABLES_IN_DB_ENABLED=true` on both the Twenty
|
|
68
|
+
server and worker containers. Twenty uses that mode to store Admin Panel
|
|
69
|
+
configuration variables in the dedicated CRM database, so settings such as model
|
|
70
|
+
provider keys, messaging providers, and storage options can be edited from the
|
|
71
|
+
Twenty UI after deployment. Infrastructure settings like `PG_DATABASE_URL`,
|
|
72
|
+
`SERVER_URL`, encryption keys, and Terraform-managed email delivery settings
|
|
73
|
+
remain environment-only.
|
|
74
|
+
|
|
75
|
+
## Logic Functions
|
|
76
|
+
|
|
77
|
+
The module sets `LOGIC_FUNCTION_TYPE=LOCAL` on both the Twenty server and worker
|
|
78
|
+
containers so first-party native apps can install and run trusted workflow
|
|
79
|
+
actions such as the ThinkWork Webhook. Twenty disables logic functions by
|
|
80
|
+
default in production; without this setting, native app install fails before the
|
|
81
|
+
workflow action can be created.
|
|
82
|
+
|
|
83
|
+
## Cache
|
|
84
|
+
|
|
85
|
+
The default cache engine is Valkey because it is the lower-cost
|
|
86
|
+
Redis-compatible ElastiCache engine. The cache is placed in `cache_subnet_ids`
|
|
87
|
+
when supplied, with ingress restricted to the Twenty ECS task security group.
|
|
88
|
+
|
|
89
|
+
## Runtime Lifecycle
|
|
90
|
+
|
|
91
|
+
| `runtime_enabled` | Server desired count | Worker desired count | Retained resources |
|
|
92
|
+
| ----------------- | ---------------------- | ---------------------- | ------------------------------------ |
|
|
93
|
+
| `true` | `server_desired_count` | `worker_desired_count` | All resources |
|
|
94
|
+
| `false` | `0` | `0` | EFS, ElastiCache, secrets, logs, ALB |
|
|
95
|
+
|
|
96
|
+
Destroying retained CRM data is intentionally outside the settings-toggle v1
|
|
97
|
+
lifecycle.
|