thinkwork-cli 0.12.11 → 0.12.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (474) hide show
  1. package/README.md +42 -38
  2. package/dist/{api-client-ASJWIG3Z.js → api-client-4VT3FWOH.js} +1 -1
  3. package/dist/{chunk-JEHV35EU.js → chunk-H7AB42ES.js} +340 -30
  4. package/dist/cli.js +22157 -9229
  5. package/dist/commands/enterprise/templates/deploy-repo/.github/workflows/deploy.yml +17 -6
  6. package/dist/commands/enterprise/templates/deploy-repo/docs/runbook.md +81 -9
  7. package/dist/commands/enterprise/templates/deploy-repo/scripts/apply-release.mjs +183 -21
  8. package/dist/commands/enterprise/templates/deploy-repo/scripts/smoke.mjs +1 -2
  9. package/dist/commands/enterprise/templates/deploy-repo/terraform/main.tf +286 -0
  10. package/dist/drizzle/0000_petite_marvel_apes.sql +1188 -0
  11. package/dist/drizzle/0001_milky_surge.sql +103 -0
  12. package/dist/drizzle/0002_aberrant_mattie_franklin.sql +41 -0
  13. package/dist/drizzle/0003_exotic_ogun.sql +3 -0
  14. package/dist/drizzle/0004_glamorous_magneto.sql +2 -0
  15. package/dist/drizzle/0005_ancient_nocturne.sql +2 -0
  16. package/dist/drizzle/0006_new_colonel_america.sql +2 -0
  17. package/dist/drizzle/0007_unique_external_task_id.sql +31 -0
  18. package/dist/drizzle/0008_external_task_id_column.sql +43 -0
  19. package/dist/drizzle/0009_evaluations.sql +64 -0
  20. package/dist/drizzle/0010_eval_agent_template.sql +2 -0
  21. package/dist/drizzle/0011_eval_run_template.sql +2 -0
  22. package/dist/drizzle/0012_eval_seed_unique.sql +16 -0
  23. package/dist/drizzle/0013_motionless_white_queen.sql +140 -0
  24. package/dist/drizzle/0014_wiki_aggregation.sql +11 -0
  25. package/dist/drizzle/0015_pg_trgm_alias_title_indexes.sql +9 -0
  26. package/dist/drizzle/0016_wiki_schema_drops.sql +24 -0
  27. package/dist/drizzle/0017_wiki_places.sql +46 -0
  28. package/dist/drizzle/0018_agent_workspace_overlay.sql +26 -0
  29. package/dist/drizzle/0018_cool_firebird.sql +24 -0
  30. package/dist/drizzle/0018_skill_runs.sql +84 -0
  31. package/dist/drizzle/0019_condemned_dragon_man.sql +95 -0
  32. package/dist/drizzle/0019_webhook_skill_runs.sql +58 -0
  33. package/dist/drizzle/0020_crazy_the_anarchist.sql +9 -0
  34. package/dist/drizzle/0020_mutation_idempotency.sql +64 -0
  35. package/dist/drizzle/0021_crm_work_links.sql +76 -0
  36. package/dist/drizzle/0021_skill_runs_completion_hmac.sql +33 -0
  37. package/dist/drizzle/0022_add_billing_tables.sql +70 -0
  38. package/dist/drizzle/0022_seed_thinkwork_admin_permissions.sql +160 -0
  39. package/dist/drizzle/0022_stripe_billing_indexes.sql +48 -0
  40. package/dist/drizzle/0023_tenants_deactivation.sql +27 -0
  41. package/dist/drizzle/0024_tenant_mcp_admin_keys.sql +63 -0
  42. package/dist/drizzle/0025_v1_agent_architecture.sql +182 -0
  43. package/dist/drizzle/0026_thread_turns_add_kind.sql +28 -0
  44. package/dist/drizzle/0027_capability_catalog_and_manifests.sql +219 -0
  45. package/dist/drizzle/0028_aws_s3_extension.sql +26 -0
  46. package/dist/drizzle/0029_collapse_execution_types.sql +42 -0
  47. package/dist/drizzle/0030_retire_composition_primitives.sql +48 -0
  48. package/dist/drizzle/0031_thread_cleanup_drops.sql +131 -0
  49. package/dist/drizzle/0032_add_browser_automation_template_config.sql +24 -0
  50. package/dist/drizzle/0033_agent_operation_leases.sql +32 -0
  51. package/dist/drizzle/0034_agent_workspace_events.sql +116 -0
  52. package/dist/drizzle/0035_workspace_review_decisions.sql +19 -0
  53. package/dist/drizzle/0036_user_scoped_memory_wiki.sql +152 -0
  54. package/dist/drizzle/0037_user_profile_operating_model.sql +34 -0
  55. package/dist/drizzle/0042_agent_runtime_selector.sql +41 -0
  56. package/dist/drizzle/0043_wiki_search_tsv_tokenization.sql +48 -0
  57. package/dist/drizzle/0044_add_web_search_template_config.sql +7 -0
  58. package/dist/drizzle/0045_add_send_email_template_config.sql +7 -0
  59. package/dist/drizzle/0046_tenant_mcp_context_tools.sql +26 -0
  60. package/dist/drizzle/0047_add_context_engine_template_config.sql +7 -0
  61. package/dist/drizzle/0048_tenant_context_provider_settings.sql +22 -0
  62. package/dist/drizzle/0050_brain_v0_entity_subtype.sql +29 -0
  63. package/dist/drizzle/0051_brain_v0_tenant_entity_pages.sql +170 -0
  64. package/dist/drizzle/0052_brain_v0_external_refs.sql +41 -0
  65. package/dist/drizzle/0053_brain_v0_unresolved_mentions_subtype.sql +48 -0
  66. package/dist/drizzle/0054_wiki_compile_jobs_input.sql +28 -0
  67. package/dist/drizzle/0055_routines_stepfunctions_substrate.sql +202 -0
  68. package/dist/drizzle/0056_routine_step_events_dedup_idx.sql +25 -0
  69. package/dist/drizzle/0057_archive_legacy_python_routines.sql +36 -0
  70. package/dist/drizzle/0058_routines_visibility_and_owning_agent.sql +61 -0
  71. package/dist/drizzle/0061_routine_execution_asl_version_id.sql +29 -0
  72. package/dist/drizzle/0062_migrate_pi_to_flue.sql +110 -0
  73. package/dist/drizzle/0063_threads_session_data.sql +23 -0
  74. package/dist/drizzle/0064_tenant_credentials.sql +65 -0
  75. package/dist/drizzle/0067_thinkwork_computers_phase_one.sql +174 -0
  76. package/dist/drizzle/0068_drop_system_workflows_and_activation.sql +115 -0
  77. package/dist/drizzle/0069_compliance_schema.sql +364 -0
  78. package/dist/drizzle/0070_compliance_aurora_roles.sql +171 -0
  79. package/dist/drizzle/0072_threads_computer_ownership.sql +24 -0
  80. package/dist/drizzle/0073_compliance_tenant_anchor_state.sql +105 -0
  81. package/dist/drizzle/0074_compliance_event_hash_index.sql +49 -0
  82. package/dist/drizzle/0075_scheduled_jobs_computer_ownership.sql +27 -0
  83. package/dist/drizzle/0076_scheduled_jobs_marco_backfill.sql +69 -0
  84. package/dist/drizzle/0077_computers_primary_agent_id.sql +38 -0
  85. package/dist/drizzle/0078_tenant_customize_catalog.sql +46 -0
  86. package/dist/drizzle/0079_seed_tenant_customize_catalog.sql +53 -0
  87. package/dist/drizzle/0081_routines_catalog_slug.sql +42 -0
  88. package/dist/drizzle/0082_messages_parts_jsonb.sql +52 -0
  89. package/dist/drizzle/0083_computer_runbooks.sql +103 -0
  90. package/dist/drizzle/0084_artifacts_favorited_at.sql +32 -0
  91. package/dist/drizzle/0085_seed_thinkwork_computer_default_template.sql +46 -0
  92. package/dist/drizzle/0086_update_default_template_models.sql +19 -0
  93. package/dist/drizzle/0087_retire_oss_connectors.sql +77 -0
  94. package/dist/drizzle/0088_compliance_event_types_finance_pilot.sql +37 -0
  95. package/dist/drizzle/0089_remove_maniflow_eval_seeds.sql +81 -0
  96. package/dist/drizzle/0089_wiki_schema_extraction.sql +315 -0
  97. package/dist/drizzle/0090_brain_schema_extraction.sql +274 -0
  98. package/dist/drizzle/0091_drop_wiki_brain_compat_views.sql +118 -0
  99. package/dist/drizzle/0092_finish_oss_connector_retirement.sql +97 -0
  100. package/dist/drizzle/0093_eval_runs_scheduled_job_id.sql +23 -0
  101. package/dist/drizzle/0094_slack_workspace_app.sql +140 -0
  102. package/dist/drizzle/0095_eval_runs_computer_id.sql +22 -0
  103. package/dist/drizzle/0096_true_redteam_eval_seed_cleanup.sql +67 -0
  104. package/dist/drizzle/0097_shared_computers.sql +191 -0
  105. package/dist/drizzle/0098_business_ontology.sql +587 -0
  106. package/dist/drizzle/0099_thread_idle_learning.sql +145 -0
  107. package/dist/drizzle/0100_ontology_gated_brain_dynamic_subtypes.sql +7 -0
  108. package/dist/drizzle/0101_ontology_gated_unresolved_mentions_dynamic_subtypes.sql +7 -0
  109. package/dist/drizzle/0102_wiki_brain_owner_repair.sql +87 -0
  110. package/dist/drizzle/0103_brain_section_source_trigger_repair.sql +75 -0
  111. package/dist/drizzle/0104_expand_seed_ontology_for_user_memory.sql +166 -0
  112. package/dist/drizzle/0105_spaces_domain.sql +349 -0
  113. package/dist/drizzle/0106_expand_seed_ontology_for_triples.sql +173 -0
  114. package/dist/drizzle/0106_space_threads_participants.sql +197 -0
  115. package/dist/drizzle/0107_linked_task_mirror.sql +245 -0
  116. package/dist/drizzle/0108_message_mentions.sql +95 -0
  117. package/dist/drizzle/0109_space_owned_threads.sql +217 -0
  118. package/dist/drizzle/0110_thread_participant_read_state.sql +21 -0
  119. package/dist/drizzle/0111_agents_tenant_name_unique.sql +38 -0
  120. package/dist/drizzle/0112_recast_spaces_as_contextual_workrooms.sql +138 -0
  121. package/dist/drizzle/0113_agents_own_runtime_fields.sql +48 -0
  122. package/dist/drizzle/0114_migrate_templates_to_agents_and_spaces.sql +361 -0
  123. package/dist/drizzle/0115_remove_computer_eval_template_dependencies.sql +69 -0
  124. package/dist/drizzle/0116_backfill_thread_participants_access.sql +126 -0
  125. package/dist/drizzle/0117_space_access_mode.sql +40 -0
  126. package/dist/drizzle/0118_normalize_tenant_member_principal_type.sql +41 -0
  127. package/dist/drizzle/0119_space_knowledge_bases.sql +126 -0
  128. package/dist/drizzle/0120_space_automations.sql +58 -0
  129. package/dist/drizzle/0121_drop_computer_runbooks.sql +26 -0
  130. package/dist/drizzle/0122_space_email_triggers.sql +24 -0
  131. package/dist/drizzle/0123_single_platform_agent_and_overrides.sql +58 -0
  132. package/dist/drizzle/0124_thread_turns_finalized_at.sql +17 -0
  133. package/dist/drizzle/0125_drop_space_agent_assignments.sql +42 -0
  134. package/dist/drizzle/0126_migrate_flue_to_pi.sql +42 -0
  135. package/dist/drizzle/0127_runtime_type_observability.sql +28 -0
  136. package/dist/drizzle/0128_drop_eval_test_cases_agent_id.sql +37 -0
  137. package/dist/drizzle/0129_drop_code_factory_tables.sql +43 -0
  138. package/dist/drizzle/0129_eval_results_system_prompt.sql +30 -0
  139. package/dist/drizzle/0130_drop_teams_and_team_id_columns.sql +54 -0
  140. package/dist/drizzle/0131_drop_skill_catalog_and_tenant_skills.sql +33 -0
  141. package/dist/drizzle/0132_drop_computer_tables.sql +31 -0
  142. package/dist/drizzle/0133_drop_seed_view_tombstones.sql +79 -0
  143. package/dist/drizzle/0133_thread_turns_system_prompt.sql +22 -0
  144. package/dist/drizzle/0134_drop_dead_agent_runtime_tables.sql +53 -0
  145. package/dist/drizzle/0135_native_checklist_linked_tasks.sql +48 -0
  146. package/dist/drizzle/0136_goal_ledger.sql +55 -0
  147. package/dist/drizzle/0136_space_email_trigger_status.sql +66 -0
  148. package/dist/drizzle/0137_thread_participant_pins.sql +25 -0
  149. package/dist/drizzle/0138_users_cognito_sub.sql +30 -0
  150. package/dist/drizzle/0139_mobile_turn_client_id.sql +23 -0
  151. package/dist/drizzle/0140_workspace_folder_names.sql +36 -0
  152. package/dist/drizzle/0141_eval_runs_desktop_pi_provenance.sql +31 -0
  153. package/dist/drizzle/0142_pi_only_agent_runtime.sql +61 -0
  154. package/dist/drizzle/0143_add_web_extract_builtin_config.sql +28 -0
  155. package/dist/drizzle/0144_skill_catalog_index.sql +40 -0
  156. package/dist/drizzle/0145_knowledge_graph_thread_ingest.sql +512 -0
  157. package/dist/drizzle/0146_knowledge_graph_source_scope.sql +413 -0
  158. package/dist/drizzle/0147_knowledge_graph_scope_trigger_qualification.sql +211 -0
  159. package/dist/drizzle/0148_user_cost_attribution.sql +171 -0
  160. package/dist/drizzle/0149_managed_mcp_servers.sql +64 -0
  161. package/dist/drizzle/0149_user_model_approvals.sql +89 -0
  162. package/dist/drizzle/0150_bootstrap_first_admin_claim.sql +11 -0
  163. package/dist/drizzle/0151_managed_deployments.sql +91 -0
  164. package/dist/drizzle/0152_agent_profiles.sql +81 -0
  165. package/dist/drizzle/0153_message_mentions_agent_profile.sql +9 -0
  166. package/dist/drizzle/0154_customer_deployment_sessions.sql +61 -0
  167. package/dist/drizzle/0155_tenant_model_catalog.sql +152 -0
  168. package/dist/drizzle/0156_bootstrap_credential_leases.sql +52 -0
  169. package/dist/drizzle/0157_knowledge_graph_observations_source.sql +79 -0
  170. package/dist/drizzle/0158_pending_user_questions.sql +80 -0
  171. package/dist/drizzle/0158_wiki_tenant_scope.sql +38 -0
  172. package/dist/drizzle/0159_agent_profiles_space_local.sql +49 -0
  173. package/dist/drizzle/0159_application_plugins.sql +193 -0
  174. package/dist/drizzle/0159_eval_scoring_version.sql +46 -0
  175. package/dist/drizzle/0160_compliance_event_types_plugins.sql +37 -0
  176. package/dist/drizzle/0160_eval_datasets.sql +75 -0
  177. package/dist/drizzle/0160_eval_results_thread_turn.sql +35 -0
  178. package/dist/drizzle/0161_eval_run_pinning.sql +54 -0
  179. package/dist/drizzle/0161_tenant_mcp_servers_plugin_source.sql +62 -0
  180. package/dist/drizzle/0162_eval_result_override.sql +49 -0
  181. package/dist/drizzle/0163_eval_replay_tool_allowlist.sql +50 -0
  182. package/dist/drizzle/0164_eval_replay_tool_override_mode.sql +52 -0
  183. package/dist/drizzle/0165_plugin_premium_entitlements.sql +153 -0
  184. package/dist/drizzle/0166_company_brain_substrate_contract.sql +386 -0
  185. package/dist/drizzle/0167_company_brain_artifact_manifest_runtime.sql +85 -0
  186. package/dist/drizzle/0168_eval_skill_gate.sql +44 -0
  187. package/dist/drizzle/0169_release_update_jobs.sql +67 -0
  188. package/dist/drizzle/0170_email_channel_plugin.sql +291 -0
  189. package/dist/drizzle/0171_linked_task_external_providers.sql +30 -0
  190. package/dist/drizzle/0172_email_channel_sendgrid_provider.sql +8 -0
  191. package/dist/drizzle/0173_auth_provider_resources.sql +83 -0
  192. package/dist/drizzle/0174_workos_auth_bridges.sql +37 -0
  193. package/dist/drizzle/0175_workos_auth_sessions.sql +38 -0
  194. package/dist/drizzle/0176_n8n_agent_step_runs.sql +107 -0
  195. package/dist/drizzle/0177_workflow_control_plane.sql +281 -0
  196. package/dist/drizzle/0178_workflow_backfill_existing_routines.sql +525 -0
  197. package/dist/drizzle/0179_tenant_goal_budget_settings.sql +21 -0
  198. package/dist/drizzle/0180_skill_drafts.sql +89 -0
  199. package/dist/drizzle/0181_skill_draft_publish_status.sql +21 -0
  200. package/dist/drizzle/0182_agent_loops.sql +260 -0
  201. package/dist/drizzle/0183_okf_artifact_manifests.sql +52 -0
  202. package/dist/drizzle/0184_skill_catalog_trust_cache.sql +35 -0
  203. package/dist/drizzle/0185_agent_loop_space.sql +16 -0
  204. package/dist/drizzle/0186_tenant_mcp_runtime_metadata.sql +10 -0
  205. package/dist/drizzle/0187_native_work_items.sql +220 -0
  206. package/dist/drizzle/0188_company_etl_plugin_rename.sql +99 -0
  207. package/dist/drizzle/0189_trace_cost_substrate.sql +247 -0
  208. package/dist/drizzle/0190_billing_export_reconciliation.sql +101 -0
  209. package/dist/drizzle/0191_open_engine_work_item_queue.sql +66 -0
  210. package/dist/drizzle/0192_work_item_labels.sql +44 -0
  211. package/dist/drizzle/0193_work_item_documents.sql +31 -0
  212. package/dist/drizzle/0194_memory_retain_attempts.sql +103 -0
  213. package/dist/drizzle/0194_work_item_comments.sql +35 -0
  214. package/dist/drizzle/0195_plugin_app_overlays.sql +45 -0
  215. package/dist/drizzle/0196_pi_extensions.sql +118 -0
  216. package/dist/drizzle/0197_eval_profiles.sql +150 -0
  217. package/dist/drizzle/0198_eval_runs_unstable.sql +27 -0
  218. package/dist/drizzle/0199_eval_runs_cost_partial.sql +27 -0
  219. package/dist/drizzle/meta/_journal.json +160 -0
  220. package/dist/plugins/README.md +162 -0
  221. package/dist/plugins/catalog/package.json +40 -0
  222. package/dist/plugins/catalog/scripts/build-catalog.ts +120 -0
  223. package/dist/plugins/catalog/scripts/generate-plugin-registry.ts +144 -0
  224. package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +86 -0
  225. package/dist/plugins/catalog/src/__tests__/catalog.test.ts +308 -0
  226. package/dist/plugins/catalog/src/__tests__/contracts.test.ts +861 -0
  227. package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +124 -0
  228. package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +120 -0
  229. package/dist/plugins/catalog/src/catalog.ts +434 -0
  230. package/dist/plugins/catalog/src/contracts.ts +1498 -0
  231. package/dist/plugins/catalog/src/index.ts +4 -0
  232. package/dist/plugins/catalog/src/plugin-package.ts +171 -0
  233. package/dist/plugins/catalog/src/registry/generated-first-party.ts +76 -0
  234. package/dist/plugins/catalog/src/registry/index.ts +1 -0
  235. package/dist/plugins/catalog/tsconfig.json +8 -0
  236. package/dist/plugins/company-brain/README.md +37 -0
  237. package/dist/plugins/company-brain/package.json +33 -0
  238. package/dist/plugins/company-brain/runtime/cognee/Dockerfile +11 -0
  239. package/dist/plugins/company-brain/smoke/cognee-managed-app-smoke.mjs +458 -0
  240. package/dist/plugins/company-brain/smoke/cognee-memory-cutover-smoke.mjs +539 -0
  241. package/dist/plugins/company-brain/smoke/company-brain-context-engine-smoke.mjs +312 -0
  242. package/dist/plugins/company-brain/smoke/company-brain-operations-smoke.mjs +449 -0
  243. package/dist/plugins/company-brain/smoke/company-brain-plugin-smoke.mjs +655 -0
  244. package/dist/plugins/company-brain/smoke/hindsight-memory-isolation-smoke.mjs +474 -0
  245. package/dist/plugins/company-brain/src/api/cognee-client.ts +896 -0
  246. package/dist/plugins/company-brain/src/api/cognee-cluster-identity.ts +49 -0
  247. package/dist/plugins/company-brain/src/api/cognee-memory-scope.ts +84 -0
  248. package/dist/plugins/company-brain/src/api/context-engine-provider.ts +888 -0
  249. package/dist/plugins/company-brain/src/api/migration.ts +665 -0
  250. package/dist/plugins/company-brain/src/deployment/cognee-managed-app.ts +396 -0
  251. package/dist/plugins/company-brain/src/index.ts +62 -0
  252. package/dist/plugins/company-brain/src/manifest.ts +112 -0
  253. package/dist/plugins/company-brain/terraform/cognee/README.md +263 -0
  254. package/dist/plugins/company-brain/terraform/cognee/main.tf +766 -0
  255. package/dist/plugins/company-brain/terraform/cognee/outputs.tf +144 -0
  256. package/dist/plugins/company-brain/terraform/cognee/variables.tf +402 -0
  257. package/dist/plugins/company-brain/test/api/cognee-client.test.ts +562 -0
  258. package/dist/plugins/company-brain/test/api/cognee-memory-scope.test.ts +74 -0
  259. package/dist/plugins/company-brain/test/api/context-engine-provider.test.ts +447 -0
  260. package/dist/plugins/company-brain/test/api/migration.test.ts +465 -0
  261. package/dist/plugins/company-brain/test/manifest.test.ts +95 -0
  262. package/dist/plugins/company-brain/tsconfig.json +8 -0
  263. package/dist/plugins/company-data/README.md +49 -0
  264. package/dist/plugins/company-data/package.json +21 -0
  265. package/dist/plugins/company-data/src/index.ts +30 -0
  266. package/dist/plugins/company-data/src/manifest.ts +26 -0
  267. package/dist/plugins/company-data/test/manifest.test.ts +116 -0
  268. package/dist/plugins/company-data/tsconfig.json +8 -0
  269. package/dist/plugins/company-etl/README.md +46 -0
  270. package/dist/plugins/company-etl/package.json +21 -0
  271. package/dist/plugins/company-etl/src/index.ts +29 -0
  272. package/dist/plugins/company-etl/src/manifest.ts +26 -0
  273. package/dist/plugins/company-etl/test/manifest.test.ts +108 -0
  274. package/dist/plugins/company-etl/tsconfig.json +8 -0
  275. package/dist/plugins/email-channel/README.md +41 -0
  276. package/dist/plugins/email-channel/package.json +22 -0
  277. package/dist/plugins/email-channel/src/index.ts +36 -0
  278. package/dist/plugins/email-channel/src/manifest.ts +44 -0
  279. package/dist/plugins/email-channel/src/provider-contract.ts +36 -0
  280. package/dist/plugins/email-channel/test/manifest.test.ts +119 -0
  281. package/dist/plugins/email-channel/tsconfig.json +8 -0
  282. package/dist/plugins/lastmile/README.md +50 -0
  283. package/dist/plugins/lastmile/package.json +23 -0
  284. package/dist/plugins/lastmile/smoke/lastmile-plugin-smoke.mjs +661 -0
  285. package/dist/plugins/lastmile/src/api/tasks-adapter.ts +572 -0
  286. package/dist/plugins/lastmile/src/discovery.fixture.ts +64 -0
  287. package/dist/plugins/lastmile/src/index.ts +46 -0
  288. package/dist/plugins/lastmile/src/manifest.ts +139 -0
  289. package/dist/plugins/lastmile/test/api/tasks-adapter.test.ts +266 -0
  290. package/dist/plugins/lastmile/test/discovery.test.ts +88 -0
  291. package/dist/plugins/lastmile/tsconfig.json +8 -0
  292. package/dist/plugins/n8n/README.md +201 -0
  293. package/dist/plugins/n8n/n8n-app/README.md +33 -0
  294. package/dist/plugins/n8n/n8n-app/package.json +23 -0
  295. package/dist/plugins/n8n/n8n-app/src/application-config.ts +45 -0
  296. package/dist/plugins/n8n/n8n-app/src/front-components/thinkwork-workflows.front-component.tsx +970 -0
  297. package/dist/plugins/n8n/n8n-app/src/lib/n8n-app-data.ts +190 -0
  298. package/dist/plugins/n8n/n8n-app/src/vite-env.d.ts +7 -0
  299. package/dist/plugins/n8n/n8n-app/tsconfig.json +15 -0
  300. package/dist/plugins/n8n/package.json +35 -0
  301. package/dist/plugins/n8n/runtime/Dockerfile +18 -0
  302. package/dist/plugins/n8n/runtime/n8n-task-runners.json +14 -0
  303. package/dist/plugins/n8n/runtime/n8n-task-runners.json.template +14 -0
  304. package/dist/plugins/n8n/runtime/package-lock.json +13 -0
  305. package/dist/plugins/n8n/runtime/package.json +7 -0
  306. package/dist/plugins/n8n/scripts/sync-thinkwork-app.mjs +268 -0
  307. package/dist/plugins/n8n/smoke/README.md +95 -0
  308. package/dist/plugins/n8n/smoke/n8n-agent-step-bridge-smoke.mjs +866 -0
  309. package/dist/plugins/n8n/smoke/n8n-integrated-app-smoke.mjs +262 -0
  310. package/dist/plugins/n8n/smoke/n8n-managed-app-smoke.mjs +409 -0
  311. package/dist/plugins/n8n/smoke/n8n-mcp-smoke.mjs +624 -0
  312. package/dist/plugins/n8n/src/deployment/image-build.ts +172 -0
  313. package/dist/plugins/n8n/src/deployment/managed-app.ts +429 -0
  314. package/dist/plugins/n8n/src/index.ts +79 -0
  315. package/dist/plugins/n8n/src/manifest.ts +403 -0
  316. package/dist/plugins/n8n/src/package-config.ts +186 -0
  317. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/SKILL.md +76 -0
  318. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/mcp-tooling.md +40 -0
  319. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/validation-and-handoff.md +40 -0
  320. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/workflow-authoring.md +45 -0
  321. package/dist/plugins/n8n/terraform/n8n/README.md +113 -0
  322. package/dist/plugins/n8n/terraform/n8n/main.tf +918 -0
  323. package/dist/plugins/n8n/terraform/n8n/outputs.tf +124 -0
  324. package/dist/plugins/n8n/terraform/n8n/scripts/sync-database.py +250 -0
  325. package/dist/plugins/n8n/terraform/n8n/scripts/test_sync_database.py +55 -0
  326. package/dist/plugins/n8n/terraform/n8n/variables.tf +354 -0
  327. package/dist/plugins/n8n/test/image-build.test.ts +118 -0
  328. package/dist/plugins/n8n/test/integrated-app-contract.test.ts +353 -0
  329. package/dist/plugins/n8n/test/manifest.test.ts +278 -0
  330. package/dist/plugins/n8n/test/package-config.test.ts +57 -0
  331. package/dist/plugins/n8n/tsconfig.json +8 -0
  332. package/dist/plugins/sendgrid/README.md +30 -0
  333. package/dist/plugins/sendgrid/package.json +22 -0
  334. package/dist/plugins/sendgrid/src/index.ts +36 -0
  335. package/dist/plugins/sendgrid/src/manifest.ts +37 -0
  336. package/dist/plugins/sendgrid/src/provider-contract.ts +14 -0
  337. package/dist/plugins/sendgrid/test/manifest.test.ts +80 -0
  338. package/dist/plugins/sendgrid/tsconfig.json +8 -0
  339. package/dist/plugins/twenty/README.md +78 -0
  340. package/dist/plugins/twenty/package.json +27 -0
  341. package/dist/plugins/twenty/scripts/__tests__/sync-thinkwork-app.test.mjs +67 -0
  342. package/dist/plugins/twenty/scripts/sync-thinkwork-app.mjs +185 -0
  343. package/dist/plugins/twenty/scripts/wire-thinkwork-workflow.mjs +658 -0
  344. package/dist/plugins/twenty/smoke/twenty-managed-app-smoke.mjs +359 -0
  345. package/dist/plugins/twenty/smoke/twenty-mcp-oauth-smoke.mjs +574 -0
  346. package/dist/plugins/twenty/src/api/cutover.ts +209 -0
  347. package/dist/plugins/twenty/src/deployment/managed-app.ts +253 -0
  348. package/dist/plugins/twenty/src/index.ts +55 -0
  349. package/dist/plugins/twenty/src/manifest.ts +259 -0
  350. package/dist/plugins/twenty/terraform/twenty/README.md +97 -0
  351. package/dist/plugins/twenty/terraform/twenty/main.tf +829 -0
  352. package/dist/plugins/twenty/terraform/twenty/outputs.tf +79 -0
  353. package/dist/plugins/twenty/terraform/twenty/variables.tf +268 -0
  354. package/dist/plugins/twenty/test/api/cutover.test.ts +183 -0
  355. package/dist/plugins/twenty/test/manifest.test.ts +463 -0
  356. package/dist/plugins/twenty/tsconfig.json +9 -0
  357. package/dist/plugins/twenty/twenty-app/.nvmrc +1 -0
  358. package/dist/plugins/twenty/twenty-app/README.md +148 -0
  359. package/dist/plugins/twenty/twenty-app/package.json +30 -0
  360. package/dist/plugins/twenty/twenty-app/src/application-config.ts +44 -0
  361. package/dist/plugins/twenty/twenty-app/src/constants/universal-identifiers.ts +18 -0
  362. package/dist/plugins/twenty/twenty-app/src/default-role.ts +24 -0
  363. package/dist/plugins/twenty/twenty-app/src/front-components/thinkwork-settings.front-component.tsx +299 -0
  364. package/dist/plugins/twenty/twenty-app/src/logic-functions/thinkwork-webhook.logic-function.ts +354 -0
  365. package/dist/plugins/twenty/twenty-app/tsconfig.json +14 -0
  366. package/dist/plugins/twenty/twenty-app/yarn.lock +4144 -0
  367. package/dist/plugins/workos-auth/package.json +22 -0
  368. package/dist/plugins/workos-auth/src/index.ts +30 -0
  369. package/dist/plugins/workos-auth/src/manifest.ts +40 -0
  370. package/dist/plugins/workos-auth/src/provider-contract.ts +39 -0
  371. package/dist/plugins/workos-auth/test/manifest.test.ts +94 -0
  372. package/dist/plugins/workos-auth/tsconfig.json +8 -0
  373. package/dist/scripts/bootstrap-workspace.sh +162 -0
  374. package/dist/scripts/post-deploy.sh +290 -0
  375. package/dist/terraform/examples/greenfield/main.tf +903 -75
  376. package/dist/terraform/examples/greenfield/terraform.tfvars.example +67 -8
  377. package/dist/terraform/modules/app/agentcore-code-interpreter/Dockerfile.sandbox-base +2 -2
  378. package/dist/terraform/modules/app/agentcore-code-interpreter/README.md +8 -9
  379. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/sitecustomize.py +227 -0
  380. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/test_sitecustomize.py +277 -0
  381. package/dist/terraform/modules/app/agentcore-memory/README.md +6 -6
  382. package/dist/terraform/modules/app/agentcore-memory/main.tf +1 -1
  383. package/dist/terraform/modules/app/agentcore-memory/scripts/create_or_find_memory.sh +40 -9
  384. package/dist/terraform/modules/app/agentcore-pi/README.md +61 -0
  385. package/dist/terraform/modules/app/agentcore-pi/main.tf +453 -0
  386. package/dist/terraform/modules/app/agentcore-pi/outputs.tf +38 -0
  387. package/dist/terraform/modules/app/agentcore-pi/variables.tf +145 -0
  388. package/dist/terraform/modules/app/agentcore-platform/main.tf +83 -0
  389. package/dist/terraform/modules/app/agentcore-runtime/main.tf +9 -11
  390. package/dist/terraform/modules/app/appsync-subscriptions/main.tf +5 -1
  391. package/dist/terraform/modules/app/customer-domain/main.tf +483 -0
  392. package/dist/terraform/modules/app/deployment-control-plane/README.md +47 -0
  393. package/dist/terraform/modules/app/deployment-control-plane/buildspec.yml +24 -0
  394. package/dist/terraform/modules/app/deployment-control-plane/main.tf +614 -0
  395. package/dist/terraform/modules/app/deployment-control-plane/outputs.tf +54 -0
  396. package/dist/terraform/modules/app/deployment-control-plane/runner.py +4720 -0
  397. package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +3026 -0
  398. package/dist/terraform/modules/app/deployment-control-plane/variables.tf +96 -0
  399. package/dist/terraform/modules/app/hindsight-memory/README.md +25 -23
  400. package/dist/terraform/modules/app/hindsight-memory/main.tf +26 -2
  401. package/dist/terraform/modules/app/lambda-api/eval-fanout.tf +17 -50
  402. package/dist/terraform/modules/app/lambda-api/handlers.tf +1290 -679
  403. package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +933 -0
  404. package/dist/terraform/modules/app/lambda-api/main.tf +14 -527
  405. package/dist/terraform/modules/app/lambda-api/mcp-oauth.tf +3 -19
  406. package/dist/terraform/modules/app/lambda-api/outputs.tf +50 -6
  407. package/dist/terraform/modules/app/lambda-api/runtime-config.tf +163 -0
  408. package/dist/terraform/modules/app/lambda-api/slack-app-secrets.tf +3 -1
  409. package/dist/terraform/modules/app/lambda-api/stripe-secrets.tf +3 -1
  410. package/dist/terraform/modules/app/lambda-api/variables.tf +240 -53
  411. package/dist/terraform/modules/app/lambda-api/workspace-events.tf +2 -25
  412. package/dist/terraform/modules/app/ses-email/main.tf +143 -30
  413. package/dist/terraform/modules/app/static-site/main.tf +4 -3
  414. package/dist/terraform/modules/app/www-dns/main.tf +45 -5
  415. package/dist/terraform/modules/app/www-dns/outputs.tf +10 -0
  416. package/dist/terraform/modules/app/www-dns/variables.tf +24 -0
  417. package/dist/terraform/modules/data/aurora-postgres/main.tf +15 -1
  418. package/dist/terraform/modules/data/compliance-exports-bucket/main.tf +1 -1
  419. package/dist/terraform/modules/data/compliance-exports-bucket/variables.tf +6 -0
  420. package/dist/terraform/modules/foundation/cognito/main.tf +167 -11
  421. package/dist/terraform/modules/foundation/cognito/outputs.tf +5 -0
  422. package/dist/terraform/modules/foundation/cognito/variables.tf +110 -0
  423. package/dist/terraform/modules/foundation/vpc/main.tf +45 -3
  424. package/dist/terraform/modules/foundation/vpc/outputs.tf +20 -0
  425. package/dist/terraform/modules/foundation/vpc/variables.tf +18 -0
  426. package/dist/terraform/modules/thinkwork/README.md +71 -0
  427. package/dist/terraform/modules/thinkwork/main.tf +1325 -174
  428. package/dist/terraform/modules/thinkwork/outputs.tf +457 -24
  429. package/dist/terraform/modules/thinkwork/variables.tf +1169 -93
  430. package/dist/terraform/schema.graphql +82 -9
  431. package/dist/workspace-defaults/files/AGENTS.md +344 -0
  432. package/dist/workspace-defaults/files/CONTEXT.md +8 -0
  433. package/dist/workspace-defaults/files/GUARDRAILS.md +51 -0
  434. package/dist/workspace-defaults/files/MEMORY_GUIDE.md +65 -0
  435. package/dist/workspace-defaults/files/ROUTER.md +24 -0
  436. package/dist/workspace-defaults/files/SPACE.md +62 -0
  437. package/dist/workspace-defaults/files/TOOLS.md +65 -0
  438. package/dist/workspace-defaults/files/USER.md +40 -0
  439. package/dist/workspace-defaults/files/mcp.json +3 -0
  440. package/dist/workspace-defaults/files/memory/contacts.md +13 -0
  441. package/dist/workspace-defaults/files/memory/lessons.md +13 -0
  442. package/dist/workspace-defaults/files/memory/preferences.md +12 -0
  443. package/dist/workspace-defaults/files/skills/.gitkeep +1 -0
  444. package/dist/workspace-defaults/files/skills/artifact-builder/SKILL.md +79 -0
  445. package/dist/workspace-defaults/files/skills/artifact-builder/references/crm-dashboard.md +166 -0
  446. package/dist/workspace-defaults/files/skills/automation-loop-designer/SKILL.md +120 -0
  447. package/dist/workspace-defaults/files/skills/skill-creator/LICENSE.txt +202 -0
  448. package/dist/workspace-defaults/files/skills/skill-creator/SKILL.md +485 -0
  449. package/dist/workspace-defaults/files/skills/skill-creator/UPSTREAM.json +124 -0
  450. package/dist/workspace-defaults/files/skills/skill-creator/agents/analyzer.md +274 -0
  451. package/dist/workspace-defaults/files/skills/skill-creator/agents/comparator.md +202 -0
  452. package/dist/workspace-defaults/files/skills/skill-creator/agents/grader.md +223 -0
  453. package/dist/workspace-defaults/files/skills/skill-creator/assets/eval_review.html +146 -0
  454. package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  455. package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  456. package/dist/workspace-defaults/files/skills/skill-creator/references/schemas.md +430 -0
  457. package/dist/workspace-defaults/files/skills/skill-creator/scripts/__init__.py +0 -0
  458. package/dist/workspace-defaults/files/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  459. package/dist/workspace-defaults/files/skills/skill-creator/scripts/generate_report.py +326 -0
  460. package/dist/workspace-defaults/files/skills/skill-creator/scripts/improve_description.py +247 -0
  461. package/dist/workspace-defaults/files/skills/skill-creator/scripts/package_skill.py +136 -0
  462. package/dist/workspace-defaults/files/skills/skill-creator/scripts/quick_validate.py +103 -0
  463. package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_eval.py +310 -0
  464. package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_loop.py +328 -0
  465. package/dist/workspace-defaults/files/skills/skill-creator/scripts/utils.py +47 -0
  466. package/package.json +1 -1
  467. package/dist/terraform/modules/app/agentcore-flue/README.md +0 -58
  468. package/dist/terraform/modules/app/agentcore-flue/main.tf +0 -323
  469. package/dist/terraform/modules/app/agentcore-flue/outputs.tf +0 -23
  470. package/dist/terraform/modules/app/agentcore-flue/variables.tf +0 -97
  471. package/dist/terraform/modules/app/computer-runtime/README.md +0 -15
  472. package/dist/terraform/modules/app/computer-runtime/main.tf +0 -406
  473. package/dist/terraform/modules/app/computer-runtime/outputs.tf +0 -75
  474. package/dist/terraform/modules/app/computer-runtime/variables.tf +0 -66
