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,62 @@
1
+ # SPACE.md - Shared Space Context
2
+
3
+ Use this file for context that belongs to everyone working in this Space.
4
+ `AGENTS.md` is the always-loaded map; this file is loaded through that map when
5
+ the active turn is in this Space.
6
+
7
+ Do not put secrets here. Enable tools, MCP servers, skills, and execution
8
+ policy on the Agent or Agent Profiles. SPACE.md can mention which profile,
9
+ skill, or tool should be used for a kind of work, but it does not grant that
10
+ capability by itself.
11
+
12
+ ## Start Here
13
+
14
+ - Read `CONTEXT.md` for the main workflow and operating context when this Space
15
+ has one.
16
+ - Use attached folders such as `docs/`, `plans/`, `goals/`, and `artifacts/`
17
+ as source material when relevant.
18
+ - Keep this file short. Link to detailed source files instead of duplicating
19
+ long-running procedures here.
20
+
21
+ ## Purpose
22
+
23
+ Describe what this Space is for and when agents should rely on it.
24
+
25
+ - Work this Space owns:
26
+ - Work this Space does not own:
27
+ - Current priority:
28
+
29
+ ## Working Context
30
+
31
+ Capture durable facts, decisions, constraints, source links, and assumptions
32
+ that should shape answers in this Space.
33
+
34
+ - Current goal:
35
+ - Important constraints:
36
+ - Source of truth:
37
+ - Recent decisions:
38
+
39
+ ## Key Files
40
+
41
+ - `CONTEXT.md` - main workflow/context file.
42
+
43
+ ## Routing Notes
44
+
45
+ Point agents toward the right Agent Profile, skill, or specialist workspace.
46
+ These are instructions for routing and behavior, not capability grants.
47
+
48
+ - Use @Analyst for finance, spreadsheet, and general-ledger analysis.
49
+ - Use @Reviewer for review-only passes before shipping or publishing.
50
+ - Use specific skills only when the selected Agent Profile exposes them.
51
+
52
+ ## Operating Agreements
53
+
54
+ Record team preferences for this Space.
55
+
56
+ - Ask before:
57
+ - Act without asking when:
58
+ - Report back with:
59
+
60
+ ## Open Questions
61
+
62
+ -
@@ -0,0 +1,65 @@
1
+ ---
2
+ modelRouting: []
3
+ ---
4
+
5
+ ## Tool Usage Policy
6
+
7
+ You have access to specialized tools. You MUST use them proactively:
8
+
9
+ - **Never tell the user to search, check a website, or look something up themselves.** If you have a tool that can retrieve the information, use it.
10
+ - **Always prefer tool-sourced answers** over training data for anything time-sensitive: current events, recent dates, prices, schedules, availability, weather, or any factual claim that may have changed since your training cutoff.
11
+ - **When uncertain whether information is current**, use your tools to verify before responding.
12
+ - **Call tools first, then respond.** Do not apologize for limitations you can overcome with a tool call.
13
+
14
+ ## Web Research Tool Choice
15
+
16
+ - **Web Search** finds current results and candidate URLs. Use it for discovery and ordinary factual lookups.
17
+ - **Web Extraction** reads one known public URL as clean page content. Use it after Web Search finds a promising URL, or when the user gives you a URL and asks you to read, summarize, analyze, or quote it.
18
+ - **Browser Automation** is the heavyweight fallback for interaction: forms, clicks, auth flows, rendered-state inspection, multi-step browsing, or pages Web Extraction cannot read.
19
+ - Do not create or install workspace skills to emulate these built-ins, and never write provider credentials or API keys into workspace files.
20
+
21
+ ## Workspace Orchestration
22
+
23
+ - Use `delegate(task, context)` for short text-only specialist help that must finish in this turn.
24
+ - Use `delegate_to_workspace(target, task)` for folder-scoped specialist work that must finish in this turn, when available.
25
+ - Use `wake_workspace(target, request_md, ...)` for async folder-scoped work that can pause, wait on humans, or resume after another agent completes.
26
+ - Do not hand-write files under `work/inbox/`, `review/`, `work/runs/*/events/`, `events/intents/`, or `events/audit/`; use the workspace orchestration tools so the platform can validate, order, and audit the write.
27
+
28
+ ## Model Routing
29
+
30
+ The YAML frontmatter at the top of this file is the machine-readable tool policy
31
+ contract. Use `modelRouting` to route a specific tool or capability to a
32
+ different approved model for cost or latency reasons.
33
+
34
+ This `TOOLS.md` contract is ThinkWork-native. It is not an external standard;
35
+ the Pi runtime reads the frontmatter and enforces only the supported
36
+ machine-readable keys.
37
+
38
+ Example:
39
+
40
+ ```yaml
41
+ modelRouting:
42
+ - tool: workspace_skill
43
+ match:
44
+ slug: financial-analysis
45
+ model: us.anthropic.claude-haiku-4-5-20251001-v1:0
46
+ reason: Use the cheaper model for the analyst subtask.
47
+ ```
48
+
49
+ MCP servers route as the server-level `mcp` tool surface. Use `serverName` to
50
+ target a configured MCP server; the runtime will still record the concrete MCP
51
+ operation (`match.toolName`) that ran under the route.
52
+
53
+ ```yaml
54
+ modelRouting:
55
+ - tool: mcp
56
+ match:
57
+ serverName: twenty-crm
58
+ model: us.anthropic.claude-haiku-4-5-20251001-v1:0
59
+ reason: Use the cheaper model for Twenty CRM MCP calls.
60
+ ```
61
+
62
+ Routes layer by folder policy: agent root, active Space, active workspace, then
63
+ user workspace. Higher-precedence files replace lower-precedence entries with
64
+ the same `tool` and `match` signature. The runtime still validates that the
65
+ selected model is approved for the user before a routed tool call runs.
@@ -0,0 +1,40 @@
1
+ # USER.md - About Your Human
2
+
3
+ - **Name:** {{HUMAN_NAME}}
4
+ - **What to call them:** {{HUMAN_CALL_BY}}
5
+ - **Pronouns:** {{HUMAN_PRONOUNS}}
6
+ - **Timezone:** {{HUMAN_TIMEZONE}}
7
+ - **Phone:** {{HUMAN_PHONE}}
8
+ - **Notes:** {{HUMAN_NOTES}}
9
+
10
+ ## Family
11
+
12
+ {{HUMAN_FAMILY}}
13
+
14
+ ## Context
15
+
16
+ {{HUMAN_CONTEXT}}
17
+
18
+ ## How I work
19
+
20
+ ### Rhythms
21
+
22
+ {{OPERATING_MODEL_RHYTHMS}}
23
+
24
+ ### Decisions
25
+
26
+ {{OPERATING_MODEL_DECISIONS}}
27
+
28
+ ### Dependencies
29
+
30
+ {{OPERATING_MODEL_DEPENDENCIES}}
31
+
32
+ ### ThinkWork Brain
33
+
34
+ {{OPERATING_MODEL_KNOWLEDGE}}
35
+
36
+ ## Surfaces
37
+
38
+ ### Slack
39
+
40
+ When I talk with you from Slack, treat Slack as a delivery surface for the selected shared Computer, not a separate identity. Use only the Slack thread, message, file references, and linked-user context the platform provides for the turn. Keep responses clear enough for a shared channel, and remember that the platform will add shared Computer and requester attribution when it posts back.
@@ -0,0 +1,3 @@
1
+ {
2
+ "directTools": []
3
+ }
@@ -0,0 +1,13 @@
1
+ # Contacts
2
+
3
+ People you interact with on behalf of your human partner — colleagues,
4
+ clients, vendors, family. Capture enough to be useful in future interactions
5
+ (who they are, how they prefer to be addressed, context about the
6
+ relationship) without writing a dossier.
7
+
8
+ One contact per entry. Omit sensitive details (home addresses, private
9
+ phone numbers) unless the human explicitly asks you to record them.
10
+
11
+ ## Contacts
12
+
13
+ _(empty — add entries as you encounter them)_
@@ -0,0 +1,13 @@
1
+ # Lessons
2
+
3
+ Durable lessons from past interactions — what worked, what didn't, what you
4
+ wish you'd known sooner. One lesson per bullet. Lead with the rule, then a
5
+ short reason.
6
+
7
+ Only add a lesson when you've learned something non-obvious that will change
8
+ future behavior. Don't log every interaction — the automatic memory system
9
+ already does that.
10
+
11
+ ## Lessons
12
+
13
+ _(empty — add entries as you learn them)_
@@ -0,0 +1,12 @@
1
+ # Preferences
2
+
3
+ Your human partner's stated preferences — communication style, working hours,
4
+ tone, formats they like, formats they don't. Update as you observe or as
5
+ they tell you directly.
6
+
7
+ One preference per bullet. Prefer concrete over abstract ("wants bullet
8
+ summaries under 5 lines" beats "prefers concise responses").
9
+
10
+ ## Preferences
11
+
12
+ _(empty — add entries as you learn them)_
@@ -0,0 +1,79 @@
1
+ ---
2
+ name: artifact-builder
3
+ description: Builds reusable ThinkWork Computer apps and interactive artifacts from research prompts. Use when the user asks to build, create, generate, or make a dashboard, app, report, briefing, workspace, or other interactive surface.
4
+ ---
5
+
6
+ # Artifact Builder
7
+
8
+ Use this skill when the user wants Computer to produce an interactive, reusable artifact. The expected output is a fast unsaved app preview first, not just a prose answer. Save only after the user explicitly asks to keep the preview.
9
+
10
+ ## Contract
11
+
12
+ 1. Research with the available tools and thread context.
13
+ 2. If live sources are missing or partial, keep going with the best available workspace, memory, context, web, or fixture data. Keep the visible app focused on the user's requested output; do not render provenance, source coverage, or recipe/refresh explainers unless the user explicitly asks for them.
14
+ 3. Keep app generation and saving in this parent turn. Do not use `delegate` or `delegate_to_workspace` to write, generate, or save the app.
15
+ 4. **Look up shadcn components on demand, not up front.** Draft the TSX in your head first — the small, focused set of components a typical dashboard or report needs (usually 5-8: `Card`, `Table`/`DataTable`, `Badge`, `Button`, `Tabs`, one chart, sometimes `Tooltip` or `Dialog`). Then call `get_component_source` (or `get_block`) only for the specific components you are about to render. Do not fan out `list_components`, `search_registry`, `get_component_source`, and `get_block` in parallel across many components before writing any TSX — that pattern wastes tool calls, slows the turn dramatically, and risks deadlocking the shadcn MCP server. Treat the shadcn MCP like a precision lookup, not a bulk registry crawl. If MCP is unavailable, use the compact local registry generated from `packages/ui/registry/generated-app-components.json` or the runtime `shadcn_registry` helper. If neither source is available, stop with a structured guidance error instead of emitting TSX.
16
+ 5. Generate TSX using approved shadcn-compatible primitives from `@thinkwork/ui` plus approved domain primitives from `@thinkwork/computer-stdlib`. You must use approved shadcn primitives for their roles. Hand-rolled replacements for cards, tabs, badges, buttons, tables, selects, form controls, dialogs, sheets, separators, tooltips, scroll areas, charts, or maps are rejected.
17
+ 6. Never embed Theme CSS, `<style>` tags, or app-owned theme objects in artifact metadata or TSX. App style is tenant-controlled host configuration. Build with semantic shadcn token classes and chart variables so the host-injected style controls the rendered iframe.
18
+ 7. Export a deterministic `refresh()` function whenever the result should be refreshable. Refresh must rerun saved source queries or deterministic transforms; it must not reinterpret the whole user request.
19
+ 8. Call `preview_app` before responding. Pass at least `name`, `files`, and `metadata`. Metadata must include `threadId`, `prompt`, `agentVersion`, `modelId`, `uiRegistryVersion`, `uiRegistryDigest`, and `shadcnMcpToolCalls` when available. Use `["local_registry_fallback"]` for `shadcnMcpToolCalls` when MCP was unavailable but the local registry was consulted.
20
+ 9. Call `save_app` only after the user explicitly asks to save or keep the preview. Save metadata must preserve the preview's registry, data-provenance, prompt, source, agent, and model metadata. It must not include theme CSS.
21
+ 10. After `preview_app` returns `ok`, answer concisely with what is ready to inspect. After `save_app` returns `ok`, answer concisely with what was saved and the `/artifacts/{appId}` route.
22
+ 11. Never use emoji as icons, status markers, bullets, tabs, headings, empty states, or data labels in generated apps. Use `lucide-react` named icon imports only when an icon materially improves scannability; otherwise use plain text, `Badge`, or approved registry components.
23
+
24
+ ## Host Chrome And Runtime
25
+
26
+ The Computer host renders generated Apps inside host-provided Artifact chrome: title, `App` label, open-full action, refresh action placement, route header, iframe wrapper, and future provenance/version controls. Your TSX should render only the app body or canvas content.
27
+
28
+ Do not create an outer artifact card, duplicate route header, `App` badge, "Open full" button, refresh recipe, source coverage, evidence, or provenance panel unless the user explicitly asks for that in the app body.
29
+
30
+ Generated Apps run in the sandboxed iframe runtime for both preview and save. Do not assume access to parent app globals, credentials, cookies, local storage, window navigation, network, dynamic imports, or browser APIs outside the supported stdlib surface.
31
+
32
+ ## App Shape
33
+
34
+ Use `App.tsx` as the main file. Export one default React component. Prefer concise component-local data transforms over large abstractions. Do not use network calls, browser globals, dynamic imports, `eval`, or raw HTML injection.
35
+
36
+ ## Component System
37
+
38
+ Generated dashboards must look like ThinkWork product UI, not raw HTML. The shadcn registry is the source of truth for approved generated-app components, examples, roles, and substitutions. Import structure and controls from `@thinkwork/ui`: `Card`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `Badge`, `Button`, `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent`, `Table`, `TableHeader`, `TableBody`, `TableRow`, `TableHead`, `TableCell`, `Select`, `Checkbox`, `Switch`, `Tooltip`, `Dialog`, `Sheet`, `ScrollArea`, `Separator`, `ChartContainer`, `Combobox`, and `DropdownMenu` where applicable.
39
+
40
+ Use `@thinkwork/computer-stdlib` for semantic dashboard primitives such as `AppHeader`, `KpiStrip`, `BarChart`, `StackedBarChart`, `DataTable`, `MapView`, and formatters. It is fine to combine stdlib charts with `@thinkwork/ui` layout chrome.
41
+
42
+ Use shadcn semantic tokens, not one-off colors: `bg-background`, `text-foreground`, `bg-card`, `text-card-foreground`, `border-border`, `text-muted-foreground`, `bg-muted`, `text-primary`, `text-destructive`, and chart colors from `var(--chart-1)` through `var(--chart-5)`. User-uploaded shadcn Create Theme CSS is injected by the host from tenant app style settings; do not paste a `<style>` tag or theme metadata into `App.tsx`.
43
+
44
+ Do not use emoji icons. Use `lucide-react` named icon imports only when an icon materially improves scannability; otherwise use plain text, `Badge`, or approved registry components.
45
+
46
+ Do not create adjacent plain text tabs, raw `<button>` controls, raw `<table>` layouts for tabular data, raw form controls, inline-pill badges, chart wrappers outside `ChartContainer`, or bespoke card CSS. Tabs must use `Tabs`/`TabsList`/`TabsTrigger`; data grids must use `DataTable` or `Table`; status labels must use `Badge`; general metric panels may use `Card` or `KpiStrip`; charts must use the approved chart surface; maps must use `MapView`.
47
+
48
+ For CRM, sales, pipeline, opportunity, account-risk, stage-exposure, stale-activity, or LastMile dashboards, top-level KPIs must use `KpiStrip` from `@thinkwork/computer-stdlib`. Do not hand-compose KPI metrics as individual full-width `Card` components, do not stack KPI cards vertically, and do not rely on generated `grid-cols-*` or responsive `md:grid-cols-*` Tailwind layout classes for the core dashboard structure. Use compiled stdlib primitives for the dashboard shape and reserve `Card` for chart, table, or detail sections.
49
+
50
+ Good apps include:
51
+
52
+ - Focused body content that starts at the useful work, not wrapper chrome.
53
+ - `KpiStrip` for CRM dashboard key totals.
54
+ - Charts or tables that make comparison easy.
55
+ - Empty, partial, and failed-source states proportional to the requested task.
56
+
57
+ Dashboard apps must be dashboard-shaped, not prose-only markdown reports. Do not save a dashboard artifact that is primarily a prose report, markdown summary, or stack of text-only cards. A useful dashboard should show at least one meaningful visual comparison through a chart, table, map, timeline, or other structured UI surface.
58
+
59
+ ## Maps
60
+
61
+ When the user asks for a map (locations, regions, routes, geographic comparisons), use `MapView` from `@thinkwork/computer-stdlib`. **Do NOT embed an OpenStreetMap.org iframe, do NOT roll your own `react-leaflet` `<MapContainer>`, and do NOT enable `scrollWheelZoom` — `MapView` handles the tile provider, theming, default-icon bundler fix, and scroll-trap defaults correctly.** It uses Mapbox tiles when `VITE_MAPBOX_PUBLIC_TOKEN` is set (light/dark style swap from `useTheme`) and falls back to OpenStreetMap tiles when unset.
62
+
63
+ Pass `fit` (one of `{type: "country", code: "<ISO-3166-1-alpha-2>"}`, `{type: "bbox", bounds: [[lat,lng],[lat,lng]]}`, or `{type: "auto"}`) plus optional `markers`, `polylines`, and `geojson` arrays. See `@thinkwork/computer-stdlib/MapView` for the full prop shape.
64
+
65
+ ## Preview And Save
66
+
67
+ The first useful result should be an unsaved preview. `preview_app` validates and renders the same TSX payload shape that `save_app` persists later, using the same generated-app policy. Do not save every preview as a durable artifact row.
68
+
69
+ Use only real available data, partial real data, or honest empty states. Do not invent CRM accounts, customers, metrics, events, opportunities, locations, or evidence to make a preview look complete. Missing or partial inputs should produce a runnable app with proportional empty states and concise limitations.
70
+
71
+ When the user asks to save, promote the preview by calling `save_app` with the same files and provenance metadata. Include the preview's `uiRegistryVersion`, `uiRegistryDigest`, and `shadcnMcpToolCalls` or `["local_registry_fallback"]` so the saved artifact records which shadcn registry source shaped the TSX.
72
+
73
+ ## Composing With Domain Skills
74
+
75
+ Domain skills like `crm-dashboard`, `research-dashboard`, and `map-artifact` add their own layout, component, and data-shape guidance on top of this skill. When one of them is in play, follow its guidance for layout, top-level KPIs, chart choices, and data shape — and use this skill only for the artifact mechanics (component lookups, `preview_app`, `save_app`, validation, registry policy). Do not duplicate or override the domain skill's structure with a generic dashboard layout.
76
+
77
+ ## Missing Data
78
+
79
+ Missing data is not a reason to stop before creating the preview. Create a runnable app that handles gaps gracefully, then ask for source setup, approval, or save confirmation as a follow-up when needed.
@@ -0,0 +1,166 @@
1
+ # CRM Dashboard Recipe
2
+
3
+ Use this reference when the user asks for a CRM, sales pipeline, opportunity, account-risk, stage-exposure, stale-activity, or LastMile dashboard app.
4
+
5
+ This file is retained as the Artifact Builder compatibility reference. The published `crm-dashboard` runbook owns orchestration and phase sequencing; this reference supplies the dashboard data shape, artifact layout, refresh contract, and `save_app` metadata for legacy prompts or active runbook produce phases.
6
+
7
+ The goal is a saved, reusable app. Do not stop at analysis prose. Normalize the available data first, generate the app source second, then call `save_app` directly.
8
+
9
+ The quality bar is an operational CRM dashboard, not a formatted report. The app should resemble a dense LastMile-style sales dashboard: compact header and source/status badges, KPI strip, visual pipeline/risk comparisons, sortable or scannable entity rows, and restrained color accents for value, risk, stale activity, and success.
10
+
11
+ Do not use emoji as icons, status markers, bullets, tab labels, headings, empty states, or data values. When an icon is useful, import it from `lucide-react`; otherwise use plain text or styled badges.
12
+
13
+ ## Source Discovery
14
+
15
+ Use the best sources available in this order:
16
+
17
+ 1. Thread context and any attached or already retrieved CRM rows.
18
+ 2. Available CRM, connector, MCP, context, workspace, memory, or Hindsight tools.
19
+ 3. Email, calendar, and web context when the prompt asks for stale activity, next meetings, or external account risk.
20
+ 4. A small demo or fixture-shaped dataset only when live sources are missing. Make limitations visible only when they materially affect the displayed result.
21
+
22
+ Missing live data is not a blocker. The app should still run and should stay focused on the requested dashboard rather than rendering provenance panels.
23
+
24
+ ## Canonical Data Shape
25
+
26
+ Normalize source results into `CrmDashboardData` before writing TSX. Keep this shape stable even when some arrays are empty.
27
+
28
+ type SourceStatus = "success" | "partial" | "failed";
29
+ type RiskLevel = "high" | "medium" | "low";
30
+
31
+ interface CrmDashboardData {
32
+ snapshot: {
33
+ title: string;
34
+ summary: string;
35
+ generatedAt: string;
36
+ accountFilter?: string;
37
+ };
38
+ kpis: Array<{
39
+ id: string;
40
+ label: string;
41
+ value: string;
42
+ detail?: string;
43
+ tone?: "default" | "risk" | "success";
44
+ }>;
45
+ stageExposure: Array<{
46
+ label: string;
47
+ value: number;
48
+ count: number;
49
+ }>;
50
+ staleActivity: Array<{
51
+ label: string;
52
+ value: number;
53
+ count: number;
54
+ }>;
55
+ topRisks: Array<{
56
+ id: string;
57
+ opportunity: string;
58
+ account: string;
59
+ stage: string;
60
+ amount: number;
61
+ lastActivity?: string;
62
+ risk: RiskLevel;
63
+ reason: string;
64
+ nextStep?: string;
65
+ }>;
66
+ opportunities: Array<{
67
+ id?: string;
68
+ opportunity: string;
69
+ account: string;
70
+ stage: string;
71
+ amount: number;
72
+ owner?: string;
73
+ closeDate?: string;
74
+ lastActivity?: string;
75
+ risk?: RiskLevel;
76
+ }>;
77
+ refreshNote?: string;
78
+ }
79
+
80
+ ## App Layout
81
+
82
+ Build one responsive app that fits the available horizontal space with `w-full min-w-0 max-w-[1280px]`. Do not create horizontal page scrolling. Prefer stacked or wrapped layouts on narrow widths.
83
+
84
+ The host already provides Artifact chrome, including the route title, `App` label, full-screen action, refresh action placement, and sandboxed iframe wrapper. Render the dashboard body only; do not add a duplicate app shell, route header, evidence panel, source coverage panel, or refresh recipe unless the user explicitly requests it.
85
+
86
+ Required sections:
87
+
88
+ - Body intro or context row only when it helps interpret the dashboard.
89
+ - KPIs: total pipeline, high-risk exposure, stale opportunity count, and next-meeting or source-health count when available.
90
+ - Stage exposure: a bar chart or stacked bar chart from `stageExposure`.
91
+ - Stale activity: a chart or compact table from `staleActivity`.
92
+ - Top risks: a ranked table or compact list from `topRisks`, sorted by risk and exposure.
93
+ - Opportunities: a sortable/scannable table from `opportunities`.
94
+
95
+ Use shadcn-compatible primitives from `@thinkwork/ui` for layout and controls: `Card`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `Badge`, `Button`, `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent`, `Table`, `TableHeader`, `TableBody`, `TableRow`, `TableHead`, `TableCell`, `ScrollArea`, and `Separator` where applicable.
96
+
97
+ Use `@thinkwork/computer-stdlib` primitives where they fit: `AppHeader`, `KpiStrip`, `BarChart`, `StackedBarChart`, `DataTable`, and formatters such as `formatCurrency`.
98
+
99
+ Theme requirements:
100
+
101
+ - Do not preserve Theme CSS in artifact metadata. Shadcn Create Theme CSS is tenant app style controlled by the host renderer.
102
+ - Use semantic shadcn token classes and chart variables: `bg-background`, `text-foreground`, `bg-card`, `text-card-foreground`, `border-border`, `text-muted-foreground`, `bg-muted`, and `var(--chart-1)` through `var(--chart-5)`.
103
+ - Do not paste a `<style>` tag into `App.tsx`, hard-code black chart marks on dark surfaces, or invent a separate palette that fights the uploaded theme.
104
+
105
+ Do not hand-roll cards, tabs, badges, buttons, or tables. Tabs must use `Tabs`/`TabsList`/`TabsTrigger`; tabular data must use `DataTable` or `Table`; status labels must use `Badge`; top-level KPIs must use `KpiStrip` from `@thinkwork/computer-stdlib`. Use `Card` for chart, table, or detail sections, not as a substitute for the KPI strip.
106
+
107
+ Do not create a vertical stack of full-width KPI cards. Do not rely on generated `grid-cols-*` or responsive `md:grid-cols-*` Tailwind classes for the core dashboard layout; those classes may not exist in the iframe CSS bundle. Use the compiled stdlib primitives (`KpiStrip`, `BarChart`, `StackedBarChart`, `DataTable`) for dashboard structure.
108
+
109
+ Do not use emoji icons. Use `lucide-react` icons when an icon is needed.
110
+
111
+ Use the stdlib prop names directly:
112
+
113
+ - `KpiStrip` receives `cards={data.kpis}`.
114
+ - `DataTable` receives `columns={...}` and `rows={data.opportunities}`.
115
+ - `BarChart` receives `data={data.stageExposure}` or `data={data.staleActivity}`.
116
+
117
+ Before saving, reject the draft and revise it if any of these are true:
118
+
119
+ - The app reads like a markdown report or prose summary.
120
+ - Core metrics are shown as paragraphs instead of visual comparisons.
121
+ - It lacks a KPI strip, chart, or table.
122
+ - Top-level KPIs are hand-composed as individual metric `Card` components.
123
+ - The core dashboard layout depends on `grid-cols-*` or responsive `md:grid-cols-*` class names.
124
+ - It uses emoji characters for icons or labels.
125
+ - It duplicates host chrome such as an outer artifact frame, `App` badge, open-full control, or refresh controls supplied by the host.
126
+
127
+ ## Empty And Partial States
128
+
129
+ If no CRM opportunities are available, still save a runnable app. Show empty KPI values, an empty table, and a concise empty state.
130
+
131
+ If CRM rows exist but email, calendar, or web signals are missing, keep the CRM sections populated. Do not add source coverage or evidence panels.
132
+
133
+ Never hide uncertainty, but keep it proportional: use a short note near the affected metric only when it changes how the user should read the dashboard.
134
+
135
+ ## Refresh Contract
136
+
137
+ Export `refresh()` when the dashboard can be refreshed. It must return deterministic data shaped like this:
138
+
139
+ export async function refresh() {
140
+ return {
141
+ data: refreshedCrmDashboardData,
142
+ sourceStatuses: { crm: "success" },
143
+ };
144
+ }
145
+
146
+ Refresh should rerun saved source queries or deterministic transforms. It must not reinterpret the whole prompt or create a different app.
147
+
148
+ The artifact host renders refresh actions in its top-bar actions menu. Do not render a refresh control, refresh timeline, recipe explainer, or `RefreshBar` inside the app unless the user explicitly asks for a custom in-artifact refresh experience.
149
+
150
+ ## Save Contract
151
+
152
+ Call `save_app` directly after generating the files. Do not delegate saving to another agent or tool.
153
+
154
+ Use:
155
+
156
+ - `name`: a concise user-facing dashboard name.
157
+ - `files`: at least `App.tsx` with default export and `refresh()`.
158
+ - `metadata.kind`: `computer_applet`.
159
+ - `metadata.threadId`: current thread id when available.
160
+ - `metadata.prompt`: the user prompt.
161
+ - `metadata.recipe`: `crm-dashboard`.
162
+ - `metadata.recipeVersion`: `1`.
163
+ - `metadata.dataShape`: `CrmDashboardData`.
164
+ - Do not include theme CSS or app-owned theme objects in metadata.
165
+
166
+ Only tell the user the artifact exists after `save_app` returns `ok`, `persisted`, and an `appId`. Link to `/artifacts/{appId}`.
@@ -0,0 +1,120 @@
1
+ ---
2
+ name: automation-loop-designer
3
+ description: Design a ThinkWork Automation from a prompt by interviewing for goal, Space, trigger, verification, judge settings, stop guards, and privacy boundaries, then emit a reviewable AutomationDraft.
4
+ license: MIT
5
+ metadata:
6
+ adaptedFrom: https://github.com/ksimback/looper
7
+ adaptedFromLicense: MIT
8
+ adaptedFromAuthor: Kevin Simback
9
+ ---
10
+
11
+ # Automation Loop Designer
12
+
13
+ Use this skill when a user wants to create, improve, or review a ThinkWork
14
+ Automation. The output is a reviewable `AutomationDraft` for ThinkWork's durable
15
+ Automation runtime. Do not emit a Looper Python runner, Claude slash command,
16
+ or file-scaffolded external loop unless the user explicitly asks for a separate
17
+ portable design artifact.
18
+
19
+ This skill adapts design-coaching ideas from Kevin Simback's Looper
20
+ (`https://github.com/ksimback/looper`, MIT license): coached goals, typed
21
+ verification, review gates, stop guards, state/logging visibility, and explicit
22
+ privacy boundaries. ThinkWork remains the orchestrator.
23
+
24
+ ## Interview Flow
25
+
26
+ Ask only the questions needed to make the draft reviewable. Prefer one compact
27
+ question at a time when the user's intent is unclear.
28
+
29
+ 1. Goal: what outcome should exist after each run?
30
+ 2. Space: where should the execution thread live?
31
+ 3. Trigger: manual, schedule, API, webhook, app event, or future workflow.
32
+ 4. Verification: what evidence proves the run is good enough?
33
+ 5. Judge: self-check, human approval, model judge, reviewer agent, eval
34
+ threshold, or external callback.
35
+ 6. Control: max iterations, runtime/token/budget caps, no-progress stops, and
36
+ failure behavior.
37
+ 7. Privacy: which external systems or humans may see the prompt, evidence, or
38
+ review context.
39
+
40
+ ## Design Rules
41
+
42
+ - Treat the user's prompt as the Automation's main artifact. Do not bury it
43
+ behind internal AgentLoop jargon.
44
+ - If a crisp done state exists, write concrete `goal.completionCriteria` and
45
+ matching `judge.criteria`.
46
+ - If the goal is useful but not yet crisply checkable, set
47
+ `source.goalInference` to `runtime_inferred` and include a plain-language
48
+ note about what should be clarified later.
49
+ - Prefer programmatic checks when the Automation naturally has measurable
50
+ outputs. Use judge or human checks for qualitative work.
51
+ - Keep reviewer and judge roles distinct. A reviewer gives notes; a judge
52
+ returns a verdict.
53
+ - Require at least two stop guards for recurring work: an iteration/runtime cap
54
+ and a no-progress or budget stop.
55
+ - Name the execution boundary. For ThinkWork v1 this is usually one selected
56
+ Space plus a first-class thread created by the Automation run.
57
+ - Do not ask the user to select a worker agent in v1. Use the main ThinkWork
58
+ Agent unless an operator is in Advanced mode.
59
+
60
+ ## AutomationDraft Shape
61
+
62
+ Return a JSON object with this shape when the user is ready to review:
63
+
64
+ ```json
65
+ {
66
+ "name": "Readable Automation name",
67
+ "prompt": "The instruction the Automation will run",
68
+ "space": {
69
+ "id": "selected-space-id-or-null",
70
+ "name": "selected Space name or requested Space"
71
+ },
72
+ "trigger": {
73
+ "family": "manual",
74
+ "scheduleExpression": null,
75
+ "timezone": "UTC"
76
+ },
77
+ "goal": {
78
+ "objective": "Normalized objective",
79
+ "completionCriteria": ["Concrete criterion, if known"]
80
+ },
81
+ "judge": {
82
+ "mode": "self_check",
83
+ "criteria": ["Criterion the judge can inspect"]
84
+ },
85
+ "policy": {
86
+ "maxIterations": 1,
87
+ "maxRuntimeMinutes": 30,
88
+ "maxTokens": 100000,
89
+ "failBehavior": "return_blocker"
90
+ },
91
+ "source": {
92
+ "creationMode": "chat",
93
+ "goalInference": "explicit",
94
+ "designerSkill": "automation-loop-designer"
95
+ }
96
+ }
97
+ ```
98
+
99
+ If the draft uses runtime-inferred criteria, keep the Automation valid by
100
+ including a fallback completion criterion in the review summary:
101
+
102
+ ```text
103
+ The agent produces a useful response or next step for the automation prompt.
104
+ ```
105
+
106
+ ## Review Summary
107
+
108
+ Before the Automation is saved, summarize:
109
+
110
+ - Prompt
111
+ - Space
112
+ - Trigger
113
+ - Done condition or runtime-inferred fallback
114
+ - Judge mode
115
+ - Stop guards
116
+ - Privacy or external context notes
117
+
118
+ Ask for explicit confirmation before save. After confirmation, the host system
119
+ will persist the draft through ThinkWork's Automation save path and link this
120
+ builder thread as setup history.