@hexclave/js 1.0.99 → 1.0.101
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{admin-app-impl-BlTlxJT-.d.ts → admin-app-impl-CsV6f8Ix.d.ts} +6 -5
- package/dist/{admin-app-impl-BlTlxJT-.d.ts.map → admin-app-impl-CsV6f8Ix.d.ts.map} +1 -1
- package/dist/clickmap/clickmap-core.d.ts +1 -1
- package/dist/clickmap/index.d.ts +1 -1
- package/dist/{client-app-bw41v48r.d.ts → client-app-CdAaCL3p.d.ts} +4 -3
- package/dist/{client-app-bw41v48r.d.ts.map → client-app-CdAaCL3p.d.ts.map} +1 -1
- package/dist/dev-tool/dev-tool-core.d.ts +1 -1
- package/dist/dev-tool/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +3 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +4 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/common.js +2 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/common.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts +2 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/esm/lib/hexclave-app/workflows.d.ts +3 -1
- package/dist/esm/lib/hexclave-app/workflows.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/workflows.js +2 -0
- package/dist/esm/lib/hexclave-app/workflows.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +4 -0
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/implementations/common.js +2 -2
- package/dist/lib/hexclave-app/apps/implementations/common.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/index.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/index.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +2 -2
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +1 -1
- package/dist/lib/hexclave-app/index.d.ts +2 -2
- package/dist/lib/hexclave-app/projects/index.d.ts +1 -1
- package/dist/lib/hexclave-app/teams/index.d.ts +1 -1
- package/dist/lib/hexclave-app/users/index.d.ts +1 -1
- package/dist/lib/hexclave-app/workflows.d.ts +1 -1
- package/dist/lib/hexclave-app/workflows.js +2 -0
- package/dist/lib/hexclave-app/workflows.js.map +1 -1
- package/dist/pushed-config-error-overlay/index.d.ts +1 -1
- package/dist/{workflows-DEb7pIuQ.d.ts → workflows-2-MBWbGl.d.ts} +4 -2
- package/dist/workflows-2-MBWbGl.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +5 -0
- package/src/lib/hexclave-app/apps/interfaces/admin-app.ts +2 -0
- package/src/lib/hexclave-app/workflows.ts +5 -0
- package/dist/workflows-DEb7pIuQ.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-app.js","names":[],"sources":["../../../../../../src/lib/hexclave-app/apps/interfaces/admin-app.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport type { AnalyticsClickmapOptions, AnalyticsClickmapResponse, AnalyticsClickmapTokenResponse } from \"@hexclave/shared/dist/interface/admin-metrics\";\nimport type { AdminGetSessionReplayChunkEventsResponse, AdminGetSessionReplayAllEventsResponse } from \"@hexclave/shared/dist/interface/crud/session-replays\";\nimport type { Transaction, TransactionType } from \"@hexclave/shared/dist/interface/crud/transactions\";\nimport { InternalSession } from \"@hexclave/shared/dist/sessions\";\nimport type { MoneyAmount } from \"@hexclave/shared/dist/utils/currency-constants\";\nimport { Result } from \"@hexclave/shared/dist/utils/results\";\nimport { AsyncStoreProperty, EmailConfig } from \"../../common\";\nimport { AdminEmailOutbox, AdminSentEmail } from \"../../email\";\nimport { InternalApiKey, InternalApiKeyCreateOptions, InternalApiKeyFirstView } from \"../../internal-api-keys\";\nimport { AdminProjectPermission, AdminProjectPermissionDefinition, AdminProjectPermissionDefinitionCreateOptions, AdminProjectPermissionDefinitionUpdateOptions, AdminTeamPermission, AdminTeamPermissionDefinition, AdminTeamPermissionDefinitionCreateOptions, AdminTeamPermissionDefinitionUpdateOptions } from \"../../permissions\";\nimport type { PlanUsage } from \"../../plan-usage\";\nimport { AdminProject } from \"../../projects\";\nimport type { AdminWorkflow, AdminWorkflowRun, AdminWorkflowRunDetails, AdminWorkflowRunsFilter, AdminWorkflowSyncResult, AdminWorkflowUpgradeResult, AdminWorkflowVersion } from \"../../workflows\";\nimport { _HexclaveAdminAppImpl } from \"../implementations\";\nimport { StackServerApp, StackServerAppConstructorOptions } from \"./server-app\";\n\nexport type EmailOutboxListOptions = {\n status?: string,\n simpleStatus?: string,\n userId?: string,\n limit?: number,\n cursor?: string,\n};\n\nexport type EmailOutboxListResult = {\n items: AdminEmailOutbox[],\n nextCursor: string | null,\n};\n\nexport type EmailOutboxUpdateOptions = {\n isPaused?: boolean,\n scheduledAtMillis?: number,\n cancel?: boolean,\n tsxSource?: string,\n themeId?: string | null,\n};\n\nexport type ManagedEmailProviderSetupResult = {\n domainId: string,\n subdomain: string,\n senderLocalPart: string,\n nameServerRecords: string[],\n status: ManagedEmailProviderStatus[\"status\"],\n};\n\nexport type ManagedEmailProviderStatus = {\n status: \"pending_dns\" | \"pending_verification\" | \"verified\" | \"applied\" | \"failed\",\n};\n\nexport type ManagedEmailProviderListItem = {\n domainId: string,\n subdomain: string,\n senderLocalPart: string,\n status: ManagedEmailProviderStatus[\"status\"],\n nameServerRecords: string[],\n};\n\nimport type { AdminSessionReplay, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, ListSessionReplaysOptions, ListSessionReplaysResult, SessionReplayAllEventsResult } from \"../../session-replays\";\nexport type { AdminSessionReplay, AdminSessionReplayChunk, ListSessionReplaysOptions, ListSessionReplaysResult, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, SessionReplayAllEventsResult } from \"../../session-replays\";\nexport type { AdminWorkflow, AdminWorkflowDivergenceDiagnostic, AdminWorkflowRun, AdminWorkflowRunDetails, AdminWorkflowRunsFilter, AdminWorkflowRunState, AdminWorkflowStep, AdminWorkflowStepAttempt, AdminWorkflowSyncResult, AdminWorkflowTrigger, AdminWorkflowUpgradeResult, AdminWorkflowVersion } from \"../../workflows\";\n\n\n/** @deprecated Use `HexclaveAdminAppConstructorOptions` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackAdminAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = (\n & StackServerAppConstructorOptions<HasTokenStore, ProjectId>\n & {\n superSecretAdminKey?: string,\n projectOwnerSession?: InternalSession | (() => Promise<string | null>),\n }\n);\n\n\n/** @deprecated Use `HexclaveAdminApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackAdminApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (\n & AsyncStoreProperty<\"project\", [], AdminProject, false>\n & AsyncStoreProperty<\"planUsage\", [], PlanUsage, false>\n & AsyncStoreProperty<\"internalApiKeys\", [], InternalApiKey[], true>\n & AsyncStoreProperty<\"teamPermissionDefinitions\", [], AdminTeamPermissionDefinition[], true>\n & AsyncStoreProperty<\"projectPermissionDefinitions\", [], AdminProjectPermissionDefinition[], true>\n & AsyncStoreProperty<\"emailThemes\", [], { id: string, displayName: string }[], true>\n & AsyncStoreProperty<\"emailPreview\", [{ themeId?: string | null | false, themeTsxSource?: string, templateId?: string, templateTsxSource?: string }], string, false>\n & AsyncStoreProperty<\"emailTemplates\", [], { id: string, displayName: string, themeId?: string, tsxSource: string }[], true>\n & AsyncStoreProperty<\"emailDrafts\", [], { id: string, displayName: string, themeId: string | undefined | false, tsxSource: string, sentAt: Date | null }[], true>\n & AsyncStoreProperty<\"workflows\", [], AdminWorkflow[], true>\n & AsyncStoreProperty<\"stripeAccountInfo\", [], { account_id: string, charges_enabled: boolean, details_submitted: boolean, payouts_enabled: boolean } | null, false>\n & AsyncStoreProperty<\n \"transactions\",\n [{\n cursor?: string,\n limit?: number,\n type?: TransactionType,\n customerType?: 'user' | 'team' | 'custom',\n customerId?: string,\n }],\n { transactions: Transaction[], nextCursor: string | null },\n true\n >\n & {\n createInternalApiKey(options: InternalApiKeyCreateOptions): Promise<InternalApiKeyFirstView>,\n\n createTeamPermissionDefinition(data: AdminTeamPermissionDefinitionCreateOptions): Promise<AdminTeamPermission>,\n updateTeamPermissionDefinition(permissionId: string, data: AdminTeamPermissionDefinitionUpdateOptions): Promise<void>,\n deleteTeamPermissionDefinition(permissionId: string): Promise<void>,\n /**\n * @param options.query Free-text search; matches against permission ID and description.\n */\n listTeamPermissionDefinitionsPaginated(options: { limit: number, cursor?: string, query?: string }): Promise<{ items: AdminTeamPermissionDefinition[], nextCursor: string | null }>,\n\n createProjectPermissionDefinition(data: AdminProjectPermissionDefinitionCreateOptions): Promise<AdminProjectPermission>,\n updateProjectPermissionDefinition(permissionId: string, data: AdminProjectPermissionDefinitionUpdateOptions): Promise<void>,\n deleteProjectPermissionDefinition(permissionId: string): Promise<void>,\n\n\n sendTestEmail(options: {\n recipientEmail: string,\n emailConfig: EmailConfig,\n }): Promise<Result<undefined, { errorMessage: string }>>,\n\n sendTestWebhook(options: { endpointId: string }): Promise<Result<undefined, { errorMessage: string }>>,\n\n sendSignInInvitationEmail(email: string, callbackUrl: string): Promise<void>,\n\n listSentEmails(): Promise<AdminSentEmail[]>,\n setupManagedEmailProvider(options: { subdomain: string, senderLocalPart: string }): Promise<ManagedEmailProviderSetupResult>,\n checkManagedEmailStatus(options: { domainId: string, subdomain: string, senderLocalPart: string }): Promise<ManagedEmailProviderStatus>,\n listManagedEmailDomains(): Promise<ManagedEmailProviderListItem[]>,\n applyManagedEmailProvider(options: { domainId: string }): Promise<{ status: \"applied\" }>,\n deleteManagedEmailDomain(options: { resendDomainId: string }): Promise<{ status: \"deleted\" }>,\n\n createEmailTheme(displayName: string): Promise<{ id: string }>,\n updateEmailTheme(id: string, tsxSource: string): Promise<void>,\n deleteEmailTheme(id: string): Promise<void>,\n saveChatMessage(threadId: string, message: any): Promise<void>,\n listChatMessages(threadId: string): Promise<{ messages: Array<any> }>,\n rewriteTemplateSourceWithAI(templateTsxSource: string): Promise<{ tsxSource: string }>,\n updateEmailTemplate(id: string, tsxSource: string, themeId: string | null | false): Promise<{ renderedHtml: string }>,\n createEmailTemplate(displayName: string): Promise<{ id: string }>,\n deleteEmailTemplate(id: string): Promise<void>,\n\n // Workflows (internal-project gated; see the Workflows v1 spec). The\n // management verbs live on the admin app only in v1.\n createWorkflow(options: { id: string, displayName?: string, source: string }): Promise<AdminWorkflowSyncResult>,\n updateWorkflowSource(workflowId: string, source: string): Promise<AdminWorkflowSyncResult>,\n deleteWorkflow(workflowId: string): Promise<void>,\n listWorkflowVersions(workflowId: string): Promise<AdminWorkflowVersion[]>,\n listWorkflowRuns: {\n (workflowId: string, filter: AdminWorkflowRunsFilter & { includeState: true }): Promise<{ runs: AdminWorkflowRunDetails[], nextCursor: string | null }>,\n (workflowId: string, filter?: AdminWorkflowRunsFilter): Promise<{ runs: AdminWorkflowRun[], nextCursor: string | null }>,\n },\n getWorkflowRun(runId: string): Promise<AdminWorkflowRunDetails>,\n cancelWorkflowRuns(workflowId: string, filter?: { runKey?: string, runId?: string, state?: \"queued\" | \"running\" | \"sleeping\", version?: number }): Promise<{ canceledCount: number }>,\n upgradeWorkflowRuns(workflowId: string, options: { toVersion: number, runKey?: string, fromVersion?: number }): Promise<AdminWorkflowUpgradeResult>,\n retryWorkflowRun(runId: string): Promise<void>,\n sendWorkflowEvent(name: string, data?: unknown): Promise<{ eventId: string }>,\n\n setupPayments(): Promise<{ url: string }>,\n createStripeWidgetAccountSession(): Promise<{ client_secret: string }>,\n getPaymentMethodConfigs(): Promise<{ configId: string, methods: Array<{ id: string, name: string, enabled: boolean, available: boolean, overridable: boolean }> } | null>,\n updatePaymentMethodConfigs(configId: string, updates: Record<string, 'on' | 'off'>): Promise<void>,\n createEmailDraft(options: { displayName: string, themeId?: string | undefined | false, tsxSource?: string }): Promise<{ id: string }>,\n updateEmailDraft(id: string, data: { displayName?: string, themeId?: string | undefined | false, tsxSource?: string }): Promise<void>,\n deleteEmailDraft(id: string): Promise<void>,\n refreshEmailDrafts(): Promise<void>,\n createItemQuantityChange(options: (\n { userId: string, itemId: string, quantity: number, expiresAt?: string, description?: string } |\n { teamId: string, itemId: string, quantity: number, expiresAt?: string, description?: string } |\n { customCustomerId: string, itemId: string, quantity: number, expiresAt?: string, description?: string }\n )): Promise<void>,\n refundTransaction(options: {\n type: \"subscription\" | \"one-time-purchase\",\n id: string,\n invoiceId?: string,\n amountUsd: MoneyAmount,\n endAction?: \"now\" | \"at-period-end\",\n }): Promise<{ refundTransactionId: string }>,\n getAnalyticsClickmap(options: AnalyticsClickmapOptions): Promise<AnalyticsClickmapResponse>,\n createAnalyticsClickmapToken(options: { origin: string }): Promise<AnalyticsClickmapTokenResponse>,\n\n listSessionReplays(options?: ListSessionReplaysOptions): Promise<ListSessionReplaysResult>,\n getSessionReplay(sessionReplayId: string): Promise<AdminSessionReplay>,\n listSessionReplayChunks(sessionReplayId: string, options?: ListSessionReplayChunksOptions): Promise<ListSessionReplayChunksResult>,\n getSessionReplayChunkEvents(sessionReplayId: string, chunkId: string): Promise<AdminGetSessionReplayChunkEventsResponse>,\n getSessionReplayEvents(sessionReplayId: string, options?: { offset?: number, limit?: number }): Promise<SessionReplayAllEventsResult>,\n\n // Email Outbox methods\n listOutboxEmails(options?: EmailOutboxListOptions): Promise<EmailOutboxListResult>,\n getOutboxEmail(id: string): Promise<AdminEmailOutbox>,\n updateOutboxEmail(id: string, options: EmailOutboxUpdateOptions): Promise<AdminEmailOutbox>,\n pauseOutboxEmail(id: string): Promise<AdminEmailOutbox>,\n unpauseOutboxEmail(id: string): Promise<AdminEmailOutbox>,\n cancelOutboxEmail(id: string): Promise<AdminEmailOutbox>,\n }\n & StackServerApp<HasTokenStore, ProjectId>\n);\n/** @deprecated Use `HexclaveAdminAppConstructor` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackAdminAppConstructor = {\n new <\n HasTokenStore extends boolean,\n ProjectId extends string\n >(options: StackAdminAppConstructorOptions<HasTokenStore, ProjectId>): StackAdminApp<HasTokenStore, ProjectId>,\n new(options: StackAdminAppConstructorOptions<boolean, string>): StackAdminApp<boolean, string>,\n};\nexport type HexclaveAdminAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackAdminAppConstructorOptions<HasTokenStore, ProjectId>;\nexport type HexclaveAdminApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = StackAdminApp<HasTokenStore, ProjectId>;\nexport type HexclaveAdminAppConstructor = StackAdminAppConstructor;\nexport const HexclaveAdminApp: HexclaveAdminAppConstructor = _HexclaveAdminAppImpl;\n/** @deprecated Use `HexclaveAdminApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport const StackAdminApp: StackAdminAppConstructor = HexclaveAdminApp;\n"],"mappings":";;AAiNA,MAAa,mBAAgD;;AAE7D,MAAa,gBAA0C"}
|
|
1
|
+
{"version":3,"file":"admin-app.js","names":[],"sources":["../../../../../../src/lib/hexclave-app/apps/interfaces/admin-app.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport type { AnalyticsClickmapOptions, AnalyticsClickmapResponse, AnalyticsClickmapTokenResponse } from \"@hexclave/shared/dist/interface/admin-metrics\";\nimport type { AdminGetSessionReplayChunkEventsResponse, AdminGetSessionReplayAllEventsResponse } from \"@hexclave/shared/dist/interface/crud/session-replays\";\nimport type { Transaction, TransactionType } from \"@hexclave/shared/dist/interface/crud/transactions\";\nimport { InternalSession } from \"@hexclave/shared/dist/sessions\";\nimport type { MoneyAmount } from \"@hexclave/shared/dist/utils/currency-constants\";\nimport { Result } from \"@hexclave/shared/dist/utils/results\";\nimport { AsyncStoreProperty, EmailConfig } from \"../../common\";\nimport { AdminEmailOutbox, AdminSentEmail } from \"../../email\";\nimport { InternalApiKey, InternalApiKeyCreateOptions, InternalApiKeyFirstView } from \"../../internal-api-keys\";\nimport { AdminProjectPermission, AdminProjectPermissionDefinition, AdminProjectPermissionDefinitionCreateOptions, AdminProjectPermissionDefinitionUpdateOptions, AdminTeamPermission, AdminTeamPermissionDefinition, AdminTeamPermissionDefinitionCreateOptions, AdminTeamPermissionDefinitionUpdateOptions } from \"../../permissions\";\nimport type { PlanUsage } from \"../../plan-usage\";\nimport { AdminProject } from \"../../projects\";\nimport type { AdminWorkflow, AdminWorkflowRun, AdminWorkflowRunDetails, AdminWorkflowRunsFilter, AdminWorkflowSyncResult, AdminWorkflowUpgradeResult, AdminWorkflowVersion } from \"../../workflows\";\nimport { _HexclaveAdminAppImpl } from \"../implementations\";\nimport { StackServerApp, StackServerAppConstructorOptions } from \"./server-app\";\n\nexport type EmailOutboxListOptions = {\n status?: string,\n simpleStatus?: string,\n userId?: string,\n limit?: number,\n cursor?: string,\n};\n\nexport type EmailOutboxListResult = {\n items: AdminEmailOutbox[],\n nextCursor: string | null,\n};\n\nexport type EmailOutboxUpdateOptions = {\n isPaused?: boolean,\n scheduledAtMillis?: number,\n cancel?: boolean,\n tsxSource?: string,\n themeId?: string | null,\n};\n\nexport type ManagedEmailProviderSetupResult = {\n domainId: string,\n subdomain: string,\n senderLocalPart: string,\n nameServerRecords: string[],\n status: ManagedEmailProviderStatus[\"status\"],\n};\n\nexport type ManagedEmailProviderStatus = {\n status: \"pending_dns\" | \"pending_verification\" | \"verified\" | \"applied\" | \"failed\",\n};\n\nexport type ManagedEmailProviderListItem = {\n domainId: string,\n subdomain: string,\n senderLocalPart: string,\n status: ManagedEmailProviderStatus[\"status\"],\n nameServerRecords: string[],\n};\n\nimport type { AdminSessionReplay, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, ListSessionReplaysOptions, ListSessionReplaysResult, SessionReplayAllEventsResult } from \"../../session-replays\";\nexport type { AdminSessionReplay, AdminSessionReplayChunk, ListSessionReplaysOptions, ListSessionReplaysResult, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, SessionReplayAllEventsResult } from \"../../session-replays\";\nexport type { AdminWorkflow, AdminWorkflowDivergenceDiagnostic, AdminWorkflowRun, AdminWorkflowRunDetails, AdminWorkflowRunsFilter, AdminWorkflowRunState, AdminWorkflowStep, AdminWorkflowStepAttempt, AdminWorkflowSyncResult, AdminWorkflowTrigger, AdminWorkflowUpgradeResult, AdminWorkflowVersion } from \"../../workflows\";\n\n\n/** @deprecated Use `HexclaveAdminAppConstructorOptions` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackAdminAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = (\n & StackServerAppConstructorOptions<HasTokenStore, ProjectId>\n & {\n superSecretAdminKey?: string,\n projectOwnerSession?: InternalSession | (() => Promise<string | null>),\n }\n);\n\n\n/** @deprecated Use `HexclaveAdminApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackAdminApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (\n & AsyncStoreProperty<\"project\", [], AdminProject, false>\n & AsyncStoreProperty<\"planUsage\", [], PlanUsage, false>\n & AsyncStoreProperty<\"internalApiKeys\", [], InternalApiKey[], true>\n & AsyncStoreProperty<\"teamPermissionDefinitions\", [], AdminTeamPermissionDefinition[], true>\n & AsyncStoreProperty<\"projectPermissionDefinitions\", [], AdminProjectPermissionDefinition[], true>\n & AsyncStoreProperty<\"emailThemes\", [], { id: string, displayName: string }[], true>\n & AsyncStoreProperty<\"emailPreview\", [{ themeId?: string | null | false, themeTsxSource?: string, templateId?: string, templateTsxSource?: string }], string, false>\n & AsyncStoreProperty<\"emailTemplates\", [], { id: string, displayName: string, themeId?: string, tsxSource: string }[], true>\n & AsyncStoreProperty<\"emailDrafts\", [], { id: string, displayName: string, themeId: string | undefined | false, tsxSource: string, sentAt: Date | null }[], true>\n & AsyncStoreProperty<\"workflows\", [], AdminWorkflow[], true>\n & AsyncStoreProperty<\"stripeAccountInfo\", [], { account_id: string, charges_enabled: boolean, details_submitted: boolean, payouts_enabled: boolean } | null, false>\n & AsyncStoreProperty<\n \"transactions\",\n [{\n cursor?: string,\n limit?: number,\n type?: TransactionType,\n customerType?: 'user' | 'team' | 'custom',\n customerId?: string,\n }],\n { transactions: Transaction[], nextCursor: string | null },\n true\n >\n & {\n createInternalApiKey(options: InternalApiKeyCreateOptions): Promise<InternalApiKeyFirstView>,\n\n createTeamPermissionDefinition(data: AdminTeamPermissionDefinitionCreateOptions): Promise<AdminTeamPermission>,\n updateTeamPermissionDefinition(permissionId: string, data: AdminTeamPermissionDefinitionUpdateOptions): Promise<void>,\n deleteTeamPermissionDefinition(permissionId: string): Promise<void>,\n /**\n * @param options.query Free-text search; matches against permission ID and description.\n */\n listTeamPermissionDefinitionsPaginated(options: { limit: number, cursor?: string, query?: string }): Promise<{ items: AdminTeamPermissionDefinition[], nextCursor: string | null }>,\n\n createProjectPermissionDefinition(data: AdminProjectPermissionDefinitionCreateOptions): Promise<AdminProjectPermission>,\n updateProjectPermissionDefinition(permissionId: string, data: AdminProjectPermissionDefinitionUpdateOptions): Promise<void>,\n deleteProjectPermissionDefinition(permissionId: string): Promise<void>,\n\n\n sendTestEmail(options: {\n recipientEmail: string,\n emailConfig: EmailConfig,\n }): Promise<Result<undefined, { errorMessage: string }>>,\n\n sendTestWebhook(options: { endpointId: string }): Promise<Result<undefined, { errorMessage: string }>>,\n\n sendSignInInvitationEmail(email: string, callbackUrl: string): Promise<void>,\n\n listSentEmails(): Promise<AdminSentEmail[]>,\n setupManagedEmailProvider(options: { subdomain: string, senderLocalPart: string }): Promise<ManagedEmailProviderSetupResult>,\n checkManagedEmailStatus(options: { domainId: string, subdomain: string, senderLocalPart: string }): Promise<ManagedEmailProviderStatus>,\n listManagedEmailDomains(): Promise<ManagedEmailProviderListItem[]>,\n applyManagedEmailProvider(options: { domainId: string }): Promise<{ status: \"applied\" }>,\n deleteManagedEmailDomain(options: { resendDomainId: string }): Promise<{ status: \"deleted\" }>,\n\n createEmailTheme(displayName: string): Promise<{ id: string }>,\n updateEmailTheme(id: string, tsxSource: string): Promise<void>,\n deleteEmailTheme(id: string): Promise<void>,\n saveChatMessage(threadId: string, message: any): Promise<void>,\n listChatMessages(threadId: string): Promise<{ messages: Array<any> }>,\n rewriteTemplateSourceWithAI(templateTsxSource: string): Promise<{ tsxSource: string }>,\n updateEmailTemplate(id: string, tsxSource: string, themeId: string | null | false): Promise<{ renderedHtml: string }>,\n createEmailTemplate(displayName: string): Promise<{ id: string }>,\n deleteEmailTemplate(id: string): Promise<void>,\n\n // Workflows (internal-project gated; see the Workflows v1 spec). The\n // management verbs live on the admin app only in v1.\n createWorkflow(options: { id: string, displayName?: string, source: string }): Promise<AdminWorkflowSyncResult>,\n updateWorkflowSource(workflowId: string, source: string): Promise<AdminWorkflowSyncResult>,\n deleteWorkflow(workflowId: string): Promise<void>,\n /** Pauses/resumes run creation. In-flight runs are unaffected. */\n setWorkflowPaused(workflowId: string, isPaused: boolean): Promise<void>,\n listWorkflowVersions(workflowId: string): Promise<AdminWorkflowVersion[]>,\n listWorkflowRuns: {\n (workflowId: string, filter: AdminWorkflowRunsFilter & { includeState: true }): Promise<{ runs: AdminWorkflowRunDetails[], nextCursor: string | null }>,\n (workflowId: string, filter?: AdminWorkflowRunsFilter): Promise<{ runs: AdminWorkflowRun[], nextCursor: string | null }>,\n },\n getWorkflowRun(runId: string): Promise<AdminWorkflowRunDetails>,\n cancelWorkflowRuns(workflowId: string, filter?: { runKey?: string, runId?: string, state?: \"queued\" | \"running\" | \"sleeping\", version?: number }): Promise<{ canceledCount: number }>,\n upgradeWorkflowRuns(workflowId: string, options: { toVersion: number, runKey?: string, fromVersion?: number }): Promise<AdminWorkflowUpgradeResult>,\n retryWorkflowRun(runId: string): Promise<void>,\n sendWorkflowEvent(name: string, data?: unknown): Promise<{ eventId: string }>,\n\n setupPayments(): Promise<{ url: string }>,\n createStripeWidgetAccountSession(): Promise<{ client_secret: string }>,\n getPaymentMethodConfigs(): Promise<{ configId: string, methods: Array<{ id: string, name: string, enabled: boolean, available: boolean, overridable: boolean }> } | null>,\n updatePaymentMethodConfigs(configId: string, updates: Record<string, 'on' | 'off'>): Promise<void>,\n createEmailDraft(options: { displayName: string, themeId?: string | undefined | false, tsxSource?: string }): Promise<{ id: string }>,\n updateEmailDraft(id: string, data: { displayName?: string, themeId?: string | undefined | false, tsxSource?: string }): Promise<void>,\n deleteEmailDraft(id: string): Promise<void>,\n refreshEmailDrafts(): Promise<void>,\n createItemQuantityChange(options: (\n { userId: string, itemId: string, quantity: number, expiresAt?: string, description?: string } |\n { teamId: string, itemId: string, quantity: number, expiresAt?: string, description?: string } |\n { customCustomerId: string, itemId: string, quantity: number, expiresAt?: string, description?: string }\n )): Promise<void>,\n refundTransaction(options: {\n type: \"subscription\" | \"one-time-purchase\",\n id: string,\n invoiceId?: string,\n amountUsd: MoneyAmount,\n endAction?: \"now\" | \"at-period-end\",\n }): Promise<{ refundTransactionId: string }>,\n getAnalyticsClickmap(options: AnalyticsClickmapOptions): Promise<AnalyticsClickmapResponse>,\n createAnalyticsClickmapToken(options: { origin: string }): Promise<AnalyticsClickmapTokenResponse>,\n\n listSessionReplays(options?: ListSessionReplaysOptions): Promise<ListSessionReplaysResult>,\n getSessionReplay(sessionReplayId: string): Promise<AdminSessionReplay>,\n listSessionReplayChunks(sessionReplayId: string, options?: ListSessionReplayChunksOptions): Promise<ListSessionReplayChunksResult>,\n getSessionReplayChunkEvents(sessionReplayId: string, chunkId: string): Promise<AdminGetSessionReplayChunkEventsResponse>,\n getSessionReplayEvents(sessionReplayId: string, options?: { offset?: number, limit?: number }): Promise<SessionReplayAllEventsResult>,\n\n // Email Outbox methods\n listOutboxEmails(options?: EmailOutboxListOptions): Promise<EmailOutboxListResult>,\n getOutboxEmail(id: string): Promise<AdminEmailOutbox>,\n updateOutboxEmail(id: string, options: EmailOutboxUpdateOptions): Promise<AdminEmailOutbox>,\n pauseOutboxEmail(id: string): Promise<AdminEmailOutbox>,\n unpauseOutboxEmail(id: string): Promise<AdminEmailOutbox>,\n cancelOutboxEmail(id: string): Promise<AdminEmailOutbox>,\n }\n & StackServerApp<HasTokenStore, ProjectId>\n);\n/** @deprecated Use `HexclaveAdminAppConstructor` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackAdminAppConstructor = {\n new <\n HasTokenStore extends boolean,\n ProjectId extends string\n >(options: StackAdminAppConstructorOptions<HasTokenStore, ProjectId>): StackAdminApp<HasTokenStore, ProjectId>,\n new(options: StackAdminAppConstructorOptions<boolean, string>): StackAdminApp<boolean, string>,\n};\nexport type HexclaveAdminAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackAdminAppConstructorOptions<HasTokenStore, ProjectId>;\nexport type HexclaveAdminApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = StackAdminApp<HasTokenStore, ProjectId>;\nexport type HexclaveAdminAppConstructor = StackAdminAppConstructor;\nexport const HexclaveAdminApp: HexclaveAdminAppConstructor = _HexclaveAdminAppImpl;\n/** @deprecated Use `HexclaveAdminApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport const StackAdminApp: StackAdminAppConstructor = HexclaveAdminApp;\n"],"mappings":";;AAmNA,MAAa,mBAAgD;;AAE7D,MAAa,gBAA0C"}
|
|
@@ -13,7 +13,9 @@ type AdminWorkflow = {
|
|
|
13
13
|
id: string;
|
|
14
14
|
displayName: string;
|
|
15
15
|
latestVersion: number;
|
|
16
|
-
triggers: AdminWorkflowTrigger[];
|
|
16
|
+
triggers: AdminWorkflowTrigger[]; /** Paused workflows create no new runs; their in-flight runs keep going. */
|
|
17
|
+
isPaused: boolean;
|
|
18
|
+
pausedAtMillis: number | null;
|
|
17
19
|
stats: {
|
|
18
20
|
activeRuns: number;
|
|
19
21
|
sleepingRuns: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","names":[],"sources":["../../../../src/lib/hexclave-app/workflows.ts"],"mappings":";;;KAiBY,oBAAA;EACN,IAAA;EAAe,SAAA;AAAA;EACf,IAAA;EAAkB,IAAA;EAAc,QAAA;AAAA;AAAA,KAE1B,aAAA;EACV,EAAA;EACA,WAAA;EACA,aAAA;EACA,QAAA,EAAU,oBAAoB;
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","names":[],"sources":["../../../../src/lib/hexclave-app/workflows.ts"],"mappings":";;;KAiBY,oBAAA;EACN,IAAA;EAAe,SAAA;AAAA;EACf,IAAA;EAAkB,IAAA;EAAc,QAAA;AAAA;AAAA,KAE1B,aAAA;EACV,EAAA;EACA,WAAA;EACA,aAAA;EACA,QAAA,EAAU,oBAAoB,IAJpB;EAMV,QAAA;EACA,cAAA;EACA,KAAA;IACE,UAAA;IACA,YAAA;IACA,QAAA;IACA,YAAA;EAAA;EAEF,eAAA;EACA,oBAAA;AAAA;AAAA,KAGU,qBAAA;AAAA,KAEA,iCAAA;EACV,MAAA,EAAQ,gCAAgC;EACxC,gBAAA;EACA,YAAA;EACA,gBAAA;EACA,kBAAA;EACA,OAAA;AAAA;AAAA,KAGU,gBAAA;EACV,EAAA;EACA,UAAA;EACA,MAAA;EACA,KAAA,EAAO,qBAAA;EACP,OAAA;EACA,WAAA;EACA,cAAA;EACA,aAAA;EACA,aAAA;EACA,YAAA;EACA,WAAA;EACA,qBAAA,EAAuB,iCAAiC;EACxD,eAAA;EACA,iBAAA;EACA,gBAAA;AAAA;AAAA,KAGU,iBAAA;EACV,OAAA;EACA,MAAA;EACA,IAAA;EACA,MAAA;EACA,eAAA;EACA,QAAA;EACA,iBAAA;EACA,SAAA;EACA,eAAA;AAAA;AAAA,KAGU,wBAAA;EACV,OAAA;EACA,MAAA,UAtBA;EAwBA,UAAA;EACA,OAAA;EACA,OAAA;EACA,KAAA;IAAS,IAAA;IAAc,OAAA;IAAiB,KAAA;EAAA;EACxC,WAAA;EACA,IAAA;EACA,eAAA;EACA,gBAAA;AAAA;AAAA,KAGU,uBAAA,GAA0B,gBAAA;EACpC,cAAA;EACA,KAAA,EAAO,iBAAA;EACP,YAAA,EAAc,wBAAA;AAAA;AAAA,KAGJ,oBAAA;EACV,UAAA;EACA,OAAA;EACA,UAAA;EACA,MAAA;EACA,iBAAA;EACA,QAAA;EACA,YAAA;EACA,eAAA;AAAA;AAAA,KAGU,uBAAA;EACV,UAAA;EACA,OAAA;EACA,OAAA;EACA,2BAAA;AAAA;AAAA,KAGU,0BAAA;EACV,aAAA;EACA,OAAA;IACE,KAAA;IACA,MAAA;IACA,WAAA;IACA,UAAA,EAAY,iCAAiC;EAAA;AAAA;AAAA,KAIrC,uBAAA;EACV,KAAA,GAAQ,qBAAqB;EAC7B,OAAA;EACA,MAAA;EACA,MAAA;EACA,KAAA,WApCsC;EAsCtC,YAAA;AAAA;AAAA,iBAGc,qBAAA,CAAsB,IAAA,EAAM,mBAAA,GAAsB,aAAa;AAAA,iBAiC/D,wBAAA,CAAyB,IAAA,EAAM,eAAA,GAAkB,gBAAgB;AAAA,iBAoBjE,wBAAA,CAAyB,IAAA,EAAM,eAAA,GAAkB,IAAA,IAAQ,sBAAsB;AAAA,iBAQ/E,+BAAA,CAAgC,IAAA,EAAM,sBAAA,GAAyB,uBAAuB;AAAA,iBA8BtF,4BAAA,CAA6B,IAAA,EAAM,mBAAA,GAAsB,oBAAoB;AAAA,iBAa7E,+BAAA,CAAgC,IAAA,EAAM,sBAAA,GAAyB,uBAAuB"}
|
|
@@ -12,6 +12,8 @@ function adminWorkflowFromCrud(crud) {
|
|
|
12
12
|
cron: trigger.cron,
|
|
13
13
|
timezone: trigger.timezone
|
|
14
14
|
}),
|
|
15
|
+
isPaused: crud.is_paused,
|
|
16
|
+
pausedAtMillis: crud.paused_at_millis,
|
|
15
17
|
stats: {
|
|
16
18
|
activeRuns: crud.stats.active_runs,
|
|
17
19
|
sleepingRuns: crud.stats.sleeping_runs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.js","names":[],"sources":["../../../../src/lib/hexclave-app/workflows.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport type {\n WorkflowDivergenceDiagnosticJson,\n WorkflowRunDetailsJson,\n WorkflowRunJson,\n WorkflowSummaryJson,\n WorkflowSyncResultJson,\n WorkflowVersionJson,\n} from \"@hexclave/shared/dist/interface/workflows\";\n\n// SDK-side (camelCase) types + converters for the workflows admin surface.\n// The wire types live in @hexclave/shared/dist/interface/workflows; these\n// mirror them 1:1 so the dashboard never touches snake_case.\n\nexport type AdminWorkflowTrigger =\n | { type: \"event\", eventType: string }\n | { type: \"schedule\", cron: string, timezone: string };\n\nexport type AdminWorkflow = {\n id: string,\n displayName: string,\n latestVersion: number,\n triggers: AdminWorkflowTrigger[],\n stats: {\n activeRuns: number,\n sleepingRuns: number,\n failed7d: number,\n runVolume14d: number[],\n },\n createdAtMillis: number,\n lastDeployedAtMillis: number,\n};\n\nexport type AdminWorkflowRunState = \"queued\" | \"running\" | \"sleeping\" | \"completed\" | \"failed\" | \"canceled\";\n\nexport type AdminWorkflowDivergenceDiagnostic = {\n reason: WorkflowDivergenceDiagnosticJson[\"reason\"],\n suspendedStepKey: string | null,\n foundStepKey: string | null,\n consumedStepKeys: string[],\n unconsumedStepKeys: string[],\n details: string,\n};\n\nexport type AdminWorkflowRun = {\n id: string,\n workflowId: string,\n runKey: string | null,\n state: AdminWorkflowRunState,\n version: number,\n triggerType: string,\n triggerSummary: string,\n currentStepId: string | null,\n stepsRecorded: number,\n errorSummary: string | null,\n failureKind: \"user\" | \"platform\" | null,\n lastUpgradeDivergence: AdminWorkflowDivergenceDiagnostic | null,\n createdAtMillis: number,\n completedAtMillis: number | null,\n nextWakeAtMillis: number | null,\n};\n\nexport type AdminWorkflowStep = {\n stepKey: string,\n stepId: string,\n kind: \"run\" | \"sleep\",\n result: unknown,\n resultSizeBytes: number,\n attempts: number,\n executedAtVersion: number,\n elapsedMs: number | null,\n createdAtMillis: number,\n};\n\nexport type AdminWorkflowStepAttempt = {\n stepKey: string,\n stepId: string,\n /** 0 for the original execution; incremented by each manual retry of the run. */\n retryEpoch: number,\n attempt: number,\n outcome: \"succeeded\" | \"failed\",\n error: { name: string, message: string, stack?: string } | null,\n failureKind: \"user\" | \"platform\" | null,\n logs: string | null,\n startedAtMillis: number,\n finishedAtMillis: number,\n};\n\nexport type AdminWorkflowRunDetails = AdminWorkflowRun & {\n triggerPayload: unknown,\n steps: AdminWorkflowStep[],\n stepAttempts: AdminWorkflowStepAttempt[],\n};\n\nexport type AdminWorkflowVersion = {\n workflowId: string,\n version: number,\n sourceHash: string,\n source: string,\n runtimeEnvVersion: string,\n isLatest: boolean,\n inFlightRuns: number,\n createdAtMillis: number,\n};\n\nexport type AdminWorkflowSyncResult = {\n workflowId: string,\n version: number,\n created: boolean,\n inFlightRunsOnOlderVersions: number,\n};\n\nexport type AdminWorkflowUpgradeResult = {\n upgradedCount: number,\n skipped: {\n runId: string,\n runKey: string | null,\n fromVersion: number,\n diagnostic: AdminWorkflowDivergenceDiagnostic,\n }[],\n};\n\nexport type AdminWorkflowRunsFilter = {\n state?: AdminWorkflowRunState,\n version?: number,\n runKey?: string,\n cursor?: string,\n limit?: number,\n /** Include each run's memoized steps and attempt history. */\n includeState?: boolean,\n};\n\nexport function adminWorkflowFromCrud(crud: WorkflowSummaryJson): AdminWorkflow {\n return {\n id: crud.id,\n displayName: crud.display_name,\n latestVersion: crud.latest_version,\n triggers: crud.triggers.map((trigger) => trigger.type === \"event\"\n ? { type: \"event\", eventType: trigger.event_type }\n : { type: \"schedule\", cron: trigger.cron, timezone: trigger.timezone }),\n stats: {\n activeRuns: crud.stats.active_runs,\n sleepingRuns: crud.stats.sleeping_runs,\n failed7d: crud.stats.failed_7d,\n runVolume14d: crud.stats.run_volume_14d,\n },\n createdAtMillis: crud.created_at_millis,\n lastDeployedAtMillis: crud.last_deployed_at_millis,\n };\n}\n\nfunction adminDivergenceFromCrud(crud: WorkflowDivergenceDiagnosticJson | null): AdminWorkflowDivergenceDiagnostic | null {\n if (crud == null) return null;\n return {\n reason: crud.reason,\n suspendedStepKey: crud.suspended_step_key,\n foundStepKey: crud.found_step_key,\n consumedStepKeys: crud.consumed_step_keys,\n unconsumedStepKeys: crud.unconsumed_step_keys,\n details: crud.details,\n };\n}\n\nexport function adminWorkflowRunFromCrud(crud: WorkflowRunJson): AdminWorkflowRun {\n return {\n id: crud.id,\n workflowId: crud.workflow_id,\n runKey: crud.run_key,\n state: crud.state,\n version: crud.version,\n triggerType: crud.trigger_type,\n triggerSummary: crud.trigger_summary,\n currentStepId: crud.current_step_id,\n stepsRecorded: crud.steps_recorded,\n errorSummary: crud.error_summary,\n failureKind: crud.failure_kind,\n lastUpgradeDivergence: adminDivergenceFromCrud(crud.last_upgrade_divergence),\n createdAtMillis: crud.created_at_millis,\n completedAtMillis: crud.completed_at_millis,\n nextWakeAtMillis: crud.next_wake_at_millis,\n };\n}\n\nexport function isWorkflowRunDetailsJson(crud: WorkflowRunJson): crud is WorkflowRunDetailsJson {\n return \"trigger_payload\" in crud\n && \"steps\" in crud\n && Array.isArray(crud.steps)\n && \"step_attempts\" in crud\n && Array.isArray(crud.step_attempts);\n}\n\nexport function adminWorkflowRunDetailsFromCrud(crud: WorkflowRunDetailsJson): AdminWorkflowRunDetails {\n return {\n ...adminWorkflowRunFromCrud(crud),\n triggerPayload: crud.trigger_payload,\n steps: crud.steps.map((step) => ({\n stepKey: step.step_key,\n stepId: step.step_id,\n kind: step.kind,\n result: step.result,\n resultSizeBytes: step.result_size_bytes,\n attempts: step.attempts,\n executedAtVersion: step.executed_at_version,\n elapsedMs: step.elapsed_ms,\n createdAtMillis: step.created_at_millis,\n })),\n stepAttempts: crud.step_attempts.map((attempt) => ({\n stepKey: attempt.step_key,\n stepId: attempt.step_id,\n retryEpoch: attempt.retry_epoch,\n attempt: attempt.attempt,\n outcome: attempt.outcome,\n error: attempt.error,\n failureKind: attempt.failure_kind,\n logs: attempt.logs,\n startedAtMillis: attempt.started_at_millis,\n finishedAtMillis: attempt.finished_at_millis,\n })),\n };\n}\n\nexport function adminWorkflowVersionFromCrud(crud: WorkflowVersionJson): AdminWorkflowVersion {\n return {\n workflowId: crud.workflow_id,\n version: crud.version,\n sourceHash: crud.source_hash,\n source: crud.source,\n runtimeEnvVersion: crud.runtime_env_version,\n isLatest: crud.is_latest,\n inFlightRuns: crud.in_flight_runs,\n createdAtMillis: crud.created_at_millis,\n };\n}\n\nexport function adminWorkflowSyncResultFromCrud(crud: WorkflowSyncResultJson): AdminWorkflowSyncResult {\n return {\n workflowId: crud.workflow_id,\n version: crud.version,\n created: crud.created,\n inFlightRunsOnOlderVersions: crud.in_flight_runs_on_older_versions,\n };\n}\n"],"mappings":";
|
|
1
|
+
{"version":3,"file":"workflows.js","names":[],"sources":["../../../../src/lib/hexclave-app/workflows.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport type {\n WorkflowDivergenceDiagnosticJson,\n WorkflowRunDetailsJson,\n WorkflowRunJson,\n WorkflowSummaryJson,\n WorkflowSyncResultJson,\n WorkflowVersionJson,\n} from \"@hexclave/shared/dist/interface/workflows\";\n\n// SDK-side (camelCase) types + converters for the workflows admin surface.\n// The wire types live in @hexclave/shared/dist/interface/workflows; these\n// mirror them 1:1 so the dashboard never touches snake_case.\n\nexport type AdminWorkflowTrigger =\n | { type: \"event\", eventType: string }\n | { type: \"schedule\", cron: string, timezone: string };\n\nexport type AdminWorkflow = {\n id: string,\n displayName: string,\n latestVersion: number,\n triggers: AdminWorkflowTrigger[],\n /** Paused workflows create no new runs; their in-flight runs keep going. */\n isPaused: boolean,\n pausedAtMillis: number | null,\n stats: {\n activeRuns: number,\n sleepingRuns: number,\n failed7d: number,\n runVolume14d: number[],\n },\n createdAtMillis: number,\n lastDeployedAtMillis: number,\n};\n\nexport type AdminWorkflowRunState = \"queued\" | \"running\" | \"sleeping\" | \"completed\" | \"failed\" | \"canceled\";\n\nexport type AdminWorkflowDivergenceDiagnostic = {\n reason: WorkflowDivergenceDiagnosticJson[\"reason\"],\n suspendedStepKey: string | null,\n foundStepKey: string | null,\n consumedStepKeys: string[],\n unconsumedStepKeys: string[],\n details: string,\n};\n\nexport type AdminWorkflowRun = {\n id: string,\n workflowId: string,\n runKey: string | null,\n state: AdminWorkflowRunState,\n version: number,\n triggerType: string,\n triggerSummary: string,\n currentStepId: string | null,\n stepsRecorded: number,\n errorSummary: string | null,\n failureKind: \"user\" | \"platform\" | null,\n lastUpgradeDivergence: AdminWorkflowDivergenceDiagnostic | null,\n createdAtMillis: number,\n completedAtMillis: number | null,\n nextWakeAtMillis: number | null,\n};\n\nexport type AdminWorkflowStep = {\n stepKey: string,\n stepId: string,\n kind: \"run\" | \"sleep\",\n result: unknown,\n resultSizeBytes: number,\n attempts: number,\n executedAtVersion: number,\n elapsedMs: number | null,\n createdAtMillis: number,\n};\n\nexport type AdminWorkflowStepAttempt = {\n stepKey: string,\n stepId: string,\n /** 0 for the original execution; incremented by each manual retry of the run. */\n retryEpoch: number,\n attempt: number,\n outcome: \"succeeded\" | \"failed\",\n error: { name: string, message: string, stack?: string } | null,\n failureKind: \"user\" | \"platform\" | null,\n logs: string | null,\n startedAtMillis: number,\n finishedAtMillis: number,\n};\n\nexport type AdminWorkflowRunDetails = AdminWorkflowRun & {\n triggerPayload: unknown,\n steps: AdminWorkflowStep[],\n stepAttempts: AdminWorkflowStepAttempt[],\n};\n\nexport type AdminWorkflowVersion = {\n workflowId: string,\n version: number,\n sourceHash: string,\n source: string,\n runtimeEnvVersion: string,\n isLatest: boolean,\n inFlightRuns: number,\n createdAtMillis: number,\n};\n\nexport type AdminWorkflowSyncResult = {\n workflowId: string,\n version: number,\n created: boolean,\n inFlightRunsOnOlderVersions: number,\n};\n\nexport type AdminWorkflowUpgradeResult = {\n upgradedCount: number,\n skipped: {\n runId: string,\n runKey: string | null,\n fromVersion: number,\n diagnostic: AdminWorkflowDivergenceDiagnostic,\n }[],\n};\n\nexport type AdminWorkflowRunsFilter = {\n state?: AdminWorkflowRunState,\n version?: number,\n runKey?: string,\n cursor?: string,\n limit?: number,\n /** Include each run's memoized steps and attempt history. */\n includeState?: boolean,\n};\n\nexport function adminWorkflowFromCrud(crud: WorkflowSummaryJson): AdminWorkflow {\n return {\n id: crud.id,\n displayName: crud.display_name,\n latestVersion: crud.latest_version,\n triggers: crud.triggers.map((trigger) => trigger.type === \"event\"\n ? { type: \"event\", eventType: trigger.event_type }\n : { type: \"schedule\", cron: trigger.cron, timezone: trigger.timezone }),\n isPaused: crud.is_paused,\n pausedAtMillis: crud.paused_at_millis,\n stats: {\n activeRuns: crud.stats.active_runs,\n sleepingRuns: crud.stats.sleeping_runs,\n failed7d: crud.stats.failed_7d,\n runVolume14d: crud.stats.run_volume_14d,\n },\n createdAtMillis: crud.created_at_millis,\n lastDeployedAtMillis: crud.last_deployed_at_millis,\n };\n}\n\nfunction adminDivergenceFromCrud(crud: WorkflowDivergenceDiagnosticJson | null): AdminWorkflowDivergenceDiagnostic | null {\n if (crud == null) return null;\n return {\n reason: crud.reason,\n suspendedStepKey: crud.suspended_step_key,\n foundStepKey: crud.found_step_key,\n consumedStepKeys: crud.consumed_step_keys,\n unconsumedStepKeys: crud.unconsumed_step_keys,\n details: crud.details,\n };\n}\n\nexport function adminWorkflowRunFromCrud(crud: WorkflowRunJson): AdminWorkflowRun {\n return {\n id: crud.id,\n workflowId: crud.workflow_id,\n runKey: crud.run_key,\n state: crud.state,\n version: crud.version,\n triggerType: crud.trigger_type,\n triggerSummary: crud.trigger_summary,\n currentStepId: crud.current_step_id,\n stepsRecorded: crud.steps_recorded,\n errorSummary: crud.error_summary,\n failureKind: crud.failure_kind,\n lastUpgradeDivergence: adminDivergenceFromCrud(crud.last_upgrade_divergence),\n createdAtMillis: crud.created_at_millis,\n completedAtMillis: crud.completed_at_millis,\n nextWakeAtMillis: crud.next_wake_at_millis,\n };\n}\n\nexport function isWorkflowRunDetailsJson(crud: WorkflowRunJson): crud is WorkflowRunDetailsJson {\n return \"trigger_payload\" in crud\n && \"steps\" in crud\n && Array.isArray(crud.steps)\n && \"step_attempts\" in crud\n && Array.isArray(crud.step_attempts);\n}\n\nexport function adminWorkflowRunDetailsFromCrud(crud: WorkflowRunDetailsJson): AdminWorkflowRunDetails {\n return {\n ...adminWorkflowRunFromCrud(crud),\n triggerPayload: crud.trigger_payload,\n steps: crud.steps.map((step) => ({\n stepKey: step.step_key,\n stepId: step.step_id,\n kind: step.kind,\n result: step.result,\n resultSizeBytes: step.result_size_bytes,\n attempts: step.attempts,\n executedAtVersion: step.executed_at_version,\n elapsedMs: step.elapsed_ms,\n createdAtMillis: step.created_at_millis,\n })),\n stepAttempts: crud.step_attempts.map((attempt) => ({\n stepKey: attempt.step_key,\n stepId: attempt.step_id,\n retryEpoch: attempt.retry_epoch,\n attempt: attempt.attempt,\n outcome: attempt.outcome,\n error: attempt.error,\n failureKind: attempt.failure_kind,\n logs: attempt.logs,\n startedAtMillis: attempt.started_at_millis,\n finishedAtMillis: attempt.finished_at_millis,\n })),\n };\n}\n\nexport function adminWorkflowVersionFromCrud(crud: WorkflowVersionJson): AdminWorkflowVersion {\n return {\n workflowId: crud.workflow_id,\n version: crud.version,\n sourceHash: crud.source_hash,\n source: crud.source,\n runtimeEnvVersion: crud.runtime_env_version,\n isLatest: crud.is_latest,\n inFlightRuns: crud.in_flight_runs,\n createdAtMillis: crud.created_at_millis,\n };\n}\n\nexport function adminWorkflowSyncResultFromCrud(crud: WorkflowSyncResultJson): AdminWorkflowSyncResult {\n return {\n workflowId: crud.workflow_id,\n version: crud.version,\n created: crud.created,\n inFlightRunsOnOlderVersions: crud.in_flight_runs_on_older_versions,\n };\n}\n"],"mappings":";AA0IA,SAAgB,sBAAsB,MAA0C;CAC9E,OAAO;EACL,IAAI,KAAK;EACT,aAAa,KAAK;EAClB,eAAe,KAAK;EACpB,UAAU,KAAK,SAAS,KAAK,YAAY,QAAQ,SAAS,UACtD;GAAE,MAAM;GAAS,WAAW,QAAQ;EAAW,IAC/C;GAAE,MAAM;GAAY,MAAM,QAAQ;GAAM,UAAU,QAAQ;EAAS,CAAC;EACxE,UAAU,KAAK;EACf,gBAAgB,KAAK;EACrB,OAAO;GACL,YAAY,KAAK,MAAM;GACvB,cAAc,KAAK,MAAM;GACzB,UAAU,KAAK,MAAM;GACrB,cAAc,KAAK,MAAM;EAC3B;EACA,iBAAiB,KAAK;EACtB,sBAAsB,KAAK;CAC7B;AACF;AAEA,SAAS,wBAAwB,MAAyF;CACxH,IAAI,QAAQ,MAAM,OAAO;CACzB,OAAO;EACL,QAAQ,KAAK;EACb,kBAAkB,KAAK;EACvB,cAAc,KAAK;EACnB,kBAAkB,KAAK;EACvB,oBAAoB,KAAK;EACzB,SAAS,KAAK;CAChB;AACF;AAEA,SAAgB,yBAAyB,MAAyC;CAChF,OAAO;EACL,IAAI,KAAK;EACT,YAAY,KAAK;EACjB,QAAQ,KAAK;EACb,OAAO,KAAK;EACZ,SAAS,KAAK;EACd,aAAa,KAAK;EAClB,gBAAgB,KAAK;EACrB,eAAe,KAAK;EACpB,eAAe,KAAK;EACpB,cAAc,KAAK;EACnB,aAAa,KAAK;EAClB,uBAAuB,wBAAwB,KAAK,uBAAuB;EAC3E,iBAAiB,KAAK;EACtB,mBAAmB,KAAK;EACxB,kBAAkB,KAAK;CACzB;AACF;AAEA,SAAgB,yBAAyB,MAAuD;CAC9F,OAAO,qBAAqB,QACvB,WAAW,QACX,MAAM,QAAQ,KAAK,KAAK,KACxB,mBAAmB,QACnB,MAAM,QAAQ,KAAK,aAAa;AACvC;AAEA,SAAgB,gCAAgC,MAAuD;CACrG,OAAO;EACL,GAAG,yBAAyB,IAAI;EAChC,gBAAgB,KAAK;EACrB,OAAO,KAAK,MAAM,KAAK,UAAU;GAC/B,SAAS,KAAK;GACd,QAAQ,KAAK;GACb,MAAM,KAAK;GACX,QAAQ,KAAK;GACb,iBAAiB,KAAK;GACtB,UAAU,KAAK;GACf,mBAAmB,KAAK;GACxB,WAAW,KAAK;GAChB,iBAAiB,KAAK;EACxB,EAAE;EACF,cAAc,KAAK,cAAc,KAAK,aAAa;GACjD,SAAS,QAAQ;GACjB,QAAQ,QAAQ;GAChB,YAAY,QAAQ;GACpB,SAAS,QAAQ;GACjB,SAAS,QAAQ;GACjB,OAAO,QAAQ;GACf,aAAa,QAAQ;GACrB,MAAM,QAAQ;GACd,iBAAiB,QAAQ;GACzB,kBAAkB,QAAQ;EAC5B,EAAE;CACJ;AACF;AAEA,SAAgB,6BAA6B,MAAiD;CAC5F,OAAO;EACL,YAAY,KAAK;EACjB,SAAS,KAAK;EACd,YAAY,KAAK;EACjB,QAAQ,KAAK;EACb,mBAAmB,KAAK;EACxB,UAAU,KAAK;EACf,cAAc,KAAK;EACnB,iBAAiB,KAAK;CACxB;AACF;AAEA,SAAgB,gCAAgC,MAAuD;CACrG,OAAO;EACL,YAAY,KAAK;EACjB,SAAS,KAAK;EACd,SAAS,KAAK;EACd,6BAA6B,KAAK;CACpC;AACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,10 +3,10 @@ import { S as AdminSentEmail, b as AdminEmailOutboxStatus, d as AdminEmailOutbox
|
|
|
3
3
|
import { a as InternalApiKeyFirstView, i as InternalApiKeyCreateOptions, n as InternalApiKeyBase, r as InternalApiKeyBaseCrudRead, t as InternalApiKey } from "./index-TUtJOdMm.js";
|
|
4
4
|
import { a as AdminTeamPermission, c as AdminTeamPermissionDefinitionUpdateOptions, i as AdminProjectPermissionDefinitionUpdateOptions, n as AdminProjectPermissionDefinition, o as AdminTeamPermissionDefinition, r as AdminProjectPermissionDefinitionCreateOptions, s as AdminTeamPermissionDefinitionCreateOptions, t as AdminProjectPermission } from "./index-DSzMf-rS.js";
|
|
5
5
|
import { a as PlanUsageRow, i as PlanUsagePlanId, n as PlanUsageKind, r as PlanUsageNextPlanId, t as PlanUsage } from "./index-B594jg4e.js";
|
|
6
|
-
import { a as AdminWorkflowRunState, c as AdminWorkflowStepAttempt, d as AdminWorkflowUpgradeResult, f as AdminWorkflowVersion, i as AdminWorkflowRunDetails, l as AdminWorkflowSyncResult, n as AdminWorkflowDivergenceDiagnostic, o as AdminWorkflowRunsFilter, r as AdminWorkflowRun, s as AdminWorkflowStep, t as AdminWorkflow, u as AdminWorkflowTrigger } from "./workflows-
|
|
6
|
+
import { a as AdminWorkflowRunState, c as AdminWorkflowStepAttempt, d as AdminWorkflowUpgradeResult, f as AdminWorkflowVersion, i as AdminWorkflowRunDetails, l as AdminWorkflowSyncResult, n as AdminWorkflowDivergenceDiagnostic, o as AdminWorkflowRunsFilter, r as AdminWorkflowRun, s as AdminWorkflowStep, t as AdminWorkflow, u as AdminWorkflowTrigger } from "./workflows-2-MBWbGl.js";
|
|
7
7
|
import { r as OAuthConnection, t as Connection } from "./index-ClBTM-St.js";
|
|
8
8
|
import { i as ServerContactChannel, t as ContactChannel } from "./index-DN04TjLM.js";
|
|
9
|
-
import { $ as TeamCreateOptions, B as StackServerAppConstructor, D as HexclaveAdminApp, E as EmailOutboxUpdateOptions, F as StackAdminAppConstructorOptions, H as EditableTeamMemberProfile, I as HexclaveServerApp, J as ServerTeamCreateOptions, K as ServerListUsersOptions, L as HexclaveServerAppConstructor, N as StackAdminApp, O as HexclaveAdminAppConstructor, Ot as User, P as StackAdminAppConstructor, Q as Team, R as HexclaveServerAppConstructorOptions, St as ServerUser, T as EmailOutboxListResult, U as ReceivedTeamInvitation, V as StackServerAppConstructorOptions, W as SentTeamInvitation, X as ServerTeamUpdateOptions, Y as ServerTeamMemberProfile, Z as ServerTeamUser, _ as AdminProjectSecretJson, _t as OAuthProvider, a as StackClientApp, c as StackClientAppJson, d as AdminDeploymentJson, et as TeamInvitation, f as AdminDeploymentServiceJson, ft as CurrentInternalServerUser, g as AdminProjectCreateOptions, h as AdminProject, ht as CurrentUser, i as HexclaveClientAppJson, it as TeamUser, k as HexclaveAdminAppConstructorOptions, l as AdminDeploymentDomainJson, m as AdminOwnedProject, mt as CurrentServerUser, n as HexclaveClientAppConstructor, o as StackClientAppConstructor, p as AdminDeploymentServiceOutcomeJson, pt as CurrentInternalUser, q as ServerTeam, r as HexclaveClientAppConstructorOptions, rt as TeamUpdateOptions, s as StackClientAppConstructorOptions, t as HexclaveClientApp, tt as TeamMemberProfile, u as AdminDeploymentEnvVarJson, ut as Auth, v as AdminProjectUpdateOptions, w as EmailOutboxListOptions, x as PushedConfigSource, xt as ServerOAuthProvider, y as Project, z as StackServerApp } from "./client-app-
|
|
9
|
+
import { $ as TeamCreateOptions, B as StackServerAppConstructor, D as HexclaveAdminApp, E as EmailOutboxUpdateOptions, F as StackAdminAppConstructorOptions, H as EditableTeamMemberProfile, I as HexclaveServerApp, J as ServerTeamCreateOptions, K as ServerListUsersOptions, L as HexclaveServerAppConstructor, N as StackAdminApp, O as HexclaveAdminAppConstructor, Ot as User, P as StackAdminAppConstructor, Q as Team, R as HexclaveServerAppConstructorOptions, St as ServerUser, T as EmailOutboxListResult, U as ReceivedTeamInvitation, V as StackServerAppConstructorOptions, W as SentTeamInvitation, X as ServerTeamUpdateOptions, Y as ServerTeamMemberProfile, Z as ServerTeamUser, _ as AdminProjectSecretJson, _t as OAuthProvider, a as StackClientApp, c as StackClientAppJson, d as AdminDeploymentJson, et as TeamInvitation, f as AdminDeploymentServiceJson, ft as CurrentInternalServerUser, g as AdminProjectCreateOptions, h as AdminProject, ht as CurrentUser, i as HexclaveClientAppJson, it as TeamUser, k as HexclaveAdminAppConstructorOptions, l as AdminDeploymentDomainJson, m as AdminOwnedProject, mt as CurrentServerUser, n as HexclaveClientAppConstructor, o as StackClientAppConstructor, p as AdminDeploymentServiceOutcomeJson, pt as CurrentInternalUser, q as ServerTeam, r as HexclaveClientAppConstructorOptions, rt as TeamUpdateOptions, s as StackClientAppConstructorOptions, t as HexclaveClientApp, tt as TeamMemberProfile, u as AdminDeploymentEnvVarJson, ut as Auth, v as AdminProjectUpdateOptions, w as EmailOutboxListOptions, x as PushedConfigSource, xt as ServerOAuthProvider, y as Project, z as StackServerApp } from "./client-app-CdAaCL3p.js";
|
|
10
10
|
import { a as AdminProjectConfigUpdateOptions, i as AdminProjectConfig, n as AdminEmailConfig, o as OAuthProviderConfig, r as AdminOAuthProviderConfig, s as ProjectConfig, t as AdminDomainConfig } from "./index-B-MazpM_.js";
|
|
11
11
|
import { r as getPagePrompt } from "./url-targets-BJgkwPGW.js";
|
|
12
12
|
import { getConvexProvidersConfig } from "./integrations/convex.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as _HexclaveAdminAppImplIncomplete } from "../../../../admin-app-impl-
|
|
1
|
+
import { t as _HexclaveAdminAppImplIncomplete } from "../../../../admin-app-impl-CsV6f8Ix.js";
|
|
2
2
|
export { _HexclaveAdminAppImplIncomplete };
|
|
@@ -431,6 +431,10 @@ var _HexclaveAdminAppImplIncomplete = class extends __server_app_impl_js._Hexcla
|
|
|
431
431
|
await this._interface.deleteWorkflow(workflowId);
|
|
432
432
|
await this._adminWorkflowsCache.refresh([]);
|
|
433
433
|
}
|
|
434
|
+
async setWorkflowPaused(workflowId, isPaused) {
|
|
435
|
+
await this._interface.setWorkflowPaused(workflowId, isPaused);
|
|
436
|
+
await this._adminWorkflowsCache.refresh([]);
|
|
437
|
+
}
|
|
434
438
|
async listWorkflowVersions(workflowId) {
|
|
435
439
|
return (await this._interface.listWorkflowVersions(workflowId)).map(______workflows_js.adminWorkflowVersionFromCrud);
|
|
436
440
|
}
|