@@ -0,0 +1,103 @@
1
+ -- Durable memory retain attempt ledger for Hindsight retain retries.
2
+ -- Plan: docs/plans/2026-06-28-001-fix-memory-retain-recall-reliability-plan.md (U1).
3
+ --
4
+ -- creates: public.memory_retain_attempts
5
+ -- creates: public.memory_retain_attempts_source_event_uidx
6
+ -- creates: public.memory_retain_attempts_due_idx
7
+ -- creates: public.memory_retain_attempts_tenant_status_idx
8
+ -- creates: public.memory_retain_attempts_thread_idx
9
+ -- creates: public.memory_retain_attempts_user_idx
10
+ -- creates: public.memory_retain_attempts_space_idx
11
+ -- creates: public.memory_retain_attempts_turn_idx
12
+ -- creates-constraint: public.memory_retain_attempts.memory_retain_attempts_tenant_id_tenants_id_fk
13
+ -- creates-constraint: public.memory_retain_attempts.memory_retain_attempts_user_id_users_id_fk
14
+ -- creates-constraint: public.memory_retain_attempts.memory_retain_attempts_space_id_spaces_id_fk
15
+ -- creates-constraint: public.memory_retain_attempts.memory_retain_attempts_thread_id_threads_id_fk
16
+ -- creates-constraint: public.memory_retain_attempts.memory_retain_attempts_thread_turn_id_thread_turns_id_fk
17
+ -- creates-constraint: public.memory_retain_attempts.memory_retain_attempts_status_allowed
18
+ -- creates-constraint: public.memory_retain_attempts.memory_retain_attempts_attempt_count_nonnegative
19
+ -- creates-constraint: public.memory_retain_attempts.memory_retain_attempts_max_attempts_positive
20
+
21
+ DO $$
22
+ BEGIN
23
+ IF to_regclass('public.tenants') IS NULL THEN
24
+ RAISE EXCEPTION 'tenants not found; apply core tenant migrations first';
25
+ END IF;
26
+ IF to_regclass('public.users') IS NULL THEN
27
+ RAISE EXCEPTION 'users not found; apply core user migrations first';
28
+ END IF;
29
+ IF to_regclass('public.spaces') IS NULL THEN
30
+ RAISE EXCEPTION 'spaces not found; apply Space migrations first';
31
+ END IF;
32
+ IF to_regclass('public.threads') IS NULL THEN
33
+ RAISE EXCEPTION 'threads not found; apply thread migrations first';
34
+ END IF;
35
+ IF to_regclass('public.thread_turns') IS NULL THEN
36
+ RAISE EXCEPTION 'thread_turns not found; apply scheduled job execution migrations first';
37
+ END IF;
38
+ END $$;
39
+
40
+ CREATE TABLE IF NOT EXISTS public.memory_retain_attempts (
41
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
42
+ tenant_id uuid NOT NULL
43
+ CONSTRAINT memory_retain_attempts_tenant_id_tenants_id_fk
44
+ REFERENCES public.tenants(id) ON DELETE CASCADE,
45
+ user_id uuid
46
+ CONSTRAINT memory_retain_attempts_user_id_users_id_fk
47
+ REFERENCES public.users(id) ON DELETE SET NULL,
48
+ space_id uuid
49
+ CONSTRAINT memory_retain_attempts_space_id_spaces_id_fk
50
+ REFERENCES public.spaces(id) ON DELETE SET NULL,
51
+ thread_id uuid NOT NULL
52
+ CONSTRAINT memory_retain_attempts_thread_id_threads_id_fk
53
+ REFERENCES public.threads(id) ON DELETE CASCADE,
54
+ thread_turn_id uuid
55
+ CONSTRAINT memory_retain_attempts_thread_turn_id_thread_turns_id_fk
56
+ REFERENCES public.thread_turns(id) ON DELETE SET NULL,
57
+ source_event_key text NOT NULL,
58
+ source_event_type text NOT NULL DEFAULT 'thread_turn',
59
+ provider text NOT NULL DEFAULT 'hindsight',
60
+ status text NOT NULL DEFAULT 'queued',
61
+ attempt_count integer NOT NULL DEFAULT 0,
62
+ max_attempts integer NOT NULL DEFAULT 5,
63
+ next_retry_at timestamp with time zone,
64
+ locked_at timestamp with time zone,
65
+ locked_by text,
66
+ started_at timestamp with time zone,
67
+ finished_at timestamp with time zone,
68
+ backend_latency_ms integer,
69
+ provider_document_id text,
70
+ provider_result jsonb,
71
+ error_class text,
72
+ error_message text,
73
+ metadata jsonb,
74
+ created_at timestamp with time zone NOT NULL DEFAULT now(),
75
+ updated_at timestamp with time zone NOT NULL DEFAULT now(),
76
+ CONSTRAINT memory_retain_attempts_status_allowed
77
+ CHECK (status IN ('queued','running','retained','failed_timeout','failed_backend','dead_lettered')),
78
+ CONSTRAINT memory_retain_attempts_attempt_count_nonnegative
79
+ CHECK (attempt_count >= 0),
80
+ CONSTRAINT memory_retain_attempts_max_attempts_positive
81
+ CHECK (max_attempts > 0)
82
+ );
83
+
84
+ CREATE UNIQUE INDEX IF NOT EXISTS memory_retain_attempts_source_event_uidx
85
+ ON public.memory_retain_attempts (tenant_id, thread_id, source_event_key);
86
+
87
+ CREATE INDEX IF NOT EXISTS memory_retain_attempts_due_idx
88
+ ON public.memory_retain_attempts (status, next_retry_at, created_at);
89
+
90
+ CREATE INDEX IF NOT EXISTS memory_retain_attempts_tenant_status_idx
91
+ ON public.memory_retain_attempts (tenant_id, status, created_at);
92
+
93
+ CREATE INDEX IF NOT EXISTS memory_retain_attempts_thread_idx
94
+ ON public.memory_retain_attempts (tenant_id, thread_id, created_at);
95
+
96
+ CREATE INDEX IF NOT EXISTS memory_retain_attempts_user_idx
97
+ ON public.memory_retain_attempts (tenant_id, user_id, created_at);
98
+
99
+ CREATE INDEX IF NOT EXISTS memory_retain_attempts_space_idx
100
+ ON public.memory_retain_attempts (tenant_id, space_id, created_at);
101
+
102
+ CREATE INDEX IF NOT EXISTS memory_retain_attempts_turn_idx
103
+ ON public.memory_retain_attempts (thread_turn_id);
@@ -0,0 +1,35 @@
1
+ -- Work Item Comments: first-class timeline comments for human and agent discussion.
2
+ -- creates: public.work_item_comments
3
+ -- creates: public.idx_work_item_comments_item_created
4
+ -- creates: public.idx_work_item_comments_thread
5
+ -- creates-constraint: public.work_item_comments.work_item_comments_author_required
6
+
7
+ CREATE TABLE IF NOT EXISTS work_item_comments (
8
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
9
+ tenant_id uuid NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
10
+ space_id uuid NOT NULL REFERENCES spaces(id) ON DELETE CASCADE,
11
+ work_item_id uuid NOT NULL REFERENCES work_items(id) ON DELETE CASCADE,
12
+ thread_id uuid REFERENCES threads(id) ON DELETE SET NULL,
13
+ author_user_id uuid REFERENCES users(id) ON DELETE SET NULL,
14
+ author_agent_id uuid REFERENCES agents(id) ON DELETE SET NULL,
15
+ body text NOT NULL,
16
+ metadata jsonb,
17
+ created_at timestamptz NOT NULL DEFAULT now(),
18
+ updated_at timestamptz NOT NULL DEFAULT now(),
19
+ archived_at timestamptz,
20
+ CONSTRAINT work_item_comments_author_required
21
+ CHECK (author_user_id IS NOT NULL OR author_agent_id IS NOT NULL)
22
+ );
23
+
24
+ CREATE INDEX IF NOT EXISTS idx_work_item_comments_item_created
25
+ ON work_item_comments (tenant_id, work_item_id, created_at);
26
+
27
+ CREATE INDEX IF NOT EXISTS idx_work_item_comments_thread
28
+ ON work_item_comments (tenant_id, thread_id);
29
+
30
+ ALTER TABLE work_item_events
31
+ DROP CONSTRAINT IF EXISTS work_item_events_type_allowed;
32
+
33
+ ALTER TABLE work_item_events
34
+ ADD CONSTRAINT work_item_events_type_allowed
35
+ CHECK (event_type IN ('created','updated','status_changed','completed','blocked','unblocked','assigned','due_date_changed','applicability_changed','linked_thread','agent_action','comment_added'));
@@ -0,0 +1,45 @@
1
+ -- Plugin App Overlays: durable ThinkWork-owned state for trusted plugin apps.
2
+ -- creates: public.plugin_app_overlays
3
+ -- creates: public.uq_plugin_app_overlays_identity
4
+ -- creates: public.idx_plugin_app_overlays_record
5
+ -- creates: public.idx_plugin_app_overlays_updated
6
+
7
+ CREATE TABLE IF NOT EXISTS plugin_app_overlays (
8
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
9
+ tenant_id uuid NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
10
+ plugin_install_id uuid NOT NULL REFERENCES plugin_installs(id) ON DELETE CASCADE,
11
+ app_surface_key text NOT NULL,
12
+ app_key text NOT NULL,
13
+ provider text NOT NULL,
14
+ provider_record_type text NOT NULL,
15
+ provider_record_id text NOT NULL,
16
+ section_key text NOT NULL,
17
+ payload jsonb NOT NULL DEFAULT '{}'::jsonb,
18
+ created_by_user_id uuid REFERENCES users(id) ON DELETE SET NULL,
19
+ updated_by_user_id uuid REFERENCES users(id) ON DELETE SET NULL,
20
+ created_at timestamptz NOT NULL DEFAULT now(),
21
+ updated_at timestamptz NOT NULL DEFAULT now()
22
+ );
23
+
24
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_plugin_app_overlays_identity
25
+ ON plugin_app_overlays (
26
+ tenant_id,
27
+ plugin_install_id,
28
+ app_surface_key,
29
+ provider,
30
+ provider_record_type,
31
+ provider_record_id,
32
+ section_key
33
+ );
34
+
35
+ CREATE INDEX IF NOT EXISTS idx_plugin_app_overlays_record
36
+ ON plugin_app_overlays (
37
+ tenant_id,
38
+ app_key,
39
+ provider,
40
+ provider_record_type,
41
+ provider_record_id
42
+ );
43
+
44
+ CREATE INDEX IF NOT EXISTS idx_plugin_app_overlays_updated
45
+ ON plugin_app_overlays (tenant_id, app_key, updated_at);
@@ -0,0 +1,118 @@
1
+ -- Dynamic Pi extension registry and assignments.
2
+ -- creates: public.pi_extension_sources
3
+ -- creates: public.pi_extension_versions
4
+ -- creates: public.pi_extension_assignments
5
+ -- creates: public.uq_pi_extension_sources_tenant_repository
6
+ -- creates: public.uq_pi_extension_versions_source_commit
7
+ -- creates: public.uq_pi_extension_assignments_default_version
8
+ -- creates: public.uq_pi_extension_assignments_profile_version
9
+ -- creates: public.idx_pi_extension_sources_tenant
10
+ -- creates: public.idx_pi_extension_versions_tenant_status
11
+ -- creates: public.idx_pi_extension_versions_source
12
+ -- creates: public.idx_pi_extension_assignments_tenant_target
13
+ -- creates: public.idx_pi_extension_assignments_version
14
+ -- creates-constraint: public.pi_extension_sources.pi_extension_sources_source_type_check
15
+ -- creates-constraint: public.pi_extension_versions.pi_extension_versions_status_check
16
+ -- creates-constraint: public.pi_extension_assignments.pi_extension_assignments_target_type_check
17
+ -- creates-constraint: public.pi_extension_assignments.pi_extension_assignments_profile_target_check
18
+
19
+ CREATE TABLE IF NOT EXISTS public.pi_extension_sources (
20
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
21
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
22
+ source_type text NOT NULL DEFAULT 'github',
23
+ repository_url text NOT NULL,
24
+ repository_owner text,
25
+ repository_name text,
26
+ display_name text,
27
+ created_by_user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
28
+ created_at timestamptz NOT NULL DEFAULT now(),
29
+ updated_at timestamptz NOT NULL DEFAULT now(),
30
+ CONSTRAINT pi_extension_sources_source_type_check
31
+ CHECK (source_type IN ('github'))
32
+ );
33
+
34
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_pi_extension_sources_tenant_repository
35
+ ON public.pi_extension_sources (tenant_id, source_type, repository_url);
36
+
37
+ CREATE INDEX IF NOT EXISTS idx_pi_extension_sources_tenant
38
+ ON public.pi_extension_sources (tenant_id);
39
+
40
+ CREATE TABLE IF NOT EXISTS public.pi_extension_versions (
41
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
42
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
43
+ source_id uuid NOT NULL REFERENCES public.pi_extension_sources(id) ON DELETE CASCADE,
44
+ display_name text,
45
+ description text,
46
+ source_ref text NOT NULL,
47
+ commit_sha text,
48
+ manifest_hash text,
49
+ artifact_hash text,
50
+ artifact_uri text,
51
+ runtime_target text,
52
+ status text NOT NULL DEFAULT 'imported',
53
+ status_reason text,
54
+ manifest jsonb NOT NULL DEFAULT '{}'::jsonb,
55
+ tool_names text[] NOT NULL DEFAULT ARRAY[]::text[],
56
+ lifecycle_hooks text[] NOT NULL DEFAULT ARRAY[]::text[],
57
+ permission_classes text[] NOT NULL DEFAULT ARRAY[]::text[],
58
+ verification_report jsonb NOT NULL DEFAULT '{}'::jsonb,
59
+ reviewed_by_user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
60
+ reviewed_at timestamptz,
61
+ approved_by_user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
62
+ approved_at timestamptz,
63
+ rejected_by_user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
64
+ rejected_at timestamptz,
65
+ created_at timestamptz NOT NULL DEFAULT now(),
66
+ updated_at timestamptz NOT NULL DEFAULT now(),
67
+ CONSTRAINT pi_extension_versions_status_check
68
+ CHECK (status IN (
69
+ 'imported',
70
+ 'needs_review',
71
+ 'approved',
72
+ 'rejected',
73
+ 'failed_verification'
74
+ ))
75
+ );
76
+
77
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_pi_extension_versions_source_commit
78
+ ON public.pi_extension_versions (tenant_id, source_id, commit_sha);
79
+
80
+ CREATE INDEX IF NOT EXISTS idx_pi_extension_versions_tenant_status
81
+ ON public.pi_extension_versions (tenant_id, status);
82
+
83
+ CREATE INDEX IF NOT EXISTS idx_pi_extension_versions_source
84
+ ON public.pi_extension_versions (source_id);
85
+
86
+ CREATE TABLE IF NOT EXISTS public.pi_extension_assignments (
87
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
88
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
89
+ version_id uuid NOT NULL REFERENCES public.pi_extension_versions(id) ON DELETE CASCADE,
90
+ target_type text NOT NULL,
91
+ agent_profile_id uuid REFERENCES public.agent_profiles(id) ON DELETE CASCADE,
92
+ enabled boolean NOT NULL DEFAULT true,
93
+ granted_permissions jsonb NOT NULL DEFAULT '{}'::jsonb,
94
+ assigned_by_user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
95
+ created_at timestamptz NOT NULL DEFAULT now(),
96
+ updated_at timestamptz NOT NULL DEFAULT now(),
97
+ CONSTRAINT pi_extension_assignments_target_type_check
98
+ CHECK (target_type IN ('default_agent', 'agent_profile')),
99
+ CONSTRAINT pi_extension_assignments_profile_target_check
100
+ CHECK (
101
+ (target_type = 'agent_profile' AND agent_profile_id IS NOT NULL)
102
+ OR (target_type = 'default_agent' AND agent_profile_id IS NULL)
103
+ )
104
+ );
105
+
106
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_pi_extension_assignments_default_version
107
+ ON public.pi_extension_assignments (tenant_id, version_id)
108
+ WHERE target_type = 'default_agent';
109
+
110
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_pi_extension_assignments_profile_version
111
+ ON public.pi_extension_assignments (tenant_id, agent_profile_id, version_id)
112
+ WHERE target_type = 'agent_profile';
113
+
114
+ CREATE INDEX IF NOT EXISTS idx_pi_extension_assignments_tenant_target
115
+ ON public.pi_extension_assignments (tenant_id, target_type, agent_profile_id);
116
+
117
+ CREATE INDEX IF NOT EXISTS idx_pi_extension_assignments_version
118
+ ON public.pi_extension_assignments (version_id);
@@ -0,0 +1,150 @@
1
+ -- Purpose: Eval Profiles substrate (THINK-107, Eval Profiles U1). Adds the
2
+ -- eval_profiles table (agent-under-test as named config: model +
3
+ -- judge pin + trial count, one default per tenant), the
4
+ -- eval_case_overrides table (case-level verdict overrides for
5
+ -- multi-trial cases — the aggregation layer applies them last),
6
+ -- run-side pinning columns (profile_id, profile_snapshot,
7
+ -- pinned_trial_plan, expected_result_rows), per-trial result
8
+ -- identity + agent-turn telemetry columns, and case-quality
9
+ -- curation columns. Backfills one default profile per existing
10
+ -- tenant; the resolution seam get-or-creates for tenants
11
+ -- provisioned later.
12
+ -- Plan: docs/plans/2026-07-01-002-feat-eval-profiles-plan.md (U1)
13
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0197_eval_profiles.sql
14
+ --
15
+ -- Hand-rolled (NOT registered in meta/_journal.json — repo convention is
16
+ -- psql-applied files gated by the db:migrate-manual drift reporter).
17
+ --
18
+ -- Semantics:
19
+ -- * eval_profiles: exactly one default per tenant, enforced by a partial
20
+ -- unique index. Soft-archive via archived_at; archiving the default is
21
+ -- rejected at the API layer.
22
+ -- * eval_case_overrides: one row per (run, case); pass|fail only. The
23
+ -- per-trial rows on eval_results are never overridden individually.
24
+ -- * eval_results.trial_index defaults 0 so every legacy row is trial 0.
25
+ -- Row identity (run, case, trial) stays app-enforced (worker dedup +
26
+ -- advisory lock), matching the table's existing convention — no unique
27
+ -- index, since legacy data predates app-level dedup hardening.
28
+ -- * eval_runs.expected_result_rows is nullable; completion checks read
29
+ -- COALESCE(expected_result_rows, total_tests) so pre-profile and
30
+ -- in-flight runs keep finalizing.
31
+ -- * eval_test_cases.quality_state: 'active' | 'retired' | 'needs-revision';
32
+ -- seed re-sync propagates transitions one-way (never retired -> active).
33
+ --
34
+ -- creates: public.eval_profiles
35
+ -- creates-constraint: public.eval_profiles.eval_profiles_tenant_id_tenants_id_fk
36
+ -- creates-constraint: public.eval_profiles.eval_profiles_trials_check
37
+ -- creates: public.eval_case_overrides
38
+ -- creates-constraint: public.eval_case_overrides.eval_case_overrides_run_id_eval_runs_id_fk
39
+ -- creates-constraint: public.eval_case_overrides.eval_case_overrides_test_case_id_eval_test_cases_id_fk
40
+ -- creates-constraint: public.eval_case_overrides.eval_case_overrides_status_check
41
+ -- creates-column: public.eval_runs.profile_id
42
+ -- creates-column: public.eval_runs.profile_snapshot
43
+ -- creates-column: public.eval_runs.pinned_trial_plan
44
+ -- creates-column: public.eval_runs.expected_result_rows
45
+ -- creates-column: public.eval_results.trial_index
46
+ -- creates-column: public.eval_results.agent_input_tokens
47
+ -- creates-column: public.eval_results.agent_output_tokens
48
+ -- creates-column: public.eval_results.agent_cost_usd
49
+ -- creates-column: public.eval_test_cases.quality_state
50
+ -- creates-column: public.eval_test_cases.rewritten_from_id
51
+ -- creates-constraint: public.eval_test_cases.eval_test_cases_quality_state_check
52
+
53
+ \set ON_ERROR_STOP on
54
+
55
+ BEGIN;
56
+
57
+ SET LOCAL lock_timeout = '5s';
58
+
59
+ CREATE TABLE IF NOT EXISTS public.eval_profiles (
60
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
61
+ tenant_id uuid NOT NULL
62
+ CONSTRAINT eval_profiles_tenant_id_tenants_id_fk REFERENCES public.tenants(id),
63
+ name text NOT NULL,
64
+ model text NOT NULL,
65
+ judge_model text,
66
+ trials integer NOT NULL DEFAULT 1
67
+ CONSTRAINT eval_profiles_trials_check CHECK (trials >= 1),
68
+ is_default boolean NOT NULL DEFAULT false,
69
+ archived_at timestamptz,
70
+ created_at timestamptz NOT NULL DEFAULT now(),
71
+ updated_at timestamptz NOT NULL DEFAULT now()
72
+ );
73
+
74
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_eval_profiles_tenant_name
75
+ ON public.eval_profiles (tenant_id, name);
76
+
77
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_eval_profiles_tenant_default
78
+ ON public.eval_profiles (tenant_id)
79
+ WHERE is_default = true;
80
+
81
+ CREATE INDEX IF NOT EXISTS idx_eval_profiles_tenant
82
+ ON public.eval_profiles (tenant_id);
83
+
84
+ CREATE TABLE IF NOT EXISTS public.eval_case_overrides (
85
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
86
+ run_id uuid NOT NULL
87
+ CONSTRAINT eval_case_overrides_run_id_eval_runs_id_fk
88
+ REFERENCES public.eval_runs(id) ON DELETE CASCADE,
89
+ test_case_id uuid NOT NULL
90
+ CONSTRAINT eval_case_overrides_test_case_id_eval_test_cases_id_fk
91
+ REFERENCES public.eval_test_cases(id),
92
+ override_status text NOT NULL
93
+ CONSTRAINT eval_case_overrides_status_check
94
+ CHECK (override_status IN ('pass', 'fail')),
95
+ overridden_by text,
96
+ overridden_at timestamptz NOT NULL DEFAULT now(),
97
+ override_reason text NOT NULL,
98
+ created_at timestamptz NOT NULL DEFAULT now()
99
+ );
100
+
101
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_eval_case_overrides_run_case
102
+ ON public.eval_case_overrides (run_id, test_case_id);
103
+
104
+ ALTER TABLE public.eval_runs
105
+ ADD COLUMN IF NOT EXISTS profile_id uuid,
106
+ ADD COLUMN IF NOT EXISTS profile_snapshot jsonb,
107
+ ADD COLUMN IF NOT EXISTS pinned_trial_plan jsonb,
108
+ ADD COLUMN IF NOT EXISTS expected_result_rows integer;
109
+
110
+ DO $$
111
+ BEGIN
112
+ ALTER TABLE public.eval_runs
113
+ ADD CONSTRAINT eval_runs_profile_id_eval_profiles_id_fk
114
+ FOREIGN KEY (profile_id) REFERENCES public.eval_profiles(id);
115
+ EXCEPTION WHEN duplicate_object THEN NULL;
116
+ END $$;
117
+
118
+ ALTER TABLE public.eval_results
119
+ ADD COLUMN IF NOT EXISTS trial_index integer NOT NULL DEFAULT 0,
120
+ ADD COLUMN IF NOT EXISTS agent_input_tokens integer,
121
+ ADD COLUMN IF NOT EXISTS agent_output_tokens integer,
122
+ ADD COLUMN IF NOT EXISTS agent_cost_usd numeric(12, 6);
123
+
124
+ ALTER TABLE public.eval_test_cases
125
+ ADD COLUMN IF NOT EXISTS quality_state text NOT NULL DEFAULT 'active',
126
+ ADD COLUMN IF NOT EXISTS rewritten_from_id text;
127
+
128
+ DO $$
129
+ BEGIN
130
+ ALTER TABLE public.eval_test_cases
131
+ ADD CONSTRAINT eval_test_cases_quality_state_check
132
+ CHECK (quality_state IN ('active', 'retired', 'needs-revision'));
133
+ EXCEPTION WHEN duplicate_object THEN NULL;
134
+ END $$;
135
+
136
+ -- Backfill: one default profile per existing tenant. Values mirror the
137
+ -- code defaults (DEFAULT_EVAL_MODEL_ID in packages/api/src/lib/evals/
138
+ -- eval-defaults.ts; judge_model null = deployed default; trials 1). The
139
+ -- API's get-or-create resolution seam covers tenants provisioned after
140
+ -- this migration and heals any drift between this literal and the code
141
+ -- constant.
142
+ INSERT INTO public.eval_profiles (tenant_id, name, model, judge_model, trials, is_default)
143
+ SELECT t.id, 'Default', 'moonshotai.kimi-k2.5', NULL, 1, true
144
+ FROM public.tenants t
145
+ WHERE NOT EXISTS (
146
+ SELECT 1 FROM public.eval_profiles p
147
+ WHERE p.tenant_id = t.id AND p.is_default = true
148
+ );
149
+
150
+ COMMIT;
@@ -0,0 +1,27 @@
1
+ -- Purpose: eval_runs.unstable — count of unstable CASE verdicts on a run
2
+ -- (Eval Profiles U4, KTD4). `unstable` is a case-level aggregate
3
+ -- verdict from the evals-core trial-aggregation layer (scored
4
+ -- trials splitting with no majority); it is excluded from the
5
+ -- pass-rate denominator and gate math exactly like `error` and
6
+ -- surfaced as its own counter. Nullable: null on legacy runs
7
+ -- (null scoring_version) and on runs finalized before this
8
+ -- column shipped; versioned summarizers write it alongside
9
+ -- passed/failed/errored.
10
+ -- Plan: docs/plans/2026-07-01-002-feat-eval-profiles-plan.md (U4)
11
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0198_eval_runs_unstable.sql
12
+ --
13
+ -- Hand-rolled (NOT registered in meta/_journal.json — repo convention is
14
+ -- psql-applied files gated by the db:migrate-manual drift reporter).
15
+ --
16
+ -- creates-column: public.eval_runs.unstable
17
+
18
+ \set ON_ERROR_STOP on
19
+
20
+ BEGIN;
21
+
22
+ SET LOCAL lock_timeout = '5s';
23
+
24
+ ALTER TABLE public.eval_runs
25
+ ADD COLUMN IF NOT EXISTS unstable integer;
26
+
27
+ COMMIT;
@@ -0,0 +1,27 @@
1
+ -- Purpose: eval_runs.cost_partial — cost-honesty flag on a run's summary
2
+ -- (Eval Profiles U5, R6). True when any result row is missing a
3
+ -- priced agent-turn cost (agent usage absent — older runtime
4
+ -- envelope or an errored invoke — or usage recorded but catalog
5
+ -- pricing unresolved, agent_cost_usd null). cost_usd then
6
+ -- understates the true spend and must render as partial — never
7
+ -- as a confident total and never as a false zero. Nullable: null
8
+ -- on runs finalized before this column shipped (their cost is
9
+ -- evaluator-only, i.e. partial — the API maps null to true).
10
+ -- Plan: docs/plans/2026-07-01-002-feat-eval-profiles-plan.md (U5)
11
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0199_eval_runs_cost_partial.sql
12
+ --
13
+ -- Hand-rolled (NOT registered in meta/_journal.json — repo convention is
14
+ -- psql-applied files gated by the db:migrate-manual drift reporter).
15
+ --
16
+ -- creates-column: public.eval_runs.cost_partial
17
+
18
+ \set ON_ERROR_STOP on
19
+
20
+ BEGIN;
21
+
22
+ SET LOCAL lock_timeout = '5s';
23
+
24
+ ALTER TABLE public.eval_runs
25
+ ADD COLUMN IF NOT EXISTS cost_partial boolean;
26
+
27
+ COMMIT;
@@ -0,0 +1,160 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "postgresql",
4
+ "entries": [
5
+ {
6
+ "idx": 0,
7
+ "version": "7",
8
+ "when": 1775838985185,
9
+ "tag": "0000_petite_marvel_apes",
10
+ "breakpoints": true
11
+ },
12
+ {
13
+ "idx": 1,
14
+ "version": "7",
15
+ "when": 1776000847373,
16
+ "tag": "0001_milky_surge",
17
+ "breakpoints": true
18
+ },
19
+ {
20
+ "idx": 2,
21
+ "version": "7",
22
+ "when": 1776170219841,
23
+ "tag": "0002_aberrant_mattie_franklin",
24
+ "breakpoints": true
25
+ },
26
+ {
27
+ "idx": 3,
28
+ "version": "7",
29
+ "when": 1776181409083,
30
+ "tag": "0003_exotic_ogun",
31
+ "breakpoints": true
32
+ },
33
+ {
34
+ "idx": 4,
35
+ "version": "7",
36
+ "when": 1776249324500,
37
+ "tag": "0004_glamorous_magneto",
38
+ "breakpoints": true
39
+ },
40
+ {
41
+ "idx": 5,
42
+ "version": "7",
43
+ "when": 1776271655486,
44
+ "tag": "0005_ancient_nocturne",
45
+ "breakpoints": true
46
+ },
47
+ {
48
+ "idx": 6,
49
+ "version": "7",
50
+ "when": 1776276212924,
51
+ "tag": "0006_new_colonel_america",
52
+ "breakpoints": true
53
+ },
54
+ {
55
+ "idx": 7,
56
+ "version": "7",
57
+ "when": 1776376500000,
58
+ "tag": "0007_unique_external_task_id",
59
+ "breakpoints": true
60
+ },
61
+ {
62
+ "idx": 8,
63
+ "version": "7",
64
+ "when": 1776381000000,
65
+ "tag": "0008_external_task_id_column",
66
+ "breakpoints": true
67
+ },
68
+ {
69
+ "idx": 9,
70
+ "version": "7",
71
+ "when": 1776427997385,
72
+ "tag": "0009_evaluations",
73
+ "breakpoints": true
74
+ },
75
+ {
76
+ "idx": 10,
77
+ "version": "7",
78
+ "when": 1776437157851,
79
+ "tag": "0010_eval_agent_template",
80
+ "breakpoints": true
81
+ },
82
+ {
83
+ "idx": 11,
84
+ "version": "7",
85
+ "when": 1776439772657,
86
+ "tag": "0011_eval_run_template",
87
+ "breakpoints": true
88
+ },
89
+ {
90
+ "idx": 12,
91
+ "version": "7",
92
+ "when": 1776537470281,
93
+ "tag": "0013_motionless_white_queen",
94
+ "breakpoints": true
95
+ },
96
+ {
97
+ "idx": 13,
98
+ "version": "7",
99
+ "when": 1776604237639,
100
+ "tag": "0014_wiki_aggregation",
101
+ "breakpoints": true
102
+ },
103
+ {
104
+ "idx": 14,
105
+ "version": "7",
106
+ "when": 1776694413971,
107
+ "tag": "0015_pg_trgm_alias_title_indexes",
108
+ "breakpoints": true
109
+ },
110
+ {
111
+ "idx": 15,
112
+ "version": "7",
113
+ "when": 1776771920106,
114
+ "tag": "0016_wiki_schema_drops",
115
+ "breakpoints": true
116
+ },
117
+ {
118
+ "idx": 16,
119
+ "version": "7",
120
+ "when": 1776790755231,
121
+ "tag": "0017_wiki_places",
122
+ "breakpoints": true
123
+ },
124
+ {
125
+ "idx": 17,
126
+ "version": "7",
127
+ "when": 1776799778139,
128
+ "tag": "0018_agent_workspace_overlay",
129
+ "breakpoints": true
130
+ },
131
+ {
132
+ "idx": 18,
133
+ "version": "7",
134
+ "when": 1776865933950,
135
+ "tag": "0018_cool_firebird",
136
+ "breakpoints": true
137
+ },
138
+ {
139
+ "idx": 19,
140
+ "version": "7",
141
+ "when": 1776878985543,
142
+ "tag": "0019_condemned_dragon_man",
143
+ "breakpoints": true
144
+ },
145
+ {
146
+ "idx": 20,
147
+ "version": "7",
148
+ "when": 1776881659765,
149
+ "tag": "0020_crazy_the_anarchist",
150
+ "breakpoints": true
151
+ },
152
+ {
153
+ "idx": 21,
154
+ "version": "7",
155
+ "when": 1781781055116,
156
+ "tag": "0021_crm_work_links",
157
+ "breakpoints": true
158
+ }
159
+ ]
160
+ }