@vekil/app-sdk 0.4.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/development-replay-store.ts","../../app-protocol/src/common.ts","../../app-protocol/src/app-compilation-binding.ts","../../app-protocol/src/app-categories.ts","../../app-context/src/context-envelope.ts","../../app-context/src/context-scopes.ts","../../app-context/src/context-projection.ts","../../app-protocol/src/app-definition.ts","../../app-protocol/src/app-manifest.ts","../../api-contracts/src/identity.ts","../../api-contracts/src/auth.ts","../../api-contracts/src/public-page.ts","../../api-contracts/src/usage.ts","../../api-contracts/src/vekil.ts","../../../product/domain/src/agent.ts","../../../product/domain/src/communication.ts","../../../product/domain/src/identity.ts","../../../product/domain/src/request.ts","../../api-contracts/src/app-development.ts","../../api-contracts/src/administration.ts","../../api-contracts/src/health.ts","../../api-contracts/src/assets.ts","../../api-contracts/src/apps.ts","../../api-contracts/src/bubbles.ts","../../api-contracts/src/communication.ts","../../api-contracts/src/errors.ts","../../api-contracts/src/inbox.ts","../../api-contracts/src/policies.ts","../../api-contracts/src/requests.ts","../../app-protocol/src/canonical-json.ts","../../app-protocol/src/runtime-envelopes.ts","../../app-protocol/src/declarative-host-envelopes.ts","../../app-protocol/src/signature-envelope.ts","../../app-runtime/src/protocol-signature.ts","../../app-runtime/src/declarative-runtime/errors.ts","../../app-runtime/src/declarative-runtime/egress-policy.ts","../../app-runtime/src/declarative-runtime/http-transport.ts","../../app-runtime/src/fetch-bounds.ts","../../app-runtime/src/runtime-jwks.ts","../../app-runtime/src/authorization-contract.ts","../../app-runtime/src/runtime-v1-validation.ts","../../app-runtime/src/remote-runtime-v1.ts","../../app-runtime/src/runtime-v1-server.ts","../src/remote-runtime.ts","../src/runtime-bindings.ts","../src/runtime-health.ts","../src/signing.ts"],"names":["AppCategoryId","z","isOriginUrl","PublicHandleClaimStatus","PreferredColorScheme","AuthAdminRole","UserOnboardingStatus","UserOnboardingStep","ManagedAiServiceStatus","ProductPlanKey","PublicVekilRequestAvailability","AgentStatus","PublicRequestSessionStatus","RequestStatus","AppSubmissionViewStatus","AppBuilderProjectViewStatus","BuilderProfileViewStatus","AppTestRunViewStatus","AppBuilderAudience","AppBuilderLifecycleState","AppBuilderCandidateTestStatus","AdminAppDefinitionStatus","AdminAppRuntimeType","AdminAppTrustLevel","AdminAppVersionStatus","AdminAppVisibility","AdminBuilderProfileStatus","AppReviewAction","AppReviewEventType","AdminAppModerationEventType","HealthDependencyStatus","ServiceReadinessStatus","UploadAssetKind","UploadAssetViewStatus","appManifestSnapshotSchema","AppAvailabilitySource","AppConnectionStartStatus","optionalTrimmedString","createHash","createPrivateKey","nodeSign","createPublicKey","nodeVerify","isIP","lookup","BlockList","requestHttps","requestHttp","providerUnavailable","authorization","normalizeHostname","readBoundedBody","AppRuntimeV1ServerErrorCode","randomUUID","generateKeyPairSync","randomBytes"],"mappings":"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","file":"runtime.cjs","sourcesContent":["import type { AppSignatureReplayClaim, AppSignatureReplayStore } from \"@vekil/app-runtime/server\";\n\nexport class DevelopmentAppSignatureReplayStore implements AppSignatureReplayStore {\n private readonly claims = new Map<string, number>();\n private readonly now: () => number;\n\n constructor({ now = Date.now }: { now?: () => number } = {}) {\n this.now = now;\n }\n\n async claim(input: AppSignatureReplayClaim): Promise<boolean> {\n const now = this.now();\n this.removeExpiredClaims(now);\n const key = [input.issuer, input.audience, input.keyId, input.nonce].join(\":\");\n\n if (this.claims.has(key)) return false;\n\n this.claims.set(key, input.expiresAt.getTime());\n return true;\n }\n\n clear(): void {\n this.claims.clear();\n }\n\n private removeExpiredClaims(now: number): void {\n for (const [key, expiresAt] of this.claims) {\n if (expiresAt <= now) this.claims.delete(key);\n }\n }\n}\n\nexport function createDevelopmentReplayStore(\n input: { now?: () => number } = {}\n): DevelopmentAppSignatureReplayStore {\n return new DevelopmentAppSignatureReplayStore(input);\n}\n","import { z } from \"zod\";\n\nexport const appProtocolVersion = \"2026-07-19\" as const;\nexport const appDefinitionVersion = \"2026-07\" as const;\nexport const appManifestVersion = \"2026-07\" as const;\nexport const appSettingsSchemaVersion = 1 as const;\nexport const appPoliciesSchemaVersion = 1 as const;\n\nexport enum AppRuntimeHost {\n DECLARATIVE = \"DECLARATIVE\",\n REMOTE = \"REMOTE\"\n}\n\nexport enum AppConnectionType {\n NONE = \"NONE\",\n API_KEY = \"API_KEY\",\n OAUTH2 = \"OAUTH2\"\n}\n\nexport enum AppCategoryId {\n COMMUNICATION = \"communication\",\n PRODUCTIVITY = \"productivity\",\n CUSTOMER_RELATIONSHIPS = \"customer-relationships\",\n PEOPLE_AND_TEAMS = \"people-and-teams\",\n MARKETING_AND_CONTENT = \"marketing-and-content\",\n COMMERCE_AND_PAYMENTS = \"commerce-and-payments\",\n FINANCE = \"finance\",\n LEGAL_AND_COMPLIANCE = \"legal-and-compliance\",\n OPERATIONS_AND_LOGISTICS = \"operations-and-logistics\",\n DATA_AND_KNOWLEDGE = \"data-and-knowledge\",\n DEVELOPER_AND_IT = \"developer-and-it\",\n SERVICES_AND_BOOKINGS = \"services-and-bookings\",\n PERSONAL_AND_LIFESTYLE = \"personal-and-lifestyle\",\n OTHER = \"other\"\n}\n\nexport enum AppPermissionSensitivity {\n STANDARD = \"STANDARD\",\n SENSITIVE = \"SENSITIVE\"\n}\n\nexport enum AppRiskLevel {\n LOW = \"LOW\",\n MEDIUM = \"MEDIUM\",\n HIGH = \"HIGH\",\n CRITICAL = \"CRITICAL\"\n}\n\nexport enum AppSideEffectType {\n READ_ONLY = \"READ_ONLY\",\n PROPOSAL_ONLY = \"PROPOSAL_ONLY\",\n WRITE_EXTERNAL_STATE = \"WRITE_EXTERNAL_STATE\",\n SEND_MESSAGE = \"SEND_MESSAGE\",\n SHARE_DATA = \"SHARE_DATA\",\n FINANCIAL_ACTION = \"FINANCIAL_ACTION\",\n DESTRUCTIVE_ACTION = \"DESTRUCTIVE_ACTION\"\n}\n\nexport enum AppApprovalMode {\n NOT_REQUIRED = \"NOT_REQUIRED\",\n POLICY = \"POLICY\",\n ALWAYS = \"ALWAYS\"\n}\n\nexport enum AppPolicyEffect {\n ALLOW = \"ALLOW\",\n REQUIRE_APPROVAL = \"REQUIRE_APPROVAL\",\n DENY = \"DENY\"\n}\n\nexport enum AppOrigin {\n PUBLIC_GUEST = \"PUBLIC_GUEST\",\n PUBLIC_VERIFIED_EXTERNAL = \"PUBLIC_VERIFIED_EXTERNAL\",\n PUBLIC_AUTHENTICATED = \"PUBLIC_AUTHENTICATED\",\n AGENT_TO_AGENT = \"AGENT_TO_AGENT\",\n SYSTEM_GENERATED = \"SYSTEM_GENERATED\"\n}\n\nexport enum AppIntentMode {\n ANSWER = \"ANSWER\",\n COLLECT = \"COLLECT\",\n EXECUTE = \"EXECUTE\"\n}\n\nexport enum AppKnowledgeAudience {\n PUBLIC = \"PUBLIC\",\n VERIFIED_REQUESTER = \"VERIFIED_REQUESTER\",\n OWNER = \"OWNER\"\n}\n\nexport enum AppKnowledgeSourceType {\n RUNTIME = \"RUNTIME\",\n SETTING = \"SETTING\"\n}\n\nexport enum AppContactIdentityAttribute {\n DISPLAY_NAME = \"DISPLAY_NAME\",\n EMAIL = \"EMAIL\"\n}\n\nexport const appContactIdentityAttributeJsonSchemaKey =\n \"x-vekil-contact-identity-attribute\" as const;\n\nexport enum AppFieldType {\n PERSON_NAME = \"PERSON_NAME\",\n TEXT = \"TEXT\",\n TEXTAREA = \"TEXTAREA\",\n BOOLEAN = \"BOOLEAN\",\n NUMBER = \"NUMBER\",\n INTEGER = \"INTEGER\",\n SELECT = \"SELECT\",\n MULTI_SELECT = \"MULTI_SELECT\",\n DATE = \"DATE\",\n DATETIME = \"DATETIME\",\n TIME = \"TIME\",\n DURATION = \"DURATION\",\n TIMEZONE = \"TIMEZONE\",\n WEEKLY_SCHEDULE = \"WEEKLY_SCHEDULE\",\n EMAIL = \"EMAIL\",\n PHONE = \"PHONE\",\n URL = \"URL\",\n TEXT_LIST = \"TEXT_LIST\",\n OBJECT_LIST = \"OBJECT_LIST\",\n NATURAL_LANGUAGE_RULES = \"NATURAL_LANGUAGE_RULES\"\n}\n\nexport enum AppOutcomeStatus {\n SUCCESS = \"SUCCESS\",\n ERROR = \"ERROR\"\n}\n\nexport enum AppHttpMethod {\n GET = \"GET\",\n POST = \"POST\",\n PUT = \"PUT\",\n PATCH = \"PATCH\",\n DELETE = \"DELETE\"\n}\n\nexport enum AppValueSource {\n LITERAL = \"LITERAL\",\n INPUT = \"INPUT\",\n CONTEXT = \"CONTEXT\",\n SETTING = \"SETTING\",\n SECRET = \"SECRET\",\n STEP_OUTPUT = \"STEP_OUTPUT\"\n}\n\nexport enum AppWorkflowStepType {\n HTTP_REQUEST = \"HTTP_REQUEST\",\n TRANSFORM = \"TRANSFORM\",\n CONDITION = \"CONDITION\",\n TEMPLATE = \"TEMPLATE\",\n EMIT_ARTIFACT = \"EMIT_ARTIFACT\",\n EMIT_BUBBLE = \"EMIT_BUBBLE\",\n EMIT_RESULT = \"EMIT_RESULT\"\n}\n\nexport enum AppPlanStatus {\n READY = \"READY\",\n NEEDS_CLARIFICATION = \"NEEDS_CLARIFICATION\",\n REJECTED = \"REJECTED\"\n}\n\nexport enum AppExecutionStatus {\n SUCCEEDED = \"SUCCEEDED\",\n FAILED = \"FAILED\"\n}\n\nexport enum AppRuntimeHealthStatus {\n HEALTHY = \"HEALTHY\",\n DEGRADED = \"DEGRADED\",\n UNHEALTHY = \"UNHEALTHY\"\n}\n\nexport const appRuntimeHostSchema = z.enum([AppRuntimeHost.DECLARATIVE, AppRuntimeHost.REMOTE]);\n\nexport const appConnectionTypeSchema = z.enum([\n AppConnectionType.NONE,\n AppConnectionType.API_KEY,\n AppConnectionType.OAUTH2\n]);\n\nexport const appCategoryIdSchema = z.enum(AppCategoryId);\n\nexport const appPermissionSensitivitySchema = z.enum([\n AppPermissionSensitivity.STANDARD,\n AppPermissionSensitivity.SENSITIVE\n]);\n\nexport const appRiskLevelSchema = z.enum([\n AppRiskLevel.LOW,\n AppRiskLevel.MEDIUM,\n AppRiskLevel.HIGH,\n AppRiskLevel.CRITICAL\n]);\n\nexport const appSideEffectTypeSchema = z.enum([\n AppSideEffectType.READ_ONLY,\n AppSideEffectType.PROPOSAL_ONLY,\n AppSideEffectType.WRITE_EXTERNAL_STATE,\n AppSideEffectType.SEND_MESSAGE,\n AppSideEffectType.SHARE_DATA,\n AppSideEffectType.FINANCIAL_ACTION,\n AppSideEffectType.DESTRUCTIVE_ACTION\n]);\n\nexport const appApprovalModeSchema = z.enum([\n AppApprovalMode.NOT_REQUIRED,\n AppApprovalMode.POLICY,\n AppApprovalMode.ALWAYS\n]);\n\nexport const appPolicyEffectSchema = z.enum([\n AppPolicyEffect.ALLOW,\n AppPolicyEffect.REQUIRE_APPROVAL,\n AppPolicyEffect.DENY\n]);\n\nexport const appOriginSchema = z.enum([\n AppOrigin.PUBLIC_GUEST,\n AppOrigin.PUBLIC_VERIFIED_EXTERNAL,\n AppOrigin.PUBLIC_AUTHENTICATED,\n AppOrigin.AGENT_TO_AGENT,\n AppOrigin.SYSTEM_GENERATED\n]);\n\nexport const appIntentModeSchema = z.enum([\n AppIntentMode.ANSWER,\n AppIntentMode.COLLECT,\n AppIntentMode.EXECUTE\n]);\n\nexport const appKnowledgeAudienceSchema = z.enum([\n AppKnowledgeAudience.PUBLIC,\n AppKnowledgeAudience.VERIFIED_REQUESTER,\n AppKnowledgeAudience.OWNER\n]);\n\nexport const appKnowledgeSourceTypeSchema = z.enum([\n AppKnowledgeSourceType.RUNTIME,\n AppKnowledgeSourceType.SETTING\n]);\n\nexport const appContactIdentityAttributeSchema = z.enum([\n AppContactIdentityAttribute.DISPLAY_NAME,\n AppContactIdentityAttribute.EMAIL\n]);\n\nexport const appFieldTypeSchema = z.enum([\n AppFieldType.PERSON_NAME,\n AppFieldType.TEXT,\n AppFieldType.TEXTAREA,\n AppFieldType.BOOLEAN,\n AppFieldType.NUMBER,\n AppFieldType.INTEGER,\n AppFieldType.SELECT,\n AppFieldType.MULTI_SELECT,\n AppFieldType.DATE,\n AppFieldType.DATETIME,\n AppFieldType.TIME,\n AppFieldType.DURATION,\n AppFieldType.TIMEZONE,\n AppFieldType.WEEKLY_SCHEDULE,\n AppFieldType.EMAIL,\n AppFieldType.PHONE,\n AppFieldType.URL,\n AppFieldType.TEXT_LIST,\n AppFieldType.OBJECT_LIST,\n AppFieldType.NATURAL_LANGUAGE_RULES\n]);\n\nexport const appOutcomeStatusSchema = z.enum([AppOutcomeStatus.SUCCESS, AppOutcomeStatus.ERROR]);\n\nexport const appHttpMethodSchema = z.enum([\n AppHttpMethod.GET,\n AppHttpMethod.POST,\n AppHttpMethod.PUT,\n AppHttpMethod.PATCH,\n AppHttpMethod.DELETE\n]);\n\nexport const appPlanStatusSchema = z.enum([\n AppPlanStatus.READY,\n AppPlanStatus.NEEDS_CLARIFICATION,\n AppPlanStatus.REJECTED\n]);\n\nexport const appExecutionStatusSchema = z.enum([\n AppExecutionStatus.SUCCEEDED,\n AppExecutionStatus.FAILED\n]);\n\nexport const appRuntimeHealthStatusSchema = z.enum([\n AppRuntimeHealthStatus.HEALTHY,\n AppRuntimeHealthStatus.DEGRADED,\n AppRuntimeHealthStatus.UNHEALTHY\n]);\n\nexport const appIdSchema = z\n .string()\n .min(2)\n .max(64)\n .regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/);\n\nexport const appSlugMaxLength = 64;\nexport const reservedAppSlugs = [\"build\", \"installed\"] as const;\n\nexport const appSlugSchema = z\n .string()\n .min(2)\n .max(appSlugMaxLength)\n .regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/)\n .refine((value) => !(reservedAppSlugs as readonly string[]).includes(value), {\n message: \"This App slug is reserved by Vekil.\"\n });\n\nexport const appLocalKeySchema = z\n .string()\n .min(1)\n .max(80)\n .regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/);\n\nexport const appNamespacedIdSchema = z\n .string()\n .min(3)\n .max(160)\n .regex(/^[a-z][a-z0-9-]*\\.[a-z0-9][a-z0-9._-]*$/);\n\nexport const localeCodeSchema = z\n .string()\n .min(2)\n .max(35)\n .regex(/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/);\n\nexport const semanticVersionSchema = z\n .string()\n .regex(/^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-[0-9A-Za-z.-]+)?$/);\n\nexport const isoDateTimeSchema = z.string().datetime({ offset: true });\n\nexport const localizedTextSchema = z.record(localeCodeSchema, z.string().min(1).max(4_000));\n\nexport const localizedExamplesSchema = z.record(\n localeCodeSchema,\n z.array(z.string().min(1).max(600)).max(32)\n);\n\nexport const localeKeySchema = z\n .string()\n .min(3)\n .max(220)\n .regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$/);\n\nexport const jsonObjectSchema = z.record(z.string(), z.json());\nexport const jsonSchemaSchema = z.record(z.string(), z.json());\n\nexport const jsonPathSchema = z\n .string()\n .min(1)\n .max(240)\n .regex(/^[A-Za-z0-9_-]+(?:\\.[A-Za-z0-9_-]+)*$/);\n\nexport const httpsOrLocalhostUrlSchema = z\n .string()\n .url()\n .refine((value) => {\n const url = new URL(value);\n const isLocalhost = url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\";\n\n return url.protocol === \"https:\" || (isLocalhost && url.protocol === \"http:\");\n }, \"URL must use HTTPS outside localhost\");\n\nexport const httpsUrlSchema = z\n .string()\n .url()\n .refine((value) => value.startsWith(\"https://\"), \"URL must use HTTPS\");\n\nexport const runtimeSecretReferenceSchema = z\n .string()\n .min(3)\n .max(120)\n .regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$/);\n\nexport type LocalizedText = z.infer<typeof localizedTextSchema>;\nexport type LocalizedExamples = z.infer<typeof localizedExamplesSchema>;\nexport type JsonObject = z.infer<typeof jsonObjectSchema>;\n","import { z } from \"zod\";\nimport {\n appIdSchema,\n appLocalKeySchema,\n appSlugSchema,\n httpsUrlSchema,\n semanticVersionSchema\n} from \"./common\";\n\nexport const appCompilationDeveloperSchema = z.strictObject({\n id: appLocalKeySchema,\n handle: z\n .string()\n .min(2)\n .max(64)\n .regex(/^@[A-Za-z0-9_]+$/),\n name: z.string().min(1).max(100),\n websiteUrl: httpsUrlSchema.optional(),\n xProfileUrl: httpsUrlSchema.optional(),\n supportEmail: z.string().email().optional(),\n verified: z.boolean(),\n officialTeamMember: z.boolean()\n});\n\nexport const appCompilationBindingSchema = z.strictObject({\n appId: appIdSchema,\n slug: appSlugSchema,\n releaseVersion: semanticVersionSchema,\n appOfficial: z.boolean(),\n developer: appCompilationDeveloperSchema\n});\n\nexport type AppCompilationBinding = z.infer<typeof appCompilationBindingSchema>;\nexport type AppCompilationDeveloper = z.infer<typeof appCompilationDeveloperSchema>;\n","import { AppCategoryId } from \"./common\";\n\nexport interface AppCategoryDefinition {\n descriptionI18nKey: `app-categories-${AppCategoryId}-description`;\n id: AppCategoryId;\n labelI18nKey: `app-categories-${AppCategoryId}-label`;\n sortOrder: number;\n}\n\nconst APP_CATEGORY_METADATA = Object.freeze({\n [AppCategoryId.COMMUNICATION]: {\n descriptionI18nKey: \"app-categories-communication-description\",\n id: AppCategoryId.COMMUNICATION,\n labelI18nKey: \"app-categories-communication-label\",\n sortOrder: 10\n },\n [AppCategoryId.PRODUCTIVITY]: {\n descriptionI18nKey: \"app-categories-productivity-description\",\n id: AppCategoryId.PRODUCTIVITY,\n labelI18nKey: \"app-categories-productivity-label\",\n sortOrder: 20\n },\n [AppCategoryId.CUSTOMER_RELATIONSHIPS]: {\n descriptionI18nKey: \"app-categories-customer-relationships-description\",\n id: AppCategoryId.CUSTOMER_RELATIONSHIPS,\n labelI18nKey: \"app-categories-customer-relationships-label\",\n sortOrder: 30\n },\n [AppCategoryId.PEOPLE_AND_TEAMS]: {\n descriptionI18nKey: \"app-categories-people-and-teams-description\",\n id: AppCategoryId.PEOPLE_AND_TEAMS,\n labelI18nKey: \"app-categories-people-and-teams-label\",\n sortOrder: 40\n },\n [AppCategoryId.MARKETING_AND_CONTENT]: {\n descriptionI18nKey: \"app-categories-marketing-and-content-description\",\n id: AppCategoryId.MARKETING_AND_CONTENT,\n labelI18nKey: \"app-categories-marketing-and-content-label\",\n sortOrder: 50\n },\n [AppCategoryId.COMMERCE_AND_PAYMENTS]: {\n descriptionI18nKey: \"app-categories-commerce-and-payments-description\",\n id: AppCategoryId.COMMERCE_AND_PAYMENTS,\n labelI18nKey: \"app-categories-commerce-and-payments-label\",\n sortOrder: 60\n },\n [AppCategoryId.FINANCE]: {\n descriptionI18nKey: \"app-categories-finance-description\",\n id: AppCategoryId.FINANCE,\n labelI18nKey: \"app-categories-finance-label\",\n sortOrder: 70\n },\n [AppCategoryId.LEGAL_AND_COMPLIANCE]: {\n descriptionI18nKey: \"app-categories-legal-and-compliance-description\",\n id: AppCategoryId.LEGAL_AND_COMPLIANCE,\n labelI18nKey: \"app-categories-legal-and-compliance-label\",\n sortOrder: 80\n },\n [AppCategoryId.OPERATIONS_AND_LOGISTICS]: {\n descriptionI18nKey: \"app-categories-operations-and-logistics-description\",\n id: AppCategoryId.OPERATIONS_AND_LOGISTICS,\n labelI18nKey: \"app-categories-operations-and-logistics-label\",\n sortOrder: 90\n },\n [AppCategoryId.DATA_AND_KNOWLEDGE]: {\n descriptionI18nKey: \"app-categories-data-and-knowledge-description\",\n id: AppCategoryId.DATA_AND_KNOWLEDGE,\n labelI18nKey: \"app-categories-data-and-knowledge-label\",\n sortOrder: 100\n },\n [AppCategoryId.DEVELOPER_AND_IT]: {\n descriptionI18nKey: \"app-categories-developer-and-it-description\",\n id: AppCategoryId.DEVELOPER_AND_IT,\n labelI18nKey: \"app-categories-developer-and-it-label\",\n sortOrder: 110\n },\n [AppCategoryId.SERVICES_AND_BOOKINGS]: {\n descriptionI18nKey: \"app-categories-services-and-bookings-description\",\n id: AppCategoryId.SERVICES_AND_BOOKINGS,\n labelI18nKey: \"app-categories-services-and-bookings-label\",\n sortOrder: 120\n },\n [AppCategoryId.PERSONAL_AND_LIFESTYLE]: {\n descriptionI18nKey: \"app-categories-personal-and-lifestyle-description\",\n id: AppCategoryId.PERSONAL_AND_LIFESTYLE,\n labelI18nKey: \"app-categories-personal-and-lifestyle-label\",\n sortOrder: 130\n },\n [AppCategoryId.OTHER]: {\n descriptionI18nKey: \"app-categories-other-description\",\n id: AppCategoryId.OTHER,\n labelI18nKey: \"app-categories-other-label\",\n sortOrder: 999\n }\n} satisfies Record<AppCategoryId, AppCategoryDefinition>);\n\nexport const APP_CATEGORY_DEFINITIONS: readonly AppCategoryDefinition[] = Object.freeze(\n Object.values(APP_CATEGORY_METADATA).sort((left, right) => left.sortOrder - right.sortOrder)\n);\n\nexport function getAppCategoryDefinition(categoryId: AppCategoryId): AppCategoryDefinition {\n return APP_CATEGORY_METADATA[categoryId];\n}\n\nexport function isAppCategoryId(value: string): value is AppCategoryId {\n return Object.hasOwn(APP_CATEGORY_METADATA, value);\n}\n","import { z } from \"zod\";\n\nexport const appContextProtocolVersion = \"2026-01\";\n\nexport const appContextTypes = [\n \"intent-resolution\",\n \"public-capability-render\",\n \"settings-render\",\n \"action-execution\",\n \"app-review-test\",\n \"async-callback-future\",\n \"widget-render-future\"\n] as const;\n\nexport type AppContextType = (typeof appContextTypes)[number];\n\nexport const appContextOriginTypes = [\n \"public-guest\",\n \"public-verified-external\",\n \"public-authenticated\",\n \"agent-to-agent\",\n \"owner-configuring-app\",\n \"app-review-test\",\n \"system-retry\"\n] as const;\n\nexport type AppContextOriginType = (typeof appContextOriginTypes)[number];\n\nexport const appContextViewerTypes = [\n \"guest\",\n \"verified-external\",\n \"vekil-user\",\n \"source-vekil\",\n \"system\"\n] as const;\n\nexport type AppContextViewerType = (typeof appContextViewerTypes)[number];\n\nexport const appContextSensitivityLevels = [\"LOW\", \"MEDIUM\", \"HIGH\"] as const;\n\nexport type AppContextSensitivityLevel = (typeof appContextSensitivityLevels)[number];\n\nexport const appContextArtifactInputKey = \"$artifacts\";\n\nexport const appContextArtifactCardinalities = [\"ONE\", \"MANY\", \"ONE_OR_MANY\"] as const;\n\nexport type AppContextArtifactCardinality = (typeof appContextArtifactCardinalities)[number];\n\nexport const appContextArtifactVisibilityLevels = [\n \"PUBLIC_REQUESTER\",\n \"REQUESTER_PRIVATE\",\n \"OWNER_PRIVATE\",\n \"AGENT_INTERNAL\",\n \"SYSTEM_ONLY\"\n] as const;\n\nexport type AppContextArtifactVisibilityLevel = (typeof appContextArtifactVisibilityLevels)[number];\n\nexport interface AppContextArtifactProvenance {\n requestArtifactId: string;\n sensitivityLevel: AppContextSensitivityLevel;\n shareableWithApps: boolean;\n sourceActionId: string | null;\n sourceAppExecutionAttemptId: string | null;\n sourceAppExecutionId: string | null;\n sourceStepId: string;\n sourceStepKey: string;\n visibilityLevel: AppContextArtifactVisibilityLevel;\n}\n\nexport interface AppContextArtifactInput {\n artifactId: string;\n cardinality: AppContextArtifactCardinality;\n provenance: AppContextArtifactProvenance[];\n schemaVersion: number;\n value: unknown;\n}\n\nexport interface AppContextViewerContact {\n email?: string | null;\n \"email-verified\"?: boolean;\n phone?: string | null;\n \"phone-verified\"?: boolean;\n}\n\nexport interface AppContextViewer {\n type: AppContextViewerType;\n handle?: string | null;\n \"display-name\"?: string | null;\n \"profile-url\"?: string | null;\n \"verification-status\"?: string | null;\n contact?: AppContextViewerContact;\n}\n\nexport interface AppContextEnvelope {\n \"protocol-version\": typeof appContextProtocolVersion;\n \"context-id\": string;\n \"context-type\": AppContextType;\n \"issued-at\": string;\n \"expires-at\": string;\n platform: {\n name: \"vekil\";\n environment: string;\n \"protocol-version\": typeof appContextProtocolVersion;\n };\n app: {\n \"app-id\": string;\n \"app-version-id\": string;\n \"app-version\": string;\n \"developer-id\": string;\n \"runtime-type\": string;\n };\n installation: {\n \"app-installation-id\": string;\n \"target-agent-id\": string;\n status: string;\n \"runtime-status\": string;\n };\n execution: {\n \"execution-id\": string;\n \"request-id\": string;\n \"action-plan-id\": string | null;\n \"action-step-id\": string | null;\n \"idempotency-key\": string;\n attempt: number;\n };\n origin: {\n type: AppContextOriginType;\n entrypoint: string;\n \"source-url\"?: string | null;\n };\n viewer: AppContextViewer;\n \"target-vekil\": {\n handle: string | null;\n \"display-name\": string;\n \"profile-url\": string | null;\n type: string;\n timezone: string;\n };\n request: {\n id: string;\n \"intent-id\": string | null;\n status: string;\n \"natural-language-summary\": string | null;\n entities: Record<string, unknown>;\n \"missing-fields\": string[];\n locale: string;\n };\n action: {\n \"action-id\": string;\n \"capability-id\": string;\n \"risk-level\": string;\n \"side-effect\": boolean;\n };\n input: Record<string, unknown>;\n settings: Record<string, unknown>;\n \"policy-result\": {\n allowed: boolean;\n \"requires-approval\": boolean;\n \"risk-level\": string;\n constraints: Record<string, unknown>;\n redactions: string[];\n };\n \"approval-result\": {\n status: \"approved\" | \"not-required\" | \"pending\";\n \"approval-id\"?: string | null;\n \"approved-at\"?: string | null;\n \"approval-scope\"?: string;\n \"approved-action-id\"?: string;\n reason?: string;\n };\n locale: {\n \"requester-locale\": string;\n \"owner-locale\": string;\n \"app-locale\": string;\n \"response-locale\": string;\n timezone: string;\n };\n security: {\n \"signature-algorithm\": \"none\" | \"ed25519-jws-v1\";\n \"signed-fields\": string[];\n \"body-hash\"?: string | null;\n };\n}\n\nconst recordSchema = z.record(z.string(), z.unknown());\n\nexport const appContextArtifactProvenanceSchema = z.strictObject({\n requestArtifactId: z.string().min(1).max(240),\n sensitivityLevel: z.enum(appContextSensitivityLevels),\n shareableWithApps: z.boolean(),\n sourceActionId: z.string().min(1).max(240).nullable(),\n sourceAppExecutionAttemptId: z.string().min(1).max(240).nullable(),\n sourceAppExecutionId: z.string().min(1).max(240).nullable(),\n sourceStepId: z.string().min(1).max(240),\n sourceStepKey: z.string().min(1).max(240),\n visibilityLevel: z.enum(appContextArtifactVisibilityLevels)\n}) satisfies z.ZodType<AppContextArtifactProvenance>;\n\nexport const appContextArtifactInputSchema = z.strictObject({\n artifactId: z.string().min(1).max(240),\n cardinality: z.enum(appContextArtifactCardinalities),\n provenance: z.array(appContextArtifactProvenanceSchema).min(1).max(64),\n schemaVersion: z.number().int().min(1).max(1_000),\n value: z.json()\n}) satisfies z.ZodType<AppContextArtifactInput>;\n\nexport const appContextArtifactInputsSchema = z.array(appContextArtifactInputSchema).max(32);\n\nconst actionInputSchema = recordSchema.superRefine((value, context) => {\n const artifactInputs = value[appContextArtifactInputKey];\n\n if (artifactInputs === undefined) {\n return;\n }\n\n const parsed = appContextArtifactInputsSchema.safeParse(artifactInputs);\n\n if (!parsed.success) {\n context.addIssue({\n code: \"custom\",\n message: \"The App artifact input envelope is invalid.\",\n path: [appContextArtifactInputKey]\n });\n }\n});\n\nexport const appContextEnvelopeSchema = z.strictObject({\n \"protocol-version\": z.literal(appContextProtocolVersion),\n \"context-id\": z.string().min(1),\n \"context-type\": z.enum(appContextTypes),\n \"issued-at\": z.string().min(1),\n \"expires-at\": z.string().min(1),\n platform: z.strictObject({\n name: z.literal(\"vekil\"),\n environment: z.string().min(1),\n \"protocol-version\": z.literal(appContextProtocolVersion)\n }),\n app: z.strictObject({\n \"app-id\": z.string().min(1),\n \"app-version-id\": z.string().min(1),\n \"app-version\": z.string().min(1),\n \"developer-id\": z.string().min(1),\n \"runtime-type\": z.string().min(1)\n }),\n installation: z.strictObject({\n \"app-installation-id\": z.string().min(1),\n \"target-agent-id\": z.string().min(1),\n status: z.string().min(1),\n \"runtime-status\": z.string().min(1)\n }),\n execution: z.strictObject({\n \"execution-id\": z.string().min(1),\n \"request-id\": z.string().min(1),\n \"action-plan-id\": z.string().nullable(),\n \"action-step-id\": z.string().nullable(),\n \"idempotency-key\": z.string().min(1),\n attempt: z.number().int().positive()\n }),\n origin: z.strictObject({\n type: z.enum(appContextOriginTypes),\n entrypoint: z.string().min(1),\n \"source-url\": z.string().nullable().optional()\n }),\n viewer: z.strictObject({\n type: z.enum(appContextViewerTypes),\n handle: z.string().nullable().optional(),\n \"display-name\": z.string().nullable().optional(),\n \"profile-url\": z.string().nullable().optional(),\n \"verification-status\": z.string().nullable().optional(),\n contact: z\n .strictObject({\n email: z.string().nullable().optional(),\n \"email-verified\": z.boolean().optional(),\n phone: z.string().nullable().optional(),\n \"phone-verified\": z.boolean().optional()\n })\n .optional()\n }),\n \"target-vekil\": z.strictObject({\n handle: z.string().nullable(),\n \"display-name\": z.string().min(1),\n \"profile-url\": z.string().nullable(),\n type: z.string().min(1),\n timezone: z.string().min(1)\n }),\n request: z.strictObject({\n id: z.string().min(1),\n \"intent-id\": z.string().nullable(),\n status: z.string().min(1),\n \"natural-language-summary\": z.string().nullable(),\n entities: recordSchema,\n \"missing-fields\": z.array(z.string()),\n locale: z.string().min(1)\n }),\n action: z.strictObject({\n \"action-id\": z.string().min(1),\n \"capability-id\": z.string().min(1),\n \"risk-level\": z.string().min(1),\n \"side-effect\": z.boolean()\n }),\n input: actionInputSchema,\n settings: recordSchema,\n \"policy-result\": z.strictObject({\n allowed: z.boolean(),\n \"requires-approval\": z.boolean(),\n \"risk-level\": z.string().min(1),\n constraints: recordSchema,\n redactions: z.array(z.string())\n }),\n \"approval-result\": z.strictObject({\n status: z.enum([\"approved\", \"not-required\", \"pending\"]),\n \"approval-id\": z.string().nullable().optional(),\n \"approved-at\": z.string().nullable().optional(),\n \"approval-scope\": z.string().optional(),\n \"approved-action-id\": z.string().optional(),\n reason: z.string().optional()\n }),\n locale: z.strictObject({\n \"requester-locale\": z.string().min(1),\n \"owner-locale\": z.string().min(1),\n \"app-locale\": z.string().min(1),\n \"response-locale\": z.string().min(1),\n timezone: z.string().min(1)\n }),\n security: z.strictObject({\n \"signature-algorithm\": z.enum([\"none\", \"ed25519-jws-v1\"]),\n \"signed-fields\": z.array(z.string()),\n \"body-hash\": z.string().nullable().optional()\n })\n}) satisfies z.ZodType<AppContextEnvelope>;\n\nexport function validateAppContextEnvelope(envelope: AppContextEnvelope): AppContextEnvelope {\n return appContextEnvelopeSchema.parse(envelope);\n}\n\nexport function readAppContextArtifactInputs(\n input: Record<string, unknown>\n): AppContextArtifactInput[] {\n const value = input[appContextArtifactInputKey];\n\n return value === undefined ? [] : appContextArtifactInputsSchema.parse(value);\n}\n\nexport function readAppActionInput(input: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([key]) => key !== appContextArtifactInputKey)\n );\n}\n","export const appContextScopes = [\n \"viewer.identity.basic\",\n \"viewer.identity.contact\",\n \"viewer.identity.verified-status\",\n \"viewer.profile.public\",\n \"target-vekil.profile.public\",\n \"target-vekil.handle\",\n \"target-vekil.organization-public\",\n \"request.current\",\n \"request.entities\",\n \"request.intent\",\n \"request.locale\",\n \"request.sanitized-thread\",\n \"request.attachments.metadata\",\n \"request.attachments.content\",\n \"app-installation.settings\",\n \"app-installation.policies\",\n \"app-installation.health\",\n \"policy.result\",\n \"approval.result\",\n \"execution.metadata\",\n \"locale.current\",\n \"timezone.current\"\n] as const;\n\nexport type AppContextScope = (typeof appContextScopes)[number];\n\nexport const highRiskAppContextScopes = [\n \"request.sanitized-thread\",\n \"request.attachments.content\",\n \"viewer.identity.contact\"\n] satisfies AppContextScope[];\n\nexport const forbiddenAppContextScopes = [\n \"conversation.full-thread\",\n \"owner.private-profile\",\n \"other-app.settings\",\n \"other-app.credentials\"\n] as const;\n\nexport type ForbiddenAppContextScope = (typeof forbiddenAppContextScopes)[number];\n\nexport type AppContextScopeName = AppContextScope | ForbiddenAppContextScope;\n\nexport function isAppContextScope(value: string): value is AppContextScope {\n return (appContextScopes as readonly string[]).includes(value);\n}\n\nexport function isForbiddenAppContextScope(value: string): value is ForbiddenAppContextScope {\n return (forbiddenAppContextScopes as readonly string[]).includes(value);\n}\n","import type { AppContextEnvelope, AppContextOriginType } from \"./context-envelope\";\nimport { highRiskAppContextScopes, type AppContextScope } from \"./context-scopes\";\n\nexport interface AppContextScopeDecision {\n deniedScopes: AppContextScope[];\n grantedScopes: AppContextScope[];\n requestedScopes: AppContextScope[];\n}\n\nconst highRiskScopes = new Set<AppContextScope>(highRiskAppContextScopes);\nconst originsAllowedHighRiskContext = new Set<AppContextOriginType>([\n \"public-verified-external\",\n \"public-authenticated\",\n \"agent-to-agent\",\n \"owner-configuring-app\",\n \"app-review-test\",\n \"system-retry\"\n]);\n\nexport function isAppContextScopeAllowedForOrigin(\n scope: AppContextScope,\n originType: AppContextOriginType\n): boolean {\n return !highRiskScopes.has(scope) || originsAllowedHighRiskContext.has(originType);\n}\n\nexport function resolveAppContextScopeDecision({\n activeGrantScopes,\n defaultScopes,\n optionalScopes,\n originType,\n requestedScopes\n}: {\n activeGrantScopes: readonly string[];\n defaultScopes: readonly AppContextScope[];\n optionalScopes: readonly AppContextScope[];\n originType: AppContextOriginType;\n requestedScopes: readonly AppContextScope[];\n}): AppContextScopeDecision {\n const declaredScopes = new Set<AppContextScope>([...defaultScopes, ...optionalScopes]);\n const persistedGrants = new Set(activeGrantScopes);\n const requested = [...new Set(requestedScopes)];\n const grantedScopes = requested.filter((scope) => {\n if (!declaredScopes.has(scope)) return false;\n if (!persistedGrants.has(scope)) return false;\n\n return isAppContextScopeAllowedForOrigin(scope, originType);\n });\n const granted = new Set(grantedScopes);\n\n return {\n deniedScopes: requested.filter((scope) => !granted.has(scope)),\n grantedScopes,\n requestedScopes: requested\n };\n}\n\nexport function projectAppContextEnvelope(\n envelope: AppContextEnvelope,\n grantedScopes: readonly AppContextScope[]\n): AppContextEnvelope {\n const projected = structuredClone(envelope);\n const granted = new Set(grantedScopes);\n\n if (!granted.has(\"viewer.identity.basic\")) {\n delete projected.viewer.handle;\n delete projected.viewer[\"display-name\"];\n }\n\n if (!granted.has(\"viewer.identity.contact\")) {\n delete projected.viewer.contact;\n }\n\n if (!granted.has(\"viewer.identity.verified-status\")) {\n delete projected.viewer[\"verification-status\"];\n\n if (projected.viewer.contact) {\n delete projected.viewer.contact[\"email-verified\"];\n delete projected.viewer.contact[\"phone-verified\"];\n }\n }\n\n if (!granted.has(\"viewer.profile.public\")) {\n delete projected.viewer[\"profile-url\"];\n }\n\n if (!granted.has(\"target-vekil.handle\")) {\n projected[\"target-vekil\"].handle = null;\n projected[\"target-vekil\"][\"profile-url\"] = null;\n }\n\n if (!granted.has(\"target-vekil.profile.public\")) {\n projected[\"target-vekil\"][\"display-name\"] = \"[not-granted]\";\n projected[\"target-vekil\"][\"profile-url\"] = null;\n projected[\"target-vekil\"].type = \"unknown\";\n }\n\n if (!granted.has(\"request.current\")) {\n projected.request[\"natural-language-summary\"] = null;\n projected.request[\"missing-fields\"] = [];\n }\n\n if (!granted.has(\"request.entities\")) {\n projected.request.entities = {};\n }\n\n if (!granted.has(\"request.intent\")) {\n projected.request[\"intent-id\"] = null;\n }\n\n if (!granted.has(\"request.locale\")) {\n projected.request.locale = \"und\";\n }\n\n if (!granted.has(\"app-installation.settings\")) {\n projected.settings = {};\n }\n\n if (!granted.has(\"app-installation.policies\")) {\n projected[\"policy-result\"].constraints = {};\n }\n\n if (!granted.has(\"policy.result\")) {\n projected[\"policy-result\"] = {\n allowed: false,\n \"requires-approval\": true,\n \"risk-level\": \"UNDISCLOSED\",\n constraints: {},\n redactions: [\"policy-result-not-granted\"]\n };\n }\n\n if (!granted.has(\"approval.result\")) {\n projected[\"approval-result\"] = {\n reason: \"approval-result-not-granted\",\n status: \"pending\"\n };\n }\n\n if (!granted.has(\"locale.current\")) {\n projected.locale[\"requester-locale\"] = \"und\";\n projected.locale[\"owner-locale\"] = \"und\";\n projected.locale[\"app-locale\"] = \"und\";\n projected.locale[\"response-locale\"] = \"und\";\n }\n\n if (!granted.has(\"timezone.current\")) {\n projected.locale.timezone = \"UTC\";\n projected[\"target-vekil\"].timezone = \"UTC\";\n }\n\n return projected;\n}\n","import {\n appContextScopes,\n appContextSensitivityLevels,\n forbiddenAppContextScopes\n} from \"@vekil/app-context\";\nimport { z } from \"zod\";\nimport {\n AppApprovalMode,\n AppConnectionType,\n AppHttpMethod,\n AppKnowledgeSourceType,\n AppRuntimeHost,\n AppSideEffectType,\n AppValueSource,\n AppWorkflowStepType,\n appApprovalModeSchema,\n appCategoryIdSchema,\n appConnectionTypeSchema,\n appDefinitionVersion,\n appFieldTypeSchema,\n appHttpMethodSchema,\n appIntentModeSchema,\n appKnowledgeAudienceSchema,\n appLocalKeySchema,\n appOriginSchema,\n appOutcomeStatusSchema,\n appPermissionSensitivitySchema,\n appPolicyEffectSchema,\n appRiskLevelSchema,\n appSideEffectTypeSchema,\n httpsOrLocalhostUrlSchema,\n httpsUrlSchema,\n jsonObjectSchema,\n jsonPathSchema,\n jsonSchemaSchema,\n localeCodeSchema,\n localizedExamplesSchema,\n localizedTextSchema,\n runtimeSecretReferenceSchema\n} from \"./common\";\n\nexport enum AppIconType {\n ASSET = \"ASSET\",\n URL = \"URL\"\n}\n\nexport enum AppClarificationMode {\n ASK_MISSING_FIELDS = \"ASK_MISSING_FIELDS\",\n FAIL_FAST = \"FAIL_FAST\"\n}\n\nexport enum AppRequesterReviewMode {\n NOT_REQUIRED = \"NOT_REQUIRED\",\n REQUIRED = \"REQUIRED\"\n}\n\nexport enum AppSettingsOptionsSourceType {\n APP_ACTION = \"APP_ACTION\"\n}\n\nexport enum AppArtifactCardinality {\n ONE = \"ONE\",\n MANY = \"MANY\",\n ONE_OR_MANY = \"ONE_OR_MANY\"\n}\n\nexport enum AppArtifactAudience {\n PRODUCING_APP = \"PRODUCING_APP\",\n COMPOSED_APPS = \"COMPOSED_APPS\"\n}\n\nexport const appIconDefinitionSchema = z.discriminatedUnion(\"type\", [\n z.strictObject({\n type: z.literal(AppIconType.ASSET),\n value: z.string().min(1).max(240)\n }),\n z.strictObject({\n type: z.literal(AppIconType.URL),\n value: httpsUrlSchema\n })\n]);\n\nexport const appPublicationDefinitionSchema = z.strictObject({\n websiteUrl: httpsUrlSchema.optional(),\n supportEmail: z.string().email().optional(),\n privacyPolicyUrl: httpsUrlSchema.optional(),\n termsUrl: httpsUrlSchema.optional()\n});\n\nexport const appPermissionDefinitionSchema = z.strictObject({\n key: appLocalKeySchema,\n label: localizedTextSchema,\n description: localizedTextSchema,\n sensitivity: appPermissionSensitivitySchema\n});\n\nexport const appConnectionDefinitionSchema = z.strictObject({\n type: appConnectionTypeSchema,\n required: z.boolean(),\n title: localizedTextSchema,\n description: localizedTextSchema,\n permissions: z.array(appPermissionDefinitionSchema).max(64).default([])\n});\n\nconst appFieldOptionDefinitionSchema = z.strictObject({\n value: z.union([z.string(), z.number(), z.boolean()]),\n label: localizedTextSchema\n});\n\nconst appFieldOptionsSourceDefinitionSchema = z.strictObject({\n type: z.literal(AppSettingsOptionsSourceType.APP_ACTION),\n actionKey: appLocalKeySchema,\n cacheTtlSeconds: z.number().int().min(1).max(86_400),\n outputPath: z.array(appLocalKeySchema).max(16).default([]),\n valueField: appLocalKeySchema.optional(),\n labelField: appLocalKeySchema.optional()\n});\n\nexport const appFieldDefinitionSchema = z.strictObject({\n key: appLocalKeySchema,\n type: appFieldTypeSchema,\n label: localizedTextSchema,\n description: localizedTextSchema.optional(),\n help: localizedTextSchema.optional(),\n required: z.boolean().default(false),\n default: z.json().optional(),\n validation: jsonObjectSchema.optional(),\n options: z.array(appFieldOptionDefinitionSchema).max(100).optional(),\n optionsSource: appFieldOptionsSourceDefinitionSchema.optional()\n});\n\nexport const appSettingsDefinitionSchema = z.strictObject({\n fields: z.array(appFieldDefinitionSchema).max(100).default([])\n});\n\nexport const appPolicyBehaviorDefinitionSchema = z.strictObject({\n effect: appPolicyEffectSchema,\n value: appLocalKeySchema,\n label: localizedTextSchema\n});\n\nexport const appPolicyRuleDefinitionSchema = z\n .strictObject({\n key: appLocalKeySchema,\n label: localizedTextSchema,\n description: localizedTextSchema,\n conditionFields: z\n .array(appFieldDefinitionSchema)\n .max(0, \"Conditional policy fields require a deterministic evaluator in a future protocol.\")\n .default([]),\n behaviors: z.array(appPolicyBehaviorDefinitionSchema).min(1).max(16),\n defaultBehavior: appLocalKeySchema\n })\n .superRefine((rule, context) => {\n const behaviorValues = rule.behaviors.map((behavior) => behavior.value);\n\n if (new Set(behaviorValues).size !== behaviorValues.length) {\n context.addIssue({\n code: \"custom\",\n message: \"Policy behavior values must be unique.\",\n path: [\"behaviors\"]\n });\n }\n\n if (!behaviorValues.includes(rule.defaultBehavior)) {\n context.addIssue({\n code: \"custom\",\n message: \"The default policy behavior must reference a declared behavior.\",\n path: [\"defaultBehavior\"]\n });\n }\n });\n\nexport const appPolicyDefinitionSchema = z.strictObject({\n rules: z.array(appPolicyRuleDefinitionSchema).max(100).default([])\n});\n\nexport const appArtifactContractDefinitionSchema = z.strictObject({\n audiences: z\n .array(z.enum([AppArtifactAudience.PRODUCING_APP, AppArtifactAudience.COMPOSED_APPS]))\n .min(1)\n .max(2)\n .default([AppArtifactAudience.PRODUCING_APP]),\n key: appLocalKeySchema,\n schemaVersion: z.number().int().min(1).max(1_000),\n schema: jsonSchemaSchema,\n description: localizedTextSchema,\n sensitivityLevel: z.enum(appContextSensitivityLevels).default(\"HIGH\")\n});\n\nexport const appArtifactReferenceDefinitionSchema = z.strictObject({\n artifactKey: appLocalKeySchema,\n schemaVersion: z.number().int().min(1).max(1_000),\n required: z.boolean().default(true),\n cardinality: z\n .enum([\n AppArtifactCardinality.ONE,\n AppArtifactCardinality.MANY,\n AppArtifactCardinality.ONE_OR_MANY\n ])\n .default(AppArtifactCardinality.ONE)\n});\n\nexport const appCapabilityDefinitionSchema = z.strictObject({\n key: appLocalKeySchema,\n label: localizedTextSchema,\n description: localizedTextSchema,\n inputSchema: jsonSchemaSchema,\n outputSchema: jsonSchemaSchema,\n riskLevel: appRiskLevelSchema,\n approval: appApprovalModeSchema,\n actionKeys: z.array(appLocalKeySchema).min(1).max(32)\n});\n\nexport const appActionContextDefinitionSchema = z.strictObject({\n requiredScopes: z.array(z.enum(appContextScopes)).max(appContextScopes.length).default([]),\n requiresSettings: z.array(appLocalKeySchema).max(64).default([]),\n requiresPolicies: z.array(appLocalKeySchema).max(64).default([])\n});\n\nexport const requiredAppActionContextScopes = [\n \"request.current\",\n \"request.entities\",\n \"request.intent\",\n \"policy.result\"\n] as const;\n\nfunction validatePolicyContextScopes(\n actionContext: z.infer<typeof appActionContextDefinitionSchema>,\n context: z.RefinementCtx\n): void {\n if (new Set(actionContext.requiresPolicies).size !== actionContext.requiresPolicies.length) {\n context.addIssue({\n code: \"custom\",\n message: \"Required policy keys must be unique.\",\n path: [\"context\", \"requiresPolicies\"]\n });\n }\n\n for (const requiredScope of requiredAppActionContextScopes) {\n if (!actionContext.requiredScopes.includes(requiredScope)) {\n context.addIssue({\n code: \"custom\",\n message: `Every App action must request the ${requiredScope} scope.`,\n path: [\"context\", \"requiredScopes\"]\n });\n }\n }\n\n if (actionContext.requiresPolicies.length === 0) return;\n\n if (!actionContext.requiredScopes.includes(\"app-installation.policies\")) {\n context.addIssue({\n code: \"custom\",\n message: \"Actions that require policies must request the app-installation.policies scope.\",\n path: [\"context\", \"requiredScopes\"]\n });\n }\n}\n\nexport const appIdempotencyDefinitionSchema = z.strictObject({\n required: z.boolean(),\n keyFields: z.array(jsonPathSchema).max(32).default([])\n});\n\nexport const appRetryPolicyDefinitionSchema = z.strictObject({\n maxAttempts: z.number().int().min(1).max(8),\n retryableStatusCodes: z.array(z.number().int().min(100).max(599)).max(32).default([])\n});\n\nexport const appActionDefinitionSchema = z\n .strictObject({\n key: appLocalKeySchema,\n capabilityKey: appLocalKeySchema,\n label: localizedTextSchema,\n description: localizedTextSchema,\n composable: z.boolean().default(false),\n context: appActionContextDefinitionSchema,\n dataAccessLevel: appLocalKeySchema,\n inputSchema: jsonSchemaSchema,\n outputSchema: jsonSchemaSchema,\n inputArtifacts: z.array(appArtifactReferenceDefinitionSchema).max(32).default([]),\n outputArtifacts: z.array(appArtifactReferenceDefinitionSchema).max(32).default([]),\n riskLevel: appRiskLevelSchema,\n sideEffect: appSideEffectTypeSchema,\n approval: appApprovalModeSchema,\n timeoutMs: z.number().int().min(100).max(120_000),\n idempotency: appIdempotencyDefinitionSchema,\n retry: appRetryPolicyDefinitionSchema,\n outcomeKeys: z.array(appLocalKeySchema).min(1).max(32)\n })\n .superRefine((action, context) => {\n validatePolicyContextScopes(action.context, context);\n\n if (\n action.approval === AppApprovalMode.POLICY &&\n action.context.requiresPolicies.length === 0\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Policy approval requires at least one declared policy.\",\n path: [\"context\", \"requiresPolicies\"]\n });\n }\n });\n\nexport const appIntentDefinitionSchema = z.strictObject({\n key: appLocalKeySchema,\n mode: appIntentModeSchema,\n title: localizedTextSchema,\n description: localizedTextSchema,\n responseInstructions: localizedTextSchema,\n examples: localizedExamplesSchema,\n negativeExamples: localizedExamplesSchema.default({}),\n entityHints: jsonObjectSchema.default({}),\n inputSchema: jsonSchemaSchema,\n requiredFields: z.array(appLocalKeySchema).max(64).default([]),\n optionalFields: z.array(appLocalKeySchema).max(64).default([]),\n knowledgeKeys: z.array(appLocalKeySchema).max(64).default([]),\n capabilityKeys: z.array(appLocalKeySchema).min(1).max(32),\n actionKeys: z.array(appLocalKeySchema).min(1).max(32),\n riskLevel: appRiskLevelSchema,\n allowedOrigins: z.array(appOriginSchema).min(1).max(8),\n clarificationMode: z.enum([\n AppClarificationMode.ASK_MISSING_FIELDS,\n AppClarificationMode.FAIL_FAST\n ]),\n missingFieldsQuestion: localizedTextSchema,\n fieldQuestions: z.record(appLocalKeySchema, localizedTextSchema),\n requesterReview: z.enum([AppRequesterReviewMode.NOT_REQUIRED, AppRequesterReviewMode.REQUIRED])\n});\n\nexport const appKnowledgeDefinitionSchema = z.strictObject({\n key: appLocalKeySchema,\n label: localizedTextSchema,\n description: localizedTextSchema.optional(),\n audience: appKnowledgeAudienceSchema,\n source: z.discriminatedUnion(\"type\", [\n z.strictObject({\n type: z.literal(AppKnowledgeSourceType.SETTING),\n settingKey: appLocalKeySchema\n }),\n z.strictObject({\n type: z.literal(AppKnowledgeSourceType.RUNTIME)\n })\n ])\n});\n\nexport const appOutcomeDefinitionSchema = z.strictObject({\n key: appLocalKeySchema,\n actionKey: appLocalKeySchema,\n status: appOutcomeStatusSchema,\n title: localizedTextSchema,\n description: localizedTextSchema,\n schema: jsonSchemaSchema,\n nextActions: z\n .array(\n z.strictObject({\n artifactKey: appLocalKeySchema.optional(),\n key: appLocalKeySchema,\n label: localizedTextSchema\n })\n )\n .max(16)\n .default([])\n});\n\nexport const appPublicActionDefinitionSchema = z.strictObject({\n key: appLocalKeySchema,\n intentKey: appLocalKeySchema,\n label: localizedTextSchema,\n description: localizedTextSchema,\n capabilityKeys: z.array(appLocalKeySchema).min(1).max(16),\n allowedOrigins: z.array(appOriginSchema).min(1).max(8),\n riskLevel: appRiskLevelSchema\n});\n\nexport const appTriggerDefinitionSchema = z.strictObject({\n key: appLocalKeySchema,\n eventKey: appLocalKeySchema,\n capabilityKey: appLocalKeySchema,\n riskLevel: appRiskLevelSchema,\n inputSchema: jsonSchemaSchema\n});\n\nexport const appManifestContextDefinitionSchema = z.strictObject({\n defaultScopes: z.array(z.enum(appContextScopes)).max(appContextScopes.length).default([]),\n optionalScopes: z.array(z.enum(appContextScopes)).max(appContextScopes.length).default([]),\n prohibitedScopes: z\n .array(z.enum(forbiddenAppContextScopes))\n .max(forbiddenAppContextScopes.length)\n .default([]),\n copy: z.strictObject({\n receives: z\n .array(\n z.strictObject({\n scope: z.enum(appContextScopes),\n label: localizedTextSchema,\n description: localizedTextSchema\n })\n )\n .max(appContextScopes.length)\n .default([]),\n doesNotReceive: z\n .array(\n z.strictObject({\n scope: z.enum(forbiddenAppContextScopes),\n label: localizedTextSchema,\n description: localizedTextSchema\n })\n )\n .max(forbiddenAppContextScopes.length)\n .default([])\n })\n});\n\nexport const appCustomRulesDefinitionSchema = z.strictObject({\n families: z.array(appLocalKeySchema).max(32).default([]),\n examples: localizedExamplesSchema.default({}),\n unsupportedExamples: localizedExamplesSchema.default({})\n});\n\nexport const appValueExpressionSchema = z.discriminatedUnion(\"source\", [\n z.strictObject({\n source: z.literal(AppValueSource.LITERAL),\n value: z.json()\n }),\n z.strictObject({\n source: z.literal(AppValueSource.INPUT),\n path: jsonPathSchema,\n optional: z.boolean().optional()\n }),\n z.strictObject({\n source: z.literal(AppValueSource.CONTEXT),\n path: jsonPathSchema\n }),\n z.strictObject({\n source: z.literal(AppValueSource.SETTING),\n key: appLocalKeySchema\n }),\n z.strictObject({\n source: z.literal(AppValueSource.SECRET),\n key: runtimeSecretReferenceSchema\n }),\n z.strictObject({\n source: z.literal(AppValueSource.STEP_OUTPUT),\n stepKey: appLocalKeySchema,\n path: jsonPathSchema.optional()\n })\n]);\n\nconst appWorkflowStepBase = {\n key: appLocalKeySchema,\n dependsOn: z.array(appLocalKeySchema).max(32).default([])\n};\n\nconst httpHeaderNameSchema = z\n .string()\n .min(1)\n .max(120)\n .regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/);\n\nconst runtimeOriginSchema = httpsOrLocalhostUrlSchema.refine(isOriginUrl, {\n message: \"Runtime credential origins must not include credentials, paths, queries, or fragments\"\n});\n\nexport const appHttpRequestStepSchema = z.strictObject({\n ...appWorkflowStepBase,\n type: z.literal(AppWorkflowStepType.HTTP_REQUEST),\n method: appHttpMethodSchema,\n url: httpsOrLocalhostUrlSchema,\n headers: z\n .record(httpHeaderNameSchema, appValueExpressionSchema)\n .refine(\n (headers) => Object.keys(headers).length <= 64,\n \"At most 64 request headers are allowed\"\n )\n .default({}),\n query: z\n .record(z.string().min(1).max(120), appValueExpressionSchema)\n .refine(\n (parameters) => Object.keys(parameters).length <= 64,\n \"At most 64 query parameters are allowed\"\n )\n .default({}),\n body: appValueExpressionSchema.optional(),\n timeoutMs: z.number().int().min(100).max(30_000)\n});\n\nexport const appTransformStepSchema = z.strictObject({\n ...appWorkflowStepBase,\n type: z.literal(AppWorkflowStepType.TRANSFORM),\n mapping: z.record(z.string().min(1).max(120), appValueExpressionSchema)\n});\n\nexport const appConditionStepSchema = z.strictObject({\n ...appWorkflowStepBase,\n type: z.literal(AppWorkflowStepType.CONDITION),\n condition: appValueExpressionSchema,\n whenTrue: appLocalKeySchema,\n whenFalse: appLocalKeySchema.optional()\n});\n\nexport const appTemplateStepSchema = z.strictObject({\n ...appWorkflowStepBase,\n type: z.literal(AppWorkflowStepType.TEMPLATE),\n template: z.string().min(1).max(8_000),\n variables: z.record(z.string().min(1).max(80), appValueExpressionSchema).default({})\n});\n\nexport const appEmitArtifactStepSchema = z.strictObject({\n ...appWorkflowStepBase,\n type: z.literal(AppWorkflowStepType.EMIT_ARTIFACT),\n artifactKey: appLocalKeySchema,\n schemaVersion: z.number().int().min(1).max(1_000),\n value: appValueExpressionSchema\n});\n\nexport const appEmitBubbleStepSchema = z.strictObject({\n ...appWorkflowStepBase,\n type: z.literal(AppWorkflowStepType.EMIT_BUBBLE),\n descriptor: appValueExpressionSchema\n});\n\nexport const appEmitResultStepSchema = z.strictObject({\n ...appWorkflowStepBase,\n type: z.literal(AppWorkflowStepType.EMIT_RESULT),\n outcomeKey: appLocalKeySchema,\n output: appValueExpressionSchema\n});\n\nexport const appWorkflowStepSchema = z.discriminatedUnion(\"type\", [\n appHttpRequestStepSchema,\n appTransformStepSchema,\n appConditionStepSchema,\n appTemplateStepSchema,\n appEmitArtifactStepSchema,\n appEmitBubbleStepSchema,\n appEmitResultStepSchema\n]);\n\nexport const appWorkflowDefinitionSchema = z.strictObject({\n actionKey: appLocalKeySchema,\n steps: z.array(appWorkflowStepSchema).min(1).max(32)\n});\n\nconst declarativeNoConnectionSchema = z.strictObject({\n type: z.literal(AppConnectionType.NONE)\n});\n\nconst declarativeApiKeyConnectionSchema = z.strictObject({\n type: z.literal(AppConnectionType.API_KEY),\n fields: z\n .array(\n z.strictObject({\n key: appLocalKeySchema,\n allowedOrigins: z.array(runtimeOriginSchema).min(1).max(16),\n headerName: httpHeaderNameSchema,\n label: localizedTextSchema,\n description: localizedTextSchema,\n secretRef: runtimeSecretReferenceSchema\n })\n )\n .min(1)\n .max(16)\n});\n\nconst declarativeOauthConnectionSchema = z.strictObject({\n type: z.literal(AppConnectionType.OAUTH2),\n authorizationUrl: httpsUrlSchema,\n tokenUrl: httpsUrlSchema,\n refreshUrl: httpsUrlSchema.optional(),\n resourceOrigins: z.array(runtimeOriginSchema).min(1).max(16),\n clientIdSecretRef: runtimeSecretReferenceSchema,\n clientSecretSecretRef: runtimeSecretReferenceSchema.optional(),\n pkceRequired: z.boolean().default(true),\n scopes: z\n .array(\n z.strictObject({\n permissionKey: appLocalKeySchema,\n providerScope: z.string().min(1).max(300)\n })\n )\n .min(1)\n .max(64)\n});\n\nexport const declarativeRuntimeDefinitionSchema = z.strictObject({\n host: z.literal(AppRuntimeHost.DECLARATIVE),\n connection: z.discriminatedUnion(\"type\", [\n declarativeNoConnectionSchema,\n declarativeApiKeyConnectionSchema,\n declarativeOauthConnectionSchema\n ]),\n workflows: z.array(appWorkflowDefinitionSchema).min(1).max(64)\n});\n\nfunction isOriginUrl(value: string): boolean {\n const url = new URL(value);\n return !url.username && !url.password && !url.search && !url.hash && url.pathname === \"/\";\n}\n\nexport const remoteRuntimeDefinitionSchema = z.strictObject({\n host: z.literal(AppRuntimeHost.REMOTE),\n baseUrl: httpsOrLocalhostUrlSchema,\n jwksUrl: httpsOrLocalhostUrlSchema,\n connectionRequired: z.boolean()\n});\n\nexport const appDefinitionSchema = z.strictObject({\n definitionVersion: z.literal(appDefinitionVersion),\n defaultLocale: localeCodeSchema,\n app: z.strictObject({\n name: localizedTextSchema,\n shortDescription: localizedTextSchema,\n longDescription: localizedTextSchema,\n categoryId: appCategoryIdSchema,\n icon: appIconDefinitionSchema.optional(),\n providerName: z.string().min(1).max(120).optional()\n }),\n publication: appPublicationDefinitionSchema.default({}),\n connection: appConnectionDefinitionSchema,\n intents: z.array(appIntentDefinitionSchema).min(1).max(128),\n capabilities: z.array(appCapabilityDefinitionSchema).min(1).max(128),\n actions: z.array(appActionDefinitionSchema).min(1).max(128),\n triggers: z.array(appTriggerDefinitionSchema).max(64).default([]),\n resources: z.array(appLocalKeySchema).max(128).default([]),\n knowledge: z.array(appKnowledgeDefinitionSchema).max(128).default([]),\n artifactContracts: z.array(appArtifactContractDefinitionSchema).max(128).default([]),\n context: appManifestContextDefinitionSchema,\n settings: appSettingsDefinitionSchema,\n policies: appPolicyDefinitionSchema,\n customRules: appCustomRulesDefinitionSchema,\n publicActions: z.array(appPublicActionDefinitionSchema).max(32).default([]),\n outcomes: z.array(appOutcomeDefinitionSchema).min(1).max(128),\n runtime: z.discriminatedUnion(\"host\", [\n declarativeRuntimeDefinitionSchema,\n remoteRuntimeDefinitionSchema\n ])\n});\n\nexport type AppDefinition = z.infer<typeof appDefinitionSchema>;\nexport type AppDefinitionInput = z.input<typeof appDefinitionSchema>;\nexport type AppWorkflowDefinition = z.infer<typeof appWorkflowDefinitionSchema>;\nexport type AppWorkflowStep = z.infer<typeof appWorkflowStepSchema>;\nexport type AppValueExpression = z.infer<typeof appValueExpressionSchema>;\n\nexport function createAppDefinitionJsonSchema(): Record<string, unknown> {\n return z.toJSONSchema(appDefinitionSchema) as Record<string, unknown>;\n}\n\nexport function defineApp(input: AppDefinitionInput): AppDefinition {\n return appDefinitionSchema.parse(input);\n}\n\nexport function defineDeclarativeApp(input: AppDefinitionInput): AppDefinition {\n const definition = defineApp(input);\n\n if (definition.runtime.host !== AppRuntimeHost.DECLARATIVE) {\n throw new Error(\"defineDeclarativeApp requires a DECLARATIVE runtime\");\n }\n\n return definition;\n}\n\nexport function defineRemoteApp(input: AppDefinitionInput): AppDefinition {\n const definition = defineApp(input);\n\n if (definition.runtime.host !== AppRuntimeHost.REMOTE) {\n throw new Error(\"defineRemoteApp requires a REMOTE runtime\");\n }\n\n return definition;\n}\n\nexport function isWriteSideEffect(sideEffect: z.infer<typeof appSideEffectTypeSchema>): boolean {\n return (\n sideEffect !== AppSideEffectType.READ_ONLY && sideEffect !== AppSideEffectType.PROPOSAL_ONLY\n );\n}\n\nexport function isHttpMethodWithBody(method: AppHttpMethod): boolean {\n return method !== AppHttpMethod.GET;\n}\n","import {\n appContextScopes,\n appContextSensitivityLevels,\n forbiddenAppContextScopes\n} from \"@vekil/app-context\";\nimport { z } from \"zod\";\nimport {\n AppApprovalMode,\n AppConnectionType,\n AppKnowledgeSourceType,\n AppRuntimeHost,\n AppWorkflowStepType,\n appApprovalModeSchema,\n appCategoryIdSchema,\n appConnectionTypeSchema,\n appFieldTypeSchema,\n appIdSchema,\n appSlugSchema,\n appIntentModeSchema,\n appKnowledgeAudienceSchema,\n appLocalKeySchema,\n appManifestVersion,\n appPoliciesSchemaVersion,\n appSettingsSchemaVersion,\n appNamespacedIdSchema,\n appOriginSchema,\n appOutcomeStatusSchema,\n appPermissionSensitivitySchema,\n appPolicyEffectSchema,\n appRiskLevelSchema,\n appSideEffectTypeSchema,\n httpsOrLocalhostUrlSchema,\n httpsUrlSchema,\n jsonObjectSchema,\n jsonPathSchema,\n jsonSchemaSchema,\n localeCodeSchema,\n localeKeySchema,\n runtimeSecretReferenceSchema,\n semanticVersionSchema\n} from \"./common\";\nimport {\n AppArtifactCardinality,\n AppArtifactAudience,\n AppClarificationMode,\n AppRequesterReviewMode,\n AppSettingsOptionsSourceType,\n appConditionStepSchema,\n appEmitBubbleStepSchema,\n appHttpRequestStepSchema,\n appIconDefinitionSchema,\n appPublicationDefinitionSchema,\n appTemplateStepSchema,\n appTransformStepSchema,\n appValueExpressionSchema,\n requiredAppActionContextScopes\n} from \"./app-definition\";\nimport { appCompilationDeveloperSchema } from \"./app-compilation-binding\";\n\nconst keyedCopySchema = z.strictObject({\n labelKey: localeKeySchema,\n descriptionKey: localeKeySchema\n});\n\nconst manifestFieldOptionSchema = z.strictObject({\n value: z.union([z.string(), z.number(), z.boolean()]),\n labelKey: localeKeySchema\n});\n\nconst manifestFieldOptionsSourceSchema = z.strictObject({\n type: z.literal(AppSettingsOptionsSourceType.APP_ACTION),\n actionId: appNamespacedIdSchema,\n cacheTtlSeconds: z.number().int().min(1).max(86_400),\n outputPath: z.array(appLocalKeySchema).max(16),\n valueField: appLocalKeySchema.optional(),\n labelField: appLocalKeySchema.optional()\n});\n\nexport const appManifestFieldSchema = z.strictObject({\n key: appLocalKeySchema,\n type: appFieldTypeSchema,\n labelKey: localeKeySchema,\n descriptionKey: localeKeySchema.optional(),\n helpKey: localeKeySchema.optional(),\n required: z.boolean(),\n default: z.json().optional(),\n validation: jsonObjectSchema.optional(),\n options: z.array(manifestFieldOptionSchema).max(100).optional(),\n optionsSource: manifestFieldOptionsSourceSchema.optional()\n});\n\nexport const appManifestCapabilitySchema = z.strictObject({\n id: appNamespacedIdSchema,\n labelKey: localeKeySchema,\n descriptionKey: localeKeySchema,\n inputSchema: jsonSchemaSchema,\n outputSchema: jsonSchemaSchema,\n riskLevel: appRiskLevelSchema,\n approval: appApprovalModeSchema,\n actionIds: z.array(appNamespacedIdSchema).min(1).max(32)\n});\n\nconst appManifestArtifactReferenceSchema = z.strictObject({\n artifactId: appNamespacedIdSchema,\n schemaVersion: z.number().int().min(1).max(1_000),\n required: z.boolean(),\n cardinality: z.enum([\n AppArtifactCardinality.ONE,\n AppArtifactCardinality.MANY,\n AppArtifactCardinality.ONE_OR_MANY\n ])\n});\n\nexport const appManifestActionSchema = z\n .strictObject({\n id: appNamespacedIdSchema,\n capabilityId: appNamespacedIdSchema,\n labelKey: localeKeySchema,\n descriptionKey: localeKeySchema,\n composable: z.boolean(),\n context: z.strictObject({\n requiredScopes: z.array(z.enum(appContextScopes)).max(appContextScopes.length),\n requiresSettings: z.array(appLocalKeySchema).max(64),\n requiresPolicies: z.array(appLocalKeySchema).max(64)\n }),\n dataAccessLevel: appLocalKeySchema,\n inputSchema: jsonSchemaSchema,\n outputSchema: jsonSchemaSchema,\n inputArtifacts: z.array(appManifestArtifactReferenceSchema).max(32),\n outputArtifacts: z.array(appManifestArtifactReferenceSchema).max(32),\n riskLevel: appRiskLevelSchema,\n sideEffect: appSideEffectTypeSchema,\n approval: appApprovalModeSchema,\n timeoutMs: z.number().int().min(100).max(120_000),\n idempotency: z.strictObject({\n required: z.boolean(),\n keyFields: z.array(jsonPathSchema).max(32)\n }),\n retry: z.strictObject({\n maxAttempts: z.number().int().min(1).max(8),\n retryableStatusCodes: z.array(z.number().int().min(100).max(599)).max(32)\n }),\n outcomeIds: z.array(appNamespacedIdSchema).min(1).max(32)\n })\n .superRefine((action, context) => {\n if (new Set(action.context.requiresPolicies).size !== action.context.requiresPolicies.length) {\n context.addIssue({\n code: \"custom\",\n message: \"Required policy keys must be unique.\",\n path: [\"context\", \"requiresPolicies\"]\n });\n }\n\n if (\n action.approval === AppApprovalMode.POLICY &&\n action.context.requiresPolicies.length === 0\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Policy approval requires at least one declared policy.\",\n path: [\"context\", \"requiresPolicies\"]\n });\n }\n\n for (const requiredScope of requiredAppActionContextScopes) {\n if (!action.context.requiredScopes.includes(requiredScope)) {\n context.addIssue({\n code: \"custom\",\n message: `Every App action must request the ${requiredScope} scope.`,\n path: [\"context\", \"requiredScopes\"]\n });\n }\n }\n\n if (action.context.requiresPolicies.length === 0) return;\n\n if (!action.context.requiredScopes.includes(\"app-installation.policies\")) {\n context.addIssue({\n code: \"custom\",\n message: \"Actions that require policies must request the app-installation.policies scope.\",\n path: [\"context\", \"requiredScopes\"]\n });\n }\n });\n\nexport const appManifestIntentSchema = z.strictObject({\n id: appNamespacedIdSchema,\n mode: appIntentModeSchema,\n titleKey: localeKeySchema,\n descriptionKey: localeKeySchema,\n responseInstructionsKey: localeKeySchema,\n examples: z.record(localeCodeSchema, z.array(z.string().min(1).max(600)).max(32)),\n negativeExamples: z.record(localeCodeSchema, z.array(z.string().min(1).max(600)).max(32)),\n entityHints: jsonObjectSchema,\n inputSchema: jsonSchemaSchema,\n requiredFields: z.array(appLocalKeySchema).max(64),\n optionalFields: z.array(appLocalKeySchema).max(64),\n knowledgeIds: z.array(appNamespacedIdSchema).max(64),\n capabilityIds: z.array(appNamespacedIdSchema).min(1).max(32),\n actionIds: z.array(appNamespacedIdSchema).min(1).max(32),\n riskLevel: appRiskLevelSchema,\n allowedOrigins: z.array(appOriginSchema).min(1).max(8),\n clarificationMode: z.enum([\n AppClarificationMode.ASK_MISSING_FIELDS,\n AppClarificationMode.FAIL_FAST\n ]),\n missingFieldsQuestionKey: localeKeySchema,\n fieldQuestionKeys: z.record(appLocalKeySchema, localeKeySchema),\n requesterReview: z.enum([AppRequesterReviewMode.NOT_REQUIRED, AppRequesterReviewMode.REQUIRED])\n});\n\nexport const appManifestKnowledgeSchema = z.strictObject({\n id: appNamespacedIdSchema,\n labelKey: localeKeySchema,\n descriptionKey: localeKeySchema.optional(),\n audience: appKnowledgeAudienceSchema,\n source: z.discriminatedUnion(\"type\", [\n z.strictObject({\n type: z.literal(AppKnowledgeSourceType.SETTING),\n settingKey: appLocalKeySchema\n }),\n z.strictObject({\n type: z.literal(AppKnowledgeSourceType.RUNTIME)\n })\n ])\n});\n\nexport const appManifestOutcomeSchema = z.strictObject({\n id: appNamespacedIdSchema,\n actionId: appNamespacedIdSchema,\n status: appOutcomeStatusSchema,\n titleKey: localeKeySchema,\n descriptionKey: localeKeySchema,\n schema: jsonSchemaSchema,\n nextActions: z\n .array(\n z.strictObject({\n artifactId: appNamespacedIdSchema.optional(),\n id: appNamespacedIdSchema,\n labelKey: localeKeySchema\n })\n )\n .max(16)\n});\n\nconst appManifestPublicActionSchema = z.strictObject({\n id: appNamespacedIdSchema,\n intentId: appNamespacedIdSchema,\n labelKey: localeKeySchema,\n descriptionKey: localeKeySchema,\n capabilityIds: z.array(appNamespacedIdSchema).min(1).max(16),\n allowedOrigins: z.array(appOriginSchema).min(1).max(8),\n riskLevel: appRiskLevelSchema\n});\n\nconst appManifestTriggerSchema = z.strictObject({\n id: appNamespacedIdSchema,\n event: appNamespacedIdSchema,\n capabilityId: appNamespacedIdSchema,\n riskLevel: appRiskLevelSchema,\n inputSchema: jsonSchemaSchema\n});\n\nconst appManifestArtifactContractSchema = z\n .strictObject({\n audiences: z\n .array(z.enum([AppArtifactAudience.PRODUCING_APP, AppArtifactAudience.COMPOSED_APPS]))\n .min(1)\n .max(2),\n id: appNamespacedIdSchema,\n schemaVersion: z.number().int().min(1).max(1_000),\n schema: jsonSchemaSchema,\n descriptionKey: localeKeySchema,\n sensitivityLevel: z.enum(appContextSensitivityLevels)\n })\n .superRefine((value, context) => {\n if (!value.audiences.includes(AppArtifactAudience.PRODUCING_APP)) {\n context.addIssue({\n code: \"custom\",\n message: \"Artifact contracts must include the producing App audience.\",\n path: [\"audiences\"]\n });\n }\n\n if (\n value.sensitivityLevel === \"HIGH\" &&\n value.audiences.includes(AppArtifactAudience.COMPOSED_APPS)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"HIGH-sensitivity artifacts cannot be shared with composed Apps.\",\n path: [\"audiences\"]\n });\n }\n });\n\nconst appManifestPolicyBehaviorSchema = z.strictObject({\n effect: appPolicyEffectSchema,\n value: appLocalKeySchema,\n labelKey: localeKeySchema\n});\n\nconst appManifestPolicyRuleSchema = z\n .strictObject({\n key: appLocalKeySchema,\n labelKey: localeKeySchema,\n descriptionKey: localeKeySchema,\n conditionFields: z\n .array(appManifestFieldSchema)\n .max(0, \"Conditional policy fields require a deterministic evaluator in a future protocol.\"),\n behaviors: z.array(appManifestPolicyBehaviorSchema).min(1).max(16),\n defaultBehavior: appLocalKeySchema\n })\n .superRefine((rule, context) => {\n const behaviorValues = rule.behaviors.map((behavior) => behavior.value);\n\n if (new Set(behaviorValues).size !== behaviorValues.length) {\n context.addIssue({\n code: \"custom\",\n message: \"Policy behavior values must be unique.\",\n path: [\"behaviors\"]\n });\n }\n\n if (!behaviorValues.includes(rule.defaultBehavior)) {\n context.addIssue({\n code: \"custom\",\n message: \"The default policy behavior must reference a declared behavior.\",\n path: [\"defaultBehavior\"]\n });\n }\n });\n\nconst manifestNoConnectionSchema = z.strictObject({\n type: z.literal(AppConnectionType.NONE)\n});\n\nconst manifestApiKeyConnectionSchema = z.strictObject({\n type: z.literal(AppConnectionType.API_KEY),\n fields: z\n .array(\n z.strictObject({\n key: appLocalKeySchema,\n allowedOrigins: z\n .array(\n httpsOrLocalhostUrlSchema.refine(isOriginUrl, {\n message:\n \"Runtime credential origins must not include credentials, paths, queries, or fragments\"\n })\n )\n .min(1)\n .max(16),\n headerName: z\n .string()\n .min(1)\n .max(120)\n .regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/),\n labelKey: localeKeySchema,\n descriptionKey: localeKeySchema,\n secretRef: runtimeSecretReferenceSchema\n })\n )\n .min(1)\n .max(16)\n});\n\nconst manifestOauthConnectionSchema = z.strictObject({\n type: z.literal(AppConnectionType.OAUTH2),\n authorizationUrl: httpsUrlSchema,\n tokenUrl: httpsUrlSchema,\n refreshUrl: httpsUrlSchema.optional(),\n resourceOrigins: z\n .array(\n httpsOrLocalhostUrlSchema.refine(isOriginUrl, {\n message:\n \"Runtime credential origins must not include credentials, paths, queries, or fragments\"\n })\n )\n .min(1)\n .max(16),\n clientIdSecretRef: runtimeSecretReferenceSchema,\n clientSecretSecretRef: runtimeSecretReferenceSchema.optional(),\n pkceRequired: z.boolean(),\n scopes: z\n .array(\n z.strictObject({\n permissionKey: appLocalKeySchema,\n providerScope: z.string().min(1).max(300)\n })\n )\n .min(1)\n .max(64)\n});\n\nconst manifestEmitResultStepSchema = z.strictObject({\n key: appLocalKeySchema,\n dependsOn: z.array(appLocalKeySchema).max(32).default([]),\n type: z.literal(AppWorkflowStepType.EMIT_RESULT),\n outcomeId: appNamespacedIdSchema,\n output: appValueExpressionSchema\n});\n\nconst manifestEmitArtifactStepSchema = z.strictObject({\n key: appLocalKeySchema,\n dependsOn: z.array(appLocalKeySchema).max(32).default([]),\n type: z.literal(AppWorkflowStepType.EMIT_ARTIFACT),\n artifactId: appNamespacedIdSchema,\n schemaVersion: z.number().int().min(1).max(1_000),\n value: appValueExpressionSchema\n});\n\nfunction isOriginUrl(value: string): boolean {\n const url = new URL(value);\n return !url.username && !url.password && !url.search && !url.hash && url.pathname === \"/\";\n}\n\nexport const appManifestWorkflowStepSchema = z.discriminatedUnion(\"type\", [\n appHttpRequestStepSchema,\n appTransformStepSchema,\n appConditionStepSchema,\n appTemplateStepSchema,\n manifestEmitArtifactStepSchema,\n appEmitBubbleStepSchema,\n manifestEmitResultStepSchema\n]);\n\nconst manifestDeclarativeRuntimeSchema = z.strictObject({\n host: z.literal(AppRuntimeHost.DECLARATIVE),\n connection: z.discriminatedUnion(\"type\", [\n manifestNoConnectionSchema,\n manifestApiKeyConnectionSchema,\n manifestOauthConnectionSchema\n ]),\n workflows: z\n .array(\n z.strictObject({\n actionId: appNamespacedIdSchema,\n steps: z.array(appManifestWorkflowStepSchema).min(1).max(32)\n })\n )\n .min(1)\n .max(64)\n});\n\nconst manifestRemoteRuntimeSchema = z.strictObject({\n host: z.literal(AppRuntimeHost.REMOTE),\n baseUrl: httpsOrLocalhostUrlSchema,\n jwksUrl: httpsOrLocalhostUrlSchema,\n connectionRequired: z.boolean()\n});\n\nexport const appManifestSchema = z\n .strictObject({\n manifestVersion: z.literal(appManifestVersion),\n app: z.strictObject({\n id: appIdSchema,\n slug: appSlugSchema,\n version: semanticVersionSchema,\n nameKey: localeKeySchema,\n shortDescriptionKey: localeKeySchema,\n longDescriptionKey: localeKeySchema,\n categoryId: appCategoryIdSchema,\n icon: appIconDefinitionSchema.optional(),\n providerName: z.string().min(1).max(120).optional(),\n official: z.boolean(),\n developer: appCompilationDeveloperSchema,\n publication: appPublicationDefinitionSchema\n }),\n connection: z.strictObject({\n type: appConnectionTypeSchema,\n required: z.boolean(),\n titleKey: localeKeySchema,\n descriptionKey: localeKeySchema,\n permissions: z\n .array(\n z.strictObject({\n key: appLocalKeySchema,\n labelKey: localeKeySchema,\n descriptionKey: localeKeySchema,\n sensitivity: appPermissionSensitivitySchema\n })\n )\n .max(64)\n }),\n intents: z.array(appManifestIntentSchema).min(1).max(128),\n capabilities: z.array(appManifestCapabilitySchema).min(1).max(128),\n actions: z.array(appManifestActionSchema).min(1).max(128),\n triggers: z.array(appManifestTriggerSchema).max(64),\n resources: z.array(appNamespacedIdSchema).max(128),\n knowledge: z.array(appManifestKnowledgeSchema).max(128),\n artifactContracts: z.array(appManifestArtifactContractSchema).max(128),\n context: z.strictObject({\n defaultScopes: z.array(z.enum(appContextScopes)).max(appContextScopes.length),\n optionalScopes: z.array(z.enum(appContextScopes)).max(appContextScopes.length),\n prohibitedScopes: z\n .array(z.enum(forbiddenAppContextScopes))\n .max(forbiddenAppContextScopes.length),\n copy: z.strictObject({\n receives: z\n .array(\n z.strictObject({\n scope: z.enum(appContextScopes),\n labelKey: localeKeySchema,\n descriptionKey: localeKeySchema\n })\n )\n .max(appContextScopes.length),\n doesNotReceive: z\n .array(\n z.strictObject({\n scope: z.enum(forbiddenAppContextScopes),\n labelKey: localeKeySchema,\n descriptionKey: localeKeySchema\n })\n )\n .max(forbiddenAppContextScopes.length)\n })\n }),\n settings: z.strictObject({\n schemaVersion: z.literal(appSettingsSchemaVersion),\n fields: z.array(appManifestFieldSchema).max(100)\n }),\n policies: z.strictObject({\n schemaVersion: z.literal(appPoliciesSchemaVersion),\n rules: z.array(appManifestPolicyRuleSchema).max(100)\n }),\n customRules: z.strictObject({\n families: z.array(appLocalKeySchema).max(32),\n examples: z.record(localeCodeSchema, z.array(z.string().min(1).max(600)).max(32)),\n unsupportedExamples: z.record(localeCodeSchema, z.array(z.string().min(1).max(600)).max(32))\n }),\n publicActions: z.array(appManifestPublicActionSchema).max(32),\n outcomes: z.array(appManifestOutcomeSchema).min(1).max(128),\n runtime: z.discriminatedUnion(\"host\", [\n manifestDeclarativeRuntimeSchema,\n manifestRemoteRuntimeSchema\n ]),\n locales: z.strictObject({\n defaultLocale: localeCodeSchema,\n messages: z.record(localeCodeSchema, z.record(localeKeySchema, z.string()))\n })\n })\n .superRefine((manifest, context) => {\n const policyKeys = manifest.policies.rules.map((rule) => rule.key);\n const declaredPolicies = new Set(policyKeys);\n const declaredScopes = new Set([\n ...manifest.context.defaultScopes,\n ...manifest.context.optionalScopes\n ]);\n\n if (declaredPolicies.size !== policyKeys.length) {\n context.addIssue({\n code: \"custom\",\n message: \"Policy rule keys must be unique.\",\n path: [\"policies\", \"rules\"]\n });\n }\n\n manifest.actions.forEach((action, actionIndex) => {\n action.context.requiresPolicies.forEach((policyKey) => {\n if (!declaredPolicies.has(policyKey)) {\n context.addIssue({\n code: \"custom\",\n message: `Action references unknown policy ${policyKey}.`,\n path: [\"actions\", actionIndex, \"context\", \"requiresPolicies\"]\n });\n }\n });\n\n action.context.requiredScopes.forEach((scope) => {\n if (!declaredScopes.has(scope)) {\n context.addIssue({\n code: \"custom\",\n message: `Action references undeclared App Context scope ${scope}.`,\n path: [\"actions\", actionIndex, \"context\", \"requiredScopes\"]\n });\n }\n });\n });\n });\n\nexport type AppManifest = z.infer<typeof appManifestSchema>;\n\nexport function createAppManifestJsonSchema(): Record<string, unknown> {\n return z.toJSONSchema(appManifestSchema) as Record<string, unknown>;\n}\n\nexport function getAppManifestLocaleCodes(manifest: AppManifest): string[] {\n return Object.keys(manifest.locales.messages).sort();\n}\n\nexport function readAppManifestText({\n key,\n locale,\n manifest\n}: {\n key: string;\n locale?: string;\n manifest: AppManifest;\n}): string {\n const requestedLocale = locale ?? manifest.locales.defaultLocale;\n const baseLocale = requestedLocale.split(\"-\")[0];\n const candidateLocales = [\n requestedLocale,\n ...(baseLocale && baseLocale !== requestedLocale ? [baseLocale] : []),\n manifest.locales.defaultLocale\n ];\n\n for (const candidateLocale of new Set(candidateLocales)) {\n const value = manifest.locales.messages[candidateLocale]?.[key];\n\n if (value !== undefined) {\n return value;\n }\n }\n\n throw new Error(`Missing App manifest copy for key \"${key}\".`);\n}\n\nexport function readAppManifestLocalizedList({\n locale,\n manifest,\n values\n}: {\n locale: string;\n manifest: AppManifest;\n values: Record<string, string[]>;\n}): string[] {\n const baseLocale = locale.split(\"-\")[0];\n const candidateLocales = [\n locale,\n ...(baseLocale && baseLocale !== locale ? [baseLocale] : []),\n manifest.locales.defaultLocale\n ];\n\n for (const candidateLocale of new Set(candidateLocales)) {\n const localizedValues = values[candidateLocale];\n\n if (localizedValues !== undefined) {\n return [...localizedValues];\n }\n }\n\n return [];\n}\n\nexport const appManifestCopyShape = keyedCopySchema;\n","import { z } from \"zod\";\n\nexport const publicHandleMinLength = 3;\nexport const publicHandleMaxLength = 30;\n\nexport const reservedPublicHandles = [\n \"account\",\n \"admin\",\n \"api\",\n \"apps\",\n \"auth\",\n \"developers\",\n \"docs\",\n \"inbox\",\n \"privacy\",\n \"r\",\n \"requests\",\n \"terms\"\n] as const;\n\nconst reservedPublicHandleSet = new Set<string>(reservedPublicHandles);\n\nexport function isReservedPublicHandle(value: string): boolean {\n return reservedPublicHandleSet.has(normalizePublicHandle(value));\n}\n\nexport function normalizePublicHandle(value: string): string {\n return value.trim().toLowerCase();\n}\n\nexport function formatPublicHandleInput(value: string): string {\n return normalizePublicHandle(value)\n .replace(/[^a-z0-9_]/g, \"\")\n .replace(/^[^a-z0-9]+/, \"\")\n .slice(0, publicHandleMaxLength);\n}\n\nexport const publicHandleSchema = z\n .string()\n .transform(normalizePublicHandle)\n .pipe(\n z\n .string()\n .min(publicHandleMinLength)\n .max(publicHandleMaxLength)\n .regex(/^[a-z0-9][a-z0-9_]*$/)\n )\n .refine((handle) => !isReservedPublicHandle(handle));\n\nexport enum PublicHandleClaimStatus {\n AVAILABLE = \"AVAILABLE\",\n CURRENT = \"CURRENT\",\n INVALID = \"INVALID\",\n UNAVAILABLE = \"UNAVAILABLE\"\n}\n\nexport const publicHandleCheckQuerySchema = z.object({\n handle: z.string().max(80)\n});\n\nexport type PublicHandleCheckQuery = z.infer<typeof publicHandleCheckQuerySchema>;\n\nexport const publicHandleCheckViewSchema = z.object({\n handle: z.string(),\n status: z.enum(PublicHandleClaimStatus)\n});\n\nexport type PublicHandleCheckView = z.infer<typeof publicHandleCheckViewSchema>;\n","import { z } from \"zod\";\nimport { publicHandleSchema } from \"./identity\";\n\nexport enum AuthFlowStatus {\n CODE_SENT = \"CODE_SENT\",\n AUTHENTICATED = \"AUTHENTICATED\"\n}\n\nexport enum AuthSessionClientType {\n WEB = \"WEB\",\n DESKTOP = \"DESKTOP\"\n}\n\nexport enum PreferredColorScheme {\n LIGHT = \"LIGHT\",\n DARK = \"DARK\"\n}\n\nexport enum AuthAdminRole {\n REVIEWER = \"REVIEWER\",\n MODERATOR = \"MODERATOR\",\n SUPERADMIN = \"SUPERADMIN\"\n}\n\nexport enum AuthStepUpStatus {\n CODE_SENT = \"CODE_SENT\",\n VERIFIED = \"VERIFIED\"\n}\n\nexport enum AuthStepUpReason {\n ACCOUNT_SECURITY = \"ACCOUNT_SECURITY\",\n APP_CONNECTION = \"APP_CONNECTION\",\n APP_CONTEXT_PERMISSION = \"APP_CONTEXT_PERMISSION\",\n APP_MODERATION = \"APP_MODERATION\",\n APP_POLICY_CHANGE = \"APP_POLICY_CHANGE\",\n APP_PUBLICATION = \"APP_PUBLICATION\",\n APP_VERSION_CHANGE = \"APP_VERSION_CHANGE\"\n}\n\nexport enum UserOnboardingStatus {\n PENDING = \"PENDING\",\n COMPLETED = \"COMPLETED\"\n}\n\nexport enum UserOnboardingStep {\n PROFILE = \"PROFILE\",\n PUBLIC_PAGE = \"PUBLIC_PAGE\",\n READY = \"READY\"\n}\n\nconst browserEnvironmentSchema = z.object({\n browserLocale: z.string().trim().max(80).nullable().optional(),\n browserTimezone: z.string().trim().max(120).nullable().optional(),\n preferredColorScheme: z.enum(PreferredColorScheme).optional()\n});\n\nexport const startEmailAuthSchema = z.object({\n email: z.string().trim().email().max(254)\n});\n\nexport type StartEmailAuthInput = z.infer<typeof startEmailAuthSchema>;\n\nconst verifyAuthCodeSchema = z.object({\n challengeId: z.string().min(1).max(120),\n code: z.string().regex(/^\\d{6}$/)\n});\n\nexport const verifyEmailAuthSchema = verifyAuthCodeSchema.extend(browserEnvironmentSchema.shape);\n\nexport type VerifyEmailAuthInput = z.infer<typeof verifyEmailAuthSchema>;\n\nexport const verifyStepUpAuthSchema = verifyAuthCodeSchema;\n\nexport type VerifyStepUpAuthInput = z.infer<typeof verifyStepUpAuthSchema>;\n\nexport const authStepUpStartResponseSchema = z.discriminatedUnion(\"status\", [\n z.object({\n challengeId: z.string(),\n codeExpiresAt: z.string().datetime({ offset: true }),\n status: z.literal(AuthStepUpStatus.CODE_SENT)\n }),\n z.object({\n status: z.literal(AuthStepUpStatus.VERIFIED),\n verifiedUntil: z.string().datetime({ offset: true })\n })\n]);\n\nexport type AuthStepUpStartResponse = z.infer<typeof authStepUpStartResponseSchema>;\n\nexport const authStepUpVerifyResponseSchema = z.object({\n status: z.literal(AuthStepUpStatus.VERIFIED),\n verifiedUntil: z.string().datetime({ offset: true })\n});\n\nexport type AuthStepUpVerifyResponse = z.infer<typeof authStepUpVerifyResponseSchema>;\n\nexport const startGoogleAuthSchema = z\n .object({\n returnTo: z\n .string()\n .trim()\n .max(500)\n .refine((value) => value.startsWith(\"/\") && !value.startsWith(\"//\"))\n .optional()\n })\n .extend(browserEnvironmentSchema.shape);\n\nexport type StartGoogleAuthInput = z.infer<typeof startGoogleAuthSchema>;\n\nexport const saveOnboardingStepSchema = z.discriminatedUnion(\"step\", [\n z.object({\n displayName: z.string().trim().min(1).max(80),\n handle: publicHandleSchema,\n step: z.literal(UserOnboardingStep.PROFILE)\n }),\n z.object({\n bio: z.string().trim().max(240).nullable(),\n step: z.literal(UserOnboardingStep.PUBLIC_PAGE)\n })\n]);\n\nexport type SaveOnboardingStepInput = z.infer<typeof saveOnboardingStepSchema>;\n\nexport const onboardingViewSchema = z.object({\n completedAt: z.string().datetime({ offset: true }).nullable(),\n currentStep: z.enum(UserOnboardingStep),\n status: z.enum(UserOnboardingStatus),\n vekil: z.object({\n avatarSeed: z.string(),\n avatarUrl: z.string().url().nullable(),\n displayName: z.string(),\n handle: z.string()\n })\n});\n\nexport type OnboardingView = z.infer<typeof onboardingViewSchema>;\n\nexport const authSessionViewSchema = z.object({\n access: z.object({\n adminRoles: z.array(z.enum(AuthAdminRole)),\n builder: z.boolean()\n }),\n session: z.object({\n absoluteExpiresAt: z.string().datetime({ offset: true }),\n clientType: z.enum([AuthSessionClientType.WEB, AuthSessionClientType.DESKTOP]),\n id: z.string(),\n stepUpVerifiedUntil: z.string().datetime({ offset: true }).nullable()\n }),\n user: z.object({\n email: z.string().email(),\n id: z.string()\n }),\n onboarding: z.object({\n completedAt: z.string().datetime({ offset: true }).nullable(),\n currentStep: z.enum(UserOnboardingStep),\n status: z.enum(UserOnboardingStatus)\n }),\n vekil: z.object({\n avatarSeed: z.string(),\n avatarUrl: z.string().url().nullable(),\n displayName: z.string(),\n handle: z.string(),\n id: z.string()\n })\n});\n\nexport type AuthSessionView = z.infer<typeof authSessionViewSchema>;\n\nexport const userSessionListItemSchema = z.object({\n absoluteExpiresAt: z.string().datetime({ offset: true }),\n clientType: z.enum([AuthSessionClientType.WEB, AuthSessionClientType.DESKTOP]),\n createdAt: z.string().datetime({ offset: true }),\n current: z.boolean(),\n deviceLabel: z.string(),\n id: z.string(),\n lastSeenAt: z.string().datetime({ offset: true })\n});\n\nexport type UserSessionListItem = z.infer<typeof userSessionListItemSchema>;\n","import { z } from \"zod\";\nimport { PreferredColorScheme } from \"./auth\";\n\nexport const vekilPublicPageStyleIds = [\n \"paper\",\n \"midnight\",\n \"sky\",\n \"rose\",\n \"violet\",\n \"forest\"\n] as const;\n\nexport const vekilPublicPagePatternIds = [\n \"none\",\n \"cartoon-space\",\n \"cats\",\n \"characters\",\n \"christmas\",\n \"food\",\n \"free-time\",\n \"fun-space\",\n \"games\",\n \"halloween\",\n \"love\",\n \"magic\",\n \"renovation\",\n \"richness\",\n \"sea-world\",\n \"sightseeing\",\n \"snowflakes\",\n \"space\",\n \"space-cat\",\n \"sport\",\n \"star-wars\",\n \"sweet-love\",\n \"sweets\",\n \"unicorn\",\n \"witch\",\n \"wizard-world\",\n \"woodland\",\n \"zoo\"\n] as const;\n\nconst hexColorSchema = z.string().regex(/^#[0-9a-f]{6}$/i);\n\nexport const vekilPublicPageSettingsSchema = z.object({\n accent_color: hexColorSchema,\n background_color: hexColorSchema,\n message_color: hexColorSchema,\n pattern_id: z.enum(vekilPublicPagePatternIds),\n pattern_intensity: z.number().int().min(0).max(30),\n style_id: z.enum(vekilPublicPageStyleIds)\n});\n\nexport type VekilPublicPageSettings = z.infer<typeof vekilPublicPageSettingsSchema>;\nexport type VekilPublicPageStyleId = (typeof vekilPublicPageStyleIds)[number];\nexport type VekilPublicPagePatternId = (typeof vekilPublicPagePatternIds)[number];\n\nexport const vekilPublicPageStylePresets = {\n paper: {\n accent_color: \"#111111\",\n background_color: \"#ffffff\",\n message_color: \"#f2f2f2\",\n pattern_id: \"none\",\n pattern_intensity: 0,\n style_id: \"paper\"\n },\n midnight: {\n accent_color: \"#ffffff\",\n background_color: \"#0b0b0c\",\n message_color: \"#1c1c1f\",\n pattern_id: \"none\",\n pattern_intensity: 0,\n style_id: \"midnight\"\n },\n sky: {\n accent_color: \"#007aff\",\n background_color: \"#f4f9ff\",\n message_color: \"#e6f1ff\",\n pattern_id: \"none\",\n pattern_intensity: 0,\n style_id: \"sky\"\n },\n rose: {\n accent_color: \"#e54868\",\n background_color: \"#fff7f8\",\n message_color: \"#ffe8ed\",\n pattern_id: \"none\",\n pattern_intensity: 0,\n style_id: \"rose\"\n },\n violet: {\n accent_color: \"#bf5af2\",\n background_color: \"#16131d\",\n message_color: \"#25202f\",\n pattern_id: \"none\",\n pattern_intensity: 0,\n style_id: \"violet\"\n },\n forest: {\n accent_color: \"#238b45\",\n background_color: \"#f4faf6\",\n message_color: \"#e4f2e8\",\n pattern_id: \"none\",\n pattern_intensity: 0,\n style_id: \"forest\"\n }\n} as const satisfies Record<VekilPublicPageStyleId, VekilPublicPageSettings>;\n\nexport function createInitialVekilPublicPageSettings(\n preferredColorScheme: PreferredColorScheme = PreferredColorScheme.LIGHT\n): VekilPublicPageSettings {\n const preset =\n preferredColorScheme === PreferredColorScheme.DARK\n ? vekilPublicPageStylePresets.midnight\n : vekilPublicPageStylePresets.paper;\n\n return {\n ...preset,\n pattern_id: \"cats\",\n pattern_intensity: 5\n };\n}\n\nexport const defaultVekilPublicPageSettings = createInitialVekilPublicPageSettings();\n","import { z } from \"zod\";\n\nexport enum ManagedAiServiceStatus {\n READY = \"READY\",\n LIMIT_REACHED = \"LIMIT_REACHED\",\n UNAVAILABLE = \"UNAVAILABLE\"\n}\n\nexport enum ProductPlanKey {\n FREE = \"FREE\",\n PRO = \"PRO\"\n}\n\nexport const currentProductUsageViewSchema = z.object({\n managedAiStatus: z.enum(ManagedAiServiceStatus),\n period: z.object({\n endsAt: z.string().datetime({ offset: true }),\n startsAt: z.string().datetime({ offset: true })\n }),\n planKey: z.enum(ProductPlanKey),\n usage: z.object({\n appActions: z.number().int().nonnegative(),\n handledConversations: z.number().int().nonnegative()\n })\n});\n\nexport type CurrentProductUsageView = z.infer<typeof currentProductUsageViewSchema>;\n","import { z } from \"zod\";\nimport { publicHandleSchema } from \"./identity\";\nimport { vekilPublicPageSettingsSchema } from \"./public-page\";\nimport { ManagedAiServiceStatus } from \"./usage\";\n\nexport const publicVekilCapabilitySchema = z.object({\n description: z.string(),\n id: z.string(),\n prompt: z.string(),\n title: z.string()\n});\n\nexport enum PublicVekilRequestAvailability {\n AVAILABLE = \"AVAILABLE\",\n LIMIT_REACHED = \"LIMIT_REACHED\",\n SERVICE_UNAVAILABLE = \"SERVICE_UNAVAILABLE\"\n}\n\nexport const publicVekilSchema = z.object({\n avatar_url: z.string().url().nullable(),\n bio: z.string().nullable(),\n display_name: z.string(),\n handle: z.string(),\n request_availability: z.enum(PublicVekilRequestAvailability),\n public_page: vekilPublicPageSettingsSchema,\n public_actions: z.array(publicVekilCapabilitySchema)\n});\n\nexport type PublicVekil = z.infer<typeof publicVekilSchema>;\n\nexport const currentVekilReadinessSchema = z.object({\n managedAiStatus: z.enum(ManagedAiServiceStatus),\n publicPageVisible: z.boolean(),\n readyAppCount: z.number().int().nonnegative(),\n requestAvailability: z.enum(PublicVekilRequestAvailability)\n});\n\nexport type CurrentVekilReadiness = z.infer<typeof currentVekilReadinessSchema>;\n\nexport const updateVekilProfileSchema = z.object({\n displayName: z.string().min(1).max(80).optional(),\n bio: z.string().max(240).nullable().optional(),\n avatarAssetId: z.string().min(1).nullable().optional(),\n handle: publicHandleSchema.optional()\n});\n\nexport type UpdateVekilProfileInput = z.infer<typeof updateVekilProfileSchema>;\n","const systemReservedHandles = [\n \"inbox\",\n \"requests\",\n \"account\",\n \"apps\",\n \"policies\",\n \"settings\",\n \"activity\",\n \"notifications\",\n \"api\",\n \"auth\",\n \"oauth\",\n \"webhooks\",\n \"admin\",\n \"privacy\",\n \"terms\",\n \"support\",\n \"help\",\n \"new\",\n \"status\",\n \"r\",\n \"u\",\n \"app\",\n \"me\",\n \"onboarding\",\n \"billing\"\n] as const;\n\nexport const reservedHandles = new Set<string>(systemReservedHandles);\n\nexport type HandleValidationResult =\n | { valid: true; normalizedHandle: string }\n | { valid: false; reason: \"too-short\" | \"too-long\" | \"invalid-format\" | \"reserved\" };\n\nexport enum AgentStatus {\n DRAFT = \"DRAFT\",\n ACTIVE = \"ACTIVE\",\n PAUSED = \"PAUSED\"\n}\n\nexport function validateHandle(input: string): HandleValidationResult {\n const normalizedHandle = input.trim().toLowerCase();\n\n if (normalizedHandle.length < 3) {\n return { valid: false, reason: \"too-short\" };\n }\n\n if (normalizedHandle.length > 32) {\n return { valid: false, reason: \"too-long\" };\n }\n\n if (!/^[a-z0-9][a-z0-9_-]*[a-z0-9]$/.test(normalizedHandle)) {\n return { valid: false, reason: \"invalid-format\" };\n }\n\n if (reservedHandles.has(normalizedHandle)) {\n return { valid: false, reason: \"reserved\" };\n }\n\n return { valid: true, normalizedHandle };\n}\n\nexport interface AgentProfile {\n id: string;\n ownerUserId: string;\n handle: string;\n displayName: string;\n bio: string | null;\n avatarUrl: string | null;\n timezone: string;\n status: AgentStatus;\n}\n","export enum ConversationResponseMode {\n ACKNOWLEDGEMENT = \"ACKNOWLEDGEMENT\",\n CANCELLATION = \"CANCELLATION\",\n CAPABILITY_UNAVAILABLE = \"CAPABILITY_UNAVAILABLE\",\n CLARIFICATION = \"CLARIFICATION\",\n CONTEXT_SWITCH = \"CONTEXT_SWITCH\",\n HANDOFF = \"HANDOFF\",\n OUTCOME = \"OUTCOME\",\n REVIEW = \"REVIEW\",\n SOCIAL = \"SOCIAL\"\n}\n\nexport enum VekilClarificationStyle {\n GROUP_RELATED = \"GROUP_RELATED\",\n ONE_AT_A_TIME = \"ONE_AT_A_TIME\"\n}\n\nexport enum VekilCommunicationTone {\n DIRECT = \"DIRECT\",\n NATURAL = \"NATURAL\",\n PROFESSIONAL = \"PROFESSIONAL\",\n WARM = \"WARM\"\n}\n\nexport enum VekilReplyLength {\n BALANCED = \"BALANCED\",\n CONCISE = \"CONCISE\"\n}\n\nexport enum VekilUnavailableActionBehavior {\n COLLECT_AND_HAND_OFF = \"COLLECT_AND_HAND_OFF\",\n EXPLAIN_ONLY = \"EXPLAIN_ONLY\"\n}\n\nexport interface VekilCommunicationSettings {\n clarification_style: VekilClarificationStyle;\n reply_length: VekilReplyLength;\n tone: VekilCommunicationTone;\n unavailable_action_behavior: VekilUnavailableActionBehavior;\n writing_preferences: string | null;\n}\n\nexport const defaultVekilCommunicationSettings = {\n clarification_style: VekilClarificationStyle.ONE_AT_A_TIME,\n reply_length: VekilReplyLength.CONCISE,\n tone: VekilCommunicationTone.NATURAL,\n unavailable_action_behavior: VekilUnavailableActionBehavior.COLLECT_AND_HAND_OFF,\n writing_preferences: null\n} satisfies VekilCommunicationSettings;\n","export enum ActorType {\n ANONYMOUS_VISITOR = \"ANONYMOUS_VISITOR\",\n GUEST_REQUESTER = \"GUEST_REQUESTER\",\n VERIFIED_EXTERNAL = \"VERIFIED_EXTERNAL\",\n AUTHENTICATED_USER = \"AUTHENTICATED_USER\",\n AGENT_PROFILE = \"AGENT_PROFILE\",\n SYSTEM = \"SYSTEM\",\n APP = \"APP\"\n}\n\nexport enum VerificationStatus {\n UNVERIFIED = \"UNVERIFIED\",\n EMAIL_VERIFIED = \"EMAIL_VERIFIED\",\n PHONE_VERIFIED = \"PHONE_VERIFIED\",\n DOMAIN_VERIFIED = \"DOMAIN_VERIFIED\",\n PLATFORM_VERIFIED = \"PLATFORM_VERIFIED\"\n}\n\nexport enum RequestOriginType {\n PUBLIC_GUEST = \"PUBLIC_GUEST\",\n PUBLIC_VERIFIED_EXTERNAL = \"PUBLIC_VERIFIED_EXTERNAL\",\n PUBLIC_AUTHENTICATED = \"PUBLIC_AUTHENTICATED\",\n AGENT_TO_AGENT = \"AGENT_TO_AGENT\",\n AGENT_TO_EXTERNAL_FALLBACK = \"AGENT_TO_EXTERNAL_FALLBACK\",\n SYSTEM_GENERATED = \"SYSTEM_GENERATED\"\n}\n\nexport enum PublicRequestSessionStatus {\n ACTIVE = \"ACTIVE\",\n IDENTITY_REQUIRED = \"IDENTITY_REQUIRED\",\n VERIFICATION_REQUIRED = \"VERIFICATION_REQUIRED\",\n REQUEST_CREATED = \"REQUEST_CREATED\",\n WAITING_OWNER = \"WAITING_OWNER\",\n WAITING_REQUESTER = \"WAITING_REQUESTER\",\n COMPLETED = \"COMPLETED\",\n EXPIRED = \"EXPIRED\",\n BLOCKED = \"BLOCKED\"\n}\n\nexport enum AgentEnvelopeType {\n REQUEST = \"REQUEST\",\n PROPOSAL = \"PROPOSAL\",\n RESPONSE = \"RESPONSE\",\n STATUS_UPDATE = \"STATUS_UPDATE\",\n CANCELLATION = \"CANCELLATION\"\n}\n\nexport enum AgentEnvelopeStatus {\n CREATED = \"CREATED\",\n SENT = \"SENT\",\n DELIVERED = \"DELIVERED\",\n ACCEPTED = \"ACCEPTED\",\n REJECTED = \"REJECTED\",\n NEGOTIATING = \"NEGOTIATING\",\n COMPLETED = \"COMPLETED\",\n FAILED = \"FAILED\",\n EXPIRED = \"EXPIRED\"\n}\n\nexport enum RequestParticipantRole {\n OWNER = \"OWNER\",\n REQUESTER = \"REQUESTER\",\n TARGET_AGENT = \"TARGET_AGENT\",\n SOURCE_AGENT = \"SOURCE_AGENT\",\n EXTERNAL_GUEST = \"EXTERNAL_GUEST\",\n APPROVER = \"APPROVER\",\n OBSERVER = \"OBSERVER\",\n SYSTEM = \"SYSTEM\"\n}\n\nexport enum RequestVisibilityLevel {\n PUBLIC_REQUESTER = \"PUBLIC_REQUESTER\",\n REQUESTER_PRIVATE = \"REQUESTER_PRIVATE\",\n OWNER_PRIVATE = \"OWNER_PRIVATE\",\n AGENT_INTERNAL = \"AGENT_INTERNAL\",\n SYSTEM_ONLY = \"SYSTEM_ONLY\"\n}\n\nexport interface Actor {\n id: string;\n actorType: ActorType;\n linkedUserId: string | null;\n linkedAgentId: string | null;\n linkedContactIdentityId: string | null;\n linkedAppInstallationId: string | null;\n displayName: string;\n verificationStatus: VerificationStatus;\n createdAt: Date;\n}\n\nconst publicRequestSessionTransitions: Record<\n PublicRequestSessionStatus,\n PublicRequestSessionStatus[]\n> = {\n [PublicRequestSessionStatus.ACTIVE]: [\n PublicRequestSessionStatus.ACTIVE,\n PublicRequestSessionStatus.IDENTITY_REQUIRED,\n PublicRequestSessionStatus.REQUEST_CREATED,\n PublicRequestSessionStatus.EXPIRED,\n PublicRequestSessionStatus.BLOCKED\n ],\n [PublicRequestSessionStatus.IDENTITY_REQUIRED]: [\n PublicRequestSessionStatus.ACTIVE,\n PublicRequestSessionStatus.VERIFICATION_REQUIRED,\n PublicRequestSessionStatus.REQUEST_CREATED,\n PublicRequestSessionStatus.EXPIRED,\n PublicRequestSessionStatus.BLOCKED\n ],\n [PublicRequestSessionStatus.VERIFICATION_REQUIRED]: [\n PublicRequestSessionStatus.ACTIVE,\n PublicRequestSessionStatus.REQUEST_CREATED,\n PublicRequestSessionStatus.EXPIRED,\n PublicRequestSessionStatus.BLOCKED\n ],\n [PublicRequestSessionStatus.REQUEST_CREATED]: [\n PublicRequestSessionStatus.ACTIVE,\n PublicRequestSessionStatus.WAITING_OWNER,\n PublicRequestSessionStatus.WAITING_REQUESTER,\n PublicRequestSessionStatus.COMPLETED,\n PublicRequestSessionStatus.EXPIRED,\n PublicRequestSessionStatus.BLOCKED\n ],\n [PublicRequestSessionStatus.WAITING_OWNER]: [\n PublicRequestSessionStatus.ACTIVE,\n PublicRequestSessionStatus.WAITING_REQUESTER,\n PublicRequestSessionStatus.COMPLETED,\n PublicRequestSessionStatus.EXPIRED,\n PublicRequestSessionStatus.BLOCKED\n ],\n [PublicRequestSessionStatus.WAITING_REQUESTER]: [\n PublicRequestSessionStatus.ACTIVE,\n PublicRequestSessionStatus.WAITING_OWNER,\n PublicRequestSessionStatus.COMPLETED,\n PublicRequestSessionStatus.EXPIRED,\n PublicRequestSessionStatus.BLOCKED\n ],\n [PublicRequestSessionStatus.COMPLETED]: [PublicRequestSessionStatus.ACTIVE],\n [PublicRequestSessionStatus.EXPIRED]: [],\n [PublicRequestSessionStatus.BLOCKED]: []\n};\n\nconst agentEnvelopeTransitions: Record<AgentEnvelopeStatus, AgentEnvelopeStatus[]> = {\n [AgentEnvelopeStatus.CREATED]: [AgentEnvelopeStatus.SENT, AgentEnvelopeStatus.FAILED],\n [AgentEnvelopeStatus.SENT]: [\n AgentEnvelopeStatus.DELIVERED,\n AgentEnvelopeStatus.FAILED,\n AgentEnvelopeStatus.EXPIRED\n ],\n [AgentEnvelopeStatus.DELIVERED]: [\n AgentEnvelopeStatus.ACCEPTED,\n AgentEnvelopeStatus.REJECTED,\n AgentEnvelopeStatus.NEGOTIATING,\n AgentEnvelopeStatus.EXPIRED\n ],\n [AgentEnvelopeStatus.ACCEPTED]: [\n AgentEnvelopeStatus.NEGOTIATING,\n AgentEnvelopeStatus.COMPLETED,\n AgentEnvelopeStatus.FAILED\n ],\n [AgentEnvelopeStatus.REJECTED]: [],\n [AgentEnvelopeStatus.NEGOTIATING]: [\n AgentEnvelopeStatus.ACCEPTED,\n AgentEnvelopeStatus.REJECTED,\n AgentEnvelopeStatus.COMPLETED,\n AgentEnvelopeStatus.FAILED,\n AgentEnvelopeStatus.EXPIRED\n ],\n [AgentEnvelopeStatus.COMPLETED]: [],\n [AgentEnvelopeStatus.FAILED]: [],\n [AgentEnvelopeStatus.EXPIRED]: []\n};\n\nexport function canTransitionPublicRequestSession(\n from: PublicRequestSessionStatus,\n to: PublicRequestSessionStatus\n): boolean {\n return publicRequestSessionTransitions[from].includes(to);\n}\n\nexport function assertPublicRequestSessionTransition(\n from: PublicRequestSessionStatus,\n to: PublicRequestSessionStatus\n): void {\n if (!canTransitionPublicRequestSession(from, to)) {\n throw new Error(`Invalid public request session transition: ${from} -> ${to}`);\n }\n}\n\nexport function canTransitionAgentEnvelope(\n from: AgentEnvelopeStatus,\n to: AgentEnvelopeStatus\n): boolean {\n return agentEnvelopeTransitions[from].includes(to);\n}\n\nexport function assertAgentEnvelopeTransition(\n from: AgentEnvelopeStatus,\n to: AgentEnvelopeStatus\n): void {\n if (!canTransitionAgentEnvelope(from, to)) {\n throw new Error(`Invalid agent envelope transition: ${from} -> ${to}`);\n }\n}\n","import type { RequestVisibilityLevel } from \"./identity\";\n\nexport enum RequestStatus {\n RECEIVED = \"RECEIVED\",\n CLASSIFIED = \"CLASSIFIED\",\n NEEDS_CLARIFICATION = \"NEEDS_CLARIFICATION\",\n POLICY_CHECKED = \"POLICY_CHECKED\",\n PROPOSAL_READY = \"PROPOSAL_READY\",\n WAITING_FOR_REQUESTER = \"WAITING_FOR_REQUESTER\",\n WAITING_FOR_OWNER = \"WAITING_FOR_OWNER\",\n WAITING_FOR_APPROVAL = \"WAITING_FOR_APPROVAL\",\n APPROVED = \"APPROVED\",\n EXECUTING = \"EXECUTING\",\n COMPLETED = \"COMPLETED\",\n UNFULFILLED = \"UNFULFILLED\",\n DECLINED = \"DECLINED\",\n FAILED = \"FAILED\",\n EXPIRED = \"EXPIRED\",\n CANCELLED = \"CANCELLED\"\n}\n\nexport enum RequestType {\n GENERAL_REQUEST = \"GENERAL_REQUEST\",\n APP_INTENT = \"APP_INTENT\",\n UNSUPPORTED = \"UNSUPPORTED\",\n AMBIGUOUS = \"AMBIGUOUS\"\n}\n\nexport enum RequestNextAction {\n WAIT = \"WAIT\",\n CLARIFY = \"CLARIFY\",\n SELECT_OPTION = \"SELECT_OPTION\",\n APPROVAL = \"APPROVAL\",\n COMPLETED = \"COMPLETED\"\n}\n\nexport enum InboxBucket {\n ATTENTION = \"ATTENTION\",\n ACTIVE = \"ACTIVE\",\n DONE = \"DONE\",\n ALL = \"ALL\"\n}\n\nexport enum InboxOwnerAction {\n RESPOND = \"RESPOND\",\n REVIEW_PROPOSAL = \"REVIEW_PROPOSAL\",\n REVIEW_APPROVAL = \"REVIEW_APPROVAL\",\n REVIEW_FAILURE = \"REVIEW_FAILURE\"\n}\n\nexport enum MessageRelationType {\n CONTINUATION = \"CONTINUATION\",\n CLARIFICATION_ANSWER = \"CLARIFICATION_ANSWER\",\n CORRECTION = \"CORRECTION\",\n CANCELLATION = \"CANCELLATION\",\n NEW_REQUEST = \"NEW_REQUEST\",\n SMALL_TALK = \"SMALL_TALK\",\n INFORMATIONAL = \"INFORMATIONAL\",\n UNSUPPORTED = \"UNSUPPORTED\",\n AMBIGUOUS = \"AMBIGUOUS\",\n MULTI_REQUEST = \"MULTI_REQUEST\"\n}\n\nexport enum RequesterReviewDecision {\n NONE = \"NONE\",\n CONFIRM = \"CONFIRM\",\n REVISE = \"REVISE\"\n}\n\nexport enum RequestContextDecisionType {\n CONTINUED_REQUEST = \"CONTINUED_REQUEST\",\n CREATED_NEW_REQUEST = \"CREATED_NEW_REQUEST\",\n RESPONDED_IN_CONVERSATION = \"RESPONDED_IN_CONVERSATION\",\n CORRECTED_REQUEST = \"CORRECTED_REQUEST\",\n CANCELLED_REQUEST = \"CANCELLED_REQUEST\",\n ASKED_CLARIFICATION = \"ASKED_CLARIFICATION\",\n UNSUPPORTED = \"UNSUPPORTED\",\n SMALL_TALK = \"SMALL_TALK\",\n SPLIT_MULTI_REQUEST = \"SPLIT_MULTI_REQUEST\"\n}\n\nexport enum RequestContextResolutionAction {\n ACCEPT = \"ACCEPT\",\n REJECT = \"REJECT\"\n}\n\nexport enum RequestContextResolutionStatus {\n NOT_REQUIRED = \"NOT_REQUIRED\",\n PENDING = \"PENDING\",\n PROCESSING = \"PROCESSING\",\n ACCEPTED = \"ACCEPTED\",\n REJECTED = \"REJECTED\",\n EXPIRED = \"EXPIRED\"\n}\n\nexport enum ApprovalAction {\n APPROVE = \"APPROVE\",\n DECLINE = \"DECLINE\",\n REQUEST_CHANGES = \"REQUEST_CHANGES\"\n}\n\nexport enum ApprovalStatus {\n PENDING = \"PENDING\",\n APPROVED = \"APPROVED\",\n DECLINED = \"DECLINED\",\n CHANGES_REQUESTED = \"CHANGES_REQUESTED\",\n EXPIRED = \"EXPIRED\",\n CANCELLED = \"CANCELLED\"\n}\n\nexport interface VekilRequest {\n id: string;\n type: RequestType;\n status: RequestStatus;\n targetAgentId: string;\n requesterIdentityId: string;\n naturalLanguageInput: string;\n appIntentId: string | null;\n appActionId: string | null;\n appCapability: string | null;\n appDefinitionId: string | null;\n isComposite: boolean;\n confidence: number | null;\n requiresApproval: boolean;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport interface RequestArtifact {\n id: string;\n requestId: string;\n actionPlanId: string | null;\n actionStepId: string | null;\n artifactType: string;\n schemaVersion: number;\n artifact: Record<string, unknown>;\n sourceAppInstallationId: string | null;\n sourceActionId: string | null;\n visibilityLevel: RequestVisibilityLevel;\n createdAt: Date;\n}\n\nconst allowedTransitions: Record<RequestStatus, RequestStatus[]> = {\n [RequestStatus.RECEIVED]: [\n RequestStatus.CLASSIFIED,\n RequestStatus.UNFULFILLED,\n RequestStatus.FAILED,\n RequestStatus.CANCELLED\n ],\n [RequestStatus.CLASSIFIED]: [\n RequestStatus.NEEDS_CLARIFICATION,\n RequestStatus.POLICY_CHECKED,\n RequestStatus.UNFULFILLED,\n RequestStatus.FAILED,\n RequestStatus.CANCELLED\n ],\n [RequestStatus.NEEDS_CLARIFICATION]: [\n RequestStatus.CLASSIFIED,\n RequestStatus.EXPIRED,\n RequestStatus.CANCELLED\n ],\n [RequestStatus.POLICY_CHECKED]: [\n RequestStatus.PROPOSAL_READY,\n RequestStatus.UNFULFILLED,\n RequestStatus.DECLINED,\n RequestStatus.FAILED,\n RequestStatus.CANCELLED\n ],\n [RequestStatus.PROPOSAL_READY]: [\n RequestStatus.CLASSIFIED,\n RequestStatus.WAITING_FOR_REQUESTER,\n RequestStatus.WAITING_FOR_OWNER,\n RequestStatus.WAITING_FOR_APPROVAL,\n RequestStatus.COMPLETED,\n RequestStatus.FAILED,\n RequestStatus.EXPIRED,\n RequestStatus.CANCELLED\n ],\n [RequestStatus.WAITING_FOR_REQUESTER]: [\n RequestStatus.CLASSIFIED,\n RequestStatus.WAITING_FOR_REQUESTER,\n RequestStatus.WAITING_FOR_OWNER,\n RequestStatus.WAITING_FOR_APPROVAL,\n RequestStatus.EXPIRED,\n RequestStatus.CANCELLED\n ],\n [RequestStatus.WAITING_FOR_OWNER]: [\n RequestStatus.CLASSIFIED,\n RequestStatus.COMPLETED,\n RequestStatus.DECLINED,\n RequestStatus.EXPIRED,\n RequestStatus.CANCELLED\n ],\n [RequestStatus.WAITING_FOR_APPROVAL]: [\n RequestStatus.APPROVED,\n RequestStatus.DECLINED,\n RequestStatus.WAITING_FOR_REQUESTER,\n RequestStatus.FAILED,\n RequestStatus.EXPIRED,\n RequestStatus.CANCELLED\n ],\n [RequestStatus.APPROVED]: [\n RequestStatus.EXECUTING,\n RequestStatus.COMPLETED,\n RequestStatus.CANCELLED\n ],\n [RequestStatus.EXECUTING]: [\n RequestStatus.WAITING_FOR_REQUESTER,\n RequestStatus.WAITING_FOR_OWNER,\n RequestStatus.COMPLETED,\n RequestStatus.FAILED\n ],\n [RequestStatus.COMPLETED]: [],\n [RequestStatus.UNFULFILLED]: [],\n [RequestStatus.DECLINED]: [],\n [RequestStatus.FAILED]: [RequestStatus.CANCELLED],\n [RequestStatus.EXPIRED]: [],\n [RequestStatus.CANCELLED]: []\n};\n\nexport function canTransitionRequest(from: RequestStatus, to: RequestStatus): boolean {\n return allowedTransitions[from].includes(to);\n}\n\nexport function assertRequestTransition(from: RequestStatus, to: RequestStatus): void {\n if (!canTransitionRequest(from, to)) {\n throw new Error(`Invalid request transition: ${from} -> ${to}`);\n }\n}\n\nconst replannableRequestStatuses = new Set<RequestStatus>([\n RequestStatus.RECEIVED,\n RequestStatus.CLASSIFIED,\n RequestStatus.NEEDS_CLARIFICATION,\n RequestStatus.PROPOSAL_READY,\n RequestStatus.WAITING_FOR_REQUESTER,\n RequestStatus.WAITING_FOR_OWNER,\n RequestStatus.WAITING_FOR_APPROVAL\n]);\n\n/**\n * A requester correction may replace an uncommitted plan only while the\n * Request is still mutable. WAITING_FOR_APPROVAL is intentionally included,\n * but persistence must cancel the pending approval before reclassification.\n */\nexport function canReplanRequestStatus(status: RequestStatus): boolean {\n return replannableRequestStatuses.has(status);\n}\n\nexport interface RequestContextReplanTarget {\n conversation_id: string;\n owner_actor_id: string | null;\n owner_user_id: string;\n requester_actor_id: string | null;\n requester_identity_id: string;\n status: RequestStatus;\n target_agent_actor_id: string | null;\n target_agent_id: string;\n}\n\nexport type RequestContextReplanEligibility =\n | { allowed: true }\n | {\n allowed: false;\n reason:\n | \"TARGET_PARTICIPANT_SCOPE_MISMATCH\"\n | \"TARGET_REQUEST_SCOPE_MISMATCH\"\n | \"TARGET_STATUS_IMMUTABLE\";\n };\n\nexport function evaluateRequestContextReplanTarget({\n current,\n selected\n}: {\n current: Omit<RequestContextReplanTarget, \"status\">;\n selected: RequestContextReplanTarget;\n}): RequestContextReplanEligibility {\n if (\n selected.conversation_id !== current.conversation_id ||\n selected.owner_user_id !== current.owner_user_id ||\n selected.requester_identity_id !== current.requester_identity_id ||\n selected.target_agent_id !== current.target_agent_id\n ) {\n return { allowed: false, reason: \"TARGET_REQUEST_SCOPE_MISMATCH\" };\n }\n\n if (\n selected.owner_actor_id !== current.owner_actor_id ||\n selected.requester_actor_id !== current.requester_actor_id ||\n selected.target_agent_actor_id !== current.target_agent_actor_id\n ) {\n return { allowed: false, reason: \"TARGET_PARTICIPANT_SCOPE_MISMATCH\" };\n }\n\n if (!canReplanRequestStatus(selected.status)) {\n return { allowed: false, reason: \"TARGET_STATUS_IMMUTABLE\" };\n }\n\n return { allowed: true };\n}\n\nexport interface PublicRequestRoutingSnapshot {\n active_request_id: string | null;\n contact_identity_id: string | null;\n conversation_id: string;\n request_id: string;\n session_id: string;\n target_agent_id: string;\n}\n\nexport function matchesPublicRequestRoutingSnapshot(\n expected: PublicRequestRoutingSnapshot,\n current: PublicRequestRoutingSnapshot\n): boolean {\n return (\n current.active_request_id === expected.active_request_id &&\n current.contact_identity_id === expected.contact_identity_id &&\n current.conversation_id === expected.conversation_id &&\n current.request_id === expected.request_id &&\n current.session_id === expected.session_id &&\n current.target_agent_id === expected.target_agent_id\n );\n}\n\nconst terminalRequestStatuses = new Set<RequestStatus>([\n RequestStatus.COMPLETED,\n RequestStatus.UNFULFILLED,\n RequestStatus.DECLINED,\n RequestStatus.FAILED,\n RequestStatus.EXPIRED,\n RequestStatus.CANCELLED\n]);\n\nexport function isTerminalRequestStatus(status: RequestStatus): boolean {\n return terminalRequestStatuses.has(status);\n}\n\nexport function isOpenRequestStatus(status: RequestStatus): boolean {\n return !isTerminalRequestStatus(status);\n}\n\nconst inboxBucketByRequestStatus = {\n [RequestStatus.RECEIVED]: InboxBucket.ACTIVE,\n [RequestStatus.CLASSIFIED]: InboxBucket.ACTIVE,\n [RequestStatus.NEEDS_CLARIFICATION]: InboxBucket.ACTIVE,\n [RequestStatus.POLICY_CHECKED]: InboxBucket.ACTIVE,\n [RequestStatus.PROPOSAL_READY]: InboxBucket.ATTENTION,\n [RequestStatus.WAITING_FOR_REQUESTER]: InboxBucket.ACTIVE,\n [RequestStatus.WAITING_FOR_OWNER]: InboxBucket.ATTENTION,\n [RequestStatus.WAITING_FOR_APPROVAL]: InboxBucket.ATTENTION,\n [RequestStatus.APPROVED]: InboxBucket.ACTIVE,\n [RequestStatus.EXECUTING]: InboxBucket.ACTIVE,\n [RequestStatus.COMPLETED]: InboxBucket.DONE,\n [RequestStatus.UNFULFILLED]: InboxBucket.DONE,\n [RequestStatus.DECLINED]: InboxBucket.DONE,\n [RequestStatus.FAILED]: InboxBucket.ATTENTION,\n [RequestStatus.EXPIRED]: InboxBucket.DONE,\n [RequestStatus.CANCELLED]: InboxBucket.DONE\n} satisfies Record<RequestStatus, Exclude<InboxBucket, InboxBucket.ALL>>;\n\nconst inboxOwnerActionByRequestStatus: Partial<Record<RequestStatus, InboxOwnerAction>> = {\n [RequestStatus.WAITING_FOR_OWNER]: InboxOwnerAction.RESPOND,\n [RequestStatus.PROPOSAL_READY]: InboxOwnerAction.REVIEW_PROPOSAL,\n [RequestStatus.WAITING_FOR_APPROVAL]: InboxOwnerAction.REVIEW_APPROVAL,\n [RequestStatus.FAILED]: InboxOwnerAction.REVIEW_FAILURE\n};\n\nexport function inboxBucketForRequestStatus(\n status: RequestStatus\n): Exclude<InboxBucket, InboxBucket.ALL> {\n return inboxBucketByRequestStatus[status];\n}\n\nexport function inboxOwnerActionForRequestStatus(status: RequestStatus): InboxOwnerAction | null {\n return inboxOwnerActionByRequestStatus[status] ?? null;\n}\n\nexport function requestStatusesForInboxBucket(bucket: InboxBucket): RequestStatus[] {\n if (bucket === InboxBucket.ALL) {\n return Object.values(RequestStatus);\n }\n\n return Object.values(RequestStatus).filter(\n (status) => inboxBucketByRequestStatus[status] === bucket\n );\n}\n","import { z } from \"zod\";\n\nexport const maxAppDefinitionFileBytes = 2 * 1024 * 1024;\nexport const maxAppDefinitionRequestBytes = maxAppDefinitionFileBytes + 64 * 1024;\n\nexport enum AppSubmissionViewStatus {\n DRAFT = \"DRAFT\",\n SUBMITTED = \"SUBMITTED\",\n IN_REVIEW = \"IN_REVIEW\",\n CHANGES_REQUESTED = \"CHANGES_REQUESTED\",\n APPROVED = \"APPROVED\",\n REJECTED = \"REJECTED\",\n PUBLISHED = \"PUBLISHED\",\n WITHDRAWN = \"WITHDRAWN\",\n SUSPENDED = \"SUSPENDED\"\n}\n\nexport enum AppBuilderProjectViewStatus {\n ACTIVE = \"ACTIVE\",\n ARCHIVED = \"ARCHIVED\"\n}\n\nexport enum AppBuilderProjectSourceType {\n GUIDED = \"GUIDED\",\n IMPORTED_DEFINITION = \"IMPORTED_DEFINITION\"\n}\n\nexport enum BuilderProfileViewStatus {\n ACTIVE = \"ACTIVE\",\n SUSPENDED = \"SUSPENDED\"\n}\n\nexport enum AppTestRunViewStatus {\n QUEUED = \"QUEUED\",\n RUNNING = \"RUNNING\",\n SUCCEEDED = \"SUCCEEDED\",\n FAILED = \"FAILED\",\n CANCELLED = \"CANCELLED\"\n}\n\nexport enum AppBuilderAudience {\n ONLY_ME = \"ONLY_ME\",\n SPECIFIC_PEOPLE = \"SPECIFIC_PEOPLE\",\n PUBLIC = \"PUBLIC\"\n}\n\nexport enum AppBuilderLifecycleState {\n DRAFT = \"DRAFT\",\n NEEDS_TEST = \"NEEDS_TEST\",\n READY_TO_RELEASE = \"READY_TO_RELEASE\",\n RELEASED = \"RELEASED\",\n IN_REVIEW = \"IN_REVIEW\",\n CHANGES_REQUESTED = \"CHANGES_REQUESTED\",\n LIVE = \"LIVE\",\n SUSPENDED = \"SUSPENDED\",\n RETIRED = \"RETIRED\"\n}\n\nexport enum AppBuilderCandidateTestStatus {\n NOT_RUN = \"NOT_RUN\",\n PASSED = \"PASSED\",\n FAILED = \"FAILED\"\n}\n\nconst appSubmissionStatusSchema = z.enum(AppSubmissionViewStatus);\nconst appDefinitionSnapshotSchema = z.record(z.string(), z.unknown());\nconst appManifestSnapshotSchema = z.record(z.string(), z.unknown());\nconst appBuilderProjectSourceSchema = z.record(z.string(), z.unknown());\n\nexport const appDevelopmentCompilationIssueViewSchema = z.object({\n code: z.string(),\n message: z.string(),\n path: z.string(),\n section: z.string().nullable()\n});\n\nexport type AppDevelopmentCompilationIssueView = z.infer<\n typeof appDevelopmentCompilationIssueViewSchema\n>;\n\nconst appBuilderCandidateViewSchema = z.object({\n id: z.string(),\n testStatus: z.enum(AppBuilderCandidateTestStatus),\n testedAt: z.string().datetime({ offset: true }).nullable(),\n version: z.string()\n});\n\nconst appBuilderReleaseViewSchema = z.object({\n id: z.string(),\n publishedAt: z.string().datetime({ offset: true }),\n version: z.string()\n});\n\nconst appBuilderReleaseHistoryViewSchema = appBuilderReleaseViewSchema.extend({\n isCurrent: z.boolean()\n});\n\nconst appBuilderSubmissionSummaryViewSchema = z.object({\n id: z.string(),\n reviewNotes: z.string().nullable(),\n status: appSubmissionStatusSchema,\n updatedAt: z.string().datetime({ offset: true }),\n version: z.string(),\n versionId: z.string()\n});\n\nexport const appBuilderLifecycleViewSchema = z.object({\n actions: z.object({\n canDeleteDraft: z.boolean(),\n canGrantAccess: z.boolean(),\n canManageAccess: z.boolean(),\n canReleasePrivate: z.boolean(),\n canRetire: z.boolean(),\n canSubmitForReview: z.boolean()\n }),\n activeGrantCount: z.number().int().nonnegative(),\n appSlug: z.string().nullable(),\n audience: z.enum(AppBuilderAudience),\n candidate: appBuilderCandidateViewSchema.nullable(),\n hasUnreleasedChanges: z.boolean(),\n latestRelease: appBuilderReleaseViewSchema.nullable(),\n productionInstallCount: z.number().int().nonnegative(),\n releaseHistory: z.array(appBuilderReleaseHistoryViewSchema),\n state: z.enum(AppBuilderLifecycleState),\n submission: appBuilderSubmissionSummaryViewSchema.nullable(),\n submissionHistory: z.array(appBuilderSubmissionSummaryViewSchema)\n});\n\nexport type AppBuilderLifecycleView = z.infer<typeof appBuilderLifecycleViewSchema>;\n\nconst appBuilderProjectViewBase = {\n appId: z.string(),\n compiledDefinitionHash: z.string().nullable(),\n createdAt: z.string().datetime({ offset: true }),\n id: z.string(),\n iconUrl: z.string().url().nullable(),\n lifecycle: appBuilderLifecycleViewSchema,\n status: z.enum(AppBuilderProjectViewStatus),\n updatedAt: z.string().datetime({ offset: true })\n} as const;\n\nexport const appBuilderProjectViewSchema = z.discriminatedUnion(\"sourceType\", [\n z.object({\n ...appBuilderProjectViewBase,\n activeSection: z.string(),\n source: appBuilderProjectSourceSchema,\n sourceType: z.literal(AppBuilderProjectSourceType.GUIDED),\n sourceVersion: z.string(),\n templateId: z.string()\n }),\n z.object({\n ...appBuilderProjectViewBase,\n activeSection: z.null(),\n source: appBuilderProjectSourceSchema,\n sourceType: z.literal(AppBuilderProjectSourceType.IMPORTED_DEFINITION),\n sourceVersion: z.string(),\n templateId: z.null()\n })\n]);\n\nexport type AppBuilderProjectView = z.infer<typeof appBuilderProjectViewSchema>;\n\nexport const appDevelopmentCompilationViewSchema = z.discriminatedUnion(\"ok\", [\n z.object({\n definition: appDefinitionSnapshotSchema,\n issues: z.tuple([]),\n ok: z.literal(true)\n }),\n z.object({\n issues: z.array(appDevelopmentCompilationIssueViewSchema),\n ok: z.literal(false)\n })\n]);\n\nexport type AppDevelopmentCompilationView = z.infer<typeof appDevelopmentCompilationViewSchema>;\n\nexport const appDevelopmentCandidateViewSchema = z.object({\n appId: z.string(),\n appVersion: z.string(),\n appVersionId: z.string(),\n manifest: appManifestSnapshotSchema\n});\n\nexport type AppDevelopmentCandidateView = z.infer<typeof appDevelopmentCandidateViewSchema>;\n\nexport const testAppDevelopmentCandidateInputSchema = z.strictObject({\n appVersionId: z.string().trim().min(1)\n});\n\nexport type TestAppDevelopmentCandidateInput = z.infer<\n typeof testAppDevelopmentCandidateInputSchema\n>;\n\nexport const appDevelopmentTestRunViewSchema = z.object({\n appId: z.string(),\n appVersion: z.string(),\n appVersionId: z.string(),\n checkedAt: z.string().datetime({ offset: true }).nullable(),\n errorCode: z.string().nullable(),\n id: z.string(),\n installationId: z.string(),\n manifest: appManifestSnapshotSchema,\n ok: z.boolean(),\n runtimeStatus: z.enum([\"HEALTHY\", \"DEGRADED\", \"UNHEALTHY\"]).nullable(),\n status: z.enum(AppTestRunViewStatus),\n traceId: z.string()\n});\n\nexport type AppDevelopmentTestRunView = z.infer<typeof appDevelopmentTestRunViewSchema>;\n\nexport const appDevelopmentPreviewInstallationViewSchema = z.object({\n appId: z.string(),\n appVersion: z.string(),\n appVersionId: z.string(),\n installationId: z.string()\n});\n\nexport type AppDevelopmentPreviewInstallationView = z.infer<\n typeof appDevelopmentPreviewInstallationViewSchema\n>;\n\nexport const releaseAppBuilderProjectInputSchema = z.strictObject({\n appVersionId: z.string().trim().min(1)\n});\n\nexport type ReleaseAppBuilderProjectInput = z.infer<typeof releaseAppBuilderProjectInputSchema>;\n\nexport const grantAppBuilderAccessInputSchema = z.strictObject({\n handle: z.string().trim().min(1).max(64)\n});\n\nexport type GrantAppBuilderAccessInput = z.infer<typeof grantAppBuilderAccessInputSchema>;\n\nexport const appBuilderAccessGrantViewSchema = z.object({\n avatarUrl: z.string().url().nullable(),\n createdAt: z.string().datetime({ offset: true }),\n handle: z.string(),\n id: z.string(),\n name: z.string(),\n revokedAt: z.string().datetime({ offset: true }).nullable(),\n status: z.enum([\"ACTIVE\", \"REVOKED\"])\n});\n\nexport type AppBuilderAccessGrantView = z.infer<typeof appBuilderAccessGrantViewSchema>;\n\nexport const builderProfileViewSchema = z.object({\n githubUrl: z.string().url().nullable(),\n handle: z.string(),\n id: z.string(),\n isOfficialTeamMember: z.boolean(),\n isVerified: z.boolean(),\n linkedinUrl: z.string().url().nullable(),\n name: z.string(),\n status: z.enum(BuilderProfileViewStatus),\n supportEmail: z.string().email().nullable(),\n websiteUrl: z.string().url().nullable(),\n xProfileUrl: z.string().url().nullable()\n});\n\nexport type BuilderProfileView = z.infer<typeof builderProfileViewSchema>;\n\nconst optionalProfileUrlSchema = z.string().trim().url().nullable().optional();\n\nexport const updateBuilderProfileSchema = z.strictObject({\n githubUrl: optionalProfileUrlSchema,\n linkedinUrl: optionalProfileUrlSchema,\n supportEmail: z.string().trim().email().nullable().optional(),\n websiteUrl: optionalProfileUrlSchema,\n xProfileUrl: optionalProfileUrlSchema\n});\n\nexport type UpdateBuilderProfileInput = z.infer<typeof updateBuilderProfileSchema>;\n\nexport const updateAppBuilderProjectIconSchema = z.strictObject({\n assetId: z.string().min(1).nullable()\n});\n","import { z } from \"zod\";\nimport { AgentStatus, RequestStatus } from \"@vekil/domain\";\nimport { AppSubmissionViewStatus } from \"./app-development\";\nimport { AuthAdminRole } from \"./auth\";\n\nconst countSchema = z.number().int().nonnegative();\nconst nullableUrlSchema = z.string().url().nullable();\n\nfunction optionalTrimmedString(maxLength: number) {\n return z.preprocess(\n (value) => (typeof value === \"string\" && value.trim() === \"\" ? undefined : value),\n z.string().trim().max(maxLength).optional()\n );\n}\n\nexport enum AdminAppDefinitionStatus {\n DRAFT = \"DRAFT\",\n ACTIVE = \"ACTIVE\",\n SUSPENDED = \"SUSPENDED\",\n ARCHIVED = \"ARCHIVED\"\n}\n\nexport enum AdminAppRuntimeType {\n DECLARATIVE = \"DECLARATIVE\",\n REMOTE = \"REMOTE\"\n}\n\nexport enum AdminAppTrustLevel {\n UNVERIFIED = \"UNVERIFIED\",\n VERIFIED = \"VERIFIED\"\n}\n\nexport enum AdminAppVersionStatus {\n INTERNAL = \"INTERNAL\",\n PUBLISHED = \"PUBLISHED\",\n DEPRECATED = \"DEPRECATED\",\n SUSPENDED = \"SUSPENDED\"\n}\n\nexport enum AdminAppVisibility {\n PRIVATE = \"PRIVATE\",\n PUBLIC = \"PUBLIC\"\n}\n\nexport enum AdminBuilderProfileStatus {\n ACTIVE = \"ACTIVE\",\n SUSPENDED = \"SUSPENDED\"\n}\n\nexport enum AppReviewAction {\n START_REVIEW = \"START_REVIEW\",\n REQUEST_CHANGES = \"REQUEST_CHANGES\",\n APPROVE = \"APPROVE\",\n REJECT = \"REJECT\",\n PUBLISH = \"PUBLISH\"\n}\n\nexport enum AppReviewEventType {\n SUBMITTED = \"SUBMITTED\",\n STATUS_CHANGED = \"STATUS_CHANGED\",\n COMMENTED = \"COMMENTED\",\n CHANGES_REQUESTED = \"CHANGES_REQUESTED\",\n APPROVED = \"APPROVED\",\n REJECTED = \"REJECTED\",\n PUBLISHED = \"PUBLISHED\",\n WITHDRAWN = \"WITHDRAWN\"\n}\n\nexport enum AdminAppModerationAction {\n SUSPEND = \"SUSPEND\",\n RESTORE = \"RESTORE\"\n}\n\nexport enum AdminAppModerationEventType {\n SUSPENDED = \"SUSPENDED\",\n RESTORED = \"RESTORED\"\n}\n\nexport enum AdminAppActivitySource {\n REVIEW = \"REVIEW\",\n MODERATION = \"MODERATION\"\n}\n\nexport const adminDirectoryQuerySchema = z.object({\n cursor: optionalTrimmedString(160),\n limit: z.coerce.number().int().min(1).max(50).default(30),\n query: optionalTrimmedString(80)\n});\n\nexport type AdminDirectoryQuery = z.infer<typeof adminDirectoryQuerySchema>;\n\nexport const adminAppDirectoryQuerySchema = adminDirectoryQuerySchema.extend({\n categoryId: optionalTrimmedString(80)\n});\n\nexport type AdminAppDirectoryQuery = z.infer<typeof adminAppDirectoryQuerySchema>;\n\nexport const adminOverviewViewSchema = z.object({\n apps: z.object({\n installationsLast7Days: countSchema,\n installationsReportingIssues: countSchema,\n productionInstallations: countSchema,\n published: countSchema\n }),\n generatedAt: z.string().datetime({ offset: true }),\n requests: z.object({\n active: countSchema,\n createdLast7Days: countSchema,\n failedLast7Days: countSchema,\n total: countSchema\n }),\n reviews: z.object({\n pending: countSchema\n }),\n users: z.object({\n activeVekils: countSchema,\n joinedLast7Days: countSchema,\n total: countSchema\n })\n});\n\nexport type AdminOverviewView = z.infer<typeof adminOverviewViewSchema>;\n\nconst adminVekilSummarySchema = z.object({\n avatarUrl: nullableUrlSchema,\n displayName: z.string(),\n handle: z.string().nullable(),\n id: z.string(),\n publicVisibility: z.boolean(),\n status: z.enum(AgentStatus)\n});\n\nconst adminBuilderSummarySchema = z.object({\n apps: countSchema,\n status: z.enum(AdminBuilderProfileStatus),\n verified: z.boolean()\n});\n\nconst adminUserCountsSchema = z.object({\n activeSessions: countSchema,\n installedApps: countSchema,\n openRequests: countSchema,\n totalRequests: countSchema\n});\n\nexport const adminUserListItemSchema = z.object({\n adminRoles: z.array(z.enum(AuthAdminRole)),\n builder: adminBuilderSummarySchema.nullable(),\n counts: adminUserCountsSchema,\n createdAt: z.string().datetime({ offset: true }),\n email: z.string().email(),\n id: z.string(),\n updatedAt: z.string().datetime({ offset: true }),\n vekil: adminVekilSummarySchema.nullable()\n});\n\nexport type AdminUserListItem = z.infer<typeof adminUserListItemSchema>;\n\nexport const adminUserListViewSchema = z.object({\n items: z.array(adminUserListItemSchema),\n nextCursor: z.string().nullable()\n});\n\nexport type AdminUserListView = z.infer<typeof adminUserListViewSchema>;\n\nexport const adminUserDetailViewSchema = adminUserListItemSchema.extend({\n adminGrants: z.array(\n z.object({\n grantedAt: z.string().datetime({ offset: true }),\n role: z.enum(AuthAdminRole)\n })\n ),\n builder: adminBuilderSummarySchema\n .extend({\n createdAt: z.string().datetime({ offset: true }),\n projects: countSchema,\n submissions: countSchema\n })\n .nullable(),\n requestStatusCounts: z.partialRecord(z.enum(RequestStatus), countSchema),\n signupContext: z\n .object({\n countryCode: z.string().nullable(),\n locale: z.string().nullable(),\n timezone: z.string()\n })\n .nullable(),\n vekil: adminVekilSummarySchema\n .extend({\n bio: z.string().nullable(),\n timezone: z.string(),\n updatedAt: z.string().datetime({ offset: true })\n })\n .nullable()\n});\n\nexport type AdminUserDetailView = z.infer<typeof adminUserDetailViewSchema>;\n\nconst adminAppDeveloperSchema = z.object({\n displayName: z.string(),\n handle: z.string().nullable(),\n userId: z.string(),\n verified: z.boolean()\n});\n\nconst adminAppVersionSummarySchema = z.object({\n createdAt: z.string().datetime({ offset: true }),\n id: z.string(),\n publishedAt: z.string().datetime({ offset: true }).nullable(),\n runtimeType: z.enum(AdminAppRuntimeType),\n status: z.enum(AdminAppVersionStatus),\n version: z.string()\n});\n\nconst adminAppCountsSchema = z.object({\n installationsReportingIssues: countSchema,\n productionInstallations: countSchema,\n submissions: countSchema,\n versions: countSchema\n});\n\nexport const adminAppListItemSchema = z.object({\n categoryId: z.string(),\n counts: adminAppCountsSchema,\n createdAt: z.string().datetime({ offset: true }),\n developer: adminAppDeveloperSchema,\n iconType: z.string(),\n iconValue: z.string(),\n id: z.string(),\n latestVersion: adminAppVersionSummarySchema.nullable(),\n name: z.string(),\n officialBadge: z.boolean(),\n shortDescription: z.string(),\n slug: z.string(),\n status: z.enum(AdminAppDefinitionStatus),\n trustLevel: z.enum(AdminAppTrustLevel),\n updatedAt: z.string().datetime({ offset: true }),\n visibility: z.enum(AdminAppVisibility)\n});\n\nexport type AdminAppListItem = z.infer<typeof adminAppListItemSchema>;\n\nexport const adminAppListViewSchema = z.object({\n items: z.array(adminAppListItemSchema),\n nextCursor: z.string().nullable()\n});\n\nexport type AdminAppListView = z.infer<typeof adminAppListViewSchema>;\n\nexport const appReviewSubmissionViewSchema = z.object({\n appId: z.string(),\n builder: z.object({\n displayName: z.string(),\n handle: z.string(),\n id: z.string(),\n verified: z.boolean()\n }),\n createdAt: z.string().datetime({ offset: true }),\n definition: z.record(z.string(), z.unknown()),\n events: z.array(\n z.object({\n createdAt: z.string().datetime({ offset: true }),\n eventType: z.enum(AppReviewEventType),\n fromStatus: z.enum(AppSubmissionViewStatus).nullable(),\n id: z.string(),\n notes: z.string().nullable(),\n role: z.enum(AuthAdminRole).nullable(),\n toStatus: z.enum(AppSubmissionViewStatus).nullable()\n })\n ),\n id: z.string(),\n reviewNotes: z.string().nullable(),\n status: z.enum(AppSubmissionViewStatus),\n submittedAt: z.string().datetime({ offset: true }).nullable(),\n submittedVersionId: z.string().nullable(),\n updatedAt: z.string().datetime({ offset: true })\n});\n\nexport type AppReviewSubmissionView = z.infer<typeof appReviewSubmissionViewSchema>;\n\nexport const appReviewActionInputSchema = z.strictObject({\n action: z.enum(AppReviewAction),\n notes: z.string().trim().max(4_000).optional()\n});\n\nexport type AppReviewActionInput = z.infer<typeof appReviewActionInputSchema>;\n\nexport const adminAppModerationInputSchema = z.discriminatedUnion(\"action\", [\n z.strictObject({\n action: z.literal(AdminAppModerationAction.SUSPEND),\n reason: z.string().trim().min(10).max(1_000)\n }),\n z.strictObject({\n action: z.literal(AdminAppModerationAction.RESTORE),\n reason: z.string().trim().max(1_000).optional()\n })\n]);\n\nexport type AdminAppModerationInput = z.infer<typeof adminAppModerationInputSchema>;\n\nconst adminAppActivityActorSchema = z.object({\n displayName: z.string(),\n role: z.enum(AuthAdminRole)\n});\n\nexport const adminAppActivityItemSchema = z.discriminatedUnion(\"source\", [\n z.object({\n actor: adminAppActivityActorSchema.nullable(),\n createdAt: z.string().datetime({ offset: true }),\n eventType: z.enum(AppReviewEventType),\n fromStatus: z.enum(AppSubmissionViewStatus).nullable(),\n id: z.string(),\n notes: z.string().nullable(),\n source: z.literal(AdminAppActivitySource.REVIEW),\n submissionId: z.string(),\n toStatus: z.enum(AppSubmissionViewStatus).nullable()\n }),\n z.object({\n actor: adminAppActivityActorSchema,\n createdAt: z.string().datetime({ offset: true }),\n eventType: z.enum(AdminAppModerationEventType),\n fromStatus: z.enum(AdminAppDefinitionStatus),\n id: z.string(),\n notes: z.string().nullable(),\n source: z.literal(AdminAppActivitySource.MODERATION),\n submissionId: z.null(),\n toStatus: z.enum(AdminAppDefinitionStatus)\n })\n]);\n\nexport type AdminAppActivityItem = z.infer<typeof adminAppActivityItemSchema>;\n\nexport const adminAppDetailViewSchema = adminAppListItemSchema.extend({\n activity: z.array(adminAppActivityItemSchema),\n longDescription: z.string(),\n privacyPolicyUrl: nullableUrlSchema,\n submissions: z.array(\n z.object({\n id: z.string(),\n status: z.enum(AppSubmissionViewStatus),\n submittedAt: z.string().datetime({ offset: true }).nullable(),\n updatedAt: z.string().datetime({ offset: true })\n })\n ),\n termsUrl: nullableUrlSchema,\n versions: z.array(adminAppVersionSummarySchema),\n websiteUrl: nullableUrlSchema\n});\n\nexport type AdminAppDetailView = z.infer<typeof adminAppDetailViewSchema>;\n","import { z } from \"zod\";\n\nexport enum HealthDependencyStatus {\n AVAILABLE = \"AVAILABLE\",\n UNAVAILABLE = \"UNAVAILABLE\"\n}\n\nexport enum ServiceReadinessStatus {\n NOT_READY = \"NOT_READY\",\n READY = \"READY\"\n}\n\nexport const livenessViewSchema = z.object({\n ok: z.literal(true)\n});\n\nexport type LivenessView = z.infer<typeof livenessViewSchema>;\n\nexport const readinessViewSchema = z.object({\n dependencies: z.object({\n database: z.enum(HealthDependencyStatus),\n managedAi: z.enum(HealthDependencyStatus),\n redis: z.enum(HealthDependencyStatus)\n }),\n status: z.enum(ServiceReadinessStatus)\n});\n\nexport type ReadinessView = z.infer<typeof readinessViewSchema>;\n","import { z } from \"zod\";\n\nexport enum UploadAssetKind {\n VEKIL_AVATAR = \"VEKIL_AVATAR\",\n APP_ICON = \"APP_ICON\"\n}\n\nexport enum UploadAssetViewStatus {\n PENDING = \"PENDING\",\n READY = \"READY\",\n FAILED = \"FAILED\",\n DELETED = \"DELETED\"\n}\n\nexport const createUploadAssetSchema = z.strictObject({\n fileName: z.string().trim().min(1).max(180),\n kind: z.enum(UploadAssetKind),\n mimeType: z.enum([\"image/jpeg\", \"image/png\", \"image/webp\"]),\n sizeBytes: z\n .number()\n .int()\n .min(1)\n .max(5 * 1024 * 1024)\n});\n\nexport type CreateUploadAssetInput = z.infer<typeof createUploadAssetSchema>;\n\nexport const uploadAssetViewSchema = z.object({\n id: z.string(),\n kind: z.enum(UploadAssetKind),\n mimeType: z.string(),\n publicUrl: z.string().url().nullable(),\n sizeBytes: z.number().int(),\n status: z.enum(UploadAssetViewStatus)\n});\n\nexport type UploadAssetView = z.infer<typeof uploadAssetViewSchema>;\n\nexport const preparedUploadAssetSchema = z.object({\n asset: uploadAssetViewSchema,\n upload: z.object({\n expiresAt: z.string().datetime({ offset: true }),\n headers: z.record(z.string(), z.string()),\n method: z.literal(\"PUT\"),\n url: z.string().url()\n })\n});\n\nexport type PreparedUploadAsset = z.infer<typeof preparedUploadAssetSchema>;\n","import { appContextScopes, forbiddenAppContextScopes } from \"@vekil/app-context\";\nimport { AppStatus } from \"@vekil/domain\";\nimport { z } from \"zod\";\n\nconst appStatusValues = [\n AppStatus.AVAILABLE,\n AppStatus.ACTION_REQUIRED,\n AppStatus.NEEDS_CONFIGURATION,\n AppStatus.READY,\n AppStatus.PAUSED,\n AppStatus.DEGRADED,\n AppStatus.UNHEALTHY,\n AppStatus.NEEDS_RECONNECT,\n AppStatus.SUSPENDED,\n AppStatus.DEPRECATED,\n AppStatus.UNINSTALLED\n] as const;\n\nconst appManifestSnapshotSchema = z.unknown();\n\nconst appInstallationLifecycleStatusValues = [\n \"INSTALLED\",\n \"SUSPENDED\",\n \"DEPRECATED\",\n \"UNINSTALLED\"\n] as const;\n\nconst appConnectionStatusValues = [\n \"NOT_REQUIRED\",\n \"ACTION_REQUIRED\",\n \"CONNECTED\",\n \"NEEDS_RECONNECT\",\n \"REVOKED\"\n] as const;\n\nconst appConfigurationStatusValues = [\"NOT_REQUIRED\", \"NEEDS_CONFIGURATION\", \"CONFIGURED\"] as const;\n\nconst appEnabledStatusValues = [\"ENABLED\", \"PAUSED\", \"DISABLED\"] as const;\n\nconst appRuntimeReadinessStatusValues = [\"READY\", \"NOT_READY\", \"DEGRADED\", \"UNHEALTHY\"] as const;\n\nconst appHealthStatusValues = [\n \"UNKNOWN\",\n \"HEALTHY\",\n \"DEGRADED\",\n \"UNHEALTHY\",\n \"NEEDS_RECONNECT\"\n] as const;\n\nexport enum AppAvailabilitySource {\n PUBLIC = \"PUBLIC\",\n SHARED = \"SHARED\",\n DEVELOPER = \"DEVELOPER\",\n INSTALLED_ONLY = \"INSTALLED_ONLY\"\n}\n\nexport const appInstallationStateSchema = z.object({\n connectionStatus: z.enum(appConnectionStatusValues),\n configurationStatus: z.enum(appConfigurationStatusValues),\n enabledStatus: z.enum(appEnabledStatusValues),\n healthStatus: z.enum(appHealthStatusValues),\n lifecycleStatus: z.enum(appInstallationLifecycleStatusValues),\n runtimeReadinessStatus: z.enum(appRuntimeReadinessStatusValues)\n});\n\nexport type AppInstallationState = z.infer<typeof appInstallationStateSchema>;\n\nexport const appVersionUpgradeInputSchema = z.object({\n acknowledgeBreakingChanges: z.boolean().default(false)\n});\n\nexport type AppVersionUpgradeInput = z.infer<typeof appVersionUpgradeInputSchema>;\n\nexport const appVersionUpgradeSchema = z.object({\n canUpgrade: z.boolean(),\n compatible: z.boolean(),\n currentVersion: z.string(),\n currentVersionId: z.string(),\n latestVersion: z.string(),\n latestVersionId: z.string(),\n newContextScopes: z.array(z.enum(appContextScopes)),\n reasons: z.array(z.string()),\n removedContextScopes: z.array(z.enum(appContextScopes)),\n requiresAcknowledgement: z.boolean(),\n updateAvailable: z.boolean()\n});\n\nexport type AppVersionUpgrade = z.infer<typeof appVersionUpgradeSchema>;\n\nexport const appContextPermissionSchema = z.object({\n declaration: z.enum([\"DEFAULT\", \"OPTIONAL\"]),\n granted: z.boolean(),\n publicGuestAllowed: z.boolean(),\n scope: z.enum(appContextScopes),\n sensitivity: z.enum([\"STANDARD\", \"SENSITIVE\"])\n});\n\nexport type AppContextPermission = z.infer<typeof appContextPermissionSchema>;\n\nexport const appContextAccessSchema = z.object({\n policyRevision: z.number().int().positive().nullable(),\n prohibitedScopes: z.array(z.enum(forbiddenAppContextScopes)),\n scopes: z.array(appContextPermissionSchema)\n});\n\nexport type AppContextAccess = z.infer<typeof appContextAccessSchema>;\n\nexport const appContextPermissionMutationSchema = z.object({\n granted: z.boolean()\n});\n\nexport type AppContextPermissionMutation = z.infer<typeof appContextPermissionMutationSchema>;\n\nexport const appInstallationViewSchema = z.object({\n actions: z.array(z.string()),\n availabilitySource: z.enum(AppAvailabilitySource),\n appId: z.string(),\n appSlug: z.string(),\n capabilities: z.array(z.string()),\n contextAccess: appContextAccessSchema,\n currentVersion: z.string().nullable(),\n accountLabel: z.string().nullable(),\n grantedPermissions: z.array(z.string()),\n id: z.string(),\n installation: appInstallationStateSchema.nullable(),\n isRuntimeReady: z.boolean(),\n lastErrorAt: z.string().datetime({ offset: true }).nullable(),\n lastSuccessfulSyncAt: z.string().datetime({ offset: true }).nullable(),\n latestVersion: z.string(),\n manifest: appManifestSnapshotSchema,\n name: z.string(),\n needsAttention: z.boolean(),\n provider: z.string(),\n policies: z.record(z.string(), z.unknown()),\n requiredPermissions: z.array(z.string()),\n settings: z.record(z.string(), z.unknown()),\n status: z.enum(appStatusValues),\n versionUpgrade: appVersionUpgradeSchema.nullable()\n});\n\nexport type AppInstallationView = z.infer<typeof appInstallationViewSchema>;\n\nexport const appInstallationResponseSchema = z.object({\n app: appInstallationViewSchema\n});\n\nexport type AppInstallationResponse = z.infer<typeof appInstallationResponseSchema>;\n\nexport enum AppConnectionStartStatus {\n ACTION_REQUIRED = \"ACTION_REQUIRED\",\n CONNECTED = \"CONNECTED\",\n FAILED = \"FAILED\"\n}\n\nexport const appConnectionStartResponseSchema = z.object({\n redirectUrl: z.string().url(),\n status: z.enum(AppConnectionStartStatus)\n});\n\nexport type AppConnectionStartResponse = z.infer<typeof appConnectionStartResponseSchema>;\n\nexport const appSettingsOptionSchema = z.object({\n label: z.string(),\n value: z.union([z.string(), z.number(), z.boolean()])\n});\n\nexport type AppSettingsOption = z.infer<typeof appSettingsOptionSchema>;\n\nexport const appSettingsOptionsResponseSchema = z.object({\n options: z.array(appSettingsOptionSchema)\n});\n\nexport type AppSettingsOptionsResponse = z.infer<typeof appSettingsOptionsResponseSchema>;\n","import { z } from \"zod\";\n\nexport enum BubbleType {\n APP_MESSAGE = \"APP_MESSAGE\",\n SYSTEM_MESSAGE = \"SYSTEM_MESSAGE\",\n REQUEST_SUMMARY = \"REQUEST_SUMMARY\",\n APPROVAL_PROMPT = \"APPROVAL_PROMPT\",\n ERROR_MESSAGE = \"ERROR_MESSAGE\"\n}\n\nexport enum BubbleVariant {\n DEFAULT = \"DEFAULT\",\n COMPACT = \"COMPACT\",\n SUCCESS = \"SUCCESS\",\n WARNING = \"WARNING\",\n DANGER = \"DANGER\",\n INFO = \"INFO\",\n MUTED = \"MUTED\"\n}\n\nexport enum BubbleMediaType {\n FILE = \"FILE\",\n IMAGE = \"IMAGE\",\n VIDEO = \"VIDEO\"\n}\n\nexport enum BubbleContentVisibility {\n OWNER_ONLY = \"OWNER_ONLY\",\n PUBLIC_REQUESTER = \"PUBLIC_REQUESTER\"\n}\n\nexport enum BubbleSensitivity {\n PUBLIC = \"PUBLIC\",\n INTERNAL = \"INTERNAL\",\n CONFIDENTIAL = \"CONFIDENTIAL\",\n RESTRICTED = \"RESTRICTED\"\n}\n\nexport enum BubbleSourceType {\n CORE = \"CORE\",\n APP = \"APP\"\n}\n\nexport enum BubbleAssetDeliveryAudience {\n OWNER = \"OWNER\",\n PUBLIC_REQUESTER = \"PUBLIC_REQUESTER\"\n}\n\nexport enum BubbleBadgeTone {\n NEUTRAL = \"NEUTRAL\",\n INFO = \"INFO\",\n SUCCESS = \"SUCCESS\",\n WARNING = \"WARNING\",\n DANGER = \"DANGER\"\n}\n\nexport enum BubbleActionType {\n EXTERNAL_URL = \"EXTERNAL_URL\",\n OPEN_VIEW = \"OPEN_VIEW\",\n SELECT_OPTION = \"SELECT_OPTION\",\n APP_ACTION = \"APP_ACTION\",\n APPROVE_REQUEST = \"APPROVE_REQUEST\",\n DECLINE_REQUEST = \"DECLINE_REQUEST\",\n COPY = \"COPY\"\n}\n\nexport enum BubbleActionRiskLevel {\n LOW = \"LOW\",\n MEDIUM = \"MEDIUM\",\n HIGH = \"HIGH\",\n CRITICAL = \"CRITICAL\"\n}\n\nexport enum BubbleActionStatus {\n AVAILABLE = \"AVAILABLE\",\n INVOKED = \"INVOKED\",\n DISABLED = \"DISABLED\",\n EXPIRED = \"EXPIRED\"\n}\n\nexport enum BubbleActionInvocationStatus {\n PENDING = \"PENDING\",\n SUCCEEDED = \"SUCCEEDED\",\n FAILED = \"FAILED\",\n DENIED = \"DENIED\"\n}\n\nexport enum BubbleValidationStatus {\n VALID = \"VALID\",\n INVALID_OUTPUT = \"INVALID_OUTPUT\",\n REJECTED = \"REJECTED\"\n}\n\nexport const bubbleSchemaVersion = 2;\n\nconst actionKeySchema = z\n .string()\n .min(1)\n .max(80)\n .regex(/^[a-z0-9][a-z0-9._:-]*$/);\n\nconst bubbleArtifactResultKeySchema = z\n .string()\n .min(1)\n .max(80)\n .regex(/^[a-z0-9][a-z0-9._:-]*$/);\n\nexport const safeBubbleExternalUrlSchema = z\n .string()\n .min(1)\n .max(2048)\n .refine(isSafeHttpsUrl, \"URL must be an HTTPS URL without embedded credentials\");\n\nexport const safeBubbleInternalHrefSchema = z\n .string()\n .min(1)\n .max(400)\n .refine(isSafeInternalHref, \"href must be a safe absolute internal path\");\n\nexport const safeBubbleAssetDeliveryUrlSchema = safeBubbleInternalHrefSchema.refine(\n (value) => value.startsWith(\"/api/bubble-assets/\"),\n \"asset delivery URL must be issued by the Bubble asset broker\"\n);\n\nfunction isSafeHttpsUrl(value: string): boolean {\n try {\n const url = new URL(value);\n\n return url.protocol === \"https:\" && !url.username && !url.password;\n } catch {\n return false;\n }\n}\n\nfunction isSafeInternalHref(value: string): boolean {\n if (\n !value.startsWith(\"/\") ||\n value.startsWith(\"//\") ||\n value.includes(\"\\\\\") ||\n /\\s/.test(value) ||\n Array.from(value).some((character) => {\n const codePoint = character.codePointAt(0) ?? 0;\n\n return codePoint <= 31 || codePoint === 127;\n })\n ) {\n return false;\n }\n\n try {\n const base = new URL(\"https://vekil.invalid\");\n const url = new URL(value, base);\n\n return url.origin === base.origin && `${url.pathname}${url.search}${url.hash}` === value;\n } catch {\n return false;\n }\n}\n\nconst bubbleAudienceSchema = z.enum([\"OWNER\", \"PUBLIC_REQUESTER\"]);\nconst bubbleOriginSchema = z.enum([\n \"agent-to-agent\",\n \"agent-to-external-fallback\",\n \"public-authenticated\",\n \"public-guest\",\n \"public-verified-external\",\n \"system-generated\"\n]);\n\nconst allowedAudiencesSchema = z\n .array(bubbleAudienceSchema)\n .min(1)\n .max(8)\n .refine((values) => new Set(values).size === values.length, \"audiences must be unique\");\n\nconst allowedOriginsSchema = z\n .array(bubbleOriginSchema)\n .min(1)\n .max(8)\n .refine((values) => new Set(values).size === values.length, \"origins must be unique\");\n\nconst contentAllowedOriginsSchema = z\n .array(bubbleOriginSchema)\n .max(8)\n .refine((values) => new Set(values).size === values.length, \"origins must be unique\")\n .default([]);\n\nexport const bubbleImageAllowedMimeTypes = [\n \"image/gif\",\n \"image/jpeg\",\n \"image/png\",\n \"image/webp\"\n] as const;\nexport const bubbleImageMaxSizeBytes = 10 * 1024 * 1024;\n\nconst bubbleImageMimeTypeSchema = z.enum(bubbleImageAllowedMimeTypes);\n\nconst bubbleMediaCommonShape = {\n alt: z.string().min(1).max(240),\n duration_seconds: z.number().positive().max(86_400).optional(),\n file_name: z.string().min(1).max(180).optional(),\n height: z.number().int().positive().max(4096).optional(),\n mime_type: z.string().min(1).max(120).optional(),\n size_bytes: z.number().int().nonnegative().max(5_368_709_120).optional(),\n title: z.string().min(1).max(180).optional(),\n type: z.enum([BubbleMediaType.FILE, BubbleMediaType.IMAGE, BubbleMediaType.VIDEO]),\n width: z.number().int().positive().max(4096).optional()\n};\n\nconst bubbleAssetReferenceSchema = z\n .string()\n .min(1)\n .max(180)\n .regex(/^[A-Za-z0-9][A-Za-z0-9._:-]*$/);\n\nexport const bubbleMediaSchema = z\n .object({\n ...bubbleMediaCommonShape,\n asset_ref: bubbleAssetReferenceSchema,\n thumbnail_asset_ref: bubbleAssetReferenceSchema.optional(),\n thumbnail_mime_type: z.string().min(1).max(120).optional(),\n thumbnail_size_bytes: z.number().int().positive().max(bubbleImageMaxSizeBytes).optional()\n })\n .strict()\n .superRefine((media, context) => {\n if (media.type === BubbleMediaType.IMAGE) {\n addRequiredImageMetadataIssues(\n context,\n {\n mime_type: media.mime_type,\n size_bytes: media.size_bytes\n },\n \"\"\n );\n }\n\n const hasThumbnailMetadata =\n media.thumbnail_mime_type !== undefined || media.thumbnail_size_bytes !== undefined;\n\n if (media.thumbnail_asset_ref) {\n addRequiredImageMetadataIssues(\n context,\n {\n mime_type: media.thumbnail_mime_type,\n size_bytes: media.thumbnail_size_bytes\n },\n \"thumbnail_\"\n );\n } else if (hasThumbnailMetadata) {\n context.addIssue({\n code: \"custom\",\n message: \"thumbnail_asset_ref is required for thumbnail metadata\",\n path: [\"thumbnail_asset_ref\"]\n });\n }\n });\n\nexport type BubbleMedia = z.infer<typeof bubbleMediaSchema>;\n\nfunction addRequiredImageMetadataIssues(\n context: z.RefinementCtx,\n metadata: {\n mime_type?: string;\n size_bytes?: number;\n },\n fieldPrefix: \"\" | \"thumbnail_\"\n): void {\n if (!metadata.mime_type) {\n context.addIssue({\n code: \"custom\",\n message: \"image MIME type is required\",\n path: [`${fieldPrefix}mime_type`]\n });\n } else if (\n !bubbleImageMimeTypeSchema.safeParse(metadata.mime_type.trim().toLowerCase()).success\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"image MIME type is not allowed\",\n path: [`${fieldPrefix}mime_type`]\n });\n }\n\n if (metadata.size_bytes === undefined) {\n context.addIssue({\n code: \"custom\",\n message: \"image size is required\",\n path: [`${fieldPrefix}size_bytes`]\n });\n } else if (metadata.size_bytes <= 0 || metadata.size_bytes > bubbleImageMaxSizeBytes) {\n context.addIssue({\n code: \"custom\",\n message: \"image size is not allowed\",\n path: [`${fieldPrefix}size_bytes`]\n });\n }\n}\n\nexport const bubbleMediaViewSchema = z\n .object({\n ...bubbleMediaCommonShape,\n asset_id: bubbleAssetReferenceSchema,\n thumbnail_url: safeBubbleAssetDeliveryUrlSchema.optional(),\n url: safeBubbleAssetDeliveryUrlSchema\n })\n .strict()\n .superRefine((media, context) => {\n if (media.type === BubbleMediaType.IMAGE) {\n addRequiredImageMetadataIssues(\n context,\n {\n mime_type: media.mime_type,\n size_bytes: media.size_bytes\n },\n \"\"\n );\n }\n });\n\nexport type BubbleMediaView = z.infer<typeof bubbleMediaViewSchema>;\n\nexport const bubbleAssetDeliveryGrantSchema = z\n .object({\n assetId: bubbleAssetReferenceSchema,\n audience: z.enum([\n BubbleAssetDeliveryAudience.OWNER,\n BubbleAssetDeliveryAudience.PUBLIC_REQUESTER\n ]),\n expiresAt: z.iso.datetime(),\n url: safeBubbleAssetDeliveryUrlSchema\n })\n .strict();\n\nexport type BubbleAssetDeliveryGrant = z.infer<typeof bubbleAssetDeliveryGrantSchema>;\n\nexport const bubbleFactSchema = z.object({\n label: z.string().min(1).max(80),\n value: z.string().min(1).max(240)\n});\n\nexport type BubbleFact = z.infer<typeof bubbleFactSchema>;\n\nexport const bubbleBadgeSchema = z.object({\n label: z.string().min(1).max(60),\n tone: z\n .enum([\n BubbleBadgeTone.NEUTRAL,\n BubbleBadgeTone.INFO,\n BubbleBadgeTone.SUCCESS,\n BubbleBadgeTone.WARNING,\n BubbleBadgeTone.DANGER\n ])\n .default(BubbleBadgeTone.NEUTRAL)\n});\n\nexport type BubbleBadge = z.infer<typeof bubbleBadgeSchema>;\n\nconst bubbleActionCommonShape = {\n action_key: actionKeySchema,\n allowed_audiences: allowedAudiencesSchema,\n allowed_origins: allowedOriginsSchema,\n label: z.string().min(1).max(80),\n max_invocations: z.number().int().min(1).max(100).optional(),\n requires_approval: z.boolean().default(false),\n risk_level: z\n .enum([\n BubbleActionRiskLevel.LOW,\n BubbleActionRiskLevel.MEDIUM,\n BubbleActionRiskLevel.HIGH,\n BubbleActionRiskLevel.CRITICAL\n ])\n .default(BubbleActionRiskLevel.LOW)\n};\n\nconst externalUrlActionSchema = z\n .object({\n ...bubbleActionCommonShape,\n action_type: z.literal(BubbleActionType.EXTERNAL_URL),\n app_action_id: z.never().optional(),\n href: safeBubbleExternalUrlSchema,\n payload: z.never().optional()\n })\n .strict();\n\nconst openViewActionSchema = z\n .object({\n ...bubbleActionCommonShape,\n action_type: z.literal(BubbleActionType.OPEN_VIEW),\n app_action_id: z.never().optional(),\n href: safeBubbleInternalHrefSchema,\n payload: z.never().optional()\n })\n .strict();\n\nconst selectOptionActionSchema = z\n .object({\n ...bubbleActionCommonShape,\n action_type: z.literal(BubbleActionType.SELECT_OPTION),\n artifact_result_key: bubbleArtifactResultKeySchema,\n app_action_id: z.never().optional(),\n href: z.never().optional(),\n max_invocations: z.literal(1).default(1),\n option_group_key: actionKeySchema,\n payload: z.never().optional(),\n requires_approval: z.literal(false).default(false),\n risk_level: z.literal(BubbleActionRiskLevel.LOW).default(BubbleActionRiskLevel.LOW)\n })\n .strict();\n\nconst appActionSchema = z\n .object({\n ...bubbleActionCommonShape,\n action_type: z.literal(BubbleActionType.APP_ACTION),\n app_action_id: z.string().min(1).max(120),\n href: z.never().optional(),\n payload: z.record(z.string(), z.unknown()).optional()\n })\n .strict();\n\nconst approvalActionSchema = (\n actionType: BubbleActionType.APPROVE_REQUEST | BubbleActionType.DECLINE_REQUEST\n) =>\n z\n .object({\n ...bubbleActionCommonShape,\n action_type: z.literal(actionType),\n approval_id: z.string().min(1).max(120),\n approval_scope_hash: z.string().regex(/^[0-9a-f]{64}$/),\n app_action_id: z.never().optional(),\n href: z.never().optional(),\n payload: z.never().optional()\n })\n .strict();\n\nconst copyActionSchema = z\n .object({\n ...bubbleActionCommonShape,\n action_type: z.literal(BubbleActionType.COPY),\n app_action_id: z.never().optional(),\n href: z.never().optional(),\n payload: z\n .object({\n text: z.string().min(1).max(2000)\n })\n .strict()\n })\n .strict();\n\nexport const bubbleActionDescriptorSchema = z.discriminatedUnion(\"action_type\", [\n externalUrlActionSchema,\n openViewActionSchema,\n selectOptionActionSchema,\n appActionSchema,\n approvalActionSchema(BubbleActionType.APPROVE_REQUEST),\n approvalActionSchema(BubbleActionType.DECLINE_REQUEST),\n copyActionSchema\n]);\n\nexport type BubbleActionDescriptor = z.infer<typeof bubbleActionDescriptorSchema>;\n\nexport const bubbleActionViewSchema = z\n .object({\n ...bubbleActionCommonShape,\n action_type: z.enum([\n BubbleActionType.EXTERNAL_URL,\n BubbleActionType.OPEN_VIEW,\n BubbleActionType.SELECT_OPTION,\n BubbleActionType.APP_ACTION,\n BubbleActionType.APPROVE_REQUEST,\n BubbleActionType.DECLINE_REQUEST,\n BubbleActionType.COPY\n ]),\n app_action_id: z.string().min(1).max(120).optional(),\n approval_id: z.string().min(1).max(120).optional(),\n approval_scope_hash: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .optional(),\n href: z.string().min(1).max(2048).optional(),\n id: z.string().min(1),\n status: z.enum([\n BubbleActionStatus.AVAILABLE,\n BubbleActionStatus.INVOKED,\n BubbleActionStatus.DISABLED,\n BubbleActionStatus.EXPIRED\n ])\n })\n .strict()\n .superRefine((action, context) => {\n if (action.action_type === BubbleActionType.EXTERNAL_URL) {\n addSchemaIssue(context, safeBubbleExternalUrlSchema, action.href, \"href\");\n } else if (action.action_type === BubbleActionType.OPEN_VIEW) {\n addSchemaIssue(context, safeBubbleInternalHrefSchema, action.href, \"href\");\n } else if (action.href !== undefined) {\n context.addIssue({\n code: \"custom\",\n message: \"href is not supported for this action type\",\n path: [\"href\"]\n });\n }\n\n if (action.action_type === BubbleActionType.APP_ACTION && action.app_action_id === undefined) {\n context.addIssue({\n code: \"custom\",\n message: \"app_action_id is required for APP_ACTION\",\n path: [\"app_action_id\"]\n });\n }\n\n if (action.action_type !== BubbleActionType.APP_ACTION && action.app_action_id !== undefined) {\n context.addIssue({\n code: \"custom\",\n message: \"app_action_id is only supported for APP_ACTION\",\n path: [\"app_action_id\"]\n });\n }\n\n const isApprovalAction =\n action.action_type === BubbleActionType.APPROVE_REQUEST ||\n action.action_type === BubbleActionType.DECLINE_REQUEST;\n\n if (\n isApprovalAction &&\n (action.approval_id === undefined || action.approval_scope_hash === undefined)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"approval_id and approval_scope_hash are required for approval actions\",\n path: [\"approval_id\"]\n });\n }\n\n if (\n !isApprovalAction &&\n (action.approval_id !== undefined || action.approval_scope_hash !== undefined)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"approval binding is only supported for approval actions\",\n path: [\"approval_id\"]\n });\n }\n });\n\nfunction addSchemaIssue(\n context: z.RefinementCtx,\n schema: z.ZodType<string>,\n value: string | undefined,\n path: string\n): void {\n const result = schema.safeParse(value);\n\n if (!result.success) {\n context.addIssue({\n code: \"custom\",\n message: result.error.issues[0]?.message ?? `${path} is invalid`,\n path: [path]\n });\n }\n}\n\nexport type BubbleActionView = z.infer<typeof bubbleActionViewSchema>;\n\nexport const bubbleDescriptorSchema = z.object({\n actions: z.array(bubbleActionDescriptorSchema).max(8).default([]),\n allowed_origins: contentAllowedOriginsSchema,\n badges: z.array(bubbleBadgeSchema).max(4).default([]),\n body: z.string().min(1).max(2000).optional(),\n bubble_type: z.enum([\n BubbleType.APP_MESSAGE,\n BubbleType.SYSTEM_MESSAGE,\n BubbleType.REQUEST_SUMMARY,\n BubbleType.APPROVAL_PROMPT,\n BubbleType.ERROR_MESSAGE\n ]),\n facts: z.array(bubbleFactSchema).max(12).default([]),\n footer: z.string().min(1).max(200).optional(),\n media: z.array(bubbleMediaSchema).max(12).default([]),\n metadata: z.record(z.string(), z.unknown()).optional(),\n schema_version: z.literal(bubbleSchemaVersion),\n sensitivity: z\n .enum([\n BubbleSensitivity.PUBLIC,\n BubbleSensitivity.INTERNAL,\n BubbleSensitivity.CONFIDENTIAL,\n BubbleSensitivity.RESTRICTED\n ])\n .default(BubbleSensitivity.INTERNAL),\n title: z.string().min(1).max(120).optional(),\n variant: z\n .enum([\n BubbleVariant.DEFAULT,\n BubbleVariant.COMPACT,\n BubbleVariant.SUCCESS,\n BubbleVariant.WARNING,\n BubbleVariant.DANGER,\n BubbleVariant.INFO,\n BubbleVariant.MUTED\n ])\n .default(BubbleVariant.DEFAULT),\n visibility: z\n .enum([BubbleContentVisibility.OWNER_ONLY, BubbleContentVisibility.PUBLIC_REQUESTER])\n .default(BubbleContentVisibility.OWNER_ONLY)\n});\n\nexport type BubbleDescriptor = z.infer<typeof bubbleDescriptorSchema>;\n\nexport const bubbleProvenanceSchema = z.discriminatedUnion(\"source_type\", [\n z\n .object({\n source_type: z.literal(BubbleSourceType.CORE)\n })\n .strict(),\n z\n .object({\n app_id: z.string().min(1).max(120).optional(),\n app_installation_id: z.string().min(1).optional(),\n app_name: z.string().min(1).max(100).optional(),\n app_version_id: z.string().min(1).optional(),\n source_type: z.literal(BubbleSourceType.APP)\n })\n .strict()\n]);\n\nexport type BubbleProvenance = z.infer<typeof bubbleProvenanceSchema>;\n\nexport const bubbleViewSchema = bubbleDescriptorSchema\n .omit({\n actions: true,\n media: true,\n metadata: true\n })\n .extend({\n actions: z.array(bubbleActionViewSchema).max(8).default([]),\n id: z.string().min(1),\n media: z.array(bubbleMediaViewSchema).max(12).default([]),\n provenance: bubbleProvenanceSchema,\n redacted: z.boolean().default(false)\n })\n .superRefine((bubble, context) => {\n if (bubble.redacted) {\n const hasContent =\n bubble.actions.length > 0 ||\n bubble.allowed_origins.length > 0 ||\n bubble.badges.length > 0 ||\n bubble.body !== undefined ||\n bubble.facts.length > 0 ||\n bubble.footer !== undefined ||\n bubble.media.length > 0 ||\n bubble.title !== undefined;\n\n if (bubble.provenance.source_type !== BubbleSourceType.APP) {\n context.addIssue({\n code: \"custom\",\n message: \"only an App Bubble can use the redacted shell\",\n path: [\"provenance\", \"source_type\"]\n });\n }\n\n if (hasContent) {\n context.addIssue({\n code: \"custom\",\n message: \"a redacted Bubble cannot contain content, media, origins, or actions\",\n path: [\"redacted\"]\n });\n }\n\n if (bubble.visibility !== BubbleContentVisibility.OWNER_ONLY) {\n context.addIssue({\n code: \"custom\",\n message: \"a redacted Bubble must retain OWNER_ONLY visibility\",\n path: [\"visibility\"]\n });\n }\n\n return;\n }\n\n if (bubble.provenance.source_type !== BubbleSourceType.APP) {\n return;\n }\n\n const requiredFields = [\"app_id\", \"app_installation_id\", \"app_name\", \"app_version_id\"] as const;\n\n for (const field of requiredFields) {\n if (!bubble.provenance[field]) {\n context.addIssue({\n code: \"custom\",\n message: `${field} is required for App provenance`,\n path: [\"provenance\", field]\n });\n }\n }\n });\n\nexport type BubbleView = z.infer<typeof bubbleViewSchema>;\n\nexport const messageBubbleViewSchema = z.object({\n bubbles: z.array(bubbleViewSchema).default([])\n});\n\nexport type MessageBubbleView = z.infer<typeof messageBubbleViewSchema>;\n\nexport const invokeMessageActionSchema = z.object({\n idempotencyKey: z.string().min(12).max(120),\n input: z.record(z.string(), z.unknown()).optional()\n});\n\nexport type InvokeMessageActionInput = z.infer<typeof invokeMessageActionSchema>;\n\nexport const messageActionInvocationResponseSchema = z\n .object({\n actionId: z.string().min(1),\n actionType: z.enum([\n BubbleActionType.EXTERNAL_URL,\n BubbleActionType.OPEN_VIEW,\n BubbleActionType.SELECT_OPTION,\n BubbleActionType.APP_ACTION,\n BubbleActionType.APPROVE_REQUEST,\n BubbleActionType.DECLINE_REQUEST,\n BubbleActionType.COPY\n ]),\n href: z.string().min(1).max(2048).optional(),\n invocationId: z.string().min(1),\n requestId: z.string().min(1).nullable(),\n status: z.enum([\n BubbleActionInvocationStatus.PENDING,\n BubbleActionInvocationStatus.SUCCEEDED,\n BubbleActionInvocationStatus.FAILED,\n BubbleActionInvocationStatus.DENIED\n ]),\n text: z.string().max(2000).optional()\n })\n .strict()\n .superRefine((response, context) => {\n const isSuccessful = response.status === BubbleActionInvocationStatus.SUCCEEDED;\n\n if (\n isSuccessful &&\n (response.actionType === BubbleActionType.EXTERNAL_URL ||\n response.actionType === BubbleActionType.OPEN_VIEW) &&\n response.href === undefined\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"href is required for a successful link action\",\n path: [\"href\"]\n });\n }\n\n if (\n isSuccessful &&\n response.actionType === BubbleActionType.COPY &&\n response.text === undefined\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"text is required for a successful COPY action\",\n path: [\"text\"]\n });\n }\n\n if (response.actionType !== BubbleActionType.COPY && response.text !== undefined) {\n context.addIssue({\n code: \"custom\",\n message: \"text is only supported for COPY actions\",\n path: [\"text\"]\n });\n }\n\n if (response.href === undefined) {\n return;\n } else if (response.actionType === BubbleActionType.EXTERNAL_URL) {\n addSchemaIssue(context, safeBubbleExternalUrlSchema, response.href, \"href\");\n } else if (response.actionType === BubbleActionType.OPEN_VIEW) {\n addSchemaIssue(context, safeBubbleInternalHrefSchema, response.href, \"href\");\n } else {\n context.addIssue({\n code: \"custom\",\n message: \"href is not supported for this action type\",\n path: [\"href\"]\n });\n }\n });\n\nexport type MessageActionInvocationResponse = z.infer<typeof messageActionInvocationResponseSchema>;\n","import {\n VekilClarificationStyle,\n VekilCommunicationTone,\n VekilReplyLength,\n VekilUnavailableActionBehavior,\n defaultVekilCommunicationSettings\n} from \"@vekil/domain\";\nimport { z } from \"zod\";\n\nexport const vekilCommunicationSettingsSchema = z.object({\n clarification_style: z.enum([\n VekilClarificationStyle.ONE_AT_A_TIME,\n VekilClarificationStyle.GROUP_RELATED\n ]),\n reply_length: z.enum([VekilReplyLength.CONCISE, VekilReplyLength.BALANCED]),\n tone: z.enum([\n VekilCommunicationTone.NATURAL,\n VekilCommunicationTone.WARM,\n VekilCommunicationTone.PROFESSIONAL,\n VekilCommunicationTone.DIRECT\n ]),\n unavailable_action_behavior: z.enum([\n VekilUnavailableActionBehavior.COLLECT_AND_HAND_OFF,\n VekilUnavailableActionBehavior.EXPLAIN_ONLY\n ]),\n writing_preferences: z.string().trim().max(500).nullable()\n});\n\nexport const defaultVekilCommunicationSettingsResponse = vekilCommunicationSettingsSchema.parse(\n defaultVekilCommunicationSettings\n);\n\nexport type VekilCommunicationSettingsResponse = z.infer<typeof vekilCommunicationSettingsSchema>;\n","import { z } from \"zod\";\n\nexport const apiErrorSchema = z.object({\n error: z.object({\n code: z.string(),\n messageKey: z.string(),\n traceId: z.string().optional(),\n requestId: z.string().optional()\n })\n});\n\nexport type ApiError = z.infer<typeof apiErrorSchema>;\n","import {\n InboxBucket,\n InboxOwnerAction,\n RequestStatus,\n type InboxBucket as InboxBucketType,\n type InboxOwnerAction as InboxOwnerActionType,\n type RequestStatus as RequestStatusType\n} from \"@vekil/domain\";\nimport { z } from \"zod\";\n\nconst inboxBucketValues = [\n InboxBucket.ATTENTION,\n InboxBucket.ACTIVE,\n InboxBucket.DONE,\n InboxBucket.ALL\n] as const;\n\nconst inboxOwnerActionValues = [\n InboxOwnerAction.RESPOND,\n InboxOwnerAction.REVIEW_PROPOSAL,\n InboxOwnerAction.REVIEW_APPROVAL,\n InboxOwnerAction.REVIEW_FAILURE\n] as const;\n\nconst requestStatusValues = [\n RequestStatus.RECEIVED,\n RequestStatus.CLASSIFIED,\n RequestStatus.NEEDS_CLARIFICATION,\n RequestStatus.POLICY_CHECKED,\n RequestStatus.PROPOSAL_READY,\n RequestStatus.WAITING_FOR_REQUESTER,\n RequestStatus.WAITING_FOR_OWNER,\n RequestStatus.WAITING_FOR_APPROVAL,\n RequestStatus.APPROVED,\n RequestStatus.EXECUTING,\n RequestStatus.COMPLETED,\n RequestStatus.UNFULFILLED,\n RequestStatus.DECLINED,\n RequestStatus.FAILED,\n RequestStatus.EXPIRED,\n RequestStatus.CANCELLED\n] as const;\n\nconst optionalTrimmedString = (maximumLength: number) =>\n z.preprocess(\n (value) => (typeof value === \"string\" && value.trim().length === 0 ? undefined : value),\n z.string().trim().min(1).max(maximumLength).optional()\n );\n\nexport const inboxBucketSchema = z.enum(inboxBucketValues);\n\nexport const inboxQuerySchema = z.object({\n bucket: inboxBucketSchema.optional().default(InboxBucket.ATTENTION),\n category_id: optionalTrimmedString(120),\n cursor: optionalTrimmedString(120),\n limit: z.coerce.number().int().min(1).max(50).optional().default(20),\n query: optionalTrimmedString(120),\n status: z.preprocess(\n (value) => (value === \"\" ? undefined : value),\n z.enum(requestStatusValues).optional()\n )\n});\n\nexport type InboxQuery = z.infer<typeof inboxQuerySchema>;\n\nexport const inboxCountsSchema = z.object({\n active: z.number().int().nonnegative(),\n attention: z.number().int().nonnegative(),\n done: z.number().int().nonnegative(),\n total: z.number().int().nonnegative()\n});\n\nexport type InboxCounts = z.infer<typeof inboxCountsSchema>;\n\nexport const inboxCategorySchema = z.object({\n count: z.number().int().positive(),\n id: z.string().min(1)\n});\n\nexport const inboxItemSchema = z.object({\n bucket: inboxBucketSchema.exclude([InboxBucket.ALL]),\n categoryId: z.string().nullable(),\n createdAt: z.string().datetime({ offset: true }),\n id: z.string().min(1),\n lastActivityAt: z.string().datetime({ offset: true }),\n ownerAction: z.enum(inboxOwnerActionValues).nullable(),\n requesterName: z.string().nullable(),\n status: z.enum(requestStatusValues),\n subject: z.string()\n});\n\nexport type InboxItem = Omit<\n z.infer<typeof inboxItemSchema>,\n \"bucket\" | \"ownerAction\" | \"status\"\n> & {\n bucket: Exclude<InboxBucketType, InboxBucket.ALL>;\n ownerAction: InboxOwnerActionType | null;\n status: RequestStatusType;\n};\n\nexport const inboxResponseSchema = z.object({\n bucket: inboxBucketSchema,\n categories: z.array(inboxCategorySchema),\n counts: inboxCountsSchema,\n items: z.array(inboxItemSchema),\n nextCursor: z.string().nullable()\n});\n\nexport type InboxResponse = Omit<z.infer<typeof inboxResponseSchema>, \"bucket\" | \"items\"> & {\n bucket: InboxBucketType;\n items: InboxItem[];\n};\n","import { z } from \"zod\";\nimport { ApprovalRequirement } from \"@vekil/domain\";\n\nexport const requestPolicySchema = z.object({\n unknownRequesterApproval: z.enum([\n ApprovalRequirement.REQUIRED,\n ApprovalRequirement.NOT_REQUIRED\n ]),\n privacy: z.object({\n defaultRedactions: z.array(z.string().min(1)).default([])\n })\n});\n\nexport type RequestPolicyInput = z.infer<typeof requestPolicySchema>;\n","import { z } from \"zod\";\nimport {\n ApprovalAction,\n ApprovalStatus,\n PublicRequestSessionStatus,\n RequestContextResolutionAction,\n RequestNextAction,\n RequestStatus\n} from \"@vekil/domain\";\nimport { bubbleViewSchema } from \"./bubbles\";\nimport { publicVekilSchema } from \"./vekil\";\n\nexport const requesterSchema = z.object({\n name: z.string().min(1).max(80),\n email: z.string().email()\n});\n\nexport const publicRequestRequesterSchema = z.object({\n name: z.string().min(1).max(80).optional(),\n email: z.string().email().optional()\n});\n\nexport const createPublicRequestSchema = z.object({\n message: z.string().min(2).max(2000),\n requester: publicRequestRequesterSchema.optional(),\n idempotencyKey: z.string().min(12).max(120)\n});\n\nexport type CreatePublicRequestInput = z.infer<typeof createPublicRequestSchema>;\n\nexport const continuePublicRequestSchema = z.object({\n contextDecision: z\n .object({\n id: z.string().min(1).max(120),\n resolution: z.enum([\n RequestContextResolutionAction.ACCEPT,\n RequestContextResolutionAction.REJECT\n ])\n })\n .optional(),\n message: z.string().min(1).max(2000),\n idempotencyKey: z.string().min(12).max(120)\n});\n\nexport type ContinuePublicRequestInput = z.infer<typeof continuePublicRequestSchema>;\n\nexport const requestThreadQuerySchema = z.object({\n before_message_id: z.string().min(1).max(120).optional(),\n limit: z.coerce.number().int().min(1).max(50).optional()\n});\n\nexport type RequestThreadQuery = z.infer<typeof requestThreadQuerySchema>;\n\nexport const requestThreadMessageSchema = z.object({\n body: z.string(),\n bubbles: z.array(bubbleViewSchema),\n created_at: z.string().datetime({ offset: true }),\n id: z.string(),\n role: z.enum([\"owner\", \"requester\", \"vekil\"])\n});\n\nexport type RequestThreadMessage = z.infer<typeof requestThreadMessageSchema>;\n\nexport const requestThreadPageSchema = z.object({\n has_older_messages: z.boolean(),\n messages: z.array(requestThreadMessageSchema),\n oldest_message_id: z.string().nullable()\n});\n\nexport type RequestThreadPage = z.infer<typeof requestThreadPageSchema>;\n\nexport const publicConversationThreadMessageSchema = requestThreadMessageSchema.extend({\n role: z.enum([\"requester\", \"vekil\"])\n});\n\nexport const publicConversationThreadPageSchema = z.object({\n has_older_messages: z.boolean(),\n messages: z.array(publicConversationThreadMessageSchema),\n oldest_message_id: z.string().nullable()\n});\n\nexport type PublicConversationThreadPage = z.infer<typeof publicConversationThreadPageSchema>;\n\nexport const respondToRequestSchema = z.object({\n idempotencyKey: z.string().min(12).max(120),\n message: z.string().trim().min(1).max(2000)\n});\n\nexport type RespondToRequestInput = z.infer<typeof respondToRequestSchema>;\n\nexport const ownerRequestResponseSchema = z.object({\n alreadyProcessed: z.boolean(),\n message: z.object({\n body: z.string().min(1).max(2000),\n createdAt: z.string().datetime({ offset: true }),\n id: z.string().min(1)\n }),\n requestId: z.string().min(1),\n status: z.literal(RequestStatus.COMPLETED)\n});\n\nexport type OwnerRequestResponse = z.infer<typeof ownerRequestResponseSchema>;\n\nexport const requestOptionSchema = z.object({\n id: z.string(),\n label: z.string().min(1).max(160),\n startsAt: z.string().datetime({ offset: true }).nullable().optional(),\n endsAt: z.string().datetime({ offset: true }).nullable().optional(),\n metadata: z.record(z.string(), z.unknown()).optional()\n});\n\nexport const publicRequestResponseSchema = z.object({\n requestId: z.string().nullable(),\n publicRequestToken: z.string(),\n assistantMessage: z.string().nullable(),\n requesterLanguage: z\n .object({\n code: z.string(),\n confidence: z.number().min(0).max(1)\n })\n .nullable(),\n status: z\n .enum([\n RequestStatus.RECEIVED,\n RequestStatus.CLASSIFIED,\n RequestStatus.NEEDS_CLARIFICATION,\n RequestStatus.POLICY_CHECKED,\n RequestStatus.PROPOSAL_READY,\n RequestStatus.WAITING_FOR_REQUESTER,\n RequestStatus.WAITING_FOR_OWNER,\n RequestStatus.WAITING_FOR_APPROVAL,\n RequestStatus.APPROVED,\n RequestStatus.EXECUTING,\n RequestStatus.COMPLETED,\n RequestStatus.UNFULFILLED,\n RequestStatus.DECLINED,\n RequestStatus.FAILED,\n RequestStatus.EXPIRED,\n RequestStatus.CANCELLED\n ])\n .nullable(),\n conversationId: z.string().nullable(),\n nextAction: z.enum([\n RequestNextAction.WAIT,\n RequestNextAction.CLARIFY,\n RequestNextAction.SELECT_OPTION,\n RequestNextAction.APPROVAL,\n RequestNextAction.COMPLETED\n ]),\n pendingContextDecision: z\n .object({\n expiresAt: z.string().datetime({ offset: true }),\n id: z.string()\n })\n .nullable()\n .default(null),\n proposal: z\n .object({\n type: z.literal(\"request_options\"),\n options: z.array(requestOptionSchema)\n })\n .nullable()\n});\n\nexport type PublicRequestResponse = z.infer<typeof publicRequestResponseSchema>;\n\nexport const publicRequestStatusSchema = z.object({\n agent_display_name: publicVekilSchema.shape.display_name,\n agent_handle: publicVekilSchema.shape.handle,\n agent_timezone: z.string(),\n avatar_url: publicVekilSchema.shape.avatar_url,\n bio: publicVekilSchema.shape.bio,\n pending_context_decision: z\n .object({\n expires_at: z.string().datetime({ offset: true }),\n id: z.string()\n })\n .nullable(),\n public_page: publicVekilSchema.shape.public_page,\n request_availability: publicVekilSchema.shape.request_availability,\n requester_language: z\n .object({\n code: z.string(),\n confidence: z.number().min(0).max(1)\n })\n .nullable(),\n session_status: z.enum(PublicRequestSessionStatus),\n status: z.enum(RequestStatus).nullable(),\n thread: z.array(publicConversationThreadMessageSchema),\n thread_page: z.object({\n has_older_messages: z.boolean(),\n oldest_message_id: z.string().nullable()\n })\n});\n\nexport type PublicRequestStatus = z.infer<typeof publicRequestStatusSchema>;\n\nexport const publicRequestStatusResponseSchema = z.object({\n request: publicRequestStatusSchema\n});\n\nexport type PublicRequestStatusResponse = z.infer<typeof publicRequestStatusResponseSchema>;\n\nexport const resolveRequestApprovalSchema = z.object({\n approvalId: z.string().min(1).max(120),\n approvalScopeHash: z.string().regex(/^[0-9a-f]{64}$/),\n idempotencyKey: z.string().min(12).max(120),\n selectedOptionId: z.string().min(1).max(120).optional(),\n approvalNote: z.string().max(500).optional()\n});\n\nexport type ResolveRequestApprovalInput = z.infer<typeof resolveRequestApprovalSchema>;\n\nexport const replayRequestExecutionSchema = z.object({\n idempotencyKey: z.string().min(12).max(120)\n});\n\nexport const replayRequestExecutionResponseSchema = z.object({\n replayed: z.boolean(),\n requestId: z.string(),\n status: z.enum([RequestStatus.APPROVED, RequestStatus.EXECUTING, RequestStatus.FAILED])\n});\n\nexport type ReplayRequestExecutionResponse = z.infer<typeof replayRequestExecutionResponseSchema>;\n\nexport const requestApprovalActionResponseSchema = z.object({\n action: z.enum([ApprovalAction.APPROVE, ApprovalAction.DECLINE, ApprovalAction.REQUEST_CHANGES]),\n alreadyResolved: z.boolean(),\n approvalStatus: z.enum([\n ApprovalStatus.PENDING,\n ApprovalStatus.APPROVED,\n ApprovalStatus.DECLINED,\n ApprovalStatus.CHANGES_REQUESTED,\n ApprovalStatus.EXPIRED,\n ApprovalStatus.CANCELLED\n ]),\n nextAction: z.enum([\n RequestNextAction.WAIT,\n RequestNextAction.CLARIFY,\n RequestNextAction.SELECT_OPTION,\n RequestNextAction.APPROVAL,\n RequestNextAction.COMPLETED\n ]),\n requestId: z.string(),\n status: z.enum([\n RequestStatus.RECEIVED,\n RequestStatus.CLASSIFIED,\n RequestStatus.NEEDS_CLARIFICATION,\n RequestStatus.POLICY_CHECKED,\n RequestStatus.PROPOSAL_READY,\n RequestStatus.WAITING_FOR_REQUESTER,\n RequestStatus.WAITING_FOR_OWNER,\n RequestStatus.WAITING_FOR_APPROVAL,\n RequestStatus.APPROVED,\n RequestStatus.EXECUTING,\n RequestStatus.COMPLETED,\n RequestStatus.UNFULFILLED,\n RequestStatus.DECLINED,\n RequestStatus.FAILED,\n RequestStatus.EXPIRED,\n RequestStatus.CANCELLED\n ])\n});\n\nexport type RequestApprovalActionResponse = z.infer<typeof requestApprovalActionResponseSchema>;\n","export function canonicalizeJson(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(canonicalizeJson);\n }\n\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .filter(([, item]) => item !== undefined)\n .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))\n .map(([key, item]) => [key, canonicalizeJson(item)])\n );\n }\n\n return value;\n}\n\nexport function stringifyCanonicalJson(value: unknown): string {\n return JSON.stringify(canonicalizeJson(value));\n}\n","import { BubbleActionType, bubbleDescriptorSchema } from \"@vekil/api-contracts\";\nimport {\n appContextArtifactVisibilityLevels,\n appContextEnvelopeSchema,\n appContextScopes\n} from \"@vekil/app-context\";\nimport { z } from \"zod\";\nimport {\n AppExecutionStatus,\n AppPlanStatus,\n AppRuntimeHealthStatus,\n appExecutionStatusSchema,\n appIdSchema,\n appLocalKeySchema,\n appNamespacedIdSchema,\n appPlanStatusSchema,\n appProtocolVersion,\n appRuntimeHealthStatusSchema,\n httpsOrLocalhostUrlSchema,\n isoDateTimeSchema,\n jsonObjectSchema,\n localeCodeSchema,\n semanticVersionSchema\n} from \"./common\";\n\nexport const appRemoteRuntimePaths = {\n prepareInstallation: \"/v1/installations/prepare\",\n completeInstallation: \"/v1/installations/complete\",\n disconnectInstallation: \"/v1/installations/disconnect\",\n planAction: \"/v1/actions/plan\",\n executeAction: \"/v1/actions/execute\",\n health: \"/v1/health\"\n} as const;\n\nexport enum AppInstallationConnectionStatus {\n NOT_REQUIRED = \"NOT_REQUIRED\",\n ACTION_REQUIRED = \"ACTION_REQUIRED\",\n CONNECTED = \"CONNECTED\",\n FAILED = \"FAILED\"\n}\n\nexport enum AppRuntimeErrorCode {\n INVALID_REQUEST = \"INVALID_REQUEST\",\n INSTALLATION_NOT_FOUND = \"INSTALLATION_NOT_FOUND\",\n CONNECTION_REQUIRED = \"CONNECTION_REQUIRED\",\n ACTION_NOT_SUPPORTED = \"ACTION_NOT_SUPPORTED\",\n POLICY_REJECTED = \"POLICY_REJECTED\",\n RATE_LIMITED = \"RATE_LIMITED\",\n TEMPORARILY_UNAVAILABLE = \"TEMPORARILY_UNAVAILABLE\",\n EXECUTION_FAILED = \"EXECUTION_FAILED\"\n}\n\nconst requestIdSchema = z.string().min(1).max(160);\nconst strictAppContextEnvelopeSchema = appContextEnvelopeSchema.strict();\nexport const appAuthorizationContractHashSchema = z.string().regex(/^[a-f0-9]{64}$/);\n\nexport const appInstallationGrantSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n grantId: z.string().min(1).max(160),\n installationId: z.string().min(1).max(160),\n connectionId: z.string().min(1).max(160),\n connectionRevision: z.number().int().positive(),\n authorizationContractHash: appAuthorizationContractHashSchema,\n appId: appIdSchema,\n appVersionId: z.string().min(1).max(160),\n appVersion: semanticVersionSchema,\n targetVekilId: z.string().min(1).max(160),\n runtimeAudience: appIdSchema,\n capabilityIds: z.array(appNamespacedIdSchema).max(128),\n permissionKeys: z.array(z.string().min(1).max(80)).max(64),\n contextScopes: z.array(z.enum(appContextScopes)).max(appContextScopes.length),\n issuedAt: isoDateTimeSchema,\n expiresAt: isoDateTimeSchema\n});\n\nexport const appRuntimeConnectionAttestationSchema = z.strictObject({\n connectionId: z.string().min(1).max(160),\n connectionRevision: z.number().int().positive(),\n runtimeAccountReference: z.string().min(1).max(240),\n accountLabel: z.string().min(1).max(240),\n grantedPermissionKeys: z.array(z.string().min(1).max(80)).max(64),\n authorizationContractHash: appAuthorizationContractHashSchema\n});\n\nexport const appRuntimeErrorSchema = z.strictObject({\n code: z.enum([\n AppRuntimeErrorCode.INVALID_REQUEST,\n AppRuntimeErrorCode.INSTALLATION_NOT_FOUND,\n AppRuntimeErrorCode.CONNECTION_REQUIRED,\n AppRuntimeErrorCode.ACTION_NOT_SUPPORTED,\n AppRuntimeErrorCode.POLICY_REJECTED,\n AppRuntimeErrorCode.RATE_LIMITED,\n AppRuntimeErrorCode.TEMPORARILY_UNAVAILABLE,\n AppRuntimeErrorCode.EXECUTION_FAILED\n ]),\n message: z.string().min(1).max(600),\n retryable: z.boolean(),\n retryAfterSeconds: z.number().int().min(1).max(86_400).optional(),\n details: jsonObjectSchema.optional()\n});\n\nexport const appPrepareInstallationRequestSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n requestId: requestIdSchema,\n grant: appInstallationGrantSchema,\n returnUrl: httpsOrLocalhostUrlSchema,\n locale: localeCodeSchema\n});\n\nexport const appPrepareInstallationResponseSchema = z\n .strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n requestId: requestIdSchema,\n status: z.enum([\n AppInstallationConnectionStatus.NOT_REQUIRED,\n AppInstallationConnectionStatus.ACTION_REQUIRED,\n AppInstallationConnectionStatus.CONNECTED,\n AppInstallationConnectionStatus.FAILED\n ]),\n authorizationUrl: httpsOrLocalhostUrlSchema.optional(),\n authorizationExpiresAt: isoDateTimeSchema.optional(),\n connection: appRuntimeConnectionAttestationSchema.optional(),\n error: appRuntimeErrorSchema.optional()\n })\n .superRefine((value, context) => {\n if (\n value.status === AppInstallationConnectionStatus.ACTION_REQUIRED &&\n (!value.authorizationUrl || !value.authorizationExpiresAt)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"ACTION_REQUIRED requires an authorization URL and expiry\",\n path: [\"status\"]\n });\n }\n\n if (value.status === AppInstallationConnectionStatus.CONNECTED && !value.connection) {\n context.addIssue({\n code: \"custom\",\n message: \"CONNECTED requires a connection attestation\",\n path: [\"status\"]\n });\n }\n\n if (value.status === AppInstallationConnectionStatus.FAILED && !value.error) {\n context.addIssue({\n code: \"custom\",\n message: \"FAILED requires a runtime error\",\n path: [\"status\"]\n });\n }\n\n if (value.status !== AppInstallationConnectionStatus.FAILED && value.error) {\n context.addIssue({\n code: \"custom\",\n message: \"Only FAILED may include a runtime error\",\n path: [\"error\"]\n });\n }\n });\n\nexport const appCompleteInstallationRequestSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n requestId: requestIdSchema,\n grant: appInstallationGrantSchema,\n completionToken: z.string().min(32).max(512)\n});\n\nexport const appCompleteInstallationResponseSchema = z\n .strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n requestId: requestIdSchema,\n status: z.enum([\n AppInstallationConnectionStatus.CONNECTED,\n AppInstallationConnectionStatus.FAILED\n ]),\n connection: appRuntimeConnectionAttestationSchema.optional(),\n error: appRuntimeErrorSchema.optional()\n })\n .superRefine((value, context) => {\n if (\n value.status === AppInstallationConnectionStatus.CONNECTED &&\n (!value.connection || value.error)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"CONNECTED requires a connection attestation and cannot include an error\",\n path: [\"status\"]\n });\n }\n\n if (\n value.status === AppInstallationConnectionStatus.FAILED &&\n (!value.error || value.connection)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"FAILED requires an error and cannot include a connection attestation\",\n path: [\"status\"]\n });\n }\n });\n\nexport const appDisconnectInstallationRequestSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n requestId: requestIdSchema,\n grant: appInstallationGrantSchema,\n reason: z.string().min(1).max(300)\n});\n\nexport const appDisconnectInstallationResponseSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n requestId: requestIdSchema,\n disconnected: z.boolean(),\n error: appRuntimeErrorSchema.optional()\n});\n\nexport const appPlanActionRequestSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n requestId: requestIdSchema,\n grant: appInstallationGrantSchema,\n intentId: appNamespacedIdSchema,\n input: jsonObjectSchema,\n context: strictAppContextEnvelopeSchema\n});\n\nconst appPlannedActionSchema = z.strictObject({\n stepKey: z.string().min(1).max(80),\n actionId: appNamespacedIdSchema,\n input: jsonObjectSchema,\n dependsOn: z.array(z.string().min(1).max(80)).max(32)\n});\n\nexport function findAppPlanTopologyIssue(\n actions: ReadonlyArray<{\n dependsOn: readonly string[];\n stepKey: string;\n }>\n): string | null {\n const dependenciesByStep = new Map<string, readonly string[]>();\n\n for (const action of actions) {\n if (dependenciesByStep.has(action.stepKey)) {\n return `Plan step key \"${action.stepKey}\" is duplicated.`;\n }\n\n dependenciesByStep.set(action.stepKey, action.dependsOn);\n }\n\n for (const action of actions) {\n const dependencies = new Set<string>();\n\n for (const dependency of action.dependsOn) {\n if (dependencies.has(dependency)) {\n return `Plan step \"${action.stepKey}\" declares dependency \"${dependency}\" more than once.`;\n }\n\n dependencies.add(dependency);\n\n if (dependency === action.stepKey) {\n return `Plan step \"${action.stepKey}\" cannot depend on itself.`;\n }\n\n if (!dependenciesByStep.has(dependency)) {\n return `Plan step \"${action.stepKey}\" depends on unknown step \"${dependency}\".`;\n }\n }\n }\n\n const visiting = new Set<string>();\n const visited = new Set<string>();\n\n const visit = (stepKey: string): string | null => {\n if (visiting.has(stepKey)) {\n return `Plan contains a dependency cycle involving step \"${stepKey}\".`;\n }\n\n if (visited.has(stepKey)) {\n return null;\n }\n\n visiting.add(stepKey);\n\n for (const dependency of dependenciesByStep.get(stepKey) ?? []) {\n const issue = visit(dependency);\n\n if (issue) {\n return issue;\n }\n }\n\n visiting.delete(stepKey);\n visited.add(stepKey);\n return null;\n };\n\n for (const stepKey of dependenciesByStep.keys()) {\n const issue = visit(stepKey);\n\n if (issue) {\n return issue;\n }\n }\n\n return null;\n}\n\nexport const appGroundingFactSchema = z.strictObject({\n knowledgeId: appNamespacedIdSchema,\n value: z.json()\n});\n\nexport const appPlanActionResponseSchema = z\n .strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n requestId: requestIdSchema,\n status: appPlanStatusSchema,\n actions: z.array(appPlannedActionSchema).max(64).default([]),\n missingFields: z.array(z.string().min(1).max(80)).max(64).default([]),\n grounding: z.array(appGroundingFactSchema).max(128).default([]),\n userMessage: z.string().min(1).max(2_000).optional(),\n error: appRuntimeErrorSchema.optional()\n })\n .superRefine((value, context) => {\n if (value.status === AppPlanStatus.READY) {\n if (value.actions.length === 0) {\n context.addIssue({\n code: \"custom\",\n message: \"READY requires at least one action\",\n path: [\"actions\"]\n });\n }\n\n if (value.missingFields.length > 0 || value.error) {\n context.addIssue({\n code: \"custom\",\n message: \"READY cannot include missing fields or an error\",\n path: [\"status\"]\n });\n }\n }\n\n if (value.status === AppPlanStatus.NEEDS_CLARIFICATION) {\n if (value.missingFields.length === 0) {\n context.addIssue({\n code: \"custom\",\n message: \"NEEDS_CLARIFICATION requires at least one missing field\",\n path: [\"missingFields\"]\n });\n }\n\n if (value.actions.length > 0 || value.grounding.length > 0 || value.error) {\n context.addIssue({\n code: \"custom\",\n message: \"NEEDS_CLARIFICATION cannot include actions, grounding, or an error\",\n path: [\"status\"]\n });\n }\n }\n\n if (value.status === AppPlanStatus.REJECTED) {\n if (!value.error) {\n context.addIssue({\n code: \"custom\",\n message: \"REJECTED requires an error\",\n path: [\"error\"]\n });\n }\n\n if (\n value.actions.length > 0 ||\n value.missingFields.length > 0 ||\n value.grounding.length > 0\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"REJECTED cannot include actions, missing fields, or grounding\",\n path: [\"status\"]\n });\n }\n }\n\n const topologyIssue = findAppPlanTopologyIssue(value.actions);\n\n if (topologyIssue) {\n context.addIssue({\n code: \"custom\",\n message: topologyIssue,\n path: [\"actions\"]\n });\n }\n });\n\nconst appRuntimeArtifactSchema = z.strictObject({\n artifactId: appNamespacedIdSchema,\n expiresAt: isoDateTimeSchema.optional(),\n resultKey: appLocalKeySchema,\n schemaVersion: z.number().int().min(1).max(1_000),\n value: z.json(),\n visibilityLevel: z.enum(appContextArtifactVisibilityLevels).optional()\n});\n\nexport const appExecuteActionRequestSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n requestId: requestIdSchema,\n executionId: z.string().min(1).max(160),\n grant: appInstallationGrantSchema,\n actionId: appNamespacedIdSchema,\n input: jsonObjectSchema,\n context: strictAppContextEnvelopeSchema,\n idempotencyKey: z.string().min(16).max(240),\n attempt: z.number().int().min(1).max(8)\n});\n\nexport const appExecuteActionResponseSchema = z\n .strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n requestId: requestIdSchema,\n executionId: z.string().min(1).max(160),\n status: appExecutionStatusSchema,\n output: jsonObjectSchema.optional(),\n outcomeId: appNamespacedIdSchema.optional(),\n artifacts: z.array(appRuntimeArtifactSchema).max(64).default([]),\n bubbles: z.array(bubbleDescriptorSchema.strict()).max(16).default([]),\n error: appRuntimeErrorSchema.optional()\n })\n .superRefine((value, context) => {\n const artifactResultKeys = new Set<string>();\n\n value.artifacts.forEach((artifact, artifactIndex) => {\n if (artifactResultKeys.has(artifact.resultKey)) {\n context.addIssue({\n code: \"custom\",\n message: `Artifact result key \"${artifact.resultKey}\" is duplicated`,\n path: [\"artifacts\", artifactIndex, \"resultKey\"]\n });\n }\n\n artifactResultKeys.add(artifact.resultKey);\n });\n\n value.bubbles.forEach((bubble, bubbleIndex) => {\n bubble.actions.forEach((action, actionIndex) => {\n if (\n action.action_type === BubbleActionType.SELECT_OPTION &&\n !artifactResultKeys.has(action.artifact_result_key)\n ) {\n context.addIssue({\n code: \"custom\",\n message: `SELECT_OPTION references unknown artifact result key \"${action.artifact_result_key}\"`,\n path: [\"bubbles\", bubbleIndex, \"actions\", actionIndex, \"artifact_result_key\"]\n });\n }\n });\n });\n\n if (\n value.status === AppExecutionStatus.SUCCEEDED &&\n (!value.output || !value.outcomeId || value.error)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"SUCCEEDED requires output and outcomeId and cannot include an error\",\n path: [\"status\"]\n });\n }\n\n if (\n value.status === AppExecutionStatus.FAILED &&\n (!value.error || value.output || value.outcomeId)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"FAILED requires an error and cannot include output or outcomeId\",\n path: [\"status\"]\n });\n }\n });\n\nexport const appRuntimeHealthResponseSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n status: appRuntimeHealthStatusSchema,\n appId: appIdSchema,\n appVersion: semanticVersionSchema,\n checkedAt: isoDateTimeSchema,\n message: z.string().min(1).max(500).optional()\n});\n\nexport type AppInstallationGrant = z.infer<typeof appInstallationGrantSchema>;\nexport type AppCompleteInstallationRequest = z.infer<typeof appCompleteInstallationRequestSchema>;\nexport type AppCompleteInstallationResponse = z.infer<typeof appCompleteInstallationResponseSchema>;\nexport type AppPrepareInstallationRequest = z.infer<typeof appPrepareInstallationRequestSchema>;\nexport type AppPrepareInstallationResponse = z.infer<typeof appPrepareInstallationResponseSchema>;\nexport type AppDisconnectInstallationRequest = z.infer<\n typeof appDisconnectInstallationRequestSchema\n>;\nexport type AppDisconnectInstallationResponse = z.infer<\n typeof appDisconnectInstallationResponseSchema\n>;\nexport type AppPlanActionRequest = z.infer<typeof appPlanActionRequestSchema>;\nexport type AppPlanActionResponse = z.infer<typeof appPlanActionResponseSchema>;\nexport type AppExecuteActionRequest = z.infer<typeof appExecuteActionRequestSchema>;\nexport type AppExecuteActionResponse = z.infer<typeof appExecuteActionResponseSchema>;\nexport type AppRuntimeHealthResponse = z.infer<typeof appRuntimeHealthResponseSchema>;\n\nexport function isSuccessfulExecution(\n response: AppExecuteActionResponse\n): response is AppExecuteActionResponse & { status: AppExecutionStatus.SUCCEEDED } {\n return response.status === AppExecutionStatus.SUCCEEDED;\n}\n\nexport function isReadyPlan(\n response: AppPlanActionResponse\n): response is AppPlanActionResponse & { status: AppPlanStatus.READY } {\n return response.status === AppPlanStatus.READY;\n}\n\nexport function isHealthyRuntime(\n status: AppRuntimeHealthStatus\n): status is AppRuntimeHealthStatus.HEALTHY | AppRuntimeHealthStatus.DEGRADED {\n return status === AppRuntimeHealthStatus.HEALTHY || status === AppRuntimeHealthStatus.DEGRADED;\n}\n","import { z } from \"zod\";\nimport { appManifestSchema } from \"./app-manifest\";\nimport { AppRuntimeHost, appProtocolVersion } from \"./common\";\nimport {\n appCompleteInstallationRequestSchema,\n appDisconnectInstallationRequestSchema,\n appExecuteActionRequestSchema,\n appPlanActionRequestSchema,\n appPrepareInstallationRequestSchema\n} from \"./runtime-envelopes\";\n\nexport const hostedDeclarativeRuntimeId = \"vekil-declarative-runtime\";\n\nexport const hostedDeclarativeRuntimePaths = {\n prepareInstallation: \"/v1/declarative/installations/prepare\",\n completeInstallation: \"/v1/declarative/installations/complete\",\n disconnectInstallation: \"/v1/declarative/installations/disconnect\",\n planAction: \"/v1/declarative/actions/plan\",\n executeAction: \"/v1/declarative/actions/execute\",\n health: \"/v1/declarative/health\"\n} as const;\n\nconst declarativeManifestSchema = appManifestSchema.refine(\n (manifest) => manifest.runtime.host === AppRuntimeHost.DECLARATIVE,\n \"Hosted Declarative Runtime accepts only declarative manifests\"\n);\n\nexport const hostedDeclarativePrepareRequestSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n manifest: declarativeManifestSchema,\n request: appPrepareInstallationRequestSchema\n});\n\nexport const hostedDeclarativeCompleteRequestSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n manifest: declarativeManifestSchema,\n request: appCompleteInstallationRequestSchema\n});\n\nexport const hostedDeclarativeDisconnectRequestSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n manifest: declarativeManifestSchema,\n request: appDisconnectInstallationRequestSchema\n});\n\nexport const hostedDeclarativePlanRequestSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n manifest: declarativeManifestSchema,\n request: appPlanActionRequestSchema\n});\n\nexport const hostedDeclarativeExecuteRequestSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n manifest: declarativeManifestSchema,\n request: appExecuteActionRequestSchema\n});\n\nexport const hostedDeclarativeHealthRequestSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n requestId: z.string().min(1).max(160),\n manifest: declarativeManifestSchema\n});\n\nexport type HostedDeclarativePrepareRequest = z.infer<typeof hostedDeclarativePrepareRequestSchema>;\nexport type HostedDeclarativeCompleteRequest = z.infer<\n typeof hostedDeclarativeCompleteRequestSchema\n>;\nexport type HostedDeclarativeDisconnectRequest = z.infer<\n typeof hostedDeclarativeDisconnectRequestSchema\n>;\nexport type HostedDeclarativePlanRequest = z.infer<typeof hostedDeclarativePlanRequestSchema>;\nexport type HostedDeclarativeExecuteRequest = z.infer<typeof hostedDeclarativeExecuteRequestSchema>;\nexport type HostedDeclarativeHealthRequest = z.infer<typeof hostedDeclarativeHealthRequestSchema>;\n","import { z } from \"zod\";\nimport {\n appIdSchema,\n appProtocolVersion,\n httpsOrLocalhostUrlSchema,\n isoDateTimeSchema\n} from \"./common\";\n\nexport enum AppSignatureAlgorithm {\n ED25519 = \"EdDSA\"\n}\n\nexport const appProtocolSignatureHeaders = {\n expiresAt: \"x-vekil-expires-at\",\n keyId: \"x-vekil-key-id\",\n nonce: \"x-vekil-nonce\",\n signature: \"x-vekil-signature\",\n timestamp: \"x-vekil-timestamp\"\n} as const;\n\nexport const appJwsType = \"vekil-app-signature+jws\" as const;\n\nexport const appJwsProtectedHeaderSchema = z.strictObject({\n alg: z.literal(AppSignatureAlgorithm.ED25519),\n b64: z.literal(false),\n crit: z.tuple([z.literal(\"b64\")]),\n kid: z.string().min(1).max(160),\n typ: z.literal(appJwsType)\n});\n\nexport const appSignatureClaimsSchema = z.strictObject({\n protocolVersion: z.literal(appProtocolVersion),\n algorithm: z.literal(AppSignatureAlgorithm.ED25519),\n issuer: z.string().min(1).max(160),\n audience: appIdSchema,\n keyId: z.string().min(1).max(160),\n method: z.enum([\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\"]),\n path: z.string().min(1).max(500).startsWith(\"/\"),\n bodySha256: z.string().regex(/^[a-f0-9]{64}$/),\n issuedAt: isoDateTimeSchema,\n expiresAt: isoDateTimeSchema,\n nonce: z.string().min(16).max(160),\n installationId: z.string().min(1).max(160).optional(),\n executionId: z.string().min(1).max(160).optional()\n});\n\nexport const appDetachedJwsSchema = z\n .string()\n .min(16)\n .max(8_192)\n .regex(/^[A-Za-z0-9_-]+\\.\\.[A-Za-z0-9_-]+$/);\n\nexport const appPublicSigningJwkSchema = z.strictObject({\n kty: z.literal(\"OKP\"),\n crv: z.literal(\"Ed25519\"),\n x: z.string().min(40).max(64),\n use: z.literal(\"sig\"),\n alg: z.literal(AppSignatureAlgorithm.ED25519),\n kid: z.string().min(1).max(160)\n});\n\nexport const appJwksSchema = z.strictObject({\n keys: z.array(appPublicSigningJwkSchema).min(1).max(8)\n});\n\nexport const appRuntimeKeySchema = z.strictObject({\n keyId: z.string().min(1).max(160),\n algorithm: z.literal(AppSignatureAlgorithm.ED25519),\n publicKeyJwk: appPublicSigningJwkSchema\n});\n\nexport const appRuntimeIdentitySchema = z.strictObject({\n appId: appIdSchema,\n baseUrl: httpsOrLocalhostUrlSchema,\n keys: z.array(appRuntimeKeySchema).min(1).max(8)\n});\n\nexport type AppSignatureClaims = z.infer<typeof appSignatureClaimsSchema>;\nexport type AppJwks = z.infer<typeof appJwksSchema>;\nexport type AppJwsProtectedHeader = z.infer<typeof appJwsProtectedHeaderSchema>;\nexport type AppPublicSigningJwk = z.infer<typeof appPublicSigningJwkSchema>;\nexport type AppRuntimeIdentity = z.infer<typeof appRuntimeIdentitySchema>;\n","import {\n createHash,\n createPrivateKey,\n createPublicKey,\n sign as nodeSign,\n verify as nodeVerify,\n type webcrypto\n} from \"node:crypto\";\nimport {\n AppSignatureAlgorithm,\n appDetachedJwsSchema,\n appJwsProtectedHeaderSchema,\n appJwsType,\n appProtocolSignatureHeaders,\n appPublicSigningJwkSchema,\n appSignatureClaimsSchema,\n stringifyCanonicalJson,\n type AppJwsProtectedHeader,\n type AppPublicSigningJwk,\n type AppSignatureClaims\n} from \"@vekil/app-protocol\";\n\nexport interface AppPrivateSigningJwk extends webcrypto.JsonWebKey {\n alg: typeof AppSignatureAlgorithm.ED25519;\n crv: \"Ed25519\";\n d: string;\n kid: string;\n kty: \"OKP\";\n use: \"sig\";\n x: string;\n}\n\nexport interface AppProtocolSigningIdentity {\n issuer: string;\n keyId: string;\n privateKeyJwk: AppPrivateSigningJwk;\n}\n\nexport interface AppSignatureHeaderValues {\n expiresAt: string;\n keyId: string;\n nonce: string;\n signature: string;\n timestamp: string;\n}\n\nexport const defaultAppSignatureClockSkewMs = 5_000;\n\ntype AppSignatureHeaderSource =\n Headers | Record<string, string | string[] | undefined> | { get(name: string): string | null };\n\nexport function hashAppProtocolBody(body: string): string {\n return createHash(\"sha256\").update(body).digest(\"hex\");\n}\n\nexport function readAppProtocolSigningIdentity({\n issuer,\n keyId,\n privateJwkBase64url\n}: {\n issuer: string;\n keyId?: string;\n privateJwkBase64url?: string;\n}): AppProtocolSigningIdentity | null {\n if (!keyId && !privateJwkBase64url) {\n return null;\n }\n\n if (!keyId || !privateJwkBase64url) {\n throw new Error(\"app_runtime_signing_configuration_incomplete\");\n }\n\n let value: unknown;\n\n try {\n value = JSON.parse(Buffer.from(privateJwkBase64url, \"base64url\").toString(\"utf8\"));\n } catch {\n throw new Error(\"app_runtime_signing_private_jwk_invalid\");\n }\n\n if (!isPrivateSigningJwk(value) || value.kid !== keyId) {\n throw new Error(\"app_runtime_signing_private_jwk_invalid\");\n }\n\n return {\n issuer,\n keyId,\n privateKeyJwk: value\n };\n}\n\nexport function deriveAppPublicSigningJwk(\n identity: AppProtocolSigningIdentity\n): AppPublicSigningJwk {\n return appPublicSigningJwkSchema.parse({\n alg: AppSignatureAlgorithm.ED25519,\n crv: \"Ed25519\",\n kid: identity.keyId,\n kty: \"OKP\",\n use: \"sig\",\n x: identity.privateKeyJwk.x\n });\n}\n\nexport function createAppDetachedJws({\n claims: claimsInput,\n privateKeyJwk\n}: {\n claims: AppSignatureClaims;\n privateKeyJwk: AppPrivateSigningJwk;\n}): string {\n const claims = appSignatureClaimsSchema.parse(claimsInput);\n\n if (privateKeyJwk.kid !== claims.keyId) {\n throw new Error(\"app_signature_key_id_mismatch\");\n }\n\n const protectedHeader = appJwsProtectedHeaderSchema.parse({\n alg: AppSignatureAlgorithm.ED25519,\n b64: false,\n crit: [\"b64\"],\n kid: claims.keyId,\n typ: appJwsType\n });\n const encodedHeader = encodeJson(protectedHeader);\n const signingInput = createSigningInput(encodedHeader, claims);\n const key = createPrivateKey({\n format: \"jwk\",\n key: privateKeyJwk\n });\n const signature = nodeSign(null, Buffer.from(signingInput), key).toString(\"base64url\");\n\n return appDetachedJwsSchema.parse(`${encodedHeader}..${signature}`);\n}\n\nexport function verifyAppDetachedJws({\n claims: claimsInput,\n publicKeyJwk: publicKeyInput,\n signature\n}: {\n claims: AppSignatureClaims;\n publicKeyJwk: AppPublicSigningJwk;\n signature: string;\n}): boolean {\n const claims = appSignatureClaimsSchema.parse(claimsInput);\n const publicKeyJwk = appPublicSigningJwkSchema.parse(publicKeyInput);\n const compactJws = appDetachedJwsSchema.parse(signature);\n const [encodedHeader, encodedPayload, encodedSignature] = compactJws.split(\".\");\n\n if (!encodedHeader || encodedPayload !== \"\" || !encodedSignature) {\n return false;\n }\n\n const protectedHeader = readProtectedHeader(encodedHeader);\n\n if (\n !protectedHeader ||\n protectedHeader.kid !== claims.keyId ||\n publicKeyJwk.kid !== claims.keyId\n ) {\n return false;\n }\n\n try {\n const key = createPublicKey({\n format: \"jwk\",\n key: publicKeyJwk\n });\n\n return nodeVerify(\n null,\n Buffer.from(createSigningInput(encodedHeader, claims)),\n key,\n Buffer.from(encodedSignature, \"base64url\")\n );\n } catch {\n return false;\n }\n}\n\nexport function createAppSignatureHeaders({\n claims,\n signature\n}: {\n claims: AppSignatureClaims;\n signature: string;\n}): Record<string, string> {\n return {\n [appProtocolSignatureHeaders.expiresAt]: claims.expiresAt,\n [appProtocolSignatureHeaders.keyId]: claims.keyId,\n [appProtocolSignatureHeaders.nonce]: claims.nonce,\n [appProtocolSignatureHeaders.signature]: signature,\n [appProtocolSignatureHeaders.timestamp]: claims.issuedAt\n };\n}\n\nexport function readAppSignatureHeaders(\n source: AppSignatureHeaderSource\n): AppSignatureHeaderValues | null {\n const expiresAt = readHeader(source, appProtocolSignatureHeaders.expiresAt);\n const keyId = readHeader(source, appProtocolSignatureHeaders.keyId);\n const nonce = readHeader(source, appProtocolSignatureHeaders.nonce);\n const signature = readHeader(source, appProtocolSignatureHeaders.signature);\n const timestamp = readHeader(source, appProtocolSignatureHeaders.timestamp);\n\n if (!expiresAt || !keyId || !nonce || !signature || !timestamp) {\n return null;\n }\n\n return {\n expiresAt,\n keyId,\n nonce,\n signature,\n timestamp\n };\n}\n\nexport function validateAppSignatureWindow({\n claims: claimsInput,\n maxClockSkewMs = defaultAppSignatureClockSkewMs,\n maxLifetimeMs = 60_000,\n now = new Date()\n}: {\n claims: AppSignatureClaims;\n maxClockSkewMs?: number;\n maxLifetimeMs?: number;\n now?: Date;\n}): \"expired\" | \"issued_in_future\" | \"lifetime_exceeded\" | null {\n const claims = appSignatureClaimsSchema.parse(claimsInput);\n const issuedAt = Date.parse(claims.issuedAt);\n const expiresAt = Date.parse(claims.expiresAt);\n const nowMs = now.getTime();\n\n if (issuedAt > nowMs + maxClockSkewMs) {\n return \"issued_in_future\";\n }\n\n if (expiresAt < nowMs - maxClockSkewMs) {\n return \"expired\";\n }\n\n if (expiresAt <= issuedAt || expiresAt - issuedAt > maxLifetimeMs) {\n return \"lifetime_exceeded\";\n }\n\n return null;\n}\n\nfunction createSigningInput(encodedHeader: string, claims: AppSignatureClaims): string {\n return `${encodedHeader}.${stringifyCanonicalJson(claims)}`;\n}\n\nfunction encodeJson(value: unknown): string {\n return Buffer.from(stringifyCanonicalJson(value)).toString(\"base64url\");\n}\n\nfunction readProtectedHeader(encodedHeader: string): AppJwsProtectedHeader | null {\n try {\n return appJwsProtectedHeaderSchema.parse(\n JSON.parse(Buffer.from(encodedHeader, \"base64url\").toString(\"utf8\"))\n );\n } catch {\n return null;\n }\n}\n\nfunction readHeader(source: AppSignatureHeaderSource, name: string): string | null {\n if (\"get\" in source && typeof source.get === \"function\") {\n return source.get(name);\n }\n\n const record = source as Record<string, string | string[] | undefined>;\n const value = record[name] ?? record[name.toLowerCase()];\n\n if (Array.isArray(value)) {\n return value[0] ?? null;\n }\n\n return value ?? null;\n}\n\nfunction isPrivateSigningJwk(value: unknown): value is AppPrivateSigningJwk {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return false;\n }\n\n const key = value as Record<string, unknown>;\n\n return (\n key.alg === AppSignatureAlgorithm.ED25519 &&\n key.crv === \"Ed25519\" &&\n typeof key.d === \"string\" &&\n key.d.length >= 40 &&\n typeof key.kid === \"string\" &&\n key.kid.length > 0 &&\n key.kty === \"OKP\" &&\n key.use === \"sig\" &&\n typeof key.x === \"string\" &&\n key.x.length >= 40\n );\n}\n","import { AppRuntimeErrorCode } from \"@vekil/app-protocol\";\n\nexport class DeclarativeRuntimeError extends Error {\n readonly code: AppRuntimeErrorCode;\n readonly retryAfterSeconds?: number;\n readonly retryable: boolean;\n readonly stepKey?: string;\n\n constructor({\n code,\n message,\n retryAfterSeconds,\n retryable = false,\n stepKey\n }: {\n code: AppRuntimeErrorCode;\n message: string;\n retryAfterSeconds?: number;\n retryable?: boolean;\n stepKey?: string;\n }) {\n super(message);\n this.name = \"DeclarativeRuntimeError\";\n this.code = code;\n this.retryable = retryable;\n this.retryAfterSeconds = retryAfterSeconds;\n this.stepKey = stepKey;\n }\n}\n\nexport function asDeclarativeRuntimeError(error: unknown): DeclarativeRuntimeError {\n if (error instanceof DeclarativeRuntimeError) {\n return error;\n }\n\n if (error instanceof DOMException && error.name === \"AbortError\") {\n return new DeclarativeRuntimeError({\n code: AppRuntimeErrorCode.TEMPORARILY_UNAVAILABLE,\n message: \"The App request timed out.\",\n retryable: true\n });\n }\n\n return new DeclarativeRuntimeError({\n code: AppRuntimeErrorCode.EXECUTION_FAILED,\n message: \"The App could not complete this action.\"\n });\n}\n","import { lookup } from \"node:dns/promises\";\nimport { BlockList, isIP } from \"node:net\";\nimport { AppRuntimeErrorCode } from \"@vekil/app-protocol\";\nimport { DeclarativeRuntimeError } from \"./errors\";\nimport {\n DeclarativeEgressNetworkClass,\n type DeclarativeEgressAddress,\n type DeclarativeEgressAuthorization,\n type DeclarativeRuntimeEgressPolicy\n} from \"./types\";\n\nexport type DeclarativeDnsResolver = (hostname: string) => Promise<readonly string[]>;\n\nexport interface PublicEgressPolicyOptions {\n allowLocalhost?: boolean;\n allowedOrigins: readonly string[];\n resolveDns?: DeclarativeDnsResolver;\n}\n\nconst maximumResolvedAddresses = 32;\n\nexport class PublicDeclarativeEgressPolicy implements DeclarativeRuntimeEgressPolicy {\n private readonly allowLocalhost: boolean;\n private readonly allowedOrigins: ReadonlySet<string>;\n private readonly resolveDns: DeclarativeDnsResolver;\n\n constructor(options: PublicEgressPolicyOptions) {\n this.allowLocalhost = options.allowLocalhost ?? false;\n this.allowedOrigins = new Set(options.allowedOrigins.map(normalizeOrigin));\n this.resolveDns = options.resolveDns ?? resolvePublicDns;\n }\n\n async assertAllowed(url: URL): Promise<DeclarativeEgressAuthorization> {\n if (!this.allowedOrigins.has(url.origin)) {\n throw policyRejected(\"The workflow destination is not approved for this App version.\");\n }\n\n if (url.username || url.password || url.hash) {\n throw policyRejected(\"Workflow destinations cannot contain credentials or fragments.\");\n }\n\n const hostname = normalizeHostname(url.hostname);\n const localhost = isLocalHostname(hostname);\n\n if (url.protocol !== \"https:\" && !(this.allowLocalhost && localhost)) {\n throw policyRejected(\"Workflow requests must use HTTPS.\");\n }\n\n if (localhost) {\n if (!this.allowLocalhost) {\n throw policyRejected(\"Local network destinations are not allowed.\");\n }\n\n return authorization({\n addresses: hostname === \"::1\" ? [\"::1\"] : [\"127.0.0.1\"],\n hostname,\n networkClass: DeclarativeEgressNetworkClass.LOOPBACK_DEVELOPMENT,\n origin: url.origin\n });\n }\n\n if (hasPrivateHostnameSuffix(hostname)) {\n throw policyRejected(\"Private network destinations are not allowed.\");\n }\n\n if (isIP(hostname) > 0) {\n if (!isDeclarativePublicAddress(hostname)) {\n throw policyRejected(\"Private or reserved network addresses are not allowed.\");\n }\n\n return authorization({\n addresses: [hostname],\n hostname,\n networkClass: DeclarativeEgressNetworkClass.PUBLIC,\n origin: url.origin\n });\n }\n\n let addresses: readonly string[];\n\n try {\n addresses = await this.resolveDns(hostname);\n } catch {\n throw providerUnavailable();\n }\n\n const normalizedAddresses = [...new Set(addresses.map(normalizeHostname))];\n\n if (\n normalizedAddresses.length === 0 ||\n normalizedAddresses.length > maximumResolvedAddresses ||\n normalizedAddresses.some((address) => !isDeclarativePublicAddress(address))\n ) {\n throw policyRejected(\"The workflow destination resolved to a private or reserved network.\");\n }\n\n return authorization({\n addresses: normalizedAddresses,\n hostname,\n networkClass: DeclarativeEgressNetworkClass.PUBLIC,\n origin: url.origin\n });\n }\n}\n\nexport function isDeclarativePublicAddress(address: string): boolean {\n const normalized = normalizeHostname(address);\n const family = isIP(normalized);\n\n if (family === 4) {\n return !privateIpv4Ranges.check(normalized, \"ipv4\");\n }\n\n if (family === 6) {\n return !privateIpv6Ranges.check(normalized, \"ipv6\");\n }\n\n return false;\n}\n\nexport function isDeclarativeLoopbackAddress(address: string): boolean {\n const normalized = normalizeHostname(address);\n return normalized === \"127.0.0.1\" || normalized === \"::1\";\n}\n\nfunction normalizeOrigin(value: string): string {\n try {\n const url = new URL(value);\n\n if (url.username || url.password || url.hash) {\n throw new Error(\"origin contains forbidden URL components\");\n }\n\n return url.origin;\n } catch {\n throw new Error(\"Invalid declarative egress origin.\");\n }\n}\n\nfunction normalizeHostname(hostname: string): string {\n return hostname\n .replace(/^\\[|\\]$/g, \"\")\n .replace(/\\.$/, \"\")\n .toLowerCase();\n}\n\nfunction isLocalHostname(hostname: string): boolean {\n return hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"::1\";\n}\n\nfunction hasPrivateHostnameSuffix(hostname: string): boolean {\n return [\".internal\", \".lan\", \".local\", \".localhost\"].some((suffix) => hostname.endsWith(suffix));\n}\n\nfunction authorization(input: {\n addresses: readonly string[];\n hostname: string;\n networkClass: DeclarativeEgressNetworkClass;\n origin: string;\n}): DeclarativeEgressAuthorization {\n const addresses = input.addresses.map((address): DeclarativeEgressAddress => {\n const family = isIP(address);\n\n if (family !== 4 && family !== 6) {\n throw policyRejected(\"The workflow destination resolved to an invalid network address.\");\n }\n\n return Object.freeze({ address, family });\n });\n\n return Object.freeze({\n addresses: Object.freeze(addresses),\n hostname: input.hostname,\n networkClass: input.networkClass,\n origin: input.origin\n });\n}\n\nasync function resolvePublicDns(hostname: string): Promise<readonly string[]> {\n const addresses = await lookup(hostname, { all: true, verbatim: true });\n return addresses.map((entry) => entry.address);\n}\n\nfunction providerUnavailable(): DeclarativeRuntimeError {\n return new DeclarativeRuntimeError({\n code: AppRuntimeErrorCode.TEMPORARILY_UNAVAILABLE,\n message: \"The App provider could not be reached.\",\n retryable: true\n });\n}\n\nfunction policyRejected(message: string): DeclarativeRuntimeError {\n return new DeclarativeRuntimeError({\n code: AppRuntimeErrorCode.POLICY_REJECTED,\n message\n });\n}\n\nfunction createPrivateIpv4Ranges(): BlockList {\n const ranges = new BlockList();\n\n for (const [address, prefix] of [\n [\"0.0.0.0\", 8],\n [\"10.0.0.0\", 8],\n [\"100.64.0.0\", 10],\n [\"127.0.0.0\", 8],\n [\"169.254.0.0\", 16],\n [\"172.16.0.0\", 12],\n [\"192.0.0.0\", 24],\n [\"192.0.2.0\", 24],\n [\"192.88.99.0\", 24],\n [\"192.168.0.0\", 16],\n [\"198.18.0.0\", 15],\n [\"198.51.100.0\", 24],\n [\"203.0.113.0\", 24],\n [\"224.0.0.0\", 4],\n [\"240.0.0.0\", 4]\n ] as const) {\n ranges.addSubnet(address, prefix, \"ipv4\");\n }\n\n return ranges;\n}\n\nfunction createPrivateIpv6Ranges(): BlockList {\n const ranges = new BlockList();\n\n for (const [address, prefix] of [\n [\"::\", 96],\n [\"::ffff:0:0\", 96],\n [\"64:ff9b::\", 96],\n [\"64:ff9b:1::\", 48],\n [\"100::\", 64],\n [\"2001::\", 32],\n [\"2001:2::\", 48],\n [\"2001:10::\", 28],\n [\"2001:20::\", 28],\n [\"2001:db8::\", 32],\n [\"2002::\", 16],\n [\"3fff::\", 20],\n [\"5f00::\", 16],\n [\"fc00::\", 7],\n [\"fe80::\", 10],\n [\"fec0::\", 10],\n [\"ff00::\", 8]\n ] as const) {\n ranges.addSubnet(address, prefix, \"ipv6\");\n }\n\n return ranges;\n}\n\nconst privateIpv4Ranges = createPrivateIpv4Ranges();\nconst privateIpv6Ranges = createPrivateIpv6Ranges();\n","import { request as requestHttp, type IncomingMessage, type RequestOptions } from \"node:http\";\nimport { request as requestHttps } from \"node:https\";\nimport { isIP } from \"node:net\";\nimport { AppRuntimeErrorCode } from \"@vekil/app-protocol\";\nimport { isDeclarativeLoopbackAddress, isDeclarativePublicAddress } from \"./egress-policy\";\nimport { DeclarativeRuntimeError } from \"./errors\";\nimport {\n DeclarativeEgressNetworkClass,\n type DeclarativeEgressAuthorization,\n type DeclarativeHttpRequest,\n type DeclarativeHttpResponse,\n type DeclarativeRuntimeHttpTransport\n} from \"./types\";\n\nconst maximumResponseHeaderBytes = 16 * 1024;\n\n/**\n * Opens the socket against an address authorized by the egress policy. The\n * provider hostname is still used for Host and TLS verification, but it is not\n * resolved again by the HTTP stack. This closes the DNS-rebinding gap between\n * policy evaluation and connection establishment.\n */\nexport class PinnedDeclarativeHttpTransport implements DeclarativeRuntimeHttpTransport {\n async request(\n input: DeclarativeHttpRequest,\n options: Parameters<DeclarativeRuntimeHttpTransport[\"request\"]>[1]\n ): Promise<DeclarativeHttpResponse> {\n const address = assertBoundAuthorization(input, options.egressAuthorization);\n\n return new Promise<DeclarativeHttpResponse>((resolve, reject) => {\n const requestOptions = createRequestOptions(input, address.address, options.signal);\n const request =\n input.url.protocol === \"https:\"\n ? requestHttps(\n {\n ...requestOptions,\n minVersion: \"TLSv1.2\",\n rejectUnauthorized: true,\n ...(isIP(options.egressAuthorization.hostname) === 0\n ? { servername: options.egressAuthorization.hostname }\n : {})\n },\n handleResponse\n )\n : requestHttp(requestOptions, handleResponse);\n let settled = false;\n\n function settleError(error: unknown): void {\n if (settled) return;\n settled = true;\n\n if (isAbortError(error) || options.signal.aborted) {\n reject(new DOMException(\"The operation was aborted.\", \"AbortError\"));\n return;\n }\n\n if (error instanceof DeclarativeRuntimeError) {\n reject(error);\n return;\n }\n\n reject(providerUnavailable());\n }\n\n function handleResponse(response: IncomingMessage): void {\n void readBoundedBody(response, options.maxResponseBytes).then((body) => {\n if (settled) return;\n settled = true;\n resolve({\n body,\n headers: normalizeHeaders(response),\n status: response.statusCode ?? 502\n });\n }, settleError);\n }\n\n request.once(\"error\", settleError);\n request.end(input.body);\n });\n }\n}\n\nfunction assertBoundAuthorization(\n input: DeclarativeHttpRequest,\n authorization: DeclarativeEgressAuthorization\n): DeclarativeEgressAuthorization[\"addresses\"][number] {\n const hostname = normalizeHostname(input.url.hostname);\n const address = authorization.addresses[0];\n const validAddress =\n authorization.networkClass === DeclarativeEgressNetworkClass.PUBLIC\n ? address && isDeclarativePublicAddress(address.address)\n : address && isDeclarativeLoopbackAddress(address.address);\n\n if (\n authorization.origin !== input.url.origin ||\n authorization.hostname !== hostname ||\n !address ||\n address.family !== isIP(address.address) ||\n !validAddress\n ) {\n throw new DeclarativeRuntimeError({\n code: AppRuntimeErrorCode.POLICY_REJECTED,\n message: \"The workflow egress authorization does not match the request destination.\"\n });\n }\n\n return address;\n}\n\nfunction createRequestOptions(\n input: DeclarativeHttpRequest,\n address: string,\n signal: AbortSignal\n): RequestOptions {\n return {\n agent: false,\n family: isIP(address),\n headers: {\n ...input.headers,\n \"accept-encoding\": \"identity\",\n host: input.url.host\n },\n hostname: address,\n joinDuplicateHeaders: false,\n maxHeaderSize: maximumResponseHeaderBytes,\n method: input.method,\n path: `${input.url.pathname}${input.url.search}`,\n port: input.url.port || undefined,\n protocol: input.url.protocol,\n signal\n };\n}\n\nasync function readBoundedBody(response: IncomingMessage, maxBytes: number): Promise<Uint8Array> {\n const declaredLength = parseContentLength(response.headers[\"content-length\"]);\n\n if (declaredLength !== null && declaredLength > maxBytes) {\n response.destroy();\n throw responseTooLarge();\n }\n\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n\n for await (const rawChunk of response) {\n const chunk = typeof rawChunk === \"string\" ? Buffer.from(rawChunk) : rawChunk;\n totalBytes += chunk.byteLength;\n\n if (totalBytes > maxBytes) {\n response.destroy();\n throw responseTooLarge();\n }\n\n chunks.push(chunk);\n }\n\n const body = new Uint8Array(totalBytes);\n let offset = 0;\n\n for (const chunk of chunks) {\n body.set(chunk, offset);\n offset += chunk.byteLength;\n }\n\n return body;\n}\n\nfunction normalizeHeaders(response: IncomingMessage): Record<string, string> {\n const normalized: Record<string, string> = {};\n\n for (const [name, value] of Object.entries(response.headers)) {\n if (typeof value === \"string\") {\n normalized[name.toLowerCase()] = value;\n } else if (Array.isArray(value)) {\n normalized[name.toLowerCase()] = value.join(\", \");\n }\n }\n\n return normalized;\n}\n\nfunction parseContentLength(value: string | undefined): number | null {\n if (!value || !/^\\d+$/.test(value)) return null;\n const parsed = Number(value);\n return Number.isSafeInteger(parsed) ? parsed : null;\n}\n\nfunction isAbortError(error: unknown): boolean {\n return (\n (error instanceof DOMException && error.name === \"AbortError\") ||\n (typeof error === \"object\" && error !== null && \"name\" in error && error.name === \"AbortError\")\n );\n}\n\nfunction normalizeHostname(hostname: string): string {\n return hostname\n .replace(/^\\[|\\]$/g, \"\")\n .replace(/\\.$/, \"\")\n .toLowerCase();\n}\n\nfunction providerUnavailable(): DeclarativeRuntimeError {\n return new DeclarativeRuntimeError({\n code: AppRuntimeErrorCode.TEMPORARILY_UNAVAILABLE,\n message: \"The App provider could not be reached.\",\n retryable: true\n });\n}\n\nfunction responseTooLarge(): DeclarativeRuntimeError {\n return new DeclarativeRuntimeError({\n code: AppRuntimeErrorCode.EXECUTION_FAILED,\n message: \"The App provider response exceeded the allowed size.\"\n });\n}\n","const defaultMaximumFetchHeaderBytes = 16 * 1024;\nconst defaultMaximumFetchHeaders = 128;\n\nexport function assertBoundedFetchHeaders(\n headers: Headers,\n createError: () => Error,\n {\n maxBytes = defaultMaximumFetchHeaderBytes,\n maxHeaders = defaultMaximumFetchHeaders\n }: { maxBytes?: number; maxHeaders?: number } = {}\n): void {\n let bytes = 0;\n let count = 0;\n\n for (const [name, value] of headers) {\n count += 1;\n bytes += new TextEncoder().encode(`${name}: ${value}\\r\\n`).byteLength;\n\n if (count > maxHeaders || bytes > maxBytes) {\n throw createError();\n }\n }\n}\n","import { appJwksSchema, type AppJwks, type AppPublicSigningJwk } from \"@vekil/app-protocol\";\nimport { PublicDeclarativeEgressPolicy } from \"./declarative-runtime/egress-policy\";\nimport { PinnedDeclarativeHttpTransport } from \"./declarative-runtime/http-transport\";\nimport { assertBoundedFetchHeaders } from \"./fetch-bounds\";\n\nconst defaultJwksTtlMs = 5 * 60_000;\nconst maxJwksTtlMs = 10 * 60_000;\nconst maxJwksResponseBytes = 64 * 1024;\nconst minimumJwksRefreshIntervalMs = 30_000;\n\nexport interface AppJwksResolver {\n resolve(jwksUrl: string, keyId: string): Promise<AppPublicSigningJwk | null>;\n}\n\nexport class CachedRemoteRuntimeJwksResolver implements AppJwksResolver {\n private readonly cache = new Map<\n string,\n { expiresAt: number; fetchedAt: number; jwks: AppJwks }\n >();\n private readonly fetchImpl: typeof fetch;\n private readonly inFlight = new Map<string, Promise<AppJwks>>();\n private readonly now: () => number;\n private readonly usePinnedTransport: boolean;\n\n constructor({\n fetchImpl = fetch,\n now = Date.now\n }: {\n fetchImpl?: typeof fetch;\n now?: () => number;\n } = {}) {\n this.fetchImpl = fetchImpl;\n this.now = now;\n this.usePinnedTransport = fetchImpl === fetch;\n }\n\n async resolve(jwksUrl: string, keyId: string): Promise<AppPublicSigningJwk | null> {\n const cached = await this.readJwks(jwksUrl, false);\n const cachedKey = cached.keys.find((key) => key.kid === keyId);\n\n if (cachedKey) {\n return cachedKey;\n }\n\n const endpoint = validateRemoteRuntimeUrl(jwksUrl);\n const entry = endpoint ? this.cache.get(endpoint.toString()) : null;\n\n if (!entry || this.now() - entry.fetchedAt < minimumJwksRefreshIntervalMs) {\n return null;\n }\n\n const refreshed = await this.readJwks(jwksUrl, true);\n return refreshed.keys.find((key) => key.kid === keyId) ?? null;\n }\n\n clear(jwksUrl?: string): void {\n if (jwksUrl) {\n const endpoint = validateRemoteRuntimeUrl(jwksUrl);\n\n if (endpoint) {\n this.cache.delete(endpoint.toString());\n }\n\n return;\n }\n\n this.cache.clear();\n }\n\n private async readJwks(jwksUrl: string, forceRefresh: boolean): Promise<AppJwks> {\n const endpoint = validateRemoteRuntimeUrl(jwksUrl);\n\n if (!endpoint) {\n throw new Error(\"app_runtime_jwks_url_invalid\");\n }\n\n const cached = this.cache.get(endpoint.toString());\n\n if (!forceRefresh && cached && cached.expiresAt > this.now()) {\n return cached.jwks;\n }\n\n const inFlight = this.inFlight.get(endpoint.toString());\n\n if (inFlight) {\n return inFlight;\n }\n\n const refresh = this.fetchAndCacheJwks(endpoint);\n this.inFlight.set(endpoint.toString(), refresh);\n\n try {\n return await refresh;\n } finally {\n if (this.inFlight.get(endpoint.toString()) === refresh) {\n this.inFlight.delete(endpoint.toString());\n }\n }\n }\n\n private async fetchAndCacheJwks(endpoint: URL): Promise<AppJwks> {\n const signal = AbortSignal.timeout(5_000);\n let body: string;\n let cacheControl: string | null;\n\n if (this.usePinnedTransport) {\n const policy = new PublicDeclarativeEgressPolicy({\n allowLocalhost: process.env.APP_ENV === \"development\" || process.env.APP_ENV === \"test\",\n allowedOrigins: [endpoint.origin]\n });\n const authorization = await policy.assertAllowed(endpoint);\n const response = await new PinnedDeclarativeHttpTransport().request(\n {\n headers: { accept: \"application/json\" },\n method: \"GET\",\n url: endpoint\n },\n {\n egressAuthorization: authorization,\n maxResponseBytes: maxJwksResponseBytes,\n signal\n }\n );\n\n if (response.status < 200 || response.status >= 300) {\n throw new Error(\"app_runtime_jwks_http_error\");\n }\n\n body = Buffer.from(response.body).toString(\"utf8\");\n cacheControl = response.headers[\"cache-control\"] ?? null;\n } else {\n const response = await this.fetchImpl(endpoint, {\n headers: { accept: \"application/json\" },\n method: \"GET\",\n redirect: \"error\",\n signal\n });\n\n if (!response.ok) {\n throw new Error(\"app_runtime_jwks_http_error\");\n }\n\n body = await readBoundedBody(response, maxJwksResponseBytes);\n cacheControl = response.headers.get(\"cache-control\");\n }\n\n let payload: unknown;\n\n try {\n payload = JSON.parse(body);\n } catch {\n throw new Error(\"app_runtime_jwks_json_invalid\");\n }\n\n const jwks = appJwksSchema.parse(payload);\n const uniqueKeyIds = new Set(jwks.keys.map((key) => key.kid));\n\n if (uniqueKeyIds.size !== jwks.keys.length) {\n throw new Error(\"app_runtime_jwks_key_id_duplicate\");\n }\n\n const fetchedAt = this.now();\n this.cache.set(endpoint.toString(), {\n expiresAt: fetchedAt + readCacheTtlMs(cacheControl),\n fetchedAt,\n jwks\n });\n\n return jwks;\n }\n}\n\nasync function readBoundedBody(response: Response, maxBytes: number): Promise<string> {\n assertBoundedFetchHeaders(\n response.headers,\n () => new Error(\"app_runtime_jwks_response_too_large\")\n );\n const declaredLength = response.headers.get(\"content-length\");\n\n if (declaredLength && /^\\d+$/.test(declaredLength) && Number(declaredLength) > maxBytes) {\n await response.body?.cancel();\n throw new Error(\"app_runtime_jwks_response_too_large\");\n }\n\n if (!response.body) return \"\";\n\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) break;\n totalBytes += value.byteLength;\n\n if (totalBytes > maxBytes) {\n await reader.cancel();\n throw new Error(\"app_runtime_jwks_response_too_large\");\n }\n\n chunks.push(value);\n }\n } finally {\n reader.releaseLock();\n }\n\n const body = new Uint8Array(totalBytes);\n let offset = 0;\n\n for (const chunk of chunks) {\n body.set(chunk, offset);\n offset += chunk.byteLength;\n }\n\n try {\n return new TextDecoder(\"utf-8\", { fatal: true }).decode(body);\n } catch {\n throw new Error(\"app_runtime_jwks_json_invalid\");\n }\n}\n\nexport function validateRemoteRuntimeUrl(value: string): URL | null {\n try {\n const url = new URL(value);\n\n if (url.username || url.password || url.hash) {\n return null;\n }\n\n if (url.protocol === \"https:\") {\n return url;\n }\n\n const localRuntimeAllowed =\n process.env.APP_ENV === \"development\" || process.env.APP_ENV === \"test\";\n const isLocalhost = [\"localhost\", \"127.0.0.1\", \"::1\"].includes(url.hostname);\n\n return localRuntimeAllowed && url.protocol === \"http:\" && isLocalhost ? url : null;\n } catch {\n return null;\n }\n}\n\nfunction readCacheTtlMs(cacheControl: string | null): number {\n if (cacheControl && /(?:^|,)\\s*(?:no-cache|no-store)\\s*(?:,|$)/i.test(cacheControl)) {\n return 0;\n }\n\n const match = cacheControl?.match(/(?:^|,)\\s*max-age=(\\d+)\\s*(?:,|$)/i);\n const maxAgeSeconds = match?.[1] ? Number.parseInt(match[1], 10) : null;\n\n if (maxAgeSeconds === 0) {\n return 0;\n }\n\n if (!maxAgeSeconds || maxAgeSeconds < 1) {\n return defaultJwksTtlMs;\n }\n\n return Math.min(maxAgeSeconds * 1_000, maxJwksTtlMs);\n}\n","import { createHash } from \"node:crypto\";\nimport { stringifyCanonicalJson, type AppManifest } from \"@vekil/app-protocol\";\n\nexport function createAppAuthorizationContractHash(manifest: AppManifest): string {\n const permissions = manifest.connection.permissions\n .map((permission) => ({\n key: permission.key,\n sensitivity: permission.sensitivity\n }))\n .sort((left, right) => (left.key < right.key ? -1 : left.key > right.key ? 1 : 0));\n\n return createHash(\"sha256\")\n .update(\n stringifyCanonicalJson({\n required: manifest.connection.required,\n type: manifest.connection.type,\n permissions\n })\n )\n .digest(\"hex\");\n}\n","import {\n AppClarificationMode,\n AppExecutionStatus,\n AppPlanStatus,\n AppRuntimeHost,\n findAppPlanTopologyIssue,\n stringifyCanonicalJson,\n type AppCompleteInstallationRequest,\n type AppDisconnectInstallationRequest,\n type AppExecuteActionRequest,\n type AppExecuteActionResponse,\n type AppInstallationGrant,\n type AppManifest,\n type AppPlanActionRequest,\n type AppPlanActionResponse,\n type AppPrepareInstallationRequest\n} from \"@vekil/app-protocol\";\nimport { createAppAuthorizationContractHash } from \"./authorization-contract\";\nimport { validateJsonSchema } from \"./json-schema\";\n\nexport const maximumRuntimeClockSkewMs = 30_000;\nexport const maximumInstallationGrantLifetimeMs = 5 * 60_000;\nexport const maximumAppContextLifetimeMs = 5 * 60_000;\n\ntype AppRuntimeProtocolRequest =\n | AppPrepareInstallationRequest\n | AppCompleteInstallationRequest\n | AppDisconnectInstallationRequest\n | AppPlanActionRequest\n | AppExecuteActionRequest;\n\nexport type RuntimeV1ValidationResult =\n | { ok: true }\n | {\n error: string;\n ok: false;\n };\n\n/**\n * Validates the authority carried inside a signed runtime request. The outer\n * JWS proves who sent the bytes; it does not make an expired grant or a stale,\n * mismatched App Context valid.\n */\nexport function validateRuntimeRequestAuthority({\n appId,\n appVersion,\n manifest,\n now,\n request,\n runtimeHost\n}: {\n appId: string;\n appVersion: string;\n manifest: AppManifest;\n now: Date;\n request: AppRuntimeProtocolRequest;\n runtimeHost: AppRuntimeHost;\n}): RuntimeV1ValidationResult {\n const grantValidation = validateInstallationGrant({\n appId,\n appVersion,\n grant: request.grant,\n now\n });\n\n if (!grantValidation.ok) {\n return grantValidation;\n }\n\n if (manifest.app.id !== appId || manifest.app.version !== appVersion) {\n return invalid(\"The pinned manifest does not match this runtime identity.\");\n }\n\n if (request.grant.authorizationContractHash !== createAppAuthorizationContractHash(manifest)) {\n return invalid(\"The installation grant does not match the pinned authorization contract.\");\n }\n\n const declaredCapabilities = new Set<string>(\n manifest.capabilities.map((capability) => capability.id)\n );\n const declaredPermissions = new Set<string>(\n manifest.connection.permissions.map((permission) => permission.key)\n );\n const declaredContextScopes = new Set<string>([\n ...manifest.context.defaultScopes,\n ...manifest.context.optionalScopes\n ]);\n const prohibitedContextScopes = new Set<string>(manifest.context.prohibitedScopes);\n\n if (\n request.grant.capabilityIds.some((capabilityId) => !declaredCapabilities.has(capabilityId)) ||\n request.grant.permissionKeys.some((permissionKey) => !declaredPermissions.has(permissionKey)) ||\n request.grant.contextScopes.some(\n (scope) => !declaredContextScopes.has(scope) || prohibitedContextScopes.has(scope)\n )\n ) {\n return invalid(\"The installation grant exceeds the pinned manifest contract.\");\n }\n\n if (!(\"context\" in request)) {\n return { ok: true };\n }\n\n const context = request.context;\n const contextIssuedAt = Date.parse(context[\"issued-at\"]);\n const contextExpiresAt = Date.parse(context[\"expires-at\"]);\n\n if (\n !Number.isFinite(contextIssuedAt) ||\n !Number.isFinite(contextExpiresAt) ||\n contextIssuedAt > now.getTime() + maximumRuntimeClockSkewMs ||\n contextExpiresAt <= now.getTime() ||\n contextExpiresAt <= contextIssuedAt ||\n contextExpiresAt - contextIssuedAt > maximumAppContextLifetimeMs\n ) {\n return invalid(\"The App Context validity window is invalid.\");\n }\n\n if (\n context.app[\"app-id\"] !== appId ||\n context.app[\"app-version\"] !== appVersion ||\n context.app[\"app-version-id\"] !== request.grant.appVersionId ||\n context.app[\"runtime-type\"] !== runtimeHost ||\n context.installation[\"app-installation-id\"] !== request.grant.installationId ||\n context.installation[\"target-agent-id\"] !== request.grant.targetVekilId ||\n context.execution[\"request-id\"] !== request.requestId ||\n stringifyCanonicalJson(context.input) !== stringifyCanonicalJson(request.input) ||\n context[\"policy-result\"].allowed !== true\n ) {\n return invalid(\"The App Context does not match the signed runtime request.\");\n }\n\n if (\n runtimeHost === AppRuntimeHost.REMOTE &&\n context.security[\"signature-algorithm\"] !== \"ed25519-jws-v1\"\n ) {\n return invalid(\"The Remote App Context is not marked as signed.\");\n }\n\n if (\"intentId\" in request) {\n const contextAction = manifest.actions.find(\n (action) => action.id === context.action[\"action-id\"]\n );\n\n if (\n context[\"context-type\"] !== \"intent-resolution\" ||\n context.request[\"intent-id\"] !== request.intentId ||\n !request.grant.capabilityIds.includes(context.action[\"capability-id\"]) ||\n !contextAction ||\n contextAction.capabilityId !== context.action[\"capability-id\"] ||\n !manifest.intents\n .find((intent) => intent.id === request.intentId)\n ?.actionIds.includes(contextAction.id) ||\n contextAction.context.requiredScopes.some(\n (scope) => !request.grant.contextScopes.includes(scope)\n )\n ) {\n return invalid(\"The planning App Context does not match the requested intent.\");\n }\n\n return { ok: true };\n }\n\n const requestedAction = manifest.actions.find((action) => action.id === request.actionId);\n\n if (\n context[\"context-type\"] !== \"action-execution\" ||\n context.execution[\"execution-id\"] !== request.executionId ||\n context.execution[\"idempotency-key\"] !== request.idempotencyKey ||\n context.execution.attempt !== request.attempt ||\n context.action[\"action-id\"] !== request.actionId ||\n !request.grant.capabilityIds.includes(context.action[\"capability-id\"]) ||\n !requestedAction ||\n requestedAction.capabilityId !== context.action[\"capability-id\"] ||\n requestedAction.context.requiredScopes.some(\n (scope) => !request.grant.contextScopes.includes(scope)\n )\n ) {\n return invalid(\"The execution App Context does not match the requested action.\");\n }\n\n return { ok: true };\n}\n\nfunction validateInstallationGrant({\n appId,\n appVersion,\n grant,\n now\n}: {\n appId: string;\n appVersion: string;\n grant: AppInstallationGrant;\n now: Date;\n}): RuntimeV1ValidationResult {\n const issuedAt = Date.parse(grant.issuedAt);\n const expiresAt = Date.parse(grant.expiresAt);\n\n if (grant.appId !== appId || grant.appVersion !== appVersion || grant.runtimeAudience !== appId) {\n return invalid(\"The installation grant does not target this App version.\");\n }\n\n if (\n !Number.isFinite(issuedAt) ||\n !Number.isFinite(expiresAt) ||\n issuedAt > now.getTime() + maximumRuntimeClockSkewMs ||\n expiresAt <= now.getTime() ||\n expiresAt <= issuedAt ||\n expiresAt - issuedAt > maximumInstallationGrantLifetimeMs\n ) {\n return invalid(\"The installation grant validity window is invalid.\");\n }\n\n return { ok: true };\n}\n\nexport function validateRuntimeResponseIdentity({\n request,\n response\n}: {\n request: { executionId?: string; requestId: string };\n response: { executionId?: string; requestId: string };\n}): RuntimeV1ValidationResult {\n if (response.requestId !== request.requestId) {\n return invalid(\n `Runtime response request ID \"${response.requestId}\" does not match request \"${request.requestId}\".`\n );\n }\n\n if (request.executionId && response.executionId !== request.executionId) {\n return invalid(\n `Runtime response execution ID \"${response.executionId ?? \"missing\"}\" does not match execution \"${request.executionId}\".`\n );\n }\n\n return { ok: true };\n}\n\nexport function validateRuntimePlanResponse({\n manifest,\n request,\n response\n}: {\n manifest: AppManifest;\n request: AppPlanActionRequest;\n response: AppPlanActionResponse;\n}): RuntimeV1ValidationResult {\n const identity = validateRuntimeResponseIdentity({ request, response });\n\n if (!identity.ok) {\n return identity;\n }\n\n const intent = manifest.intents.find((candidate) => candidate.id === request.intentId);\n\n if (!intent) {\n return invalid(`Intent \"${request.intentId}\" is not declared by the pinned manifest.`);\n }\n\n if (\n intent.capabilityIds.some((capabilityId) => !request.grant.capabilityIds.includes(capabilityId))\n ) {\n return invalid(`Intent \"${intent.id}\" requires a capability outside the installation grant.`);\n }\n\n if (response.status === AppPlanStatus.READY && response.actions.length === 0) {\n return invalid(\"A READY plan must contain at least one action.\");\n }\n\n if (\n response.status === AppPlanStatus.READY &&\n (response.missingFields.length > 0 || response.error)\n ) {\n return invalid(\"A READY plan cannot include missing fields or an error.\");\n }\n\n if (\n response.status === AppPlanStatus.NEEDS_CLARIFICATION &&\n response.missingFields.length === 0\n ) {\n return invalid(\"A NEEDS_CLARIFICATION plan must identify at least one missing field.\");\n }\n\n if (\n response.status === AppPlanStatus.NEEDS_CLARIFICATION &&\n (response.actions.length > 0 || response.grounding.length > 0 || response.error)\n ) {\n return invalid(\"A NEEDS_CLARIFICATION plan cannot include actions, grounding, or an error.\");\n }\n\n if (\n response.status === AppPlanStatus.NEEDS_CLARIFICATION &&\n intent.clarificationMode !== AppClarificationMode.ASK_MISSING_FIELDS\n ) {\n return invalid(`Intent \"${intent.id}\" does not allow Runtime field clarification.`);\n }\n\n if (response.status === AppPlanStatus.REJECTED && !response.error) {\n return invalid(\"A REJECTED plan must include an error.\");\n }\n\n if (\n response.status === AppPlanStatus.REJECTED &&\n (response.actions.length > 0 ||\n response.missingFields.length > 0 ||\n response.grounding.length > 0)\n ) {\n return invalid(\"A REJECTED plan cannot include actions, missing fields, or grounding.\");\n }\n\n const declaredFields = new Set([...intent.requiredFields, ...intent.optionalFields]);\n const missingFields = new Set<string>();\n\n for (const field of response.missingFields) {\n if (missingFields.has(field)) {\n return invalid(`Missing field \"${field}\" is repeated.`);\n }\n\n missingFields.add(field);\n\n if (!declaredFields.has(field)) {\n return invalid(`Missing field \"${field}\" is not declared by intent \"${intent.id}\".`);\n }\n\n if (!intent.fieldQuestionKeys[field]) {\n return invalid(\n `Missing field \"${field}\" has no localized field question in intent \"${intent.id}\".`\n );\n }\n }\n\n const topologyIssue = findAppPlanTopologyIssue(response.actions);\n\n if (topologyIssue) {\n return invalid(topologyIssue);\n }\n\n for (const step of response.actions) {\n const action = manifest.actions.find((candidate) => candidate.id === step.actionId);\n\n if (!action || !intent.actionIds.includes(action.id)) {\n return invalid(`Action \"${step.actionId}\" is not allowed for intent \"${intent.id}\".`);\n }\n\n if (!request.grant.capabilityIds.includes(action.capabilityId)) {\n return invalid(`Action \"${action.id}\" is outside the installation capability grant.`);\n }\n\n const input = validateJsonSchema(step.input, action.inputSchema);\n\n if (!input.ok) {\n return invalid(`Action \"${action.id}\" input is invalid: ${input.error}`);\n }\n }\n\n const declaredKnowledge = new Set(intent.knowledgeIds);\n const groundingFacts = new Set<string>();\n\n for (const fact of response.grounding) {\n if (groundingFacts.has(fact.knowledgeId)) {\n return invalid(`Grounding fact \"${fact.knowledgeId}\" is repeated.`);\n }\n\n groundingFacts.add(fact.knowledgeId);\n\n if (\n !declaredKnowledge.has(fact.knowledgeId) ||\n !manifest.knowledge.some((candidate) => candidate.id === fact.knowledgeId)\n ) {\n return invalid(\n `Grounding fact \"${fact.knowledgeId}\" is not declared for intent \"${intent.id}\".`\n );\n }\n }\n\n return { ok: true };\n}\n\nexport function validateRuntimeExecutionResponse({\n manifest,\n request,\n response\n}: {\n manifest: AppManifest;\n request: AppExecuteActionRequest;\n response: AppExecuteActionResponse;\n}): RuntimeV1ValidationResult {\n const identity = validateRuntimeResponseIdentity({ request, response });\n\n if (!identity.ok) {\n return identity;\n }\n\n const action = manifest.actions.find((candidate) => candidate.id === request.actionId);\n\n if (!action) {\n return invalid(`Action \"${request.actionId}\" is not declared by the pinned manifest.`);\n }\n\n if (!request.grant.capabilityIds.includes(action.capabilityId)) {\n return invalid(`Action \"${action.id}\" is outside the installation capability grant.`);\n }\n\n if (response.status === AppExecutionStatus.FAILED) {\n if (!response.error || response.output || response.outcomeId) {\n return invalid(\n \"A failed execution must include an error and cannot include output or outcome.\"\n );\n }\n\n return { ok: true };\n }\n\n if (!response.output || !response.outcomeId || response.error) {\n return invalid(\n \"A successful execution must include output and a declared outcome and cannot include an error.\"\n );\n }\n\n const outcome = manifest.outcomes.find(\n (candidate) => candidate.id === response.outcomeId && candidate.actionId === action.id\n );\n\n if (!outcome || !action.outcomeIds.includes(outcome.id)) {\n return invalid(`Outcome \"${response.outcomeId}\" is not declared for action \"${action.id}\".`);\n }\n\n const actionOutput = validateJsonSchema(response.output, action.outputSchema);\n\n if (!actionOutput.ok) {\n return invalid(`Action output is invalid: ${actionOutput.error}`);\n }\n\n const outcomeOutput = validateJsonSchema(response.output, outcome.schema);\n\n if (!outcomeOutput.ok) {\n return invalid(`Outcome output is invalid: ${outcomeOutput.error}`);\n }\n\n for (const artifact of response.artifacts) {\n const reference = action.outputArtifacts.find(\n (candidate) =>\n candidate.artifactId === artifact.artifactId &&\n candidate.schemaVersion === artifact.schemaVersion\n );\n const contract = manifest.artifactContracts.find(\n (candidate) =>\n candidate.id === artifact.artifactId && candidate.schemaVersion === artifact.schemaVersion\n );\n\n if (!reference || !contract) {\n return invalid(\n `Artifact \"${artifact.artifactId}@${artifact.schemaVersion}\" is not declared by the action.`\n );\n }\n\n const artifactValue = validateJsonSchema(artifact.value, contract.schema);\n\n if (!artifactValue.ok) {\n return invalid(`Artifact \"${artifact.artifactId}\" is invalid: ${artifactValue.error}`);\n }\n }\n\n for (const reference of action.outputArtifacts) {\n const count = response.artifacts.filter(\n (artifact) =>\n artifact.artifactId === reference.artifactId &&\n artifact.schemaVersion === reference.schemaVersion\n ).length;\n\n if (reference.required && count === 0) {\n return invalid(\n `Required artifact \"${reference.artifactId}@${reference.schemaVersion}\" is missing.`\n );\n }\n\n if (reference.cardinality === \"ONE\" && count > 1) {\n return invalid(`Artifact \"${reference.artifactId}\" must be emitted at most once.`);\n }\n }\n\n return { ok: true };\n}\n\nfunction invalid(error: string): RuntimeV1ValidationResult {\n return { error, ok: false };\n}\n","import { randomUUID } from \"node:crypto\";\nimport {\n AppRuntimeErrorCode,\n AppSignatureAlgorithm,\n appCompleteInstallationRequestSchema,\n appCompleteInstallationResponseSchema,\n appDisconnectInstallationRequestSchema,\n appDisconnectInstallationResponseSchema,\n appExecuteActionRequestSchema,\n appExecuteActionResponseSchema,\n appPlanActionRequestSchema,\n appPlanActionResponseSchema,\n appPrepareInstallationRequestSchema,\n appPrepareInstallationResponseSchema,\n appProtocolVersion,\n appRemoteRuntimePaths,\n appRuntimeHealthResponseSchema,\n appSignatureClaimsSchema,\n stringifyCanonicalJson,\n type AppDisconnectInstallationRequest,\n type AppDisconnectInstallationResponse,\n type AppCompleteInstallationRequest,\n type AppCompleteInstallationResponse,\n type AppExecuteActionRequest,\n type AppExecuteActionResponse,\n type AppManifest,\n type AppPlanActionRequest,\n type AppPlanActionResponse,\n type AppPrepareInstallationRequest,\n type AppPrepareInstallationResponse,\n type AppRuntimeHealthResponse,\n type AppSignatureClaims\n} from \"@vekil/app-protocol\";\nimport {\n createAppDetachedJws,\n createAppSignatureHeaders,\n defaultAppSignatureClockSkewMs,\n hashAppProtocolBody,\n readAppSignatureHeaders,\n validateAppSignatureWindow,\n verifyAppDetachedJws,\n type AppProtocolSigningIdentity\n} from \"./protocol-signature\";\nimport {\n CachedRemoteRuntimeJwksResolver,\n type AppJwksResolver,\n validateRemoteRuntimeUrl\n} from \"./runtime-jwks\";\nimport {\n validateRuntimeExecutionResponse,\n validateRuntimePlanResponse,\n validateRuntimeResponseIdentity\n} from \"./runtime-v1-validation\";\nimport { PublicDeclarativeEgressPolicy } from \"./declarative-runtime/egress-policy\";\nimport { PinnedDeclarativeHttpTransport } from \"./declarative-runtime/http-transport\";\nimport { DeclarativeRuntimeError } from \"./declarative-runtime/errors\";\nimport type {\n DeclarativeRuntimeEgressPolicy,\n DeclarativeRuntimeHttpTransport\n} from \"./declarative-runtime/types\";\nimport { assertBoundedFetchHeaders } from \"./fetch-bounds\";\n\nconst defaultSignatureLifetimeMs = 30_000;\nconst defaultRequestTimeoutMs = 30_000;\nconst maxResponseBytes = 2 * 1024 * 1024;\n\nexport enum RemoteRuntimeV1ErrorCode {\n URL_INVALID = \"REMOTE_RUNTIME_V1_URL_INVALID\",\n NETWORK_ERROR = \"REMOTE_RUNTIME_V1_NETWORK_ERROR\",\n RESPONSE_HTTP_ERROR = \"REMOTE_RUNTIME_V1_RESPONSE_HTTP_ERROR\",\n RESPONSE_TOO_LARGE = \"REMOTE_RUNTIME_V1_RESPONSE_TOO_LARGE\",\n RESPONSE_JSON_INVALID = \"REMOTE_RUNTIME_V1_RESPONSE_JSON_INVALID\",\n RESPONSE_SCHEMA_INVALID = \"REMOTE_RUNTIME_V1_RESPONSE_SCHEMA_INVALID\",\n SIGNATURE_HEADERS_MISSING = \"REMOTE_RUNTIME_V1_SIGNATURE_HEADERS_MISSING\",\n SIGNATURE_WINDOW_INVALID = \"REMOTE_RUNTIME_V1_SIGNATURE_WINDOW_INVALID\",\n SIGNATURE_VERIFICATION_UNAVAILABLE = \"REMOTE_RUNTIME_V1_SIGNATURE_VERIFICATION_UNAVAILABLE\",\n SIGNATURE_KEY_UNKNOWN = \"REMOTE_RUNTIME_V1_SIGNATURE_KEY_UNKNOWN\",\n SIGNATURE_INVALID = \"REMOTE_RUNTIME_V1_SIGNATURE_INVALID\",\n SIGNATURE_REPLAYED = \"REMOTE_RUNTIME_V1_SIGNATURE_REPLAYED\",\n HEALTH_IDENTITY_INVALID = \"REMOTE_RUNTIME_V1_HEALTH_IDENTITY_INVALID\"\n}\n\nexport class RemoteRuntimeV1Error extends Error {\n readonly code: RemoteRuntimeV1ErrorCode;\n readonly retryable: boolean;\n readonly statusCode?: number;\n\n constructor({\n code,\n message,\n retryable = false,\n statusCode\n }: {\n code: RemoteRuntimeV1ErrorCode;\n message: string;\n retryable?: boolean;\n statusCode?: number;\n }) {\n super(message);\n this.name = \"RemoteRuntimeV1Error\";\n this.code = code;\n this.retryable = retryable;\n this.statusCode = statusCode;\n }\n}\n\nexport interface AppSignatureReplayClaim {\n audience: string;\n expiresAt: Date;\n issuer: string;\n keyId: string;\n nonce: string;\n}\n\nexport interface AppSignatureReplayStore {\n claim(input: AppSignatureReplayClaim): Promise<boolean>;\n}\n\nexport interface RemoteRuntimeV1ClientConfig {\n appId: string;\n baseUrl: string;\n fetchImpl?: typeof fetch;\n jwksResolver?: AppJwksResolver;\n jwksUrl: string;\n nonceFactory?: () => string;\n now?: () => Date;\n replayStore: AppSignatureReplayStore;\n requestTimeoutMs?: number;\n signatureLifetimeMs?: number;\n signingIdentity: AppProtocolSigningIdentity;\n}\n\ninterface RuntimeSchema<T> {\n parse(input: unknown): T;\n}\n\ninterface DispatchInput<TRequest, TResponse> {\n executionId?: string;\n expectedExecutionId?: string;\n expectedRequestId?: string;\n installationId?: string;\n method: \"GET\" | \"POST\";\n path: string;\n request?: TRequest;\n requestSchema?: RuntimeSchema<TRequest>;\n responseSchema: RuntimeSchema<TResponse>;\n timeoutMs?: number;\n}\n\nexport class RemoteRuntimeV1Client {\n private readonly appId: string;\n private readonly baseUrl: URL;\n private readonly fetchImpl: typeof fetch;\n private readonly egressPolicy: DeclarativeRuntimeEgressPolicy | null;\n private readonly httpTransport: DeclarativeRuntimeHttpTransport | null;\n private readonly jwksResolver: AppJwksResolver;\n private readonly jwksUrl: string;\n private readonly nonceFactory: () => string;\n private readonly now: () => Date;\n private readonly replayStore: AppSignatureReplayStore;\n private readonly requestTimeoutMs: number;\n private readonly signatureLifetimeMs: number;\n private readonly signingIdentity: AppProtocolSigningIdentity;\n\n constructor(config: RemoteRuntimeV1ClientConfig) {\n const baseUrl = validateRemoteRuntimeUrl(config.baseUrl);\n const jwksUrl = validateRemoteRuntimeUrl(config.jwksUrl);\n\n if (!baseUrl || !jwksUrl) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.URL_INVALID,\n \"Remote runtime base URL and JWKS URL must use HTTPS.\"\n );\n }\n\n this.appId = config.appId;\n this.baseUrl = baseUrl;\n this.fetchImpl = config.fetchImpl ?? fetch;\n this.egressPolicy = config.fetchImpl\n ? null\n : new PublicDeclarativeEgressPolicy({\n allowLocalhost: process.env.APP_ENV === \"development\" || process.env.APP_ENV === \"test\",\n allowedOrigins: [baseUrl.origin]\n });\n this.httpTransport = config.fetchImpl ? null : new PinnedDeclarativeHttpTransport();\n this.jwksResolver = config.jwksResolver ?? new CachedRemoteRuntimeJwksResolver();\n this.jwksUrl = jwksUrl.toString();\n this.nonceFactory = config.nonceFactory ?? randomUUID;\n this.now = config.now ?? (() => new Date());\n this.replayStore = config.replayStore;\n this.requestTimeoutMs = config.requestTimeoutMs ?? defaultRequestTimeoutMs;\n this.signatureLifetimeMs = config.signatureLifetimeMs ?? defaultSignatureLifetimeMs;\n this.signingIdentity = config.signingIdentity;\n }\n\n prepareInstallation(\n request: AppPrepareInstallationRequest\n ): Promise<AppPrepareInstallationResponse> {\n return this.dispatch({\n expectedRequestId: request.requestId,\n installationId: request.grant.installationId,\n method: \"POST\",\n path: appRemoteRuntimePaths.prepareInstallation,\n request,\n requestSchema: appPrepareInstallationRequestSchema,\n responseSchema: appPrepareInstallationResponseSchema\n });\n }\n\n completeInstallation(\n request: AppCompleteInstallationRequest\n ): Promise<AppCompleteInstallationResponse> {\n return this.dispatch({\n expectedRequestId: request.requestId,\n installationId: request.grant.installationId,\n method: \"POST\",\n path: appRemoteRuntimePaths.completeInstallation,\n request,\n requestSchema: appCompleteInstallationRequestSchema,\n responseSchema: appCompleteInstallationResponseSchema\n });\n }\n\n disconnectInstallation(\n request: AppDisconnectInstallationRequest\n ): Promise<AppDisconnectInstallationResponse> {\n return this.dispatch({\n expectedRequestId: request.requestId,\n installationId: request.grant.installationId,\n method: \"POST\",\n path: appRemoteRuntimePaths.disconnectInstallation,\n request,\n requestSchema: appDisconnectInstallationRequestSchema,\n responseSchema: appDisconnectInstallationResponseSchema\n });\n }\n\n async planAction(\n request: AppPlanActionRequest,\n manifest: AppManifest\n ): Promise<AppPlanActionResponse> {\n const response = await this.dispatch({\n expectedRequestId: request.requestId,\n installationId: request.grant.installationId,\n method: \"POST\",\n path: appRemoteRuntimePaths.planAction,\n request,\n requestSchema: appPlanActionRequestSchema,\n responseSchema: appPlanActionResponseSchema\n });\n const validation = validateRuntimePlanResponse({ manifest, request, response });\n\n if (!validation.ok) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.RESPONSE_SCHEMA_INVALID,\n \"Remote runtime plan response violates the pinned App contract.\"\n );\n }\n\n return response;\n }\n\n async executeAction(\n request: AppExecuteActionRequest,\n manifest: AppManifest,\n options: { timeoutMs?: number } = {}\n ): Promise<AppExecuteActionResponse> {\n const response = await this.dispatch({\n executionId: request.executionId,\n expectedExecutionId: request.executionId,\n expectedRequestId: request.requestId,\n installationId: request.grant.installationId,\n method: \"POST\",\n path: appRemoteRuntimePaths.executeAction,\n request,\n requestSchema: appExecuteActionRequestSchema,\n responseSchema: appExecuteActionResponseSchema,\n timeoutMs: options.timeoutMs\n });\n const validation = validateRuntimeExecutionResponse({\n manifest,\n request,\n response\n });\n\n if (!validation.ok) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.RESPONSE_SCHEMA_INVALID,\n \"Remote runtime execution response violates the pinned App contract.\"\n );\n }\n\n return response;\n }\n\n async health(expectedAppVersion?: string): Promise<AppRuntimeHealthResponse> {\n const response = await this.dispatch({\n method: \"GET\",\n path: appRemoteRuntimePaths.health,\n responseSchema: appRuntimeHealthResponseSchema\n });\n\n if (\n response.protocolVersion !== appProtocolVersion ||\n response.appId !== this.appId ||\n (expectedAppVersion && response.appVersion !== expectedAppVersion)\n ) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.HEALTH_IDENTITY_INVALID,\n \"Remote runtime health identity does not match the pinned App version.\"\n );\n }\n\n return response;\n }\n\n private async dispatch<TRequest, TResponse>({\n executionId,\n expectedExecutionId,\n expectedRequestId,\n installationId,\n method,\n path,\n request,\n requestSchema,\n responseSchema,\n timeoutMs\n }: DispatchInput<TRequest, TResponse>): Promise<TResponse> {\n const endpoint = new URL(path, this.baseUrl);\n const parsedRequest = requestSchema ? requestSchema.parse(request) : undefined;\n const requestBody = parsedRequest === undefined ? \"\" : stringifyCanonicalJson(parsedRequest);\n const issuedAt = this.now();\n const claims = appSignatureClaimsSchema.parse({\n protocolVersion: appProtocolVersion,\n algorithm: AppSignatureAlgorithm.ED25519,\n issuer: this.signingIdentity.issuer,\n audience: this.appId,\n keyId: this.signingIdentity.keyId,\n method,\n path: `${endpoint.pathname}${endpoint.search}`,\n bodySha256: hashAppProtocolBody(requestBody),\n issuedAt: issuedAt.toISOString(),\n expiresAt: new Date(issuedAt.getTime() + this.signatureLifetimeMs).toISOString(),\n nonce: this.nonceFactory(),\n ...(installationId ? { installationId } : {}),\n ...(executionId ? { executionId } : {})\n });\n const signature = createAppDetachedJws({\n claims,\n privateKeyJwk: this.signingIdentity.privateKeyJwk\n });\n\n let responseBody: string;\n let responseHeaders: Headers | Record<string, string | string[] | undefined>;\n let responseStatus: number;\n\n try {\n const headers = {\n accept: \"application/json\",\n ...(requestBody ? { \"content-type\": \"application/json\" } : {}),\n \"x-vekil-protocol-version\": appProtocolVersion,\n ...createAppSignatureHeaders({ claims, signature })\n };\n const signal = AbortSignal.timeout(timeoutMs ?? this.requestTimeoutMs);\n\n if (this.egressPolicy && this.httpTransport) {\n const egressAuthorization = await this.egressPolicy.assertAllowed(endpoint);\n const response = await this.httpTransport.request(\n {\n ...(requestBody ? { body: requestBody } : {}),\n headers,\n method,\n url: endpoint\n },\n {\n egressAuthorization,\n maxResponseBytes,\n signal\n }\n );\n\n responseBody = Buffer.from(response.body).toString(\"utf8\");\n responseHeaders = response.headers;\n responseStatus = response.status;\n } else {\n const response = await this.fetchImpl(endpoint, {\n ...(requestBody ? { body: requestBody } : {}),\n headers,\n method,\n redirect: \"error\",\n signal\n });\n\n responseBody = await readBoundedFetchBody(response, maxResponseBytes);\n responseHeaders = response.headers;\n responseStatus = response.status;\n }\n\n if (responseStatus < 200 || responseStatus >= 300) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.RESPONSE_HTTP_ERROR,\n \"Remote runtime returned a non-success transport status.\",\n isRetryableRemoteRuntimeStatus(responseStatus),\n responseStatus\n );\n }\n } catch (error) {\n if (error instanceof RemoteRuntimeV1Error) {\n throw error;\n }\n\n if (error instanceof DeclarativeRuntimeError) {\n if (error.code === AppRuntimeErrorCode.POLICY_REJECTED) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.URL_INVALID,\n \"Remote runtime destination is not a public network endpoint.\"\n );\n }\n\n if (\n error.code === AppRuntimeErrorCode.EXECUTION_FAILED &&\n error.message === \"The App provider response exceeded the allowed size.\"\n ) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.RESPONSE_TOO_LARGE,\n \"Remote runtime response exceeded the protocol limit.\"\n );\n }\n }\n\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.NETWORK_ERROR,\n \"Remote runtime request failed.\",\n true\n );\n }\n\n try {\n await verifyAppProtocolSignedPayload({\n audience: this.signingIdentity.issuer,\n body: responseBody,\n executionId,\n headers: responseHeaders,\n installationId,\n issuer: this.appId,\n jwksResolver: this.jwksResolver,\n jwksUrl: this.jwksUrl,\n method,\n now: this.now(),\n path: `${endpoint.pathname}${endpoint.search}`,\n replayStore: this.replayStore\n });\n } catch (error) {\n if (error instanceof RemoteRuntimeV1Error) {\n throw error;\n }\n\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.SIGNATURE_VERIFICATION_UNAVAILABLE,\n \"Remote runtime signature verification is temporarily unavailable.\",\n true\n );\n }\n\n let payload: unknown;\n\n try {\n payload = JSON.parse(responseBody);\n } catch {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.RESPONSE_JSON_INVALID,\n \"Remote runtime returned invalid JSON.\"\n );\n }\n\n let parsedResponse: TResponse;\n\n try {\n parsedResponse = responseSchema.parse(payload);\n } catch {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.RESPONSE_SCHEMA_INVALID,\n \"Remote runtime response does not match the protocol schema.\"\n );\n }\n\n if (expectedRequestId) {\n const identity = validateRuntimeResponseIdentity({\n request: {\n requestId: expectedRequestId,\n ...(expectedExecutionId ? { executionId: expectedExecutionId } : {})\n },\n response: parsedResponse as { executionId?: string; requestId: string }\n });\n\n if (!identity.ok) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.RESPONSE_SCHEMA_INVALID,\n \"Remote runtime response identity does not match the request.\"\n );\n }\n }\n\n return parsedResponse;\n }\n}\n\nasync function readBoundedFetchBody(response: Response, maxBytes: number): Promise<string> {\n assertBoundedFetchHeaders(response.headers, () =>\n runtimeError(\n RemoteRuntimeV1ErrorCode.RESPONSE_TOO_LARGE,\n \"Remote runtime response exceeded the protocol limit.\"\n )\n );\n const declaredLength = response.headers.get(\"content-length\");\n\n if (declaredLength && /^\\d+$/.test(declaredLength) && Number(declaredLength) > maxBytes) {\n await response.body?.cancel();\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.RESPONSE_TOO_LARGE,\n \"Remote runtime response exceeded the protocol limit.\"\n );\n }\n\n if (!response.body) return \"\";\n\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) break;\n totalBytes += value.byteLength;\n\n if (totalBytes > maxBytes) {\n await reader.cancel();\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.RESPONSE_TOO_LARGE,\n \"Remote runtime response exceeded the protocol limit.\"\n );\n }\n\n chunks.push(value);\n }\n } finally {\n reader.releaseLock();\n }\n\n const body = new Uint8Array(totalBytes);\n let offset = 0;\n\n for (const chunk of chunks) {\n body.set(chunk, offset);\n offset += chunk.byteLength;\n }\n\n try {\n return new TextDecoder(\"utf-8\", { fatal: true }).decode(body);\n } catch {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.RESPONSE_JSON_INVALID,\n \"Remote runtime returned invalid JSON.\"\n );\n }\n}\n\nexport async function verifyAppProtocolSignedPayload({\n audience,\n body,\n executionId,\n headers,\n installationId,\n issuer,\n jwksResolver,\n jwksUrl,\n method,\n now = new Date(),\n path,\n replayStore\n}: {\n audience: string;\n body: string;\n executionId?: string;\n headers: Headers | Record<string, string | string[] | undefined>;\n installationId?: string;\n issuer: string;\n jwksResolver: AppJwksResolver;\n jwksUrl: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n now?: Date;\n path: string;\n replayStore: AppSignatureReplayStore;\n}): Promise<AppSignatureClaims> {\n const signatureHeaders = readAppSignatureHeaders(headers);\n\n if (!signatureHeaders) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.SIGNATURE_HEADERS_MISSING,\n \"Remote runtime response is missing signature headers.\"\n );\n }\n\n const claims = appSignatureClaimsSchema.parse({\n protocolVersion: appProtocolVersion,\n algorithm: AppSignatureAlgorithm.ED25519,\n issuer,\n audience,\n keyId: signatureHeaders.keyId,\n method,\n path,\n bodySha256: hashAppProtocolBody(body),\n issuedAt: signatureHeaders.timestamp,\n expiresAt: signatureHeaders.expiresAt,\n nonce: signatureHeaders.nonce,\n ...(installationId ? { installationId } : {}),\n ...(executionId ? { executionId } : {})\n });\n const windowError = validateAppSignatureWindow({ claims, now });\n\n if (windowError) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.SIGNATURE_WINDOW_INVALID,\n `Remote runtime signature window is invalid: ${windowError}.`\n );\n }\n\n const publicKey = await jwksResolver.resolve(jwksUrl, claims.keyId);\n\n if (!publicKey) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.SIGNATURE_KEY_UNKNOWN,\n \"Remote runtime signature key is not present in its JWKS.\"\n );\n }\n\n if (\n !verifyAppDetachedJws({\n claims,\n publicKeyJwk: publicKey,\n signature: signatureHeaders.signature\n })\n ) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.SIGNATURE_INVALID,\n \"Remote runtime signature is invalid.\"\n );\n }\n\n const claimed = await replayStore.claim({\n audience: claims.audience,\n expiresAt: new Date(Date.parse(claims.expiresAt) + defaultAppSignatureClockSkewMs),\n issuer: claims.issuer,\n keyId: claims.keyId,\n nonce: claims.nonce\n });\n\n if (!claimed) {\n throw runtimeError(\n RemoteRuntimeV1ErrorCode.SIGNATURE_REPLAYED,\n \"Remote runtime signature nonce was already consumed.\"\n );\n }\n\n return claims;\n}\n\nfunction runtimeError(\n code: RemoteRuntimeV1ErrorCode,\n message: string,\n retryable = false,\n statusCode?: number\n): RemoteRuntimeV1Error {\n return new RemoteRuntimeV1Error({ code, message, retryable, statusCode });\n}\n\nfunction isRetryableRemoteRuntimeStatus(statusCode: number): boolean {\n return (\n statusCode === 401 ||\n statusCode === 403 ||\n statusCode === 408 ||\n statusCode === 425 ||\n statusCode === 429 ||\n statusCode >= 500\n );\n}\n","import { randomUUID } from \"node:crypto\";\nimport {\n AppExecutionStatus,\n AppInstallationConnectionStatus,\n AppPlanStatus,\n AppRuntimeErrorCode,\n AppRuntimeHealthStatus,\n AppRuntimeHost,\n AppSignatureAlgorithm,\n appCompleteInstallationRequestSchema,\n appCompleteInstallationResponseSchema,\n appDisconnectInstallationRequestSchema,\n appDisconnectInstallationResponseSchema,\n appExecuteActionRequestSchema,\n appExecuteActionResponseSchema,\n appPlanActionRequestSchema,\n appPlanActionResponseSchema,\n appPrepareInstallationRequestSchema,\n appPrepareInstallationResponseSchema,\n appProtocolVersion,\n appRemoteRuntimePaths,\n appRuntimeHealthResponseSchema,\n appSignatureClaimsSchema,\n stringifyCanonicalJson,\n type AppCompleteInstallationRequest,\n type AppCompleteInstallationResponse,\n type AppDisconnectInstallationRequest,\n type AppDisconnectInstallationResponse,\n type AppExecuteActionRequest,\n type AppExecuteActionResponse,\n type AppManifest,\n type AppPlanActionRequest,\n type AppPlanActionResponse,\n type AppPrepareInstallationRequest,\n type AppPrepareInstallationResponse,\n type AppRuntimeHealthResponse\n} from \"@vekil/app-protocol\";\nimport {\n createAppDetachedJws,\n createAppSignatureHeaders,\n hashAppProtocolBody,\n type AppProtocolSigningIdentity\n} from \"./protocol-signature\";\nimport { verifyAppProtocolSignedPayload, type AppSignatureReplayStore } from \"./remote-runtime-v1\";\nimport { CachedRemoteRuntimeJwksResolver, type AppJwksResolver } from \"./runtime-jwks\";\nimport {\n validateRuntimeRequestAuthority,\n validateRuntimeResponseIdentity\n} from \"./runtime-v1-validation\";\n\nconst defaultSignatureLifetimeMs = 30_000;\nconst maxRequestBytes = 2 * 1024 * 1024;\n\ntype RuntimeMethod = \"GET\" | \"POST\";\ntype RuntimeHeaders = Headers | Record<string, string | string[] | undefined>;\n\ninterface RuntimeSchema<T> {\n parse(input: unknown): T;\n}\n\ninterface ProtocolRequestIdentity {\n executionId?: string;\n installationId?: string;\n requestId?: string;\n}\n\nexport interface AppRuntimeV1ServerRequest {\n body: string;\n headers: RuntimeHeaders;\n method: RuntimeMethod;\n path: string;\n}\n\nexport interface AppRuntimeV1ServerResponse {\n body: string;\n headers: Record<string, string>;\n statusCode: number;\n}\n\nexport interface AppRuntimeV1Handlers {\n completeInstallation(\n request: AppCompleteInstallationRequest\n ): Promise<AppCompleteInstallationResponse>;\n disconnectInstallation(\n request: AppDisconnectInstallationRequest\n ): Promise<AppDisconnectInstallationResponse>;\n executeAction(request: AppExecuteActionRequest): Promise<AppExecuteActionResponse>;\n health(): Promise<AppRuntimeHealthResponse>;\n planAction(request: AppPlanActionRequest): Promise<AppPlanActionResponse>;\n prepareInstallation(\n request: AppPrepareInstallationRequest\n ): Promise<AppPrepareInstallationResponse>;\n}\n\nexport interface AppRuntimeV1ServerConfig {\n appId: string;\n appVersion: string;\n handlers: AppRuntimeV1Handlers;\n manifest: AppManifest;\n jwksResolver?: AppJwksResolver;\n nonceFactory?: () => string;\n now?: () => Date;\n platformIssuer: string;\n platformJwksUrl: string;\n replayStore: AppSignatureReplayStore;\n signatureLifetimeMs?: number;\n signingIdentity: AppProtocolSigningIdentity;\n}\n\nexport enum AppRuntimeV1ServerErrorCode {\n ROUTE_NOT_FOUND = \"APP_RUNTIME_V1_ROUTE_NOT_FOUND\",\n REQUEST_TOO_LARGE = \"APP_RUNTIME_V1_REQUEST_TOO_LARGE\",\n REQUEST_JSON_INVALID = \"APP_RUNTIME_V1_REQUEST_JSON_INVALID\",\n REQUEST_SCHEMA_INVALID = \"APP_RUNTIME_V1_REQUEST_SCHEMA_INVALID\",\n REQUEST_IDENTITY_INVALID = \"APP_RUNTIME_V1_REQUEST_IDENTITY_INVALID\",\n REQUEST_SIGNATURE_INVALID = \"APP_RUNTIME_V1_REQUEST_SIGNATURE_INVALID\"\n}\n\nexport class AppRuntimeV1ServerError extends Error {\n readonly code: AppRuntimeV1ServerErrorCode;\n readonly statusCode: number;\n\n constructor({\n code,\n message,\n statusCode\n }: {\n code: AppRuntimeV1ServerErrorCode;\n message: string;\n statusCode: number;\n }) {\n super(message);\n this.name = \"AppRuntimeV1ServerError\";\n this.code = code;\n this.statusCode = statusCode;\n }\n}\n\nexport class AppRuntimeV1Server {\n private readonly appId: string;\n private readonly appVersion: string;\n private readonly handlers: AppRuntimeV1Handlers;\n private readonly manifest: AppManifest;\n private readonly jwksResolver: AppJwksResolver;\n private readonly nonceFactory: () => string;\n private readonly now: () => Date;\n private readonly platformIssuer: string;\n private readonly platformJwksUrl: string;\n private readonly replayStore: AppSignatureReplayStore;\n private readonly signatureLifetimeMs: number;\n private readonly signingIdentity: AppProtocolSigningIdentity;\n\n constructor(config: AppRuntimeV1ServerConfig) {\n this.appId = config.appId;\n this.appVersion = config.appVersion;\n this.handlers = config.handlers;\n this.manifest = config.manifest;\n this.jwksResolver = config.jwksResolver ?? new CachedRemoteRuntimeJwksResolver();\n this.nonceFactory = config.nonceFactory ?? randomUUID;\n this.now = config.now ?? (() => new Date());\n this.platformIssuer = config.platformIssuer;\n this.platformJwksUrl = config.platformJwksUrl;\n this.replayStore = config.replayStore;\n this.signatureLifetimeMs = config.signatureLifetimeMs ?? defaultSignatureLifetimeMs;\n this.signingIdentity = config.signingIdentity;\n }\n\n async handle(request: AppRuntimeV1ServerRequest): Promise<AppRuntimeV1ServerResponse> {\n if (Buffer.byteLength(request.body, \"utf8\") > maxRequestBytes) {\n throw serverError(\n AppRuntimeV1ServerErrorCode.REQUEST_TOO_LARGE,\n \"App runtime request exceeded the protocol limit.\",\n 413\n );\n }\n\n if (request.method === \"GET\" && request.path === appRemoteRuntimePaths.health) {\n await this.verifyRequest(request, {});\n return this.invokeAndSign({\n identity: {},\n invoke: () => this.handlers.health(),\n method: request.method,\n path: request.path,\n responseSchema: appRuntimeHealthResponseSchema,\n recover: () => ({\n protocolVersion: appProtocolVersion,\n status: AppRuntimeHealthStatus.UNHEALTHY,\n appId: this.appId,\n appVersion: this.appVersion,\n checkedAt: this.now().toISOString(),\n message: \"The App runtime is unavailable.\"\n })\n });\n }\n\n if (request.method !== \"POST\") {\n throw routeNotFound();\n }\n\n const payload = parseRequestBody(request.body);\n\n switch (request.path) {\n case appRemoteRuntimePaths.prepareInstallation:\n return this.handleSignedRoute({\n request,\n payload,\n requestSchema: appPrepareInstallationRequestSchema,\n responseSchema: appPrepareInstallationResponseSchema,\n invoke: (value) => this.handlers.prepareInstallation(value),\n recover: (value): AppPrepareInstallationResponse => ({\n protocolVersion: appProtocolVersion,\n requestId: value.requestId,\n status: AppInstallationConnectionStatus.FAILED,\n error: runtimeUnavailable()\n })\n });\n case appRemoteRuntimePaths.completeInstallation:\n return this.handleSignedRoute({\n request,\n payload,\n requestSchema: appCompleteInstallationRequestSchema,\n responseSchema: appCompleteInstallationResponseSchema,\n invoke: (value) => this.handlers.completeInstallation(value),\n recover: (value): AppCompleteInstallationResponse => ({\n protocolVersion: appProtocolVersion,\n requestId: value.requestId,\n status: AppInstallationConnectionStatus.FAILED,\n error: runtimeUnavailable()\n })\n });\n case appRemoteRuntimePaths.disconnectInstallation:\n return this.handleSignedRoute({\n request,\n payload,\n requestSchema: appDisconnectInstallationRequestSchema,\n responseSchema: appDisconnectInstallationResponseSchema,\n invoke: (value) => this.handlers.disconnectInstallation(value),\n recover: (value) => ({\n protocolVersion: appProtocolVersion,\n requestId: value.requestId,\n disconnected: false,\n error: runtimeUnavailable()\n })\n });\n case appRemoteRuntimePaths.planAction:\n return this.handleSignedRoute({\n request,\n payload,\n requestSchema: appPlanActionRequestSchema,\n responseSchema: appPlanActionResponseSchema,\n invoke: (value) => this.handlers.planAction(value),\n recover: (value) => ({\n protocolVersion: appProtocolVersion,\n requestId: value.requestId,\n status: AppPlanStatus.REJECTED,\n actions: [],\n missingFields: [],\n grounding: [],\n error: runtimeUnavailable()\n })\n });\n case appRemoteRuntimePaths.executeAction:\n return this.handleSignedRoute({\n request,\n payload,\n requestSchema: appExecuteActionRequestSchema,\n responseSchema: appExecuteActionResponseSchema,\n invoke: (value) => this.handlers.executeAction(value),\n recover: (value) => ({\n protocolVersion: appProtocolVersion,\n requestId: value.requestId,\n executionId: value.executionId,\n status: AppExecutionStatus.FAILED,\n artifacts: [],\n bubbles: [],\n error: runtimeUnavailable()\n })\n });\n default:\n throw routeNotFound();\n }\n }\n\n private async handleSignedRoute<TRequest, TResponse>({\n invoke,\n payload,\n recover,\n request,\n requestSchema,\n responseSchema\n }: {\n invoke(value: TRequest): Promise<TResponse>;\n payload: unknown;\n recover(value: TRequest): TResponse;\n request: AppRuntimeV1ServerRequest;\n requestSchema: RuntimeSchema<TRequest>;\n responseSchema: RuntimeSchema<TResponse>;\n }): Promise<AppRuntimeV1ServerResponse> {\n const value = parseProtocolRequest(requestSchema, payload);\n const identity = readProtocolRequestIdentity(value);\n\n const authority = validateRuntimeRequestAuthority({\n appId: this.appId,\n appVersion: this.appVersion,\n manifest: this.manifest,\n now: this.now(),\n request: value as Parameters<typeof validateRuntimeRequestAuthority>[0][\"request\"],\n runtimeHost: AppRuntimeHost.REMOTE\n });\n\n if (!authority.ok) {\n throw invalidIdentity();\n }\n await this.verifyRequest(request, identity);\n\n return this.invokeAndSign({\n identity,\n invoke: () => invoke(value),\n method: request.method,\n path: request.path,\n recover: () => recover(value),\n responseSchema\n });\n }\n\n private async verifyRequest(\n request: AppRuntimeV1ServerRequest,\n identity: ProtocolRequestIdentity\n ): Promise<void> {\n try {\n await verifyAppProtocolSignedPayload({\n audience: this.appId,\n body: request.body,\n ...(identity.executionId ? { executionId: identity.executionId } : {}),\n headers: request.headers,\n ...(identity.installationId ? { installationId: identity.installationId } : {}),\n issuer: this.platformIssuer,\n jwksResolver: this.jwksResolver,\n jwksUrl: this.platformJwksUrl,\n method: request.method,\n now: this.now(),\n path: request.path,\n replayStore: this.replayStore\n });\n } catch {\n throw serverError(\n AppRuntimeV1ServerErrorCode.REQUEST_SIGNATURE_INVALID,\n \"App runtime request signature is invalid.\",\n 401\n );\n }\n }\n\n private async invokeAndSign<T>({\n identity,\n invoke,\n method,\n path,\n recover,\n responseSchema\n }: {\n identity: ProtocolRequestIdentity;\n invoke(): Promise<T>;\n method: RuntimeMethod;\n path: string;\n recover(): T;\n responseSchema: RuntimeSchema<T>;\n }): Promise<AppRuntimeV1ServerResponse> {\n let response: T;\n\n try {\n response = responseSchema.parse(await invoke());\n\n if (identity.requestId) {\n const responseIdentity = validateRuntimeResponseIdentity({\n request: {\n requestId: identity.requestId,\n ...(identity.executionId ? { executionId: identity.executionId } : {})\n },\n response: response as { executionId?: string; requestId: string }\n });\n\n if (!responseIdentity.ok) {\n throw new Error(responseIdentity.error);\n }\n }\n } catch (error) {\n console.error(\"App runtime handler response rejected by the protocol\", {\n error_name: error instanceof Error ? error.name : \"UnknownError\",\n method,\n path,\n request_id: identity.requestId ?? null,\n execution_id: identity.executionId ?? null\n });\n response = responseSchema.parse(recover());\n }\n\n const body = stringifyCanonicalJson(response);\n const issuedAt = this.now();\n const claims = appSignatureClaimsSchema.parse({\n protocolVersion: appProtocolVersion,\n algorithm: AppSignatureAlgorithm.ED25519,\n issuer: this.appId,\n audience: this.platformIssuer,\n keyId: this.signingIdentity.keyId,\n method,\n path,\n bodySha256: hashAppProtocolBody(body),\n issuedAt: issuedAt.toISOString(),\n expiresAt: new Date(issuedAt.getTime() + this.signatureLifetimeMs).toISOString(),\n nonce: this.nonceFactory(),\n ...(identity.installationId ? { installationId: identity.installationId } : {}),\n ...(identity.executionId ? { executionId: identity.executionId } : {})\n });\n const signature = createAppDetachedJws({\n claims,\n privateKeyJwk: this.signingIdentity.privateKeyJwk\n });\n\n return {\n body,\n headers: {\n \"content-type\": \"application/json\",\n \"x-vekil-protocol-version\": appProtocolVersion,\n ...createAppSignatureHeaders({ claims, signature })\n },\n statusCode: 200\n };\n }\n}\n\nfunction parseRequestBody(body: string): unknown {\n try {\n return JSON.parse(body) as unknown;\n } catch {\n throw serverError(\n AppRuntimeV1ServerErrorCode.REQUEST_JSON_INVALID,\n \"App runtime request body is not valid JSON.\",\n 400\n );\n }\n}\n\nfunction parseProtocolRequest<T>(schema: RuntimeSchema<T>, payload: unknown): T {\n try {\n return schema.parse(payload);\n } catch {\n throw serverError(\n AppRuntimeV1ServerErrorCode.REQUEST_SCHEMA_INVALID,\n \"App runtime request does not match the protocol schema.\",\n 400\n );\n }\n}\n\nfunction readProtocolRequestIdentity(value: unknown): ProtocolRequestIdentity {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const record = value as Record<string, unknown>;\n const grant = record.grant;\n const installationId =\n grant && typeof grant === \"object\" && !Array.isArray(grant)\n ? (grant as Record<string, unknown>).installationId\n : undefined;\n\n return {\n ...(typeof record.executionId === \"string\" ? { executionId: record.executionId } : {}),\n ...(typeof installationId === \"string\" ? { installationId } : {}),\n ...(typeof record.requestId === \"string\" ? { requestId: record.requestId } : {})\n };\n}\n\nfunction invalidIdentity(): AppRuntimeV1ServerError {\n return serverError(\n AppRuntimeV1ServerErrorCode.REQUEST_IDENTITY_INVALID,\n \"App runtime request does not target this App version.\",\n 403\n );\n}\n\nfunction runtimeUnavailable() {\n return {\n code: AppRuntimeErrorCode.TEMPORARILY_UNAVAILABLE,\n message: \"The App runtime is temporarily unavailable.\",\n retryable: true\n } as const;\n}\n\nfunction routeNotFound(): AppRuntimeV1ServerError {\n return serverError(\n AppRuntimeV1ServerErrorCode.ROUTE_NOT_FOUND,\n \"App runtime route was not found.\",\n 404\n );\n}\n\nfunction serverError(\n code: AppRuntimeV1ServerErrorCode,\n message: string,\n statusCode: number\n): AppRuntimeV1ServerError {\n return new AppRuntimeV1ServerError({ code, message, statusCode });\n}\n","import type { IncomingMessage, ServerResponse } from \"node:http\";\nimport {\n AppRuntimeV1Server,\n AppRuntimeV1ServerError,\n AppRuntimeV1ServerErrorCode,\n deriveAppPublicSigningJwk,\n type AppJwksResolver,\n type AppProtocolSigningIdentity,\n type AppRuntimeV1Handlers,\n type AppSignatureReplayStore\n} from \"@vekil/app-runtime/server\";\nimport {\n AppRuntimeHost,\n appJwksSchema,\n appManifestSchema,\n stringifyCanonicalJson,\n type AppJwks,\n type AppManifest\n} from \"@vekil/app-protocol\";\n\nconst maxNodeRequestBytes = 2 * 1024 * 1024;\n\nexport interface RemoteAppRuntimeConfig {\n handlers: AppRuntimeV1Handlers;\n jwksResolver?: AppJwksResolver;\n manifest: unknown;\n platformIssuer?: string;\n platformJwksUrl: string;\n replayStore: AppSignatureReplayStore;\n signingIdentity: AppProtocolSigningIdentity;\n}\n\nexport class RemoteAppRuntime {\n readonly manifest: AppManifest;\n\n private readonly jwks: AppJwks;\n private readonly jwksPath: string;\n private readonly server: AppRuntimeV1Server;\n\n constructor(config: RemoteAppRuntimeConfig) {\n const manifest = appManifestSchema.parse(config.manifest);\n\n if (manifest.runtime.host !== AppRuntimeHost.REMOTE) {\n throw new Error(\"remote_app_runtime_requires_remote_manifest\");\n }\n\n if (config.signingIdentity.issuer !== manifest.app.id) {\n throw new Error(\"remote_app_runtime_signing_issuer_mismatch\");\n }\n\n this.manifest = manifest;\n this.jwks = appJwksSchema.parse({\n keys: [deriveAppPublicSigningJwk(config.signingIdentity)]\n });\n this.jwksPath = new URL(manifest.runtime.jwksUrl).pathname;\n this.server = new AppRuntimeV1Server({\n appId: manifest.app.id,\n appVersion: manifest.app.version,\n handlers: config.handlers,\n manifest,\n ...(config.jwksResolver ? { jwksResolver: config.jwksResolver } : {}),\n platformIssuer: config.platformIssuer ?? \"vekil\",\n platformJwksUrl: config.platformJwksUrl,\n replayStore: config.replayStore,\n signingIdentity: config.signingIdentity\n });\n }\n\n getJwks(): AppJwks {\n return this.jwks;\n }\n\n async handle(request: Request): Promise<Response> {\n const endpoint = new URL(request.url);\n\n if (request.method === \"GET\" && endpoint.pathname === this.jwksPath) {\n return jsonResponse(this.jwks, 200, { \"cache-control\": \"public, max-age=300\" });\n }\n\n if (request.method !== \"GET\" && request.method !== \"POST\") {\n return jsonResponse({ error: AppRuntimeV1ServerErrorCode.ROUTE_NOT_FOUND }, 404);\n }\n\n try {\n const body = request.method === \"GET\" ? \"\" : await readRemoteAppFetchRequestBody(request);\n const result = await this.server.handle({\n body,\n headers: request.headers,\n method: request.method === \"GET\" ? \"GET\" : \"POST\",\n path: `${endpoint.pathname}${endpoint.search}`\n });\n\n return new Response(result.body, {\n headers: result.headers,\n status: result.statusCode\n });\n } catch (error) {\n if (error instanceof AppRuntimeV1ServerError) {\n return jsonResponse({ error: error.code }, error.statusCode);\n }\n\n return jsonResponse({ error: AppRuntimeV1ServerErrorCode.REQUEST_SCHEMA_INVALID }, 500);\n }\n }\n\n async handleNodeRequest(request: IncomingMessage, response: ServerResponse): Promise<void> {\n try {\n const body = await readNodeRequestBody(request);\n const headers = new Headers();\n\n for (const [name, value] of Object.entries(request.headers)) {\n if (Array.isArray(value)) {\n for (const item of value) headers.append(name, item);\n } else if (value !== undefined) {\n headers.set(name, value);\n }\n }\n\n const host = request.headers.host ?? \"localhost\";\n const method = request.method ?? \"GET\";\n const result = await this.handle(\n new Request(new URL(request.url ?? \"/\", `http://${host}`), {\n body: method === \"GET\" || method === \"HEAD\" ? undefined : body,\n headers,\n method\n })\n );\n\n await writeNodeResponse(response, result);\n } catch (error) {\n const result =\n error instanceof AppRuntimeV1ServerError\n ? jsonResponse({ error: error.code }, error.statusCode)\n : jsonResponse({ error: AppRuntimeV1ServerErrorCode.REQUEST_SCHEMA_INVALID }, 500);\n await writeNodeResponse(response, result);\n }\n }\n}\n\nexport function createRemoteAppRuntime(config: RemoteAppRuntimeConfig): RemoteAppRuntime {\n return new RemoteAppRuntime(config);\n}\n\nasync function readNodeRequestBody(request: IncomingMessage): Promise<string> {\n if (request.method === \"GET\" || request.method === \"HEAD\") return \"\";\n\n const chunks: Buffer[] = [];\n let total = 0;\n\n for await (const chunk of request) {\n const value = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);\n total += value.byteLength;\n\n if (total > maxNodeRequestBytes) {\n throw new AppRuntimeV1ServerError({\n code: AppRuntimeV1ServerErrorCode.REQUEST_TOO_LARGE,\n message: \"App runtime request exceeded the protocol limit.\",\n statusCode: 413\n });\n }\n\n chunks.push(value);\n }\n\n return Buffer.concat(chunks).toString(\"utf8\");\n}\n\nexport async function readRemoteAppFetchRequestBody(request: Request): Promise<string> {\n const declaredLength = request.headers.get(\"content-length\");\n\n if (\n declaredLength &&\n /^\\d+$/.test(declaredLength) &&\n Number(declaredLength) > maxNodeRequestBytes\n ) {\n await request.body?.cancel();\n throw requestTooLarge();\n }\n\n if (!request.body) return \"\";\n\n const reader = request.body.getReader();\n const chunks: Uint8Array[] = [];\n let total = 0;\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) break;\n total += value.byteLength;\n\n if (total > maxNodeRequestBytes) {\n await reader.cancel();\n throw requestTooLarge();\n }\n\n chunks.push(value);\n }\n } finally {\n reader.releaseLock();\n }\n\n const body = new Uint8Array(total);\n let offset = 0;\n\n for (const chunk of chunks) {\n body.set(chunk, offset);\n offset += chunk.byteLength;\n }\n\n try {\n return new TextDecoder(\"utf-8\", { fatal: true }).decode(body);\n } catch {\n throw new AppRuntimeV1ServerError({\n code: AppRuntimeV1ServerErrorCode.REQUEST_JSON_INVALID,\n message: \"App runtime request body is not valid UTF-8.\",\n statusCode: 400\n });\n }\n}\n\nfunction requestTooLarge(): AppRuntimeV1ServerError {\n return new AppRuntimeV1ServerError({\n code: AppRuntimeV1ServerErrorCode.REQUEST_TOO_LARGE,\n message: \"App runtime request exceeded the protocol limit.\",\n statusCode: 413\n });\n}\n\nfunction jsonResponse(\n value: unknown,\n status: number,\n headers: Record<string, string> = {}\n): Response {\n return new Response(`${stringifyCanonicalJson(value)}\\n`, {\n headers: { \"content-type\": \"application/json\", ...headers },\n status\n });\n}\n\nasync function writeNodeResponse(response: ServerResponse, result: Response): Promise<void> {\n response.statusCode = result.status;\n result.headers.forEach((value, name) => response.setHeader(name, value));\n response.end(await result.text());\n}\n","import { appLocalKeySchema, appManifestSchema, type AppManifest } from \"@vekil/app-protocol\";\n\nexport interface AppRuntimeBindings {\n readonly appId: string;\n readonly appVersion: string;\n actionId(key: string): string;\n artifactId(key: string): string;\n capabilityId(key: string): string;\n intentId(key: string): string;\n knowledgeId(key: string): string;\n outcomeId(key: string): string;\n publicActionId(key: string): string;\n resourceId(key: string): string;\n triggerId(key: string): string;\n}\n\nexport function createAppRuntimeBindings(manifestInput: unknown): AppRuntimeBindings {\n const manifest = appManifestSchema.parse(manifestInput);\n\n return Object.freeze({\n appId: manifest.app.id,\n appVersion: manifest.app.version,\n actionId: createBindingResolver(\n manifest,\n \"action\",\n manifest.actions.map(({ id }) => id)\n ),\n artifactId: createBindingResolver(\n manifest,\n \"artifact\",\n manifest.artifactContracts.map(({ id }) => id)\n ),\n capabilityId: createBindingResolver(\n manifest,\n \"capability\",\n manifest.capabilities.map(({ id }) => id)\n ),\n intentId: createBindingResolver(\n manifest,\n \"intent\",\n manifest.intents.map(({ id }) => id)\n ),\n knowledgeId: createBindingResolver(\n manifest,\n \"knowledge\",\n manifest.knowledge.map(({ id }) => id)\n ),\n outcomeId: createBindingResolver(\n manifest,\n \"outcome\",\n manifest.outcomes.map(({ id }) => id)\n ),\n publicActionId: createBindingResolver(\n manifest,\n \"public_action\",\n manifest.publicActions.map(({ id }) => id)\n ),\n resourceId: createBindingResolver(manifest, \"resource\", manifest.resources),\n triggerId: createBindingResolver(\n manifest,\n \"trigger\",\n manifest.triggers.map(({ id }) => id)\n )\n });\n}\n\nfunction createBindingResolver(\n manifest: AppManifest,\n kind: string,\n declaredIds: string[]\n): (key: string) => string {\n const ids = new Set(declaredIds);\n\n return (key: string): string => {\n const localKey = appLocalKeySchema.parse(key);\n const id = `${manifest.app.id}.${localKey}`;\n\n if (!ids.has(id)) {\n throw new Error(`app_runtime_${kind}_binding_missing:${localKey}`);\n }\n\n return id;\n };\n}\n","import {\n appManifestSchema,\n appProtocolVersion,\n appRuntimeHealthResponseSchema,\n type AppRuntimeHealthResponse,\n type AppRuntimeHealthStatus\n} from \"@vekil/app-protocol\";\n\nexport function createAppRuntimeHealthResponse({\n manifest: manifestInput,\n status,\n checkedAt = new Date(),\n message\n}: {\n manifest: unknown;\n status: AppRuntimeHealthStatus;\n checkedAt?: Date;\n message?: string;\n}): AppRuntimeHealthResponse {\n const manifest = appManifestSchema.parse(manifestInput);\n\n return appRuntimeHealthResponseSchema.parse({\n protocolVersion: appProtocolVersion,\n status,\n appId: manifest.app.id,\n appVersion: manifest.app.version,\n checkedAt: checkedAt.toISOString(),\n ...(message ? { message } : {})\n });\n}\n","import { generateKeyPairSync, randomBytes } from \"node:crypto\";\nimport {\n AppSignatureAlgorithm,\n appJwksSchema,\n appManifestSchema,\n type AppJwks\n} from \"@vekil/app-protocol\";\nimport {\n deriveAppPublicSigningJwk,\n readAppProtocolSigningIdentity,\n type AppProtocolSigningIdentity\n} from \"@vekil/app-runtime/server\";\n\nexport interface AppRuntimeKeyMaterial {\n jwks: AppJwks;\n keyId: string;\n privateJwkBase64url: string;\n signingIdentity: AppProtocolSigningIdentity;\n}\n\nexport function generateAppRuntimeKeyMaterial({\n manifest: manifestInput,\n keyId = createKeyId()\n}: {\n manifest: unknown;\n keyId?: string;\n}): AppRuntimeKeyMaterial {\n const manifest = appManifestSchema.parse(manifestInput);\n return generateKeyMaterial(manifest.app.id, keyId);\n}\n\nexport function readAppRuntimeSigningIdentity({\n manifest: manifestInput,\n keyId,\n privateJwkBase64url\n}: {\n manifest: unknown;\n keyId?: string;\n privateJwkBase64url?: string;\n}): AppProtocolSigningIdentity | null {\n const manifest = appManifestSchema.parse(manifestInput);\n return readAppProtocolSigningIdentity({\n issuer: manifest.app.id,\n keyId,\n privateJwkBase64url\n });\n}\n\nfunction generateKeyMaterial(issuer: string, keyId: string): AppRuntimeKeyMaterial {\n const { privateKey } = generateKeyPairSync(\"ed25519\");\n const privateJwk = {\n ...privateKey.export({ format: \"jwk\" }),\n alg: AppSignatureAlgorithm.ED25519,\n crv: \"Ed25519\",\n kid: keyId,\n kty: \"OKP\",\n use: \"sig\"\n };\n const privateJwkBase64url = Buffer.from(JSON.stringify(privateJwk), \"utf8\").toString(\"base64url\");\n const signingIdentity = readAppProtocolSigningIdentity({\n issuer,\n keyId,\n privateJwkBase64url\n });\n\n if (!signingIdentity) {\n throw new Error(\"app_runtime_signing_identity_generation_failed\");\n }\n\n return {\n jwks: appJwksSchema.parse({ keys: [deriveAppPublicSigningJwk(signingIdentity)] }),\n keyId,\n privateJwkBase64url,\n signingIdentity\n };\n}\n\nfunction createKeyId(): string {\n const date = new Date().toISOString().slice(0, 10);\n return `runtime-${date}-${randomBytes(4).toString(\"hex\")}`;\n}\n"]}