@wayai/cli 0.3.191 → 0.3.193

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/dist/index.js CHANGED
@@ -488,7 +488,7 @@ var init_sentry = __esm({
488
488
  }
489
489
  });
490
490
 
491
- // ../../packages/core/dist/chunk-FJKE7WIF.js
491
+ // ../../packages/core/dist/chunk-POL7B3EM.js
492
492
  function spokenLineField(label, description) {
493
493
  return { type: "text", label, maxLength: SPOKEN_LINE_MAX_CHARS, default: "", description };
494
494
  }
@@ -498,8 +498,8 @@ function byLowercaseName(a, b) {
498
498
  return x < y ? -1 : x > y ? 1 : 0;
499
499
  }
500
500
  var CALLER_LANGUAGE, TTS_VOICE_REPLY_ENABLED_FIELD, COPILOT_TRIGGER_FIELD, AUDIO_LANGUAGE_OPTIONS, whatsapp, instagram, resend, telegram, API_CHANNEL_DELIVERY_EVENTS, apiChannel, OPENAI_REASONING_MODELS, openai, anthropic, googleAiStudio, openRouter, xai, groqStt, openaiStt, elevenLabsStt, openaiTts, groqTts, elevenLabsTts, GEMINI_TTS_VOICES, googleTts, wayai, externalResources, restApiTool, mcpServer, e2b, CLAUDE_HARNESS_MODELS, CLAUDE_HARNESS_MODEL_OPTIONS, HARNESS_MCP_SERVERS_FIELD, HARNESS_EGRESS_FIELDS, claudeAgentSdk, claudeManagedAgents, rekorMemory, SPOKEN_LINE_MAX_CHARS, gptLive, CONNECTORS;
