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.
- package/README.md +42 -38
- package/dist/{api-client-ASJWIG3Z.js → api-client-4VT3FWOH.js} +1 -1
- package/dist/{chunk-JEHV35EU.js → chunk-H7AB42ES.js} +340 -30
- package/dist/cli.js +22157 -9229
- package/dist/commands/enterprise/templates/deploy-repo/.github/workflows/deploy.yml +17 -6
- package/dist/commands/enterprise/templates/deploy-repo/docs/runbook.md +81 -9
- package/dist/commands/enterprise/templates/deploy-repo/scripts/apply-release.mjs +183 -21
- package/dist/commands/enterprise/templates/deploy-repo/scripts/smoke.mjs +1 -2
- package/dist/commands/enterprise/templates/deploy-repo/terraform/main.tf +286 -0
- package/dist/drizzle/0000_petite_marvel_apes.sql +1188 -0
- package/dist/drizzle/0001_milky_surge.sql +103 -0
- package/dist/drizzle/0002_aberrant_mattie_franklin.sql +41 -0
- package/dist/drizzle/0003_exotic_ogun.sql +3 -0
- package/dist/drizzle/0004_glamorous_magneto.sql +2 -0
- package/dist/drizzle/0005_ancient_nocturne.sql +2 -0
- package/dist/drizzle/0006_new_colonel_america.sql +2 -0
- package/dist/drizzle/0007_unique_external_task_id.sql +31 -0
- package/dist/drizzle/0008_external_task_id_column.sql +43 -0
- package/dist/drizzle/0009_evaluations.sql +64 -0
- package/dist/drizzle/0010_eval_agent_template.sql +2 -0
- package/dist/drizzle/0011_eval_run_template.sql +2 -0
- package/dist/drizzle/0012_eval_seed_unique.sql +16 -0
- package/dist/drizzle/0013_motionless_white_queen.sql +140 -0
- package/dist/drizzle/0014_wiki_aggregation.sql +11 -0
- package/dist/drizzle/0015_pg_trgm_alias_title_indexes.sql +9 -0
- package/dist/drizzle/0016_wiki_schema_drops.sql +24 -0
- package/dist/drizzle/0017_wiki_places.sql +46 -0
- package/dist/drizzle/0018_agent_workspace_overlay.sql +26 -0
- package/dist/drizzle/0018_cool_firebird.sql +24 -0
- package/dist/drizzle/0018_skill_runs.sql +84 -0
- package/dist/drizzle/0019_condemned_dragon_man.sql +95 -0
- package/dist/drizzle/0019_webhook_skill_runs.sql +58 -0
- package/dist/drizzle/0020_crazy_the_anarchist.sql +9 -0
- package/dist/drizzle/0020_mutation_idempotency.sql +64 -0
- package/dist/drizzle/0021_crm_work_links.sql +76 -0
- package/dist/drizzle/0021_skill_runs_completion_hmac.sql +33 -0
- package/dist/drizzle/0022_add_billing_tables.sql +70 -0
- package/dist/drizzle/0022_seed_thinkwork_admin_permissions.sql +160 -0
- package/dist/drizzle/0022_stripe_billing_indexes.sql +48 -0
- package/dist/drizzle/0023_tenants_deactivation.sql +27 -0
- package/dist/drizzle/0024_tenant_mcp_admin_keys.sql +63 -0
- package/dist/drizzle/0025_v1_agent_architecture.sql +182 -0
- package/dist/drizzle/0026_thread_turns_add_kind.sql +28 -0
- package/dist/drizzle/0027_capability_catalog_and_manifests.sql +219 -0
- package/dist/drizzle/0028_aws_s3_extension.sql +26 -0
- package/dist/drizzle/0029_collapse_execution_types.sql +42 -0
- package/dist/drizzle/0030_retire_composition_primitives.sql +48 -0
- package/dist/drizzle/0031_thread_cleanup_drops.sql +131 -0
- package/dist/drizzle/0032_add_browser_automation_template_config.sql +24 -0
- package/dist/drizzle/0033_agent_operation_leases.sql +32 -0
- package/dist/drizzle/0034_agent_workspace_events.sql +116 -0
- package/dist/drizzle/0035_workspace_review_decisions.sql +19 -0
- package/dist/drizzle/0036_user_scoped_memory_wiki.sql +152 -0
- package/dist/drizzle/0037_user_profile_operating_model.sql +34 -0
- package/dist/drizzle/0042_agent_runtime_selector.sql +41 -0
- package/dist/drizzle/0043_wiki_search_tsv_tokenization.sql +48 -0
- package/dist/drizzle/0044_add_web_search_template_config.sql +7 -0
- package/dist/drizzle/0045_add_send_email_template_config.sql +7 -0
- package/dist/drizzle/0046_tenant_mcp_context_tools.sql +26 -0
- package/dist/drizzle/0047_add_context_engine_template_config.sql +7 -0
- package/dist/drizzle/0048_tenant_context_provider_settings.sql +22 -0
- package/dist/drizzle/0050_brain_v0_entity_subtype.sql +29 -0
- package/dist/drizzle/0051_brain_v0_tenant_entity_pages.sql +170 -0
- package/dist/drizzle/0052_brain_v0_external_refs.sql +41 -0
- package/dist/drizzle/0053_brain_v0_unresolved_mentions_subtype.sql +48 -0
- package/dist/drizzle/0054_wiki_compile_jobs_input.sql +28 -0
- package/dist/drizzle/0055_routines_stepfunctions_substrate.sql +202 -0
- package/dist/drizzle/0056_routine_step_events_dedup_idx.sql +25 -0
- package/dist/drizzle/0057_archive_legacy_python_routines.sql +36 -0
- package/dist/drizzle/0058_routines_visibility_and_owning_agent.sql +61 -0
- package/dist/drizzle/0061_routine_execution_asl_version_id.sql +29 -0
- package/dist/drizzle/0062_migrate_pi_to_flue.sql +110 -0
- package/dist/drizzle/0063_threads_session_data.sql +23 -0
- package/dist/drizzle/0064_tenant_credentials.sql +65 -0
- package/dist/drizzle/0067_thinkwork_computers_phase_one.sql +174 -0
- package/dist/drizzle/0068_drop_system_workflows_and_activation.sql +115 -0
- package/dist/drizzle/0069_compliance_schema.sql +364 -0
- package/dist/drizzle/0070_compliance_aurora_roles.sql +171 -0
- package/dist/drizzle/0072_threads_computer_ownership.sql +24 -0
- package/dist/drizzle/0073_compliance_tenant_anchor_state.sql +105 -0
- package/dist/drizzle/0074_compliance_event_hash_index.sql +49 -0
- package/dist/drizzle/0075_scheduled_jobs_computer_ownership.sql +27 -0
- package/dist/drizzle/0076_scheduled_jobs_marco_backfill.sql +69 -0
- package/dist/drizzle/0077_computers_primary_agent_id.sql +38 -0
- package/dist/drizzle/0078_tenant_customize_catalog.sql +46 -0
- package/dist/drizzle/0079_seed_tenant_customize_catalog.sql +53 -0
- package/dist/drizzle/0081_routines_catalog_slug.sql +42 -0
- package/dist/drizzle/0082_messages_parts_jsonb.sql +52 -0
- package/dist/drizzle/0083_computer_runbooks.sql +103 -0
- package/dist/drizzle/0084_artifacts_favorited_at.sql +32 -0
- package/dist/drizzle/0085_seed_thinkwork_computer_default_template.sql +46 -0
- package/dist/drizzle/0086_update_default_template_models.sql +19 -0
- package/dist/drizzle/0087_retire_oss_connectors.sql +77 -0
- package/dist/drizzle/0088_compliance_event_types_finance_pilot.sql +37 -0
- package/dist/drizzle/0089_remove_maniflow_eval_seeds.sql +81 -0
- package/dist/drizzle/0089_wiki_schema_extraction.sql +315 -0
- package/dist/drizzle/0090_brain_schema_extraction.sql +274 -0
- package/dist/drizzle/0091_drop_wiki_brain_compat_views.sql +118 -0
- package/dist/drizzle/0092_finish_oss_connector_retirement.sql +97 -0
- package/dist/drizzle/0093_eval_runs_scheduled_job_id.sql +23 -0
- package/dist/drizzle/0094_slack_workspace_app.sql +140 -0
- package/dist/drizzle/0095_eval_runs_computer_id.sql +22 -0
- package/dist/drizzle/0096_true_redteam_eval_seed_cleanup.sql +67 -0
- package/dist/drizzle/0097_shared_computers.sql +191 -0
- package/dist/drizzle/0098_business_ontology.sql +587 -0
- package/dist/drizzle/0099_thread_idle_learning.sql +145 -0
- package/dist/drizzle/0100_ontology_gated_brain_dynamic_subtypes.sql +7 -0
- package/dist/drizzle/0101_ontology_gated_unresolved_mentions_dynamic_subtypes.sql +7 -0
- package/dist/drizzle/0102_wiki_brain_owner_repair.sql +87 -0
- package/dist/drizzle/0103_brain_section_source_trigger_repair.sql +75 -0
- package/dist/drizzle/0104_expand_seed_ontology_for_user_memory.sql +166 -0
- package/dist/drizzle/0105_spaces_domain.sql +349 -0
- package/dist/drizzle/0106_expand_seed_ontology_for_triples.sql +173 -0
- package/dist/drizzle/0106_space_threads_participants.sql +197 -0
- package/dist/drizzle/0107_linked_task_mirror.sql +245 -0
- package/dist/drizzle/0108_message_mentions.sql +95 -0
- package/dist/drizzle/0109_space_owned_threads.sql +217 -0
- package/dist/drizzle/0110_thread_participant_read_state.sql +21 -0
- package/dist/drizzle/0111_agents_tenant_name_unique.sql +38 -0
- package/dist/drizzle/0112_recast_spaces_as_contextual_workrooms.sql +138 -0
- package/dist/drizzle/0113_agents_own_runtime_fields.sql +48 -0
- package/dist/drizzle/0114_migrate_templates_to_agents_and_spaces.sql +361 -0
- package/dist/drizzle/0115_remove_computer_eval_template_dependencies.sql +69 -0
- package/dist/drizzle/0116_backfill_thread_participants_access.sql +126 -0
- package/dist/drizzle/0117_space_access_mode.sql +40 -0
- package/dist/drizzle/0118_normalize_tenant_member_principal_type.sql +41 -0
- package/dist/drizzle/0119_space_knowledge_bases.sql +126 -0
- package/dist/drizzle/0120_space_automations.sql +58 -0
- package/dist/drizzle/0121_drop_computer_runbooks.sql +26 -0
- package/dist/drizzle/0122_space_email_triggers.sql +24 -0
- package/dist/drizzle/0123_single_platform_agent_and_overrides.sql +58 -0
- package/dist/drizzle/0124_thread_turns_finalized_at.sql +17 -0
- package/dist/drizzle/0125_drop_space_agent_assignments.sql +42 -0
- package/dist/drizzle/0126_migrate_flue_to_pi.sql +42 -0
- package/dist/drizzle/0127_runtime_type_observability.sql +28 -0
- package/dist/drizzle/0128_drop_eval_test_cases_agent_id.sql +37 -0
- package/dist/drizzle/0129_drop_code_factory_tables.sql +43 -0
- package/dist/drizzle/0129_eval_results_system_prompt.sql +30 -0
- package/dist/drizzle/0130_drop_teams_and_team_id_columns.sql +54 -0
- package/dist/drizzle/0131_drop_skill_catalog_and_tenant_skills.sql +33 -0
- package/dist/drizzle/0132_drop_computer_tables.sql +31 -0
- package/dist/drizzle/0133_drop_seed_view_tombstones.sql +79 -0
- package/dist/drizzle/0133_thread_turns_system_prompt.sql +22 -0
- package/dist/drizzle/0134_drop_dead_agent_runtime_tables.sql +53 -0
- package/dist/drizzle/0135_native_checklist_linked_tasks.sql +48 -0
- package/dist/drizzle/0136_goal_ledger.sql +55 -0
- package/dist/drizzle/0136_space_email_trigger_status.sql +66 -0
- package/dist/drizzle/0137_thread_participant_pins.sql +25 -0
- package/dist/drizzle/0138_users_cognito_sub.sql +30 -0
- package/dist/drizzle/0139_mobile_turn_client_id.sql +23 -0
- package/dist/drizzle/0140_workspace_folder_names.sql +36 -0
- package/dist/drizzle/0141_eval_runs_desktop_pi_provenance.sql +31 -0
- package/dist/drizzle/0142_pi_only_agent_runtime.sql +61 -0
- package/dist/drizzle/0143_add_web_extract_builtin_config.sql +28 -0
- package/dist/drizzle/0144_skill_catalog_index.sql +40 -0
- package/dist/drizzle/0145_knowledge_graph_thread_ingest.sql +512 -0
- package/dist/drizzle/0146_knowledge_graph_source_scope.sql +413 -0
- package/dist/drizzle/0147_knowledge_graph_scope_trigger_qualification.sql +211 -0
- package/dist/drizzle/0148_user_cost_attribution.sql +171 -0
- package/dist/drizzle/0149_managed_mcp_servers.sql +64 -0
- package/dist/drizzle/0149_user_model_approvals.sql +89 -0
- package/dist/drizzle/0150_bootstrap_first_admin_claim.sql +11 -0
- package/dist/drizzle/0151_managed_deployments.sql +91 -0
- package/dist/drizzle/0152_agent_profiles.sql +81 -0
- package/dist/drizzle/0153_message_mentions_agent_profile.sql +9 -0
- package/dist/drizzle/0154_customer_deployment_sessions.sql +61 -0
- package/dist/drizzle/0155_tenant_model_catalog.sql +152 -0
- package/dist/drizzle/0156_bootstrap_credential_leases.sql +52 -0
- package/dist/drizzle/0157_knowledge_graph_observations_source.sql +79 -0
- package/dist/drizzle/0158_pending_user_questions.sql +80 -0
- package/dist/drizzle/0158_wiki_tenant_scope.sql +38 -0
- package/dist/drizzle/0159_agent_profiles_space_local.sql +49 -0
- package/dist/drizzle/0159_application_plugins.sql +193 -0
- package/dist/drizzle/0159_eval_scoring_version.sql +46 -0
- package/dist/drizzle/0160_compliance_event_types_plugins.sql +37 -0
- package/dist/drizzle/0160_eval_datasets.sql +75 -0
- package/dist/drizzle/0160_eval_results_thread_turn.sql +35 -0
- package/dist/drizzle/0161_eval_run_pinning.sql +54 -0
- package/dist/drizzle/0161_tenant_mcp_servers_plugin_source.sql +62 -0
- package/dist/drizzle/0162_eval_result_override.sql +49 -0
- package/dist/drizzle/0163_eval_replay_tool_allowlist.sql +50 -0
- package/dist/drizzle/0164_eval_replay_tool_override_mode.sql +52 -0
- package/dist/drizzle/0165_plugin_premium_entitlements.sql +153 -0
- package/dist/drizzle/0166_company_brain_substrate_contract.sql +386 -0
- package/dist/drizzle/0167_company_brain_artifact_manifest_runtime.sql +85 -0
- package/dist/drizzle/0168_eval_skill_gate.sql +44 -0
- package/dist/drizzle/0169_release_update_jobs.sql +67 -0
- package/dist/drizzle/0170_email_channel_plugin.sql +291 -0
- package/dist/drizzle/0171_linked_task_external_providers.sql +30 -0
- package/dist/drizzle/0172_email_channel_sendgrid_provider.sql +8 -0
- package/dist/drizzle/0173_auth_provider_resources.sql +83 -0
- package/dist/drizzle/0174_workos_auth_bridges.sql +37 -0
- package/dist/drizzle/0175_workos_auth_sessions.sql +38 -0
- package/dist/drizzle/0176_n8n_agent_step_runs.sql +107 -0
- package/dist/drizzle/0177_workflow_control_plane.sql +281 -0
- package/dist/drizzle/0178_workflow_backfill_existing_routines.sql +525 -0
- package/dist/drizzle/0179_tenant_goal_budget_settings.sql +21 -0
- package/dist/drizzle/0180_skill_drafts.sql +89 -0
- package/dist/drizzle/0181_skill_draft_publish_status.sql +21 -0
- package/dist/drizzle/0182_agent_loops.sql +260 -0
- package/dist/drizzle/0183_okf_artifact_manifests.sql +52 -0
- package/dist/drizzle/0184_skill_catalog_trust_cache.sql +35 -0
- package/dist/drizzle/0185_agent_loop_space.sql +16 -0
- package/dist/drizzle/0186_tenant_mcp_runtime_metadata.sql +10 -0
- package/dist/drizzle/0187_native_work_items.sql +220 -0
- package/dist/drizzle/0188_company_etl_plugin_rename.sql +99 -0
- package/dist/drizzle/0189_trace_cost_substrate.sql +247 -0
- package/dist/drizzle/0190_billing_export_reconciliation.sql +101 -0
- package/dist/drizzle/0191_open_engine_work_item_queue.sql +66 -0
- package/dist/drizzle/0192_work_item_labels.sql +44 -0
- package/dist/drizzle/0193_work_item_documents.sql +31 -0
- package/dist/drizzle/0194_memory_retain_attempts.sql +103 -0
- package/dist/drizzle/0194_work_item_comments.sql +35 -0
- package/dist/drizzle/0195_plugin_app_overlays.sql +45 -0
- package/dist/drizzle/0196_pi_extensions.sql +118 -0
- package/dist/drizzle/0197_eval_profiles.sql +150 -0
- package/dist/drizzle/0198_eval_runs_unstable.sql +27 -0
- package/dist/drizzle/0199_eval_runs_cost_partial.sql +27 -0
- package/dist/drizzle/meta/_journal.json +160 -0
- package/dist/plugins/README.md +162 -0
- package/dist/plugins/catalog/package.json +40 -0
- package/dist/plugins/catalog/scripts/build-catalog.ts +120 -0
- package/dist/plugins/catalog/scripts/generate-plugin-registry.ts +144 -0
- package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +86 -0
- package/dist/plugins/catalog/src/__tests__/catalog.test.ts +308 -0
- package/dist/plugins/catalog/src/__tests__/contracts.test.ts +861 -0
- package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +124 -0
- package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +120 -0
- package/dist/plugins/catalog/src/catalog.ts +434 -0
- package/dist/plugins/catalog/src/contracts.ts +1498 -0
- package/dist/plugins/catalog/src/index.ts +4 -0
- package/dist/plugins/catalog/src/plugin-package.ts +171 -0
- package/dist/plugins/catalog/src/registry/generated-first-party.ts +76 -0
- package/dist/plugins/catalog/src/registry/index.ts +1 -0
- package/dist/plugins/catalog/tsconfig.json +8 -0
- package/dist/plugins/company-brain/README.md +37 -0
- package/dist/plugins/company-brain/package.json +33 -0
- package/dist/plugins/company-brain/runtime/cognee/Dockerfile +11 -0
- package/dist/plugins/company-brain/smoke/cognee-managed-app-smoke.mjs +458 -0
- package/dist/plugins/company-brain/smoke/cognee-memory-cutover-smoke.mjs +539 -0
- package/dist/plugins/company-brain/smoke/company-brain-context-engine-smoke.mjs +312 -0
- package/dist/plugins/company-brain/smoke/company-brain-operations-smoke.mjs +449 -0
- package/dist/plugins/company-brain/smoke/company-brain-plugin-smoke.mjs +655 -0
- package/dist/plugins/company-brain/smoke/hindsight-memory-isolation-smoke.mjs +474 -0
- package/dist/plugins/company-brain/src/api/cognee-client.ts +896 -0
- package/dist/plugins/company-brain/src/api/cognee-cluster-identity.ts +49 -0
- package/dist/plugins/company-brain/src/api/cognee-memory-scope.ts +84 -0
- package/dist/plugins/company-brain/src/api/context-engine-provider.ts +888 -0
- package/dist/plugins/company-brain/src/api/migration.ts +665 -0
- package/dist/plugins/company-brain/src/deployment/cognee-managed-app.ts +396 -0
- package/dist/plugins/company-brain/src/index.ts +62 -0
- package/dist/plugins/company-brain/src/manifest.ts +112 -0
- package/dist/plugins/company-brain/terraform/cognee/README.md +263 -0
- package/dist/plugins/company-brain/terraform/cognee/main.tf +766 -0
- package/dist/plugins/company-brain/terraform/cognee/outputs.tf +144 -0
- package/dist/plugins/company-brain/terraform/cognee/variables.tf +402 -0
- package/dist/plugins/company-brain/test/api/cognee-client.test.ts +562 -0
- package/dist/plugins/company-brain/test/api/cognee-memory-scope.test.ts +74 -0
- package/dist/plugins/company-brain/test/api/context-engine-provider.test.ts +447 -0
- package/dist/plugins/company-brain/test/api/migration.test.ts +465 -0
- package/dist/plugins/company-brain/test/manifest.test.ts +95 -0
- package/dist/plugins/company-brain/tsconfig.json +8 -0
- package/dist/plugins/company-data/README.md +49 -0
- package/dist/plugins/company-data/package.json +21 -0
- package/dist/plugins/company-data/src/index.ts +30 -0
- package/dist/plugins/company-data/src/manifest.ts +26 -0
- package/dist/plugins/company-data/test/manifest.test.ts +116 -0
- package/dist/plugins/company-data/tsconfig.json +8 -0
- package/dist/plugins/company-etl/README.md +46 -0
- package/dist/plugins/company-etl/package.json +21 -0
- package/dist/plugins/company-etl/src/index.ts +29 -0
- package/dist/plugins/company-etl/src/manifest.ts +26 -0
- package/dist/plugins/company-etl/test/manifest.test.ts +108 -0
- package/dist/plugins/company-etl/tsconfig.json +8 -0
- package/dist/plugins/email-channel/README.md +41 -0
- package/dist/plugins/email-channel/package.json +22 -0
- package/dist/plugins/email-channel/src/index.ts +36 -0
- package/dist/plugins/email-channel/src/manifest.ts +44 -0
- package/dist/plugins/email-channel/src/provider-contract.ts +36 -0
- package/dist/plugins/email-channel/test/manifest.test.ts +119 -0
- package/dist/plugins/email-channel/tsconfig.json +8 -0
- package/dist/plugins/lastmile/README.md +50 -0
- package/dist/plugins/lastmile/package.json +23 -0
- package/dist/plugins/lastmile/smoke/lastmile-plugin-smoke.mjs +661 -0
- package/dist/plugins/lastmile/src/api/tasks-adapter.ts +572 -0
- package/dist/plugins/lastmile/src/discovery.fixture.ts +64 -0
- package/dist/plugins/lastmile/src/index.ts +46 -0
- package/dist/plugins/lastmile/src/manifest.ts +139 -0
- package/dist/plugins/lastmile/test/api/tasks-adapter.test.ts +266 -0
- package/dist/plugins/lastmile/test/discovery.test.ts +88 -0
- package/dist/plugins/lastmile/tsconfig.json +8 -0
- package/dist/plugins/n8n/README.md +201 -0
- package/dist/plugins/n8n/n8n-app/README.md +33 -0
- package/dist/plugins/n8n/n8n-app/package.json +23 -0
- package/dist/plugins/n8n/n8n-app/src/application-config.ts +45 -0
- package/dist/plugins/n8n/n8n-app/src/front-components/thinkwork-workflows.front-component.tsx +970 -0
- package/dist/plugins/n8n/n8n-app/src/lib/n8n-app-data.ts +190 -0
- package/dist/plugins/n8n/n8n-app/src/vite-env.d.ts +7 -0
- package/dist/plugins/n8n/n8n-app/tsconfig.json +15 -0
- package/dist/plugins/n8n/package.json +35 -0
- package/dist/plugins/n8n/runtime/Dockerfile +18 -0
- package/dist/plugins/n8n/runtime/n8n-task-runners.json +14 -0
- package/dist/plugins/n8n/runtime/n8n-task-runners.json.template +14 -0
- package/dist/plugins/n8n/runtime/package-lock.json +13 -0
- package/dist/plugins/n8n/runtime/package.json +7 -0
- package/dist/plugins/n8n/scripts/sync-thinkwork-app.mjs +268 -0
- package/dist/plugins/n8n/smoke/README.md +95 -0
- package/dist/plugins/n8n/smoke/n8n-agent-step-bridge-smoke.mjs +866 -0
- package/dist/plugins/n8n/smoke/n8n-integrated-app-smoke.mjs +262 -0
- package/dist/plugins/n8n/smoke/n8n-managed-app-smoke.mjs +409 -0
- package/dist/plugins/n8n/smoke/n8n-mcp-smoke.mjs +624 -0
- package/dist/plugins/n8n/src/deployment/image-build.ts +172 -0
- package/dist/plugins/n8n/src/deployment/managed-app.ts +429 -0
- package/dist/plugins/n8n/src/index.ts +79 -0
- package/dist/plugins/n8n/src/manifest.ts +403 -0
- package/dist/plugins/n8n/src/package-config.ts +186 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/SKILL.md +76 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/mcp-tooling.md +40 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/validation-and-handoff.md +40 -0
- package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/workflow-authoring.md +45 -0
- package/dist/plugins/n8n/terraform/n8n/README.md +113 -0
- package/dist/plugins/n8n/terraform/n8n/main.tf +918 -0
- package/dist/plugins/n8n/terraform/n8n/outputs.tf +124 -0
- package/dist/plugins/n8n/terraform/n8n/scripts/sync-database.py +250 -0
- package/dist/plugins/n8n/terraform/n8n/scripts/test_sync_database.py +55 -0
- package/dist/plugins/n8n/terraform/n8n/variables.tf +354 -0
- package/dist/plugins/n8n/test/image-build.test.ts +118 -0
- package/dist/plugins/n8n/test/integrated-app-contract.test.ts +353 -0
- package/dist/plugins/n8n/test/manifest.test.ts +278 -0
- package/dist/plugins/n8n/test/package-config.test.ts +57 -0
- package/dist/plugins/n8n/tsconfig.json +8 -0
- package/dist/plugins/sendgrid/README.md +30 -0
- package/dist/plugins/sendgrid/package.json +22 -0
- package/dist/plugins/sendgrid/src/index.ts +36 -0
- package/dist/plugins/sendgrid/src/manifest.ts +37 -0
- package/dist/plugins/sendgrid/src/provider-contract.ts +14 -0
- package/dist/plugins/sendgrid/test/manifest.test.ts +80 -0
- package/dist/plugins/sendgrid/tsconfig.json +8 -0
- package/dist/plugins/twenty/README.md +78 -0
- package/dist/plugins/twenty/package.json +27 -0
- package/dist/plugins/twenty/scripts/__tests__/sync-thinkwork-app.test.mjs +67 -0
- package/dist/plugins/twenty/scripts/sync-thinkwork-app.mjs +185 -0
- package/dist/plugins/twenty/scripts/wire-thinkwork-workflow.mjs +658 -0
- package/dist/plugins/twenty/smoke/twenty-managed-app-smoke.mjs +359 -0
- package/dist/plugins/twenty/smoke/twenty-mcp-oauth-smoke.mjs +574 -0
- package/dist/plugins/twenty/src/api/cutover.ts +209 -0
- package/dist/plugins/twenty/src/deployment/managed-app.ts +253 -0
- package/dist/plugins/twenty/src/index.ts +55 -0
- package/dist/plugins/twenty/src/manifest.ts +259 -0
- package/dist/plugins/twenty/terraform/twenty/README.md +97 -0
- package/dist/plugins/twenty/terraform/twenty/main.tf +829 -0
- package/dist/plugins/twenty/terraform/twenty/outputs.tf +79 -0
- package/dist/plugins/twenty/terraform/twenty/variables.tf +268 -0
- package/dist/plugins/twenty/test/api/cutover.test.ts +183 -0
- package/dist/plugins/twenty/test/manifest.test.ts +463 -0
- package/dist/plugins/twenty/tsconfig.json +9 -0
- package/dist/plugins/twenty/twenty-app/.nvmrc +1 -0
- package/dist/plugins/twenty/twenty-app/README.md +148 -0
- package/dist/plugins/twenty/twenty-app/package.json +30 -0
- package/dist/plugins/twenty/twenty-app/src/application-config.ts +44 -0
- package/dist/plugins/twenty/twenty-app/src/constants/universal-identifiers.ts +18 -0
- package/dist/plugins/twenty/twenty-app/src/default-role.ts +24 -0
- package/dist/plugins/twenty/twenty-app/src/front-components/thinkwork-settings.front-component.tsx +299 -0
- package/dist/plugins/twenty/twenty-app/src/logic-functions/thinkwork-webhook.logic-function.ts +354 -0
- package/dist/plugins/twenty/twenty-app/tsconfig.json +14 -0
- package/dist/plugins/twenty/twenty-app/yarn.lock +4144 -0
- package/dist/plugins/workos-auth/package.json +22 -0
- package/dist/plugins/workos-auth/src/index.ts +30 -0
- package/dist/plugins/workos-auth/src/manifest.ts +40 -0
- package/dist/plugins/workos-auth/src/provider-contract.ts +39 -0
- package/dist/plugins/workos-auth/test/manifest.test.ts +94 -0
- package/dist/plugins/workos-auth/tsconfig.json +8 -0
- package/dist/scripts/bootstrap-workspace.sh +162 -0
- package/dist/scripts/post-deploy.sh +290 -0
- package/dist/terraform/examples/greenfield/main.tf +903 -75
- package/dist/terraform/examples/greenfield/terraform.tfvars.example +67 -8
- package/dist/terraform/modules/app/agentcore-code-interpreter/Dockerfile.sandbox-base +2 -2
- package/dist/terraform/modules/app/agentcore-code-interpreter/README.md +8 -9
- package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/sitecustomize.py +227 -0
- package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/test_sitecustomize.py +277 -0
- package/dist/terraform/modules/app/agentcore-memory/README.md +6 -6
- package/dist/terraform/modules/app/agentcore-memory/main.tf +1 -1
- package/dist/terraform/modules/app/agentcore-memory/scripts/create_or_find_memory.sh +40 -9
- package/dist/terraform/modules/app/agentcore-pi/README.md +61 -0
- package/dist/terraform/modules/app/agentcore-pi/main.tf +453 -0
- package/dist/terraform/modules/app/agentcore-pi/outputs.tf +38 -0
- package/dist/terraform/modules/app/agentcore-pi/variables.tf +145 -0
- package/dist/terraform/modules/app/agentcore-platform/main.tf +83 -0
- package/dist/terraform/modules/app/agentcore-runtime/main.tf +9 -11
- package/dist/terraform/modules/app/appsync-subscriptions/main.tf +5 -1
- package/dist/terraform/modules/app/customer-domain/main.tf +483 -0
- package/dist/terraform/modules/app/deployment-control-plane/README.md +47 -0
- package/dist/terraform/modules/app/deployment-control-plane/buildspec.yml +24 -0
- package/dist/terraform/modules/app/deployment-control-plane/main.tf +614 -0
- package/dist/terraform/modules/app/deployment-control-plane/outputs.tf +54 -0
- package/dist/terraform/modules/app/deployment-control-plane/runner.py +4720 -0
- package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +3026 -0
- package/dist/terraform/modules/app/deployment-control-plane/variables.tf +96 -0
- package/dist/terraform/modules/app/hindsight-memory/README.md +25 -23
- package/dist/terraform/modules/app/hindsight-memory/main.tf +26 -2
- package/dist/terraform/modules/app/lambda-api/eval-fanout.tf +17 -50
- package/dist/terraform/modules/app/lambda-api/handlers.tf +1290 -679
- package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +933 -0
- package/dist/terraform/modules/app/lambda-api/main.tf +14 -527
- package/dist/terraform/modules/app/lambda-api/mcp-oauth.tf +3 -19
- package/dist/terraform/modules/app/lambda-api/outputs.tf +50 -6
- package/dist/terraform/modules/app/lambda-api/runtime-config.tf +163 -0
- package/dist/terraform/modules/app/lambda-api/slack-app-secrets.tf +3 -1
- package/dist/terraform/modules/app/lambda-api/stripe-secrets.tf +3 -1
- package/dist/terraform/modules/app/lambda-api/variables.tf +240 -53
- package/dist/terraform/modules/app/lambda-api/workspace-events.tf +2 -25
- package/dist/terraform/modules/app/ses-email/main.tf +143 -30
- package/dist/terraform/modules/app/static-site/main.tf +4 -3
- package/dist/terraform/modules/app/www-dns/main.tf +45 -5
- package/dist/terraform/modules/app/www-dns/outputs.tf +10 -0
- package/dist/terraform/modules/app/www-dns/variables.tf +24 -0
- package/dist/terraform/modules/data/aurora-postgres/main.tf +15 -1
- package/dist/terraform/modules/data/compliance-exports-bucket/main.tf +1 -1
- package/dist/terraform/modules/data/compliance-exports-bucket/variables.tf +6 -0
- package/dist/terraform/modules/foundation/cognito/main.tf +167 -11
- package/dist/terraform/modules/foundation/cognito/outputs.tf +5 -0
- package/dist/terraform/modules/foundation/cognito/variables.tf +110 -0
- package/dist/terraform/modules/foundation/vpc/main.tf +45 -3
- package/dist/terraform/modules/foundation/vpc/outputs.tf +20 -0
- package/dist/terraform/modules/foundation/vpc/variables.tf +18 -0
- package/dist/terraform/modules/thinkwork/README.md +71 -0
- package/dist/terraform/modules/thinkwork/main.tf +1325 -174
- package/dist/terraform/modules/thinkwork/outputs.tf +457 -24
- package/dist/terraform/modules/thinkwork/variables.tf +1169 -93
- package/dist/terraform/schema.graphql +82 -9
- package/dist/workspace-defaults/files/AGENTS.md +344 -0
- package/dist/workspace-defaults/files/CONTEXT.md +8 -0
- package/dist/workspace-defaults/files/GUARDRAILS.md +51 -0
- package/dist/workspace-defaults/files/MEMORY_GUIDE.md +65 -0
- package/dist/workspace-defaults/files/ROUTER.md +24 -0
- package/dist/workspace-defaults/files/SPACE.md +62 -0
- package/dist/workspace-defaults/files/TOOLS.md +65 -0
- package/dist/workspace-defaults/files/USER.md +40 -0
- package/dist/workspace-defaults/files/mcp.json +3 -0
- package/dist/workspace-defaults/files/memory/contacts.md +13 -0
- package/dist/workspace-defaults/files/memory/lessons.md +13 -0
- package/dist/workspace-defaults/files/memory/preferences.md +12 -0
- package/dist/workspace-defaults/files/skills/.gitkeep +1 -0
- package/dist/workspace-defaults/files/skills/artifact-builder/SKILL.md +79 -0
- package/dist/workspace-defaults/files/skills/artifact-builder/references/crm-dashboard.md +166 -0
- package/dist/workspace-defaults/files/skills/automation-loop-designer/SKILL.md +120 -0
- package/dist/workspace-defaults/files/skills/skill-creator/LICENSE.txt +202 -0
- package/dist/workspace-defaults/files/skills/skill-creator/SKILL.md +485 -0
- package/dist/workspace-defaults/files/skills/skill-creator/UPSTREAM.json +124 -0
- package/dist/workspace-defaults/files/skills/skill-creator/agents/analyzer.md +274 -0
- package/dist/workspace-defaults/files/skills/skill-creator/agents/comparator.md +202 -0
- package/dist/workspace-defaults/files/skills/skill-creator/agents/grader.md +223 -0
- package/dist/workspace-defaults/files/skills/skill-creator/assets/eval_review.html +146 -0
- package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/dist/workspace-defaults/files/skills/skill-creator/references/schemas.md +430 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/__init__.py +0 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/generate_report.py +326 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/improve_description.py +247 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/package_skill.py +136 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_eval.py +310 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_loop.py +328 -0
- package/dist/workspace-defaults/files/skills/skill-creator/scripts/utils.py +47 -0
- package/package.json +1 -1
- package/dist/terraform/modules/app/agentcore-flue/README.md +0 -58
- package/dist/terraform/modules/app/agentcore-flue/main.tf +0 -323
- package/dist/terraform/modules/app/agentcore-flue/outputs.tf +0 -23
- package/dist/terraform/modules/app/agentcore-flue/variables.tf +0 -97
- package/dist/terraform/modules/app/computer-runtime/README.md +0 -15
- package/dist/terraform/modules/app/computer-runtime/main.tf +0 -406
- package/dist/terraform/modules/app/computer-runtime/outputs.tf +0 -75
- package/dist/terraform/modules/app/computer-runtime/variables.tf +0 -66
|
@@ -0,0 +1,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,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 @@
|
|
|
1
|
+
|
|
@@ -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.
|