@flowdular/sdk 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (908) hide show
  1. package/.ai/agents/sandbox/business-manager.md +5 -1
  2. package/.ai/blueprints/author-spec/README.md +1 -1
  3. package/.ai/blueprints/author-spec/spec-requirements.yaml +44 -0
  4. package/.ai/blueprints/author-spec/steps.yaml +5 -5
  5. package/.ai/blueprints/author-spec/templates/module.yaml +99 -3
  6. package/.ai/blueprints/edit-module/gates.yaml +4 -0
  7. package/.ai/blueprints/edit-module/required-files.yaml +9 -0
  8. package/.ai/blueprints/new-module/gates.yaml +4 -0
  9. package/.ai/blueprints/new-module/spec-requirements.yaml +2 -2
  10. package/.ai/blueprints/release/gates.yaml +4 -0
  11. package/.ai/platform-capabilities.md +128 -0
  12. package/.ai/policies/capabilities.yaml +100 -0
  13. package/.ai/policies/path-ownership.yaml +5 -2
  14. package/.ai/policies/task-budgets.yaml +5 -3
  15. package/.ai/references/catalog/module.json +4 -4
  16. package/.ai/references/catalog/package.json +2 -2
  17. package/.ai/references/catalog/spec/module.yaml +5 -3
  18. package/.ai/references/catalog/src/platform.ts +2 -0
  19. package/.ai/references/catalog/src/services/catalog-service.ts +89 -1
  20. package/.ai/references/catalog/src/services/data-classes.ts +47 -0
  21. package/.ai/references/catalog/src/services/database-repository.ts +98 -1
  22. package/.ai/references/catalog/src/services/repository.ts +22 -1
  23. package/.ai/references/catalog/tests/data-classes.test.ts +157 -0
  24. package/.ai/references/catalog.provenance.json +12 -10
  25. package/.ai/skills/README.md +10 -0
  26. package/.ai/skills/agent-tool-design/SKILL.md +1 -2
  27. package/.ai/skills/auth-security-review/SKILL.md +1 -1
  28. package/.ai/skills/business-agent-design/SKILL.md +0 -1
  29. package/.ai/skills/deploy-operate/SKILL.md +114 -0
  30. package/.ai/skills/module-new/SKILL.md +29 -3
  31. package/.ai/skills/module-update/SKILL.md +9 -3
  32. package/.ai/skills/perf-audit/SKILL.md +0 -1
  33. package/.ai/skills/release-eject-pr/SKILL.md +0 -1
  34. package/.ai/skills/spec-interview/SKILL.md +120 -0
  35. package/.ai/skills/test-hardening/SKILL.md +1 -0
  36. package/.ai/skills/ux-design/SKILL.md +34 -3
  37. package/.ai/skills/variables/SKILL.md +0 -2
  38. package/.ai/skills/workflow-development/SKILL.md +0 -1
  39. package/AGENTS.md +4 -0
  40. package/docs/agent-contract.md +2 -2
  41. package/docs/design-system.md +185 -31
  42. package/modules/access/migrations/0001_access_core.down.sql +1 -0
  43. package/modules/access/migrations/0001_access_core.up.sql +28 -0
  44. package/modules/access/migrations/README.md +3 -0
  45. package/modules/access/module.json +33 -0
  46. package/modules/access/package.json +43 -0
  47. package/modules/access/spec/module.yaml +225 -0
  48. package/modules/access/src/acl/permissions.ts +6 -0
  49. package/modules/access/src/api/endpoints.ts +244 -0
  50. package/modules/access/src/client/ActivityView.tsrx +245 -0
  51. package/modules/access/src/client/AttestationsView.tsrx +176 -0
  52. package/modules/access/src/client/ReviewView.tsrx +586 -0
  53. package/modules/access/src/client/api.ts +132 -0
  54. package/modules/access/src/client/contribution.tsrx +41 -0
  55. package/modules/access/src/client/index.ts +41 -0
  56. package/modules/access/src/client/navigation.ts +57 -0
  57. package/modules/access/src/client/presentation.ts +69 -0
  58. package/modules/access/src/client/state.ts +72 -0
  59. package/modules/access/src/domain/types.ts +189 -0
  60. package/modules/access/src/index.ts +38 -0
  61. package/modules/access/src/platform.ts +60 -0
  62. package/modules/access/src/server/index.ts +42 -0
  63. package/modules/access/src/server/runtime.ts +105 -0
  64. package/modules/access/src/services/access-service.ts +298 -0
  65. package/modules/access/src/services/audit-window.ts +78 -0
  66. package/modules/access/src/services/auth-directory.ts +72 -0
  67. package/modules/access/src/services/changes.ts +91 -0
  68. package/modules/access/src/services/data-classes.ts +28 -0
  69. package/modules/access/src/services/database-repository.ts +185 -0
  70. package/modules/access/src/services/directory.ts +102 -0
  71. package/modules/access/src/services/index.ts +33 -0
  72. package/modules/access/src/services/list-exports.ts +150 -0
  73. package/modules/access/src/services/migration.ts +54 -0
  74. package/modules/access/src/services/repository.ts +30 -0
  75. package/modules/access/src/services/review.ts +178 -0
  76. package/modules/access/translations/en.json +155 -0
  77. package/modules/access/translations/pl.json +155 -0
  78. package/modules/agents/migrations/0022_credential_rotation_inventory.down.sql +2 -0
  79. package/modules/agents/migrations/0022_credential_rotation_inventory.up.sql +7 -0
  80. package/modules/agents/migrations/0023_agents_retention_indexes.down.sql +2 -0
  81. package/modules/agents/migrations/0023_agents_retention_indexes.up.sql +9 -0
  82. package/modules/agents/migrations/0024_agent_meter_refusals.down.sql +3 -0
  83. package/modules/agents/migrations/0024_agent_meter_refusals.up.sql +22 -0
  84. package/modules/agents/migrations/0025_agent_list_indexes.down.sql +3 -0
  85. package/modules/agents/migrations/0025_agent_list_indexes.up.sql +11 -0
  86. package/modules/agents/module.json +30 -4
  87. package/modules/agents/package.json +2 -1
  88. package/modules/agents/spec/module.yaml +63 -5
  89. package/modules/agents/src/api/endpoints.ts +291 -33
  90. package/modules/agents/src/cli/commands.json +11 -0
  91. package/modules/agents/src/cli/index.ts +45 -0
  92. package/modules/agents/src/client/AgentDashboardWidget.tsrx +19 -11
  93. package/modules/agents/src/client/AgentDefinitionList.tsrx +53 -10
  94. package/modules/agents/src/client/AgentPlaygroundView.tsrx +4 -4
  95. package/modules/agents/src/client/AgentProceduresView.tsrx +2 -2
  96. package/modules/agents/src/client/AgentRunsView.tsrx +143 -40
  97. package/modules/agents/src/client/AgentsView.tsrx +109 -33
  98. package/modules/agents/src/client/api.ts +99 -21
  99. package/modules/agents/src/client/state.ts +97 -0
  100. package/modules/agents/src/domain/types.ts +44 -4
  101. package/modules/agents/src/platform.ts +42 -0
  102. package/modules/agents/src/server/action-execution.ts +201 -106
  103. package/modules/agents/src/server/runtime.ts +32 -0
  104. package/modules/agents/src/services/agent-service.ts +158 -30
  105. package/modules/agents/src/services/credential-rotation.ts +185 -0
  106. package/modules/agents/src/services/credential-vault.ts +71 -46
  107. package/modules/agents/src/services/data-classes.ts +176 -0
  108. package/modules/agents/src/services/database-repository.ts +393 -101
  109. package/modules/agents/src/services/metering.ts +111 -0
  110. package/modules/agents/src/services/migration.ts +109 -0
  111. package/modules/agents/src/services/module-agent-preflight.ts +17 -9
  112. package/modules/agents/src/services/notifications.ts +98 -0
  113. package/modules/agents/src/services/provider-repository.ts +9 -18
  114. package/modules/agents/src/services/provider-service.ts +1 -9
  115. package/modules/agents/src/services/reports.ts +107 -0
  116. package/modules/agents/src/services/repository.ts +86 -6
  117. package/modules/agents/src/services/usage-service.ts +2 -0
  118. package/modules/agents/src/services/worker.ts +114 -4
  119. package/modules/agents/src/settings.ts +14 -3
  120. package/modules/agents/translations/en.json +14 -4
  121. package/modules/agents/translations/pl.json +14 -4
  122. package/modules/approvals/migrations/0001_approvals_core.down.sql +3 -0
  123. package/modules/approvals/migrations/0001_approvals_core.up.sql +78 -0
  124. package/modules/approvals/migrations/0002_approvals_expiry_routing_role.down.sql +2 -0
  125. package/modules/approvals/migrations/0002_approvals_expiry_routing_role.up.sql +19 -0
  126. package/modules/approvals/migrations/0003_approvals_retention_indexes.down.sql +6 -0
  127. package/modules/approvals/migrations/0003_approvals_retention_indexes.up.sql +14 -0
  128. package/modules/approvals/migrations/0004_approvals_inbox_keyset_indexes.down.sql +5 -0
  129. package/modules/approvals/migrations/0004_approvals_inbox_keyset_indexes.up.sql +12 -0
  130. package/modules/approvals/migrations/README.md +3 -0
  131. package/modules/approvals/module.json +34 -0
  132. package/modules/approvals/package.json +43 -0
  133. package/modules/approvals/spec/module.yaml +318 -0
  134. package/modules/approvals/src/acl/permissions.ts +7 -0
  135. package/modules/approvals/src/api/endpoints.ts +457 -0
  136. package/modules/approvals/src/client/ApprovalRequestDrawer.tsrx +138 -0
  137. package/modules/approvals/src/client/ApprovalsView.tsrx +562 -0
  138. package/modules/approvals/src/client/PendingCountWidget.tsrx +52 -0
  139. package/modules/approvals/src/client/api.ts +203 -0
  140. package/modules/approvals/src/client/approvals.css +51 -0
  141. package/modules/approvals/src/client/contribution.tsrx +44 -0
  142. package/modules/approvals/src/client/index.ts +26 -0
  143. package/modules/approvals/src/client/navigation.ts +39 -0
  144. package/modules/approvals/src/client/pending-count.ts +26 -0
  145. package/modules/approvals/src/client/presentation.ts +52 -0
  146. package/modules/approvals/src/client/state.ts +141 -0
  147. package/modules/approvals/src/domain/capability.ts +95 -0
  148. package/modules/approvals/src/domain/types.ts +154 -0
  149. package/modules/approvals/src/index.ts +52 -0
  150. package/modules/approvals/src/platform.ts +128 -0
  151. package/modules/approvals/src/server/index.ts +42 -0
  152. package/modules/approvals/src/server/runtime.ts +181 -0
  153. package/modules/approvals/src/services/approvals-service.ts +557 -0
  154. package/modules/approvals/src/services/callbacks.ts +75 -0
  155. package/modules/approvals/src/services/data-classes.ts +167 -0
  156. package/modules/approvals/src/services/database-repository.ts +724 -0
  157. package/modules/approvals/src/services/eligibility.ts +121 -0
  158. package/modules/approvals/src/services/expiry-runner.ts +81 -0
  159. package/modules/approvals/src/services/index.ts +31 -0
  160. package/modules/approvals/src/services/migration.ts +222 -0
  161. package/modules/approvals/src/services/notifications.ts +95 -0
  162. package/modules/approvals/src/services/repository.ts +161 -0
  163. package/modules/approvals/src/services/service-error.ts +70 -0
  164. package/modules/approvals/src/settings.ts +102 -0
  165. package/modules/approvals/translations/en.json +104 -0
  166. package/modules/approvals/translations/pl.json +104 -0
  167. package/modules/audit/migrations/0001_audit_core.down.sql +8 -0
  168. package/modules/audit/migrations/0001_audit_core.up.sql +107 -0
  169. package/modules/audit/migrations/0002_audit_sweep_routing_role.down.sql +2 -0
  170. package/modules/audit/migrations/0002_audit_sweep_routing_role.up.sql +21 -0
  171. package/modules/audit/migrations/0003_audit_export_request.down.sql +12 -0
  172. package/modules/audit/migrations/0003_audit_export_request.up.sql +40 -0
  173. package/modules/audit/migrations/0004_audit_hold_seal_erasure.down.sql +17 -0
  174. package/modules/audit/migrations/0004_audit_hold_seal_erasure.up.sql +192 -0
  175. package/modules/audit/migrations/0005_audit_event_format.down.sql +17 -0
  176. package/modules/audit/migrations/0005_audit_event_format.up.sql +60 -0
  177. package/modules/audit/migrations/0006_audit_own_class_walks.down.sql +3 -0
  178. package/modules/audit/migrations/0006_audit_own_class_walks.up.sql +14 -0
  179. package/modules/audit/migrations/README.md +3 -0
  180. package/modules/audit/module.json +32 -0
  181. package/modules/audit/package.json +49 -0
  182. package/modules/audit/spec/module.yaml +809 -0
  183. package/modules/audit/src/acl/permissions.ts +7 -0
  184. package/modules/audit/src/api/endpoints.ts +315 -0
  185. package/modules/audit/src/cli/commands.json +95 -0
  186. package/modules/audit/src/cli/index.ts +658 -0
  187. package/modules/audit/src/client/DataClassesView.tsrx +420 -0
  188. package/modules/audit/src/client/ExportsView.tsrx +256 -0
  189. package/modules/audit/src/client/HoldsView.tsrx +604 -0
  190. package/modules/audit/src/client/SweepsView.tsrx +251 -0
  191. package/modules/audit/src/client/api.ts +185 -0
  192. package/modules/audit/src/client/contribution.tsrx +52 -0
  193. package/modules/audit/src/client/index.ts +23 -0
  194. package/modules/audit/src/client/navigation.ts +74 -0
  195. package/modules/audit/src/client/presentation.ts +105 -0
  196. package/modules/audit/src/client/state.ts +86 -0
  197. package/modules/audit/src/domain/data-classes.ts +16 -0
  198. package/modules/audit/src/domain/types.ts +339 -0
  199. package/modules/audit/src/index.ts +76 -0
  200. package/modules/audit/src/platform.ts +44 -0
  201. package/modules/audit/src/server/index.ts +177 -0
  202. package/modules/audit/src/server/runtime.ts +303 -0
  203. package/modules/audit/src/services/anchor-key.ts +143 -0
  204. package/modules/audit/src/services/anchor-rotation.ts +147 -0
  205. package/modules/audit/src/services/audit-runners.ts +278 -0
  206. package/modules/audit/src/services/backup-guard.ts +95 -0
  207. package/modules/audit/src/services/database-repository.ts +1946 -0
  208. package/modules/audit/src/services/declared-classes.ts +64 -0
  209. package/modules/audit/src/services/erasure-port.ts +126 -0
  210. package/modules/audit/src/services/erasure-service.ts +770 -0
  211. package/modules/audit/src/services/export-directory.ts +106 -0
  212. package/modules/audit/src/services/export-service.ts +714 -0
  213. package/modules/audit/src/services/hold-service.ts +295 -0
  214. package/modules/audit/src/services/index.ts +17 -0
  215. package/modules/audit/src/services/migration.ts +658 -0
  216. package/modules/audit/src/services/own-classes.ts +318 -0
  217. package/modules/audit/src/services/platform-version.ts +23 -0
  218. package/modules/audit/src/services/repository.ts +495 -0
  219. package/modules/audit/src/services/retention-service.ts +191 -0
  220. package/modules/audit/src/services/seal-service.ts +769 -0
  221. package/modules/audit/src/services/service-error.ts +61 -0
  222. package/modules/audit/src/services/subject-keys.ts +90 -0
  223. package/modules/audit/src/services/sweep-service.ts +298 -0
  224. package/modules/audit/src/services/zip.ts +217 -0
  225. package/modules/audit/src/settings.ts +69 -0
  226. package/modules/audit/translations/en.json +210 -0
  227. package/modules/audit/translations/pl.json +210 -0
  228. package/modules/auth/README.md +77 -29
  229. package/modules/auth/migrations/0016_external_identities.up.sql +16 -0
  230. package/modules/auth/migrations/0017_mfa_key_id.up.sql +8 -0
  231. package/modules/auth/migrations/0018_retire_bundled_module_scopes.up.sql +29 -0
  232. package/modules/auth/migrations/0019_notifications_member_scopes.up.sql +44 -0
  233. package/modules/auth/migrations/0020_identity_providers.up.sql +61 -0
  234. package/modules/auth/migrations/0021_membership_status.up.sql +19 -0
  235. package/modules/auth/migrations/0022_auth_provider_scopes.up.sql +45 -0
  236. package/modules/auth/migrations/0023_enterprise_module_scopes.down.sql +19 -0
  237. package/modules/auth/migrations/0023_enterprise_module_scopes.up.sql +71 -0
  238. package/modules/auth/migrations/0024_approvals_member_scopes.down.sql +22 -0
  239. package/modules/auth/migrations/0024_approvals_member_scopes.up.sql +48 -0
  240. package/modules/auth/migrations/0025_audit_holds_owner_scope.down.sql +21 -0
  241. package/modules/auth/migrations/0025_audit_holds_owner_scope.up.sql +47 -0
  242. package/modules/auth/migrations/0026_auth_export_keyset_indexes.down.sql +6 -0
  243. package/modules/auth/migrations/0026_auth_export_keyset_indexes.up.sql +15 -0
  244. package/modules/auth/migrations/0027_workflow_automation_profile_scopes.down.sql +34 -0
  245. package/modules/auth/migrations/0027_workflow_automation_profile_scopes.up.sql +72 -0
  246. package/modules/auth/migrations/0028_auth_member_search_prefix_indexes.down.sql +6 -0
  247. package/modules/auth/migrations/0028_auth_member_search_prefix_indexes.up.sql +21 -0
  248. package/modules/auth/migrations/0029_reports_exports_access_scopes.down.sql +22 -0
  249. package/modules/auth/migrations/0029_reports_exports_access_scopes.up.sql +56 -0
  250. package/modules/auth/migrations/0030_auth_membership_keyset_index.down.sql +4 -0
  251. package/modules/auth/migrations/0030_auth_membership_keyset_index.up.sql +10 -0
  252. package/modules/auth/migrations/0031_membership_scope_backfills_under_rls.down.sql +4 -0
  253. package/modules/auth/migrations/0031_membership_scope_backfills_under_rls.up.sql +31 -0
  254. package/modules/auth/migrations/0032_audit_actor_service.down.sql +9 -0
  255. package/modules/auth/migrations/0032_audit_actor_service.up.sql +10 -0
  256. package/modules/auth/migrations/0033_auth_account_keyset_indexes.down.sql +5 -0
  257. package/modules/auth/migrations/0033_auth_account_keyset_indexes.up.sql +23 -0
  258. package/modules/auth/module.json +3 -3
  259. package/modules/auth/package.json +2 -1
  260. package/modules/auth/spec/module.yaml +372 -3
  261. package/modules/auth/src/acl/scopes.ts +50 -6
  262. package/modules/auth/src/cli/commands.json +11 -0
  263. package/modules/auth/src/cli/greenfield.ts +2 -2
  264. package/modules/auth/src/cli/index.ts +14 -0
  265. package/modules/auth/src/cli/secrets.ts +114 -0
  266. package/modules/auth/src/client/AuthenticationCore.tsrx +61 -8
  267. package/modules/auth/src/client/api.ts +72 -6
  268. package/modules/auth/src/client/contribution.tsrx +23 -0
  269. package/modules/auth/src/client/index.ts +6 -0
  270. package/modules/auth/src/client/providers/IdentityProviderForm.tsrx +191 -0
  271. package/modules/auth/src/client/providers/IdentityProvidersView.tsrx +358 -0
  272. package/modules/auth/src/client/providers/api.ts +128 -0
  273. package/modules/auth/src/client/providers/provider-columns.tsrx +60 -0
  274. package/modules/auth/src/client/providers/state.ts +35 -0
  275. package/modules/auth/src/client/security/SecurityView.tsrx +9 -1
  276. package/modules/auth/src/client/state.ts +15 -1
  277. package/modules/auth/src/domain/types.ts +55 -0
  278. package/modules/auth/src/index.ts +11 -1
  279. package/modules/auth/src/middleware/authentication.ts +4 -0
  280. package/modules/auth/src/server/endpoints.ts +467 -171
  281. package/modules/auth/src/server/http.ts +3 -2
  282. package/modules/auth/src/server/index.ts +22 -1
  283. package/modules/auth/src/server/membership-endpoints.ts +62 -0
  284. package/modules/auth/src/server/mfa-enforcement.ts +156 -0
  285. package/modules/auth/src/server/oidc.ts +389 -0
  286. package/modules/auth/src/server/provider-endpoints.ts +246 -0
  287. package/modules/auth/src/server/provider-host.ts +77 -0
  288. package/modules/auth/src/server/runtime.ts +231 -55
  289. package/modules/auth/src/services/auth-service-error.ts +7 -2
  290. package/modules/auth/src/services/auth-service.ts +948 -51
  291. package/modules/auth/src/services/data-classes.ts +236 -0
  292. package/modules/auth/src/services/database-repository.ts +853 -71
  293. package/modules/auth/src/services/identity-provider-service.ts +571 -0
  294. package/modules/auth/src/services/mail-delivery.ts +16 -16
  295. package/modules/auth/src/services/mail-message.ts +54 -0
  296. package/modules/auth/src/services/mail-port.ts +24 -0
  297. package/modules/auth/src/services/mail-smtp.ts +85 -0
  298. package/modules/auth/src/services/mfa-rotation.ts +144 -0
  299. package/modules/auth/src/services/migration.ts +810 -0
  300. package/modules/auth/src/services/password.ts +14 -0
  301. package/modules/auth/src/services/provider-secret-rotation.ts +169 -0
  302. package/modules/auth/src/services/provider-secrets.ts +136 -0
  303. package/modules/auth/src/services/repository.ts +321 -5
  304. package/modules/auth/src/services/session-sweep-runner.ts +73 -0
  305. package/modules/auth/src/services/settings-store.ts +10 -83
  306. package/modules/auth/src/services/totp.ts +88 -62
  307. package/modules/auth/src/services/validation.ts +194 -7
  308. package/modules/auth/src/settings.ts +18 -0
  309. package/modules/auth/translations/en.json +84 -1
  310. package/modules/auth/translations/pl.json +84 -1
  311. package/modules/automations/migrations/0005_secret_rotation_inventory.down.sql +1 -0
  312. package/modules/automations/migrations/0005_secret_rotation_inventory.up.sql +6 -0
  313. package/modules/automations/migrations/0006_automations_list_sort_indexes.down.sql +4 -0
  314. package/modules/automations/migrations/0006_automations_list_sort_indexes.up.sql +11 -0
  315. package/modules/automations/module.json +24 -6
  316. package/modules/automations/package.json +4 -1
  317. package/modules/automations/spec/module.yaml +81 -7
  318. package/modules/automations/src/api/endpoints.ts +202 -28
  319. package/modules/automations/src/cli/commands.json +17 -0
  320. package/modules/automations/src/cli/index.ts +114 -0
  321. package/modules/automations/src/client/AutomationScheduleForm.tsrx +77 -19
  322. package/modules/automations/src/client/AutomationSchedulesView.tsrx +144 -40
  323. package/modules/automations/src/client/AutomationTriggersView.tsrx +131 -32
  324. package/modules/automations/src/client/api.ts +62 -19
  325. package/modules/automations/src/client/presentation.ts +20 -2
  326. package/modules/automations/src/client/state.ts +84 -0
  327. package/modules/automations/src/domain/cadence.ts +99 -3
  328. package/modules/automations/src/domain/cron.ts +366 -0
  329. package/modules/automations/src/domain/time-zone.ts +61 -0
  330. package/modules/automations/src/platform.ts +38 -4
  331. package/modules/automations/src/server/index.ts +11 -0
  332. package/modules/automations/src/server/runtime.ts +46 -22
  333. package/modules/{automations-workflows-integration/src/server/adapter.ts → automations/src/server/workflow-target.ts} +13 -14
  334. package/modules/{automations-workflows-integration/src/server/tools.ts → automations/src/server/workflow-tools.ts} +0 -0
  335. package/modules/automations/src/services/data-classes.ts +62 -0
  336. package/modules/automations/src/services/database-repository.ts +152 -38
  337. package/modules/automations/src/services/migration.ts +119 -9
  338. package/modules/automations/src/services/repository.ts +52 -1
  339. package/modules/automations/src/services/schedule-runner.ts +84 -0
  340. package/modules/automations/src/services/schedule-service.ts +152 -26
  341. package/modules/automations/src/services/secret-rotation.ts +176 -0
  342. package/modules/automations/src/services/secret-vault.ts +68 -41
  343. package/modules/automations/src/services/trigger-service.ts +13 -10
  344. package/modules/automations/translations/en.json +15 -2
  345. package/modules/automations/translations/pl.json +15 -2
  346. package/modules/connectors/migrations/0001_connectors_core.down.sql +3 -0
  347. package/modules/connectors/migrations/0001_connectors_core.up.sql +72 -0
  348. package/modules/connectors/migrations/0002_connectors_call_keys.down.sql +3 -0
  349. package/modules/connectors/migrations/0002_connectors_call_keys.up.sql +18 -0
  350. package/modules/connectors/migrations/README.md +3 -0
  351. package/modules/connectors/module.json +28 -0
  352. package/modules/{automations-workflows-integration → connectors}/package.json +27 -26
  353. package/modules/connectors/spec/module.yaml +447 -0
  354. package/modules/connectors/src/acl/permissions.ts +6 -0
  355. package/modules/connectors/src/agent/tools.ts +180 -0
  356. package/modules/connectors/src/api/endpoints.ts +572 -0
  357. package/modules/connectors/src/client/ConnectorCallsView.tsrx +358 -0
  358. package/modules/connectors/src/client/ConnectorForm.tsrx +424 -0
  359. package/modules/connectors/src/client/ConnectorsView.tsrx +711 -0
  360. package/modules/connectors/src/client/api.ts +281 -0
  361. package/modules/connectors/src/client/consent.ts +48 -0
  362. package/modules/connectors/src/client/contribution.tsrx +37 -0
  363. package/modules/connectors/src/client/index.ts +22 -0
  364. package/modules/connectors/src/client/navigation.ts +42 -0
  365. package/modules/connectors/src/client/presentation.ts +38 -0
  366. package/modules/connectors/src/client/state.ts +175 -0
  367. package/modules/connectors/src/domain/calls.ts +70 -0
  368. package/modules/connectors/src/domain/definitions.ts +190 -0
  369. package/modules/connectors/src/domain/http-json.ts +68 -0
  370. package/modules/connectors/src/domain/types.ts +185 -0
  371. package/modules/connectors/src/index.ts +64 -0
  372. package/modules/connectors/src/platform.ts +56 -0
  373. package/modules/connectors/src/server/index.ts +66 -0
  374. package/modules/connectors/src/server/runtime.ts +163 -0
  375. package/modules/connectors/src/services/call-service.ts +903 -0
  376. package/modules/connectors/src/services/connectors-service.ts +653 -0
  377. package/modules/connectors/src/services/credential-vault.ts +188 -0
  378. package/modules/connectors/src/services/data-classes.ts +158 -0
  379. package/modules/connectors/src/services/database-repository.ts +897 -0
  380. package/modules/connectors/src/services/egress.ts +261 -0
  381. package/modules/connectors/src/services/index.ts +19 -0
  382. package/modules/connectors/src/services/migration.ts +166 -0
  383. package/modules/connectors/src/services/repository.ts +175 -0
  384. package/modules/connectors/src/services/service-error.ts +46 -0
  385. package/modules/connectors/src/settings.ts +69 -0
  386. package/modules/connectors/translations/en.json +191 -0
  387. package/modules/connectors/translations/pl.json +191 -0
  388. package/modules/directory/migrations/0001_directory_core.down.sql +5 -0
  389. package/modules/directory/migrations/0001_directory_core.up.sql +111 -0
  390. package/modules/directory/migrations/README.md +3 -0
  391. package/modules/directory/module.json +27 -0
  392. package/modules/directory/package.json +46 -0
  393. package/modules/directory/spec/module.yaml +351 -0
  394. package/modules/directory/src/acl/permissions.ts +7 -0
  395. package/modules/directory/src/api/endpoints.ts +478 -0
  396. package/modules/directory/src/api/scim-endpoints.ts +516 -0
  397. package/modules/directory/src/client/GroupMappingsView.tsrx +430 -0
  398. package/modules/directory/src/client/ProvisioningLogView.tsrx +248 -0
  399. package/modules/directory/src/client/ScimTokensView.tsrx +587 -0
  400. package/modules/directory/src/client/api.ts +222 -0
  401. package/modules/directory/src/client/contribution.tsrx +46 -0
  402. package/modules/directory/src/client/index.ts +22 -0
  403. package/modules/directory/src/client/navigation.ts +57 -0
  404. package/modules/directory/src/client/presentation.ts +143 -0
  405. package/modules/directory/src/client/state.ts +173 -0
  406. package/modules/directory/src/domain/scim.ts +346 -0
  407. package/modules/directory/src/domain/types.ts +166 -0
  408. package/modules/directory/src/index.ts +44 -0
  409. package/modules/directory/src/platform.ts +43 -0
  410. package/modules/directory/src/server/index.ts +17 -0
  411. package/modules/directory/src/server/runtime.ts +124 -0
  412. package/modules/directory/src/services/auth-port.ts +127 -0
  413. package/modules/directory/src/services/data-classes.ts +41 -0
  414. package/modules/directory/src/services/database-repository.ts +1067 -0
  415. package/modules/directory/src/services/directory-service.ts +311 -0
  416. package/modules/directory/src/services/index.ts +43 -0
  417. package/modules/directory/src/services/migration.ts +146 -0
  418. package/modules/directory/src/services/provisioning-service.ts +1420 -0
  419. package/modules/directory/src/services/rate-limiter.ts +103 -0
  420. package/modules/directory/src/services/repository.ts +208 -0
  421. package/modules/directory/src/services/service-error.ts +42 -0
  422. package/modules/directory/src/services/token-service.ts +215 -0
  423. package/modules/directory/src/settings.ts +86 -0
  424. package/modules/directory/translations/en.json +185 -0
  425. package/modules/directory/translations/pl.json +185 -0
  426. package/modules/documents/migrations/0001_documents_core.down.sql +1 -0
  427. package/modules/documents/migrations/0001_documents_core.up.sql +35 -0
  428. package/modules/documents/migrations/0002_documents_files_page.down.sql +1 -0
  429. package/modules/documents/migrations/0002_documents_files_page.up.sql +6 -0
  430. package/modules/documents/migrations/README.md +3 -0
  431. package/modules/documents/module.json +28 -0
  432. package/modules/documents/package.json +49 -0
  433. package/modules/documents/spec/module.yaml +247 -0
  434. package/modules/documents/src/acl/permissions.ts +6 -0
  435. package/modules/documents/src/api/endpoints.ts +401 -0
  436. package/modules/documents/src/client/DocumentUploader.tsrx +148 -0
  437. package/modules/documents/src/client/DocumentsView.tsrx +540 -0
  438. package/modules/documents/src/client/api.ts +209 -0
  439. package/modules/documents/src/client/contribution.tsrx +29 -0
  440. package/modules/documents/src/client/download.ts +70 -0
  441. package/modules/documents/src/client/index.ts +22 -0
  442. package/modules/documents/src/client/navigation.ts +25 -0
  443. package/modules/documents/src/client/presentation.ts +110 -0
  444. package/modules/documents/src/client/state.ts +117 -0
  445. package/modules/documents/src/domain/attachments.ts +84 -0
  446. package/modules/documents/src/domain/types.ts +80 -0
  447. package/modules/documents/src/index.ts +46 -0
  448. package/modules/documents/src/platform.ts +61 -0
  449. package/modules/documents/src/server/index.ts +30 -0
  450. package/modules/documents/src/server/runtime.ts +107 -0
  451. package/modules/documents/src/services/attachments.ts +39 -0
  452. package/modules/documents/src/services/data-classes.ts +25 -0
  453. package/modules/documents/src/services/database-repository.ts +259 -0
  454. package/modules/documents/src/services/documents-service.ts +586 -0
  455. package/modules/documents/src/services/index.ts +18 -0
  456. package/modules/documents/src/services/migration.ts +82 -0
  457. package/modules/documents/src/services/repository.ts +48 -0
  458. package/modules/documents/src/settings.ts +107 -0
  459. package/modules/documents/translations/en.json +111 -0
  460. package/modules/documents/translations/pl.json +111 -0
  461. package/modules/exports/migrations/0001_exports_core.down.sql +2 -0
  462. package/modules/exports/migrations/0001_exports_core.up.sql +28 -0
  463. package/modules/exports/migrations/0002_exports_job_routing_role.down.sql +4 -0
  464. package/modules/exports/migrations/0002_exports_job_routing_role.up.sql +21 -0
  465. package/modules/exports/migrations/README.md +3 -0
  466. package/modules/exports/module.json +28 -0
  467. package/modules/exports/package.json +44 -0
  468. package/modules/exports/spec/module.yaml +229 -0
  469. package/modules/exports/src/acl/permissions.ts +6 -0
  470. package/modules/exports/src/api/endpoints.ts +211 -0
  471. package/modules/exports/src/client/ExportsView.tsrx +327 -0
  472. package/modules/exports/src/client/api.ts +133 -0
  473. package/modules/exports/src/client/contribution.tsrx +31 -0
  474. package/modules/exports/src/client/index.ts +20 -0
  475. package/modules/exports/src/client/navigation.ts +25 -0
  476. package/modules/exports/src/client/presentation.ts +53 -0
  477. package/modules/exports/src/client/state.ts +56 -0
  478. package/modules/exports/src/domain/lists.ts +29 -0
  479. package/modules/exports/src/domain/types.ts +120 -0
  480. package/modules/exports/src/index.ts +41 -0
  481. package/modules/exports/src/platform.ts +80 -0
  482. package/modules/exports/src/server/index.ts +51 -0
  483. package/modules/exports/src/server/runtime.ts +160 -0
  484. package/modules/exports/src/services/data-classes.ts +56 -0
  485. package/modules/exports/src/services/database-repository.ts +405 -0
  486. package/modules/exports/src/services/export-runner.ts +123 -0
  487. package/modules/exports/src/services/export-service.ts +356 -0
  488. package/modules/exports/src/services/index.ts +6 -0
  489. package/modules/exports/src/services/list-registry.ts +105 -0
  490. package/modules/exports/src/services/migration.ts +89 -0
  491. package/modules/exports/src/services/repository.ts +97 -0
  492. package/modules/exports/src/settings.ts +70 -0
  493. package/modules/exports/translations/en.json +69 -0
  494. package/modules/exports/translations/pl.json +69 -0
  495. package/modules/import/migrations/0001_import_core.down.sql +6 -0
  496. package/modules/import/migrations/0001_import_core.up.sql +61 -0
  497. package/modules/import/migrations/0002_import_job_routing_role.down.sql +4 -0
  498. package/modules/import/migrations/0002_import_job_routing_role.up.sql +20 -0
  499. package/modules/import/migrations/0003_import_jobs_export_index.down.sql +1 -0
  500. package/modules/import/migrations/0003_import_jobs_export_index.up.sql +7 -0
  501. package/modules/import/migrations/0004_import_jobs_traceparent.down.sql +1 -0
  502. package/modules/import/migrations/0004_import_jobs_traceparent.up.sql +7 -0
  503. package/modules/import/migrations/README.md +3 -0
  504. package/modules/import/module.json +37 -0
  505. package/modules/import/package.json +50 -0
  506. package/modules/import/spec/module.yaml +335 -0
  507. package/modules/import/src/acl/permissions.ts +6 -0
  508. package/modules/import/src/api/endpoints.ts +400 -0
  509. package/modules/import/src/client/ImportJobDrawer.tsrx +229 -0
  510. package/modules/import/src/client/ImportsView.tsrx +455 -0
  511. package/modules/import/src/client/NewImportForm.tsrx +274 -0
  512. package/modules/import/src/client/api.ts +243 -0
  513. package/modules/import/src/client/contribution.tsrx +29 -0
  514. package/modules/import/src/client/index.ts +23 -0
  515. package/modules/import/src/client/navigation.ts +25 -0
  516. package/modules/import/src/client/presentation.ts +59 -0
  517. package/modules/import/src/client/state.ts +43 -0
  518. package/modules/import/src/domain/csv.ts +258 -0
  519. package/modules/import/src/domain/ports.ts +157 -0
  520. package/modules/import/src/domain/types.ts +179 -0
  521. package/modules/import/src/index.ts +58 -0
  522. package/modules/import/src/platform.ts +60 -0
  523. package/modules/import/src/server/index.ts +49 -0
  524. package/modules/import/src/server/runtime.ts +158 -0
  525. package/modules/import/src/services/csv-source.ts +121 -0
  526. package/modules/import/src/services/data-classes.ts +63 -0
  527. package/modules/import/src/services/database-repository.ts +780 -0
  528. package/modules/import/src/services/import-runner.ts +127 -0
  529. package/modules/import/src/services/import-service.ts +872 -0
  530. package/modules/import/src/services/index.ts +6 -0
  531. package/modules/import/src/services/migration.ts +156 -0
  532. package/modules/import/src/services/port-registry.ts +158 -0
  533. package/modules/import/src/services/repository.ts +147 -0
  534. package/modules/import/src/settings.ts +70 -0
  535. package/modules/import/translations/en.json +175 -0
  536. package/modules/import/translations/pl.json +175 -0
  537. package/modules/metering/migrations/0001_metering_core.down.sql +6 -0
  538. package/modules/metering/migrations/0001_metering_core.up.sql +119 -0
  539. package/modules/metering/migrations/0002_metering_bucket_export.down.sql +3 -0
  540. package/modules/metering/migrations/0002_metering_bucket_export.up.sql +5 -0
  541. package/modules/metering/migrations/README.md +3 -0
  542. package/modules/metering/module.json +46 -0
  543. package/modules/metering/package.json +50 -0
  544. package/modules/metering/spec/module.yaml +269 -0
  545. package/modules/metering/src/acl/permissions.ts +5 -0
  546. package/modules/metering/src/api/endpoints.ts +104 -0
  547. package/modules/metering/src/cli/commands.json +28 -0
  548. package/modules/metering/src/cli/index.ts +246 -0
  549. package/modules/metering/src/client/LimitsView.tsrx +170 -0
  550. package/modules/metering/src/client/UsageSummaryWidget.tsrx +63 -0
  551. package/modules/metering/src/client/UsageView.tsrx +205 -0
  552. package/modules/metering/src/client/api.ts +91 -0
  553. package/modules/metering/src/client/contribution.tsrx +42 -0
  554. package/modules/metering/src/client/index.ts +26 -0
  555. package/modules/metering/src/client/navigation.ts +54 -0
  556. package/modules/metering/src/client/presentation.ts +63 -0
  557. package/modules/metering/src/client/state.ts +31 -0
  558. package/modules/metering/src/domain/meters.ts +100 -0
  559. package/modules/metering/src/domain/types.ts +71 -0
  560. package/modules/metering/src/index.ts +51 -0
  561. package/modules/metering/src/platform.ts +84 -0
  562. package/modules/metering/src/server/index.ts +40 -0
  563. package/modules/metering/src/server/runtime.ts +165 -0
  564. package/modules/metering/src/services/data-classes.ts +34 -0
  565. package/modules/metering/src/services/database-repository.ts +574 -0
  566. package/modules/metering/src/services/index.ts +9 -0
  567. package/modules/metering/src/services/meter-registry.ts +145 -0
  568. package/modules/metering/src/services/metering-service.ts +441 -0
  569. package/modules/metering/src/services/migration.ts +183 -0
  570. package/modules/metering/src/services/notifications.ts +75 -0
  571. package/modules/metering/src/services/reports.ts +105 -0
  572. package/modules/metering/src/services/repository.ts +132 -0
  573. package/modules/metering/src/services/service-error.ts +46 -0
  574. package/modules/metering/src/settings.ts +47 -0
  575. package/modules/metering/translations/en.json +68 -0
  576. package/modules/metering/translations/pl.json +68 -0
  577. package/modules/notifications/migrations/0001_notifications_core.down.sql +1 -0
  578. package/modules/notifications/migrations/0001_notifications_core.up.sql +26 -0
  579. package/modules/notifications/migrations/0002_notifications_preferences.down.sql +1 -0
  580. package/modules/notifications/migrations/0002_notifications_preferences.up.sql +17 -0
  581. package/modules/notifications/migrations/0003_notifications_webhook_subscriptions.down.sql +1 -0
  582. package/modules/notifications/migrations/0003_notifications_webhook_subscriptions.up.sql +30 -0
  583. package/modules/notifications/migrations/0004_notifications_deliveries.down.sql +1 -0
  584. package/modules/notifications/migrations/0004_notifications_deliveries.up.sql +35 -0
  585. package/modules/notifications/migrations/0005_notifications_delivery_routing_role.down.sql +2 -0
  586. package/modules/notifications/migrations/0005_notifications_delivery_routing_role.up.sql +17 -0
  587. package/modules/notifications/migrations/0006_notifications_delivery_title.down.sql +1 -0
  588. package/modules/notifications/migrations/0006_notifications_delivery_title.up.sql +11 -0
  589. package/modules/notifications/migrations/0007_notifications_secret_rotation_inventory.down.sql +2 -0
  590. package/modules/notifications/migrations/0007_notifications_secret_rotation_inventory.up.sql +19 -0
  591. package/modules/notifications/migrations/0008_notifications_delivery_claim.down.sql +8 -0
  592. package/modules/notifications/migrations/0008_notifications_delivery_claim.up.sql +19 -0
  593. package/modules/notifications/migrations/0009_notifications_kind_approvals.down.sql +16 -0
  594. package/modules/notifications/migrations/0009_notifications_kind_approvals.up.sql +18 -0
  595. package/modules/notifications/migrations/0010_notifications_kind_meter_threshold.down.sql +16 -0
  596. package/modules/notifications/migrations/0010_notifications_kind_meter_threshold.up.sql +18 -0
  597. package/modules/notifications/migrations/0011_notifications_retention_keyset.down.sql +5 -0
  598. package/modules/notifications/migrations/0011_notifications_retention_keyset.up.sql +15 -0
  599. package/modules/notifications/migrations/0012_notifications_email_channel.down.sql +12 -0
  600. package/modules/notifications/migrations/0012_notifications_email_channel.up.sql +38 -0
  601. package/modules/notifications/migrations/0013_notifications_list_pages.down.sql +5 -0
  602. package/modules/notifications/migrations/0013_notifications_list_pages.up.sql +13 -0
  603. package/modules/notifications/migrations/README.md +3 -0
  604. package/modules/notifications/module.json +32 -0
  605. package/modules/notifications/package.json +49 -0
  606. package/modules/notifications/spec/module.yaml +718 -0
  607. package/modules/notifications/src/acl/permissions.ts +11 -0
  608. package/modules/notifications/src/api/endpoints.ts +814 -0
  609. package/modules/notifications/src/cli/commands.json +17 -0
  610. package/modules/notifications/src/cli/index.ts +126 -0
  611. package/modules/notifications/src/client/DeliveriesView.tsrx +483 -0
  612. package/modules/notifications/src/client/FactList.tsrx +24 -0
  613. package/modules/notifications/src/client/NotificationPreferencesView.tsrx +240 -0
  614. package/modules/notifications/src/client/NotificationsInboxView.tsrx +592 -0
  615. package/modules/notifications/src/client/UnreadCountWidget.tsrx +62 -0
  616. package/modules/notifications/src/client/WebhookForm.tsrx +297 -0
  617. package/modules/notifications/src/client/WebhooksView.tsrx +637 -0
  618. package/modules/notifications/src/client/api.ts +382 -0
  619. package/modules/notifications/src/client/contribution.tsrx +83 -0
  620. package/modules/notifications/src/client/inbox.ts +41 -0
  621. package/modules/notifications/src/client/index.ts +29 -0
  622. package/modules/notifications/src/client/navigation.ts +92 -0
  623. package/modules/notifications/src/client/notifications.css +70 -0
  624. package/modules/notifications/src/client/presentation.ts +81 -0
  625. package/modules/notifications/src/client/state.ts +246 -0
  626. package/modules/notifications/src/client/unread-count.ts +26 -0
  627. package/modules/notifications/src/domain/locale.ts +47 -0
  628. package/modules/notifications/src/domain/publish.ts +46 -0
  629. package/modules/notifications/src/domain/types.ts +186 -0
  630. package/modules/notifications/src/index.ts +62 -0
  631. package/modules/notifications/src/platform.ts +85 -0
  632. package/modules/notifications/src/server/index.ts +82 -0
  633. package/modules/notifications/src/server/runtime.ts +251 -0
  634. package/modules/notifications/src/services/data-classes.ts +139 -0
  635. package/modules/notifications/src/services/database-repository.ts +1334 -0
  636. package/modules/notifications/src/services/delivery-payload.ts +93 -0
  637. package/modules/notifications/src/services/delivery-runner.ts +170 -0
  638. package/modules/notifications/src/services/delivery-service.ts +811 -0
  639. package/modules/notifications/src/services/egress.ts +239 -0
  640. package/modules/notifications/src/services/email-channel.ts +93 -0
  641. package/modules/notifications/src/services/index.ts +23 -0
  642. package/modules/notifications/src/services/migration.ts +572 -0
  643. package/modules/notifications/src/services/notifications-service.ts +297 -0
  644. package/modules/notifications/src/services/paging.ts +60 -0
  645. package/modules/notifications/src/services/publish-service.ts +133 -0
  646. package/modules/notifications/src/services/repository.ts +342 -0
  647. package/modules/notifications/src/services/secret-rotation.ts +177 -0
  648. package/modules/notifications/src/services/secret-vault.ts +168 -0
  649. package/modules/notifications/src/services/service-error.ts +67 -0
  650. package/modules/notifications/src/services/signature.ts +81 -0
  651. package/modules/notifications/src/services/webhook-service.ts +307 -0
  652. package/modules/notifications/src/settings.ts +130 -0
  653. package/modules/notifications/translations/en.json +255 -0
  654. package/modules/notifications/translations/pl.json +255 -0
  655. package/modules/profile/module.json +3 -3
  656. package/modules/profile/package.json +1 -1
  657. package/modules/profile/spec/module.yaml +3 -3
  658. package/modules/profile/src/services/database-repository.ts +3 -13
  659. package/modules/reports/module.json +28 -0
  660. package/modules/reports/package.json +42 -0
  661. package/modules/reports/spec/module.yaml +231 -0
  662. package/modules/reports/src/acl/permissions.ts +5 -0
  663. package/modules/reports/src/api/endpoints.ts +72 -0
  664. package/modules/reports/src/client/ReportsSummaryWidget.tsrx +52 -0
  665. package/modules/reports/src/client/ReportsView.tsrx +246 -0
  666. package/modules/reports/src/client/api.ts +65 -0
  667. package/modules/reports/src/client/contribution.tsrx +36 -0
  668. package/modules/reports/src/client/index.ts +18 -0
  669. package/modules/reports/src/client/navigation.ts +39 -0
  670. package/modules/reports/src/client/presentation.ts +123 -0
  671. package/modules/reports/src/client/state.ts +28 -0
  672. package/modules/reports/src/domain/providers.ts +115 -0
  673. package/modules/reports/src/domain/types.ts +44 -0
  674. package/modules/reports/src/index.ts +47 -0
  675. package/modules/reports/src/platform.ts +37 -0
  676. package/modules/reports/src/server/index.ts +21 -0
  677. package/modules/reports/src/server/runtime.ts +40 -0
  678. package/modules/reports/src/services/index.ts +17 -0
  679. package/modules/reports/src/services/provider-registry.ts +144 -0
  680. package/modules/reports/src/services/range.ts +65 -0
  681. package/modules/reports/src/services/reports-service.ts +316 -0
  682. package/modules/reports/src/services/service-error.ts +26 -0
  683. package/modules/reports/src/settings.ts +49 -0
  684. package/modules/reports/translations/en.json +35 -0
  685. package/modules/reports/translations/pl.json +35 -0
  686. package/modules/sandbox/module.json +4 -4
  687. package/modules/sandbox/package.json +1 -1
  688. package/modules/sandbox/spec/module.yaml +3 -3
  689. package/modules/sandbox/src/services/database-repository.ts +14 -23
  690. package/modules/sandbox/src/services/directory.ts +16 -0
  691. package/modules/sandbox/src/services/sandbox-service.ts +13 -11
  692. package/modules/search/migrations/0001_search_core.down.sql +1 -0
  693. package/modules/search/migrations/0001_search_core.up.sql +22 -0
  694. package/modules/search/migrations/0002_search_recent_export.down.sql +3 -0
  695. package/modules/search/migrations/0002_search_recent_export.up.sql +5 -0
  696. package/modules/search/migrations/README.md +3 -0
  697. package/modules/search/module.json +28 -0
  698. package/modules/search/package.json +43 -0
  699. package/modules/search/spec/module.yaml +177 -0
  700. package/modules/search/src/acl/permissions.ts +5 -0
  701. package/modules/search/src/api/endpoints.ts +221 -0
  702. package/modules/search/src/client/SearchView.tsrx +346 -0
  703. package/modules/search/src/client/api.ts +157 -0
  704. package/modules/search/src/client/contribution.tsrx +31 -0
  705. package/modules/search/src/client/index.ts +17 -0
  706. package/modules/search/src/client/navigation.ts +97 -0
  707. package/modules/search/src/client/search.css +56 -0
  708. package/modules/search/src/client/state.ts +113 -0
  709. package/modules/search/src/domain/data-classes.ts +73 -0
  710. package/modules/search/src/domain/providers.ts +88 -0
  711. package/modules/search/src/domain/types.ts +56 -0
  712. package/modules/search/src/index.ts +46 -0
  713. package/modules/search/src/platform.ts +42 -0
  714. package/modules/search/src/server/index.ts +25 -0
  715. package/modules/search/src/server/runtime.ts +123 -0
  716. package/modules/search/src/services/database-repository.ts +163 -0
  717. package/modules/search/src/services/index.ts +21 -0
  718. package/modules/search/src/services/migration.ts +65 -0
  719. package/modules/search/src/services/provider-registry.ts +137 -0
  720. package/modules/search/src/services/repository.ts +43 -0
  721. package/modules/search/src/services/search-service.ts +442 -0
  722. package/modules/search/src/services/service-error.ts +35 -0
  723. package/modules/search/src/settings.ts +68 -0
  724. package/modules/search/translations/en.json +45 -0
  725. package/modules/search/translations/pl.json +45 -0
  726. package/modules/system/module.json +2 -2
  727. package/modules/system/package.json +1 -1
  728. package/modules/system/spec/module.yaml +30 -3
  729. package/modules/system/src/client/FlagsPanel.tsrx +127 -0
  730. package/modules/system/src/client/ModuleSettingRow.tsrx +17 -7
  731. package/modules/system/src/client/ModuleSettingsSection.tsrx +10 -71
  732. package/modules/system/src/client/ModulesView.tsrx +91 -65
  733. package/modules/system/src/client/flags.ts +35 -0
  734. package/modules/system/src/client/index.ts +8 -0
  735. package/modules/system/src/client/navigation.ts +8 -0
  736. package/modules/system/src/client/settings-state.ts +159 -0
  737. package/modules/system/src/client/state.ts +2 -0
  738. package/modules/system/src/domain/time-zone.ts +105 -0
  739. package/modules/system/src/index.ts +12 -0
  740. package/modules/system/src/platform.ts +5 -1
  741. package/modules/system/src/server/endpoints.ts +72 -21
  742. package/modules/system/src/settings.ts +28 -0
  743. package/modules/system/translations/en.json +17 -0
  744. package/modules/system/translations/pl.json +17 -0
  745. package/modules/users/module.json +30 -4
  746. package/modules/users/package.json +4 -1
  747. package/modules/users/spec/module.yaml +290 -7
  748. package/modules/users/src/api/endpoints.ts +228 -15
  749. package/modules/users/src/client/InviteMemberForm.tsrx +2 -2
  750. package/modules/users/src/client/MemberDrawer.tsrx +142 -26
  751. package/modules/users/src/client/UserAccountForm.tsrx +2 -2
  752. package/modules/users/src/client/UsersView.tsrx +432 -71
  753. package/modules/users/src/client/api.ts +106 -12
  754. package/modules/users/src/client/contribution.tsrx +5 -0
  755. package/modules/users/src/client/member-columns.tsrx +22 -9
  756. package/modules/users/src/client/state.ts +172 -7
  757. package/modules/users/src/domain/lists.ts +9 -0
  758. package/modules/users/src/index.ts +11 -0
  759. package/modules/users/src/platform.ts +50 -1
  760. package/modules/users/src/services/member-export.ts +51 -0
  761. package/modules/users/src/services/member-import.ts +249 -0
  762. package/modules/users/src/services/member-search.ts +145 -0
  763. package/modules/users/src/services/users-service.ts +117 -4
  764. package/modules/users/translations/en.json +57 -8
  765. package/modules/users/translations/pl.json +57 -8
  766. package/modules/workflows/migrations/0004_payload_rotation_inventory.up.sql +17 -0
  767. package/modules/workflows/migrations/0005_workflows_human_approval.up.sql +28 -0
  768. package/modules/workflows/migrations/0006_workflows_retention_indexes.up.sql +11 -0
  769. package/modules/workflows/migrations/0007_workflows_erasure_subject_indexes.up.sql +17 -0
  770. package/modules/workflows/migrations/0008_workflows_subject_account.up.sql +24 -0
  771. package/modules/workflows/migrations/0009_workflows_definition_list_indexes.up.sql +9 -0
  772. package/modules/workflows/module.json +34 -6
  773. package/modules/workflows/package.json +2 -1
  774. package/modules/workflows/spec/module.yaml +26 -9
  775. package/modules/workflows/src/api/endpoints.ts +131 -25
  776. package/modules/workflows/src/cli/commands.json +17 -0
  777. package/modules/workflows/src/cli/index.ts +114 -0
  778. package/modules/workflows/src/client/WorkflowExecutionHistory.tsrx +36 -27
  779. package/modules/workflows/src/client/WorkflowInspector.tsrx +116 -0
  780. package/modules/workflows/src/client/WorkflowNodePalette.tsrx +1 -0
  781. package/modules/workflows/src/client/WorkflowsView.tsrx +236 -99
  782. package/modules/workflows/src/client/api.ts +54 -34
  783. package/modules/workflows/src/client/canvas-model.ts +12 -0
  784. package/modules/workflows/src/client/state.ts +95 -0
  785. package/modules/workflows/src/domain/events.ts +25 -11
  786. package/modules/workflows/src/domain/graph.ts +135 -1
  787. package/modules/workflows/src/domain/types.ts +91 -4
  788. package/modules/workflows/src/platform.ts +12 -0
  789. package/modules/workflows/src/server/runtime.ts +78 -5
  790. package/modules/workflows/src/services/approvals.ts +62 -0
  791. package/modules/workflows/src/services/cursors.ts +37 -0
  792. package/modules/workflows/src/services/data-classes.ts +232 -0
  793. package/modules/workflows/src/services/database-repository.ts +660 -171
  794. package/modules/workflows/src/services/migration.ts +240 -0
  795. package/modules/workflows/src/services/notifications.ts +98 -0
  796. package/modules/workflows/src/services/payload-codec.ts +51 -28
  797. package/modules/workflows/src/services/payload-rotation.ts +171 -0
  798. package/modules/workflows/src/services/repository.ts +123 -8
  799. package/modules/workflows/src/services/simulation.ts +7 -0
  800. package/modules/workflows/src/services/worker.ts +446 -25
  801. package/modules/workflows/src/services/workflows-service.ts +264 -103
  802. package/modules/workflows/translations/en.json +12 -4
  803. package/modules/workflows/translations/pl.json +12 -4
  804. package/modules.json +48 -4
  805. package/package.json +64 -6
  806. package/packages/client/package.json +1 -0
  807. package/packages/client/src/ApplicationShell.tsrx +43 -0
  808. package/packages/client/src/contributions.ts +55 -0
  809. package/packages/client/src/i18n/locales/en.json +5 -0
  810. package/packages/client/src/i18n/locales/pl.json +5 -0
  811. package/packages/client/src/index.ts +13 -1
  812. package/packages/client/src/routing.ts +22 -0
  813. package/packages/client/src/shell/CommandPalette.tsrx +223 -11
  814. package/packages/client/src/shell/command-search.ts +126 -0
  815. package/packages/client/src/shell/command.ts +30 -0
  816. package/packages/client/src/shell/navigation.ts +12 -0
  817. package/packages/client/src/shell/palette-keys.ts +27 -0
  818. package/packages/client/src/shell/shell.css +7 -0
  819. package/packages/contracts/schemas/module-spec.schema.json +287 -1
  820. package/packages/contracts/schemas/module.schema.json +25 -0
  821. package/packages/contracts/src/index.ts +144 -1
  822. package/packages/database/src/backup.ts +179 -0
  823. package/packages/database/src/decoders.ts +25 -0
  824. package/packages/database/src/index.ts +17 -0
  825. package/packages/database/src/record-history.ts +5 -14
  826. package/packages/harness/src/index.ts +2 -0
  827. package/packages/harness/src/runtime.ts +218 -1
  828. package/packages/harness/src/tool-adapters.ts +19 -1
  829. package/packages/kernel/src/acl.ts +179 -0
  830. package/packages/kernel/src/capability-registry.ts +69 -2
  831. package/packages/kernel/src/data-class-registry.ts +354 -0
  832. package/packages/kernel/src/index.ts +65 -4
  833. package/packages/kernel/src/keyring.ts +208 -0
  834. package/packages/kernel/src/module-compatibility.ts +35 -4
  835. package/packages/kernel/src/module-registry.ts +49 -2
  836. package/packages/kernel/src/module-settings.ts +189 -27
  837. package/packages/server/package.json +2 -1
  838. package/packages/server/src/composition.ts +38 -0
  839. package/packages/server/src/endpoint.ts +104 -47
  840. package/packages/server/src/export/csv.ts +34 -0
  841. package/packages/server/src/export/definition.ts +346 -0
  842. package/packages/server/src/export/index.ts +61 -0
  843. package/packages/server/src/export/run.ts +116 -0
  844. package/packages/server/src/index.ts +155 -0
  845. package/packages/server/src/jobs/index.ts +93 -0
  846. package/packages/server/src/jobs/runner.ts +486 -0
  847. package/packages/server/src/log.ts +291 -0
  848. package/packages/server/src/mail/config.ts +184 -0
  849. package/packages/server/src/mail/contracts.ts +251 -0
  850. package/packages/server/src/mail/index.ts +31 -0
  851. package/packages/server/src/mail/port.ts +101 -0
  852. package/packages/server/src/mail/smtp.ts +191 -0
  853. package/packages/server/src/mail/template.ts +105 -0
  854. package/packages/server/src/metrics.ts +447 -0
  855. package/packages/server/src/pagination.ts +246 -0
  856. package/packages/server/src/trace/context.ts +103 -0
  857. package/packages/server/src/trace/egress.ts +66 -0
  858. package/packages/server/src/trace/error-sink.ts +296 -0
  859. package/packages/server/src/trace/exporter.ts +295 -0
  860. package/packages/server/src/trace/index.ts +60 -0
  861. package/packages/server/src/trace/job-sink.ts +172 -0
  862. package/packages/server/src/trace/tracer.ts +338 -0
  863. package/packages/server/src/web.ts +5 -1
  864. package/packages/storage/package.json +40 -0
  865. package/packages/storage/src/config.ts +189 -0
  866. package/packages/storage/src/content-type.ts +124 -0
  867. package/packages/storage/src/contracts.ts +112 -0
  868. package/packages/storage/src/envelope.ts +189 -0
  869. package/packages/storage/src/index.ts +43 -0
  870. package/packages/storage/src/local.ts +75 -0
  871. package/packages/storage/src/port.ts +251 -0
  872. package/packages/storage/src/read-token.ts +130 -0
  873. package/packages/storage/src/s3.ts +144 -0
  874. package/packages/storage/src/scanner.ts +22 -0
  875. package/packages/storage/src/sigv4.ts +104 -0
  876. package/packages/storage/src/store.ts +13 -0
  877. package/packages/ui/package.json +1 -0
  878. package/packages/ui/src/components/Button.tsrx +3 -0
  879. package/packages/ui/src/components/ConfirmDialog.tsrx +13 -2
  880. package/packages/ui/src/components/DateField.tsrx +92 -0
  881. package/packages/ui/src/components/DatePicker.tsrx +525 -0
  882. package/packages/ui/src/components/DateRangeField.tsrx +93 -0
  883. package/packages/ui/src/components/Drawer.tsrx +10 -1
  884. package/packages/ui/src/components/FileUpload.tsrx +158 -0
  885. package/packages/ui/src/components/Pagination.tsrx +130 -0
  886. package/packages/ui/src/components/Select.tsrx +78 -0
  887. package/packages/ui/src/components/Table.tsrx +498 -81
  888. package/packages/ui/src/components/Tabs.tsrx +53 -0
  889. package/packages/ui/src/components/ToastHost.tsrx +48 -0
  890. package/packages/ui/src/components/calendar.ts +243 -0
  891. package/packages/ui/src/components/date-field.ts +62 -0
  892. package/packages/ui/src/components/file-upload.ts +49 -0
  893. package/packages/ui/src/components/focus-trap.ts +62 -0
  894. package/packages/ui/src/components/pagination.ts +68 -0
  895. package/packages/ui/src/components/table-sorting.ts +49 -0
  896. package/packages/ui/src/components/tabs.ts +61 -0
  897. package/packages/ui/src/components/toast-store.ts +116 -0
  898. package/packages/ui/src/icons/Icon.tsrx +5 -0
  899. package/packages/ui/src/index.ts +45 -0
  900. package/packages/ui/src/styles/components.css +598 -0
  901. package/modules/automations-workflows-integration/module.json +0 -27
  902. package/modules/automations-workflows-integration/spec/module.yaml +0 -93
  903. package/modules/automations-workflows-integration/src/index.ts +0 -14
  904. package/modules/automations-workflows-integration/src/platform.ts +0 -24
  905. package/modules/automations-workflows-integration/src/server/index.ts +0 -11
  906. package/modules/automations-workflows-integration/translations/en.json +0 -21
  907. package/modules/automations-workflows-integration/translations/pl.json +0 -21
  908. package/modules/workflows/src/services/cursor-codec.ts +0 -62
