@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,292 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { AppError, describeThrown, internalErrorBody, toErrorBody } from '../../lib/errors.js';
|
|
3
|
+
/**
|
|
4
|
+
* Revisions that carry version, identity and capabilities in each request's
|
|
5
|
+
* `_meta` rather than establishing them with a handshake.
|
|
6
|
+
*/
|
|
7
|
+
export const MODERN_PROTOCOL_VERSIONS = ['2026-07-28'];
|
|
8
|
+
/**
|
|
9
|
+
* Revisions that open with `initialize`.
|
|
10
|
+
*
|
|
11
|
+
* `2025-03-26` is kept because its clients are the ones that send JSON-RPC
|
|
12
|
+
* batches, which `2025-06-18` removed. Answering both costs one array branch in
|
|
13
|
+
* the transport and keeps older MCP clients working.
|
|
14
|
+
*/
|
|
15
|
+
export const LEGACY_PROTOCOL_VERSIONS = ['2025-06-18', '2025-03-26'];
|
|
16
|
+
/** Everything Kelpie speaks, newest first. This is the list a `-32022` hands back. */
|
|
17
|
+
export const SUPPORTED_PROTOCOL_VERSIONS = [
|
|
18
|
+
...MODERN_PROTOCOL_VERSIONS,
|
|
19
|
+
...LEGACY_PROTOCOL_VERSIONS,
|
|
20
|
+
];
|
|
21
|
+
/** Newest revision Kelpie speaks, which is also the newest that exists. */
|
|
22
|
+
export const LATEST_PROTOCOL_VERSION = '2026-07-28';
|
|
23
|
+
/**
|
|
24
|
+
* Newest *legacy* revision, and the one an `initialize` naming something
|
|
25
|
+
* unrecognised is answered with. Handing a legacy client `2026-07-28` would name
|
|
26
|
+
* a revision in which the handshake it just completed does not exist.
|
|
27
|
+
*/
|
|
28
|
+
export const LATEST_LEGACY_PROTOCOL_VERSION = '2025-06-18';
|
|
29
|
+
/**
|
|
30
|
+
* `_meta` keys the modern revision defines. Reverse-DNS prefixed, which is the
|
|
31
|
+
* naming rule for anything outside a caller's own namespace.
|
|
32
|
+
*/
|
|
33
|
+
export const PROTOCOL_VERSION_META = 'io.modelcontextprotocol/protocolVersion';
|
|
34
|
+
export const CLIENT_INFO_META = 'io.modelcontextprotocol/clientInfo';
|
|
35
|
+
export const CLIENT_CAPABILITIES_META = 'io.modelcontextprotocol/clientCapabilities';
|
|
36
|
+
export const SERVER_INFO_META = 'io.modelcontextprotocol/serverInfo';
|
|
37
|
+
/** JSON-RPC's own codes. Anything Kelpie refuses maps onto one of these. */
|
|
38
|
+
export const PARSE_ERROR = -32_700;
|
|
39
|
+
export const INVALID_REQUEST = -32_600;
|
|
40
|
+
export const METHOD_NOT_FOUND = -32_601;
|
|
41
|
+
export const INVALID_PARAMS = -32_602;
|
|
42
|
+
export const INTERNAL_ERROR = -32_603;
|
|
43
|
+
/**
|
|
44
|
+
* Codes MCP allocates for itself, from the `-32020` to `-32099` band the spec
|
|
45
|
+
* reserves. Both were renumbered out of the implementation-defined range in
|
|
46
|
+
* `2026-07-28`, so these values are the current ones and not the draft's.
|
|
47
|
+
*/
|
|
48
|
+
export const HEADER_MISMATCH = -32_020;
|
|
49
|
+
export const UNSUPPORTED_PROTOCOL_VERSION = -32_022;
|
|
50
|
+
/**
|
|
51
|
+
* How long a client may hold the tool listing.
|
|
52
|
+
*
|
|
53
|
+
* The set is fixed at boot by the module list, so within one process it cannot
|
|
54
|
+
* change at all; only a redeploy that adds a module can move it. An hour bounds
|
|
55
|
+
* how long a client can be wrong about that, and matches the figure the spec's
|
|
56
|
+
* own `server/discover` example uses.
|
|
57
|
+
*/
|
|
58
|
+
export const TOOL_LISTING_TTL_MS = 3_600_000;
|
|
59
|
+
/**
|
|
60
|
+
* Cacheable by anyone. The listing is derived from the module list, so it is
|
|
61
|
+
* identical for every workspace and every key, and holds no workspace data — the
|
|
62
|
+
* condition the spec sets for sharing a response across authorization contexts.
|
|
63
|
+
*/
|
|
64
|
+
const CACHE_HINTS = { ttlMs: TOOL_LISTING_TTL_MS, cacheScope: 'public' };
|
|
65
|
+
/**
|
|
66
|
+
* An incoming message. `id` present means a request that must be answered; absent
|
|
67
|
+
* means a notification, which must not be.
|
|
68
|
+
*
|
|
69
|
+
* Loose about `params` on purpose: each method validates its own, so a bad shape
|
|
70
|
+
* is that method's `-32602` rather than a blanket parse failure that says nothing
|
|
71
|
+
* about which field was wrong.
|
|
72
|
+
*/
|
|
73
|
+
const messageSchema = z.object({
|
|
74
|
+
jsonrpc: z.literal('2.0'),
|
|
75
|
+
id: z.union([z.string(), z.number()]).optional(),
|
|
76
|
+
method: z.string().min(1),
|
|
77
|
+
params: z.unknown().optional(),
|
|
78
|
+
});
|
|
79
|
+
const initializeParams = z.object({
|
|
80
|
+
protocolVersion: z.string().min(1),
|
|
81
|
+
capabilities: z.unknown().optional(),
|
|
82
|
+
clientInfo: z.unknown().optional(),
|
|
83
|
+
});
|
|
84
|
+
const callToolParams = z.object({
|
|
85
|
+
name: z.string().min(1),
|
|
86
|
+
arguments: z.unknown().optional(),
|
|
87
|
+
});
|
|
88
|
+
/** Reads the two body fields the transport mirrors into headers, and the `_meta` version. */
|
|
89
|
+
const requestEnvelope = z.object({
|
|
90
|
+
name: z.string().optional(),
|
|
91
|
+
_meta: z.object({ [PROTOCOL_VERSION_META]: z.string().min(1).optional() }).optional(),
|
|
92
|
+
});
|
|
93
|
+
/**
|
|
94
|
+
* Converts a tool's Zod input schema to the JSON Schema `tools/list` publishes.
|
|
95
|
+
*
|
|
96
|
+
* `io: 'input'` matters: a field with a `.default()` is optional to the caller and
|
|
97
|
+
* required to the tool body, and only the input view says so.
|
|
98
|
+
*
|
|
99
|
+
* @throws When a schema has no JSON Schema equivalent. Called at mount, so that
|
|
100
|
+
* is a boot failure rather than a broken tool listing.
|
|
101
|
+
*/
|
|
102
|
+
export function publishTool(tool) {
|
|
103
|
+
const schema = z.toJSONSchema(tool.inputSchema, { io: 'input' });
|
|
104
|
+
// `$schema` is valid and useless here: MCP already fixes the dialect, and the
|
|
105
|
+
// key repeats on every one of a hundred tools in every listing.
|
|
106
|
+
delete schema.$schema;
|
|
107
|
+
return { name: tool.name, description: tool.description, inputSchema: schema };
|
|
108
|
+
}
|
|
109
|
+
/** Parses one incoming message. */
|
|
110
|
+
export function parseMessage(value) {
|
|
111
|
+
const parsed = messageSchema.safeParse(value);
|
|
112
|
+
return parsed.success ? parsed.data : undefined;
|
|
113
|
+
}
|
|
114
|
+
/** The protocol version a modern client puts in every request's `_meta`. */
|
|
115
|
+
export function readMetaVersion(params) {
|
|
116
|
+
const parsed = requestEnvelope.safeParse(params);
|
|
117
|
+
return parsed.success ? parsed.data._meta?.[PROTOCOL_VERSION_META] : undefined;
|
|
118
|
+
}
|
|
119
|
+
/** `params.name`, which the transport mirrors into `Mcp-Name`. */
|
|
120
|
+
export function readParamsName(params) {
|
|
121
|
+
const parsed = requestEnvelope.safeParse(params);
|
|
122
|
+
return parsed.success ? parsed.data.name : undefined;
|
|
123
|
+
}
|
|
124
|
+
export function isModernVersion(version) {
|
|
125
|
+
return MODERN_PROTOCOL_VERSIONS.includes(version);
|
|
126
|
+
}
|
|
127
|
+
export function isSupportedVersion(version) {
|
|
128
|
+
return SUPPORTED_PROTOCOL_VERSIONS.includes(version);
|
|
129
|
+
}
|
|
130
|
+
function success(id, result) {
|
|
131
|
+
return { jsonrpc: '2.0', id, result };
|
|
132
|
+
}
|
|
133
|
+
export function failure(id, code, message, data) {
|
|
134
|
+
return {
|
|
135
|
+
jsonrpc: '2.0',
|
|
136
|
+
id,
|
|
137
|
+
error: data === undefined ? { code, message } : { code, message, data },
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/** The `-32022` a client reads to pick a version it and Kelpie both speak. */
|
|
141
|
+
export function unsupportedVersion(id, requested) {
|
|
142
|
+
return failure(id, UNSUPPORTED_PROTOCOL_VERSION, 'Unsupported protocol version', {
|
|
143
|
+
supported: SUPPORTED_PROTOCOL_VERSIONS,
|
|
144
|
+
requested,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* The version to answer a legacy `initialize` with.
|
|
149
|
+
*
|
|
150
|
+
* A client asking for a legacy revision gets that one back, which is what lets a
|
|
151
|
+
* `2025-03-26` client keep its batches. Anything else gets the newest legacy
|
|
152
|
+
* revision, and the client decides whether it can live with it.
|
|
153
|
+
*/
|
|
154
|
+
export function negotiateLegacyVersion(requested) {
|
|
155
|
+
return LEGACY_PROTOCOL_VERSIONS.includes(requested) ? requested : LATEST_LEGACY_PROTOCOL_VERSION;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Dresses a payload as a finished result.
|
|
159
|
+
*
|
|
160
|
+
* Modern results carry `resultType` and identify the server in `_meta`; legacy
|
|
161
|
+
* results carry neither, and adding them would put fields in front of a client
|
|
162
|
+
* whose revision never defined them.
|
|
163
|
+
*/
|
|
164
|
+
function completeResult(dependencies, era, payload) {
|
|
165
|
+
if (era === 'legacy') {
|
|
166
|
+
return payload;
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
...payload,
|
|
170
|
+
resultType: 'complete',
|
|
171
|
+
_meta: { [SERVER_INFO_META]: dependencies.serverInfo },
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Renders what a tool threw as a tool result rather than a JSON-RPC error.
|
|
176
|
+
*
|
|
177
|
+
* MCP draws that line deliberately: a protocol error means the call never
|
|
178
|
+
* happened, while a tool that ran and refused is an answer the model should see
|
|
179
|
+
* and can act on. The body is the same `api.md` error shape the REST route would
|
|
180
|
+
* have returned, so a 404 reads identically on both surfaces.
|
|
181
|
+
*/
|
|
182
|
+
function toolFailure(logger, toolName, error) {
|
|
183
|
+
if (error instanceof AppError) {
|
|
184
|
+
return {
|
|
185
|
+
content: [{ type: 'text', text: JSON.stringify(toErrorBody(error)) }],
|
|
186
|
+
isError: true,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
logger.error('mcp tool failed', { tool: toolName, error: describeThrown(error) });
|
|
190
|
+
return {
|
|
191
|
+
content: [{ type: 'text', text: JSON.stringify(internalErrorBody()) }],
|
|
192
|
+
isError: true,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
async function callTool(dependencies, era, id, params, actor) {
|
|
196
|
+
const parsed = callToolParams.safeParse(params);
|
|
197
|
+
if (!parsed.success) {
|
|
198
|
+
return failure(id, INVALID_PARAMS, 'tools/call needs a tool "name"');
|
|
199
|
+
}
|
|
200
|
+
const tool = dependencies.tools.find((candidate) => candidate.name === parsed.data.name);
|
|
201
|
+
if (tool === undefined) {
|
|
202
|
+
return failure(id, INVALID_PARAMS, `Unknown tool "${parsed.data.name}"`);
|
|
203
|
+
}
|
|
204
|
+
try {
|
|
205
|
+
// `arguments` is optional on the wire and every tool schema is an object, so
|
|
206
|
+
// an absent one is an empty object rather than a validation failure the
|
|
207
|
+
// caller cannot act on.
|
|
208
|
+
const value = await tool.invoke(parsed.data.arguments ?? {}, actor);
|
|
209
|
+
return success(id, completeResult(dependencies, era, {
|
|
210
|
+
content: [{ type: 'text', text: JSON.stringify(value) }],
|
|
211
|
+
isError: false,
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
return success(id, completeResult(dependencies, era, toolFailure(dependencies.logger, tool.name, error)));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Answers one message.
|
|
220
|
+
*
|
|
221
|
+
* @param era Which revision's rules to answer under. The transport decides it
|
|
222
|
+
* from how the request arrived, and every method here that exists in only one
|
|
223
|
+
* era is method-not-found in the other.
|
|
224
|
+
* @returns The response, or undefined for a notification, which JSON-RPC forbids
|
|
225
|
+
* answering.
|
|
226
|
+
*/
|
|
227
|
+
export async function dispatch(dependencies, message, era, actor) {
|
|
228
|
+
const { id } = message;
|
|
229
|
+
if (id === undefined) {
|
|
230
|
+
// Kelpie subscribes to no client notifications. `notifications/initialized`
|
|
231
|
+
// and the cancellations are acknowledged by the transport's 202 and dropped.
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
switch (message.method) {
|
|
235
|
+
/** Legacy only: the modern revision removed the handshake outright. */
|
|
236
|
+
case 'initialize': {
|
|
237
|
+
if (era === 'modern') {
|
|
238
|
+
break;
|
|
239
|
+
}
|
|
240
|
+
const parsed = initializeParams.safeParse(message.params);
|
|
241
|
+
if (!parsed.success) {
|
|
242
|
+
return failure(id, INVALID_PARAMS, 'initialize needs a "protocolVersion"');
|
|
243
|
+
}
|
|
244
|
+
return success(id, {
|
|
245
|
+
protocolVersion: negotiateLegacyVersion(parsed.data.protocolVersion),
|
|
246
|
+
// `listChanged: false`: the tool set is fixed at boot by the module list,
|
|
247
|
+
// so there is never a change to notify.
|
|
248
|
+
capabilities: { tools: { listChanged: false } },
|
|
249
|
+
serverInfo: dependencies.serverInfo,
|
|
250
|
+
instructions: dependencies.instructions,
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Modern only, and mandatory there. It is the one request a client may send
|
|
255
|
+
* before it knows anything about the server, so it names every revision this
|
|
256
|
+
* deployment speaks — legacy ones included, which is how a dual-era client
|
|
257
|
+
* discovers it can fall back.
|
|
258
|
+
*/
|
|
259
|
+
case 'server/discover': {
|
|
260
|
+
if (era === 'legacy') {
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
return success(id, completeResult(dependencies, era, {
|
|
264
|
+
supportedVersions: SUPPORTED_PROTOCOL_VERSIONS,
|
|
265
|
+
capabilities: { tools: {} },
|
|
266
|
+
instructions: dependencies.instructions,
|
|
267
|
+
...CACHE_HINTS,
|
|
268
|
+
}));
|
|
269
|
+
}
|
|
270
|
+
/** Legacy only: `2026-07-28` removed it. */
|
|
271
|
+
case 'ping': {
|
|
272
|
+
if (era === 'modern') {
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
return success(id, {});
|
|
276
|
+
}
|
|
277
|
+
case 'tools/list':
|
|
278
|
+
// No pagination: the whole set is known at boot and is a few hundred
|
|
279
|
+
// kilobytes at most, so a cursor would only add a round trip. The order is
|
|
280
|
+
// module registration order, which is fixed, so a client may cache it.
|
|
281
|
+
return success(id, completeResult(dependencies, era, {
|
|
282
|
+
tools: dependencies.published,
|
|
283
|
+
...(era === 'modern' ? CACHE_HINTS : {}),
|
|
284
|
+
}));
|
|
285
|
+
case 'tools/call':
|
|
286
|
+
return callTool(dependencies, era, id, message.params, actor);
|
|
287
|
+
default:
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
return failure(id, METHOD_NOT_FOUND, `Kelpie does not implement "${message.method}" under MCP ${era === 'modern' ? LATEST_PROTOCOL_VERSION : 'the initialize-based revisions'}`);
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/modules/mcp/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import type { Logger } from '../../lib/logger.ts';
|
|
3
|
+
import type { McpTool } from '../../runtime/module.ts';
|
|
4
|
+
import type { CredentialDependencies } from '../auth/credentials.ts';
|
|
5
|
+
import type { McpServerInfo } from './protocol.ts';
|
|
6
|
+
export interface McpRouterDependencies extends CredentialDependencies {
|
|
7
|
+
readonly tools: readonly McpTool[];
|
|
8
|
+
readonly serverInfo: McpServerInfo;
|
|
9
|
+
readonly instructions: string;
|
|
10
|
+
readonly logger: Logger;
|
|
11
|
+
}
|
|
12
|
+
export interface McpEndpoint {
|
|
13
|
+
/** Mounts at `/mcp`. Speaks JSON-RPC to MCP clients. */
|
|
14
|
+
readonly transport: Hono;
|
|
15
|
+
/**
|
|
16
|
+
* Mounts under `/v1`. One ordinary REST read of the same tool listing, for a
|
|
17
|
+
* caller holding a session rather than a key: the admin page showing what this
|
|
18
|
+
* deployment exposes, or anyone checking the surface without an MCP client.
|
|
19
|
+
*/
|
|
20
|
+
readonly catalog: Hono;
|
|
21
|
+
}
|
|
22
|
+
export declare function createMcpEndpoint(dependencies: McpRouterDependencies): McpEndpoint;
|
|
23
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/modules/mcp/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAM3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAGtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAmBpE,OAAO,KAAK,EAIV,aAAa,EAGd,MAAM,eAAe,CAAA;AAwCtB,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;IAClC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAA;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AA+ND,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAA;CACvB;AAOD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,qBAAqB,GAAG,WAAW,CAwGlF"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { AppError } from '../../lib/errors.js';
|
|
3
|
+
import { requestOrigin } from '../../lib/http.js';
|
|
4
|
+
import { readBearerToken } from '../api-keys/keys.js';
|
|
5
|
+
import { resolveActor, resolveActorFrom } from '../auth/credentials.js';
|
|
6
|
+
import { HEADER_MISMATCH, INVALID_REQUEST, LATEST_LEGACY_PROTOCOL_VERSION, LATEST_PROTOCOL_VERSION, METHOD_NOT_FOUND, PARSE_ERROR, PROTOCOL_VERSION_META, dispatch, failure, isModernVersion, isSupportedVersion, parseMessage, publishTool, readMetaVersion, readParamsName, unsupportedVersion, } from './protocol.js';
|
|
7
|
+
/**
|
|
8
|
+
* The Streamable HTTP transport, mounted at `/mcp` (`architecture.md` boot step 6).
|
|
9
|
+
*
|
|
10
|
+
* Kelpie never initiates a message, so the transport is one `POST` and nothing
|
|
11
|
+
* else: `GET` would open a server-to-client stream there is nothing to put on,
|
|
12
|
+
* and `DELETE` would end a session that is never started. Both answer `405`,
|
|
13
|
+
* which the transport spec allows and which tells a client to stop trying.
|
|
14
|
+
*
|
|
15
|
+
* **No session id.** Every request carries its own bearer key, so two POSTs need
|
|
16
|
+
* nothing in common and any instance can answer either.
|
|
17
|
+
*
|
|
18
|
+
* **Two eras, decided per POST.** `2026-07-28` removed the handshake, so a modern
|
|
19
|
+
* client announces its revision in every request instead. `readEra` works out
|
|
20
|
+
* which one is being asked for and, for a modern request, checks that the headers
|
|
21
|
+
* the transport mirrors agree with the body before anything acts on either. A
|
|
22
|
+
* batch can only have come from a legacy client, so the first message decides for
|
|
23
|
+
* all of them.
|
|
24
|
+
*
|
|
25
|
+
* **No CORS, and an explicit `Origin` check.** The endpoint sends no CORS headers
|
|
26
|
+
* and reads no cookie, so a page on another origin can neither read a reply nor
|
|
27
|
+
* borrow a signed-in reader's identity. That reasoning is why the check below
|
|
28
|
+
* looked unnecessary and it is still why the risk is small, but the transport
|
|
29
|
+
* spec makes validating `Origin` a requirement rather than an argument, and a
|
|
30
|
+
* rule that holds without depending on a chain of reasoning is worth five lines.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* The body fields the transport mirrors into headers, so an intermediary can
|
|
34
|
+
* route on them without parsing the body. Names compare case-insensitively,
|
|
35
|
+
* which is what Hono's header lookup already does; values do not.
|
|
36
|
+
*/
|
|
37
|
+
const PROTOCOL_VERSION_HEADER = 'MCP-Protocol-Version';
|
|
38
|
+
const METHOD_HEADER = 'Mcp-Method';
|
|
39
|
+
const NAME_HEADER = 'Mcp-Name';
|
|
40
|
+
/** Answered by GET and DELETE, so a client learns the shape of the endpoint. */
|
|
41
|
+
const POST_ONLY = 'Send MCP messages as a POST to this endpoint';
|
|
42
|
+
/** True when the client will take a plain JSON reply. */
|
|
43
|
+
function acceptsJson(header) {
|
|
44
|
+
if (header === undefined || header.trim().length === 0) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return header
|
|
48
|
+
.split(',')
|
|
49
|
+
.some((value) => {
|
|
50
|
+
const type = value.split(';')[0]?.trim() ?? '';
|
|
51
|
+
return type === 'application/json' || type === 'application/*' || type === '*/*';
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function acceptsEventStream(header) {
|
|
55
|
+
return (header ?? '')
|
|
56
|
+
.split(',')
|
|
57
|
+
.some((value) => (value.split(';')[0]?.trim() ?? '') === 'text/event-stream');
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Resolves the caller, bearer key only.
|
|
61
|
+
*
|
|
62
|
+
* A session cookie is deliberately not read here even though the REST surface
|
|
63
|
+
* takes one. MCP clients are not browsers, and refusing the cookie means there is
|
|
64
|
+
* no ambient credential for a cross-origin page to spend. That is one of three
|
|
65
|
+
* defences, not the whole of it: `checkOrigin` refuses the page outright, and the
|
|
66
|
+
* absent CORS headers stop it reading a reply.
|
|
67
|
+
*
|
|
68
|
+
* @throws AppError 401 when no key is presented, or it is not a live one.
|
|
69
|
+
*/
|
|
70
|
+
function resolveKeyActor(dependencies, context) {
|
|
71
|
+
return resolveActor(dependencies, { bearer: readBearerToken(context.req.header('Authorization')) });
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Refuses a browser calling from somewhere else.
|
|
75
|
+
*
|
|
76
|
+
* An MCP client is not a browser and sends no `Origin` at all, so an absent
|
|
77
|
+
* header is the ordinary case and is allowed. A present one has to be this
|
|
78
|
+
* deployment's own, which is the same `Host`-derived origin a form's embed URL
|
|
79
|
+
* is built from.
|
|
80
|
+
*
|
|
81
|
+
* There is no allowlist and no configuration for one. A cross-origin browser has
|
|
82
|
+
* no business here whatever its address: the endpoint takes a bearer key, and a
|
|
83
|
+
* page that holds one can send it from a server instead.
|
|
84
|
+
*
|
|
85
|
+
* @throws AppError 403 for a browser on another origin.
|
|
86
|
+
*/
|
|
87
|
+
function checkOrigin(context) {
|
|
88
|
+
const origin = context.req.header('Origin');
|
|
89
|
+
if (origin !== undefined && origin !== requestOrigin(context)) {
|
|
90
|
+
throw new AppError('forbidden', 'This endpoint does not answer requests from another origin');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Undoes the sentinel a client wraps a header value in when it will not survive
|
|
95
|
+
* as plain ASCII: `=?base64?…?=`.
|
|
96
|
+
*
|
|
97
|
+
* A value that is not wrapped is returned as it arrived. The markers are
|
|
98
|
+
* case-sensitive and must be exactly these, so a value that merely looks similar
|
|
99
|
+
* is left alone — and a client with a real value shaped like the sentinel is
|
|
100
|
+
* required to encode it for exactly that reason.
|
|
101
|
+
*/
|
|
102
|
+
const BASE64_SENTINEL = /^=\?base64\?(.*)\?=$/u;
|
|
103
|
+
function decodeHeaderValue(raw) {
|
|
104
|
+
if (raw === undefined) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
const encoded = BASE64_SENTINEL.exec(raw);
|
|
108
|
+
return encoded === null ? raw : Buffer.from(encoded[1] ?? '', 'base64').toString('utf8');
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Names the header and body values that disagree, or nothing when they agree.
|
|
112
|
+
*
|
|
113
|
+
* The point of mirroring body fields into headers is that an intermediary can
|
|
114
|
+
* route on them without parsing the body. That only holds if the two cannot
|
|
115
|
+
* differ, so the server that does parse the body is the one that has to check —
|
|
116
|
+
* otherwise a load balancer and the server act on different values.
|
|
117
|
+
*/
|
|
118
|
+
function headerProblem(context, message) {
|
|
119
|
+
const headerVersion = context.req.header(PROTOCOL_VERSION_HEADER);
|
|
120
|
+
const bodyVersion = readMetaVersion(message.params);
|
|
121
|
+
if (headerVersion === undefined) {
|
|
122
|
+
return `${PROTOCOL_VERSION_HEADER} is required`;
|
|
123
|
+
}
|
|
124
|
+
if (headerVersion !== bodyVersion) {
|
|
125
|
+
return `${PROTOCOL_VERSION_HEADER} is "${headerVersion}" and ${PROTOCOL_VERSION_META} is ${bodyVersion === undefined ? 'absent' : `"${bodyVersion}"`}`;
|
|
126
|
+
}
|
|
127
|
+
const methodHeader = context.req.header(METHOD_HEADER);
|
|
128
|
+
if (methodHeader === undefined) {
|
|
129
|
+
return `${METHOD_HEADER} is required`;
|
|
130
|
+
}
|
|
131
|
+
if (methodHeader !== message.method) {
|
|
132
|
+
return `${METHOD_HEADER} is "${methodHeader}" and the body's method is "${message.method}"`;
|
|
133
|
+
}
|
|
134
|
+
// `Mcp-Name` mirrors `params.name`, which only these methods carry. Of the
|
|
135
|
+
// three the spec names, `tools/call` is the only one Kelpie implements.
|
|
136
|
+
if (message.method !== 'tools/call') {
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
const nameHeader = decodeHeaderValue(context.req.header(NAME_HEADER));
|
|
140
|
+
const bodyName = readParamsName(message.params);
|
|
141
|
+
if (nameHeader === undefined) {
|
|
142
|
+
return `${NAME_HEADER} is required on tools/call`;
|
|
143
|
+
}
|
|
144
|
+
if (nameHeader !== bodyName) {
|
|
145
|
+
return `${NAME_HEADER} is "${nameHeader}" and the body names ${bodyName === undefined ? 'no tool' : `"${bodyName}"`}`;
|
|
146
|
+
}
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Works out which revision a request is asking for.
|
|
151
|
+
*
|
|
152
|
+
* A modern request says so in its `_meta`, and `server/discover` is a modern
|
|
153
|
+
* method whatever else it carries. Everything else is legacy, including a request
|
|
154
|
+
* that names no version at all: the transport spec has a server read that as
|
|
155
|
+
* `2025-03-26`, from before the header existed.
|
|
156
|
+
*
|
|
157
|
+
* A version Kelpie does not speak is refused with `-32022` carrying the list it
|
|
158
|
+
* does, which is what lets a client pick another and retry. `initialize` is the
|
|
159
|
+
* exception, because negotiating down is what that handshake is for.
|
|
160
|
+
*/
|
|
161
|
+
function readEra(context, message) {
|
|
162
|
+
const id = message.id ?? null;
|
|
163
|
+
const claimed = readMetaVersion(message.params) ?? context.req.header(PROTOCOL_VERSION_HEADER);
|
|
164
|
+
if (claimed !== undefined && !isSupportedVersion(claimed) && message.method !== 'initialize') {
|
|
165
|
+
return { kind: 'refuse', response: unsupportedVersion(id, claimed) };
|
|
166
|
+
}
|
|
167
|
+
const modern = message.method === 'server/discover' || (claimed !== undefined && isModernVersion(claimed));
|
|
168
|
+
if (!modern) {
|
|
169
|
+
return { kind: 'era', era: 'legacy' };
|
|
170
|
+
}
|
|
171
|
+
const problem = headerProblem(context, message);
|
|
172
|
+
return problem === undefined
|
|
173
|
+
? { kind: 'era', era: 'modern' }
|
|
174
|
+
: { kind: 'refuse', response: failure(id, HEADER_MISMATCH, `Header mismatch: ${problem}`) };
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* The status a set of responses is sent with.
|
|
178
|
+
*
|
|
179
|
+
* `200` almost always: a JSON-RPC error is a normal HTTP response. The exception
|
|
180
|
+
* is a modern method-not-found, which the transport spec puts on `404` so a
|
|
181
|
+
* client can tell a modern server that lacks the method from a legacy server that
|
|
182
|
+
* does not host the endpoint at all. Legacy revisions never said that, so they
|
|
183
|
+
* keep the `200`.
|
|
184
|
+
*/
|
|
185
|
+
function statusFor(responses, era) {
|
|
186
|
+
if (era === 'legacy' || responses.length !== 1) {
|
|
187
|
+
return 200;
|
|
188
|
+
}
|
|
189
|
+
return responses[0]?.error?.code === METHOD_NOT_FOUND ? 404 : 200;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Renders responses in whichever of the two content types the client will take.
|
|
193
|
+
*
|
|
194
|
+
* A `2025-03-26` client may send a batch, so the payload is an array when the
|
|
195
|
+
* request was one, and a bare object otherwise.
|
|
196
|
+
*/
|
|
197
|
+
function renderResponses(context, responses, batched, era) {
|
|
198
|
+
// Nothing to answer: every message in the body was a notification. The spec
|
|
199
|
+
// fixes this on 202, and the body must be empty.
|
|
200
|
+
if (responses.length === 0) {
|
|
201
|
+
return context.body(null, 202);
|
|
202
|
+
}
|
|
203
|
+
const payload = batched ? responses : responses[0];
|
|
204
|
+
const accept = context.req.header('Accept');
|
|
205
|
+
const status = statusFor(responses, era);
|
|
206
|
+
if (acceptsJson(accept)) {
|
|
207
|
+
return context.json(payload, status);
|
|
208
|
+
}
|
|
209
|
+
if (acceptsEventStream(accept)) {
|
|
210
|
+
return context.body(`event: message\ndata: ${JSON.stringify(payload)}\n\n`, status, {
|
|
211
|
+
'Content-Type': 'text/event-stream',
|
|
212
|
+
'Cache-Control': 'no-cache, no-store',
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
throw new AppError('bad_request', 'Accept application/json or text/event-stream');
|
|
216
|
+
}
|
|
217
|
+
/** The `tools/list` entry, rendered in `api.md`'s `snake_case`. */
|
|
218
|
+
function catalogEntry(tool) {
|
|
219
|
+
return { name: tool.name, description: tool.description, input_schema: tool.inputSchema };
|
|
220
|
+
}
|
|
221
|
+
export function createMcpEndpoint(dependencies) {
|
|
222
|
+
const transport = new Hono();
|
|
223
|
+
const catalog = new Hono();
|
|
224
|
+
// Built once: a schema Zod cannot render as JSON Schema then fails boot, rather
|
|
225
|
+
// than producing a tool listing no client can read.
|
|
226
|
+
const published = dependencies.tools.map(publishTool);
|
|
227
|
+
const dispatchDependencies = {
|
|
228
|
+
tools: dependencies.tools,
|
|
229
|
+
published,
|
|
230
|
+
serverInfo: dependencies.serverInfo,
|
|
231
|
+
instructions: dependencies.instructions,
|
|
232
|
+
logger: dependencies.logger,
|
|
233
|
+
};
|
|
234
|
+
catalog.get('/mcp/tools', async (context) => {
|
|
235
|
+
// Credentials as anywhere under `/v1`, so a signed-in reader qualifies. The
|
|
236
|
+
// listing describes the deployment rather than the workspace, but it is not
|
|
237
|
+
// public: what an install exposes is not a stranger's business.
|
|
238
|
+
await resolveActorFrom(dependencies, context);
|
|
239
|
+
return context.json({ data: published.map(catalogEntry), next_cursor: null });
|
|
240
|
+
});
|
|
241
|
+
transport.post('/', async (context) => {
|
|
242
|
+
checkOrigin(context);
|
|
243
|
+
// Credentials before anything protocol-level, including `server/discover`.
|
|
244
|
+
// A client may call that one before it knows anything about the server, but
|
|
245
|
+
// it always has the key already: it is in the same config as the URL.
|
|
246
|
+
const actor = await resolveKeyActor(dependencies, context).catch((error) => {
|
|
247
|
+
if (error instanceof AppError && error.code === 'unauthorized') {
|
|
248
|
+
// The header is what tells a client it may retry with a credential
|
|
249
|
+
// rather than that the endpoint is gone.
|
|
250
|
+
context.header('WWW-Authenticate', 'Bearer');
|
|
251
|
+
}
|
|
252
|
+
throw error;
|
|
253
|
+
});
|
|
254
|
+
const raw = await context.req.json().catch(() => {
|
|
255
|
+
throw new AppError('bad_request', 'Body must be valid JSON');
|
|
256
|
+
});
|
|
257
|
+
const batched = Array.isArray(raw);
|
|
258
|
+
const incoming = batched ? raw : [raw];
|
|
259
|
+
if (incoming.length === 0) {
|
|
260
|
+
return context.json(failure(null, INVALID_REQUEST, 'A batch must hold at least one message'), 400);
|
|
261
|
+
}
|
|
262
|
+
const parsed = incoming.map(parseMessage);
|
|
263
|
+
// The era belongs to the POST, not to each message in it: a modern request
|
|
264
|
+
// is one message, and a batch can only have come from a legacy client.
|
|
265
|
+
const first = parsed.find((message) => message !== undefined);
|
|
266
|
+
if (first === undefined) {
|
|
267
|
+
return context.json(failure(null, PARSE_ERROR, 'Not a JSON-RPC 2.0 message'), 400);
|
|
268
|
+
}
|
|
269
|
+
const decision = readEra(context, first);
|
|
270
|
+
if (decision.kind === 'refuse') {
|
|
271
|
+
return context.json(decision.response, 400);
|
|
272
|
+
}
|
|
273
|
+
const { era } = decision;
|
|
274
|
+
if (era === 'modern' && batched) {
|
|
275
|
+
return context.json(failure(first.id ?? null, INVALID_REQUEST, `MCP ${LATEST_PROTOCOL_VERSION} takes one message per request; batches ended with ${LATEST_LEGACY_PROTOCOL_VERSION}`), 400);
|
|
276
|
+
}
|
|
277
|
+
const responses = [];
|
|
278
|
+
for (const message of parsed) {
|
|
279
|
+
if (message === undefined) {
|
|
280
|
+
responses.push(failure(null, PARSE_ERROR, 'Not a JSON-RPC 2.0 message'));
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
const response = await dispatch(dispatchDependencies, message, era, actor);
|
|
284
|
+
if (response !== undefined) {
|
|
285
|
+
responses.push(response);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return renderResponses(context, responses, batched, era);
|
|
289
|
+
});
|
|
290
|
+
transport.get('/', () => {
|
|
291
|
+
throw new AppError('method_not_allowed', POST_ONLY);
|
|
292
|
+
});
|
|
293
|
+
transport.delete('/', () => {
|
|
294
|
+
throw new AppError('method_not_allowed', POST_ONLY);
|
|
295
|
+
});
|
|
296
|
+
return { transport, catalog };
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/modules/mcp/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { KelpieModule } from '../../runtime/module.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Notes: what a person wrote down about a record.
|
|
4
|
+
*
|
|
5
|
+
* Requires `activities`, because writing a note writes the timeline entry
|
|
6
|
+
* announcing it, in the same transaction.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createNotesModule(migrationsDirectory: string): KelpieModule;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/notes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAO3D;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,mBAAmB,EAAE,MAAM,GAAG,YAAY,CA6B3E"}
|