@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
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/* The metering.core meter contract, declared here rather than imported.
|
|
2
|
+
agents.core depends on metering.core and requires metering.meters.v1, so the
|
|
3
|
+
module registry composes metering.core first and refuses a deployment
|
|
4
|
+
without it. The mirror is what keeps the dependency a capability rather than
|
|
5
|
+
a package import: this module reads the registry through the platform and
|
|
6
|
+
never reaches metering.core's own code or tables. It is the contract
|
|
7
|
+
metering.core owns (modules/metering/src/domain/meters.ts) and must not
|
|
8
|
+
drift from it. */
|
|
9
|
+
export const METERING_METERS_CAPABILITY = 'metering.meters.v1';
|
|
10
|
+
|
|
11
|
+
/** The stable code this module records when `check` refuses a run. */
|
|
12
|
+
export const METER_LIMIT_EXCEEDED = 'METER_LIMIT_EXCEEDED';
|
|
13
|
+
|
|
14
|
+
export type MeterKind = 'cumulative' | 'gauge';
|
|
15
|
+
|
|
16
|
+
export interface MeterDeclaration {
|
|
17
|
+
readonly key: string;
|
|
18
|
+
readonly label: string;
|
|
19
|
+
readonly unit: string;
|
|
20
|
+
readonly kind: MeterKind;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface MeterRecordInput {
|
|
24
|
+
readonly tenantId: string;
|
|
25
|
+
/** The full key, `<moduleId>.<key>`, as `declare` composed it. */
|
|
26
|
+
readonly meter: string;
|
|
27
|
+
readonly amount: number;
|
|
28
|
+
readonly at?: number;
|
|
29
|
+
/** Makes the fact idempotent. Without it every call counts again. */
|
|
30
|
+
readonly sourceRef?: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface MeterRecordResult {
|
|
34
|
+
readonly recorded: boolean;
|
|
35
|
+
readonly day: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface MeterCheckInput {
|
|
39
|
+
readonly tenantId: string;
|
|
40
|
+
readonly meter: string;
|
|
41
|
+
readonly amount: number;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export type MeterVerdict = 'allowed' | 'warning' | 'refused';
|
|
45
|
+
|
|
46
|
+
export interface MeterCheckResult {
|
|
47
|
+
readonly verdict: MeterVerdict;
|
|
48
|
+
readonly used: number;
|
|
49
|
+
readonly limit: number | null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface MeterRegistry {
|
|
53
|
+
declare(moduleId: string, meters: readonly MeterDeclaration[]): void;
|
|
54
|
+
record(input: MeterRecordInput): Promise<MeterRecordResult>;
|
|
55
|
+
check(input: MeterCheckInput): Promise<MeterCheckResult>;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* Read at the point of use, never captured at composition time, so a run reads
|
|
59
|
+
the registry the platform holds now rather than one this module closed over
|
|
60
|
+
while it composed. Null is a process that built this module outside the
|
|
61
|
+
module registry, such as a test that constructs a worker of its own; a
|
|
62
|
+
composed deployment always has the provider. */
|
|
63
|
+
export type MeterRegistryResolver = () => MeterRegistry | null;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The month a refusal belongs to, as `YYYY-MM` in UTC. A limit is monthly, so
|
|
67
|
+
* a standing refusal is keyed by the month it was recorded in and answers again
|
|
68
|
+
* as soon as the month turns.
|
|
69
|
+
*/
|
|
70
|
+
export function meterPeriod(at: number): string {
|
|
71
|
+
return new Date(at).toISOString().slice(0, 7);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** The meter keys as metering.core composes them, for `record` and `check`. */
|
|
75
|
+
export const AGENT_METERS = {
|
|
76
|
+
runTokens: 'agents.core.run-tokens',
|
|
77
|
+
runs: 'agents.core.runs',
|
|
78
|
+
} as const;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* What agents.core counts. Declared at composition, once, so the workspace
|
|
82
|
+
* sees both meters whether or not a run has happened yet.
|
|
83
|
+
*/
|
|
84
|
+
export const AGENT_METER_DECLARATIONS: readonly MeterDeclaration[] = [
|
|
85
|
+
{
|
|
86
|
+
key: 'run-tokens',
|
|
87
|
+
label: 'Agent run tokens',
|
|
88
|
+
unit: 'tokens',
|
|
89
|
+
kind: 'cumulative',
|
|
90
|
+
},
|
|
91
|
+
{ key: 'runs', label: 'Agent runs', unit: 'runs', kind: 'cumulative' },
|
|
92
|
+
];
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* What one run may cost before it starts. The prompt and the resolved
|
|
96
|
+
* instructions are the tokens the provider is certain to read, at the four
|
|
97
|
+
* characters per token the bundled catalogue prices with, and the output limit
|
|
98
|
+
* is the most it may write back. It is an estimate, so a run may still settle
|
|
99
|
+
* above or below it; the limit it is checked against is a monthly ceiling, not
|
|
100
|
+
* a per-run budget, and the settled fact replaces this guess.
|
|
101
|
+
*/
|
|
102
|
+
export function estimateRunTokens(input: {
|
|
103
|
+
readonly instructions: string;
|
|
104
|
+
readonly input: string;
|
|
105
|
+
readonly maxOutputTokens: number;
|
|
106
|
+
}): number {
|
|
107
|
+
return (
|
|
108
|
+
Math.ceil((input.instructions.length + input.input.length) / 4) +
|
|
109
|
+
Math.max(0, Math.trunc(input.maxOutputTokens))
|
|
110
|
+
);
|
|
111
|
+
}
|
|
@@ -763,6 +763,66 @@ CREATE POLICY module_agent_bindings_reconciliation_policy ON module_agent_bindin
|
|
|
763
763
|
GRANT SELECT (tenant_id, agent_id) ON module_agent_bindings TO coreloom_background;
|
|
764
764
|
`;
|
|
765
765
|
|
|
766
|
+
export const AGENTS_MIGRATION_0022 = `-- The rotation command has to find the connections still sealed with a retired
|
|
767
|
+
-- key before it knows whose they are. It is granted the routing columns and the
|
|
768
|
+
-- key id alone: the nonce, the tag and the ciphertext stay unreadable on this
|
|
769
|
+
-- connection, and every row it re-seals is read again under the tenant that row
|
|
770
|
+
-- named.
|
|
771
|
+
GRANT SELECT (tenant_id, credential_key_id)
|
|
772
|
+
ON agent_provider_connections TO coreloom_background;
|
|
773
|
+
`;
|
|
774
|
+
|
|
775
|
+
/* Mirrors migrations/0023_agents_retention_indexes.up.sql byte for byte. */
|
|
776
|
+
export const AGENTS_MIGRATION_0023 = `-- The retention sweep of agents.core.runs asks one workspace for its oldest
|
|
777
|
+
-- settled runs, and a subject erasure asks it for the runs one account
|
|
778
|
+
-- requested. Both are bounded batches, so both need a range scan rather than a
|
|
779
|
+
-- pass over the workspace's runs; the export walks the order
|
|
780
|
+
-- agent_runs_tenant_queued_idx already carries and needs no index of its own.
|
|
781
|
+
CREATE INDEX IF NOT EXISTS agent_runs_tenant_settled_idx
|
|
782
|
+
ON agent_runs (tenant_id, completed_at);
|
|
783
|
+
CREATE INDEX IF NOT EXISTS agent_runs_tenant_requested_idx
|
|
784
|
+
ON agent_runs (tenant_id, requested_by, id);
|
|
785
|
+
`;
|
|
786
|
+
|
|
787
|
+
/* Mirrors migrations/0024_agent_meter_refusals.up.sql byte for byte. */
|
|
788
|
+
export const AGENTS_MIGRATION_0024 = `-- A meter refusal stands until the workspace's month turns or its limit is
|
|
789
|
+
-- raised, so recording it on every refused enqueue wrote the same fact to the
|
|
790
|
+
-- hash-chained trail as fast as a caller could retry. This row is the claim
|
|
791
|
+
-- that the refusal has already been recorded: the first refusal of a workspace,
|
|
792
|
+
-- a meter and a month takes it and writes the audit event, and every refusal
|
|
793
|
+
-- behind it is answered without touching the trail.
|
|
794
|
+
--
|
|
795
|
+
-- One row per workspace and meter at a time. The claim removes the rows of
|
|
796
|
+
-- earlier months for that workspace and meter in the same transaction, so the
|
|
797
|
+
-- table is bounded by the meters agents.core declares rather than by time.
|
|
798
|
+
CREATE TABLE IF NOT EXISTS agent_meter_refusals (
|
|
799
|
+
tenant_id TEXT NOT NULL,
|
|
800
|
+
meter TEXT NOT NULL,
|
|
801
|
+
period TEXT NOT NULL,
|
|
802
|
+
first_refused_at BIGINT NOT NULL,
|
|
803
|
+
PRIMARY KEY (tenant_id, meter, period)
|
|
804
|
+
);
|
|
805
|
+
ALTER TABLE agent_meter_refusals ENABLE ROW LEVEL SECURITY;
|
|
806
|
+
ALTER TABLE agent_meter_refusals FORCE ROW LEVEL SECURITY;
|
|
807
|
+
CREATE POLICY agent_meter_refusals_tenant_policy ON agent_meter_refusals
|
|
808
|
+
USING (tenant_id = current_setting('coreloom.tenant_id', true))
|
|
809
|
+
WITH CHECK (tenant_id = current_setting('coreloom.tenant_id', true));
|
|
810
|
+
`;
|
|
811
|
+
|
|
812
|
+
/* Mirrors migrations/0025_agent_list_indexes.up.sql byte for byte. */
|
|
813
|
+
export const AGENTS_MIGRATION_0025 = `-- agents.definitions.list pages by lower(name) or updated_at, each followed by
|
|
814
|
+
-- id, and agent_definitions_tenant_name_idx orders by the raw name, so neither
|
|
815
|
+
-- paged read had an index carrying its order. agents.runs.list orders queued_at
|
|
816
|
+
-- and id in one direction, while agent_runs_tenant_queued_idx carries queued_at
|
|
817
|
+
-- descending beside an ascending id, so the planner sorted every page.
|
|
818
|
+
CREATE INDEX IF NOT EXISTS agent_definitions_tenant_name_key_idx
|
|
819
|
+
ON agent_definitions (tenant_id, lower(name), id);
|
|
820
|
+
CREATE INDEX IF NOT EXISTS agent_definitions_tenant_updated_idx
|
|
821
|
+
ON agent_definitions (tenant_id, updated_at, id);
|
|
822
|
+
CREATE INDEX IF NOT EXISTS agent_runs_tenant_queue_order_idx
|
|
823
|
+
ON agent_runs (tenant_id, queued_at, id);
|
|
824
|
+
`;
|
|
825
|
+
|
|
766
826
|
export const databaseMigrations: readonly DatabaseMigration[] = [
|
|
767
827
|
{
|
|
768
828
|
id: '0001_agents_core',
|
|
@@ -1149,4 +1209,53 @@ export const databaseMigrations: readonly DatabaseMigration[] = [
|
|
|
1149
1209
|
},
|
|
1150
1210
|
]),
|
|
1151
1211
|
},
|
|
1212
|
+
{
|
|
1213
|
+
id: '0022_credential_rotation_inventory',
|
|
1214
|
+
sql: { postgresql: AGENTS_MIGRATION_0022 },
|
|
1215
|
+
/* A grant leaves no object behind, so the column privilege itself is what
|
|
1216
|
+
proves this migration ran. */
|
|
1217
|
+
inspectExisting: (database) =>
|
|
1218
|
+
migrationObjectState([
|
|
1219
|
+
async () => {
|
|
1220
|
+
const result = await database.query<{ granted: boolean }>({
|
|
1221
|
+
text: `SELECT CASE WHEN to_regclass('agent_provider_connections') IS NOT NULL THEN
|
|
1222
|
+
has_column_privilege('coreloom_background', 'agent_provider_connections', 'tenant_id', 'SELECT')
|
|
1223
|
+
AND has_column_privilege('coreloom_background', 'agent_provider_connections', 'credential_key_id', 'SELECT')
|
|
1224
|
+
ELSE false END AS granted`,
|
|
1225
|
+
});
|
|
1226
|
+
return result.rows[0]?.granted === true;
|
|
1227
|
+
},
|
|
1228
|
+
]),
|
|
1229
|
+
},
|
|
1230
|
+
{
|
|
1231
|
+
id: '0023_agents_retention_indexes',
|
|
1232
|
+
sql: { postgresql: AGENTS_MIGRATION_0023 },
|
|
1233
|
+
inspectExisting: (database) =>
|
|
1234
|
+
migrationObjectState([
|
|
1235
|
+
() => database.schema.hasIndex('agent_runs_tenant_settled_idx'),
|
|
1236
|
+
() => database.schema.hasIndex('agent_runs_tenant_requested_idx'),
|
|
1237
|
+
]),
|
|
1238
|
+
},
|
|
1239
|
+
|
|
1240
|
+
{
|
|
1241
|
+
id: '0024_agent_meter_refusals',
|
|
1242
|
+
sql: { postgresql: AGENTS_MIGRATION_0024 },
|
|
1243
|
+
inspectExisting: (database) =>
|
|
1244
|
+
postgresTenantTableState(
|
|
1245
|
+
database,
|
|
1246
|
+
'agent_meter_refusals',
|
|
1247
|
+
'agent_meter_refusals_tenant_policy',
|
|
1248
|
+
[],
|
|
1249
|
+
),
|
|
1250
|
+
},
|
|
1251
|
+
{
|
|
1252
|
+
id: '0025_agent_list_indexes',
|
|
1253
|
+
sql: { postgresql: AGENTS_MIGRATION_0025 },
|
|
1254
|
+
inspectExisting: (database) =>
|
|
1255
|
+
migrationObjectState([
|
|
1256
|
+
() => database.schema.hasIndex('agent_definitions_tenant_name_key_idx'),
|
|
1257
|
+
() => database.schema.hasIndex('agent_definitions_tenant_updated_idx'),
|
|
1258
|
+
() => database.schema.hasIndex('agent_runs_tenant_queue_order_idx'),
|
|
1259
|
+
]),
|
|
1260
|
+
},
|
|
1152
1261
|
];
|
|
@@ -14,6 +14,10 @@ interface StoredModuleAgentDefinition {
|
|
|
14
14
|
readonly content_hash: string;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/* The catalogue has no tenant column; the repository reconciles it under this
|
|
18
|
+
sentinel tenant on the runtime handle, so the boot read uses the same one. */
|
|
19
|
+
const MODULE_AGENT_CATALOG_TENANT = '__flowdular_module_agents__';
|
|
20
|
+
|
|
17
21
|
/* Validate persisted revision high-water marks before HMR retires the healthy
|
|
18
22
|
generation. This read is deliberately the only database work the new
|
|
19
23
|
generation does up front: migrations, reconciliation, vault access, workers
|
|
@@ -28,7 +32,7 @@ export async function preflightModuleAgentDefinitions(
|
|
|
28
32
|
|
|
29
33
|
const lease = await databases.acquire({
|
|
30
34
|
namespace: 'agents.core',
|
|
31
|
-
purpose: '
|
|
35
|
+
purpose: 'runtime',
|
|
32
36
|
requirements: {
|
|
33
37
|
dialectIds: [DATABASE_DIALECT_IDS.postgresql],
|
|
34
38
|
capabilities: [
|
|
@@ -38,18 +42,22 @@ export async function preflightModuleAgentDefinitions(
|
|
|
38
42
|
},
|
|
39
43
|
});
|
|
40
44
|
try {
|
|
41
|
-
/* A first run has no catalog table yet, and that is not a downgrade. */
|
|
42
|
-
if (!(await lease.database.schema.hasTable('module_agent_definitions'))) {
|
|
43
|
-
return normalized;
|
|
44
|
-
}
|
|
45
45
|
const stored = await lease.database.transaction(
|
|
46
|
-
(transaction) =>
|
|
47
|
-
|
|
46
|
+
async (transaction) => {
|
|
47
|
+
/* A first run has no catalog table yet, and that is not a downgrade. */
|
|
48
|
+
if (!(await transaction.schema.hasTable('module_agent_definitions'))) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
return transaction.query<
|
|
52
|
+
StoredModuleAgentDefinition & { agent_id: string }
|
|
53
|
+
>({
|
|
48
54
|
text: `SELECT agent_id, definition_revision, content_hash
|
|
49
55
|
FROM module_agent_definitions`,
|
|
50
|
-
})
|
|
51
|
-
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
{ access: 'read', tenantId: MODULE_AGENT_CATALOG_TENANT },
|
|
52
59
|
);
|
|
60
|
+
if (!stored) return normalized;
|
|
53
61
|
const byAgent = new Map(stored.rows.map((row) => [row.agent_id, row]));
|
|
54
62
|
for (const definition of normalized) {
|
|
55
63
|
const previous = byAgent.get(definition.id);
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { UserActor } from '@flowdular/sdk/kernel';
|
|
2
|
+
|
|
3
|
+
/* The notifications.core publish contract, declared here rather than imported.
|
|
4
|
+
notifications.core is optional: agents.core composes, runs and settles runs
|
|
5
|
+
with that module absent, so it may not be a package dependency. This mirror
|
|
6
|
+
is the contract notifications.core owns and must not drift from it.
|
|
7
|
+
modules/workflows/src/services/notifications.ts holds the same mirror and
|
|
8
|
+
stays identical to this file apart from the module id; change both. */
|
|
9
|
+
export const NOTIFICATIONS_PUBLISH_CAPABILITY = 'notifications.publish.v1';
|
|
10
|
+
|
|
11
|
+
export type NotificationKind =
|
|
12
|
+
| 'agent-run-completed'
|
|
13
|
+
| 'agent-run-failed'
|
|
14
|
+
| 'workflow-run-completed'
|
|
15
|
+
| 'workflow-run-failed'
|
|
16
|
+
| 'webhook-dead-letter'
|
|
17
|
+
| 'approval-requested'
|
|
18
|
+
| 'approval-decided'
|
|
19
|
+
| 'meter-threshold';
|
|
20
|
+
|
|
21
|
+
export interface NotificationPublishInput {
|
|
22
|
+
readonly tenantId: string;
|
|
23
|
+
readonly kind: NotificationKind;
|
|
24
|
+
readonly sourceModule: string;
|
|
25
|
+
readonly sourceRef: string;
|
|
26
|
+
readonly title: string;
|
|
27
|
+
readonly body?: string;
|
|
28
|
+
readonly recipients: readonly string[];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface NotificationPublishResult {
|
|
32
|
+
readonly inboxItemIds: readonly string[];
|
|
33
|
+
readonly deliveryIds: readonly string[];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface NotificationPublisher {
|
|
37
|
+
publish(input: NotificationPublishInput): Promise<NotificationPublishResult>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Read at the point of use, never at composition time: the platform may
|
|
41
|
+
register notifications.core after agents.core, or never. */
|
|
42
|
+
export type NotificationPublisherResolver = () => NotificationPublisher | null;
|
|
43
|
+
|
|
44
|
+
const LIMITS = {
|
|
45
|
+
sourceModule: 64,
|
|
46
|
+
sourceRef: 200,
|
|
47
|
+
title: 200,
|
|
48
|
+
body: 4_000,
|
|
49
|
+
recipients: 64,
|
|
50
|
+
recipientId: 128,
|
|
51
|
+
} as const;
|
|
52
|
+
|
|
53
|
+
function clamp(value: string, limit: number): string {
|
|
54
|
+
return value.length > limit ? value.slice(0, limit) : value;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* The person accountable for the run. The service that enqueued it already
|
|
58
|
+
derived and validated one: the member who started the run, or the member who
|
|
59
|
+
configured the service identity that did. A run with no person behind it,
|
|
60
|
+
such as one an agent started for itself, has nobody to notify. */
|
|
61
|
+
export function runNotificationRecipients(
|
|
62
|
+
authorizationSubject: UserActor | null,
|
|
63
|
+
): readonly string[] {
|
|
64
|
+
return authorizationSubject ? [authorizationSubject.id] : [];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Advisory and post-commit. An absent notifications module, nobody to notify,
|
|
68
|
+
or a publisher that throws never changes a settled run, so this never
|
|
69
|
+
rejects. The caller passes the run id as sourceRef, which makes a retried
|
|
70
|
+
terminal step publish the same notification instead of a second one. */
|
|
71
|
+
export async function publishRunOutcome(
|
|
72
|
+
resolve: NotificationPublisherResolver | undefined,
|
|
73
|
+
input: NotificationPublishInput,
|
|
74
|
+
): Promise<void> {
|
|
75
|
+
if (input.recipients.length === 0) return;
|
|
76
|
+
try {
|
|
77
|
+
const publisher = resolve?.();
|
|
78
|
+
if (!publisher) return;
|
|
79
|
+
await publisher.publish({
|
|
80
|
+
tenantId: input.tenantId,
|
|
81
|
+
kind: input.kind,
|
|
82
|
+
sourceModule: clamp(input.sourceModule, LIMITS.sourceModule),
|
|
83
|
+
sourceRef: clamp(input.sourceRef, LIMITS.sourceRef),
|
|
84
|
+
title: clamp(input.title, LIMITS.title),
|
|
85
|
+
...(input.body === undefined
|
|
86
|
+
? {}
|
|
87
|
+
: { body: clamp(input.body, LIMITS.body) }),
|
|
88
|
+
recipients: input.recipients
|
|
89
|
+
.slice(0, LIMITS.recipients)
|
|
90
|
+
.map((recipient) => clamp(recipient, LIMITS.recipientId)),
|
|
91
|
+
});
|
|
92
|
+
} catch (error) {
|
|
93
|
+
console.warn(
|
|
94
|
+
`[agents] notification publish for run ${input.sourceRef} failed:`,
|
|
95
|
+
error instanceof Error ? error.message : error,
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DatabaseHandle, DatabaseTransaction } from '@flowdular/sdk/database';
|
|
2
|
+
import { integer } from '@flowdular/sdk/database';
|
|
2
3
|
import { modelSupportsTemperature } from '@flowdular/sdk/harness/catalog';
|
|
3
4
|
import type {
|
|
4
5
|
AgentModelReadiness,
|
|
@@ -106,9 +107,9 @@ function readinessMap(
|
|
|
106
107
|
result.get(row.provider_id) ?? new Map<string, AgentModelReadiness>();
|
|
107
108
|
models.set(row.model_id, {
|
|
108
109
|
status: row.status,
|
|
109
|
-
latencyMs: integerOrNull(row.latency_ms),
|
|
110
|
+
latencyMs: integerOrNull(row.latency_ms, 'latency_ms'),
|
|
110
111
|
errorCode: row.error_code,
|
|
111
|
-
checkedAt: integer(row.checked_at),
|
|
112
|
+
checkedAt: integer(row.checked_at, 'checked_at'),
|
|
112
113
|
});
|
|
113
114
|
result.set(row.provider_id, models);
|
|
114
115
|
}
|
|
@@ -134,9 +135,9 @@ function fromRow(
|
|
|
134
135
|
credentialRevision: row.credential_revision,
|
|
135
136
|
revision: row.revision,
|
|
136
137
|
createdBy: row.created_by,
|
|
137
|
-
createdAt: integer(row.created_at),
|
|
138
|
+
createdAt: integer(row.created_at, 'created_at'),
|
|
138
139
|
updatedBy: row.updated_by,
|
|
139
|
-
updatedAt: integer(row.updated_at),
|
|
140
|
+
updatedAt: integer(row.updated_at, 'updated_at'),
|
|
140
141
|
},
|
|
141
142
|
credential: {
|
|
142
143
|
keyId: row.credential_key_id,
|
|
@@ -180,20 +181,10 @@ export interface ProviderRepository {
|
|
|
180
181
|
|
|
181
182
|
type Int = number | bigint | string;
|
|
182
183
|
|
|
183
|
-
/* PostgreSQL returns BIGINT and NUMERIC aggregates as strings, so a count read
|
|
184
|
-
raw compares against text where it should compare against a number. */
|
|
185
|
-
function integer(value: Int): number {
|
|
186
|
-
const normalized = Number(value);
|
|
187
|
-
if (!Number.isSafeInteger(normalized)) {
|
|
188
|
-
throw new Error('The agents database returned an invalid integer.');
|
|
189
|
-
}
|
|
190
|
-
return normalized;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
184
|
/* A nullable BIGINT must stay null: coercing it to 0 would turn "never checked"
|
|
194
185
|
into "checked at the epoch". */
|
|
195
|
-
function integerOrNull(value: Int | null): number | null {
|
|
196
|
-
return value === null ? null : integer(value);
|
|
186
|
+
function integerOrNull(value: Int | null, field: string): number | null {
|
|
187
|
+
return value === null ? null : integer(value, field);
|
|
197
188
|
}
|
|
198
189
|
|
|
199
190
|
export interface ProvidersPersistenceStatements {
|
|
@@ -326,8 +317,8 @@ export class DatabaseProviderRepository implements ProviderRepository {
|
|
|
326
317
|
);
|
|
327
318
|
const row = result.rows[0]!;
|
|
328
319
|
return {
|
|
329
|
-
connections: integer(row.connections),
|
|
330
|
-
enabled: integer(row.enabled),
|
|
320
|
+
connections: integer(row.connections, 'connections'),
|
|
321
|
+
enabled: integer(row.enabled, 'enabled'),
|
|
331
322
|
};
|
|
332
323
|
}
|
|
333
324
|
|
|
@@ -15,7 +15,7 @@ import type {
|
|
|
15
15
|
CreateAgentProviderInput,
|
|
16
16
|
UpdateAgentProviderInput,
|
|
17
17
|
} from '../domain/types.ts';
|
|
18
|
-
import type
|
|
18
|
+
import { credentialContext, type CredentialVault } from './credential-vault.ts';
|
|
19
19
|
import {
|
|
20
20
|
assertPublicHost,
|
|
21
21
|
createProviderFetch,
|
|
@@ -198,14 +198,6 @@ function resourceName(
|
|
|
198
198
|
return value;
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
function credentialContext(connection: {
|
|
202
|
-
readonly tenantId: string;
|
|
203
|
-
readonly id: string;
|
|
204
|
-
readonly kind: AgentProviderKind;
|
|
205
|
-
}): string {
|
|
206
|
-
return `${connection.tenantId}:${connection.id}:${connection.kind}`;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
201
|
function localConnection(tenantId: string): AgentProviderConnection {
|
|
210
202
|
return {
|
|
211
203
|
id: LOCAL_PROVIDER_ID,
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ReportProvider,
|
|
3
|
+
ReportProviderAnswer,
|
|
4
|
+
} from '@flowdular/sdk/modules/reports';
|
|
5
|
+
import { AGENT_PERMISSIONS } from '../acl/permissions.ts';
|
|
6
|
+
import type { AgentUsageDay } from '../domain/types.ts';
|
|
7
|
+
import type { AgentRepository } from './repository.ts';
|
|
8
|
+
|
|
9
|
+
export const AGENT_RUNS_REPORT_PROVIDER_KEY = 'agents.runs';
|
|
10
|
+
|
|
11
|
+
export const AGENT_RUNS_REPORT_PROVIDER_LABEL = 'Agent runs';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* This module's own bundle names the provider, its tiles and its lines; the
|
|
15
|
+
* English literals beside each key are what a deployment without the bundle,
|
|
16
|
+
* or a locale that lacks the key, still shows.
|
|
17
|
+
*/
|
|
18
|
+
export const AGENT_RUNS_REPORT_LABEL_KEYS = {
|
|
19
|
+
provider: 'agents.report.runs.label',
|
|
20
|
+
runs: 'agents.report.runs.tile.runs',
|
|
21
|
+
tokens: 'agents.report.runs.tile.tokens',
|
|
22
|
+
runsPerDay: 'agents.report.runs.series.runsPerDay',
|
|
23
|
+
tokensPerDay: 'agents.report.runs.series.tokensPerDay',
|
|
24
|
+
} as const;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Runs and tokens as the run cost rollup already holds them: totals as tiles,
|
|
28
|
+
* one point per day as series. The rollup groups by day inside the range, and
|
|
29
|
+
* reports.core bounds a range to the same number of days a series may carry,
|
|
30
|
+
* so the point count can never pass the contract's bound.
|
|
31
|
+
*/
|
|
32
|
+
export function runsAnswer(
|
|
33
|
+
days: readonly AgentUsageDay[],
|
|
34
|
+
): ReportProviderAnswer {
|
|
35
|
+
let runs = 0;
|
|
36
|
+
let tokens = 0;
|
|
37
|
+
const runPoints: { at: string; value: number }[] = [];
|
|
38
|
+
const tokenPoints: { at: string; value: number }[] = [];
|
|
39
|
+
for (const day of days) {
|
|
40
|
+
const dayTokens = day.inputTokens + day.outputTokens;
|
|
41
|
+
runs += day.runs;
|
|
42
|
+
tokens += dayTokens;
|
|
43
|
+
runPoints.push({ at: day.day, value: day.runs });
|
|
44
|
+
tokenPoints.push({ at: day.day, value: dayTokens });
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
tiles: [
|
|
48
|
+
{
|
|
49
|
+
key: 'runs',
|
|
50
|
+
label: 'Runs',
|
|
51
|
+
tileLabelKey: AGENT_RUNS_REPORT_LABEL_KEYS.runs,
|
|
52
|
+
value: runs,
|
|
53
|
+
unit: 'runs',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
key: 'tokens',
|
|
57
|
+
label: 'Tokens',
|
|
58
|
+
tileLabelKey: AGENT_RUNS_REPORT_LABEL_KEYS.tokens,
|
|
59
|
+
value: tokens,
|
|
60
|
+
unit: 'tokens',
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
series: [
|
|
64
|
+
{
|
|
65
|
+
key: 'runs',
|
|
66
|
+
label: 'Runs per day',
|
|
67
|
+
seriesLabelKey: AGENT_RUNS_REPORT_LABEL_KEYS.runsPerDay,
|
|
68
|
+
points: runPoints,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
key: 'tokens',
|
|
72
|
+
label: 'Tokens per day',
|
|
73
|
+
seriesLabelKey: AGENT_RUNS_REPORT_LABEL_KEYS.tokensPerDay,
|
|
74
|
+
points: tokenPoints,
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function aborted(signal: AbortSignal | undefined): boolean {
|
|
81
|
+
return signal?.aborted === true;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* This workspace's agent runs as a report provider. The read is the existing
|
|
86
|
+
* rollup under this module's own tenant transaction, with the tenant
|
|
87
|
+
* reports.core resolved from the principal; it prices nothing and writes
|
|
88
|
+
* nothing.
|
|
89
|
+
*/
|
|
90
|
+
export function createAgentRunsReportProvider(
|
|
91
|
+
repository: () => Promise<AgentRepository>,
|
|
92
|
+
): ReportProvider {
|
|
93
|
+
return {
|
|
94
|
+
key: AGENT_RUNS_REPORT_PROVIDER_KEY,
|
|
95
|
+
label: AGENT_RUNS_REPORT_PROVIDER_LABEL,
|
|
96
|
+
labelKey: AGENT_RUNS_REPORT_LABEL_KEYS.provider,
|
|
97
|
+
permission: AGENT_PERMISSIONS.runsRead,
|
|
98
|
+
async read({ tenantId, range, signal }): Promise<ReportProviderAnswer> {
|
|
99
|
+
if (aborted(signal)) return { tiles: [] };
|
|
100
|
+
const days = await (
|
|
101
|
+
await repository()
|
|
102
|
+
).usageByDay(tenantId, range.from, range.to, { signal });
|
|
103
|
+
if (aborted(signal)) return { tiles: [] };
|
|
104
|
+
return runsAnswer(days);
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|