@@ -0,0 +1,70 @@
1
+ import type {
2
+ ConnectorCaller,
3
+ ConnectorCallOutcome,
4
+ ConnectorErrorClass,
5
+ } from './types.ts';
6
+
7
+ /**
8
+ * The capability a workflow action or an agent tool resolves to reach an
9
+ * external system. It carries the caller kind because consent is granted per
10
+ * caller: an instance may be open to workflows and closed to agents.
11
+ */
12
+ export const CONNECTORS_CALLS_CAPABILITY = 'connectors.calls.v1';
13
+
14
+ export type ConnectorJsonValue =
15
+ | string
16
+ | number
17
+ | boolean
18
+ | null
19
+ | readonly ConnectorJsonValue[]
20
+ | { readonly [key: string]: ConnectorJsonValue };
21
+
22
+ export interface ConnectorCallRequest {
23
+ readonly tenantId: string;
24
+ readonly instanceId: string;
25
+ readonly operation: string;
26
+ readonly input: Readonly<Record<string, unknown>>;
27
+ readonly caller: ConnectorCaller;
28
+ /** The run this call belongs to, recorded with the call. */
29
+ readonly callerRef?: string | undefined;
30
+ /**
31
+ * Binds this call to one durable key. A repeat of the key answers the call
32
+ * it already produced instead of reaching the external system again, so an
33
+ * unattended caller replayed after a crash writes at most once.
34
+ */
35
+ readonly idempotencyKey?: string | undefined;
36
+ readonly signal?: AbortSignal | undefined;
37
+ }
38
+
39
+ export interface ConnectorCallResult {
40
+ readonly callId: string;
41
+ readonly outcome: ConnectorCallOutcome;
42
+ readonly status: number | null;
43
+ readonly errorClass: ConnectorErrorClass | null;
44
+ readonly durationMs: number;
45
+ readonly requestBytes: number;
46
+ readonly responseBytes: number;
47
+ /** Parsed JSON response. Returned to the caller, never written to the log. */
48
+ readonly body: ConnectorJsonValue | null;
49
+ /** Bounded text of the response for diagnosis. Never written to the log. */
50
+ readonly bodyPreview: string;
51
+ /**
52
+ * True when the idempotency ledger answered with a call that already ran.
53
+ * Nothing left the process, and the log keeps no body, so `body` and
54
+ * `bodyPreview` are empty rather than the original answer.
55
+ */
56
+ readonly replayed: boolean;
57
+ }
58
+
59
+ export interface ConnectorCallCapability {
60
+ call(request: ConnectorCallRequest): Promise<ConnectorCallResult>;
61
+ /**
62
+ * Whether this caller kind may use the instance right now. A caller that
63
+ * admits a tool before running it asks this instead of making a call.
64
+ */
65
+ consented(
66
+ tenantId: string,
67
+ instanceId: string,
68
+ caller: ConnectorCaller,
69
+ ): Promise<boolean>;
70
+ }
@@ -0,0 +1,190 @@
1
+ import {
2
+ CONNECTOR_AUTH_KINDS,
3
+ CONNECTOR_METHODS,
4
+ type ConnectorDefinition,
5
+ type ConnectorOperation,
6
+ } from './types.ts';
7
+
8
+ /**
9
+ * The registry a module obtains with `context.capabilities.get` to ship its own
10
+ * connector kind. Registration happens while modules compose; the first read
11
+ * seals the registry, so the set a workspace sees cannot change under a call.
12
+ */
13
+ export const CONNECTORS_DEFINITIONS_CAPABILITY = 'connectors.definitions.v1';
14
+
15
+ export interface ConnectorDefinitionRegistry {
16
+ register(definition: ConnectorDefinition): void;
17
+ list(): readonly ConnectorDefinition[];
18
+ get(key: string): ConnectorDefinition | null;
19
+ }
20
+
21
+ /** Definitions are code, not tenant data, so the bound is a boot-time bug guard. */
22
+ export const MAX_DEFINITIONS = 64;
23
+ export const MAX_OPERATIONS_PER_DEFINITION = 64;
24
+ export const MAX_PORTS_PER_DEFINITION = 8;
25
+
26
+ /** The one port every connector reaches unless its definition names more. */
27
+ export const DEFAULT_ALLOWED_PORTS: readonly number[] = Object.freeze([443]);
28
+
29
+ /** The ports an instance of this definition may reach, defaulted. */
30
+ export function definitionAllowedPorts(
31
+ definition: ConnectorDefinition,
32
+ ): readonly number[] {
33
+ return definition.allowedPorts ?? DEFAULT_ALLOWED_PORTS;
34
+ }
35
+
36
+ export class ConnectorDefinitionError extends Error {
37
+ constructor(
38
+ readonly code: string,
39
+ message: string,
40
+ ) {
41
+ super(message);
42
+ this.name = 'ConnectorDefinitionError';
43
+ }
44
+ }
45
+
46
+ function identifier(value: string, field: string, max: number): string {
47
+ if (!new RegExp(`^[a-z][a-z0-9-]{0,${max - 1}}$`).test(value)) {
48
+ throw new ConnectorDefinitionError(
49
+ 'DEFINITION_INVALID',
50
+ `${field} must be a lowercase identifier of at most ${max} characters.`,
51
+ );
52
+ }
53
+ return value;
54
+ }
55
+
56
+ function text(value: string, field: string, max: number): string {
57
+ const normalized = value.trim();
58
+ if (normalized.length === 0 || normalized.length > max) {
59
+ throw new ConnectorDefinitionError(
60
+ 'DEFINITION_INVALID',
61
+ `${field} must contain between 1 and ${max} characters.`,
62
+ );
63
+ }
64
+ return normalized;
65
+ }
66
+
67
+ function operation(value: ConnectorOperation): ConnectorOperation {
68
+ identifier(value.key, 'operation key', 64);
69
+ text(value.label, 'operation label', 120);
70
+ if (!CONNECTOR_METHODS.includes(value.method)) {
71
+ throw new ConnectorDefinitionError(
72
+ 'DEFINITION_INVALID',
73
+ `operation ${value.key} declares an unsupported method.`,
74
+ );
75
+ }
76
+ const path = text(value.path, 'operation path', 1_024);
77
+ /* The expanded path is always absolute: either the template starts with the
78
+ slash, or it opens with a reserved expansion whose value must. */
79
+ if (!path.startsWith('/') && !path.startsWith('{+')) {
80
+ throw new ConnectorDefinitionError(
81
+ 'DEFINITION_INVALID',
82
+ `operation ${value.key} must declare a path template that expands to an absolute path.`,
83
+ );
84
+ }
85
+ return value;
86
+ }
87
+
88
+ export function assertConnectorDefinition(
89
+ definition: ConnectorDefinition,
90
+ ): ConnectorDefinition {
91
+ identifier(definition.key, 'definition key', 96);
92
+ text(definition.moduleId, 'definition moduleId', 64);
93
+ text(definition.label, 'definition label', 120);
94
+ if (definition.authKinds.length === 0) {
95
+ throw new ConnectorDefinitionError(
96
+ 'DEFINITION_INVALID',
97
+ `definition ${definition.key} must support at least one authentication kind.`,
98
+ );
99
+ }
100
+ for (const kind of definition.authKinds) {
101
+ if (!CONNECTOR_AUTH_KINDS.includes(kind)) {
102
+ throw new ConnectorDefinitionError(
103
+ 'DEFINITION_INVALID',
104
+ `definition ${definition.key} declares an unknown authentication kind.`,
105
+ );
106
+ }
107
+ }
108
+ if (
109
+ definition.operations.length === 0 ||
110
+ definition.operations.length > MAX_OPERATIONS_PER_DEFINITION
111
+ ) {
112
+ throw new ConnectorDefinitionError(
113
+ 'DEFINITION_INVALID',
114
+ `definition ${definition.key} must declare between 1 and ${MAX_OPERATIONS_PER_DEFINITION} operations.`,
115
+ );
116
+ }
117
+ const keys = new Set<string>();
118
+ for (const item of definition.operations) {
119
+ operation(item);
120
+ if (keys.has(item.key)) {
121
+ throw new ConnectorDefinitionError(
122
+ 'DEFINITION_INVALID',
123
+ `definition ${definition.key} declares operation ${item.key} twice.`,
124
+ );
125
+ }
126
+ keys.add(item.key);
127
+ }
128
+ for (const host of definition.defaultAllowedHosts) {
129
+ text(host, 'definition host', 253);
130
+ }
131
+ if (definition.allowedPorts !== undefined) {
132
+ if (
133
+ definition.allowedPorts.length === 0 ||
134
+ definition.allowedPorts.length > MAX_PORTS_PER_DEFINITION
135
+ ) {
136
+ throw new ConnectorDefinitionError(
137
+ 'DEFINITION_INVALID',
138
+ `definition ${definition.key} must declare between 1 and ${MAX_PORTS_PER_DEFINITION} allowed ports, or none at all.`,
139
+ );
140
+ }
141
+ for (const port of definition.allowedPorts) {
142
+ if (!Number.isSafeInteger(port) || port < 1 || port > 65_535) {
143
+ throw new ConnectorDefinitionError(
144
+ 'DEFINITION_INVALID',
145
+ `definition ${definition.key} declares ${String(port)}, which is not a port.`,
146
+ );
147
+ }
148
+ }
149
+ }
150
+ return definition;
151
+ }
152
+
153
+ export function createConnectorDefinitionRegistry(): ConnectorDefinitionRegistry {
154
+ const definitions = new Map<string, ConnectorDefinition>();
155
+ let sealed = false;
156
+ return {
157
+ register(definition) {
158
+ if (sealed) {
159
+ throw new ConnectorDefinitionError(
160
+ 'DEFINITIONS_SEALED',
161
+ 'Connector definitions are registered while modules compose, not afterwards.',
162
+ );
163
+ }
164
+ assertConnectorDefinition(definition);
165
+ if (definitions.has(definition.key)) {
166
+ throw new ConnectorDefinitionError(
167
+ 'DEFINITION_DUPLICATE',
168
+ `A connector definition with key ${definition.key} is already registered.`,
169
+ );
170
+ }
171
+ if (definitions.size >= MAX_DEFINITIONS) {
172
+ throw new ConnectorDefinitionError(
173
+ 'DEFINITIONS_EXHAUSTED',
174
+ `At most ${MAX_DEFINITIONS} connector definitions may be registered.`,
175
+ );
176
+ }
177
+ definitions.set(definition.key, Object.freeze({ ...definition }));
178
+ },
179
+ list() {
180
+ sealed = true;
181
+ return [...definitions.values()].sort((left, right) =>
182
+ left.key.localeCompare(right.key),
183
+ );
184
+ },
185
+ get(key) {
186
+ sealed = true;
187
+ return definitions.get(key) ?? null;
188
+ },
189
+ };
190
+ }
@@ -0,0 +1,68 @@
1
+ import type { ConnectorDefinition, ConnectorOperation } from './types.ts';
2
+
3
+ export const HTTP_JSON_DEFINITION_KEY = 'http-json';
4
+
5
+ const PATH = {
6
+ type: 'string',
7
+ maxLength: 1024,
8
+ } as const;
9
+
10
+ const QUERY = {
11
+ type: 'object',
12
+ description: 'Flat query parameters appended to the path.',
13
+ } as const;
14
+
15
+ const BODY = {
16
+ type: 'object',
17
+ description: 'JSON request body.',
18
+ } as const;
19
+
20
+ const OUTPUT = {
21
+ type: 'object',
22
+ description: 'The parsed JSON response of the external system.',
23
+ } as const;
24
+
25
+ function operation(
26
+ key: string,
27
+ label: string,
28
+ method: ConnectorOperation['method'],
29
+ body: boolean,
30
+ ): ConnectorOperation {
31
+ return {
32
+ key,
33
+ label,
34
+ method,
35
+ /* The whole path comes from the call, so the template is one reserved
36
+ expansion: the generic connector has no fixed resource of its own. */
37
+ path: '{+path}',
38
+ inputSchema: {
39
+ type: 'object',
40
+ additionalProperties: false,
41
+ required: ['path'],
42
+ properties: body
43
+ ? { path: PATH, query: QUERY, body: BODY }
44
+ : { path: PATH, query: QUERY },
45
+ },
46
+ outputSchema: OUTPUT,
47
+ };
48
+ }
49
+
50
+ /**
51
+ * The connector the platform ships so a workspace can reach a JSON API without
52
+ * a module of its own. It fixes no host: the instance base URL, its allowlist
53
+ * and the egress policy are the only bounds.
54
+ */
55
+ export const HTTP_JSON_DEFINITION: ConnectorDefinition = {
56
+ key: HTTP_JSON_DEFINITION_KEY,
57
+ moduleId: 'connectors.core',
58
+ label: 'Generic HTTP JSON',
59
+ authKinds: ['none', 'api-key', 'bearer', 'oauth2-client-credentials'],
60
+ operations: [
61
+ operation('get', 'GET', 'GET', false),
62
+ operation('post', 'POST', 'POST', true),
63
+ operation('put', 'PUT', 'PUT', true),
64
+ operation('patch', 'PATCH', 'PATCH', true),
65
+ operation('delete', 'DELETE', 'DELETE', false),
66
+ ],
67
+ defaultAllowedHosts: [],
68
+ };
@@ -0,0 +1,185 @@
1
+ export const CONNECTOR_AUTH_KINDS = [
2
+ 'none',
3
+ 'api-key',
4
+ 'bearer',
5
+ 'oauth2-client-credentials',
6
+ ] as const;
7
+ export type ConnectorAuthKind = (typeof CONNECTOR_AUTH_KINDS)[number];
8
+
9
+ export const CONNECTOR_METHODS = [
10
+ 'GET',
11
+ 'POST',
12
+ 'PUT',
13
+ 'PATCH',
14
+ 'DELETE',
15
+ ] as const;
16
+ export type ConnectorMethod = (typeof CONNECTOR_METHODS)[number];
17
+
18
+ export const CONNECTOR_INSTANCE_STATUSES = ['active', 'disabled'] as const;
19
+ export type ConnectorInstanceStatus =
20
+ (typeof CONNECTOR_INSTANCE_STATUSES)[number];
21
+
22
+ export const CONNECTOR_CALLERS = ['test', 'workflow', 'agent'] as const;
23
+ export type ConnectorCaller = (typeof CONNECTOR_CALLERS)[number];
24
+
25
+ export const CONNECTOR_CALL_OUTCOMES = [
26
+ 'succeeded',
27
+ 'failed',
28
+ 'refused',
29
+ ] as const;
30
+ export type ConnectorCallOutcome = (typeof CONNECTOR_CALL_OUTCOMES)[number];
31
+
32
+ /**
33
+ * The closed set the call log stores. `refused` outcomes never reached the
34
+ * network; `failed` ones did, or were stopped by the transport itself.
35
+ */
36
+ export const CONNECTOR_ERROR_CLASSES = [
37
+ 'egress-refused',
38
+ 'instance-disabled',
39
+ 'consent-missing',
40
+ 'definition-missing',
41
+ 'operation-unknown',
42
+ 'invalid-input',
43
+ 'credential-unavailable',
44
+ 'dns',
45
+ 'timeout',
46
+ 'network',
47
+ 'response-4xx',
48
+ 'response-5xx',
49
+ 'response-too-large',
50
+ ] as const;
51
+ export type ConnectorErrorClass = (typeof CONNECTOR_ERROR_CLASSES)[number];
52
+
53
+ /** One operation of a definition. `path` is a template over the base URL. */
54
+ export interface ConnectorOperation {
55
+ readonly key: string;
56
+ readonly label: string;
57
+ readonly method: ConnectorMethod;
58
+ /**
59
+ * `{name}` expands one path segment and `{+name}` expands a whole path,
60
+ * both from the call input. Nothing else is substituted.
61
+ */
62
+ readonly path: string;
63
+ readonly inputSchema: Readonly<Record<string, unknown>>;
64
+ readonly outputSchema: Readonly<Record<string, unknown>>;
65
+ }
66
+
67
+ export interface ConnectorDefinition {
68
+ readonly key: string;
69
+ readonly moduleId: string;
70
+ readonly label: string;
71
+ readonly authKinds: readonly ConnectorAuthKind[];
72
+ readonly operations: readonly ConnectorOperation[];
73
+ /**
74
+ * Hosts an instance of this definition may reach. Empty means the definition
75
+ * names no host of its own and the instance allowlist is the only bound.
76
+ */
77
+ readonly defaultAllowedHosts: readonly string[];
78
+ /**
79
+ * Ports an instance of this definition may reach. Absent means 443 only; a
80
+ * definition that needs another port names every port it accepts, so an
81
+ * instance can never be aimed at a service that answers on an unnamed one.
82
+ */
83
+ readonly allowedPorts?: readonly number[] | undefined;
84
+ }
85
+
86
+ /** An instance as every reader sees it. A credential never appears here. */
87
+ export interface ConnectorInstance {
88
+ readonly id: string;
89
+ readonly tenantId: string;
90
+ readonly definitionKey: string;
91
+ readonly name: string;
92
+ readonly baseUrl: string;
93
+ readonly authKind: ConnectorAuthKind;
94
+ readonly credentialFingerprint: string | null;
95
+ readonly allowedHosts: readonly string[];
96
+ readonly allowWorkflows: boolean;
97
+ readonly allowAgents: boolean;
98
+ readonly status: ConnectorInstanceStatus;
99
+ readonly lastCallAt: number | null;
100
+ readonly createdAt: number;
101
+ readonly updatedAt: number;
102
+ }
103
+
104
+ export interface ConnectorCall {
105
+ readonly id: string;
106
+ readonly tenantId: string;
107
+ readonly instanceId: string;
108
+ readonly operation: string;
109
+ readonly caller: ConnectorCaller;
110
+ readonly callerRef: string | null;
111
+ readonly outcome: ConnectorCallOutcome;
112
+ readonly status: number | null;
113
+ readonly errorClass: ConnectorErrorClass | null;
114
+ readonly durationMs: number;
115
+ readonly requestBytes: number;
116
+ readonly responseBytes: number;
117
+ readonly occurredAt: number;
118
+ }
119
+
120
+ /** A call as the log screen lists it: the row plus the name of its instance. */
121
+ export interface ConnectorCallListRow extends ConnectorCall {
122
+ /** Null once the instance was deleted; the call log outlives it. */
123
+ readonly instanceName: string | null;
124
+ }
125
+
126
+ export type ConnectorCredentials =
127
+ | { readonly kind: 'none' }
128
+ | {
129
+ readonly kind: 'api-key';
130
+ readonly header: string;
131
+ readonly value: string;
132
+ }
133
+ | { readonly kind: 'bearer'; readonly token: string }
134
+ | {
135
+ readonly kind: 'oauth2-client-credentials';
136
+ readonly tokenUrl: string;
137
+ readonly clientId: string;
138
+ readonly clientSecret: string;
139
+ readonly scope: string | null;
140
+ };
141
+
142
+ export interface CreateConnectorInstanceInput {
143
+ readonly definitionKey: string;
144
+ readonly name: string;
145
+ readonly baseUrl: string;
146
+ readonly authKind: ConnectorAuthKind;
147
+ /** Accepted once and sealed; never returned again. */
148
+ readonly credentials: Record<string, unknown>;
149
+ readonly allowedHosts: readonly string[];
150
+ }
151
+
152
+ export interface UpdateConnectorInstanceInput {
153
+ readonly name: string;
154
+ readonly baseUrl: string;
155
+ readonly allowedHosts: readonly string[];
156
+ /** Absent keeps the sealed credential the instance already holds. */
157
+ readonly credentials?: Record<string, unknown> | undefined;
158
+ }
159
+
160
+ export interface ConnectorConsentInput {
161
+ readonly allowWorkflows: boolean;
162
+ readonly allowAgents: boolean;
163
+ /** The owner's explicit confirmation, recorded with the audit row. */
164
+ readonly confirmed: boolean;
165
+ }
166
+
167
+ export const CONNECTOR_AUDIT_ACTIONS = [
168
+ 'instance.created',
169
+ 'instance.updated',
170
+ 'instance.consent-changed',
171
+ 'instance.enabled',
172
+ 'instance.disabled',
173
+ 'instance.deleted',
174
+ ] as const;
175
+ export type ConnectorAuditAction = (typeof CONNECTOR_AUDIT_ACTIONS)[number];
176
+
177
+ export interface ConnectorAuditEvent {
178
+ readonly id: string;
179
+ readonly tenantId: string;
180
+ readonly actorId: string;
181
+ readonly action: ConnectorAuditAction;
182
+ readonly instanceId: string;
183
+ readonly metadata: Readonly<Record<string, string | number | boolean>>;
184
+ readonly occurredAt: number;
185
+ }
@@ -0,0 +1,64 @@
1
+ import type { ModuleManifest, RegisteredModule } from '@flowdular/sdk/contracts';
2
+ import manifest from '../module.json' with { type: 'json' };
3
+ import { CONNECTORS_PERMISSIONS } from './acl/permissions.ts';
4
+
5
+ export const moduleDefinition = {
6
+ manifest: manifest as ModuleManifest,
7
+ navigation: [
8
+ {
9
+ id: 'connectors.navigation',
10
+ label: 'Connectors',
11
+ href: '/connectors',
12
+ order: 50,
13
+ permission: CONNECTORS_PERMISSIONS.read,
14
+ },
15
+ ],
16
+ permissions: Object.values(CONNECTORS_PERMISSIONS),
17
+ } satisfies RegisteredModule;
18
+
19
+ export { CONNECTORS_PERMISSIONS } from './acl/permissions.ts';
20
+
21
+ /* The cross-module contract. A module shipping its own connector kind, and a
22
+ caller invoking one, import the identifiers and types from here and resolve
23
+ the implementations through the capability registry. */
24
+ export {
25
+ CONNECTORS_DEFINITIONS_CAPABILITY,
26
+ ConnectorDefinitionError,
27
+ } from './domain/definitions.ts';
28
+ export type { ConnectorDefinitionRegistry } from './domain/definitions.ts';
29
+ export { CONNECTORS_CALLS_CAPABILITY } from './domain/calls.ts';
30
+ export type {
31
+ ConnectorCallCapability,
32
+ ConnectorCallRequest,
33
+ ConnectorCallResult,
34
+ ConnectorJsonValue,
35
+ } from './domain/calls.ts';
36
+ export {
37
+ HTTP_JSON_DEFINITION,
38
+ HTTP_JSON_DEFINITION_KEY,
39
+ } from './domain/http-json.ts';
40
+
41
+ export {
42
+ CONNECTOR_AUTH_KINDS,
43
+ CONNECTOR_CALL_OUTCOMES,
44
+ CONNECTOR_CALLERS,
45
+ CONNECTOR_ERROR_CLASSES,
46
+ CONNECTOR_INSTANCE_STATUSES,
47
+ CONNECTOR_METHODS,
48
+ } from './domain/types.ts';
49
+ export type {
50
+ ConnectorAuditEvent,
51
+ ConnectorAuthKind,
52
+ ConnectorCall,
53
+ ConnectorCaller,
54
+ ConnectorCallOutcome,
55
+ ConnectorDefinition,
56
+ ConnectorErrorClass,
57
+ ConnectorInstance,
58
+ ConnectorInstanceStatus,
59
+ ConnectorOperation,
60
+ CreateConnectorInstanceInput,
61
+ UpdateConnectorInstanceInput,
62
+ } from './domain/types.ts';
63
+
64
+ export { ConnectorsServiceError } from './services/service-error.ts';
@@ -0,0 +1,56 @@
1
+ import type {
2
+ PlatformServerComposition,
3
+ PlatformServerContext,
4
+ } from '@flowdular/sdk/modules/auth/server';
5
+ import { connectorsAgentTools } from './agent/tools.ts';
6
+ import { connectorsDataClasses } from './services/data-classes.ts';
7
+ import { CONNECTORS_CALLS_CAPABILITY } from './domain/calls.ts';
8
+ import { CONNECTORS_DEFINITIONS_CAPABILITY } from './domain/definitions.ts';
9
+ import type { ConnectorCallCapability } from './domain/calls.ts';
10
+ import {
11
+ createConnectorsRoutes,
12
+ createConnectorsRuntime,
13
+ } from './server/index.ts';
14
+ import { connectorCallLimits, CONNECTORS_MODULE_SETTINGS } from './settings.ts';
15
+
16
+ export function createServerComposition(
17
+ context: PlatformServerContext,
18
+ ): PlatformServerComposition {
19
+ const runtime = createConnectorsRuntime({
20
+ databases: context.databases,
21
+ purpose:
22
+ context.environment.NODE_ENV === 'test'
23
+ ? 'test'
24
+ : context.environment.NODE_ENV === 'production'
25
+ ? 'runtime'
26
+ : 'preview',
27
+ environment: context.environment,
28
+ workspaceRoot: context.workspaceRoot,
29
+ limits: () => connectorCallLimits(context.settings),
30
+ });
31
+ /* Registered while modules compose: a module shipping its own definition
32
+ resolves this during its own composition, before the first read seals it. */
33
+ context.capabilities.register(
34
+ CONNECTORS_DEFINITIONS_CAPABILITY,
35
+ runtime.definitions,
36
+ );
37
+ context.capabilities.register<ConnectorCallCapability>(
38
+ CONNECTORS_CALLS_CAPABILITY,
39
+ {
40
+ call: async (request) => (await runtime.calls()).call(request),
41
+ consented: async (tenantId, instanceId, caller) =>
42
+ (await runtime.calls()).consented(tenantId, instanceId, caller),
43
+ },
44
+ );
45
+ context.agentTools.register(connectorsAgentTools(runtime));
46
+ /* The sweep and the export run here, on this module's own lease and under
47
+ its own tenant transaction; the platform only holds the declaration. */
48
+ context.dataClasses.declare(
49
+ connectorsDataClasses(() => runtime.repository()),
50
+ );
51
+ return {
52
+ routes: createConnectorsRoutes(context.auth, runtime),
53
+ settings: CONNECTORS_MODULE_SETTINGS,
54
+ dispose: () => runtime.dispose(),
55
+ };
56
+ }
@@ -0,0 +1,66 @@
1
+ export { createConnectorsRoutes, endpoints } from '../api/endpoints.ts';
2
+ export {
3
+ CONNECTORS_CALL_TOOL_TARGET,
4
+ connectorsAgentTools,
5
+ } from '../agent/tools.ts';
6
+ export {
7
+ DatabaseConnectorsRepository,
8
+ migrateConnectorsDatabase,
9
+ normalizedInstanceName,
10
+ withoutCredential,
11
+ } from '../services/database-repository.ts';
12
+ export { createConnectorsRuntime } from './runtime.ts';
13
+ export type { ConnectorsRuntime, ConnectorsRuntimeOptions } from './runtime.ts';
14
+ export {
15
+ ConnectorCallService,
16
+ CALL_BODY_PREVIEW_BYTES,
17
+ CALL_KEY_CLAIM_MS,
18
+ MAX_CACHED_TOKENS,
19
+ MAX_QUERY_PARAMETERS,
20
+ MAX_REQUEST_BYTES,
21
+ prepareRequest,
22
+ } from '../services/call-service.ts';
23
+ export type {
24
+ ConnectorCallLimits,
25
+ ConnectorCallServiceOptions,
26
+ ConnectorConnectSeam,
27
+ } from '../services/call-service.ts';
28
+ export {
29
+ CALL_RETENTION_DAYS,
30
+ connectorsDataClasses,
31
+ } from '../services/data-classes.ts';
32
+ export { ConnectorsService } from '../services/connectors-service.ts';
33
+ export type { ConnectorsServiceOptions } from '../services/connectors-service.ts';
34
+ export {
35
+ AesGcmCredentialVault,
36
+ credentialContext,
37
+ credentialVaultFromEnvironment,
38
+ } from '../services/credential-vault.ts';
39
+ export type {
40
+ CredentialVault,
41
+ SealedCredential,
42
+ } from '../services/credential-vault.ts';
43
+ export {
44
+ blockedAddress,
45
+ connectorHostAllowlist,
46
+ ConnectorEgressError,
47
+ createConnectorEgressPolicy,
48
+ normalizeHost,
49
+ pinnedLookup,
50
+ systemHostResolver,
51
+ } from '../services/egress.ts';
52
+ export type {
53
+ ConnectorEgressPolicy,
54
+ HostAddressResolver,
55
+ PinnedLookup,
56
+ ResolvedAddress,
57
+ } from '../services/egress.ts';
58
+ export { ConnectorsServiceError } from '../services/service-error.ts';
59
+ export {
60
+ DuplicateConnectorNameError,
61
+ type ConnectorCallKeyClaim,
62
+ type ConnectorCallKeyDecision,
63
+ type ConnectorExportCursor,
64
+ type ConnectorsRepository,
65
+ type StoredConnectorInstance,
66
+ } from '../services/repository.ts';