@kelpie/server 0.1.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/LICENSE +661 -0
- package/README.md +57 -0
- package/dist/app.d.ts +36 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +98 -0
- package/dist/app.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/actor.d.ts +71 -0
- package/dist/lib/actor.d.ts.map +1 -0
- package/dist/lib/actor.js +48 -0
- package/dist/lib/actor.js.map +1 -0
- package/dist/lib/changes.d.ts +17 -0
- package/dist/lib/changes.d.ts.map +1 -0
- package/dist/lib/changes.js +35 -0
- package/dist/lib/changes.js.map +1 -0
- package/dist/lib/columns.d.ts +152 -0
- package/dist/lib/columns.d.ts.map +1 -0
- package/dist/lib/columns.js +126 -0
- package/dist/lib/columns.js.map +1 -0
- package/dist/lib/config.d.ts +36 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +52 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/database.d.ts +57 -0
- package/dist/lib/database.d.ts.map +1 -0
- package/dist/lib/database.js +91 -0
- package/dist/lib/database.js.map +1 -0
- package/dist/lib/dates.d.ts +11 -0
- package/dist/lib/dates.d.ts.map +1 -0
- package/dist/lib/dates.js +17 -0
- package/dist/lib/dates.js.map +1 -0
- package/dist/lib/email.d.ts +42 -0
- package/dist/lib/email.d.ts.map +1 -0
- package/dist/lib/email.js +38 -0
- package/dist/lib/email.js.map +1 -0
- package/dist/lib/errors.d.ts +76 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +102 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/http.d.ts +59 -0
- package/dist/lib/http.d.ts.map +1 -0
- package/dist/lib/http.js +89 -0
- package/dist/lib/http.js.map +1 -0
- package/dist/lib/ids.d.ts +55 -0
- package/dist/lib/ids.d.ts.map +1 -0
- package/dist/lib/ids.js +56 -0
- package/dist/lib/ids.js.map +1 -0
- package/dist/lib/logger.d.ts +22 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +43 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/moduleConfig.d.ts +14 -0
- package/dist/lib/moduleConfig.d.ts.map +1 -0
- package/dist/lib/moduleConfig.js +56 -0
- package/dist/lib/moduleConfig.js.map +1 -0
- package/dist/lib/normalisation.d.ts +19 -0
- package/dist/lib/normalisation.d.ts.map +1 -0
- package/dist/lib/normalisation.js +32 -0
- package/dist/lib/normalisation.js.map +1 -0
- package/dist/lib/pagination.d.ts +104 -0
- package/dist/lib/pagination.d.ts.map +1 -0
- package/dist/lib/pagination.js +189 -0
- package/dist/lib/pagination.js.map +1 -0
- package/dist/lib/passwords.d.ts +32 -0
- package/dist/lib/passwords.d.ts.map +1 -0
- package/dist/lib/passwords.js +51 -0
- package/dist/lib/passwords.js.map +1 -0
- package/dist/lib/search.d.ts +11 -0
- package/dist/lib/search.d.ts.map +1 -0
- package/dist/lib/search.js +25 -0
- package/dist/lib/search.js.map +1 -0
- package/dist/lib/secrets.d.ts +40 -0
- package/dist/lib/secrets.d.ts.map +1 -0
- package/dist/lib/secrets.js +152 -0
- package/dist/lib/secrets.js.map +1 -0
- package/dist/lib/timezones.d.ts +38 -0
- package/dist/lib/timezones.d.ts.map +1 -0
- package/dist/lib/timezones.js +55 -0
- package/dist/lib/timezones.js.map +1 -0
- package/dist/lib/tokens.d.ts +10 -0
- package/dist/lib/tokens.d.ts.map +1 -0
- package/dist/lib/tokens.js +31 -0
- package/dist/lib/tokens.js.map +1 -0
- package/dist/lib/url.d.ts +25 -0
- package/dist/lib/url.d.ts.map +1 -0
- package/dist/lib/url.js +41 -0
- package/dist/lib/url.js.map +1 -0
- package/dist/modules/activities/index.d.ts +18 -0
- package/dist/modules/activities/index.d.ts.map +1 -0
- package/dist/modules/activities/index.js +34 -0
- package/dist/modules/activities/index.js.map +1 -0
- package/dist/modules/activities/recorder.d.ts +53 -0
- package/dist/modules/activities/recorder.d.ts.map +1 -0
- package/dist/modules/activities/recorder.js +36 -0
- package/dist/modules/activities/recorder.js.map +1 -0
- package/dist/modules/activities/repository.d.ts +52 -0
- package/dist/modules/activities/repository.d.ts.map +1 -0
- package/dist/modules/activities/repository.js +127 -0
- package/dist/modules/activities/repository.js.map +1 -0
- package/dist/modules/activities/routes.d.ts +17 -0
- package/dist/modules/activities/routes.d.ts.map +1 -0
- package/dist/modules/activities/routes.js +45 -0
- package/dist/modules/activities/routes.js.map +1 -0
- package/dist/modules/activities/schema.d.ts +188 -0
- package/dist/modules/activities/schema.d.ts.map +1 -0
- package/dist/modules/activities/schema.js +34 -0
- package/dist/modules/activities/schema.js.map +1 -0
- package/dist/modules/activities/service.d.ts +32 -0
- package/dist/modules/activities/service.d.ts.map +1 -0
- package/dist/modules/activities/service.js +28 -0
- package/dist/modules/activities/service.js.map +1 -0
- package/dist/modules/activities/tools.d.ts +4 -0
- package/dist/modules/activities/tools.d.ts.map +1 -0
- package/dist/modules/activities/tools.js +26 -0
- package/dist/modules/activities/tools.js.map +1 -0
- package/dist/modules/activities/wording.d.ts +79 -0
- package/dist/modules/activities/wording.d.ts.map +1 -0
- package/dist/modules/activities/wording.js +134 -0
- package/dist/modules/activities/wording.js.map +1 -0
- package/dist/modules/agent-tasks/catalog.d.ts +16 -0
- package/dist/modules/agent-tasks/catalog.d.ts.map +1 -0
- package/dist/modules/agent-tasks/catalog.js +694 -0
- package/dist/modules/agent-tasks/catalog.js.map +1 -0
- package/dist/modules/agent-tasks/dispatch.d.ts +61 -0
- package/dist/modules/agent-tasks/dispatch.d.ts.map +1 -0
- package/dist/modules/agent-tasks/dispatch.js +139 -0
- package/dist/modules/agent-tasks/dispatch.js.map +1 -0
- package/dist/modules/agent-tasks/index.d.ts +17 -0
- package/dist/modules/agent-tasks/index.d.ts.map +1 -0
- package/dist/modules/agent-tasks/index.js +54 -0
- package/dist/modules/agent-tasks/index.js.map +1 -0
- package/dist/modules/agent-tasks/prompt.d.ts +41 -0
- package/dist/modules/agent-tasks/prompt.d.ts.map +1 -0
- package/dist/modules/agent-tasks/prompt.js +78 -0
- package/dist/modules/agent-tasks/prompt.js.map +1 -0
- package/dist/modules/agent-tasks/repository.d.ts +32 -0
- package/dist/modules/agent-tasks/repository.d.ts.map +1 -0
- package/dist/modules/agent-tasks/repository.js +83 -0
- package/dist/modules/agent-tasks/repository.js.map +1 -0
- package/dist/modules/agent-tasks/resolve.d.ts +44 -0
- package/dist/modules/agent-tasks/resolve.d.ts.map +1 -0
- package/dist/modules/agent-tasks/resolve.js +396 -0
- package/dist/modules/agent-tasks/resolve.js.map +1 -0
- package/dist/modules/agent-tasks/routes.d.ts +55 -0
- package/dist/modules/agent-tasks/routes.d.ts.map +1 -0
- package/dist/modules/agent-tasks/routes.js +173 -0
- package/dist/modules/agent-tasks/routes.js.map +1 -0
- package/dist/modules/agent-tasks/schema.d.ts +346 -0
- package/dist/modules/agent-tasks/schema.d.ts.map +1 -0
- package/dist/modules/agent-tasks/schema.js +47 -0
- package/dist/modules/agent-tasks/schema.js.map +1 -0
- package/dist/modules/agent-tasks/service.d.ts +79 -0
- package/dist/modules/agent-tasks/service.d.ts.map +1 -0
- package/dist/modules/agent-tasks/service.js +210 -0
- package/dist/modules/agent-tasks/service.js.map +1 -0
- package/dist/modules/agent-tasks/wire.d.ts +35 -0
- package/dist/modules/agent-tasks/wire.d.ts.map +1 -0
- package/dist/modules/agent-tasks/wire.js +31 -0
- package/dist/modules/agent-tasks/wire.js.map +1 -0
- package/dist/modules/api-keys/index.d.ts +9 -0
- package/dist/modules/api-keys/index.d.ts.map +1 -0
- package/dist/modules/api-keys/index.js +29 -0
- package/dist/modules/api-keys/index.js.map +1 -0
- package/dist/modules/api-keys/keys.d.ts +25 -0
- package/dist/modules/api-keys/keys.d.ts.map +1 -0
- package/dist/modules/api-keys/keys.js +40 -0
- package/dist/modules/api-keys/keys.js.map +1 -0
- package/dist/modules/api-keys/repository.d.ts +15 -0
- package/dist/modules/api-keys/repository.d.ts.map +1 -0
- package/dist/modules/api-keys/repository.js +48 -0
- package/dist/modules/api-keys/repository.js.map +1 -0
- package/dist/modules/api-keys/routes.d.ts +8 -0
- package/dist/modules/api-keys/routes.d.ts.map +1 -0
- package/dist/modules/api-keys/routes.js +52 -0
- package/dist/modules/api-keys/routes.js.map +1 -0
- package/dist/modules/api-keys/schema.d.ts +166 -0
- package/dist/modules/api-keys/schema.d.ts.map +1 -0
- package/dist/modules/api-keys/schema.js +23 -0
- package/dist/modules/api-keys/schema.js.map +1 -0
- package/dist/modules/api-keys/service.d.ts +37 -0
- package/dist/modules/api-keys/service.d.ts.map +1 -0
- package/dist/modules/api-keys/service.js +95 -0
- package/dist/modules/api-keys/service.js.map +1 -0
- package/dist/modules/attachedRecords.d.ts +39 -0
- package/dist/modules/attachedRecords.d.ts.map +1 -0
- package/dist/modules/attachedRecords.js +52 -0
- package/dist/modules/attachedRecords.js.map +1 -0
- package/dist/modules/auth/actor.d.ts +11 -0
- package/dist/modules/auth/actor.d.ts.map +1 -0
- package/dist/modules/auth/actor.js +10 -0
- package/dist/modules/auth/actor.js.map +1 -0
- package/dist/modules/auth/credentials.d.ts +18 -0
- package/dist/modules/auth/credentials.d.ts.map +1 -0
- package/dist/modules/auth/credentials.js +105 -0
- package/dist/modules/auth/credentials.js.map +1 -0
- package/dist/modules/auth/index.d.ts +3 -0
- package/dist/modules/auth/index.d.ts.map +1 -0
- package/dist/modules/auth/index.js +41 -0
- package/dist/modules/auth/index.js.map +1 -0
- package/dist/modules/auth/preferences.d.ts +34 -0
- package/dist/modules/auth/preferences.d.ts.map +1 -0
- package/dist/modules/auth/preferences.js +30 -0
- package/dist/modules/auth/preferences.js.map +1 -0
- package/dist/modules/auth/repository.d.ts +54 -0
- package/dist/modules/auth/repository.d.ts.map +1 -0
- package/dist/modules/auth/repository.js +137 -0
- package/dist/modules/auth/repository.js.map +1 -0
- package/dist/modules/auth/routes.d.ts +10 -0
- package/dist/modules/auth/routes.d.ts.map +1 -0
- package/dist/modules/auth/routes.js +181 -0
- package/dist/modules/auth/routes.js.map +1 -0
- package/dist/modules/auth/schema.d.ts +530 -0
- package/dist/modules/auth/schema.d.ts.map +1 -0
- package/dist/modules/auth/schema.js +67 -0
- package/dist/modules/auth/schema.js.map +1 -0
- package/dist/modules/auth/service.d.ts +73 -0
- package/dist/modules/auth/service.d.ts.map +1 -0
- package/dist/modules/auth/service.js +288 -0
- package/dist/modules/auth/service.js.map +1 -0
- package/dist/modules/auth/session.d.ts +16 -0
- package/dist/modules/auth/session.d.ts.map +1 -0
- package/dist/modules/auth/session.js +30 -0
- package/dist/modules/auth/session.js.map +1 -0
- package/dist/modules/companies/index.d.ts +9 -0
- package/dist/modules/companies/index.d.ts.map +1 -0
- package/dist/modules/companies/index.js +37 -0
- package/dist/modules/companies/index.js.map +1 -0
- package/dist/modules/companies/repository.d.ts +40 -0
- package/dist/modules/companies/repository.d.ts.map +1 -0
- package/dist/modules/companies/repository.js +112 -0
- package/dist/modules/companies/repository.js.map +1 -0
- package/dist/modules/companies/routes.d.ts +89 -0
- package/dist/modules/companies/routes.d.ts.map +1 -0
- package/dist/modules/companies/routes.js +125 -0
- package/dist/modules/companies/routes.js.map +1 -0
- package/dist/modules/companies/schema.d.ts +381 -0
- package/dist/modules/companies/schema.d.ts.map +1 -0
- package/dist/modules/companies/schema.js +51 -0
- package/dist/modules/companies/schema.js.map +1 -0
- package/dist/modules/companies/service.d.ts +49 -0
- package/dist/modules/companies/service.d.ts.map +1 -0
- package/dist/modules/companies/service.js +184 -0
- package/dist/modules/companies/service.js.map +1 -0
- package/dist/modules/companies/tools.d.ts +4 -0
- package/dist/modules/companies/tools.d.ts.map +1 -0
- package/dist/modules/companies/tools.js +27 -0
- package/dist/modules/companies/tools.js.map +1 -0
- package/dist/modules/core.d.ts +21 -0
- package/dist/modules/core.d.ts.map +1 -0
- package/dist/modules/core.js +82 -0
- package/dist/modules/core.js.map +1 -0
- package/dist/modules/crudTools.d.ts +99 -0
- package/dist/modules/crudTools.d.ts.map +1 -0
- package/dist/modules/crudTools.js +123 -0
- package/dist/modules/crudTools.js.map +1 -0
- package/dist/modules/dashboard/attention.d.ts +39 -0
- package/dist/modules/dashboard/attention.d.ts.map +1 -0
- package/dist/modules/dashboard/attention.js +57 -0
- package/dist/modules/dashboard/attention.js.map +1 -0
- package/dist/modules/dashboard/index.d.ts +15 -0
- package/dist/modules/dashboard/index.d.ts.map +1 -0
- package/dist/modules/dashboard/index.js +44 -0
- package/dist/modules/dashboard/index.js.map +1 -0
- package/dist/modules/dashboard/repository.d.ts +83 -0
- package/dist/modules/dashboard/repository.d.ts.map +1 -0
- package/dist/modules/dashboard/repository.js +217 -0
- package/dist/modules/dashboard/repository.js.map +1 -0
- package/dist/modules/dashboard/routes.d.ts +21 -0
- package/dist/modules/dashboard/routes.d.ts.map +1 -0
- package/dist/modules/dashboard/routes.js +116 -0
- package/dist/modules/dashboard/routes.js.map +1 -0
- package/dist/modules/dashboard/service.d.ts +122 -0
- package/dist/modules/dashboard/service.d.ts.map +1 -0
- package/dist/modules/dashboard/service.js +215 -0
- package/dist/modules/dashboard/service.js.map +1 -0
- package/dist/modules/dashboard/tools.d.ts +4 -0
- package/dist/modules/dashboard/tools.d.ts.map +1 -0
- package/dist/modules/dashboard/tools.js +33 -0
- package/dist/modules/dashboard/tools.js.map +1 -0
- package/dist/modules/deals/index.d.ts +11 -0
- package/dist/modules/deals/index.d.ts.map +1 -0
- package/dist/modules/deals/index.js +38 -0
- package/dist/modules/deals/index.js.map +1 -0
- package/dist/modules/deals/repository.d.ts +44 -0
- package/dist/modules/deals/repository.d.ts.map +1 -0
- package/dist/modules/deals/repository.js +160 -0
- package/dist/modules/deals/repository.js.map +1 -0
- package/dist/modules/deals/routes.d.ts +50 -0
- package/dist/modules/deals/routes.d.ts.map +1 -0
- package/dist/modules/deals/routes.js +132 -0
- package/dist/modules/deals/routes.js.map +1 -0
- package/dist/modules/deals/schema.d.ts +419 -0
- package/dist/modules/deals/schema.d.ts.map +1 -0
- package/dist/modules/deals/schema.js +61 -0
- package/dist/modules/deals/schema.js.map +1 -0
- package/dist/modules/deals/service.d.ts +71 -0
- package/dist/modules/deals/service.d.ts.map +1 -0
- package/dist/modules/deals/service.js +277 -0
- package/dist/modules/deals/service.js.map +1 -0
- package/dist/modules/deals/tools.d.ts +4 -0
- package/dist/modules/deals/tools.d.ts.map +1 -0
- package/dist/modules/deals/tools.js +33 -0
- package/dist/modules/deals/tools.js.map +1 -0
- package/dist/modules/decisions/index.d.ts +11 -0
- package/dist/modules/decisions/index.d.ts.map +1 -0
- package/dist/modules/decisions/index.js +34 -0
- package/dist/modules/decisions/index.js.map +1 -0
- package/dist/modules/decisions/repository.d.ts +38 -0
- package/dist/modules/decisions/repository.d.ts.map +1 -0
- package/dist/modules/decisions/repository.js +126 -0
- package/dist/modules/decisions/repository.js.map +1 -0
- package/dist/modules/decisions/routes.d.ts +42 -0
- package/dist/modules/decisions/routes.d.ts.map +1 -0
- package/dist/modules/decisions/routes.js +131 -0
- package/dist/modules/decisions/routes.js.map +1 -0
- package/dist/modules/decisions/schema.d.ts +228 -0
- package/dist/modules/decisions/schema.d.ts.map +1 -0
- package/dist/modules/decisions/schema.js +41 -0
- package/dist/modules/decisions/schema.js.map +1 -0
- package/dist/modules/decisions/service.d.ts +60 -0
- package/dist/modules/decisions/service.d.ts.map +1 -0
- package/dist/modules/decisions/service.js +122 -0
- package/dist/modules/decisions/service.js.map +1 -0
- package/dist/modules/decisions/tools.d.ts +4 -0
- package/dist/modules/decisions/tools.d.ts.map +1 -0
- package/dist/modules/decisions/tools.js +32 -0
- package/dist/modules/decisions/tools.js.map +1 -0
- package/dist/modules/forms/embed.d.ts +50 -0
- package/dist/modules/forms/embed.d.ts.map +1 -0
- package/dist/modules/forms/embed.js +236 -0
- package/dist/modules/forms/embed.js.map +1 -0
- package/dist/modules/forms/fields.d.ts +71 -0
- package/dist/modules/forms/fields.d.ts.map +1 -0
- package/dist/modules/forms/fields.js +122 -0
- package/dist/modules/forms/fields.js.map +1 -0
- package/dist/modules/forms/index.d.ts +15 -0
- package/dist/modules/forms/index.d.ts.map +1 -0
- package/dist/modules/forms/index.js +53 -0
- package/dist/modules/forms/index.js.map +1 -0
- package/dist/modules/forms/mapping.d.ts +99 -0
- package/dist/modules/forms/mapping.d.ts.map +1 -0
- package/dist/modules/forms/mapping.js +152 -0
- package/dist/modules/forms/mapping.js.map +1 -0
- package/dist/modules/forms/publicRoutes.d.ts +11 -0
- package/dist/modules/forms/publicRoutes.d.ts.map +1 -0
- package/dist/modules/forms/publicRoutes.js +68 -0
- package/dist/modules/forms/publicRoutes.js.map +1 -0
- package/dist/modules/forms/repository.d.ts +65 -0
- package/dist/modules/forms/repository.d.ts.map +1 -0
- package/dist/modules/forms/repository.js +139 -0
- package/dist/modules/forms/repository.js.map +1 -0
- package/dist/modules/forms/routes.d.ts +106 -0
- package/dist/modules/forms/routes.d.ts.map +1 -0
- package/dist/modules/forms/routes.js +204 -0
- package/dist/modules/forms/routes.js.map +1 -0
- package/dist/modules/forms/schema.d.ts +643 -0
- package/dist/modules/forms/schema.d.ts.map +1 -0
- package/dist/modules/forms/schema.js +87 -0
- package/dist/modules/forms/schema.js.map +1 -0
- package/dist/modules/forms/service.d.ts +62 -0
- package/dist/modules/forms/service.d.ts.map +1 -0
- package/dist/modules/forms/service.js +208 -0
- package/dist/modules/forms/service.js.map +1 -0
- package/dist/modules/forms/submission.d.ts +30 -0
- package/dist/modules/forms/submission.d.ts.map +1 -0
- package/dist/modules/forms/submission.js +337 -0
- package/dist/modules/forms/submission.js.map +1 -0
- package/dist/modules/forms/tools.d.ts +4 -0
- package/dist/modules/forms/tools.d.ts.map +1 -0
- package/dist/modules/forms/tools.js +46 -0
- package/dist/modules/forms/tools.js.map +1 -0
- package/dist/modules/handbook/index.d.ts +15 -0
- package/dist/modules/handbook/index.d.ts.map +1 -0
- package/dist/modules/handbook/index.js +37 -0
- package/dist/modules/handbook/index.js.map +1 -0
- package/dist/modules/handbook/repository.d.ts +52 -0
- package/dist/modules/handbook/repository.d.ts.map +1 -0
- package/dist/modules/handbook/repository.js +109 -0
- package/dist/modules/handbook/repository.js.map +1 -0
- package/dist/modules/handbook/routes.d.ts +38 -0
- package/dist/modules/handbook/routes.d.ts.map +1 -0
- package/dist/modules/handbook/routes.js +103 -0
- package/dist/modules/handbook/routes.js.map +1 -0
- package/dist/modules/handbook/schema.d.ts +206 -0
- package/dist/modules/handbook/schema.d.ts.map +1 -0
- package/dist/modules/handbook/schema.js +37 -0
- package/dist/modules/handbook/schema.js.map +1 -0
- package/dist/modules/handbook/service.d.ts +59 -0
- package/dist/modules/handbook/service.d.ts.map +1 -0
- package/dist/modules/handbook/service.js +246 -0
- package/dist/modules/handbook/service.js.map +1 -0
- package/dist/modules/handbook/slugs.d.ts +28 -0
- package/dist/modules/handbook/slugs.d.ts.map +1 -0
- package/dist/modules/handbook/slugs.js +48 -0
- package/dist/modules/handbook/slugs.js.map +1 -0
- package/dist/modules/handbook/tools.d.ts +4 -0
- package/dist/modules/handbook/tools.d.ts.map +1 -0
- package/dist/modules/handbook/tools.js +26 -0
- package/dist/modules/handbook/tools.js.map +1 -0
- package/dist/modules/handbook/tree.d.ts +69 -0
- package/dist/modules/handbook/tree.d.ts.map +1 -0
- package/dist/modules/handbook/tree.js +117 -0
- package/dist/modules/handbook/tree.js.map +1 -0
- package/dist/modules/hiring/candidates.d.ts +70 -0
- package/dist/modules/hiring/candidates.d.ts.map +1 -0
- package/dist/modules/hiring/candidates.js +243 -0
- package/dist/modules/hiring/candidates.js.map +1 -0
- package/dist/modules/hiring/index.d.ts +15 -0
- package/dist/modules/hiring/index.d.ts.map +1 -0
- package/dist/modules/hiring/index.js +48 -0
- package/dist/modules/hiring/index.js.map +1 -0
- package/dist/modules/hiring/repository.d.ts +52 -0
- package/dist/modules/hiring/repository.d.ts.map +1 -0
- package/dist/modules/hiring/repository.js +137 -0
- package/dist/modules/hiring/repository.js.map +1 -0
- package/dist/modules/hiring/roles.d.ts +42 -0
- package/dist/modules/hiring/roles.d.ts.map +1 -0
- package/dist/modules/hiring/roles.js +104 -0
- package/dist/modules/hiring/roles.js.map +1 -0
- package/dist/modules/hiring/routes.d.ts +73 -0
- package/dist/modules/hiring/routes.d.ts.map +1 -0
- package/dist/modules/hiring/routes.js +170 -0
- package/dist/modules/hiring/routes.js.map +1 -0
- package/dist/modules/hiring/schema.d.ts +308 -0
- package/dist/modules/hiring/schema.d.ts.map +1 -0
- package/dist/modules/hiring/schema.js +62 -0
- package/dist/modules/hiring/schema.js.map +1 -0
- package/dist/modules/hiring/tools.d.ts +8 -0
- package/dist/modules/hiring/tools.d.ts.map +1 -0
- package/dist/modules/hiring/tools.js +50 -0
- package/dist/modules/hiring/tools.js.map +1 -0
- package/dist/modules/import-export/csv.d.ts +47 -0
- package/dist/modules/import-export/csv.d.ts.map +1 -0
- package/dist/modules/import-export/csv.js +138 -0
- package/dist/modules/import-export/csv.js.map +1 -0
- package/dist/modules/import-export/drafts.d.ts +83 -0
- package/dist/modules/import-export/drafts.d.ts.map +1 -0
- package/dist/modules/import-export/drafts.js +97 -0
- package/dist/modules/import-export/drafts.js.map +1 -0
- package/dist/modules/import-export/exportRows.d.ts +8 -0
- package/dist/modules/import-export/exportRows.d.ts.map +1 -0
- package/dist/modules/import-export/exportRows.js +71 -0
- package/dist/modules/import-export/exportRows.js.map +1 -0
- package/dist/modules/import-export/index.d.ts +15 -0
- package/dist/modules/import-export/index.d.ts.map +1 -0
- package/dist/modules/import-export/index.js +43 -0
- package/dist/modules/import-export/index.js.map +1 -0
- package/dist/modules/import-export/mapping.d.ts +46 -0
- package/dist/modules/import-export/mapping.d.ts.map +1 -0
- package/dist/modules/import-export/mapping.js +115 -0
- package/dist/modules/import-export/mapping.js.map +1 -0
- package/dist/modules/import-export/plan.d.ts +107 -0
- package/dist/modules/import-export/plan.d.ts.map +1 -0
- package/dist/modules/import-export/plan.js +178 -0
- package/dist/modules/import-export/plan.js.map +1 -0
- package/dist/modules/import-export/presets.d.ts +39 -0
- package/dist/modules/import-export/presets.d.ts.map +1 -0
- package/dist/modules/import-export/presets.js +151 -0
- package/dist/modules/import-export/presets.js.map +1 -0
- package/dist/modules/import-export/repository.d.ts +171 -0
- package/dist/modules/import-export/repository.d.ts.map +1 -0
- package/dist/modules/import-export/repository.js +343 -0
- package/dist/modules/import-export/repository.js.map +1 -0
- package/dist/modules/import-export/routes.d.ts +9 -0
- package/dist/modules/import-export/routes.d.ts.map +1 -0
- package/dist/modules/import-export/routes.js +199 -0
- package/dist/modules/import-export/routes.js.map +1 -0
- package/dist/modules/import-export/schema.d.ts +494 -0
- package/dist/modules/import-export/schema.d.ts.map +1 -0
- package/dist/modules/import-export/schema.js +99 -0
- package/dist/modules/import-export/schema.js.map +1 -0
- package/dist/modules/import-export/service.d.ts +74 -0
- package/dist/modules/import-export/service.d.ts.map +1 -0
- package/dist/modules/import-export/service.js +561 -0
- package/dist/modules/import-export/service.js.map +1 -0
- package/dist/modules/import-export/streams.d.ts +4 -0
- package/dist/modules/import-export/streams.d.ts.map +1 -0
- package/dist/modules/import-export/streams.js +55 -0
- package/dist/modules/import-export/streams.js.map +1 -0
- package/dist/modules/import-export/tools.d.ts +22 -0
- package/dist/modules/import-export/tools.d.ts.map +1 -0
- package/dist/modules/import-export/tools.js +116 -0
- package/dist/modules/import-export/tools.js.map +1 -0
- package/dist/modules/import-export/validation.d.ts +7 -0
- package/dist/modules/import-export/validation.d.ts.map +1 -0
- package/dist/modules/import-export/validation.js +114 -0
- package/dist/modules/import-export/validation.js.map +1 -0
- package/dist/modules/import-export/writes.d.ts +45 -0
- package/dist/modules/import-export/writes.d.ts.map +1 -0
- package/dist/modules/import-export/writes.js +247 -0
- package/dist/modules/import-export/writes.js.map +1 -0
- package/dist/modules/integrations/schema.d.ts +185 -0
- package/dist/modules/integrations/schema.d.ts.map +1 -0
- package/dist/modules/integrations/schema.js +26 -0
- package/dist/modules/integrations/schema.js.map +1 -0
- package/dist/modules/mcp/index.d.ts +26 -0
- package/dist/modules/mcp/index.d.ts.map +1 -0
- package/dist/modules/mcp/index.js +45 -0
- package/dist/modules/mcp/index.js.map +1 -0
- package/dist/modules/mcp/protocol.d.ts +166 -0
- package/dist/modules/mcp/protocol.d.ts.map +1 -0
- package/dist/modules/mcp/protocol.js +292 -0
- package/dist/modules/mcp/protocol.js.map +1 -0
- package/dist/modules/mcp/router.d.ts +23 -0
- package/dist/modules/mcp/router.d.ts.map +1 -0
- package/dist/modules/mcp/router.js +298 -0
- package/dist/modules/mcp/router.js.map +1 -0
- package/dist/modules/notes/index.d.ts +9 -0
- package/dist/modules/notes/index.d.ts.map +1 -0
- package/dist/modules/notes/index.js +37 -0
- package/dist/modules/notes/index.js.map +1 -0
- package/dist/modules/notes/repository.d.ts +34 -0
- package/dist/modules/notes/repository.d.ts.map +1 -0
- package/dist/modules/notes/repository.js +70 -0
- package/dist/modules/notes/repository.js.map +1 -0
- package/dist/modules/notes/routes.d.ts +37 -0
- package/dist/modules/notes/routes.d.ts.map +1 -0
- package/dist/modules/notes/routes.js +124 -0
- package/dist/modules/notes/routes.js.map +1 -0
- package/dist/modules/notes/schema.d.ts +176 -0
- package/dist/modules/notes/schema.d.ts.map +1 -0
- package/dist/modules/notes/schema.js +35 -0
- package/dist/modules/notes/schema.js.map +1 -0
- package/dist/modules/notes/service.d.ts +49 -0
- package/dist/modules/notes/service.d.ts.map +1 -0
- package/dist/modules/notes/service.js +118 -0
- package/dist/modules/notes/service.js.map +1 -0
- package/dist/modules/notes/tools.d.ts +4 -0
- package/dist/modules/notes/tools.d.ts.map +1 -0
- package/dist/modules/notes/tools.js +41 -0
- package/dist/modules/notes/tools.js.map +1 -0
- package/dist/modules/opportunities/index.d.ts +11 -0
- package/dist/modules/opportunities/index.d.ts.map +1 -0
- package/dist/modules/opportunities/index.js +38 -0
- package/dist/modules/opportunities/index.js.map +1 -0
- package/dist/modules/opportunities/repository.d.ts +28 -0
- package/dist/modules/opportunities/repository.d.ts.map +1 -0
- package/dist/modules/opportunities/repository.js +89 -0
- package/dist/modules/opportunities/repository.js.map +1 -0
- package/dist/modules/opportunities/routes.d.ts +39 -0
- package/dist/modules/opportunities/routes.d.ts.map +1 -0
- package/dist/modules/opportunities/routes.js +104 -0
- package/dist/modules/opportunities/routes.js.map +1 -0
- package/dist/modules/opportunities/schema.d.ts +266 -0
- package/dist/modules/opportunities/schema.d.ts.map +1 -0
- package/dist/modules/opportunities/schema.js +41 -0
- package/dist/modules/opportunities/schema.js.map +1 -0
- package/dist/modules/opportunities/service.d.ts +60 -0
- package/dist/modules/opportunities/service.d.ts.map +1 -0
- package/dist/modules/opportunities/service.js +212 -0
- package/dist/modules/opportunities/service.js.map +1 -0
- package/dist/modules/opportunities/tools.d.ts +4 -0
- package/dist/modules/opportunities/tools.d.ts.map +1 -0
- package/dist/modules/opportunities/tools.js +33 -0
- package/dist/modules/opportunities/tools.js.map +1 -0
- package/dist/modules/partnerships/index.d.ts +11 -0
- package/dist/modules/partnerships/index.d.ts.map +1 -0
- package/dist/modules/partnerships/index.js +38 -0
- package/dist/modules/partnerships/index.js.map +1 -0
- package/dist/modules/partnerships/repository.d.ts +47 -0
- package/dist/modules/partnerships/repository.d.ts.map +1 -0
- package/dist/modules/partnerships/repository.js +169 -0
- package/dist/modules/partnerships/repository.js.map +1 -0
- package/dist/modules/partnerships/routes.d.ts +46 -0
- package/dist/modules/partnerships/routes.d.ts.map +1 -0
- package/dist/modules/partnerships/routes.js +122 -0
- package/dist/modules/partnerships/routes.js.map +1 -0
- package/dist/modules/partnerships/schema.d.ts +338 -0
- package/dist/modules/partnerships/schema.d.ts.map +1 -0
- package/dist/modules/partnerships/schema.js +54 -0
- package/dist/modules/partnerships/schema.js.map +1 -0
- package/dist/modules/partnerships/service.d.ts +71 -0
- package/dist/modules/partnerships/service.d.ts.map +1 -0
- package/dist/modules/partnerships/service.js +273 -0
- package/dist/modules/partnerships/service.js.map +1 -0
- package/dist/modules/partnerships/tools.d.ts +4 -0
- package/dist/modules/partnerships/tools.d.ts.map +1 -0
- package/dist/modules/partnerships/tools.js +35 -0
- package/dist/modules/partnerships/tools.js.map +1 -0
- package/dist/modules/people/index.d.ts +9 -0
- package/dist/modules/people/index.d.ts.map +1 -0
- package/dist/modules/people/index.js +37 -0
- package/dist/modules/people/index.js.map +1 -0
- package/dist/modules/people/repository.d.ts +31 -0
- package/dist/modules/people/repository.d.ts.map +1 -0
- package/dist/modules/people/repository.js +109 -0
- package/dist/modules/people/repository.js.map +1 -0
- package/dist/modules/people/routes.d.ts +111 -0
- package/dist/modules/people/routes.d.ts.map +1 -0
- package/dist/modules/people/routes.js +134 -0
- package/dist/modules/people/routes.js.map +1 -0
- package/dist/modules/people/schema.d.ts +354 -0
- package/dist/modules/people/schema.d.ts.map +1 -0
- package/dist/modules/people/schema.js +61 -0
- package/dist/modules/people/schema.js.map +1 -0
- package/dist/modules/people/service.d.ts +56 -0
- package/dist/modules/people/service.d.ts.map +1 -0
- package/dist/modules/people/service.js +190 -0
- package/dist/modules/people/service.js.map +1 -0
- package/dist/modules/people/tools.d.ts +4 -0
- package/dist/modules/people/tools.d.ts.map +1 -0
- package/dist/modules/people/tools.js +27 -0
- package/dist/modules/people/tools.js.map +1 -0
- package/dist/modules/pipelines/index.d.ts +9 -0
- package/dist/modules/pipelines/index.d.ts.map +1 -0
- package/dist/modules/pipelines/index.js +37 -0
- package/dist/modules/pipelines/index.js.map +1 -0
- package/dist/modules/pipelines/repository.d.ts +26 -0
- package/dist/modules/pipelines/repository.d.ts.map +1 -0
- package/dist/modules/pipelines/repository.js +67 -0
- package/dist/modules/pipelines/repository.js.map +1 -0
- package/dist/modules/pipelines/routes.d.ts +33 -0
- package/dist/modules/pipelines/routes.d.ts.map +1 -0
- package/dist/modules/pipelines/routes.js +98 -0
- package/dist/modules/pipelines/routes.js.map +1 -0
- package/dist/modules/pipelines/schema.d.ts +170 -0
- package/dist/modules/pipelines/schema.d.ts.map +1 -0
- package/dist/modules/pipelines/schema.js +30 -0
- package/dist/modules/pipelines/schema.js.map +1 -0
- package/dist/modules/pipelines/service.d.ts +49 -0
- package/dist/modules/pipelines/service.d.ts.map +1 -0
- package/dist/modules/pipelines/service.js +227 -0
- package/dist/modules/pipelines/service.js.map +1 -0
- package/dist/modules/pipelines/tools.d.ts +4 -0
- package/dist/modules/pipelines/tools.d.ts.map +1 -0
- package/dist/modules/pipelines/tools.js +43 -0
- package/dist/modules/pipelines/tools.js.map +1 -0
- package/dist/modules/plans/index.d.ts +10 -0
- package/dist/modules/plans/index.d.ts.map +1 -0
- package/dist/modules/plans/index.js +33 -0
- package/dist/modules/plans/index.js.map +1 -0
- package/dist/modules/plans/repository.d.ts +49 -0
- package/dist/modules/plans/repository.d.ts.map +1 -0
- package/dist/modules/plans/repository.js +94 -0
- package/dist/modules/plans/repository.js.map +1 -0
- package/dist/modules/plans/routes.d.ts +46 -0
- package/dist/modules/plans/routes.d.ts.map +1 -0
- package/dist/modules/plans/routes.js +152 -0
- package/dist/modules/plans/routes.js.map +1 -0
- package/dist/modules/plans/schema.d.ts +209 -0
- package/dist/modules/plans/schema.d.ts.map +1 -0
- package/dist/modules/plans/schema.js +37 -0
- package/dist/modules/plans/schema.js.map +1 -0
- package/dist/modules/plans/service.d.ts +57 -0
- package/dist/modules/plans/service.d.ts.map +1 -0
- package/dist/modules/plans/service.js +125 -0
- package/dist/modules/plans/service.js.map +1 -0
- package/dist/modules/plans/tools.d.ts +4 -0
- package/dist/modules/plans/tools.d.ts.map +1 -0
- package/dist/modules/plans/tools.js +39 -0
- package/dist/modules/plans/tools.js.map +1 -0
- package/dist/modules/positions/index.d.ts +9 -0
- package/dist/modules/positions/index.d.ts.map +1 -0
- package/dist/modules/positions/index.js +36 -0
- package/dist/modules/positions/index.js.map +1 -0
- package/dist/modules/positions/repository.d.ts +34 -0
- package/dist/modules/positions/repository.d.ts.map +1 -0
- package/dist/modules/positions/repository.js +71 -0
- package/dist/modules/positions/repository.js.map +1 -0
- package/dist/modules/positions/routes.d.ts +22 -0
- package/dist/modules/positions/routes.d.ts.map +1 -0
- package/dist/modules/positions/routes.js +56 -0
- package/dist/modules/positions/routes.js.map +1 -0
- package/dist/modules/positions/schema.d.ts +154 -0
- package/dist/modules/positions/schema.d.ts.map +1 -0
- package/dist/modules/positions/schema.js +36 -0
- package/dist/modules/positions/schema.js.map +1 -0
- package/dist/modules/positions/service.d.ts +46 -0
- package/dist/modules/positions/service.d.ts.map +1 -0
- package/dist/modules/positions/service.js +159 -0
- package/dist/modules/positions/service.js.map +1 -0
- package/dist/modules/positions/tools.d.ts +4 -0
- package/dist/modules/positions/tools.d.ts.map +1 -0
- package/dist/modules/positions/tools.js +26 -0
- package/dist/modules/positions/tools.js.map +1 -0
- package/dist/modules/raises/index.d.ts +11 -0
- package/dist/modules/raises/index.d.ts.map +1 -0
- package/dist/modules/raises/index.js +38 -0
- package/dist/modules/raises/index.js.map +1 -0
- package/dist/modules/raises/repository.d.ts +48 -0
- package/dist/modules/raises/repository.d.ts.map +1 -0
- package/dist/modules/raises/repository.js +164 -0
- package/dist/modules/raises/repository.js.map +1 -0
- package/dist/modules/raises/routes.d.ts +48 -0
- package/dist/modules/raises/routes.d.ts.map +1 -0
- package/dist/modules/raises/routes.js +126 -0
- package/dist/modules/raises/routes.js.map +1 -0
- package/dist/modules/raises/schema.d.ts +356 -0
- package/dist/modules/raises/schema.d.ts.map +1 -0
- package/dist/modules/raises/schema.js +55 -0
- package/dist/modules/raises/schema.js.map +1 -0
- package/dist/modules/raises/service.d.ts +79 -0
- package/dist/modules/raises/service.d.ts.map +1 -0
- package/dist/modules/raises/service.js +275 -0
- package/dist/modules/raises/service.js.map +1 -0
- package/dist/modules/raises/tools.d.ts +4 -0
- package/dist/modules/raises/tools.d.ts.map +1 -0
- package/dist/modules/raises/tools.js +33 -0
- package/dist/modules/raises/tools.js.map +1 -0
- package/dist/modules/recordTargets.d.ts +55 -0
- package/dist/modules/recordTargets.d.ts.map +1 -0
- package/dist/modules/recordTargets.js +107 -0
- package/dist/modules/recordTargets.js.map +1 -0
- package/dist/modules/references.d.ts +8 -0
- package/dist/modules/references.d.ts.map +1 -0
- package/dist/modules/references.js +40 -0
- package/dist/modules/references.js.map +1 -0
- package/dist/modules/reseal.d.ts +33 -0
- package/dist/modules/reseal.d.ts.map +1 -0
- package/dist/modules/reseal.js +108 -0
- package/dist/modules/reseal.js.map +1 -0
- package/dist/modules/search/index.d.ts +21 -0
- package/dist/modules/search/index.d.ts.map +1 -0
- package/dist/modules/search/index.js +50 -0
- package/dist/modules/search/index.js.map +1 -0
- package/dist/modules/search/query.d.ts +44 -0
- package/dist/modules/search/query.d.ts.map +1 -0
- package/dist/modules/search/query.js +88 -0
- package/dist/modules/search/query.js.map +1 -0
- package/dist/modules/search/repository.d.ts +44 -0
- package/dist/modules/search/repository.d.ts.map +1 -0
- package/dist/modules/search/repository.js +252 -0
- package/dist/modules/search/repository.js.map +1 -0
- package/dist/modules/search/routes.d.ts +17 -0
- package/dist/modules/search/routes.d.ts.map +1 -0
- package/dist/modules/search/routes.js +93 -0
- package/dist/modules/search/routes.js.map +1 -0
- package/dist/modules/search/service.d.ts +55 -0
- package/dist/modules/search/service.d.ts.map +1 -0
- package/dist/modules/search/service.js +69 -0
- package/dist/modules/search/service.js.map +1 -0
- package/dist/modules/search/tools.d.ts +4 -0
- package/dist/modules/search/tools.d.ts.map +1 -0
- package/dist/modules/search/tools.js +52 -0
- package/dist/modules/search/tools.js.map +1 -0
- package/dist/modules/stagedRecords.d.ts +28 -0
- package/dist/modules/stagedRecords.d.ts.map +1 -0
- package/dist/modules/stagedRecords.js +50 -0
- package/dist/modules/stagedRecords.js.map +1 -0
- package/dist/modules/webhooks/delivery.d.ts +98 -0
- package/dist/modules/webhooks/delivery.d.ts.map +1 -0
- package/dist/modules/webhooks/delivery.js +237 -0
- package/dist/modules/webhooks/delivery.js.map +1 -0
- package/dist/modules/webhooks/index.d.ts +23 -0
- package/dist/modules/webhooks/index.d.ts.map +1 -0
- package/dist/modules/webhooks/index.js +48 -0
- package/dist/modules/webhooks/index.js.map +1 -0
- package/dist/modules/webhooks/payloads.d.ts +31 -0
- package/dist/modules/webhooks/payloads.d.ts.map +1 -0
- package/dist/modules/webhooks/payloads.js +52 -0
- package/dist/modules/webhooks/payloads.js.map +1 -0
- package/dist/modules/webhooks/repository.d.ts +70 -0
- package/dist/modules/webhooks/repository.d.ts.map +1 -0
- package/dist/modules/webhooks/repository.js +140 -0
- package/dist/modules/webhooks/repository.js.map +1 -0
- package/dist/modules/webhooks/routes.d.ts +47 -0
- package/dist/modules/webhooks/routes.d.ts.map +1 -0
- package/dist/modules/webhooks/routes.js +170 -0
- package/dist/modules/webhooks/routes.js.map +1 -0
- package/dist/modules/webhooks/schema.d.ts +396 -0
- package/dist/modules/webhooks/schema.d.ts.map +1 -0
- package/dist/modules/webhooks/schema.js +61 -0
- package/dist/modules/webhooks/schema.js.map +1 -0
- package/dist/modules/webhooks/service.d.ts +65 -0
- package/dist/modules/webhooks/service.d.ts.map +1 -0
- package/dist/modules/webhooks/service.js +202 -0
- package/dist/modules/webhooks/service.js.map +1 -0
- package/dist/modules/webhooks/signing.d.ts +57 -0
- package/dist/modules/webhooks/signing.d.ts.map +1 -0
- package/dist/modules/webhooks/signing.js +69 -0
- package/dist/modules/webhooks/signing.js.map +1 -0
- package/dist/modules/webhooks/tools.d.ts +4 -0
- package/dist/modules/webhooks/tools.d.ts.map +1 -0
- package/dist/modules/webhooks/tools.js +77 -0
- package/dist/modules/webhooks/tools.js.map +1 -0
- package/dist/modules/webhooks/url.d.ts +10 -0
- package/dist/modules/webhooks/url.d.ts.map +1 -0
- package/dist/modules/webhooks/url.js +9 -0
- package/dist/modules/webhooks/url.js.map +1 -0
- package/dist/modules/workspace/capabilities.d.ts +9 -0
- package/dist/modules/workspace/capabilities.d.ts.map +1 -0
- package/dist/modules/workspace/capabilities.js +12 -0
- package/dist/modules/workspace/capabilities.js.map +1 -0
- package/dist/modules/workspace/idempotencyMiddleware.d.ts +16 -0
- package/dist/modules/workspace/idempotencyMiddleware.d.ts.map +1 -0
- package/dist/modules/workspace/idempotencyMiddleware.js +142 -0
- package/dist/modules/workspace/idempotencyMiddleware.js.map +1 -0
- package/dist/modules/workspace/idempotencyRepository.d.ts +43 -0
- package/dist/modules/workspace/idempotencyRepository.d.ts.map +1 -0
- package/dist/modules/workspace/idempotencyRepository.js +75 -0
- package/dist/modules/workspace/idempotencyRepository.js.map +1 -0
- package/dist/modules/workspace/index.d.ts +9 -0
- package/dist/modules/workspace/index.d.ts.map +1 -0
- package/dist/modules/workspace/index.js +53 -0
- package/dist/modules/workspace/index.js.map +1 -0
- package/dist/modules/workspace/repository.d.ts +112 -0
- package/dist/modules/workspace/repository.d.ts.map +1 -0
- package/dist/modules/workspace/repository.js +266 -0
- package/dist/modules/workspace/repository.js.map +1 -0
- package/dist/modules/workspace/roles.d.ts +22 -0
- package/dist/modules/workspace/roles.d.ts.map +1 -0
- package/dist/modules/workspace/roles.js +31 -0
- package/dist/modules/workspace/roles.js.map +1 -0
- package/dist/modules/workspace/routes.d.ts +41 -0
- package/dist/modules/workspace/routes.d.ts.map +1 -0
- package/dist/modules/workspace/routes.js +158 -0
- package/dist/modules/workspace/routes.js.map +1 -0
- package/dist/modules/workspace/schema.d.ts +719 -0
- package/dist/modules/workspace/schema.d.ts.map +1 -0
- package/dist/modules/workspace/schema.js +102 -0
- package/dist/modules/workspace/schema.js.map +1 -0
- package/dist/modules/workspace/service.d.ts +94 -0
- package/dist/modules/workspace/service.d.ts.map +1 -0
- package/dist/modules/workspace/service.js +528 -0
- package/dist/modules/workspace/service.js.map +1 -0
- package/dist/modules/workspace/starters.d.ts +22 -0
- package/dist/modules/workspace/starters.d.ts.map +1 -0
- package/dist/modules/workspace/starters.js +56 -0
- package/dist/modules/workspace/starters.js.map +1 -0
- package/dist/modules/workspace/tools.d.ts +4 -0
- package/dist/modules/workspace/tools.d.ts.map +1 -0
- package/dist/modules/workspace/tools.js +95 -0
- package/dist/modules/workspace/tools.js.map +1 -0
- package/dist/runtime/entitlements.d.ts +66 -0
- package/dist/runtime/entitlements.d.ts.map +1 -0
- package/dist/runtime/entitlements.js +62 -0
- package/dist/runtime/entitlements.js.map +1 -0
- package/dist/runtime/events.d.ts +139 -0
- package/dist/runtime/events.d.ts.map +1 -0
- package/dist/runtime/events.js +98 -0
- package/dist/runtime/events.js.map +1 -0
- package/dist/runtime/migrate.d.ts +28 -0
- package/dist/runtime/migrate.d.ts.map +1 -0
- package/dist/runtime/migrate.js +43 -0
- package/dist/runtime/migrate.js.map +1 -0
- package/dist/runtime/module.d.ts +138 -0
- package/dist/runtime/module.d.ts.map +1 -0
- package/dist/runtime/module.js +2 -0
- package/dist/runtime/module.js.map +1 -0
- package/dist/runtime/moduleConfig.d.ts +21 -0
- package/dist/runtime/moduleConfig.d.ts.map +1 -0
- package/dist/runtime/moduleConfig.js +54 -0
- package/dist/runtime/moduleConfig.js.map +1 -0
- package/dist/runtime/order.d.ts +21 -0
- package/dist/runtime/order.d.ts.map +1 -0
- package/dist/runtime/order.js +72 -0
- package/dist/runtime/order.js.map +1 -0
- package/dist/runtime/registry.d.ts +66 -0
- package/dist/runtime/registry.d.ts.map +1 -0
- package/dist/runtime/registry.js +148 -0
- package/dist/runtime/registry.js.map +1 -0
- package/dist/runtime/transaction.d.ts +34 -0
- package/dist/runtime/transaction.d.ts.map +1 -0
- package/dist/runtime/transaction.js +24 -0
- package/dist/runtime/transaction.js.map +1 -0
- package/dist/schema/index.d.ts +30 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +30 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/testing/app.d.ts +42 -0
- package/dist/testing/app.d.ts.map +1 -0
- package/dist/testing/app.js +31 -0
- package/dist/testing/app.js.map +1 -0
- package/dist/testing/client.d.ts +34 -0
- package/dist/testing/client.d.ts.map +1 -0
- package/dist/testing/client.js +70 -0
- package/dist/testing/client.js.map +1 -0
- package/dist/testing/database.d.ts +17 -0
- package/dist/testing/database.d.ts.map +1 -0
- package/dist/testing/database.js +84 -0
- package/dist/testing/database.js.map +1 -0
- package/dist/testing/environment.d.ts +17 -0
- package/dist/testing/environment.d.ts.map +1 -0
- package/dist/testing/environment.js +19 -0
- package/dist/testing/environment.js.map +1 -0
- package/dist/testing/fixtures.d.ts +22 -0
- package/dist/testing/fixtures.d.ts.map +1 -0
- package/dist/testing/fixtures.js +55 -0
- package/dist/testing/fixtures.js.map +1 -0
- package/dist/testing/index.d.ts +10 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +6 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/services.d.ts +18 -0
- package/dist/testing/services.d.ts.map +1 -0
- package/dist/testing/services.js +43 -0
- package/dist/testing/services.js.map +1 -0
- package/migrations/0000_initial_schema.sql +597 -0
- package/migrations/0001_uneven_lockjaw.sql +11 -0
- package/migrations/0002_neat_madame_web.sql +2 -0
- package/migrations/0003_bright_shockwave.sql +1 -0
- package/migrations/0004_drop_unused_import_columns.sql +2 -0
- package/migrations/0005_import_job_rows.sql +23 -0
- package/migrations/0006_drop_webhook_secret_hash.sql +1 -0
- package/migrations/0007_add_webhook_secret_encrypted.sql +1 -0
- package/migrations/0008_rich_mister_sinister.sql +3 -0
- package/migrations/0009_natural_proemial_gods.sql +1 -0
- package/migrations/0010_fine_brood.sql +1 -0
- package/migrations/0011_add_webhook_previous_secret.sql +2 -0
- package/migrations/0012_idempotency_keys_response_nullable.sql +1 -0
- package/migrations/0013_add_agent_run_failure_reason.sql +1 -0
- package/migrations/0014_right_shinko_yamashiro.sql +12 -0
- package/migrations/0015_peaceful_chimera.sql +33 -0
- package/migrations/meta/0000_snapshot.json +4467 -0
- package/migrations/meta/0001_snapshot.json +4539 -0
- package/migrations/meta/0002_snapshot.json +4539 -0
- package/migrations/meta/0003_snapshot.json +4544 -0
- package/migrations/meta/0004_snapshot.json +4531 -0
- package/migrations/meta/0005_snapshot.json +4674 -0
- package/migrations/meta/0006_snapshot.json +4668 -0
- package/migrations/meta/0007_snapshot.json +4674 -0
- package/migrations/meta/0008_snapshot.json +4694 -0
- package/migrations/meta/0009_snapshot.json +4700 -0
- package/migrations/meta/0010_snapshot.json +4694 -0
- package/migrations/meta/0011_snapshot.json +4706 -0
- package/migrations/meta/0012_snapshot.json +4706 -0
- package/migrations/meta/0013_snapshot.json +4712 -0
- package/migrations/meta/0014_snapshot.json +4802 -0
- package/migrations/meta/0015_snapshot.json +5077 -0
- package/migrations/meta/_journal.json +118 -0
- package/package.json +68 -0
- package/src/app.ts +157 -0
- package/src/index.ts +113 -0
- package/src/lib/actor.ts +99 -0
- package/src/lib/changes.ts +43 -0
- package/src/lib/columns.ts +170 -0
- package/src/lib/config.ts +86 -0
- package/src/lib/database.ts +118 -0
- package/src/lib/dates.ts +18 -0
- package/src/lib/email.ts +65 -0
- package/src/lib/errors.ts +156 -0
- package/src/lib/http.ts +109 -0
- package/src/lib/ids.ts +61 -0
- package/src/lib/logger.ts +73 -0
- package/src/lib/moduleConfig.ts +65 -0
- package/src/lib/normalisation.ts +36 -0
- package/src/lib/pagination.ts +291 -0
- package/src/lib/passwords.ts +56 -0
- package/src/lib/search.ts +29 -0
- package/src/lib/secrets.ts +223 -0
- package/src/lib/timezones.ts +59 -0
- package/src/lib/tokens.ts +37 -0
- package/src/lib/url.ts +52 -0
- package/src/modules/activities/index.ts +43 -0
- package/src/modules/activities/recorder.ts +108 -0
- package/src/modules/activities/repository.ts +196 -0
- package/src/modules/activities/routes.ts +78 -0
- package/src/modules/activities/schema.ts +41 -0
- package/src/modules/activities/service.ts +93 -0
- package/src/modules/activities/tools.ts +40 -0
- package/src/modules/activities/wording.ts +168 -0
- package/src/modules/agent-tasks/catalog.ts +712 -0
- package/src/modules/agent-tasks/dispatch.ts +188 -0
- package/src/modules/agent-tasks/index.ts +79 -0
- package/src/modules/agent-tasks/prompt.ts +140 -0
- package/src/modules/agent-tasks/repository.ts +152 -0
- package/src/modules/agent-tasks/resolve.ts +704 -0
- package/src/modules/agent-tasks/routes.ts +260 -0
- package/src/modules/agent-tasks/schema.ts +57 -0
- package/src/modules/agent-tasks/service.ts +370 -0
- package/src/modules/agent-tasks/wire.ts +61 -0
- package/src/modules/api-keys/index.ts +34 -0
- package/src/modules/api-keys/keys.ts +59 -0
- package/src/modules/api-keys/repository.ts +82 -0
- package/src/modules/api-keys/routes.ts +83 -0
- package/src/modules/api-keys/schema.ts +28 -0
- package/src/modules/api-keys/service.ts +152 -0
- package/src/modules/attachedRecords.ts +85 -0
- package/src/modules/auth/actor.ts +17 -0
- package/src/modules/auth/credentials.ts +153 -0
- package/src/modules/auth/index.ts +49 -0
- package/src/modules/auth/preferences.ts +57 -0
- package/src/modules/auth/repository.ts +240 -0
- package/src/modules/auth/routes.ts +247 -0
- package/src/modules/auth/schema.ts +77 -0
- package/src/modules/auth/service.ts +441 -0
- package/src/modules/auth/session.ts +40 -0
- package/src/modules/companies/index.ts +43 -0
- package/src/modules/companies/repository.ts +185 -0
- package/src/modules/companies/routes.ts +170 -0
- package/src/modules/companies/schema.ts +66 -0
- package/src/modules/companies/service.ts +267 -0
- package/src/modules/companies/tools.ts +32 -0
- package/src/modules/core.ts +93 -0
- package/src/modules/crudTools.ts +226 -0
- package/src/modules/dashboard/attention.ts +67 -0
- package/src/modules/dashboard/index.ts +49 -0
- package/src/modules/dashboard/repository.ts +360 -0
- package/src/modules/dashboard/routes.ts +171 -0
- package/src/modules/dashboard/service.ts +449 -0
- package/src/modules/dashboard/tools.ts +39 -0
- package/src/modules/deals/index.ts +44 -0
- package/src/modules/deals/repository.ts +251 -0
- package/src/modules/deals/routes.ts +166 -0
- package/src/modules/deals/schema.ts +72 -0
- package/src/modules/deals/service.ts +433 -0
- package/src/modules/deals/tools.ts +39 -0
- package/src/modules/decisions/index.ts +40 -0
- package/src/modules/decisions/repository.ts +204 -0
- package/src/modules/decisions/routes.ts +184 -0
- package/src/modules/decisions/schema.ts +56 -0
- package/src/modules/decisions/service.ts +223 -0
- package/src/modules/decisions/tools.ts +38 -0
- package/src/modules/forms/embed.ts +274 -0
- package/src/modules/forms/fields.ts +206 -0
- package/src/modules/forms/index.ts +61 -0
- package/src/modules/forms/mapping.ts +222 -0
- package/src/modules/forms/publicRoutes.ts +92 -0
- package/src/modules/forms/repository.ts +223 -0
- package/src/modules/forms/routes.ts +276 -0
- package/src/modules/forms/schema.ts +135 -0
- package/src/modules/forms/service.ts +362 -0
- package/src/modules/forms/submission.ts +496 -0
- package/src/modules/forms/tools.ts +66 -0
- package/src/modules/handbook/index.ts +43 -0
- package/src/modules/handbook/repository.ts +173 -0
- package/src/modules/handbook/routes.ts +145 -0
- package/src/modules/handbook/schema.ts +43 -0
- package/src/modules/handbook/service.ts +399 -0
- package/src/modules/handbook/slugs.ts +54 -0
- package/src/modules/handbook/tools.ts +32 -0
- package/src/modules/handbook/tree.ts +158 -0
- package/src/modules/hiring/candidates.ts +391 -0
- package/src/modules/hiring/index.ts +55 -0
- package/src/modules/hiring/repository.ts +244 -0
- package/src/modules/hiring/roles.ts +174 -0
- package/src/modules/hiring/routes.ts +257 -0
- package/src/modules/hiring/schema.ts +93 -0
- package/src/modules/hiring/tools.ts +73 -0
- package/src/modules/import-export/csv.ts +180 -0
- package/src/modules/import-export/drafts.ts +182 -0
- package/src/modules/import-export/exportRows.ts +85 -0
- package/src/modules/import-export/index.ts +49 -0
- package/src/modules/import-export/mapping.ts +154 -0
- package/src/modules/import-export/plan.ts +311 -0
- package/src/modules/import-export/presets.ts +183 -0
- package/src/modules/import-export/repository.ts +603 -0
- package/src/modules/import-export/routes.ts +276 -0
- package/src/modules/import-export/schema.ts +142 -0
- package/src/modules/import-export/service.ts +842 -0
- package/src/modules/import-export/streams.ts +98 -0
- package/src/modules/import-export/tools.ts +153 -0
- package/src/modules/import-export/validation.ts +163 -0
- package/src/modules/import-export/writes.ts +365 -0
- package/src/modules/integrations/schema.ts +31 -0
- package/src/modules/mcp/index.ts +52 -0
- package/src/modules/mcp/protocol.ts +442 -0
- package/src/modules/mcp/router.ts +425 -0
- package/src/modules/notes/index.ts +43 -0
- package/src/modules/notes/repository.ts +130 -0
- package/src/modules/notes/routes.ts +170 -0
- package/src/modules/notes/schema.ts +42 -0
- package/src/modules/notes/service.ts +204 -0
- package/src/modules/notes/tools.ts +46 -0
- package/src/modules/opportunities/index.ts +44 -0
- package/src/modules/opportunities/repository.ts +157 -0
- package/src/modules/opportunities/routes.ts +152 -0
- package/src/modules/opportunities/schema.ts +47 -0
- package/src/modules/opportunities/service.ts +342 -0
- package/src/modules/opportunities/tools.ts +39 -0
- package/src/modules/partnerships/index.ts +44 -0
- package/src/modules/partnerships/repository.ts +274 -0
- package/src/modules/partnerships/routes.ts +170 -0
- package/src/modules/partnerships/schema.ts +65 -0
- package/src/modules/partnerships/service.ts +442 -0
- package/src/modules/partnerships/tools.ts +41 -0
- package/src/modules/people/index.ts +43 -0
- package/src/modules/people/repository.ts +167 -0
- package/src/modules/people/routes.ts +175 -0
- package/src/modules/people/schema.ts +89 -0
- package/src/modules/people/service.ts +284 -0
- package/src/modules/people/tools.ts +32 -0
- package/src/modules/pipelines/index.ts +43 -0
- package/src/modules/pipelines/repository.ts +116 -0
- package/src/modules/pipelines/routes.ts +157 -0
- package/src/modules/pipelines/schema.ts +37 -0
- package/src/modules/pipelines/service.ts +339 -0
- package/src/modules/pipelines/tools.ts +52 -0
- package/src/modules/plans/index.ts +39 -0
- package/src/modules/plans/repository.ts +174 -0
- package/src/modules/plans/routes.ts +212 -0
- package/src/modules/plans/schema.ts +45 -0
- package/src/modules/plans/service.ts +223 -0
- package/src/modules/plans/tools.ts +45 -0
- package/src/modules/positions/index.ts +42 -0
- package/src/modules/positions/repository.ts +136 -0
- package/src/modules/positions/routes.ts +97 -0
- package/src/modules/positions/schema.ts +42 -0
- package/src/modules/positions/service.ts +253 -0
- package/src/modules/positions/tools.ts +32 -0
- package/src/modules/raises/index.ts +44 -0
- package/src/modules/raises/repository.ts +254 -0
- package/src/modules/raises/routes.ts +160 -0
- package/src/modules/raises/schema.ts +66 -0
- package/src/modules/raises/service.ts +442 -0
- package/src/modules/raises/tools.ts +39 -0
- package/src/modules/recordTargets.ts +194 -0
- package/src/modules/references.ts +44 -0
- package/src/modules/reseal.ts +178 -0
- package/src/modules/search/index.ts +55 -0
- package/src/modules/search/query.ts +104 -0
- package/src/modules/search/repository.ts +388 -0
- package/src/modules/search/routes.ts +131 -0
- package/src/modules/search/service.ts +153 -0
- package/src/modules/search/tools.ts +60 -0
- package/src/modules/stagedRecords.ts +91 -0
- package/src/modules/webhooks/delivery.ts +349 -0
- package/src/modules/webhooks/index.ts +85 -0
- package/src/modules/webhooks/payloads.ts +84 -0
- package/src/modules/webhooks/repository.ts +244 -0
- package/src/modules/webhooks/routes.ts +240 -0
- package/src/modules/webhooks/schema.ts +78 -0
- package/src/modules/webhooks/service.ts +347 -0
- package/src/modules/webhooks/signing.ts +95 -0
- package/src/modules/webhooks/tools.ts +108 -0
- package/src/modules/webhooks/url.ts +21 -0
- package/src/modules/workspace/capabilities.ts +14 -0
- package/src/modules/workspace/idempotencyMiddleware.ts +207 -0
- package/src/modules/workspace/idempotencyRepository.ts +111 -0
- package/src/modules/workspace/index.ts +64 -0
- package/src/modules/workspace/repository.ts +420 -0
- package/src/modules/workspace/roles.ts +38 -0
- package/src/modules/workspace/routes.ts +255 -0
- package/src/modules/workspace/schema.ts +130 -0
- package/src/modules/workspace/service.ts +798 -0
- package/src/modules/workspace/starters.ts +69 -0
- package/src/modules/workspace/tools.ts +141 -0
- package/src/runtime/entitlements.ts +142 -0
- package/src/runtime/events.ts +185 -0
- package/src/runtime/migrate.ts +75 -0
- package/src/runtime/module.ts +147 -0
- package/src/runtime/moduleConfig.ts +68 -0
- package/src/runtime/order.ts +90 -0
- package/src/runtime/registry.ts +263 -0
- package/src/runtime/transaction.ts +80 -0
- package/src/schema/index.ts +30 -0
- package/src/testing/app.ts +79 -0
- package/src/testing/client.ts +118 -0
- package/src/testing/database.ts +106 -0
- package/src/testing/environment.ts +22 -0
- package/src/testing/fixtures.ts +70 -0
- package/src/testing/index.ts +13 -0
- package/src/testing/services.ts +67 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
import { Hono } from 'hono'
|
|
2
|
+
import type { Context } from 'hono'
|
|
3
|
+
|
|
4
|
+
import type { Actor } from '../../lib/actor.ts'
|
|
5
|
+
import { AppError } from '../../lib/errors.ts'
|
|
6
|
+
import { requestOrigin } from '../../lib/http.ts'
|
|
7
|
+
import type { Logger } from '../../lib/logger.ts'
|
|
8
|
+
import type { McpTool } from '../../runtime/module.ts'
|
|
9
|
+
import { readBearerToken } from '../api-keys/keys.ts'
|
|
10
|
+
import { resolveActor, resolveActorFrom } from '../auth/credentials.ts'
|
|
11
|
+
import type { CredentialDependencies } from '../auth/credentials.ts'
|
|
12
|
+
import {
|
|
13
|
+
HEADER_MISMATCH,
|
|
14
|
+
INVALID_REQUEST,
|
|
15
|
+
LATEST_LEGACY_PROTOCOL_VERSION,
|
|
16
|
+
LATEST_PROTOCOL_VERSION,
|
|
17
|
+
METHOD_NOT_FOUND,
|
|
18
|
+
PARSE_ERROR,
|
|
19
|
+
PROTOCOL_VERSION_META,
|
|
20
|
+
dispatch,
|
|
21
|
+
failure,
|
|
22
|
+
isModernVersion,
|
|
23
|
+
isSupportedVersion,
|
|
24
|
+
parseMessage,
|
|
25
|
+
publishTool,
|
|
26
|
+
readMetaVersion,
|
|
27
|
+
readParamsName,
|
|
28
|
+
unsupportedVersion,
|
|
29
|
+
} from './protocol.ts'
|
|
30
|
+
import type {
|
|
31
|
+
DispatchDependencies,
|
|
32
|
+
JsonRpcMessage,
|
|
33
|
+
JsonRpcResponse,
|
|
34
|
+
McpServerInfo,
|
|
35
|
+
ProtocolEra,
|
|
36
|
+
PublishedTool,
|
|
37
|
+
} from './protocol.ts'
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The Streamable HTTP transport, mounted at `/mcp` (`architecture.md` boot step 6).
|
|
41
|
+
*
|
|
42
|
+
* Kelpie never initiates a message, so the transport is one `POST` and nothing
|
|
43
|
+
* else: `GET` would open a server-to-client stream there is nothing to put on,
|
|
44
|
+
* and `DELETE` would end a session that is never started. Both answer `405`,
|
|
45
|
+
* which the transport spec allows and which tells a client to stop trying.
|
|
46
|
+
*
|
|
47
|
+
* **No session id.** Every request carries its own bearer key, so two POSTs need
|
|
48
|
+
* nothing in common and any instance can answer either.
|
|
49
|
+
*
|
|
50
|
+
* **Two eras, decided per POST.** `2026-07-28` removed the handshake, so a modern
|
|
51
|
+
* client announces its revision in every request instead. `readEra` works out
|
|
52
|
+
* which one is being asked for and, for a modern request, checks that the headers
|
|
53
|
+
* the transport mirrors agree with the body before anything acts on either. A
|
|
54
|
+
* batch can only have come from a legacy client, so the first message decides for
|
|
55
|
+
* all of them.
|
|
56
|
+
*
|
|
57
|
+
* **No CORS, and an explicit `Origin` check.** The endpoint sends no CORS headers
|
|
58
|
+
* and reads no cookie, so a page on another origin can neither read a reply nor
|
|
59
|
+
* borrow a signed-in reader's identity. That reasoning is why the check below
|
|
60
|
+
* looked unnecessary and it is still why the risk is small, but the transport
|
|
61
|
+
* spec makes validating `Origin` a requirement rather than an argument, and a
|
|
62
|
+
* rule that holds without depending on a chain of reasoning is worth five lines.
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The body fields the transport mirrors into headers, so an intermediary can
|
|
67
|
+
* route on them without parsing the body. Names compare case-insensitively,
|
|
68
|
+
* which is what Hono's header lookup already does; values do not.
|
|
69
|
+
*/
|
|
70
|
+
const PROTOCOL_VERSION_HEADER = 'MCP-Protocol-Version'
|
|
71
|
+
const METHOD_HEADER = 'Mcp-Method'
|
|
72
|
+
const NAME_HEADER = 'Mcp-Name'
|
|
73
|
+
|
|
74
|
+
/** Answered by GET and DELETE, so a client learns the shape of the endpoint. */
|
|
75
|
+
const POST_ONLY = 'Send MCP messages as a POST to this endpoint'
|
|
76
|
+
|
|
77
|
+
export interface McpRouterDependencies extends CredentialDependencies {
|
|
78
|
+
readonly tools: readonly McpTool[]
|
|
79
|
+
readonly serverInfo: McpServerInfo
|
|
80
|
+
readonly instructions: string
|
|
81
|
+
readonly logger: Logger
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** True when the client will take a plain JSON reply. */
|
|
85
|
+
function acceptsJson(header: string | undefined): boolean {
|
|
86
|
+
if (header === undefined || header.trim().length === 0) {
|
|
87
|
+
return true
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return header
|
|
91
|
+
.split(',')
|
|
92
|
+
.some((value) => {
|
|
93
|
+
const type = value.split(';')[0]?.trim() ?? ''
|
|
94
|
+
|
|
95
|
+
return type === 'application/json' || type === 'application/*' || type === '*/*'
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function acceptsEventStream(header: string | undefined): boolean {
|
|
100
|
+
return (header ?? '')
|
|
101
|
+
.split(',')
|
|
102
|
+
.some((value) => (value.split(';')[0]?.trim() ?? '') === 'text/event-stream')
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Resolves the caller, bearer key only.
|
|
107
|
+
*
|
|
108
|
+
* A session cookie is deliberately not read here even though the REST surface
|
|
109
|
+
* takes one. MCP clients are not browsers, and refusing the cookie means there is
|
|
110
|
+
* no ambient credential for a cross-origin page to spend. That is one of three
|
|
111
|
+
* defences, not the whole of it: `checkOrigin` refuses the page outright, and the
|
|
112
|
+
* absent CORS headers stop it reading a reply.
|
|
113
|
+
*
|
|
114
|
+
* @throws AppError 401 when no key is presented, or it is not a live one.
|
|
115
|
+
*/
|
|
116
|
+
function resolveKeyActor(dependencies: McpRouterDependencies, context: Context): Promise<Actor> {
|
|
117
|
+
return resolveActor(dependencies, { bearer: readBearerToken(context.req.header('Authorization')) })
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Refuses a browser calling from somewhere else.
|
|
122
|
+
*
|
|
123
|
+
* An MCP client is not a browser and sends no `Origin` at all, so an absent
|
|
124
|
+
* header is the ordinary case and is allowed. A present one has to be this
|
|
125
|
+
* deployment's own, which is the same `Host`-derived origin a form's embed URL
|
|
126
|
+
* is built from.
|
|
127
|
+
*
|
|
128
|
+
* There is no allowlist and no configuration for one. A cross-origin browser has
|
|
129
|
+
* no business here whatever its address: the endpoint takes a bearer key, and a
|
|
130
|
+
* page that holds one can send it from a server instead.
|
|
131
|
+
*
|
|
132
|
+
* @throws AppError 403 for a browser on another origin.
|
|
133
|
+
*/
|
|
134
|
+
function checkOrigin(context: Context): void {
|
|
135
|
+
const origin = context.req.header('Origin')
|
|
136
|
+
|
|
137
|
+
if (origin !== undefined && origin !== requestOrigin(context)) {
|
|
138
|
+
throw new AppError('forbidden', 'This endpoint does not answer requests from another origin')
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Undoes the sentinel a client wraps a header value in when it will not survive
|
|
144
|
+
* as plain ASCII: `=?base64?…?=`.
|
|
145
|
+
*
|
|
146
|
+
* A value that is not wrapped is returned as it arrived. The markers are
|
|
147
|
+
* case-sensitive and must be exactly these, so a value that merely looks similar
|
|
148
|
+
* is left alone — and a client with a real value shaped like the sentinel is
|
|
149
|
+
* required to encode it for exactly that reason.
|
|
150
|
+
*/
|
|
151
|
+
const BASE64_SENTINEL = /^=\?base64\?(.*)\?=$/u
|
|
152
|
+
|
|
153
|
+
function decodeHeaderValue(raw: string | undefined): string | undefined {
|
|
154
|
+
if (raw === undefined) {
|
|
155
|
+
return undefined
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
const encoded = BASE64_SENTINEL.exec(raw)
|
|
159
|
+
|
|
160
|
+
return encoded === null ? raw : Buffer.from(encoded[1] ?? '', 'base64').toString('utf8')
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/** Either which revision's rules to answer under, or the refusal to send instead. */
|
|
164
|
+
type EraDecision =
|
|
165
|
+
| { readonly kind: 'era'; readonly era: ProtocolEra }
|
|
166
|
+
| { readonly kind: 'refuse'; readonly response: JsonRpcResponse }
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Names the header and body values that disagree, or nothing when they agree.
|
|
170
|
+
*
|
|
171
|
+
* The point of mirroring body fields into headers is that an intermediary can
|
|
172
|
+
* route on them without parsing the body. That only holds if the two cannot
|
|
173
|
+
* differ, so the server that does parse the body is the one that has to check —
|
|
174
|
+
* otherwise a load balancer and the server act on different values.
|
|
175
|
+
*/
|
|
176
|
+
function headerProblem(context: Context, message: JsonRpcMessage): string | undefined {
|
|
177
|
+
const headerVersion = context.req.header(PROTOCOL_VERSION_HEADER)
|
|
178
|
+
const bodyVersion = readMetaVersion(message.params)
|
|
179
|
+
|
|
180
|
+
if (headerVersion === undefined) {
|
|
181
|
+
return `${PROTOCOL_VERSION_HEADER} is required`
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (headerVersion !== bodyVersion) {
|
|
185
|
+
return `${PROTOCOL_VERSION_HEADER} is "${headerVersion}" and ${PROTOCOL_VERSION_META} is ${bodyVersion === undefined ? 'absent' : `"${bodyVersion}"`}`
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
const methodHeader = context.req.header(METHOD_HEADER)
|
|
189
|
+
|
|
190
|
+
if (methodHeader === undefined) {
|
|
191
|
+
return `${METHOD_HEADER} is required`
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (methodHeader !== message.method) {
|
|
195
|
+
return `${METHOD_HEADER} is "${methodHeader}" and the body's method is "${message.method}"`
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// `Mcp-Name` mirrors `params.name`, which only these methods carry. Of the
|
|
199
|
+
// three the spec names, `tools/call` is the only one Kelpie implements.
|
|
200
|
+
if (message.method !== 'tools/call') {
|
|
201
|
+
return undefined
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
const nameHeader = decodeHeaderValue(context.req.header(NAME_HEADER))
|
|
205
|
+
const bodyName = readParamsName(message.params)
|
|
206
|
+
|
|
207
|
+
if (nameHeader === undefined) {
|
|
208
|
+
return `${NAME_HEADER} is required on tools/call`
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (nameHeader !== bodyName) {
|
|
212
|
+
return `${NAME_HEADER} is "${nameHeader}" and the body names ${bodyName === undefined ? 'no tool' : `"${bodyName}"`}`
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return undefined
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Works out which revision a request is asking for.
|
|
220
|
+
*
|
|
221
|
+
* A modern request says so in its `_meta`, and `server/discover` is a modern
|
|
222
|
+
* method whatever else it carries. Everything else is legacy, including a request
|
|
223
|
+
* that names no version at all: the transport spec has a server read that as
|
|
224
|
+
* `2025-03-26`, from before the header existed.
|
|
225
|
+
*
|
|
226
|
+
* A version Kelpie does not speak is refused with `-32022` carrying the list it
|
|
227
|
+
* does, which is what lets a client pick another and retry. `initialize` is the
|
|
228
|
+
* exception, because negotiating down is what that handshake is for.
|
|
229
|
+
*/
|
|
230
|
+
function readEra(context: Context, message: JsonRpcMessage): EraDecision {
|
|
231
|
+
const id = message.id ?? null
|
|
232
|
+
const claimed = readMetaVersion(message.params) ?? context.req.header(PROTOCOL_VERSION_HEADER)
|
|
233
|
+
|
|
234
|
+
if (claimed !== undefined && !isSupportedVersion(claimed) && message.method !== 'initialize') {
|
|
235
|
+
return { kind: 'refuse', response: unsupportedVersion(id, claimed) }
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const modern =
|
|
239
|
+
message.method === 'server/discover' || (claimed !== undefined && isModernVersion(claimed))
|
|
240
|
+
|
|
241
|
+
if (!modern) {
|
|
242
|
+
return { kind: 'era', era: 'legacy' }
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
const problem = headerProblem(context, message)
|
|
246
|
+
|
|
247
|
+
return problem === undefined
|
|
248
|
+
? { kind: 'era', era: 'modern' }
|
|
249
|
+
: { kind: 'refuse', response: failure(id, HEADER_MISMATCH, `Header mismatch: ${problem}`) }
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* The status a set of responses is sent with.
|
|
254
|
+
*
|
|
255
|
+
* `200` almost always: a JSON-RPC error is a normal HTTP response. The exception
|
|
256
|
+
* is a modern method-not-found, which the transport spec puts on `404` so a
|
|
257
|
+
* client can tell a modern server that lacks the method from a legacy server that
|
|
258
|
+
* does not host the endpoint at all. Legacy revisions never said that, so they
|
|
259
|
+
* keep the `200`.
|
|
260
|
+
*/
|
|
261
|
+
function statusFor(responses: readonly JsonRpcResponse[], era: ProtocolEra): 200 | 404 {
|
|
262
|
+
if (era === 'legacy' || responses.length !== 1) {
|
|
263
|
+
return 200
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
return responses[0]?.error?.code === METHOD_NOT_FOUND ? 404 : 200
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Renders responses in whichever of the two content types the client will take.
|
|
271
|
+
*
|
|
272
|
+
* A `2025-03-26` client may send a batch, so the payload is an array when the
|
|
273
|
+
* request was one, and a bare object otherwise.
|
|
274
|
+
*/
|
|
275
|
+
function renderResponses(
|
|
276
|
+
context: Context,
|
|
277
|
+
responses: readonly JsonRpcResponse[],
|
|
278
|
+
batched: boolean,
|
|
279
|
+
era: ProtocolEra,
|
|
280
|
+
): Response {
|
|
281
|
+
// Nothing to answer: every message in the body was a notification. The spec
|
|
282
|
+
// fixes this on 202, and the body must be empty.
|
|
283
|
+
if (responses.length === 0) {
|
|
284
|
+
return context.body(null, 202)
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
const payload: unknown = batched ? responses : responses[0]
|
|
288
|
+
const accept = context.req.header('Accept')
|
|
289
|
+
const status = statusFor(responses, era)
|
|
290
|
+
|
|
291
|
+
if (acceptsJson(accept)) {
|
|
292
|
+
return context.json(payload, status)
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
if (acceptsEventStream(accept)) {
|
|
296
|
+
return context.body(`event: message\ndata: ${JSON.stringify(payload)}\n\n`, status, {
|
|
297
|
+
'Content-Type': 'text/event-stream',
|
|
298
|
+
'Cache-Control': 'no-cache, no-store',
|
|
299
|
+
})
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
throw new AppError('bad_request', 'Accept application/json or text/event-stream')
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
export interface McpEndpoint {
|
|
306
|
+
/** Mounts at `/mcp`. Speaks JSON-RPC to MCP clients. */
|
|
307
|
+
readonly transport: Hono
|
|
308
|
+
/**
|
|
309
|
+
* Mounts under `/v1`. One ordinary REST read of the same tool listing, for a
|
|
310
|
+
* caller holding a session rather than a key: the admin page showing what this
|
|
311
|
+
* deployment exposes, or anyone checking the surface without an MCP client.
|
|
312
|
+
*/
|
|
313
|
+
readonly catalog: Hono
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/** The `tools/list` entry, rendered in `api.md`'s `snake_case`. */
|
|
317
|
+
function catalogEntry(tool: PublishedTool): Record<string, unknown> {
|
|
318
|
+
return { name: tool.name, description: tool.description, input_schema: tool.inputSchema }
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
export function createMcpEndpoint(dependencies: McpRouterDependencies): McpEndpoint {
|
|
322
|
+
const transport = new Hono()
|
|
323
|
+
const catalog = new Hono()
|
|
324
|
+
// Built once: a schema Zod cannot render as JSON Schema then fails boot, rather
|
|
325
|
+
// than producing a tool listing no client can read.
|
|
326
|
+
const published = dependencies.tools.map(publishTool)
|
|
327
|
+
const dispatchDependencies: DispatchDependencies = {
|
|
328
|
+
tools: dependencies.tools,
|
|
329
|
+
published,
|
|
330
|
+
serverInfo: dependencies.serverInfo,
|
|
331
|
+
instructions: dependencies.instructions,
|
|
332
|
+
logger: dependencies.logger,
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
catalog.get('/mcp/tools', async (context) => {
|
|
336
|
+
// Credentials as anywhere under `/v1`, so a signed-in reader qualifies. The
|
|
337
|
+
// listing describes the deployment rather than the workspace, but it is not
|
|
338
|
+
// public: what an install exposes is not a stranger's business.
|
|
339
|
+
await resolveActorFrom(dependencies, context)
|
|
340
|
+
|
|
341
|
+
return context.json({ data: published.map(catalogEntry), next_cursor: null })
|
|
342
|
+
})
|
|
343
|
+
|
|
344
|
+
transport.post('/', async (context) => {
|
|
345
|
+
checkOrigin(context)
|
|
346
|
+
|
|
347
|
+
// Credentials before anything protocol-level, including `server/discover`.
|
|
348
|
+
// A client may call that one before it knows anything about the server, but
|
|
349
|
+
// it always has the key already: it is in the same config as the URL.
|
|
350
|
+
const actor = await resolveKeyActor(dependencies, context).catch((error: unknown) => {
|
|
351
|
+
if (error instanceof AppError && error.code === 'unauthorized') {
|
|
352
|
+
// The header is what tells a client it may retry with a credential
|
|
353
|
+
// rather than that the endpoint is gone.
|
|
354
|
+
context.header('WWW-Authenticate', 'Bearer')
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
throw error
|
|
358
|
+
})
|
|
359
|
+
|
|
360
|
+
const raw: unknown = await context.req.json().catch(() => {
|
|
361
|
+
throw new AppError('bad_request', 'Body must be valid JSON')
|
|
362
|
+
})
|
|
363
|
+
const batched = Array.isArray(raw)
|
|
364
|
+
const incoming: readonly unknown[] = batched ? raw : [raw]
|
|
365
|
+
|
|
366
|
+
if (incoming.length === 0) {
|
|
367
|
+
return context.json(failure(null, INVALID_REQUEST, 'A batch must hold at least one message'), 400)
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
const parsed = incoming.map(parseMessage)
|
|
371
|
+
// The era belongs to the POST, not to each message in it: a modern request
|
|
372
|
+
// is one message, and a batch can only have come from a legacy client.
|
|
373
|
+
const first = parsed.find((message) => message !== undefined)
|
|
374
|
+
|
|
375
|
+
if (first === undefined) {
|
|
376
|
+
return context.json(failure(null, PARSE_ERROR, 'Not a JSON-RPC 2.0 message'), 400)
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
const decision = readEra(context, first)
|
|
380
|
+
|
|
381
|
+
if (decision.kind === 'refuse') {
|
|
382
|
+
return context.json(decision.response, 400)
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
const { era } = decision
|
|
386
|
+
|
|
387
|
+
if (era === 'modern' && batched) {
|
|
388
|
+
return context.json(
|
|
389
|
+
failure(
|
|
390
|
+
first.id ?? null,
|
|
391
|
+
INVALID_REQUEST,
|
|
392
|
+
`MCP ${LATEST_PROTOCOL_VERSION} takes one message per request; batches ended with ${LATEST_LEGACY_PROTOCOL_VERSION}`,
|
|
393
|
+
),
|
|
394
|
+
400,
|
|
395
|
+
)
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
const responses: JsonRpcResponse[] = []
|
|
399
|
+
|
|
400
|
+
for (const message of parsed) {
|
|
401
|
+
if (message === undefined) {
|
|
402
|
+
responses.push(failure(null, PARSE_ERROR, 'Not a JSON-RPC 2.0 message'))
|
|
403
|
+
continue
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
const response = await dispatch(dispatchDependencies, message, era, actor)
|
|
407
|
+
|
|
408
|
+
if (response !== undefined) {
|
|
409
|
+
responses.push(response)
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
return renderResponses(context, responses, batched, era)
|
|
414
|
+
})
|
|
415
|
+
|
|
416
|
+
transport.get('/', () => {
|
|
417
|
+
throw new AppError('method_not_allowed', POST_ONLY)
|
|
418
|
+
})
|
|
419
|
+
|
|
420
|
+
transport.delete('/', () => {
|
|
421
|
+
throw new AppError('method_not_allowed', POST_ONLY)
|
|
422
|
+
})
|
|
423
|
+
|
|
424
|
+
return { transport, catalog }
|
|
425
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { KelpieModule } from '../../runtime/module.ts'
|
|
2
|
+
import { createActivityRecorder } from '../activities/index.ts'
|
|
3
|
+
import { mountNotesRoutes } from './routes.ts'
|
|
4
|
+
import * as schema from './schema.ts'
|
|
5
|
+
import { createNotesService } from './service.ts'
|
|
6
|
+
import { registerNotesTools } from './tools.ts'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Notes: what a person wrote down about a record.
|
|
10
|
+
*
|
|
11
|
+
* Requires `activities`, because writing a note writes the timeline entry
|
|
12
|
+
* announcing it, in the same transaction.
|
|
13
|
+
*/
|
|
14
|
+
export function createNotesModule(migrationsDirectory: string): KelpieModule {
|
|
15
|
+
return {
|
|
16
|
+
id: 'notes',
|
|
17
|
+
requires: ['workspace', 'activities'],
|
|
18
|
+
structural: true,
|
|
19
|
+
|
|
20
|
+
register(context) {
|
|
21
|
+
const service = createNotesService({
|
|
22
|
+
db: context.db,
|
|
23
|
+
transaction: context.transaction,
|
|
24
|
+
createId: context.createId,
|
|
25
|
+
now: context.now,
|
|
26
|
+
recordActivity: createActivityRecorder({
|
|
27
|
+
createId: context.createId,
|
|
28
|
+
now: context.now,
|
|
29
|
+
}),
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
context.schema(schema, migrationsDirectory)
|
|
33
|
+
|
|
34
|
+
context.routes((router) => {
|
|
35
|
+
mountNotesRoutes(router, { db: context.db, now: context.now, service })
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
registerNotesTools(context.mcp, service)
|
|
39
|
+
|
|
40
|
+
return Promise.resolve()
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { and, eq, inArray } from 'drizzle-orm'
|
|
2
|
+
import type { SQL } from 'drizzle-orm'
|
|
3
|
+
|
|
4
|
+
import { keysetCondition, orderByWindow, timestampSort } from '../../lib/pagination.ts'
|
|
5
|
+
import type { ListWindow, SortableFields } from '../../lib/pagination.ts'
|
|
6
|
+
import type { Queryable } from '../../runtime/transaction.ts'
|
|
7
|
+
import type { RecordTargetType } from '../recordTargets.ts'
|
|
8
|
+
import { notes } from './schema.ts'
|
|
9
|
+
|
|
10
|
+
export type NoteRecord = typeof notes.$inferSelect
|
|
11
|
+
|
|
12
|
+
/** The writable column shape. Services build one of these; nothing else knows the column names. */
|
|
13
|
+
export type NoteColumns = typeof notes.$inferInsert
|
|
14
|
+
|
|
15
|
+
export const NOTE_SORTS: SortableFields<NoteRecord> = {
|
|
16
|
+
created_at: timestampSort(notes.createdAt, (note) => note.createdAt),
|
|
17
|
+
updated_at: timestampSort(notes.updatedAt, (note) => note.updatedAt),
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const DEFAULT_NOTE_SORT = '-created_at'
|
|
21
|
+
|
|
22
|
+
export interface NoteFilters {
|
|
23
|
+
readonly targetType: RecordTargetType
|
|
24
|
+
/**
|
|
25
|
+
* `?target_id=`, repeatable per `api.md`. Never empty: a note list always
|
|
26
|
+
* names the records it is for, and an omitted filter is a 422 at the route.
|
|
27
|
+
*/
|
|
28
|
+
readonly targetIds: readonly string[]
|
|
29
|
+
/** `?pinned=`. Absent returns both. Pinned notes are what agents read first. */
|
|
30
|
+
readonly pinned?: boolean | undefined
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function conditionsFor(workspaceId: string, filters: NoteFilters): (SQL | undefined)[] {
|
|
34
|
+
return [
|
|
35
|
+
eq(notes.workspaceId, workspaceId),
|
|
36
|
+
eq(notes.targetType, filters.targetType),
|
|
37
|
+
inArray(notes.targetId, [...filters.targetIds]),
|
|
38
|
+
filters.pinned === undefined ? undefined : eq(notes.pinned, filters.pinned),
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** @returns Up to `window.fetchLimit` rows: one more than the page, so the caller can tell there is a next one. */
|
|
43
|
+
export function listNotes(
|
|
44
|
+
db: Queryable,
|
|
45
|
+
workspaceId: string,
|
|
46
|
+
filters: NoteFilters,
|
|
47
|
+
window: ListWindow<NoteRecord>,
|
|
48
|
+
): Promise<NoteRecord[]> {
|
|
49
|
+
return db
|
|
50
|
+
.select()
|
|
51
|
+
.from(notes)
|
|
52
|
+
.where(and(...conditionsFor(workspaceId, filters), keysetCondition(window, notes.id)))
|
|
53
|
+
.orderBy(...orderByWindow(window, notes.id))
|
|
54
|
+
.limit(window.fetchLimit)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export async function findNote(
|
|
58
|
+
db: Queryable,
|
|
59
|
+
workspaceId: string,
|
|
60
|
+
id: string,
|
|
61
|
+
): Promise<NoteRecord | undefined> {
|
|
62
|
+
const [found] = await db
|
|
63
|
+
.select()
|
|
64
|
+
.from(notes)
|
|
65
|
+
.where(and(eq(notes.workspaceId, workspaceId), eq(notes.id, id)))
|
|
66
|
+
.limit(1)
|
|
67
|
+
|
|
68
|
+
return found
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export async function insertNote(db: Queryable, values: NoteColumns): Promise<NoteRecord> {
|
|
72
|
+
const [created] = await db.insert(notes).values(values).returning()
|
|
73
|
+
|
|
74
|
+
if (created === undefined) {
|
|
75
|
+
throw new Error(`Inserting note ${values.id} returned no row`)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return created
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export async function updateNote(
|
|
82
|
+
db: Queryable,
|
|
83
|
+
workspaceId: string,
|
|
84
|
+
id: string,
|
|
85
|
+
changes: Partial<NoteColumns>,
|
|
86
|
+
): Promise<NoteRecord | undefined> {
|
|
87
|
+
const [updated] = await db
|
|
88
|
+
.update(notes)
|
|
89
|
+
.set(changes)
|
|
90
|
+
.where(and(eq(notes.workspaceId, workspaceId), eq(notes.id, id)))
|
|
91
|
+
.returning()
|
|
92
|
+
|
|
93
|
+
return updated
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export async function deleteNote(db: Queryable, workspaceId: string, id: string): Promise<number> {
|
|
97
|
+
const deleted = await db
|
|
98
|
+
.delete(notes)
|
|
99
|
+
.where(and(eq(notes.workspaceId, workspaceId), eq(notes.id, id)))
|
|
100
|
+
.returning({ id: notes.id })
|
|
101
|
+
|
|
102
|
+
return deleted.length
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Removes every note attached to a target.
|
|
107
|
+
*
|
|
108
|
+
* The target is polymorphic and carries no foreign key, so nothing in the
|
|
109
|
+
* database deletes these. The service that deletes the target calls this inside
|
|
110
|
+
* the same transaction (`schema.md`).
|
|
111
|
+
*/
|
|
112
|
+
export async function deleteForTarget(
|
|
113
|
+
db: Queryable,
|
|
114
|
+
workspaceId: string,
|
|
115
|
+
targetType: string,
|
|
116
|
+
targetId: string,
|
|
117
|
+
): Promise<number> {
|
|
118
|
+
const deleted = await db
|
|
119
|
+
.delete(notes)
|
|
120
|
+
.where(
|
|
121
|
+
and(
|
|
122
|
+
eq(notes.workspaceId, workspaceId),
|
|
123
|
+
eq(notes.targetType, targetType),
|
|
124
|
+
eq(notes.targetId, targetId),
|
|
125
|
+
),
|
|
126
|
+
)
|
|
127
|
+
.returning({ id: notes.id })
|
|
128
|
+
|
|
129
|
+
return deleted.length
|
|
130
|
+
}
|