@flowdular/sdk 0.2.4 → 0.3.1
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/.ai/agents/sandbox/business-manager.md +5 -1
- package/.ai/blueprints/author-spec/README.md +1 -1
- package/.ai/blueprints/author-spec/spec-requirements.yaml +44 -0
- package/.ai/blueprints/author-spec/steps.yaml +5 -5
- package/.ai/blueprints/author-spec/templates/module.yaml +99 -3
- package/.ai/blueprints/edit-module/gates.yaml +4 -0
- package/.ai/blueprints/edit-module/required-files.yaml +9 -0
- package/.ai/blueprints/new-module/gates.yaml +4 -0
- package/.ai/blueprints/new-module/spec-requirements.yaml +2 -2
- package/.ai/blueprints/release/gates.yaml +4 -0
- package/.ai/platform-capabilities.md +128 -0
- package/.ai/policies/capabilities.yaml +130 -3
- package/.ai/policies/path-ownership.yaml +5 -2
- package/.ai/policies/task-budgets.yaml +5 -3
- package/.ai/references/catalog/module.json +4 -4
- package/.ai/references/catalog/package.json +2 -2
- package/.ai/references/catalog/spec/module.yaml +5 -3
- package/.ai/references/catalog/src/platform.ts +2 -0
- package/.ai/references/catalog/src/services/catalog-service.ts +89 -1
- package/.ai/references/catalog/src/services/data-classes.ts +47 -0
- package/.ai/references/catalog/src/services/database-repository.ts +98 -1
- package/.ai/references/catalog/src/services/repository.ts +22 -1
- package/.ai/references/catalog/tests/data-classes.test.ts +157 -0
- package/.ai/references/catalog.provenance.json +12 -10
- package/.ai/skills/README.md +10 -0
- package/.ai/skills/agent-tool-design/SKILL.md +1 -2
- package/.ai/skills/auth-security-review/SKILL.md +1 -1
- package/.ai/skills/business-agent-design/SKILL.md +0 -1
- package/.ai/skills/cli-extension/SKILL.md +1 -1
- package/.ai/skills/deploy-operate/SKILL.md +119 -0
- package/.ai/skills/module-new/SKILL.md +29 -3
- package/.ai/skills/module-update/SKILL.md +9 -3
- package/.ai/skills/perf-audit/SKILL.md +0 -1
- package/.ai/skills/release-eject-pr/SKILL.md +0 -1
- package/.ai/skills/spec-interview/SKILL.md +120 -0
- package/.ai/skills/test-hardening/SKILL.md +1 -0
- package/.ai/skills/ux-design/SKILL.md +34 -3
- package/.ai/skills/variables/SKILL.md +0 -2
- package/.ai/skills/workflow-development/SKILL.md +0 -1
- package/AGENTS.md +4 -0
- package/docs/agent-contract.md +2 -2
- package/docs/design-system.md +185 -31
- package/modules/access/migrations/0001_access_core.down.sql +1 -0
- package/modules/access/migrations/0001_access_core.up.sql +28 -0
- package/modules/access/migrations/README.md +3 -0
- package/modules/access/module.json +33 -0
- package/modules/access/package.json +43 -0
- package/modules/access/spec/module.yaml +225 -0
- package/modules/access/src/acl/permissions.ts +6 -0
- package/modules/access/src/api/endpoints.ts +244 -0
- package/modules/access/src/client/ActivityView.tsrx +245 -0
- package/modules/access/src/client/AttestationsView.tsrx +176 -0
- package/modules/access/src/client/ReviewView.tsrx +586 -0
- package/modules/access/src/client/api.ts +132 -0
- package/modules/access/src/client/contribution.tsrx +41 -0
- package/modules/access/src/client/index.ts +41 -0
- package/modules/access/src/client/navigation.ts +57 -0
- package/modules/access/src/client/presentation.ts +69 -0
- package/modules/access/src/client/state.ts +72 -0
- package/modules/access/src/domain/types.ts +189 -0
- package/modules/access/src/index.ts +38 -0
- package/modules/access/src/platform.ts +60 -0
- package/modules/access/src/server/index.ts +42 -0
- package/modules/access/src/server/runtime.ts +105 -0
- package/modules/access/src/services/access-service.ts +298 -0
- package/modules/access/src/services/audit-window.ts +78 -0
- package/modules/access/src/services/auth-directory.ts +72 -0
- package/modules/access/src/services/changes.ts +91 -0
- package/modules/access/src/services/data-classes.ts +28 -0
- package/modules/access/src/services/database-repository.ts +185 -0
- package/modules/access/src/services/directory.ts +102 -0
- package/modules/access/src/services/index.ts +33 -0
- package/modules/access/src/services/list-exports.ts +150 -0
- package/modules/access/src/services/migration.ts +54 -0
- package/modules/access/src/services/repository.ts +30 -0
- package/modules/access/src/services/review.ts +178 -0
- package/modules/access/translations/en.json +155 -0
- package/modules/access/translations/pl.json +155 -0
- package/modules/agents/migrations/0022_credential_rotation_inventory.down.sql +2 -0
- package/modules/agents/migrations/0022_credential_rotation_inventory.up.sql +7 -0
- package/modules/agents/migrations/0023_agents_retention_indexes.down.sql +2 -0
- package/modules/agents/migrations/0023_agents_retention_indexes.up.sql +9 -0
- package/modules/agents/migrations/0024_agent_meter_refusals.down.sql +3 -0
- package/modules/agents/migrations/0024_agent_meter_refusals.up.sql +22 -0
- package/modules/agents/migrations/0025_agent_list_indexes.down.sql +3 -0
- package/modules/agents/migrations/0025_agent_list_indexes.up.sql +11 -0
- package/modules/agents/module.json +30 -4
- package/modules/agents/package.json +2 -1
- package/modules/agents/spec/module.yaml +63 -5
- package/modules/agents/src/api/endpoints.ts +291 -33
- package/modules/agents/src/cli/commands.json +11 -0
- package/modules/agents/src/cli/index.ts +45 -0
- package/modules/agents/src/client/AgentDashboardWidget.tsrx +19 -11
- package/modules/agents/src/client/AgentDefinitionList.tsrx +53 -10
- package/modules/agents/src/client/AgentPlaygroundView.tsrx +4 -4
- package/modules/agents/src/client/AgentProceduresView.tsrx +2 -2
- package/modules/agents/src/client/AgentRunsView.tsrx +143 -40
- package/modules/agents/src/client/AgentsView.tsrx +109 -33
- package/modules/agents/src/client/api.ts +99 -21
- package/modules/agents/src/client/state.ts +97 -0
- package/modules/agents/src/domain/types.ts +44 -4
- package/modules/agents/src/platform.ts +42 -0
- package/modules/agents/src/server/action-execution.ts +201 -106
- package/modules/agents/src/server/runtime.ts +32 -0
- package/modules/agents/src/services/agent-service.ts +158 -30
- package/modules/agents/src/services/credential-rotation.ts +185 -0
- package/modules/agents/src/services/credential-vault.ts +71 -46
- package/modules/agents/src/services/data-classes.ts +176 -0
- package/modules/agents/src/services/database-repository.ts +393 -101
- package/modules/agents/src/services/metering.ts +111 -0
- package/modules/agents/src/services/migration.ts +109 -0
- package/modules/agents/src/services/module-agent-preflight.ts +17 -9
- package/modules/agents/src/services/notifications.ts +98 -0
- package/modules/agents/src/services/provider-repository.ts +9 -18
- package/modules/agents/src/services/provider-service.ts +1 -9
- package/modules/agents/src/services/reports.ts +107 -0
- package/modules/agents/src/services/repository.ts +86 -6
- package/modules/agents/src/services/usage-service.ts +2 -0
- package/modules/agents/src/services/worker.ts +114 -4
- package/modules/agents/src/settings.ts +14 -3
- package/modules/agents/translations/en.json +14 -4
- package/modules/agents/translations/pl.json +14 -4
- package/modules/approvals/migrations/0001_approvals_core.down.sql +3 -0
- package/modules/approvals/migrations/0001_approvals_core.up.sql +78 -0
- package/modules/approvals/migrations/0002_approvals_expiry_routing_role.down.sql +2 -0
- package/modules/approvals/migrations/0002_approvals_expiry_routing_role.up.sql +19 -0
- package/modules/approvals/migrations/0003_approvals_retention_indexes.down.sql +6 -0
- package/modules/approvals/migrations/0003_approvals_retention_indexes.up.sql +14 -0
- package/modules/approvals/migrations/0004_approvals_inbox_keyset_indexes.down.sql +5 -0
- package/modules/approvals/migrations/0004_approvals_inbox_keyset_indexes.up.sql +12 -0
- package/modules/approvals/migrations/0005_approvals_grant_audit.down.sql +4 -0
- package/modules/approvals/migrations/0005_approvals_grant_audit.up.sql +20 -0
- package/modules/approvals/migrations/README.md +3 -0
- package/modules/approvals/module.json +34 -0
- package/modules/approvals/package.json +43 -0
- package/modules/approvals/spec/module.yaml +327 -0
- package/modules/approvals/src/acl/permissions.ts +7 -0
- package/modules/approvals/src/api/endpoints.ts +457 -0
- package/modules/approvals/src/client/ApprovalRequestDrawer.tsrx +138 -0
- package/modules/approvals/src/client/ApprovalsView.tsrx +562 -0
- package/modules/approvals/src/client/PendingCountWidget.tsrx +52 -0
- package/modules/approvals/src/client/api.ts +203 -0
- package/modules/approvals/src/client/approvals.css +51 -0
- package/modules/approvals/src/client/contribution.tsrx +44 -0
- package/modules/approvals/src/client/index.ts +26 -0
- package/modules/approvals/src/client/navigation.ts +39 -0
- package/modules/approvals/src/client/pending-count.ts +26 -0
- package/modules/approvals/src/client/presentation.ts +52 -0
- package/modules/approvals/src/client/state.ts +141 -0
- package/modules/approvals/src/domain/capability.ts +107 -0
- package/modules/approvals/src/domain/grant.ts +69 -0
- package/modules/approvals/src/domain/types.ts +168 -0
- package/modules/approvals/src/index.ts +61 -0
- package/modules/approvals/src/platform.ts +136 -0
- package/modules/approvals/src/server/index.ts +42 -0
- package/modules/approvals/src/server/runtime.ts +185 -0
- package/modules/approvals/src/services/approvals-service.ts +637 -0
- package/modules/approvals/src/services/callbacks.ts +75 -0
- package/modules/approvals/src/services/data-classes.ts +167 -0
- package/modules/approvals/src/services/database-repository.ts +783 -0
- package/modules/approvals/src/services/eligibility.ts +121 -0
- package/modules/approvals/src/services/expiry-runner.ts +81 -0
- package/modules/approvals/src/services/index.ts +31 -0
- package/modules/approvals/src/services/migration.ts +256 -0
- package/modules/approvals/src/services/notifications.ts +95 -0
- package/modules/approvals/src/services/repository.ts +169 -0
- package/modules/approvals/src/services/service-error.ts +70 -0
- package/modules/approvals/src/settings.ts +102 -0
- package/modules/approvals/translations/en.json +104 -0
- package/modules/approvals/translations/pl.json +104 -0
- package/modules/audit/migrations/0001_audit_core.down.sql +8 -0
- package/modules/audit/migrations/0001_audit_core.up.sql +107 -0
- package/modules/audit/migrations/0002_audit_sweep_routing_role.down.sql +2 -0
- package/modules/audit/migrations/0002_audit_sweep_routing_role.up.sql +21 -0
- package/modules/audit/migrations/0003_audit_export_request.down.sql +12 -0
- package/modules/audit/migrations/0003_audit_export_request.up.sql +40 -0
- package/modules/audit/migrations/0004_audit_hold_seal_erasure.down.sql +17 -0
- package/modules/audit/migrations/0004_audit_hold_seal_erasure.up.sql +192 -0
- package/modules/audit/migrations/0005_audit_event_format.down.sql +17 -0
- package/modules/audit/migrations/0005_audit_event_format.up.sql +60 -0
- package/modules/audit/migrations/0006_audit_own_class_walks.down.sql +3 -0
- package/modules/audit/migrations/0006_audit_own_class_walks.up.sql +14 -0
- package/modules/audit/migrations/README.md +3 -0
- package/modules/audit/module.json +32 -0
- package/modules/audit/package.json +49 -0
- package/modules/audit/spec/module.yaml +809 -0
- package/modules/audit/src/acl/permissions.ts +7 -0
- package/modules/audit/src/api/endpoints.ts +315 -0
- package/modules/audit/src/cli/commands.json +95 -0
- package/modules/audit/src/cli/index.ts +658 -0
- package/modules/audit/src/client/DataClassesView.tsrx +420 -0
- package/modules/audit/src/client/ExportsView.tsrx +256 -0
- package/modules/audit/src/client/HoldsView.tsrx +604 -0
- package/modules/audit/src/client/SweepsView.tsrx +251 -0
- package/modules/audit/src/client/api.ts +185 -0
- package/modules/audit/src/client/contribution.tsrx +52 -0
- package/modules/audit/src/client/index.ts +23 -0
- package/modules/audit/src/client/navigation.ts +74 -0
- package/modules/audit/src/client/presentation.ts +105 -0
- package/modules/audit/src/client/state.ts +86 -0
- package/modules/audit/src/domain/data-classes.ts +16 -0
- package/modules/audit/src/domain/types.ts +339 -0
- package/modules/audit/src/index.ts +76 -0
- package/modules/audit/src/platform.ts +44 -0
- package/modules/audit/src/server/index.ts +177 -0
- package/modules/audit/src/server/runtime.ts +303 -0
- package/modules/audit/src/services/anchor-key.ts +143 -0
- package/modules/audit/src/services/anchor-rotation.ts +147 -0
- package/modules/audit/src/services/audit-runners.ts +278 -0
- package/modules/audit/src/services/backup-guard.ts +95 -0
- package/modules/audit/src/services/database-repository.ts +1946 -0
- package/modules/audit/src/services/declared-classes.ts +64 -0
- package/modules/audit/src/services/erasure-port.ts +126 -0
- package/modules/audit/src/services/erasure-service.ts +770 -0
- package/modules/audit/src/services/export-directory.ts +106 -0
- package/modules/audit/src/services/export-service.ts +714 -0
- package/modules/audit/src/services/hold-service.ts +295 -0
- package/modules/audit/src/services/index.ts +17 -0
- package/modules/audit/src/services/migration.ts +658 -0
- package/modules/audit/src/services/own-classes.ts +318 -0
- package/modules/audit/src/services/platform-version.ts +23 -0
- package/modules/audit/src/services/repository.ts +495 -0
- package/modules/audit/src/services/retention-service.ts +191 -0
- package/modules/audit/src/services/seal-service.ts +769 -0
- package/modules/audit/src/services/service-error.ts +61 -0
- package/modules/audit/src/services/subject-keys.ts +90 -0
- package/modules/audit/src/services/sweep-service.ts +298 -0
- package/modules/audit/src/services/zip.ts +217 -0
- package/modules/audit/src/settings.ts +69 -0
- package/modules/audit/translations/en.json +210 -0
- package/modules/audit/translations/pl.json +210 -0
- package/modules/auth/README.md +77 -29
- package/modules/auth/migrations/0016_external_identities.up.sql +16 -0
- package/modules/auth/migrations/0017_mfa_key_id.up.sql +8 -0
- package/modules/auth/migrations/0018_retire_bundled_module_scopes.up.sql +29 -0
- package/modules/auth/migrations/0019_notifications_member_scopes.up.sql +44 -0
- package/modules/auth/migrations/0020_identity_providers.up.sql +61 -0
- package/modules/auth/migrations/0021_membership_status.up.sql +19 -0
- package/modules/auth/migrations/0022_auth_provider_scopes.up.sql +45 -0
- package/modules/auth/migrations/0023_enterprise_module_scopes.down.sql +19 -0
- package/modules/auth/migrations/0023_enterprise_module_scopes.up.sql +71 -0
- package/modules/auth/migrations/0024_approvals_member_scopes.down.sql +22 -0
- package/modules/auth/migrations/0024_approvals_member_scopes.up.sql +48 -0
- package/modules/auth/migrations/0025_audit_holds_owner_scope.down.sql +21 -0
- package/modules/auth/migrations/0025_audit_holds_owner_scope.up.sql +47 -0
- package/modules/auth/migrations/0026_auth_export_keyset_indexes.down.sql +6 -0
- package/modules/auth/migrations/0026_auth_export_keyset_indexes.up.sql +15 -0
- package/modules/auth/migrations/0027_workflow_automation_profile_scopes.down.sql +34 -0
- package/modules/auth/migrations/0027_workflow_automation_profile_scopes.up.sql +72 -0
- package/modules/auth/migrations/0028_auth_member_search_prefix_indexes.down.sql +6 -0
- package/modules/auth/migrations/0028_auth_member_search_prefix_indexes.up.sql +21 -0
- package/modules/auth/migrations/0029_reports_exports_access_scopes.down.sql +22 -0
- package/modules/auth/migrations/0029_reports_exports_access_scopes.up.sql +56 -0
- package/modules/auth/migrations/0030_auth_membership_keyset_index.down.sql +4 -0
- package/modules/auth/migrations/0030_auth_membership_keyset_index.up.sql +10 -0
- package/modules/auth/migrations/0031_membership_scope_backfills_under_rls.down.sql +4 -0
- package/modules/auth/migrations/0031_membership_scope_backfills_under_rls.up.sql +31 -0
- package/modules/auth/migrations/0032_audit_actor_service.down.sql +9 -0
- package/modules/auth/migrations/0032_audit_actor_service.up.sql +10 -0
- package/modules/auth/migrations/0033_auth_account_keyset_indexes.down.sql +5 -0
- package/modules/auth/migrations/0033_auth_account_keyset_indexes.up.sql +23 -0
- package/modules/auth/module.json +3 -3
- package/modules/auth/package.json +2 -1
- package/modules/auth/spec/module.yaml +372 -3
- package/modules/auth/src/acl/scopes.ts +50 -6
- package/modules/auth/src/cli/commands.json +11 -0
- package/modules/auth/src/cli/greenfield.ts +2 -2
- package/modules/auth/src/cli/index.ts +14 -0
- package/modules/auth/src/cli/secrets.ts +114 -0
- package/modules/auth/src/client/AuthenticationCore.tsrx +61 -8
- package/modules/auth/src/client/api.ts +72 -6
- package/modules/auth/src/client/contribution.tsrx +23 -0
- package/modules/auth/src/client/index.ts +6 -0
- package/modules/auth/src/client/providers/IdentityProviderForm.tsrx +191 -0
- package/modules/auth/src/client/providers/IdentityProvidersView.tsrx +358 -0
- package/modules/auth/src/client/providers/api.ts +128 -0
- package/modules/auth/src/client/providers/provider-columns.tsrx +60 -0
- package/modules/auth/src/client/providers/state.ts +35 -0
- package/modules/auth/src/client/security/SecurityView.tsrx +9 -1
- package/modules/auth/src/client/state.ts +15 -1
- package/modules/auth/src/domain/types.ts +55 -0
- package/modules/auth/src/index.ts +11 -1
- package/modules/auth/src/middleware/authentication.ts +4 -0
- package/modules/auth/src/server/endpoints.ts +467 -171
- package/modules/auth/src/server/http.ts +3 -2
- package/modules/auth/src/server/index.ts +22 -1
- package/modules/auth/src/server/membership-endpoints.ts +62 -0
- package/modules/auth/src/server/mfa-enforcement.ts +156 -0
- package/modules/auth/src/server/oidc.ts +389 -0
- package/modules/auth/src/server/provider-endpoints.ts +246 -0
- package/modules/auth/src/server/provider-host.ts +77 -0
- package/modules/auth/src/server/runtime.ts +231 -55
- package/modules/auth/src/services/auth-service-error.ts +7 -2
- package/modules/auth/src/services/auth-service.ts +948 -51
- package/modules/auth/src/services/data-classes.ts +236 -0
- package/modules/auth/src/services/database-repository.ts +853 -71
- package/modules/auth/src/services/identity-provider-service.ts +571 -0
- package/modules/auth/src/services/mail-delivery.ts +16 -16
- package/modules/auth/src/services/mail-message.ts +54 -0
- package/modules/auth/src/services/mail-port.ts +24 -0
- package/modules/auth/src/services/mail-smtp.ts +85 -0
- package/modules/auth/src/services/mfa-rotation.ts +144 -0
- package/modules/auth/src/services/migration.ts +810 -0
- package/modules/auth/src/services/password.ts +14 -0
- package/modules/auth/src/services/provider-secret-rotation.ts +169 -0
- package/modules/auth/src/services/provider-secrets.ts +136 -0
- package/modules/auth/src/services/repository.ts +321 -5
- package/modules/auth/src/services/session-sweep-runner.ts +73 -0
- package/modules/auth/src/services/settings-store.ts +10 -83
- package/modules/auth/src/services/totp.ts +88 -62
- package/modules/auth/src/services/validation.ts +194 -7
- package/modules/auth/src/settings.ts +18 -0
- package/modules/auth/translations/en.json +84 -1
- package/modules/auth/translations/pl.json +84 -1
- package/modules/automations/migrations/0005_secret_rotation_inventory.down.sql +1 -0
- package/modules/automations/migrations/0005_secret_rotation_inventory.up.sql +6 -0
- package/modules/automations/migrations/0006_automations_list_sort_indexes.down.sql +4 -0
- package/modules/automations/migrations/0006_automations_list_sort_indexes.up.sql +11 -0
- package/modules/automations/module.json +24 -6
- package/modules/automations/package.json +4 -1
- package/modules/automations/spec/module.yaml +81 -7
- package/modules/automations/src/api/endpoints.ts +202 -28
- package/modules/automations/src/cli/commands.json +17 -0
- package/modules/automations/src/cli/index.ts +114 -0
- package/modules/automations/src/client/AutomationScheduleForm.tsrx +77 -19
- package/modules/automations/src/client/AutomationSchedulesView.tsrx +144 -40
- package/modules/automations/src/client/AutomationTriggersView.tsrx +131 -32
- package/modules/automations/src/client/api.ts +62 -19
- package/modules/automations/src/client/presentation.ts +20 -2
- package/modules/automations/src/client/state.ts +84 -0
- package/modules/automations/src/domain/cadence.ts +99 -3
- package/modules/automations/src/domain/cron.ts +366 -0
- package/modules/automations/src/domain/time-zone.ts +61 -0
- package/modules/automations/src/platform.ts +38 -4
- package/modules/automations/src/server/index.ts +11 -0
- package/modules/automations/src/server/runtime.ts +46 -22
- package/modules/{automations-workflows-integration/src/server/adapter.ts → automations/src/server/workflow-target.ts} +13 -14
- package/modules/{automations-workflows-integration/src/server/tools.ts → automations/src/server/workflow-tools.ts} +0 -0
- package/modules/automations/src/services/data-classes.ts +62 -0
- package/modules/automations/src/services/database-repository.ts +152 -38
- package/modules/automations/src/services/migration.ts +119 -9
- package/modules/automations/src/services/repository.ts +52 -1
- package/modules/automations/src/services/schedule-runner.ts +84 -0
- package/modules/automations/src/services/schedule-service.ts +152 -26
- package/modules/automations/src/services/secret-rotation.ts +176 -0
- package/modules/automations/src/services/secret-vault.ts +68 -41
- package/modules/automations/src/services/trigger-service.ts +13 -10
- package/modules/automations/translations/en.json +15 -2
- package/modules/automations/translations/pl.json +15 -2
- package/modules/connectors/migrations/0001_connectors_core.down.sql +3 -0
- package/modules/connectors/migrations/0001_connectors_core.up.sql +72 -0
- package/modules/connectors/migrations/0002_connectors_call_keys.down.sql +3 -0
- package/modules/connectors/migrations/0002_connectors_call_keys.up.sql +18 -0
- package/modules/connectors/migrations/0003_connectors_rotation_inventory.down.sql +2 -0
- package/modules/connectors/migrations/0003_connectors_rotation_inventory.up.sql +19 -0
- package/modules/connectors/migrations/README.md +3 -0
- package/modules/connectors/module.json +32 -0
- package/modules/{automations-workflows-integration → connectors}/package.json +28 -26
- package/modules/connectors/spec/module.yaml +448 -0
- package/modules/connectors/src/acl/permissions.ts +6 -0
- package/modules/connectors/src/agent/tools.ts +180 -0
- package/modules/connectors/src/api/endpoints.ts +572 -0
- package/modules/connectors/src/cli/commands.json +17 -0
- package/modules/connectors/src/cli/index.ts +126 -0
- package/modules/connectors/src/client/ConnectorCallsView.tsrx +358 -0
- package/modules/connectors/src/client/ConnectorForm.tsrx +424 -0
- package/modules/connectors/src/client/ConnectorsView.tsrx +711 -0
- package/modules/connectors/src/client/api.ts +281 -0
- package/modules/connectors/src/client/consent.ts +48 -0
- package/modules/connectors/src/client/contribution.tsrx +37 -0
- package/modules/connectors/src/client/index.ts +22 -0
- package/modules/connectors/src/client/navigation.ts +42 -0
- package/modules/connectors/src/client/presentation.ts +38 -0
- package/modules/connectors/src/client/state.ts +175 -0
- package/modules/connectors/src/domain/calls.ts +70 -0
- package/modules/connectors/src/domain/definitions.ts +190 -0
- package/modules/connectors/src/domain/http-json.ts +68 -0
- package/modules/connectors/src/domain/types.ts +185 -0
- package/modules/connectors/src/index.ts +64 -0
- package/modules/connectors/src/platform.ts +56 -0
- package/modules/connectors/src/server/index.ts +66 -0
- package/modules/connectors/src/server/runtime.ts +163 -0
- package/modules/connectors/src/services/call-service.ts +903 -0
- package/modules/connectors/src/services/connectors-service.ts +653 -0
- package/modules/connectors/src/services/credential-rotation.ts +221 -0
- package/modules/connectors/src/services/credential-vault.ts +194 -0
- package/modules/connectors/src/services/data-classes.ts +158 -0
- package/modules/connectors/src/services/database-repository.ts +897 -0
- package/modules/connectors/src/services/egress.ts +261 -0
- package/modules/connectors/src/services/index.ts +19 -0
- package/modules/connectors/src/services/migration.ts +202 -0
- package/modules/connectors/src/services/repository.ts +175 -0
- package/modules/connectors/src/services/service-error.ts +46 -0
- package/modules/connectors/src/settings.ts +69 -0
- package/modules/connectors/translations/en.json +191 -0
- package/modules/connectors/translations/pl.json +191 -0
- package/modules/directory/migrations/0001_directory_core.down.sql +5 -0
- package/modules/directory/migrations/0001_directory_core.up.sql +111 -0
- package/modules/directory/migrations/README.md +3 -0
- package/modules/directory/module.json +27 -0
- package/modules/directory/package.json +46 -0
- package/modules/directory/spec/module.yaml +351 -0
- package/modules/directory/src/acl/permissions.ts +7 -0
- package/modules/directory/src/api/endpoints.ts +478 -0
- package/modules/directory/src/api/scim-endpoints.ts +516 -0
- package/modules/directory/src/client/GroupMappingsView.tsrx +430 -0
- package/modules/directory/src/client/ProvisioningLogView.tsrx +248 -0
- package/modules/directory/src/client/ScimTokensView.tsrx +587 -0
- package/modules/directory/src/client/api.ts +222 -0
- package/modules/directory/src/client/contribution.tsrx +46 -0
- package/modules/directory/src/client/index.ts +22 -0
- package/modules/directory/src/client/navigation.ts +57 -0
- package/modules/directory/src/client/presentation.ts +143 -0
- package/modules/directory/src/client/state.ts +173 -0
- package/modules/directory/src/domain/scim.ts +346 -0
- package/modules/directory/src/domain/types.ts +166 -0
- package/modules/directory/src/index.ts +44 -0
- package/modules/directory/src/platform.ts +43 -0
- package/modules/directory/src/server/index.ts +17 -0
- package/modules/directory/src/server/runtime.ts +124 -0
- package/modules/directory/src/services/auth-port.ts +127 -0
- package/modules/directory/src/services/data-classes.ts +41 -0
- package/modules/directory/src/services/database-repository.ts +1067 -0
- package/modules/directory/src/services/directory-service.ts +311 -0
- package/modules/directory/src/services/index.ts +43 -0
- package/modules/directory/src/services/migration.ts +146 -0
- package/modules/directory/src/services/provisioning-service.ts +1420 -0
- package/modules/directory/src/services/rate-limiter.ts +103 -0
- package/modules/directory/src/services/repository.ts +208 -0
- package/modules/directory/src/services/service-error.ts +42 -0
- package/modules/directory/src/services/token-service.ts +215 -0
- package/modules/directory/src/settings.ts +86 -0
- package/modules/directory/translations/en.json +185 -0
- package/modules/directory/translations/pl.json +185 -0
- package/modules/documents/migrations/0001_documents_core.down.sql +1 -0
- package/modules/documents/migrations/0001_documents_core.up.sql +35 -0
- package/modules/documents/migrations/0002_documents_files_page.down.sql +1 -0
- package/modules/documents/migrations/0002_documents_files_page.up.sql +6 -0
- package/modules/documents/migrations/0003_documents_rotation_inventory.down.sql +2 -0
- package/modules/documents/migrations/0003_documents_rotation_inventory.up.sql +18 -0
- package/modules/documents/migrations/README.md +3 -0
- package/modules/documents/module.json +32 -0
- package/modules/documents/package.json +50 -0
- package/modules/documents/spec/module.yaml +248 -0
- package/modules/documents/src/acl/permissions.ts +6 -0
- package/modules/documents/src/api/endpoints.ts +401 -0
- package/modules/documents/src/cli/commands.json +17 -0
- package/modules/documents/src/cli/index.ts +145 -0
- package/modules/documents/src/client/DocumentUploader.tsrx +148 -0
- package/modules/documents/src/client/DocumentsView.tsrx +540 -0
- package/modules/documents/src/client/api.ts +209 -0
- package/modules/documents/src/client/contribution.tsrx +29 -0
- package/modules/documents/src/client/download.ts +70 -0
- package/modules/documents/src/client/index.ts +22 -0
- package/modules/documents/src/client/navigation.ts +25 -0
- package/modules/documents/src/client/presentation.ts +110 -0
- package/modules/documents/src/client/state.ts +117 -0
- package/modules/documents/src/domain/attachments.ts +84 -0
- package/modules/documents/src/domain/types.ts +80 -0
- package/modules/documents/src/index.ts +46 -0
- package/modules/documents/src/platform.ts +61 -0
- package/modules/documents/src/server/index.ts +30 -0
- package/modules/documents/src/server/runtime.ts +107 -0
- package/modules/documents/src/services/attachments.ts +39 -0
- package/modules/documents/src/services/data-classes.ts +25 -0
- package/modules/documents/src/services/database-repository.ts +270 -0
- package/modules/documents/src/services/documents-service.ts +590 -0
- package/modules/documents/src/services/index.ts +18 -0
- package/modules/documents/src/services/migration.ts +117 -0
- package/modules/documents/src/services/repository.ts +58 -0
- package/modules/documents/src/services/storage-rotation.ts +157 -0
- package/modules/documents/src/settings.ts +107 -0
- package/modules/documents/translations/en.json +111 -0
- package/modules/documents/translations/pl.json +111 -0
- package/modules/exports/migrations/0001_exports_core.down.sql +2 -0
- package/modules/exports/migrations/0001_exports_core.up.sql +28 -0
- package/modules/exports/migrations/0002_exports_job_routing_role.down.sql +4 -0
- package/modules/exports/migrations/0002_exports_job_routing_role.up.sql +21 -0
- package/modules/exports/migrations/0003_exports_rotation_inventory.down.sql +1 -0
- package/modules/exports/migrations/0003_exports_rotation_inventory.up.sql +9 -0
- package/modules/exports/migrations/README.md +3 -0
- package/modules/exports/module.json +32 -0
- package/modules/exports/package.json +45 -0
- package/modules/exports/spec/module.yaml +230 -0
- package/modules/exports/src/acl/permissions.ts +6 -0
- package/modules/exports/src/api/endpoints.ts +211 -0
- package/modules/exports/src/cli/commands.json +17 -0
- package/modules/exports/src/cli/index.ts +145 -0
- package/modules/exports/src/client/ExportsView.tsrx +327 -0
- package/modules/exports/src/client/api.ts +133 -0
- package/modules/exports/src/client/contribution.tsrx +31 -0
- package/modules/exports/src/client/index.ts +20 -0
- package/modules/exports/src/client/navigation.ts +25 -0
- package/modules/exports/src/client/presentation.ts +53 -0
- package/modules/exports/src/client/state.ts +56 -0
- package/modules/exports/src/domain/lists.ts +29 -0
- package/modules/exports/src/domain/types.ts +120 -0
- package/modules/exports/src/index.ts +41 -0
- package/modules/exports/src/platform.ts +80 -0
- package/modules/exports/src/server/index.ts +50 -0
- package/modules/exports/src/server/runtime.ts +160 -0
- package/modules/exports/src/services/data-classes.ts +59 -0
- package/modules/exports/src/services/database-repository.ts +403 -0
- package/modules/exports/src/services/export-runner.ts +123 -0
- package/modules/exports/src/services/export-service.ts +356 -0
- package/modules/exports/src/services/index.ts +6 -0
- package/modules/exports/src/services/list-registry.ts +105 -0
- package/modules/exports/src/services/migration.ts +116 -0
- package/modules/exports/src/services/repository.ts +96 -0
- package/modules/exports/src/services/storage-rotation.ts +138 -0
- package/modules/exports/src/settings.ts +70 -0
- package/modules/exports/translations/en.json +69 -0
- package/modules/exports/translations/pl.json +69 -0
- package/modules/import/migrations/0001_import_core.down.sql +6 -0
- package/modules/import/migrations/0001_import_core.up.sql +61 -0
- package/modules/import/migrations/0002_import_job_routing_role.down.sql +4 -0
- package/modules/import/migrations/0002_import_job_routing_role.up.sql +20 -0
- package/modules/import/migrations/0003_import_jobs_export_index.down.sql +1 -0
- package/modules/import/migrations/0003_import_jobs_export_index.up.sql +7 -0
- package/modules/import/migrations/0004_import_jobs_traceparent.down.sql +1 -0
- package/modules/import/migrations/0004_import_jobs_traceparent.up.sql +7 -0
- package/modules/import/migrations/README.md +3 -0
- package/modules/import/module.json +37 -0
- package/modules/import/package.json +50 -0
- package/modules/import/spec/module.yaml +335 -0
- package/modules/import/src/acl/permissions.ts +6 -0
- package/modules/import/src/api/endpoints.ts +400 -0
- package/modules/import/src/client/ImportJobDrawer.tsrx +229 -0
- package/modules/import/src/client/ImportsView.tsrx +455 -0
- package/modules/import/src/client/NewImportForm.tsrx +274 -0
- package/modules/import/src/client/api.ts +243 -0
- package/modules/import/src/client/contribution.tsrx +29 -0
- package/modules/import/src/client/index.ts +23 -0
- package/modules/import/src/client/navigation.ts +25 -0
- package/modules/import/src/client/presentation.ts +59 -0
- package/modules/import/src/client/state.ts +43 -0
- package/modules/import/src/domain/csv.ts +258 -0
- package/modules/import/src/domain/ports.ts +157 -0
- package/modules/import/src/domain/types.ts +179 -0
- package/modules/import/src/index.ts +58 -0
- package/modules/import/src/platform.ts +60 -0
- package/modules/import/src/server/index.ts +49 -0
- package/modules/import/src/server/runtime.ts +158 -0
- package/modules/import/src/services/csv-source.ts +121 -0
- package/modules/import/src/services/data-classes.ts +63 -0
- package/modules/import/src/services/database-repository.ts +780 -0
- package/modules/import/src/services/import-runner.ts +127 -0
- package/modules/import/src/services/import-service.ts +872 -0
- package/modules/import/src/services/index.ts +6 -0
- package/modules/import/src/services/migration.ts +156 -0
- package/modules/import/src/services/port-registry.ts +158 -0
- package/modules/import/src/services/repository.ts +147 -0
- package/modules/import/src/settings.ts +70 -0
- package/modules/import/translations/en.json +175 -0
- package/modules/import/translations/pl.json +175 -0
- package/modules/metering/migrations/0001_metering_core.down.sql +6 -0
- package/modules/metering/migrations/0001_metering_core.up.sql +119 -0
- package/modules/metering/migrations/0002_metering_bucket_export.down.sql +3 -0
- package/modules/metering/migrations/0002_metering_bucket_export.up.sql +5 -0
- package/modules/metering/migrations/README.md +3 -0
- package/modules/metering/module.json +46 -0
- package/modules/metering/package.json +50 -0
- package/modules/metering/spec/module.yaml +269 -0
- package/modules/metering/src/acl/permissions.ts +5 -0
- package/modules/metering/src/api/endpoints.ts +104 -0
- package/modules/metering/src/cli/commands.json +28 -0
- package/modules/metering/src/cli/index.ts +246 -0
- package/modules/metering/src/client/LimitsView.tsrx +170 -0
- package/modules/metering/src/client/UsageSummaryWidget.tsrx +63 -0
- package/modules/metering/src/client/UsageView.tsrx +205 -0
- package/modules/metering/src/client/api.ts +91 -0
- package/modules/metering/src/client/contribution.tsrx +42 -0
- package/modules/metering/src/client/index.ts +26 -0
- package/modules/metering/src/client/navigation.ts +54 -0
- package/modules/metering/src/client/presentation.ts +63 -0
- package/modules/metering/src/client/state.ts +31 -0
- package/modules/metering/src/domain/meters.ts +100 -0
- package/modules/metering/src/domain/types.ts +71 -0
- package/modules/metering/src/index.ts +51 -0
- package/modules/metering/src/platform.ts +84 -0
- package/modules/metering/src/server/index.ts +40 -0
- package/modules/metering/src/server/runtime.ts +165 -0
- package/modules/metering/src/services/data-classes.ts +34 -0
- package/modules/metering/src/services/database-repository.ts +574 -0
- package/modules/metering/src/services/index.ts +9 -0
- package/modules/metering/src/services/meter-registry.ts +145 -0
- package/modules/metering/src/services/metering-service.ts +441 -0
- package/modules/metering/src/services/migration.ts +183 -0
- package/modules/metering/src/services/notifications.ts +75 -0
- package/modules/metering/src/services/reports.ts +105 -0
- package/modules/metering/src/services/repository.ts +132 -0
- package/modules/metering/src/services/service-error.ts +46 -0
- package/modules/metering/src/settings.ts +47 -0
- package/modules/metering/translations/en.json +68 -0
- package/modules/metering/translations/pl.json +68 -0
- package/modules/notifications/migrations/0001_notifications_core.down.sql +1 -0
- package/modules/notifications/migrations/0001_notifications_core.up.sql +26 -0
- package/modules/notifications/migrations/0002_notifications_preferences.down.sql +1 -0
- package/modules/notifications/migrations/0002_notifications_preferences.up.sql +17 -0
- package/modules/notifications/migrations/0003_notifications_webhook_subscriptions.down.sql +1 -0
- package/modules/notifications/migrations/0003_notifications_webhook_subscriptions.up.sql +30 -0
- package/modules/notifications/migrations/0004_notifications_deliveries.down.sql +1 -0
- package/modules/notifications/migrations/0004_notifications_deliveries.up.sql +35 -0
- package/modules/notifications/migrations/0005_notifications_delivery_routing_role.down.sql +2 -0
- package/modules/notifications/migrations/0005_notifications_delivery_routing_role.up.sql +17 -0
- package/modules/notifications/migrations/0006_notifications_delivery_title.down.sql +1 -0
- package/modules/notifications/migrations/0006_notifications_delivery_title.up.sql +11 -0
- package/modules/notifications/migrations/0007_notifications_secret_rotation_inventory.down.sql +2 -0
- package/modules/notifications/migrations/0007_notifications_secret_rotation_inventory.up.sql +19 -0
- package/modules/notifications/migrations/0008_notifications_delivery_claim.down.sql +8 -0
- package/modules/notifications/migrations/0008_notifications_delivery_claim.up.sql +19 -0
- package/modules/notifications/migrations/0009_notifications_kind_approvals.down.sql +16 -0
- package/modules/notifications/migrations/0009_notifications_kind_approvals.up.sql +18 -0
- package/modules/notifications/migrations/0010_notifications_kind_meter_threshold.down.sql +16 -0
- package/modules/notifications/migrations/0010_notifications_kind_meter_threshold.up.sql +18 -0
- package/modules/notifications/migrations/0011_notifications_retention_keyset.down.sql +5 -0
- package/modules/notifications/migrations/0011_notifications_retention_keyset.up.sql +15 -0
- package/modules/notifications/migrations/0012_notifications_email_channel.down.sql +12 -0
- package/modules/notifications/migrations/0012_notifications_email_channel.up.sql +38 -0
- package/modules/notifications/migrations/0013_notifications_list_pages.down.sql +5 -0
- package/modules/notifications/migrations/0013_notifications_list_pages.up.sql +13 -0
- package/modules/notifications/migrations/README.md +3 -0
- package/modules/notifications/module.json +32 -0
- package/modules/notifications/package.json +49 -0
- package/modules/notifications/spec/module.yaml +718 -0
- package/modules/notifications/src/acl/permissions.ts +11 -0
- package/modules/notifications/src/api/endpoints.ts +814 -0
- package/modules/notifications/src/cli/commands.json +17 -0
- package/modules/notifications/src/cli/index.ts +126 -0
- package/modules/notifications/src/client/DeliveriesView.tsrx +483 -0
- package/modules/notifications/src/client/FactList.tsrx +24 -0
- package/modules/notifications/src/client/NotificationPreferencesView.tsrx +240 -0
- package/modules/notifications/src/client/NotificationsInboxView.tsrx +592 -0
- package/modules/notifications/src/client/UnreadCountWidget.tsrx +62 -0
- package/modules/notifications/src/client/WebhookForm.tsrx +297 -0
- package/modules/notifications/src/client/WebhooksView.tsrx +637 -0
- package/modules/notifications/src/client/api.ts +382 -0
- package/modules/notifications/src/client/contribution.tsrx +83 -0
- package/modules/notifications/src/client/inbox.ts +41 -0
- package/modules/notifications/src/client/index.ts +29 -0
- package/modules/notifications/src/client/navigation.ts +92 -0
- package/modules/notifications/src/client/notifications.css +70 -0
- package/modules/notifications/src/client/presentation.ts +81 -0
- package/modules/notifications/src/client/state.ts +246 -0
- package/modules/notifications/src/client/unread-count.ts +26 -0
- package/modules/notifications/src/domain/locale.ts +47 -0
- package/modules/notifications/src/domain/publish.ts +46 -0
- package/modules/notifications/src/domain/types.ts +186 -0
- package/modules/notifications/src/index.ts +62 -0
- package/modules/notifications/src/platform.ts +85 -0
- package/modules/notifications/src/server/index.ts +82 -0
- package/modules/notifications/src/server/runtime.ts +251 -0
- package/modules/notifications/src/services/data-classes.ts +139 -0
- package/modules/notifications/src/services/database-repository.ts +1334 -0
- package/modules/notifications/src/services/delivery-payload.ts +93 -0
- package/modules/notifications/src/services/delivery-runner.ts +170 -0
- package/modules/notifications/src/services/delivery-service.ts +811 -0
- package/modules/notifications/src/services/egress.ts +239 -0
- package/modules/notifications/src/services/email-channel.ts +93 -0
- package/modules/notifications/src/services/index.ts +23 -0
- package/modules/notifications/src/services/migration.ts +572 -0
- package/modules/notifications/src/services/notifications-service.ts +297 -0
- package/modules/notifications/src/services/paging.ts +60 -0
- package/modules/notifications/src/services/publish-service.ts +133 -0
- package/modules/notifications/src/services/repository.ts +342 -0
- package/modules/notifications/src/services/secret-rotation.ts +177 -0
- package/modules/notifications/src/services/secret-vault.ts +168 -0
- package/modules/notifications/src/services/service-error.ts +67 -0
- package/modules/notifications/src/services/signature.ts +81 -0
- package/modules/notifications/src/services/webhook-service.ts +307 -0
- package/modules/notifications/src/settings.ts +130 -0
- package/modules/notifications/translations/en.json +255 -0
- package/modules/notifications/translations/pl.json +255 -0
- package/modules/profile/module.json +3 -3
- package/modules/profile/package.json +1 -1
- package/modules/profile/spec/module.yaml +3 -3
- package/modules/profile/src/services/database-repository.ts +3 -13
- package/modules/reports/module.json +28 -0
- package/modules/reports/package.json +42 -0
- package/modules/reports/spec/module.yaml +231 -0
- package/modules/reports/src/acl/permissions.ts +5 -0
- package/modules/reports/src/api/endpoints.ts +72 -0
- package/modules/reports/src/client/ReportsSummaryWidget.tsrx +52 -0
- package/modules/reports/src/client/ReportsView.tsrx +246 -0
- package/modules/reports/src/client/api.ts +65 -0
- package/modules/reports/src/client/contribution.tsrx +36 -0
- package/modules/reports/src/client/index.ts +18 -0
- package/modules/reports/src/client/navigation.ts +39 -0
- package/modules/reports/src/client/presentation.ts +123 -0
- package/modules/reports/src/client/state.ts +28 -0
- package/modules/reports/src/domain/providers.ts +115 -0
- package/modules/reports/src/domain/types.ts +44 -0
- package/modules/reports/src/index.ts +47 -0
- package/modules/reports/src/platform.ts +37 -0
- package/modules/reports/src/server/index.ts +21 -0
- package/modules/reports/src/server/runtime.ts +40 -0
- package/modules/reports/src/services/index.ts +17 -0
- package/modules/reports/src/services/provider-registry.ts +144 -0
- package/modules/reports/src/services/range.ts +65 -0
- package/modules/reports/src/services/reports-service.ts +316 -0
- package/modules/reports/src/services/service-error.ts +26 -0
- package/modules/reports/src/settings.ts +49 -0
- package/modules/reports/translations/en.json +35 -0
- package/modules/reports/translations/pl.json +35 -0
- package/modules/sandbox/module.json +4 -4
- package/modules/sandbox/package.json +1 -1
- package/modules/sandbox/spec/module.yaml +3 -3
- package/modules/sandbox/src/services/database-repository.ts +14 -23
- package/modules/sandbox/src/services/directory.ts +16 -0
- package/modules/sandbox/src/services/sandbox-service.ts +13 -11
- package/modules/search/migrations/0001_search_core.down.sql +1 -0
- package/modules/search/migrations/0001_search_core.up.sql +22 -0
- package/modules/search/migrations/0002_search_recent_export.down.sql +3 -0
- package/modules/search/migrations/0002_search_recent_export.up.sql +5 -0
- package/modules/search/migrations/README.md +3 -0
- package/modules/search/module.json +28 -0
- package/modules/search/package.json +43 -0
- package/modules/search/spec/module.yaml +177 -0
- package/modules/search/src/acl/permissions.ts +5 -0
- package/modules/search/src/api/endpoints.ts +221 -0
- package/modules/search/src/client/SearchView.tsrx +346 -0
- package/modules/search/src/client/api.ts +157 -0
- package/modules/search/src/client/contribution.tsrx +31 -0
- package/modules/search/src/client/index.ts +17 -0
- package/modules/search/src/client/navigation.ts +97 -0
- package/modules/search/src/client/search.css +56 -0
- package/modules/search/src/client/state.ts +113 -0
- package/modules/search/src/domain/data-classes.ts +73 -0
- package/modules/search/src/domain/providers.ts +88 -0
- package/modules/search/src/domain/types.ts +56 -0
- package/modules/search/src/index.ts +46 -0
- package/modules/search/src/platform.ts +42 -0
- package/modules/search/src/server/index.ts +25 -0
- package/modules/search/src/server/runtime.ts +123 -0
- package/modules/search/src/services/database-repository.ts +163 -0
- package/modules/search/src/services/index.ts +21 -0
- package/modules/search/src/services/migration.ts +65 -0
- package/modules/search/src/services/provider-registry.ts +137 -0
- package/modules/search/src/services/repository.ts +43 -0
- package/modules/search/src/services/search-service.ts +442 -0
- package/modules/search/src/services/service-error.ts +35 -0
- package/modules/search/src/settings.ts +68 -0
- package/modules/search/translations/en.json +45 -0
- package/modules/search/translations/pl.json +45 -0
- package/modules/system/module.json +2 -2
- package/modules/system/package.json +1 -1
- package/modules/system/spec/module.yaml +30 -3
- package/modules/system/src/client/FlagsPanel.tsrx +127 -0
- package/modules/system/src/client/ModuleSettingRow.tsrx +17 -7
- package/modules/system/src/client/ModuleSettingsSection.tsrx +10 -71
- package/modules/system/src/client/ModulesView.tsrx +91 -65
- package/modules/system/src/client/flags.ts +35 -0
- package/modules/system/src/client/index.ts +8 -0
- package/modules/system/src/client/navigation.ts +8 -0
- package/modules/system/src/client/settings-state.ts +159 -0
- package/modules/system/src/client/state.ts +2 -0
- package/modules/system/src/domain/time-zone.ts +105 -0
- package/modules/system/src/index.ts +12 -0
- package/modules/system/src/platform.ts +5 -1
- package/modules/system/src/server/endpoints.ts +72 -21
- package/modules/system/src/settings.ts +28 -0
- package/modules/system/translations/en.json +17 -0
- package/modules/system/translations/pl.json +17 -0
- package/modules/users/module.json +30 -4
- package/modules/users/package.json +4 -1
- package/modules/users/spec/module.yaml +290 -7
- package/modules/users/src/api/endpoints.ts +228 -15
- package/modules/users/src/client/InviteMemberForm.tsrx +2 -2
- package/modules/users/src/client/MemberDrawer.tsrx +142 -26
- package/modules/users/src/client/UserAccountForm.tsrx +2 -2
- package/modules/users/src/client/UsersView.tsrx +432 -71
- package/modules/users/src/client/api.ts +106 -12
- package/modules/users/src/client/contribution.tsrx +5 -0
- package/modules/users/src/client/member-columns.tsrx +22 -9
- package/modules/users/src/client/state.ts +172 -7
- package/modules/users/src/domain/lists.ts +9 -0
- package/modules/users/src/index.ts +11 -0
- package/modules/users/src/platform.ts +50 -1
- package/modules/users/src/services/member-export.ts +51 -0
- package/modules/users/src/services/member-import.ts +249 -0
- package/modules/users/src/services/member-search.ts +145 -0
- package/modules/users/src/services/users-service.ts +117 -4
- package/modules/users/translations/en.json +57 -8
- package/modules/users/translations/pl.json +57 -8
- package/modules/workflows/migrations/0004_payload_rotation_inventory.up.sql +17 -0
- package/modules/workflows/migrations/0005_workflows_human_approval.up.sql +28 -0
- package/modules/workflows/migrations/0006_workflows_retention_indexes.up.sql +11 -0
- package/modules/workflows/migrations/0007_workflows_erasure_subject_indexes.up.sql +17 -0
- package/modules/workflows/migrations/0008_workflows_subject_account.up.sql +24 -0
- package/modules/workflows/migrations/0009_workflows_definition_list_indexes.up.sql +9 -0
- package/modules/workflows/module.json +34 -6
- package/modules/workflows/package.json +2 -1
- package/modules/workflows/spec/module.yaml +26 -9
- package/modules/workflows/src/api/endpoints.ts +131 -25
- package/modules/workflows/src/cli/commands.json +17 -0
- package/modules/workflows/src/cli/index.ts +114 -0
- package/modules/workflows/src/client/WorkflowExecutionHistory.tsrx +36 -27
- package/modules/workflows/src/client/WorkflowInspector.tsrx +116 -0
- package/modules/workflows/src/client/WorkflowNodePalette.tsrx +1 -0
- package/modules/workflows/src/client/WorkflowsView.tsrx +236 -99
- package/modules/workflows/src/client/api.ts +54 -34
- package/modules/workflows/src/client/canvas-model.ts +12 -0
- package/modules/workflows/src/client/state.ts +95 -0
- package/modules/workflows/src/domain/events.ts +25 -11
- package/modules/workflows/src/domain/graph.ts +135 -1
- package/modules/workflows/src/domain/types.ts +91 -4
- package/modules/workflows/src/platform.ts +12 -0
- package/modules/workflows/src/server/runtime.ts +78 -5
- package/modules/workflows/src/services/approvals.ts +62 -0
- package/modules/workflows/src/services/cursors.ts +37 -0
- package/modules/workflows/src/services/data-classes.ts +232 -0
- package/modules/workflows/src/services/database-repository.ts +660 -171
- package/modules/workflows/src/services/migration.ts +240 -0
- package/modules/workflows/src/services/notifications.ts +98 -0
- package/modules/workflows/src/services/payload-codec.ts +51 -28
- package/modules/workflows/src/services/payload-rotation.ts +171 -0
- package/modules/workflows/src/services/repository.ts +123 -8
- package/modules/workflows/src/services/simulation.ts +7 -0
- package/modules/workflows/src/services/worker.ts +446 -25
- package/modules/workflows/src/services/workflows-service.ts +264 -103
- package/modules/workflows/translations/en.json +12 -4
- package/modules/workflows/translations/pl.json +12 -4
- package/modules.json +48 -4
- package/package.json +64 -6
- package/packages/client/package.json +1 -0
- package/packages/client/src/ApplicationShell.tsrx +43 -0
- package/packages/client/src/contributions.ts +55 -0
- package/packages/client/src/i18n/locales/en.json +5 -0
- package/packages/client/src/i18n/locales/pl.json +5 -0
- package/packages/client/src/index.ts +13 -1
- package/packages/client/src/routing.ts +22 -0
- package/packages/client/src/shell/CommandPalette.tsrx +223 -11
- package/packages/client/src/shell/command-search.ts +126 -0
- package/packages/client/src/shell/command.ts +30 -0
- package/packages/client/src/shell/navigation.ts +12 -0
- package/packages/client/src/shell/palette-keys.ts +27 -0
- package/packages/client/src/shell/shell.css +7 -0
- package/packages/contracts/schemas/module-spec.schema.json +287 -1
- package/packages/contracts/schemas/module.schema.json +25 -0
- package/packages/contracts/src/index.ts +144 -1
- package/packages/database/src/backup.ts +180 -0
- package/packages/database/src/decoders.ts +25 -0
- package/packages/database/src/index.ts +17 -0
- package/packages/database/src/migrations.ts +7 -0
- package/packages/database/src/record-history.ts +5 -14
- package/packages/harness/src/index.ts +2 -0
- package/packages/harness/src/runtime.ts +378 -2
- package/packages/harness/src/tool-adapters.ts +20 -9
- package/packages/kernel/src/acl.ts +179 -0
- package/packages/kernel/src/approval-grant.ts +310 -0
- package/packages/kernel/src/capability-registry.ts +69 -2
- package/packages/kernel/src/data-class-registry.ts +354 -0
- package/packages/kernel/src/index.ts +85 -4
- package/packages/kernel/src/keyring.ts +208 -0
- package/packages/kernel/src/module-compatibility.ts +35 -4
- package/packages/kernel/src/module-registry.ts +49 -2
- package/packages/kernel/src/module-settings.ts +189 -27
- package/packages/server/package.json +2 -1
- package/packages/server/src/composition.ts +38 -0
- package/packages/server/src/endpoint.ts +104 -47
- package/packages/server/src/export/csv.ts +34 -0
- package/packages/server/src/export/definition.ts +346 -0
- package/packages/server/src/export/index.ts +61 -0
- package/packages/server/src/export/run.ts +116 -0
- package/packages/server/src/index.ts +155 -0
- package/packages/server/src/jobs/index.ts +93 -0
- package/packages/server/src/jobs/runner.ts +486 -0
- package/packages/server/src/log.ts +291 -0
- package/packages/server/src/mail/config.ts +184 -0
- package/packages/server/src/mail/contracts.ts +251 -0
- package/packages/server/src/mail/index.ts +31 -0
- package/packages/server/src/mail/port.ts +101 -0
- package/packages/server/src/mail/smtp.ts +191 -0
- package/packages/server/src/mail/template.ts +105 -0
- package/packages/server/src/metrics.ts +447 -0
- package/packages/server/src/pagination.ts +246 -0
- package/packages/server/src/trace/context.ts +103 -0
- package/packages/server/src/trace/egress.ts +66 -0
- package/packages/server/src/trace/error-sink.ts +296 -0
- package/packages/server/src/trace/exporter.ts +295 -0
- package/packages/server/src/trace/index.ts +60 -0
- package/packages/server/src/trace/job-sink.ts +172 -0
- package/packages/server/src/trace/tracer.ts +338 -0
- package/packages/server/src/web.ts +5 -1
- package/packages/storage/package.json +40 -0
- package/packages/storage/src/config.ts +189 -0
- package/packages/storage/src/content-type.ts +124 -0
- package/packages/storage/src/contracts.ts +112 -0
- package/packages/storage/src/envelope.ts +238 -0
- package/packages/storage/src/index.ts +49 -0
- package/packages/storage/src/local.ts +75 -0
- package/packages/storage/src/port.ts +262 -0
- package/packages/storage/src/read-token.ts +130 -0
- package/packages/storage/src/reseal.ts +128 -0
- package/packages/storage/src/s3.ts +144 -0
- package/packages/storage/src/scanner.ts +22 -0
- package/packages/storage/src/sigv4.ts +104 -0
- package/packages/storage/src/store.ts +13 -0
- package/packages/ui/package.json +1 -0
- package/packages/ui/src/components/Button.tsrx +3 -0
- package/packages/ui/src/components/ConfirmDialog.tsrx +13 -2
- package/packages/ui/src/components/DateField.tsrx +92 -0
- package/packages/ui/src/components/DatePicker.tsrx +525 -0
- package/packages/ui/src/components/DateRangeField.tsrx +93 -0
- package/packages/ui/src/components/Drawer.tsrx +10 -1
- package/packages/ui/src/components/FileUpload.tsrx +158 -0
- package/packages/ui/src/components/Pagination.tsrx +130 -0
- package/packages/ui/src/components/Select.tsrx +78 -0
- package/packages/ui/src/components/Table.tsrx +498 -81
- package/packages/ui/src/components/Tabs.tsrx +53 -0
- package/packages/ui/src/components/ToastHost.tsrx +48 -0
- package/packages/ui/src/components/calendar.ts +243 -0
- package/packages/ui/src/components/date-field.ts +62 -0
- package/packages/ui/src/components/file-upload.ts +49 -0
- package/packages/ui/src/components/focus-trap.ts +62 -0
- package/packages/ui/src/components/pagination.ts +68 -0
- package/packages/ui/src/components/table-sorting.ts +49 -0
- package/packages/ui/src/components/tabs.ts +61 -0
- package/packages/ui/src/components/toast-store.ts +116 -0
- package/packages/ui/src/icons/Icon.tsrx +5 -0
- package/packages/ui/src/index.ts +45 -0
- package/packages/ui/src/styles/components.css +598 -0
- package/modules/automations-workflows-integration/module.json +0 -27
- package/modules/automations-workflows-integration/spec/module.yaml +0 -93
- package/modules/automations-workflows-integration/src/index.ts +0 -14
- package/modules/automations-workflows-integration/src/platform.ts +0 -24
- package/modules/automations-workflows-integration/src/server/index.ts +0 -11
- package/modules/automations-workflows-integration/translations/en.json +0 -21
- package/modules/automations-workflows-integration/translations/pl.json +0 -21
- package/modules/workflows/src/services/cursor-codec.ts +0 -62
|
@@ -12,17 +12,29 @@ import {
|
|
|
12
12
|
import {
|
|
13
13
|
createModuleSettingsRuntime as createKernelSettingsRuntime,
|
|
14
14
|
normalizeActor,
|
|
15
|
+
parsePreviousKeys,
|
|
15
16
|
PLATFORM_SETTINGS_TENANT,
|
|
16
17
|
type Actor,
|
|
17
18
|
type ModuleSettingsRuntime,
|
|
19
|
+
type PlatformDataClassRegistry,
|
|
18
20
|
} from '@flowdular/sdk/kernel';
|
|
19
21
|
import {
|
|
20
22
|
createSecurityHeadersMiddleware,
|
|
23
|
+
mailConfigFromEnvironment,
|
|
24
|
+
serverErrorSink,
|
|
21
25
|
DEVELOPMENT_CONTENT_SECURITY_POLICY,
|
|
22
26
|
PRODUCTION_CONTENT_SECURITY_POLICY,
|
|
27
|
+
type ErrorSink,
|
|
28
|
+
type MailPort,
|
|
29
|
+
type ModuleMetrics,
|
|
23
30
|
} from '@flowdular/sdk/server';
|
|
24
31
|
import { createAuthenticationMiddleware } from '../middleware/authentication.ts';
|
|
25
|
-
import {
|
|
32
|
+
import {
|
|
33
|
+
AUDIT_ACTIONS,
|
|
34
|
+
AuthService,
|
|
35
|
+
type AuthPolicy,
|
|
36
|
+
} from '../services/auth-service.ts';
|
|
37
|
+
import { authDataClasses } from '../services/data-classes.ts';
|
|
26
38
|
import {
|
|
27
39
|
DatabaseAuthRepository,
|
|
28
40
|
migrateAuthDatabase,
|
|
@@ -31,11 +43,11 @@ import {
|
|
|
31
43
|
DevelopmentMailDelivery,
|
|
32
44
|
type AuthMailDelivery,
|
|
33
45
|
} from '../services/mail-delivery.ts';
|
|
46
|
+
import { createMailPortDelivery } from '../services/mail-port.ts';
|
|
47
|
+
import { SmtpMailDelivery } from '../services/mail-smtp.ts';
|
|
34
48
|
import type { AuthRepository } from '../services/repository.ts';
|
|
35
|
-
import {
|
|
36
|
-
|
|
37
|
-
type AuthSettingsStore,
|
|
38
|
-
} from '../services/settings-store.ts';
|
|
49
|
+
import { createSessionSweepRunner } from '../services/session-sweep-runner.ts';
|
|
50
|
+
import { createAuthSettingsStore } from '../services/settings-store.ts';
|
|
39
51
|
import type { AuthCookieConfig } from '../api/cookies.ts';
|
|
40
52
|
import {
|
|
41
53
|
createAuthModuleSettings,
|
|
@@ -44,13 +56,44 @@ import {
|
|
|
44
56
|
DEFAULT_SESSION_TTL_HOURS,
|
|
45
57
|
parseProviderList,
|
|
46
58
|
type AuthSettings,
|
|
59
|
+
type AuthTenantSettings,
|
|
47
60
|
} from '../settings.ts';
|
|
61
|
+
import {
|
|
62
|
+
createMfaEnrolmentMiddleware,
|
|
63
|
+
guardMfaSettings,
|
|
64
|
+
} from './mfa-enforcement.ts';
|
|
65
|
+
import {
|
|
66
|
+
createOidcVerifier,
|
|
67
|
+
discoverOidcProvider,
|
|
68
|
+
type OidcVerifier,
|
|
69
|
+
} from './oidc.ts';
|
|
70
|
+
import { providerHostAllowlist } from './provider-host.ts';
|
|
48
71
|
|
|
49
72
|
export interface AuthRuntimeOptions extends AuthRuntimeEnvironmentOptions {
|
|
50
73
|
/** Platform-owned provider. auth.core never receives a DSN or a pool. */
|
|
51
74
|
readonly databases: DatabaseProvider;
|
|
52
75
|
/** Tenant-scoped lease purpose; `migration` is taken and released internally. */
|
|
53
76
|
readonly purpose?: Exclude<DatabaseProviderRequest['purpose'], 'migration'>;
|
|
77
|
+
/**
|
|
78
|
+
* The platform registry this module declares into. auth.core composes ahead
|
|
79
|
+
* of the module composition, so it receives the registry here rather than
|
|
80
|
+
* through a module server context. Absent, nothing is declared and the
|
|
81
|
+
* workspace sees auth.core holding no class.
|
|
82
|
+
*/
|
|
83
|
+
readonly dataClasses?: PlatformDataClassRegistry;
|
|
84
|
+
/**
|
|
85
|
+
* The platform mail port. When it is composed and configured it is the
|
|
86
|
+
* transport, ahead of anything this module derived from the environment:
|
|
87
|
+
* both read the same variables, and one deployment has one outbox.
|
|
88
|
+
*/
|
|
89
|
+
readonly mail?: MailPort;
|
|
90
|
+
/**
|
|
91
|
+
* The series auth.core records, bound to its id by the composition. Absent,
|
|
92
|
+
* a failed audit write is still logged and reported, only not counted.
|
|
93
|
+
*/
|
|
94
|
+
readonly metrics?: ModuleMetrics;
|
|
95
|
+
/** Where a failed audit write is reported; defaults to the process sink. */
|
|
96
|
+
readonly errorSink?: ErrorSink;
|
|
54
97
|
}
|
|
55
98
|
|
|
56
99
|
/** Everything the process environment can decide on its own. */
|
|
@@ -76,9 +119,13 @@ export interface AuthRuntimeEnvironmentOptions {
|
|
|
76
119
|
readonly mailTransport?: boolean;
|
|
77
120
|
readonly mailDelivery?: AuthMailDelivery;
|
|
78
121
|
readonly mfaEncryptionKey?: string;
|
|
122
|
+
/** Retired keys that still open stored factors; nothing is written with them. */
|
|
123
|
+
readonly mfaPreviousEncryptionKeys?: readonly string[];
|
|
79
124
|
readonly publicBaseUrl?: string;
|
|
80
125
|
readonly applicationPath?: string;
|
|
81
126
|
readonly oidcProviders?: readonly OidcProvider[];
|
|
127
|
+
/** Hosts a provider URL may name; empty allows every public host. */
|
|
128
|
+
readonly providerHosts?: readonly string[];
|
|
82
129
|
readonly production?: boolean;
|
|
83
130
|
readonly contentSecurityPolicy?: string | null;
|
|
84
131
|
readonly contentSecurityPolicyReportOnly?: boolean;
|
|
@@ -88,6 +135,8 @@ export interface AuthRuntimeEnvironmentOptions {
|
|
|
88
135
|
|
|
89
136
|
export interface OidcProvider {
|
|
90
137
|
readonly id: string;
|
|
138
|
+
/** Exact `iss` value; discovery and every ID token are bound to it. */
|
|
139
|
+
readonly issuer: string;
|
|
91
140
|
readonly authorizationEndpoint: string;
|
|
92
141
|
readonly tokenEndpoint: string;
|
|
93
142
|
readonly userInfoEndpoint: string;
|
|
@@ -101,15 +150,32 @@ export interface AuthRuntime {
|
|
|
101
150
|
/** Live view of the declared auth.core settings. */
|
|
102
151
|
readonly settings: AuthSettings;
|
|
103
152
|
readonly moduleSettings: ModuleSettingsRuntime;
|
|
153
|
+
/** Verifies provider ID tokens; its key cache lives with this runtime. */
|
|
154
|
+
readonly oidcVerifier: OidcVerifier;
|
|
104
155
|
readonly trustProxy: boolean;
|
|
105
156
|
readonly mailTransport: boolean;
|
|
157
|
+
/** True once a deployment MFA key is composed; gates requireMfa. */
|
|
158
|
+
readonly mfaKeyConfigured: boolean;
|
|
106
159
|
readonly workspaceRoot: string | null;
|
|
107
160
|
readonly oidcProviders: readonly OidcProvider[];
|
|
161
|
+
/**
|
|
162
|
+
* FD_AUTH_PROVIDER_HOST_ALLOWLIST. Every provider URL this runtime fetches,
|
|
163
|
+
* a workspace's discovery request and the stored token and userinfo
|
|
164
|
+
* endpoints alike, has to name one of these hosts; empty allows any public
|
|
165
|
+
* host and still refuses loopback names and literal addresses.
|
|
166
|
+
*/
|
|
167
|
+
readonly providerHosts: readonly string[];
|
|
108
168
|
readonly publicBaseUrl: string | null;
|
|
109
169
|
readonly applicationPath?: string;
|
|
110
170
|
/* Resolves once the schema is migrated and the leases are held. Concurrent
|
|
111
171
|
first callers await the same initialization. */
|
|
112
172
|
service(): Promise<AuthService>;
|
|
173
|
+
/**
|
|
174
|
+
* Tenant-scoped auth.core settings of one workspace. The stored values are
|
|
175
|
+
* loaded once per workspace before the first answer, so a security decision
|
|
176
|
+
* never observes the declared default in place of a stored value.
|
|
177
|
+
*/
|
|
178
|
+
tenantSettings(tenantId: string): Promise<AuthTenantSettings>;
|
|
113
179
|
/* Re-read at the point of use. A stored run snapshot is only a ceiling and
|
|
114
180
|
never substitutes for the actor's current membership. */
|
|
115
181
|
authorizeAgentToolAccess(
|
|
@@ -195,10 +261,15 @@ function oidcProvidersEnvironment(
|
|
|
195
261
|
const id = text('id').toLowerCase();
|
|
196
262
|
if (!PROVIDER_PATTERN.test(id))
|
|
197
263
|
throw new Error('OIDC provider id is invalid.');
|
|
264
|
+
/* Required: the ID token is verified against this exact issuer, and the
|
|
265
|
+
key set is discovered under it. A provider without one cannot be
|
|
266
|
+
verified, so it is refused at boot rather than trusted at sign-in. */
|
|
267
|
+
const issuer = text('issuer');
|
|
198
268
|
const authorizationEndpoint = text('authorizationEndpoint');
|
|
199
269
|
const tokenEndpoint = text('tokenEndpoint');
|
|
200
270
|
const userInfoEndpoint = text('userInfoEndpoint');
|
|
201
271
|
for (const value of [
|
|
272
|
+
issuer,
|
|
202
273
|
authorizationEndpoint,
|
|
203
274
|
tokenEndpoint,
|
|
204
275
|
userInfoEndpoint,
|
|
@@ -211,6 +282,7 @@ function oidcProvidersEnvironment(
|
|
|
211
282
|
}
|
|
212
283
|
return {
|
|
213
284
|
id,
|
|
285
|
+
issuer,
|
|
214
286
|
authorizationEndpoint,
|
|
215
287
|
tokenEndpoint,
|
|
216
288
|
userInfoEndpoint,
|
|
@@ -258,6 +330,26 @@ function publicOriginEnvironment(
|
|
|
258
330
|
return url.origin;
|
|
259
331
|
}
|
|
260
332
|
|
|
333
|
+
/* The transport is chosen here so a deployment that composes auth.core without
|
|
334
|
+
the platform, the sandbox preview runtime above all, still configures mail
|
|
335
|
+
with environment variables. The variables, their retired auth.core names and
|
|
336
|
+
every refusal come from the platform reader, so both paths answer the same
|
|
337
|
+
environment the same way. */
|
|
338
|
+
function mailDeliveryFromEnvironment(
|
|
339
|
+
environment: NodeJS.ProcessEnv,
|
|
340
|
+
): AuthMailDelivery | undefined {
|
|
341
|
+
const config = mailConfigFromEnvironment(environment);
|
|
342
|
+
if (config.adapter === 'none') return undefined;
|
|
343
|
+
if (config.adapter === 'development') return new DevelopmentMailDelivery();
|
|
344
|
+
return new SmtpMailDelivery({
|
|
345
|
+
url: config.smtp.url,
|
|
346
|
+
from: config.from,
|
|
347
|
+
rejectUnauthorized: config.smtp.rejectUnauthorized,
|
|
348
|
+
requireTLS: config.smtp.requireTLS,
|
|
349
|
+
variables: { url: config.variables.url, from: config.variables.from },
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
|
|
261
353
|
/* The tenant default locale is validated against the workspace locales; a
|
|
262
354
|
missing or unreadable flowdular.json falls back to the module's own list. */
|
|
263
355
|
function workspaceLocales(
|
|
@@ -283,19 +375,7 @@ export function authRuntimeOptionsFromEnvironment(
|
|
|
283
375
|
workspaceRoot = process.cwd(),
|
|
284
376
|
): AuthRuntimeEnvironmentOptions {
|
|
285
377
|
const production = environment.NODE_ENV === 'production';
|
|
286
|
-
const
|
|
287
|
-
environment.FD_AUTH_DEVELOPMENT_MAIL,
|
|
288
|
-
false,
|
|
289
|
-
'FD_AUTH_DEVELOPMENT_MAIL',
|
|
290
|
-
);
|
|
291
|
-
if (developmentMail && production) {
|
|
292
|
-
throw new Error(
|
|
293
|
-
'FD_AUTH_DEVELOPMENT_MAIL is only allowed outside production.',
|
|
294
|
-
);
|
|
295
|
-
}
|
|
296
|
-
const mailDelivery = developmentMail
|
|
297
|
-
? new DevelopmentMailDelivery()
|
|
298
|
-
: undefined;
|
|
378
|
+
const mailDelivery = mailDeliveryFromEnvironment(environment);
|
|
299
379
|
const mailTransport = mailDelivery !== undefined;
|
|
300
380
|
const emailConfirmation = booleanEnvironment(
|
|
301
381
|
environment.FD_AUTH_EMAIL_CONFIRMATION,
|
|
@@ -310,6 +390,13 @@ export function authRuntimeOptionsFromEnvironment(
|
|
|
310
390
|
if (environment.FD_AUTH_MFA_KEY) {
|
|
311
391
|
assertMfaEncryptionKey(environment.FD_AUTH_MFA_KEY, 'FD_AUTH_MFA_KEY');
|
|
312
392
|
}
|
|
393
|
+
const mfaPreviousEncryptionKeys = parsePreviousKeys(
|
|
394
|
+
environment.FD_AUTH_MFA_KEY_PREVIOUS,
|
|
395
|
+
(entry) => {
|
|
396
|
+
assertMfaEncryptionKey(entry, 'Every FD_AUTH_MFA_KEY_PREVIOUS entry');
|
|
397
|
+
return entry;
|
|
398
|
+
},
|
|
399
|
+
);
|
|
313
400
|
const publicBaseUrl = publicOriginEnvironment(
|
|
314
401
|
environment.FD_AUTH_PUBLIC_ORIGIN,
|
|
315
402
|
);
|
|
@@ -360,6 +447,9 @@ export function authRuntimeOptionsFromEnvironment(
|
|
|
360
447
|
'FD_AUTH_SIGN_IN_PROVIDERS',
|
|
361
448
|
),
|
|
362
449
|
oidcProviders: oidcProvidersEnvironment(environment.FD_AUTH_OIDC_PROVIDERS),
|
|
450
|
+
providerHosts: providerHostAllowlist(
|
|
451
|
+
environment.FD_AUTH_PROVIDER_HOST_ALLOWLIST,
|
|
452
|
+
),
|
|
363
453
|
...(locales ? { locales } : {}),
|
|
364
454
|
workspaceRoot,
|
|
365
455
|
trustProxy: booleanEnvironment(
|
|
@@ -372,6 +462,9 @@ export function authRuntimeOptionsFromEnvironment(
|
|
|
372
462
|
...(environment.FD_AUTH_MFA_KEY
|
|
373
463
|
? { mfaEncryptionKey: environment.FD_AUTH_MFA_KEY }
|
|
374
464
|
: {}),
|
|
465
|
+
...(mfaPreviousEncryptionKeys.length > 0
|
|
466
|
+
? { mfaPreviousEncryptionKeys }
|
|
467
|
+
: {}),
|
|
375
468
|
...(publicBaseUrl ? { publicBaseUrl } : {}),
|
|
376
469
|
production,
|
|
377
470
|
contentSecurityPolicy:
|
|
@@ -472,7 +565,7 @@ async function openAuthDatabase(
|
|
|
472
565
|
|
|
473
566
|
export interface AuthModuleSettingsRuntime {
|
|
474
567
|
readonly settings: ModuleSettingsRuntime;
|
|
475
|
-
/** Resolves once
|
|
568
|
+
/** Resolves at once: the runtime awaits every read and write itself. */
|
|
476
569
|
ready(): Promise<void>;
|
|
477
570
|
dispose(): Promise<void>;
|
|
478
571
|
}
|
|
@@ -492,12 +585,11 @@ export function createModuleSettingsRuntime(options: {
|
|
|
492
585
|
const store = createAuthSettingsStore(async () => (await open()).repository);
|
|
493
586
|
return {
|
|
494
587
|
settings: createKernelSettingsRuntime(store),
|
|
495
|
-
ready: () =>
|
|
588
|
+
ready: () => Promise.resolve(),
|
|
496
589
|
async dispose() {
|
|
497
590
|
const pending = opened;
|
|
498
591
|
opened = undefined;
|
|
499
592
|
if (!pending) return;
|
|
500
|
-
await store.ready().catch(() => undefined);
|
|
501
593
|
const database = await pending.catch(() => undefined);
|
|
502
594
|
for (const lease of database?.leases ?? []) await lease.release();
|
|
503
595
|
},
|
|
@@ -508,9 +600,11 @@ export function createAuthRuntime(options: AuthRuntimeOptions): AuthRuntime {
|
|
|
508
600
|
if (options.mfaEncryptionKey) {
|
|
509
601
|
assertMfaEncryptionKey(options.mfaEncryptionKey, 'The MFA encryption key');
|
|
510
602
|
}
|
|
603
|
+
for (const key of options.mfaPreviousEncryptionKeys ?? []) {
|
|
604
|
+
assertMfaEncryptionKey(key, 'Every previous MFA encryption key');
|
|
605
|
+
}
|
|
511
606
|
let opened: Promise<OpenedAuthDatabase> | undefined;
|
|
512
607
|
let servicePromise: Promise<AuthService> | undefined;
|
|
513
|
-
let sessionSweep: ReturnType<typeof setInterval> | undefined;
|
|
514
608
|
let disposed = false;
|
|
515
609
|
const open = (): Promise<OpenedAuthDatabase> => {
|
|
516
610
|
if (disposed) throw new Error('Auth runtime is disposed.');
|
|
@@ -519,10 +613,28 @@ export function createAuthRuntime(options: AuthRuntimeOptions): AuthRuntime {
|
|
|
519
613
|
options.purpose ?? 'runtime',
|
|
520
614
|
));
|
|
521
615
|
};
|
|
522
|
-
const
|
|
523
|
-
|
|
616
|
+
const repository = async (): Promise<AuthRepository> =>
|
|
617
|
+
(await open()).repository;
|
|
618
|
+
const store = createAuthSettingsStore(repository);
|
|
619
|
+
/* Declared while the platform composes, because the registry is sealed
|
|
620
|
+
before any start hook runs. auth.core names itself rather than relying on
|
|
621
|
+
a binding: the same runtime composes in processes that hand it an unbound
|
|
622
|
+
registry. */
|
|
623
|
+
options.dataClasses?.declare('auth.core', authDataClasses(repository));
|
|
624
|
+
const mailDelivery = options.mail?.configured
|
|
625
|
+
? createMailPortDelivery(options.mail)
|
|
626
|
+
: options.mailDelivery;
|
|
627
|
+
/* A composed delivery is a transport whatever the flag says; the flag alone
|
|
628
|
+
still answers for a caller that composes none. */
|
|
629
|
+
const mailTransport =
|
|
630
|
+
mailDelivery !== undefined || (options.mailTransport ?? false);
|
|
631
|
+
const mfaKeyConfigured = options.mfaEncryptionKey !== undefined;
|
|
632
|
+
/* The settings runtime auth hands to the platform is where a workspace turns
|
|
633
|
+
requireMfa on, so it is where a keyless deployment has to be refused. */
|
|
634
|
+
const moduleSettings = guardMfaSettings(
|
|
635
|
+
options.settings ?? createKernelSettingsRuntime(store),
|
|
636
|
+
mfaKeyConfigured,
|
|
524
637
|
);
|
|
525
|
-
const moduleSettings = options.settings ?? createKernelSettingsRuntime(store);
|
|
526
638
|
moduleSettings.declare(
|
|
527
639
|
createAuthModuleSettings({
|
|
528
640
|
allowSignUp: options.allowSignUp,
|
|
@@ -551,10 +663,7 @@ export function createAuthRuntime(options: AuthRuntimeOptions): AuthRuntime {
|
|
|
551
663
|
return read<boolean>('allowSignUp');
|
|
552
664
|
},
|
|
553
665
|
get emailConfirmation() {
|
|
554
|
-
return (
|
|
555
|
-
(options.mailTransport ?? options.mailDelivery !== undefined) &&
|
|
556
|
-
read<boolean>('emailConfirmation')
|
|
557
|
-
);
|
|
666
|
+
return mailTransport && read<boolean>('emailConfirmation');
|
|
558
667
|
},
|
|
559
668
|
get signInProviders() {
|
|
560
669
|
return parseProviderList(read<string>('signInProviders'));
|
|
@@ -569,6 +678,29 @@ export function createAuthRuntime(options: AuthRuntimeOptions): AuthRuntime {
|
|
|
569
678
|
return read<number>('passwordMinLength');
|
|
570
679
|
},
|
|
571
680
|
};
|
|
681
|
+
/* The kernel runtime primes once per workspace and remembers it, so a
|
|
682
|
+
stored value is never answered by its declared default. */
|
|
683
|
+
const primeTenant = (tenantId: string): Promise<void> =>
|
|
684
|
+
moduleSettings.prime(tenantId);
|
|
685
|
+
const tenantSettings = async (
|
|
686
|
+
tenantId: string,
|
|
687
|
+
): Promise<AuthTenantSettings> => {
|
|
688
|
+
await primeTenant(tenantId);
|
|
689
|
+
return {
|
|
690
|
+
requireMfa: moduleSettings.get<boolean>(
|
|
691
|
+
tenantId,
|
|
692
|
+
'auth.core',
|
|
693
|
+
'requireMfa',
|
|
694
|
+
),
|
|
695
|
+
};
|
|
696
|
+
};
|
|
697
|
+
/* An invitation and a reset go to an address, so the workspace default is
|
|
698
|
+
the one locale every message has. */
|
|
699
|
+
const mailLocale = async (tenantId: string): Promise<string> => {
|
|
700
|
+
await primeTenant(tenantId);
|
|
701
|
+
return moduleSettings.get<string>(tenantId, 'auth.core', 'defaultLocale');
|
|
702
|
+
};
|
|
703
|
+
const errorSink = options.errorSink ?? serverErrorSink();
|
|
572
704
|
const policy = (): AuthPolicy => ({
|
|
573
705
|
sessionTtlMs: settings.sessionTtlMs,
|
|
574
706
|
sessionIdleMs: settings.sessionIdleMs,
|
|
@@ -581,33 +713,39 @@ export function createAuthRuntime(options: AuthRuntimeOptions): AuthRuntime {
|
|
|
581
713
|
return Math.floor(settings.sessionTtlMs / 1000);
|
|
582
714
|
},
|
|
583
715
|
};
|
|
716
|
+
/* The verifier this runtime serves with. The service invalidates its cached
|
|
717
|
+
key sets when a workspace changes or deletes a provider row. */
|
|
718
|
+
const oidcVerifier = createOidcVerifier();
|
|
719
|
+
const providerHosts = options.providerHosts ?? [];
|
|
584
720
|
const create = async (): Promise<AuthService> => {
|
|
585
721
|
const { repository } = await open();
|
|
586
722
|
/* The settings this runtime reads on every request are platform scoped.
|
|
587
723
|
Priming them here means a request never observes the declared default
|
|
588
724
|
in place of a stored value. */
|
|
589
|
-
await
|
|
725
|
+
await moduleSettings.prime(PLATFORM_SETTINGS_TENANT);
|
|
590
726
|
const authService = new AuthService(repository, {
|
|
591
727
|
policy,
|
|
728
|
+
/* Saving a workspace provider verifies its issuer the same way every
|
|
729
|
+
ID token is verified against it: discovery under the issuer, naming
|
|
730
|
+
the issuer back. */
|
|
731
|
+
oidcDiscovery: (issuer) => discoverOidcProvider(issuer, providerHosts),
|
|
732
|
+
forgetProviderKeys: (providerId) => oidcVerifier.forget(providerId),
|
|
592
733
|
...(options.mfaEncryptionKey
|
|
593
734
|
? { mfaEncryptionKey: options.mfaEncryptionKey }
|
|
594
735
|
: {}),
|
|
595
|
-
...(options.
|
|
736
|
+
...(options.mfaPreviousEncryptionKeys
|
|
737
|
+
? { mfaPreviousEncryptionKeys: options.mfaPreviousEncryptionKeys }
|
|
738
|
+
: {}),
|
|
739
|
+
...(mailDelivery ? { mailDelivery } : {}),
|
|
740
|
+
mailLocale,
|
|
596
741
|
...(options.publicBaseUrl
|
|
597
742
|
? { publicBaseUrl: options.publicBaseUrl }
|
|
598
743
|
: {}),
|
|
744
|
+
...(options.metrics ? { metrics: options.metrics } : {}),
|
|
745
|
+
errorSink,
|
|
599
746
|
});
|
|
600
747
|
// Expired rows only matter for storage; the lookup already filters them.
|
|
601
|
-
sessionSweep
|
|
602
|
-
void authService.deleteExpiredSessions().catch((error: unknown) => {
|
|
603
|
-
/* Repository errors can contain SQL parameters. Keep the recurring
|
|
604
|
-
maintenance log useful without serializing the thrown value. */
|
|
605
|
-
console.error(
|
|
606
|
-
`[auth.core] expired session sweep failed (${error instanceof Error ? 'Error' : 'non-error'})`,
|
|
607
|
-
);
|
|
608
|
-
});
|
|
609
|
-
}, EXPIRED_SESSION_SWEEP_MS);
|
|
610
|
-
sessionSweep.unref();
|
|
748
|
+
sessionSweep.start();
|
|
611
749
|
return authService;
|
|
612
750
|
};
|
|
613
751
|
const service = (): Promise<AuthService> => {
|
|
@@ -616,6 +754,13 @@ export function createAuthRuntime(options: AuthRuntimeOptions): AuthRuntime {
|
|
|
616
754
|
}
|
|
617
755
|
return (servicePromise ??= create());
|
|
618
756
|
};
|
|
757
|
+
/* The platform runner owns the loop: its interval and unref, the guard
|
|
758
|
+
against overlapping passes and the drain on dispose. It starts with the
|
|
759
|
+
service it sweeps through, so a runtime nobody uses opens no database. */
|
|
760
|
+
const sessionSweep = createSessionSweepRunner({
|
|
761
|
+
sweep: service,
|
|
762
|
+
intervalMs: EXPIRED_SESSION_SWEEP_MS,
|
|
763
|
+
});
|
|
619
764
|
/* Settings writes are audited at the store owner, so the settings
|
|
620
765
|
administration API in system.core needs no audit dependency. The kernel
|
|
621
766
|
change listener is synchronous, so the audit row is written after it
|
|
@@ -640,12 +785,24 @@ export function createAuthRuntime(options: AuthRuntimeOptions): AuthRuntime {
|
|
|
640
785
|
role: membership?.role ?? '',
|
|
641
786
|
scopes: membership?.scopes ?? [],
|
|
642
787
|
},
|
|
643
|
-
change
|
|
644
|
-
|
|
645
|
-
|
|
788
|
+
change,
|
|
789
|
+
);
|
|
790
|
+
})().catch((error: unknown) => {
|
|
791
|
+
console.error(
|
|
792
|
+
`[auth.core] settings audit write failed for ${change.moduleId}.${change.key}:`,
|
|
793
|
+
error instanceof Error ? error.message : error,
|
|
646
794
|
);
|
|
647
|
-
|
|
648
|
-
|
|
795
|
+
const action =
|
|
796
|
+
change.kind === 'flag'
|
|
797
|
+
? AUDIT_ACTIONS.settingsFlagChanged
|
|
798
|
+
: AUDIT_ACTIONS.settingsUpdated;
|
|
799
|
+
options.metrics?.counter('audit_write_failures_total', { action });
|
|
800
|
+
errorSink.report({
|
|
801
|
+
at: Date.now(),
|
|
802
|
+
name: 'AuditWriteFailed',
|
|
803
|
+
module: 'auth.core',
|
|
804
|
+
message: `Audit write failed for ${action}.`,
|
|
805
|
+
});
|
|
649
806
|
});
|
|
650
807
|
settingsAuditWrites.add(write);
|
|
651
808
|
void write.finally(() => settingsAuditWrites.delete(write));
|
|
@@ -660,15 +817,29 @@ export function createAuthRuntime(options: AuthRuntimeOptions): AuthRuntime {
|
|
|
660
817
|
: options.contentSecurityPolicy,
|
|
661
818
|
reportOnly: options.contentSecurityPolicyReportOnly ?? !options.production,
|
|
662
819
|
});
|
|
663
|
-
|
|
820
|
+
/* Every module reads its settings on the request path, so the workspace
|
|
821
|
+
is primed here, once the principal is known and before any route runs. */
|
|
822
|
+
const authentication = createAuthenticationMiddleware(
|
|
823
|
+
service,
|
|
824
|
+
cookie,
|
|
825
|
+
primeTenant,
|
|
826
|
+
);
|
|
827
|
+
const mfaEnrolment = createMfaEnrolmentMiddleware({
|
|
828
|
+
tenantSettings,
|
|
829
|
+
service,
|
|
830
|
+
});
|
|
664
831
|
return {
|
|
665
832
|
cookie,
|
|
666
833
|
settings,
|
|
667
834
|
moduleSettings,
|
|
835
|
+
oidcVerifier,
|
|
836
|
+
tenantSettings,
|
|
668
837
|
trustProxy: options.trustProxy ?? false,
|
|
669
|
-
mailTransport
|
|
838
|
+
mailTransport,
|
|
839
|
+
mfaKeyConfigured,
|
|
670
840
|
workspaceRoot: options.workspaceRoot ?? null,
|
|
671
841
|
oidcProviders: options.oidcProviders ?? [],
|
|
842
|
+
providerHosts,
|
|
672
843
|
publicBaseUrl: options.publicBaseUrl ?? null,
|
|
673
844
|
applicationPath: validateApplicationPath(options.applicationPath ?? '/app'),
|
|
674
845
|
service,
|
|
@@ -678,7 +849,8 @@ export function createAuthRuntime(options: AuthRuntimeOptions): AuthRuntime {
|
|
|
678
849
|
const membership = await (
|
|
679
850
|
await open()
|
|
680
851
|
).repository.findAccountMembership(identity.id, tenantId);
|
|
681
|
-
return membership?.status === 'active'
|
|
852
|
+
return membership?.status === 'active' &&
|
|
853
|
+
membership.membershipStatus === 'active'
|
|
682
854
|
? [...new Set(membership.scopes)].sort()
|
|
683
855
|
: [];
|
|
684
856
|
},
|
|
@@ -690,20 +862,24 @@ export function createAuthRuntime(options: AuthRuntimeOptions): AuthRuntime {
|
|
|
690
862
|
disposed = true;
|
|
691
863
|
detachSettingsAudit();
|
|
692
864
|
await Promise.allSettled([...settingsAuditWrites]);
|
|
693
|
-
|
|
694
|
-
|
|
865
|
+
/* A sweep in flight holds the lease it deletes under, so the loop is
|
|
866
|
+
drained before anything is released. */
|
|
867
|
+
await sessionSweep.dispose();
|
|
695
868
|
const database = opened;
|
|
696
869
|
opened = undefined;
|
|
697
870
|
servicePromise = undefined;
|
|
698
871
|
if (!database) return;
|
|
699
|
-
/* A settings write accepted before disposal still has to land, and its
|
|
700
|
-
lease has to outlive it. */
|
|
701
|
-
await store.ready().catch(() => undefined);
|
|
702
872
|
for (const lease of (await database).leases) await lease.release();
|
|
703
873
|
},
|
|
874
|
+
/* Enrolment runs inside authentication: it needs the resolved principal,
|
|
875
|
+
and it must cover every route an endpoint identity resolver covers. */
|
|
704
876
|
middleware: (context, next) =>
|
|
705
877
|
securityHeaders(context, () =>
|
|
706
|
-
Promise.resolve(
|
|
878
|
+
Promise.resolve(
|
|
879
|
+
authentication(context, () =>
|
|
880
|
+
Promise.resolve(mfaEnrolment(context, next)),
|
|
881
|
+
),
|
|
882
|
+
),
|
|
707
883
|
),
|
|
708
884
|
};
|
|
709
885
|
}
|
|
@@ -2,8 +2,13 @@ export class AuthServiceError extends Error {
|
|
|
2
2
|
readonly code: string;
|
|
3
3
|
readonly status: number;
|
|
4
4
|
|
|
5
|
-
constructor(
|
|
6
|
-
|
|
5
|
+
constructor(
|
|
6
|
+
code: string,
|
|
7
|
+
message: string,
|
|
8
|
+
status: number,
|
|
9
|
+
options?: ErrorOptions,
|
|
10
|
+
) {
|
|
11
|
+
super(message, options);
|
|
7
12
|
this.name = 'AuthServiceError';
|
|
8
13
|
this.code = code;
|
|
9
14
|
this.status = status;
|