thinkwork-cli 0.12.12 → 0.12.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -38
- package/dist/{api-client-ASJWIG3Z.js → api-client-4VT3FWOH.js} +1 -1
- package/dist/{chunk-JEHV35EU.js → chunk-H7AB42ES.js} +340 -30
- package/dist/cli.js +22123 -9219
- package/dist/commands/enterprise/templates/deploy-repo/.github/workflows/deploy.yml +17 -6
- package/dist/commands/enterprise/templates/deploy-repo/docs/runbook.md +81 -9
- package/dist/commands/enterprise/templates/deploy-repo/scripts/apply-release.mjs +183 -21
- package/dist/commands/enterprise/templates/deploy-repo/scripts/smoke.mjs +1 -2
- package/dist/commands/enterprise/templates/deploy-repo/terraform/main.tf +286 -0
- package/dist/drizzle/0000_petite_marvel_apes.sql +1188 -0
- package/dist/drizzle/0001_milky_surge.sql +103 -0
- package/dist/drizzle/0002_aberrant_mattie_franklin.sql +41 -0
- package/dist/drizzle/0003_exotic_ogun.sql +3 -0
- package/dist/drizzle/0004_glamorous_magneto.sql +2 -0
- package/dist/drizzle/0005_ancient_nocturne.sql +2 -0
- package/dist/drizzle/0006_new_colonel_america.sql +2 -0
- package/dist/drizzle/0007_unique_external_task_id.sql +31 -0
- package/dist/drizzle/0008_external_task_id_column.sql +43 -0
- package/dist/drizzle/0009_evaluations.sql +64 -0
- package/dist/drizzle/0010_eval_agent_template.sql +2 -0
- package/dist/drizzle/0011_eval_run_template.sql +2 -0
- package/dist/drizzle/0012_eval_seed_unique.sql +16 -0
- package/dist/drizzle/0013_motionless_white_queen.sql +140 -0
- package/dist/drizzle/0014_wiki_aggregation.sql +11 -0
- package/dist/drizzle/0015_pg_trgm_alias_title_indexes.sql +9 -0
- package/dist/drizzle/0016_wiki_schema_drops.sql +24 -0
- package/dist/drizzle/0017_wiki_places.sql +46 -0
- package/dist/drizzle/0018_agent_workspace_overlay.sql +26 -0
- package/dist/drizzle/0018_cool_firebird.sql +24 -0
- package/dist/drizzle/0018_skill_runs.sql +84 -0
- package/dist/drizzle/0019_condemned_dragon_man.sql +95 -0
- package/dist/drizzle/0019_webhook_skill_runs.sql +58 -0
- package/dist/drizzle/0020_crazy_the_anarchist.sql +9 -0
- package/dist/drizzle/0020_mutation_idempotency.sql +64 -0
- package/dist/drizzle/0021_crm_work_links.sql +76 -0
- package/dist/drizzle/0021_skill_runs_completion_hmac.sql +33 -0
- package/dist/drizzle/0022_add_billing_tables.sql +70 -0
- package/dist/drizzle/0022_seed_thinkwork_admin_permissions.sql +160 -0
- package/dist/drizzle/0022_stripe_billing_indexes.sql +48 -0
- package/dist/drizzle/0023_tenants_deactivation.sql +27 -0
- package/dist/drizzle/0024_tenant_mcp_admin_keys.sql +63 -0
- package/dist/drizzle/0025_v1_agent_architecture.sql +182 -0
- package/dist/drizzle/0026_thread_turns_add_kind.sql +28 -0
- package/dist/drizzle/0027_capability_catalog_and_manifests.sql +219 -0
- package/dist/drizzle/0028_aws_s3_extension.sql +26 -0
- package/dist/drizzle/0029_collapse_execution_types.sql +42 -0
- package/dist/drizzle/0030_retire_composition_primitives.sql +48 -0
- package/dist/drizzle/0031_thread_cleanup_drops.sql +131 -0
- package/dist/drizzle/0032_add_browser_automation_template_config.sql +24 -0
- package/dist/drizzle/0033_agent_operation_leases.sql +32 -0
- package/dist/drizzle/0034_agent_workspace_events.sql +116 -0
- package/dist/drizzle/0035_workspace_review_decisions.sql +19 -0
- package/dist/drizzle/0036_user_scoped_memory_wiki.sql +152 -0
- package/dist/drizzle/0037_user_profile_operating_model.sql +34 -0
- package/dist/drizzle/0042_agent_runtime_selector.sql +41 -0
- package/dist/drizzle/0043_wiki_search_tsv_tokenization.sql +48 -0
- package/dist/drizzle/0044_add_web_search_template_config.sql +7 -0
- package/dist/drizzle/0045_add_send_email_template_config.sql +7 -0
- package/dist/drizzle/0046_tenant_mcp_context_tools.sql +26 -0
- package/dist/drizzle/0047_add_context_engine_template_config.sql +7 -0
- package/dist/drizzle/0048_tenant_context_provider_settings.sql +22 -0
- package/dist/drizzle/0050_brain_v0_entity_subtype.sql +29 -0
- package/dist/drizzle/0051_brain_v0_tenant_entity_pages.sql +170 -0
- package/dist/drizzle/0052_brain_v0_external_refs.sql +41 -0
- package/dist/drizzle/0053_brain_v0_unresolved_mentions_subtype.sql +48 -0
- package/dist/drizzle/0054_wiki_compile_jobs_input.sql +28 -0
- package/dist/drizzle/0055_routines_stepfunctions_substrate.sql +202 -0
- package/dist/drizzle/0056_routine_step_events_dedup_idx.sql +25 -0
- package/dist/drizzle/0057_archive_legacy_python_routines.sql +36 -0
- package/dist/drizzle/0058_routines_visibility_and_owning_agent.sql +61 -0
- package/dist/drizzle/0061_routine_execution_asl_version_id.sql +29 -0
- package/dist/drizzle/0062_migrate_pi_to_flue.sql +110 -0
- package/dist/drizzle/0063_threads_session_data.sql +23 -0
- package/dist/drizzle/0064_tenant_credentials.sql +65 -0
- package/dist/drizzle/0067_thinkwork_computers_phase_one.sql +174 -0
- package/dist/drizzle/0068_drop_system_workflows_and_activation.sql +115 -0
- package/dist/drizzle/0069_compliance_schema.sql +364 -0
- package/dist/drizzle/0070_compliance_aurora_roles.sql +171 -0
- package/dist/drizzle/0072_threads_computer_ownership.sql +24 -0
- package/dist/drizzle/0073_compliance_tenant_anchor_state.sql +105 -0
- package/dist/drizzle/0074_compliance_event_hash_index.sql +49 -0
- package/dist/drizzle/0075_scheduled_jobs_computer_ownership.sql +27 -0
- package/dist/drizzle/0076_scheduled_jobs_marco_backfill.sql +69 -0
- package/dist/drizzle/0077_computers_primary_agent_id.sql +38 -0
- package/dist/drizzle/0078_tenant_customize_catalog.sql +46 -0
- package/dist/drizzle/0079_seed_tenant_customize_catalog.sql +53 -0
- package/dist/drizzle/0081_routines_catalog_slug.sql +42 -0
- package/dist/drizzle/0082_messages_parts_jsonb.sql +52 -0
- package/dist/drizzle/0083_computer_runbooks.sql +103 -0
- package/dist/drizzle/0084_artifacts_favorited_at.sql +32 -0
- package/dist/drizzle/0085_seed_thinkwork_computer_default_template.sql +46 -0
- package/dist/drizzle/0086_update_default_template_models.sql +19 -0
- package/dist/drizzle/0087_retire_oss_connectors.sql +77 -0
- package/dist/drizzle/0088_compliance_event_types_finance_pilot.sql +37 -0
- package/dist/drizzle/0089_remove_maniflow_eval_seeds.sql +81 -0
- package/dist/drizzle/0089_wiki_schema_extraction.sql +315 -0
- package/dist/drizzle/0090_brain_schema_extraction.sql +274 -0
- package/dist/drizzle/0091_drop_wiki_brain_compat_views.sql +118 -0
- package/dist/drizzle/0092_finish_oss_connector_retirement.sql +97 -0
- package/dist/drizzle/0093_eval_runs_scheduled_job_id.sql +23 -0
- package/dist/drizzle/0094_slack_workspace_app.sql +140 -0
- package/dist/drizzle/0095_eval_runs_computer_id.sql +22 -0
- package/dist/drizzle/0096_true_redteam_eval_seed_cleanup.sql +67 -0
- package/dist/drizzle/0097_shared_computers.sql +191 -0
- package/dist/drizzle/0098_business_ontology.sql +587 -0
- package/dist/drizzle/0099_thread_idle_learning.sql +145 -0
- package/dist/drizzle/0100_ontology_gated_brain_dynamic_subtypes.sql +7 -0
- package/dist/drizzle/0101_ontology_gated_unresolved_mentions_dynamic_subtypes.sql +7 -0
- package/dist/drizzle/0102_wiki_brain_owner_repair.sql +87 -0
- package/dist/drizzle/0103_brain_section_source_trigger_repair.sql +75 -0
- package/dist/drizzle/0104_expand_seed_ontology_for_user_memory.sql +166 -0
- package/dist/drizzle/0105_spaces_domain.sql +349 -0
- package/dist/drizzle/0106_expand_seed_ontology_for_triples.sql +173 -0
- package/dist/drizzle/0106_space_threads_participants.sql +197 -0
- package/dist/drizzle/0107_linked_task_mirror.sql +245 -0
- package/dist/drizzle/0108_message_mentions.sql +95 -0
- package/dist/drizzle/0109_space_owned_threads.sql +217 -0
- package/dist/drizzle/0110_thread_participant_read_state.sql +21 -0
- package/dist/drizzle/0111_agents_tenant_name_unique.sql +38 -0
- package/dist/drizzle/0112_recast_spaces_as_contextual_workrooms.sql +138 -0
- package/dist/drizzle/0113_agents_own_runtime_fields.sql +48 -0
- package/dist/drizzle/0114_migrate_templates_to_agents_and_spaces.sql +361 -0
- package/dist/drizzle/0115_remove_computer_eval_template_dependencies.sql +69 -0
- package/dist/drizzle/0116_backfill_thread_participants_access.sql +126 -0
- package/dist/drizzle/0117_space_access_mode.sql +40 -0
- package/dist/drizzle/0118_normalize_tenant_member_principal_type.sql +41 -0
- package/dist/drizzle/0119_space_knowledge_bases.sql +126 -0
- package/dist/drizzle/0120_space_automations.sql +58 -0
- package/dist/drizzle/0121_drop_computer_runbooks.sql +26 -0
- package/dist/drizzle/0122_space_email_triggers.sql +24 -0
- package/dist/drizzle/0123_single_platform_agent_and_overrides.sql +58 -0
- package/dist/drizzle/0124_thread_turns_finalized_at.sql +17 -0
- package/dist/drizzle/0125_drop_space_agent_assignments.sql +42 -0
- package/dist/drizzle/0126_migrate_flue_to_pi.sql +42 -0
- package/dist/drizzle/0127_runtime_type_observability.sql +28 -0
- package/dist/drizzle/0128_drop_eval_test_cases_agent_id.sql +37 -0
- package/dist/drizzle/0129_drop_code_factory_tables.sql +43 -0
- package/dist/drizzle/0129_eval_results_system_prompt.sql +30 -0
- package/dist/drizzle/0130_drop_teams_and_team_id_columns.sql +54 -0
- package/dist/drizzle/0131_drop_skill_catalog_and_tenant_skills.sql +33 -0
- package/dist/drizzle/0132_drop_computer_tables.sql +31 -0
- package/dist/drizzle/0133_drop_seed_view_tombstones.sql +79 -0
- package/dist/drizzle/0133_thread_turns_system_prompt.sql +22 -0
- package/dist/drizzle/0134_drop_dead_agent_runtime_tables.sql +53 -0
- package/dist/drizzle/0135_native_checklist_linked_tasks.sql +48 -0
- package/dist/drizzle/0136_goal_ledger.sql +55 -0
- package/dist/drizzle/0136_space_email_trigger_status.sql +66 -0
- package/dist/drizzle/0137_thread_participant_pins.sql +25 -0
- package/dist/drizzle/0138_users_cognito_sub.sql +30 -0
- package/dist/drizzle/0139_mobile_turn_client_id.sql +23 -0
- package/dist/drizzle/0140_workspace_folder_names.sql +36 -0
- package/dist/drizzle/0141_eval_runs_desktop_pi_provenance.sql +31 -0
- package/dist/drizzle/0142_pi_only_agent_runtime.sql +61 -0
- package/dist/drizzle/0143_add_web_extract_builtin_config.sql +28 -0
- package/dist/drizzle/0144_skill_catalog_index.sql +40 -0
- package/dist/drizzle/0145_knowledge_graph_thread_ingest.sql +512 -0
- package/dist/drizzle/0146_knowledge_graph_source_scope.sql +413 -0
- package/dist/drizzle/0147_knowledge_graph_scope_trigger_qualification.sql +211 -0
- package/dist/drizzle/0148_user_cost_attribution.sql +171 -0
- package/dist/drizzle/0149_managed_mcp_servers.sql +64 -0
- package/dist/drizzle/0149_user_model_approvals.sql +89 -0
- package/dist/drizzle/0150_bootstrap_first_admin_claim.sql +11 -0
- package/dist/drizzle/0151_managed_deployments.sql +91 -0
- package/dist/drizzle/0152_agent_profiles.sql +81 -0
- package/dist/drizzle/0153_message_mentions_agent_profile.sql +9 -0
- package/dist/drizzle/0154_customer_deployment_sessions.sql +61 -0
- package/dist/drizzle/0155_tenant_model_catalog.sql +152 -0
- package/dist/drizzle/0156_bootstrap_credential_leases.sql +52 -0
- package/dist/drizzle/0157_knowledge_graph_observations_source.sql +79 -0
- package/dist/drizzle/0158_pending_user_questions.sql +80 -0
- package/dist/drizzle/0158_wiki_tenant_scope.sql +38 -0
- package/dist/drizzle/0159_agent_profiles_space_local.sql +49 -0
- package/dist/drizzle/0159_application_plugins.sql +193 -0
- package/dist/drizzle/0159_eval_scoring_version.sql +46 -0
- package/dist/drizzle/0160_compliance_event_types_plugins.sql +37 -0
- package/dist/drizzle/0160_eval_datasets.sql +75 -0
- package/dist/drizzle/0160_eval_results_thread_turn.sql +35 -0
- package/dist/drizzle/0161_eval_run_pinning.sql +54 -0
- package/dist/drizzle/0161_tenant_mcp_servers_plugin_source.sql +62 -0
- package/dist/drizzle/0162_eval_result_override.sql +49 -0
- package/dist/drizzle/0163_eval_replay_tool_allowlist.sql +50 -0
- package/dist/drizzle/0164_eval_replay_tool_override_mode.sql +52 -0
- package/dist/drizzle/0165_plugin_premium_entitlements.sql +153 -0
- package/dist/drizzle/0166_company_brain_substrate_contract.sql +386 -0
- package/dist/drizzle/0167_company_brain_artifact_manifest_runtime.sql +85 -0
- package/dist/drizzle/0168_eval_skill_gate.sql +44 -0
- package/dist/drizzle/0169_release_update_jobs.sql +67 -0
- package/dist/drizzle/0170_email_channel_plugin.sql +291 -0
- package/dist/drizzle/0171_linked_task_external_providers.sql +30 -0
- package/dist/drizzle/0172_email_channel_sendgrid_provider.sql +8 -0
- package/dist/drizzle/0173_auth_provider_resources.sql +83 -0
- package/dist/drizzle/0174_workos_auth_bridges.sql +37 -0
- package/dist/drizzle/0175_workos_auth_sessions.sql +38 -0
- package/dist/drizzle/0176_n8n_agent_step_runs.sql +107 -0
- package/dist/drizzle/0177_workflow_control_plane.sql +281 -0
- package/dist/drizzle/0178_workflow_backfill_existing_routines.sql +525 -0
- package/dist/drizzle/0179_tenant_goal_budget_settings.sql +21 -0
- package/dist/drizzle/0180_skill_drafts.sql +89 -0
- package/dist/drizzle/0181_skill_draft_publish_status.sql +21 -0
- package/dist/drizzle/0182_agent_loops.sql +260 -0
- package/dist/drizzle/0183_okf_artifact_manifests.sql +52 -0
- package/dist/drizzle/0184_skill_catalog_trust_cache.sql +35 -0
- package/dist/drizzle/0185_agent_loop_space.sql +16 -0
- package/dist/drizzle/0186_tenant_mcp_runtime_metadata.sql +10 -0
- package/dist/drizzle/0187_native_work_items.sql +220 -0
- package/dist/drizzle/0188_company_etl_plugin_rename.sql +99 -0
- package/dist/drizzle/0189_trace_cost_substrate.sql +247 -0
- package/dist/drizzle/0190_billing_export_reconciliation.sql +101 -0
- package/dist/drizzle/0191_open_engine_work_item_queue.sql +66 -0
- package/dist/drizzle/0192_work_item_labels.sql +44 -0
- package/dist/drizzle/0193_work_item_documents.sql +31 -0
- package/dist/drizzle/0194_memory_retain_attempts.sql +103 -0
- package/dist/drizzle/0194_work_item_comments.sql +35 -0
- package/dist/drizzle/0195_plugin_app_overlays.sql +45 -0
- package/dist/drizzle/0196_pi_extensions.sql +118 -0
- package/dist/drizzle/0197_eval_profiles.sql +150 -0
- package/dist/drizzle/0198_eval_runs_unstable.sql +27 -0
- package/dist/drizzle/0199_eval_runs_cost_partial.sql +27 -0
- package/dist/drizzle/meta/_journal.json +160 -0
- package/dist/plugins/README.md +162 -0
- package/dist/plugins/catalog/package.json +40 -0
- package/dist/plugins/catalog/scripts/build-catalog.ts +120 -0
- package/dist/plugins/catalog/scripts/generate-plugin-registry.ts +144 -0
- package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +86 -0
- package/dist/plugins/catalog/src/__tests__/catalog.test.ts +308 -0
- package/dist/plugins/catalog/src/__tests__/contracts.test.ts +861 -0
- package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +124 -0
- package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +120 -0
- package/dist/plugins/catalog/src/catalog.ts +434 -0
- package/dist/plugins/catalog/src/contracts.ts +1498 -0
- package/dist/plugins/catalog/src/index.ts +4 -0
- package/dist/plugins/catalog/src/plugin-package.ts +171 -0
- package/dist/plugins/catalog/src/registry/generated-first-party.ts +76 -0
- package/dist/plugins/catalog/src/registry/index.ts +1 -0
- package/dist/plugins/catalog/tsconfig.json +8 -0
- package/dist/plugins/company-brain/README.md +37 -0
- package/dist/plugins/company-brain/package.json +33 -0
- package/dist/plugins/company-brain/runtime/cognee/Dockerfile +11 -0
- package/dist/plugins/company-brain/smoke/cognee-managed-app-smoke.mjs +458 -0
- package/dist/plugins/company-brain/smoke/cognee-memory-cutover-smoke.mjs +539 -0
- package/dist/plugins/company-brain/smoke/company-brain-context-engine-smoke.mjs +312 -0
- package/dist/plugins/company-brain/smoke/company-brain-operations-smoke.mjs +449 -0
- package/dist/plugins/company-brain/smoke/company-brain-plugin-smoke.mjs +655 -0
- package/dist/plugins/company-brain/smoke/hindsight-memory-isolation-smoke.mjs +474 -0
- package/dist/plugins/company-brain/src/api/cognee-client.ts +896 -0
- package/dist/plugins/company-brain/src/api/cognee-cluster-identity.ts +49 -0
- package/dist/plugins/company-brain/src/api/cognee-memory-scope.ts +84 -0
- package/dist/plugins/company-brain/src/api/context-engine-provider.ts +888 -0
- package/dist/plugins/company-brain/src/api/migration.ts +665 -0
- package/dist/plugins/company-brain/src/deployment/cognee-managed-app.ts +396 -0
- package/dist/plugins/company-brain/src/index.ts +62 -0
- package/dist/plugins/company-brain/src/manifest.ts +112 -0
- package/dist/plugins/company-brain/terraform/cognee/README.md +263 -0
- package/dist/plugins/company-brain/terraform/cognee/main.tf +766 -0
- package/dist/plugins/company-brain/terraform/cognee/outputs.tf +144 -0
- package/dist/plugins/company-brain/terraform/cognee/variables.tf +402 -0
- package/dist/plugins/company-brain/test/api/cognee-client.test.ts +562 -0
- package/dist/plugins/company-brain/test/api/cognee-memory-scope.test.ts +74 -0
- package/dist/plugins/company-brain/test/api/context-engine-provider.test.ts +447 -0
- package/dist/plugins/company-brain/test/api/migration.test.ts +465 -0
- package/dist/plugins/company-brain/test/manifest.test.ts +95 -0
- package/dist/plugins/company-brain/tsconfig.json +8 -0
- package/dist/plugins/company-data/README.md +49 -0
- package/dist/plugins/company-data/package.json +21 -0
- package/dist/plugins/company-data/src/index.ts +30 -0
- package/dist/plugins/company-data/src/manifest.ts +26 -0
- package/dist/plugins/company-data/test/manifest.test.ts +116 -0
- package/dist/plugins/company-data/tsconfig.json +8 -0
- package/dist/plugins/company-etl/README.md +46 -0
- package/dist/plugins/company-etl/package.json +21 -0
- package/dist/plugins/company-etl/src/index.ts +29 -0
- package/dist/plugins/company-etl/src/manifest.ts +26 -0
- package/dist/plugins/company-etl/test/manifest.test.ts +108 -0
- package/dist/plugins/company-etl/tsconfig.json +8 -0
- package/dist/plugins/email-channel/README.md +41 -0
- package/dist/plugins/email-channel/package.json +22 -0
- package/dist/plugins/email-channel/src/index.ts +36 -0
- package/dist/plugins/email-channel/src/manifest.ts +44 -0
- package/dist/plugins/email-channel/src/provider-contract.ts +36 -0
- package/dist/plugins/email-channel/test/manifest.test.ts +119 -0
- package/dist/plugins/email-channel/tsconfig.json +8 -0
- package/dist/plugins/lastmile/README.md +50 -0
- package/dist/plugins/lastmile/package.json +23 -0
- package/dist/plugins/lastmile/smoke/lastmile-plugin-smoke.mjs +661 -0
- package/dist/plugins/lastmile/src/api/tasks-adapter.ts +572 -0
- package/dist/plugins/lastmile/src/discovery.fixture.ts +64 -0
- package/dist/plugins/lastmile/src/index.ts +46 -0
- package/dist/plugins/lastmile/src/manifest.ts +139 -0
- package/dist/plugins/lastmile/test/api/tasks-adapter.test.ts +266 -0
- package/dist/plugins/lastmile/test/discovery.test.ts +88 -0
- package/dist/plugins/lastmile/tsconfig.json +8 -0
- package/dist/plugins/n8n/README.md +201 -0
- package/dist/plugins/n8n/n8n-app/README.md +33 -0
- package/dist/plugins/n8n/n8n-app/package.json +23 -0
- package/dist/plugins/n8n/n8n-app/src/application-config.ts +45 -0
- package/dist/plugins/n8n/n8n-app/src/front-components/thinkwork-workflows.front-component.tsx +970 -0
- package/dist/plugins/n8n/n8n-app/src/lib/n8n-app-data.ts +190 -0
- package/dist/plugins/n8n/n8n-app/src/vite-env.d.ts +7 -0
- package/dist/plugins/n8n/n8n-app/tsconfig.json +15 -0
- package/dist/plugins/n8n/package.json +35 -0
- package/dist/plugins/n8n/runtime/Dockerfile +18 -0
- package/dist/plugins/n8n/runtime/n8n-task-runners.json +14 -0
- package/dist/plugins/n8n/runtime/n8n-task-runners.json.template +14 -0
- package/dist/plugins/n8n/runtime/package-lock.json +13 -0
- package/dist/plugins/n8n/runtime/package.json +7 -0
- package/dist/plugins/n8n/scripts/sync-thinkwork-app.mjs +268 -0
- package/dist/plugins/n8n/smoke/README.md +95 -0
- package/dist/plugins/n8n/smoke/n8n-agent-step-bridge-smoke.mjs +866 -0
- package/dist/plugins/n8n/smoke/n8n-integrated-app-smoke.mjs +262 -0
- package/dist/plugins/n8n/smoke/n8n-managed-app-smoke.mjs +409 -0
- package/dist/plugins/n8n/smoke/n8n-mcp-smoke.mjs +624 -0
- package/dist/plugins/n8n/src/deployment/image-build.ts +172 -0
- package/dist/plugins/n8n/src/deployment/managed-app.ts +429 -0
- package/dist/plugins/n8n/src/index.ts +79 -0
- package/dist/plugins/n8n/src/manifest.ts +403 -0
- package/dist/plugins/n8n/src/package-config.ts +186 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/SKILL.md +76 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/mcp-tooling.md +40 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/validation-and-handoff.md +40 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/workflow-authoring.md +45 -0
- package/dist/plugins/n8n/terraform/n8n/README.md +113 -0
- package/dist/plugins/n8n/terraform/n8n/main.tf +918 -0
- package/dist/plugins/n8n/terraform/n8n/outputs.tf +124 -0
- package/dist/plugins/n8n/terraform/n8n/scripts/sync-database.py +250 -0
- package/dist/plugins/n8n/terraform/n8n/scripts/test_sync_database.py +55 -0
- package/dist/plugins/n8n/terraform/n8n/variables.tf +354 -0
- package/dist/plugins/n8n/test/image-build.test.ts +118 -0
- package/dist/plugins/n8n/test/integrated-app-contract.test.ts +353 -0
- package/dist/plugins/n8n/test/manifest.test.ts +278 -0
- package/dist/plugins/n8n/test/package-config.test.ts +57 -0
- package/dist/plugins/n8n/tsconfig.json +8 -0
- package/dist/plugins/sendgrid/README.md +30 -0
- package/dist/plugins/sendgrid/package.json +22 -0
- package/dist/plugins/sendgrid/src/index.ts +36 -0
- package/dist/plugins/sendgrid/src/manifest.ts +37 -0
- package/dist/plugins/sendgrid/src/provider-contract.ts +14 -0
- package/dist/plugins/sendgrid/test/manifest.test.ts +80 -0
- package/dist/plugins/sendgrid/tsconfig.json +8 -0
- package/dist/plugins/twenty/README.md +78 -0
- package/dist/plugins/twenty/package.json +27 -0
- package/dist/plugins/twenty/scripts/__tests__/sync-thinkwork-app.test.mjs +67 -0
- package/dist/plugins/twenty/scripts/sync-thinkwork-app.mjs +185 -0
- package/dist/plugins/twenty/scripts/wire-thinkwork-workflow.mjs +658 -0
- package/dist/plugins/twenty/smoke/twenty-managed-app-smoke.mjs +359 -0
- package/dist/plugins/twenty/smoke/twenty-mcp-oauth-smoke.mjs +574 -0
- package/dist/plugins/twenty/src/api/cutover.ts +209 -0
- package/dist/plugins/twenty/src/deployment/managed-app.ts +253 -0
- package/dist/plugins/twenty/src/index.ts +55 -0
- package/dist/plugins/twenty/src/manifest.ts +259 -0
- package/dist/plugins/twenty/terraform/twenty/README.md +97 -0
- package/dist/plugins/twenty/terraform/twenty/main.tf +829 -0
- package/dist/plugins/twenty/terraform/twenty/outputs.tf +79 -0
- package/dist/plugins/twenty/terraform/twenty/variables.tf +268 -0
- package/dist/plugins/twenty/test/api/cutover.test.ts +183 -0
- package/dist/plugins/twenty/test/manifest.test.ts +463 -0
- package/dist/plugins/twenty/tsconfig.json +9 -0
- package/dist/plugins/twenty/twenty-app/.nvmrc +1 -0
- package/dist/plugins/twenty/twenty-app/README.md +148 -0
- package/dist/plugins/twenty/twenty-app/package.json +30 -0
- package/dist/plugins/twenty/twenty-app/src/application-config.ts +44 -0
- package/dist/plugins/twenty/twenty-app/src/constants/universal-identifiers.ts +18 -0
- package/dist/plugins/twenty/twenty-app/src/default-role.ts +24 -0
- package/dist/plugins/twenty/twenty-app/src/front-components/thinkwork-settings.front-component.tsx +299 -0
- package/dist/plugins/twenty/twenty-app/src/logic-functions/thinkwork-webhook.logic-function.ts +354 -0
- package/dist/plugins/twenty/twenty-app/tsconfig.json +14 -0
- package/dist/plugins/twenty/twenty-app/yarn.lock +4144 -0
- package/dist/plugins/workos-auth/package.json +22 -0
- package/dist/plugins/workos-auth/src/index.ts +30 -0
- package/dist/plugins/workos-auth/src/manifest.ts +40 -0
- package/dist/plugins/workos-auth/src/provider-contract.ts +39 -0
- package/dist/plugins/workos-auth/test/manifest.test.ts +94 -0
- package/dist/plugins/workos-auth/tsconfig.json +8 -0
- package/dist/scripts/bootstrap-workspace.sh +162 -0
- package/dist/scripts/post-deploy.sh +290 -0
- package/dist/terraform/examples/greenfield/main.tf +903 -75
- package/dist/terraform/examples/greenfield/terraform.tfvars.example +67 -8
- package/dist/terraform/modules/app/agentcore-code-interpreter/Dockerfile.sandbox-base +2 -2
- package/dist/terraform/modules/app/agentcore-code-interpreter/README.md +8 -9
- package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/sitecustomize.py +227 -0
- package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/test_sitecustomize.py +277 -0
- package/dist/terraform/modules/app/agentcore-memory/README.md +6 -6
- package/dist/terraform/modules/app/agentcore-memory/main.tf +1 -1
- package/dist/terraform/modules/app/agentcore-memory/scripts/create_or_find_memory.sh +40 -9
- package/dist/terraform/modules/app/agentcore-pi/README.md +61 -0
- package/dist/terraform/modules/app/agentcore-pi/main.tf +453 -0
- package/dist/terraform/modules/app/agentcore-pi/outputs.tf +38 -0
- package/dist/terraform/modules/app/agentcore-pi/variables.tf +145 -0
- package/dist/terraform/modules/app/agentcore-platform/main.tf +83 -0
- package/dist/terraform/modules/app/agentcore-runtime/main.tf +9 -11
- package/dist/terraform/modules/app/appsync-subscriptions/main.tf +5 -1
- package/dist/terraform/modules/app/customer-domain/main.tf +483 -0
- package/dist/terraform/modules/app/deployment-control-plane/README.md +47 -0
- package/dist/terraform/modules/app/deployment-control-plane/buildspec.yml +24 -0
- package/dist/terraform/modules/app/deployment-control-plane/main.tf +614 -0
- package/dist/terraform/modules/app/deployment-control-plane/outputs.tf +54 -0
- package/dist/terraform/modules/app/deployment-control-plane/runner.py +4720 -0
- package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +3026 -0
- package/dist/terraform/modules/app/deployment-control-plane/variables.tf +96 -0
- package/dist/terraform/modules/app/hindsight-memory/README.md +25 -23
- package/dist/terraform/modules/app/hindsight-memory/main.tf +26 -2
- package/dist/terraform/modules/app/lambda-api/eval-fanout.tf +17 -50
- package/dist/terraform/modules/app/lambda-api/handlers.tf +1290 -679
- package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +933 -0
- package/dist/terraform/modules/app/lambda-api/main.tf +14 -527
- package/dist/terraform/modules/app/lambda-api/mcp-oauth.tf +3 -19
- package/dist/terraform/modules/app/lambda-api/outputs.tf +50 -6
- package/dist/terraform/modules/app/lambda-api/runtime-config.tf +163 -0
- package/dist/terraform/modules/app/lambda-api/slack-app-secrets.tf +3 -1
- package/dist/terraform/modules/app/lambda-api/stripe-secrets.tf +3 -1
- package/dist/terraform/modules/app/lambda-api/variables.tf +240 -53
- package/dist/terraform/modules/app/lambda-api/workspace-events.tf +2 -25
- package/dist/terraform/modules/app/ses-email/main.tf +143 -30
- package/dist/terraform/modules/app/static-site/main.tf +4 -3
- package/dist/terraform/modules/app/www-dns/main.tf +45 -5
- package/dist/terraform/modules/app/www-dns/outputs.tf +10 -0
- package/dist/terraform/modules/app/www-dns/variables.tf +24 -0
- package/dist/terraform/modules/data/aurora-postgres/main.tf +15 -1
- package/dist/terraform/modules/data/compliance-exports-bucket/main.tf +1 -1
- package/dist/terraform/modules/data/compliance-exports-bucket/variables.tf +6 -0
- package/dist/terraform/modules/foundation/cognito/main.tf +167 -11
- package/dist/terraform/modules/foundation/cognito/outputs.tf +5 -0
- package/dist/terraform/modules/foundation/cognito/variables.tf +110 -0
- package/dist/terraform/modules/foundation/vpc/main.tf +45 -3
- package/dist/terraform/modules/foundation/vpc/outputs.tf +20 -0
- package/dist/terraform/modules/foundation/vpc/variables.tf +18 -0
- package/dist/terraform/modules/thinkwork/README.md +71 -0
- package/dist/terraform/modules/thinkwork/main.tf +1325 -174
- package/dist/terraform/modules/thinkwork/outputs.tf +457 -24
- package/dist/terraform/modules/thinkwork/variables.tf +1169 -93
- package/dist/terraform/schema.graphql +82 -9
- package/dist/workspace-defaults/files/AGENTS.md +344 -0
- package/dist/workspace-defaults/files/CONTEXT.md +8 -0
- package/dist/workspace-defaults/files/GUARDRAILS.md +51 -0
- package/dist/workspace-defaults/files/MEMORY_GUIDE.md +65 -0
- package/dist/workspace-defaults/files/ROUTER.md +24 -0
- package/dist/workspace-defaults/files/SPACE.md +62 -0
- package/dist/workspace-defaults/files/TOOLS.md +65 -0
- package/dist/workspace-defaults/files/USER.md +40 -0
- package/dist/workspace-defaults/files/mcp.json +3 -0
- package/dist/workspace-defaults/files/memory/contacts.md +13 -0
- package/dist/workspace-defaults/files/memory/lessons.md +13 -0
- package/dist/workspace-defaults/files/memory/preferences.md +12 -0
- package/dist/workspace-defaults/files/skills/.gitkeep +1 -0
- package/dist/workspace-defaults/files/skills/artifact-builder/SKILL.md +79 -0
- package/dist/workspace-defaults/files/skills/artifact-builder/references/crm-dashboard.md +166 -0
- package/dist/workspace-defaults/files/skills/automation-loop-designer/SKILL.md +120 -0
- package/dist/workspace-defaults/files/skills/skill-creator/LICENSE.txt +202 -0
- package/dist/workspace-defaults/files/skills/skill-creator/SKILL.md +485 -0
- package/dist/workspace-defaults/files/skills/skill-creator/UPSTREAM.json +124 -0
- package/dist/workspace-defaults/files/skills/skill-creator/agents/analyzer.md +274 -0
- package/dist/workspace-defaults/files/skills/skill-creator/agents/comparator.md +202 -0
- package/dist/workspace-defaults/files/skills/skill-creator/agents/grader.md +223 -0
- package/dist/workspace-defaults/files/skills/skill-creator/assets/eval_review.html +146 -0
- package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/dist/workspace-defaults/files/skills/skill-creator/references/schemas.md +430 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/__init__.py +0 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/generate_report.py +326 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/improve_description.py +247 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/package_skill.py +136 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_eval.py +310 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_loop.py +328 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/utils.py +47 -0
- package/package.json +1 -1
- package/dist/terraform/modules/app/agentcore-flue/README.md +0 -58
- package/dist/terraform/modules/app/agentcore-flue/main.tf +0 -323
- package/dist/terraform/modules/app/agentcore-flue/outputs.tf +0 -23
- package/dist/terraform/modules/app/agentcore-flue/variables.tf +0 -97
- package/dist/terraform/modules/app/computer-runtime/README.md +0 -15
- package/dist/terraform/modules/app/computer-runtime/main.tf +0 -406
- package/dist/terraform/modules/app/computer-runtime/outputs.tf +0 -75
- package/dist/terraform/modules/app/computer-runtime/variables.tf +0 -66
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
-- Retire composition-era primitive skills (pure-skill-spec cleanup).
|
|
2
|
+
--
|
|
3
|
+
-- Post plan §U6 the composition runner is gone, and every deliverable-shape
|
|
4
|
+
-- skill (sales-prep, account-health-review, renewal-prep, customer-onboarding-
|
|
5
|
+
-- reconciler) has been rewritten as a pure Claude-spec SKILL.md that inlines
|
|
6
|
+
-- framing + synthesis. The four workflow primitives that used to be invoked
|
|
7
|
+
-- between a deliverable's steps -- frame, synthesize, gather, compound -- no
|
|
8
|
+
-- longer have callers. This migration deletes them from every tenant + agent
|
|
9
|
+
-- install so the admin catalog, workspace-map generator, and session
|
|
10
|
+
-- allowlist stop listing stale slugs.
|
|
11
|
+
--
|
|
12
|
+
-- The YAML directories + S3 artifacts for those slugs are removed in the same
|
|
13
|
+
-- PR's commit. The sync-catalog-db.ts script also deletes retired builtin
|
|
14
|
+
-- rows on every deploy as a belt-and-suspenders invariant, but this migration
|
|
15
|
+
-- cleans them up explicitly on the stage that applies it first.
|
|
16
|
+
--
|
|
17
|
+
-- Apply manually (matches the 0018+ hand-rolled convention):
|
|
18
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0030_retire_composition_primitives.sql
|
|
19
|
+
--
|
|
20
|
+
-- Drift detection:
|
|
21
|
+
-- pnpm db:migrate-manual
|
|
22
|
+
--
|
|
23
|
+
-- Idempotency:
|
|
24
|
+
-- DELETEs are naturally idempotent; the marker view uses CREATE OR REPLACE.
|
|
25
|
+
--
|
|
26
|
+
-- creates: public.view_composition_primitives_retired
|
|
27
|
+
|
|
28
|
+
-- Drop any agent-level installs first so no agent keeps pointing at a slug
|
|
29
|
+
-- the catalog no longer exposes. agent_skills.skill_id is the slug text,
|
|
30
|
+
-- no FK -- direct DELETE is safe.
|
|
31
|
+
DELETE FROM agent_skills
|
|
32
|
+
WHERE skill_id IN ('frame', 'synthesize', 'gather', 'compound');
|
|
33
|
+
|
|
34
|
+
-- Tenant-level installs next.
|
|
35
|
+
DELETE FROM tenant_skills
|
|
36
|
+
WHERE skill_id IN ('frame', 'synthesize', 'gather', 'compound');
|
|
37
|
+
|
|
38
|
+
-- Finally drop the catalog rows themselves.
|
|
39
|
+
DELETE FROM skill_catalog
|
|
40
|
+
WHERE slug IN ('frame', 'synthesize', 'gather', 'compound');
|
|
41
|
+
|
|
42
|
+
-- Marker view — lets the db-migrate-manual drift reporter confirm this
|
|
43
|
+
-- migration applied. Cheap and isolated; the view returns the apply time
|
|
44
|
+
-- so operators can also audit when retirement happened on each stage.
|
|
45
|
+
CREATE OR REPLACE VIEW public.view_composition_primitives_retired AS
|
|
46
|
+
SELECT
|
|
47
|
+
NOW() AS retired_at,
|
|
48
|
+
ARRAY['frame', 'synthesize', 'gather', 'compound']::text[] AS retired_slugs;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
-- U5 (narrowed): drop retired thread_comments table + two orphan indices.
|
|
2
|
+
--
|
|
3
|
+
-- Plan reference:
|
|
4
|
+
-- docs/plans/2026-04-24-002-refactor-thread-detail-pre-launch-cleanup-plan.md
|
|
5
|
+
-- (U5 destructive migration; original scope also listed `artifacts` and
|
|
6
|
+
-- `message_artifacts`, but a fresh survey found those tables are still
|
|
7
|
+
-- load-bearing — `Artifact` GraphQL type, full CRUD resolvers, and mobile
|
|
8
|
+
-- `Message.durableArtifact` rendering are all live. Narrowed scope here.)
|
|
9
|
+
--
|
|
10
|
+
-- What this drops:
|
|
11
|
+
-- 1. public.thread_comments — retired by U2 (escalateThread/delegateThread
|
|
12
|
+
-- refactored onto thread_turns kind=system_event). Live writes are
|
|
13
|
+
-- gone; tests assert no inserts; only retired-comment doc strings
|
|
14
|
+
-- remain in the resolvers.
|
|
15
|
+
-- 2. public.idx_threads_tenant_status — orphaned. Admin U7 retired the
|
|
16
|
+
-- list-view filter that used this index; no other call site reads it.
|
|
17
|
+
-- The `thread.status` column itself remains (Strands
|
|
18
|
+
-- `update_thread_status` skill still writes it).
|
|
19
|
+
-- 3. public.idx_threads_parent_id — orphaned. Parent/child thread
|
|
20
|
+
-- queries were retired with the GraphQL `Thread.parent` /
|
|
21
|
+
-- `Thread.children` fields; the `parent_id` column remains for now
|
|
22
|
+
-- (no consumer reads it but it's recoverable from row data if needed).
|
|
23
|
+
--
|
|
24
|
+
-- What this preserves:
|
|
25
|
+
-- - public.thread.status column (still mutated by the Strands skill).
|
|
26
|
+
-- - public.thread.parent_id column (orphan but cheap to keep).
|
|
27
|
+
-- - public.artifacts and public.message_artifacts tables and all their
|
|
28
|
+
-- CRUD resolvers + Drizzle declarations.
|
|
29
|
+
--
|
|
30
|
+
-- Recoverability:
|
|
31
|
+
-- Pre-drop, this migration uses `aws_s3.query_export_to_s3` to snapshot
|
|
32
|
+
-- `thread_comments` rows to s3://thinkwork-${stage}-backups/pre-drop/.
|
|
33
|
+
-- Provisioned by U13 (terraform/modules/data/s3-backups-bucket +
|
|
34
|
+
-- terraform/modules/data/aurora-postgres aws_s3 IAM role). The
|
|
35
|
+
-- `aws_s3` extension itself is enabled by drizzle/0028_aws_s3_extension.sql.
|
|
36
|
+
-- Required role association feature_name = "s3Export" must already be
|
|
37
|
+
-- attached (operator confirms via the post-deploy runbook before
|
|
38
|
+
-- applying this migration).
|
|
39
|
+
--
|
|
40
|
+
-- Apply manually (matches the 0018+ hand-rolled convention):
|
|
41
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0031_thread_cleanup_drops.sql
|
|
42
|
+
--
|
|
43
|
+
-- The `${stage}` literal in the S3 URI below must be substituted at
|
|
44
|
+
-- apply time (psql does not expand env vars in SQL literals). Replace
|
|
45
|
+
-- with the target deploy stage before running, or use psql variables:
|
|
46
|
+
-- psql "$DATABASE_URL" -v stage=dev -f .../0031_thread_cleanup_drops.sql
|
|
47
|
+
-- and reference `:'stage'` in the snapshot lines (see SET BLOCK below).
|
|
48
|
+
--
|
|
49
|
+
-- Drift detection:
|
|
50
|
+
-- pnpm db:migrate-manual reports `drops:` markers as DROPPED (target
|
|
51
|
+
-- table/index absent) or STILL_PRESENT (target still in DB). After
|
|
52
|
+
-- apply, the markers below should report DROPPED.
|
|
53
|
+
--
|
|
54
|
+
-- Pre-migration invariants:
|
|
55
|
+
-- - aws_s3 extension installed (\dx aws_s3).
|
|
56
|
+
-- - Aurora cluster has the `feature_name = "s3Export"` role association
|
|
57
|
+
-- to a role that grants s3:PutObject on
|
|
58
|
+
-- thinkwork-${stage}-backups/pre-drop/*.
|
|
59
|
+
-- - Caller has rds_superuser (required for cross-schema DROP CASCADE
|
|
60
|
+
-- paths and aws_s3 calls).
|
|
61
|
+
--
|
|
62
|
+
-- Rollback runbook:
|
|
63
|
+
-- 1. Recover thread_comments rows from
|
|
64
|
+
-- s3://thinkwork-${stage}-backups/pre-drop/thread_comments_<date>.csv.
|
|
65
|
+
-- 2. Recreate the table from the prior schema definition (see
|
|
66
|
+
-- packages/database-pg/src/schema/threads.ts at commit before this
|
|
67
|
+
-- migration; threadComments table block).
|
|
68
|
+
-- 3. `\copy public.thread_comments FROM '<csv>' WITH (FORMAT csv, HEADER true);`
|
|
69
|
+
-- 4. Re-add `idx_threads_tenant_status` and `idx_threads_parent_id`
|
|
70
|
+
-- with `CREATE INDEX CONCURRENTLY ...` if needed (rare — the
|
|
71
|
+
-- indices weren't read by any production path).
|
|
72
|
+
--
|
|
73
|
+
-- drops: public.thread_comments
|
|
74
|
+
-- drops: public.idx_threads_tenant_status
|
|
75
|
+
-- drops: public.idx_threads_parent_id
|
|
76
|
+
|
|
77
|
+
\set ON_ERROR_STOP on
|
|
78
|
+
|
|
79
|
+
-- Default stage to 'dev' so accidental copy/paste runs don't write to a
|
|
80
|
+
-- mis-named bucket. Override with `psql -v stage=prod ...`.
|
|
81
|
+
\if :{?stage}
|
|
82
|
+
\else
|
|
83
|
+
\set stage dev
|
|
84
|
+
\endif
|
|
85
|
+
|
|
86
|
+
BEGIN;
|
|
87
|
+
|
|
88
|
+
-- Fail fast on lock contention rather than wedging the cluster behind
|
|
89
|
+
-- long-held locks. thread_comments has no production traffic post-U2 so
|
|
90
|
+
-- a 5s wait is more than sufficient.
|
|
91
|
+
SET LOCAL lock_timeout = '5s';
|
|
92
|
+
SET LOCAL statement_timeout = '60s';
|
|
93
|
+
|
|
94
|
+
-- ---------------------------------------------------------------------------
|
|
95
|
+
-- Pre-drop snapshot to S3 (recoverable forever; lifecycle policy on the
|
|
96
|
+
-- bucket expires pre-drop/ objects after 90 days).
|
|
97
|
+
-- ---------------------------------------------------------------------------
|
|
98
|
+
|
|
99
|
+
SELECT aws_s3.query_export_to_s3(
|
|
100
|
+
'SELECT * FROM public.thread_comments',
|
|
101
|
+
aws_commons.create_s3_uri(
|
|
102
|
+
'thinkwork-' || :'stage' || '-backups',
|
|
103
|
+
'pre-drop/thread_comments_2026_04_24.csv',
|
|
104
|
+
current_setting('cluster_region', true)
|
|
105
|
+
),
|
|
106
|
+
options := 'format csv, header true'
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
-- ---------------------------------------------------------------------------
|
|
110
|
+
-- Drop the orphan indices first. DROP INDEX is metadata-only on Aurora
|
|
111
|
+
-- Postgres so it's nearly free; doing it before the table drop keeps the
|
|
112
|
+
-- transaction's order-of-operations explicit.
|
|
113
|
+
-- ---------------------------------------------------------------------------
|
|
114
|
+
|
|
115
|
+
DROP INDEX IF EXISTS public.idx_threads_tenant_status;
|
|
116
|
+
DROP INDEX IF EXISTS public.idx_threads_parent_id;
|
|
117
|
+
|
|
118
|
+
-- ---------------------------------------------------------------------------
|
|
119
|
+
-- Drop thread_comments. CASCADE removes any incidental FKs from other
|
|
120
|
+
-- tables that referenced thread_comments (none expected at this point —
|
|
121
|
+
-- the U2 refactor moved all callers off this table).
|
|
122
|
+
-- ---------------------------------------------------------------------------
|
|
123
|
+
|
|
124
|
+
DROP TABLE IF EXISTS public.thread_comments CASCADE;
|
|
125
|
+
|
|
126
|
+
COMMIT;
|
|
127
|
+
|
|
128
|
+
-- Post-apply verification (run as a separate statement, outside the txn):
|
|
129
|
+
-- \dt public.thread_comments -- should report no relation found
|
|
130
|
+
-- \d public.threads -- should not list idx_threads_tenant_status or idx_threads_parent_id
|
|
131
|
+
-- pnpm db:migrate-manual -- the three `drops:` markers above should report DROPPED
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-- 0032_add_browser_automation_template_config.sql
|
|
2
|
+
-- Add template-level Browser Automation opt-in metadata and catalog entry.
|
|
3
|
+
--
|
|
4
|
+
-- Manual migration marker for drift reporter:
|
|
5
|
+
-- creates-column: public.agent_templates.browser
|
|
6
|
+
|
|
7
|
+
ALTER TABLE "agent_templates"
|
|
8
|
+
ADD COLUMN IF NOT EXISTS "browser" jsonb;
|
|
9
|
+
|
|
10
|
+
INSERT INTO "capability_catalog" ("slug", "type", "source", "implementation_ref", "spec")
|
|
11
|
+
VALUES
|
|
12
|
+
(
|
|
13
|
+
'browser_automation', 'tool', 'builtin',
|
|
14
|
+
jsonb_build_object('module_path', 'browser_automation_tool', 'class_name', 'BrowserAutomationTool'),
|
|
15
|
+
jsonb_build_object(
|
|
16
|
+
'display_name', 'Browser Automation',
|
|
17
|
+
'description', 'Control a managed AgentCore Browser session with Nova Act for website workflows.'
|
|
18
|
+
)
|
|
19
|
+
)
|
|
20
|
+
ON CONFLICT ("type", "source", "slug") DO UPDATE
|
|
21
|
+
SET
|
|
22
|
+
"implementation_ref" = EXCLUDED."implementation_ref",
|
|
23
|
+
"spec" = EXCLUDED."spec",
|
|
24
|
+
"updated_at" = now();
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
-- Agent operation leases for fat-folder import/swap serialization.
|
|
2
|
+
-- creates: public.agent_operation_leases
|
|
3
|
+
-- creates: public.idx_agent_operation_leases_agent_expires
|
|
4
|
+
-- creates: public.idx_agent_operation_leases_kind
|
|
5
|
+
-- creates: public.folder_bundle_import_rate_limits
|
|
6
|
+
|
|
7
|
+
CREATE TABLE IF NOT EXISTS "agent_operation_leases" (
|
|
8
|
+
"agent_id" uuid NOT NULL REFERENCES "agents"("id") ON DELETE cascade,
|
|
9
|
+
"lease_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
10
|
+
"lease_kind" text NOT NULL,
|
|
11
|
+
"owner_kind" text NOT NULL,
|
|
12
|
+
"owner_id" text,
|
|
13
|
+
"acquired_at" timestamp with time zone NOT NULL DEFAULT now(),
|
|
14
|
+
"last_heartbeat_at" timestamp with time zone NOT NULL DEFAULT now(),
|
|
15
|
+
"expires_at" timestamp with time zone NOT NULL,
|
|
16
|
+
CONSTRAINT "agent_operation_leases_pkey" PRIMARY KEY ("agent_id", "lease_id"),
|
|
17
|
+
CONSTRAINT "agent_operation_leases_kind_check" CHECK ("lease_kind" IN ('shared', 'exclusive'))
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
CREATE INDEX IF NOT EXISTS "idx_agent_operation_leases_agent_expires"
|
|
21
|
+
ON "agent_operation_leases" ("agent_id", "expires_at");
|
|
22
|
+
|
|
23
|
+
CREATE INDEX IF NOT EXISTS "idx_agent_operation_leases_kind"
|
|
24
|
+
ON "agent_operation_leases" ("agent_id", "lease_kind");
|
|
25
|
+
|
|
26
|
+
CREATE TABLE IF NOT EXISTS "folder_bundle_import_rate_limits" (
|
|
27
|
+
"tenant_id" uuid NOT NULL REFERENCES "tenants"("id") ON DELETE cascade,
|
|
28
|
+
"utc_hour" timestamp with time zone NOT NULL,
|
|
29
|
+
"import_count" integer NOT NULL DEFAULT 0,
|
|
30
|
+
"updated_at" timestamp with time zone NOT NULL DEFAULT now(),
|
|
31
|
+
CONSTRAINT "folder_bundle_import_rate_limits_pkey" PRIMARY KEY ("tenant_id", "utc_hour")
|
|
32
|
+
);
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
-- creates: public.agent_workspace_runs
|
|
2
|
+
-- creates: public.agent_workspace_events
|
|
3
|
+
-- creates: public.agent_workspace_waits
|
|
4
|
+
-- creates-column: public.tenants.workspace_orchestration_enabled
|
|
5
|
+
|
|
6
|
+
ALTER TABLE public.tenants
|
|
7
|
+
ADD COLUMN IF NOT EXISTS workspace_orchestration_enabled boolean NOT NULL DEFAULT false;
|
|
8
|
+
|
|
9
|
+
CREATE TABLE IF NOT EXISTS public.agent_workspace_runs (
|
|
10
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
11
|
+
tenant_id uuid NOT NULL REFERENCES public.tenants(id),
|
|
12
|
+
agent_id uuid NOT NULL REFERENCES public.agents(id),
|
|
13
|
+
target_path text NOT NULL DEFAULT '',
|
|
14
|
+
status text NOT NULL DEFAULT 'pending',
|
|
15
|
+
source_object_key text,
|
|
16
|
+
request_object_key text,
|
|
17
|
+
current_wakeup_request_id uuid REFERENCES public.agent_wakeup_requests(id),
|
|
18
|
+
current_thread_turn_id uuid REFERENCES public.thread_turns(id),
|
|
19
|
+
parent_run_id uuid REFERENCES public.agent_workspace_runs(id),
|
|
20
|
+
depth integer NOT NULL DEFAULT 0,
|
|
21
|
+
inbox_write_count integer NOT NULL DEFAULT 0,
|
|
22
|
+
wakeup_retry_count integer NOT NULL DEFAULT 0,
|
|
23
|
+
last_event_at timestamptz NOT NULL DEFAULT now(),
|
|
24
|
+
completed_at timestamptz,
|
|
25
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
26
|
+
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
27
|
+
CONSTRAINT agent_workspace_runs_status_check CHECK (
|
|
28
|
+
status IN (
|
|
29
|
+
'pending',
|
|
30
|
+
'claimed',
|
|
31
|
+
'processing',
|
|
32
|
+
'completed',
|
|
33
|
+
'failed',
|
|
34
|
+
'awaiting_review',
|
|
35
|
+
'awaiting_subrun',
|
|
36
|
+
'cancelled',
|
|
37
|
+
'expired'
|
|
38
|
+
)
|
|
39
|
+
)
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
CREATE INDEX IF NOT EXISTS idx_agent_workspace_runs_agent_target_status
|
|
43
|
+
ON public.agent_workspace_runs (tenant_id, agent_id, target_path, status);
|
|
44
|
+
CREATE INDEX IF NOT EXISTS idx_agent_workspace_runs_status_last_event
|
|
45
|
+
ON public.agent_workspace_runs (status, last_event_at);
|
|
46
|
+
CREATE INDEX IF NOT EXISTS idx_agent_workspace_runs_parent
|
|
47
|
+
ON public.agent_workspace_runs (parent_run_id);
|
|
48
|
+
|
|
49
|
+
CREATE TABLE IF NOT EXISTS public.agent_workspace_events (
|
|
50
|
+
id bigserial PRIMARY KEY,
|
|
51
|
+
tenant_id uuid NOT NULL REFERENCES public.tenants(id),
|
|
52
|
+
agent_id uuid REFERENCES public.agents(id),
|
|
53
|
+
run_id uuid REFERENCES public.agent_workspace_runs(id),
|
|
54
|
+
event_type text NOT NULL,
|
|
55
|
+
idempotency_key text NOT NULL,
|
|
56
|
+
bucket text NOT NULL,
|
|
57
|
+
source_object_key text NOT NULL,
|
|
58
|
+
audit_object_key text,
|
|
59
|
+
object_etag text,
|
|
60
|
+
object_version_id text,
|
|
61
|
+
sequencer text NOT NULL,
|
|
62
|
+
mirror_status text NOT NULL DEFAULT 'ok',
|
|
63
|
+
reason text,
|
|
64
|
+
payload jsonb,
|
|
65
|
+
actor_type text,
|
|
66
|
+
actor_id text,
|
|
67
|
+
parent_event_id bigint REFERENCES public.agent_workspace_events(id),
|
|
68
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
69
|
+
CONSTRAINT agent_workspace_events_type_check CHECK (
|
|
70
|
+
event_type IN (
|
|
71
|
+
'work.requested',
|
|
72
|
+
'run.started',
|
|
73
|
+
'run.blocked',
|
|
74
|
+
'run.completed',
|
|
75
|
+
'run.failed',
|
|
76
|
+
'review.requested',
|
|
77
|
+
'memory.changed',
|
|
78
|
+
'event.rejected'
|
|
79
|
+
)
|
|
80
|
+
),
|
|
81
|
+
CONSTRAINT agent_workspace_events_mirror_status_check CHECK (
|
|
82
|
+
mirror_status IN ('ok', 'failed')
|
|
83
|
+
)
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_agent_workspace_events_tenant_idempotency
|
|
87
|
+
ON public.agent_workspace_events (tenant_id, idempotency_key);
|
|
88
|
+
CREATE INDEX IF NOT EXISTS idx_agent_workspace_events_run_created
|
|
89
|
+
ON public.agent_workspace_events (run_id, created_at);
|
|
90
|
+
CREATE INDEX IF NOT EXISTS idx_agent_workspace_events_pending
|
|
91
|
+
ON public.agent_workspace_events (tenant_id, event_type, created_at);
|
|
92
|
+
CREATE INDEX IF NOT EXISTS idx_agent_workspace_events_parent
|
|
93
|
+
ON public.agent_workspace_events (parent_event_id);
|
|
94
|
+
|
|
95
|
+
CREATE TABLE IF NOT EXISTS public.agent_workspace_waits (
|
|
96
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
97
|
+
tenant_id uuid NOT NULL REFERENCES public.tenants(id),
|
|
98
|
+
waiting_run_id uuid NOT NULL REFERENCES public.agent_workspace_runs(id),
|
|
99
|
+
wait_for_run_id uuid REFERENCES public.agent_workspace_runs(id),
|
|
100
|
+
wait_for_target_path text,
|
|
101
|
+
status text NOT NULL DEFAULT 'waiting',
|
|
102
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
103
|
+
satisfied_at timestamptz,
|
|
104
|
+
CONSTRAINT agent_workspace_waits_status_check CHECK (
|
|
105
|
+
status IN ('waiting', 'satisfied', 'cancelled', 'expired')
|
|
106
|
+
),
|
|
107
|
+
CONSTRAINT agent_workspace_waits_single_wait_shape CHECK (
|
|
108
|
+
wait_for_run_id IS NOT NULL OR wait_for_target_path IS NOT NULL
|
|
109
|
+
)
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
CREATE INDEX IF NOT EXISTS idx_agent_workspace_waits_waiting
|
|
113
|
+
ON public.agent_workspace_waits (tenant_id, waiting_run_id, status);
|
|
114
|
+
CREATE INDEX IF NOT EXISTS idx_agent_workspace_waits_wait_for
|
|
115
|
+
ON public.agent_workspace_waits (tenant_id, wait_for_run_id, status);
|
|
116
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
-- creates-constraint: public.agent_workspace_events.agent_workspace_events_type_check
|
|
2
|
+
|
|
3
|
+
ALTER TABLE public.agent_workspace_events
|
|
4
|
+
DROP CONSTRAINT IF EXISTS agent_workspace_events_type_check;
|
|
5
|
+
|
|
6
|
+
ALTER TABLE public.agent_workspace_events
|
|
7
|
+
ADD CONSTRAINT agent_workspace_events_type_check CHECK (
|
|
8
|
+
event_type IN (
|
|
9
|
+
'work.requested',
|
|
10
|
+
'run.started',
|
|
11
|
+
'run.blocked',
|
|
12
|
+
'run.completed',
|
|
13
|
+
'run.failed',
|
|
14
|
+
'review.requested',
|
|
15
|
+
'review.responded',
|
|
16
|
+
'memory.changed',
|
|
17
|
+
'event.rejected'
|
|
18
|
+
)
|
|
19
|
+
);
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
-- User-scoped memory/wiki migration.
|
|
2
|
+
--
|
|
3
|
+
-- Plan:
|
|
4
|
+
-- docs/plans/2026-04-24-001-refactor-user-scope-memory-and-hindsight-ingest-plan.md
|
|
5
|
+
--
|
|
6
|
+
-- Apply manually:
|
|
7
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0036_user_scoped_memory_wiki.sql
|
|
8
|
+
--
|
|
9
|
+
-- This is hand-rolled because ordering matters:
|
|
10
|
+
-- - validate user-owned threads can be backfilled from agents.human_pair_id
|
|
11
|
+
-- - add threads.user_id while keeping threads.agent_id
|
|
12
|
+
-- - truncate rebuildable wiki data before switching owner_id FKs
|
|
13
|
+
-- - skip that truncate on re-run once the old agent-owned FKs are gone
|
|
14
|
+
-- - add per-user external compile opt-in
|
|
15
|
+
--
|
|
16
|
+
-- creates-column: public.threads.user_id
|
|
17
|
+
-- creates-column: public.users.wiki_compile_external_enabled
|
|
18
|
+
-- creates: public.idx_threads_tenant_user
|
|
19
|
+
-- creates-constraint: public.threads.threads_user_id_users_id_fk
|
|
20
|
+
-- Wiki FK constraints below: schema/table paths updated post-0089. FK constraint
|
|
21
|
+
-- names retain their original 'wiki_<table>_owner_id_users_id_fk' form (0089 did not
|
|
22
|
+
-- rename FK constraints), but their pg_constraint namespace path moved to wiki.* when
|
|
23
|
+
-- their parent tables moved. Old `public.wiki_*` paths would report MISSING from the
|
|
24
|
+
-- drift reporter after 0089 applies.
|
|
25
|
+
-- creates-constraint: wiki.pages.wiki_pages_owner_id_users_id_fk
|
|
26
|
+
-- creates-constraint: wiki.unresolved_mentions.wiki_unresolved_mentions_owner_id_users_id_fk
|
|
27
|
+
-- creates-constraint: wiki.compile_jobs.wiki_compile_jobs_owner_id_users_id_fk
|
|
28
|
+
-- creates-constraint: wiki.compile_cursors.wiki_compile_cursors_owner_id_users_id_fk
|
|
29
|
+
-- creates-constraint: wiki.places.wiki_places_owner_id_users_id_fk
|
|
30
|
+
|
|
31
|
+
\set ON_ERROR_STOP on
|
|
32
|
+
|
|
33
|
+
BEGIN;
|
|
34
|
+
|
|
35
|
+
SET LOCAL lock_timeout = '5s';
|
|
36
|
+
SET LOCAL statement_timeout = '120s';
|
|
37
|
+
|
|
38
|
+
DO $$
|
|
39
|
+
DECLARE
|
|
40
|
+
orphan_count integer;
|
|
41
|
+
BEGIN
|
|
42
|
+
SELECT COUNT(*)
|
|
43
|
+
INTO orphan_count
|
|
44
|
+
FROM public.threads t
|
|
45
|
+
JOIN public.agents a ON a.id = t.agent_id
|
|
46
|
+
WHERE a.source = 'user'
|
|
47
|
+
AND a.human_pair_id IS NULL;
|
|
48
|
+
|
|
49
|
+
IF orphan_count > 0 THEN
|
|
50
|
+
RAISE EXCEPTION
|
|
51
|
+
'Cannot backfill public.threads.user_id: % user-owned agent thread(s) lack agents.human_pair_id',
|
|
52
|
+
orphan_count;
|
|
53
|
+
END IF;
|
|
54
|
+
END $$;
|
|
55
|
+
|
|
56
|
+
ALTER TABLE public.threads
|
|
57
|
+
ADD COLUMN IF NOT EXISTS user_id uuid;
|
|
58
|
+
|
|
59
|
+
UPDATE public.threads t
|
|
60
|
+
SET user_id = a.human_pair_id
|
|
61
|
+
FROM public.agents a
|
|
62
|
+
WHERE a.id = t.agent_id
|
|
63
|
+
AND a.source = 'user'
|
|
64
|
+
AND t.user_id IS NULL;
|
|
65
|
+
|
|
66
|
+
ALTER TABLE public.threads
|
|
67
|
+
DROP CONSTRAINT IF EXISTS threads_user_id_users_id_fk;
|
|
68
|
+
|
|
69
|
+
ALTER TABLE public.threads
|
|
70
|
+
ADD CONSTRAINT threads_user_id_users_id_fk
|
|
71
|
+
FOREIGN KEY (user_id) REFERENCES public.users(id);
|
|
72
|
+
|
|
73
|
+
CREATE INDEX IF NOT EXISTS idx_threads_tenant_user
|
|
74
|
+
ON public.threads (tenant_id, user_id);
|
|
75
|
+
|
|
76
|
+
ALTER TABLE public.users
|
|
77
|
+
ADD COLUMN IF NOT EXISTS wiki_compile_external_enabled boolean NOT NULL DEFAULT false;
|
|
78
|
+
|
|
79
|
+
DO $$
|
|
80
|
+
DECLARE
|
|
81
|
+
old_wiki_owner_fk_count integer;
|
|
82
|
+
BEGIN
|
|
83
|
+
SELECT COUNT(*)
|
|
84
|
+
INTO old_wiki_owner_fk_count
|
|
85
|
+
FROM pg_catalog.pg_constraint c
|
|
86
|
+
JOIN pg_catalog.pg_class r ON r.oid = c.conrelid
|
|
87
|
+
JOIN pg_catalog.pg_namespace n ON n.oid = r.relnamespace
|
|
88
|
+
WHERE n.nspname = 'public'
|
|
89
|
+
AND c.conname IN (
|
|
90
|
+
'wiki_pages_owner_id_agents_id_fk',
|
|
91
|
+
'wiki_unresolved_mentions_owner_id_agents_id_fk',
|
|
92
|
+
'wiki_compile_jobs_owner_id_agents_id_fk',
|
|
93
|
+
'wiki_compile_cursors_owner_id_agents_id_fk',
|
|
94
|
+
'wiki_places_owner_id_agents_id_fk'
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
IF old_wiki_owner_fk_count > 0 THEN
|
|
98
|
+
TRUNCATE TABLE
|
|
99
|
+
public.wiki_pages,
|
|
100
|
+
public.wiki_unresolved_mentions,
|
|
101
|
+
public.wiki_compile_jobs,
|
|
102
|
+
public.wiki_compile_cursors,
|
|
103
|
+
public.wiki_places
|
|
104
|
+
CASCADE;
|
|
105
|
+
END IF;
|
|
106
|
+
END $$;
|
|
107
|
+
|
|
108
|
+
ALTER TABLE public.wiki_pages
|
|
109
|
+
DROP CONSTRAINT IF EXISTS wiki_pages_owner_id_agents_id_fk;
|
|
110
|
+
ALTER TABLE public.wiki_unresolved_mentions
|
|
111
|
+
DROP CONSTRAINT IF EXISTS wiki_unresolved_mentions_owner_id_agents_id_fk;
|
|
112
|
+
ALTER TABLE public.wiki_compile_jobs
|
|
113
|
+
DROP CONSTRAINT IF EXISTS wiki_compile_jobs_owner_id_agents_id_fk;
|
|
114
|
+
ALTER TABLE public.wiki_compile_cursors
|
|
115
|
+
DROP CONSTRAINT IF EXISTS wiki_compile_cursors_owner_id_agents_id_fk;
|
|
116
|
+
ALTER TABLE public.wiki_places
|
|
117
|
+
DROP CONSTRAINT IF EXISTS wiki_places_owner_id_agents_id_fk;
|
|
118
|
+
|
|
119
|
+
ALTER TABLE public.wiki_pages
|
|
120
|
+
DROP CONSTRAINT IF EXISTS wiki_pages_owner_id_users_id_fk;
|
|
121
|
+
ALTER TABLE public.wiki_unresolved_mentions
|
|
122
|
+
DROP CONSTRAINT IF EXISTS wiki_unresolved_mentions_owner_id_users_id_fk;
|
|
123
|
+
ALTER TABLE public.wiki_compile_jobs
|
|
124
|
+
DROP CONSTRAINT IF EXISTS wiki_compile_jobs_owner_id_users_id_fk;
|
|
125
|
+
ALTER TABLE public.wiki_compile_cursors
|
|
126
|
+
DROP CONSTRAINT IF EXISTS wiki_compile_cursors_owner_id_users_id_fk;
|
|
127
|
+
ALTER TABLE public.wiki_places
|
|
128
|
+
DROP CONSTRAINT IF EXISTS wiki_places_owner_id_users_id_fk;
|
|
129
|
+
|
|
130
|
+
ALTER TABLE public.wiki_pages
|
|
131
|
+
ADD CONSTRAINT wiki_pages_owner_id_users_id_fk
|
|
132
|
+
FOREIGN KEY (owner_id) REFERENCES public.users(id);
|
|
133
|
+
ALTER TABLE public.wiki_unresolved_mentions
|
|
134
|
+
ADD CONSTRAINT wiki_unresolved_mentions_owner_id_users_id_fk
|
|
135
|
+
FOREIGN KEY (owner_id) REFERENCES public.users(id);
|
|
136
|
+
ALTER TABLE public.wiki_compile_jobs
|
|
137
|
+
ADD CONSTRAINT wiki_compile_jobs_owner_id_users_id_fk
|
|
138
|
+
FOREIGN KEY (owner_id) REFERENCES public.users(id);
|
|
139
|
+
ALTER TABLE public.wiki_compile_cursors
|
|
140
|
+
ADD CONSTRAINT wiki_compile_cursors_owner_id_users_id_fk
|
|
141
|
+
FOREIGN KEY (owner_id) REFERENCES public.users(id);
|
|
142
|
+
ALTER TABLE public.wiki_places
|
|
143
|
+
ADD CONSTRAINT wiki_places_owner_id_users_id_fk
|
|
144
|
+
FOREIGN KEY (owner_id) REFERENCES public.users(id);
|
|
145
|
+
|
|
146
|
+
COMMIT;
|
|
147
|
+
|
|
148
|
+
-- Post-apply verification:
|
|
149
|
+
-- SELECT COUNT(*) FROM public.threads t JOIN public.agents a ON a.id = t.agent_id
|
|
150
|
+
-- WHERE a.source = 'user' AND t.user_id IS NULL; -- should be 0
|
|
151
|
+
-- SELECT COUNT(*) FROM public.wiki_pages; -- should be 0 before journal reload
|
|
152
|
+
-- \d public.wiki_pages -- owner_id FK should reference users(id)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
-- Activation Agent operating-model profile columns.
|
|
2
|
+
--
|
|
3
|
+
-- Plan:
|
|
4
|
+
-- docs/plans/2026-04-26-001-feat-agent-activation-operating-model-plan.md
|
|
5
|
+
--
|
|
6
|
+
-- Apply manually:
|
|
7
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0037_user_profile_operating_model.sql
|
|
8
|
+
--
|
|
9
|
+
-- Purely additive nullable/defaulted columns on user_profiles.
|
|
10
|
+
--
|
|
11
|
+
-- creates-column: public.user_profiles.operating_model
|
|
12
|
+
-- creates-column: public.user_profiles.operating_model_history
|
|
13
|
+
|
|
14
|
+
\set ON_ERROR_STOP on
|
|
15
|
+
|
|
16
|
+
BEGIN;
|
|
17
|
+
|
|
18
|
+
SET LOCAL lock_timeout = '5s';
|
|
19
|
+
SET LOCAL statement_timeout = '120s';
|
|
20
|
+
|
|
21
|
+
DO $$
|
|
22
|
+
BEGIN
|
|
23
|
+
IF to_regclass('public.user_profiles') IS NULL THEN
|
|
24
|
+
RAISE EXCEPTION 'public.user_profiles does not exist';
|
|
25
|
+
END IF;
|
|
26
|
+
END $$;
|
|
27
|
+
|
|
28
|
+
ALTER TABLE public.user_profiles
|
|
29
|
+
ADD COLUMN IF NOT EXISTS operating_model jsonb;
|
|
30
|
+
|
|
31
|
+
ALTER TABLE public.user_profiles
|
|
32
|
+
ADD COLUMN IF NOT EXISTS operating_model_history jsonb[] NOT NULL DEFAULT '{}'::jsonb[];
|
|
33
|
+
|
|
34
|
+
COMMIT;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
-- Agent runtime selector for parallel AgentCore runtimes.
|
|
2
|
+
--
|
|
3
|
+
-- Plan:
|
|
4
|
+
-- docs/plans/2026-04-26-009-feat-pi-agent-runtime-parallel-substrate-plan.md
|
|
5
|
+
--
|
|
6
|
+
-- Apply manually:
|
|
7
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0042_agent_runtime_selector.sql
|
|
8
|
+
--
|
|
9
|
+
-- creates-column: public.agents.runtime
|
|
10
|
+
-- creates-column: public.agent_templates.runtime
|
|
11
|
+
-- creates-constraint: public.agents.agents_runtime_check
|
|
12
|
+
-- creates-constraint: public.agent_templates.agent_templates_runtime_check
|
|
13
|
+
|
|
14
|
+
\set ON_ERROR_STOP on
|
|
15
|
+
|
|
16
|
+
BEGIN;
|
|
17
|
+
|
|
18
|
+
SET LOCAL lock_timeout = '5s';
|
|
19
|
+
SET LOCAL statement_timeout = '120s';
|
|
20
|
+
|
|
21
|
+
ALTER TABLE public.agents
|
|
22
|
+
ADD COLUMN IF NOT EXISTS runtime text NOT NULL DEFAULT 'strands';
|
|
23
|
+
|
|
24
|
+
ALTER TABLE public.agent_templates
|
|
25
|
+
ADD COLUMN IF NOT EXISTS runtime text NOT NULL DEFAULT 'strands';
|
|
26
|
+
|
|
27
|
+
ALTER TABLE public.agents
|
|
28
|
+
DROP CONSTRAINT IF EXISTS agents_runtime_check;
|
|
29
|
+
|
|
30
|
+
ALTER TABLE public.agents
|
|
31
|
+
ADD CONSTRAINT agents_runtime_check
|
|
32
|
+
CHECK (runtime IN ('strands', 'pi'));
|
|
33
|
+
|
|
34
|
+
ALTER TABLE public.agent_templates
|
|
35
|
+
DROP CONSTRAINT IF EXISTS agent_templates_runtime_check;
|
|
36
|
+
|
|
37
|
+
ALTER TABLE public.agent_templates
|
|
38
|
+
ADD CONSTRAINT agent_templates_runtime_check
|
|
39
|
+
CHECK (runtime IN ('strands', 'pi'));
|
|
40
|
+
|
|
41
|
+
COMMIT;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
-- Normalize wiki_pages.search_tsv tokenization for punctuation-separated terms.
|
|
2
|
+
--
|
|
3
|
+
-- Plan:
|
|
4
|
+
-- docs/plans/2026-04-27-001-fix-mobile-wiki-search-tsv-plan.md
|
|
5
|
+
--
|
|
6
|
+
-- Apply manually:
|
|
7
|
+
-- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0043_wiki_search_tsv_tokenization.sql
|
|
8
|
+
--
|
|
9
|
+
-- This is hand-rolled because generated column expressions cannot be changed
|
|
10
|
+
-- in place on all supported Postgres/Aurora versions. search_tsv is derived
|
|
11
|
+
-- data, so rebuilding the column and its GIN index is safe.
|
|
12
|
+
--
|
|
13
|
+
-- Schema/index paths updated post-0089 (wiki schema extraction renamed the column's
|
|
14
|
+
-- parent table to wiki.pages and renamed the index to idx_pages_search_tsv).
|
|
15
|
+
-- creates-column: wiki.pages.search_tsv
|
|
16
|
+
-- creates: wiki.idx_pages_search_tsv
|
|
17
|
+
|
|
18
|
+
\set ON_ERROR_STOP on
|
|
19
|
+
|
|
20
|
+
BEGIN;
|
|
21
|
+
|
|
22
|
+
SET LOCAL lock_timeout = '5s';
|
|
23
|
+
SET LOCAL statement_timeout = '120s';
|
|
24
|
+
|
|
25
|
+
DROP INDEX IF EXISTS public.idx_wiki_pages_search_tsv;
|
|
26
|
+
|
|
27
|
+
ALTER TABLE public.wiki_pages
|
|
28
|
+
DROP COLUMN IF EXISTS search_tsv;
|
|
29
|
+
|
|
30
|
+
ALTER TABLE public.wiki_pages
|
|
31
|
+
ADD COLUMN search_tsv tsvector
|
|
32
|
+
GENERATED ALWAYS AS (
|
|
33
|
+
to_tsvector(
|
|
34
|
+
'english'::regconfig,
|
|
35
|
+
regexp_replace(
|
|
36
|
+
coalesce(title, '') || ' ' || coalesce(summary, '') || ' ' || coalesce(body_md, ''),
|
|
37
|
+
'[^[:alnum:]]+',
|
|
38
|
+
' ',
|
|
39
|
+
'g'
|
|
40
|
+
)
|
|
41
|
+
)
|
|
42
|
+
) STORED;
|
|
43
|
+
|
|
44
|
+
CREATE INDEX idx_wiki_pages_search_tsv
|
|
45
|
+
ON public.wiki_pages
|
|
46
|
+
USING gin (search_tsv);
|
|
47
|
+
|
|
48
|
+
COMMIT;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- creates-column: public.agent_templates.web_search
|
|
2
|
+
ALTER TABLE "agent_templates"
|
|
3
|
+
ADD COLUMN IF NOT EXISTS "web_search" jsonb DEFAULT '{"enabled": true}'::jsonb;
|
|
4
|
+
|
|
5
|
+
UPDATE "agent_templates"
|
|
6
|
+
SET "web_search" = '{"enabled": true}'::jsonb
|
|
7
|
+
WHERE "web_search" IS NULL;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- creates-column: public.agent_templates.send_email
|
|
2
|
+
ALTER TABLE "agent_templates"
|
|
3
|
+
ADD COLUMN IF NOT EXISTS "send_email" jsonb DEFAULT '{"enabled": true}'::jsonb;
|
|
4
|
+
|
|
5
|
+
UPDATE "agent_templates"
|
|
6
|
+
SET "send_email" = '{"enabled": true}'::jsonb
|
|
7
|
+
WHERE "send_email" IS NULL;
|