501
- var init_chunk_FJKE7WIF = __esm({
502
- "../../packages/core/dist/chunk-FJKE7WIF.js"() {
501
+ var init_chunk_POL7B3EM = __esm({
502
+ "../../packages/core/dist/chunk-POL7B3EM.js"() {
503
503
  "use strict";
504
504
  CALLER_LANGUAGE = "caller";
505
505
  TTS_VOICE_REPLY_ENABLED_FIELD = {
@@ -680,7 +680,7 @@ var init_chunk_FJKE7WIF = __esm({
680
680
  token_refresh_config: { api_key: { strategy: "none" } },
681
681
  connector_description: "Start and continue hub conversations over REST; receive replies as signed webhooks."
682
682
  };
683
- OPENAI_REASONING_MODELS = ["gpt-6-sol", "gpt-6-astra", "gpt-6-luna", "gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2", "gpt-5.1", "gpt-5", "gpt-5-mini", "gpt-5-nano"];
683
+ OPENAI_REASONING_MODELS = ["gpt-6.1-sol", "gpt-6-sol", "gpt-6-astra", "gpt-6-luna", "gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.2", "gpt-5.1", "gpt-5", "gpt-5-mini", "gpt-5-nano"];
684
684
  openai = {
685
685
  connector_id: "0cd6a292-895b-4667-b89e-dd298628c272",
686
686
  service_name: "Openai",
@@ -690,17 +690,17 @@ var init_chunk_FJKE7WIF = __esm({
690
690
  init_endpoint: null,
691
691
  unique_per_hub: true,
692
692
  account_sid_placeholder: "Enter email of the account",
693
- models: ["gpt-6-sol", "gpt-6-astra", "gpt-6-luna", "gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.4", "gpt-5.2", "gpt-5.2-chat-latest", "gpt-5.1", "gpt-5", "gpt-5-mini", "gpt-5-nano", "gpt-4.1", "gpt-4.1-mini"],
693
+ models: ["gpt-6.1-sol", "gpt-6-astra", "gpt-6-luna", "gpt-6-sol", "gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.4", "gpt-5.2", "gpt-5.2-chat-latest", "gpt-5.1", "gpt-5", "gpt-5-mini", "gpt-5-nano", "gpt-4.1", "gpt-4.1-mini"],
694
694
  is_internal: true,
695
695
  is_harness: false,
696
696
  connector_module: "agent",
697
697
  enabled: true,
698
698
  connector_settings_schema: null,
699
699
  agent_settings_schema: {
700
- model: { type: "select", label: "Model", allowCustomValue: true, options: [{ value: "gpt-6-sol", label: "GPT-6 Sol", deprecated: false }, { value: "gpt-6-astra", label: "GPT-6 Astra", deprecated: false }, { value: "gpt-6-luna", label: "GPT-6 Luna", deprecated: false }, { value: "gpt-5.6-sol", label: "GPT-5.6 Sol (Legacy)", deprecated: true }, { value: "gpt-5.6-terra", label: "GPT-5.6 Terra (Legacy)", deprecated: true }, { value: "gpt-5.6-luna", label: "GPT-5.6 Luna (Legacy)", deprecated: true }, { value: "gpt-5.5", label: "GPT-5.5 (Legacy)", deprecated: true }, { value: "gpt-5.4-mini", label: "GPT-5.4 Mini (Legacy)", deprecated: true }, { value: "gpt-5.4-nano", label: "GPT-5.4 Nano (Legacy)", deprecated: true }, { value: "gpt-5.4", label: "GPT-5.4 (Legacy)", deprecated: true }, { value: "gpt-5.2", label: "GPT-5.2 (Legacy)", deprecated: true }, { value: "gpt-5.2-chat-latest", label: "GPT-5.2 Chat (Legacy)", deprecated: true }, { value: "gpt-5.1", label: "GPT-5.1 (Legacy)", deprecated: true }, { value: "gpt-5", label: "GPT-5 (Legacy)", deprecated: true }, { value: "gpt-5-mini", label: "GPT-5 Mini (Legacy)", deprecated: true }, { value: "gpt-5-nano", label: "GPT-5 Nano (Legacy)", deprecated: true }, { value: "gpt-4.1", label: "GPT-4.1 (Legacy)", deprecated: true }, { value: "gpt-4.1-mini", label: "GPT-4.1 Mini (Legacy)", deprecated: true }], default: "gpt-6-sol", description: "AI model to use", required: true },
700
+ model: { type: "select", label: "Model", allowCustomValue: true, options: [{ value: "gpt-6.1-sol", label: "GPT-6.1 Sol", deprecated: false }, { value: "gpt-6-astra", label: "GPT-6 Astra", deprecated: false }, { value: "gpt-6-luna", label: "GPT-6 Luna", deprecated: false }, { value: "gpt-6-sol", label: "GPT-6 Sol (Legacy)", deprecated: true }, { value: "gpt-5.6-sol", label: "GPT-5.6 Sol (Legacy)", deprecated: true }, { value: "gpt-5.6-terra", label: "GPT-5.6 Terra (Legacy)", deprecated: true }, { value: "gpt-5.6-luna", label: "GPT-5.6 Luna (Legacy)", deprecated: true }, { value: "gpt-5.5", label: "GPT-5.5 (Legacy)", deprecated: true }, { value: "gpt-5.4-mini", label: "GPT-5.4 Mini (Legacy)", deprecated: true }, { value: "gpt-5.4-nano", label: "GPT-5.4 Nano (Legacy)", deprecated: true }, { value: "gpt-5.4", label: "GPT-5.4 (Legacy)", deprecated: true }, { value: "gpt-5.2", label: "GPT-5.2 (Legacy)", deprecated: true }, { value: "gpt-5.2-chat-latest", label: "GPT-5.2 Chat (Legacy)", deprecated: true }, { value: "gpt-5.1", label: "GPT-5.1 (Legacy)", deprecated: true }, { value: "gpt-5", label: "GPT-5 (Legacy)", deprecated: true }, { value: "gpt-5-mini", label: "GPT-5 Mini (Legacy)", deprecated: true }, { value: "gpt-5-nano", label: "GPT-5 Nano (Legacy)", deprecated: true }, { value: "gpt-4.1", label: "GPT-4.1 (Legacy)", deprecated: true }, { value: "gpt-4.1-mini", label: "GPT-4.1 Mini (Legacy)", deprecated: true }], default: "gpt-6.1-sol", description: "AI model to use", required: true },
701
701
  temperature: { type: "slider", label: "Temperature", min: 0, max: 2, default: 0.7, step: 0.01, description: "Controls randomness (0=focused, 2=creative). Only for non-reasoning models.", dependsOn: { field: "model", values: ["gpt-5.2-chat-latest", "gpt-4.1-mini", "gpt-4.1"] } },
702
702
  top_p: { type: "slider", label: "Top P", min: 0, max: 1, default: 1, step: 0.01, description: "Nucleus sampling parameter. Only for non-reasoning models.", dependsOn: { field: "model", values: ["gpt-5.2-chat-latest", "gpt-4.1-mini", "gpt-4.1"] } },
703
- reasoning_effort: { type: "select", label: "Reasoning Effort", options: [{ value: "minimal", label: "minimal", deprecated: true }, "low", "medium", "high", "xhigh", "max", "none"], default: "medium", description: "How much effort the model spends reasoning. Higher effort = more tokens & time. Set to none for fastest responses. xhigh requires gpt-5.2 or newer; max requires gpt-5.6 or newer; on older models each is clamped down to the highest supported level. GPT-6 Astra has no none level \u2014 none runs it at low. minimal is a legacy level only gpt-5 / gpt-5.1 accept \u2014 it is clamped to low on gpt-5.2 and newer.", dependsOn: { field: "model", values: OPENAI_REASONING_MODELS } },
703
+ reasoning_effort: { type: "select", label: "Reasoning Effort", options: [{ value: "minimal", label: "minimal", deprecated: true }, "low", "medium", "high", "xhigh", "max", "none"], default: "medium", description: "How much effort the model spends reasoning. Higher effort = more tokens & time. Set to none for fastest responses. xhigh requires gpt-5.2 or newer; max requires gpt-5.6 or newer; on older models each is clamped down to the highest supported level. GPT-6 Astra and GPT-6.1 Sol have no none level \u2014 none runs them at low. minimal is a legacy level only gpt-5 / gpt-5.1 accept \u2014 it is clamped to low on gpt-5.2 and newer.", dependsOn: { field: "model", values: OPENAI_REASONING_MODELS } },
704
704
  verbosity: { type: "select", label: "Verbosity", options: ["low", "medium", "high"], default: "medium", description: "Output detail level. Only for reasoning models.", dependsOn: { field: "model", values: OPENAI_REASONING_MODELS } },
705
705
  service_tier: { type: "select", label: "Service Tier", options: ["auto", "flex", "default", "priority"], default: "auto", description: "Service tier (flex=50% cheaper, higher latency). Only for reasoning models.", dependsOn: { field: "model", values: OPENAI_REASONING_MODELS } },
706
706
  max_tokens: { type: "number", label: "Max Tokens", min: 1, default: 4096, description: "Maximum tokens to generate. On reasoning models, this cap includes reasoning tokens." },
@@ -731,18 +731,18 @@ var init_chunk_FJKE7WIF = __esm({
731
731
  init_endpoint: null,
732
732
  unique_per_hub: true,
733
733
  account_sid_placeholder: "Enter email of the account",
734
- models: ["claude-fable-5-1", "claude-opus-5-5", "claude-sonnet-5", "claude-haiku-4-5", "claude-fable-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-sonnet-4-5", "claude-opus-4-6", "claude-opus-4-5"],
734
+ models: ["claude-fable-5-1", "claude-opus-5-5", "claude-sonnet-5-5", "claude-haiku-5-5", "claude-fable-5", "claude-sonnet-5", "claude-haiku-4-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6", "claude-sonnet-4-5", "claude-opus-4-6", "claude-opus-4-5"],
735
735
  is_internal: true,
736
736
  is_harness: false,
737
737
  connector_module: "agent",
738
738
  enabled: true,
739
739
  connector_settings_schema: null,
740
740
  agent_settings_schema: {
741
- model: { type: "select", label: "Model", allowCustomValue: true, options: [{ value: "claude-fable-5-1", label: "Claude Fable 5.1", deprecated: false }, { value: "claude-opus-5-5", label: "Claude Opus 5.5", deprecated: false }, { value: "claude-sonnet-5", label: "Claude Sonnet 5", deprecated: false }, { value: "claude-haiku-4-5", label: "Claude Haiku 4.5", deprecated: false }, { value: "claude-fable-5", label: "Claude Fable 5 (Legacy)", deprecated: true }, { value: "claude-opus-4-8", label: "Claude Opus 4.8 (Legacy)", deprecated: true }, { value: "claude-opus-4-7", label: "Claude Opus 4.7 (Legacy)", deprecated: true }, { value: "claude-sonnet-4-6", label: "Claude Sonnet 4.6 (Legacy)", deprecated: true }, { value: "claude-sonnet-4-5", label: "Claude Sonnet 4.5 (Legacy)", deprecated: true }, { value: "claude-opus-4-6", label: "Claude Opus 4.6 (Legacy)", deprecated: true }, { value: "claude-opus-4-5", label: "Claude Opus 4.5 (Legacy)", deprecated: true }], default: "claude-sonnet-5", description: "Claude model to use", required: true },
741
+ model: { type: "select", label: "Model", allowCustomValue: true, options: [{ value: "claude-fable-5-1", label: "Claude Fable 5.1", deprecated: false }, { value: "claude-opus-5-5", label: "Claude Opus 5.5", deprecated: false }, { value: "claude-sonnet-5-5", label: "Claude Sonnet 5.5", deprecated: false }, { value: "claude-haiku-5-5", label: "Claude Haiku 5.5", deprecated: false }, { value: "claude-fable-5", label: "Claude Fable 5 (Legacy)", deprecated: true }, { value: "claude-sonnet-5", label: "Claude Sonnet 5 (Legacy)", deprecated: true }, { value: "claude-haiku-4-5", label: "Claude Haiku 4.5 (Legacy)", deprecated: true }, { value: "claude-opus-4-8", label: "Claude Opus 4.8 (Legacy)", deprecated: true }, { value: "claude-opus-4-7", label: "Claude Opus 4.7 (Legacy)", deprecated: true }, { value: "claude-sonnet-4-6", label: "Claude Sonnet 4.6 (Legacy)", deprecated: true }, { value: "claude-sonnet-4-5", label: "Claude Sonnet 4.5 (Legacy)", deprecated: true }, { value: "claude-opus-4-6", label: "Claude Opus 4.6 (Legacy)", deprecated: true }, { value: "claude-opus-4-5", label: "Claude Opus 4.5 (Legacy)", deprecated: true }], default: "claude-sonnet-5-5", description: "Claude model to use", required: true },
742
742
  temperature: { type: "slider", label: "Temperature", min: 0, max: 1, default: 1, step: 0.01, description: "Controls randomness (0=focused, 1=creative)" },
743
743
  max_tokens: { type: "number", label: "Max Tokens", min: 1, max: 8192, default: 4096, description: "Maximum tokens to generate", required: true },
744
- thinking_enabled: { type: "toggle", label: "Extended Thinking", default: false, description: "Enable Claude extended thinking for deeper reasoning. Uses output tokens; temperature/top_p are ignored when on. Not shown for Claude Fable and Claude Opus 5.5, which always reason adaptively.", dependsOn: { field: "model", values: ["claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", "claude-sonnet-5", "claude-sonnet-4-6", "claude-sonnet-4-5", "claude-haiku-4-5", "claude-opus-4-5"] } },
745
- effort: { type: "select", label: "Reasoning Effort", options: [{ value: "low", label: "Low" }, { value: "medium", label: "Medium" }, { value: "high", label: "High" }, { value: "xhigh", label: "Extra high" }, { value: "max", label: "Max" }], default: "high", description: "How hard Claude reasons and how many tokens it spends overall (output_config.effort). Higher = better quality, more cost/latency. xhigh needs Opus 4.7+/Sonnet 5/Fable; max excludes Opus 4.5. Levels the chosen model does not support are clamped down to the highest it allows.", dependsOn: { field: "model", values: ["claude-fable-5-1", "claude-opus-5-5", "claude-fable-5", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", "claude-opus-4-5", "claude-sonnet-5", "claude-sonnet-4-6"] } },
744
+ thinking_enabled: { type: "toggle", label: "Extended Thinking", default: false, description: "Enable Claude extended thinking for deeper reasoning. Uses output tokens; temperature/top_p are ignored when on. Not shown for Claude Fable and Claude Opus 5.5, which always reason adaptively. On Claude Sonnet 5.5 and Claude Haiku 5.5, off applies at Reasoning Effort High or below; at Extra high or Max they keep thinking.", dependsOn: { field: "model", values: ["claude-sonnet-5-5", "claude-haiku-5-5", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", "claude-sonnet-5", "claude-sonnet-4-6", "claude-sonnet-4-5", "claude-haiku-4-5", "claude-opus-4-5"] } },
745
+ effort: { type: "select", label: "Reasoning Effort", options: [{ value: "low", label: "Low" }, { value: "medium", label: "Medium" }, { value: "high", label: "High" }, { value: "xhigh", label: "Extra high" }, { value: "max", label: "Max" }], default: "high", description: "How hard Claude reasons and how many tokens it spends overall (output_config.effort). Higher = better quality, more cost/latency. xhigh needs Opus 4.7+/Sonnet 5+/Haiku 5.5/Fable; max excludes Opus 4.5. Levels the chosen model does not support are clamped down to the highest it allows.", dependsOn: { field: "model", values: ["claude-fable-5-1", "claude-opus-5-5", "claude-sonnet-5-5", "claude-haiku-5-5", "claude-fable-5", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", "claude-opus-4-5", "claude-sonnet-5", "claude-sonnet-4-6"] } },
746
746
  code_execution_enabled: { type: "toggle", label: "Code Execution Sandbox", default: false, description: "Allow this agent to use the Anthropic code_execution sandbox for the download_file/upload_file tools. Off keeps the agent read-only on resources even if the tools are attached." },
747
747
  cache_ttl: { type: "select", label: "System Prompt Cache TTL", options: [{ value: "1h", label: "1 hour (recommended)" }, { value: "5m", label: "5 minutes" }, { value: "off", label: "Disabled" }], default: "1h", description: "Caches system prompt and tool definitions (shared across all conversations on this agent). 1h amortizes the 2\xD7 write premium across concurrent conversations." },
748
748
  cache_ttl_history: { type: "select", label: "Conversation History Cache TTL", options: [{ value: "5m", label: "5 minutes (recommended)" }, { value: "1h", label: "1 hour" }, { value: "off", label: "Disabled" }], default: "5m", description: "Caches per-conversation history. Primary readers are tool-loop iterations (seconds apart) \u2014 5m captures these at 1.25\xD7 write premium instead of 2\xD7. Use 1h only if conversations frequently re-engage between 5min\u20131h." },
@@ -812,14 +812,14 @@ var init_chunk_FJKE7WIF = __esm({
812
812
  // Jev Latest is the bare `jev-latest`: OpenRouter's decisions endpoint refuses
813
813
  // `typesafe/jev-latest` (#4486). `decisions-completion.test.ts` holds every
814
814
  // decisions model offered here to an id that endpoint was measured to serve.
815
- models: ["openai/gpt-6-sol", "openai/gpt-6-astra", "openai/gpt-6-luna", "anthropic/claude-fable-5-1", "anthropic/claude-opus-5-5", "anthropic/claude-sonnet-5", "anthropic/claude-haiku-4-5", "google/gemini-3.1-pro-preview", "google/gemini-3.8-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-flash-lite", "x-ai/grok-4.7", "x-ai/grok-4.6", "x-ai/grok-4.5", "x-ai/grok-4.3", "deepseek/deepseek-v4-pro", "deepseek/deepseek-v4.1-flash", "minimax/minimax-m3", "moonshotai/kimi-k3", "z-ai/glm-5.3", "z-ai/glm-5-turbo", "qwen/qwen3.8-max", "qwen/qwen3.7-plus", "qwen/qwen3-coder", "xiaomi/mimo-v2.6-pro", "jev-latest", "typesafe/jev-1.13", "openai/gpt-5.6-sol", "openai/gpt-5.6-terra", "openai/gpt-5.6-luna", "openai/gpt-5.5", "openai/gpt-5.4-mini", "openai/gpt-5.4-nano", "openai/gpt-5.4", "openai/gpt-5.2", "openai/gpt-5.2-chat-latest", "openai/gpt-5.1", "openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5-nano", "openai/gpt-4.1", "openai/gpt-4.1-mini", "anthropic/claude-fable-5", "anthropic/claude-opus-4-8", "anthropic/claude-opus-4-7", "anthropic/claude-sonnet-4-6", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-6", "anthropic/claude-opus-4-5", "anthropic/claude-opus-4.1", "google/gemini-3.5-flash", "google/gemini-3.1-flash", "google/gemini-3-pro", "google/gemini-3-flash-preview", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "x-ai/grok-4.20", "x-ai/grok-4.1", "x-ai/grok-4-heavy", "x-ai/grok-4-fast", "x-ai/grok-4", "deepseek/deepseek-v3.2", "minimax/minimax-m2.7", "moonshotai/kimi-k2.6", "moonshotai/kimi-k2.5", "z-ai/glm-5.1", "z-ai/glm-5", "qwen/qwen3.7-max", "qwen/qwen3.6-plus", "xiaomi/mimo-v2.5-pro", "xiaomi/mimo-v2-pro"],
815
+ models: ["openai/gpt-6.1-sol", "openai/gpt-6-astra", "openai/gpt-6-luna", "anthropic/claude-fable-5-1", "anthropic/claude-opus-5-5", "anthropic/claude-sonnet-5-5", "anthropic/claude-haiku-5-5", "google/gemini-3.1-pro-preview", "google/gemini-3.8-flash", "google/gemini-3.5-flash-lite", "google/gemini-3.1-flash-lite", "x-ai/grok-4.7", "x-ai/grok-4.6", "x-ai/grok-4.5", "x-ai/grok-4.3", "deepseek/deepseek-v4-pro", "deepseek/deepseek-v4.1-flash", "minimax/minimax-m3", "moonshotai/kimi-k3", "z-ai/glm-5.3", "z-ai/glm-5-turbo", "qwen/qwen3.8-max", "qwen/qwen3.7-plus", "qwen/qwen3-coder", "xiaomi/mimo-v2.6-pro", "jev-latest", "typesafe/jev-1.13", "openai/gpt-6-sol", "openai/gpt-5.6-sol", "openai/gpt-5.6-terra", "openai/gpt-5.6-luna", "openai/gpt-5.5", "openai/gpt-5.4-mini", "openai/gpt-5.4-nano", "openai/gpt-5.4", "openai/gpt-5.2", "openai/gpt-5.2-chat-latest", "openai/gpt-5.1", "openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5-nano", "openai/gpt-4.1", "openai/gpt-4.1-mini", "anthropic/claude-fable-5", "anthropic/claude-sonnet-5", "anthropic/claude-haiku-4-5", "anthropic/claude-opus-4-8", "anthropic/claude-opus-4-7", "anthropic/claude-sonnet-4-6", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-6", "anthropic/claude-opus-4-5", "anthropic/claude-opus-4.1", "google/gemini-3.5-flash", "google/gemini-3.1-flash", "google/gemini-3-pro", "google/gemini-3-flash-preview", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "x-ai/grok-4.20", "x-ai/grok-4.1", "x-ai/grok-4-heavy", "x-ai/grok-4-fast", "x-ai/grok-4", "deepseek/deepseek-v3.2", "minimax/minimax-m2.7", "moonshotai/kimi-k2.6", "moonshotai/kimi-k2.5", "z-ai/glm-5.1", "z-ai/glm-5", "qwen/qwen3.7-max", "qwen/qwen3.6-plus", "xiaomi/mimo-v2.5-pro", "xiaomi/mimo-v2-pro"],
816
816
  is_internal: true,
817
817
  is_harness: false,
818
818
  connector_module: "agent",
819
819
  enabled: true,
820
820
  connector_settings_schema: null,
821
821
  agent_settings_schema: {
822
- model: { type: "select", label: "Model", allowCustomValue: true, options: [{ value: "openai/gpt-6-sol", label: "GPT-6 Sol", deprecated: false }, { value: "openai/gpt-6-astra", label: "GPT-6 Astra", deprecated: false }, { value: "openai/gpt-6-luna", label: "GPT-6 Luna", deprecated: false }, { value: "anthropic/claude-fable-5-1", label: "Claude Fable 5.1", deprecated: false }, { value: "anthropic/claude-opus-5-5", label: "Claude Opus 5.5", deprecated: false }, { value: "anthropic/claude-sonnet-5", label: "Claude Sonnet 5", deprecated: false }, { value: "anthropic/claude-haiku-4-5", label: "Claude Haiku 4.5", deprecated: false }, { value: "google/gemini-3.1-pro-preview", label: "Gemini 3.1 Pro (Preview)", deprecated: false }, { value: "google/gemini-3.8-flash", label: "Gemini 3.8 Flash", deprecated: false }, { value: "google/gemini-3.5-flash-lite", label: "Gemini 3.5 Flash-Lite", deprecated: false }, { value: "google/gemini-3.1-flash-lite", label: "Gemini 3.1 Flash-Lite", deprecated: false }, { value: "x-ai/grok-4.7", label: "Grok 4.7", deprecated: false }, { value: "x-ai/grok-4.6", label: "Grok 4.6", deprecated: false }, { value: "x-ai/grok-4.5", label: "Grok 4.5", deprecated: false }, { value: "x-ai/grok-4.3", label: "Grok 4.3", deprecated: false }, { value: "deepseek/deepseek-v4-pro", label: "DeepSeek V4 Pro", deprecated: false }, { value: "deepseek/deepseek-v4.1-flash", label: "DeepSeek V4.1 Flash", deprecated: false }, { value: "minimax/minimax-m3", label: "MiniMax M3", deprecated: false }, { value: "moonshotai/kimi-k3", label: "Kimi K3", deprecated: false }, { value: "z-ai/glm-5.3", label: "GLM-5.3", deprecated: false }, { value: "z-ai/glm-5-turbo", label: "GLM-5-Turbo", deprecated: false }, { value: "qwen/qwen3.8-max", label: "Qwen3.8 Max", deprecated: false }, { value: "qwen/qwen3.7-plus", label: "Qwen3.7 Plus", deprecated: false }, { value: "qwen/qwen3-coder", label: "Qwen3 Coder", deprecated: false }, { value: "xiaomi/mimo-v2.6-pro", label: "MiMo-V2.6-Pro", deprecated: false }, { value: "jev-latest", label: "Jev Latest (decisions)", deprecated: false }, { value: "typesafe/jev-1.13", label: "Jev 1.13 (decisions)", deprecated: false }, { value: "openai/gpt-5.6-sol", label: "GPT-5.6 Sol (Legacy)", deprecated: true }, { value: "openai/gpt-5.6-terra", label: "GPT-5.6 Terra (Legacy)", deprecated: true }, { value: "openai/gpt-5.6-luna", label: "GPT-5.6 Luna (Legacy)", deprecated: true }, { value: "openai/gpt-5.5", label: "GPT-5.5 (Legacy)", deprecated: true }, { value: "openai/gpt-5.4-mini", label: "GPT-5.4 Mini (Legacy)", deprecated: true }, { value: "openai/gpt-5.4-nano", label: "GPT-5.4 Nano (Legacy)", deprecated: true }, { value: "openai/gpt-5.4", label: "GPT-5.4 (Legacy)", deprecated: true }, { value: "openai/gpt-5.2", label: "GPT-5.2 (Legacy)", deprecated: true }, { value: "openai/gpt-5.2-chat-latest", label: "GPT-5.2 Chat (Legacy)", deprecated: true }, { value: "openai/gpt-5.1", label: "GPT-5.1 (Legacy)", deprecated: true }, { value: "openai/gpt-5", label: "GPT-5 (Legacy)", deprecated: true }, { value: "openai/gpt-5-mini", label: "GPT-5 Mini (Legacy)", deprecated: true }, { value: "openai/gpt-5-nano", label: "GPT-5 Nano (Legacy)", deprecated: true }, { value: "openai/gpt-4.1", label: "GPT-4.1 (Legacy)", deprecated: true }, { value: "openai/gpt-4.1-mini", label: "GPT-4.1 Mini (Legacy)", deprecated: true }, { value: "anthropic/claude-fable-5", label: "Claude Fable 5 (Legacy)", deprecated: true }, { value: "anthropic/claude-opus-4-8", label: "Claude Opus 4.8 (Legacy)", deprecated: true }, { value: "anthropic/claude-opus-4-7", label: "Claude Opus 4.7 (Legacy)", deprecated: true }, { value: "anthropic/claude-sonnet-4-6", label: "Claude Sonnet 4.6 (Legacy)", deprecated: true }, { value: "anthropic/claude-sonnet-4-5", label: "Claude Sonnet 4.5 (Legacy)", deprecated: true }, { value: "anthropic/claude-opus-4-6", label: "Claude Opus 4.6 (Legacy)", deprecated: true }, { value: "anthropic/claude-opus-4-5", label: "Claude Opus 4.5 (Legacy)", deprecated: true }, { value: "anthropic/claude-opus-4.1", label: "Claude Opus 4.1 (Legacy)", deprecated: true }, { value: "google/gemini-3.5-flash", label: "Gemini 3.5 Flash (Legacy)", deprecated: true }, { value: "google/gemini-3.1-flash", label: "Gemini 3.1 Flash (Legacy)", deprecated: true }, { value: "google/gemini-3-pro", label: "Gemini 3 Pro (Legacy)", deprecated: true }, { value: "google/gemini-3-flash-preview", label: "Gemini 3 Flash (Legacy)", deprecated: true }, { value: "google/gemini-2.5-pro", label: "Gemini 2.5 Pro (Legacy)", deprecated: true }, { value: "google/gemini-2.5-flash", label: "Gemini 2.5 Flash (Legacy)", deprecated: true }, { value: "google/gemini-2.5-flash-lite", label: "Gemini 2.5 Flash-Lite (Legacy)", deprecated: true }, { value: "x-ai/grok-4.20", label: "Grok 4.20 (Legacy)", deprecated: true }, { value: "x-ai/grok-4.1", label: "Grok 4.1 (Legacy)", deprecated: true }, { value: "x-ai/grok-4-heavy", label: "Grok 4 Heavy (Legacy)", deprecated: true }, { value: "x-ai/grok-4-fast", label: "Grok 4 Fast (Legacy)", deprecated: true }, { value: "x-ai/grok-4", label: "Grok 4 (Legacy)", deprecated: true }, { value: "deepseek/deepseek-v3.2", label: "DeepSeek V3.2 (Legacy)", deprecated: true }, { value: "minimax/minimax-m2.7", label: "MiniMax M2.7 (Legacy)", deprecated: true }, { value: "moonshotai/kimi-k2.6", label: "Kimi K2.6 (Legacy)", deprecated: true }, { value: "moonshotai/kimi-k2.5", label: "Kimi K2.5 (Legacy)", deprecated: true }, { value: "z-ai/glm-5.1", label: "GLM-5.1 (Legacy)", deprecated: true }, { value: "z-ai/glm-5", label: "GLM-5 (Legacy)", deprecated: true }, { value: "qwen/qwen3.7-max", label: "Qwen3.7 Max (Legacy)", deprecated: true }, { value: "qwen/qwen3.6-plus", label: "Qwen3.6 Plus (Legacy)", deprecated: true }, { value: "xiaomi/mimo-v2.5-pro", label: "MiMo-V2.5-Pro (Legacy)", deprecated: true }, { value: "xiaomi/mimo-v2-pro", label: "MiMo-V2-Pro (Legacy)", deprecated: true }], default: "openai/gpt-6-sol", description: "AI model to use", required: true },
822
+ model: { type: "select", label: "Model", allowCustomValue: true, options: [{ value: "openai/gpt-6.1-sol", label: "GPT-6.1 Sol", deprecated: false }, { value: "openai/gpt-6-astra", label: "GPT-6 Astra", deprecated: false }, { value: "openai/gpt-6-luna", label: "GPT-6 Luna", deprecated: false }, { value: "anthropic/claude-fable-5-1", label: "Claude Fable 5.1", deprecated: false }, { value: "anthropic/claude-opus-5-5", label: "Claude Opus 5.5", deprecated: false }, { value: "anthropic/claude-sonnet-5-5", label: "Claude Sonnet 5.5", deprecated: false }, { value: "anthropic/claude-haiku-5-5", label: "Claude Haiku 5.5", deprecated: false }, { value: "google/gemini-3.1-pro-preview", label: "Gemini 3.1 Pro (Preview)", deprecated: false }, { value: "google/gemini-3.8-flash", label: "Gemini 3.8 Flash", deprecated: false }, { value: "google/gemini-3.5-flash-lite", label: "Gemini 3.5 Flash-Lite", deprecated: false }, { value: "google/gemini-3.1-flash-lite", label: "Gemini 3.1 Flash-Lite", deprecated: false }, { value: "x-ai/grok-4.7", label: "Grok 4.7", deprecated: false }, { value: "x-ai/grok-4.6", label: "Grok 4.6", deprecated: false }, { value: "x-ai/grok-4.5", label: "Grok 4.5", deprecated: false }, { value: "x-ai/grok-4.3", label: "Grok 4.3", deprecated: false }, { value: "deepseek/deepseek-v4-pro", label: "DeepSeek V4 Pro", deprecated: false }, { value: "deepseek/deepseek-v4.1-flash", label: "DeepSeek V4.1 Flash", deprecated: false }, { value: "minimax/minimax-m3", label: "MiniMax M3", deprecated: false }, { value: "moonshotai/kimi-k3", label: "Kimi K3", deprecated: false }, { value: "z-ai/glm-5.3", label: "GLM-5.3", deprecated: false }, { value: "z-ai/glm-5-turbo", label: "GLM-5-Turbo", deprecated: false }, { value: "qwen/qwen3.8-max", label: "Qwen3.8 Max", deprecated: false }, { value: "qwen/qwen3.7-plus", label: "Qwen3.7 Plus", deprecated: false }, { value: "qwen/qwen3-coder", label: "Qwen3 Coder", deprecated: false }, { value: "xiaomi/mimo-v2.6-pro", label: "MiMo-V2.6-Pro", deprecated: false }, { value: "jev-latest", label: "Jev Latest (decisions)", deprecated: false }, { value: "typesafe/jev-1.13", label: "Jev 1.13 (decisions)", deprecated: false }, { value: "openai/gpt-6-sol", label: "GPT-6 Sol (Legacy)", deprecated: true }, { value: "openai/gpt-5.6-sol", label: "GPT-5.6 Sol (Legacy)", deprecated: true }, { value: "openai/gpt-5.6-terra", label: "GPT-5.6 Terra (Legacy)", deprecated: true }, { value: "openai/gpt-5.6-luna", label: "GPT-5.6 Luna (Legacy)", deprecated: true }, { value: "openai/gpt-5.5", label: "GPT-5.5 (Legacy)", deprecated: true }, { value: "openai/gpt-5.4-mini", label: "GPT-5.4 Mini (Legacy)", deprecated: true }, { value: "openai/gpt-5.4-nano", label: "GPT-5.4 Nano (Legacy)", deprecated: true }, { value: "openai/gpt-5.4", label: "GPT-5.4 (Legacy)", deprecated: true }, { value: "openai/gpt-5.2", label: "GPT-5.2 (Legacy)", deprecated: true }, { value: "openai/gpt-5.2-chat-latest", label: "GPT-5.2 Chat (Legacy)", deprecated: true }, { value: "openai/gpt-5.1", label: "GPT-5.1 (Legacy)", deprecated: true }, { value: "openai/gpt-5", label: "GPT-5 (Legacy)", deprecated: true }, { value: "openai/gpt-5-mini", label: "GPT-5 Mini (Legacy)", deprecated: true }, { value: "openai/gpt-5-nano", label: "GPT-5 Nano (Legacy)", deprecated: true }, { value: "openai/gpt-4.1", label: "GPT-4.1 (Legacy)", deprecated: true }, { value: "openai/gpt-4.1-mini", label: "GPT-4.1 Mini (Legacy)", deprecated: true }, { value: "anthropic/claude-fable-5", label: "Claude Fable 5 (Legacy)", deprecated: true }, { value: "anthropic/claude-sonnet-5", label: "Claude Sonnet 5 (Legacy)", deprecated: true }, { value: "anthropic/claude-haiku-4-5", label: "Claude Haiku 4.5 (Legacy)", deprecated: true }, { value: "anthropic/claude-opus-4-8", label: "Claude Opus 4.8 (Legacy)", deprecated: true }, { value: "anthropic/claude-opus-4-7", label: "Claude Opus 4.7 (Legacy)", deprecated: true }, { value: "anthropic/claude-sonnet-4-6", label: "Claude Sonnet 4.6 (Legacy)", deprecated: true }, { value: "anthropic/claude-sonnet-4-5", label: "Claude Sonnet 4.5 (Legacy)", deprecated: true }, { value: "anthropic/claude-opus-4-6", label: "Claude Opus 4.6 (Legacy)", deprecated: true }, { value: "anthropic/claude-opus-4-5", label: "Claude Opus 4.5 (Legacy)", deprecated: true }, { value: "anthropic/claude-opus-4.1", label: "Claude Opus 4.1 (Legacy)", deprecated: true }, { value: "google/gemini-3.5-flash", label: "Gemini 3.5 Flash (Legacy)", deprecated: true }, { value: "google/gemini-3.1-flash", label: "Gemini 3.1 Flash (Legacy)", deprecated: true }, { value: "google/gemini-3-pro", label: "Gemini 3 Pro (Legacy)", deprecated: true }, { value: "google/gemini-3-flash-preview", label: "Gemini 3 Flash (Legacy)", deprecated: true }, { value: "google/gemini-2.5-pro", label: "Gemini 2.5 Pro (Legacy)", deprecated: true }, { value: "google/gemini-2.5-flash", label: "Gemini 2.5 Flash (Legacy)", deprecated: true }, { value: "google/gemini-2.5-flash-lite", label: "Gemini 2.5 Flash-Lite (Legacy)", deprecated: true }, { value: "x-ai/grok-4.20", label: "Grok 4.20 (Legacy)", deprecated: true }, { value: "x-ai/grok-4.1", label: "Grok 4.1 (Legacy)", deprecated: true }, { value: "x-ai/grok-4-heavy", label: "Grok 4 Heavy (Legacy)", deprecated: true }, { value: "x-ai/grok-4-fast", label: "Grok 4 Fast (Legacy)", deprecated: true }, { value: "x-ai/grok-4", label: "Grok 4 (Legacy)", deprecated: true }, { value: "deepseek/deepseek-v3.2", label: "DeepSeek V3.2 (Legacy)", deprecated: true }, { value: "minimax/minimax-m2.7", label: "MiniMax M2.7 (Legacy)", deprecated: true }, { value: "moonshotai/kimi-k2.6", label: "Kimi K2.6 (Legacy)", deprecated: true }, { value: "moonshotai/kimi-k2.5", label: "Kimi K2.5 (Legacy)", deprecated: true }, { value: "z-ai/glm-5.1", label: "GLM-5.1 (Legacy)", deprecated: true }, { value: "z-ai/glm-5", label: "GLM-5 (Legacy)", deprecated: true }, { value: "qwen/qwen3.7-max", label: "Qwen3.7 Max (Legacy)", deprecated: true }, { value: "qwen/qwen3.6-plus", label: "Qwen3.6 Plus (Legacy)", deprecated: true }, { value: "xiaomi/mimo-v2.5-pro", label: "MiMo-V2.5-Pro (Legacy)", deprecated: true }, { value: "xiaomi/mimo-v2-pro", label: "MiMo-V2-Pro (Legacy)", deprecated: true }], default: "openai/gpt-6.1-sol", description: "AI model to use", required: true },
823
823
  temperature: { type: "slider", label: "Temperature", min: 0, max: 2, default: 0.7, step: 0.01, description: "Controls randomness (0=focused, 2=creative)" },
824
824
  top_p: { type: "slider", label: "Top P", min: 0, max: 1, default: 1, step: 0.01, description: "Nucleus sampling parameter" },
825
825
  max_tokens: { type: "number", label: "Max Tokens", min: 1, default: 4096, description: "Maximum number of tokens to generate" },
@@ -1555,15 +1555,15 @@ var init_chunk_FJKE7WIF = __esm({
1555
1555
  }
1556
1556
  });
1557
1557
 
1558
- // ../../packages/core/dist/chunk-YX7EL2HJ.js
1558
+ // ../../packages/core/dist/chunk-SNA2DXAC.js
1559
1559
  function catalogToolSideEffects(toolName) {
1560
1560
  const sideEffects = CATALOG_SIDE_EFFECTS.get(toolName);
1561
1561
  if (sideEffects === void 0) return "unknown";
1562
1562
  return sideEffects ? "side_effects" : "none";
1563
1563
  }
1564
1564
  var NATIVE_TOOL_SCHEMAS, WAYAI_CONNECTOR, BASE_NATIVE_TOOLS, NATIVE_TOOLS, CATALOG_SIDE_EFFECTS;
1565
- var init_chunk_YX7EL2HJ = __esm({
1566
- "../../packages/core/dist/chunk-YX7EL2HJ.js"() {
1565
+ var init_chunk_SNA2DXAC = __esm({
1566
+ "../../packages/core/dist/chunk-SNA2DXAC.js"() {
1567
1567
  "use strict";
1568
1568
  NATIVE_TOOL_SCHEMAS = {
1569
1569
  "close_conversation": {
@@ -6587,7 +6587,7 @@ var init_zod = __esm({
6587
6587
  }
6588
6588
  });
6589
6589
 
6590
- // ../../packages/core/dist/chunk-XNDI2XQA.js
6590
+ // ../../packages/core/dist/chunk-3NS3HULK.js
6591
6591
  function visibleLength(s) {
6592
6592
  return s.replace(INVISIBLE_NAME_CHARS, "").length;
6593
6593
  }
@@ -6615,8 +6615,8 @@ function ensureUniqueSlug(slug, used) {
6615
6615
  throw new Error(`slug collision space exhausted for "${slug}"`);
6616
6616
  }
6617
6617
  var SLUG_REGEX, slugSchema, INVISIBLE_NAME_CHARS;
6618
- var init_chunk_XNDI2XQA = __esm({
6619
- "../../packages/core/dist/chunk-XNDI2XQA.js"() {
6618
+ var init_chunk_3NS3HULK = __esm({
6619
+ "../../packages/core/dist/chunk-3NS3HULK.js"() {
6620
6620
  "use strict";
6621
6621
  init_zod();
6622
6622
  SLUG_REGEX = /^[a-z][a-z0-9_]{0,49}$/;
@@ -6882,10 +6882,10 @@ var init_chunk_T7KQKDET = __esm({
6882
6882
  }
6883
6883
  });
6884
6884
 
6885
- // ../../packages/core/dist/chunk-SSN6QPMX.js
6885
+ // ../../packages/core/dist/chunk-2ISUBJG7.js
6886
6886
  var EVAL_PACING_PRESET_NAMES, PACING_INTERVAL_MIN_MS, PACING_INTERVAL_MAX_MS, EVAL_MAX_RUNS_PER_SCENARIO, EVAL_RUN_DEADLINE_MIN_MS, EVAL_RUN_DEADLINE_MAX_MS;
6887
- var init_chunk_SSN6QPMX = __esm({
6888
- "../../packages/core/dist/chunk-SSN6QPMX.js"() {
6887
+ var init_chunk_2ISUBJG7 = __esm({
6888
+ "../../packages/core/dist/chunk-2ISUBJG7.js"() {
6889
6889
  "use strict";
6890
6890
  EVAL_PACING_PRESET_NAMES = ["conservative", "balanced", "fast", "custom"];
6891
6891
  PACING_INTERVAL_MIN_MS = 50;
@@ -6896,7 +6896,7 @@ var init_chunk_SSN6QPMX = __esm({
6896
6896
  }
6897
6897
  });
6898
6898
 
6899
- // ../../packages/core/dist/chunk-IYXLMIWU.js
6899
+ // ../../packages/core/dist/chunk-NCJ3EXN7.js
6900
6900
  function containsKanbanPlaceholders(value) {
6901
6901
  if (value == null) return false;
6902
6902
  const serialized = typeof value === "string" ? value : JSON.stringify(value);
@@ -8142,19 +8142,19 @@ function refineHubAsCodeMonitorRulesOutput(config, ctx) {
8142
8142
  }
8143
8143
  });
8144
8144
  }
8145
- var PLACEHOLDER_TOKENS, ALLOWED_TYPES, SUBSCHEMA_OBJECT_KEYWORDS, SUBSCHEMA_LIST_KEYWORDS, SUBSCHEMA_MAP_KEYWORDS, MAX_SCHEMA_DEPTH, uuidSchema, USER_ID_REGEX, timestampSchema, idParamSchema, clientOptionalString, clientOptionalBoolean, clientOptionalNumber, messageAttachment, MAX_MESSAGE_BODY_BYTES, MAX_ATTACHMENTS_PER_MESSAGE, MESSAGE_ENVELOPE_HEADROOM_BYTES, MAX_AUDIO_FILE_BASE64_BYTES, MAX_KANBAN_STATUSES, MAX_FOLLOWUPS_PER_STATUS, MAX_LANES, MAX_ADDITIONAL_CONTEXT_SCHEMA_BYTES, RESERVED_TEMPLATE_DUMP_NAME, kanbanStatusSlugSchema, followupTypeSchema, EVENT_RELATIVE_FOLLOWUP_TYPES, followupTimeUnitSchema, followupIdSchema, SELECTABLE_FOLLOWUP_TYPES, MAX_LINKED_FOLLOWUP_TARGETS_PER_STATUS, followupSchema, MAX_OUTCOMES_PER_STATUS, kanbanOutcomeSchema, EXCLUSIVE_FLAG_PAIRS, kanbanStatusSchema, kanbanStatusesArraySchema, laneSchema, lanesArraySchema, toolIdParam, listToolsQuery, toolAgentQuery, deleteToolQuery, toolConnectionsQuery, nativeToolIdSchema, CONTEXT_BOUNDARIES, contextBoundarySchema, addNativeToolBody, addMcpToolBody, createCustomToolBody, updateCustomToolBody, updateToolExecutionConfigBody, PREVIOUS_CONVERSATIONS_MAX, NATIVE_TOOL_NAMES, previousConversationsCountField, summarizationThresholdField, flagConditionSchema, MONITOR_TRIGGERS, monitorTriggerSchema, MONITOR_FIRING_TRIGGERS, MONITOR_DELAY_SECONDS_MIN, MONITOR_IDLE_DELAY_REQUIRED_MESSAGE, MONITOR_HISTORY_MESSAGES_MAX, monitorHistoryMessagesSchema, monitorIncludeToolResultsSchema, MONITOR_INPUT_SHAPING_KEYS, MONITOR_INPUT_SHAPING_SCHEMAS, MONITOR_INPUT_SHAPING_IDLE_MESSAGE, monitorArgumentSourceSchema, MONITOR_NOTE_TEMPLATE_MAX, MONITOR_STEER_NOTE_MAX, monitorActionSchema, monitorRuleSchema, MONITOR_RULE_KEYS, MONITOR_RULE_SCHEMAS, MONITOR_RULE_TRIGGERS, MONITOR_RULE_TRIGGER_MESSAGE, CALL_UTTERANCE_SPEAKERS, callUtteranceSpeakerSchema, MONITOR_CALL_KEYS, MONITOR_CALL_SCHEMAS, MONITOR_CALL_KEY_MESSAGE, CALL_STEERING_MIN_CONFIDENCE, CALL_UTTERANCE_RULE_NOT_CONFIDENT_MESSAGE, CALL_UTTERANCE_FALLBACK_MESSAGE, CALL_UTTERANCE_FLAG_CONDITIONS_MESSAGE, CALL_STEER_NOTE_BLANK_MESSAGE, MONITOR_USER_MESSAGE_ACTION_KINDS, MONITOR_ASSISTANT_REPLY_ACTION_KINDS, MONITOR_CALL_UTTERANCE_ACTION_KINDS, INSERT_NOTE_TOOL_NAME, RUN_MONITOR_TOOL_NAME, MONITOR_RULE_ALLOWED_NATIVE_TOOLS, MONITOR_RULE_REENTRY_TOOLS, MONITOR_RULE_REENTRY_TRACKS, monitorConfigField, flagConditionsField, agentIdParam, listAgentsQuery, agentConnectionsQuery, createAgentBody, updateAgentBody, AGENT_PARAMETER_TYPES, AGENT_PARAMETER_NAME_REGEX, agentParameterCreateSchema, MAX_AGENT_PARAMETERS_PER_REQUEST, createAgentParametersBody, paginationSchema, evalIdParam, sessionIdParam, scenarioSetIdParam, hubIdQuery, evalDateContextSchema, EVAL_FIXTURE_NAME_MAX_LENGTH, evalFixtureOverrideSchema, runSessionQuery, runJourneyQuery, EVAL_INPUT_ROLES, EVAL_INPUT_ROLE_LIST, ROLE_ECHO_MAX, EVAL_INITIAL_STATE_SCOPES, MAX_INITIAL_STATE_ENTRIES, evalInitialStateEntry, evalBody, EVAL_LIST_MAX_LIMIT, evalListLimit, getEvalsQuery, toggleEvalBody, bulkToggleEvalsBody, pacingConfigSchema, EVAL_MAX_SELECTED_SCENARIOS, evalScenarioSelectionEntrySchema, evalScenarioSelectionSchema, sessionConfigSchema, createSessionBody, getSessionsQuery, getSessionResultsQuery, getSessionRunsQuery, evalAnalyticsQuery, getSessionCostQuery, compareSessionsQuery, evalsSqlBody, evalsSqlSchemaQuery, exportResultsQuery, validateEvalBody, hubAgentsQuery, createScenarioSetBody, updateScenarioSetBody, scenarioSetsHubQuery, createScenarioFromConversationBody, createJourneyFromConversationBody, EVAL_ATTACHMENT_HASH_REGEX, evalAttachmentRef, turnMayCarryAttachments, ATTACHMENTS_USER_ONLY_MESSAGE, journeyIdParam, journeyToolCallSchema, journeyTurnSchema, journeyStepOverrideSchema, fixtureField, createJourneyBody, updateJourneyBody, evalSessionConfigResponseSchema, evalSessionResponseSchema, evalSessionListConfigSchema, evalSessionListItemSchema, seedReleaseStatusSchema, EVAL_SESSION_NOT_QUIESCENT, MAX_RESOURCE_FILE_SIZE, CALL_OPENING_LANGUAGES, callOpeningLanguage, CALL_OPENING_MAX_DURATION_MS, CALL_OPENING_MAX_BYTES, CALL_OPENING_CAPTION_MAX_CHARS, CALL_OPENING_CONTENT_TYPES, callOpeningContentType, CALL_OPENING_HASH_REGEX, callOpeningHash, callOpeningCaption, storedCallOpening, MAX_CALL_OPENING_ENCODED_BYTES, MAX_CALL_OPENING_BODY_BYTES, agentCallOpeningParams, putAgentCallOpeningBody, deleteAgentCallOpeningQuery, callOpeningParam, callOpeningQuery, MAX_10MB_BASE64_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_CARRIERS, MAX_EVAL_ATTACHMENT_AGGREGATE_ENCODED_BYTES, MAX_RESOURCE_ENCODED_BYTES, MAX_HUB_AS_CODE_RESOURCES, MAX_HUB_AS_CODE_RESOURCE_FILES, MAX_RESOURCE_AGGREGATE_ENCODED_BYTES, MAX_CI_CONFIG_BODY_BYTES, MAX_CALL_OPENING_CARRIERS, MAX_CALL_OPENING_AGGREGATE_ENCODED_BYTES, hubAsCodeStateSchema, hubAsCodeResourceFileSchema, hubAsCodeResourceSchema, uuidPattern, ciUuidSchema, boundedHubAsCodeResourcesSchema, hubAsCodeConfigSchema, ciPullHubIdParam, ciBranchParam, ciPullQuery, ciHubsQuery, ciLookupQuery, ciBranchesQuery, ciSyncBody, ciPushBody, ciDiffBody, ciPublishBody, ciPublishPreviewBody, ciSyncMcpBody, ciOrgResourcesParam, orgResourcesConfigSchema, ciOrgResourcesPushBody, ciOrgResourcesDiffBody, CI_APPLY_ENTITY_KINDS, CI_APPLY_OPERATIONS, ciApplyErrorBaseSchema, ciApplyErrorSchema, ciSyncCountSchema, ciSyncChangesSchema, ciSyncWarningSchema, ciSyncResponseSchema;
8146
- var init_chunk_IYXLMIWU = __esm({
8147
- "../../packages/core/dist/chunk-IYXLMIWU.js"() {
8145
+ var PLACEHOLDER_TOKENS, ALLOWED_TYPES, SUBSCHEMA_OBJECT_KEYWORDS, SUBSCHEMA_LIST_KEYWORDS, SUBSCHEMA_MAP_KEYWORDS, MAX_SCHEMA_DEPTH, uuidSchema, USER_ID_REGEX, timestampSchema, idParamSchema, clientOptionalString, clientOptionalBoolean, clientOptionalNumber, messageAttachment, MAX_MESSAGE_BODY_BYTES, MAX_ATTACHMENTS_PER_MESSAGE, MESSAGE_ENVELOPE_HEADROOM_BYTES, MAX_AUDIO_FILE_BASE64_BYTES, MAX_KANBAN_STATUSES, MAX_FOLLOWUPS_PER_STATUS, MAX_LANES, MAX_ADDITIONAL_CONTEXT_SCHEMA_BYTES, RESERVED_TEMPLATE_DUMP_NAME, kanbanStatusSlugSchema, followupTypeSchema, EVENT_RELATIVE_FOLLOWUP_TYPES, followupTimeUnitSchema, followupIdSchema, SELECTABLE_FOLLOWUP_TYPES, MAX_LINKED_FOLLOWUP_TARGETS_PER_STATUS, followupSchema, MAX_OUTCOMES_PER_STATUS, kanbanOutcomeSchema, EXCLUSIVE_FLAG_PAIRS, kanbanStatusSchema, kanbanStatusesArraySchema, laneSchema, lanesArraySchema, toolIdParam, listToolsQuery, toolAgentQuery, deleteToolQuery, toolConnectionsQuery, nativeToolIdSchema, CONTEXT_BOUNDARIES, contextBoundarySchema, addNativeToolBody, addMcpToolBody, createCustomToolBody, updateCustomToolBody, updateToolExecutionConfigBody, PREVIOUS_CONVERSATIONS_MAX, NATIVE_TOOL_NAMES, previousConversationsCountField, summarizationThresholdField, flagConditionSchema, MONITOR_TRIGGERS, monitorTriggerSchema, MONITOR_FIRING_TRIGGERS, MONITOR_DELAY_SECONDS_MIN, MONITOR_IDLE_DELAY_REQUIRED_MESSAGE, MONITOR_HISTORY_MESSAGES_MAX, monitorHistoryMessagesSchema, monitorIncludeToolResultsSchema, MONITOR_INPUT_SHAPING_KEYS, MONITOR_INPUT_SHAPING_SCHEMAS, MONITOR_INPUT_SHAPING_IDLE_MESSAGE, monitorArgumentSourceSchema, MONITOR_NOTE_TEMPLATE_MAX, MONITOR_STEER_NOTE_MAX, monitorActionSchema, monitorRuleSchema, MONITOR_RULE_KEYS, MONITOR_RULE_SCHEMAS, MONITOR_RULE_TRIGGERS, MONITOR_RULE_TRIGGER_MESSAGE, CALL_UTTERANCE_SPEAKERS, callUtteranceSpeakerSchema, MONITOR_CALL_KEYS, MONITOR_CALL_SCHEMAS, MONITOR_CALL_KEY_MESSAGE, CALL_STEERING_MIN_CONFIDENCE, CALL_UTTERANCE_RULE_NOT_CONFIDENT_MESSAGE, CALL_UTTERANCE_FALLBACK_MESSAGE, CALL_UTTERANCE_FLAG_CONDITIONS_MESSAGE, CALL_STEER_NOTE_BLANK_MESSAGE, MONITOR_USER_MESSAGE_ACTION_KINDS, MONITOR_ASSISTANT_REPLY_ACTION_KINDS, MONITOR_CALL_UTTERANCE_ACTION_KINDS, INSERT_NOTE_TOOL_NAME, RUN_MONITOR_TOOL_NAME, MONITOR_RULE_ALLOWED_NATIVE_TOOLS, MONITOR_RULE_REENTRY_TOOLS, MONITOR_RULE_REENTRY_TRACKS, monitorConfigField, flagConditionsField, agentIdParam, listAgentsQuery, agentConnectionsQuery, createAgentBody, updateAgentBody, AGENT_PARAMETER_TYPES, AGENT_PARAMETER_NAME_REGEX, agentParameterCreateSchema, MAX_AGENT_PARAMETERS_PER_REQUEST, createAgentParametersBody, evalIdParam, sessionIdParam, scenarioSetIdParam, hubIdQuery, evalDateContextSchema, EVAL_FIXTURE_NAME_MAX_LENGTH, evalFixtureOverrideSchema, runSessionQuery, runJourneyQuery, EVAL_INPUT_ROLES, EVAL_INPUT_ROLE_LIST, ROLE_ECHO_MAX, EVAL_INITIAL_STATE_SCOPES, MAX_INITIAL_STATE_ENTRIES, evalInitialStateEntry, evalBody, EVAL_LIST_MAX_LIMIT, evalListLimit, getEvalsQuery, toggleEvalBody, bulkToggleEvalsBody, pacingConfigSchema, EVAL_MAX_SELECTED_SCENARIOS, evalScenarioSelectionEntrySchema, evalScenarioSelectionSchema, sessionConfigSchema, createSessionBody, getSessionsQuery, getSessionResultsQuery, getSessionRunsQuery, evalAnalyticsQuery, getSessionCostQuery, compareSessionsQuery, evalsSqlBody, evalsSqlSchemaQuery, exportResultsQuery, validateEvalBody, hubAgentsQuery, createScenarioSetBody, updateScenarioSetBody, scenarioSetsHubQuery, createScenarioFromConversationBody, createJourneyFromConversationBody, EVAL_ATTACHMENT_HASH_REGEX, evalAttachmentRef, turnMayCarryAttachments, ATTACHMENTS_USER_ONLY_MESSAGE, journeyIdParam, journeyToolCallSchema, journeyTurnSchema, journeyStepOverrideSchema, fixtureField, createJourneyBody, updateJourneyBody, evalSessionConfigResponseSchema, evalSessionResponseSchema, evalSessionListConfigSchema, evalSessionListItemSchema, seedReleaseStatusSchema, EVAL_SESSION_NOT_QUIESCENT, MAX_RESOURCE_FILE_SIZE, CALL_OPENING_LANGUAGES, callOpeningLanguage, CALL_OPENING_MAX_DURATION_MS, CALL_OPENING_MAX_BYTES, CALL_OPENING_CAPTION_MAX_CHARS, CALL_OPENING_CONTENT_TYPES, callOpeningContentType, CALL_OPENING_HASH_REGEX, callOpeningHash, callOpeningCaption, storedCallOpening, MAX_CALL_OPENING_ENCODED_BYTES, MAX_CALL_OPENING_BODY_BYTES, agentCallOpeningParams, putAgentCallOpeningBody, deleteAgentCallOpeningQuery, callOpeningParam, callOpeningQuery, MAX_10MB_BASE64_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_CARRIERS, MAX_EVAL_ATTACHMENT_AGGREGATE_ENCODED_BYTES, MAX_RESOURCE_ENCODED_BYTES, MAX_HUB_AS_CODE_RESOURCES, MAX_HUB_AS_CODE_RESOURCE_FILES, MAX_RESOURCE_AGGREGATE_ENCODED_BYTES, MAX_CI_CONFIG_BODY_BYTES, MAX_CALL_OPENING_CARRIERS, MAX_CALL_OPENING_AGGREGATE_ENCODED_BYTES, hubAsCodeStateSchema, hubAsCodeResourceFileSchema, hubAsCodeResourceSchema, uuidPattern, ciUuidSchema, boundedHubAsCodeResourcesSchema, hubAsCodeConfigSchema, ciPullHubIdParam, ciBranchParam, ciPullQuery, ciHubsQuery, ciLookupQuery, ciBranchesQuery, ciSyncBody, ciPushBody, ciDiffBody, ciPublishBody, ciPublishPreviewBody, ciSyncMcpBody, ciOrgResourcesParam, orgResourcesConfigSchema, ciOrgResourcesPushBody, ciOrgResourcesDiffBody, CI_APPLY_ENTITY_KINDS, CI_APPLY_OPERATIONS, ciApplyErrorBaseSchema, ciApplyErrorSchema, ciSyncCountSchema, ciSyncChangesSchema, ciSyncWarningSchema, ciSyncResponseSchema;
8146
+ var init_chunk_NCJ3EXN7 = __esm({
8147
+ "../../packages/core/dist/chunk-NCJ3EXN7.js"() {
8148
8148
  "use strict";
8149
- init_chunk_YX7EL2HJ();
8149
+ init_chunk_SNA2DXAC();
8150
8150
  init_chunk_IBL7FANV();
8151
8151
  init_chunk_C2UEA2KW();
8152
- init_chunk_XNDI2XQA();
8152
+ init_chunk_3NS3HULK();
8153
8153
  init_chunk_MIWZOSPI();
8154
8154
  init_chunk_JWPRTSIB();
8155
8155
  init_chunk_T7KQKDET();
8156
8156
  init_chunk_L5F7ZOUJ();
8157
- init_chunk_SSN6QPMX();
8157
+ init_chunk_2ISUBJG7();
8158
8158
  init_zod();
8159
8159
  init_zod();
8160
8160
  init_zod();
@@ -8735,10 +8735,6 @@ var init_chunk_IYXLMIWU = __esm({
8735
8735
  agentParameterCreateSchema,
8736
8736
  external_exports.array(agentParameterCreateSchema).max(MAX_AGENT_PARAMETERS_PER_REQUEST, `too many parameters (max ${MAX_AGENT_PARAMETERS_PER_REQUEST})`)
8737
8737
  ]);
8738
- paginationSchema = external_exports.object({
8739
- limit: external_exports.number().int().positive().max(1e3).default(50),
8740
- offset: external_exports.number().int().min(0).default(0)
8741
- }).optional();
8742
8738
  evalIdParam = external_exports.object({
8743
8739
  id: external_exports.string().uuid()
8744
8740
  });
@@ -9262,6 +9258,7 @@ var init_chunk_IYXLMIWU = __esm({
9262
9258
  "agent",
9263
9259
  "agent_parameter",
9264
9260
  "agent_resource",
9261
+ "automation",
9265
9262
  "connection",
9266
9263
  "eval",
9267
9264
  "hub_config",
@@ -9269,7 +9266,6 @@ var init_chunk_IYXLMIWU = __esm({
9269
9266
  "outbound_contact",
9270
9267
  "outbound_list",
9271
9268
  "outbound_list_contact",
9272
- "outbound_schedule",
9273
9269
  "resource",
9274
9270
  "resource_file",
9275
9271
  "state",
@@ -9336,9 +9332,9 @@ var init_chunk_IYXLMIWU = __esm({
9336
9332
  outbound_lists_created: ciSyncCountSchema,
9337
9333
  outbound_lists_updated: ciSyncCountSchema,
9338
9334
  outbound_lists_deleted: ciSyncCountSchema,
9339
- outbound_schedules_created: ciSyncCountSchema,
9340
- outbound_schedules_updated: ciSyncCountSchema,
9341
- outbound_schedules_deleted: ciSyncCountSchema
9335
+ automations_created: ciSyncCountSchema,
9336
+ automations_updated: ciSyncCountSchema,
9337
+ automations_deleted: ciSyncCountSchema
9342
9338
  });
9343
9339
  ciSyncWarningSchema = external_exports.object({
9344
9340
  code: external_exports.string(),
@@ -9380,7 +9376,7 @@ var init_chunk_XJDAH2N7 = __esm({
9380
9376
  }
9381
9377
  });
9382
9378
 
9383
- // ../../packages/core/dist/chunk-AHLUSB6M.js
9379
+ // ../../packages/core/dist/chunk-UBWCEXTH.js
9384
9380
  function refineLaneReferences(val, ctx) {
9385
9381
  const lanes = val.lanes;
9386
9382
  const statuses = val.kanban_statuses;
@@ -9416,13 +9412,31 @@ function refineScopedTarget(data, ctx) {
9416
9412
  }
9417
9413
  }
9418
9414
  }
9419
- var primaryRegionSchema, placementSourceSchema, orgIdParam, orgAdminIdParam, createOrganizationBody, updateOrganizationBody, addOrgAdminBody, hubIdParam, hubAdminIdParam, hubUserIdParam, hubIdentityIdParam, hubTeamIdParam, hubTeamUserDeleteParam, hubSchemaQuery, PREVIEW_LABEL_MAX_LENGTH, MAX_ENDED_INDEX_RETENTION_DAYS, MAX_EVAL_RETENTION_DAYS, previewLabelField, createHubBody, updateHubBody, addHubAdminBody, addHubIdentityAuthorizationBody, contactDecisionBody, approveContactBody, listContactAccessQuery, createHubTeamBody, updateHubTeamBody, addHubTeamUserBody, reassignHubUserBody, replicatePreviewBody, updateChannelTestIdentitiesBody, claimCodeChannelParam, claimCodeDeleteParam, connectionIdParam, connectorIdParam, listConnectionsQuery, deleteConnectionQuery, addConnectionBody, editConnectionBody, PRODUCTION_DIRECT_FIELDS, setProductionCredentialBody, registerWhatsappQuery, registerWhatsappBody, retryProvisioningQuery, resendDomainStatusQuery, initialValueCreateSchema, initialValueUpdateSchema, stateIdParam, listStatesQuery, stateNameSchema, createStateBody, updateStateBody, reorderStatesBody, variantAiModeSchema, experimentStatusSchema, overlayUpdateSchema, experimentIdParam, variantIdParam, listExperimentsQuery, listVariantsQuery, listOverridesQuery, deleteOverrideQuery, createExperimentBody, updateExperimentBody, setExperimentStatusBody, createVariantBody, updateVariantBody, upsertOverrideBody, orgTagIdParam, listOrgTagsQuery, ORG_TAG_NAME_REGEX, ORG_TAG_NAME_MAX_LENGTH, createOrgTagBody, updateOrgTagBody, orgCredentialIdParam, listOrgCredentialsQuery, createOrgCredentialBody, updateOrgCredentialBody, BASE_CREDENTIAL_MANAGED_BY, BASE_CREDENTIAL_NAME_MAX, baseCredentialNameSchema, createBaseCredentialLinkBody, baseCredentialLinkParams, baseCredentialLinkQuery, orgResourceIdParam, orgResourceFileIdParam, orgResourceFolderIdParam, hubOrgResourceParam, listOrgResourcesQuery, orgIdQuery, createOrgResourceBody, updateOrgResourceBody, createOrgResourceFolderBody, updateOrgResourceFolderBody, uploadOrgResourceFileBody, updateOrgResourceFileBody, uploadOrgSkillZipBody, linkOrgResourceBody, resourceIdParam, listResourcesQuery, createResourceBody, updateResourceBody, syncSkillsBody, resourceFileIdParam, listResourceFilesQuery, createResourceFileBody, updateResourceFileBody, uploadResourceFileBody, uploadSkillZipBody, resourceFolderIdParam, listResourceFoldersQuery, createResourceFolderBody, updateResourceFolderBody, agentResourceQuery, hubResourceQuery, linkAgentResourceBody, updateAgentResourceBody, unlinkAgentResourceQuery, navItemSchema, hubCountResetBody, navItemCountResetBody, typingBody, analyticsHubIdParam, analyticsVariableIdParam, updateVariablePinBody, updateAnalyticsViewBody, NUMERIC_FILTER_OPS, TEXT_FILTER_OPS, CATEGORICAL_FILTER_OPS, VARIABLE_FILTER_OPS, STRUCTURED_QUERY_OPS, STRUCTURED_QUERY_AGGREGATIONS, filterValueSchema, conversationsBody, analyticsConversationIdParam, messagesQuery, conversationDetailDataQuery, analyticsDataBody, structuredQueryBody, analyticsSqlBody, analyticsSqlTable, analyticsSqlSchemaQuery, getConversationsQuery, getMessagesQuery, appMessageSenderType, appMessageReceiverType, apiChannelMessage, apiChannelMessageBody, appMessageBody, appMessageResponse, CALL_STATUSES, callStatus, CALL_END_REASONS, callEndReason, CALL_TRANSPORTS, callTransport, CALL_PARTICIPANT_TYPES, callParticipantType, callInstant, MAX_SDP_OFFER_LENGTH, sdpDescription, sdpOffer, MAX_CALL_REQUEST_BODY_BYTES, hubScoped, callSummaryFields, callSummary, callIdParam, createCallBody, createCallResponse, callReadyBody, callHangupBody, callStatusQuery, MAX_REPORTED_DELEGATION_IDS, callDelegationId, callDelegationsBody, callResponse, MAX_CALL_RECORDING_GAPS, callRecordingGap, callRecordingNoteMetadata, evalCallInstant, EVAL_CALL_MIN_SECONDS, EVAL_CALL_MAX_SECONDS, EVAL_CALL_SPOKEN_LINE_MAX_CHARS, hubScoped2, createEvalCallBody, createEvalCallResponse, evalCallConversationQuery, evalCallRecordQuery, evalCallSpeaker, evalCallUtterance, evalCallTurn, evalCallRecording, evalCallRecordResponse, evalCallFinishResponse, updateUserBody, updateProfileBody, pathnameRegex, updatePreferencesBody, registerPushTokenBody, deletePushTokenQuery, recordAiDisclosureAcceptanceBody, activityQuery, deletionModeSchema, deletionRequestBody, CACHE_RECONCILE_MAX_IDS, CACHE_RECONCILE_MAX_HUBS, cacheReconcileScopeSchema, cachedConversationPageSchema, cachedHistoryThreadSchema, cachedPeopleThreadSchema, cacheReconcileBody, archiveHubIdParam, archiveConversationParams, archiveListQuery, archiveMessageObservabilityParams, conversationIdParam, conversationHubQuery, claimBody, releaseBody, transferBody, closeBody, additionalContextPayloadSchema, kanbanUpdateBody, annotateConversationBody, observabilityParams, observabilityListParams, deleteUserConversationsBody, deleteUserConversationsResponse, sendMessageBody, listConversationsQuery, flagSourceSchema, getConversationsResponse, getConversationDetailParams, getConversationDetailQuery, getConversationDetailResponse, listWhatsAppTemplatesQuery, sendWhatsAppTemplateBody, copilotSuggestBody, copilotSuggestResponse, CONSULT_THREAD_STATUSES, consultThreadStatus, CONSULT_THREAD_TITLE_MAX, consultThreadTitle, consultThreadSummary, listConsultThreadsQuery, listConsultThreadsResponse, createConsultThreadBody, createConsultThreadResponse, consultThreadIdParam, updateConsultThreadBody, updateConsultThreadResponse, CONSULT_AWAIT_TIMEOUT_MS, billingOrgIdParam, subscriptionItemParams, spendCapBody, growthPacksBody, portalSessionBody, checkoutSessionBody, updateBillingCurrencyBody, invoicesQuery, planKeySchema, billingStatusSchema, billingPlanTypeSchema, dataUsageCountersSchema, REKOR_ENTITLEMENT_CONTRACT_VERSION, entitlementProjectionSchema, rekorEntitlementRefreshMessageSchema, downloadBody, uploadQuery, SIGN_URL_MAX_EXPIRES_IN_SECONDS, signUrlBody, outboundSchemaQuery, templateIdParam, listTemplatesQuery, deleteTemplateQuery, templateStatusQuery, createTemplateBody, updateTemplateBody, submitTemplateBody, testTemplateBody, contactIdParam, listContactsQuery, createContactBody, updateContactBody, listIdParam, listListsQuery, listListContactsQuery, createListBody, updateListBody, addListContactsBody, removeListContactsBody, scheduleIdParam, listSchedulesQuery, listExecutionsQuery, createScheduleBody, updateScheduleBody, VERSION_PART, MOBILE_APP_VERSION_RE, mobileAppVersionSchema, MOBILE_PLATFORMS, mobilePlatformSchema, mobileVersionPolicyQuery, mobileVersionPolicySchema, mobileVersionPolicyResponse, adminOrgIdParam, adminOrgAdminIdParam, adminUserIdParam, PRICING_PLAN_ID_RE, adminPlanIdParam, adminOrganizationsQuery, adminUserSearchQuery, kanbanSlugMigrationQuery, adjustQuotaBody, updatePlanBody, addAdminUserBody, MAX_VOICE_CALL_MINUTE_OPS, voiceCallMinuteOps, updatePlatformConfigBody, updateFreeOrgLimitBody, adminScopedTargetShape, adminScopedTargetBody, BRANCHING_ORPHAN_ENTITY_TYPES, BRANCHING_ORPHAN_MAX_TARGETS, adminRepairBranchingOrphansBody, adminRepairLegacyOrgGrantsBody, adminRepairCompedPlansBody, updatePricingPlanBody, dataExplorerSearchQuery, dataExplorerOrgIdParam, dataExplorerHubIdParam, dataExplorerConvIdParam, dataExplorerDoInstancesQuery, dataExplorerNsIdParam, dataExplorerKvKeysBody, dataExplorerKvKeyBody, uuidOrHexId, dataExplorerDeleteOrgParam, dataExplorerDeleteHubParam, dataExplorerDeleteConvParam, dataExplorerDeleteUserParam, dataExplorerDeleteQuery, dataExplorerKvDeleteBody, pitrDoNamespace, pitrBookmarkParam, pitrRestoreBody, healthSamplingTriggerBody, dataExplorerDebugDoType, DEBUG_READ_MAX_LIMIT, DEBUG_READ_DEFAULT_LIMIT, DEBUG_DO_HEX_PREFIX, debugDoEntityId, debugTableName, dataExplorerDebugTablesParam, dataExplorerDebugRowsParam, dataExplorerDebugRowsQuery, dataExplorerDebugAnalyticsTable, debugUuid, dataExplorerDebugAnalyticsRowsParam, dataExplorerDebugAnalyticsRowsQuery, debugHubConvParam, debugMessageIdQuery, sandboxEgressPolicy, SANDBOX_EXEC_MAX_CMD_LENGTH, SANDBOX_EXEC_MAX_ALLOWLIST, SANDBOX_EXEC_MAX_TIMEOUT_MS, adminSandboxExecBody, META_ENTITY_ID_PATTERN, metaEntityId, whatsappCallbackBody, authMeResponse, wsTicketResponse, sessionCheckResponse, logoutResponse, magicCodeSendBody, magicCodeSendResponse, magicCodeVerifyBody, magicCodeVerifyResponse, passwordLoginBody, stateOperationBody, conversationListResourcesQuery, conversationReadResourceQuery, listPendingSchedulesQuery, listHubAggregateSchedulesQuery, reportSourceSchema, intakeReportSourceSchema, reportClassificationSchema, reportStatusSchema, reportLocaleSchema, reportMessageAuthorRoleSchema, reportMessageSchema, sentryRefStatusSchema, createReportBody, editReportBody, reporterReportSummarySchema, reporterListResponseSchema, getReportResponseSchema, reporterTransitionResponseSchema, contestReportBody, reporterListQuery, listReportsQuery, GITHUB_ISSUE_URL_REGEX, githubIssueUrlSchema, transitionReportBody, groupReportsBody, holdReportBody, clickhouseReadyResponse, bootstrapQuery, MAX_NAME_LENGTH, MAX_VALUE_LENGTH, MAX_TAGS, MAX_TAG_LENGTH, MAX_SCOPE_HUBS, MAX_SCOPE_TAGS, vaultSecretScopeSchema, vaultCreateBody, vaultUpdateBody, MAX_NAME_LENGTH2, MAX_HUBS_PER_GRANT, MAX_HUB_TAGS_PER_GRANT, MAX_GRANTS, permissionEnum, grantScopeSchema, grantSchema, createTokenBody, tokenOrgIdParam, invitePreviewQuery, inviteRolePreviewResponse, inviteContactPreviewResponse, invitePreviewResponse, inviteUnsubscribeBody, jsonSchemaSchema, hubUserIdentity, stateValueEntry, getHubUserContextResponse, updateHubUserBody, updateHubUserResponse, unlockHubUserNameResponse, stateResetParams, stateResetResponse, hubAlertsParam, hubAlertSeverity, hubAlert, hubAlertsListResponse, noticeSeveritySchema, noticeStatusSchema, NOTICE_SCOPE_REGEX, noticeScopeSchema, noticeLinkSchema, createNoticeBody, updateNoticeBody, listNoticesQuery, noticeIdParamSchema, ADMIN_SKILL_NAME_REGEX, adminSkillNameParam, REKOR_ACTOR_TYPE_HEADER, REKOR_ACTOR_ID_HEADER, REKOR_ACTOR_LABEL_HEADER, REKOR_ACTOR_ORG_HEADER, REKOR_ACTOR_ADMIN_HEADER, REKOR_CLIENT_HEADER, REKOR_TOOL_ID_HEADER, REKOR_CLIENTS, rekorClientSchema, MAX_REKOR_TOOL_ID_LENGTH, rekorToolIdSchema, DATA_PROXY_MOUNT, DATA_PROXY_PREFIX, REKOR_V1_PREFIX, DATA_PROXY_ORG_QUERY_PARAM, MAX_PROVISIONING_BODY_BYTES, dataProxyQuery, rekorAttestation, REQUIRED_REKOR_ATTESTATION_HEADERS, BASE_DESTRUCTION_MOUNT, BASE_DESTRUCTION_PREFIX, BASE_DESTRUCTION_CONFIRM_PATH, baseDestructionConfirmBody, BASE_DESTRUCTION_GRACE_MS, BASE_DESTRUCTION_CONFIRM_TTL_MS, BASE_DESTRUCTION_ORG_QUERY_PARAM, baseDestructionQuery, baseDestructionParam, baseDestructionInitiateBody, baseDestructionStatus, baseDestructionRequest, baseDestructionListResponse, baseDestructionInitiateResponse, baseDestructionConfirmResponse, baseDestructionCancelResponse, rekorBaseChangeMessageSchema, PEOPLE_CONTACT_PAGE_MAX, PEOPLE_CONTACT_PAGE_DEFAULT, PEOPLE_CONTACT_EMAIL_MAX_LENGTH, peopleUserIdSchema, peopleInviteEmailSchema, peopleContactInviteBody, peopleContactInviteIdParam, peopleContactUserIdParam, peopleContactBlockBody, peopleContactPageQuery, peopleOutgoingInviteSchema, peopleContactPersonSchema, peopleContactSchema, peopleIncomingInviteSchema, peopleBlockedUserSchema, PEOPLE_THREAD_MESSAGE_MAX_LENGTH, PEOPLE_THREAD_MESSAGES_PAGE_MAX, PEOPLE_THREAD_PAGE_MAX, PEOPLE_THREAD_PAGE_DEFAULT, PEOPLE_GROUP_NAME_MAX_LENGTH, PEOPLE_GROUP_AVATAR_URL_MAX_LENGTH, PEOPLE_THREAD_ATTACHMENT_MAX_BYTES, PEOPLE_THREAD_ATTACHMENT_NAME_MAX_LENGTH, PEOPLE_ATTACHMENT_STORAGE_PER_USER_BYTES, PEOPLE_THREAD_ATTACHMENT_MAX_MB, PEOPLE_THREAD_ATTACHMENT_URL_TTL_SECONDS, PEOPLE_THREAD_ATTACHMENT_URLS_MAX, peopleThreadIdParam, peopleThreadMessageIdParam, peopleThreadListQuery, peopleThreadMessagesQuery, peopleThreadAttachmentUploadSchema, peopleThreadSendBody, peopleThreadAttachmentUrlsBody, peopleThreadReadBody, peopleThreadSettingsBody, peopleGroupNameSchema, peopleGroupAvatarUrlSchema, peopleGroupCreateBody, peopleOrgDirectBody, peopleGroupUpdateBody, peopleGroupInviteBody, peopleOrgErasureBody, peopleGroupLeaveBody, peopleGroupInviteIdParam, peopleGroupIncomingInviteIdParam, peopleGroupMemberParam, peopleThreadKindSchema, peopleThreadMemberSchema, peopleThreadLastMessageSchema, peopleGroupRoleSchema, peopleGroupSummarySchema, peopleThreadSummarySchema, peopleThreadAttachmentSchema, peopleThreadMessageSchema, peopleGroupMemberSchema, peopleGroupSentInviteSchema, peopleGroupIncomingInviteSchema, PEOPLE_REPORT_DETAILS_MAX_LENGTH, peopleReportReasonSchema, reportDetailsSchema, reportFields, peopleReportBody, PEOPLE_MODERATION_NOTE_MAX_LENGTH, ADMIN_PEOPLE_REPORTS_PAGE_MAX, ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT, peopleModerationActionSchema, moderationNoteSchema, adminPeopleReportListQuery, adminPeopleReportIdParam, adminPeopleMessageRemovalBody, adminPeopleSuspendBody, adminPeopleNoteBody, COMMUNITIES_PER_ORG_MAX, COMMUNITY_NAME_MAX_LENGTH, COMMUNITY_REGISTRY_CLOSED_REASON, COMMUNITY_JOIN_SOURCE_MAX_LENGTH, COMMUNITY_JOIN_FLOW_TOKEN_MAX_LENGTH, communityNameSchema, adminCreateCommunityBody, communityIdParam, communityJoinTokenSchema, communityJoinSourceSchema, communityJoinPreviewQuery, communityJoinBody;
9420
- var init_chunk_AHLUSB6M = __esm({
9421
- "../../packages/core/dist/chunk-AHLUSB6M.js"() {
9415
+ function parseCommunityLessonVideoUrl(url) {
9416
+ const parts = /^https?:\/\/([^/?#]+)([^?#]*)(?:\?([^#]*))?(?:#.*)?$/i.exec(url.trim());
9417
+ if (!parts) return null;
9418
+ const host = parts[1].toLowerCase();
9419
+ const path36 = parts[2] ?? "";
9420
+ const query = parts[3] ?? "";
9421
+ let id;
9422
+ if (host === YOUTU_BE) {
9423
+ id = /^\/([A-Za-z0-9_-]{11})\/?$/.exec(path36)?.[1];
9424
+ } else if (YOUTUBE_HOSTS.has(host)) {
9425
+ if (path36 === "/watch" || path36 === "/watch/") {
9426
+ id = query.split("&").find((param) => param.startsWith("v="))?.slice(2);
9427
+ } else {
9428
+ id = YOUTUBE_ID_PATH.exec(path36)?.[1];
9429
+ }
9430
+ }
9431
+ return id !== void 0 && YOUTUBE_ID.test(id) ? { provider: "youtube", id } : null;
9432
+ }
9433
+ var primaryRegionSchema, placementSourceSchema, orgIdParam, orgAdminIdParam, createOrganizationBody, updateOrganizationBody, addOrgAdminBody, hubIdParam, hubAdminIdParam, hubUserIdParam, hubIdentityIdParam, hubTeamIdParam, hubTeamUserDeleteParam, hubSchemaQuery, PREVIEW_LABEL_MAX_LENGTH, MAX_ENDED_INDEX_RETENTION_DAYS, MAX_EVAL_RETENTION_DAYS, previewLabelField, hubTagsField, createHubBody, updateHubBody, HUB_TAG_CHANGE_REFUSED, hubTagChangeRefusalSchema, addHubAdminBody, addHubIdentityAuthorizationBody, contactDecisionBody, approveContactBody, listContactAccessQuery, createHubTeamBody, updateHubTeamBody, addHubTeamUserBody, reassignHubUserBody, replicatePreviewBody, updateChannelTestIdentitiesBody, claimCodeChannelParam, claimCodeDeleteParam, connectionIdParam, connectorIdParam, listConnectionsQuery, deleteConnectionQuery, addConnectionBody, editConnectionBody, PRODUCTION_DIRECT_FIELDS, setProductionCredentialBody, registerWhatsappQuery, registerWhatsappBody, retryProvisioningQuery, resendDomainStatusQuery, initialValueCreateSchema, initialValueUpdateSchema, stateIdParam, listStatesQuery, stateNameSchema, createStateBody, updateStateBody, reorderStatesBody, variantAiModeSchema, experimentStatusSchema, overlayUpdateSchema, experimentIdParam, variantIdParam, listExperimentsQuery, listVariantsQuery, listOverridesQuery, deleteOverrideQuery, createExperimentBody, updateExperimentBody, setExperimentStatusBody, createVariantBody, updateVariantBody, upsertOverrideBody, orgTagIdParam, listOrgTagsQuery, ORG_TAG_NAME_REGEX, ORG_TAG_NAME_MAX_LENGTH, createOrgTagBody, updateOrgTagBody, orgCredentialIdParam, listOrgCredentialsQuery, createOrgCredentialBody, updateOrgCredentialBody, BASE_CREDENTIAL_MANAGED_BY, BASE_CREDENTIAL_NAME_MAX, baseCredentialNameSchema, createBaseCredentialLinkBody, baseCredentialLinkParams, baseCredentialLinkQuery, orgResourceIdParam, orgResourceFileIdParam, orgResourceFolderIdParam, hubOrgResourceParam, listOrgResourcesQuery, orgIdQuery, createOrgResourceBody, updateOrgResourceBody, createOrgResourceFolderBody, updateOrgResourceFolderBody, uploadOrgResourceFileBody, updateOrgResourceFileBody, uploadOrgSkillZipBody, linkOrgResourceBody, resourceIdParam, listResourcesQuery, createResourceBody, updateResourceBody, syncSkillsBody, resourceFileIdParam, listResourceFilesQuery, createResourceFileBody, updateResourceFileBody, uploadResourceFileBody, uploadSkillZipBody, resourceFolderIdParam, listResourceFoldersQuery, createResourceFolderBody, updateResourceFolderBody, agentResourceQuery, hubResourceQuery, linkAgentResourceBody, updateAgentResourceBody, unlinkAgentResourceQuery, navItemSchema, hubCountResetBody, navItemCountResetBody, typingBody, analyticsHubIdParam, analyticsVariableIdParam, updateVariablePinBody, updateAnalyticsViewBody, NUMERIC_FILTER_OPS, TEXT_FILTER_OPS, CATEGORICAL_FILTER_OPS, VARIABLE_FILTER_OPS, STRUCTURED_QUERY_OPS, STRUCTURED_QUERY_AGGREGATIONS, filterValueSchema, conversationsBody, analyticsConversationIdParam, messagesQuery, conversationDetailDataQuery, analyticsDataBody, structuredQueryBody, analyticsSqlBody, analyticsSqlTable, analyticsSqlSchemaQuery, getConversationsQuery, getMessagesQuery, appMessageSenderType, appMessageReceiverType, apiChannelMessage, apiChannelMessageBody, appMessageBody, appMessageResponse, CALL_STATUSES, callStatus, CALL_END_REASONS, callEndReason, CALL_TRANSPORTS, callTransport, CALL_PARTICIPANT_TYPES, callParticipantType, callInstant, MAX_SDP_OFFER_LENGTH, sdpDescription, sdpOffer, MAX_CALL_REQUEST_BODY_BYTES, hubScoped, callSummaryFields, callSummary, callIdParam, createCallBody, createCallResponse, callReadyBody, callHangupBody, callStatusQuery, MAX_REPORTED_DELEGATION_IDS, callDelegationId, callDelegationsBody, callResponse, MAX_CALL_RECORDING_GAPS, callRecordingGap, callRecordingNoteMetadata, evalCallInstant, EVAL_CALL_MIN_SECONDS, EVAL_CALL_MAX_SECONDS, EVAL_CALL_SPOKEN_LINE_MAX_CHARS, hubScoped2, createEvalCallBody, createEvalCallResponse, evalCallConversationQuery, evalCallRecordQuery, evalCallSpeaker, evalCallUtterance, evalCallTurn, evalCallRecording, evalCallRecordResponse, evalCallFinishResponse, updateUserBody, updateProfileBody, pathnameRegex, updatePreferencesBody, registerPushTokenBody, deletePushTokenQuery, recordAiDisclosureAcceptanceBody, activityQuery, deletionModeSchema, deletionRequestBody, CACHE_RECONCILE_MAX_IDS, CACHE_RECONCILE_MAX_HUBS, cacheReconcileScopeSchema, cachedConversationPageSchema, cachedHistoryThreadSchema, cachedPeopleThreadSchema, cacheReconcileBody, archiveHubIdParam, archiveConversationParams, archiveListQuery, archiveMessageObservabilityParams, conversationIdParam, conversationHubQuery, claimBody, releaseBody, transferBody, closeBody, additionalContextPayloadSchema, kanbanUpdateBody, annotateConversationBody, observabilityParams, observabilityListParams, deleteUserConversationsBody, deleteUserConversationsResponse, sendMessageBody, listConversationsQuery, flagSourceSchema, getConversationsResponse, getConversationDetailParams, getConversationDetailQuery, getConversationDetailResponse, listWhatsAppTemplatesQuery, sendWhatsAppTemplateBody, copilotSuggestBody, copilotSuggestResponse, CONSULT_THREAD_STATUSES, consultThreadStatus, CONSULT_THREAD_TITLE_MAX, consultThreadTitle, consultThreadSummary, listConsultThreadsQuery, listConsultThreadsResponse, createConsultThreadBody, createConsultThreadResponse, consultThreadIdParam, updateConsultThreadBody, updateConsultThreadResponse, CONSULT_AWAIT_TIMEOUT_MS, billingOrgIdParam, subscriptionItemParams, spendCapBody, growthPacksBody, portalSessionBody, checkoutSessionBody, updateBillingCurrencyBody, invoicesQuery, planKeySchema, billingStatusSchema, billingPlanTypeSchema, dataUsageCountersSchema, REKOR_ENTITLEMENT_CONTRACT_VERSION, entitlementProjectionSchema, rekorEntitlementRefreshMessageSchema, downloadBody, uploadQuery, SIGN_URL_MAX_EXPIRES_IN_SECONDS, signUrlBody, templateIdParam, listTemplatesQuery, deleteTemplateQuery, templateStatusQuery, createTemplateBody, updateTemplateBody, submitTemplateBody, testTemplateBody, contactIdParam, listContactsQuery, createContactBody, updateContactBody, listIdParam, listListsQuery, listListContactsQuery, createListBody, updateListBody, addListContactsBody, removeListContactsBody, AUTOMATION_TRIGGER_TYPES, AUTOMATION_TARGET_TYPES, AUTOMATION_ACTION_TYPES, AUTOMATION_CHANNEL_TYPES, AUTOMATION_NAME_MAX, AUTOMATION_DESCRIPTION_MAX, AUTOMATION_INSTRUCTIONS_MAX, AUTOMATION_TEXT_MAX, AUTOMATION_CRON_MAX, automationTriggerSchema, automationTargetSchema, automationActionSchema, automationName, automationDescription, automationIdParam, automationHubQuery, AUTOMATION_RUNS_PAGE_MAX, listAutomationRunsQuery, createAutomationBody, updateAutomationBody, VERSION_PART, MOBILE_APP_VERSION_RE, mobileAppVersionSchema, MOBILE_PLATFORMS, mobilePlatformSchema, mobileVersionPolicyQuery, mobileVersionPolicySchema, mobileVersionPolicyResponse, adminOrgIdParam, adminOrgAdminIdParam, adminUserIdParam, PRICING_PLAN_ID_RE, adminPlanIdParam, adminOrganizationsQuery, adminUserSearchQuery, kanbanSlugMigrationQuery, adjustQuotaBody, updatePlanBody, addAdminUserBody, MAX_VOICE_CALL_MINUTE_OPS, voiceCallMinuteOps, updatePlatformConfigBody, updateFreeOrgLimitBody, adminScopedTargetShape, adminScopedTargetBody, BRANCHING_ORPHAN_ENTITY_TYPES, BRANCHING_ORPHAN_MAX_TARGETS, adminRepairBranchingOrphansBody, adminRepairLegacyOrgGrantsBody, adminRepairCompedPlansBody, updatePricingPlanBody, dataExplorerSearchQuery, dataExplorerOrgIdParam, dataExplorerHubIdParam, dataExplorerConvIdParam, dataExplorerDoInstancesQuery, dataExplorerNsIdParam, dataExplorerKvKeysBody, dataExplorerKvKeyBody, uuidOrHexId, dataExplorerDeleteOrgParam, dataExplorerDeleteHubParam, dataExplorerDeleteConvParam, dataExplorerDeleteUserParam, dataExplorerDeleteQuery, dataExplorerKvDeleteBody, pitrDoNamespace, pitrBookmarkParam, pitrRestoreBody, healthSamplingTriggerBody, dataExplorerDebugDoType, DEBUG_READ_MAX_LIMIT, DEBUG_READ_DEFAULT_LIMIT, DEBUG_DO_HEX_PREFIX, debugDoEntityId, debugTableName, dataExplorerDebugTablesParam, dataExplorerDebugRowsParam, dataExplorerDebugRowsQuery, dataExplorerDebugAnalyticsTable, debugUuid, dataExplorerDebugAnalyticsRowsParam, dataExplorerDebugAnalyticsRowsQuery, debugHubConvParam, debugMessageIdQuery, sandboxEgressPolicy, SANDBOX_EXEC_MAX_CMD_LENGTH, SANDBOX_EXEC_MAX_ALLOWLIST, SANDBOX_EXEC_MAX_TIMEOUT_MS, adminSandboxExecBody, META_ENTITY_ID_PATTERN, metaEntityId, whatsappCallbackBody, authMeResponse, wsTicketResponse, sessionCheckResponse, logoutResponse, magicCodeSendBody, magicCodeSendResponse, magicCodeVerifyBody, magicCodeVerifyResponse, passwordLoginBody, stateOperationBody, conversationListResourcesQuery, conversationReadResourceQuery, listPendingSchedulesQuery, listHubAggregateSchedulesQuery, reportSourceSchema, intakeReportSourceSchema, reportClassificationSchema, reportStatusSchema, reportLocaleSchema, reportMessageAuthorRoleSchema, reportMessageSchema, sentryRefStatusSchema, createReportBody, editReportBody, reporterReportSummarySchema, reporterListResponseSchema, getReportResponseSchema, reporterTransitionResponseSchema, contestReportBody, reporterListQuery, listReportsQuery, GITHUB_ISSUE_URL_REGEX, githubIssueUrlSchema, transitionReportBody, groupReportsBody, holdReportBody, clickhouseReadyResponse, bootstrapQuery, MAX_NAME_LENGTH, MAX_VALUE_LENGTH, MAX_TAGS, MAX_TAG_LENGTH, MAX_SCOPE_HUBS, MAX_SCOPE_TAGS, vaultSecretScopeSchema, vaultCreateBody, vaultUpdateBody, MAX_NAME_LENGTH2, MAX_HUBS_PER_GRANT, MAX_HUB_TAGS_PER_GRANT, MAX_GRANTS, permissionEnum, grantScopeSchema, grantSchema, createTokenBody, tokenOrgIdParam, invitePreviewQuery, inviteRolePreviewResponse, inviteContactPreviewResponse, invitePreviewResponse, inviteUnsubscribeBody, jsonSchemaSchema, hubUserIdentity, stateValueEntry, getHubUserContextResponse, updateHubUserBody, updateHubUserResponse, unlockHubUserNameResponse, stateResetParams, stateResetResponse, hubAlertsParam, hubAlertSeverity, hubAlert, hubAlertsListResponse, noticeSeveritySchema, noticeStatusSchema, NOTICE_SCOPE_REGEX, noticeScopeSchema, noticeLinkSchema, createNoticeBody, updateNoticeBody, listNoticesQuery, noticeIdParamSchema, ADMIN_SKILL_NAME_REGEX, adminSkillNameParam, REKOR_ACTOR_TYPE_HEADER, REKOR_ACTOR_ID_HEADER, REKOR_ACTOR_LABEL_HEADER, REKOR_ACTOR_ORG_HEADER, REKOR_ACTOR_ADMIN_HEADER, REKOR_CLIENT_HEADER, REKOR_TOOL_ID_HEADER, REKOR_CLIENTS, rekorClientSchema, MAX_REKOR_TOOL_ID_LENGTH, rekorToolIdSchema, DATA_PROXY_MOUNT, DATA_PROXY_PREFIX, REKOR_V1_PREFIX, DATA_PROXY_ORG_QUERY_PARAM, MAX_PROVISIONING_BODY_BYTES, dataProxyQuery, rekorAttestation, REQUIRED_REKOR_ATTESTATION_HEADERS, BASE_DESTRUCTION_MOUNT, BASE_DESTRUCTION_PREFIX, BASE_DESTRUCTION_CONFIRM_PATH, baseDestructionConfirmBody, BASE_DESTRUCTION_GRACE_MS, BASE_DESTRUCTION_CONFIRM_TTL_MS, BASE_DESTRUCTION_ORG_QUERY_PARAM, baseDestructionQuery, baseDestructionParam, baseDestructionInitiateBody, baseDestructionStatus, baseDestructionRequest, baseDestructionListResponse, baseDestructionInitiateResponse, baseDestructionConfirmResponse, baseDestructionCancelResponse, rekorBaseChangeMessageSchema, PEOPLE_CONTACT_PAGE_MAX, PEOPLE_CONTACT_PAGE_DEFAULT, PEOPLE_CONTACT_EMAIL_MAX_LENGTH, peopleUserIdSchema, peopleInviteEmailSchema, peopleContactInviteBody, peopleContactInviteIdParam, peopleContactUserIdParam, peopleContactBlockBody, peopleContactPageQuery, peopleOutgoingInviteSchema, peopleContactPersonSchema, peopleContactSchema, peopleIncomingInviteSchema, peopleBlockedUserSchema, PEOPLE_THREAD_MESSAGE_MAX_LENGTH, PEOPLE_THREAD_MESSAGES_PAGE_MAX, PEOPLE_THREAD_PAGE_MAX, PEOPLE_THREAD_PAGE_DEFAULT, PEOPLE_GROUP_NAME_MAX_LENGTH, PEOPLE_GROUP_AVATAR_URL_MAX_LENGTH, PEOPLE_THREAD_ATTACHMENT_MAX_BYTES, PEOPLE_THREAD_ATTACHMENT_NAME_MAX_LENGTH, PEOPLE_ATTACHMENT_STORAGE_PER_USER_BYTES, PEOPLE_THREAD_ATTACHMENT_MAX_MB, PEOPLE_THREAD_ATTACHMENT_URL_TTL_SECONDS, PEOPLE_THREAD_ATTACHMENT_URLS_MAX, peopleThreadIdParam, peopleThreadMessageIdParam, peopleThreadListQuery, peopleThreadMessagesQuery, peopleThreadAttachmentUploadSchema, peopleThreadSendBody, peopleThreadAttachmentUrlsBody, peopleThreadReadBody, peopleThreadSettingsBody, peopleGroupNameSchema, peopleGroupAvatarUrlSchema, peopleGroupCreateBody, peopleOrgDirectBody, peopleGroupUpdateBody, peopleGroupInviteBody, peopleOrgErasureBody, peopleGroupLeaveBody, peopleGroupInviteIdParam, peopleGroupIncomingInviteIdParam, peopleGroupMemberParam, peopleThreadKindSchema, peopleThreadMemberSchema, peopleThreadLastMessageSchema, peopleGroupRoleSchema, peopleGroupSummarySchema, peopleThreadSummarySchema, peopleThreadAttachmentSchema, peopleThreadMessageSchema, peopleGroupMemberSchema, peopleGroupSentInviteSchema, peopleGroupIncomingInviteSchema, PEOPLE_REPORT_DETAILS_MAX_LENGTH, peopleReportReasonSchema, reportDetailsSchema, reportFields, peopleReportBody, PEOPLE_MODERATION_NOTE_MAX_LENGTH, ADMIN_PEOPLE_REPORTS_PAGE_MAX, ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT, peopleModerationActionSchema, moderationNoteSchema, adminPeopleReportListQuery, adminPeopleReportIdParam, adminPeopleMessageRemovalBody, adminPeopleSuspendBody, adminPeopleNoteBody, COMMUNITIES_PER_ORG_MAX, COMMUNITY_NAME_MAX_LENGTH, COMMUNITY_REGISTRY_CLOSED_REASON, COMMUNITY_JOIN_SOURCE_MAX_LENGTH, COMMUNITY_JOIN_FLOW_TOKEN_MAX_LENGTH, COMMUNITY_ROOM_NAME_MAX_LENGTH, COMMUNITY_MESSAGE_MAX_LENGTH, COMMUNITY_MESSAGES_PAGE_SIZE, COMMUNITY_ATTACHMENT_URLS_MAX, COMMUNITY_POST_TITLE_MAX_LENGTH, COMMUNITY_POST_SEARCH_MAX_LENGTH, COMMUNITY_RULES_MAX_LENGTH, COMMUNITY_SLOW_MODE_MAX_SECONDS, COMMUNITY_COURSES_LABEL_MAX_LENGTH, COMMUNITY_LIVE_TICKET_PREFIX, communityNameSchema, adminCreateCommunityBody, communityIdParam, communityJoinTokenSchema, communityJoinSourceSchema, communityJoinPreviewQuery, communityJoinBody, communityRoomKindSchema, communityRoomNameSchema, communityRoomIdParam, communityMessageIdParam, communityRoomCreateBody, communityRoomUpdateBody, communityMessagesQuery, communityMessageBodySchema, communityPostTitleSchema, communityAttachmentUploadSchema, communitySendBody, communityEditBody, communityPostIdParam, communityPostsQuery, communityAnswerBody, communityReadBody, communityAttachmentUrlsBody, communityPersonParam, communityOrgParam, communityPeopleQuery, communityCoursesLabelSchema, communitySettingsBody, communityBanBody, communityLockBody, communityPinBody, communityModLogQuery, communityReportsQuery, communityReportIdParam, communityLiveTicketSchema, communityLiveQuery, communityMuteBody, communityEmailUnsubscribeTokenSchema, COMMUNITY_EMAIL_UNSUBSCRIBE_PATH, communityEmailUnsubscribeQuery, COMMUNITY_COURSE_TITLE_MAX_LENGTH, COMMUNITY_COURSE_DESCRIPTION_MAX_LENGTH, COMMUNITY_LESSON_BODY_MAX_LENGTH, COMMUNITY_LESSON_LINKS_MAX, COMMUNITY_LESSON_URL_MAX_LENGTH, YOUTUBE_ID, YOUTUBE_HOSTS, YOUTU_BE, YOUTUBE_ID_PATH, communityCourseIdParam, communityCourseModuleIdParam, communityLessonIdParam, communityCourseTitleSchema, communityCourseDescriptionSchema, communityCoursePositionSchema, communityLessonVideoUrlSchema, communityLessonLinkSchema, communityLessonLinksSchema, communityLessonBodySchema, communityCourseCreateBody, communityCourseUpdateBody, communityModuleCreateBody, communityModuleUpdateBody, communityLessonCreateBody, communityLessonUpdateBody, COMMUNITY_LESSON_TREE_MAX_BYTES, COMMUNITY_LESSON_LINK_PROTOCOLS, LINK_SCHEME;
9434
+ var init_chunk_UBWCEXTH = __esm({
9435
+ "../../packages/core/dist/chunk-UBWCEXTH.js"() {
9422
9436
  "use strict";
9423
- init_chunk_FJKE7WIF();
9424
- init_chunk_IYXLMIWU();
9425
- init_chunk_XNDI2XQA();
9437
+ init_chunk_POL7B3EM();
9438
+ init_chunk_NCJ3EXN7();
9439
+ init_chunk_3NS3HULK();
9426
9440
  init_chunk_MIWZOSPI();
9427
9441
  init_chunk_XJDAH2N7();
9428
9442
  init_chunk_JWPRTSIB();
@@ -9479,6 +9493,7 @@ var init_chunk_AHLUSB6M = __esm({
9479
9493
  init_zod();
9480
9494
  init_zod();
9481
9495
  init_zod();
9496
+ init_zod();
9482
9497
  primaryRegionSchema = external_exports.enum([
9483
9498
  "wnam",
9484
9499
  "enam",
@@ -9534,6 +9549,7 @@ var init_chunk_AHLUSB6M = __esm({
9534
9549
  const trimmed = v.trim();
9535
9550
  return trimmed || null;
9536
9551
  });
9552
+ hubTagsField = external_exports.array(external_exports.string()).nullable().optional();
9537
9553
  createHubBody = external_exports.object({
9538
9554
  organization_id: uuidSchema,
9539
9555
  hub_name: external_exports.string().min(1, "hub_name is required"),
@@ -9544,7 +9560,10 @@ var init_chunk_AHLUSB6M = __esm({
9544
9560
  // (change via `wayai relabel` / replicate); the push diff never writes it.
9545
9561
  preview_label: previewLabelField,
9546
9562
  // Write-once at creation; updateHubBody does not accept this.
9547
- primary_region: primaryRegionSchema.optional()
9563
+ primary_region: primaryRegionSchema.optional(),
9564
+ // Org tag ids. Ids that name none of the org's tags are dropped; a hub created with
9565
+ // any is a tag change (`hubTagChangeRefusalSchema`).
9566
+ tags: hubTagsField
9548
9567
  }).passthrough().superRefine(refineLaneReferences);
9549
9568
  updateHubBody = external_exports.object({
9550
9569
  support_model: external_exports.enum(["conversation", "account"]).optional(),
@@ -9589,8 +9608,19 @@ var init_chunk_AHLUSB6M = __esm({
9589
9608
  // connection id on this hub (a REST API (custom tool) connection whose base_url
9590
9609
  // is the Rekor API origin + a bearer/api_key `write:seeds` token). Validated at
9591
9610
  // set-time on the REST PATCH (setup/hubs.ts). Nullable to clear it.
9592
- seed_connection_id: uuidSchema.nullable().optional()
9611
+ seed_connection_id: uuidSchema.nullable().optional(),
9612
+ // Org tag ids, replacing the hub's; null clears them. A change is refused to anyone
9613
+ // but an org admin (`hubTagChangeRefusalSchema`).
9614
+ tags: hubTagsField
9593
9615
  }).passthrough().superRefine(refineLaneReferences);
9616
+ HUB_TAG_CHANGE_REFUSED = "hub_tag_change_requires_org_admin";
9617
+ hubTagChangeRefusalSchema = external_exports.object({
9618
+ reason: external_exports.literal(HUB_TAG_CHANGE_REFUSED),
9619
+ operation: external_exports.enum(["update", "publish"]),
9620
+ hub_id: external_exports.string(),
9621
+ tags_added: external_exports.array(external_exports.string()),
9622
+ tags_removed: external_exports.array(external_exports.string())
9623
+ });
9594
9624
  addHubAdminBody = external_exports.object({
9595
9625
  user_email: external_exports.string().email("valid email is required")
9596
9626
  });
@@ -10673,7 +10703,14 @@ var init_chunk_AHLUSB6M = __esm({
10673
10703
  * with it receives thread pushes, whose `data` carries `thread_id` and no `conversation_id`.
10674
10704
  * Each registration states it afresh, so a build that sends none clears it.
10675
10705
  */
10676
- supports_threads: external_exports.boolean().optional()
10706
+ supports_threads: external_exports.boolean().optional(),
10707
+ /**
10708
+ * The build opens a community from a push (gh #4872 Decision 8): only a token registered with it
10709
+ * receives a community's pushes (an announcement, a reply to the member's forum post), whose
10710
+ * `data` is `CommunityPushData` — never a `conversation_id` or a `thread_id`. Each registration
10711
+ * states it afresh, so a build that sends none clears it.
10712
+ */
10713
+ supports_communities: external_exports.boolean().optional()
10677
10714
  });
10678
10715
  deletePushTokenQuery = external_exports.object({
10679
10716
  token: external_exports.string().min(1).max(512)
@@ -11001,7 +11038,7 @@ var init_chunk_AHLUSB6M = __esm({
11001
11038
  });
11002
11039
  sendWhatsAppTemplateBody = external_exports.object({
11003
11040
  hub_id: external_exports.string().uuid(),
11004
- /** HubDO outbound_template.template_id. */
11041
+ /** HubDO message_template.template_id. */
11005
11042
  template_id: external_exports.string().min(1).max(128),
11006
11043
  /** The conversation's end user (customer). Bounded like `claimBody.user_id`. */
11007
11044
  user_receiver_id: external_exports.string().regex(SAFE_USER_ID_REGEX),
@@ -11170,9 +11207,6 @@ var init_chunk_AHLUSB6M = __esm({
11170
11207
  filePath: external_exports.string(),
11171
11208
  expiresIn: external_exports.number().int().positive().max(SIGN_URL_MAX_EXPIRES_IN_SECONDS).optional()
11172
11209
  });
11173
- outboundSchemaQuery = external_exports.object({
11174
- type: external_exports.enum(["whatsapp", "email", "app", "all"]).default("all")
11175
- });
11176
11210
  templateIdParam = external_exports.object({
11177
11211
  id: external_exports.string().uuid()
11178
11212
  });
@@ -11259,45 +11293,62 @@ var init_chunk_AHLUSB6M = __esm({
11259
11293
  removeListContactsBody = external_exports.object({
11260
11294
  contact_ids: external_exports.array(external_exports.string().uuid()).min(1)
11261
11295
  });
11262
- scheduleIdParam = external_exports.object({
11296
+ AUTOMATION_TRIGGER_TYPES = ["schedule", "event", "webhook"];
11297
+ AUTOMATION_TARGET_TYPES = ["none", "contact_list"];
11298
+ AUTOMATION_ACTION_TYPES = ["run_agent", "send_message"];
11299
+ AUTOMATION_CHANNEL_TYPES = ["whatsapp", "instagram", "email", "app"];
11300
+ AUTOMATION_NAME_MAX = 100;
11301
+ AUTOMATION_DESCRIPTION_MAX = 1e3;
11302
+ AUTOMATION_INSTRUCTIONS_MAX = 1e4;
11303
+ AUTOMATION_TEXT_MAX = 4096;
11304
+ AUTOMATION_CRON_MAX = 512;
11305
+ automationTriggerSchema = external_exports.object({
11306
+ type: external_exports.enum(AUTOMATION_TRIGGER_TYPES),
11307
+ cron: external_exports.string().trim().min(1).max(AUTOMATION_CRON_MAX).optional(),
11308
+ timezone: external_exports.string().trim().min(1).optional()
11309
+ }).strict();
11310
+ automationTargetSchema = external_exports.object({
11311
+ type: external_exports.enum(AUTOMATION_TARGET_TYPES),
11312
+ list_id: external_exports.string().uuid().optional()
11313
+ }).strict();
11314
+ automationActionSchema = external_exports.object({
11315
+ type: external_exports.enum(AUTOMATION_ACTION_TYPES),
11316
+ channel: external_exports.enum(AUTOMATION_CHANNEL_TYPES).optional(),
11317
+ connection_id: external_exports.string().uuid().nullable().optional(),
11318
+ template_id: external_exports.string().uuid().nullable().optional(),
11319
+ text: external_exports.string().max(AUTOMATION_TEXT_MAX).nullable().optional(),
11320
+ agent_id: external_exports.string().uuid().nullable().optional(),
11321
+ instructions: external_exports.string().max(AUTOMATION_INSTRUCTIONS_MAX).nullable().optional()
11322
+ }).strict();
11323
+ automationName = external_exports.string().trim().min(1).max(AUTOMATION_NAME_MAX);
11324
+ automationDescription = external_exports.string().max(AUTOMATION_DESCRIPTION_MAX).nullable().optional();
11325
+ automationIdParam = external_exports.object({
11263
11326
  id: external_exports.string().uuid()
11264
11327
  });
11265
- listSchedulesQuery = external_exports.object({
11328
+ automationHubQuery = external_exports.object({
11266
11329
  hub_id: external_exports.string().uuid()
11267
11330
  });
11268
- listExecutionsQuery = external_exports.object({
11331
+ AUTOMATION_RUNS_PAGE_MAX = 50;
11332
+ listAutomationRunsQuery = external_exports.object({
11333
+ hub_id: external_exports.string().uuid(),
11269
11334
  page: external_exports.coerce.number().int().min(1).default(1),
11270
- per_page: external_exports.coerce.number().int().min(1).max(50).default(10)
11335
+ per_page: external_exports.coerce.number().int().min(1).max(AUTOMATION_RUNS_PAGE_MAX).default(10)
11271
11336
  });
11272
- createScheduleBody = external_exports.object({
11337
+ createAutomationBody = external_exports.object({
11273
11338
  hub_id: external_exports.string().uuid(),
11274
- schedule_name: external_exports.string().min(1),
11275
- description: external_exports.string().nullable().optional(),
11276
- cron_expression: external_exports.string().min(1),
11277
- timezone: external_exports.string().default("UTC"),
11278
- list_id: external_exports.string().uuid(),
11279
- channel_type: external_exports.enum(["whatsapp", "instagram", "email", "app"]),
11280
- connection_id: external_exports.string().uuid().nullable().optional(),
11281
- execution_mode: external_exports.enum(["direct_message", "agent_trigger"]).default("direct_message"),
11282
- template_whatsapp_id: external_exports.string().uuid().nullable().optional(),
11283
- initial_message: external_exports.string().nullable().optional(),
11284
- agent_id: external_exports.string().uuid().nullable().optional(),
11285
- trigger_message: external_exports.string().nullable().optional()
11286
- });
11287
- updateScheduleBody = external_exports.object({
11288
- schedule_name: external_exports.string().min(1).optional(),
11289
- description: external_exports.string().nullable().optional(),
11290
- cron_expression: external_exports.string().min(1).optional(),
11291
- timezone: external_exports.string().optional(),
11292
- list_id: external_exports.string().uuid().optional(),
11293
- channel_type: external_exports.enum(["whatsapp", "instagram", "email", "app"]).optional(),
11294
- connection_id: external_exports.string().uuid().nullable().optional(),
11295
- execution_mode: external_exports.enum(["direct_message", "agent_trigger"]).optional(),
11296
- template_whatsapp_id: external_exports.string().uuid().nullable().optional(),
11297
- initial_message: external_exports.string().nullable().optional(),
11298
- agent_id: external_exports.string().uuid().nullable().optional(),
11299
- trigger_message: external_exports.string().nullable().optional()
11300
- });
11339
+ name: automationName,
11340
+ description: automationDescription,
11341
+ trigger: automationTriggerSchema,
11342
+ target: automationTargetSchema,
11343
+ action: automationActionSchema
11344
+ }).strict();
11345
+ updateAutomationBody = external_exports.object({
11346
+ name: automationName.optional(),
11347
+ description: automationDescription,
11348
+ trigger: automationTriggerSchema.optional(),
11349
+ target: automationTargetSchema.optional(),
11350
+ action: automationActionSchema.optional()
11351
+ }).strict();
11301
11352
  VERSION_PART = "(0|[1-9][0-9]{0,5})";
11302
11353
  MOBILE_APP_VERSION_RE = new RegExp(`^${VERSION_PART}\\.${VERSION_PART}\\.${VERSION_PART}$`);
11303
11354
  mobileAppVersionSchema = external_exports.string().regex(MOBILE_APP_VERSION_RE, "must be a MAJOR.MINOR.PATCH version, e.g. 1.0.0");
@@ -11470,7 +11521,6 @@ var init_chunk_AHLUSB6M = __esm({
11470
11521
  "eval",
11471
11522
  "mcp_tool",
11472
11523
  "outbound_contact",
11473
- "outbound_schedule",
11474
11524
  "resource",
11475
11525
  "resource_folder",
11476
11526
  "tool"
@@ -12206,7 +12256,10 @@ var init_chunk_AHLUSB6M = __esm({
12206
12256
  }).strict();
12207
12257
  peopleContactInviteIdParam = external_exports.object({ inviteId: uuidSchema });
12208
12258
  peopleContactUserIdParam = external_exports.object({ userId: peopleUserIdSchema });
12209
- peopleContactBlockBody = external_exports.object({ user_id: peopleUserIdSchema, thread_id: uuidSchema.optional() }).strict();
12259
+ peopleContactBlockBody = external_exports.object({ user_id: peopleUserIdSchema, thread_id: uuidSchema.optional(), community_id: uuidSchema.optional() }).strict().refine((body) => body.thread_id === void 0 || body.community_id === void 0, {
12260
+ message: "Name a thread or a community, not both",
12261
+ path: ["community_id"]
12262
+ });
12210
12263
  peopleContactPageQuery = external_exports.object({
12211
12264
  cursor: external_exports.string().min(1).max(256).optional(),
12212
12265
  limit: external_exports.coerce.number().int().min(1).max(PEOPLE_CONTACT_PAGE_MAX).default(PEOPLE_CONTACT_PAGE_DEFAULT)
@@ -12379,7 +12432,15 @@ var init_chunk_AHLUSB6M = __esm({
12379
12432
  peopleReportBody = external_exports.discriminatedUnion("target", [
12380
12433
  external_exports.object({ target: external_exports.literal("message"), thread_id: uuidSchema, message_id: uuidSchema, ...reportFields }).strict(),
12381
12434
  external_exports.object({ target: external_exports.literal("thread"), thread_id: uuidSchema, ...reportFields }).strict(),
12382
- external_exports.object({ target: external_exports.literal("user"), user_id: peopleUserIdSchema, thread_id: uuidSchema.optional(), ...reportFields }).strict()
12435
+ external_exports.object({ target: external_exports.literal("user"), user_id: peopleUserIdSchema, thread_id: uuidSchema.optional(), ...reportFields }).strict(),
12436
+ external_exports.object({
12437
+ target: external_exports.literal("community_message"),
12438
+ community_id: uuidSchema,
12439
+ room_id: uuidSchema,
12440
+ message_id: uuidSchema,
12441
+ ...reportFields
12442
+ }).strict(),
12443
+ external_exports.object({ target: external_exports.literal("community_member"), community_id: uuidSchema, user_id: peopleUserIdSchema, ...reportFields }).strict()
12383
12444
  ]);
12384
12445
  PEOPLE_MODERATION_NOTE_MAX_LENGTH = 500;
12385
12446
  ADMIN_PEOPLE_REPORTS_PAGE_MAX = 100;
@@ -12402,6 +12463,16 @@ var init_chunk_AHLUSB6M = __esm({
12402
12463
  COMMUNITY_REGISTRY_CLOSED_REASON = "community_registry_closed";
12403
12464
  COMMUNITY_JOIN_SOURCE_MAX_LENGTH = 32;
12404
12465
  COMMUNITY_JOIN_FLOW_TOKEN_MAX_LENGTH = 128;
12466
+ COMMUNITY_ROOM_NAME_MAX_LENGTH = 100;
12467
+ COMMUNITY_MESSAGE_MAX_LENGTH = 4e3;
12468
+ COMMUNITY_MESSAGES_PAGE_SIZE = 50;
12469
+ COMMUNITY_ATTACHMENT_URLS_MAX = COMMUNITY_MESSAGES_PAGE_SIZE + 2;
12470
+ COMMUNITY_POST_TITLE_MAX_LENGTH = 200;
12471
+ COMMUNITY_POST_SEARCH_MAX_LENGTH = 100;
12472
+ COMMUNITY_RULES_MAX_LENGTH = 4e3;
12473
+ COMMUNITY_SLOW_MODE_MAX_SECONDS = 21600;
12474
+ COMMUNITY_COURSES_LABEL_MAX_LENGTH = 16;
12475
+ COMMUNITY_LIVE_TICKET_PREFIX = "cst";
12405
12476
  communityNameSchema = external_exports.string().trim().min(1).max(COMMUNITY_NAME_MAX_LENGTH);
12406
12477
  adminCreateCommunityBody = external_exports.object({ org_id: uuidSchema, name: communityNameSchema }).strict();
12407
12478
  communityIdParam = external_exports.object({ communityId: uuidSchema });
@@ -12413,6 +12484,118 @@ var init_chunk_AHLUSB6M = __esm({
12413
12484
  src: communityJoinSourceSchema.optional(),
12414
12485
  flow_token: external_exports.string().max(COMMUNITY_JOIN_FLOW_TOKEN_MAX_LENGTH).optional()
12415
12486
  }).strict();
12487
+ communityRoomKindSchema = external_exports.enum(["discussion", "forum", "announcements"]);
12488
+ communityRoomNameSchema = external_exports.string().trim().min(1).max(COMMUNITY_ROOM_NAME_MAX_LENGTH);
12489
+ communityRoomIdParam = external_exports.object({ communityId: uuidSchema, roomId: uuidSchema });
12490
+ communityMessageIdParam = external_exports.object({ communityId: uuidSchema, roomId: uuidSchema, messageId: uuidSchema });
12491
+ communityRoomCreateBody = external_exports.object({ kind: communityRoomKindSchema, name: communityRoomNameSchema }).strict();
12492
+ communityRoomUpdateBody = external_exports.object({ name: communityRoomNameSchema.optional(), archived: external_exports.boolean().optional() }).strict().refine((b) => b.name !== void 0 || b.archived !== void 0, "nothing to change");
12493
+ communityMessagesQuery = external_exports.object({
12494
+ before: external_exports.coerce.number().int().min(1).optional(),
12495
+ after: external_exports.coerce.number().int().min(0).optional()
12496
+ }).refine((q) => q.before === void 0 || q.after === void 0, "before and after cannot be combined");
12497
+ communityMessageBodySchema = external_exports.string().max(COMMUNITY_MESSAGE_MAX_LENGTH).refine((body) => body.trim().length > 0, "must not be empty");
12498
+ communityPostTitleSchema = external_exports.string().trim().min(1).max(COMMUNITY_POST_TITLE_MAX_LENGTH);
12499
+ communityAttachmentUploadSchema = peopleThreadAttachmentUploadSchema;
12500
+ communitySendBody = external_exports.object({
12501
+ body: external_exports.string().max(COMMUNITY_MESSAGE_MAX_LENGTH).default(""),
12502
+ client_message_id: uuidSchema.optional(),
12503
+ title: communityPostTitleSchema.optional(),
12504
+ parent_message_id: uuidSchema.optional(),
12505
+ attachment: communityAttachmentUploadSchema.optional()
12506
+ }).strict().refine((b) => b.title === void 0 || b.parent_message_id === void 0, "a post is not a reply: send a title or a parent_message_id, not both").refine((b) => b.body.trim().length > 0 || b.attachment !== void 0, { message: "must not be empty", path: ["body"] });
12507
+ communityEditBody = external_exports.object({ body: communityMessageBodySchema, title: communityPostTitleSchema.optional() }).strict();
12508
+ communityPostIdParam = external_exports.object({ communityId: uuidSchema, roomId: uuidSchema, postId: uuidSchema });
12509
+ communityPostsQuery = external_exports.object({
12510
+ before_activity: external_exports.coerce.number().int().min(1).optional(),
12511
+ q: optionalTrimmedText(COMMUNITY_POST_SEARCH_MAX_LENGTH),
12512
+ unanswered: external_exports.enum(["true", "false"]).optional().transform((value) => value === "true")
12513
+ });
12514
+ communityAnswerBody = external_exports.object({ reply_id: uuidSchema.nullable() }).strict();
12515
+ communityReadBody = external_exports.object({ seq: external_exports.number().int().min(0) }).strict();
12516
+ communityAttachmentUrlsBody = external_exports.object({ attachment_ids: external_exports.array(uuidSchema).min(1).max(COMMUNITY_ATTACHMENT_URLS_MAX) }).strict();
12517
+ communityPersonParam = external_exports.object({ communityId: uuidSchema, userId: peopleUserIdSchema });
12518
+ communityOrgParam = external_exports.object({ orgId: uuidSchema });
12519
+ communityPeopleQuery = external_exports.object({ after: peopleUserIdSchema.optional() });
12520
+ communityCoursesLabelSchema = external_exports.string().trim().max(COMMUNITY_COURSES_LABEL_MAX_LENGTH);
12521
+ communitySettingsBody = external_exports.object({
12522
+ rules: external_exports.string().trim().max(COMMUNITY_RULES_MAX_LENGTH).nullable().optional().transform((rules) => rules === "" ? null : rules),
12523
+ slow_mode_seconds: external_exports.number().int().min(0).max(COMMUNITY_SLOW_MODE_MAX_SECONDS).optional(),
12524
+ courses_label: communityCoursesLabelSchema.optional()
12525
+ }).strict().refine((b) => b.rules !== void 0 || b.slow_mode_seconds !== void 0 || b.courses_label !== void 0, "nothing to change");
12526
+ communityBanBody = external_exports.object({ delete_messages: external_exports.boolean().optional() }).strict();
12527
+ communityLockBody = external_exports.object({ locked: external_exports.boolean() }).strict();
12528
+ communityPinBody = external_exports.object({ pinned: external_exports.boolean() }).strict();
12529
+ communityModLogQuery = external_exports.object({ before: external_exports.coerce.number().int().min(1).optional() });
12530
+ communityReportsQuery = communityModLogQuery.extend({
12531
+ pending: external_exports.enum(["true", "false"]).optional().transform((value) => value === "true")
12532
+ });
12533
+ communityReportIdParam = external_exports.object({ communityId: uuidSchema, reportId: uuidSchema });
12534
+ communityLiveTicketSchema = external_exports.string().regex(new RegExp(`^${COMMUNITY_LIVE_TICKET_PREFIX}_[A-Za-z0-9_-]{43}$`));
12535
+ communityLiveQuery = external_exports.object({ ticket: communityLiveTicketSchema });
12536
+ communityMuteBody = external_exports.object({ muted: external_exports.boolean() }).strict();
12537
+ communityEmailUnsubscribeTokenSchema = external_exports.string().max(200).regex(/^[0-9a-f-]{36}\.[A-Za-z0-9_-]{1,64}\.[0-9a-f]{64}$/i);
12538
+ COMMUNITY_EMAIL_UNSUBSCRIBE_PATH = "/api/communities/email-unsubscribe";
12539
+ communityEmailUnsubscribeQuery = external_exports.object({ token: communityEmailUnsubscribeTokenSchema });
12540
+ COMMUNITY_COURSE_TITLE_MAX_LENGTH = 200;
12541
+ COMMUNITY_COURSE_DESCRIPTION_MAX_LENGTH = 2e3;
12542
+ COMMUNITY_LESSON_BODY_MAX_LENGTH = 2e4;
12543
+ COMMUNITY_LESSON_LINKS_MAX = 10;
12544
+ COMMUNITY_LESSON_URL_MAX_LENGTH = 2e3;
12545
+ YOUTUBE_ID = /^[A-Za-z0-9_-]{11}$/;
12546
+ YOUTUBE_HOSTS = /* @__PURE__ */ new Set(["youtube.com", "www.youtube.com", "m.youtube.com", "youtube-nocookie.com", "www.youtube-nocookie.com"]);
12547
+ YOUTU_BE = "youtu.be";
12548
+ YOUTUBE_ID_PATH = /^\/(?:embed|shorts|live|v)\/([A-Za-z0-9_-]{11})\/?$/;
12549
+ communityCourseIdParam = external_exports.object({ communityId: uuidSchema, courseId: uuidSchema });
12550
+ communityCourseModuleIdParam = external_exports.object({ communityId: uuidSchema, courseId: uuidSchema, moduleId: uuidSchema });
12551
+ communityLessonIdParam = external_exports.object({ communityId: uuidSchema, courseId: uuidSchema, lessonId: uuidSchema });
12552
+ communityCourseTitleSchema = external_exports.string().trim().min(1).max(COMMUNITY_COURSE_TITLE_MAX_LENGTH);
12553
+ communityCourseDescriptionSchema = external_exports.string().trim().max(COMMUNITY_COURSE_DESCRIPTION_MAX_LENGTH);
12554
+ communityCoursePositionSchema = external_exports.number().int().min(0);
12555
+ communityLessonVideoUrlSchema = external_exports.string().trim().max(COMMUNITY_LESSON_URL_MAX_LENGTH).transform((url, ctx) => {
12556
+ const video = parseCommunityLessonVideoUrl(url);
12557
+ if (video) return video;
12558
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, message: "Only a YouTube video URL is accepted" });
12559
+ return external_exports.NEVER;
12560
+ });
12561
+ communityLessonLinkSchema = external_exports.object({
12562
+ title: communityCourseTitleSchema,
12563
+ url: external_exports.string().trim().max(COMMUNITY_LESSON_URL_MAX_LENGTH).url().refine((url) => /^https?:\/\//i.test(url), "must be an http or https URL")
12564
+ }).strict();
12565
+ communityLessonLinksSchema = external_exports.array(communityLessonLinkSchema).max(COMMUNITY_LESSON_LINKS_MAX);
12566
+ communityLessonBodySchema = external_exports.string().max(COMMUNITY_LESSON_BODY_MAX_LENGTH);
12567
+ communityCourseCreateBody = external_exports.object({ title: communityCourseTitleSchema, description: communityCourseDescriptionSchema.optional() }).strict();
12568
+ communityCourseUpdateBody = external_exports.object({
12569
+ title: communityCourseTitleSchema.optional(),
12570
+ description: communityCourseDescriptionSchema.optional(),
12571
+ position: communityCoursePositionSchema.optional(),
12572
+ published: external_exports.boolean().optional()
12573
+ }).strict().refine((b) => Object.values(b).some((value) => value !== void 0), "nothing to change");
12574
+ communityModuleCreateBody = external_exports.object({ title: communityCourseTitleSchema }).strict();
12575
+ communityModuleUpdateBody = external_exports.object({ title: communityCourseTitleSchema.optional(), position: communityCoursePositionSchema.optional() }).strict().refine((b) => b.title !== void 0 || b.position !== void 0, "nothing to change");
12576
+ communityLessonCreateBody = external_exports.object({
12577
+ module_id: uuidSchema,
12578
+ title: communityCourseTitleSchema,
12579
+ video_url: communityLessonVideoUrlSchema.nullable().optional(),
12580
+ body: communityLessonBodySchema.optional(),
12581
+ links: communityLessonLinksSchema.optional(),
12582
+ room_id: uuidSchema.nullable().optional(),
12583
+ requires_paid_plan: external_exports.boolean().optional()
12584
+ }).strict();
12585
+ communityLessonUpdateBody = external_exports.object({
12586
+ module_id: uuidSchema.optional(),
12587
+ title: communityCourseTitleSchema.optional(),
12588
+ video_url: communityLessonVideoUrlSchema.nullable().optional(),
12589
+ body: communityLessonBodySchema.optional(),
12590
+ links: communityLessonLinksSchema.optional(),
12591
+ room_id: uuidSchema.nullable().optional(),
12592
+ requires_paid_plan: external_exports.boolean().optional(),
12593
+ position: communityCoursePositionSchema.optional(),
12594
+ published: external_exports.boolean().optional()
12595
+ }).strict().refine((b) => Object.values(b).some((value) => value !== void 0), "nothing to change");
12596
+ COMMUNITY_LESSON_TREE_MAX_BYTES = 512 * 1024;
12597
+ COMMUNITY_LESSON_LINK_PROTOCOLS = ["http", "https", "mailto"];
12598
+ LINK_SCHEME = new RegExp(`^(${COMMUNITY_LESSON_LINK_PROTOCOLS.join("|")}):`, "i");
12416
12599
  }
12417
12600
  });
12418
12601
 
@@ -12515,20 +12698,20 @@ var init_chunk_R5WRRHCL = __esm({
12515
12698
  var init_contracts = __esm({
12516
12699
  "../../packages/core/dist/contracts/index.js"() {
12517
12700
  "use strict";
12518
- init_chunk_AHLUSB6M();
12519
- init_chunk_FJKE7WIF();
12520
- init_chunk_IYXLMIWU();
12521
- init_chunk_YX7EL2HJ();
12701
+ init_chunk_UBWCEXTH();
12702
+ init_chunk_POL7B3EM();
12703
+ init_chunk_NCJ3EXN7();
12704
+ init_chunk_SNA2DXAC();
12522
12705
  init_chunk_R5WRRHCL();
12523
12706
  init_chunk_IBL7FANV();
12524
12707
  init_chunk_C2UEA2KW();
12525
- init_chunk_XNDI2XQA();
12708
+ init_chunk_3NS3HULK();
12526
12709
  init_chunk_MIWZOSPI();
12527
12710
  init_chunk_XJDAH2N7();
12528
12711
  init_chunk_JWPRTSIB();
12529
12712
  init_chunk_T7KQKDET();
12530
12713
  init_chunk_L5F7ZOUJ();
12531
- init_chunk_SSN6QPMX();
12714
+ init_chunk_2ISUBJG7();
12532
12715
  }
12533
12716
  });
12534
12717
 
@@ -13528,42 +13711,6 @@ var init_chunk_BF4WRSOQ = __esm({
13528
13711
  }
13529
13712
  });
13530
13713
 
13531
- // ../../packages/core/dist/chunk-A5NDENFB.js
13532
- var decisionAnswerSchema, decisionsResponseSchema;
13533
- var init_chunk_A5NDENFB = __esm({
13534
- "../../packages/core/dist/chunk-A5NDENFB.js"() {
13535
- "use strict";
13536
- init_zod();
13537
- decisionAnswerSchema = external_exports.discriminatedUnion("type", [
13538
- external_exports.object({
13539
- type: external_exports.literal("choice"),
13540
- choice: external_exports.string(),
13541
- confidence: external_exports.number().optional()
13542
- }),
13543
- external_exports.object({
13544
- type: external_exports.literal("score"),
13545
- score: external_exports.number(),
13546
- confidence: external_exports.number().optional()
13547
- }),
13548
- external_exports.object({
13549
- type: external_exports.literal("noul"),
13550
- noul: external_exports.number()
13551
- })
13552
- ]);
13553
- decisionsResponseSchema = external_exports.object({
13554
- id: external_exports.string().optional(),
13555
- model: external_exports.string().optional(),
13556
- provider: external_exports.string().optional(),
13557
- answers: external_exports.record(decisionAnswerSchema),
13558
- usage: external_exports.object({
13559
- input_tokens: external_exports.number().optional(),
13560
- output_tokens: external_exports.number().optional(),
13561
- cost: external_exports.number().optional()
13562
- }).optional()
13563
- });
13564
- }
13565
- });
13566
-
13567
13714
  // ../../packages/core/dist/chunk-R7VSUKKX.js
13568
13715
  function isPublicIdentifier(value) {
13569
13716
  return UUID_RE.test(value) || HEX_RE.test(value) || WORKOS_ID_RE.test(value) || TRACE_HEADER_RE.test(value);
@@ -13767,7 +13914,7 @@ var init_chunk_MHWOQS63 = __esm({
13767
13914
  }
13768
13915
  });
13769
13916
 
13770
- // ../../packages/core/dist/chunk-Q4KTDDYO.js
13917
+ // ../../packages/core/dist/chunk-ERFR7IRY.js
13771
13918
  function findStepBoundaries(transcript) {
13772
13919
  const out = [];
13773
13920
  const n = transcript.length;
@@ -13802,10 +13949,10 @@ function findStepBoundaries(transcript) {
13802
13949
  }
13803
13950
  return out;
13804
13951
  }
13805
- var init_chunk_Q4KTDDYO = __esm({
13806
- "../../packages/core/dist/chunk-Q4KTDDYO.js"() {
13952
+ var init_chunk_ERFR7IRY = __esm({
13953
+ "../../packages/core/dist/chunk-ERFR7IRY.js"() {
13807
13954
  "use strict";
13808
- init_chunk_SSN6QPMX();
13955
+ init_chunk_2ISUBJG7();
13809
13956
  }
13810
13957
  });
13811
13958
 
@@ -13837,27 +13984,26 @@ var ENDPOINT_CONFIGS, WAYAI_WORKSPACE_LAYOUT;
13837
13984
  var init_dist = __esm({
13838
13985
  "../../packages/core/dist/index.js"() {
13839
13986
  "use strict";
13840
- init_chunk_AHLUSB6M();
13841
- init_chunk_FJKE7WIF();
13842
- init_chunk_IYXLMIWU();
13843
- init_chunk_YX7EL2HJ();
13987
+ init_chunk_UBWCEXTH();
13988
+ init_chunk_POL7B3EM();
13989
+ init_chunk_NCJ3EXN7();
13990
+ init_chunk_SNA2DXAC();
13844
13991
  init_chunk_R5WRRHCL();
13845
13992
  init_chunk_IBL7FANV();
13846
13993
  init_chunk_IOJOM4DE();
13847
13994
  init_chunk_C2UEA2KW();
13848
- init_chunk_XNDI2XQA();
13995
+ init_chunk_3NS3HULK();
13849
13996
  init_chunk_MIWZOSPI();
13850
13997
  init_chunk_5UOHWWD5();
13851
13998
  init_chunk_XJDAH2N7();
13852
13999
  init_chunk_JWPRTSIB();
13853
14000
  init_chunk_BF4WRSOQ();
13854
- init_chunk_A5NDENFB();
13855
14001
  init_chunk_T7KQKDET();
13856
14002
  init_chunk_L5F7ZOUJ();
13857
14003
  init_chunk_MHWOQS63();
13858
14004
  init_chunk_R7VSUKKX();
13859
- init_chunk_Q4KTDDYO();
13860
- init_chunk_SSN6QPMX();
14005
+ init_chunk_ERFR7IRY();
14006
+ init_chunk_2ISUBJG7();
13861
14007
  init_chunk_FEOO3UPS();
13862
14008
  ENDPOINT_CONFIGS = {
13863
14009
  // OAuth callbacks - strict, fail-closed (prevent brute force)
@@ -13944,6 +14090,18 @@ var init_dist = __esm({
13944
14090
  skipAuthenticatedUsers: true,
13945
14091
  userLimitKey: "/api/outbound/*"
13946
14092
  },
14093
+ "/api/automations/*": {
14094
+ tier: "STANDARD",
14095
+ userLimit: 150,
14096
+ skipAuthenticatedUsers: true,
14097
+ userLimitKey: "/api/automations/*"
14098
+ },
14099
+ "/api/message-templates/*": {
14100
+ tier: "STANDARD",
14101
+ userLimit: 150,
14102
+ skipAuthenticatedUsers: true,
14103
+ userLimitKey: "/api/message-templates/*"
14104
+ },
13947
14105
  "/api/live-updates/*": { tier: "STANDARD", userLimit: 150, skipAuthenticatedUsers: true },
13948
14106
  "/api/hub-users/*": {
13949
14107
  tier: "STANDARD",
@@ -14241,9 +14399,12 @@ var init_dist = __esm({
14241
14399
  skipAuthenticatedUsers: true,
14242
14400
  userLimitKey: "/api/threads/reports"
14243
14401
  },
14244
- // Communities (gh #4872, `routes/api/communities`): join, leave and the org admins' join link
14245
- // share one per-user budget. Every caller is signed in, so the per-IP tier is skipped; the key
14246
- // is pinned because the paths carry community ids.
14402
+ // Communities (gh #4872, `routes/api/communities`): every signed-in route under the mount (the
14403
+ // preview below excepted) shares one per-user budget, which is also each member's send limit and
14404
+ // bounds the reads that scan a community's rows (a title search, the stats); a community's own
14405
+ // limits (its rate, the daily caps, slow mode) are counted in its CommunityDO, in the write they
14406
+ // bound. Every caller is signed in, so the per-IP tier is skipped; the key is pinned because the
14407
+ // paths carry community, room and message ids.
14247
14408
  "/api/communities/*": {
14248
14409
  tier: "STANDARD",
14249
14410
  userLimit: 60,
@@ -14255,6 +14416,12 @@ var init_dist = __esm({
14255
14416
  // owner-delegated decision 9). MODERATE (30/min per IP) leaves room for reloads and several
14256
14417
  // tabs. An exact key, so it wins over the wildcard above.
14257
14418
  "/api/communities/join-preview": { tier: "MODERATE" },
14419
+ // An announcement email's unsubscribe (#4872 PR 8a) — public: its token is its one credential, so
14420
+ // this per-IP limit is its one bound, and runs before the route reads anything. MODERATE (30/min
14421
+ // per IP), not STRICT: mail clients' one-click unsubscribe POSTs it from their own servers, which
14422
+ // many members' clicks share, and STRICT's 5/min bucket is shared with sign-in. An exact key, so
14423
+ // it wins over the wildcard above.
14424
+ [COMMUNITY_EMAIL_UNSUBSCRIBE_PATH]: { tier: "MODERATE" },
14258
14425
  // App channel - high throughput with user limits
14259
14426
  "/channels/app/*": { tier: "HIGH", userLimit: 500, skipAuthenticatedUsers: true },
14260
14427
  // API channel (api-channel-connector) - machine-to-machine, high throughput
@@ -14264,6 +14431,11 @@ var init_dist = __esm({
14264
14431
  "/scheduled/*": { tier: "HIGH", skipAuthenticatedUsers: true },
14265
14432
  // WebSocket - standard with user limit to prevent connection spam
14266
14433
  "/live-updates/ws": { tier: "STANDARD", userLimit: 100, failClosed: true },
14434
+ // A community's live socket (gh #4872 PR 5, `GET /communities/:communityId/live`): outside
14435
+ // `/api/*`, with no bearer token, so its per-IP tier is its one bound before the CommunityDO
14436
+ // checks the ticket. STANDARD, as `/live-updates/ws`: a client opens one per community it shows
14437
+ // and reconnects within the hour.
14438
+ "/communities/*": { tier: "STANDARD" },
14267
14439
  // WS ticket mint - per-user 60/min accommodates aggressive reconnect patterns
14268
14440
  // without opening abuse vectors; fail-closed so Redis outages don't let
14269
14441
  // runaway clients mint unbounded tickets.
@@ -17281,7 +17453,7 @@ import * as path11 from "path";
17281
17453
  import * as crypto3 from "crypto";
17282
17454
  function isBinaryFile(filename) {
17283
17455
  const ext = filename.split(".").pop()?.toLowerCase() || "";
17284
- return BINARY_EXTENSIONS2.has(ext);
17456
+ return BINARY_EXTENSIONS.has(ext);
17285
17457
  }
17286
17458
  function guessMimeType(filename) {
17287
17459
  const ext = filename.split(".").pop()?.toLowerCase() || "";
@@ -17481,13 +17653,13 @@ async function downloadBinaryFiles(resDir, files, root, log) {
17481
17653
  }
17482
17654
  return count;
17483
17655
  }
17484
- var BINARY_EXTENSIONS2, MAX_RESOURCE_FILE_SIZE2;
17656
+ var BINARY_EXTENSIONS, MAX_RESOURCE_FILE_SIZE2;
17485
17657
  var init_resource_files = __esm({
17486
17658
  "src/lib/resource-files.ts"() {
17487
17659
  "use strict";
17488
17660
  init_fs_safety();
17489
17661
  init_contracts();
17490
- BINARY_EXTENSIONS2 = /* @__PURE__ */ new Set([
17662
+ BINARY_EXTENSIONS = /* @__PURE__ */ new Set([
17491
17663
  "pdf",
17492
17664
  "png",
17493
17665
  "jpg",
@@ -17921,8 +18093,11 @@ function parseHubFolder(hubFolder, opts) {
17921
18093
  if (config.outbound_lists && config.outbound_lists.length > 0) {
17922
18094
  payload.outbound_lists = config.outbound_lists;
17923
18095
  }
17924
- if (config.outbound_schedules && config.outbound_schedules.length > 0) {
17925
- payload.outbound_schedules = config.outbound_schedules;
18096
+ if (Array.isArray(config.automations)) {
18097
+ payload.automations = config.automations;
18098
+ }
18099
+ if (config.outbound_schedules !== void 0) {
18100
+ console.warn(" Warning: hub.yaml `outbound_schedules:` is no longer read \u2014 schedules are now `automations:` (see the wayai skill). Its entries were not pushed.");
17926
18101
  }
17927
18102
  const bytesByHash = /* @__PURE__ */ new Map();
17928
18103
  const evals = scanEvalYamlFiles(hubFolder, bytesByHash, unreadable);
@@ -18430,8 +18605,8 @@ function buildYamlPayload(payload) {
18430
18605
  if (payload.outbound_lists && payload.outbound_lists.length > 0) {
18431
18606
  result.outbound_lists = payload.outbound_lists;
18432
18607
  }
18433
- if (payload.outbound_schedules && payload.outbound_schedules.length > 0) {
18434
- result.outbound_schedules = payload.outbound_schedules;
18608
+ if (payload.automations && payload.automations.length > 0) {
18609
+ result.automations = payload.automations;
18435
18610
  }
18436
18611
  return result;
18437
18612
  }
@@ -19959,9 +20134,9 @@ Sync complete. Preview hub: ${result.preview_hub_id}`);
19959
20134
  if (c.outbound_lists_created > 0) parts.push(`${c.outbound_lists_created} outbound list(s) created`);
19960
20135
  if (c.outbound_lists_updated > 0) parts.push(`${c.outbound_lists_updated} outbound list(s) updated`);
19961
20136
  if (c.outbound_lists_deleted > 0) parts.push(`${c.outbound_lists_deleted} outbound list(s) deleted`);
19962
- if (c.outbound_schedules_created > 0) parts.push(`${c.outbound_schedules_created} outbound schedule(s) created`);
19963
- if (c.outbound_schedules_updated > 0) parts.push(`${c.outbound_schedules_updated} outbound schedule(s) updated`);
19964
- if (c.outbound_schedules_deleted > 0) parts.push(`${c.outbound_schedules_deleted} outbound schedule(s) deleted`);
20137
+ if (c.automations_created > 0) parts.push(`${c.automations_created} automation(s) created`);
20138
+ if (c.automations_updated > 0) parts.push(`${c.automations_updated} automation(s) updated`);
20139
+ if (c.automations_deleted > 0) parts.push(`${c.automations_deleted} automation(s) deleted`);
19965
20140
  if (parts.length > 0) {
19966
20141
  console.log(`Changes: ${parts.join(", ")}`);
19967
20142
  }
@@ -29013,7 +29188,7 @@ async function runPeopleList(flagArgs) {
29013
29188
  for (const r of result.data) {
29014
29189
  const age = minutesAgo(r.created_at);
29015
29190
  const state = r.action_count === 0 ? "pending" : `${r.action_count} action${r.action_count === 1 ? "" : "s"}`;
29016
- const about = r.reported_user_id ? ` reported:${r.reported_user_id}` : "";
29191
+ const about = `${r.reported_user_id ? ` reported:${r.reported_user_id}` : ""}${r.community_id ? ` community:${r.community_id}` : ""}`;
29017
29192
  console.log(` ${r.report_id} [${r.reason} \xB7 ${r.target} \xB7 ${state}]${about} ${age}m ago`);
29018
29193
  }
29019
29194
  } catch (err) {
@@ -29080,7 +29255,7 @@ async function runPeopleRemoveMessage(positional, flagArgs) {
29080
29255
  const messageId = flagValue(flags, "message");
29081
29256
  const note = flagValue(flags, "note");
29082
29257
  if (flags.yes !== "true") {
29083
- console.log(`About to delete ${messageId ? `message ${messageId}` : "the reported message"} of report ${reportId} for everyone in its thread.`);
29258
+ console.log(`About to delete ${messageId ? `message ${messageId}` : "the reported message"} of report ${reportId} for everyone in its thread or community.`);
29084
29259
  console.log("Its text and file are erased; this cannot be undone.");
29085
29260
  const ok = await confirm("Proceed?");
29086
29261
  if (!ok) {
@@ -29113,7 +29288,7 @@ async function runPeopleSuspension(suspend, positional, flagArgs) {
29113
29288
  try {
29114
29289
  if (suspend) {
29115
29290
  printPeopleAction(await client.suspendAdminPeopleUser(userId, { report_id: reportId, note }), "The account was already suspended.");
29116
- console.log("It can no longer send messages or invites, accept invites, or create or change groups. Nobody else is told.");
29291
+ console.log("It can no longer send messages or invites, accept invites, or create or change groups; in communities it cannot post, join, moderate or create rooms. Nobody else is told.");
29117
29292
  } else {
29118
29293
  printPeopleAction(await client.unsuspendAdminPeopleUser(userId, { note }), "The account was not suspended.");
29119
29294
  }
@@ -29295,16 +29470,16 @@ Sources:
29295
29470
  (title/description/error/steps/context) while pending/escalated \u2014 the
29296
29471
  dedup fingerprint stays frozen and no email fires. Agent/Sentry rows
29297
29472
  never trigger emails.
29298
- people Moderation of person-to-person messaging: the reports people file from the
29299
- app (each also emailed to the platform admins) and the team's answer, due
29300
- within 24 hours (App Store guideline 1.2). \`list\` is newest first with each
29301
- report's action count (--pending: none yet); \`show\` prints one with the
29302
- messages its reporter saw and its actions. \`remove-message\` deletes, for
29303
- everyone, the report's message \u2014 or --message, another of its thread's.
29304
- \`suspend\` stops an account reaching anyone on the people surface: no
29305
- messages, invites, accepted invites, new groups or group changes; it can still
29306
- read, delete its own messages, leave, block and report, and nobody else is
29307
- told. \`unsuspend\` lifts it; \`user\` prints an account's suspension and
29473
+ people Moderation of person-to-person messaging and communities: the reports people
29474
+ file from the app (each also emailed to the platform admins) and the team's
29475
+ answer, due within 24 hours (App Store guideline 1.2). \`list\` is newest first
29476
+ with each report's action count (--pending: none yet); \`show\` prints one with
29477
+ the messages its reporter saw and its actions. \`remove-message\` deletes, for
29478
+ everyone, the report's message \u2014 or --message, another of its thread's or
29479
+ community's. \`suspend\` stops an account reaching anyone on the people surface:
29480
+ no messages, invites, accepted invites, new groups or group changes, and in
29481
+ communities no posts, joins, moderation or new rooms; it can still read, delete
29482
+ its own messages, leave, block and report, and nobody else is told. \`unsuspend\` lifts it; \`user\` prints an account's suspension and
29308
29483
  the actions on it. \`dismiss\` records a report reviewed with nothing to do.
29309
29484
  Each action is recorded with who took it and when; repeating one changes
29310
29485
  nothing and records it again.