@contractspec/lib.contracts 1.62.0 → 1.64.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.
- package/CHANGELOG.md +760 -0
- package/README.md +30 -96
- package/package.json +9 -4742
- package/dist/app-config/app-config.capability.d.ts +0 -2
- package/dist/app-config/app-config.capability.d.ts.map +0 -1
- package/dist/app-config/app-config.capability.js +0 -730
- package/dist/app-config/app-config.contracts.d.ts +0 -240
- package/dist/app-config/app-config.contracts.d.ts.map +0 -1
- package/dist/app-config/app-config.contracts.js +0 -927
- package/dist/app-config/app-config.contracts.test.d.ts +0 -2
- package/dist/app-config/app-config.contracts.test.d.ts.map +0 -1
- package/dist/app-config/app-config.feature.d.ts +0 -6
- package/dist/app-config/app-config.feature.d.ts.map +0 -1
- package/dist/app-config/app-config.feature.js +0 -255
- package/dist/app-config/branding.d.ts +0 -53
- package/dist/app-config/branding.d.ts.map +0 -1
- package/dist/app-config/branding.js +0 -1
- package/dist/app-config/branding.test.d.ts +0 -2
- package/dist/app-config/branding.test.d.ts.map +0 -1
- package/dist/app-config/docs/app-config.docblock.d.ts +0 -3
- package/dist/app-config/docs/app-config.docblock.d.ts.map +0 -1
- package/dist/app-config/docs/app-config.docblock.js +0 -383
- package/dist/app-config/events.d.ts +0 -116
- package/dist/app-config/events.d.ts.map +0 -1
- package/dist/app-config/events.js +0 -386
- package/dist/app-config/events.test.d.ts +0 -2
- package/dist/app-config/events.test.d.ts.map +0 -1
- package/dist/app-config/index.d.ts +0 -10
- package/dist/app-config/index.d.ts.map +0 -1
- package/dist/app-config/index.js +0 -3113
- package/dist/app-config/lifecycle-contracts.d.ts +0 -266
- package/dist/app-config/lifecycle-contracts.d.ts.map +0 -1
- package/dist/app-config/lifecycle-contracts.js +0 -1084
- package/dist/app-config/lifecycle-contracts.test.d.ts +0 -2
- package/dist/app-config/lifecycle-contracts.test.d.ts.map +0 -1
- package/dist/app-config/lifecycle.d.ts +0 -24
- package/dist/app-config/lifecycle.d.ts.map +0 -1
- package/dist/app-config/lifecycle.js +0 -1
- package/dist/app-config/lifecycle.test.d.ts +0 -2
- package/dist/app-config/lifecycle.test.d.ts.map +0 -1
- package/dist/app-config/runtime.d.ts +0 -112
- package/dist/app-config/runtime.d.ts.map +0 -1
- package/dist/app-config/runtime.js +0 -734
- package/dist/app-config/runtime.test.d.ts +0 -2
- package/dist/app-config/runtime.test.d.ts.map +0 -1
- package/dist/app-config/spec.d.ts +0 -170
- package/dist/app-config/spec.d.ts.map +0 -1
- package/dist/app-config/spec.js +0 -229
- package/dist/app-config/spec.test.d.ts +0 -2
- package/dist/app-config/spec.test.d.ts.map +0 -1
- package/dist/app-config/validation.d.ts +0 -44
- package/dist/app-config/validation.d.ts.map +0 -1
- package/dist/app-config/validation.js +0 -650
- package/dist/app-config/validation.test.d.ts +0 -2
- package/dist/app-config/validation.test.d.ts.map +0 -1
- package/dist/capabilities/capabilities.d.ts +0 -97
- package/dist/capabilities/capabilities.d.ts.map +0 -1
- package/dist/capabilities/capabilities.js +0 -217
- package/dist/capabilities/capabilities.test.d.ts +0 -2
- package/dist/capabilities/capabilities.test.d.ts.map +0 -1
- package/dist/capabilities/context.d.ts +0 -111
- package/dist/capabilities/context.d.ts.map +0 -1
- package/dist/capabilities/context.js +0 -101
- package/dist/capabilities/context.test.d.ts +0 -2
- package/dist/capabilities/context.test.d.ts.map +0 -1
- package/dist/capabilities/docs/capabilities.docblock.d.ts +0 -3
- package/dist/capabilities/docs/capabilities.docblock.d.ts.map +0 -1
- package/dist/capabilities/docs/capabilities.docblock.js +0 -353
- package/dist/capabilities/guards.d.ts +0 -122
- package/dist/capabilities/guards.d.ts.map +0 -1
- package/dist/capabilities/guards.js +0 -177
- package/dist/capabilities/index.d.ts +0 -7
- package/dist/capabilities/index.d.ts.map +0 -1
- package/dist/capabilities/index.js +0 -739
- package/dist/capabilities/meeting-recorder.d.ts +0 -6
- package/dist/capabilities/meeting-recorder.d.ts.map +0 -1
- package/dist/capabilities/meeting-recorder.js +0 -154
- package/dist/capabilities/openbanking.d.ts +0 -6
- package/dist/capabilities/openbanking.d.ts.map +0 -1
- package/dist/capabilities/openbanking.js +0 -166
- package/dist/capabilities/validation.d.ts +0 -80
- package/dist/capabilities/validation.d.ts.map +0 -1
- package/dist/capabilities/validation.js +0 -185
- package/dist/capabilities/validation.test.d.ts +0 -2
- package/dist/capabilities/validation.test.d.ts.map +0 -1
- package/dist/client/index.d.ts +0 -2
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js +0 -1379
- package/dist/client/react/drivers/rn-reusables.d.ts +0 -22
- package/dist/client/react/drivers/rn-reusables.d.ts.map +0 -1
- package/dist/client/react/drivers/rn-reusables.js +0 -38
- package/dist/client/react/drivers/shadcn.d.ts +0 -8
- package/dist/client/react/drivers/shadcn.d.ts.map +0 -1
- package/dist/client/react/drivers/shadcn.js +0 -38
- package/dist/client/react/feature-render.d.ts +0 -16
- package/dist/client/react/feature-render.d.ts.map +0 -1
- package/dist/client/react/feature-render.js +0 -833
- package/dist/client/react/form-render.d.ts +0 -87
- package/dist/client/react/form-render.d.ts.map +0 -1
- package/dist/client/react/form-render.js +0 -681
- package/dist/client/react/index.d.ts +0 -5
- package/dist/client/react/index.d.ts.map +0 -1
- package/dist/client/react/index.js +0 -1376
- package/dist/contract-registry/index.d.ts +0 -4
- package/dist/contract-registry/index.d.ts.map +0 -1
- package/dist/contract-registry/index.js +0 -129
- package/dist/contract-registry/schemas.d.ts +0 -121
- package/dist/contract-registry/schemas.d.ts.map +0 -1
- package/dist/contract-registry/schemas.js +0 -129
- package/dist/contract-registry/schemas.test.d.ts +0 -2
- package/dist/contract-registry/schemas.test.d.ts.map +0 -1
- package/dist/contract-registry/types.d.ts +0 -43
- package/dist/contract-registry/types.d.ts.map +0 -1
- package/dist/contract-registry/types.js +0 -1
- package/dist/data-views/data-views.d.ts +0 -5
- package/dist/data-views/data-views.d.ts.map +0 -1
- package/dist/data-views/data-views.js +0 -232
- package/dist/data-views/data-views.test.d.ts +0 -2
- package/dist/data-views/data-views.test.d.ts.map +0 -1
- package/dist/data-views/docs/data-views.docblock.d.ts +0 -3
- package/dist/data-views/docs/data-views.docblock.d.ts.map +0 -1
- package/dist/data-views/docs/data-views.docblock.js +0 -164
- package/dist/data-views/index.d.ts +0 -5
- package/dist/data-views/index.d.ts.map +0 -1
- package/dist/data-views/index.js +0 -232
- package/dist/data-views/query-generator.d.ts +0 -36
- package/dist/data-views/query-generator.d.ts.map +0 -1
- package/dist/data-views/query-generator.js +0 -89
- package/dist/data-views/registry.d.ts +0 -13
- package/dist/data-views/registry.d.ts.map +0 -1
- package/dist/data-views/registry.js +0 -226
- package/dist/data-views/registry.test.d.ts +0 -2
- package/dist/data-views/registry.test.d.ts.map +0 -1
- package/dist/data-views/report/contractVerificationTable.d.ts +0 -5
- package/dist/data-views/report/contractVerificationTable.d.ts.map +0 -1
- package/dist/data-views/report/contractVerificationTable.js +0 -240
- package/dist/data-views/report/contractVerificationTable.test.d.ts +0 -2
- package/dist/data-views/report/contractVerificationTable.test.d.ts.map +0 -1
- package/dist/data-views/runtime.d.ts +0 -26
- package/dist/data-views/runtime.d.ts.map +0 -1
- package/dist/data-views/runtime.js +0 -108
- package/dist/data-views/runtime.test.d.ts +0 -2
- package/dist/data-views/runtime.test.d.ts.map +0 -1
- package/dist/data-views/spec.d.ts +0 -23
- package/dist/data-views/spec.d.ts.map +0 -1
- package/dist/data-views/spec.js +0 -38
- package/dist/data-views/spec.test.d.ts +0 -2
- package/dist/data-views/spec.test.d.ts.map +0 -1
- package/dist/data-views/types.d.ts +0 -153
- package/dist/data-views/types.d.ts.map +0 -1
- package/dist/data-views/types.js +0 -1
- package/dist/data-views/types.test.d.ts +0 -2
- package/dist/data-views/types.test.d.ts.map +0 -1
- package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts +0 -3
- package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts.map +0 -1
- package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -513
- package/dist/docs/capabilities/documentationSystem.capability.d.ts +0 -2
- package/dist/docs/capabilities/documentationSystem.capability.d.ts.map +0 -1
- package/dist/docs/capabilities/documentationSystem.capability.js +0 -784
- package/dist/docs/capabilities/index.d.ts +0 -2
- package/dist/docs/capabilities/index.d.ts.map +0 -1
- package/dist/docs/capabilities/index.js +0 -784
- package/dist/docs/commands/docsGenerate.command.d.ts +0 -89
- package/dist/docs/commands/docsGenerate.command.d.ts.map +0 -1
- package/dist/docs/commands/docsGenerate.command.js +0 -1016
- package/dist/docs/commands/docsPublish.command.d.ts +0 -58
- package/dist/docs/commands/docsPublish.command.d.ts.map +0 -1
- package/dist/docs/commands/docsPublish.command.js +0 -995
- package/dist/docs/commands/index.d.ts +0 -3
- package/dist/docs/commands/index.d.ts.map +0 -1
- package/dist/docs/commands/index.js +0 -1120
- package/dist/docs/constants.d.ts +0 -5
- package/dist/docs/constants.d.ts.map +0 -1
- package/dist/docs/constants.js +0 -78
- package/dist/docs/contracts.d.ts +0 -431
- package/dist/docs/contracts.d.ts.map +0 -1
- package/dist/docs/contracts.js +0 -2383
- package/dist/docs/ensure-docblocks.d.ts +0 -2
- package/dist/docs/ensure-docblocks.d.ts.map +0 -1
- package/dist/docs/ensure-docblocks.js +0 -264
- package/dist/docs/events/docsGenerated.event.d.ts +0 -57
- package/dist/docs/events/docsGenerated.event.d.ts.map +0 -1
- package/dist/docs/events/docsGenerated.event.js +0 -533
- package/dist/docs/events/docsPublished.event.d.ts +0 -65
- package/dist/docs/events/docsPublished.event.d.ts.map +0 -1
- package/dist/docs/events/docsPublished.event.js +0 -534
- package/dist/docs/events/index.d.ts +0 -3
- package/dist/docs/events/index.d.ts.map +0 -1
- package/dist/docs/events/index.js +0 -567
- package/dist/docs/forms/docsSearch.form.d.ts +0 -17
- package/dist/docs/forms/docsSearch.form.d.ts.map +0 -1
- package/dist/docs/forms/docsSearch.form.js +0 -676
- package/dist/docs/forms/index.d.ts +0 -2
- package/dist/docs/forms/index.d.ts.map +0 -1
- package/dist/docs/forms/index.js +0 -676
- package/dist/docs/index.d.ts +0 -41
- package/dist/docs/index.d.ts.map +0 -1
- package/dist/docs/index.js +0 -5491
- package/dist/docs/meta.docs.d.ts +0 -3
- package/dist/docs/meta.docs.d.ts.map +0 -1
- package/dist/docs/meta.docs.js +0 -176
- package/dist/docs/presentations/docsLayout.presentation.d.ts +0 -3
- package/dist/docs/presentations/docsLayout.presentation.d.ts.map +0 -1
- package/dist/docs/presentations/docsLayout.presentation.js +0 -1090
- package/dist/docs/presentations/docsReferencePage.presentation.d.ts +0 -3
- package/dist/docs/presentations/docsReferencePage.presentation.d.ts.map +0 -1
- package/dist/docs/presentations/docsReferencePage.presentation.js +0 -1090
- package/dist/docs/presentations/index.d.ts +0 -3
- package/dist/docs/presentations/index.d.ts.map +0 -1
- package/dist/docs/presentations/index.js +0 -1118
- package/dist/docs/presentations.d.ts +0 -28
- package/dist/docs/presentations.d.ts.map +0 -1
- package/dist/docs/presentations.js +0 -97
- package/dist/docs/presentations.test.d.ts +0 -2
- package/dist/docs/presentations.test.d.ts.map +0 -1
- package/dist/docs/queries/contractReference.query.d.ts +0 -212
- package/dist/docs/queries/contractReference.query.d.ts.map +0 -1
- package/dist/docs/queries/contractReference.query.js +0 -966
- package/dist/docs/queries/docsIndex.query.d.ts +0 -267
- package/dist/docs/queries/docsIndex.query.d.ts.map +0 -1
- package/dist/docs/queries/docsIndex.query.js +0 -966
- package/dist/docs/queries/index.d.ts +0 -3
- package/dist/docs/queries/index.d.ts.map +0 -1
- package/dist/docs/queries/index.js +0 -1041
- package/dist/docs/registry.d.ts +0 -20
- package/dist/docs/registry.d.ts.map +0 -1
- package/dist/docs/registry.js +0 -153
- package/dist/docs/registry.test.d.ts +0 -2
- package/dist/docs/registry.test.d.ts.map +0 -1
- package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts +0 -3
- package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts.map +0 -1
- package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -221
- package/dist/docs/tech/cli.docblock.d.ts +0 -3
- package/dist/docs/tech/cli.docblock.d.ts.map +0 -1
- package/dist/docs/tech/cli.docblock.js +0 -291
- package/dist/docs/tech/contracts/README.docblock.d.ts +0 -3
- package/dist/docs/tech/contracts/README.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/README.docblock.js +0 -164
- package/dist/docs/tech/contracts/migrations.docblock.d.ts +0 -3
- package/dist/docs/tech/contracts/migrations.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/migrations.docblock.js +0 -164
- package/dist/docs/tech/contracts/openapi-export.docblock.d.ts +0 -3
- package/dist/docs/tech/contracts/openapi-export.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/openapi-export.docblock.js +0 -201
- package/dist/docs/tech/contracts/openapi-import.docblock.d.ts +0 -3
- package/dist/docs/tech/contracts/openapi-import.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/openapi-import.docblock.js +0 -207
- package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts +0 -3
- package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +0 -225
- package/dist/docs/tech/contracts/overlays.docblock.d.ts +0 -3
- package/dist/docs/tech/contracts/overlays.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/overlays.docblock.js +0 -231
- package/dist/docs/tech/contracts/tests.docblock.d.ts +0 -3
- package/dist/docs/tech/contracts/tests.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/tests.docblock.js +0 -164
- package/dist/docs/tech/contracts/themes.docblock.d.ts +0 -3
- package/dist/docs/tech/contracts/themes.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/themes.docblock.js +0 -257
- package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts +0 -3
- package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +0 -269
- package/dist/docs/tech/docs-system.docblock.d.ts +0 -2
- package/dist/docs/tech/docs-system.docblock.d.ts.map +0 -1
- package/dist/docs/tech/docs-system.docblock.js +0 -264
- package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts +0 -3
- package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts.map +0 -1
- package/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -376
- package/dist/docs/tech/llm/llm-integration.docblock.d.ts +0 -8
- package/dist/docs/tech/llm/llm-integration.docblock.d.ts.map +0 -1
- package/dist/docs/tech/llm/llm-integration.docblock.js +0 -482
- package/dist/docs/tech/mcp-endpoints.docblock.d.ts +0 -3
- package/dist/docs/tech/mcp-endpoints.docblock.d.ts.map +0 -1
- package/dist/docs/tech/mcp-endpoints.docblock.js +0 -185
- package/dist/docs/tech/presentation-runtime.docblock.d.ts +0 -3
- package/dist/docs/tech/presentation-runtime.docblock.d.ts.map +0 -1
- package/dist/docs/tech/presentation-runtime.docblock.js +0 -221
- package/dist/docs/tech/report-verification-table.docblock.d.ts +0 -2
- package/dist/docs/tech/report-verification-table.docblock.d.ts.map +0 -1
- package/dist/docs/tech/report-verification-table.docblock.js +0 -191
- package/dist/docs/tech/report-verification-table.test.d.ts +0 -2
- package/dist/docs/tech/report-verification-table.test.d.ts.map +0 -1
- package/dist/docs/tech/schema/README.docblock.d.ts +0 -3
- package/dist/docs/tech/schema/README.docblock.d.ts.map +0 -1
- package/dist/docs/tech/schema/README.docblock.js +0 -164
- package/dist/docs/tech/studio/learning-events.docblock.d.ts +0 -3
- package/dist/docs/tech/studio/learning-events.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/learning-events.docblock.js +0 -190
- package/dist/docs/tech/studio/learning-journeys.docblock.d.ts +0 -3
- package/dist/docs/tech/studio/learning-journeys.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/learning-journeys.docblock.js +0 -227
- package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts +0 -3
- package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -226
- package/dist/docs/tech/studio/project-access-teams.docblock.d.ts +0 -3
- package/dist/docs/tech/studio/project-access-teams.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/project-access-teams.docblock.js +0 -200
- package/dist/docs/tech/studio/project-routing.docblock.d.ts +0 -3
- package/dist/docs/tech/studio/project-routing.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/project-routing.docblock.js +0 -209
- package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts +0 -3
- package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -183
- package/dist/docs/tech/studio/team-invitations.docblock.d.ts +0 -3
- package/dist/docs/tech/studio/team-invitations.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/team-invitations.docblock.js +0 -228
- package/dist/docs/tech/studio/workspace-ops.docblock.d.ts +0 -3
- package/dist/docs/tech/studio/workspace-ops.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/workspace-ops.docblock.js +0 -189
- package/dist/docs/tech/studio/workspaces.docblock.d.ts +0 -3
- package/dist/docs/tech/studio/workspaces.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/workspaces.docblock.js +0 -204
- package/dist/docs/tech/telemetry-ingest.docblock.d.ts +0 -3
- package/dist/docs/tech/telemetry-ingest.docblock.d.ts.map +0 -1
- package/dist/docs/tech/telemetry-ingest.docblock.js +0 -305
- package/dist/docs/tech/vscode-extension.docblock.d.ts +0 -3
- package/dist/docs/tech/vscode-extension.docblock.d.ts.map +0 -1
- package/dist/docs/tech/vscode-extension.docblock.js +0 -241
- package/dist/docs/tech-contracts.docs.d.ts +0 -3
- package/dist/docs/tech-contracts.docs.d.ts.map +0 -1
- package/dist/docs/tech-contracts.docs.js +0 -239
- package/dist/docs/types.d.ts +0 -38
- package/dist/docs/types.d.ts.map +0 -1
- package/dist/docs/types.js +0 -1
- package/dist/docs/views/contractReference.dataView.d.ts +0 -3
- package/dist/docs/views/contractReference.dataView.d.ts.map +0 -1
- package/dist/docs/views/contractReference.dataView.js +0 -1047
- package/dist/docs/views/docsIndex.dataView.d.ts +0 -3
- package/dist/docs/views/docsIndex.dataView.d.ts.map +0 -1
- package/dist/docs/views/docsIndex.dataView.js +0 -1041
- package/dist/docs/views/exampleCatalog.dataView.d.ts +0 -3
- package/dist/docs/views/exampleCatalog.dataView.d.ts.map +0 -1
- package/dist/docs/views/exampleCatalog.dataView.js +0 -1025
- package/dist/docs/views/index.d.ts +0 -4
- package/dist/docs/views/index.d.ts.map +0 -1
- package/dist/docs/views/index.js +0 -1240
- package/dist/events.d.ts +0 -143
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js +0 -228
- package/dist/events.test.d.ts +0 -2
- package/dist/events.test.d.ts.map +0 -1
- package/dist/examples/docs/examples.docblock.d.ts +0 -3
- package/dist/examples/docs/examples.docblock.d.ts.map +0 -1
- package/dist/examples/docs/examples.docblock.js +0 -307
- package/dist/examples/index.d.ts +0 -12
- package/dist/examples/index.d.ts.map +0 -1
- package/dist/examples/index.js +0 -604
- package/dist/examples/registry.d.ts +0 -39
- package/dist/examples/registry.d.ts.map +0 -1
- package/dist/examples/registry.js +0 -286
- package/dist/examples/registry.test.d.ts +0 -2
- package/dist/examples/registry.test.d.ts.map +0 -1
- package/dist/examples/schema.d.ts +0 -279
- package/dist/examples/schema.d.ts.map +0 -1
- package/dist/examples/schema.js +0 -166
- package/dist/examples/schema.test.d.ts +0 -2
- package/dist/examples/schema.test.d.ts.map +0 -1
- package/dist/examples/types.d.ts +0 -163
- package/dist/examples/types.d.ts.map +0 -1
- package/dist/examples/types.js +0 -77
- package/dist/examples/types.test.d.ts +0 -2
- package/dist/examples/types.test.d.ts.map +0 -1
- package/dist/examples/validation.d.ts +0 -62
- package/dist/examples/validation.d.ts.map +0 -1
- package/dist/examples/validation.js +0 -287
- package/dist/examples/validation.test.d.ts +0 -2
- package/dist/examples/validation.test.d.ts.map +0 -1
- package/dist/experiments/docs/experiments.docblock.d.ts +0 -3
- package/dist/experiments/docs/experiments.docblock.d.ts.map +0 -1
- package/dist/experiments/docs/experiments.docblock.js +0 -291
- package/dist/experiments/evaluator.d.ts +0 -34
- package/dist/experiments/evaluator.d.ts.map +0 -1
- package/dist/experiments/evaluator.js +0 -155
- package/dist/experiments/evaluator.test.d.ts +0 -2
- package/dist/experiments/evaluator.test.d.ts.map +0 -1
- package/dist/experiments/spec-resolver.d.ts +0 -13
- package/dist/experiments/spec-resolver.d.ts.map +0 -1
- package/dist/experiments/spec-resolver.js +0 -1
- package/dist/experiments/spec.d.ts +0 -80
- package/dist/experiments/spec.d.ts.map +0 -1
- package/dist/experiments/spec.js +0 -227
- package/dist/experiments/spec.test.d.ts +0 -2
- package/dist/experiments/spec.test.d.ts.map +0 -1
- package/dist/features/index.d.ts +0 -10
- package/dist/features/index.d.ts.map +0 -1
- package/dist/features/index.js +0 -275
- package/dist/features/install.d.ts +0 -15
- package/dist/features/install.d.ts.map +0 -1
- package/dist/features/install.js +0 -95
- package/dist/features/install.test.d.ts +0 -2
- package/dist/features/install.test.d.ts.map +0 -1
- package/dist/features/registry.d.ts +0 -22
- package/dist/features/registry.d.ts.map +0 -1
- package/dist/features/registry.js +0 -192
- package/dist/features/registry.test.d.ts +0 -2
- package/dist/features/registry.test.d.ts.map +0 -1
- package/dist/features/types.d.ts +0 -79
- package/dist/features/types.d.ts.map +0 -1
- package/dist/features/types.js +0 -1
- package/dist/features/types.test.d.ts +0 -2
- package/dist/features/types.test.d.ts.map +0 -1
- package/dist/features/validation.d.ts +0 -5
- package/dist/features/validation.d.ts.map +0 -1
- package/dist/features/validation.js +0 -48
- package/dist/features/validation.test.d.ts +0 -2
- package/dist/features/validation.test.d.ts.map +0 -1
- package/dist/features.capabilities.test.d.ts +0 -2
- package/dist/features.capabilities.test.d.ts.map +0 -1
- package/dist/forms/docs/forms.docblock.d.ts +0 -3
- package/dist/forms/docs/forms.docblock.d.ts.map +0 -1
- package/dist/forms/docs/forms.docblock.js +0 -164
- package/dist/forms/forms.d.ts +0 -265
- package/dist/forms/forms.d.ts.map +0 -1
- package/dist/forms/forms.js +0 -332
- package/dist/forms/index.d.ts +0 -2
- package/dist/forms/index.d.ts.map +0 -1
- package/dist/forms/index.js +0 -332
- package/dist/index.d.ts +0 -50
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -18411
- package/dist/install.d.ts +0 -76
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js +0 -60
- package/dist/integrations/binding.d.ts +0 -15
- package/dist/integrations/binding.d.ts.map +0 -1
- package/dist/integrations/binding.js +0 -1
- package/dist/integrations/connection.d.ts +0 -48
- package/dist/integrations/connection.d.ts.map +0 -1
- package/dist/integrations/connection.js +0 -1
- package/dist/integrations/docs/integrations.docblock.d.ts +0 -3
- package/dist/integrations/docs/integrations.docblock.d.ts.map +0 -1
- package/dist/integrations/docs/integrations.docblock.js +0 -255
- package/dist/integrations/health.d.ts +0 -18
- package/dist/integrations/health.d.ts.map +0 -1
- package/dist/integrations/health.js +0 -103
- package/dist/integrations/health.test.d.ts +0 -2
- package/dist/integrations/health.test.d.ts.map +0 -1
- package/dist/integrations/index.d.ts +0 -12
- package/dist/integrations/index.d.ts.map +0 -1
- package/dist/integrations/index.js +0 -3984
- package/dist/integrations/integrations.capability.d.ts +0 -2
- package/dist/integrations/integrations.capability.d.ts.map +0 -1
- package/dist/integrations/integrations.capability.js +0 -726
- package/dist/integrations/integrations.feature.d.ts +0 -6
- package/dist/integrations/integrations.feature.d.ts.map +0 -1
- package/dist/integrations/integrations.feature.js +0 -301
- package/dist/integrations/meeting-recorder/contracts/index.d.ts +0 -8
- package/dist/integrations/meeting-recorder/contracts/index.d.ts.map +0 -1
- package/dist/integrations/meeting-recorder/contracts/index.js +0 -1231
- package/dist/integrations/meeting-recorder/contracts/meetings.d.ts +0 -452
- package/dist/integrations/meeting-recorder/contracts/meetings.d.ts.map +0 -1
- package/dist/integrations/meeting-recorder/contracts/meetings.js +0 -866
- package/dist/integrations/meeting-recorder/contracts/transcripts.d.ts +0 -167
- package/dist/integrations/meeting-recorder/contracts/transcripts.d.ts.map +0 -1
- package/dist/integrations/meeting-recorder/contracts/transcripts.js +0 -933
- package/dist/integrations/meeting-recorder/contracts/webhooks.d.ts +0 -86
- package/dist/integrations/meeting-recorder/contracts/webhooks.d.ts.map +0 -1
- package/dist/integrations/meeting-recorder/contracts/webhooks.js +0 -819
- package/dist/integrations/meeting-recorder/meeting-recorder.capability.d.ts +0 -2
- package/dist/integrations/meeting-recorder/meeting-recorder.capability.d.ts.map +0 -1
- package/dist/integrations/meeting-recorder/meeting-recorder.capability.js +0 -726
- package/dist/integrations/meeting-recorder/meeting-recorder.feature.d.ts +0 -6
- package/dist/integrations/meeting-recorder/meeting-recorder.feature.d.ts.map +0 -1
- package/dist/integrations/meeting-recorder/meeting-recorder.feature.js +0 -301
- package/dist/integrations/meeting-recorder/models.d.ts +0 -403
- package/dist/integrations/meeting-recorder/models.d.ts.map +0 -1
- package/dist/integrations/meeting-recorder/models.js +0 -152
- package/dist/integrations/meeting-recorder/telemetry.d.ts +0 -14
- package/dist/integrations/meeting-recorder/telemetry.d.ts.map +0 -1
- package/dist/integrations/meeting-recorder/telemetry.js +0 -84
- package/dist/integrations/openbanking/contracts/accounts.d.ts +0 -283
- package/dist/integrations/openbanking/contracts/accounts.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/accounts.js +0 -974
- package/dist/integrations/openbanking/contracts/balances.d.ts +0 -159
- package/dist/integrations/openbanking/contracts/balances.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/balances.js +0 -938
- package/dist/integrations/openbanking/contracts/index.d.ts +0 -8
- package/dist/integrations/openbanking/contracts/index.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/index.js +0 -1399
- package/dist/integrations/openbanking/contracts/transactions.d.ts +0 -207
- package/dist/integrations/openbanking/contracts/transactions.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/transactions.js +0 -944
- package/dist/integrations/openbanking/guards.d.ts +0 -9
- package/dist/integrations/openbanking/guards.d.ts.map +0 -1
- package/dist/integrations/openbanking/guards.js +0 -72
- package/dist/integrations/openbanking/guards.test.d.ts +0 -2
- package/dist/integrations/openbanking/guards.test.d.ts.map +0 -1
- package/dist/integrations/openbanking/models.d.ts +0 -224
- package/dist/integrations/openbanking/models.d.ts.map +0 -1
- package/dist/integrations/openbanking/models.js +0 -140
- package/dist/integrations/openbanking/openbanking.capability.d.ts +0 -2
- package/dist/integrations/openbanking/openbanking.capability.d.ts.map +0 -1
- package/dist/integrations/openbanking/openbanking.capability.js +0 -726
- package/dist/integrations/openbanking/openbanking.feature.d.ts +0 -6
- package/dist/integrations/openbanking/openbanking.feature.d.ts.map +0 -1
- package/dist/integrations/openbanking/openbanking.feature.js +0 -303
- package/dist/integrations/openbanking/telemetry.d.ts +0 -13
- package/dist/integrations/openbanking/telemetry.d.ts.map +0 -1
- package/dist/integrations/openbanking/telemetry.js +0 -81
- package/dist/integrations/operations.d.ts +0 -431
- package/dist/integrations/operations.d.ts.map +0 -1
- package/dist/integrations/operations.js +0 -943
- package/dist/integrations/operations.test.d.ts +0 -2
- package/dist/integrations/operations.test.d.ts.map +0 -1
- package/dist/integrations/providers/analytics-reader.d.ts +0 -104
- package/dist/integrations/providers/analytics-reader.d.ts.map +0 -1
- package/dist/integrations/providers/analytics-reader.js +0 -1
- package/dist/integrations/providers/analytics-writer.d.ts +0 -7
- package/dist/integrations/providers/analytics-writer.d.ts.map +0 -1
- package/dist/integrations/providers/analytics-writer.js +0 -1
- package/dist/integrations/providers/analytics.d.ts +0 -48
- package/dist/integrations/providers/analytics.d.ts.map +0 -1
- package/dist/integrations/providers/analytics.js +0 -1
- package/dist/integrations/providers/calendar.d.ts +0 -76
- package/dist/integrations/providers/calendar.d.ts.map +0 -1
- package/dist/integrations/providers/calendar.js +0 -1
- package/dist/integrations/providers/database.d.ts +0 -13
- package/dist/integrations/providers/database.d.ts.map +0 -1
- package/dist/integrations/providers/database.js +0 -1
- package/dist/integrations/providers/elevenlabs.d.ts +0 -4
- package/dist/integrations/providers/elevenlabs.d.ts.map +0 -1
- package/dist/integrations/providers/elevenlabs.js +0 -331
- package/dist/integrations/providers/email.d.ts +0 -84
- package/dist/integrations/providers/email.d.ts.map +0 -1
- package/dist/integrations/providers/email.js +0 -1
- package/dist/integrations/providers/embedding.d.ts +0 -22
- package/dist/integrations/providers/embedding.d.ts.map +0 -1
- package/dist/integrations/providers/embedding.js +0 -1
- package/dist/integrations/providers/fal.d.ts +0 -4
- package/dist/integrations/providers/fal.d.ts.map +0 -1
- package/dist/integrations/providers/fal.js +0 -357
- package/dist/integrations/providers/fathom.d.ts +0 -4
- package/dist/integrations/providers/fathom.d.ts.map +0 -1
- package/dist/integrations/providers/fathom.js +0 -371
- package/dist/integrations/providers/fireflies.d.ts +0 -4
- package/dist/integrations/providers/fireflies.d.ts.map +0 -1
- package/dist/integrations/providers/fireflies.js +0 -351
- package/dist/integrations/providers/gcs-storage.d.ts +0 -4
- package/dist/integrations/providers/gcs-storage.d.ts.map +0 -1
- package/dist/integrations/providers/gcs-storage.js +0 -342
- package/dist/integrations/providers/gmail.d.ts +0 -4
- package/dist/integrations/providers/gmail.d.ts.map +0 -1
- package/dist/integrations/providers/gmail.js +0 -354
- package/dist/integrations/providers/google-calendar.d.ts +0 -4
- package/dist/integrations/providers/google-calendar.d.ts.map +0 -1
- package/dist/integrations/providers/google-calendar.js +0 -337
- package/dist/integrations/providers/gradium.d.ts +0 -4
- package/dist/integrations/providers/gradium.d.ts.map +0 -1
- package/dist/integrations/providers/gradium.js +0 -355
- package/dist/integrations/providers/granola.d.ts +0 -4
- package/dist/integrations/providers/granola.d.ts.map +0 -1
- package/dist/integrations/providers/granola.js +0 -352
- package/dist/integrations/providers/index.d.ts +0 -39
- package/dist/integrations/providers/index.d.ts.map +0 -1
- package/dist/integrations/providers/index.js +0 -2317
- package/dist/integrations/providers/jira.d.ts +0 -4
- package/dist/integrations/providers/jira.d.ts.map +0 -1
- package/dist/integrations/providers/jira.js +0 -353
- package/dist/integrations/providers/linear.d.ts +0 -4
- package/dist/integrations/providers/linear.d.ts.map +0 -1
- package/dist/integrations/providers/linear.js +0 -352
- package/dist/integrations/providers/llm.d.ts +0 -80
- package/dist/integrations/providers/llm.d.ts.map +0 -1
- package/dist/integrations/providers/llm.js +0 -1
- package/dist/integrations/providers/meeting-recorder.d.ts +0 -130
- package/dist/integrations/providers/meeting-recorder.d.ts.map +0 -1
- package/dist/integrations/providers/meeting-recorder.js +0 -1
- package/dist/integrations/providers/mistral.d.ts +0 -4
- package/dist/integrations/providers/mistral.d.ts.map +0 -1
- package/dist/integrations/providers/mistral.js +0 -339
- package/dist/integrations/providers/notion.d.ts +0 -4
- package/dist/integrations/providers/notion.d.ts.map +0 -1
- package/dist/integrations/providers/notion.js +0 -358
- package/dist/integrations/providers/openbanking.d.ts +0 -126
- package/dist/integrations/providers/openbanking.d.ts.map +0 -1
- package/dist/integrations/providers/openbanking.js +0 -1
- package/dist/integrations/providers/payments.d.ts +0 -107
- package/dist/integrations/providers/payments.d.ts.map +0 -1
- package/dist/integrations/providers/payments.js +0 -1
- package/dist/integrations/providers/posthog-llm-telemetry.d.ts +0 -52
- package/dist/integrations/providers/posthog-llm-telemetry.d.ts.map +0 -1
- package/dist/integrations/providers/posthog-llm-telemetry.js +0 -241
- package/dist/integrations/providers/posthog.d.ts +0 -4
- package/dist/integrations/providers/posthog.d.ts.map +0 -1
- package/dist/integrations/providers/posthog.js +0 -351
- package/dist/integrations/providers/postmark.d.ts +0 -4
- package/dist/integrations/providers/postmark.d.ts.map +0 -1
- package/dist/integrations/providers/postmark.js +0 -343
- package/dist/integrations/providers/powens.d.ts +0 -4
- package/dist/integrations/providers/powens.d.ts.map +0 -1
- package/dist/integrations/providers/powens.js +0 -369
- package/dist/integrations/providers/project-management.d.ts +0 -33
- package/dist/integrations/providers/project-management.d.ts.map +0 -1
- package/dist/integrations/providers/project-management.js +0 -1
- package/dist/integrations/providers/providers.test.d.ts +0 -2
- package/dist/integrations/providers/providers.test.d.ts.map +0 -1
- package/dist/integrations/providers/qdrant.d.ts +0 -4
- package/dist/integrations/providers/qdrant.d.ts.map +0 -1
- package/dist/integrations/providers/qdrant.js +0 -346
- package/dist/integrations/providers/registry.d.ts +0 -7
- package/dist/integrations/providers/registry.d.ts.map +0 -1
- package/dist/integrations/providers/registry.js +0 -2102
- package/dist/integrations/providers/sms.d.ts +0 -32
- package/dist/integrations/providers/sms.d.ts.map +0 -1
- package/dist/integrations/providers/sms.js +0 -1
- package/dist/integrations/providers/storage.d.ts +0 -58
- package/dist/integrations/providers/storage.d.ts.map +0 -1
- package/dist/integrations/providers/storage.js +0 -1
- package/dist/integrations/providers/stripe.d.ts +0 -4
- package/dist/integrations/providers/stripe.d.ts.map +0 -1
- package/dist/integrations/providers/stripe.js +0 -350
- package/dist/integrations/providers/supabase-postgres.d.ts +0 -4
- package/dist/integrations/providers/supabase-postgres.d.ts.map +0 -1
- package/dist/integrations/providers/supabase-postgres.js +0 -332
- package/dist/integrations/providers/supabase-vector.d.ts +0 -4
- package/dist/integrations/providers/supabase-vector.d.ts.map +0 -1
- package/dist/integrations/providers/supabase-vector.js +0 -352
- package/dist/integrations/providers/tldv.d.ts +0 -4
- package/dist/integrations/providers/tldv.d.ts.map +0 -1
- package/dist/integrations/providers/tldv.js +0 -351
- package/dist/integrations/providers/twilio-sms.d.ts +0 -4
- package/dist/integrations/providers/twilio-sms.d.ts.map +0 -1
- package/dist/integrations/providers/twilio-sms.js +0 -336
- package/dist/integrations/providers/vector-store.d.ts +0 -40
- package/dist/integrations/providers/vector-store.d.ts.map +0 -1
- package/dist/integrations/providers/vector-store.js +0 -1
- package/dist/integrations/providers/voice.d.ts +0 -32
- package/dist/integrations/providers/voice.d.ts.map +0 -1
- package/dist/integrations/providers/voice.js +0 -1
- package/dist/integrations/runtime.d.ts +0 -96
- package/dist/integrations/runtime.d.ts.map +0 -1
- package/dist/integrations/runtime.js +0 -239
- package/dist/integrations/runtime.test.d.ts +0 -2
- package/dist/integrations/runtime.test.d.ts.map +0 -1
- package/dist/integrations/secrets/aws-secret-manager.d.ts +0 -29
- package/dist/integrations/secrets/aws-secret-manager.d.ts.map +0 -1
- package/dist/integrations/secrets/aws-secret-manager.js +0 -376
- package/dist/integrations/secrets/env-secret-provider.d.ts +0 -29
- package/dist/integrations/secrets/env-secret-provider.d.ts.map +0 -1
- package/dist/integrations/secrets/env-secret-provider.js +0 -189
- package/dist/integrations/secrets/gcp-secret-manager.d.ts +0 -30
- package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +0 -1
- package/dist/integrations/secrets/gcp-secret-manager.js +0 -377
- package/dist/integrations/secrets/index.d.ts +0 -7
- package/dist/integrations/secrets/index.d.ts.map +0 -1
- package/dist/integrations/secrets/index.js +0 -1159
- package/dist/integrations/secrets/manager.d.ts +0 -45
- package/dist/integrations/secrets/manager.d.ts.map +0 -1
- package/dist/integrations/secrets/manager.js +0 -213
- package/dist/integrations/secrets/provider.d.ts +0 -50
- package/dist/integrations/secrets/provider.d.ts.map +0 -1
- package/dist/integrations/secrets/provider.js +0 -104
- package/dist/integrations/secrets/provider.test.d.ts +0 -2
- package/dist/integrations/secrets/provider.test.d.ts.map +0 -1
- package/dist/integrations/secrets/scaleway-secret-manager.d.ts +0 -36
- package/dist/integrations/secrets/scaleway-secret-manager.d.ts.map +0 -1
- package/dist/integrations/secrets/scaleway-secret-manager.js +0 -405
- package/dist/integrations/secrets-types.d.ts +0 -15
- package/dist/integrations/secrets-types.d.ts.map +0 -1
- package/dist/integrations/secrets-types.js +0 -1
- package/dist/integrations/spec.d.ts +0 -73
- package/dist/integrations/spec.d.ts.map +0 -1
- package/dist/integrations/spec.js +0 -232
- package/dist/integrations/spec.test.d.ts +0 -2
- package/dist/integrations/spec.test.d.ts.map +0 -1
- package/dist/jobs/define-job.d.ts +0 -16
- package/dist/jobs/define-job.d.ts.map +0 -1
- package/dist/jobs/define-job.js +0 -41
- package/dist/jobs/gcp-cloud-tasks.d.ts +0 -39
- package/dist/jobs/gcp-cloud-tasks.d.ts.map +0 -1
- package/dist/jobs/gcp-cloud-tasks.js +0 -103
- package/dist/jobs/gcp-pubsub.d.ts +0 -23
- package/dist/jobs/gcp-pubsub.d.ts.map +0 -1
- package/dist/jobs/gcp-pubsub.js +0 -91
- package/dist/jobs/handlers/gmail-sync-handler.d.ts +0 -6
- package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +0 -1
- package/dist/jobs/handlers/gmail-sync-handler.js +0 -40
- package/dist/jobs/handlers/handlers.test.d.ts +0 -2
- package/dist/jobs/handlers/handlers.test.d.ts.map +0 -1
- package/dist/jobs/handlers/index.d.ts +0 -6
- package/dist/jobs/handlers/index.d.ts.map +0 -1
- package/dist/jobs/handlers/index.js +0 -83
- package/dist/jobs/handlers/ping-handler.d.ts +0 -7
- package/dist/jobs/handlers/ping-handler.d.ts.map +0 -1
- package/dist/jobs/handlers/ping-handler.js +0 -47
- package/dist/jobs/handlers/storage-document-handler.d.ts +0 -9
- package/dist/jobs/handlers/storage-document-handler.d.ts.map +0 -1
- package/dist/jobs/handlers/storage-document-handler.js +0 -47
- package/dist/jobs/index.d.ts +0 -3
- package/dist/jobs/index.d.ts.map +0 -1
- package/dist/jobs/index.js +0 -64
- package/dist/jobs/memory-queue.d.ts +0 -15
- package/dist/jobs/memory-queue.d.ts.map +0 -1
- package/dist/jobs/memory-queue.js +0 -129
- package/dist/jobs/queue.d.ts +0 -127
- package/dist/jobs/queue.d.ts.map +0 -1
- package/dist/jobs/queue.js +0 -55
- package/dist/jobs/queue.test.d.ts +0 -2
- package/dist/jobs/queue.test.d.ts.map +0 -1
- package/dist/jobs/scaleway-sqs-queue.d.ts +0 -28
- package/dist/jobs/scaleway-sqs-queue.d.ts.map +0 -1
- package/dist/jobs/scaleway-sqs-queue.js +0 -222
- package/dist/jsonschema.d.ts +0 -40
- package/dist/jsonschema.d.ts.map +0 -1
- package/dist/jsonschema.js +0 -73
- package/dist/jsonschema.test.d.ts +0 -2
- package/dist/jsonschema.test.d.ts.map +0 -1
- package/dist/knowledge/binding.d.ts +0 -23
- package/dist/knowledge/binding.d.ts.map +0 -1
- package/dist/knowledge/binding.js +0 -1
- package/dist/knowledge/docs/knowledge.docblock.d.ts +0 -3
- package/dist/knowledge/docs/knowledge.docblock.d.ts.map +0 -1
- package/dist/knowledge/docs/knowledge.docblock.js +0 -301
- package/dist/knowledge/index.d.ts +0 -5
- package/dist/knowledge/index.d.ts.map +0 -1
- package/dist/knowledge/index.js +0 -468
- package/dist/knowledge/ingestion/document-processor.d.ts +0 -23
- package/dist/knowledge/ingestion/document-processor.d.ts.map +0 -1
- package/dist/knowledge/ingestion/document-processor.js +0 -95
- package/dist/knowledge/ingestion/embedding-service.d.ts +0 -9
- package/dist/knowledge/ingestion/embedding-service.d.ts.map +0 -1
- package/dist/knowledge/ingestion/embedding-service.js +0 -57
- package/dist/knowledge/ingestion/gmail-adapter.d.ts +0 -15
- package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +0 -1
- package/dist/knowledge/ingestion/gmail-adapter.js +0 -103
- package/dist/knowledge/ingestion/index.d.ts +0 -6
- package/dist/knowledge/ingestion/index.d.ts.map +0 -1
- package/dist/knowledge/ingestion/index.js +0 -252
- package/dist/knowledge/ingestion/ingestion.test.d.ts +0 -2
- package/dist/knowledge/ingestion/ingestion.test.d.ts.map +0 -1
- package/dist/knowledge/ingestion/storage-adapter.d.ts +0 -12
- package/dist/knowledge/ingestion/storage-adapter.d.ts.map +0 -1
- package/dist/knowledge/ingestion/storage-adapter.js +0 -62
- package/dist/knowledge/ingestion/vector-indexer.d.ts +0 -15
- package/dist/knowledge/ingestion/vector-indexer.d.ts.map +0 -1
- package/dist/knowledge/ingestion/vector-indexer.js +0 -63
- package/dist/knowledge/knowledge.capability.d.ts +0 -2
- package/dist/knowledge/knowledge.capability.d.ts.map +0 -1
- package/dist/knowledge/knowledge.capability.js +0 -726
- package/dist/knowledge/knowledge.feature.d.ts +0 -6
- package/dist/knowledge/knowledge.feature.d.ts.map +0 -1
- package/dist/knowledge/knowledge.feature.js +0 -301
- package/dist/knowledge/operations.d.ts +0 -312
- package/dist/knowledge/operations.d.ts.map +0 -1
- package/dist/knowledge/operations.js +0 -869
- package/dist/knowledge/operations.test.d.ts +0 -2
- package/dist/knowledge/operations.test.d.ts.map +0 -1
- package/dist/knowledge/query/index.d.ts +0 -2
- package/dist/knowledge/query/index.d.ts.map +0 -1
- package/dist/knowledge/query/index.js +0 -110
- package/dist/knowledge/query/service.d.ts +0 -26
- package/dist/knowledge/query/service.d.ts.map +0 -1
- package/dist/knowledge/query/service.js +0 -110
- package/dist/knowledge/query/service.test.d.ts +0 -2
- package/dist/knowledge/query/service.test.d.ts.map +0 -1
- package/dist/knowledge/runtime.d.ts +0 -29
- package/dist/knowledge/runtime.d.ts.map +0 -1
- package/dist/knowledge/runtime.js +0 -91
- package/dist/knowledge/runtime.test.d.ts +0 -2
- package/dist/knowledge/runtime.test.d.ts.map +0 -1
- package/dist/knowledge/source.d.ts +0 -30
- package/dist/knowledge/source.d.ts.map +0 -1
- package/dist/knowledge/source.js +0 -1
- package/dist/knowledge/spaces/email-threads.d.ts +0 -4
- package/dist/knowledge/spaces/email-threads.d.ts.map +0 -1
- package/dist/knowledge/spaces/email-threads.js +0 -102
- package/dist/knowledge/spaces/financial-docs.d.ts +0 -4
- package/dist/knowledge/spaces/financial-docs.d.ts.map +0 -1
- package/dist/knowledge/spaces/financial-docs.js +0 -102
- package/dist/knowledge/spaces/financial-overview.d.ts +0 -4
- package/dist/knowledge/spaces/financial-overview.d.ts.map +0 -1
- package/dist/knowledge/spaces/financial-overview.js +0 -102
- package/dist/knowledge/spaces/index.d.ts +0 -7
- package/dist/knowledge/spaces/index.d.ts.map +0 -1
- package/dist/knowledge/spaces/index.js +0 -273
- package/dist/knowledge/spaces/product-canon.d.ts +0 -4
- package/dist/knowledge/spaces/product-canon.d.ts.map +0 -1
- package/dist/knowledge/spaces/product-canon.js +0 -102
- package/dist/knowledge/spaces/spaces.test.d.ts +0 -2
- package/dist/knowledge/spaces/spaces.test.d.ts.map +0 -1
- package/dist/knowledge/spaces/support-faq.d.ts +0 -4
- package/dist/knowledge/spaces/support-faq.d.ts.map +0 -1
- package/dist/knowledge/spaces/support-faq.js +0 -103
- package/dist/knowledge/spaces/uploaded-docs.d.ts +0 -4
- package/dist/knowledge/spaces/uploaded-docs.d.ts.map +0 -1
- package/dist/knowledge/spaces/uploaded-docs.js +0 -102
- package/dist/knowledge/spec.d.ts +0 -43
- package/dist/knowledge/spec.d.ts.map +0 -1
- package/dist/knowledge/spec.js +0 -228
- package/dist/knowledge/spec.test.d.ts +0 -2
- package/dist/knowledge/spec.test.d.ts.map +0 -1
- package/dist/llm/exporters.d.ts +0 -69
- package/dist/llm/exporters.d.ts.map +0 -1
- package/dist/llm/exporters.js +0 -1261
- package/dist/llm/index.d.ts +0 -13
- package/dist/llm/index.d.ts.map +0 -1
- package/dist/llm/index.js +0 -1715
- package/dist/llm/prompts.d.ts +0 -54
- package/dist/llm/prompts.d.ts.map +0 -1
- package/dist/llm/prompts.js +0 -1706
- package/dist/llm/types.d.ts +0 -213
- package/dist/llm/types.d.ts.map +0 -1
- package/dist/llm/types.js +0 -1
- package/dist/markdown.d.ts +0 -17
- package/dist/markdown.d.ts.map +0 -1
- package/dist/markdown.js +0 -779
- package/dist/migrations.d.ts +0 -49
- package/dist/migrations.d.ts.map +0 -1
- package/dist/migrations.js +0 -67
- package/dist/migrations.test.d.ts +0 -2
- package/dist/migrations.test.d.ts.map +0 -1
- package/dist/model-registry.d.ts +0 -10
- package/dist/model-registry.d.ts.map +0 -1
- package/dist/model-registry.js +0 -64
- package/dist/model-registry.test.d.ts +0 -2
- package/dist/model-registry.test.d.ts.map +0 -1
- package/dist/node/app-config/app-config.capability.js +0 -730
- package/dist/node/app-config/app-config.contracts.js +0 -927
- package/dist/node/app-config/app-config.feature.js +0 -255
- package/dist/node/app-config/branding.js +0 -0
- package/dist/node/app-config/docs/app-config.docblock.js +0 -383
- package/dist/node/app-config/events.js +0 -386
- package/dist/node/app-config/index.js +0 -3113
- package/dist/node/app-config/lifecycle-contracts.js +0 -1084
- package/dist/node/app-config/lifecycle.js +0 -0
- package/dist/node/app-config/runtime.js +0 -734
- package/dist/node/app-config/spec.js +0 -229
- package/dist/node/app-config/validation.js +0 -650
- package/dist/node/capabilities/capabilities.js +0 -217
- package/dist/node/capabilities/context.js +0 -101
- package/dist/node/capabilities/docs/capabilities.docblock.js +0 -353
- package/dist/node/capabilities/guards.js +0 -177
- package/dist/node/capabilities/index.js +0 -739
- package/dist/node/capabilities/meeting-recorder.js +0 -154
- package/dist/node/capabilities/openbanking.js +0 -166
- package/dist/node/capabilities/validation.js +0 -185
- package/dist/node/client/index.js +0 -1379
- package/dist/node/client/react/drivers/rn-reusables.js +0 -38
- package/dist/node/client/react/drivers/shadcn.js +0 -38
- package/dist/node/client/react/feature-render.js +0 -833
- package/dist/node/client/react/form-render.js +0 -681
- package/dist/node/client/react/index.js +0 -1376
- package/dist/node/contract-registry/index.js +0 -129
- package/dist/node/contract-registry/schemas.js +0 -129
- package/dist/node/contract-registry/types.js +0 -0
- package/dist/node/data-views/data-views.js +0 -232
- package/dist/node/data-views/docs/data-views.docblock.js +0 -164
- package/dist/node/data-views/index.js +0 -232
- package/dist/node/data-views/query-generator.js +0 -89
- package/dist/node/data-views/registry.js +0 -226
- package/dist/node/data-views/report/contractVerificationTable.js +0 -240
- package/dist/node/data-views/runtime.js +0 -108
- package/dist/node/data-views/spec.js +0 -38
- package/dist/node/data-views/types.js +0 -0
- package/dist/node/docs/accessibility_wcag_compliance_specs.docblock.js +0 -513
- package/dist/node/docs/capabilities/documentationSystem.capability.js +0 -784
- package/dist/node/docs/capabilities/index.js +0 -784
- package/dist/node/docs/commands/docsGenerate.command.js +0 -1016
- package/dist/node/docs/commands/docsPublish.command.js +0 -995
- package/dist/node/docs/commands/index.js +0 -1120
- package/dist/node/docs/constants.js +0 -78
- package/dist/node/docs/contracts.js +0 -2383
- package/dist/node/docs/ensure-docblocks.js +0 -264
- package/dist/node/docs/events/docsGenerated.event.js +0 -533
- package/dist/node/docs/events/docsPublished.event.js +0 -534
- package/dist/node/docs/events/index.js +0 -567
- package/dist/node/docs/forms/docsSearch.form.js +0 -676
- package/dist/node/docs/forms/index.js +0 -676
- package/dist/node/docs/index.js +0 -5491
- package/dist/node/docs/meta.docs.js +0 -176
- package/dist/node/docs/presentations/docsLayout.presentation.js +0 -1090
- package/dist/node/docs/presentations/docsReferencePage.presentation.js +0 -1090
- package/dist/node/docs/presentations/index.js +0 -1118
- package/dist/node/docs/presentations.js +0 -97
- package/dist/node/docs/queries/contractReference.query.js +0 -966
- package/dist/node/docs/queries/docsIndex.query.js +0 -966
- package/dist/node/docs/queries/index.js +0 -1041
- package/dist/node/docs/registry.js +0 -153
- package/dist/node/docs/tech/auth/better-auth-nextjs.docblock.js +0 -221
- package/dist/node/docs/tech/cli.docblock.js +0 -291
- package/dist/node/docs/tech/contracts/README.docblock.js +0 -164
- package/dist/node/docs/tech/contracts/migrations.docblock.js +0 -164
- package/dist/node/docs/tech/contracts/openapi-export.docblock.js +0 -201
- package/dist/node/docs/tech/contracts/openapi-import.docblock.js +0 -207
- package/dist/node/docs/tech/contracts/ops-to-presentation-linking.docblock.js +0 -225
- package/dist/node/docs/tech/contracts/overlays.docblock.js +0 -231
- package/dist/node/docs/tech/contracts/tests.docblock.js +0 -164
- package/dist/node/docs/tech/contracts/themes.docblock.js +0 -257
- package/dist/node/docs/tech/contracts/vertical-pocket-family-office.docblock.js +0 -269
- package/dist/node/docs/tech/docs-system.docblock.js +0 -264
- package/dist/node/docs/tech/lifecycle-stage-system.docblock.js +0 -376
- package/dist/node/docs/tech/llm/llm-integration.docblock.js +0 -482
- package/dist/node/docs/tech/mcp-endpoints.docblock.js +0 -185
- package/dist/node/docs/tech/presentation-runtime.docblock.js +0 -221
- package/dist/node/docs/tech/report-verification-table.docblock.js +0 -191
- package/dist/node/docs/tech/schema/README.docblock.js +0 -164
- package/dist/node/docs/tech/studio/learning-events.docblock.js +0 -190
- package/dist/node/docs/tech/studio/learning-journeys.docblock.js +0 -227
- package/dist/node/docs/tech/studio/platform-admin-panel.docblock.js +0 -226
- package/dist/node/docs/tech/studio/project-access-teams.docblock.js +0 -200
- package/dist/node/docs/tech/studio/project-routing.docblock.js +0 -209
- package/dist/node/docs/tech/studio/sandbox-unlogged.docblock.js +0 -183
- package/dist/node/docs/tech/studio/team-invitations.docblock.js +0 -228
- package/dist/node/docs/tech/studio/workspace-ops.docblock.js +0 -189
- package/dist/node/docs/tech/studio/workspaces.docblock.js +0 -204
- package/dist/node/docs/tech/telemetry-ingest.docblock.js +0 -305
- package/dist/node/docs/tech/vscode-extension.docblock.js +0 -241
- package/dist/node/docs/tech-contracts.docs.js +0 -239
- package/dist/node/docs/types.js +0 -0
- package/dist/node/docs/views/contractReference.dataView.js +0 -1047
- package/dist/node/docs/views/docsIndex.dataView.js +0 -1041
- package/dist/node/docs/views/exampleCatalog.dataView.js +0 -1025
- package/dist/node/docs/views/index.js +0 -1240
- package/dist/node/events.js +0 -228
- package/dist/node/examples/docs/examples.docblock.js +0 -307
- package/dist/node/examples/index.js +0 -604
- package/dist/node/examples/registry.js +0 -286
- package/dist/node/examples/schema.js +0 -166
- package/dist/node/examples/types.js +0 -77
- package/dist/node/examples/validation.js +0 -287
- package/dist/node/experiments/docs/experiments.docblock.js +0 -291
- package/dist/node/experiments/evaluator.js +0 -155
- package/dist/node/experiments/spec-resolver.js +0 -0
- package/dist/node/experiments/spec.js +0 -227
- package/dist/node/features/index.js +0 -275
- package/dist/node/features/install.js +0 -95
- package/dist/node/features/registry.js +0 -192
- package/dist/node/features/types.js +0 -0
- package/dist/node/features/validation.js +0 -48
- package/dist/node/forms/docs/forms.docblock.js +0 -164
- package/dist/node/forms/forms.js +0 -332
- package/dist/node/forms/index.js +0 -332
- package/dist/node/index.js +0 -18411
- package/dist/node/install.js +0 -60
- package/dist/node/integrations/binding.js +0 -0
- package/dist/node/integrations/connection.js +0 -0
- package/dist/node/integrations/docs/integrations.docblock.js +0 -255
- package/dist/node/integrations/health.js +0 -103
- package/dist/node/integrations/index.js +0 -3984
- package/dist/node/integrations/integrations.capability.js +0 -726
- package/dist/node/integrations/integrations.feature.js +0 -301
- package/dist/node/integrations/meeting-recorder/contracts/index.js +0 -1231
- package/dist/node/integrations/meeting-recorder/contracts/meetings.js +0 -866
- package/dist/node/integrations/meeting-recorder/contracts/transcripts.js +0 -933
- package/dist/node/integrations/meeting-recorder/contracts/webhooks.js +0 -819
- package/dist/node/integrations/meeting-recorder/meeting-recorder.capability.js +0 -726
- package/dist/node/integrations/meeting-recorder/meeting-recorder.feature.js +0 -301
- package/dist/node/integrations/meeting-recorder/models.js +0 -152
- package/dist/node/integrations/meeting-recorder/telemetry.js +0 -84
- package/dist/node/integrations/openbanking/contracts/accounts.js +0 -974
- package/dist/node/integrations/openbanking/contracts/balances.js +0 -938
- package/dist/node/integrations/openbanking/contracts/index.js +0 -1399
- package/dist/node/integrations/openbanking/contracts/transactions.js +0 -944
- package/dist/node/integrations/openbanking/guards.js +0 -72
- package/dist/node/integrations/openbanking/models.js +0 -140
- package/dist/node/integrations/openbanking/openbanking.capability.js +0 -726
- package/dist/node/integrations/openbanking/openbanking.feature.js +0 -303
- package/dist/node/integrations/openbanking/telemetry.js +0 -81
- package/dist/node/integrations/operations.js +0 -943
- package/dist/node/integrations/providers/analytics-reader.js +0 -0
- package/dist/node/integrations/providers/analytics-writer.js +0 -0
- package/dist/node/integrations/providers/analytics.js +0 -0
- package/dist/node/integrations/providers/calendar.js +0 -0
- package/dist/node/integrations/providers/database.js +0 -0
- package/dist/node/integrations/providers/elevenlabs.js +0 -331
- package/dist/node/integrations/providers/email.js +0 -0
- package/dist/node/integrations/providers/embedding.js +0 -0
- package/dist/node/integrations/providers/fal.js +0 -357
- package/dist/node/integrations/providers/fathom.js +0 -371
- package/dist/node/integrations/providers/fireflies.js +0 -351
- package/dist/node/integrations/providers/gcs-storage.js +0 -342
- package/dist/node/integrations/providers/gmail.js +0 -354
- package/dist/node/integrations/providers/google-calendar.js +0 -337
- package/dist/node/integrations/providers/gradium.js +0 -355
- package/dist/node/integrations/providers/granola.js +0 -352
- package/dist/node/integrations/providers/index.js +0 -2317
- package/dist/node/integrations/providers/jira.js +0 -353
- package/dist/node/integrations/providers/linear.js +0 -352
- package/dist/node/integrations/providers/llm.js +0 -0
- package/dist/node/integrations/providers/meeting-recorder.js +0 -0
- package/dist/node/integrations/providers/mistral.js +0 -339
- package/dist/node/integrations/providers/notion.js +0 -358
- package/dist/node/integrations/providers/openbanking.js +0 -0
- package/dist/node/integrations/providers/payments.js +0 -0
- package/dist/node/integrations/providers/posthog-llm-telemetry.js +0 -241
- package/dist/node/integrations/providers/posthog.js +0 -351
- package/dist/node/integrations/providers/postmark.js +0 -343
- package/dist/node/integrations/providers/powens.js +0 -369
- package/dist/node/integrations/providers/project-management.js +0 -0
- package/dist/node/integrations/providers/qdrant.js +0 -346
- package/dist/node/integrations/providers/registry.js +0 -2102
- package/dist/node/integrations/providers/sms.js +0 -0
- package/dist/node/integrations/providers/storage.js +0 -0
- package/dist/node/integrations/providers/stripe.js +0 -350
- package/dist/node/integrations/providers/supabase-postgres.js +0 -332
- package/dist/node/integrations/providers/supabase-vector.js +0 -352
- package/dist/node/integrations/providers/tldv.js +0 -351
- package/dist/node/integrations/providers/twilio-sms.js +0 -336
- package/dist/node/integrations/providers/vector-store.js +0 -0
- package/dist/node/integrations/providers/voice.js +0 -0
- package/dist/node/integrations/runtime.js +0 -239
- package/dist/node/integrations/secrets/aws-secret-manager.js +0 -376
- package/dist/node/integrations/secrets/env-secret-provider.js +0 -189
- package/dist/node/integrations/secrets/gcp-secret-manager.js +0 -377
- package/dist/node/integrations/secrets/index.js +0 -1159
- package/dist/node/integrations/secrets/manager.js +0 -213
- package/dist/node/integrations/secrets/provider.js +0 -104
- package/dist/node/integrations/secrets/scaleway-secret-manager.js +0 -405
- package/dist/node/integrations/secrets-types.js +0 -0
- package/dist/node/integrations/spec.js +0 -232
- package/dist/node/jobs/define-job.js +0 -41
- package/dist/node/jobs/gcp-cloud-tasks.js +0 -103
- package/dist/node/jobs/gcp-pubsub.js +0 -91
- package/dist/node/jobs/handlers/gmail-sync-handler.js +0 -40
- package/dist/node/jobs/handlers/index.js +0 -83
- package/dist/node/jobs/handlers/ping-handler.js +0 -47
- package/dist/node/jobs/handlers/storage-document-handler.js +0 -47
- package/dist/node/jobs/index.js +0 -64
- package/dist/node/jobs/memory-queue.js +0 -129
- package/dist/node/jobs/queue.js +0 -55
- package/dist/node/jobs/scaleway-sqs-queue.js +0 -222
- package/dist/node/jsonschema.js +0 -73
- package/dist/node/knowledge/binding.js +0 -0
- package/dist/node/knowledge/docs/knowledge.docblock.js +0 -301
- package/dist/node/knowledge/index.js +0 -468
- package/dist/node/knowledge/ingestion/document-processor.js +0 -95
- package/dist/node/knowledge/ingestion/embedding-service.js +0 -57
- package/dist/node/knowledge/ingestion/gmail-adapter.js +0 -103
- package/dist/node/knowledge/ingestion/index.js +0 -252
- package/dist/node/knowledge/ingestion/storage-adapter.js +0 -62
- package/dist/node/knowledge/ingestion/vector-indexer.js +0 -63
- package/dist/node/knowledge/knowledge.capability.js +0 -726
- package/dist/node/knowledge/knowledge.feature.js +0 -301
- package/dist/node/knowledge/operations.js +0 -869
- package/dist/node/knowledge/query/index.js +0 -110
- package/dist/node/knowledge/query/service.js +0 -110
- package/dist/node/knowledge/runtime.js +0 -91
- package/dist/node/knowledge/source.js +0 -0
- package/dist/node/knowledge/spaces/email-threads.js +0 -102
- package/dist/node/knowledge/spaces/financial-docs.js +0 -102
- package/dist/node/knowledge/spaces/financial-overview.js +0 -102
- package/dist/node/knowledge/spaces/index.js +0 -273
- package/dist/node/knowledge/spaces/product-canon.js +0 -102
- package/dist/node/knowledge/spaces/support-faq.js +0 -103
- package/dist/node/knowledge/spaces/uploaded-docs.js +0 -102
- package/dist/node/knowledge/spec.js +0 -228
- package/dist/node/llm/exporters.js +0 -1261
- package/dist/node/llm/index.js +0 -1715
- package/dist/node/llm/prompts.js +0 -1706
- package/dist/node/llm/types.js +0 -0
- package/dist/node/markdown.js +0 -779
- package/dist/node/migrations.js +0 -67
- package/dist/node/model-registry.js +0 -64
- package/dist/node/onboarding-base.js +0 -810
- package/dist/node/openapi.js +0 -151
- package/dist/node/operations/index.js +0 -665
- package/dist/node/operations/operation.js +0 -51
- package/dist/node/operations/registry.js +0 -405
- package/dist/node/operations/report/getContractVerificationStatus.js +0 -170
- package/dist/node/operations/report/index.js +0 -305
- package/dist/node/ownership.js +0 -73
- package/dist/node/policy/context.js +0 -206
- package/dist/node/policy/docs/policy.docblock.js +0 -313
- package/dist/node/policy/engine.js +0 -325
- package/dist/node/policy/guards.js +0 -387
- package/dist/node/policy/index.js +0 -1313
- package/dist/node/policy/opa-adapter.js +0 -110
- package/dist/node/policy/registry.js +0 -221
- package/dist/node/policy/spec.js +0 -0
- package/dist/node/policy/validation.js +0 -391
- package/dist/node/presentations/docs/presentations-conventions.docblock.js +0 -171
- package/dist/node/presentations/index.js +0 -795
- package/dist/node/presentations/presentations.js +0 -38
- package/dist/node/presentations/registry.js +0 -221
- package/dist/node/presentations/transform-engine.js +0 -600
- package/dist/node/product-intent/contract-patch-intent.js +0 -68
- package/dist/node/product-intent/contract-spec-patch.js +0 -75
- package/dist/node/product-intent/evidence.js +0 -45
- package/dist/node/product-intent/findings.js +0 -81
- package/dist/node/product-intent/impact-report.js +0 -62
- package/dist/node/product-intent/index.js +0 -742
- package/dist/node/product-intent/insights.js +0 -63
- package/dist/node/product-intent/opportunity-brief.js +0 -106
- package/dist/node/product-intent/problems.js +0 -55
- package/dist/node/product-intent/registry.js +0 -242
- package/dist/node/product-intent/runtime.js +0 -320
- package/dist/node/product-intent/spec.js +0 -425
- package/dist/node/product-intent/task-pack.js +0 -69
- package/dist/node/product-intent/tickets.js +0 -57
- package/dist/node/product-intent/types.js +0 -378
- package/dist/node/product-intent/ui-wireframe.js +0 -73
- package/dist/node/prompt.js +0 -38
- package/dist/node/promptRegistry.js +0 -63
- package/dist/node/regenerator/adapters.js +0 -0
- package/dist/node/regenerator/docs/regenerator.docblock.js +0 -164
- package/dist/node/regenerator/executor.js +0 -157
- package/dist/node/regenerator/index.js +0 -342
- package/dist/node/regenerator/service.js +0 -183
- package/dist/node/regenerator/sinks.js +0 -64
- package/dist/node/regenerator/types.js +0 -0
- package/dist/node/regenerator/utils.js +0 -87
- package/dist/node/registry-utils.js +0 -163
- package/dist/node/registry.js +0 -215
- package/dist/node/resources.js +0 -83
- package/dist/node/schema-to-markdown.js +0 -278
- package/dist/node/serialization/index.js +0 -179
- package/dist/node/serialization/serializers.js +0 -180
- package/dist/node/serialization/types.js +0 -0
- package/dist/node/server/contracts-adapter-hydration.js +0 -71
- package/dist/node/server/contracts-adapter-input.js +0 -130
- package/dist/node/server/graphql-pothos.js +0 -338
- package/dist/node/server/index.js +0 -1469
- package/dist/node/server/mcp/createMcpServer.js +0 -994
- package/dist/node/server/mcp/mcpTypes.js +0 -0
- package/dist/node/server/mcp/registerPresentations.js +0 -877
- package/dist/node/server/mcp/registerPrompts.js +0 -109
- package/dist/node/server/mcp/registerResources.js +0 -75
- package/dist/node/server/mcp/registerTools.js +0 -86
- package/dist/node/server/provider-mcp.js +0 -994
- package/dist/node/server/rest-elysia.js +0 -209
- package/dist/node/server/rest-express.js +0 -224
- package/dist/node/server/rest-generic.js +0 -192
- package/dist/node/server/rest-next-app.js +0 -200
- package/dist/node/server/rest-next-mcp.js +0 -103
- package/dist/node/server/rest-next-pages.js +0 -211
- package/dist/node/telemetry/anomaly.js +0 -91
- package/dist/node/telemetry/docs/telemetry.docblock.js +0 -164
- package/dist/node/telemetry/index.js +0 -417
- package/dist/node/telemetry/spec.js +0 -261
- package/dist/node/telemetry/tracker.js +0 -129
- package/dist/node/tests/index.js +0 -231
- package/dist/node/tests/runner.js +0 -189
- package/dist/node/tests/spec.js +0 -74
- package/dist/node/themes.js +0 -225
- package/dist/node/translations/catalog.js +0 -0
- package/dist/node/translations/index.js +0 -533
- package/dist/node/translations/registry.js +0 -170
- package/dist/node/translations/spec.js +0 -36
- package/dist/node/translations/tenant.js +0 -0
- package/dist/node/translations/validation.js +0 -392
- package/dist/node/types.js +0 -0
- package/dist/node/versioning/index.js +0 -274
- package/dist/node/versioning/refs.js +0 -99
- package/dist/node/versioning/types.js +0 -55
- package/dist/node/versioning/utils.js +0 -184
- package/dist/node/workflow/adapters/db-adapter.js +0 -127
- package/dist/node/workflow/adapters/file-adapter.js +0 -38
- package/dist/node/workflow/adapters/index.js +0 -194
- package/dist/node/workflow/adapters/memory-store.js +0 -93
- package/dist/node/workflow/context.js +0 -247
- package/dist/node/workflow/expression.js +0 -157
- package/dist/node/workflow/index.js +0 -1546
- package/dist/node/workflow/overview.docblock.js +0 -164
- package/dist/node/workflow/runner.js +0 -532
- package/dist/node/workflow/sla-monitor.js +0 -84
- package/dist/node/workflow/spec.js +0 -221
- package/dist/node/workflow/state.js +0 -0
- package/dist/node/workflow/validation.js +0 -425
- package/dist/node/workspace-config/contractsrc-schema.js +0 -344
- package/dist/node/workspace-config/contractsrc-types.js +0 -0
- package/dist/node/workspace-config/index.js +0 -325
- package/dist/node/workspace-config/workspace-config.docblock.js +0 -188
- package/dist/onboarding-base.d.ts +0 -132
- package/dist/onboarding-base.d.ts.map +0 -1
- package/dist/onboarding-base.js +0 -810
- package/dist/openapi.d.ts +0 -34
- package/dist/openapi.d.ts.map +0 -1
- package/dist/openapi.js +0 -151
- package/dist/operations/index.d.ts +0 -4
- package/dist/operations/index.d.ts.map +0 -1
- package/dist/operations/index.js +0 -665
- package/dist/operations/operation.d.ts +0 -192
- package/dist/operations/operation.d.ts.map +0 -1
- package/dist/operations/operation.js +0 -51
- package/dist/operations/registry.d.ts +0 -59
- package/dist/operations/registry.d.ts.map +0 -1
- package/dist/operations/registry.js +0 -405
- package/dist/operations/report/getContractVerificationStatus.d.ts +0 -69
- package/dist/operations/report/getContractVerificationStatus.d.ts.map +0 -1
- package/dist/operations/report/getContractVerificationStatus.js +0 -170
- package/dist/operations/report/getContractVerificationStatus.test.d.ts +0 -2
- package/dist/operations/report/getContractVerificationStatus.test.d.ts.map +0 -1
- package/dist/operations/report/index.d.ts +0 -11
- package/dist/operations/report/index.d.ts.map +0 -1
- package/dist/operations/report/index.js +0 -305
- package/dist/operations/report/index.test.d.ts +0 -2
- package/dist/operations/report/index.test.d.ts.map +0 -1
- package/dist/ownership.d.ts +0 -212
- package/dist/ownership.d.ts.map +0 -1
- package/dist/ownership.js +0 -73
- package/dist/ownership.test.d.ts +0 -2
- package/dist/ownership.test.d.ts.map +0 -1
- package/dist/policy/context.d.ts +0 -235
- package/dist/policy/context.d.ts.map +0 -1
- package/dist/policy/context.js +0 -206
- package/dist/policy/context.test.d.ts +0 -2
- package/dist/policy/context.test.d.ts.map +0 -1
- package/dist/policy/docs/policy.docblock.d.ts +0 -3
- package/dist/policy/docs/policy.docblock.d.ts.map +0 -1
- package/dist/policy/docs/policy.docblock.js +0 -313
- package/dist/policy/engine.d.ts +0 -37
- package/dist/policy/engine.d.ts.map +0 -1
- package/dist/policy/engine.js +0 -325
- package/dist/policy/engine.test.d.ts +0 -2
- package/dist/policy/engine.test.d.ts.map +0 -1
- package/dist/policy/guards.d.ts +0 -157
- package/dist/policy/guards.d.ts.map +0 -1
- package/dist/policy/guards.js +0 -387
- package/dist/policy/guards.test.d.ts +0 -2
- package/dist/policy/guards.test.d.ts.map +0 -1
- package/dist/policy/index.d.ts +0 -13
- package/dist/policy/index.d.ts.map +0 -1
- package/dist/policy/index.js +0 -1313
- package/dist/policy/opa-adapter.d.ts +0 -42
- package/dist/policy/opa-adapter.d.ts.map +0 -1
- package/dist/policy/opa-adapter.js +0 -110
- package/dist/policy/opa-adapter.test.d.ts +0 -2
- package/dist/policy/opa-adapter.test.d.ts.map +0 -1
- package/dist/policy/registry.d.ts +0 -6
- package/dist/policy/registry.d.ts.map +0 -1
- package/dist/policy/registry.js +0 -221
- package/dist/policy/spec.d.ts +0 -103
- package/dist/policy/spec.d.ts.map +0 -1
- package/dist/policy/spec.js +0 -1
- package/dist/policy/validation.d.ts +0 -85
- package/dist/policy/validation.d.ts.map +0 -1
- package/dist/policy/validation.js +0 -391
- package/dist/policy/validation.test.d.ts +0 -2
- package/dist/policy/validation.test.d.ts.map +0 -1
- package/dist/presentations/docs/presentations-conventions.docblock.d.ts +0 -3
- package/dist/presentations/docs/presentations-conventions.docblock.d.ts.map +0 -1
- package/dist/presentations/docs/presentations-conventions.docblock.js +0 -171
- package/dist/presentations/index.d.ts +0 -4
- package/dist/presentations/index.d.ts.map +0 -1
- package/dist/presentations/index.js +0 -795
- package/dist/presentations/presentations.d.ts +0 -53
- package/dist/presentations/presentations.d.ts.map +0 -1
- package/dist/presentations/presentations.js +0 -38
- package/dist/presentations/registry.d.ts +0 -7
- package/dist/presentations/registry.d.ts.map +0 -1
- package/dist/presentations/registry.js +0 -221
- package/dist/presentations/transform-engine.d.ts +0 -63
- package/dist/presentations/transform-engine.d.ts.map +0 -1
- package/dist/presentations/transform-engine.js +0 -600
- package/dist/presentations/transform-engine.test.d.ts +0 -2
- package/dist/presentations/transform-engine.test.d.ts.map +0 -1
- package/dist/product-intent/contract-patch-intent.d.ts +0 -101
- package/dist/product-intent/contract-patch-intent.d.ts.map +0 -1
- package/dist/product-intent/contract-patch-intent.js +0 -68
- package/dist/product-intent/contract-spec-patch.d.ts +0 -87
- package/dist/product-intent/contract-spec-patch.d.ts.map +0 -1
- package/dist/product-intent/contract-spec-patch.js +0 -75
- package/dist/product-intent/evidence.d.ts +0 -15
- package/dist/product-intent/evidence.d.ts.map +0 -1
- package/dist/product-intent/evidence.js +0 -45
- package/dist/product-intent/findings.d.ts +0 -58
- package/dist/product-intent/findings.d.ts.map +0 -1
- package/dist/product-intent/findings.js +0 -81
- package/dist/product-intent/impact-report.d.ts +0 -58
- package/dist/product-intent/impact-report.d.ts.map +0 -1
- package/dist/product-intent/impact-report.js +0 -62
- package/dist/product-intent/index.d.ts +0 -14
- package/dist/product-intent/index.d.ts.map +0 -1
- package/dist/product-intent/index.js +0 -742
- package/dist/product-intent/insights.d.ts +0 -63
- package/dist/product-intent/insights.d.ts.map +0 -1
- package/dist/product-intent/insights.js +0 -63
- package/dist/product-intent/opportunity-brief.d.ts +0 -193
- package/dist/product-intent/opportunity-brief.d.ts.map +0 -1
- package/dist/product-intent/opportunity-brief.js +0 -106
- package/dist/product-intent/problems.d.ts +0 -60
- package/dist/product-intent/problems.d.ts.map +0 -1
- package/dist/product-intent/problems.js +0 -55
- package/dist/product-intent/registry.d.ts +0 -29
- package/dist/product-intent/registry.d.ts.map +0 -1
- package/dist/product-intent/registry.js +0 -242
- package/dist/product-intent/registry.test.d.ts +0 -2
- package/dist/product-intent/registry.test.d.ts.map +0 -1
- package/dist/product-intent/runtime.d.ts +0 -93
- package/dist/product-intent/runtime.d.ts.map +0 -1
- package/dist/product-intent/runtime.js +0 -320
- package/dist/product-intent/runtime.test.d.ts +0 -2
- package/dist/product-intent/runtime.test.d.ts.map +0 -1
- package/dist/product-intent/spec.d.ts +0 -665
- package/dist/product-intent/spec.d.ts.map +0 -1
- package/dist/product-intent/spec.js +0 -425
- package/dist/product-intent/task-pack.d.ts +0 -99
- package/dist/product-intent/task-pack.d.ts.map +0 -1
- package/dist/product-intent/task-pack.js +0 -69
- package/dist/product-intent/tickets.d.ts +0 -68
- package/dist/product-intent/tickets.d.ts.map +0 -1
- package/dist/product-intent/tickets.js +0 -57
- package/dist/product-intent/types.d.ts +0 -12
- package/dist/product-intent/types.d.ts.map +0 -1
- package/dist/product-intent/types.js +0 -378
- package/dist/product-intent/ui-wireframe.d.ts +0 -101
- package/dist/product-intent/ui-wireframe.d.ts.map +0 -1
- package/dist/product-intent/ui-wireframe.js +0 -73
- package/dist/prompt.d.ts +0 -50
- package/dist/prompt.d.ts.map +0 -1
- package/dist/prompt.js +0 -38
- package/dist/prompt.test.d.ts +0 -2
- package/dist/prompt.test.d.ts.map +0 -1
- package/dist/promptRegistry.d.ts +0 -12
- package/dist/promptRegistry.d.ts.map +0 -1
- package/dist/promptRegistry.js +0 -63
- package/dist/promptRegistry.test.d.ts +0 -2
- package/dist/promptRegistry.test.d.ts.map +0 -1
- package/dist/regenerator/adapters.d.ts +0 -16
- package/dist/regenerator/adapters.d.ts.map +0 -1
- package/dist/regenerator/adapters.js +0 -1
- package/dist/regenerator/docs/regenerator.docblock.d.ts +0 -3
- package/dist/regenerator/docs/regenerator.docblock.d.ts.map +0 -1
- package/dist/regenerator/docs/regenerator.docblock.js +0 -164
- package/dist/regenerator/executor.d.ts +0 -67
- package/dist/regenerator/executor.d.ts.map +0 -1
- package/dist/regenerator/executor.js +0 -157
- package/dist/regenerator/executor.test.d.ts +0 -2
- package/dist/regenerator/executor.test.d.ts.map +0 -1
- package/dist/regenerator/index.d.ts +0 -7
- package/dist/regenerator/index.d.ts.map +0 -1
- package/dist/regenerator/index.js +0 -342
- package/dist/regenerator/service.d.ts +0 -30
- package/dist/regenerator/service.d.ts.map +0 -1
- package/dist/regenerator/service.js +0 -183
- package/dist/regenerator/service.test.d.ts +0 -2
- package/dist/regenerator/service.test.d.ts.map +0 -1
- package/dist/regenerator/sinks.d.ts +0 -24
- package/dist/regenerator/sinks.d.ts.map +0 -1
- package/dist/regenerator/sinks.js +0 -64
- package/dist/regenerator/sinks.test.d.ts +0 -2
- package/dist/regenerator/sinks.test.d.ts.map +0 -1
- package/dist/regenerator/types.d.ts +0 -104
- package/dist/regenerator/types.d.ts.map +0 -1
- package/dist/regenerator/types.js +0 -1
- package/dist/regenerator/utils.d.ts +0 -7
- package/dist/regenerator/utils.d.ts.map +0 -1
- package/dist/regenerator/utils.js +0 -87
- package/dist/registry-utils.d.ts +0 -106
- package/dist/registry-utils.d.ts.map +0 -1
- package/dist/registry-utils.js +0 -163
- package/dist/registry-utils.test.d.ts +0 -2
- package/dist/registry-utils.test.d.ts.map +0 -1
- package/dist/registry.d.ts +0 -28
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -215
- package/dist/resources.d.ts +0 -61
- package/dist/resources.d.ts.map +0 -1
- package/dist/resources.js +0 -83
- package/dist/schema-to-markdown.d.ts +0 -57
- package/dist/schema-to-markdown.d.ts.map +0 -1
- package/dist/schema-to-markdown.js +0 -278
- package/dist/serialization/index.d.ts +0 -11
- package/dist/serialization/index.d.ts.map +0 -1
- package/dist/serialization/index.js +0 -179
- package/dist/serialization/serializers.d.ts +0 -36
- package/dist/serialization/serializers.d.ts.map +0 -1
- package/dist/serialization/serializers.js +0 -180
- package/dist/serialization/types.d.ts +0 -101
- package/dist/serialization/types.d.ts.map +0 -1
- package/dist/serialization/types.js +0 -1
- package/dist/server/contracts-adapter-hydration.d.ts +0 -12
- package/dist/server/contracts-adapter-hydration.d.ts.map +0 -1
- package/dist/server/contracts-adapter-hydration.js +0 -71
- package/dist/server/contracts-adapter-input.d.ts +0 -6
- package/dist/server/contracts-adapter-input.d.ts.map +0 -1
- package/dist/server/contracts-adapter-input.js +0 -130
- package/dist/server/graphql-pothos.d.ts +0 -27
- package/dist/server/graphql-pothos.d.ts.map +0 -1
- package/dist/server/graphql-pothos.js +0 -338
- package/dist/server/index.d.ts +0 -8
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -1469
- package/dist/server/mcp/createMcpServer.d.ts +0 -11
- package/dist/server/mcp/createMcpServer.d.ts.map +0 -1
- package/dist/server/mcp/createMcpServer.js +0 -994
- package/dist/server/mcp/mcpTypes.d.ts +0 -23
- package/dist/server/mcp/mcpTypes.d.ts.map +0 -1
- package/dist/server/mcp/mcpTypes.js +0 -1
- package/dist/server/mcp/registerPresentations.d.ts +0 -4
- package/dist/server/mcp/registerPresentations.d.ts.map +0 -1
- package/dist/server/mcp/registerPresentations.js +0 -877
- package/dist/server/mcp/registerPrompts.d.ts +0 -5
- package/dist/server/mcp/registerPrompts.d.ts.map +0 -1
- package/dist/server/mcp/registerPrompts.js +0 -109
- package/dist/server/mcp/registerResources.d.ts +0 -5
- package/dist/server/mcp/registerResources.d.ts.map +0 -1
- package/dist/server/mcp/registerResources.js +0 -75
- package/dist/server/mcp/registerTools.d.ts +0 -5
- package/dist/server/mcp/registerTools.d.ts.map +0 -1
- package/dist/server/mcp/registerTools.js +0 -86
- package/dist/server/provider-mcp.d.ts +0 -2
- package/dist/server/provider-mcp.d.ts.map +0 -1
- package/dist/server/provider-mcp.js +0 -994
- package/dist/server/provider-mcp.test.d.ts +0 -2
- package/dist/server/provider-mcp.test.d.ts.map +0 -1
- package/dist/server/rest-elysia.d.ts +0 -37
- package/dist/server/rest-elysia.d.ts.map +0 -1
- package/dist/server/rest-elysia.js +0 -209
- package/dist/server/rest-express.d.ts +0 -12
- package/dist/server/rest-express.d.ts.map +0 -1
- package/dist/server/rest-express.js +0 -224
- package/dist/server/rest-generic.d.ts +0 -29
- package/dist/server/rest-generic.d.ts.map +0 -1
- package/dist/server/rest-generic.js +0 -192
- package/dist/server/rest-next-app.d.ts +0 -31
- package/dist/server/rest-next-app.d.ts.map +0 -1
- package/dist/server/rest-next-app.js +0 -200
- package/dist/server/rest-next-mcp.d.ts +0 -8
- package/dist/server/rest-next-mcp.d.ts.map +0 -1
- package/dist/server/rest-next-mcp.js +0 -103
- package/dist/server/rest-next-pages.d.ts +0 -6
- package/dist/server/rest-next-pages.d.ts.map +0 -1
- package/dist/server/rest-next-pages.js +0 -211
- package/dist/telemetry/anomaly.d.ts +0 -24
- package/dist/telemetry/anomaly.d.ts.map +0 -1
- package/dist/telemetry/anomaly.js +0 -91
- package/dist/telemetry/anomaly.test.d.ts +0 -2
- package/dist/telemetry/anomaly.test.d.ts.map +0 -1
- package/dist/telemetry/docs/telemetry.docblock.d.ts +0 -3
- package/dist/telemetry/docs/telemetry.docblock.d.ts.map +0 -1
- package/dist/telemetry/docs/telemetry.docblock.js +0 -164
- package/dist/telemetry/index.d.ts +0 -4
- package/dist/telemetry/index.d.ts.map +0 -1
- package/dist/telemetry/index.js +0 -417
- package/dist/telemetry/spec.d.ts +0 -88
- package/dist/telemetry/spec.d.ts.map +0 -1
- package/dist/telemetry/spec.js +0 -261
- package/dist/telemetry/spec.test.d.ts +0 -2
- package/dist/telemetry/spec.test.d.ts.map +0 -1
- package/dist/telemetry/tracker.d.ts +0 -49
- package/dist/telemetry/tracker.d.ts.map +0 -1
- package/dist/telemetry/tracker.js +0 -129
- package/dist/telemetry/tracker.test.d.ts +0 -2
- package/dist/telemetry/tracker.test.d.ts.map +0 -1
- package/dist/tests/index.d.ts +0 -3
- package/dist/tests/index.d.ts.map +0 -1
- package/dist/tests/index.js +0 -231
- package/dist/tests/runner.d.ts +0 -39
- package/dist/tests/runner.d.ts.map +0 -1
- package/dist/tests/runner.js +0 -189
- package/dist/tests/runner.test.d.ts +0 -2
- package/dist/tests/runner.test.d.ts.map +0 -1
- package/dist/tests/spec.d.ts +0 -83
- package/dist/tests/spec.d.ts.map +0 -1
- package/dist/tests/spec.js +0 -74
- package/dist/tests/spec.test.d.ts +0 -2
- package/dist/tests/spec.test.d.ts.map +0 -1
- package/dist/themes.d.ts +0 -51
- package/dist/themes.d.ts.map +0 -1
- package/dist/themes.js +0 -225
- package/dist/themes.test.d.ts +0 -2
- package/dist/themes.test.d.ts.map +0 -1
- package/dist/translations/catalog.d.ts +0 -26
- package/dist/translations/catalog.d.ts.map +0 -1
- package/dist/translations/catalog.js +0 -1
- package/dist/translations/index.d.ts +0 -45
- package/dist/translations/index.d.ts.map +0 -1
- package/dist/translations/index.js +0 -533
- package/dist/translations/registry.d.ts +0 -173
- package/dist/translations/registry.d.ts.map +0 -1
- package/dist/translations/registry.js +0 -170
- package/dist/translations/registry.test.d.ts +0 -2
- package/dist/translations/registry.test.d.ts.map +0 -1
- package/dist/translations/spec.d.ts +0 -154
- package/dist/translations/spec.d.ts.map +0 -1
- package/dist/translations/spec.js +0 -36
- package/dist/translations/spec.test.d.ts +0 -2
- package/dist/translations/spec.test.d.ts.map +0 -1
- package/dist/translations/tenant.d.ts +0 -12
- package/dist/translations/tenant.d.ts.map +0 -1
- package/dist/translations/tenant.js +0 -1
- package/dist/translations/validation.d.ts +0 -107
- package/dist/translations/validation.d.ts.map +0 -1
- package/dist/translations/validation.js +0 -392
- package/dist/translations/validation.test.d.ts +0 -2
- package/dist/translations/validation.test.d.ts.map +0 -1
- package/dist/types.d.ts +0 -213
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -1
- package/dist/versioning/index.d.ts +0 -10
- package/dist/versioning/index.d.ts.map +0 -1
- package/dist/versioning/index.js +0 -274
- package/dist/versioning/refs.d.ts +0 -177
- package/dist/versioning/refs.d.ts.map +0 -1
- package/dist/versioning/refs.js +0 -99
- package/dist/versioning/refs.test.d.ts +0 -5
- package/dist/versioning/refs.test.d.ts.map +0 -1
- package/dist/versioning/types.d.ts +0 -131
- package/dist/versioning/types.d.ts.map +0 -1
- package/dist/versioning/types.js +0 -55
- package/dist/versioning/utils.d.ts +0 -94
- package/dist/versioning/utils.d.ts.map +0 -1
- package/dist/versioning/utils.js +0 -184
- package/dist/versioning/utils.test.d.ts +0 -5
- package/dist/versioning/utils.test.d.ts.map +0 -1
- package/dist/workflow/adapters/db-adapter.d.ts +0 -44
- package/dist/workflow/adapters/db-adapter.d.ts.map +0 -1
- package/dist/workflow/adapters/db-adapter.js +0 -127
- package/dist/workflow/adapters/file-adapter.d.ts +0 -11
- package/dist/workflow/adapters/file-adapter.d.ts.map +0 -1
- package/dist/workflow/adapters/file-adapter.js +0 -38
- package/dist/workflow/adapters/index.d.ts +0 -4
- package/dist/workflow/adapters/index.d.ts.map +0 -1
- package/dist/workflow/adapters/index.js +0 -194
- package/dist/workflow/adapters/memory-store.d.ts +0 -14
- package/dist/workflow/adapters/memory-store.d.ts.map +0 -1
- package/dist/workflow/adapters/memory-store.js +0 -93
- package/dist/workflow/context.d.ts +0 -218
- package/dist/workflow/context.d.ts.map +0 -1
- package/dist/workflow/context.js +0 -247
- package/dist/workflow/context.test.d.ts +0 -2
- package/dist/workflow/context.test.d.ts.map +0 -1
- package/dist/workflow/expression.d.ts +0 -7
- package/dist/workflow/expression.d.ts.map +0 -1
- package/dist/workflow/expression.js +0 -157
- package/dist/workflow/expression.test.d.ts +0 -2
- package/dist/workflow/expression.test.d.ts.map +0 -1
- package/dist/workflow/index.d.ts +0 -14
- package/dist/workflow/index.d.ts.map +0 -1
- package/dist/workflow/index.js +0 -1546
- package/dist/workflow/overview.docblock.d.ts +0 -3
- package/dist/workflow/overview.docblock.d.ts.map +0 -1
- package/dist/workflow/overview.docblock.js +0 -164
- package/dist/workflow/runner.d.ts +0 -72
- package/dist/workflow/runner.d.ts.map +0 -1
- package/dist/workflow/runner.js +0 -532
- package/dist/workflow/runner.test.d.ts +0 -2
- package/dist/workflow/runner.test.d.ts.map +0 -1
- package/dist/workflow/sla-monitor.d.ts +0 -17
- package/dist/workflow/sla-monitor.d.ts.map +0 -1
- package/dist/workflow/sla-monitor.js +0 -84
- package/dist/workflow/spec.d.ts +0 -82
- package/dist/workflow/spec.d.ts.map +0 -1
- package/dist/workflow/spec.js +0 -221
- package/dist/workflow/state.d.ts +0 -32
- package/dist/workflow/state.d.ts.map +0 -1
- package/dist/workflow/state.js +0 -1
- package/dist/workflow/validation.d.ts +0 -88
- package/dist/workflow/validation.d.ts.map +0 -1
- package/dist/workflow/validation.js +0 -425
- package/dist/workflow/validation.test.d.ts +0 -2
- package/dist/workflow/validation.test.d.ts.map +0 -1
- package/dist/workspace-config/contractsrc-schema.d.ts +0 -145
- package/dist/workspace-config/contractsrc-schema.d.ts.map +0 -1
- package/dist/workspace-config/contractsrc-schema.js +0 -344
- package/dist/workspace-config/contractsrc-schema.test.d.ts +0 -2
- package/dist/workspace-config/contractsrc-schema.test.d.ts.map +0 -1
- package/dist/workspace-config/contractsrc-types.d.ts +0 -343
- package/dist/workspace-config/contractsrc-types.d.ts.map +0 -1
- package/dist/workspace-config/contractsrc-types.js +0 -1
- package/dist/workspace-config/index.d.ts +0 -6
- package/dist/workspace-config/index.d.ts.map +0 -1
- package/dist/workspace-config/index.js +0 -325
- package/dist/workspace-config/workspace-config.docblock.d.ts +0 -3
- package/dist/workspace-config/workspace-config.docblock.d.ts.map +0 -1
- package/dist/workspace-config/workspace-config.docblock.js +0 -188
|
@@ -1,3984 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
7
|
-
var __toCommonJS = (from) => {
|
|
8
|
-
var entry = __moduleCache.get(from), desc;
|
|
9
|
-
if (entry)
|
|
10
|
-
return entry;
|
|
11
|
-
entry = __defProp({}, "__esModule", { value: true });
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
13
|
-
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
14
|
-
get: () => from[key],
|
|
15
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
-
}));
|
|
17
|
-
__moduleCache.set(from, entry);
|
|
18
|
-
return entry;
|
|
19
|
-
};
|
|
20
|
-
var __export = (target, all) => {
|
|
21
|
-
for (var name in all)
|
|
22
|
-
__defProp(target, name, {
|
|
23
|
-
get: all[name],
|
|
24
|
-
enumerable: true,
|
|
25
|
-
configurable: true,
|
|
26
|
-
set: (newValue) => all[name] = () => newValue
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
30
|
-
var __require = import.meta.require;
|
|
31
|
-
|
|
32
|
-
// src/registry-utils.ts
|
|
33
|
-
var exports_registry_utils = {};
|
|
34
|
-
__export(exports_registry_utils, {
|
|
35
|
-
groupByToArray: () => groupByToArray,
|
|
36
|
-
groupByMultiple: () => groupByMultiple,
|
|
37
|
-
groupBy: () => groupBy,
|
|
38
|
-
getUniqueTags: () => getUniqueTags,
|
|
39
|
-
getUniqueOwners: () => getUniqueOwners,
|
|
40
|
-
getUniqueDomains: () => getUniqueDomains,
|
|
41
|
-
filterBy: () => filterBy,
|
|
42
|
-
GroupingStrategies: () => GroupingStrategies
|
|
43
|
-
});
|
|
44
|
-
function filterBy(items, filter) {
|
|
45
|
-
return items.filter((item) => {
|
|
46
|
-
if (filter.tags?.length) {
|
|
47
|
-
const hasMatchingTag = filter.tags.some((tag) => item.meta.tags?.includes(tag));
|
|
48
|
-
if (!hasMatchingTag)
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
if (filter.owners?.length) {
|
|
52
|
-
const hasMatchingOwner = filter.owners.some((owner) => item.meta.owners?.includes(owner));
|
|
53
|
-
if (!hasMatchingOwner)
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
if (filter.stability?.length) {
|
|
57
|
-
if (!filter.stability.includes(item.meta.stability ?? "stable")) {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (filter.domain) {
|
|
62
|
-
const itemDomain = GroupingStrategies.byDomain(item);
|
|
63
|
-
if (itemDomain !== filter.domain)
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
if (filter.keyPattern) {
|
|
67
|
-
const name = item.meta.key ?? item.meta.key ?? "";
|
|
68
|
-
const pattern = filter.keyPattern.replace(/\*/g, ".*").replace(/\?/g, ".");
|
|
69
|
-
const regex = new RegExp(`^${pattern}$`, "i");
|
|
70
|
-
if (!regex.test(name))
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
return true;
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
function groupBy(items, keyFn) {
|
|
77
|
-
const groups = new Map;
|
|
78
|
-
for (const item of items) {
|
|
79
|
-
const key = keyFn(item);
|
|
80
|
-
const existing = groups.get(key);
|
|
81
|
-
if (existing) {
|
|
82
|
-
existing.push(item);
|
|
83
|
-
} else {
|
|
84
|
-
groups.set(key, [item]);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return groups;
|
|
88
|
-
}
|
|
89
|
-
function groupByToArray(items, keyFn) {
|
|
90
|
-
const map = groupBy(items, keyFn);
|
|
91
|
-
return Array.from(map.entries()).map(([key, items2]) => ({ key, items: items2 }));
|
|
92
|
-
}
|
|
93
|
-
function groupByMultiple(items, keysFn) {
|
|
94
|
-
const groups = new Map;
|
|
95
|
-
for (const item of items) {
|
|
96
|
-
const keys = keysFn(item);
|
|
97
|
-
for (const key of keys) {
|
|
98
|
-
const existing = groups.get(key);
|
|
99
|
-
if (existing) {
|
|
100
|
-
existing.push(item);
|
|
101
|
-
} else {
|
|
102
|
-
groups.set(key, [item]);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return groups;
|
|
107
|
-
}
|
|
108
|
-
function getUniqueTags(items) {
|
|
109
|
-
const tags = new Set;
|
|
110
|
-
for (const item of items) {
|
|
111
|
-
for (const tag of item.meta.tags ?? []) {
|
|
112
|
-
tags.add(tag);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return Array.from(tags).sort();
|
|
116
|
-
}
|
|
117
|
-
function getUniqueOwners(items) {
|
|
118
|
-
const owners = new Set;
|
|
119
|
-
for (const item of items) {
|
|
120
|
-
for (const owner of item.meta.owners ?? []) {
|
|
121
|
-
owners.add(owner);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return Array.from(owners).sort();
|
|
125
|
-
}
|
|
126
|
-
function getUniqueDomains(items) {
|
|
127
|
-
const domains = new Set;
|
|
128
|
-
for (const item of items) {
|
|
129
|
-
domains.add(GroupingStrategies.byDomain(item));
|
|
130
|
-
}
|
|
131
|
-
return Array.from(domains).sort();
|
|
132
|
-
}
|
|
133
|
-
var GroupingStrategies;
|
|
134
|
-
var init_registry_utils = __esm(() => {
|
|
135
|
-
GroupingStrategies = {
|
|
136
|
-
byTag: (item) => item.meta.tags?.[0] ?? "untagged",
|
|
137
|
-
byAllTags: (item) => item.meta.tags?.length ? item.meta.tags : ["untagged"],
|
|
138
|
-
byOwner: (item) => item.meta.owners?.[0] ?? "unowned",
|
|
139
|
-
byDomain: (item) => {
|
|
140
|
-
const name = item.meta.key ?? item.meta.key ?? "";
|
|
141
|
-
return name.split(".")[0] ?? "default";
|
|
142
|
-
},
|
|
143
|
-
byStability: (item) => item.meta.stability ?? "stable",
|
|
144
|
-
byUrlPath: (level) => (item) => {
|
|
145
|
-
if (!item.path)
|
|
146
|
-
return "root";
|
|
147
|
-
const segments = item.path.split("/").filter(Boolean);
|
|
148
|
-
return segments.slice(0, level).join("/") || "root";
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
// src/ownership.ts
|
|
154
|
-
var StabilityEnum = {
|
|
155
|
-
Idea: "idea",
|
|
156
|
-
InCreation: "in_creation",
|
|
157
|
-
Experimental: "experimental",
|
|
158
|
-
Beta: "beta",
|
|
159
|
-
Stable: "stable",
|
|
160
|
-
Deprecated: "deprecated"
|
|
161
|
-
};
|
|
162
|
-
var OwnersEnum = {
|
|
163
|
-
PlatformCore: "platform.core",
|
|
164
|
-
PlatformSigil: "platform.sigil",
|
|
165
|
-
PlatformMarketplace: "platform.marketplace",
|
|
166
|
-
PlatformMessaging: "platform.messaging",
|
|
167
|
-
PlatformContent: "platform.content",
|
|
168
|
-
PlatformFeatureFlags: "platform.featureflags",
|
|
169
|
-
PlatformFinance: "platform.finance"
|
|
170
|
-
};
|
|
171
|
-
var Owners = OwnersEnum;
|
|
172
|
-
var TagsEnum = {
|
|
173
|
-
Spots: "spots",
|
|
174
|
-
Collectivity: "collectivity",
|
|
175
|
-
Marketplace: "marketplace",
|
|
176
|
-
Sellers: "sellers",
|
|
177
|
-
Auth: "auth",
|
|
178
|
-
Login: "login",
|
|
179
|
-
Signup: "signup",
|
|
180
|
-
Guide: "guide",
|
|
181
|
-
Docs: "docs",
|
|
182
|
-
I18n: "i18n",
|
|
183
|
-
Incident: "incident",
|
|
184
|
-
Automation: "automation",
|
|
185
|
-
Hygiene: "hygiene"
|
|
186
|
-
};
|
|
187
|
-
var Tags = TagsEnum;
|
|
188
|
-
|
|
189
|
-
// src/operations/operation.ts
|
|
190
|
-
var isEmitDeclRef = (e) => ("ref" in e);
|
|
191
|
-
var defineCommand = (spec) => ({
|
|
192
|
-
...spec,
|
|
193
|
-
meta: { ...spec.meta, kind: "command" },
|
|
194
|
-
policy: {
|
|
195
|
-
...spec.policy,
|
|
196
|
-
idempotent: spec.policy?.["policy"]?.idempotent ?? false
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
var defineQuery = (spec) => ({
|
|
200
|
-
...spec,
|
|
201
|
-
meta: { ...spec.meta, kind: "query" },
|
|
202
|
-
policy: { ...spec.policy, idempotent: true }
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
// src/registry.ts
|
|
206
|
-
init_registry_utils();
|
|
207
|
-
import { compareVersions } from "compare-versions";
|
|
208
|
-
var keyOfSpecContract = (spec) => `${spec.meta.key}.v${spec.meta.version}`;
|
|
209
|
-
|
|
210
|
-
class SpecContractRegistry {
|
|
211
|
-
contractType;
|
|
212
|
-
items = new Map;
|
|
213
|
-
constructor(contractType, items) {
|
|
214
|
-
this.contractType = contractType;
|
|
215
|
-
if (items) {
|
|
216
|
-
items.forEach((p) => this.register(p));
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
register(p) {
|
|
220
|
-
const key = keyOfSpecContract(p);
|
|
221
|
-
if (this.items.has(key))
|
|
222
|
-
throw new Error(`Duplicate contract \`${this.contractType}\` ${key}`);
|
|
223
|
-
this.items.set(key, p);
|
|
224
|
-
return this;
|
|
225
|
-
}
|
|
226
|
-
count() {
|
|
227
|
-
return this.items.size;
|
|
228
|
-
}
|
|
229
|
-
list() {
|
|
230
|
-
return [...this.items.values()];
|
|
231
|
-
}
|
|
232
|
-
get(key, version) {
|
|
233
|
-
if (version != null)
|
|
234
|
-
return this.items.get(`${key}.v${version}`);
|
|
235
|
-
let candidate;
|
|
236
|
-
for (const [k, p] of this.items.entries()) {
|
|
237
|
-
if (!k.startsWith(`${key}.v`))
|
|
238
|
-
continue;
|
|
239
|
-
if (!candidate || compareVersions(p.meta.version, candidate.meta.version) > 0) {
|
|
240
|
-
candidate = p;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
return candidate;
|
|
244
|
-
}
|
|
245
|
-
has(key, version) {
|
|
246
|
-
return !!this.get(key, version);
|
|
247
|
-
}
|
|
248
|
-
filter(criteria) {
|
|
249
|
-
return filterBy(this.list(), criteria);
|
|
250
|
-
}
|
|
251
|
-
listByTag(tag) {
|
|
252
|
-
return this.list().filter((p) => p.meta.tags?.includes(tag));
|
|
253
|
-
}
|
|
254
|
-
listByOwner(owner) {
|
|
255
|
-
return this.list().filter((p) => p.meta.owners?.includes(owner));
|
|
256
|
-
}
|
|
257
|
-
groupBy(keyFn) {
|
|
258
|
-
return groupBy(this.list(), keyFn);
|
|
259
|
-
}
|
|
260
|
-
getUniqueTags() {
|
|
261
|
-
return getUniqueTags(this.list());
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
// src/events.ts
|
|
266
|
-
function defineEvent(e) {
|
|
267
|
-
return e;
|
|
268
|
-
}
|
|
269
|
-
var eventKey = (key, version) => `${key}.v${version}`;
|
|
270
|
-
|
|
271
|
-
class EventRegistry extends SpecContractRegistry {
|
|
272
|
-
constructor(items) {
|
|
273
|
-
super("event", items);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
// src/operations/registry.ts
|
|
278
|
-
function opKey(key, version) {
|
|
279
|
-
return `${key}.v${version}`;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
class OperationSpecRegistry extends SpecContractRegistry {
|
|
283
|
-
handlers = new Map;
|
|
284
|
-
constructor(items) {
|
|
285
|
-
super("operation", items);
|
|
286
|
-
}
|
|
287
|
-
bind(spec, handler) {
|
|
288
|
-
const key = opKey(spec.meta.key, spec.meta.version);
|
|
289
|
-
if (!this.items.has(key))
|
|
290
|
-
throw new Error(`Cannot bind; spec not found: ${key}`);
|
|
291
|
-
if (this.handlers.has(key))
|
|
292
|
-
throw new Error(`Handler already bound for ${key}`);
|
|
293
|
-
this.handlers.set(key, handler);
|
|
294
|
-
return this;
|
|
295
|
-
}
|
|
296
|
-
getHandler(key, version) {
|
|
297
|
-
const spec = this.get(key, version);
|
|
298
|
-
if (!spec)
|
|
299
|
-
return;
|
|
300
|
-
return this.handlers.get(opKey(spec.meta.key, spec.meta.version));
|
|
301
|
-
}
|
|
302
|
-
listBound() {
|
|
303
|
-
const out = [];
|
|
304
|
-
for (const [k, spec] of this.items.entries()) {
|
|
305
|
-
const h = this.handlers.get(k);
|
|
306
|
-
if (h)
|
|
307
|
-
out.push({ spec, handler: h });
|
|
308
|
-
}
|
|
309
|
-
return out;
|
|
310
|
-
}
|
|
311
|
-
async execute(key, version, rawInput, ctx) {
|
|
312
|
-
const baseSpec = this.get(key, version);
|
|
313
|
-
if (!baseSpec)
|
|
314
|
-
throw new Error(`Spec not found for ${key}${version ? `.v${version}` : ""}`);
|
|
315
|
-
const spec = await ctx.specVariantResolver?.resolve({
|
|
316
|
-
name: baseSpec.meta.key,
|
|
317
|
-
version: baseSpec.meta.version,
|
|
318
|
-
kind: baseSpec.meta.kind
|
|
319
|
-
}, ctx) ?? baseSpec;
|
|
320
|
-
let handlerKey = opKey(spec.meta.key, spec.meta.version);
|
|
321
|
-
let handler = this.handlers.get(handlerKey);
|
|
322
|
-
if (!handler) {
|
|
323
|
-
const fallbackKey = opKey(baseSpec.meta.key, baseSpec.meta.version);
|
|
324
|
-
handler = this.handlers.get(fallbackKey);
|
|
325
|
-
handlerKey = fallbackKey;
|
|
326
|
-
}
|
|
327
|
-
if (!handler)
|
|
328
|
-
throw new Error(`No handler bound for ${handlerKey}`);
|
|
329
|
-
const parsedInput = spec.io.input?.getZod().parse(rawInput);
|
|
330
|
-
if (ctx.decide) {
|
|
331
|
-
const [service, command] = spec.meta.key.split(".");
|
|
332
|
-
if (!service || !command)
|
|
333
|
-
throw new Error(`Invalid spec name: ${spec.meta.key}`);
|
|
334
|
-
const decision = await ctx.decide({
|
|
335
|
-
service,
|
|
336
|
-
command,
|
|
337
|
-
version: spec.meta.version,
|
|
338
|
-
actor: ctx.actor ?? "anonymous",
|
|
339
|
-
channel: ctx.channel,
|
|
340
|
-
roles: ctx.roles,
|
|
341
|
-
organizationId: ctx.organizationId,
|
|
342
|
-
userId: ctx.userId,
|
|
343
|
-
flags: []
|
|
344
|
-
});
|
|
345
|
-
if (decision.effect === "deny") {
|
|
346
|
-
throw new Error(`PolicyDenied: ${spec.meta.key}.v${spec.meta.version}`);
|
|
347
|
-
}
|
|
348
|
-
if (decision.rateLimit && ctx.rateLimit) {
|
|
349
|
-
const key2 = decision.rateLimit.key ?? "default";
|
|
350
|
-
const rpm = decision.rateLimit.rpm ?? 60;
|
|
351
|
-
await ctx.rateLimit(key2, 1, rpm);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
const allowedEvents = new Map;
|
|
355
|
-
if (spec.sideEffects?.emits) {
|
|
356
|
-
for (const e of spec.sideEffects.emits) {
|
|
357
|
-
if (isEmitDeclRef(e)) {
|
|
358
|
-
const eventSpec = ctx.eventSpecResolver?.get(e.ref.key, e.ref.version);
|
|
359
|
-
if (eventSpec) {
|
|
360
|
-
allowedEvents.set(`${e.ref.key}.v${e.ref.version}`, eventSpec.payload);
|
|
361
|
-
}
|
|
362
|
-
} else {
|
|
363
|
-
allowedEvents.set(`${e.key}.v${e.version}`, e.payload);
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
const emitGuard = async (eventName, eventVersion, payload) => {
|
|
368
|
-
const key2 = eventKey(eventName, eventVersion);
|
|
369
|
-
const schema = allowedEvents.get(key2);
|
|
370
|
-
if (!schema)
|
|
371
|
-
throw new Error(`UndeclaredEvent: ${key2} not allowed by ${opKey(spec.meta.key, spec.meta.version)}`);
|
|
372
|
-
const parsed = schema.getZod().parse(payload);
|
|
373
|
-
await ctx.eventPublisher?.({
|
|
374
|
-
key: eventName,
|
|
375
|
-
version: eventVersion,
|
|
376
|
-
payload: parsed,
|
|
377
|
-
traceId: ctx.traceId
|
|
378
|
-
});
|
|
379
|
-
};
|
|
380
|
-
if (ctx.appConfig) {
|
|
381
|
-
if (!ctx.branding) {
|
|
382
|
-
ctx.branding = ctx.appConfig.branding;
|
|
383
|
-
}
|
|
384
|
-
if (!ctx.translation) {
|
|
385
|
-
ctx.translation = { config: ctx.appConfig.translation };
|
|
386
|
-
} else if (!ctx.translation.config) {
|
|
387
|
-
ctx.translation = {
|
|
388
|
-
...ctx.translation,
|
|
389
|
-
config: ctx.appConfig.translation
|
|
390
|
-
};
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
const telemetryContext = ctx.telemetry;
|
|
394
|
-
const trackTelemetry = async (trigger, details) => {
|
|
395
|
-
if (!telemetryContext || !trigger?.event)
|
|
396
|
-
return;
|
|
397
|
-
try {
|
|
398
|
-
const props = trigger.properties?.(details) ?? {};
|
|
399
|
-
await telemetryContext.track(trigger.event.key, trigger.event.version ?? "1.0.0", props, {
|
|
400
|
-
tenantId: ctx.organizationId ?? undefined,
|
|
401
|
-
organizationId: ctx.organizationId,
|
|
402
|
-
userId: ctx.userId,
|
|
403
|
-
actor: ctx.actor,
|
|
404
|
-
channel: ctx.channel,
|
|
405
|
-
metadata: ctx.traceId ? { traceId: ctx.traceId } : undefined
|
|
406
|
-
});
|
|
407
|
-
} catch (_error) {}
|
|
408
|
-
};
|
|
409
|
-
let result;
|
|
410
|
-
try {
|
|
411
|
-
result = await handler(parsedInput, {
|
|
412
|
-
...ctx,
|
|
413
|
-
__emitGuard__: emitGuard
|
|
414
|
-
});
|
|
415
|
-
} catch (error) {
|
|
416
|
-
if (spec.telemetry?.failure) {
|
|
417
|
-
await trackTelemetry(spec.telemetry.failure, {
|
|
418
|
-
input: parsedInput ?? rawInput,
|
|
419
|
-
error
|
|
420
|
-
});
|
|
421
|
-
}
|
|
422
|
-
throw error;
|
|
423
|
-
}
|
|
424
|
-
if (spec.telemetry?.success) {
|
|
425
|
-
await trackTelemetry(spec.telemetry.success, {
|
|
426
|
-
input: parsedInput ?? rawInput,
|
|
427
|
-
output: result
|
|
428
|
-
});
|
|
429
|
-
}
|
|
430
|
-
const outputModel = spec.io.output;
|
|
431
|
-
if (outputModel?.getZod) {
|
|
432
|
-
const parsedOutput = outputModel.getZod().parse(result);
|
|
433
|
-
return parsedOutput;
|
|
434
|
-
}
|
|
435
|
-
return result;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
// src/operations/report/getContractVerificationStatus.ts
|
|
440
|
-
import {
|
|
441
|
-
ScalarTypeEnum,
|
|
442
|
-
SchemaModel,
|
|
443
|
-
ZodSchemaType
|
|
444
|
-
} from "@contractspec/lib.schema";
|
|
445
|
-
import * as z from "zod";
|
|
446
|
-
var REPORT_DOMAIN = "report";
|
|
447
|
-
var REPORT_OWNERS = ["platform.core"];
|
|
448
|
-
var REPORT_TAGS = ["report", "drift", "verification"];
|
|
449
|
-
var REPORT_STABILITY = StabilityEnum.Experimental;
|
|
450
|
-
var ContractVerificationStatusModel = new SchemaModel({
|
|
451
|
-
name: "ContractVerificationStatus",
|
|
452
|
-
fields: {
|
|
453
|
-
name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
454
|
-
lastVerifiedSha: {
|
|
455
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
456
|
-
isOptional: true
|
|
457
|
-
},
|
|
458
|
-
lastVerifiedDate: {
|
|
459
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
460
|
-
isOptional: true
|
|
461
|
-
},
|
|
462
|
-
surfaces: {
|
|
463
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
464
|
-
isOptional: false,
|
|
465
|
-
isArray: true
|
|
466
|
-
},
|
|
467
|
-
driftMismatches: {
|
|
468
|
-
type: ScalarTypeEnum.Int_unsecure(),
|
|
469
|
-
isOptional: false
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
});
|
|
473
|
-
var GetContractVerificationStatusInput = new SchemaModel({
|
|
474
|
-
name: "GetContractVerificationStatusInput",
|
|
475
|
-
fields: {
|
|
476
|
-
projectPath: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
477
|
-
baseline: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
|
|
478
|
-
}
|
|
479
|
-
});
|
|
480
|
-
var GetContractVerificationStatusOutput = new ZodSchemaType(z.object({
|
|
481
|
-
contracts: z.object({
|
|
482
|
-
name: z.string(),
|
|
483
|
-
lastVerifiedSha: z.string().optional(),
|
|
484
|
-
lastVerifiedDate: z.string().optional(),
|
|
485
|
-
surfaces: z.string().array(),
|
|
486
|
-
driftMismatches: z.int()
|
|
487
|
-
}).array()
|
|
488
|
-
}), {
|
|
489
|
-
name: "GetContractVerificationStatusOutput"
|
|
490
|
-
});
|
|
491
|
-
var GetContractVerificationStatusQuery = defineQuery({
|
|
492
|
-
meta: {
|
|
493
|
-
key: "report.getContractVerificationStatus",
|
|
494
|
-
title: "Get Contract Verification Status",
|
|
495
|
-
version: "1.0.0",
|
|
496
|
-
description: "Retrieves per-contract verification status for the impact report.",
|
|
497
|
-
goal: "Enable stakeholders to see contract health at a glance.",
|
|
498
|
-
context: "Part of the impact report domain. Reads from drift check outputs and verified.json to provide a consolidated view of each contract's drift debt and surface coverage.",
|
|
499
|
-
domain: REPORT_DOMAIN,
|
|
500
|
-
owners: REPORT_OWNERS,
|
|
501
|
-
tags: REPORT_TAGS,
|
|
502
|
-
stability: REPORT_STABILITY
|
|
503
|
-
},
|
|
504
|
-
io: {
|
|
505
|
-
input: GetContractVerificationStatusInput,
|
|
506
|
-
output: GetContractVerificationStatusOutput,
|
|
507
|
-
errors: {
|
|
508
|
-
PROJECT_NOT_FOUND: {
|
|
509
|
-
description: "Project path does not exist.",
|
|
510
|
-
http: 404,
|
|
511
|
-
when: "The provided projectPath does not resolve to a valid directory."
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
},
|
|
515
|
-
policy: {
|
|
516
|
-
auth: "anonymous",
|
|
517
|
-
pii: []
|
|
518
|
-
}
|
|
519
|
-
});
|
|
520
|
-
|
|
521
|
-
// src/install.ts
|
|
522
|
-
function makeEmit(_spec, ctx) {
|
|
523
|
-
return {
|
|
524
|
-
ref: async (ev, payload) => {
|
|
525
|
-
await ctx.__emitGuard__?.(ev.meta.key, ev.meta.version, payload);
|
|
526
|
-
},
|
|
527
|
-
key: async (key, version, payload) => {
|
|
528
|
-
await ctx.__emitGuard__?.(key, version, payload);
|
|
529
|
-
},
|
|
530
|
-
object: async (evt) => {
|
|
531
|
-
await ctx.__emitGuard__?.(evt.key, evt.version, evt.payload);
|
|
532
|
-
}
|
|
533
|
-
};
|
|
534
|
-
}
|
|
535
|
-
function installOp(reg, spec, handler) {
|
|
536
|
-
return reg.register(spec).bind(spec, handler);
|
|
537
|
-
}
|
|
538
|
-
function op(spec, handler) {
|
|
539
|
-
return {
|
|
540
|
-
spec,
|
|
541
|
-
handler,
|
|
542
|
-
install: (reg) => installOp(reg, spec, handler)
|
|
543
|
-
};
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
// src/data-views/spec.ts
|
|
547
|
-
function defineDataView(spec) {
|
|
548
|
-
return spec;
|
|
549
|
-
}
|
|
550
|
-
|
|
551
|
-
// src/data-views/report/contractVerificationTable.ts
|
|
552
|
-
var ContractVerificationTableDataView = defineDataView({
|
|
553
|
-
meta: {
|
|
554
|
-
key: "report.contractVerificationTable",
|
|
555
|
-
title: "Contract Verification Table",
|
|
556
|
-
version: "1.0.0",
|
|
557
|
-
description: "Table view of per-contract verification status for the impact report.",
|
|
558
|
-
domain: "report",
|
|
559
|
-
owners: ["platform.core"],
|
|
560
|
-
tags: ["report", "data-view", "verification"],
|
|
561
|
-
stability: StabilityEnum.Experimental,
|
|
562
|
-
entity: "contract-verification"
|
|
563
|
-
},
|
|
564
|
-
source: {
|
|
565
|
-
primary: {
|
|
566
|
-
key: GetContractVerificationStatusQuery.meta.key,
|
|
567
|
-
version: GetContractVerificationStatusQuery.meta.version
|
|
568
|
-
}
|
|
569
|
-
},
|
|
570
|
-
view: {
|
|
571
|
-
kind: "table",
|
|
572
|
-
fields: [
|
|
573
|
-
{
|
|
574
|
-
key: "name",
|
|
575
|
-
label: "Contract / Endpoint / Event",
|
|
576
|
-
dataPath: "name"
|
|
577
|
-
},
|
|
578
|
-
{
|
|
579
|
-
key: "timeSinceVerified",
|
|
580
|
-
label: "Time since verified",
|
|
581
|
-
dataPath: "lastVerifiedDate"
|
|
582
|
-
},
|
|
583
|
-
{
|
|
584
|
-
key: "driftMismatches",
|
|
585
|
-
label: "Drift debt",
|
|
586
|
-
dataPath: "driftMismatches",
|
|
587
|
-
format: "number",
|
|
588
|
-
sortable: true
|
|
589
|
-
},
|
|
590
|
-
{
|
|
591
|
-
key: "surfaces",
|
|
592
|
-
label: "Surfaces covered",
|
|
593
|
-
dataPath: "surfaces",
|
|
594
|
-
format: "badge"
|
|
595
|
-
},
|
|
596
|
-
{
|
|
597
|
-
key: "lastVerifiedSha",
|
|
598
|
-
label: "Last verified commit",
|
|
599
|
-
dataPath: "lastVerifiedSha",
|
|
600
|
-
width: "sm"
|
|
601
|
-
}
|
|
602
|
-
],
|
|
603
|
-
primaryField: "name",
|
|
604
|
-
secondaryFields: ["driftMismatches", "timeSinceVerified"],
|
|
605
|
-
columns: [
|
|
606
|
-
{ field: "name", width: "lg" },
|
|
607
|
-
{ field: "lastVerifiedSha", width: "sm" },
|
|
608
|
-
{ field: "timeSinceVerified", width: "sm" },
|
|
609
|
-
{ field: "surfaces", width: "md" },
|
|
610
|
-
{ field: "driftMismatches", width: "xs", align: "right" }
|
|
611
|
-
]
|
|
612
|
-
},
|
|
613
|
-
policy: {
|
|
614
|
-
flags: [],
|
|
615
|
-
pii: []
|
|
616
|
-
}
|
|
617
|
-
});
|
|
618
|
-
|
|
619
|
-
// src/operations/report/index.ts
|
|
620
|
-
var getContractVerificationStatusHandler = async (input, _ctx) => {
|
|
621
|
-
try {
|
|
622
|
-
const cmdProcess = Bun.spawn(["contractspec", "impl", "status", "--format", "json", "--all"], {
|
|
623
|
-
cwd: input.projectPath
|
|
624
|
-
});
|
|
625
|
-
const cmdStdout = await cmdProcess.stdout;
|
|
626
|
-
const output = await Bun.readableStreamToText(cmdStdout);
|
|
627
|
-
if (!output) {
|
|
628
|
-
return { contracts: [] };
|
|
629
|
-
}
|
|
630
|
-
const cliOutput = JSON.parse(output);
|
|
631
|
-
const contracts = [];
|
|
632
|
-
for (const spec of cliOutput.results || []) {
|
|
633
|
-
const contract = {
|
|
634
|
-
name: spec.specKey,
|
|
635
|
-
lastVerifiedSha: spec.specHash,
|
|
636
|
-
lastVerifiedDate: spec.specHash ? new Date().toISOString() : undefined,
|
|
637
|
-
surfaces: spec.implementations.filter((impl) => impl.exists).map((impl) => impl.type),
|
|
638
|
-
driftMismatches: spec.implementations.filter((impl) => !impl.exists).length
|
|
639
|
-
};
|
|
640
|
-
contracts.push(contract);
|
|
641
|
-
}
|
|
642
|
-
return { contracts };
|
|
643
|
-
} catch (error) {
|
|
644
|
-
console.error("Failed to get contract verification status:", error);
|
|
645
|
-
return { contracts: [] };
|
|
646
|
-
}
|
|
647
|
-
};
|
|
648
|
-
function registerReportContracts(registry) {
|
|
649
|
-
installOp(registry, GetContractVerificationStatusQuery, getContractVerificationStatusHandler);
|
|
650
|
-
return registry;
|
|
651
|
-
}
|
|
652
|
-
// src/features/registry.ts
|
|
653
|
-
init_registry_utils();
|
|
654
|
-
function keyOf(f) {
|
|
655
|
-
return f.meta.key;
|
|
656
|
-
}
|
|
657
|
-
|
|
658
|
-
class FeatureRegistry {
|
|
659
|
-
items = new Map;
|
|
660
|
-
register(f) {
|
|
661
|
-
const key = keyOf(f);
|
|
662
|
-
if (this.items.has(key))
|
|
663
|
-
throw new Error(`Duplicate feature ${key}`);
|
|
664
|
-
this.items.set(key, f);
|
|
665
|
-
return this;
|
|
666
|
-
}
|
|
667
|
-
list() {
|
|
668
|
-
return [...this.items.values()];
|
|
669
|
-
}
|
|
670
|
-
get(key) {
|
|
671
|
-
return this.items.get(key);
|
|
672
|
-
}
|
|
673
|
-
filter(criteria) {
|
|
674
|
-
return filterBy(this.list(), criteria);
|
|
675
|
-
}
|
|
676
|
-
listByTag(tag) {
|
|
677
|
-
return this.list().filter((f) => f.meta.tags?.includes(tag));
|
|
678
|
-
}
|
|
679
|
-
listByOwner(owner) {
|
|
680
|
-
return this.list().filter((f) => f.meta.owners?.includes(owner));
|
|
681
|
-
}
|
|
682
|
-
groupBy(keyFn) {
|
|
683
|
-
return groupBy(this.list(), keyFn);
|
|
684
|
-
}
|
|
685
|
-
getUniqueTags() {
|
|
686
|
-
return getUniqueTags(this.list());
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
|
-
|
|
690
|
-
// src/features/install.ts
|
|
691
|
-
function installFeature(feature, deps) {
|
|
692
|
-
if (deps.ops && feature.operations) {
|
|
693
|
-
for (const o of feature.operations) {
|
|
694
|
-
const s = deps.ops.get(o.key, o.version);
|
|
695
|
-
if (!s)
|
|
696
|
-
throw new Error(`installFeature: operation not found ${o.key}.v${o.version}`);
|
|
697
|
-
}
|
|
698
|
-
}
|
|
699
|
-
if (deps.presentations && feature.presentations) {
|
|
700
|
-
for (const p of feature.presentations) {
|
|
701
|
-
const pres = deps.presentations.get(p.key, p.version);
|
|
702
|
-
if (!pres)
|
|
703
|
-
throw new Error(`installFeature: presentation not found ${p.key}.v${p.version}`);
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
if (feature.presentationsTargets && deps.descriptors) {
|
|
707
|
-
for (const req of feature.presentationsTargets) {
|
|
708
|
-
const d = deps.descriptors.find((x) => x.meta.key === req.key && x.meta.version === req.version);
|
|
709
|
-
if (!d)
|
|
710
|
-
throw new Error(`installFeature: V2 descriptor not found ${req.key}.v${req.version}`);
|
|
711
|
-
for (const t of req.targets) {
|
|
712
|
-
if (!d.targets.includes(t))
|
|
713
|
-
throw new Error(`installFeature: descriptor ${req.key}.v${req.version} missing target ${t}`);
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
}
|
|
717
|
-
if (feature.opToPresentation && feature.opToPresentation.length > 0) {
|
|
718
|
-
for (const link of feature.opToPresentation) {
|
|
719
|
-
if (deps.ops) {
|
|
720
|
-
const s = deps.ops.get(link.op.key, link.op.version);
|
|
721
|
-
if (!s)
|
|
722
|
-
throw new Error(`installFeature: linked op not found ${link.op.key}.v${link.op.version}`);
|
|
723
|
-
}
|
|
724
|
-
if (deps.presentations) {
|
|
725
|
-
const pres = deps.presentations.get(link.pres.key, link.pres.version);
|
|
726
|
-
if (!pres)
|
|
727
|
-
throw new Error(`installFeature: linked presentation not found ${link.pres.key}.v${link.pres.version}`);
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
}
|
|
731
|
-
if (deps.capabilities && feature.capabilities?.provides) {
|
|
732
|
-
for (const cap of feature.capabilities.provides) {
|
|
733
|
-
const spec = deps.capabilities.get(cap.key, cap.version);
|
|
734
|
-
if (!spec)
|
|
735
|
-
throw new Error(`installFeature: capability not registered ${cap.key}.v${cap.version}`);
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
if (feature.capabilities?.requires?.length) {
|
|
739
|
-
if (!deps.capabilities)
|
|
740
|
-
throw new Error(`installFeature: capability registry required to validate capability requirements for ${feature.meta.key}`);
|
|
741
|
-
const provided = feature.capabilities.provides ?? [];
|
|
742
|
-
for (const req of feature.capabilities.requires) {
|
|
743
|
-
const satisfied = deps.capabilities.satisfies(req, provided);
|
|
744
|
-
if (!satisfied)
|
|
745
|
-
throw new Error(`installFeature: capability requirement not satisfied ${req.key}${req.version ? `.v${req.version}` : ""}`);
|
|
746
|
-
}
|
|
747
|
-
}
|
|
748
|
-
deps.features.register(feature);
|
|
749
|
-
return deps.features;
|
|
750
|
-
}
|
|
751
|
-
|
|
752
|
-
// src/features/validation.ts
|
|
753
|
-
function validateFeatureTargetsV2(feature, descriptors) {
|
|
754
|
-
if (!feature.presentationsTargets || feature.presentationsTargets.length === 0)
|
|
755
|
-
return true;
|
|
756
|
-
for (const req of feature.presentationsTargets) {
|
|
757
|
-
const d = descriptors.find((x) => x.meta.key === req.key && x.meta.version === req.version);
|
|
758
|
-
if (!d)
|
|
759
|
-
throw new Error(`V2 descriptor not found ${req.key}.v${req.version}`);
|
|
760
|
-
for (const t of req.targets)
|
|
761
|
-
if (!d.targets.includes(t))
|
|
762
|
-
throw new Error(`Descriptor ${req.key}.v${req.version} missing target ${t}`);
|
|
763
|
-
}
|
|
764
|
-
return true;
|
|
765
|
-
}
|
|
766
|
-
|
|
767
|
-
// src/features/index.ts
|
|
768
|
-
var defineFeature = (spec) => spec;
|
|
769
|
-
|
|
770
|
-
// src/integrations/spec.ts
|
|
771
|
-
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
772
|
-
|
|
773
|
-
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
774
|
-
constructor(items) {
|
|
775
|
-
super("integration", items);
|
|
776
|
-
}
|
|
777
|
-
getByCategory(category) {
|
|
778
|
-
return this.list().filter((spec) => spec.meta.category === category);
|
|
779
|
-
}
|
|
780
|
-
}
|
|
781
|
-
function makeIntegrationSpecKey(meta) {
|
|
782
|
-
return integrationKey(meta);
|
|
783
|
-
}
|
|
784
|
-
var defineIntegration = (spec) => spec;
|
|
785
|
-
// src/integrations/providers/stripe.ts
|
|
786
|
-
var stripeIntegrationSpec = defineIntegration({
|
|
787
|
-
meta: {
|
|
788
|
-
key: "payments.stripe",
|
|
789
|
-
version: "1.0.0",
|
|
790
|
-
category: "payments",
|
|
791
|
-
title: "Stripe Payments",
|
|
792
|
-
description: "Stripe integration for payment processing, charges, and payouts.",
|
|
793
|
-
domain: "payments",
|
|
794
|
-
owners: ["platform.payments"],
|
|
795
|
-
tags: ["payments", "psp"],
|
|
796
|
-
stability: StabilityEnum.Stable
|
|
797
|
-
},
|
|
798
|
-
supportedModes: ["managed", "byok"],
|
|
799
|
-
capabilities: {
|
|
800
|
-
provides: [{ key: "payments.psp", version: "1.0.0" }],
|
|
801
|
-
requires: [
|
|
802
|
-
{
|
|
803
|
-
key: "platform.webhooks",
|
|
804
|
-
optional: true,
|
|
805
|
-
reason: "Recommended for reliable event ingestion"
|
|
806
|
-
}
|
|
807
|
-
]
|
|
808
|
-
},
|
|
809
|
-
configSchema: {
|
|
810
|
-
schema: {
|
|
811
|
-
type: "object",
|
|
812
|
-
properties: {
|
|
813
|
-
accountId: {
|
|
814
|
-
type: "string",
|
|
815
|
-
description: "Connected account ID when using Stripe Connect (BYOK)."
|
|
816
|
-
},
|
|
817
|
-
region: {
|
|
818
|
-
type: "string",
|
|
819
|
-
description: "Optional Stripe region or data residency hint."
|
|
820
|
-
}
|
|
821
|
-
}
|
|
822
|
-
},
|
|
823
|
-
example: {
|
|
824
|
-
accountId: "acct_123",
|
|
825
|
-
region: "us-east-1"
|
|
826
|
-
}
|
|
827
|
-
},
|
|
828
|
-
secretSchema: {
|
|
829
|
-
schema: {
|
|
830
|
-
type: "object",
|
|
831
|
-
required: ["apiKey", "webhookSecret"],
|
|
832
|
-
properties: {
|
|
833
|
-
apiKey: {
|
|
834
|
-
type: "string",
|
|
835
|
-
description: "Stripe secret API key (sk_live_... or sk_test_...)."
|
|
836
|
-
},
|
|
837
|
-
webhookSecret: {
|
|
838
|
-
type: "string",
|
|
839
|
-
description: "Signing secret for webhook verification."
|
|
840
|
-
}
|
|
841
|
-
}
|
|
842
|
-
},
|
|
843
|
-
example: {
|
|
844
|
-
apiKey: "sk_live_***",
|
|
845
|
-
webhookSecret: "whsec_***"
|
|
846
|
-
}
|
|
847
|
-
},
|
|
848
|
-
healthCheck: {
|
|
849
|
-
method: "ping",
|
|
850
|
-
timeoutMs: 5000
|
|
851
|
-
},
|
|
852
|
-
docsUrl: "https://stripe.com/docs/api",
|
|
853
|
-
constraints: {
|
|
854
|
-
rateLimit: {
|
|
855
|
-
rpm: 1000,
|
|
856
|
-
rph: 20000
|
|
857
|
-
}
|
|
858
|
-
},
|
|
859
|
-
byokSetup: {
|
|
860
|
-
setupInstructions: "Create a restricted Stripe API key with write access to Charges and provide a webhook signing secret.",
|
|
861
|
-
requiredScopes: ["charges:write", "customers:read"]
|
|
862
|
-
}
|
|
863
|
-
});
|
|
864
|
-
function registerStripeIntegration(registry2) {
|
|
865
|
-
return registry2.register(stripeIntegrationSpec);
|
|
866
|
-
}
|
|
867
|
-
|
|
868
|
-
// src/integrations/providers/postmark.ts
|
|
869
|
-
var postmarkIntegrationSpec = defineIntegration({
|
|
870
|
-
meta: {
|
|
871
|
-
key: "email.postmark",
|
|
872
|
-
version: "1.0.0",
|
|
873
|
-
category: "email",
|
|
874
|
-
title: "Postmark Transactional Email",
|
|
875
|
-
description: "Postmark integration for transactional email delivery.",
|
|
876
|
-
domain: "communications",
|
|
877
|
-
owners: ["platform.messaging"],
|
|
878
|
-
tags: ["email", "transactional"],
|
|
879
|
-
stability: StabilityEnum.Stable
|
|
880
|
-
},
|
|
881
|
-
supportedModes: ["managed", "byok"],
|
|
882
|
-
capabilities: {
|
|
883
|
-
provides: [{ key: "email.transactional", version: "1.0.0" }],
|
|
884
|
-
requires: [
|
|
885
|
-
{
|
|
886
|
-
key: "platform.webhooks",
|
|
887
|
-
optional: true,
|
|
888
|
-
reason: "Optional for inbound bounce handling"
|
|
889
|
-
}
|
|
890
|
-
]
|
|
891
|
-
},
|
|
892
|
-
configSchema: {
|
|
893
|
-
schema: {
|
|
894
|
-
type: "object",
|
|
895
|
-
properties: {
|
|
896
|
-
messageStream: {
|
|
897
|
-
type: "string",
|
|
898
|
-
description: "Optional message stream identifier (e.g., transactional)."
|
|
899
|
-
},
|
|
900
|
-
fromEmail: {
|
|
901
|
-
type: "string",
|
|
902
|
-
description: "Default From address used for outbound messages."
|
|
903
|
-
}
|
|
904
|
-
}
|
|
905
|
-
},
|
|
906
|
-
example: {
|
|
907
|
-
messageStream: "outbound",
|
|
908
|
-
fromEmail: "notifications@example.com"
|
|
909
|
-
}
|
|
910
|
-
},
|
|
911
|
-
secretSchema: {
|
|
912
|
-
schema: {
|
|
913
|
-
type: "object",
|
|
914
|
-
required: ["serverToken"],
|
|
915
|
-
properties: {
|
|
916
|
-
serverToken: {
|
|
917
|
-
type: "string",
|
|
918
|
-
description: "Server token for the Postmark account."
|
|
919
|
-
}
|
|
920
|
-
}
|
|
921
|
-
},
|
|
922
|
-
example: {
|
|
923
|
-
serverToken: "server-***"
|
|
924
|
-
}
|
|
925
|
-
},
|
|
926
|
-
healthCheck: {
|
|
927
|
-
method: "ping",
|
|
928
|
-
timeoutMs: 3000
|
|
929
|
-
},
|
|
930
|
-
docsUrl: "https://postmarkapp.com/developer",
|
|
931
|
-
constraints: {
|
|
932
|
-
rateLimit: {
|
|
933
|
-
rpm: 500
|
|
934
|
-
}
|
|
935
|
-
},
|
|
936
|
-
byokSetup: {
|
|
937
|
-
setupInstructions: "Create a Postmark server token with outbound send permissions and configure allowed from addresses."
|
|
938
|
-
}
|
|
939
|
-
});
|
|
940
|
-
function registerPostmarkIntegration(registry2) {
|
|
941
|
-
return registry2.register(postmarkIntegrationSpec);
|
|
942
|
-
}
|
|
943
|
-
|
|
944
|
-
// src/integrations/providers/qdrant.ts
|
|
945
|
-
var qdrantIntegrationSpec = defineIntegration({
|
|
946
|
-
meta: {
|
|
947
|
-
key: "vectordb.qdrant",
|
|
948
|
-
version: "1.0.0",
|
|
949
|
-
category: "vector-db",
|
|
950
|
-
title: "Qdrant Vector Database",
|
|
951
|
-
description: "Qdrant integration for vector search and embeddings storage.",
|
|
952
|
-
domain: "ai",
|
|
953
|
-
owners: ["platform.ai"],
|
|
954
|
-
tags: ["vector-db", "search"],
|
|
955
|
-
stability: StabilityEnum.Experimental
|
|
956
|
-
},
|
|
957
|
-
supportedModes: ["managed", "byok"],
|
|
958
|
-
capabilities: {
|
|
959
|
-
provides: [
|
|
960
|
-
{ key: "vector-db.search", version: "1.0.0" },
|
|
961
|
-
{ key: "vector-db.storage", version: "1.0.0" }
|
|
962
|
-
],
|
|
963
|
-
requires: [
|
|
964
|
-
{
|
|
965
|
-
key: "ai.embeddings",
|
|
966
|
-
optional: true,
|
|
967
|
-
reason: "Required if vectors are generated via hosted embedding services"
|
|
968
|
-
}
|
|
969
|
-
]
|
|
970
|
-
},
|
|
971
|
-
configSchema: {
|
|
972
|
-
schema: {
|
|
973
|
-
type: "object",
|
|
974
|
-
properties: {
|
|
975
|
-
apiUrl: {
|
|
976
|
-
type: "string",
|
|
977
|
-
description: "Base URL for the Qdrant instance (e.g., https://qdrant.example.com)."
|
|
978
|
-
},
|
|
979
|
-
collectionPrefix: {
|
|
980
|
-
type: "string",
|
|
981
|
-
description: "Prefix applied to all collection names for this tenant."
|
|
982
|
-
}
|
|
983
|
-
}
|
|
984
|
-
},
|
|
985
|
-
example: {
|
|
986
|
-
apiUrl: "https://qdrant.example.com",
|
|
987
|
-
collectionPrefix: "tenant_"
|
|
988
|
-
}
|
|
989
|
-
},
|
|
990
|
-
secretSchema: {
|
|
991
|
-
schema: {
|
|
992
|
-
type: "object",
|
|
993
|
-
properties: {
|
|
994
|
-
apiKey: {
|
|
995
|
-
type: "string",
|
|
996
|
-
description: "API key or token when authentication is enabled."
|
|
997
|
-
}
|
|
998
|
-
}
|
|
999
|
-
},
|
|
1000
|
-
example: {
|
|
1001
|
-
apiKey: "qdrant-api-key"
|
|
1002
|
-
}
|
|
1003
|
-
},
|
|
1004
|
-
healthCheck: {
|
|
1005
|
-
method: "ping",
|
|
1006
|
-
timeoutMs: 4000
|
|
1007
|
-
},
|
|
1008
|
-
docsUrl: "https://qdrant.tech/documentation/quick-start/",
|
|
1009
|
-
constraints: {
|
|
1010
|
-
quotas: {
|
|
1011
|
-
collections: 100,
|
|
1012
|
-
pointsPerCollection: 1e6
|
|
1013
|
-
}
|
|
1014
|
-
},
|
|
1015
|
-
byokSetup: {
|
|
1016
|
-
setupInstructions: "Provide the HTTPS endpoint of your Qdrant cluster and generate an API key with read/write access to the collections that will be managed."
|
|
1017
|
-
}
|
|
1018
|
-
});
|
|
1019
|
-
function registerQdrantIntegration(registry2) {
|
|
1020
|
-
return registry2.register(qdrantIntegrationSpec);
|
|
1021
|
-
}
|
|
1022
|
-
|
|
1023
|
-
// src/integrations/providers/supabase-vector.ts
|
|
1024
|
-
var supabaseVectorIntegrationSpec = defineIntegration({
|
|
1025
|
-
meta: {
|
|
1026
|
-
key: "vectordb.supabase",
|
|
1027
|
-
version: "1.0.0",
|
|
1028
|
-
category: "vector-db",
|
|
1029
|
-
title: "Supabase Vector Database (pgvector)",
|
|
1030
|
-
description: "Supabase integration for embedding storage and vector similarity search using pgvector.",
|
|
1031
|
-
domain: "ai",
|
|
1032
|
-
owners: ["platform.ai"],
|
|
1033
|
-
tags: ["vector-db", "supabase", "pgvector"],
|
|
1034
|
-
stability: StabilityEnum.Beta
|
|
1035
|
-
},
|
|
1036
|
-
supportedModes: ["managed", "byok"],
|
|
1037
|
-
capabilities: {
|
|
1038
|
-
provides: [
|
|
1039
|
-
{ key: "vector-db.search", version: "1.0.0" },
|
|
1040
|
-
{ key: "vector-db.storage", version: "1.0.0" }
|
|
1041
|
-
],
|
|
1042
|
-
requires: [
|
|
1043
|
-
{
|
|
1044
|
-
key: "ai.embeddings",
|
|
1045
|
-
optional: true,
|
|
1046
|
-
reason: "Required when vectors are generated by a hosted embedding provider."
|
|
1047
|
-
}
|
|
1048
|
-
]
|
|
1049
|
-
},
|
|
1050
|
-
configSchema: {
|
|
1051
|
-
schema: {
|
|
1052
|
-
type: "object",
|
|
1053
|
-
properties: {
|
|
1054
|
-
schema: {
|
|
1055
|
-
type: "string",
|
|
1056
|
-
description: "Schema name containing the pgvector table (default: public)."
|
|
1057
|
-
},
|
|
1058
|
-
table: {
|
|
1059
|
-
type: "string",
|
|
1060
|
-
description: "Table used to store vectors and metadata (default: contractspec_vectors)."
|
|
1061
|
-
},
|
|
1062
|
-
createTableIfMissing: {
|
|
1063
|
-
type: "boolean",
|
|
1064
|
-
description: "Automatically create pgvector extension and table when first writing vectors."
|
|
1065
|
-
},
|
|
1066
|
-
distanceMetric: {
|
|
1067
|
-
type: "string",
|
|
1068
|
-
enum: ["cosine", "l2", "inner_product"],
|
|
1069
|
-
description: "Distance metric used for nearest-neighbor search."
|
|
1070
|
-
}
|
|
1071
|
-
}
|
|
1072
|
-
},
|
|
1073
|
-
example: {
|
|
1074
|
-
schema: "public",
|
|
1075
|
-
table: "contractspec_vectors",
|
|
1076
|
-
createTableIfMissing: true,
|
|
1077
|
-
distanceMetric: "cosine"
|
|
1078
|
-
}
|
|
1079
|
-
},
|
|
1080
|
-
secretSchema: {
|
|
1081
|
-
schema: {
|
|
1082
|
-
type: "object",
|
|
1083
|
-
required: ["databaseUrl"],
|
|
1084
|
-
properties: {
|
|
1085
|
-
databaseUrl: {
|
|
1086
|
-
type: "string",
|
|
1087
|
-
description: "Supabase Postgres connection string with privileges to read/write vector rows."
|
|
1088
|
-
}
|
|
1089
|
-
}
|
|
1090
|
-
},
|
|
1091
|
-
example: {
|
|
1092
|
-
databaseUrl: "postgresql://postgres.[project-ref]:password@aws-0-region.pooler.supabase.com:6543/postgres"
|
|
1093
|
-
}
|
|
1094
|
-
},
|
|
1095
|
-
healthCheck: {
|
|
1096
|
-
method: "ping",
|
|
1097
|
-
timeoutMs: 5000
|
|
1098
|
-
},
|
|
1099
|
-
docsUrl: "https://supabase.com/docs/guides/ai/vector-columns",
|
|
1100
|
-
byokSetup: {
|
|
1101
|
-
setupInstructions: "Create or reuse a Supabase project, enable pgvector, and provide a Postgres connection string with read/write access to the target vector table."
|
|
1102
|
-
}
|
|
1103
|
-
});
|
|
1104
|
-
function registerSupabaseVectorIntegration(registry2) {
|
|
1105
|
-
return registry2.register(supabaseVectorIntegrationSpec);
|
|
1106
|
-
}
|
|
1107
|
-
|
|
1108
|
-
// src/integrations/providers/supabase-postgres.ts
|
|
1109
|
-
var supabasePostgresIntegrationSpec = defineIntegration({
|
|
1110
|
-
meta: {
|
|
1111
|
-
key: "database.supabase",
|
|
1112
|
-
version: "1.0.0",
|
|
1113
|
-
category: "database",
|
|
1114
|
-
title: "Supabase Postgres",
|
|
1115
|
-
description: "Supabase Postgres integration for SQL query execution and transactional workloads.",
|
|
1116
|
-
domain: "infrastructure",
|
|
1117
|
-
owners: ["platform.infrastructure"],
|
|
1118
|
-
tags: ["database", "postgres", "supabase"],
|
|
1119
|
-
stability: StabilityEnum.Beta
|
|
1120
|
-
},
|
|
1121
|
-
supportedModes: ["managed", "byok"],
|
|
1122
|
-
capabilities: {
|
|
1123
|
-
provides: [{ key: "database.sql", version: "1.0.0" }]
|
|
1124
|
-
},
|
|
1125
|
-
configSchema: {
|
|
1126
|
-
schema: {
|
|
1127
|
-
type: "object",
|
|
1128
|
-
properties: {
|
|
1129
|
-
maxConnections: {
|
|
1130
|
-
type: "number",
|
|
1131
|
-
description: "Optional connection pool size when opening a Postgres client to Supabase."
|
|
1132
|
-
},
|
|
1133
|
-
sslMode: {
|
|
1134
|
-
type: "string",
|
|
1135
|
-
enum: ["require", "allow", "prefer"],
|
|
1136
|
-
description: "TLS mode used by the Postgres client."
|
|
1137
|
-
}
|
|
1138
|
-
}
|
|
1139
|
-
},
|
|
1140
|
-
example: {
|
|
1141
|
-
maxConnections: 10,
|
|
1142
|
-
sslMode: "require"
|
|
1143
|
-
}
|
|
1144
|
-
},
|
|
1145
|
-
secretSchema: {
|
|
1146
|
-
schema: {
|
|
1147
|
-
type: "object",
|
|
1148
|
-
required: ["databaseUrl"],
|
|
1149
|
-
properties: {
|
|
1150
|
-
databaseUrl: {
|
|
1151
|
-
type: "string",
|
|
1152
|
-
description: "Supabase Postgres connection string (transaction or session pooler endpoint)."
|
|
1153
|
-
}
|
|
1154
|
-
}
|
|
1155
|
-
},
|
|
1156
|
-
example: {
|
|
1157
|
-
databaseUrl: "postgresql://postgres.[project-ref]:password@aws-0-region.pooler.supabase.com:6543/postgres"
|
|
1158
|
-
}
|
|
1159
|
-
},
|
|
1160
|
-
healthCheck: {
|
|
1161
|
-
method: "ping",
|
|
1162
|
-
timeoutMs: 5000
|
|
1163
|
-
},
|
|
1164
|
-
docsUrl: "https://supabase.com/docs/guides/database/connecting-to-postgres",
|
|
1165
|
-
byokSetup: {
|
|
1166
|
-
setupInstructions: "Create or reuse a Supabase project and provide a Postgres connection string with permissions aligned to your workload."
|
|
1167
|
-
}
|
|
1168
|
-
});
|
|
1169
|
-
function registerSupabasePostgresIntegration(registry2) {
|
|
1170
|
-
return registry2.register(supabasePostgresIntegrationSpec);
|
|
1171
|
-
}
|
|
1172
|
-
|
|
1173
|
-
// src/integrations/providers/mistral.ts
|
|
1174
|
-
var mistralIntegrationSpec = defineIntegration({
|
|
1175
|
-
meta: {
|
|
1176
|
-
key: "ai-llm.mistral",
|
|
1177
|
-
version: "1.0.0",
|
|
1178
|
-
category: "ai-llm",
|
|
1179
|
-
title: "Mistral Large Language Model",
|
|
1180
|
-
description: "Mistral integration providing chat completions and embedding generation.",
|
|
1181
|
-
domain: "ai",
|
|
1182
|
-
owners: ["platform.ai"],
|
|
1183
|
-
tags: ["ai", "llm", "embeddings"],
|
|
1184
|
-
stability: StabilityEnum.Experimental
|
|
1185
|
-
},
|
|
1186
|
-
supportedModes: ["managed", "byok"],
|
|
1187
|
-
capabilities: {
|
|
1188
|
-
provides: [
|
|
1189
|
-
{ key: "ai.chat", version: "1.0.0" },
|
|
1190
|
-
{ key: "ai.embeddings", version: "1.0.0" }
|
|
1191
|
-
]
|
|
1192
|
-
},
|
|
1193
|
-
configSchema: {
|
|
1194
|
-
schema: {
|
|
1195
|
-
type: "object",
|
|
1196
|
-
properties: {
|
|
1197
|
-
model: {
|
|
1198
|
-
type: "string",
|
|
1199
|
-
description: "Default chat completion model (e.g., mistral-large-latest)."
|
|
1200
|
-
},
|
|
1201
|
-
embeddingModel: {
|
|
1202
|
-
type: "string",
|
|
1203
|
-
description: "Embedding model identifier."
|
|
1204
|
-
}
|
|
1205
|
-
}
|
|
1206
|
-
},
|
|
1207
|
-
example: {
|
|
1208
|
-
model: "mistral-large-latest",
|
|
1209
|
-
embeddingModel: "mistral-embed"
|
|
1210
|
-
}
|
|
1211
|
-
},
|
|
1212
|
-
secretSchema: {
|
|
1213
|
-
schema: {
|
|
1214
|
-
type: "object",
|
|
1215
|
-
required: ["apiKey"],
|
|
1216
|
-
properties: {
|
|
1217
|
-
apiKey: {
|
|
1218
|
-
type: "string",
|
|
1219
|
-
description: "Mistral API key with access to chat and embeddings endpoints."
|
|
1220
|
-
}
|
|
1221
|
-
}
|
|
1222
|
-
},
|
|
1223
|
-
example: {
|
|
1224
|
-
apiKey: "mistral-***"
|
|
1225
|
-
}
|
|
1226
|
-
},
|
|
1227
|
-
healthCheck: {
|
|
1228
|
-
method: "custom",
|
|
1229
|
-
timeoutMs: 5000
|
|
1230
|
-
},
|
|
1231
|
-
docsUrl: "https://docs.mistral.ai/platform/endpoints",
|
|
1232
|
-
constraints: {
|
|
1233
|
-
rateLimit: {
|
|
1234
|
-
rpm: 600
|
|
1235
|
-
}
|
|
1236
|
-
},
|
|
1237
|
-
byokSetup: {
|
|
1238
|
-
setupInstructions: "Generate an API key within the Mistral console and ensure the selected models are enabled for the account."
|
|
1239
|
-
}
|
|
1240
|
-
});
|
|
1241
|
-
function registerMistralIntegration(registry2) {
|
|
1242
|
-
return registry2.register(mistralIntegrationSpec);
|
|
1243
|
-
}
|
|
1244
|
-
|
|
1245
|
-
// src/integrations/providers/elevenlabs.ts
|
|
1246
|
-
var elevenLabsIntegrationSpec = defineIntegration({
|
|
1247
|
-
meta: {
|
|
1248
|
-
key: "ai-voice.elevenlabs",
|
|
1249
|
-
version: "1.0.0",
|
|
1250
|
-
category: "ai-voice",
|
|
1251
|
-
title: "ElevenLabs Text-to-Speech",
|
|
1252
|
-
description: "ElevenLabs integration for neural voice synthesis and voice catalog access.",
|
|
1253
|
-
domain: "ai",
|
|
1254
|
-
owners: ["platform.ai"],
|
|
1255
|
-
tags: ["voice", "tts"],
|
|
1256
|
-
stability: StabilityEnum.Beta
|
|
1257
|
-
},
|
|
1258
|
-
supportedModes: ["managed", "byok"],
|
|
1259
|
-
capabilities: {
|
|
1260
|
-
provides: [{ key: "ai.voice.synthesis", version: "1.0.0" }]
|
|
1261
|
-
},
|
|
1262
|
-
configSchema: {
|
|
1263
|
-
schema: {
|
|
1264
|
-
type: "object",
|
|
1265
|
-
properties: {
|
|
1266
|
-
defaultVoiceId: {
|
|
1267
|
-
type: "string",
|
|
1268
|
-
description: "Optional default voice identifier for synthesis requests."
|
|
1269
|
-
}
|
|
1270
|
-
}
|
|
1271
|
-
},
|
|
1272
|
-
example: {
|
|
1273
|
-
defaultVoiceId: "pNInz6obpgDQGcFmaJgB"
|
|
1274
|
-
}
|
|
1275
|
-
},
|
|
1276
|
-
secretSchema: {
|
|
1277
|
-
schema: {
|
|
1278
|
-
type: "object",
|
|
1279
|
-
required: ["apiKey"],
|
|
1280
|
-
properties: {
|
|
1281
|
-
apiKey: {
|
|
1282
|
-
type: "string",
|
|
1283
|
-
description: "ElevenLabs API key with text-to-speech permissions."
|
|
1284
|
-
}
|
|
1285
|
-
}
|
|
1286
|
-
},
|
|
1287
|
-
example: {
|
|
1288
|
-
apiKey: "eleven-***"
|
|
1289
|
-
}
|
|
1290
|
-
},
|
|
1291
|
-
healthCheck: {
|
|
1292
|
-
method: "custom",
|
|
1293
|
-
timeoutMs: 4000
|
|
1294
|
-
},
|
|
1295
|
-
docsUrl: "https://elevenlabs.io/docs/api-reference/text-to-speech",
|
|
1296
|
-
constraints: {
|
|
1297
|
-
rateLimit: {
|
|
1298
|
-
rpm: 120
|
|
1299
|
-
}
|
|
1300
|
-
},
|
|
1301
|
-
byokSetup: {
|
|
1302
|
-
setupInstructions: "Create an ElevenLabs API key and ensure the desired voices are accessible to the key scope."
|
|
1303
|
-
}
|
|
1304
|
-
});
|
|
1305
|
-
function registerElevenLabsIntegration(registry2) {
|
|
1306
|
-
return registry2.register(elevenLabsIntegrationSpec);
|
|
1307
|
-
}
|
|
1308
|
-
|
|
1309
|
-
// src/integrations/providers/gradium.ts
|
|
1310
|
-
var gradiumIntegrationSpec = defineIntegration({
|
|
1311
|
-
meta: {
|
|
1312
|
-
key: "ai-voice.gradium",
|
|
1313
|
-
version: "1.0.0",
|
|
1314
|
-
category: "ai-voice",
|
|
1315
|
-
title: "Gradium Text-to-Speech",
|
|
1316
|
-
description: "Gradium integration for low-latency voice synthesis and voice catalog access.",
|
|
1317
|
-
domain: "ai",
|
|
1318
|
-
owners: ["platform.ai"],
|
|
1319
|
-
tags: ["voice", "tts", "realtime"],
|
|
1320
|
-
stability: StabilityEnum.Experimental
|
|
1321
|
-
},
|
|
1322
|
-
supportedModes: ["byok"],
|
|
1323
|
-
capabilities: {
|
|
1324
|
-
provides: [{ key: "ai.voice.synthesis", version: "1.0.0" }]
|
|
1325
|
-
},
|
|
1326
|
-
configSchema: {
|
|
1327
|
-
schema: {
|
|
1328
|
-
type: "object",
|
|
1329
|
-
properties: {
|
|
1330
|
-
defaultVoiceId: {
|
|
1331
|
-
type: "string",
|
|
1332
|
-
description: "Optional default voice identifier used for synthesis."
|
|
1333
|
-
},
|
|
1334
|
-
region: {
|
|
1335
|
-
type: "string",
|
|
1336
|
-
enum: ["eu", "us"],
|
|
1337
|
-
description: "Gradium region used by the SDK (eu or us)."
|
|
1338
|
-
},
|
|
1339
|
-
baseUrl: {
|
|
1340
|
-
type: "string",
|
|
1341
|
-
description: "Optional API base URL override for private routing or proxies."
|
|
1342
|
-
},
|
|
1343
|
-
timeoutMs: {
|
|
1344
|
-
type: "number",
|
|
1345
|
-
description: "Optional request timeout in milliseconds."
|
|
1346
|
-
},
|
|
1347
|
-
outputFormat: {
|
|
1348
|
-
type: "string",
|
|
1349
|
-
enum: [
|
|
1350
|
-
"wav",
|
|
1351
|
-
"pcm",
|
|
1352
|
-
"opus",
|
|
1353
|
-
"ulaw_8000",
|
|
1354
|
-
"alaw_8000",
|
|
1355
|
-
"pcm_16000",
|
|
1356
|
-
"pcm_24000"
|
|
1357
|
-
],
|
|
1358
|
-
description: "Optional default output format used when no format is specified."
|
|
1359
|
-
}
|
|
1360
|
-
}
|
|
1361
|
-
},
|
|
1362
|
-
example: {
|
|
1363
|
-
defaultVoiceId: "YTpq7expH9539ERJ",
|
|
1364
|
-
region: "eu",
|
|
1365
|
-
timeoutMs: 15000,
|
|
1366
|
-
outputFormat: "wav"
|
|
1367
|
-
}
|
|
1368
|
-
},
|
|
1369
|
-
secretSchema: {
|
|
1370
|
-
schema: {
|
|
1371
|
-
type: "object",
|
|
1372
|
-
required: ["apiKey"],
|
|
1373
|
-
properties: {
|
|
1374
|
-
apiKey: {
|
|
1375
|
-
type: "string",
|
|
1376
|
-
description: "Gradium API key with TTS access."
|
|
1377
|
-
}
|
|
1378
|
-
}
|
|
1379
|
-
},
|
|
1380
|
-
example: {
|
|
1381
|
-
apiKey: "gd_***"
|
|
1382
|
-
}
|
|
1383
|
-
},
|
|
1384
|
-
healthCheck: {
|
|
1385
|
-
method: "custom",
|
|
1386
|
-
timeoutMs: 5000
|
|
1387
|
-
},
|
|
1388
|
-
docsUrl: "https://gradium.ai/api_docs.html",
|
|
1389
|
-
byokSetup: {
|
|
1390
|
-
setupInstructions: "Create a Gradium API key, select the target region, and store credentials in your tenant secret provider."
|
|
1391
|
-
}
|
|
1392
|
-
});
|
|
1393
|
-
function registerGradiumIntegration(registry2) {
|
|
1394
|
-
return registry2.register(gradiumIntegrationSpec);
|
|
1395
|
-
}
|
|
1396
|
-
|
|
1397
|
-
// src/integrations/providers/fal.ts
|
|
1398
|
-
var falIntegrationSpec = defineIntegration({
|
|
1399
|
-
meta: {
|
|
1400
|
-
key: "ai-voice.fal",
|
|
1401
|
-
version: "1.0.0",
|
|
1402
|
-
category: "ai-voice",
|
|
1403
|
-
title: "Fal Chatterbox Text-to-Speech",
|
|
1404
|
-
description: "Fal integration for voice synthesis using Chatterbox text-to-speech models.",
|
|
1405
|
-
domain: "ai",
|
|
1406
|
-
owners: ["platform.ai"],
|
|
1407
|
-
tags: ["voice", "tts", "chatterbox"],
|
|
1408
|
-
stability: StabilityEnum.Experimental
|
|
1409
|
-
},
|
|
1410
|
-
supportedModes: ["byok"],
|
|
1411
|
-
capabilities: {
|
|
1412
|
-
provides: [{ key: "ai.voice.synthesis", version: "1.0.0" }]
|
|
1413
|
-
},
|
|
1414
|
-
configSchema: {
|
|
1415
|
-
schema: {
|
|
1416
|
-
type: "object",
|
|
1417
|
-
properties: {
|
|
1418
|
-
modelId: {
|
|
1419
|
-
type: "string",
|
|
1420
|
-
description: "Fal model endpoint identifier (e.g. fal-ai/chatterbox/text-to-speech)."
|
|
1421
|
-
},
|
|
1422
|
-
defaultVoiceUrl: {
|
|
1423
|
-
type: "string",
|
|
1424
|
-
description: "Optional reference audio URL used as default voice conditioning input."
|
|
1425
|
-
},
|
|
1426
|
-
defaultExaggeration: {
|
|
1427
|
-
type: "number",
|
|
1428
|
-
minimum: 0,
|
|
1429
|
-
maximum: 1,
|
|
1430
|
-
description: "Optional default exaggeration value for speech output."
|
|
1431
|
-
},
|
|
1432
|
-
defaultTemperature: {
|
|
1433
|
-
type: "number",
|
|
1434
|
-
minimum: 0.05,
|
|
1435
|
-
maximum: 2,
|
|
1436
|
-
description: "Optional default temperature for synthesis requests."
|
|
1437
|
-
},
|
|
1438
|
-
defaultCfg: {
|
|
1439
|
-
type: "number",
|
|
1440
|
-
minimum: 0.1,
|
|
1441
|
-
maximum: 1,
|
|
1442
|
-
description: "Optional default cfg value for synthesis requests."
|
|
1443
|
-
},
|
|
1444
|
-
pollIntervalMs: {
|
|
1445
|
-
type: "number",
|
|
1446
|
-
description: "Optional queue polling interval in milliseconds."
|
|
1447
|
-
}
|
|
1448
|
-
}
|
|
1449
|
-
},
|
|
1450
|
-
example: {
|
|
1451
|
-
modelId: "fal-ai/chatterbox/text-to-speech",
|
|
1452
|
-
defaultVoiceUrl: "https://storage.googleapis.com/chatterbox-demo-samples/prompts/male_rickmorty.mp3",
|
|
1453
|
-
defaultExaggeration: 0.25,
|
|
1454
|
-
defaultTemperature: 0.7,
|
|
1455
|
-
defaultCfg: 0.5,
|
|
1456
|
-
pollIntervalMs: 1000
|
|
1457
|
-
}
|
|
1458
|
-
},
|
|
1459
|
-
secretSchema: {
|
|
1460
|
-
schema: {
|
|
1461
|
-
type: "object",
|
|
1462
|
-
required: ["apiKey"],
|
|
1463
|
-
properties: {
|
|
1464
|
-
apiKey: {
|
|
1465
|
-
type: "string",
|
|
1466
|
-
description: "Fal API key (FAL_KEY)."
|
|
1467
|
-
}
|
|
1468
|
-
}
|
|
1469
|
-
},
|
|
1470
|
-
example: {
|
|
1471
|
-
apiKey: "key-id:key-secret"
|
|
1472
|
-
}
|
|
1473
|
-
},
|
|
1474
|
-
healthCheck: {
|
|
1475
|
-
method: "custom",
|
|
1476
|
-
timeoutMs: 7000
|
|
1477
|
-
},
|
|
1478
|
-
docsUrl: "https://fal.ai/models/fal-ai/chatterbox/text-to-speech/api",
|
|
1479
|
-
byokSetup: {
|
|
1480
|
-
setupInstructions: "Create a Fal API key and configure the desired voice model endpoint before connecting tenants."
|
|
1481
|
-
}
|
|
1482
|
-
});
|
|
1483
|
-
function registerFalIntegration(registry2) {
|
|
1484
|
-
return registry2.register(falIntegrationSpec);
|
|
1485
|
-
}
|
|
1486
|
-
|
|
1487
|
-
// src/integrations/providers/gmail.ts
|
|
1488
|
-
var gmailIntegrationSpec = defineIntegration({
|
|
1489
|
-
meta: {
|
|
1490
|
-
key: "email.gmail",
|
|
1491
|
-
version: "1.0.0",
|
|
1492
|
-
category: "email",
|
|
1493
|
-
title: "Google Gmail API",
|
|
1494
|
-
description: "Gmail integration supporting inbound thread ingestion and outbound transactional email.",
|
|
1495
|
-
domain: "communications",
|
|
1496
|
-
owners: ["platform.messaging"],
|
|
1497
|
-
tags: ["email", "gmail"],
|
|
1498
|
-
stability: StabilityEnum.Beta
|
|
1499
|
-
},
|
|
1500
|
-
supportedModes: ["managed", "byok"],
|
|
1501
|
-
capabilities: {
|
|
1502
|
-
provides: [
|
|
1503
|
-
{ key: "email.inbound", version: "1.0.0" },
|
|
1504
|
-
{ key: "email.outbound", version: "1.0.0" }
|
|
1505
|
-
]
|
|
1506
|
-
},
|
|
1507
|
-
configSchema: {
|
|
1508
|
-
schema: {
|
|
1509
|
-
type: "object",
|
|
1510
|
-
properties: {
|
|
1511
|
-
labelIds: {
|
|
1512
|
-
type: "array",
|
|
1513
|
-
items: { type: "string" },
|
|
1514
|
-
description: "Optional list of label IDs to scope inbound sync."
|
|
1515
|
-
},
|
|
1516
|
-
includeSpamTrash: {
|
|
1517
|
-
type: "boolean",
|
|
1518
|
-
description: "Whether to include spam or trash messages during sync."
|
|
1519
|
-
}
|
|
1520
|
-
}
|
|
1521
|
-
},
|
|
1522
|
-
example: {
|
|
1523
|
-
labelIds: ["INBOX"],
|
|
1524
|
-
includeSpamTrash: false
|
|
1525
|
-
}
|
|
1526
|
-
},
|
|
1527
|
-
secretSchema: {
|
|
1528
|
-
schema: {
|
|
1529
|
-
type: "object",
|
|
1530
|
-
required: ["clientId", "clientSecret", "refreshToken"],
|
|
1531
|
-
properties: {
|
|
1532
|
-
clientId: {
|
|
1533
|
-
type: "string",
|
|
1534
|
-
description: "OAuth client ID for the Google Cloud project."
|
|
1535
|
-
},
|
|
1536
|
-
clientSecret: {
|
|
1537
|
-
type: "string",
|
|
1538
|
-
description: "OAuth client secret for the Google Cloud project."
|
|
1539
|
-
},
|
|
1540
|
-
refreshToken: {
|
|
1541
|
-
type: "string",
|
|
1542
|
-
description: "OAuth refresh token for delegated Gmail access."
|
|
1543
|
-
},
|
|
1544
|
-
redirectUri: {
|
|
1545
|
-
type: "string",
|
|
1546
|
-
description: "Optional redirect URI used when issuing the refresh token."
|
|
1547
|
-
}
|
|
1548
|
-
}
|
|
1549
|
-
},
|
|
1550
|
-
example: {
|
|
1551
|
-
clientId: "xxx.apps.googleusercontent.com",
|
|
1552
|
-
clientSecret: "secret",
|
|
1553
|
-
refreshToken: "refresh-token"
|
|
1554
|
-
}
|
|
1555
|
-
},
|
|
1556
|
-
healthCheck: {
|
|
1557
|
-
method: "custom",
|
|
1558
|
-
timeoutMs: 4000
|
|
1559
|
-
},
|
|
1560
|
-
docsUrl: "https://developers.google.com/gmail/api",
|
|
1561
|
-
constraints: {
|
|
1562
|
-
rateLimit: {
|
|
1563
|
-
rpm: 600
|
|
1564
|
-
}
|
|
1565
|
-
},
|
|
1566
|
-
byokSetup: {
|
|
1567
|
-
setupInstructions: "Create an OAuth consent screen and credentials within Google Cloud Console, then authorize the Gmail scopes and store the resulting refresh token."
|
|
1568
|
-
}
|
|
1569
|
-
});
|
|
1570
|
-
function registerGmailIntegration(registry2) {
|
|
1571
|
-
return registry2.register(gmailIntegrationSpec);
|
|
1572
|
-
}
|
|
1573
|
-
|
|
1574
|
-
// src/integrations/providers/google-calendar.ts
|
|
1575
|
-
var googleCalendarIntegrationSpec = defineIntegration({
|
|
1576
|
-
meta: {
|
|
1577
|
-
key: "calendar.google",
|
|
1578
|
-
version: "1.0.0",
|
|
1579
|
-
category: "calendar",
|
|
1580
|
-
title: "Google Calendar API",
|
|
1581
|
-
description: "Google Calendar integration for event creation, updates, and scheduling automations.",
|
|
1582
|
-
domain: "productivity",
|
|
1583
|
-
owners: ["platform.messaging"],
|
|
1584
|
-
tags: ["calendar", "google"],
|
|
1585
|
-
stability: StabilityEnum.Beta
|
|
1586
|
-
},
|
|
1587
|
-
supportedModes: ["managed", "byok"],
|
|
1588
|
-
capabilities: {
|
|
1589
|
-
provides: [{ key: "calendar.events", version: "1.0.0" }]
|
|
1590
|
-
},
|
|
1591
|
-
configSchema: {
|
|
1592
|
-
schema: {
|
|
1593
|
-
type: "object",
|
|
1594
|
-
properties: {
|
|
1595
|
-
calendarId: {
|
|
1596
|
-
type: "string",
|
|
1597
|
-
description: "Default calendar identifier (defaults to primary)."
|
|
1598
|
-
}
|
|
1599
|
-
}
|
|
1600
|
-
},
|
|
1601
|
-
example: {
|
|
1602
|
-
calendarId: "primary"
|
|
1603
|
-
}
|
|
1604
|
-
},
|
|
1605
|
-
secretSchema: {
|
|
1606
|
-
schema: {
|
|
1607
|
-
type: "object",
|
|
1608
|
-
required: ["clientEmail", "privateKey"],
|
|
1609
|
-
properties: {
|
|
1610
|
-
clientEmail: {
|
|
1611
|
-
type: "string",
|
|
1612
|
-
description: "Service account client email."
|
|
1613
|
-
},
|
|
1614
|
-
privateKey: {
|
|
1615
|
-
type: "string",
|
|
1616
|
-
description: "Service account private key."
|
|
1617
|
-
},
|
|
1618
|
-
projectId: {
|
|
1619
|
-
type: "string",
|
|
1620
|
-
description: "Google Cloud project ID."
|
|
1621
|
-
}
|
|
1622
|
-
}
|
|
1623
|
-
},
|
|
1624
|
-
example: {
|
|
1625
|
-
clientEmail: "svc-calendar@example.iam.gserviceaccount.com",
|
|
1626
|
-
privateKey: "-----BEGIN PRIVATE KEY-----...",
|
|
1627
|
-
projectId: "calendar-project"
|
|
1628
|
-
}
|
|
1629
|
-
},
|
|
1630
|
-
healthCheck: {
|
|
1631
|
-
method: "custom",
|
|
1632
|
-
timeoutMs: 4000
|
|
1633
|
-
},
|
|
1634
|
-
docsUrl: "https://developers.google.com/calendar/api",
|
|
1635
|
-
constraints: {},
|
|
1636
|
-
byokSetup: {
|
|
1637
|
-
setupInstructions: "Create a Google service account with Calendar access and share the target calendars with the service account email."
|
|
1638
|
-
}
|
|
1639
|
-
});
|
|
1640
|
-
function registerGoogleCalendarIntegration(registry2) {
|
|
1641
|
-
return registry2.register(googleCalendarIntegrationSpec);
|
|
1642
|
-
}
|
|
1643
|
-
|
|
1644
|
-
// src/integrations/providers/twilio-sms.ts
|
|
1645
|
-
var twilioSmsIntegrationSpec = defineIntegration({
|
|
1646
|
-
meta: {
|
|
1647
|
-
key: "sms.twilio",
|
|
1648
|
-
version: "1.0.0",
|
|
1649
|
-
category: "sms",
|
|
1650
|
-
title: "Twilio Messaging",
|
|
1651
|
-
description: "Twilio SMS integration for transactional and notification messaging.",
|
|
1652
|
-
domain: "communications",
|
|
1653
|
-
owners: ["platform.messaging"],
|
|
1654
|
-
tags: ["sms", "messaging"],
|
|
1655
|
-
stability: StabilityEnum.Stable
|
|
1656
|
-
},
|
|
1657
|
-
supportedModes: ["managed", "byok"],
|
|
1658
|
-
capabilities: {
|
|
1659
|
-
provides: [{ key: "sms.outbound", version: "1.0.0" }]
|
|
1660
|
-
},
|
|
1661
|
-
configSchema: {
|
|
1662
|
-
schema: {
|
|
1663
|
-
type: "object",
|
|
1664
|
-
properties: {
|
|
1665
|
-
fromNumber: {
|
|
1666
|
-
type: "string",
|
|
1667
|
-
description: "Default Twilio phone number used as sender."
|
|
1668
|
-
}
|
|
1669
|
-
}
|
|
1670
|
-
},
|
|
1671
|
-
example: {
|
|
1672
|
-
fromNumber: "+15551234567"
|
|
1673
|
-
}
|
|
1674
|
-
},
|
|
1675
|
-
secretSchema: {
|
|
1676
|
-
schema: {
|
|
1677
|
-
type: "object",
|
|
1678
|
-
required: ["accountSid", "authToken"],
|
|
1679
|
-
properties: {
|
|
1680
|
-
accountSid: {
|
|
1681
|
-
type: "string",
|
|
1682
|
-
description: "Twilio Account SID."
|
|
1683
|
-
},
|
|
1684
|
-
authToken: {
|
|
1685
|
-
type: "string",
|
|
1686
|
-
description: "Twilio Auth Token."
|
|
1687
|
-
}
|
|
1688
|
-
}
|
|
1689
|
-
},
|
|
1690
|
-
example: {
|
|
1691
|
-
accountSid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
1692
|
-
authToken: "auth-token"
|
|
1693
|
-
}
|
|
1694
|
-
},
|
|
1695
|
-
healthCheck: {
|
|
1696
|
-
method: "custom",
|
|
1697
|
-
timeoutMs: 3000
|
|
1698
|
-
},
|
|
1699
|
-
docsUrl: "https://www.twilio.com/docs/sms/api",
|
|
1700
|
-
constraints: {
|
|
1701
|
-
rateLimit: {
|
|
1702
|
-
rpm: 200
|
|
1703
|
-
}
|
|
1704
|
-
},
|
|
1705
|
-
byokSetup: {
|
|
1706
|
-
setupInstructions: "Provide a Twilio account SID, auth token, and verify the outbound sending numbers used by the integration."
|
|
1707
|
-
}
|
|
1708
|
-
});
|
|
1709
|
-
function registerTwilioSmsIntegration(registry2) {
|
|
1710
|
-
return registry2.register(twilioSmsIntegrationSpec);
|
|
1711
|
-
}
|
|
1712
|
-
|
|
1713
|
-
// src/integrations/providers/gcs-storage.ts
|
|
1714
|
-
var gcsStorageIntegrationSpec = defineIntegration({
|
|
1715
|
-
meta: {
|
|
1716
|
-
key: "storage.gcs",
|
|
1717
|
-
version: "1.0.0",
|
|
1718
|
-
category: "storage",
|
|
1719
|
-
title: "Google Cloud Storage Buckets",
|
|
1720
|
-
description: "Google Cloud Storage integration for object storage and retrieval.",
|
|
1721
|
-
domain: "infrastructure",
|
|
1722
|
-
owners: ["platform.infrastructure"],
|
|
1723
|
-
tags: ["storage", "gcs", "google-cloud"],
|
|
1724
|
-
stability: StabilityEnum.Beta
|
|
1725
|
-
},
|
|
1726
|
-
supportedModes: ["managed", "byok"],
|
|
1727
|
-
capabilities: {
|
|
1728
|
-
provides: [{ key: "storage.objects", version: "1.0.0" }]
|
|
1729
|
-
},
|
|
1730
|
-
configSchema: {
|
|
1731
|
-
schema: {
|
|
1732
|
-
type: "object",
|
|
1733
|
-
required: ["bucket"],
|
|
1734
|
-
properties: {
|
|
1735
|
-
bucket: {
|
|
1736
|
-
type: "string",
|
|
1737
|
-
description: "Primary bucket name used for storing objects."
|
|
1738
|
-
},
|
|
1739
|
-
prefix: {
|
|
1740
|
-
type: "string",
|
|
1741
|
-
description: "Optional prefix applied to object keys."
|
|
1742
|
-
}
|
|
1743
|
-
}
|
|
1744
|
-
},
|
|
1745
|
-
example: {
|
|
1746
|
-
bucket: "pfo-tenant-assets",
|
|
1747
|
-
prefix: "documents/"
|
|
1748
|
-
}
|
|
1749
|
-
},
|
|
1750
|
-
secretSchema: {
|
|
1751
|
-
schema: {
|
|
1752
|
-
type: "object",
|
|
1753
|
-
properties: {
|
|
1754
|
-
type: {
|
|
1755
|
-
type: "string",
|
|
1756
|
-
description: "Service account type field from Google credentials JSON (if provided)."
|
|
1757
|
-
},
|
|
1758
|
-
client_email: { type: "string" },
|
|
1759
|
-
private_key: { type: "string" },
|
|
1760
|
-
project_id: { type: "string" }
|
|
1761
|
-
}
|
|
1762
|
-
},
|
|
1763
|
-
example: {
|
|
1764
|
-
type: "service_account",
|
|
1765
|
-
client_email: "svc-account@example.iam.gserviceaccount.com",
|
|
1766
|
-
private_key: "-----BEGIN PRIVATE KEY-----...",
|
|
1767
|
-
project_id: "example-project"
|
|
1768
|
-
}
|
|
1769
|
-
},
|
|
1770
|
-
healthCheck: {
|
|
1771
|
-
method: "ping",
|
|
1772
|
-
timeoutMs: 4000
|
|
1773
|
-
},
|
|
1774
|
-
docsUrl: "https://cloud.google.com/storage/docs/apis",
|
|
1775
|
-
constraints: {
|
|
1776
|
-
quotas: {
|
|
1777
|
-
storageGb: 5120
|
|
1778
|
-
}
|
|
1779
|
-
},
|
|
1780
|
-
byokSetup: {
|
|
1781
|
-
setupInstructions: "Create a Google Cloud service account with Storage Object Admin role and upload the JSON credentials to the secret store."
|
|
1782
|
-
}
|
|
1783
|
-
});
|
|
1784
|
-
function registerGcsStorageIntegration(registry2) {
|
|
1785
|
-
return registry2.register(gcsStorageIntegrationSpec);
|
|
1786
|
-
}
|
|
1787
|
-
|
|
1788
|
-
// src/integrations/providers/powens.ts
|
|
1789
|
-
var powensIntegrationSpec = defineIntegration({
|
|
1790
|
-
meta: {
|
|
1791
|
-
key: "openbanking.powens",
|
|
1792
|
-
version: "1.0.0",
|
|
1793
|
-
category: "open-banking",
|
|
1794
|
-
title: "Powens Open Banking (Read)",
|
|
1795
|
-
description: "Read-only Open Banking integration powered by Powens, exposing accounts, transactions, and balances.",
|
|
1796
|
-
domain: "finance",
|
|
1797
|
-
owners: ["platform.finance"],
|
|
1798
|
-
tags: ["open-banking", "powens", "finance"],
|
|
1799
|
-
stability: StabilityEnum.Experimental
|
|
1800
|
-
},
|
|
1801
|
-
supportedModes: ["byok"],
|
|
1802
|
-
capabilities: {
|
|
1803
|
-
provides: [
|
|
1804
|
-
{ key: "openbanking.accounts.read", version: "1.0.0" },
|
|
1805
|
-
{ key: "openbanking.transactions.read", version: "1.0.0" },
|
|
1806
|
-
{ key: "openbanking.balances.read", version: "1.0.0" }
|
|
1807
|
-
]
|
|
1808
|
-
},
|
|
1809
|
-
configSchema: {
|
|
1810
|
-
schema: {
|
|
1811
|
-
type: "object",
|
|
1812
|
-
required: ["environment"],
|
|
1813
|
-
properties: {
|
|
1814
|
-
environment: {
|
|
1815
|
-
type: "string",
|
|
1816
|
-
enum: ["sandbox", "production"],
|
|
1817
|
-
description: "Powens environment to target. Sandbox uses Powens test API base URL, production uses live endpoints."
|
|
1818
|
-
},
|
|
1819
|
-
baseUrl: {
|
|
1820
|
-
type: "string",
|
|
1821
|
-
description: "Optional override for the Powens API base URL. Defaults to Powens environment defaults."
|
|
1822
|
-
},
|
|
1823
|
-
region: {
|
|
1824
|
-
type: "string",
|
|
1825
|
-
description: "Optional Powens region identifier when targeting a specific data residency cluster."
|
|
1826
|
-
},
|
|
1827
|
-
pollingIntervalMs: {
|
|
1828
|
-
type: "number",
|
|
1829
|
-
description: "Optional custom polling interval in milliseconds for background sync jobs (defaults to platform standard)."
|
|
1830
|
-
}
|
|
1831
|
-
}
|
|
1832
|
-
},
|
|
1833
|
-
example: {
|
|
1834
|
-
environment: "sandbox",
|
|
1835
|
-
baseUrl: "https://api-sandbox.powens.com/v2",
|
|
1836
|
-
region: "eu-west-1",
|
|
1837
|
-
pollingIntervalMs: 300000
|
|
1838
|
-
}
|
|
1839
|
-
},
|
|
1840
|
-
secretSchema: {
|
|
1841
|
-
schema: {
|
|
1842
|
-
type: "object",
|
|
1843
|
-
required: ["clientId", "clientSecret"],
|
|
1844
|
-
properties: {
|
|
1845
|
-
clientId: {
|
|
1846
|
-
type: "string",
|
|
1847
|
-
description: "Powens OAuth client identifier obtained from the Powens Console (BYOK project)."
|
|
1848
|
-
},
|
|
1849
|
-
clientSecret: {
|
|
1850
|
-
type: "string",
|
|
1851
|
-
description: "Powens OAuth client secret used to exchange for access tokens."
|
|
1852
|
-
},
|
|
1853
|
-
apiKey: {
|
|
1854
|
-
type: "string",
|
|
1855
|
-
description: "Optional Powens API key (if the tenant project exposes a dedicated API token)."
|
|
1856
|
-
},
|
|
1857
|
-
webhookSecret: {
|
|
1858
|
-
type: "string",
|
|
1859
|
-
description: "Optional webhook signing secret used to verify Powens webhook payloads."
|
|
1860
|
-
}
|
|
1861
|
-
}
|
|
1862
|
-
},
|
|
1863
|
-
example: {
|
|
1864
|
-
clientId: "powens-client-id",
|
|
1865
|
-
clientSecret: "powens-client-secret",
|
|
1866
|
-
apiKey: "powens-api-key",
|
|
1867
|
-
webhookSecret: "powens-webhook-secret"
|
|
1868
|
-
}
|
|
1869
|
-
},
|
|
1870
|
-
healthCheck: {
|
|
1871
|
-
method: "ping",
|
|
1872
|
-
timeoutMs: 8000
|
|
1873
|
-
},
|
|
1874
|
-
docsUrl: "https://docs.powens.com/",
|
|
1875
|
-
constraints: {
|
|
1876
|
-
rateLimit: {
|
|
1877
|
-
rph: 1e4,
|
|
1878
|
-
rpm: 600
|
|
1879
|
-
}
|
|
1880
|
-
},
|
|
1881
|
-
byokSetup: {
|
|
1882
|
-
setupInstructions: "Create a Powens BYOK project, generate OAuth credentials, and optionally configure webhook delivery for account/transaction updates.",
|
|
1883
|
-
requiredScopes: ["accounts:read", "transactions:read", "balances:read"]
|
|
1884
|
-
}
|
|
1885
|
-
});
|
|
1886
|
-
function registerPowensIntegration(registry2) {
|
|
1887
|
-
return registry2.register(powensIntegrationSpec);
|
|
1888
|
-
}
|
|
1889
|
-
|
|
1890
|
-
// src/integrations/providers/posthog.ts
|
|
1891
|
-
var posthogIntegrationSpec = defineIntegration({
|
|
1892
|
-
meta: {
|
|
1893
|
-
key: "analytics.posthog",
|
|
1894
|
-
version: "1.1.0",
|
|
1895
|
-
category: "analytics",
|
|
1896
|
-
title: "PostHog",
|
|
1897
|
-
description: "PostHog integration for product analytics, feature flags, HogQL queries, and LLM analytics with evaluations.",
|
|
1898
|
-
domain: "analytics",
|
|
1899
|
-
owners: ["@platform.integrations"],
|
|
1900
|
-
tags: ["analytics", "posthog", "llm", "ai"],
|
|
1901
|
-
stability: StabilityEnum.Beta
|
|
1902
|
-
},
|
|
1903
|
-
supportedModes: ["managed", "byok"],
|
|
1904
|
-
capabilities: {
|
|
1905
|
-
provides: [
|
|
1906
|
-
{ key: "analytics.events", version: "1.0.0" },
|
|
1907
|
-
{ key: "analytics.feature-flags", version: "1.0.0" },
|
|
1908
|
-
{ key: "analytics.query", version: "1.0.0" },
|
|
1909
|
-
{ key: "analytics.events.read", version: "1.0.0" },
|
|
1910
|
-
{ key: "analytics.persons", version: "1.0.0" },
|
|
1911
|
-
{ key: "analytics.insights", version: "1.0.0" },
|
|
1912
|
-
{ key: "analytics.cohorts", version: "1.0.0" },
|
|
1913
|
-
{ key: "analytics.annotations", version: "1.0.0" },
|
|
1914
|
-
{ key: "analytics.llm-tracing", version: "1.0.0" },
|
|
1915
|
-
{ key: "analytics.llm-evaluations", version: "1.0.0" }
|
|
1916
|
-
]
|
|
1917
|
-
},
|
|
1918
|
-
configSchema: {
|
|
1919
|
-
schema: {
|
|
1920
|
-
type: "object",
|
|
1921
|
-
properties: {
|
|
1922
|
-
host: {
|
|
1923
|
-
type: "string",
|
|
1924
|
-
description: "PostHog host (e.g., https://app.posthog.com or self-hosted URL)."
|
|
1925
|
-
},
|
|
1926
|
-
projectId: {
|
|
1927
|
-
type: "string",
|
|
1928
|
-
description: "PostHog project ID for API queries."
|
|
1929
|
-
},
|
|
1930
|
-
mcpUrl: {
|
|
1931
|
-
type: "string",
|
|
1932
|
-
description: "Optional MCP endpoint URL for PostHog tools."
|
|
1933
|
-
}
|
|
1934
|
-
}
|
|
1935
|
-
},
|
|
1936
|
-
example: {
|
|
1937
|
-
host: "https://app.posthog.com",
|
|
1938
|
-
projectId: "12345"
|
|
1939
|
-
}
|
|
1940
|
-
},
|
|
1941
|
-
secretSchema: {
|
|
1942
|
-
schema: {
|
|
1943
|
-
type: "object",
|
|
1944
|
-
required: ["personalApiKey"],
|
|
1945
|
-
properties: {
|
|
1946
|
-
personalApiKey: {
|
|
1947
|
-
type: "string",
|
|
1948
|
-
description: "PostHog personal API key (required for API reads/writes)."
|
|
1949
|
-
},
|
|
1950
|
-
projectApiKey: {
|
|
1951
|
-
type: "string",
|
|
1952
|
-
description: "PostHog project API key (required for capture/ingest events)."
|
|
1953
|
-
}
|
|
1954
|
-
}
|
|
1955
|
-
},
|
|
1956
|
-
example: {
|
|
1957
|
-
personalApiKey: "phx_personal_api_key",
|
|
1958
|
-
projectApiKey: "phc_project_api_key"
|
|
1959
|
-
}
|
|
1960
|
-
},
|
|
1961
|
-
healthCheck: {
|
|
1962
|
-
method: "custom",
|
|
1963
|
-
timeoutMs: 5000
|
|
1964
|
-
},
|
|
1965
|
-
docsUrl: "https://posthog.com/docs",
|
|
1966
|
-
byokSetup: {
|
|
1967
|
-
setupInstructions: "Generate a PostHog personal API key for read/write operations and a project API key for event capture."
|
|
1968
|
-
}
|
|
1969
|
-
});
|
|
1970
|
-
function registerPosthogIntegration(registry2) {
|
|
1971
|
-
return registry2.register(posthogIntegrationSpec);
|
|
1972
|
-
}
|
|
1973
|
-
|
|
1974
|
-
// src/integrations/providers/posthog-llm-telemetry.ts
|
|
1975
|
-
var posthogLLMTelemetrySpec = {
|
|
1976
|
-
meta: {
|
|
1977
|
-
key: "analytics.posthog.llm",
|
|
1978
|
-
version: "1.0.0",
|
|
1979
|
-
title: "PostHog LLM Analytics Telemetry",
|
|
1980
|
-
description: "Telemetry events for PostHog LLM Analytics: generation tracing, token usage, and evaluation-ready metadata.",
|
|
1981
|
-
domain: "analytics",
|
|
1982
|
-
owners: ["@platform.integrations"],
|
|
1983
|
-
tags: ["analytics", "posthog", "llm", "ai", "telemetry"],
|
|
1984
|
-
stability: StabilityEnum.Beta
|
|
1985
|
-
},
|
|
1986
|
-
events: [
|
|
1987
|
-
{
|
|
1988
|
-
key: "posthog.llm.generation",
|
|
1989
|
-
version: "1.0.0",
|
|
1990
|
-
semantics: {
|
|
1991
|
-
who: "AI agent or LLM consumer",
|
|
1992
|
-
what: "Captures an LLM generation call with full observability metadata",
|
|
1993
|
-
why: "Enable LLM performance monitoring, cost tracking, and automated quality evaluations via PostHog"
|
|
1994
|
-
},
|
|
1995
|
-
properties: {
|
|
1996
|
-
$ai_model: {
|
|
1997
|
-
type: "string",
|
|
1998
|
-
required: true,
|
|
1999
|
-
description: "The LLM model identifier (e.g., gpt-4o, claude-sonnet-4-20250514)"
|
|
2000
|
-
},
|
|
2001
|
-
$ai_provider: {
|
|
2002
|
-
type: "string",
|
|
2003
|
-
required: true,
|
|
2004
|
-
description: "The LLM provider (e.g., openai, anthropic, contractspec)"
|
|
2005
|
-
},
|
|
2006
|
-
$ai_latency: {
|
|
2007
|
-
type: "number",
|
|
2008
|
-
required: false,
|
|
2009
|
-
description: "LLM call latency in seconds"
|
|
2010
|
-
},
|
|
2011
|
-
$ai_input_tokens: {
|
|
2012
|
-
type: "number",
|
|
2013
|
-
required: false,
|
|
2014
|
-
description: "Number of input/prompt tokens consumed"
|
|
2015
|
-
},
|
|
2016
|
-
$ai_output_tokens: {
|
|
2017
|
-
type: "number",
|
|
2018
|
-
required: false,
|
|
2019
|
-
description: "Number of output/completion tokens generated"
|
|
2020
|
-
},
|
|
2021
|
-
$ai_total_cost_usd: {
|
|
2022
|
-
type: "number",
|
|
2023
|
-
required: false,
|
|
2024
|
-
description: "Total cost in USD (input + output)"
|
|
2025
|
-
},
|
|
2026
|
-
$ai_is_error: {
|
|
2027
|
-
type: "boolean",
|
|
2028
|
-
required: false,
|
|
2029
|
-
description: "Whether the generation resulted in an error"
|
|
2030
|
-
},
|
|
2031
|
-
$ai_trace_id: {
|
|
2032
|
-
type: "string",
|
|
2033
|
-
required: false,
|
|
2034
|
-
description: "Trace ID for grouping related generations"
|
|
2035
|
-
},
|
|
2036
|
-
$ai_stream: {
|
|
2037
|
-
type: "boolean",
|
|
2038
|
-
required: false,
|
|
2039
|
-
description: "Whether the response was streamed"
|
|
2040
|
-
},
|
|
2041
|
-
$ai_time_to_first_token: {
|
|
2042
|
-
type: "number",
|
|
2043
|
-
required: false,
|
|
2044
|
-
description: "Time to first token in seconds (streaming only)"
|
|
2045
|
-
},
|
|
2046
|
-
$ai_tools: {
|
|
2047
|
-
type: "json",
|
|
2048
|
-
required: false,
|
|
2049
|
-
description: "Tools/functions available to the LLM"
|
|
2050
|
-
},
|
|
2051
|
-
$ai_input: {
|
|
2052
|
-
type: "json",
|
|
2053
|
-
required: false,
|
|
2054
|
-
pii: true,
|
|
2055
|
-
redact: true,
|
|
2056
|
-
description: "Messages sent to the LLM (may contain PII)"
|
|
2057
|
-
},
|
|
2058
|
-
$ai_output_choices: {
|
|
2059
|
-
type: "json",
|
|
2060
|
-
required: false,
|
|
2061
|
-
pii: true,
|
|
2062
|
-
redact: true,
|
|
2063
|
-
description: "Response choices from the LLM (may contain PII)"
|
|
2064
|
-
},
|
|
2065
|
-
contractspec_operation: {
|
|
2066
|
-
type: "string",
|
|
2067
|
-
required: false,
|
|
2068
|
-
description: "ContractSpec operation name"
|
|
2069
|
-
},
|
|
2070
|
-
contractspec_version: {
|
|
2071
|
-
type: "string",
|
|
2072
|
-
required: false,
|
|
2073
|
-
description: "ContractSpec operation version"
|
|
2074
|
-
},
|
|
2075
|
-
contractspec_agent_id: {
|
|
2076
|
-
type: "string",
|
|
2077
|
-
required: false,
|
|
2078
|
-
description: "ContractSpec agent identifier"
|
|
2079
|
-
},
|
|
2080
|
-
contractspec_finish_reason: {
|
|
2081
|
-
type: "string",
|
|
2082
|
-
required: false,
|
|
2083
|
-
description: "AI SDK finish reason (stop, tool-calls, error, etc.)"
|
|
2084
|
-
},
|
|
2085
|
-
contractspec_tool_count: {
|
|
2086
|
-
type: "number",
|
|
2087
|
-
required: false,
|
|
2088
|
-
description: "Number of tool calls made in this step"
|
|
2089
|
-
}
|
|
2090
|
-
},
|
|
2091
|
-
privacy: "internal",
|
|
2092
|
-
tags: ["llm", "generation", "posthog"]
|
|
2093
|
-
}
|
|
2094
|
-
],
|
|
2095
|
-
config: {
|
|
2096
|
-
defaultRetentionDays: 90,
|
|
2097
|
-
defaultSamplingRate: 1,
|
|
2098
|
-
providers: [
|
|
2099
|
-
{
|
|
2100
|
-
type: "posthog",
|
|
2101
|
-
config: {
|
|
2102
|
-
eventName: "$ai_generation",
|
|
2103
|
-
enableEvaluations: true,
|
|
2104
|
-
evaluationTemplates: [
|
|
2105
|
-
"relevance",
|
|
2106
|
-
"helpfulness",
|
|
2107
|
-
"jailbreak",
|
|
2108
|
-
"hallucination",
|
|
2109
|
-
"toxicity"
|
|
2110
|
-
]
|
|
2111
|
-
}
|
|
2112
|
-
}
|
|
2113
|
-
]
|
|
2114
|
-
}
|
|
2115
|
-
};
|
|
2116
|
-
var POSTHOG_LLM_PII_FIELDS = [
|
|
2117
|
-
"$ai_input",
|
|
2118
|
-
"$ai_output_choices"
|
|
2119
|
-
];
|
|
2120
|
-
var POSTHOG_LLM_TELEMETRY_EVENTS = {
|
|
2121
|
-
generation: "$ai_generation",
|
|
2122
|
-
span: "$ai_span",
|
|
2123
|
-
evaluation: "$ai_evaluation"
|
|
2124
|
-
};
|
|
2125
|
-
var POSTHOG_EVALUATION_TEMPLATES = {
|
|
2126
|
-
relevance: "relevance",
|
|
2127
|
-
helpfulness: "helpfulness",
|
|
2128
|
-
jailbreak: "jailbreak",
|
|
2129
|
-
hallucination: "hallucination",
|
|
2130
|
-
toxicity: "toxicity"
|
|
2131
|
-
};
|
|
2132
|
-
function redactPostHogLLMTelemetryPayload(payload) {
|
|
2133
|
-
const redacted = { ...payload };
|
|
2134
|
-
for (const field of POSTHOG_LLM_PII_FIELDS) {
|
|
2135
|
-
if (field in redacted) {
|
|
2136
|
-
redacted[field] = "[REDACTED]";
|
|
2137
|
-
}
|
|
2138
|
-
}
|
|
2139
|
-
return redacted;
|
|
2140
|
-
}
|
|
2141
|
-
|
|
2142
|
-
// src/integrations/providers/linear.ts
|
|
2143
|
-
var linearIntegrationSpec = defineIntegration({
|
|
2144
|
-
meta: {
|
|
2145
|
-
key: "project-management.linear",
|
|
2146
|
-
version: "1.0.0",
|
|
2147
|
-
category: "project-management",
|
|
2148
|
-
title: "Linear",
|
|
2149
|
-
description: "Linear integration for issue tracking and project management workflows.",
|
|
2150
|
-
domain: "productivity",
|
|
2151
|
-
owners: ["@platform.integrations"],
|
|
2152
|
-
tags: ["project-management", "linear"],
|
|
2153
|
-
stability: StabilityEnum.Beta
|
|
2154
|
-
},
|
|
2155
|
-
supportedModes: ["managed", "byok"],
|
|
2156
|
-
capabilities: {
|
|
2157
|
-
provides: [{ key: "project-management.work-items", version: "1.0.0" }]
|
|
2158
|
-
},
|
|
2159
|
-
configSchema: {
|
|
2160
|
-
schema: {
|
|
2161
|
-
type: "object",
|
|
2162
|
-
required: ["teamId"],
|
|
2163
|
-
properties: {
|
|
2164
|
-
teamId: {
|
|
2165
|
-
type: "string",
|
|
2166
|
-
description: "Linear team ID that owns created issues."
|
|
2167
|
-
},
|
|
2168
|
-
projectId: {
|
|
2169
|
-
type: "string",
|
|
2170
|
-
description: "Optional default project ID for new issues."
|
|
2171
|
-
},
|
|
2172
|
-
stateId: {
|
|
2173
|
-
type: "string",
|
|
2174
|
-
description: "Optional default workflow state ID."
|
|
2175
|
-
},
|
|
2176
|
-
assigneeId: {
|
|
2177
|
-
type: "string",
|
|
2178
|
-
description: "Optional default assignee ID."
|
|
2179
|
-
},
|
|
2180
|
-
labelIds: {
|
|
2181
|
-
type: "array",
|
|
2182
|
-
items: { type: "string" },
|
|
2183
|
-
description: "Optional label IDs applied to each issue."
|
|
2184
|
-
},
|
|
2185
|
-
tagLabelMap: {
|
|
2186
|
-
type: "object",
|
|
2187
|
-
additionalProperties: { type: "string" },
|
|
2188
|
-
description: "Optional mapping of tags to Linear label IDs (tag -> labelId)."
|
|
2189
|
-
}
|
|
2190
|
-
}
|
|
2191
|
-
},
|
|
2192
|
-
example: {
|
|
2193
|
-
teamId: "team_123",
|
|
2194
|
-
projectId: "proj_456",
|
|
2195
|
-
labelIds: ["label_1", "label_2"]
|
|
2196
|
-
}
|
|
2197
|
-
},
|
|
2198
|
-
secretSchema: {
|
|
2199
|
-
schema: {
|
|
2200
|
-
type: "object",
|
|
2201
|
-
required: ["apiKey"],
|
|
2202
|
-
properties: {
|
|
2203
|
-
apiKey: {
|
|
2204
|
-
type: "string",
|
|
2205
|
-
description: "Linear API key (personal or service token)."
|
|
2206
|
-
}
|
|
2207
|
-
}
|
|
2208
|
-
},
|
|
2209
|
-
example: {
|
|
2210
|
-
apiKey: "lin_api_key"
|
|
2211
|
-
}
|
|
2212
|
-
},
|
|
2213
|
-
healthCheck: {
|
|
2214
|
-
method: "custom",
|
|
2215
|
-
timeoutMs: 4000
|
|
2216
|
-
},
|
|
2217
|
-
docsUrl: "https://developers.linear.app",
|
|
2218
|
-
constraints: {},
|
|
2219
|
-
byokSetup: {
|
|
2220
|
-
setupInstructions: "Create a Linear API key with issue:write permission and store it as a secret."
|
|
2221
|
-
}
|
|
2222
|
-
});
|
|
2223
|
-
function registerLinearIntegration(registry2) {
|
|
2224
|
-
return registry2.register(linearIntegrationSpec);
|
|
2225
|
-
}
|
|
2226
|
-
|
|
2227
|
-
// src/integrations/providers/jira.ts
|
|
2228
|
-
var jiraIntegrationSpec = defineIntegration({
|
|
2229
|
-
meta: {
|
|
2230
|
-
key: "project-management.jira",
|
|
2231
|
-
version: "1.0.0",
|
|
2232
|
-
category: "project-management",
|
|
2233
|
-
title: "Jira Cloud",
|
|
2234
|
-
description: "Jira Cloud integration for creating and tracking work items.",
|
|
2235
|
-
domain: "productivity",
|
|
2236
|
-
owners: ["@platform.integrations"],
|
|
2237
|
-
tags: ["project-management", "jira"],
|
|
2238
|
-
stability: StabilityEnum.Beta
|
|
2239
|
-
},
|
|
2240
|
-
supportedModes: ["managed", "byok"],
|
|
2241
|
-
capabilities: {
|
|
2242
|
-
provides: [{ key: "project-management.work-items", version: "1.0.0" }]
|
|
2243
|
-
},
|
|
2244
|
-
configSchema: {
|
|
2245
|
-
schema: {
|
|
2246
|
-
type: "object",
|
|
2247
|
-
required: ["siteUrl"],
|
|
2248
|
-
properties: {
|
|
2249
|
-
siteUrl: {
|
|
2250
|
-
type: "string",
|
|
2251
|
-
description: "Jira Cloud site URL (e.g., https://acme.atlassian.net)."
|
|
2252
|
-
},
|
|
2253
|
-
projectKey: {
|
|
2254
|
-
type: "string",
|
|
2255
|
-
description: "Default Jira project key for new issues."
|
|
2256
|
-
},
|
|
2257
|
-
issueType: {
|
|
2258
|
-
type: "string",
|
|
2259
|
-
description: "Default Jira issue type (e.g., Task, Story)."
|
|
2260
|
-
},
|
|
2261
|
-
defaultLabels: {
|
|
2262
|
-
type: "array",
|
|
2263
|
-
items: { type: "string" },
|
|
2264
|
-
description: "Labels applied to each issue by default."
|
|
2265
|
-
},
|
|
2266
|
-
issueTypeMap: {
|
|
2267
|
-
type: "object",
|
|
2268
|
-
additionalProperties: { type: "string" },
|
|
2269
|
-
description: "Optional mapping from work item types to Jira issue types."
|
|
2270
|
-
}
|
|
2271
|
-
}
|
|
2272
|
-
},
|
|
2273
|
-
example: {
|
|
2274
|
-
siteUrl: "https://acme.atlassian.net",
|
|
2275
|
-
projectKey: "PM",
|
|
2276
|
-
issueType: "Task"
|
|
2277
|
-
}
|
|
2278
|
-
},
|
|
2279
|
-
secretSchema: {
|
|
2280
|
-
schema: {
|
|
2281
|
-
type: "object",
|
|
2282
|
-
required: ["email", "apiToken"],
|
|
2283
|
-
properties: {
|
|
2284
|
-
email: {
|
|
2285
|
-
type: "string",
|
|
2286
|
-
description: "Jira account email used for API token auth."
|
|
2287
|
-
},
|
|
2288
|
-
apiToken: {
|
|
2289
|
-
type: "string",
|
|
2290
|
-
description: "Jira Cloud API token for the account."
|
|
2291
|
-
}
|
|
2292
|
-
}
|
|
2293
|
-
},
|
|
2294
|
-
example: {
|
|
2295
|
-
email: "user@acme.com",
|
|
2296
|
-
apiToken: "jira_api_token"
|
|
2297
|
-
}
|
|
2298
|
-
},
|
|
2299
|
-
healthCheck: {
|
|
2300
|
-
method: "custom",
|
|
2301
|
-
timeoutMs: 4000
|
|
2302
|
-
},
|
|
2303
|
-
docsUrl: "https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/",
|
|
2304
|
-
constraints: {},
|
|
2305
|
-
byokSetup: {
|
|
2306
|
-
setupInstructions: "Create a Jira API token and store it with the associated account email."
|
|
2307
|
-
}
|
|
2308
|
-
});
|
|
2309
|
-
function registerJiraIntegration(registry2) {
|
|
2310
|
-
return registry2.register(jiraIntegrationSpec);
|
|
2311
|
-
}
|
|
2312
|
-
|
|
2313
|
-
// src/integrations/providers/notion.ts
|
|
2314
|
-
var notionIntegrationSpec = defineIntegration({
|
|
2315
|
-
meta: {
|
|
2316
|
-
key: "project-management.notion",
|
|
2317
|
-
version: "1.0.0",
|
|
2318
|
-
category: "project-management",
|
|
2319
|
-
title: "Notion",
|
|
2320
|
-
description: "Notion integration for creating shared project summaries and task entries.",
|
|
2321
|
-
domain: "productivity",
|
|
2322
|
-
owners: ["@platform.integrations"],
|
|
2323
|
-
tags: ["project-management", "notion"],
|
|
2324
|
-
stability: StabilityEnum.Beta
|
|
2325
|
-
},
|
|
2326
|
-
supportedModes: ["managed", "byok"],
|
|
2327
|
-
capabilities: {
|
|
2328
|
-
provides: [{ key: "project-management.work-items", version: "1.0.0" }]
|
|
2329
|
-
},
|
|
2330
|
-
configSchema: {
|
|
2331
|
-
schema: {
|
|
2332
|
-
type: "object",
|
|
2333
|
-
properties: {
|
|
2334
|
-
databaseId: {
|
|
2335
|
-
type: "string",
|
|
2336
|
-
description: "Optional Notion database ID to store tasks."
|
|
2337
|
-
},
|
|
2338
|
-
summaryParentPageId: {
|
|
2339
|
-
type: "string",
|
|
2340
|
-
description: "Optional parent page ID for summary pages."
|
|
2341
|
-
},
|
|
2342
|
-
titleProperty: {
|
|
2343
|
-
type: "string",
|
|
2344
|
-
description: 'Database title property name (defaults to "Name").'
|
|
2345
|
-
},
|
|
2346
|
-
statusProperty: {
|
|
2347
|
-
type: "string",
|
|
2348
|
-
description: "Database status/select property name."
|
|
2349
|
-
},
|
|
2350
|
-
priorityProperty: {
|
|
2351
|
-
type: "string",
|
|
2352
|
-
description: "Database priority/select property name."
|
|
2353
|
-
},
|
|
2354
|
-
tagsProperty: {
|
|
2355
|
-
type: "string",
|
|
2356
|
-
description: "Database multi-select tags property name."
|
|
2357
|
-
},
|
|
2358
|
-
dueDateProperty: {
|
|
2359
|
-
type: "string",
|
|
2360
|
-
description: "Database date property name for due dates."
|
|
2361
|
-
},
|
|
2362
|
-
descriptionProperty: {
|
|
2363
|
-
type: "string",
|
|
2364
|
-
description: "Database rich-text property for descriptions."
|
|
2365
|
-
}
|
|
2366
|
-
}
|
|
2367
|
-
},
|
|
2368
|
-
example: {
|
|
2369
|
-
databaseId: "xxxxxxxxxxxxxxxx",
|
|
2370
|
-
summaryParentPageId: "yyyyyyyyyyyyyyyy",
|
|
2371
|
-
titleProperty: "Name",
|
|
2372
|
-
statusProperty: "Status"
|
|
2373
|
-
}
|
|
2374
|
-
},
|
|
2375
|
-
secretSchema: {
|
|
2376
|
-
schema: {
|
|
2377
|
-
type: "object",
|
|
2378
|
-
required: ["apiKey"],
|
|
2379
|
-
properties: {
|
|
2380
|
-
apiKey: {
|
|
2381
|
-
type: "string",
|
|
2382
|
-
description: "Notion integration secret token."
|
|
2383
|
-
}
|
|
2384
|
-
}
|
|
2385
|
-
},
|
|
2386
|
-
example: {
|
|
2387
|
-
apiKey: "secret_notion_token"
|
|
2388
|
-
}
|
|
2389
|
-
},
|
|
2390
|
-
healthCheck: {
|
|
2391
|
-
method: "custom",
|
|
2392
|
-
timeoutMs: 4000
|
|
2393
|
-
},
|
|
2394
|
-
docsUrl: "https://developers.notion.com",
|
|
2395
|
-
constraints: {},
|
|
2396
|
-
byokSetup: {
|
|
2397
|
-
setupInstructions: "Create a Notion internal integration, share the target database/page with it, and store the secret token."
|
|
2398
|
-
}
|
|
2399
|
-
});
|
|
2400
|
-
function registerNotionIntegration(registry2) {
|
|
2401
|
-
return registry2.register(notionIntegrationSpec);
|
|
2402
|
-
}
|
|
2403
|
-
|
|
2404
|
-
// src/integrations/providers/granola.ts
|
|
2405
|
-
var granolaIntegrationSpec = defineIntegration({
|
|
2406
|
-
meta: {
|
|
2407
|
-
key: "meeting-recorder.granola",
|
|
2408
|
-
version: "1.0.0",
|
|
2409
|
-
category: "meeting-recorder",
|
|
2410
|
-
title: "Granola Meeting Notes",
|
|
2411
|
-
description: "Granola meeting notes and transcripts via Enterprise API or MCP transport.",
|
|
2412
|
-
domain: "productivity",
|
|
2413
|
-
owners: ["platform.integrations"],
|
|
2414
|
-
tags: ["meeting-recorder", "granola", "transcripts"],
|
|
2415
|
-
stability: StabilityEnum.Experimental
|
|
2416
|
-
},
|
|
2417
|
-
supportedModes: ["byok"],
|
|
2418
|
-
capabilities: {
|
|
2419
|
-
provides: [
|
|
2420
|
-
{ key: "meeting-recorder.meetings.read", version: "1.0.0" },
|
|
2421
|
-
{ key: "meeting-recorder.transcripts.read", version: "1.0.0" }
|
|
2422
|
-
]
|
|
2423
|
-
},
|
|
2424
|
-
configSchema: {
|
|
2425
|
-
schema: {
|
|
2426
|
-
type: "object",
|
|
2427
|
-
properties: {
|
|
2428
|
-
baseUrl: {
|
|
2429
|
-
type: "string",
|
|
2430
|
-
description: "Optional override for the Granola API base URL. Defaults to https://public-api.granola.ai for API transport."
|
|
2431
|
-
},
|
|
2432
|
-
transport: {
|
|
2433
|
-
type: "string",
|
|
2434
|
-
enum: ["api", "mcp"],
|
|
2435
|
-
description: "Transport mode for Granola integration. Use api for Enterprise API or mcp for broader MCP access."
|
|
2436
|
-
},
|
|
2437
|
-
mcpUrl: {
|
|
2438
|
-
type: "string",
|
|
2439
|
-
description: "Optional override for Granola MCP URL. Defaults to https://mcp.granola.ai/mcp."
|
|
2440
|
-
},
|
|
2441
|
-
mcpHeaders: {
|
|
2442
|
-
type: "object",
|
|
2443
|
-
additionalProperties: { type: "string" },
|
|
2444
|
-
description: "Optional static headers for MCP gateway/proxy setups."
|
|
2445
|
-
},
|
|
2446
|
-
pageSize: {
|
|
2447
|
-
type: "number",
|
|
2448
|
-
description: "Page size for listing notes (maximum 30 per Granola API)."
|
|
2449
|
-
}
|
|
2450
|
-
}
|
|
2451
|
-
},
|
|
2452
|
-
example: {
|
|
2453
|
-
transport: "mcp",
|
|
2454
|
-
mcpUrl: "https://mcp.granola.ai/mcp",
|
|
2455
|
-
pageSize: 10
|
|
2456
|
-
}
|
|
2457
|
-
},
|
|
2458
|
-
secretSchema: {
|
|
2459
|
-
schema: {
|
|
2460
|
-
type: "object",
|
|
2461
|
-
properties: {
|
|
2462
|
-
apiKey: {
|
|
2463
|
-
type: "string",
|
|
2464
|
-
description: "Granola API key used as a Bearer token for Enterprise API requests (transport=api)."
|
|
2465
|
-
},
|
|
2466
|
-
mcpAccessToken: {
|
|
2467
|
-
type: "string",
|
|
2468
|
-
description: "Optional bearer token for MCP proxy/gateway auth (transport=mcp)."
|
|
2469
|
-
}
|
|
2470
|
-
}
|
|
2471
|
-
},
|
|
2472
|
-
example: {
|
|
2473
|
-
mcpAccessToken: "granola-mcp-***"
|
|
2474
|
-
}
|
|
2475
|
-
},
|
|
2476
|
-
healthCheck: {
|
|
2477
|
-
method: "list",
|
|
2478
|
-
timeoutMs: 8000
|
|
2479
|
-
},
|
|
2480
|
-
docsUrl: "https://docs.granola.ai/help-center/sharing/integrations/mcp",
|
|
2481
|
-
byokSetup: {
|
|
2482
|
-
setupInstructions: "Use Granola MCP for browser OAuth access, or configure an Enterprise API key for REST transport."
|
|
2483
|
-
}
|
|
2484
|
-
});
|
|
2485
|
-
function registerGranolaIntegration(registry2) {
|
|
2486
|
-
return registry2.register(granolaIntegrationSpec);
|
|
2487
|
-
}
|
|
2488
|
-
|
|
2489
|
-
// src/integrations/providers/tldv.ts
|
|
2490
|
-
var tldvIntegrationSpec = defineIntegration({
|
|
2491
|
-
meta: {
|
|
2492
|
-
key: "meeting-recorder.tldv",
|
|
2493
|
-
version: "1.0.0",
|
|
2494
|
-
category: "meeting-recorder",
|
|
2495
|
-
title: "tl;dv Meeting Recorder",
|
|
2496
|
-
description: "tl;dv Public API for meeting recordings, transcripts, and webhook events.",
|
|
2497
|
-
domain: "productivity",
|
|
2498
|
-
owners: ["platform.integrations"],
|
|
2499
|
-
tags: ["meeting-recorder", "tldv", "transcripts"],
|
|
2500
|
-
stability: StabilityEnum.Experimental
|
|
2501
|
-
},
|
|
2502
|
-
supportedModes: ["byok"],
|
|
2503
|
-
capabilities: {
|
|
2504
|
-
provides: [
|
|
2505
|
-
{ key: "meeting-recorder.meetings.read", version: "1.0.0" },
|
|
2506
|
-
{ key: "meeting-recorder.transcripts.read", version: "1.0.0" },
|
|
2507
|
-
{ key: "meeting-recorder.webhooks", version: "1.0.0" }
|
|
2508
|
-
]
|
|
2509
|
-
},
|
|
2510
|
-
configSchema: {
|
|
2511
|
-
schema: {
|
|
2512
|
-
type: "object",
|
|
2513
|
-
properties: {
|
|
2514
|
-
baseUrl: {
|
|
2515
|
-
type: "string",
|
|
2516
|
-
description: "Optional override for the tl;dv API base URL. Defaults to https://pasta.tldv.io/v1alpha1."
|
|
2517
|
-
},
|
|
2518
|
-
webhookUrl: {
|
|
2519
|
-
type: "string",
|
|
2520
|
-
description: "Webhook destination URL configured in tl;dv settings (MeetingReady/TranscriptReady)."
|
|
2521
|
-
},
|
|
2522
|
-
webhookEvents: {
|
|
2523
|
-
type: "array",
|
|
2524
|
-
items: { type: "string" },
|
|
2525
|
-
description: "Webhook triggers to enable (MeetingReady, TranscriptReady)."
|
|
2526
|
-
},
|
|
2527
|
-
webhookScope: {
|
|
2528
|
-
type: "string",
|
|
2529
|
-
description: "Webhook scope to configure (user, team, or organization)."
|
|
2530
|
-
}
|
|
2531
|
-
}
|
|
2532
|
-
},
|
|
2533
|
-
example: {
|
|
2534
|
-
baseUrl: "https://pasta.tldv.io/v1alpha1",
|
|
2535
|
-
webhookUrl: "https://example.com/webhooks/tldv",
|
|
2536
|
-
webhookEvents: ["MeetingReady", "TranscriptReady"],
|
|
2537
|
-
webhookScope: "team"
|
|
2538
|
-
}
|
|
2539
|
-
},
|
|
2540
|
-
secretSchema: {
|
|
2541
|
-
schema: {
|
|
2542
|
-
type: "object",
|
|
2543
|
-
required: ["apiKey"],
|
|
2544
|
-
properties: {
|
|
2545
|
-
apiKey: {
|
|
2546
|
-
type: "string",
|
|
2547
|
-
description: "tl;dv API key used in the x-api-key header for API requests."
|
|
2548
|
-
},
|
|
2549
|
-
webhookSecret: {
|
|
2550
|
-
type: "string",
|
|
2551
|
-
description: "Optional shared secret for webhook verification if configured in your environment."
|
|
2552
|
-
}
|
|
2553
|
-
}
|
|
2554
|
-
},
|
|
2555
|
-
example: {
|
|
2556
|
-
apiKey: "tldv-***",
|
|
2557
|
-
webhookSecret: "tldv-webhook-secret"
|
|
2558
|
-
}
|
|
2559
|
-
},
|
|
2560
|
-
healthCheck: {
|
|
2561
|
-
method: "ping",
|
|
2562
|
-
timeoutMs: 6000
|
|
2563
|
-
},
|
|
2564
|
-
docsUrl: "https://doc.tldv.io/index.html",
|
|
2565
|
-
byokSetup: {
|
|
2566
|
-
setupInstructions: "Generate a tl;dv API key and optionally configure MeetingReady/TranscriptReady webhooks."
|
|
2567
|
-
}
|
|
2568
|
-
});
|
|
2569
|
-
function registerTldvIntegration(registry2) {
|
|
2570
|
-
return registry2.register(tldvIntegrationSpec);
|
|
2571
|
-
}
|
|
2572
|
-
|
|
2573
|
-
// src/integrations/providers/fireflies.ts
|
|
2574
|
-
var firefliesIntegrationSpec = defineIntegration({
|
|
2575
|
-
meta: {
|
|
2576
|
-
key: "meeting-recorder.fireflies",
|
|
2577
|
-
version: "1.0.0",
|
|
2578
|
-
category: "meeting-recorder",
|
|
2579
|
-
title: "Fireflies.ai Meeting Recorder",
|
|
2580
|
-
description: "Fireflies GraphQL API for meeting transcripts, metadata, and webhook events.",
|
|
2581
|
-
domain: "productivity",
|
|
2582
|
-
owners: ["platform.integrations"],
|
|
2583
|
-
tags: ["meeting-recorder", "fireflies", "transcripts"],
|
|
2584
|
-
stability: StabilityEnum.Experimental
|
|
2585
|
-
},
|
|
2586
|
-
supportedModes: ["byok"],
|
|
2587
|
-
capabilities: {
|
|
2588
|
-
provides: [
|
|
2589
|
-
{ key: "meeting-recorder.meetings.read", version: "1.0.0" },
|
|
2590
|
-
{ key: "meeting-recorder.transcripts.read", version: "1.0.0" },
|
|
2591
|
-
{ key: "meeting-recorder.webhooks", version: "1.0.0" }
|
|
2592
|
-
]
|
|
2593
|
-
},
|
|
2594
|
-
configSchema: {
|
|
2595
|
-
schema: {
|
|
2596
|
-
type: "object",
|
|
2597
|
-
properties: {
|
|
2598
|
-
baseUrl: {
|
|
2599
|
-
type: "string",
|
|
2600
|
-
description: "Optional override for the Fireflies GraphQL endpoint. Defaults to https://api.fireflies.ai/graphql."
|
|
2601
|
-
},
|
|
2602
|
-
webhookUrl: {
|
|
2603
|
-
type: "string",
|
|
2604
|
-
description: "Webhook destination URL configured in Fireflies developer settings."
|
|
2605
|
-
},
|
|
2606
|
-
webhookEvents: {
|
|
2607
|
-
type: "array",
|
|
2608
|
-
items: { type: "string" },
|
|
2609
|
-
description: "Webhook events to subscribe to (e.g., Transcription completed)."
|
|
2610
|
-
},
|
|
2611
|
-
transcriptsPageSize: {
|
|
2612
|
-
type: "number",
|
|
2613
|
-
description: "Number of transcripts to request per GraphQL query."
|
|
2614
|
-
}
|
|
2615
|
-
}
|
|
2616
|
-
},
|
|
2617
|
-
example: {
|
|
2618
|
-
baseUrl: "https://api.fireflies.ai/graphql",
|
|
2619
|
-
webhookUrl: "https://example.com/webhooks/fireflies",
|
|
2620
|
-
webhookEvents: ["Transcription completed"],
|
|
2621
|
-
transcriptsPageSize: 25
|
|
2622
|
-
}
|
|
2623
|
-
},
|
|
2624
|
-
secretSchema: {
|
|
2625
|
-
schema: {
|
|
2626
|
-
type: "object",
|
|
2627
|
-
required: ["apiKey"],
|
|
2628
|
-
properties: {
|
|
2629
|
-
apiKey: {
|
|
2630
|
-
type: "string",
|
|
2631
|
-
description: "Fireflies API key for GraphQL requests."
|
|
2632
|
-
},
|
|
2633
|
-
webhookSecret: {
|
|
2634
|
-
type: "string",
|
|
2635
|
-
description: "Optional webhook secret used to verify x-hub-signature HMAC payloads."
|
|
2636
|
-
}
|
|
2637
|
-
}
|
|
2638
|
-
},
|
|
2639
|
-
example: {
|
|
2640
|
-
apiKey: "fireflies-***",
|
|
2641
|
-
webhookSecret: "fireflies-webhook-secret"
|
|
2642
|
-
}
|
|
2643
|
-
},
|
|
2644
|
-
healthCheck: {
|
|
2645
|
-
method: "custom",
|
|
2646
|
-
timeoutMs: 6000
|
|
2647
|
-
},
|
|
2648
|
-
docsUrl: "https://docs.fireflies.ai/getting-started/introduction",
|
|
2649
|
-
byokSetup: {
|
|
2650
|
-
setupInstructions: "Create a Fireflies API key and optionally configure webhook settings in Developer Settings."
|
|
2651
|
-
}
|
|
2652
|
-
});
|
|
2653
|
-
function registerFirefliesIntegration(registry2) {
|
|
2654
|
-
return registry2.register(firefliesIntegrationSpec);
|
|
2655
|
-
}
|
|
2656
|
-
|
|
2657
|
-
// src/integrations/providers/fathom.ts
|
|
2658
|
-
var fathomIntegrationSpec = defineIntegration({
|
|
2659
|
-
meta: {
|
|
2660
|
-
key: "meeting-recorder.fathom",
|
|
2661
|
-
version: "1.0.0",
|
|
2662
|
-
category: "meeting-recorder",
|
|
2663
|
-
title: "Fathom Meeting Recorder",
|
|
2664
|
-
description: "Fathom External API for meetings, transcripts, and webhook events.",
|
|
2665
|
-
domain: "productivity",
|
|
2666
|
-
owners: ["platform.integrations"],
|
|
2667
|
-
tags: ["meeting-recorder", "fathom", "transcripts"],
|
|
2668
|
-
stability: StabilityEnum.Experimental
|
|
2669
|
-
},
|
|
2670
|
-
supportedModes: ["byok"],
|
|
2671
|
-
capabilities: {
|
|
2672
|
-
provides: [
|
|
2673
|
-
{ key: "meeting-recorder.meetings.read", version: "1.0.0" },
|
|
2674
|
-
{ key: "meeting-recorder.transcripts.read", version: "1.0.0" },
|
|
2675
|
-
{ key: "meeting-recorder.webhooks", version: "1.0.0" }
|
|
2676
|
-
]
|
|
2677
|
-
},
|
|
2678
|
-
configSchema: {
|
|
2679
|
-
schema: {
|
|
2680
|
-
type: "object",
|
|
2681
|
-
properties: {
|
|
2682
|
-
baseUrl: {
|
|
2683
|
-
type: "string",
|
|
2684
|
-
description: "Optional override for the Fathom API base URL. Defaults to https://api.fathom.ai/external/v1."
|
|
2685
|
-
},
|
|
2686
|
-
webhookUrl: {
|
|
2687
|
-
type: "string",
|
|
2688
|
-
description: "Webhook destination URL used when registering Fathom webhooks."
|
|
2689
|
-
},
|
|
2690
|
-
includeTranscript: {
|
|
2691
|
-
type: "boolean",
|
|
2692
|
-
description: "Include transcript data in Fathom webhook payloads."
|
|
2693
|
-
},
|
|
2694
|
-
includeSummary: {
|
|
2695
|
-
type: "boolean",
|
|
2696
|
-
description: "Include summary data in Fathom webhook payloads."
|
|
2697
|
-
},
|
|
2698
|
-
includeActionItems: {
|
|
2699
|
-
type: "boolean",
|
|
2700
|
-
description: "Include action items in Fathom webhook payloads."
|
|
2701
|
-
},
|
|
2702
|
-
includeCrmMatches: {
|
|
2703
|
-
type: "boolean",
|
|
2704
|
-
description: "Include CRM matches in Fathom webhook payloads."
|
|
2705
|
-
},
|
|
2706
|
-
triggeredFor: {
|
|
2707
|
-
type: "array",
|
|
2708
|
-
items: { type: "string" },
|
|
2709
|
-
description: "Recording scopes to trigger webhooks for (e.g., my_recordings)."
|
|
2710
|
-
}
|
|
2711
|
-
}
|
|
2712
|
-
},
|
|
2713
|
-
example: {
|
|
2714
|
-
baseUrl: "https://api.fathom.ai/external/v1",
|
|
2715
|
-
webhookUrl: "https://example.com/webhooks/fathom",
|
|
2716
|
-
includeTranscript: true,
|
|
2717
|
-
includeSummary: true,
|
|
2718
|
-
includeActionItems: false,
|
|
2719
|
-
includeCrmMatches: false,
|
|
2720
|
-
triggeredFor: ["my_recordings"]
|
|
2721
|
-
}
|
|
2722
|
-
},
|
|
2723
|
-
secretSchema: {
|
|
2724
|
-
schema: {
|
|
2725
|
-
type: "object",
|
|
2726
|
-
required: ["apiKey"],
|
|
2727
|
-
properties: {
|
|
2728
|
-
apiKey: {
|
|
2729
|
-
type: "string",
|
|
2730
|
-
description: "Fathom API key used in the X-Api-Key header."
|
|
2731
|
-
},
|
|
2732
|
-
webhookSecret: {
|
|
2733
|
-
type: "string",
|
|
2734
|
-
description: "Optional webhook secret used to verify Fathom webhook signatures."
|
|
2735
|
-
}
|
|
2736
|
-
}
|
|
2737
|
-
},
|
|
2738
|
-
example: {
|
|
2739
|
-
apiKey: "fathom-***",
|
|
2740
|
-
webhookSecret: "whsec_***"
|
|
2741
|
-
}
|
|
2742
|
-
},
|
|
2743
|
-
healthCheck: {
|
|
2744
|
-
method: "list",
|
|
2745
|
-
timeoutMs: 8000
|
|
2746
|
-
},
|
|
2747
|
-
docsUrl: "https://developers.fathom.ai/",
|
|
2748
|
-
constraints: {
|
|
2749
|
-
rateLimit: {
|
|
2750
|
-
rpm: 60
|
|
2751
|
-
}
|
|
2752
|
-
},
|
|
2753
|
-
byokSetup: {
|
|
2754
|
-
setupInstructions: "Generate an API key in Fathom settings and optionally configure webhooks for meeting content readiness."
|
|
2755
|
-
}
|
|
2756
|
-
});
|
|
2757
|
-
function registerFathomIntegration(registry2) {
|
|
2758
|
-
return registry2.register(fathomIntegrationSpec);
|
|
2759
|
-
}
|
|
2760
|
-
// src/integrations/providers/registry.ts
|
|
2761
|
-
function createDefaultIntegrationSpecRegistry() {
|
|
2762
|
-
const registry2 = new IntegrationSpecRegistry;
|
|
2763
|
-
registerStripeIntegration(registry2);
|
|
2764
|
-
registerPostmarkIntegration(registry2);
|
|
2765
|
-
registerQdrantIntegration(registry2);
|
|
2766
|
-
registerSupabaseVectorIntegration(registry2);
|
|
2767
|
-
registerSupabasePostgresIntegration(registry2);
|
|
2768
|
-
registerMistralIntegration(registry2);
|
|
2769
|
-
registerElevenLabsIntegration(registry2);
|
|
2770
|
-
registerGradiumIntegration(registry2);
|
|
2771
|
-
registerFalIntegration(registry2);
|
|
2772
|
-
registerGmailIntegration(registry2);
|
|
2773
|
-
registerGoogleCalendarIntegration(registry2);
|
|
2774
|
-
registerPosthogIntegration(registry2);
|
|
2775
|
-
registerTwilioSmsIntegration(registry2);
|
|
2776
|
-
registerGcsStorageIntegration(registry2);
|
|
2777
|
-
registerPowensIntegration(registry2);
|
|
2778
|
-
registerLinearIntegration(registry2);
|
|
2779
|
-
registerJiraIntegration(registry2);
|
|
2780
|
-
registerNotionIntegration(registry2);
|
|
2781
|
-
registerGranolaIntegration(registry2);
|
|
2782
|
-
registerTldvIntegration(registry2);
|
|
2783
|
-
registerFirefliesIntegration(registry2);
|
|
2784
|
-
registerFathomIntegration(registry2);
|
|
2785
|
-
return registry2;
|
|
2786
|
-
}
|
|
2787
|
-
// src/integrations/openbanking/models.ts
|
|
2788
|
-
import { ScalarTypeEnum as ScalarTypeEnum2, SchemaModel as SchemaModel2 } from "@contractspec/lib.schema";
|
|
2789
|
-
var BankAccountRecord = new SchemaModel2({
|
|
2790
|
-
name: "BankAccountRecord",
|
|
2791
|
-
description: "Canonical representation of a bank account synced from an open banking provider.",
|
|
2792
|
-
fields: {
|
|
2793
|
-
id: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2794
|
-
tenantId: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2795
|
-
userId: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2796
|
-
connectionId: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2797
|
-
externalId: { type: ScalarTypeEnum2.NonEmptyString(), isOptional: false },
|
|
2798
|
-
institutionId: { type: ScalarTypeEnum2.NonEmptyString(), isOptional: false },
|
|
2799
|
-
institutionName: {
|
|
2800
|
-
type: ScalarTypeEnum2.NonEmptyString(),
|
|
2801
|
-
isOptional: false
|
|
2802
|
-
},
|
|
2803
|
-
institutionLogoUrl: { type: ScalarTypeEnum2.URL(), isOptional: true },
|
|
2804
|
-
iban: { type: ScalarTypeEnum2.String_unsecure(), isOptional: true },
|
|
2805
|
-
bic: { type: ScalarTypeEnum2.String_unsecure(), isOptional: true },
|
|
2806
|
-
accountType: { type: ScalarTypeEnum2.NonEmptyString(), isOptional: false },
|
|
2807
|
-
currency: { type: ScalarTypeEnum2.Currency(), isOptional: false },
|
|
2808
|
-
displayName: { type: ScalarTypeEnum2.NonEmptyString(), isOptional: false },
|
|
2809
|
-
accountNumberMasked: {
|
|
2810
|
-
type: ScalarTypeEnum2.String_unsecure(),
|
|
2811
|
-
isOptional: true
|
|
2812
|
-
},
|
|
2813
|
-
productCode: { type: ScalarTypeEnum2.String_unsecure(), isOptional: true },
|
|
2814
|
-
balance: { type: ScalarTypeEnum2.Float_unsecure(), isOptional: true },
|
|
2815
|
-
availableBalance: {
|
|
2816
|
-
type: ScalarTypeEnum2.Float_unsecure(),
|
|
2817
|
-
isOptional: true
|
|
2818
|
-
},
|
|
2819
|
-
lastSyncedAt: { type: ScalarTypeEnum2.DateTime(), isOptional: false },
|
|
2820
|
-
createdAt: { type: ScalarTypeEnum2.DateTime(), isOptional: false },
|
|
2821
|
-
updatedAt: { type: ScalarTypeEnum2.DateTime(), isOptional: false },
|
|
2822
|
-
metadata: { type: ScalarTypeEnum2.JSONObject(), isOptional: true }
|
|
2823
|
-
}
|
|
2824
|
-
});
|
|
2825
|
-
var BankTransactionRecord = new SchemaModel2({
|
|
2826
|
-
name: "BankTransactionRecord",
|
|
2827
|
-
description: "Canonical transaction entry mapped from Powens into the open banking ledger.",
|
|
2828
|
-
fields: {
|
|
2829
|
-
id: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2830
|
-
accountId: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2831
|
-
tenantId: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2832
|
-
connectionId: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2833
|
-
externalId: { type: ScalarTypeEnum2.NonEmptyString(), isOptional: false },
|
|
2834
|
-
amount: { type: ScalarTypeEnum2.Float_unsecure(), isOptional: false },
|
|
2835
|
-
currency: { type: ScalarTypeEnum2.Currency(), isOptional: false },
|
|
2836
|
-
date: { type: ScalarTypeEnum2.DateTime(), isOptional: false },
|
|
2837
|
-
bookingDate: { type: ScalarTypeEnum2.DateTime(), isOptional: true },
|
|
2838
|
-
valueDate: { type: ScalarTypeEnum2.DateTime(), isOptional: true },
|
|
2839
|
-
description: { type: ScalarTypeEnum2.String_unsecure(), isOptional: true },
|
|
2840
|
-
counterpartyName: {
|
|
2841
|
-
type: ScalarTypeEnum2.String_unsecure(),
|
|
2842
|
-
isOptional: true
|
|
2843
|
-
},
|
|
2844
|
-
counterpartyAccount: {
|
|
2845
|
-
type: ScalarTypeEnum2.String_unsecure(),
|
|
2846
|
-
isOptional: true
|
|
2847
|
-
},
|
|
2848
|
-
merchantCategoryCode: {
|
|
2849
|
-
type: ScalarTypeEnum2.String_unsecure(),
|
|
2850
|
-
isOptional: true
|
|
2851
|
-
},
|
|
2852
|
-
rawCategory: { type: ScalarTypeEnum2.String_unsecure(), isOptional: true },
|
|
2853
|
-
standardizedCategory: {
|
|
2854
|
-
type: ScalarTypeEnum2.String_unsecure(),
|
|
2855
|
-
isOptional: true
|
|
2856
|
-
},
|
|
2857
|
-
transactionType: {
|
|
2858
|
-
type: ScalarTypeEnum2.NonEmptyString(),
|
|
2859
|
-
isOptional: false
|
|
2860
|
-
},
|
|
2861
|
-
status: { type: ScalarTypeEnum2.NonEmptyString(), isOptional: false },
|
|
2862
|
-
runningBalance: { type: ScalarTypeEnum2.Float_unsecure(), isOptional: true },
|
|
2863
|
-
metadata: { type: ScalarTypeEnum2.JSONObject(), isOptional: true },
|
|
2864
|
-
createdAt: { type: ScalarTypeEnum2.DateTime(), isOptional: false },
|
|
2865
|
-
updatedAt: { type: ScalarTypeEnum2.DateTime(), isOptional: false }
|
|
2866
|
-
}
|
|
2867
|
-
});
|
|
2868
|
-
var AccountBalanceRecord = new SchemaModel2({
|
|
2869
|
-
name: "AccountBalanceRecord",
|
|
2870
|
-
description: "Canonical balance snapshot computed from Powens balance payloads.",
|
|
2871
|
-
fields: {
|
|
2872
|
-
id: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2873
|
-
accountId: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2874
|
-
tenantId: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2875
|
-
connectionId: { type: ScalarTypeEnum2.ID(), isOptional: false },
|
|
2876
|
-
balanceType: { type: ScalarTypeEnum2.NonEmptyString(), isOptional: false },
|
|
2877
|
-
currentBalance: {
|
|
2878
|
-
type: ScalarTypeEnum2.Float_unsecure(),
|
|
2879
|
-
isOptional: false
|
|
2880
|
-
},
|
|
2881
|
-
availableBalance: {
|
|
2882
|
-
type: ScalarTypeEnum2.Float_unsecure(),
|
|
2883
|
-
isOptional: true
|
|
2884
|
-
},
|
|
2885
|
-
currency: { type: ScalarTypeEnum2.Currency(), isOptional: false },
|
|
2886
|
-
lastUpdatedAt: { type: ScalarTypeEnum2.DateTime(), isOptional: false },
|
|
2887
|
-
createdAt: { type: ScalarTypeEnum2.DateTime(), isOptional: false },
|
|
2888
|
-
metadata: { type: ScalarTypeEnum2.JSONObject(), isOptional: true }
|
|
2889
|
-
}
|
|
2890
|
-
});
|
|
2891
|
-
|
|
2892
|
-
// src/integrations/openbanking/telemetry.ts
|
|
2893
|
-
var OPENBANKING_PII_FIELDS = [
|
|
2894
|
-
"iban",
|
|
2895
|
-
"bic",
|
|
2896
|
-
"accountNumberMasked",
|
|
2897
|
-
"accountNumber",
|
|
2898
|
-
"counterpartyName",
|
|
2899
|
-
"counterpartyAccount",
|
|
2900
|
-
"description",
|
|
2901
|
-
"merchantName",
|
|
2902
|
-
"merchantCategoryCode",
|
|
2903
|
-
"reference"
|
|
2904
|
-
];
|
|
2905
|
-
var OPENBANKING_TELEMETRY_EVENTS = {
|
|
2906
|
-
accountsSynced: "openbanking.accounts.synced",
|
|
2907
|
-
accountsSyncFailed: "openbanking.accounts.sync_failed",
|
|
2908
|
-
transactionsSynced: "openbanking.transactions.synced",
|
|
2909
|
-
transactionsSyncFailed: "openbanking.transactions.sync_failed",
|
|
2910
|
-
balancesRefreshed: "openbanking.balances.refreshed",
|
|
2911
|
-
balancesRefreshFailed: "openbanking.balances.refresh_failed",
|
|
2912
|
-
overviewGenerated: "openbanking.overview.generated"
|
|
2913
|
-
};
|
|
2914
|
-
function redactOpenBankingTelemetryPayload(payload) {
|
|
2915
|
-
const redacted = {};
|
|
2916
|
-
for (const [key, value] of Object.entries(payload)) {
|
|
2917
|
-
if (OPENBANKING_PII_FIELDS.includes(key)) {
|
|
2918
|
-
redacted[key] = maskValue(value);
|
|
2919
|
-
} else if (Array.isArray(value)) {
|
|
2920
|
-
redacted[key] = value.map((item) => typeof item === "object" && item !== null ? redactOpenBankingTelemetryPayload(item) : item);
|
|
2921
|
-
} else if (typeof value === "object" && value !== null) {
|
|
2922
|
-
redacted[key] = redactOpenBankingTelemetryPayload(value);
|
|
2923
|
-
} else {
|
|
2924
|
-
redacted[key] = value;
|
|
2925
|
-
}
|
|
2926
|
-
}
|
|
2927
|
-
return redacted;
|
|
2928
|
-
}
|
|
2929
|
-
function maskValue(value) {
|
|
2930
|
-
if (value == null)
|
|
2931
|
-
return "";
|
|
2932
|
-
const str = String(value);
|
|
2933
|
-
if (str.length <= 4)
|
|
2934
|
-
return "*".repeat(str.length);
|
|
2935
|
-
return `${"*".repeat(Math.max(str.length - 4, 0))}${str.slice(-4)}`;
|
|
2936
|
-
}
|
|
2937
|
-
|
|
2938
|
-
// src/integrations/openbanking/contracts/accounts.ts
|
|
2939
|
-
import { ScalarTypeEnum as ScalarTypeEnum3, SchemaModel as SchemaModel3 } from "@contractspec/lib.schema";
|
|
2940
|
-
var OpenBankingListAccountsInput = new SchemaModel3({
|
|
2941
|
-
name: "OpenBankingListAccountsInput",
|
|
2942
|
-
description: "Parameters for listing bank accounts through the open banking provider.",
|
|
2943
|
-
fields: {
|
|
2944
|
-
tenantId: { type: ScalarTypeEnum3.ID(), isOptional: false },
|
|
2945
|
-
userId: { type: ScalarTypeEnum3.ID(), isOptional: false },
|
|
2946
|
-
connectionId: { type: ScalarTypeEnum3.ID(), isOptional: true },
|
|
2947
|
-
includeBalances: { type: ScalarTypeEnum3.Boolean(), isOptional: true },
|
|
2948
|
-
institutionId: { type: ScalarTypeEnum3.String_unsecure(), isOptional: true },
|
|
2949
|
-
cursor: { type: ScalarTypeEnum3.String_unsecure(), isOptional: true },
|
|
2950
|
-
pageSize: { type: ScalarTypeEnum3.Int_unsecure(), isOptional: true }
|
|
2951
|
-
}
|
|
2952
|
-
});
|
|
2953
|
-
var OpenBankingListAccountsOutput = new SchemaModel3({
|
|
2954
|
-
name: "OpenBankingListAccountsOutput",
|
|
2955
|
-
description: "Paginated list of bank accounts available to the tenant and user.",
|
|
2956
|
-
fields: {
|
|
2957
|
-
accounts: {
|
|
2958
|
-
type: BankAccountRecord,
|
|
2959
|
-
isOptional: false,
|
|
2960
|
-
isArray: true
|
|
2961
|
-
},
|
|
2962
|
-
nextCursor: { type: ScalarTypeEnum3.String_unsecure(), isOptional: true },
|
|
2963
|
-
hasMore: { type: ScalarTypeEnum3.Boolean(), isOptional: true }
|
|
2964
|
-
}
|
|
2965
|
-
});
|
|
2966
|
-
var OpenBankingGetAccountInput = new SchemaModel3({
|
|
2967
|
-
name: "OpenBankingGetAccountInput",
|
|
2968
|
-
description: "Parameters for retrieving a specific bank account.",
|
|
2969
|
-
fields: {
|
|
2970
|
-
tenantId: { type: ScalarTypeEnum3.ID(), isOptional: false },
|
|
2971
|
-
accountId: { type: ScalarTypeEnum3.ID(), isOptional: false },
|
|
2972
|
-
includeBalances: { type: ScalarTypeEnum3.Boolean(), isOptional: true },
|
|
2973
|
-
includeLatestTransactions: {
|
|
2974
|
-
type: ScalarTypeEnum3.Boolean(),
|
|
2975
|
-
isOptional: true
|
|
2976
|
-
}
|
|
2977
|
-
}
|
|
2978
|
-
});
|
|
2979
|
-
var OpenBankingSyncAccountsInput = new SchemaModel3({
|
|
2980
|
-
name: "OpenBankingSyncAccountsInput",
|
|
2981
|
-
description: "Command payload to trigger an account synchronisation against the open banking provider.",
|
|
2982
|
-
fields: {
|
|
2983
|
-
tenantId: { type: ScalarTypeEnum3.ID(), isOptional: false },
|
|
2984
|
-
userId: { type: ScalarTypeEnum3.ID(), isOptional: true },
|
|
2985
|
-
connectionId: { type: ScalarTypeEnum3.ID(), isOptional: false },
|
|
2986
|
-
accountIds: {
|
|
2987
|
-
type: ScalarTypeEnum3.ID(),
|
|
2988
|
-
isArray: true,
|
|
2989
|
-
isOptional: true
|
|
2990
|
-
},
|
|
2991
|
-
forceFullRefresh: { type: ScalarTypeEnum3.Boolean(), isOptional: true },
|
|
2992
|
-
triggerWorkflows: { type: ScalarTypeEnum3.Boolean(), isOptional: true }
|
|
2993
|
-
}
|
|
2994
|
-
});
|
|
2995
|
-
var OpenBankingSyncAccountsOutput = new SchemaModel3({
|
|
2996
|
-
name: "OpenBankingSyncAccountsOutput",
|
|
2997
|
-
description: "Result of a bank account synchronisation run.",
|
|
2998
|
-
fields: {
|
|
2999
|
-
synced: { type: ScalarTypeEnum3.Int_unsecure(), isOptional: false },
|
|
3000
|
-
failed: { type: ScalarTypeEnum3.Int_unsecure(), isOptional: false },
|
|
3001
|
-
errors: {
|
|
3002
|
-
type: ScalarTypeEnum3.String_unsecure(),
|
|
3003
|
-
isArray: true,
|
|
3004
|
-
isOptional: true
|
|
3005
|
-
},
|
|
3006
|
-
nextSyncSuggestedAt: {
|
|
3007
|
-
type: ScalarTypeEnum3.DateTime(),
|
|
3008
|
-
isOptional: true
|
|
3009
|
-
}
|
|
3010
|
-
}
|
|
3011
|
-
});
|
|
3012
|
-
var OpenBankingListAccounts = defineQuery({
|
|
3013
|
-
meta: {
|
|
3014
|
-
key: "openbanking.accounts.list",
|
|
3015
|
-
version: "1.0.0",
|
|
3016
|
-
description: "List bank accounts available to a tenant/user via Powens Open Banking.",
|
|
3017
|
-
goal: "Provide downstream workflows with the set of accounts accessible via the configured open banking connection.",
|
|
3018
|
-
context: "Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.",
|
|
3019
|
-
owners: ["@platform.finance"],
|
|
3020
|
-
tags: ["open-banking", "powens", "accounts"],
|
|
3021
|
-
stability: "experimental"
|
|
3022
|
-
},
|
|
3023
|
-
io: {
|
|
3024
|
-
input: OpenBankingListAccountsInput,
|
|
3025
|
-
output: OpenBankingListAccountsOutput
|
|
3026
|
-
},
|
|
3027
|
-
policy: {
|
|
3028
|
-
auth: "user"
|
|
3029
|
-
}
|
|
3030
|
-
});
|
|
3031
|
-
var OpenBankingGetAccount = defineQuery({
|
|
3032
|
-
meta: {
|
|
3033
|
-
key: "openbanking.accounts.get",
|
|
3034
|
-
version: "1.0.0",
|
|
3035
|
-
description: "Retrieve the canonical bank account record for the given account identifier.",
|
|
3036
|
-
goal: "Allow user-facing experiences and automations to display up-to-date account metadata.",
|
|
3037
|
-
context: "Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.",
|
|
3038
|
-
owners: ["@platform.finance"],
|
|
3039
|
-
tags: ["open-banking", "powens", "accounts"],
|
|
3040
|
-
stability: "experimental"
|
|
3041
|
-
},
|
|
3042
|
-
io: {
|
|
3043
|
-
input: OpenBankingGetAccountInput,
|
|
3044
|
-
output: BankAccountRecord
|
|
3045
|
-
},
|
|
3046
|
-
policy: {
|
|
3047
|
-
auth: "user"
|
|
3048
|
-
}
|
|
3049
|
-
});
|
|
3050
|
-
var OpenBankingSyncAccounts = defineCommand({
|
|
3051
|
-
meta: {
|
|
3052
|
-
key: "openbanking.accounts.sync",
|
|
3053
|
-
version: "1.0.0",
|
|
3054
|
-
description: "Initiate a synchronisation run to refresh bank account metadata from Powens.",
|
|
3055
|
-
goal: "Keep canonical bank account records aligned with the external open banking provider.",
|
|
3056
|
-
context: "Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.",
|
|
3057
|
-
owners: ["@platform.finance"],
|
|
3058
|
-
tags: ["open-banking", "powens", "accounts"],
|
|
3059
|
-
stability: "experimental"
|
|
3060
|
-
},
|
|
3061
|
-
io: {
|
|
3062
|
-
input: OpenBankingSyncAccountsInput,
|
|
3063
|
-
output: OpenBankingSyncAccountsOutput
|
|
3064
|
-
},
|
|
3065
|
-
policy: {
|
|
3066
|
-
auth: "admin"
|
|
3067
|
-
},
|
|
3068
|
-
telemetry: {
|
|
3069
|
-
success: {
|
|
3070
|
-
event: { key: OPENBANKING_TELEMETRY_EVENTS.accountsSynced },
|
|
3071
|
-
properties: ({ input, output }) => {
|
|
3072
|
-
const payload = input;
|
|
3073
|
-
const result = output;
|
|
3074
|
-
return {
|
|
3075
|
-
tenantId: payload?.tenantId,
|
|
3076
|
-
connectionId: payload?.connectionId,
|
|
3077
|
-
synced: result?.synced,
|
|
3078
|
-
failed: result?.failed
|
|
3079
|
-
};
|
|
3080
|
-
}
|
|
3081
|
-
},
|
|
3082
|
-
failure: {
|
|
3083
|
-
event: { key: OPENBANKING_TELEMETRY_EVENTS.accountsSyncFailed },
|
|
3084
|
-
properties: ({ input, error }) => {
|
|
3085
|
-
const payload = input;
|
|
3086
|
-
return {
|
|
3087
|
-
tenantId: payload?.tenantId,
|
|
3088
|
-
connectionId: payload?.connectionId,
|
|
3089
|
-
error: error instanceof Error ? error.message : String(error ?? "unknown")
|
|
3090
|
-
};
|
|
3091
|
-
}
|
|
3092
|
-
}
|
|
3093
|
-
}
|
|
3094
|
-
});
|
|
3095
|
-
var openBankingAccountContracts = {
|
|
3096
|
-
OpenBankingListAccounts,
|
|
3097
|
-
OpenBankingGetAccount,
|
|
3098
|
-
OpenBankingSyncAccounts
|
|
3099
|
-
};
|
|
3100
|
-
function registerOpenBankingAccountContracts(registry3) {
|
|
3101
|
-
return registry3.register(OpenBankingListAccounts).register(OpenBankingGetAccount).register(OpenBankingSyncAccounts);
|
|
3102
|
-
}
|
|
3103
|
-
|
|
3104
|
-
// src/integrations/openbanking/contracts/transactions.ts
|
|
3105
|
-
import { ScalarTypeEnum as ScalarTypeEnum4, SchemaModel as SchemaModel4 } from "@contractspec/lib.schema";
|
|
3106
|
-
var OpenBankingListTransactionsInput = new SchemaModel4({
|
|
3107
|
-
name: "OpenBankingListTransactionsInput",
|
|
3108
|
-
description: "Parameters for listing bank transactions from the canonical ledger.",
|
|
3109
|
-
fields: {
|
|
3110
|
-
tenantId: { type: ScalarTypeEnum4.ID(), isOptional: false },
|
|
3111
|
-
accountId: { type: ScalarTypeEnum4.ID(), isOptional: false },
|
|
3112
|
-
from: { type: ScalarTypeEnum4.DateTime(), isOptional: true },
|
|
3113
|
-
to: { type: ScalarTypeEnum4.DateTime(), isOptional: true },
|
|
3114
|
-
cursor: { type: ScalarTypeEnum4.String_unsecure(), isOptional: true },
|
|
3115
|
-
pageSize: { type: ScalarTypeEnum4.Int_unsecure(), isOptional: true },
|
|
3116
|
-
direction: { type: ScalarTypeEnum4.String_unsecure(), isOptional: true },
|
|
3117
|
-
minimumAmount: { type: ScalarTypeEnum4.Float_unsecure(), isOptional: true },
|
|
3118
|
-
maximumAmount: { type: ScalarTypeEnum4.Float_unsecure(), isOptional: true },
|
|
3119
|
-
category: { type: ScalarTypeEnum4.String_unsecure(), isOptional: true }
|
|
3120
|
-
}
|
|
3121
|
-
});
|
|
3122
|
-
var OpenBankingListTransactionsOutput = new SchemaModel4({
|
|
3123
|
-
name: "OpenBankingListTransactionsOutput",
|
|
3124
|
-
description: "Paginated list of transactions for a bank account.",
|
|
3125
|
-
fields: {
|
|
3126
|
-
transactions: {
|
|
3127
|
-
type: BankTransactionRecord,
|
|
3128
|
-
isOptional: false,
|
|
3129
|
-
isArray: true
|
|
3130
|
-
},
|
|
3131
|
-
nextCursor: { type: ScalarTypeEnum4.String_unsecure(), isOptional: true },
|
|
3132
|
-
hasMore: { type: ScalarTypeEnum4.Boolean(), isOptional: true }
|
|
3133
|
-
}
|
|
3134
|
-
});
|
|
3135
|
-
var OpenBankingSyncTransactionsInput = new SchemaModel4({
|
|
3136
|
-
name: "OpenBankingSyncTransactionsInput",
|
|
3137
|
-
description: "Command payload to synchronise transactions from the open banking provider into the canonical ledger.",
|
|
3138
|
-
fields: {
|
|
3139
|
-
tenantId: { type: ScalarTypeEnum4.ID(), isOptional: false },
|
|
3140
|
-
accountId: { type: ScalarTypeEnum4.ID(), isOptional: false },
|
|
3141
|
-
from: { type: ScalarTypeEnum4.DateTime(), isOptional: true },
|
|
3142
|
-
to: { type: ScalarTypeEnum4.DateTime(), isOptional: true },
|
|
3143
|
-
connectionId: { type: ScalarTypeEnum4.ID(), isOptional: true },
|
|
3144
|
-
includePending: { type: ScalarTypeEnum4.Boolean(), isOptional: true },
|
|
3145
|
-
backfillDays: { type: ScalarTypeEnum4.Int_unsecure(), isOptional: true }
|
|
3146
|
-
}
|
|
3147
|
-
});
|
|
3148
|
-
var OpenBankingSyncTransactionsOutput = new SchemaModel4({
|
|
3149
|
-
name: "OpenBankingSyncTransactionsOutput",
|
|
3150
|
-
description: "Result of a transaction synchronisation run.",
|
|
3151
|
-
fields: {
|
|
3152
|
-
synced: { type: ScalarTypeEnum4.Int_unsecure(), isOptional: false },
|
|
3153
|
-
failed: { type: ScalarTypeEnum4.Int_unsecure(), isOptional: false },
|
|
3154
|
-
earliestSyncedAt: { type: ScalarTypeEnum4.DateTime(), isOptional: true },
|
|
3155
|
-
latestSyncedAt: { type: ScalarTypeEnum4.DateTime(), isOptional: true },
|
|
3156
|
-
nextSinceToken: {
|
|
3157
|
-
type: ScalarTypeEnum4.String_unsecure(),
|
|
3158
|
-
isOptional: true
|
|
3159
|
-
},
|
|
3160
|
-
errors: {
|
|
3161
|
-
type: ScalarTypeEnum4.String_unsecure(),
|
|
3162
|
-
isArray: true,
|
|
3163
|
-
isOptional: true
|
|
3164
|
-
}
|
|
3165
|
-
}
|
|
3166
|
-
});
|
|
3167
|
-
var OpenBankingListTransactions = defineQuery({
|
|
3168
|
-
meta: {
|
|
3169
|
-
key: "openbanking.transactions.list",
|
|
3170
|
-
version: "1.0.0",
|
|
3171
|
-
description: "List bank transactions that have been normalised into the canonical ledger.",
|
|
3172
|
-
goal: "Allow downstream analytics and UI surfaces to page through canonical bank transactions.",
|
|
3173
|
-
context: "Used by Pocket Family Office dashboards, reconciliation workflows, and analytics data views.",
|
|
3174
|
-
owners: ["@platform.finance"],
|
|
3175
|
-
tags: ["open-banking", "powens", "transactions"],
|
|
3176
|
-
stability: "experimental"
|
|
3177
|
-
},
|
|
3178
|
-
io: {
|
|
3179
|
-
input: OpenBankingListTransactionsInput,
|
|
3180
|
-
output: OpenBankingListTransactionsOutput
|
|
3181
|
-
},
|
|
3182
|
-
policy: {
|
|
3183
|
-
auth: "user"
|
|
3184
|
-
}
|
|
3185
|
-
});
|
|
3186
|
-
var OpenBankingSyncTransactions = defineCommand({
|
|
3187
|
-
meta: {
|
|
3188
|
-
key: "openbanking.transactions.sync",
|
|
3189
|
-
version: "1.0.0",
|
|
3190
|
-
description: "Synchronise transactions for a bank account by calling the configured open banking provider.",
|
|
3191
|
-
goal: "Ensure the canonical transaction ledger stays aligned with the external provider.",
|
|
3192
|
-
context: "Triggered by scheduled workflows or on-demand actions when activity is expected on an account.",
|
|
3193
|
-
owners: ["@platform.finance"],
|
|
3194
|
-
tags: ["open-banking", "powens", "transactions"],
|
|
3195
|
-
stability: "experimental"
|
|
3196
|
-
},
|
|
3197
|
-
io: {
|
|
3198
|
-
input: OpenBankingSyncTransactionsInput,
|
|
3199
|
-
output: OpenBankingSyncTransactionsOutput
|
|
3200
|
-
},
|
|
3201
|
-
policy: {
|
|
3202
|
-
auth: "admin"
|
|
3203
|
-
},
|
|
3204
|
-
telemetry: {
|
|
3205
|
-
success: {
|
|
3206
|
-
event: { key: OPENBANKING_TELEMETRY_EVENTS.transactionsSynced },
|
|
3207
|
-
properties: ({ input, output }) => {
|
|
3208
|
-
const payload = input;
|
|
3209
|
-
const result = output;
|
|
3210
|
-
return {
|
|
3211
|
-
tenantId: payload?.tenantId,
|
|
3212
|
-
accountId: payload?.accountId,
|
|
3213
|
-
synced: result?.synced,
|
|
3214
|
-
failed: result?.failed,
|
|
3215
|
-
earliestSyncedAt: result?.earliestSyncedAt,
|
|
3216
|
-
latestSyncedAt: result?.latestSyncedAt
|
|
3217
|
-
};
|
|
3218
|
-
}
|
|
3219
|
-
},
|
|
3220
|
-
failure: {
|
|
3221
|
-
event: { key: OPENBANKING_TELEMETRY_EVENTS.transactionsSyncFailed },
|
|
3222
|
-
properties: ({ input, error }) => {
|
|
3223
|
-
const payload = input;
|
|
3224
|
-
return {
|
|
3225
|
-
tenantId: payload?.tenantId,
|
|
3226
|
-
accountId: payload?.accountId,
|
|
3227
|
-
error: error instanceof Error ? error.message : String(error ?? "unknown")
|
|
3228
|
-
};
|
|
3229
|
-
}
|
|
3230
|
-
}
|
|
3231
|
-
}
|
|
3232
|
-
});
|
|
3233
|
-
var openBankingTransactionContracts = {
|
|
3234
|
-
OpenBankingListTransactions,
|
|
3235
|
-
OpenBankingSyncTransactions
|
|
3236
|
-
};
|
|
3237
|
-
function registerOpenBankingTransactionContracts(registry3) {
|
|
3238
|
-
return registry3.register(OpenBankingListTransactions).register(OpenBankingSyncTransactions);
|
|
3239
|
-
}
|
|
3240
|
-
|
|
3241
|
-
// src/integrations/openbanking/contracts/balances.ts
|
|
3242
|
-
import { ScalarTypeEnum as ScalarTypeEnum5, SchemaModel as SchemaModel5 } from "@contractspec/lib.schema";
|
|
3243
|
-
var OpenBankingGetBalancesInput = new SchemaModel5({
|
|
3244
|
-
name: "OpenBankingGetBalancesInput",
|
|
3245
|
-
description: "Parameters for retrieving bank account balances from the canonical ledger.",
|
|
3246
|
-
fields: {
|
|
3247
|
-
tenantId: { type: ScalarTypeEnum5.ID(), isOptional: false },
|
|
3248
|
-
accountId: { type: ScalarTypeEnum5.ID(), isOptional: false },
|
|
3249
|
-
balanceTypes: {
|
|
3250
|
-
type: ScalarTypeEnum5.String_unsecure(),
|
|
3251
|
-
isArray: true,
|
|
3252
|
-
isOptional: true
|
|
3253
|
-
}
|
|
3254
|
-
}
|
|
3255
|
-
});
|
|
3256
|
-
var OpenBankingGetBalancesOutput = new SchemaModel5({
|
|
3257
|
-
name: "OpenBankingGetBalancesOutput",
|
|
3258
|
-
description: "Canonical balances for a bank account.",
|
|
3259
|
-
fields: {
|
|
3260
|
-
balances: {
|
|
3261
|
-
type: AccountBalanceRecord,
|
|
3262
|
-
isOptional: false,
|
|
3263
|
-
isArray: true
|
|
3264
|
-
},
|
|
3265
|
-
asOf: { type: ScalarTypeEnum5.DateTime(), isOptional: true }
|
|
3266
|
-
}
|
|
3267
|
-
});
|
|
3268
|
-
var OpenBankingRefreshBalancesInput = new SchemaModel5({
|
|
3269
|
-
name: "OpenBankingRefreshBalancesInput",
|
|
3270
|
-
description: "Command payload to refresh balances for a bank account via the open banking provider.",
|
|
3271
|
-
fields: {
|
|
3272
|
-
tenantId: { type: ScalarTypeEnum5.ID(), isOptional: false },
|
|
3273
|
-
accountId: { type: ScalarTypeEnum5.ID(), isOptional: false },
|
|
3274
|
-
connectionId: { type: ScalarTypeEnum5.ID(), isOptional: true },
|
|
3275
|
-
balanceTypes: {
|
|
3276
|
-
type: ScalarTypeEnum5.String_unsecure(),
|
|
3277
|
-
isArray: true,
|
|
3278
|
-
isOptional: true
|
|
3279
|
-
},
|
|
3280
|
-
forceRefresh: { type: ScalarTypeEnum5.Boolean(), isOptional: true }
|
|
3281
|
-
}
|
|
3282
|
-
});
|
|
3283
|
-
var OpenBankingRefreshBalancesOutput = new SchemaModel5({
|
|
3284
|
-
name: "OpenBankingRefreshBalancesOutput",
|
|
3285
|
-
description: "Result of a balance refresh against the open banking provider.",
|
|
3286
|
-
fields: {
|
|
3287
|
-
balances: {
|
|
3288
|
-
type: AccountBalanceRecord,
|
|
3289
|
-
isOptional: false,
|
|
3290
|
-
isArray: true
|
|
3291
|
-
},
|
|
3292
|
-
refreshedAt: { type: ScalarTypeEnum5.DateTime(), isOptional: false },
|
|
3293
|
-
errors: {
|
|
3294
|
-
type: ScalarTypeEnum5.String_unsecure(),
|
|
3295
|
-
isArray: true,
|
|
3296
|
-
isOptional: true
|
|
3297
|
-
}
|
|
3298
|
-
}
|
|
3299
|
-
});
|
|
3300
|
-
var OpenBankingGetBalances = defineQuery({
|
|
3301
|
-
meta: {
|
|
3302
|
-
key: "openbanking.balances.get",
|
|
3303
|
-
version: "1.0.0",
|
|
3304
|
-
description: "Retrieve the latest cached balances for a bank account.",
|
|
3305
|
-
goal: "Expose current and available balances required by dashboards and analytics.",
|
|
3306
|
-
context: "Used by Pocket Family Office UI surfaces and automation steps that require balance totals prior to generating summaries.",
|
|
3307
|
-
owners: ["@platform.finance"],
|
|
3308
|
-
tags: ["open-banking", "powens", "balances"],
|
|
3309
|
-
stability: "experimental"
|
|
3310
|
-
},
|
|
3311
|
-
io: {
|
|
3312
|
-
input: OpenBankingGetBalancesInput,
|
|
3313
|
-
output: OpenBankingGetBalancesOutput
|
|
3314
|
-
},
|
|
3315
|
-
policy: {
|
|
3316
|
-
auth: "user"
|
|
3317
|
-
}
|
|
3318
|
-
});
|
|
3319
|
-
var OpenBankingRefreshBalances = defineCommand({
|
|
3320
|
-
meta: {
|
|
3321
|
-
key: "openbanking.balances.refresh",
|
|
3322
|
-
version: "1.0.0",
|
|
3323
|
-
description: "Refresh balances for a bank account via the configured open banking provider.",
|
|
3324
|
-
goal: "Ensure canonical balance records reflect the latest values from Powens.",
|
|
3325
|
-
context: "Triggered by scheduled workflows before generating summaries or forecasting cashflow.",
|
|
3326
|
-
owners: ["@platform.finance"],
|
|
3327
|
-
tags: ["open-banking", "powens", "balances"],
|
|
3328
|
-
stability: "experimental"
|
|
3329
|
-
},
|
|
3330
|
-
io: {
|
|
3331
|
-
input: OpenBankingRefreshBalancesInput,
|
|
3332
|
-
output: OpenBankingRefreshBalancesOutput
|
|
3333
|
-
},
|
|
3334
|
-
policy: {
|
|
3335
|
-
auth: "admin"
|
|
3336
|
-
},
|
|
3337
|
-
telemetry: {
|
|
3338
|
-
success: {
|
|
3339
|
-
event: { key: OPENBANKING_TELEMETRY_EVENTS.balancesRefreshed },
|
|
3340
|
-
properties: ({ input, output }) => {
|
|
3341
|
-
const payload = input;
|
|
3342
|
-
const result = output;
|
|
3343
|
-
return {
|
|
3344
|
-
tenantId: payload?.tenantId,
|
|
3345
|
-
accountId: payload?.accountId,
|
|
3346
|
-
refreshedAt: result?.refreshedAt,
|
|
3347
|
-
balanceCount: Array.isArray(result?.balances) ? result?.balances.length : undefined
|
|
3348
|
-
};
|
|
3349
|
-
}
|
|
3350
|
-
},
|
|
3351
|
-
failure: {
|
|
3352
|
-
event: { key: OPENBANKING_TELEMETRY_EVENTS.balancesRefreshFailed },
|
|
3353
|
-
properties: ({ input, error }) => {
|
|
3354
|
-
const payload = input;
|
|
3355
|
-
return {
|
|
3356
|
-
tenantId: payload?.tenantId,
|
|
3357
|
-
accountId: payload?.accountId,
|
|
3358
|
-
error: error instanceof Error ? error.message : String(error ?? "unknown")
|
|
3359
|
-
};
|
|
3360
|
-
}
|
|
3361
|
-
}
|
|
3362
|
-
}
|
|
3363
|
-
});
|
|
3364
|
-
var openBankingBalanceContracts = {
|
|
3365
|
-
OpenBankingGetBalances,
|
|
3366
|
-
OpenBankingRefreshBalances
|
|
3367
|
-
};
|
|
3368
|
-
function registerOpenBankingBalanceContracts(registry3) {
|
|
3369
|
-
return registry3.register(OpenBankingGetBalances).register(OpenBankingRefreshBalances);
|
|
3370
|
-
}
|
|
3371
|
-
|
|
3372
|
-
// src/integrations/openbanking/openbanking.feature.ts
|
|
3373
|
-
var OpenBankingFeature = defineFeature({
|
|
3374
|
-
meta: {
|
|
3375
|
-
key: "openbanking",
|
|
3376
|
-
version: "1.0.0",
|
|
3377
|
-
title: "Open Banking Integration",
|
|
3378
|
-
description: "Open banking account sync, balance refresh, and transaction synchronization",
|
|
3379
|
-
domain: "integrations",
|
|
3380
|
-
owners: ["@platform.finance"],
|
|
3381
|
-
tags: ["open-banking", "powens", "finance", "banking"],
|
|
3382
|
-
stability: "experimental"
|
|
3383
|
-
},
|
|
3384
|
-
operations: [
|
|
3385
|
-
{ key: "openbanking.accounts.sync", version: "1.0.0" },
|
|
3386
|
-
{ key: "openbanking.accounts.list", version: "1.0.0" },
|
|
3387
|
-
{ key: "openbanking.accounts.get", version: "1.0.0" },
|
|
3388
|
-
{ key: "openbanking.balances.refresh", version: "1.0.0" },
|
|
3389
|
-
{ key: "openbanking.balances.get", version: "1.0.0" },
|
|
3390
|
-
{ key: "openbanking.transactions.sync", version: "1.0.0" },
|
|
3391
|
-
{ key: "openbanking.transactions.list", version: "1.0.0" }
|
|
3392
|
-
],
|
|
3393
|
-
events: [],
|
|
3394
|
-
presentations: [],
|
|
3395
|
-
opToPresentation: [],
|
|
3396
|
-
presentationsTargets: [],
|
|
3397
|
-
capabilities: {
|
|
3398
|
-
provides: [{ key: "openbanking", version: "1.0.0" }],
|
|
3399
|
-
requires: [{ key: "identity", version: "1.0.0" }]
|
|
3400
|
-
}
|
|
3401
|
-
});
|
|
3402
|
-
// src/integrations/openbanking/contracts/index.ts
|
|
3403
|
-
function registerOpenBankingContracts(registry3) {
|
|
3404
|
-
return registerOpenBankingBalanceContracts(registerOpenBankingTransactionContracts(registerOpenBankingAccountContracts(registry3)));
|
|
3405
|
-
}
|
|
3406
|
-
|
|
3407
|
-
// src/integrations/openbanking/guards.ts
|
|
3408
|
-
var PRIMARY_SLOT_ID = "primaryOpenBanking";
|
|
3409
|
-
function ensurePrimaryOpenBankingIntegration(config) {
|
|
3410
|
-
const integration = config.integrations.find((item) => item.slot.slotId === PRIMARY_SLOT_ID);
|
|
3411
|
-
if (!integration) {
|
|
3412
|
-
return {
|
|
3413
|
-
ok: false,
|
|
3414
|
-
error: "primaryOpenBanking slot is not bound in the resolved app config."
|
|
3415
|
-
};
|
|
3416
|
-
}
|
|
3417
|
-
const status = integration.connection.status;
|
|
3418
|
-
if (status === "error" || status === "disconnected") {
|
|
3419
|
-
return {
|
|
3420
|
-
ok: false,
|
|
3421
|
-
integration,
|
|
3422
|
-
error: `primaryOpenBanking connection is in status "${status}".`
|
|
3423
|
-
};
|
|
3424
|
-
}
|
|
3425
|
-
if (status === "unknown") {
|
|
3426
|
-
return {
|
|
3427
|
-
ok: false,
|
|
3428
|
-
integration,
|
|
3429
|
-
error: "primaryOpenBanking connection health is unknown."
|
|
3430
|
-
};
|
|
3431
|
-
}
|
|
3432
|
-
return { ok: true, integration };
|
|
3433
|
-
}
|
|
3434
|
-
function assertPrimaryOpenBankingReady(config) {
|
|
3435
|
-
const result = ensurePrimaryOpenBankingIntegration(config);
|
|
3436
|
-
if (!result.ok) {
|
|
3437
|
-
throw new Error(result.error ?? "Open banking integration not available.");
|
|
3438
|
-
}
|
|
3439
|
-
if (!result.integration) {
|
|
3440
|
-
throw new Error(result.error ?? "Open banking integration not available.");
|
|
3441
|
-
}
|
|
3442
|
-
return result.integration;
|
|
3443
|
-
}
|
|
3444
|
-
|
|
3445
|
-
// src/integrations/meeting-recorder/models.ts
|
|
3446
|
-
import { ScalarTypeEnum as ScalarTypeEnum6, SchemaModel as SchemaModel6 } from "@contractspec/lib.schema";
|
|
3447
|
-
var MeetingParticipantRecord = new SchemaModel6({
|
|
3448
|
-
name: "MeetingParticipantRecord",
|
|
3449
|
-
description: "Canonical participant entry for meetings and transcripts from recorder providers.",
|
|
3450
|
-
fields: {
|
|
3451
|
-
id: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3452
|
-
externalId: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3453
|
-
name: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3454
|
-
email: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3455
|
-
role: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3456
|
-
isExternal: { type: ScalarTypeEnum6.Boolean(), isOptional: true },
|
|
3457
|
-
metadata: { type: ScalarTypeEnum6.JSONObject(), isOptional: true }
|
|
3458
|
-
}
|
|
3459
|
-
});
|
|
3460
|
-
var MeetingTranscriptSegmentRecord = new SchemaModel6({
|
|
3461
|
-
name: "MeetingTranscriptSegmentRecord",
|
|
3462
|
-
description: "A single transcript segment with speaker attribution.",
|
|
3463
|
-
fields: {
|
|
3464
|
-
index: { type: ScalarTypeEnum6.Int_unsecure(), isOptional: true },
|
|
3465
|
-
speakerId: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3466
|
-
speakerName: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3467
|
-
speakerEmail: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3468
|
-
text: { type: ScalarTypeEnum6.String_unsecure(), isOptional: false },
|
|
3469
|
-
startTimeMs: { type: ScalarTypeEnum6.Float_unsecure(), isOptional: true },
|
|
3470
|
-
endTimeMs: { type: ScalarTypeEnum6.Float_unsecure(), isOptional: true },
|
|
3471
|
-
startTime: { type: ScalarTypeEnum6.DateTime(), isOptional: true },
|
|
3472
|
-
endTime: { type: ScalarTypeEnum6.DateTime(), isOptional: true },
|
|
3473
|
-
confidence: { type: ScalarTypeEnum6.Float_unsecure(), isOptional: true },
|
|
3474
|
-
metadata: { type: ScalarTypeEnum6.JSONObject(), isOptional: true }
|
|
3475
|
-
}
|
|
3476
|
-
});
|
|
3477
|
-
var MeetingRecord = new SchemaModel6({
|
|
3478
|
-
name: "MeetingRecord",
|
|
3479
|
-
description: "Canonical meeting metadata synced from meeting recorder providers.",
|
|
3480
|
-
fields: {
|
|
3481
|
-
id: { type: ScalarTypeEnum6.ID(), isOptional: false },
|
|
3482
|
-
tenantId: { type: ScalarTypeEnum6.ID(), isOptional: false },
|
|
3483
|
-
connectionId: { type: ScalarTypeEnum6.ID(), isOptional: false },
|
|
3484
|
-
externalId: { type: ScalarTypeEnum6.NonEmptyString(), isOptional: false },
|
|
3485
|
-
title: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3486
|
-
summary: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3487
|
-
organizer: { type: MeetingParticipantRecord, isOptional: true },
|
|
3488
|
-
invitees: {
|
|
3489
|
-
type: MeetingParticipantRecord,
|
|
3490
|
-
isArray: true,
|
|
3491
|
-
isOptional: true
|
|
3492
|
-
},
|
|
3493
|
-
participants: {
|
|
3494
|
-
type: MeetingParticipantRecord,
|
|
3495
|
-
isArray: true,
|
|
3496
|
-
isOptional: true
|
|
3497
|
-
},
|
|
3498
|
-
scheduledStartAt: { type: ScalarTypeEnum6.DateTime(), isOptional: true },
|
|
3499
|
-
scheduledEndAt: { type: ScalarTypeEnum6.DateTime(), isOptional: true },
|
|
3500
|
-
recordingStartAt: { type: ScalarTypeEnum6.DateTime(), isOptional: true },
|
|
3501
|
-
recordingEndAt: { type: ScalarTypeEnum6.DateTime(), isOptional: true },
|
|
3502
|
-
durationSeconds: {
|
|
3503
|
-
type: ScalarTypeEnum6.Float_unsecure(),
|
|
3504
|
-
isOptional: true
|
|
3505
|
-
},
|
|
3506
|
-
meetingUrl: { type: ScalarTypeEnum6.URL(), isOptional: true },
|
|
3507
|
-
recordingUrl: { type: ScalarTypeEnum6.URL(), isOptional: true },
|
|
3508
|
-
shareUrl: { type: ScalarTypeEnum6.URL(), isOptional: true },
|
|
3509
|
-
sourcePlatform: {
|
|
3510
|
-
type: ScalarTypeEnum6.String_unsecure(),
|
|
3511
|
-
isOptional: true
|
|
3512
|
-
},
|
|
3513
|
-
language: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3514
|
-
transcriptAvailable: { type: ScalarTypeEnum6.Boolean(), isOptional: true },
|
|
3515
|
-
createdAt: { type: ScalarTypeEnum6.DateTime(), isOptional: true },
|
|
3516
|
-
updatedAt: { type: ScalarTypeEnum6.DateTime(), isOptional: true },
|
|
3517
|
-
metadata: { type: ScalarTypeEnum6.JSONObject(), isOptional: true }
|
|
3518
|
-
}
|
|
3519
|
-
});
|
|
3520
|
-
var MeetingTranscriptRecord = new SchemaModel6({
|
|
3521
|
-
name: "MeetingTranscriptRecord",
|
|
3522
|
-
description: "Canonical transcript payload for a recorded meeting.",
|
|
3523
|
-
fields: {
|
|
3524
|
-
id: { type: ScalarTypeEnum6.ID(), isOptional: false },
|
|
3525
|
-
meetingId: { type: ScalarTypeEnum6.ID(), isOptional: false },
|
|
3526
|
-
tenantId: { type: ScalarTypeEnum6.ID(), isOptional: false },
|
|
3527
|
-
connectionId: { type: ScalarTypeEnum6.ID(), isOptional: false },
|
|
3528
|
-
externalId: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3529
|
-
format: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3530
|
-
text: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3531
|
-
segments: {
|
|
3532
|
-
type: MeetingTranscriptSegmentRecord,
|
|
3533
|
-
isArray: true,
|
|
3534
|
-
isOptional: true
|
|
3535
|
-
},
|
|
3536
|
-
language: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3537
|
-
sourceUrl: { type: ScalarTypeEnum6.URL(), isOptional: true },
|
|
3538
|
-
generatedAt: { type: ScalarTypeEnum6.DateTime(), isOptional: true },
|
|
3539
|
-
metadata: { type: ScalarTypeEnum6.JSONObject(), isOptional: true },
|
|
3540
|
-
raw: { type: ScalarTypeEnum6.JSON(), isOptional: true }
|
|
3541
|
-
}
|
|
3542
|
-
});
|
|
3543
|
-
var MeetingRecorderWebhookEventRecord = new SchemaModel6({
|
|
3544
|
-
name: "MeetingRecorderWebhookEventRecord",
|
|
3545
|
-
description: "Normalized webhook event from a meeting recorder provider.",
|
|
3546
|
-
fields: {
|
|
3547
|
-
id: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3548
|
-
providerKey: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3549
|
-
eventType: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3550
|
-
meetingId: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3551
|
-
transcriptId: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3552
|
-
recordingId: { type: ScalarTypeEnum6.String_unsecure(), isOptional: true },
|
|
3553
|
-
receivedAt: { type: ScalarTypeEnum6.DateTime(), isOptional: true },
|
|
3554
|
-
verified: { type: ScalarTypeEnum6.Boolean(), isOptional: true },
|
|
3555
|
-
payload: { type: ScalarTypeEnum6.JSON(), isOptional: true },
|
|
3556
|
-
metadata: { type: ScalarTypeEnum6.JSONObject(), isOptional: true }
|
|
3557
|
-
}
|
|
3558
|
-
});
|
|
3559
|
-
|
|
3560
|
-
// src/integrations/meeting-recorder/contracts/meetings.ts
|
|
3561
|
-
import { ScalarTypeEnum as ScalarTypeEnum7, SchemaModel as SchemaModel7 } from "@contractspec/lib.schema";
|
|
3562
|
-
var MeetingRecorderListMeetingsInput = new SchemaModel7({
|
|
3563
|
-
name: "MeetingRecorderListMeetingsInput",
|
|
3564
|
-
description: "Parameters for listing meetings from a meeting recorder provider.",
|
|
3565
|
-
fields: {
|
|
3566
|
-
tenantId: { type: ScalarTypeEnum7.ID(), isOptional: false },
|
|
3567
|
-
connectionId: { type: ScalarTypeEnum7.ID(), isOptional: true },
|
|
3568
|
-
from: { type: ScalarTypeEnum7.DateTime(), isOptional: true },
|
|
3569
|
-
to: { type: ScalarTypeEnum7.DateTime(), isOptional: true },
|
|
3570
|
-
cursor: { type: ScalarTypeEnum7.String_unsecure(), isOptional: true },
|
|
3571
|
-
pageSize: { type: ScalarTypeEnum7.Int_unsecure(), isOptional: true },
|
|
3572
|
-
query: { type: ScalarTypeEnum7.String_unsecure(), isOptional: true },
|
|
3573
|
-
organizerEmail: {
|
|
3574
|
-
type: ScalarTypeEnum7.String_unsecure(),
|
|
3575
|
-
isOptional: true
|
|
3576
|
-
},
|
|
3577
|
-
participantEmail: {
|
|
3578
|
-
type: ScalarTypeEnum7.String_unsecure(),
|
|
3579
|
-
isOptional: true
|
|
3580
|
-
},
|
|
3581
|
-
includeTranscript: { type: ScalarTypeEnum7.Boolean(), isOptional: true },
|
|
3582
|
-
includeSummary: { type: ScalarTypeEnum7.Boolean(), isOptional: true }
|
|
3583
|
-
}
|
|
3584
|
-
});
|
|
3585
|
-
var MeetingRecorderListMeetingsOutput = new SchemaModel7({
|
|
3586
|
-
name: "MeetingRecorderListMeetingsOutput",
|
|
3587
|
-
description: "Paginated list of meetings for a recorder provider.",
|
|
3588
|
-
fields: {
|
|
3589
|
-
meetings: {
|
|
3590
|
-
type: MeetingRecord,
|
|
3591
|
-
isOptional: false,
|
|
3592
|
-
isArray: true
|
|
3593
|
-
},
|
|
3594
|
-
nextCursor: { type: ScalarTypeEnum7.String_unsecure(), isOptional: true },
|
|
3595
|
-
hasMore: { type: ScalarTypeEnum7.Boolean(), isOptional: true }
|
|
3596
|
-
}
|
|
3597
|
-
});
|
|
3598
|
-
var MeetingRecorderGetMeetingInput = new SchemaModel7({
|
|
3599
|
-
name: "MeetingRecorderGetMeetingInput",
|
|
3600
|
-
description: "Parameters for retrieving a single meeting record.",
|
|
3601
|
-
fields: {
|
|
3602
|
-
tenantId: { type: ScalarTypeEnum7.ID(), isOptional: false },
|
|
3603
|
-
meetingId: { type: ScalarTypeEnum7.ID(), isOptional: false },
|
|
3604
|
-
connectionId: { type: ScalarTypeEnum7.ID(), isOptional: true },
|
|
3605
|
-
includeTranscript: { type: ScalarTypeEnum7.Boolean(), isOptional: true },
|
|
3606
|
-
includeSummary: { type: ScalarTypeEnum7.Boolean(), isOptional: true }
|
|
3607
|
-
}
|
|
3608
|
-
});
|
|
3609
|
-
var MeetingRecorderListMeetings = defineQuery({
|
|
3610
|
-
meta: {
|
|
3611
|
-
key: "meeting-recorder.meetings.list",
|
|
3612
|
-
version: "1.0.0",
|
|
3613
|
-
description: "List meetings recorded by the configured meeting provider.",
|
|
3614
|
-
goal: "Provide downstream workflows with recent meetings and metadata.",
|
|
3615
|
-
context: "Used by integration hubs and sync workflows to enumerate meetings before pulling transcripts.",
|
|
3616
|
-
owners: ["@platform.integrations"],
|
|
3617
|
-
tags: ["meeting-recorder", "meetings", "transcripts"],
|
|
3618
|
-
stability: "experimental"
|
|
3619
|
-
},
|
|
3620
|
-
io: {
|
|
3621
|
-
input: MeetingRecorderListMeetingsInput,
|
|
3622
|
-
output: MeetingRecorderListMeetingsOutput
|
|
3623
|
-
},
|
|
3624
|
-
policy: {
|
|
3625
|
-
auth: "user"
|
|
3626
|
-
}
|
|
3627
|
-
});
|
|
3628
|
-
var MeetingRecorderGetMeeting = defineQuery({
|
|
3629
|
-
meta: {
|
|
3630
|
-
key: "meeting-recorder.meetings.get",
|
|
3631
|
-
version: "1.0.0",
|
|
3632
|
-
description: "Retrieve metadata for a single meeting recording.",
|
|
3633
|
-
goal: "Allow downstream experiences to display detailed meeting metadata.",
|
|
3634
|
-
context: "Used when drilling into a specific meeting from a transcript or integration dashboard.",
|
|
3635
|
-
owners: ["@platform.integrations"],
|
|
3636
|
-
tags: ["meeting-recorder", "meetings"],
|
|
3637
|
-
stability: "experimental"
|
|
3638
|
-
},
|
|
3639
|
-
io: {
|
|
3640
|
-
input: MeetingRecorderGetMeetingInput,
|
|
3641
|
-
output: MeetingRecord
|
|
3642
|
-
},
|
|
3643
|
-
policy: {
|
|
3644
|
-
auth: "user"
|
|
3645
|
-
}
|
|
3646
|
-
});
|
|
3647
|
-
var meetingRecorderMeetingContracts = {
|
|
3648
|
-
MeetingRecorderListMeetings,
|
|
3649
|
-
MeetingRecorderGetMeeting
|
|
3650
|
-
};
|
|
3651
|
-
function registerMeetingRecorderMeetingContracts(registry3) {
|
|
3652
|
-
return registry3.register(MeetingRecorderListMeetings).register(MeetingRecorderGetMeeting);
|
|
3653
|
-
}
|
|
3654
|
-
|
|
3655
|
-
// src/integrations/meeting-recorder/telemetry.ts
|
|
3656
|
-
var MEETING_RECORDER_PII_FIELDS = [
|
|
3657
|
-
"email",
|
|
3658
|
-
"organizerEmail",
|
|
3659
|
-
"participantEmail",
|
|
3660
|
-
"participants",
|
|
3661
|
-
"invitees",
|
|
3662
|
-
"attendees",
|
|
3663
|
-
"speakerName",
|
|
3664
|
-
"speakerEmail",
|
|
3665
|
-
"name",
|
|
3666
|
-
"phone",
|
|
3667
|
-
"phoneNumber",
|
|
3668
|
-
"displayName"
|
|
3669
|
-
];
|
|
3670
|
-
var MEETING_RECORDER_TELEMETRY_EVENTS = {
|
|
3671
|
-
meetingsSynced: "meeting-recorder.meetings.synced",
|
|
3672
|
-
meetingsSyncFailed: "meeting-recorder.meetings.sync_failed",
|
|
3673
|
-
transcriptsFetched: "meeting-recorder.transcripts.fetched",
|
|
3674
|
-
transcriptsFetchFailed: "meeting-recorder.transcripts.fetch_failed",
|
|
3675
|
-
transcriptsSynced: "meeting-recorder.transcripts.synced",
|
|
3676
|
-
transcriptsSyncFailed: "meeting-recorder.transcripts.sync_failed",
|
|
3677
|
-
webhookReceived: "meeting-recorder.webhooks.received",
|
|
3678
|
-
webhookRejected: "meeting-recorder.webhooks.rejected"
|
|
3679
|
-
};
|
|
3680
|
-
function redactMeetingRecorderTelemetryPayload(payload) {
|
|
3681
|
-
const redacted = {};
|
|
3682
|
-
for (const [key, value] of Object.entries(payload)) {
|
|
3683
|
-
if (MEETING_RECORDER_PII_FIELDS.includes(key)) {
|
|
3684
|
-
redacted[key] = maskValue2(value);
|
|
3685
|
-
} else if (Array.isArray(value)) {
|
|
3686
|
-
redacted[key] = value.map((item) => typeof item === "object" && item !== null ? redactMeetingRecorderTelemetryPayload(item) : item);
|
|
3687
|
-
} else if (typeof value === "object" && value !== null) {
|
|
3688
|
-
redacted[key] = redactMeetingRecorderTelemetryPayload(value);
|
|
3689
|
-
} else {
|
|
3690
|
-
redacted[key] = value;
|
|
3691
|
-
}
|
|
3692
|
-
}
|
|
3693
|
-
return redacted;
|
|
3694
|
-
}
|
|
3695
|
-
function maskValue2(value) {
|
|
3696
|
-
if (value == null)
|
|
3697
|
-
return "";
|
|
3698
|
-
const str = String(value);
|
|
3699
|
-
if (str.length <= 4)
|
|
3700
|
-
return "*".repeat(str.length);
|
|
3701
|
-
return `${"*".repeat(Math.max(str.length - 4, 0))}${str.slice(-4)}`;
|
|
3702
|
-
}
|
|
3703
|
-
|
|
3704
|
-
// src/integrations/meeting-recorder/contracts/transcripts.ts
|
|
3705
|
-
import { ScalarTypeEnum as ScalarTypeEnum8, SchemaModel as SchemaModel8 } from "@contractspec/lib.schema";
|
|
3706
|
-
var MeetingRecorderGetTranscriptInput = new SchemaModel8({
|
|
3707
|
-
name: "MeetingRecorderGetTranscriptInput",
|
|
3708
|
-
description: "Parameters for fetching a meeting transcript.",
|
|
3709
|
-
fields: {
|
|
3710
|
-
tenantId: { type: ScalarTypeEnum8.ID(), isOptional: false },
|
|
3711
|
-
meetingId: { type: ScalarTypeEnum8.ID(), isOptional: false },
|
|
3712
|
-
connectionId: { type: ScalarTypeEnum8.ID(), isOptional: true },
|
|
3713
|
-
includeSegments: { type: ScalarTypeEnum8.Boolean(), isOptional: true },
|
|
3714
|
-
format: { type: ScalarTypeEnum8.String_unsecure(), isOptional: true }
|
|
3715
|
-
}
|
|
3716
|
-
});
|
|
3717
|
-
var MeetingRecorderSyncTranscriptInput = new SchemaModel8({
|
|
3718
|
-
name: "MeetingRecorderSyncTranscriptInput",
|
|
3719
|
-
description: "Command payload to synchronise meeting transcripts.",
|
|
3720
|
-
fields: {
|
|
3721
|
-
tenantId: { type: ScalarTypeEnum8.ID(), isOptional: false },
|
|
3722
|
-
meetingId: { type: ScalarTypeEnum8.ID(), isOptional: false },
|
|
3723
|
-
connectionId: { type: ScalarTypeEnum8.ID(), isOptional: true },
|
|
3724
|
-
forceRefresh: { type: ScalarTypeEnum8.Boolean(), isOptional: true },
|
|
3725
|
-
triggerWebhooks: { type: ScalarTypeEnum8.Boolean(), isOptional: true }
|
|
3726
|
-
}
|
|
3727
|
-
});
|
|
3728
|
-
var MeetingRecorderSyncTranscriptOutput = new SchemaModel8({
|
|
3729
|
-
name: "MeetingRecorderSyncTranscriptOutput",
|
|
3730
|
-
description: "Result of a transcript synchronisation run.",
|
|
3731
|
-
fields: {
|
|
3732
|
-
synced: { type: ScalarTypeEnum8.Int_unsecure(), isOptional: false },
|
|
3733
|
-
failed: { type: ScalarTypeEnum8.Int_unsecure(), isOptional: false },
|
|
3734
|
-
errors: {
|
|
3735
|
-
type: ScalarTypeEnum8.String_unsecure(),
|
|
3736
|
-
isArray: true,
|
|
3737
|
-
isOptional: true
|
|
3738
|
-
},
|
|
3739
|
-
nextSyncSuggestedAt: {
|
|
3740
|
-
type: ScalarTypeEnum8.DateTime(),
|
|
3741
|
-
isOptional: true
|
|
3742
|
-
}
|
|
3743
|
-
}
|
|
3744
|
-
});
|
|
3745
|
-
var MeetingRecorderGetTranscript = defineQuery({
|
|
3746
|
-
meta: {
|
|
3747
|
-
key: "meeting-recorder.transcripts.get",
|
|
3748
|
-
version: "1.0.0",
|
|
3749
|
-
description: "Fetch the transcript for a specific meeting recording.",
|
|
3750
|
-
goal: "Expose meeting transcripts for downstream knowledge and analytics flows.",
|
|
3751
|
-
context: "Used by agents and dashboards to access the transcript for a selected meeting.",
|
|
3752
|
-
owners: ["@platform.integrations"],
|
|
3753
|
-
tags: ["meeting-recorder", "transcripts"],
|
|
3754
|
-
stability: "experimental"
|
|
3755
|
-
},
|
|
3756
|
-
io: {
|
|
3757
|
-
input: MeetingRecorderGetTranscriptInput,
|
|
3758
|
-
output: MeetingTranscriptRecord
|
|
3759
|
-
},
|
|
3760
|
-
policy: {
|
|
3761
|
-
auth: "user"
|
|
3762
|
-
}
|
|
3763
|
-
});
|
|
3764
|
-
var MeetingRecorderSyncTranscript = defineCommand({
|
|
3765
|
-
meta: {
|
|
3766
|
-
key: "meeting-recorder.transcripts.sync",
|
|
3767
|
-
version: "1.0.0",
|
|
3768
|
-
description: "Trigger a transcript sync from the meeting recorder provider.",
|
|
3769
|
-
goal: "Keep canonical transcripts aligned with external meeting providers.",
|
|
3770
|
-
context: "Invoked by scheduled jobs or webhooks when new transcripts are ready.",
|
|
3771
|
-
owners: ["@platform.integrations"],
|
|
3772
|
-
tags: ["meeting-recorder", "transcripts", "sync"],
|
|
3773
|
-
stability: "experimental"
|
|
3774
|
-
},
|
|
3775
|
-
io: {
|
|
3776
|
-
input: MeetingRecorderSyncTranscriptInput,
|
|
3777
|
-
output: MeetingRecorderSyncTranscriptOutput
|
|
3778
|
-
},
|
|
3779
|
-
policy: {
|
|
3780
|
-
auth: "admin"
|
|
3781
|
-
},
|
|
3782
|
-
telemetry: {
|
|
3783
|
-
success: {
|
|
3784
|
-
event: { key: MEETING_RECORDER_TELEMETRY_EVENTS.transcriptsSynced },
|
|
3785
|
-
properties: ({ input, output }) => {
|
|
3786
|
-
const payload = input;
|
|
3787
|
-
const result = output;
|
|
3788
|
-
return {
|
|
3789
|
-
tenantId: payload?.tenantId,
|
|
3790
|
-
meetingId: payload?.meetingId,
|
|
3791
|
-
synced: result?.synced,
|
|
3792
|
-
failed: result?.failed
|
|
3793
|
-
};
|
|
3794
|
-
}
|
|
3795
|
-
},
|
|
3796
|
-
failure: {
|
|
3797
|
-
event: { key: MEETING_RECORDER_TELEMETRY_EVENTS.transcriptsSyncFailed },
|
|
3798
|
-
properties: ({ input, error }) => {
|
|
3799
|
-
const payload = input;
|
|
3800
|
-
return {
|
|
3801
|
-
tenantId: payload?.tenantId,
|
|
3802
|
-
meetingId: payload?.meetingId,
|
|
3803
|
-
error: error instanceof Error ? error.message : String(error ?? "unknown")
|
|
3804
|
-
};
|
|
3805
|
-
}
|
|
3806
|
-
}
|
|
3807
|
-
}
|
|
3808
|
-
});
|
|
3809
|
-
var meetingRecorderTranscriptContracts = {
|
|
3810
|
-
MeetingRecorderGetTranscript,
|
|
3811
|
-
MeetingRecorderSyncTranscript
|
|
3812
|
-
};
|
|
3813
|
-
function registerMeetingRecorderTranscriptContracts(registry3) {
|
|
3814
|
-
return registry3.register(MeetingRecorderGetTranscript).register(MeetingRecorderSyncTranscript);
|
|
3815
|
-
}
|
|
3816
|
-
|
|
3817
|
-
// src/integrations/meeting-recorder/contracts/webhooks.ts
|
|
3818
|
-
import { ScalarTypeEnum as ScalarTypeEnum9, SchemaModel as SchemaModel9 } from "@contractspec/lib.schema";
|
|
3819
|
-
var MeetingRecorderWebhookIngestInput = new SchemaModel9({
|
|
3820
|
-
name: "MeetingRecorderWebhookIngestInput",
|
|
3821
|
-
description: "Payload for ingesting a meeting recorder webhook event.",
|
|
3822
|
-
fields: {
|
|
3823
|
-
tenantId: { type: ScalarTypeEnum9.ID(), isOptional: false },
|
|
3824
|
-
providerKey: { type: ScalarTypeEnum9.String_unsecure(), isOptional: false },
|
|
3825
|
-
connectionId: { type: ScalarTypeEnum9.ID(), isOptional: true },
|
|
3826
|
-
webhookId: { type: ScalarTypeEnum9.String_unsecure(), isOptional: true },
|
|
3827
|
-
headers: { type: ScalarTypeEnum9.JSON(), isOptional: true },
|
|
3828
|
-
payload: { type: ScalarTypeEnum9.JSON(), isOptional: false },
|
|
3829
|
-
receivedAt: { type: ScalarTypeEnum9.DateTime(), isOptional: true }
|
|
3830
|
-
}
|
|
3831
|
-
});
|
|
3832
|
-
var MeetingRecorderWebhookIngestOutput = new SchemaModel9({
|
|
3833
|
-
name: "MeetingRecorderWebhookIngestOutput",
|
|
3834
|
-
description: "Result of processing a meeting recorder webhook.",
|
|
3835
|
-
fields: {
|
|
3836
|
-
accepted: { type: ScalarTypeEnum9.Boolean(), isOptional: false },
|
|
3837
|
-
event: { type: MeetingRecorderWebhookEventRecord, isOptional: true }
|
|
3838
|
-
}
|
|
3839
|
-
});
|
|
3840
|
-
var MeetingRecorderWebhookIngest = defineCommand({
|
|
3841
|
-
meta: {
|
|
3842
|
-
key: "meeting-recorder.webhooks.ingest",
|
|
3843
|
-
version: "1.0.0",
|
|
3844
|
-
description: "Ingest a webhook from a meeting recorder provider.",
|
|
3845
|
-
goal: "Trigger transcript syncs or downstream workflows without polling.",
|
|
3846
|
-
context: "Used by webhook handlers to validate and normalize provider webhook events.",
|
|
3847
|
-
owners: ["@platform.integrations"],
|
|
3848
|
-
tags: ["meeting-recorder", "webhooks", "transcripts"],
|
|
3849
|
-
stability: "experimental"
|
|
3850
|
-
},
|
|
3851
|
-
io: {
|
|
3852
|
-
input: MeetingRecorderWebhookIngestInput,
|
|
3853
|
-
output: MeetingRecorderWebhookIngestOutput
|
|
3854
|
-
},
|
|
3855
|
-
policy: {
|
|
3856
|
-
auth: "admin"
|
|
3857
|
-
}
|
|
3858
|
-
});
|
|
3859
|
-
var meetingRecorderWebhookContracts = {
|
|
3860
|
-
MeetingRecorderWebhookIngest
|
|
3861
|
-
};
|
|
3862
|
-
function registerMeetingRecorderWebhookContracts(registry3) {
|
|
3863
|
-
return registry3.register(MeetingRecorderWebhookIngest);
|
|
3864
|
-
}
|
|
3865
|
-
|
|
3866
|
-
// src/integrations/meeting-recorder/meeting-recorder.feature.ts
|
|
3867
|
-
var MeetingRecorderFeature = defineFeature({
|
|
3868
|
-
meta: {
|
|
3869
|
-
key: "meeting-recorder",
|
|
3870
|
-
version: "1.0.0",
|
|
3871
|
-
title: "Meeting Recorder Integration",
|
|
3872
|
-
description: "Meeting metadata, transcript retrieval, and webhook ingestion for meeting recorder providers.",
|
|
3873
|
-
domain: "integrations",
|
|
3874
|
-
owners: ["@platform.integrations"],
|
|
3875
|
-
tags: ["meeting-recorder", "transcripts", "integrations"],
|
|
3876
|
-
stability: "experimental"
|
|
3877
|
-
},
|
|
3878
|
-
operations: [
|
|
3879
|
-
{ key: "meeting-recorder.meetings.list", version: "1.0.0" },
|
|
3880
|
-
{ key: "meeting-recorder.meetings.get", version: "1.0.0" },
|
|
3881
|
-
{ key: "meeting-recorder.transcripts.get", version: "1.0.0" },
|
|
3882
|
-
{ key: "meeting-recorder.transcripts.sync", version: "1.0.0" },
|
|
3883
|
-
{ key: "meeting-recorder.webhooks.ingest", version: "1.0.0" }
|
|
3884
|
-
],
|
|
3885
|
-
events: [],
|
|
3886
|
-
presentations: [],
|
|
3887
|
-
opToPresentation: [],
|
|
3888
|
-
presentationsTargets: [],
|
|
3889
|
-
capabilities: {
|
|
3890
|
-
provides: [{ key: "meeting-recorder", version: "1.0.0" }],
|
|
3891
|
-
requires: [{ key: "identity", version: "1.0.0" }]
|
|
3892
|
-
}
|
|
3893
|
-
});
|
|
3894
|
-
// src/integrations/meeting-recorder/contracts/index.ts
|
|
3895
|
-
function registerMeetingRecorderContracts(registry3) {
|
|
3896
|
-
return registerMeetingRecorderWebhookContracts(registerMeetingRecorderTranscriptContracts(registerMeetingRecorderMeetingContracts(registry3)));
|
|
3897
|
-
}
|
|
3898
|
-
export {
|
|
3899
|
-
twilioSmsIntegrationSpec,
|
|
3900
|
-
tldvIntegrationSpec,
|
|
3901
|
-
supabaseVectorIntegrationSpec,
|
|
3902
|
-
supabasePostgresIntegrationSpec,
|
|
3903
|
-
stripeIntegrationSpec,
|
|
3904
|
-
registerTwilioSmsIntegration,
|
|
3905
|
-
registerTldvIntegration,
|
|
3906
|
-
registerSupabaseVectorIntegration,
|
|
3907
|
-
registerSupabasePostgresIntegration,
|
|
3908
|
-
registerStripeIntegration,
|
|
3909
|
-
registerQdrantIntegration,
|
|
3910
|
-
registerPowensIntegration,
|
|
3911
|
-
registerPostmarkIntegration,
|
|
3912
|
-
registerPosthogIntegration,
|
|
3913
|
-
registerOpenBankingContracts,
|
|
3914
|
-
registerNotionIntegration,
|
|
3915
|
-
registerMistralIntegration,
|
|
3916
|
-
registerMeetingRecorderContracts,
|
|
3917
|
-
registerLinearIntegration,
|
|
3918
|
-
registerJiraIntegration,
|
|
3919
|
-
registerGranolaIntegration,
|
|
3920
|
-
registerGradiumIntegration,
|
|
3921
|
-
registerGoogleCalendarIntegration,
|
|
3922
|
-
registerGmailIntegration,
|
|
3923
|
-
registerGcsStorageIntegration,
|
|
3924
|
-
registerFirefliesIntegration,
|
|
3925
|
-
registerFathomIntegration,
|
|
3926
|
-
registerFalIntegration,
|
|
3927
|
-
registerElevenLabsIntegration,
|
|
3928
|
-
redactPostHogLLMTelemetryPayload,
|
|
3929
|
-
redactOpenBankingTelemetryPayload,
|
|
3930
|
-
redactMeetingRecorderTelemetryPayload,
|
|
3931
|
-
qdrantIntegrationSpec,
|
|
3932
|
-
powensIntegrationSpec,
|
|
3933
|
-
postmarkIntegrationSpec,
|
|
3934
|
-
posthogLLMTelemetrySpec,
|
|
3935
|
-
posthogIntegrationSpec,
|
|
3936
|
-
notionIntegrationSpec,
|
|
3937
|
-
mistralIntegrationSpec,
|
|
3938
|
-
makeIntegrationSpecKey,
|
|
3939
|
-
linearIntegrationSpec,
|
|
3940
|
-
jiraIntegrationSpec,
|
|
3941
|
-
granolaIntegrationSpec,
|
|
3942
|
-
gradiumIntegrationSpec,
|
|
3943
|
-
googleCalendarIntegrationSpec,
|
|
3944
|
-
gmailIntegrationSpec,
|
|
3945
|
-
gcsStorageIntegrationSpec,
|
|
3946
|
-
firefliesIntegrationSpec,
|
|
3947
|
-
fathomIntegrationSpec,
|
|
3948
|
-
falIntegrationSpec,
|
|
3949
|
-
ensurePrimaryOpenBankingIntegration,
|
|
3950
|
-
elevenLabsIntegrationSpec,
|
|
3951
|
-
defineIntegration,
|
|
3952
|
-
createDefaultIntegrationSpecRegistry,
|
|
3953
|
-
assertPrimaryOpenBankingReady,
|
|
3954
|
-
POSTHOG_LLM_TELEMETRY_EVENTS,
|
|
3955
|
-
POSTHOG_LLM_PII_FIELDS,
|
|
3956
|
-
POSTHOG_EVALUATION_TEMPLATES,
|
|
3957
|
-
OpenBankingSyncTransactions,
|
|
3958
|
-
OpenBankingSyncAccounts,
|
|
3959
|
-
OpenBankingRefreshBalances,
|
|
3960
|
-
OpenBankingListTransactions,
|
|
3961
|
-
OpenBankingListAccounts,
|
|
3962
|
-
OpenBankingGetBalances,
|
|
3963
|
-
OpenBankingGetAccount,
|
|
3964
|
-
OpenBankingFeature,
|
|
3965
|
-
OPENBANKING_TELEMETRY_EVENTS,
|
|
3966
|
-
OPENBANKING_PII_FIELDS,
|
|
3967
|
-
MeetingTranscriptSegmentRecord,
|
|
3968
|
-
MeetingTranscriptRecord as MeetingTranscriptRecordModel,
|
|
3969
|
-
MeetingRecorderWebhookIngest,
|
|
3970
|
-
MeetingRecorderWebhookEventRecord,
|
|
3971
|
-
MeetingRecorderSyncTranscript,
|
|
3972
|
-
MeetingRecorderListMeetings,
|
|
3973
|
-
MeetingRecorderGetTranscript,
|
|
3974
|
-
MeetingRecorderGetMeeting,
|
|
3975
|
-
MeetingRecorderFeature,
|
|
3976
|
-
MeetingRecord as MeetingRecordModel,
|
|
3977
|
-
MeetingParticipantRecord,
|
|
3978
|
-
MEETING_RECORDER_TELEMETRY_EVENTS,
|
|
3979
|
-
MEETING_RECORDER_PII_FIELDS,
|
|
3980
|
-
IntegrationSpecRegistry,
|
|
3981
|
-
BankTransactionRecord,
|
|
3982
|
-
BankAccountRecord,
|
|
3983
|
-
AccountBalanceRecord
|
|
3984
|
-
};
|