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,201 @@
|
|
|
1
|
+
# n8n Application Plugin
|
|
2
|
+
|
|
3
|
+
This package owns the ThinkWork first-party `n8n` application plugin: catalog
|
|
4
|
+
manifest, managed-app adapter, Terraform module, custom package image contract,
|
|
5
|
+
runtime wrapper files, smoke scripts, docs, and agent instructions.
|
|
6
|
+
|
|
7
|
+
## V1 Scope
|
|
8
|
+
|
|
9
|
+
- Install self-hosted n8n from Settings -> Plugins through the ThinkWork
|
|
10
|
+
application-plugin flow.
|
|
11
|
+
- Deploy n8n queue mode with a main service plus worker service(s).
|
|
12
|
+
- Store n8n data in `thinkwork_n8n` on the existing ThinkWork database
|
|
13
|
+
instance by default.
|
|
14
|
+
- Use a dedicated private managed Valkey/Redis queue.
|
|
15
|
+
- Build a thin wrapper image from the official n8n image when operators add
|
|
16
|
+
pinned public npm packages for Code nodes in Plugin Detail settings.
|
|
17
|
+
- Register native instance-level n8n MCP with a tenant service credential.
|
|
18
|
+
- Let n8n workflows call ThinkWork agent steps through the stock HTTP Request
|
|
19
|
+
and Wait nodes, using a separate inbound bridge credential.
|
|
20
|
+
- Use one shared native n8n operator account for v1 production activation and
|
|
21
|
+
recovery.
|
|
22
|
+
|
|
23
|
+
## Explicit Non-Goals
|
|
24
|
+
|
|
25
|
+
- No n8n Cloud or n8n Enterprise deployment.
|
|
26
|
+
- No per-user n8n activation, SSO, or user-scoped n8n MCP credential in v1.
|
|
27
|
+
- No private registries, unpinned packages, semver ranges, tarballs, git
|
|
28
|
+
dependencies, or arbitrary Dockerfile editing.
|
|
29
|
+
- No LastMile custom nodes, credentials, workflow exports, or vendor-specific
|
|
30
|
+
package layer.
|
|
31
|
+
- No agent-driven production publish, unpublish, activation, or deactivation.
|
|
32
|
+
The bundled skill instructs agents to hand those actions to the shared
|
|
33
|
+
native n8n operator.
|
|
34
|
+
|
|
35
|
+
## Catalog Publication
|
|
36
|
+
|
|
37
|
+
The plugin is now catalog-published by `plugins/catalog`:
|
|
38
|
+
|
|
39
|
+
- `plugins/n8n/src/manifest.ts` exports `n8nManifest`.
|
|
40
|
+
- `plugins/n8n/src/index.ts` exports `n8nPluginPackage`.
|
|
41
|
+
- `plugins/catalog/scripts/generate-plugin-registry.ts` imports the package
|
|
42
|
+
because `plugins/n8n/package.json` no longer has
|
|
43
|
+
`thinkworkPlugin.catalogPublication = "deferred"`.
|
|
44
|
+
|
|
45
|
+
The catalog display name is `n8n`, so the alpha-sorted Settings -> Plugins
|
|
46
|
+
catalog places it with the other first-party application plugins.
|
|
47
|
+
|
|
48
|
+
## Package Boundary
|
|
49
|
+
|
|
50
|
+
- `src/manifest.ts` owns the catalog manifest and component contract.
|
|
51
|
+
- `src/deployment/` owns the managed-app adapter and image build contract.
|
|
52
|
+
- `terraform/n8n/` owns the queue-mode AWS module.
|
|
53
|
+
- `runtime/` owns the thin n8n wrapper image and task-runner allow-list
|
|
54
|
+
template.
|
|
55
|
+
- `src/web/` owns package-specific web contracts for Plugin Detail settings.
|
|
56
|
+
- `n8n-app/` owns the native ThinkWork installed app surface for workflow and
|
|
57
|
+
execution operations.
|
|
58
|
+
- `scripts/sync-thinkwork-app.mjs` owns dry-run-first deployed app preflight
|
|
59
|
+
and live ThinkWork app verification.
|
|
60
|
+
- `src/skills/` owns the `n8n-workflow-operator` skill source.
|
|
61
|
+
- `smoke/` owns deployed validation for the managed-app, native MCP, and bridge
|
|
62
|
+
paths.
|
|
63
|
+
- `test/` owns package-local manifest, image, settings, and source-boundary
|
|
64
|
+
checks.
|
|
65
|
+
|
|
66
|
+
## Native ThinkWork app
|
|
67
|
+
|
|
68
|
+
The n8n installed app is hosted by ThinkWork at `/apps/n8n/workflows`, using
|
|
69
|
+
the same trusted bundled React app launch contract as other first-party plugin
|
|
70
|
+
apps. n8n itself does not currently provide a Twenty-style application SDK for
|
|
71
|
+
adding a full native app inside the n8n editor, so the app is package-owned
|
|
72
|
+
source under `plugins/n8n/n8n-app` and launches from ThinkWork's main shell.
|
|
73
|
+
|
|
74
|
+
The app must use the signed-in ThinkWork session and server-mediated ThinkWork
|
|
75
|
+
APIs for workflow and execution data. Browser code must not collect an n8n API
|
|
76
|
+
key, call an unauthenticated n8n proxy, or expose write-control actions such as
|
|
77
|
+
activate, publish, delete, retry, or stop.
|
|
78
|
+
|
|
79
|
+
## Operator Flow
|
|
80
|
+
|
|
81
|
+
1. Install `n8n` from Settings -> Plugins.
|
|
82
|
+
2. Configure the required managed-app inputs for the runtime image, database
|
|
83
|
+
URL/admin secrets, encryption key, operator credential, tenant MCP service
|
|
84
|
+
credential, public URL, certificate, and storage bucket.
|
|
85
|
+
3. Optionally open the n8n Plugin Detail settings and add pinned public package
|
|
86
|
+
specs, such as `lodash@4.17.21`, for Code nodes. Saving creates a reviewable
|
|
87
|
+
managed-app `UPGRADE` plan; it does not mutate infrastructure directly.
|
|
88
|
+
4. Approve and run the managed-app deploy job through the normal ThinkWork
|
|
89
|
+
controller.
|
|
90
|
+
5. In native n8n, enable instance-level MCP and enable MCP access on the
|
|
91
|
+
workflow, project, or folder that agents may inspect.
|
|
92
|
+
6. Assign the `n8n--workflow-management` MCP server to the appropriate
|
|
93
|
+
ThinkWork agent.
|
|
94
|
+
7. For n8n-to-ThinkWork agent steps, configure the separate
|
|
95
|
+
`agentStepBridgeCredentialSecretArn` managed-app input. Do not reuse the
|
|
96
|
+
native n8n MCP service credential; MCP auth lets ThinkWork agents call n8n,
|
|
97
|
+
while the bridge credential lets n8n workflows call ThinkWork.
|
|
98
|
+
|
|
99
|
+
## Agent-Step Bridge Recipe
|
|
100
|
+
|
|
101
|
+
The v1 bridge is webhook-first and node-later. Workflow authors should build
|
|
102
|
+
with stock n8n nodes:
|
|
103
|
+
|
|
104
|
+
1. A Webhook or other trigger starts the n8n execution.
|
|
105
|
+
2. An HTTP Request node posts to ThinkWork
|
|
106
|
+
`/api/integrations/n8n/agent-steps` with the bridge bearer credential,
|
|
107
|
+
target `spaceId`, `agentId`, instructions, structured `input`,
|
|
108
|
+
`workflowId`, `executionId`, `stepId`, `correlationId`, and the current
|
|
109
|
+
n8n Wait resume URL.
|
|
110
|
+
3. A Wait node pauses the execution with the On webhook call resume mode. n8n
|
|
111
|
+
exposes the per-execution resume URL as `$execution.resumeUrl`; pass that
|
|
112
|
+
value to ThinkWork as `resumeUrl`.
|
|
113
|
+
4. ThinkWork creates or reuses the visible Space thread, dispatches the agent,
|
|
114
|
+
holds for human input inside ThinkWork when needed, and later calls the n8n
|
|
115
|
+
waiting-webhook URL with structured JSON.
|
|
116
|
+
5. Downstream n8n nodes branch on `status` and read `output`, `error`,
|
|
117
|
+
`summary`, and `links`. They should not scrape the ThinkWork thread page.
|
|
118
|
+
|
|
119
|
+
The idempotency key is derived from tenant, workflow id, execution id,
|
|
120
|
+
correlation id, and step id. Retrying the same HTTP Request for the same n8n
|
|
121
|
+
execution and bridge step should recover or replay the existing bridge run
|
|
122
|
+
rather than creating duplicate ThinkWork threads. If a run expires, n8n resumes
|
|
123
|
+
with a structured `expired` result so the workflow can branch explicitly.
|
|
124
|
+
|
|
125
|
+
Operator runbook details live in the docs site:
|
|
126
|
+
|
|
127
|
+
- `docs/runbooks/n8n-thinkwork-native-app-install.md`
|
|
128
|
+
- `docs/src/content/docs/applications/n8n.mdx`
|
|
129
|
+
- `docs/src/content/docs/applications/n8n-agent-step-bridge.mdx`
|
|
130
|
+
|
|
131
|
+
## Verification
|
|
132
|
+
|
|
133
|
+
Dry-run checks are safe in CI:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
pnpm --filter @thinkwork/plugin-n8n test
|
|
137
|
+
pnpm --filter @thinkwork/plugin-n8n typecheck
|
|
138
|
+
pnpm --filter @thinkwork/plugin-catalog check:plugins
|
|
139
|
+
node plugins/n8n/smoke/n8n-managed-app-smoke.mjs
|
|
140
|
+
node plugins/n8n/smoke/n8n-mcp-smoke.mjs
|
|
141
|
+
node plugins/n8n/smoke/n8n-agent-step-bridge-smoke.mjs
|
|
142
|
+
node plugins/n8n/smoke/n8n-integrated-app-smoke.mjs
|
|
143
|
+
node plugins/n8n/scripts/sync-thinkwork-app.mjs
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Live verification must prove the ThinkWork install path after the plugin is
|
|
147
|
+
installed and deployed:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
SMOKE_ENABLE_N8N_MANAGED_APP=1 \
|
|
151
|
+
SMOKE_TENANT_ID=<tenant-id> \
|
|
152
|
+
SMOKE_EVIDENCE_FILE=deploy-artifacts/n8n-managed-app-smoke.json \
|
|
153
|
+
node plugins/n8n/smoke/n8n-managed-app-smoke.mjs
|
|
154
|
+
|
|
155
|
+
SMOKE_ENABLE_N8N_MCP=1 \
|
|
156
|
+
SMOKE_N8N_THINKWORK_PROXY=1 \
|
|
157
|
+
SMOKE_API_BASE_URL=<api-url> \
|
|
158
|
+
SMOKE_COGNITO_ID_TOKEN=<operator-or-agent-user-token> \
|
|
159
|
+
SMOKE_AGENT_ID=<agent-id> \
|
|
160
|
+
SMOKE_N8N_INSTALL_ID=<plugin-install-id> \
|
|
161
|
+
SMOKE_TENANT_ID=<tenant-id> \
|
|
162
|
+
SMOKE_EVIDENCE_FILE=deploy-artifacts/n8n-mcp-smoke.json \
|
|
163
|
+
node plugins/n8n/smoke/n8n-mcp-smoke.mjs
|
|
164
|
+
|
|
165
|
+
SMOKE_ENABLE_N8N_AGENT_STEP_BRIDGE=1 \
|
|
166
|
+
SMOKE_N8N_MCP_URL=<n8n-mcp-url> \
|
|
167
|
+
SMOKE_N8N_MCP_SERVICE_TOKEN=<n8n-service-token> \
|
|
168
|
+
SMOKE_N8N_BRIDGE_TRIGGER_URL=<disposable-workflow-webhook-url> \
|
|
169
|
+
SMOKE_N8N_BRIDGE_CORRELATION_ID=<unique-correlation-id> \
|
|
170
|
+
SMOKE_GRAPHQL_HTTP_URL=<graphql-url> \
|
|
171
|
+
SMOKE_TENANT_ID=<tenant-id> \
|
|
172
|
+
SMOKE_EVIDENCE_FILE=deploy-artifacts/n8n-agent-step-bridge-smoke.json \
|
|
173
|
+
node plugins/n8n/smoke/n8n-agent-step-bridge-smoke.mjs
|
|
174
|
+
|
|
175
|
+
SMOKE_ENABLE_N8N_INTEGRATED_APP=1 \
|
|
176
|
+
SMOKE_THINKWORK_URL=<thinkwork-url> \
|
|
177
|
+
SMOKE_N8N_INSTALL_ID=<plugin-install-id> \
|
|
178
|
+
SMOKE_COGNITO_ID_TOKEN=<operator-id-token> \
|
|
179
|
+
SMOKE_EVIDENCE_FILE=deploy-artifacts/n8n-integrated-app-smoke.json \
|
|
180
|
+
node plugins/n8n/smoke/n8n-integrated-app-smoke.mjs
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
The managed-app smoke verifies public endpoint health plus main/worker service,
|
|
184
|
+
database, Valkey, storage, image digest, package digest, and service credential
|
|
185
|
+
evidence when those Terraform outputs are available. The MCP smoke lists native
|
|
186
|
+
n8n tools through ThinkWork's `/api/mcp` proxy and can read a configured
|
|
187
|
+
disposable workflow with `SMOKE_N8N_WORKFLOW_ID`. The bridge smoke verifies a
|
|
188
|
+
disposable n8n workflow can call ThinkWork, produce bridge telemetry, create a
|
|
189
|
+
visible ThinkWork thread, and resume n8n with structured terminal payload
|
|
190
|
+
evidence. The integrated app smoke verifies the ThinkWork-hosted
|
|
191
|
+
`/apps/n8n/workflows` route through `installedPluginApps` and `n8nAppData`,
|
|
192
|
+
including workflow rows, execution rows, and optional bridge-linked execution
|
|
193
|
+
evidence.
|
|
194
|
+
|
|
195
|
+
## Teardown
|
|
196
|
+
|
|
197
|
+
Teardown must use the ThinkWork managed-application flow. Destroy is
|
|
198
|
+
destructive: it removes the n8n runtime substrate, dedicated database state,
|
|
199
|
+
queue/cache resources, storage prefix or bucket contents, runtime secrets,
|
|
200
|
+
service credential material, and managed MCP rows. Verification is not complete
|
|
201
|
+
until teardown evidence is observed through the same managed-app path.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# ThinkWork n8n app
|
|
2
|
+
|
|
3
|
+
This package owns the native ThinkWork app surface for the first-party n8n
|
|
4
|
+
plugin. It follows the installed plugin app route contract that Twenty uses in
|
|
5
|
+
the ThinkWork main shell, but it does not use `twenty-sdk`; n8n does not expose
|
|
6
|
+
a comparable first-party application SDK for adding a full native app inside
|
|
7
|
+
the n8n editor.
|
|
8
|
+
|
|
9
|
+
## Host decision
|
|
10
|
+
|
|
11
|
+
- ThinkWork hosts the app at `/apps/n8n/workflows` as a trusted bundled React
|
|
12
|
+
route declared by the n8n plugin manifest.
|
|
13
|
+
- The app is available only after the n8n plugin is installed and the launch
|
|
14
|
+
surface is returned by `installedPluginApps`.
|
|
15
|
+
- n8n runtime links open the managed n8n UI for native workflow inspection when
|
|
16
|
+
a row has a workflow or execution URL.
|
|
17
|
+
|
|
18
|
+
## Auth and data boundary
|
|
19
|
+
|
|
20
|
+
- Browser code uses the existing ThinkWork session only.
|
|
21
|
+
- Workflow and execution data must be fetched through server-mediated
|
|
22
|
+
ThinkWork APIs that resolve the tenant n8n credential server-side.
|
|
23
|
+
- The app must not ask users to paste an n8n API key, expose a direct
|
|
24
|
+
unauthenticated n8n proxy, or send write-control actions such as activate,
|
|
25
|
+
publish, delete, retry, or stop.
|
|
26
|
+
- API responses must stay redacted: no raw credentials, idempotency keys,
|
|
27
|
+
callback URLs, or arbitrary execution payloads.
|
|
28
|
+
|
|
29
|
+
## Implementation sequence
|
|
30
|
+
|
|
31
|
+
1. U1 declares this host/auth contract and the manifest launch metadata.
|
|
32
|
+
2. U2 adds the read-only ThinkWork data API for workflows and executions.
|
|
33
|
+
3. U3 adds the React tables that consume that API.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@thinkwork/n8n-app",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"packageManager": "pnpm@9.15.9",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"typecheck": "tsc --noEmit"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@tanstack/react-table": "^8.21.3",
|
|
13
|
+
"@thinkwork/ui": "workspace:*",
|
|
14
|
+
"react": "^19.2.0",
|
|
15
|
+
"react-dom": "^19.2.0"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/node": "^25.6.0",
|
|
19
|
+
"@types/react": "^19.2.0",
|
|
20
|
+
"@types/react-dom": "^19.2.0",
|
|
21
|
+
"typescript": "^5.9.3"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const N8N_APP_SURFACE_KEY = "workflow-operations";
|
|
2
|
+
export const N8N_APP_KEY = "n8n-workflow-operations";
|
|
3
|
+
export const N8N_APP_ROUTE_SEGMENT = "workflows";
|
|
4
|
+
export const N8N_APP_DISPLAY_NAME = "n8n Workflows";
|
|
5
|
+
export const N8N_APP_DESCRIPTION =
|
|
6
|
+
"Read-only workflow and execution operations surface for the tenant n8n runtime.";
|
|
7
|
+
export const N8N_APP_ICON = "workflow";
|
|
8
|
+
|
|
9
|
+
export const n8nApplicationConfig = {
|
|
10
|
+
schemaVersion: 1,
|
|
11
|
+
appKey: N8N_APP_KEY,
|
|
12
|
+
displayName: N8N_APP_DISPLAY_NAME,
|
|
13
|
+
description: N8N_APP_DESCRIPTION,
|
|
14
|
+
host: {
|
|
15
|
+
mount: "main-shell",
|
|
16
|
+
runtime: "trusted-bundled-react",
|
|
17
|
+
route: `/apps/n8n/${N8N_APP_ROUTE_SEGMENT}`,
|
|
18
|
+
sourceRoot: "plugins/n8n/n8n-app",
|
|
19
|
+
frontComponent: {
|
|
20
|
+
source: "src/front-components/thinkwork-workflows.front-component.tsx",
|
|
21
|
+
exportName: "ThinkWorkN8nWorkflowsApp",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
dataAccess: {
|
|
25
|
+
mode: "thinkwork-session",
|
|
26
|
+
boundary: "server-mediated",
|
|
27
|
+
allowedCredentials: [
|
|
28
|
+
"tenant-service-credential:n8n-mcp-access-token",
|
|
29
|
+
"tenant-plugin-credential:n8n-api",
|
|
30
|
+
],
|
|
31
|
+
forbidden: [
|
|
32
|
+
"browser-entered-api-key",
|
|
33
|
+
"unauthenticated-proxy",
|
|
34
|
+
"workflow-publish",
|
|
35
|
+
"workflow-unpublish",
|
|
36
|
+
"workflow-activate",
|
|
37
|
+
"workflow-deactivate",
|
|
38
|
+
"workflow-delete",
|
|
39
|
+
"execution-retry",
|
|
40
|
+
"execution-stop",
|
|
41
|
+
],
|
|
42
|
+
redaction:
|
|
43
|
+
"The app may render workflow, execution, trigger, readiness, and bridge evidence fields, but not raw credentials, idempotency keys, callback URLs, or arbitrary execution payloads.",
|
|
44
|
+
},
|
|
45
|
+
} as const;
|