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,145 @@
|
|
|
1
|
+
-- Purpose: add requester idle memory learning orchestration state and run history.
|
|
2
|
+
-- Plan: docs/plans/2026-05-18-001-feat-requester-idle-memory-learning-plan.md (U1)
|
|
3
|
+
-- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0099_thread_idle_learning.sql
|
|
4
|
+
-- creates: public.thread_idle_learning_state
|
|
5
|
+
-- creates: public.uq_thread_idle_learning_state_thread
|
|
6
|
+
-- creates: public.idx_thread_idle_learning_state_tenant_requester
|
|
7
|
+
-- creates: public.idx_thread_idle_learning_state_tenant_status_scheduled
|
|
8
|
+
-- creates: public.idx_thread_idle_learning_state_scheduled_job
|
|
9
|
+
-- creates: public.thread_idle_learning_runs
|
|
10
|
+
-- creates: public.idx_thread_idle_learning_runs_thread_created
|
|
11
|
+
-- creates: public.idx_thread_idle_learning_runs_requester_created
|
|
12
|
+
-- creates: public.idx_thread_idle_learning_runs_status
|
|
13
|
+
-- creates: public.idx_thread_idle_learning_runs_scheduled_job
|
|
14
|
+
-- creates: public.uq_scheduled_jobs_thread_idle_learning_thread
|
|
15
|
+
-- creates-constraint: public.thread_idle_learning_state.thread_idle_learning_state_tenant_id_tenants_id_fk
|
|
16
|
+
-- creates-constraint: public.thread_idle_learning_state.thread_idle_learning_state_thread_id_threads_id_fk
|
|
17
|
+
-- creates-constraint: public.thread_idle_learning_state.thread_idle_learning_state_computer_id_computers_id_fk
|
|
18
|
+
-- creates-constraint: public.thread_idle_learning_state.thread_idle_learning_state_requester_user_id_users_id_fk
|
|
19
|
+
-- creates-constraint: public.thread_idle_learning_state.thread_idle_learning_state_scheduled_job_id_scheduled_jobs_id_fk
|
|
20
|
+
-- creates-constraint: public.thread_idle_learning_state.thread_idle_learning_state_status_allowed
|
|
21
|
+
-- creates-constraint: public.thread_idle_learning_runs.thread_idle_learning_runs_tenant_id_tenants_id_fk
|
|
22
|
+
-- creates-constraint: public.thread_idle_learning_runs.thread_idle_learning_runs_thread_id_threads_id_fk
|
|
23
|
+
-- creates-constraint: public.thread_idle_learning_runs.thread_idle_learning_runs_computer_id_computers_id_fk
|
|
24
|
+
-- creates-constraint: public.thread_idle_learning_runs.thread_idle_learning_runs_requester_user_id_users_id_fk
|
|
25
|
+
-- creates-constraint: public.thread_idle_learning_runs.thread_idle_learning_runs_scheduled_job_id_scheduled_jobs_id_fk
|
|
26
|
+
-- creates-constraint: public.thread_idle_learning_runs.thread_idle_learning_runs_status_allowed
|
|
27
|
+
|
|
28
|
+
\set ON_ERROR_STOP on
|
|
29
|
+
|
|
30
|
+
BEGIN;
|
|
31
|
+
|
|
32
|
+
SET LOCAL lock_timeout = '5s';
|
|
33
|
+
SET LOCAL statement_timeout = '120s';
|
|
34
|
+
|
|
35
|
+
CREATE TABLE IF NOT EXISTS public.thread_idle_learning_state (
|
|
36
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
37
|
+
tenant_id uuid NOT NULL,
|
|
38
|
+
thread_id uuid NOT NULL,
|
|
39
|
+
computer_id uuid,
|
|
40
|
+
requester_user_id uuid,
|
|
41
|
+
activity_sequence integer NOT NULL DEFAULT 0,
|
|
42
|
+
last_activity_at timestamptz NOT NULL,
|
|
43
|
+
scheduled_for timestamptz,
|
|
44
|
+
scheduled_job_id uuid,
|
|
45
|
+
status text NOT NULL DEFAULT 'idle_scheduled',
|
|
46
|
+
last_run_id uuid,
|
|
47
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
48
|
+
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
49
|
+
CONSTRAINT thread_idle_learning_state_tenant_id_tenants_id_fk
|
|
50
|
+
FOREIGN KEY (tenant_id)
|
|
51
|
+
REFERENCES public.tenants(id)
|
|
52
|
+
ON DELETE CASCADE,
|
|
53
|
+
CONSTRAINT thread_idle_learning_state_thread_id_threads_id_fk
|
|
54
|
+
FOREIGN KEY (thread_id)
|
|
55
|
+
REFERENCES public.threads(id)
|
|
56
|
+
ON DELETE CASCADE,
|
|
57
|
+
CONSTRAINT thread_idle_learning_state_computer_id_computers_id_fk
|
|
58
|
+
FOREIGN KEY (computer_id)
|
|
59
|
+
REFERENCES public.computers(id)
|
|
60
|
+
ON DELETE SET NULL,
|
|
61
|
+
CONSTRAINT thread_idle_learning_state_requester_user_id_users_id_fk
|
|
62
|
+
FOREIGN KEY (requester_user_id)
|
|
63
|
+
REFERENCES public.users(id)
|
|
64
|
+
ON DELETE SET NULL,
|
|
65
|
+
CONSTRAINT thread_idle_learning_state_scheduled_job_id_scheduled_jobs_id_fk
|
|
66
|
+
FOREIGN KEY (scheduled_job_id)
|
|
67
|
+
REFERENCES public.scheduled_jobs(id)
|
|
68
|
+
ON DELETE SET NULL,
|
|
69
|
+
CONSTRAINT thread_idle_learning_state_status_allowed
|
|
70
|
+
CHECK (status IN ('idle_scheduled','running','stale','changed','no_change','failed','disabled'))
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_thread_idle_learning_state_thread
|
|
74
|
+
ON public.thread_idle_learning_state (thread_id);
|
|
75
|
+
|
|
76
|
+
CREATE INDEX IF NOT EXISTS idx_thread_idle_learning_state_tenant_requester
|
|
77
|
+
ON public.thread_idle_learning_state (tenant_id, requester_user_id, updated_at);
|
|
78
|
+
|
|
79
|
+
CREATE INDEX IF NOT EXISTS idx_thread_idle_learning_state_tenant_status_scheduled
|
|
80
|
+
ON public.thread_idle_learning_state (tenant_id, status, scheduled_for);
|
|
81
|
+
|
|
82
|
+
CREATE INDEX IF NOT EXISTS idx_thread_idle_learning_state_scheduled_job
|
|
83
|
+
ON public.thread_idle_learning_state (scheduled_job_id);
|
|
84
|
+
|
|
85
|
+
CREATE TABLE IF NOT EXISTS public.thread_idle_learning_runs (
|
|
86
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
87
|
+
tenant_id uuid NOT NULL,
|
|
88
|
+
thread_id uuid NOT NULL,
|
|
89
|
+
computer_id uuid,
|
|
90
|
+
requester_user_id uuid,
|
|
91
|
+
scheduled_job_id uuid,
|
|
92
|
+
activity_sequence integer NOT NULL,
|
|
93
|
+
scheduled_for timestamptz,
|
|
94
|
+
started_at timestamptz NOT NULL DEFAULT now(),
|
|
95
|
+
finished_at timestamptz,
|
|
96
|
+
status text NOT NULL DEFAULT 'running',
|
|
97
|
+
changed_files jsonb,
|
|
98
|
+
candidate_summary jsonb,
|
|
99
|
+
report_s3_key text,
|
|
100
|
+
error text,
|
|
101
|
+
budget jsonb,
|
|
102
|
+
metadata jsonb,
|
|
103
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
104
|
+
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
105
|
+
CONSTRAINT thread_idle_learning_runs_tenant_id_tenants_id_fk
|
|
106
|
+
FOREIGN KEY (tenant_id)
|
|
107
|
+
REFERENCES public.tenants(id)
|
|
108
|
+
ON DELETE CASCADE,
|
|
109
|
+
CONSTRAINT thread_idle_learning_runs_thread_id_threads_id_fk
|
|
110
|
+
FOREIGN KEY (thread_id)
|
|
111
|
+
REFERENCES public.threads(id)
|
|
112
|
+
ON DELETE CASCADE,
|
|
113
|
+
CONSTRAINT thread_idle_learning_runs_computer_id_computers_id_fk
|
|
114
|
+
FOREIGN KEY (computer_id)
|
|
115
|
+
REFERENCES public.computers(id)
|
|
116
|
+
ON DELETE SET NULL,
|
|
117
|
+
CONSTRAINT thread_idle_learning_runs_requester_user_id_users_id_fk
|
|
118
|
+
FOREIGN KEY (requester_user_id)
|
|
119
|
+
REFERENCES public.users(id)
|
|
120
|
+
ON DELETE SET NULL,
|
|
121
|
+
CONSTRAINT thread_idle_learning_runs_scheduled_job_id_scheduled_jobs_id_fk
|
|
122
|
+
FOREIGN KEY (scheduled_job_id)
|
|
123
|
+
REFERENCES public.scheduled_jobs(id)
|
|
124
|
+
ON DELETE SET NULL,
|
|
125
|
+
CONSTRAINT thread_idle_learning_runs_status_allowed
|
|
126
|
+
CHECK (status IN ('running','stale_noop','changed','no_change','failed','rolled_back'))
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
CREATE INDEX IF NOT EXISTS idx_thread_idle_learning_runs_thread_created
|
|
130
|
+
ON public.thread_idle_learning_runs (tenant_id, thread_id, created_at);
|
|
131
|
+
|
|
132
|
+
CREATE INDEX IF NOT EXISTS idx_thread_idle_learning_runs_requester_created
|
|
133
|
+
ON public.thread_idle_learning_runs (tenant_id, requester_user_id, created_at);
|
|
134
|
+
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_thread_idle_learning_runs_status
|
|
136
|
+
ON public.thread_idle_learning_runs (tenant_id, status);
|
|
137
|
+
|
|
138
|
+
CREATE INDEX IF NOT EXISTS idx_thread_idle_learning_runs_scheduled_job
|
|
139
|
+
ON public.thread_idle_learning_runs (scheduled_job_id);
|
|
140
|
+
|
|
141
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_scheduled_jobs_thread_idle_learning_thread
|
|
142
|
+
ON public.scheduled_jobs (tenant_id, (config->>'threadId'))
|
|
143
|
+
WHERE trigger_type = 'thread_idle_memory_learning';
|
|
144
|
+
|
|
145
|
+
COMMIT;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- Ontology-gated Brain materialization needs tenant-approved entity type slugs,
|
|
2
|
+
-- not a fixed seed-only subtype CHECK.
|
|
3
|
+
--
|
|
4
|
+
-- drops-constraint: brain.pages.pages_entity_subtype_allowed
|
|
5
|
+
|
|
6
|
+
ALTER TABLE brain.pages
|
|
7
|
+
DROP CONSTRAINT IF EXISTS pages_entity_subtype_allowed;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- Ontology-gate rejections must preserve tenant-approved or proposed entity
|
|
2
|
+
-- slugs as suggestion evidence, not only the legacy seed subtype list.
|
|
3
|
+
--
|
|
4
|
+
-- drops-constraint: wiki.unresolved_mentions.unresolved_mentions_entity_subtype_allowed
|
|
5
|
+
|
|
6
|
+
ALTER TABLE wiki.unresolved_mentions
|
|
7
|
+
DROP CONSTRAINT IF EXISTS unresolved_mentions_entity_subtype_allowed;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
-- Wiki/Brain owner repair after schema extraction.
|
|
2
|
+
--
|
|
3
|
+
-- The 0089/0090 schema-extraction migrations moved already-populated tables
|
|
4
|
+
-- from public.* into wiki.* and brain.*. In long-lived dev/prod databases,
|
|
5
|
+
-- those tables can retain an older table owner even when the deployed
|
|
6
|
+
-- GraphQL/wiki Lambdas connect as the current migration role. Direct writes
|
|
7
|
+
-- to wiki.* then fail at compile time with permission errors.
|
|
8
|
+
--
|
|
9
|
+
-- Apply manually:
|
|
10
|
+
-- psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0102_wiki_brain_owner_repair.sql
|
|
11
|
+
--
|
|
12
|
+
-- creates: public.view_wiki_brain_owner_repaired
|
|
13
|
+
|
|
14
|
+
\set ON_ERROR_STOP on
|
|
15
|
+
|
|
16
|
+
BEGIN;
|
|
17
|
+
|
|
18
|
+
SELECT pg_advisory_xact_lock(hashtext('wiki_brain_owner_repair'));
|
|
19
|
+
|
|
20
|
+
SET LOCAL lock_timeout = '5s';
|
|
21
|
+
SET LOCAL statement_timeout = '60s';
|
|
22
|
+
|
|
23
|
+
DO $$
|
|
24
|
+
BEGIN
|
|
25
|
+
IF current_database() != 'thinkwork' THEN
|
|
26
|
+
RAISE EXCEPTION 'wrong database: %, expected thinkwork', current_database();
|
|
27
|
+
END IF;
|
|
28
|
+
END $$;
|
|
29
|
+
|
|
30
|
+
DO $$
|
|
31
|
+
DECLARE
|
|
32
|
+
required_table text;
|
|
33
|
+
BEGIN
|
|
34
|
+
FOREACH required_table IN ARRAY ARRAY[
|
|
35
|
+
'wiki.pages',
|
|
36
|
+
'wiki.page_sections',
|
|
37
|
+
'wiki.page_links',
|
|
38
|
+
'wiki.page_aliases',
|
|
39
|
+
'wiki.unresolved_mentions',
|
|
40
|
+
'wiki.section_sources',
|
|
41
|
+
'wiki.compile_jobs',
|
|
42
|
+
'wiki.compile_cursors',
|
|
43
|
+
'wiki.places',
|
|
44
|
+
'brain.pages',
|
|
45
|
+
'brain.page_sections',
|
|
46
|
+
'brain.page_links',
|
|
47
|
+
'brain.page_aliases',
|
|
48
|
+
'brain.section_sources',
|
|
49
|
+
'brain.external_refs'
|
|
50
|
+
]
|
|
51
|
+
LOOP
|
|
52
|
+
IF to_regclass(required_table) IS NULL THEN
|
|
53
|
+
RAISE EXCEPTION 'pre-flight: % does not exist', required_table;
|
|
54
|
+
END IF;
|
|
55
|
+
END LOOP;
|
|
56
|
+
END $$;
|
|
57
|
+
|
|
58
|
+
ALTER SCHEMA wiki OWNER TO CURRENT_USER;
|
|
59
|
+
ALTER SCHEMA brain OWNER TO CURRENT_USER;
|
|
60
|
+
|
|
61
|
+
ALTER TABLE wiki.pages OWNER TO CURRENT_USER;
|
|
62
|
+
ALTER TABLE wiki.page_sections OWNER TO CURRENT_USER;
|
|
63
|
+
ALTER TABLE wiki.page_links OWNER TO CURRENT_USER;
|
|
64
|
+
ALTER TABLE wiki.page_aliases OWNER TO CURRENT_USER;
|
|
65
|
+
ALTER TABLE wiki.unresolved_mentions OWNER TO CURRENT_USER;
|
|
66
|
+
ALTER TABLE wiki.section_sources OWNER TO CURRENT_USER;
|
|
67
|
+
ALTER TABLE wiki.compile_jobs OWNER TO CURRENT_USER;
|
|
68
|
+
ALTER TABLE wiki.compile_cursors OWNER TO CURRENT_USER;
|
|
69
|
+
ALTER TABLE wiki.places OWNER TO CURRENT_USER;
|
|
70
|
+
|
|
71
|
+
ALTER TABLE brain.pages OWNER TO CURRENT_USER;
|
|
72
|
+
ALTER TABLE brain.page_sections OWNER TO CURRENT_USER;
|
|
73
|
+
ALTER TABLE brain.page_links OWNER TO CURRENT_USER;
|
|
74
|
+
ALTER TABLE brain.page_aliases OWNER TO CURRENT_USER;
|
|
75
|
+
ALTER TABLE brain.section_sources OWNER TO CURRENT_USER;
|
|
76
|
+
ALTER TABLE brain.external_refs OWNER TO CURRENT_USER;
|
|
77
|
+
|
|
78
|
+
CREATE OR REPLACE VIEW public.view_wiki_brain_owner_repaired AS
|
|
79
|
+
SELECT
|
|
80
|
+
current_database() AS database_name,
|
|
81
|
+
'wiki_brain_owner_repair'::text AS repair,
|
|
82
|
+
true AS applied;
|
|
83
|
+
|
|
84
|
+
COMMENT ON VIEW public.view_wiki_brain_owner_repaired IS
|
|
85
|
+
'Drift marker for 0102_wiki_brain_owner_repair.sql.';
|
|
86
|
+
|
|
87
|
+
COMMIT;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
-- 0103_brain_section_source_trigger_repair.sql
|
|
2
|
+
--
|
|
3
|
+
-- Repair the Brain section-source tenant guard after the wiki/brain schema
|
|
4
|
+
-- extraction compat views were dropped in 0091. The trigger function created
|
|
5
|
+
-- by 0051 still joined public.tenant_entity_page_sections/pages; after 0090
|
|
6
|
+
-- those tables live at brain.page_sections/pages, and 0091 removed the public
|
|
7
|
+
-- bridge views.
|
|
8
|
+
--
|
|
9
|
+
-- creates: public.view_brain_section_source_trigger_repaired
|
|
10
|
+
|
|
11
|
+
\set ON_ERROR_STOP on
|
|
12
|
+
|
|
13
|
+
BEGIN;
|
|
14
|
+
|
|
15
|
+
SET LOCAL lock_timeout = '5s';
|
|
16
|
+
SET LOCAL statement_timeout = '60s';
|
|
17
|
+
|
|
18
|
+
SELECT pg_advisory_xact_lock(hashtext('repair_brain_section_source_trigger'));
|
|
19
|
+
|
|
20
|
+
DO $$
|
|
21
|
+
BEGIN
|
|
22
|
+
IF current_database() != 'thinkwork' THEN
|
|
23
|
+
RAISE EXCEPTION 'wrong database: %, expected thinkwork', current_database();
|
|
24
|
+
END IF;
|
|
25
|
+
END $$;
|
|
26
|
+
|
|
27
|
+
DO $$
|
|
28
|
+
BEGIN
|
|
29
|
+
IF to_regclass('brain.pages') IS NULL THEN
|
|
30
|
+
RAISE EXCEPTION 'pre-flight: brain.pages does not exist';
|
|
31
|
+
END IF;
|
|
32
|
+
IF to_regclass('brain.page_sections') IS NULL THEN
|
|
33
|
+
RAISE EXCEPTION 'pre-flight: brain.page_sections does not exist';
|
|
34
|
+
END IF;
|
|
35
|
+
IF to_regclass('brain.section_sources') IS NULL THEN
|
|
36
|
+
RAISE EXCEPTION 'pre-flight: brain.section_sources does not exist';
|
|
37
|
+
END IF;
|
|
38
|
+
END $$;
|
|
39
|
+
|
|
40
|
+
CREATE OR REPLACE FUNCTION public.enforce_tenant_entity_section_source_tenant()
|
|
41
|
+
RETURNS trigger
|
|
42
|
+
LANGUAGE plpgsql
|
|
43
|
+
AS $$
|
|
44
|
+
DECLARE
|
|
45
|
+
parent_tenant_id uuid;
|
|
46
|
+
BEGIN
|
|
47
|
+
SELECT p.tenant_id
|
|
48
|
+
INTO parent_tenant_id
|
|
49
|
+
FROM brain.page_sections s
|
|
50
|
+
INNER JOIN brain.pages p ON p.id = s.page_id
|
|
51
|
+
WHERE s.id = NEW.section_id;
|
|
52
|
+
|
|
53
|
+
IF parent_tenant_id IS NULL OR parent_tenant_id <> NEW.tenant_id THEN
|
|
54
|
+
RAISE EXCEPTION 'tenant_entity_section_sources tenant_id must match parent page tenant_id';
|
|
55
|
+
END IF;
|
|
56
|
+
|
|
57
|
+
RETURN NEW;
|
|
58
|
+
END;
|
|
59
|
+
$$;
|
|
60
|
+
|
|
61
|
+
DROP TRIGGER IF EXISTS trg_tenant_entity_section_sources_tenant
|
|
62
|
+
ON brain.section_sources;
|
|
63
|
+
|
|
64
|
+
CREATE TRIGGER trg_tenant_entity_section_sources_tenant
|
|
65
|
+
BEFORE INSERT OR UPDATE ON brain.section_sources
|
|
66
|
+
FOR EACH ROW
|
|
67
|
+
EXECUTE FUNCTION public.enforce_tenant_entity_section_source_tenant();
|
|
68
|
+
|
|
69
|
+
CREATE OR REPLACE VIEW public.view_brain_section_source_trigger_repaired AS
|
|
70
|
+
SELECT
|
|
71
|
+
'public.enforce_tenant_entity_section_source_tenant'::text AS function_name,
|
|
72
|
+
'brain.section_sources'::text AS trigger_table,
|
|
73
|
+
true AS repaired;
|
|
74
|
+
|
|
75
|
+
COMMIT;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
-- Expand the approved seed ontology so Hindsight-to-Wiki compiles have
|
|
2
|
+
-- ontology-native types for user memory, travel, place, preference, and work
|
|
3
|
+
-- observations instead of falling back to generic Topic/Entity pages.
|
|
4
|
+
--
|
|
5
|
+
-- creates: public.view_seed_ontology_user_memory_expanded
|
|
6
|
+
|
|
7
|
+
WITH seed(slug, name, broad_type, description, guidance_notes, aliases) AS (
|
|
8
|
+
VALUES
|
|
9
|
+
('place', 'Place', 'place', 'A city, country, neighborhood, landmark, or geographic area.', 'Capture why the place matters, parent geography, trips, visits, and user-specific context.', ARRAY['city', 'country', 'neighborhood', 'landmark']::text[]),
|
|
10
|
+
('venue', 'Venue', 'place', 'A restaurant, hotel, attraction, office, store, or other named location.', 'Compile concrete visit, preference, address, and parent-place evidence without inventing ratings.', ARRAY['restaurant', 'hotel', 'attraction', 'location']::text[]),
|
|
11
|
+
('trip', 'Trip', 'event', 'A travel plan, itinerary, or remembered travel episode.', 'Group places, venues, dates, companions, and open planning context from cited evidence.', ARRAY['travel', 'itinerary', 'journey']::text[]),
|
|
12
|
+
('preference', 'Preference', 'preference', 'A durable user preference, taste, constraint, or priority.', 'Keep preferences compact, sourced, and scoped to what the evidence actually says.', ARRAY['taste', 'constraint', 'priority']::text[]),
|
|
13
|
+
('project', 'Project', 'work', 'A sustained workstream, initiative, or build effort.', 'Track objective, current state, decisions, commitments, risks, and next work.', ARRAY['initiative', 'workstream']::text[]),
|
|
14
|
+
('task', 'Task', 'work', 'A discrete task, to-do, or follow-up item.', 'Capture owner, status, due date, dependency, and source evidence when available.', ARRAY['todo', 'follow up', 'next step']::text[])
|
|
15
|
+
),
|
|
16
|
+
active_versions AS (
|
|
17
|
+
SELECT DISTINCT ON (tenant_id) id, tenant_id
|
|
18
|
+
FROM ontology.versions
|
|
19
|
+
WHERE status = 'active'
|
|
20
|
+
ORDER BY tenant_id, version_number DESC
|
|
21
|
+
)
|
|
22
|
+
INSERT INTO ontology.entity_types (
|
|
23
|
+
tenant_id,
|
|
24
|
+
version_id,
|
|
25
|
+
slug,
|
|
26
|
+
name,
|
|
27
|
+
broad_type,
|
|
28
|
+
description,
|
|
29
|
+
guidance_notes,
|
|
30
|
+
aliases,
|
|
31
|
+
lifecycle_status,
|
|
32
|
+
approved_at
|
|
33
|
+
)
|
|
34
|
+
SELECT
|
|
35
|
+
v.tenant_id,
|
|
36
|
+
v.id,
|
|
37
|
+
seed.slug,
|
|
38
|
+
seed.name,
|
|
39
|
+
seed.broad_type,
|
|
40
|
+
seed.description,
|
|
41
|
+
seed.guidance_notes,
|
|
42
|
+
seed.aliases,
|
|
43
|
+
'approved',
|
|
44
|
+
now()
|
|
45
|
+
FROM active_versions v
|
|
46
|
+
CROSS JOIN seed
|
|
47
|
+
ON CONFLICT (tenant_id, slug) DO UPDATE
|
|
48
|
+
SET
|
|
49
|
+
name = EXCLUDED.name,
|
|
50
|
+
broad_type = EXCLUDED.broad_type,
|
|
51
|
+
description = EXCLUDED.description,
|
|
52
|
+
guidance_notes = EXCLUDED.guidance_notes,
|
|
53
|
+
aliases = EXCLUDED.aliases,
|
|
54
|
+
lifecycle_status = 'approved',
|
|
55
|
+
approved_at = COALESCE(ontology.entity_types.approved_at, now()),
|
|
56
|
+
updated_at = now();
|
|
57
|
+
|
|
58
|
+
WITH seed(slug, name, inverse_name, source_slug, target_slug, description, source_type_slugs, target_type_slugs) AS (
|
|
59
|
+
VALUES
|
|
60
|
+
('located_in', 'Located in', 'Contains', 'venue', 'place', 'Connects a venue or smaller place to its parent geography.', ARRAY['venue', 'place']::text[], ARRAY['place']::text[]),
|
|
61
|
+
('visited_during', 'Visited during', 'Included visit to', 'venue', 'trip', 'Connects a visited place or venue to the trip where it appeared.', ARRAY['venue', 'place']::text[], ARRAY['trip']::text[]),
|
|
62
|
+
('about_place', 'About place', 'Place for', 'trip', 'place', 'Connects a trip or preference to a relevant place.', ARRAY['trip', 'preference']::text[], ARRAY['place']::text[]),
|
|
63
|
+
('has_preference', 'Has preference', 'Preference of', 'person', 'preference', 'Connects a person to a durable preference or constraint.', ARRAY['person']::text[], ARRAY['preference']::text[]),
|
|
64
|
+
('involves_person', 'Involves person', 'Involved in', 'project', 'person', 'Connects work, travel, or decision context to a person involved in it.', ARRAY['project', 'task', 'trip', 'decision']::text[], ARRAY['person']::text[]),
|
|
65
|
+
('has_task', 'Has task', 'Task for', 'project', 'task', 'Connects a project or commitment to a concrete task.', ARRAY['project', 'commitment']::text[], ARRAY['task']::text[]),
|
|
66
|
+
('has_decision', 'Has decision', 'Decision for', 'project', 'decision', 'Connects a project or opportunity to a durable decision.', ARRAY['project', 'opportunity', 'customer']::text[], ARRAY['decision']::text[])
|
|
67
|
+
)
|
|
68
|
+
INSERT INTO ontology.relationship_types (
|
|
69
|
+
tenant_id,
|
|
70
|
+
version_id,
|
|
71
|
+
slug,
|
|
72
|
+
name,
|
|
73
|
+
inverse_name,
|
|
74
|
+
source_entity_type_id,
|
|
75
|
+
target_entity_type_id,
|
|
76
|
+
source_type_slugs,
|
|
77
|
+
target_type_slugs,
|
|
78
|
+
description,
|
|
79
|
+
lifecycle_status,
|
|
80
|
+
approved_at
|
|
81
|
+
)
|
|
82
|
+
SELECT
|
|
83
|
+
source_type.tenant_id,
|
|
84
|
+
source_type.version_id,
|
|
85
|
+
seed.slug,
|
|
86
|
+
seed.name,
|
|
87
|
+
seed.inverse_name,
|
|
88
|
+
source_type.id,
|
|
89
|
+
target_type.id,
|
|
90
|
+
seed.source_type_slugs,
|
|
91
|
+
seed.target_type_slugs,
|
|
92
|
+
seed.description,
|
|
93
|
+
'approved',
|
|
94
|
+
now()
|
|
95
|
+
FROM seed
|
|
96
|
+
JOIN ontology.entity_types source_type
|
|
97
|
+
ON source_type.slug = seed.source_slug
|
|
98
|
+
JOIN ontology.entity_types target_type
|
|
99
|
+
ON target_type.tenant_id = source_type.tenant_id
|
|
100
|
+
AND target_type.slug = seed.target_slug
|
|
101
|
+
ON CONFLICT (tenant_id, slug) DO UPDATE
|
|
102
|
+
SET
|
|
103
|
+
name = EXCLUDED.name,
|
|
104
|
+
inverse_name = EXCLUDED.inverse_name,
|
|
105
|
+
source_entity_type_id = EXCLUDED.source_entity_type_id,
|
|
106
|
+
target_entity_type_id = EXCLUDED.target_entity_type_id,
|
|
107
|
+
source_type_slugs = EXCLUDED.source_type_slugs,
|
|
108
|
+
target_type_slugs = EXCLUDED.target_type_slugs,
|
|
109
|
+
description = EXCLUDED.description,
|
|
110
|
+
lifecycle_status = 'approved',
|
|
111
|
+
approved_at = COALESCE(ontology.relationship_types.approved_at, now()),
|
|
112
|
+
updated_at = now();
|
|
113
|
+
|
|
114
|
+
WITH seed(entity_slug, slug, heading, facet_type, position, prompt) AS (
|
|
115
|
+
VALUES
|
|
116
|
+
('place', 'overview', 'Overview', 'compiled', 10, 'Summarize why this place matters in the memory evidence.'),
|
|
117
|
+
('place', 'location_context', 'Location Context', 'relationship', 20, 'Capture parent geography and nearby or contained places.'),
|
|
118
|
+
('place', 'related_activity', 'Related Activity', 'activity', 30, 'Capture trips, visits, and remembered events connected to this place.'),
|
|
119
|
+
('venue', 'overview', 'Overview', 'compiled', 10, 'Summarize what the venue is and why it matters.'),
|
|
120
|
+
('venue', 'visits', 'Visits', 'activity', 20, 'Capture sourced visits, plans, and context.'),
|
|
121
|
+
('venue', 'preferences', 'Preferences', 'compiled', 30, 'Capture sourced likes, dislikes, and constraints involving this venue.'),
|
|
122
|
+
('trip', 'overview', 'Overview', 'compiled', 10, 'Summarize the trip or travel episode.'),
|
|
123
|
+
('trip', 'itinerary', 'Itinerary', 'activity', 20, 'Capture dates, stops, venues, and open plans.'),
|
|
124
|
+
('trip', 'places', 'Places', 'relationship', 30, 'List important places and venues connected to the trip.'),
|
|
125
|
+
('preference', 'summary', 'Summary', 'compiled', 10, 'Summarize the durable preference or constraint.'),
|
|
126
|
+
('preference', 'evidence', 'Evidence', 'activity', 20, 'Capture the cited observations that support the preference.'),
|
|
127
|
+
('project', 'overview', 'Overview', 'compiled', 10, 'Summarize the project objective and context.'),
|
|
128
|
+
('project', 'current_state', 'Current State', 'operational', 20, 'Capture current progress, blockers, and status.'),
|
|
129
|
+
('project', 'decisions', 'Decisions', 'compiled', 30, 'Capture durable decisions affecting the project.'),
|
|
130
|
+
('project', 'next_steps', 'Next Steps', 'activity', 40, 'Capture concrete next work.'),
|
|
131
|
+
('task', 'status', 'Status', 'operational', 10, 'Capture owner, status, due date, and dependency.'),
|
|
132
|
+
('task', 'evidence', 'Evidence', 'activity', 20, 'Capture source evidence for the task.')
|
|
133
|
+
)
|
|
134
|
+
INSERT INTO ontology.facet_templates (
|
|
135
|
+
tenant_id,
|
|
136
|
+
entity_type_id,
|
|
137
|
+
slug,
|
|
138
|
+
heading,
|
|
139
|
+
facet_type,
|
|
140
|
+
position,
|
|
141
|
+
prompt,
|
|
142
|
+
lifecycle_status
|
|
143
|
+
)
|
|
144
|
+
SELECT
|
|
145
|
+
entity_types.tenant_id,
|
|
146
|
+
entity_types.id,
|
|
147
|
+
seed.slug,
|
|
148
|
+
seed.heading,
|
|
149
|
+
seed.facet_type,
|
|
150
|
+
seed.position,
|
|
151
|
+
seed.prompt,
|
|
152
|
+
'approved'
|
|
153
|
+
FROM seed
|
|
154
|
+
JOIN ontology.entity_types
|
|
155
|
+
ON entity_types.slug = seed.entity_slug
|
|
156
|
+
ON CONFLICT (entity_type_id, slug) DO UPDATE
|
|
157
|
+
SET
|
|
158
|
+
heading = EXCLUDED.heading,
|
|
159
|
+
facet_type = EXCLUDED.facet_type,
|
|
160
|
+
position = EXCLUDED.position,
|
|
161
|
+
prompt = EXCLUDED.prompt,
|
|
162
|
+
lifecycle_status = 'approved',
|
|
163
|
+
updated_at = now();
|
|
164
|
+
|
|
165
|
+
CREATE OR REPLACE VIEW public.view_seed_ontology_user_memory_expanded AS
|
|
166
|
+
SELECT true AS expanded;
|