lua-cli 3.50.0 → 3.52.0

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
@@ -4317,8 +4317,8 @@ function normalizeWorkItems(items) {
4317
4317
  if (item.needsAction !== void 0 && typeof item.needsAction !== "boolean") {
4318
4318
  throw new Error(`Work item ${index}: \`needsAction\` must be a boolean`);
4319
4319
  }
4320
- const when3 = item.updatedAt;
4321
- const date = when3 instanceof Date ? when3 : typeof when3 === "string" ? new Date(when3) : null;
4320
+ const when4 = item.updatedAt;
4321
+ const date = when4 instanceof Date ? when4 : typeof when4 === "string" ? new Date(when4) : null;
4322
4322
  if (!date || Number.isNaN(date.getTime())) {
4323
4323
  throw new Error(`Work item ${index}: \`updatedAt\` must be a valid date`);
4324
4324
  }
@@ -5790,6 +5790,13 @@ function luaClientMetricLabels(client2) {
5790
5790
  client_attribution: canonical2?.attribution ?? "unknown"
5791
5791
  };
5792
5792
  }
5793
+ function webAppPreviewSessionBinding(webAppId, previewId) {
5794
+ const binding = `${webAppId}--p-${previewId}`;
5795
+ if (!WEB_APP_ID_PATTERN.test(binding)) {
5796
+ throw new Error(`Web app preview session binding does not fit WEB_APP_ID_PATTERN: ${binding.length} characters`);
5797
+ }
5798
+ return binding;
5799
+ }
5793
5800
  function parseEffectiveAuthorization(value3) {
5794
5801
  const parsed = EffectiveAuthorizationSchema.safeParse(value3);
5795
5802
  return parsed.success ? parsed.data : void 0;
@@ -6656,6 +6663,9 @@ function isWebRouteInput(value3) {
6656
6663
  if (!app || typeof app.id !== "string" || typeof app.name !== "string" || typeof app.origin !== "string") return false;
6657
6664
  return true;
6658
6665
  }
6666
+ function agentPaneEnabled(version) {
6667
+ return version?.agentPane !== false;
6668
+ }
6659
6669
  function evidenceDisplayText(text2) {
6660
6670
  const raw = typeof text2 === "string" ? text2 : "";
6661
6671
  if (!raw.trim()) return "";
@@ -7622,7 +7632,7 @@ function sharedDataOwnerKey(collectionId) {
7622
7632
  function isSharedDataOwnerKey(agentId2) {
7623
7633
  return typeof agentId2 === "string" && agentId2.startsWith(SHARED_DATA_OWNER_PREFIX);
7624
7634
  }
7625
- var __defProp3, __name3, PLUMBING_THREAD_CHANNELS, CHANNEL_CONVERSATION_CHANNELS, HIDDEN_THREAD_CHANNELS, CHOICE_PERSON_TURN_CHANNELS, CHOICE_REPLAY_CLIENT_CAPABILITIES, CHOICE_REPLAY_CLIENT_SURFACES, DECISION_PROVIDERS, DECISION_FALLBACK_PROVIDERS, OPENROUTER_DIRECT_VENDORS, OPENROUTER_NEEDS_MODEL_MESSAGE, DECISION_QUESTION_TYPES, DECISION_NAME_PATTERN, DECISION_SANDBOX_SITE_HEADER, DECISION_SANDBOX_PRIMITIVE_HEADER, DECISION_SANDBOX_TOOL_SEPARATOR, DECISION_LIMITS, DECISION_ERROR_CODES, DECISION_INACTIVE_CODE, MAX_NAME_CHARS, InstructionsSchema, NameSchema, OddsQuestionSchema, ChoiceQuestionSchema, ScoreQuestionSchema, DecisionQuestionSchema, DecisionOptionsSchema, DecisionQuestionsSchema, DecisionDefinitionSchema, DecisionDefinitionWriteSchema, INTEGRATION_PASSTHROUGH_READ_METHODS, URL_REINTERPRETED_PATH_CHARACTERS, PERCENT_ENCODED_DOT, PERCENT_ESCAPE, DECODED_PATH_SEPARATORS, DECODED_LEADING_SEPARATOR, MAX_PERCENT_DECODE_ROUNDS, URL_RESOLUTION_PROBE_BASE, PLATFORM_INVOCATION_CALLERS, MESSAGING_CHANNELS, VOICE_CHANNELS, TURN_CATEGORIES, AGENT_TOOL_CATEGORIES, count, AnthropicSseUsageReader, SUPERVISION_OPS, SUPERVISION_OPS_WAVE2, SUPERVISION_WATCHDOG_OPS, SUPERVISION_WATCHDOG_ERRORS, SUPERVISION_ROLLBACK_REFUSAL_CODES, SUPERVISION_ROLLBACK_LINEAGE_MAX, SUPERVISION_UNTARGETED_OPS, SUPERVISED_WORKFLOW_VERSIONS_MAX, SUPERVISION_EVENT_KINDS, AGENT_PROVISIONING_LIMITS, AGENT_PROVISIONING_APPROVAL_PAYLOAD_KEY, AGENT_PROVISIONING_ERRORS, PROVISIONED_SUPERVISION_ACTIONS, isNonEmptyString, uniqueStrings, sameSet, AGENT_PROVISIONING_APPROVAL_CARD_MAX_CHARS, APPROVAL_PAYLOAD_MEMBERS, AGENT_CONNECTION_POLICIES, AGENT_CONNECTION_POLICY_DEFAULT, AGENT_CONNECTION_MOUNT_MODES, AGENT_CONNECTION_GOVERNANCE_ERRORS, AGENT_CONNECTION_OPERATION_RULES_MAX, AGENT_CONNECTION_OPERATION_PATTERN_MAX_LENGTH, OPERATION_RULE_METHODS, PATH_SEPARATOR, PATH_SINGLE_SEGMENT_WILDCARD, PATH_REST_WILDCARD, METHOD_OVERRIDE_HEADER_NAMES, METHOD_OVERRIDE_QUERY_NAMES, ODATA_BATCH_SEGMENT, GOOGLE_BATCH_FIRST_SEGMENT, CONNECTION_CHECK_RESULTS, CONNECTION_CHECK_CATALOGUE_V1, CONNECTION_CHECK_NAME_PATTERN, CONNECTION_CHECK_NAME_MAX, CONNECT_OUTCOME_STATUSES, SECRET_TEST_RESULTS, SECRET_DATADOG_REGIONS, SECRET_PROVIDER_CATALOGUE_V1, SECRET_TEST_MAX_RESPONSE_BYTES, SECRET_ENV_KEY_PATTERN, SECRET_REQUEST_ERRORS, SECRET_OUTCOME_STATUSES, CLIENT_OUTCOME_TURNS_MAX, SHORT_TEXT_MAX, SLUG_MAX, shortText, optionalShortText, CONNECTION_REQUEST_TERMINAL_STATES, CONNECTION_USE_ORIGINS, AGENT_CONNECTION_OPERATION_LIMITS_BOUNDS, CURRENCY_CODE, LIMITS_KEYS, CAPS_KEYS, EXCLUSIONS_KEYS, EMAIL_IN_TEXT, MAX_EXCLUSION_DEPTH, PROJECTION_PARAMETER_KEYS, CHANNEL_PARAMETER_KEYS, GMAIL_SYSTEM_LABEL_IDS, ZERO_DECIMAL_CURRENCIES, THREE_DECIMAL_CURRENCIES, DECIMAL_AMOUNT, REDACTED_PLACEHOLDER, PROVIDER_MESSAGE_MAX_CHARS, ERROR_MESSAGE_MAX_CHARS, SECRET_LITERAL_PATTERNS, SECRET_NAME, SECRET_PAIR_PATTERNS, GROUP_COUNT, WORKFLOW_SECRET_KEY_RE, WORKFLOW_RESERVED_SECRET_KEYS, SCRUB_INPUT_MAX_CHARS, SCRUB_CUT_BACKOFF_CHARS, SCRUB_DEEP_MAX_DEPTH, TEST_SESSION_ID_PATTERN, TEST_SESSION_COLLECTION_PREFIX, TEST_EFFECT_BODY_MAX_BYTES, TEST_EFFECT_DROPPED_HEADERS, EVAL_CREDITS_PER_1K_TOKENS, EVAL_RESERVED_TOOL_ID_PREFIXES, SUPERVISED_SECRET_LIMITS, SUPERVISED_SECRET_NAME_RE, SUPERVISED_SECRET_FIELD_RE, SUPERVISED_SECRET_KEY_FIELD, SUPERVISED_SECRET_ERRORS, CONNECTION_HANDOVER_APPROVAL_PAYLOAD_KEY, CONNECTION_HANDOVER_APPROVAL_CARD_MAX_CHARS, CONNECTION_HANDOVER_LIMITS, MEMBERS, FORMAT_CHARS, oneLine, boundedString, AGENT_METRIC_NAME_PATTERN, AGENT_METRIC_LIMITS, AGENT_OBJECTIVE_ERRORS, CHANGE_LEASE_TTL_MINUTES_MIN, CHANGE_LEASE_TTL_MINUTES_MAX, CHANGE_LEASE_REASON_MAX, CHANGE_LEASE_ERRORS, AGENT_CONFIG_SET_LIMITS, SECRET_ENV_KEY_SUFFIXES, DEFAULT_OWNER_DEPARTURE_POLICY, AGENT_LIFECYCLE_ERRORS, USER_COST_COUNTER_TTL_SECONDS, USER_COST_ATTRIBUTION_CHANNELS, CALLER_DEDUPE_KEY_MAX, FOLLOW_UP_IDEMPOTENCY_TTL_SECONDS, THREAD_FOLLOW_UP_LIMITS, THREAD_FOLLOW_UP_ERRORS, PROGRESS_UPDATE_LIMITS, PAUSABLE_CAPABILITY_KINDS, UNIFIED_CATCH_UP_MAX_WINDOW_HOURS, UNIFIED_CATCH_UP_EVENTS, UNIFIED_CATCH_UP_FILTERABLE_OBJECT_TYPES, AGENT_NEVER_RULES_MAX, AGENT_NEVER_RULE_FIELD_MAX, AGENT_NEVER_RULE_INPUT_MATCH_MAX, NEVER_RULE_ID_PATTERN, NEVER_RULE_HTTP_METHODS, TEMPLATE_DISTRIBUTION_MODES, TAKEOVER_MAX_IDLE_MINUTES, MINUTES_PER_DAY, DEFAULT_IDLE_RELEASE_MINUTES, FALLBACK_IDLE_RELEASE_MINUTES, VARIATION_SELECTORS, SLACK_EMOJI_NAMES, SLACK_SHORTCODE, PLAIN_EMAIL_ADDRESS, DOMAIN, UNSAFE_TEXT, SLACK_CONVERSATION_ID, CHANNEL_SETTING_GROUPS, THREAD_SCOPING_NOUN, TAKEOVER_CHANNEL_TYPES, EMAIL_SETTINGS, SLACK_SETTING_DEFAULTS, SLACK_REACTION_MAX, SLACK_INTRO_MAX, SLACK_EXAMPLE_PROMPTS_MAX, SLACK_EXAMPLE_PROMPT_MAX, SLACK_SUPPORT_CONTACT_MAX, SLACK_SETTINGS, CHANNEL_SETTINGS, REVIEWABLE_ACTION_EXECUTE_TOOL_ALLOWLIST, REVIEWABLE_STANDING_START_TOOLS, REVIEWABLE_MCP_SEND_TOOL_SUFFIX, MCP_TOOL_READ_VERB_RE, MCP_DRAFT_CREATE_VERBS, NON_INTERACTIVE_CHANNELS, RICH_PARTS_MESSAGE_ID_PREFIX, SCREENSHOT_MESSAGE_ID_PREFIX, WORK_ITEMS_KEY, MAX_WORK_ITEMS, LIMITS, BROWSER_COMMANDS, BROWSER_COMMAND_NAMES, SERVER_TRIGGERED_BROWSER_SOURCES, BROWSER_FALLBACKS, DEFAULT_BROWSER_FALLBACK, PROXY_COUNTRY_CODE, BROWSER_LOG_CONTENT_MODES, DEFAULT_BROWSER_LOG_CONTENT, BROWSER_SCREENSHOT_POLICIES, DEFAULT_BROWSER_SCREENSHOT_POLICY, BROWSER_ENGINES, BROWSER_PROFILE_NAME_PATTERN, BROWSER_LIMIT_KEYS, BROWSER_LIMIT_MAX, BROWSER_EXECUTE_METHOD, BROWSER_GLOBAL_METHODS, BROWSER_EXECUTE_DEFAULT_TIMEOUT_MS, BROWSER_EXECUTE_MAX_TIMEOUT_MS, LOG_FIELDS_MAX_KEYS, LOG_FIELD_MAX_VALUE_BYTES, LOG_FIELDS_MAX_BYTES, LOG_FIELD_KEY_PATTERN, LOG_FIELD_SECRET_SHAPED_KEY_PATTERNS, LOG_FIELDS_CLAMPED_KEY, LOG_FIELD_ARRAY_COUNT_SUFFIX, LuaLogFieldsError, DESKTOP_FILE_COMMANDS, DESKTOP_FILE_COMMAND_SET, BROWSER_READ_FORMATS, BROWSER_READ_DEFAULT_TIMEOUT_MS, BROWSER_READ_MIN_TIMEOUT_MS, BROWSER_READ_MAX_TIMEOUT_MS, BROWSER_READ_MAX_CONTENT_CHARS, BROWSER_READ_DEFAULT_SELECTOR, BROWSER_READ_MATCH_SEPARATOR, BROWSER_READ_LOGIN_BLOCKER, BROWSER_ERROR_NAME, HTTP_STATUS_FAILURE, LOGIN_PATH_SEGMENTS, LOGIN_HOST_LABELS, AGENT_LOG_SOURCES, AGENT_LOG_ENVIRONMENTS, AGENT_LOG_FIELDS_MAX_WIRE_KEYS, BROWSER_LOG_EVENT_KINDS, BROWSER_LOG_ENGINES, BROWSER_SESSION_OPEN_REASONS, BROWSER_BLOCK_KINDS, BROWSER_WALL_KINDS, BROWSER_WALL_NEXT_ACTIONS, BROWSER_CONFIRM_DECISIONS, BROWSER_SESSION_CLOSE_REASONS, BROWSER_LOG_CONTEXT_KEYS, BROWSER_LOG_ID_MAX_CHARS, BROWSER_LOG_TEXT_MAX_CHARS, isString, isBoolean, isCount, isPlainObject3, oneOf, isLimits, EVENT_SHAPES, BASE_KEYS, BROWSER_WORKER_SESSION_ID_SEPARATOR, BROWSER_WORKER_BLOCK_REASON_MAX_CHARS, WORKFLOW_RETRY_BACKOFFS, WORKFLOW_RETRY_MIN_ATTEMPTS, WORKFLOW_RETRY_POLICY_KEYS, WORKFLOW_RETRY_MAX_ATTEMPTS, WORKFLOW_RETRY_ENGINE_KEYS, WORKFLOW_JOB_RESOURCES, WORKFLOW_SIDE_EFFECTS, WORKFLOW_AGENT_EFFORTS, WORKFLOW_MODEL_CLASSES, WORKFLOW_TASK_CLASSES, WORKFLOW_MODEL_TRAITS, WORKFLOW_MODEL_REASON_MAX_LENGTH, WORKFLOW_MODELS_COMPOSE_MODES, WORKFLOW_MODELS_PIN_MODES, WORKFLOW_MODELS_FALLBACK_MODES, WORKFLOW_MODELS_CONSENT_ACTIONS_MIN, WORKFLOW_DEFAULT_TASK_CLASS_MAP, WORKFLOW_MODELS_MAX_CLASS_DEFAULT, WORKFLOW_AUTONOMY_FORMS, WORKFLOW_AUTONOMY_NUMERIC_KEYS, WORKFLOW_AUTONOMY_ENVELOPE_KEYS, WORKFLOW_AUTONOMY_ENABLED_DEFAULT, WORKFLOW_AUTONOMY_DEFAULTS, WORKFLOW_AUTONOMY_CEILINGS, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_ENV, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_CEILING, WORKFLOW_AUTONOMY_FORMS_DEFAULT, WORKFLOW_AUTONOMY_MIN_VALUE, WORKFLOW_JOB_RANGES, WORKFLOW_JOB_RANGE_MEMBERS, WORKFLOW_SINGLE_STEP_TYPES, WORKFLOW_HITL_ENTRY_TYPES, WORKFLOW_ARM_ENTRY_TYPES, WORKFLOW_HITL_ARM_CONTAINERS, WORKFLOW_GRAPH_ENTRY_STEP_KINDS, WORKFLOW_ARM_ENTRY_STEP_KINDS, WORKFLOW_BUDGET_MAX_DURATION_SECONDS, MODEL_ID_BYOK_PROVIDERS, MODEL_CLASS_REF_PREFIX, MODEL_SNAPSHOT_SUFFIX, REASONING_EFFORT_VALUES, IMPLICIT_MODEL_SELECTION_SOURCES, PLATFORM_FALLBACK_MODEL_SOURCE, AGENT_NAME_TOKEN, DEFAULT_PERSONA_GUIDE, PERSONAL_SPACE_STARTING_PERSONA, LOG_DRAIN_TYPES_PHASE1, LOG_DRAIN_TYPES_PHASE2, LOG_DRAIN_TYPES_IMPLEMENTED, LOG_DRAIN_FORMATS, LOG_DRAIN_SEVERITIES, LOG_DRAIN_SOURCES, LOG_DRAIN_CONTENT_SOURCES, LOG_DRAIN_DEFAULT_SOURCES, LOG_DRAIN_MAX_PER_ORG, LOG_DRAIN_MAX_PER_ORG_ENTERPRISE, LOG_DRAIN_DATADOG_SITES, LOG_DRAIN_NEWRELIC_SITES, LOG_DRAIN_ENDPOINT_TEMPLATES, LOG_DRAIN_PRESET_SITES, LOG_DRAIN_BUCKET_NAME_PATTERN, LOG_DRAIN_BUCKET_HOST_PATTERNS, LOG_DRAIN_PRESET_HOST_SUFFIXES, DRAIN_CONTENT_ACK_ERROR_CODE, DRAIN_CONTENT_ACK_FIELD, DrainContentAckRequiredError, LOG_DRAIN_PRESET_PATHS, PRESET_SEGMENT_RE, LOG_DRAIN_QUOTAS, LOG_DRAIN_QUOTA_WARN_RATIO, LOG_DRAIN_QUOTA_DROP_DEBUG_RATIO, LOG_DRAIN_QUOTA_DROP_INFO_RATIO, LOG_DRAIN_QUOTA_PAUSE_RATIO, LOG_EXPORT_SOURCES, LOG_EXPORT_MAX_WINDOW_DAYS, LOG_EXPORT_MAX_WINDOW_MS, LOG_EXPORT_URL_TTL_SECONDS, LOG_EXPORT_FILE_RETENTION_DAYS, LOG_EXPORT_FILE_RETENTION_MS, LOG_EXPORT_PART_MAX_BYTES, LOG_DRAIN_NOTICE_RATE_LIMIT_MS, LOG_DRAIN_VERIFICATION_STALE_MS, LOG_DRAIN_DIGEST_INTERVAL_MS, LOG_DRAIN_DIGEST_MAX_ENTRIES, LOG_DRAIN_NOTICE_ERROR_MAX_CHARS, LOG_DRAIN_USAGE_LINE_ITEM, LOG_DRAIN_BYTES_PER_GIB, DEFAULT_LOG_DRAIN_PLAN_CONFIG, TIERS, LOG_CURSOR_MAX_LENGTH, LOG_CURSOR_MAX_ID_LENGTH, LOG_RELATIVE_TIME_PATTERN, LOG_ISO_TIME_PATTERN, RELATIVE_UNIT_MS, CORE_DRAINING_CODE, CORE_DRAINING_DEFAULT_RETRY_MS, CORE_DRAINING_MAX_RETRY_MS, VoiceNameSchema, PluginProviderSchema, RealtimeProviderSchema, PluginClassSchema, ModelDescriptorSchema, InferenceModelSchema, PluginModelSchema, RealtimeModelSchema, LuaVoiceModelSchema, TurnDetectionSchema, InterruptionSchema, BuiltinAudioClipSchema, AudioConfigSchema, BackgroundAudioEntrySchema, BackgroundAudioSchema, LuaVoiceConfigInnerSchema, LuaVoiceConfigSchema, LuaVoiceRefSchema, EventType, LUA_JOB_DEFAULT_TIMEOUT_SECONDS, LUA_JOB_MIN_TIMEOUT_SECONDS, LUA_JOB_MAX_TIMEOUT_SECONDS, KEYS, MAX_BODY_BYTES, MAX_ID_LENGTH, UTC_ISO, TEMPLATE_TRIGGER_URL_ENV_PREFIX, TEMPLATE_INSTALL_POLICY_PER_WORKSPACE_VALUES, SUBJECT_TYPES, SubjectTypeSchema, CREDENTIAL_TYPES, CredentialTypeSchema, DEVICE_OPERATIONS, DeviceOperationSchema, DEVICE_SCOPE_BY_OPERATION, DeviceBindingSchema, TYPED_API_KEY, IdSchema, SESSION_AUTH_TIME_MAX_S, PrincipalDescriptorSchema, ActorDescriptorSchema, PrincipalOwnerSchema, CredentialLifecycleSchema, GeneralCredentialDescriptorSchema, DeviceCredentialDescriptorSchema, GeneralPrincipalContextSchema, DeviceCredentialPrincipalContextSchema, RawPrincipalContextSchema, PrincipalContextSchema, DeviceCredentialClaimSchema, LUA_CLIENT_HEADER, LUA_CLIENT_APPS, SEMVER_PATTERN, WEB_RELEASE_PATTERN, CLIENT_HEADER_PATTERN, LUA_SESSION_ID_CLAIM, SESSION_REVOKED_CODE, AUTHZ_PROJECTION_VERSION, ProjectedScopeSchema, DisplayRoleSchema, AuthorizationPrincipalSchema, CredentialContextSchema, ProjectionAnomalySchema, ProjectedOrgSchema, ProjectedResourceSchema, CapabilityProfilesSchema, RoleCatalogSchema, EffectiveAuthorizationSchema, ResourcePageSchema, SYSTEM_USER_PREFIX, WORKFLOW_RUN_IN_FLIGHT, WORKFLOW_RUN_IDLE, WORKFLOW_RUN_TERMINAL, WORKFLOW_RUN_STATUSES, WORKFLOW_RUN_GATE_KINDS, WORKFLOW_STEP_STATUSES, WORKFLOW_STEP_IN_FLIGHT, WORKFLOW_SIGNAL_EVENT_SITES, ARCHIVE_WINDOW_MARGIN_DAYS, WORKFLOW_ORG_PURGING_TTL_S, WORKFLOW_ORG_PURGE_FORCE_AFTER_MS, IDEMPOTENCY_HOLDING_STATUSES, WORKFLOW_SCHEDULED_RUN_ID_PREFIX, CLOUD_TASK_RUN_ID_PREFIX, WORKFLOW_SCHEDULE_KEY_MAX, WORKFLOW_SCHEDULE_IDEMPOTENCY_KEY_PREFIX, WORKFLOW_OPERATION_ID_PREFIX, WORKFLOW_JOURNAL_PROTOCOL_VERSION, WORKFLOW_CONNECTION_KEY_RE, WORKFLOW_AGENT_APP_CONNECTION_PREFIX, WORKFLOW_JOB_MODEL_SOURCE_LABELS, WORKFLOW_SUSPEND_KINDS, WORKFLOW_RUN_NOTIFICATION_SUSPENDED_KINDS, WORKFLOW_SIGNAL_PAYLOAD_MAX_BYTES, WORKFLOW_SIGNAL_NAME_RE, WORKFLOW_SUSPEND_DEFAULT_TIMEOUT_HOURS, WORKFLOW_RESOLVE_OUTPUT_MAX_BYTES, SCHEDULE_HEALTH_NOTIFY_CHANNELS, SCHEDULE_HEALTH_DEFAULT_NOTIFY, SCHEDULE_HEALTH_LIMITS, KNOWN_KEYS, WORKFLOW_GOAL_JUDGE_SELF, APPROVAL_ARGS_MAX_CHARS, APPROVAL_ARG_STRING_MAX_CHARS, APPROVAL_ARGS_SUMMARY_MAX_CHARS, MAX_DEPTH, MAX_KEYS, MAX_ITEMS, MAX_NODES, MAX_KEY_CHARS, KEY_SCRUB_INPUT_MAX_CHARS, STRING_SCRUB_INPUT_MAX_CHARS, ELLIPSIS, SKIP, SCRUB_SECRETS_BEFORE_PERSIST_ENV, PERSIST_SCRUB_MAX_CHARS, PERSIST_SCRUB_REF_MAX_CHARS, WORKFLOW_AUDIT_EVENTS, WORKFLOW_AUDIT_METADATA_MAX_BYTES, INDENT, WRAP_WIDTH, NOUNS, GET_TOOL_NAMES, PREAMBLE, WORKFLOW_APPROVAL_OUTPUT_DECISIONS, WORKFLOW_APPROVAL_OUTPUT_SCHEMA, JSON_FENCE_RE, DEFAULT_ON_AGENT_FEATURES, SUBAGENT_PER_KEY_FLAG_ENV, PER_KEY_FLAG_VALUES, ONBOARDING_FLOW_KEY, ONBOARDING_SCHEMA_VERSION, id, copy, onboardingHeadingSchema, onboardingRichTextInlineSchema, onboardingRichTextSchema, onboardingDestinationSchema, onboardingArtworkSchema, onboardingAnswerSchema, onboardingQuestionSchema, onboardingTemplateSectionSchema, onboardingInstallScreenSchema, onboardingResultScreenSchema, onboardingConnectScreenSchema, onboardingTemplateContentSchema, onboardingUnavailableOutcomeSchema, onboardingFlowSchema, onboardingActorSchema, onboardingEditorSchema, onboardingPublicationSummarySchema, onboardingValidationIssueSchema, onboardingValidationResponseSchema, onboardingAssetSchema, onboardingPublicAssetSchema, getOnboardingConfigResponseSchema, saveOnboardingDraftRequestSchema, validateOnboardingRequestSchema, publishOnboardingRequestSchema, rollbackOnboardingRequestSchema, onboardingTemplateCatalogItemSchema, getPublishedOnboardingResponseSchema, WEB_ROUTE_PROTOCOL_VERSION, WEB_ROUTE_METHODS, WEB_ROUTE_REQUEST_HEADER_ALLOWLIST, WEB_ROUTE_RESPONSE_HEADER_ALLOWLIST, WEB_ROUTE_MAX_WALL_MS, WEB_ROUTE_MAX_REQUEST_BODY_BYTES, WEB_ROUTE_MAX_RESPONSE_BYTES, WEB_APP_NAME_PATTERN, WEB_APP_ENTRY_HTML_MAX_CHARS, WEB_APP_MAX_ASSETS, WEB_APP_ASSET_PATH_PATTERN, WEB_APP_ASSET_PATH_MAX_CHARS, WEB_APP_MAX_ROUTES, WEB_APP_MAX_ASSET_BYTES, WEB_APP_CSP_NONCE_PLACEHOLDER, EVIDENCE_SESSION_IDLE_MS, EVIDENCE_MIN_CONVERSATIONS, EVIDENCE_LOW_CONFIDENCE_N, EVIDENCE_SNIPPET_MAX_CHARS, EVIDENCE_EXAMPLES_PER_ITEM, EVIDENCE_SHOWN_ITEMS, EVIDENCE_LATENCY_BOUNDS_MS, EVIDENCE_WORD_BOUNDS, BAD_CONVERSATION_REASONS, ATTACHMENT_LINES, REVIEW_VERDICT_REASON_ORDER, ENV_TEMPLATE_SECRET_KEY_RE, CONNECTION_SEND_NOT_ALLOWED, CONNECTION_RECIPIENT_NOT_ALLOWED, NOT_SEND, PLAIN_ADDRESS, RecipientSet, MCP_MESSAGING_CREATE, MCP_CALENDAR_EVENT_WRITE, REPLY_KEYS, DEDICATED_MAIL_SLUGS, FULL_SUITE_SLUGS, WELL_KNOWN_MAIL_FOLDERS, MEMBER_KEYS, CANONICAL_ORIGIN, CANONICAL_PREFIX, STRICT_BASE64, GMAIL_PREFIX, GMAIL_MESSAGES_SEND, GMAIL_DRAFTS_SEND, GOOGLE_BATCH, GRAPH_VERSION, GRAPH_PRINCIPAL, GRAPH_SEND_MAIL, GRAPH_MESSAGE_ACTION, GRAPH_OWNER, GRAPH_EVENTS, GRAPH_EVENT_COLLECTION, GRAPH_EVENT_ID, GRAPH_EVENT_ITEM, GRAPH_EVENT_ACTION, GRAPH_BATCH, GRAPH_TEAMS_MESSAGE, GRAPH_ACTIVITY_NOTIFICATION, GRAPH_GROUP_CONVERSATION, GCAL_EVENTS, GRAPH_READ_KEYS, MALFORMED_POLICY, BILLING_REJECTION_TEXT_CREDITS, BILLING_REJECTION_TEXT_SEAT, BILLING_REJECTION_TEXT_USER_QUOTA, CUSTOM_MCP_CONNECTION_ID_PREFIX, CUSTOM_MCP_SOURCE, CUSTOM_MCP_TRANSPORT, CUSTOM_MCP_CONNECTION_ID_PATTERN, customMcpConnectionIdSchema, CONNECTION_BACKED_MCP_SOURCES, CUSTOM_MCP_REFERENCE_ID_PATTERN, customMcpReferenceIdSchema, CUSTOM_MCP_AUTH_KINDS, customMcpAuthKindSchema, CUSTOM_MCP_OAUTH_REGISTRATIONS, customMcpOAuthRegistrationSchema, CUSTOM_MCP_HEALTH_STATES, customMcpHealthStateSchema, CUSTOM_MCP_FAILURE_STEPS, customMcpFailureStepSchema, CUSTOM_MCP_CONNECT_STEPS, customMcpConnectStepSchema, customMcpFailureCodeSchema, WORKFLOW_KEY_MAX_LENGTH, CUSTOM_MCP_URL_MAX_LENGTH, CUSTOM_MCP_DISPLAY_NAME_MAX_LENGTH, CUSTOM_MCP_MAX_HEADERS, CUSTOM_MCP_HEADER_NAME_MAX_LENGTH, CUSTOM_MCP_HEADER_VALUE_MAX_LENGTH, CUSTOM_MCP_MAX_TOOLS, CUSTOM_MCP_TOOL_NAME_MAX_LENGTH, CUSTOM_MCP_TOOL_TEXT_MAX_LENGTH, CUSTOM_MCP_MIN_TIMEOUT_MS, CUSTOM_MCP_MAX_TIMEOUT_MS, CUSTOM_MCP_OAUTH_PENDING_TTL_MS, isoDateTime, agentId, nonNegativeInt, customMcpUrlInputSchema, customMcpDisplayNameSchema, customMcpTimeoutSchema, CUSTOM_MCP_RESERVED_HEADER_NAMES, HEADER_NAME, HEADER_VALUE_FORBIDDEN, customMcpHeaderNameSchema, headerValue, customMcpHeadersSchema, customMcpHeadersPatchSchema, customMcpToolNameSchema, customMcpToolSchema, customMcpServerInfoSchema, customMcpToolSelectionSchema, customMcpToolsResponseSchema, customMcpFailureSchema, customMcpHealthSchema, customMcpErrorBodySchema, customMcpConnectionBlockSchema, customMcpConnectionViewSchema, customMcpConnectionResponseSchema, customMcpProbeBodySchema, customMcpOAuthDiscoverySchema, customMcpProbeResponseSchema, createFields, mountAgentField, customMcpCreateAgentBodySchema, customMcpCreateUserBodySchema, customMcpOAuthClientSchema, startFields, customMcpOAuthStartAgentBodySchema, customMcpOAuthStartUserBodySchema, customMcpOAuthStartResponseSchema, nonce, customMcpOAuthSuccessRedirectQuerySchema, CUSTOM_MCP_OAUTH_CALLBACK_ERRORS, customMcpOAuthFailureRedirectQuerySchema, customMcpOAuthFinalizeBodySchema, customMcpCimdDocumentSchema, customMcpPatchBodySchema, customMcpCredentialRequestSchema, customMcpCredentialAuthSchema, customMcpCredentialResponseSchema, CUSTOM_MCP_CREDENTIAL_ERRORS, customMcpCredentialErrorBodySchema, customMcpHealthReportSchema, customMcpProbeRequestSchema, customMcpProbeResultSchema, customMcpOriginUrlSchema, customMcpServerProjectionSchema, customMcpMountUpsertBodySchema, SHARED_DATA_NAME_RE, SHARED_DATA_OWNER_PREFIX, SHARED_DATA_ERRORS;
7635
+ var __defProp3, __name3, PLUMBING_THREAD_CHANNELS, CHANNEL_CONVERSATION_CHANNELS, HIDDEN_THREAD_CHANNELS, CHOICE_PERSON_TURN_CHANNELS, CHOICE_REPLAY_CLIENT_CAPABILITIES, CHOICE_REPLAY_CLIENT_SURFACES, DECISION_PROVIDERS, DECISION_FALLBACK_PROVIDERS, OPENROUTER_DIRECT_VENDORS, OPENROUTER_NEEDS_MODEL_MESSAGE, DECISION_QUESTION_TYPES, DECISION_NAME_PATTERN, DECISION_SANDBOX_SITE_HEADER, DECISION_SANDBOX_PRIMITIVE_HEADER, DECISION_SANDBOX_TOOL_SEPARATOR, DECISION_LIMITS, DECISION_ERROR_CODES, DECISION_INACTIVE_CODE, MAX_NAME_CHARS, InstructionsSchema, NameSchema, OddsQuestionSchema, ChoiceQuestionSchema, ScoreQuestionSchema, DecisionQuestionSchema, DecisionOptionsSchema, DecisionQuestionsSchema, DecisionDefinitionSchema, DecisionDefinitionWriteSchema, INTEGRATION_PASSTHROUGH_READ_METHODS, URL_REINTERPRETED_PATH_CHARACTERS, PERCENT_ENCODED_DOT, PERCENT_ESCAPE, DECODED_PATH_SEPARATORS, DECODED_LEADING_SEPARATOR, MAX_PERCENT_DECODE_ROUNDS, URL_RESOLUTION_PROBE_BASE, PLATFORM_INVOCATION_CALLERS, MESSAGING_CHANNELS, VOICE_CHANNELS, TURN_CATEGORIES, AGENT_TOOL_CATEGORIES, count, AnthropicSseUsageReader, SUPERVISION_OPS, SUPERVISION_OPS_WAVE2, SUPERVISION_WATCHDOG_OPS, SUPERVISION_WATCHDOG_ERRORS, SUPERVISION_ROLLBACK_REFUSAL_CODES, SUPERVISION_ROLLBACK_LINEAGE_MAX, SUPERVISION_UNTARGETED_OPS, SUPERVISED_WORKFLOW_VERSIONS_MAX, SUPERVISION_EVENT_KINDS, AGENT_PROVISIONING_LIMITS, AGENT_PROVISIONING_APPROVAL_PAYLOAD_KEY, AGENT_PROVISIONING_ERRORS, PROVISIONED_SUPERVISION_ACTIONS, isNonEmptyString, uniqueStrings, sameSet, AGENT_PROVISIONING_APPROVAL_CARD_MAX_CHARS, APPROVAL_PAYLOAD_MEMBERS, AGENT_CONNECTION_POLICIES, AGENT_CONNECTION_POLICY_DEFAULT, AGENT_CONNECTION_MOUNT_MODES, AGENT_CONNECTION_GOVERNANCE_ERRORS, AGENT_CONNECTION_OPERATION_RULES_MAX, AGENT_CONNECTION_OPERATION_PATTERN_MAX_LENGTH, OPERATION_RULE_METHODS, PATH_SEPARATOR, PATH_SINGLE_SEGMENT_WILDCARD, PATH_REST_WILDCARD, METHOD_OVERRIDE_HEADER_NAMES, METHOD_OVERRIDE_QUERY_NAMES, ODATA_BATCH_SEGMENT, GOOGLE_BATCH_FIRST_SEGMENT, CONNECTION_CHECK_RESULTS, CONNECTION_CHECK_CATALOGUE_V1, CONNECTION_CHECK_NAME_PATTERN, CONNECTION_CHECK_NAME_MAX, CONNECT_OUTCOME_STATUSES, SECRET_TEST_RESULTS, SECRET_DATADOG_REGIONS, SECRET_PROVIDER_CATALOGUE_V1, SECRET_TEST_MAX_RESPONSE_BYTES, SECRET_ENV_KEY_PATTERN, SECRET_REQUEST_ERRORS, SECRET_OUTCOME_STATUSES, CLIENT_OUTCOME_TURNS_MAX, SHORT_TEXT_MAX, SLUG_MAX, shortText, optionalShortText, CONNECTION_REQUEST_TERMINAL_STATES, CONNECTION_USE_ORIGINS, AGENT_CONNECTION_OPERATION_LIMITS_BOUNDS, CURRENCY_CODE, LIMITS_KEYS, CAPS_KEYS, EXCLUSIONS_KEYS, EMAIL_IN_TEXT, MAX_EXCLUSION_DEPTH, PROJECTION_PARAMETER_KEYS, CHANNEL_PARAMETER_KEYS, GMAIL_SYSTEM_LABEL_IDS, ZERO_DECIMAL_CURRENCIES, THREE_DECIMAL_CURRENCIES, DECIMAL_AMOUNT, REDACTED_PLACEHOLDER, PROVIDER_MESSAGE_MAX_CHARS, ERROR_MESSAGE_MAX_CHARS, SECRET_LITERAL_PATTERNS, SECRET_NAME, SECRET_PAIR_PATTERNS, GROUP_COUNT, WORKFLOW_SECRET_KEY_RE, WORKFLOW_RESERVED_SECRET_KEYS, SCRUB_INPUT_MAX_CHARS, SCRUB_CUT_BACKOFF_CHARS, SCRUB_DEEP_MAX_DEPTH, TEST_SESSION_ID_PATTERN, TEST_SESSION_COLLECTION_PREFIX, TEST_EFFECT_BODY_MAX_BYTES, TEST_EFFECT_DROPPED_HEADERS, EVAL_CREDITS_PER_1K_TOKENS, EVAL_RESERVED_TOOL_ID_PREFIXES, SUPERVISED_SECRET_LIMITS, SUPERVISED_SECRET_NAME_RE, SUPERVISED_SECRET_FIELD_RE, SUPERVISED_SECRET_KEY_FIELD, SUPERVISED_SECRET_ERRORS, CONNECTION_HANDOVER_APPROVAL_PAYLOAD_KEY, CONNECTION_HANDOVER_APPROVAL_CARD_MAX_CHARS, CONNECTION_HANDOVER_LIMITS, MEMBERS, FORMAT_CHARS, oneLine, boundedString, AGENT_METRIC_NAME_PATTERN, AGENT_METRIC_LIMITS, AGENT_OBJECTIVE_ERRORS, CHANGE_LEASE_TTL_MINUTES_MIN, CHANGE_LEASE_TTL_MINUTES_MAX, CHANGE_LEASE_REASON_MAX, CHANGE_LEASE_ERRORS, AGENT_CONFIG_SET_LIMITS, SECRET_ENV_KEY_SUFFIXES, DEFAULT_OWNER_DEPARTURE_POLICY, AGENT_LIFECYCLE_ERRORS, USER_COST_COUNTER_TTL_SECONDS, USER_COST_ATTRIBUTION_CHANNELS, CALLER_DEDUPE_KEY_MAX, FOLLOW_UP_IDEMPOTENCY_TTL_SECONDS, THREAD_FOLLOW_UP_LIMITS, THREAD_FOLLOW_UP_ERRORS, PROGRESS_UPDATE_LIMITS, PAUSABLE_CAPABILITY_KINDS, UNIFIED_CATCH_UP_MAX_WINDOW_HOURS, UNIFIED_CATCH_UP_EVENTS, UNIFIED_CATCH_UP_FILTERABLE_OBJECT_TYPES, AGENT_NEVER_RULES_MAX, AGENT_NEVER_RULE_FIELD_MAX, AGENT_NEVER_RULE_INPUT_MATCH_MAX, NEVER_RULE_ID_PATTERN, NEVER_RULE_HTTP_METHODS, TEMPLATE_DISTRIBUTION_MODES, TAKEOVER_MAX_IDLE_MINUTES, MINUTES_PER_DAY, DEFAULT_IDLE_RELEASE_MINUTES, FALLBACK_IDLE_RELEASE_MINUTES, VARIATION_SELECTORS, SLACK_EMOJI_NAMES, SLACK_SHORTCODE, PLAIN_EMAIL_ADDRESS, DOMAIN, UNSAFE_TEXT, SLACK_CONVERSATION_ID, CHANNEL_SETTING_GROUPS, THREAD_SCOPING_NOUN, TAKEOVER_CHANNEL_TYPES, EMAIL_SETTINGS, SLACK_SETTING_DEFAULTS, SLACK_REACTION_MAX, SLACK_INTRO_MAX, SLACK_EXAMPLE_PROMPTS_MAX, SLACK_EXAMPLE_PROMPT_MAX, SLACK_SUPPORT_CONTACT_MAX, SLACK_SETTINGS, CHANNEL_SETTINGS, REVIEWABLE_ACTION_EXECUTE_TOOL_ALLOWLIST, REVIEWABLE_STANDING_START_TOOLS, REVIEWABLE_MCP_SEND_TOOL_SUFFIX, MCP_TOOL_READ_VERB_RE, MCP_DRAFT_CREATE_VERBS, NON_INTERACTIVE_CHANNELS, RICH_PARTS_MESSAGE_ID_PREFIX, SCREENSHOT_MESSAGE_ID_PREFIX, WORK_ITEMS_KEY, MAX_WORK_ITEMS, LIMITS, BROWSER_COMMANDS, BROWSER_COMMAND_NAMES, SERVER_TRIGGERED_BROWSER_SOURCES, BROWSER_FALLBACKS, DEFAULT_BROWSER_FALLBACK, PROXY_COUNTRY_CODE, BROWSER_LOG_CONTENT_MODES, DEFAULT_BROWSER_LOG_CONTENT, BROWSER_SCREENSHOT_POLICIES, DEFAULT_BROWSER_SCREENSHOT_POLICY, BROWSER_ENGINES, BROWSER_PROFILE_NAME_PATTERN, BROWSER_LIMIT_KEYS, BROWSER_LIMIT_MAX, BROWSER_EXECUTE_METHOD, BROWSER_GLOBAL_METHODS, BROWSER_EXECUTE_DEFAULT_TIMEOUT_MS, BROWSER_EXECUTE_MAX_TIMEOUT_MS, LOG_FIELDS_MAX_KEYS, LOG_FIELD_MAX_VALUE_BYTES, LOG_FIELDS_MAX_BYTES, LOG_FIELD_KEY_PATTERN, LOG_FIELD_SECRET_SHAPED_KEY_PATTERNS, LOG_FIELDS_CLAMPED_KEY, LOG_FIELD_ARRAY_COUNT_SUFFIX, LuaLogFieldsError, DESKTOP_FILE_COMMANDS, DESKTOP_FILE_COMMAND_SET, BROWSER_READ_FORMATS, BROWSER_READ_DEFAULT_TIMEOUT_MS, BROWSER_READ_MIN_TIMEOUT_MS, BROWSER_READ_MAX_TIMEOUT_MS, BROWSER_READ_MAX_CONTENT_CHARS, BROWSER_READ_DEFAULT_SELECTOR, BROWSER_READ_MATCH_SEPARATOR, BROWSER_READ_LOGIN_BLOCKER, BROWSER_ERROR_NAME, HTTP_STATUS_FAILURE, LOGIN_PATH_SEGMENTS, LOGIN_HOST_LABELS, AGENT_LOG_SOURCES, AGENT_LOG_ENVIRONMENTS, AGENT_LOG_FIELDS_MAX_WIRE_KEYS, BROWSER_LOG_EVENT_KINDS, BROWSER_LOG_ENGINES, BROWSER_SESSION_OPEN_REASONS, BROWSER_BLOCK_KINDS, BROWSER_WALL_KINDS, BROWSER_WALL_NEXT_ACTIONS, BROWSER_CONFIRM_DECISIONS, BROWSER_SESSION_CLOSE_REASONS, BROWSER_LOG_CONTEXT_KEYS, BROWSER_LOG_ID_MAX_CHARS, BROWSER_LOG_TEXT_MAX_CHARS, isString, isBoolean, isCount, isPlainObject3, oneOf, isLimits, EVENT_SHAPES, BASE_KEYS, BROWSER_WORKER_SESSION_ID_SEPARATOR, BROWSER_WORKER_BLOCK_REASON_MAX_CHARS, WORKFLOW_RETRY_BACKOFFS, WORKFLOW_RETRY_MIN_ATTEMPTS, WORKFLOW_RETRY_POLICY_KEYS, WORKFLOW_RETRY_MAX_ATTEMPTS, WORKFLOW_RETRY_ENGINE_KEYS, WORKFLOW_JOB_RESOURCES, WORKFLOW_SIDE_EFFECTS, WORKFLOW_AGENT_EFFORTS, WORKFLOW_MODEL_CLASSES, WORKFLOW_TASK_CLASSES, WORKFLOW_MODEL_TRAITS, WORKFLOW_MODEL_REASON_MAX_LENGTH, WORKFLOW_MODELS_COMPOSE_MODES, WORKFLOW_MODELS_PIN_MODES, WORKFLOW_MODELS_FALLBACK_MODES, WORKFLOW_MODELS_CONSENT_ACTIONS_MIN, WORKFLOW_DEFAULT_TASK_CLASS_MAP, WORKFLOW_MODELS_MAX_CLASS_DEFAULT, WORKFLOW_AUTONOMY_FORMS, WORKFLOW_AUTONOMY_NUMERIC_KEYS, WORKFLOW_AUTONOMY_ENVELOPE_KEYS, WORKFLOW_AUTONOMY_ENABLED_DEFAULT, WORKFLOW_AUTONOMY_DEFAULTS, WORKFLOW_AUTONOMY_CEILINGS, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_ENV, WORKFLOW_AUTONOMY_MAX_RUNS_PER_HOUR_CEILING, WORKFLOW_AUTONOMY_FORMS_DEFAULT, WORKFLOW_AUTONOMY_MIN_VALUE, WORKFLOW_JOB_RANGES, WORKFLOW_JOB_RANGE_MEMBERS, WORKFLOW_SINGLE_STEP_TYPES, WORKFLOW_HITL_ENTRY_TYPES, WORKFLOW_ARM_ENTRY_TYPES, WORKFLOW_HITL_ARM_CONTAINERS, WORKFLOW_GRAPH_ENTRY_STEP_KINDS, WORKFLOW_ARM_ENTRY_STEP_KINDS, WORKFLOW_BUDGET_MAX_DURATION_SECONDS, MODEL_ID_BYOK_PROVIDERS, MODEL_CLASS_REF_PREFIX, MODEL_SNAPSHOT_SUFFIX, REASONING_EFFORT_VALUES, IMPLICIT_MODEL_SELECTION_SOURCES, PLATFORM_FALLBACK_MODEL_SOURCE, AGENT_NAME_TOKEN, DEFAULT_PERSONA_GUIDE, PERSONAL_SPACE_STARTING_PERSONA, LOG_DRAIN_TYPES_PHASE1, LOG_DRAIN_TYPES_PHASE2, LOG_DRAIN_TYPES_IMPLEMENTED, LOG_DRAIN_FORMATS, LOG_DRAIN_SEVERITIES, LOG_DRAIN_SOURCES, LOG_DRAIN_CONTENT_SOURCES, LOG_DRAIN_DEFAULT_SOURCES, LOG_DRAIN_MAX_PER_ORG, LOG_DRAIN_MAX_PER_ORG_ENTERPRISE, LOG_DRAIN_DATADOG_SITES, LOG_DRAIN_NEWRELIC_SITES, LOG_DRAIN_ENDPOINT_TEMPLATES, LOG_DRAIN_PRESET_SITES, LOG_DRAIN_BUCKET_NAME_PATTERN, LOG_DRAIN_BUCKET_HOST_PATTERNS, LOG_DRAIN_PRESET_HOST_SUFFIXES, DRAIN_CONTENT_ACK_ERROR_CODE, DRAIN_CONTENT_ACK_FIELD, DrainContentAckRequiredError, LOG_DRAIN_PRESET_PATHS, PRESET_SEGMENT_RE, LOG_DRAIN_QUOTAS, LOG_DRAIN_QUOTA_WARN_RATIO, LOG_DRAIN_QUOTA_DROP_DEBUG_RATIO, LOG_DRAIN_QUOTA_DROP_INFO_RATIO, LOG_DRAIN_QUOTA_PAUSE_RATIO, LOG_EXPORT_SOURCES, LOG_EXPORT_MAX_WINDOW_DAYS, LOG_EXPORT_MAX_WINDOW_MS, LOG_EXPORT_URL_TTL_SECONDS, LOG_EXPORT_FILE_RETENTION_DAYS, LOG_EXPORT_FILE_RETENTION_MS, LOG_EXPORT_PART_MAX_BYTES, LOG_DRAIN_NOTICE_RATE_LIMIT_MS, LOG_DRAIN_VERIFICATION_STALE_MS, LOG_DRAIN_DIGEST_INTERVAL_MS, LOG_DRAIN_DIGEST_MAX_ENTRIES, LOG_DRAIN_NOTICE_ERROR_MAX_CHARS, LOG_DRAIN_USAGE_LINE_ITEM, LOG_DRAIN_BYTES_PER_GIB, DEFAULT_LOG_DRAIN_PLAN_CONFIG, TIERS, LOG_CURSOR_MAX_LENGTH, LOG_CURSOR_MAX_ID_LENGTH, LOG_RELATIVE_TIME_PATTERN, LOG_ISO_TIME_PATTERN, RELATIVE_UNIT_MS, CORE_DRAINING_CODE, CORE_DRAINING_DEFAULT_RETRY_MS, CORE_DRAINING_MAX_RETRY_MS, VoiceNameSchema, PluginProviderSchema, RealtimeProviderSchema, PluginClassSchema, ModelDescriptorSchema, InferenceModelSchema, PluginModelSchema, RealtimeModelSchema, LuaVoiceModelSchema, TurnDetectionSchema, InterruptionSchema, BuiltinAudioClipSchema, AudioConfigSchema, BackgroundAudioEntrySchema, BackgroundAudioSchema, LuaVoiceConfigInnerSchema, LuaVoiceConfigSchema, LuaVoiceRefSchema, EventType, LUA_JOB_DEFAULT_TIMEOUT_SECONDS, LUA_JOB_MIN_TIMEOUT_SECONDS, LUA_JOB_MAX_TIMEOUT_SECONDS, KEYS, MAX_BODY_BYTES, MAX_ID_LENGTH, UTC_ISO, TEMPLATE_TRIGGER_URL_ENV_PREFIX, TEMPLATE_INSTALL_POLICY_PER_WORKSPACE_VALUES, SUBJECT_TYPES, SubjectTypeSchema, CREDENTIAL_TYPES, CredentialTypeSchema, DEVICE_OPERATIONS, DeviceOperationSchema, DEVICE_SCOPE_BY_OPERATION, DeviceBindingSchema, TYPED_API_KEY, IdSchema, SESSION_AUTH_TIME_MAX_S, PrincipalDescriptorSchema, ActorDescriptorSchema, PrincipalOwnerSchema, CredentialLifecycleSchema, GeneralCredentialDescriptorSchema, DeviceCredentialDescriptorSchema, GeneralPrincipalContextSchema, DeviceCredentialPrincipalContextSchema, RawPrincipalContextSchema, PrincipalContextSchema, DeviceCredentialClaimSchema, LUA_CLIENT_HEADER, LUA_CLIENT_APPS, SEMVER_PATTERN, WEB_RELEASE_PATTERN, CLIENT_HEADER_PATTERN, LUA_SESSION_ID_CLAIM, WEB_APP_ID_PATTERN, SESSION_REVOKED_CODE, AUTHZ_PROJECTION_VERSION, ProjectedScopeSchema, DisplayRoleSchema, AuthorizationPrincipalSchema, CredentialContextSchema, ProjectionAnomalySchema, ProjectedOrgSchema, ProjectedResourceSchema, CapabilityProfilesSchema, RoleCatalogSchema, EffectiveAuthorizationSchema, ResourcePageSchema, SYSTEM_USER_PREFIX, WORKFLOW_RUN_IN_FLIGHT, WORKFLOW_RUN_IDLE, WORKFLOW_RUN_TERMINAL, WORKFLOW_RUN_STATUSES, WORKFLOW_RUN_GATE_KINDS, WORKFLOW_STEP_STATUSES, WORKFLOW_STEP_IN_FLIGHT, WORKFLOW_SIGNAL_EVENT_SITES, ARCHIVE_WINDOW_MARGIN_DAYS, WORKFLOW_ORG_PURGING_TTL_S, WORKFLOW_ORG_PURGE_FORCE_AFTER_MS, IDEMPOTENCY_HOLDING_STATUSES, WORKFLOW_SCHEDULED_RUN_ID_PREFIX, CLOUD_TASK_RUN_ID_PREFIX, WORKFLOW_SCHEDULE_KEY_MAX, WORKFLOW_SCHEDULE_IDEMPOTENCY_KEY_PREFIX, WORKFLOW_OPERATION_ID_PREFIX, WORKFLOW_JOURNAL_PROTOCOL_VERSION, WORKFLOW_CONNECTION_KEY_RE, WORKFLOW_AGENT_APP_CONNECTION_PREFIX, WORKFLOW_JOB_MODEL_SOURCE_LABELS, WORKFLOW_SUSPEND_KINDS, WORKFLOW_RUN_NOTIFICATION_SUSPENDED_KINDS, WORKFLOW_SIGNAL_PAYLOAD_MAX_BYTES, WORKFLOW_SIGNAL_NAME_RE, WORKFLOW_SUSPEND_DEFAULT_TIMEOUT_HOURS, WORKFLOW_RESOLVE_OUTPUT_MAX_BYTES, SCHEDULE_HEALTH_NOTIFY_CHANNELS, SCHEDULE_HEALTH_DEFAULT_NOTIFY, SCHEDULE_HEALTH_LIMITS, KNOWN_KEYS, WORKFLOW_GOAL_JUDGE_SELF, APPROVAL_ARGS_MAX_CHARS, APPROVAL_ARG_STRING_MAX_CHARS, APPROVAL_ARGS_SUMMARY_MAX_CHARS, MAX_DEPTH, MAX_KEYS, MAX_ITEMS, MAX_NODES, MAX_KEY_CHARS, KEY_SCRUB_INPUT_MAX_CHARS, STRING_SCRUB_INPUT_MAX_CHARS, ELLIPSIS, SKIP, SCRUB_SECRETS_BEFORE_PERSIST_ENV, PERSIST_SCRUB_MAX_CHARS, PERSIST_SCRUB_REF_MAX_CHARS, WORKFLOW_AUDIT_EVENTS, WORKFLOW_AUDIT_METADATA_MAX_BYTES, INDENT, WRAP_WIDTH, NOUNS, GET_TOOL_NAMES, PREAMBLE, WORKFLOW_APPROVAL_OUTPUT_DECISIONS, WORKFLOW_APPROVAL_OUTPUT_SCHEMA, JSON_FENCE_RE, DEFAULT_ON_AGENT_FEATURES, SUBAGENT_PER_KEY_FLAG_ENV, PER_KEY_FLAG_VALUES, ONBOARDING_FLOW_KEY, ONBOARDING_SCHEMA_VERSION, id, copy, onboardingHeadingSchema, onboardingRichTextInlineSchema, onboardingRichTextSchema, onboardingDestinationSchema, onboardingArtworkSchema, onboardingAnswerSchema, onboardingQuestionSchema, onboardingTemplateSectionSchema, onboardingInstallScreenSchema, onboardingResultScreenSchema, onboardingConnectScreenSchema, onboardingTemplateContentSchema, onboardingUnavailableOutcomeSchema, onboardingFlowSchema, onboardingActorSchema, onboardingEditorSchema, onboardingPublicationSummarySchema, onboardingValidationIssueSchema, onboardingValidationResponseSchema, onboardingAssetSchema, onboardingPublicAssetSchema, getOnboardingConfigResponseSchema, saveOnboardingDraftRequestSchema, validateOnboardingRequestSchema, publishOnboardingRequestSchema, rollbackOnboardingRequestSchema, onboardingTemplateCatalogItemSchema, getPublishedOnboardingResponseSchema, WEB_ROUTE_PROTOCOL_VERSION, WEB_ROUTE_METHODS, WEB_ROUTE_REQUEST_HEADER_ALLOWLIST, WEB_ROUTE_RESPONSE_HEADER_ALLOWLIST, WEB_ROUTE_MAX_WALL_MS, WEB_ROUTE_MAX_REQUEST_BODY_BYTES, WEB_ROUTE_MAX_RESPONSE_BYTES, WEB_APP_NAME_PATTERN, WEB_APP_TITLE_MAX_CHARS, WEB_APP_ENTRY_HTML_MAX_CHARS, WEB_APP_MAX_ASSETS, WEB_APP_ASSET_PATH_PATTERN, WEB_APP_ASSET_PATH_MAX_CHARS, WEB_APP_MAX_ROUTES, WEB_APP_MAX_ASSET_BYTES, WEB_APP_CSP_NONCE_PLACEHOLDER, EVIDENCE_SESSION_IDLE_MS, EVIDENCE_MIN_CONVERSATIONS, EVIDENCE_LOW_CONFIDENCE_N, EVIDENCE_SNIPPET_MAX_CHARS, EVIDENCE_EXAMPLES_PER_ITEM, EVIDENCE_SHOWN_ITEMS, EVIDENCE_LATENCY_BOUNDS_MS, EVIDENCE_WORD_BOUNDS, BAD_CONVERSATION_REASONS, ATTACHMENT_LINES, REVIEW_VERDICT_REASON_ORDER, ENV_TEMPLATE_SECRET_KEY_RE, CONNECTION_SEND_NOT_ALLOWED, CONNECTION_RECIPIENT_NOT_ALLOWED, NOT_SEND, PLAIN_ADDRESS, RecipientSet, MCP_MESSAGING_CREATE, MCP_CALENDAR_EVENT_WRITE, REPLY_KEYS, DEDICATED_MAIL_SLUGS, FULL_SUITE_SLUGS, WELL_KNOWN_MAIL_FOLDERS, MEMBER_KEYS, CANONICAL_ORIGIN, CANONICAL_PREFIX, STRICT_BASE64, GMAIL_PREFIX, GMAIL_MESSAGES_SEND, GMAIL_DRAFTS_SEND, GOOGLE_BATCH, GRAPH_VERSION, GRAPH_PRINCIPAL, GRAPH_SEND_MAIL, GRAPH_MESSAGE_ACTION, GRAPH_OWNER, GRAPH_EVENTS, GRAPH_EVENT_COLLECTION, GRAPH_EVENT_ID, GRAPH_EVENT_ITEM, GRAPH_EVENT_ACTION, GRAPH_BATCH, GRAPH_TEAMS_MESSAGE, GRAPH_ACTIVITY_NOTIFICATION, GRAPH_GROUP_CONVERSATION, GCAL_EVENTS, GRAPH_READ_KEYS, MALFORMED_POLICY, BILLING_REJECTION_TEXT_CREDITS, BILLING_REJECTION_TEXT_SEAT, BILLING_REJECTION_TEXT_USER_QUOTA, CUSTOM_MCP_CONNECTION_ID_PREFIX, CUSTOM_MCP_SOURCE, CUSTOM_MCP_TRANSPORT, CUSTOM_MCP_CONNECTION_ID_PATTERN, customMcpConnectionIdSchema, CONNECTION_BACKED_MCP_SOURCES, CUSTOM_MCP_REFERENCE_ID_PATTERN, customMcpReferenceIdSchema, CUSTOM_MCP_AUTH_KINDS, customMcpAuthKindSchema, CUSTOM_MCP_OAUTH_REGISTRATIONS, customMcpOAuthRegistrationSchema, CUSTOM_MCP_HEALTH_STATES, customMcpHealthStateSchema, CUSTOM_MCP_FAILURE_STEPS, customMcpFailureStepSchema, CUSTOM_MCP_CONNECT_STEPS, customMcpConnectStepSchema, customMcpFailureCodeSchema, WORKFLOW_KEY_MAX_LENGTH, CUSTOM_MCP_URL_MAX_LENGTH, CUSTOM_MCP_DISPLAY_NAME_MAX_LENGTH, CUSTOM_MCP_MAX_HEADERS, CUSTOM_MCP_HEADER_NAME_MAX_LENGTH, CUSTOM_MCP_HEADER_VALUE_MAX_LENGTH, CUSTOM_MCP_MAX_TOOLS, CUSTOM_MCP_TOOL_NAME_MAX_LENGTH, CUSTOM_MCP_TOOL_TEXT_MAX_LENGTH, CUSTOM_MCP_MIN_TIMEOUT_MS, CUSTOM_MCP_MAX_TIMEOUT_MS, CUSTOM_MCP_OAUTH_PENDING_TTL_MS, isoDateTime, agentId, nonNegativeInt, customMcpUrlInputSchema, customMcpDisplayNameSchema, customMcpTimeoutSchema, CUSTOM_MCP_RESERVED_HEADER_NAMES, HEADER_NAME, HEADER_VALUE_FORBIDDEN, customMcpHeaderNameSchema, headerValue, customMcpHeadersSchema, customMcpHeadersPatchSchema, customMcpToolNameSchema, customMcpToolSchema, customMcpServerInfoSchema, customMcpToolSelectionSchema, customMcpToolsResponseSchema, customMcpFailureSchema, customMcpHealthSchema, customMcpErrorBodySchema, customMcpConnectionBlockSchema, customMcpConnectionViewSchema, customMcpConnectionResponseSchema, customMcpProbeBodySchema, customMcpOAuthDiscoverySchema, customMcpProbeResponseSchema, createFields, mountAgentField, customMcpCreateAgentBodySchema, customMcpCreateUserBodySchema, customMcpOAuthClientSchema, startFields, customMcpOAuthStartAgentBodySchema, customMcpOAuthStartUserBodySchema, customMcpOAuthStartResponseSchema, nonce, customMcpOAuthSuccessRedirectQuerySchema, CUSTOM_MCP_OAUTH_CALLBACK_ERRORS, customMcpOAuthFailureRedirectQuerySchema, customMcpOAuthFinalizeBodySchema, customMcpCimdDocumentSchema, customMcpPatchBodySchema, customMcpCredentialRequestSchema, customMcpCredentialAuthSchema, customMcpCredentialResponseSchema, CUSTOM_MCP_CREDENTIAL_ERRORS, customMcpCredentialErrorBodySchema, customMcpHealthReportSchema, customMcpProbeRequestSchema, customMcpProbeResultSchema, customMcpOriginUrlSchema, customMcpServerProjectionSchema, customMcpMountUpsertBodySchema, SHARED_DATA_NAME_RE, SHARED_DATA_OWNER_PREFIX, SHARED_DATA_ERRORS;
7626
7636
  var init_dist = __esm({
7627
7637
  "../shared-types/dist/index.mjs"() {
7628
7638
  "use strict";
@@ -11764,6 +11774,9 @@ This text is who you are for this person. As you learn them, their name, their w
11764
11774
  __name(luaClientMetricLabels, "luaClientMetricLabels");
11765
11775
  __name3(luaClientMetricLabels, "luaClientMetricLabels");
11766
11776
  LUA_SESSION_ID_CLAIM = "luaSessionId";
11777
+ WEB_APP_ID_PATTERN = /^[A-Za-z0-9_-]{1,64}$/;
11778
+ __name(webAppPreviewSessionBinding, "webAppPreviewSessionBinding");
11779
+ __name3(webAppPreviewSessionBinding, "webAppPreviewSessionBinding");
11767
11780
  SESSION_REVOKED_CODE = "SESSION_REVOKED";
11768
11781
  AUTHZ_PROJECTION_VERSION = 1;
11769
11782
  ProjectedScopeSchema = z4.string().min(1).max(128);
@@ -12693,6 +12706,9 @@ listed here; never invent a target.`;
12693
12706
  __name(isWebRouteInput, "isWebRouteInput");
12694
12707
  __name3(isWebRouteInput, "isWebRouteInput");
12695
12708
  WEB_APP_NAME_PATTERN = /^[a-z][a-z0-9-]*$/;
12709
+ WEB_APP_TITLE_MAX_CHARS = 80;
12710
+ __name(agentPaneEnabled, "agentPaneEnabled");
12711
+ __name3(agentPaneEnabled, "agentPaneEnabled");
12696
12712
  WEB_APP_ENTRY_HTML_MAX_CHARS = 256 * 1024;
12697
12713
  WEB_APP_MAX_ASSETS = 1e3;
12698
12714
  WEB_APP_ASSET_PATH_PATTERN = /^assets\/(?!.*\.\.)[A-Za-z0-9._\-/]+$/;
@@ -23931,9 +23947,9 @@ function writeTip(message) {
23931
23947
  }
23932
23948
  function writeNextStep(opts) {
23933
23949
  if (hintsDisabled()) return;
23934
- const when3 = opts.when ?? "success";
23935
- const icon = when3 === "error" ? "\u{1F4A1}" : when3 === "partial" ? "\u26A0\uFE0F " : "\u2728";
23936
- const label2 = when3 === "success" ? "Tip" : "Diagnose";
23950
+ const when4 = opts.when ?? "success";
23951
+ const icon = when4 === "error" ? "\u{1F4A1}" : when4 === "partial" ? "\u26A0\uFE0F " : "\u2728";
23952
+ const label2 = when4 === "success" ? "Tip" : "Diagnose";
23937
23953
  const rationale = opts.rationale?.trim();
23938
23954
  const tail = rationale ? ` ${rationale}${/[.!?]$/.test(rationale) ? "" : "."}` : "";
23939
23955
  writeInfo(`${icon} ${label2}: run \`${opts.command}\`${tail}`);
@@ -23941,8 +23957,8 @@ function writeNextStep(opts) {
23941
23957
  function writeHintBlock(opts) {
23942
23958
  if (hintsDisabled()) return;
23943
23959
  const validLines = opts.lines.filter((l) => l.command && l.command.trim().length > 0);
23944
- const when3 = opts.when ?? "success";
23945
- const icon = when3 === "error" ? "\u{1F4A1}" : when3 === "partial" ? "\u26A0\uFE0F " : "\u2728";
23960
+ const when4 = opts.when ?? "success";
23961
+ const icon = when4 === "error" ? "\u{1F4A1}" : when4 === "partial" ? "\u26A0\uFE0F " : "\u2728";
23946
23962
  if (validLines.length === 0) {
23947
23963
  writeInfo(`${icon} ${opts.headline}`);
23948
23964
  return;
@@ -34338,11 +34354,17 @@ var init_web_app_plugin = __esm({
34338
34354
  const pagesRoot = typeof pages?.root === "string" ? pages.root : pagesNode && Node19.isObjectLiteralExpression(pagesNode) ? extractStringProperty(pagesNode, "root") : void 0;
34339
34355
  const { routes, unreadable, duplicates, files } = readRoutes(config);
34340
34356
  const sourceFile = config.getSourceFile();
34357
+ const title = extractStringProperty(config, "title");
34358
+ const agentPane = extractBooleanProperty(config, "agentPane");
34341
34359
  return {
34342
34360
  kind: this.kind,
34343
34361
  ...common,
34344
34362
  metadata: {
34345
34363
  pattern,
34364
+ title,
34365
+ titleUnreadable: hasProperty(config, "title") && title === void 0,
34366
+ agentPane,
34367
+ agentPaneUnreadable: hasProperty(config, "agentPane") && agentPane === void 0,
34346
34368
  pagesRoot,
34347
34369
  spa: typeof pages?.spa === "boolean" ? pages.spa : void 0,
34348
34370
  nav: Array.isArray(pages?.nav) ? pages.nav : void 0,
@@ -34383,6 +34405,14 @@ var init_web_app_plugin = __esm({
34383
34405
  if (metadata.name && !WEB_APP_NAME_PATTERN.test(metadata.name)) {
34384
34406
  errors.push(validationError(`Web app name must match ${WEB_APP_NAME_PATTERN} (lower-case letters, digits, dashes)`, at));
34385
34407
  }
34408
+ if (meta.titleUnreadable) {
34409
+ errors.push(validationError("Web app `title` must be a compile-time string (the display name the shells show)", at));
34410
+ } else if (meta.title !== void 0 && (!meta.title.trim() || meta.title.length > WEB_APP_TITLE_MAX_CHARS)) {
34411
+ errors.push(validationError(`Web app \`title\` must be non-empty and at most ${WEB_APP_TITLE_MAX_CHARS} characters`, at));
34412
+ }
34413
+ if (meta.agentPaneUnreadable) {
34414
+ errors.push(validationError("Web app `agentPane` must be a compile-time boolean (`true` or `false`)", at));
34415
+ }
34386
34416
  if (!meta.pagesRoot) {
34387
34417
  errors.push(validationError("Web app `pages.root` must be a string literal naming the Vite project directory", at));
34388
34418
  }
@@ -34489,6 +34519,13 @@ var init_web_app_plugin = __esm({
34489
34519
  return {
34490
34520
  ...this.baseManifestFields(compiled),
34491
34521
  kind: "web-app",
34522
+ ...meta.title?.trim() ? {
34523
+ title: meta.title.trim()
34524
+ } : {},
34525
+ // Only the opt-out is written, so an app that never sets it compiles exactly as before.
34526
+ ...meta.agentPane === false ? {
34527
+ agentPane: false
34528
+ } : {},
34492
34529
  pagesRoot: meta.pagesRoot ?? ".",
34493
34530
  spa: meta.spa !== false,
34494
34531
  nav: meta.nav ?? [],
@@ -35200,9 +35237,9 @@ export function defineWebApp(config) {
35200
35237
  logLevel: this.options.debug ? "debug" : "silent"
35201
35238
  });
35202
35239
  } catch (err) {
35203
- const failure2 = err;
35240
+ const failure3 = err;
35204
35241
  const guardText = /* @__PURE__ */ __name((e) => typeof e.text === "string" ? e.text.replace(/^\[plugin [^\]]*\]\s*/, "") : "", "guardText");
35205
- const guard = failure2?.errors?.find((e) => COMPILE_GUARD_CODES.some((c) => guardText(e).startsWith(c)));
35242
+ const guard = failure3?.errors?.find((e) => COMPILE_GUARD_CODES.some((c) => guardText(e).startsWith(c)));
35206
35243
  if (guard) {
35207
35244
  const at = guard.location ? ` (${guard.location.file}:${guard.location.line}:${guard.location.column + 1})` : "";
35208
35245
  throw new Error(`${guardText(guard)}${at}`);
@@ -50498,9 +50535,9 @@ async function runWorkflowLocallyInner(rawOpts) {
50498
50535
  fn(controller.signal),
50499
50536
  new Promise((_, reject) => {
50500
50537
  timer = setTimeout(() => {
50501
- const failure2 = new StepFailure("TIMEOUT", `step "${stepId}" exceeded its ${wallMs / 1e3} s wall`);
50502
- controller.abort(failure2);
50503
- reject(failure2);
50538
+ const failure3 = new StepFailure("TIMEOUT", `step "${stepId}" exceeded its ${wallMs / 1e3} s wall`);
50539
+ controller.abort(failure3);
50540
+ reject(failure3);
50504
50541
  }, wallMs);
50505
50542
  })
50506
50543
  ]);
@@ -51445,7 +51482,7 @@ async function runWorkflowLocallyInner(rawOpts) {
51445
51482
  ...rows3.values()
51446
51483
  ].filter((r) => r.status === "pending");
51447
51484
  if (stuck.length) {
51448
- const failure2 = {
51485
+ const failure3 = {
51449
51486
  code: "FRONTIER_STALLED",
51450
51487
  message: `no ready step; pending: ${stuck.map((r) => r.stepId).join(", ")}`
51451
51488
  };
@@ -51454,7 +51491,7 @@ async function runWorkflowLocallyInner(rawOpts) {
51454
51491
  return {
51455
51492
  status: "failed",
51456
51493
  exitCode: 4,
51457
- error: failure2,
51494
+ error: failure3,
51458
51495
  ledger,
51459
51496
  timeline
51460
51497
  };
@@ -51468,7 +51505,7 @@ async function runWorkflowLocallyInner(rawOpts) {
51468
51505
  if (opts.schemas?.output) {
51469
51506
  const issues = validateJsonSchema(opts.schemas.output, output);
51470
51507
  if (issues.length) {
51471
- const failure2 = {
51508
+ const failure3 = {
51472
51509
  code: "OUTPUT_SCHEMA_INVALID",
51473
51510
  message: `run output does not match outputSchema: ${issues.join("; ")}`
51474
51511
  };
@@ -51477,7 +51514,7 @@ async function runWorkflowLocallyInner(rawOpts) {
51477
51514
  return {
51478
51515
  status: "failed",
51479
51516
  exitCode: 4,
51480
- error: failure2,
51517
+ error: failure3,
51481
51518
  ledger,
51482
51519
  timeline
51483
51520
  };
@@ -52771,6 +52808,22 @@ var WebAppApi = class extends HttpClient {
52771
52808
  code
52772
52809
  }, {});
52773
52810
  }
52811
+ /** Open a preview of one pushed version (`latest` by default), or get the open one for that version. */
52812
+ async openPreview(webAppId, input) {
52813
+ return this.httpPostOnce(`/developer/web-apps/${this.agentId}/${webAppId}/previews`, input, {});
52814
+ }
52815
+ async listPreviews(webAppId) {
52816
+ const query = webAppId ? `?webAppId=${encodeURIComponent(webAppId)}` : "";
52817
+ return this.httpGet(`/developer/web-apps/${this.agentId}/previews${query}`, {});
52818
+ }
52819
+ /** End a preview: its copy of the data and its recorded effects are deleted. */
52820
+ async closePreview(previewId) {
52821
+ return this.httpPost(`/developer/web-apps/${this.agentId}/previews/${encodeURIComponent(previewId)}/close`, {}, {});
52822
+ }
52823
+ async previewEffects(previewId, after) {
52824
+ const query = after !== void 0 ? `?after=${after}` : "";
52825
+ return this.httpGet(`/developer/web-apps/${this.agentId}/previews/${encodeURIComponent(previewId)}/effects${query}`, {});
52826
+ }
52774
52827
  };
52775
52828
 
52776
52829
  // src/primitives/web-app.handler.ts
@@ -52998,6 +53051,13 @@ var WebAppHandler = class extends BaseVersionedHandler {
52998
53051
  const app = primitive;
52999
53052
  return {
53000
53053
  name: app.name,
53054
+ ...app.title ? {
53055
+ title: app.title
53056
+ } : {},
53057
+ // Sent only to turn the pane off; absent ⇒ lua-api stores the default (on).
53058
+ ...app.agentPane === false ? {
53059
+ agentPane: false
53060
+ } : {},
53001
53061
  ...app.description ? {
53002
53062
  description: app.description
53003
53063
  } : {},
@@ -53145,8 +53205,8 @@ var DecisionHandler = class extends BaseVersionedHandler {
53145
53205
  }
53146
53206
  return revivedLine(stale.name, record ? "was deleted on the server" : "no longer exists on the server", reused);
53147
53207
  }
53148
- async replaceStaleEntry(apiKey, agentId2, name, manifest, failure2) {
53149
- if (failure2.statusCode !== 409 || failure2.code !== DECISION_INACTIVE_CODE) return null;
53208
+ async replaceStaleEntry(apiKey, agentId2, name, manifest, failure3) {
53209
+ if (failure3.statusCode !== 409 || failure3.code !== DECISION_INACTIVE_CODE) return null;
53150
53210
  const api = this.getApi(apiKey, agentId2);
53151
53211
  const namesake = (await this.fetchFromServer(api))?.find((item) => item.name === name && isLive(item));
53152
53212
  const primitive = findPrimitive(manifest, name, PrimitiveKind.DECISION);
@@ -53674,10 +53734,12 @@ async function handleDevRequest(req, ctx) {
53674
53734
  app: {
53675
53735
  id: "local",
53676
53736
  name: ctx.app.name,
53737
+ title: ctx.app.title || ctx.app.branding?.name || void 0,
53677
53738
  description: ctx.app.description,
53678
53739
  version: "0.0.0-dev",
53679
53740
  deployment: 0
53680
53741
  },
53742
+ agentPane: ctx.app.agentPane !== false,
53681
53743
  nav: ctx.app.nav,
53682
53744
  user: {
53683
53745
  id: ctx.auth.userId,
@@ -79892,6 +79954,10 @@ async function templateDraftAction(templateApi, options) {
79892
79954
  } : {},
79893
79955
  ...result.draft.onUninstall ? {
79894
79956
  onUninstall: result.draft.onUninstall
79957
+ } : {},
79958
+ // BAC-2623 — the draft composer does not author sharedData; keep what the yaml already declares.
79959
+ ...config.template?.sharedData ? {
79960
+ sharedData: config.template.sharedData
79895
79961
  } : {}
79896
79962
  };
79897
79963
  writeYamlConfig(config);
@@ -79929,7 +79995,8 @@ var TEMPLATE_SECTION_KEYS = [
79929
79995
  "paramsMeta",
79930
79996
  "onInstall",
79931
79997
  "onUninstall",
79932
- "installPolicy"
79998
+ "installPolicy",
79999
+ "sharedData"
79933
80000
  ];
79934
80001
  var HOOK_KEYS = [
79935
80002
  "tool",
@@ -79944,6 +80011,9 @@ function sectionKeys(section2, value3) {
79944
80011
  const vars = value3.vars ?? [];
79945
80012
  return vars.map((v) => v.name);
79946
80013
  }
80014
+ if (section2 === "sharedData") {
80015
+ return (value3 ?? []).map((e) => `${e.name}:${e.access}`);
80016
+ }
79947
80017
  if (section2 === "onInstall" || section2 === "onUninstall") {
79948
80018
  const hook = value3;
79949
80019
  return HOOK_KEYS.filter((key) => Boolean(hook[key]));
@@ -79965,7 +80035,8 @@ async function confirmTemplateSectionConsequences(templateApi, templateId, local
79965
80035
  paramsMeta: "the deploy form falls back to derived display names and string typing",
79966
80036
  onInstall: "new installs no longer run a post-install hook; installed agents are untouched",
79967
80037
  onUninstall: "uninstalls no longer run cleanup before teardown (provider-side artifacts may be left behind)",
79968
- installPolicy: "new installs are no longer limited to one per workspace"
80038
+ installPolicy: "new installs are no longer limited to one per workspace",
80039
+ sharedData: "new installs no longer join these shared collections; agents already on them keep their access"
79969
80040
  };
79970
80041
  for (const section2 of TEMPLATE_SECTION_KEYS) {
79971
80042
  const serverKeys = sectionKeys(section2, latest[section2]);
@@ -80007,7 +80078,9 @@ async function templatePublishAction(templateApi, config, options) {
80007
80078
  onInstall: templateSection.onInstall ?? null,
80008
80079
  onUninstall: templateSection.onUninstall ?? null,
80009
80080
  // BAC-466 — null clears (the personaTemplate rule): absent = no per-workspace limit.
80010
- installPolicy: templateSection.installPolicy ?? null
80081
+ installPolicy: templateSection.installPolicy ?? null,
80082
+ // BAC-2623 — [] clears (absent = joins nothing).
80083
+ sharedData: templateSection.sharedData ?? []
80011
80084
  };
80012
80085
  }
80013
80086
  writeProgress("\u{1F504} Publishing template version...");
@@ -89677,12 +89750,22 @@ function forgetWebAppInYaml(webAppId, name) {
89677
89750
  return true;
89678
89751
  }
89679
89752
  __name(forgetWebAppInYaml, "forgetWebAppInYaml");
89753
+ var EXIT_1_CODES = /* @__PURE__ */ new Set([
89754
+ "NO_EMAIL_ON_ACCOUNT",
89755
+ "WEB_APP_DELETE_CODE_EMAIL_FAILED"
89756
+ ]);
89757
+ var isExit1Code = /* @__PURE__ */ __name((code) => code !== void 0 && (code.startsWith("WEB_APP_DELETE_CODE_") || EXIT_1_CODES.has(code)), "isExit1Code");
89680
89758
  function failure(response, fallback) {
89681
89759
  const code = response.error?.code;
89682
- return new CliError("api", `${response.error?.message ?? fallback}${code ? ` (${code})` : ""}`, {
89683
- statusCode: response.error?.statusCode,
89684
- serverCode: code
89685
- });
89760
+ const message = `${response.error?.message ?? fallback}${code ? ` (${code})` : ""}`;
89761
+ const status = response.error?.statusCode;
89762
+ if (isExit1Code(code) && status !== 401 && status !== 403) {
89763
+ return new CliError("api", message, {
89764
+ statusCode: status,
89765
+ serverCode: code
89766
+ });
89767
+ }
89768
+ return CliError.fromStatus(status, message, void 0, apiErrorDetail(response.error));
89686
89769
  }
89687
89770
  __name(failure, "failure");
89688
89771
  function printPreview(p) {
@@ -89801,6 +89884,192 @@ async function appsDeleteCommand(name, opts = {}) {
89801
89884
  }
89802
89885
  __name(appsDeleteCommand, "appsDeleteCommand");
89803
89886
 
89887
+ // src/commands/apps-preview.ts
89888
+ init_dist();
89889
+ init_cli();
89890
+ init_write_info();
89891
+ init_files();
89892
+ init_cli_error();
89893
+ init_analytics();
89894
+ init_request_credential();
89895
+ init_constants();
89896
+ var PREVIEW_ID = /^[a-z2-7]{8}$/;
89897
+ var TTL_MAX_HOURS = 168;
89898
+ var DISPLAY_MAX = 200;
89899
+ var EFFECT_PAGES_MAX = 20;
89900
+ function forTerminal(value3, max = DISPLAY_MAX) {
89901
+ const text2 = String(value3 ?? "").replace(/[\u0000-\u001f\u007f-\u009f]/g, " ");
89902
+ return text2.length > max ? `${text2.slice(0, max - 1)}\u2026` : text2;
89903
+ }
89904
+ __name(forTerminal, "forTerminal");
89905
+ function printJson5(value3) {
89906
+ console.log(
89907
+ // eslint-disable-next-line no-control-regex
89908
+ JSON.stringify(value3, null, 2).replace(/[\u007f-\u009f]/g, (c) => `\\u${c.charCodeAt(0).toString(16).padStart(4, "0")}`)
89909
+ );
89910
+ }
89911
+ __name(printJson5, "printJson");
89912
+ function parseTtlHours(raw) {
89913
+ const m = /^(\d+(?:\.\d+)?)(h|d)?$/i.exec(raw.trim());
89914
+ const hours = m ? Number(m[1]) * (m[2]?.toLowerCase() === "d" ? 24 : 1) : NaN;
89915
+ if (!Number.isFinite(hours) || hours <= 0 || hours > TTL_MAX_HOURS) {
89916
+ throw CliError.usage(`--ttl takes hours (24, 24h) or days (2d), at most ${TTL_MAX_HOURS} hours; got ${JSON.stringify(raw)}.`);
89917
+ }
89918
+ return hours;
89919
+ }
89920
+ __name(parseTtlHours, "parseTtlHours");
89921
+ function failure2(response, fallback) {
89922
+ const code = response.error?.code;
89923
+ const message = forTerminal(response.error?.message ?? fallback);
89924
+ return CliError.fromStatus(response.error?.statusCode, `${message}${code ? ` (${forTerminal(code, 80)})` : ""}`, void 0, apiErrorDetail(response.error));
89925
+ }
89926
+ __name(failure2, "failure");
89927
+ function when3(iso) {
89928
+ const d = new Date(iso);
89929
+ return Number.isNaN(d.getTime()) ? forTerminal(iso, 40) : d.toLocaleString("en-GB", {
89930
+ day: "numeric",
89931
+ month: "short",
89932
+ hour: "2-digit",
89933
+ minute: "2-digit"
89934
+ });
89935
+ }
89936
+ __name(when3, "when");
89937
+ function printOpened(p) {
89938
+ writeSuccess(`${p.created === false ? "\u2705 Open preview of" : "\u2705 Preview of"} ${forTerminal(p.name)} ${forTerminal(p.version)} (until ${when3(p.expiresAt)})`);
89939
+ writeInfo(` Open: ${forTerminal(p.openUrl, 500)}`);
89940
+ writeInfo(" Data writes go to a copy that is deleted when the preview ends; emails and messages are recorded, not sent; fetch calls fail (TEST_EGRESS_BLOCKED).");
89941
+ writeInfo(" Anyone who can edit this agent can open the link.");
89942
+ const id2 = forTerminal(p.id, 16);
89943
+ writeInfo(` End it now: lua apps preview --close ${id2} \xB7 What it recorded: lua apps preview --effects ${id2}`);
89944
+ }
89945
+ __name(printOpened, "printOpened");
89946
+ var TARGET_KEYS = [
89947
+ "url",
89948
+ "to",
89949
+ "channel",
89950
+ "tool",
89951
+ "collection"
89952
+ ];
89953
+ var RECIPIENT_KEYS = [
89954
+ "email",
89955
+ "phoneNumber",
89956
+ "userId",
89957
+ "conversationId"
89958
+ ];
89959
+ function effectTarget(request2) {
89960
+ const req = request2 && typeof request2 === "object" ? request2 : {};
89961
+ if (typeof req.surface === "string" && req.surface) {
89962
+ return typeof req.code === "string" && req.code ? `${req.surface} (${req.code})` : req.surface;
89963
+ }
89964
+ for (const key of TARGET_KEYS) {
89965
+ const value3 = req[key];
89966
+ if (typeof value3 === "string" && value3) return value3;
89967
+ if (value3 && typeof value3 === "object") {
89968
+ const to = value3;
89969
+ const hit = RECIPIENT_KEYS.map((k) => to[k]).find((v) => typeof v === "string" && v !== "");
89970
+ if (hit) return hit;
89971
+ }
89972
+ }
89973
+ return "";
89974
+ }
89975
+ __name(effectTarget, "effectTarget");
89976
+ function describeEffect(e) {
89977
+ const target = effectTarget(e.request);
89978
+ const site = e.site ? ` (${forTerminal(e.site, 40)})` : "";
89979
+ return ` #${forTerminal(e.seq, 12)} ${forTerminal(e.kind, 40)}${site}${target ? ` ${forTerminal(target)}` : ""} ${when3(e.at)}`;
89980
+ }
89981
+ __name(describeEffect, "describeEffect");
89982
+ async function appsPreviewCommand(name, opts = {}) {
89983
+ return withErrorHandling(async () => {
89984
+ const modes = [
89985
+ opts.list,
89986
+ opts.close,
89987
+ opts.effects
89988
+ ].filter((m) => m !== void 0 && m !== false).length;
89989
+ if (modes > 1) throw CliError.usage("Use one of --list, --close <id> or --effects <id> at a time.");
89990
+ if (modes === 0 && !name) {
89991
+ throw CliError.usage("Name the web app to preview.", "lua apps preview <name> \xB7 lua apps preview --list");
89992
+ }
89993
+ if (name && !WEB_APP_NAME_PATTERN.test(name)) throw CliError.usage(`${JSON.stringify(name)} is not a web app name.`);
89994
+ for (const id2 of [
89995
+ opts.close,
89996
+ opts.effects
89997
+ ]) {
89998
+ if (id2 !== void 0 && !PREVIEW_ID.test(id2)) {
89999
+ throw CliError.usage(`${JSON.stringify(id2)} is not a preview id (8 characters, as \`--list\` shows).`);
90000
+ }
90001
+ }
90002
+ const ttlHours = opts.ttl !== void 0 ? parseTtlHours(opts.ttl) : void 0;
90003
+ const agentId2 = opts.agent ?? readYamlConfig()?.agent?.agentId;
90004
+ if (!agentId2) throw CliError.usage("No agent: run this in an agent project, or pass --agent <agentId>.");
90005
+ const api = new WebAppApi(BASE_URLS.API, await resolveRequestCredential(), agentId2);
90006
+ const findApp = /* @__PURE__ */ __name(async (appName) => {
90007
+ const list = await api.getWebApps();
90008
+ if (!list.success) throw failure2(list, "Could not list the web apps of the agent.");
90009
+ const app2 = list.data?.webApps.find((a) => a.name === appName);
90010
+ if (!app2) throw CliError.notFound(`No web app named ${JSON.stringify(appName)} on agent ${agentId2}.`, `Push it first: lua push webapp --name ${appName}`);
90011
+ return app2;
90012
+ }, "findApp");
90013
+ if (opts.list) {
90014
+ const res2 = await api.listPreviews(name ? (await findApp(name)).id : void 0);
90015
+ if (!res2.success || !res2.data) throw failure2(res2, "Could not list the previews.");
90016
+ if (opts.json) return printJson5(res2.data.previews);
90017
+ if (!res2.data.previews.length) return writeInfo(`No open previews ${name ? `of ${name}` : "on this agent"}.`);
90018
+ for (const p of res2.data.previews) {
90019
+ writeInfo(` ${forTerminal(p.id, 16)} ${forTerminal(p.name)} ${forTerminal(p.version)} until ${when3(p.expiresAt)} ${forTerminal(p.openUrl, 500)}`);
90020
+ }
90021
+ return;
90022
+ }
90023
+ if (opts.close) {
90024
+ const res2 = await api.closePreview(opts.close);
90025
+ if (!res2.success) throw failure2(res2, "Could not end the preview.");
90026
+ if (opts.json) return printJson5(res2.data);
90027
+ writeSuccess(`\u2705 Preview ${opts.close} ended; its copy of the data and its recorded effects are deleted.`);
90028
+ trackEvent("cli_apps_preview_closed", {});
90029
+ return;
90030
+ }
90031
+ if (opts.effects) {
90032
+ const effects = [];
90033
+ let after;
90034
+ for (let page = 0; page < EFFECT_PAGES_MAX; page++) {
90035
+ const res2 = await api.previewEffects(opts.effects, after);
90036
+ if (!res2.success || !res2.data) throw failure2(res2, "Could not read what the preview recorded.");
90037
+ effects.push(...res2.data.effects);
90038
+ after = res2.data.nextAfter;
90039
+ if (after === void 0) break;
90040
+ }
90041
+ const truncated = after !== void 0;
90042
+ const cut2 = `Only the first ${effects.length} recorded effects are shown; the preview recorded more.`;
90043
+ if (opts.json) {
90044
+ if (truncated) console.error(cut2);
90045
+ return printJson5(effects);
90046
+ }
90047
+ if (!effects.length) return writeInfo("The preview has recorded nothing so far: no email or message.");
90048
+ writeInfo(`Recorded instead of sent (${effects.length}${truncated ? "+" : ""}):`);
90049
+ for (const e of effects) writeInfo(describeEffect(e));
90050
+ if (truncated) writeInfo(cut2);
90051
+ return;
90052
+ }
90053
+ const app = await findApp(name);
90054
+ const res = await api.openPreview(app.id, {
90055
+ ...opts.version ? {
90056
+ version: opts.version
90057
+ } : {},
90058
+ ...ttlHours !== void 0 ? {
90059
+ ttlHours
90060
+ } : {}
90061
+ });
90062
+ if (!res.success || !res.data) throw failure2(res, "Could not open the preview.");
90063
+ if (opts.json) return printJson5(res.data);
90064
+ printOpened(res.data);
90065
+ trackEvent("cli_apps_preview_opened", {
90066
+ created: res.data.created !== false,
90067
+ withVersion: Boolean(opts.version)
90068
+ });
90069
+ }, "apps preview");
90070
+ }
90071
+ __name(appsPreviewCommand, "appsPreviewCommand");
90072
+
89804
90073
  // src/commands/browser.ts
89805
90074
  init_cli();
89806
90075
  init_hints();
@@ -90051,10 +90320,10 @@ async function browserContextOf(options) {
90051
90320
  };
90052
90321
  }
90053
90322
  __name(browserContextOf, "browserContextOf");
90054
- function printJson5(value3) {
90323
+ function printJson6(value3) {
90055
90324
  console.log(JSON.stringify(value3, null, 2));
90056
90325
  }
90057
- __name(printJson5, "printJson");
90326
+ __name(printJson6, "printJson");
90058
90327
  function logsHint() {
90059
90328
  writeNextStep({
90060
90329
  command: BROWSER_LOGS_HINT,
@@ -90087,7 +90356,7 @@ async function runBrowserRead(ctx, url, options) {
90087
90356
  json: !!options.json
90088
90357
  });
90089
90358
  if (options.json) {
90090
- printJson5(output);
90359
+ printJson6(output);
90091
90360
  return output;
90092
90361
  }
90093
90362
  if (output.error) {
@@ -90182,7 +90451,7 @@ async function runBrowserTask(ctx, task, options, out = terminalRunOutput()) {
90182
90451
  environment: ctx.environment,
90183
90452
  json: !!options.json
90184
90453
  });
90185
- if (options.json) printJson5({
90454
+ if (options.json) printJson6({
90186
90455
  id: view.id,
90187
90456
  status: "cancelled",
90188
90457
  cancelled
@@ -90208,7 +90477,7 @@ async function runBrowserTask(ctx, task, options, out = terminalRunOutput()) {
90208
90477
  json: !!options.json
90209
90478
  });
90210
90479
  if (options.json) {
90211
- printJson5(view);
90480
+ printJson6(view);
90212
90481
  return {
90213
90482
  view,
90214
90483
  cancelled: false
@@ -91252,9 +91521,25 @@ Examples:
91252
91521
  $ lua version delete v3 --ci Refused: needs --force (usage error, exit 2)
91253
91522
  $ lua version delete v3 --ci --force Delete non-interactively
91254
91523
  `).action((version, opts) => versionDeleteCommand(version, opts));
91255
- const appsGroup = program2.command("apps").description("\u{1F5A5}\uFE0F Create, develop and delete web apps of this agent");
91524
+ const appsGroup = program2.command("apps").description("\u{1F5A5}\uFE0F Create, develop, preview and delete web apps of this agent");
91256
91525
  appsGroup.command("new <name>").description("Scaffold a web app in src/apps/<name> (routes + a Vite/React page) and list it on the agent").action((name) => appsNewCommand(name));
91257
91526
  appsGroup.command("dev <name>").description("Run a web app locally: pages on Vite with hot reload, routes in the local sandbox as you").option("--port <port>", "Port for the dev server (default: Vite's)").action((name, opts) => appsDevCommand(name, opts));
91527
+ appsGroup.command("preview [name]").description("Open a pushed web app version before it is live (a temporary copy of the data, nothing sent)").option("--version <version>", "The pushed version to open, or 'latest' (default)").option("--ttl <hours>", "How long the preview lives: hours (24, 24h) or days (2d), at most 168 hours (default 24)").option("--list", "List the previews that have not ended: of the agent, or of the web app you name").option("--close <id>", "End a preview now: its copy of the data and its recorded effects are deleted").option("--effects <id>", "What the preview recorded instead of sending (emails, messages)").option("--agent <agentId>", "The agent the web app belongs to (default: this project\u2019s agent)").option("--json", "Print JSON").addHelpText("after", `
91528
+ A preview opens in Lua Workspace from the link it prints, on its own address.
91529
+ Its routes write to a copy of the agent's data that is deleted when the
91530
+ preview ends; emails and messages are recorded, not sent, and fetch calls
91531
+ fail with TEST_EGRESS_BLOCKED. Anyone who can edit the agent can open the link. Opening a preview of a
91532
+ version that already has an open one gives you that one. --json prints the
91533
+ server's data unchanged (control characters escaped), for scripts.
91534
+
91535
+ Examples:
91536
+ $ lua apps preview ops-dashboard Preview the latest push
91537
+ $ lua apps preview ops-dashboard --version 1.0.4 --ttl 2d
91538
+ $ lua apps preview --list Every open preview on the agent
91539
+ $ lua apps preview ops-dashboard --list Only that app's
91540
+ $ lua apps preview --effects p7k2m3xq
91541
+ $ lua apps preview --close p7k2m3xq
91542
+ `).action((name, opts) => appsPreviewCommand(name, opts));
91258
91543
  appsGroup.command("delete <name>").description("Delete a web app for good (confirmed by a code emailed to you)").option("--agent <agentId>", "The agent the web app belongs to (default: this project\u2019s agent)").option("--code <code>", "The 6-digit code from the email (non-interactive second step)").addHelpText("after", `
91259
91544
  Permanent: the web app and every version of it are removed, the live agent
91260
91545
  version stops listing it, and no rollback brings it back. Agent data stays.